Any updates on Mario Strikers Charged or fluidity, or just general work? Checking in as its been a while
You do deserve this break for all the work you did, nice job!
I was just asking him how all was going, no mean to be pushy or anything, i even said he deserved the breakWhat do you mean? He has posted three codes in the last seven days. That's 1 code every other day, please don't push him as he said he is doing it for fun.
I was kidding, after all, this is for fun, but it would be stupid hahaI honestly hope that there is no such "dumb list", because there are so many good games, which would be better with a cc hack. Wii Fit is not even in the top 100. It's like making a cc hack for We Sing just to navigate in the menu section. You just have to look at the documentation/tutorial of a cc hack on page 5 to realise that this is not a simple task
I was kidding, after all, this is for fun, but it would be stupid haha
Post automatically merged:
Who would even play the walking game with a stick anyways haha
Post automatically merged:
But yes, lets give Vague the break he deserves for now. Have fun with the existing mods! More will come later on hopefully
Im not? I stated i was joking about the wii fit thing and it would be dumbIt doesn't suit me that if he doesn't post for 3 days it's a break for you. I don't know what kind of reverse psychology you're trying to achieve here, but please stop.
Im not? I stated i was joking about the wii fit thing and it would be dumb
I dont wanna argue man im not tryna do anything sketchy, i was just checking in Im not like desperate or anything either
Post automatically merged:
If im going to get accused of all of this, im leaving for now then. sure i wasnt the best with my words or anything, but i wouldnt do any of this reverse psychology stuff or when he doesnt post for 3 days beg him to come back, all i did was check in as it had been a little since the last update, and even repeatedly stated he should enjoy his break, i will probably be back in like maybe a few days, but geez yall, im already having to deal with a lot online and this just made it worse because i have trouble saying things
(The wii fit mod was a joke, dont do that)
Post automatically merged:
PS: @Vague Rant im sorry if i came out pushy or anything, i have autism and it can be hard for me to communicate properly sometimes without things like this happening.
ThanksHey, don't take it so hard. I came across harsher than I meant to. I didn't mean to speak for anyone else either. I would feel pressured if someone told me I was taking a while and doubled down on me taking a break after just a few days of not posting, but everyone is different and I was only speaking for myself. I didn't realize you were having trouble communicating and I'm sorry you're not doing well and I want to thank you for sharing this so I can be more careful in the future.
It should be relatively easy to modify that Mario Kart Wii hack to have different control schemes like the one you mentioned. It's a slightly more complicated hack than most because it's remapping inputs instead of just mapping them, if you follow my meaning. But I'll try to remember for my next update and I'll post a version that should be easier to edit.Seeing your codes above, I always wanted to try to play Mario Kart like many other racing games, with R/L as Accelerate/Brake, I should try toying with it on Dolphin.
I hate asking for things, but I'd like to know how hard could be to do one game: Sega Bass Fishing.
I have experience in rom hacking but besides doing some 60Hz codes, Y barely have touched code for GC/Wii games, but your tutorial has made me interested in trying...
That's good to know, thanks very much. I've actually been playing through Super Paper Mario slowly any time I get burned out on hacking stuff. I know I could just download a save from online, but you know, most of my leisure time for actual months at this point has gone into Classic Controller hacking, so it's nice to have a bit of downtime. I haven't gotten to any of the parts that need accelerometer support yet, but it helps to know that it's only really used in one place.@Vague Rant If you're working on Super Paper Mario again, there's an item called the Long-Last Shake, which requires a mini-game in which you tilt the Wii Remote in one way or another. That is the only time I have seen tilt and maybe in this case its easier to implement to just win the mini-game then to implement tilting?
I did look into Mario Strikers Charged and was having a lot of trouble, then realized it's another Next Level Games ... game. I've looked at three of theirs so far including Strikers: one that I completely failed at, and the other being Punch-Out!! The major quirk of NLG titles is that they all use the low-level controller report data rather than the more "friendly" processed data which almost all other games use.Any updates on Mario Strikers Charged or fluidity, or just general work? Checking in as its been a while
You do deserve this break for all the work you did, nice job!
Most people just use their USB loader app to apply Gecko codes because they (all?) include support for cheats. You can also apply codes using the Gecko OS retail disc loader, but even then, most (all?) USB loaders can launch retail discs as well, so they're pretty convenient for using cheats whether you're loading discs, backups or even NAND/emuNAND channels. It's worth mentioning that USB Loader GX calls Gecko codes "Ocarina" codes for reasons I don't know, so it's possible you're already using Gecko codes under another name. I described the basic process for using Gecko codes with USB loaders in this post.How do i get Gecko cheats app for Gamecube or Wii?
Totally get it, no hard feelings. I also know how easy it is to get excited about dream projects and that it sometimes must seem like a quick process, since I'll sometimes drop several codes over a few days. But a lot of that is just that I've got multiple projects on the go sometimes, so it's not so much that I hacked five games in the last week (or 13 if you count every region!) but that five of them got finished this week.PS: @Vague Rant im sorry if i came out pushy or anything, i have autism and it can be hard for me to communicate properly sometimes without things like this happening. I would never want to pressure someone intentionally or not.
Classic Controller Support [Vague Rant]
C2129C78 0000001D
90010024 2C040000
408200D8 8803005C
2C000002 408200CC
48000015 800E4480
3FAAAAAB 3C75C28F
3F800000 7CA802A6
90A1000C 80030004
70008000 41820010
38000000 90030020
90030024 38C00002
98C3005E 81850000
7D8803A6 4E800021
2C030001 7FE3FB78
80A1000C C0450004
40820008 EC4200B2
C0650008 C0030020
C023006C FC211024
4800002D D0030020
C0030024 C0230070
FC200850 48000019
D0030024 80010024
7C0803A6 38210020
4E800020 FC0100FA
C025000C FC000800
4180000C FC000890
48000014 FC200850
FC000800 41810008
FC000890 4E800020
60000000 00000000
C212ABA8 00000020
4E800421 2C140001
408200F4 48000011
00000000 3F000000
00000000 7C6802A6
809EFFA0 80BEFFA4
80DEFFA8 80E30000
39200000 C0430004
C0630008 C03E0014
FC200850 39000004
48000069 C03E0018
39000001 4800005D
91230000 2C090000
4182001C 7C093800
41820010 7084FFF0
61290200 48000024
39200600 C03E000C
FC200850 39000004
48000049 C03E0010
39000001 4800003D
7C844B78 909EFFA0
90BEFFA4 7CC62079
90DEFFA8 48000050
FC000A10 FC001040
4D800020 FC011840
41800008 5508083C
7D294378 4E800020
FC000A10 FC001040
4D800020 FC011840
41800008 5508083C
7CC04039 40820008
7CA54378 7C844378
4E800020 00000000
C2128C84 00000019
2C040002 408200B8
71090800 41820008
60C68000 71090001
41820008 60C60002
71094000 41820008
60C60001 71090002
41820008 60C60008
71098000 41820008
60C60004 71090010
41820008 60C60200
71090040 41820008
60C60100 71090008
41820008 60C60010
71090020 41820008
60C60200 71092000
41820008 60C60800
71090200 41820008
60C60400 71090080
41820008 60C60800
71090004 41820008
60C60400 71090400
41820008 60C61000
71091000 41820008
60C61000 70C99FFF
60000000 00000000
Disable Copy Filter [Vague Rant]
040C02E0 48000040
Force 480p [Vague Rant]
041EF558 00000002
021EF56E 00000000
041EF5D0 00000016
021EF5E6 00000000
Force 4:3 [Vague Rant]
040E44AC 38000000
Force 704 viWidth [Vague Rant]
021EF562 00000008
021EF566 000002C0
021EF5DA 00000008
021EF5DE 000002C0
Classic Controller Support [Vague Rant]
C212A588 0000001D
90010024 2C040000
408200D8 8803005C
2C000002 408200CC
48000015 800E4D90
3FAAAAAB 3C75C28F
3F800000 7CA802A6
90A1000C 80030004
70008000 41820010
38000000 90030020
90030024 38C00002
98C3005E 81850000
7D8803A6 4E800021
2C030001 7FE3FB78
80A1000C C0450004
40820008 EC4200B2
C0650008 C0030020
C023006C FC211024
4800002D D0030020
C0030024 C0230070
FC200850 48000019
D0030024 80010024
7C0803A6 38210020
4E800020 FC0100FA
C025000C FC000800
4180000C FC000890
48000014 FC200850
FC000800 41810008
FC000890 4E800020
60000000 00000000
C212B4B8 00000020
4E800421 2C140001
408200F4 48000011
00000000 3F000000
00000000 7C6802A6
809EFFA0 80BEFFA4
80DEFFA8 80E30000
39200000 C0430004
C0630008 C03E0014
FC200850 39000004
48000069 C03E0018
39000001 4800005D
91230000 2C090000
4182001C 7C093800
41820010 7084FFF0
61290200 48000024
39200600 C03E000C
FC200850 39000004
48000049 C03E0010
39000001 4800003D
7C844B78 909EFFA0
90BEFFA4 7CC62079
90DEFFA8 48000050
FC000A10 FC001040
4D800020 FC011840
41800008 5508083C
7D294378 4E800020
FC000A10 FC001040
4D800020 FC011840
41800008 5508083C
7CC04039 40820008
7CA54378 7C844378
4E800020 00000000
C2129594 00000019
2C040002 408200B8
71090800 41820008
60C68000 71090001
41820008 60C60002
71094000 41820008
60C60001 71090002
41820008 60C60008
71098000 41820008
60C60004 71090010
41820008 60C60200
71090040 41820008
60C60100 71090008
41820008 60C60010
71090020 41820008
60C60200 71092000
41820008 60C60800
71090200 41820008
60C60400 71090080
41820008 60C60800
71090004 41820008
60C60400 71090400
41820008 60C61000
71091000 41820008
60C61000 70C99FFF
60000000 00000000
Disable Copy Filter [Vague Rant]
040C0BF0 48000040
Force 480p [Vague Rant]
041F0598 00000002
021F05AE 00000000
041F0610 00000016
021F0626 00000000
Force 4:3 [Vague Rant]
040E4DBC 38000000
Force 704 viWidth [Vague Rant]
021F05A2 00000008
021F05A6 000002C0
021F061A 00000008
021F061E 000002C0
common-key.bin
common-key.bin
to that directoryapply-patch.bat
filepatches
directory and you can figure out how to apply them in whatever way you feel comfortable. There is a readme.txt
included with slightly more details on how to apply the patches in platform-agnostic terms (e.g. "Unpack your WAD").Wii Remote | Classic Controller | Function |
---|---|---|
Home | Home Remember that L/ZL are your A button | Open/Close Home Button Menu |
D-Pad | D-Pad Left Stick | Menus Navigation Gameplay Movement |
A | L ZL | Gameplay Change Weapon |
B | R ZR | SOPHIA Lock Cannon Angle On-Foot Strafe |
1 | Y A | Menus Confirm (seriously) Gameplay Shoot |
2 | B | Menus Cancel (seriously) SOPHIA Jump On-Foot Bomb |
D-Pad + 1 + B | Right Stick | On-Foot Aim, Shoot and Strafe |
Plus | X | Gameplay Enter/Exit SOPHIA |
Minus | Plus Minus | SOPHIA Overworld Map |
main.dol
prevents the title from booting. That's why the WAD patches are here, primarily for anybody who wants to use this as a Wii U Wii VC injection.loader.bin
file runs before the actual title contents. I think it must be this which fails to handle the expanded main.dol
. At a guess, the situation is something like, the expanded main.dol
bumps up the addressing where all other data is placed in memory by the loader.bin
, so none of the data is where the code inside main.dol
expects to find it any more and it immediately falls apart when it tries to read it. Is this fixable? Can somebody fix this? Please? A way to apply code modifications to WiiWare that is less "manual" would be great.C2
for the pointer in calc_dpd_variable()
, a C2
in read_kpad_ext()
for the left stick emulation and twin-stick aiming support (I'll come back to that) and another C2
in read_kpad_button()
for the button input.I use Wiiflow, i never noticed that usb loader gx had gecko but I have seen Dolphin emulator have gecko cheat. Would any of this cheat works on Dolphin Emulator? and i will check into Wiiflow if there is cheat code avail thank you for answering my question.It should be relatively easy to modify that Mario Kart Wii hack to have different control schemes like the one you mentioned. It's a slightly more complicated hack than most because it's remapping inputs instead of just mapping them, if you follow my meaning. But I'll try to remember for my next update and I'll post a version that should be easier to edit.
The tl;dr version of how the current code works is that it's only remapping the buttons that are changed and leaving all the others alone, so e.g. you can't easily edit what the B button does using that code since it's not part of the code at all. But I can do a version which manually remaps every single button to itself, and then anybody can just switch around the buttons as they desire. I promise I'm making it sound more complicated than it is, it will be a pretty quick project and then everybody can just have whatever Mario Kart Wii button layout they like.
Sega Bass Fishing definitely sounds like a fun one to look into. It's on the more complicated end with all its different inputs, but I'll definitely put it on my list. Thanks for the walkthrough of the various motions it needs as well, that's good info for if/when I get to investigating the game.
Would be super awesome to see more people get into Classic Controller hacking. Obviously some games are a lot more complicated than others, so if you do take a shot at it, the obvious choice for a starting place would be a game that has no "remove the unsupported extension controller" type error, uses the solo Wii Remote and zero motion controls. With a game like that, the guide should cover everything.
That's good to know, thanks very much. I've actually been playing through Super Paper Mario slowly any time I get burned out on hacking stuff. I know I could just download a save from online, but you know, most of my leisure time for actual months at this point has gone into Classic Controller hacking, so it's nice to have a bit of downtime. I haven't gotten to any of the parts that need accelerometer support yet, but it helps to know that it's only really used in one place.
I did look into Mario Strikers Charged and was having a lot of trouble, then realized it's another Next Level Games ... game. I've looked at three of theirs so far including Strikers: one that I completely failed at, and the other being Punch-Out!! The major quirk of NLG titles is that they all use the low-level controller report data rather than the more "friendly" processed data which almost all other games use.
I've currently got five different games that use the low-level data where progress basically stalled because I don't really understand where or how to handle it. For Punch-Out!!, this wasn't too bad because I only had to figure out how to remap the buttons in the raw controller reports since it's a purely button-based game. That said, it took me three weeks on-and-off to get Punch-Out!! done, and that's one I'm considering easy. For Strikers, it's a lot more complicated, since I'll need a much greater understanding of the low-level controller functions and reports to figure out how the accelerometer and analog stick inputs work.
No updates on Fluidity yet, I haven't looked at that game at all. Just for reference, I've got about 30 games on my list of things that I actively want to look into, either because they're games I personally like or games people from here or elsewhere have asked about. I'm not approaching them in any particular order, I'll sort of just try to guestimate how difficult a project will be based on how the original controls work and how much time and energy I've got at a given moment.
Generally if there's no updates for a while, I've either been busy with other stuff, got stuck multiple times in a row and moved on to a different project (I attempted three other games before the one I succeeded at in this post) or landed on a game where I didn't get stuck so much as I had very slow progress because of unexpected challenges (also the game in this post).
Most people just use their USB loader app to apply Gecko codes because they (all?) include support for cheats. You can also apply codes using the Gecko OS retail disc loader, but even then, most (all?) USB loaders can launch retail discs as well, so they're pretty convenient for using cheats whether you're loading discs, backups or even NAND/emuNAND channels. It's worth mentioning that USB Loader GX calls Gecko codes "Ocarina" codes for reasons I don't know, so it's possible you're already using Gecko codes under another name. I described the basic process for using Gecko codes with USB loaders in this post.
Once you have the codes in the correct text file on your SD card, they'll show up in your loader's cheats section. For example, in USB Loader GX, you choose a game, then go to Settings > Ocarina and it will show a list of all the codes you have for that game. You can switch them ON/OFF from that menu, then choose "Create" to generate the code file. Lastly, you'll need to make sure Ocarina codes are enabled in USB Loader GX. Go back to Settings > Game Load and scroll down to Ocarina. Switch it to ON to make sure Ocarina (Gecko) codes are active for this game.
Totally get it, no hard feelings. I also know how easy it is to get excited about dream projects and that it sometimes must seem like a quick process, since I'll sometimes drop several codes over a few days. But a lot of that is just that I've got multiple projects on the go sometimes, so it's not so much that I hacked five games in the last week (or 13 if you count every region!) but that five of them got finished this week.
I also want to thank everyone for being cool about valuing my time/effort in general. It is a pretty tough process for each game and it's nice to know people understand that and are helping to make sure that idea gets across.
That said, now it's time for a game absolutely nobody has been patiently waiting for!
2010's Blaster Master: Overdrive is perhaps the most forgotten entry in the storied Sunsoft Metroidvania franchise. Released exclusively to the Wii Shop Channel as WiiWare, they had high hopes of reviving the franchise after several previous failed attempts. Instead, this would be yet another unsuccessful title, a pattern which wouldn't turn around until the celebrated Blaster Master Zero trilogy.
Overdrive closely follows the formula of the NES classic, with a sprawling, Metroid-style overworld navigated in the upgradable SOPHIA tank giving way to top-down shooter levels outside the tank. The most prominent additions here are a world map and the ability to save. While it retained the core of what makes Blaster Master fun, critics and players noted two major flaws with this release: the budget presentation (4:3, 480i and a generic art style missing the character of the NES game) and the awkward Wiimote controls (with the Wiimote held sideways and requiring frequent use of the uncomfortable A/B buttons). What to do?
Besides the Classic Controller hack itself, there's a few more codes here to make the game look slightly nicer. It's never going to be a great looking game, but forcing 480p, disabling the copy (deflicker) filter and forcing 4:3 all help to sharpen up the image.
Blaster Master has no widescreen support anyway; it just draws black bars in the extra space, so forcing 4:3 allows the full resolution to be dedicated to drawing the actual gameplay area.
The viWidth mod is more subjective: this will reduce the sharpness slightly but corrects the aspect ratio so that round objects like enemy bullets and SOPHIA's tires are ... round.
USAEUR
Code:Classic Controller Support [Vague Rant] C2129C78 0000001D 90010024 2C040000 408200D8 8803005C 2C000002 408200CC 48000015 800E4480 3FAAAAAB 3C75C28F 3F800000 7CA802A6 90A1000C 80030004 70008000 41820010 38000000 90030020 90030024 38C00002 98C3005E 81850000 7D8803A6 4E800021 2C030001 7FE3FB78 80A1000C C0450004 40820008 EC4200B2 C0650008 C0030020 C023006C FC211024 4800002D D0030020 C0030024 C0230070 FC200850 48000019 D0030024 80010024 7C0803A6 38210020 4E800020 FC0100FA C025000C FC000800 4180000C FC000890 48000014 FC200850 FC000800 41810008 FC000890 4E800020 60000000 00000000 C212ABA8 00000020 4E800421 2C140001 408200F4 48000011 00000000 3F000000 00000000 7C6802A6 809EFFA0 80BEFFA4 80DEFFA8 80E30000 39200000 C0430004 C0630008 C03E0014 FC200850 39000004 48000069 C03E0018 39000001 4800005D 91230000 2C090000 4182001C 7C093800 41820010 7084FFF0 61290200 48000024 39200600 C03E000C FC200850 39000004 48000049 C03E0010 39000001 4800003D 7C844B78 909EFFA0 90BEFFA4 7CC62079 90DEFFA8 48000050 FC000A10 FC001040 4D800020 FC011840 41800008 5508083C 7D294378 4E800020 FC000A10 FC001040 4D800020 FC011840 41800008 5508083C 7CC04039 40820008 7CA54378 7C844378 4E800020 00000000 C2128C84 00000019 2C040002 408200B8 71090800 41820008 60C68000 71090001 41820008 60C60002 71094000 41820008 60C60001 71090002 41820008 60C60008 71098000 41820008 60C60004 71090010 41820008 60C60200 71090040 41820008 60C60100 71090008 41820008 60C60010 71090020 41820008 60C60200 71092000 41820008 60C60800 71090200 41820008 60C60400 71090080 41820008 60C60800 71090004 41820008 60C60400 71090400 41820008 60C61000 71091000 41820008 60C61000 70C99FFF 60000000 00000000
Code:Disable Copy Filter [Vague Rant] 040C02E0 48000040
Code:Force 480p [Vague Rant] 041EF558 00000002 021EF56E 00000000 041EF5D0 00000016 021EF5E6 00000000
Code:Force 4:3 [Vague Rant] 040E44AC 38000000
Code:Force 704 viWidth [Vague Rant] 021EF562 00000008 021EF566 000002C0 021EF5DA 00000008 021EF5DE 000002C0
Code:Classic Controller Support [Vague Rant] C212A588 0000001D 90010024 2C040000 408200D8 8803005C 2C000002 408200CC 48000015 800E4D90 3FAAAAAB 3C75C28F 3F800000 7CA802A6 90A1000C 80030004 70008000 41820010 38000000 90030020 90030024 38C00002 98C3005E 81850000 7D8803A6 4E800021 2C030001 7FE3FB78 80A1000C C0450004 40820008 EC4200B2 C0650008 C0030020 C023006C FC211024 4800002D D0030020 C0030024 C0230070 FC200850 48000019 D0030024 80010024 7C0803A6 38210020 4E800020 FC0100FA C025000C FC000800 4180000C FC000890 48000014 FC200850 FC000800 41810008 FC000890 4E800020 60000000 00000000 C212B4B8 00000020 4E800421 2C140001 408200F4 48000011 00000000 3F000000 00000000 7C6802A6 809EFFA0 80BEFFA4 80DEFFA8 80E30000 39200000 C0430004 C0630008 C03E0014 FC200850 39000004 48000069 C03E0018 39000001 4800005D 91230000 2C090000 4182001C 7C093800 41820010 7084FFF0 61290200 48000024 39200600 C03E000C FC200850 39000004 48000049 C03E0010 39000001 4800003D 7C844B78 909EFFA0 90BEFFA4 7CC62079 90DEFFA8 48000050 FC000A10 FC001040 4D800020 FC011840 41800008 5508083C 7D294378 4E800020 FC000A10 FC001040 4D800020 FC011840 41800008 5508083C 7CC04039 40820008 7CA54378 7C844378 4E800020 00000000 C2129594 00000019 2C040002 408200B8 71090800 41820008 60C68000 71090001 41820008 60C60002 71094000 41820008 60C60001 71090002 41820008 60C60008 71098000 41820008 60C60004 71090010 41820008 60C60200 71090040 41820008 60C60100 71090008 41820008 60C60010 71090020 41820008 60C60200 71092000 41820008 60C60800 71090200 41820008 60C60400 71090080 41820008 60C60800 71090004 41820008 60C60400 71090400 41820008 60C61000 71091000 41820008 60C61000 70C99FFF 60000000 00000000
Code:Disable Copy Filter [Vague Rant] 040C0BF0 48000040
Code:Force 480p [Vague Rant] 041F0598 00000002 021F05AE 00000000 041F0610 00000016 021F0626 00000000
Code:Force 4:3 [Vague Rant] 040E4DBC 38000000
Code:Force 704 viWidth [Vague Rant] 021F05A2 00000008 021F05A6 000002C0 021F061A 00000008 021F061E 000002C0
View attachment 466938
The archive above includes several tools, IPS patches and a Windows batch script to make applying this hack directly to a WAD relatively painless.
In addition to that ZIP, you will need:
I will not help you find either of the above.
- a Blaster Master: Overdrive WAD (either USA or EUR)
common-key.bin
To use the script:
As a general rule, you shouldn't download and run random executables and batch scripts you find on the Internet. If you can't or don't want to run any of these on your machine, the IPS patches are included in the
- extract the ZIP file somewhere sensible
- add the
common-key.bin
to that directory
- drag and drop your Blaster Master: Overdrive WAD onto the
apply-patch.bat
file
- alternatively, you can run the script directly and drag and drop the WAD into the window that opens or just type the path to your WAD manually
- answer the y/n prompts for which patches you want to apply
- once you're ready, the script will use the included tools to unpack, patch and repack a new WAD with your chosen patches
- the original WAD will not be modified
- do whatever you normally would do with a WAD file
- if you're making a Wii U Wii VC injection, use the "Force Classic Controller connected" option in your injection software.
- if you enabled the Force 4:3 patch, also remember to use the "Force 4:3 (vWii NAND titles only)" option in the injection software, unless you want the game to be stretched to fill 16:9
patches
directory and you can figure out how to apply them in whatever way you feel comfortable. There is areadme.txt
included with slightly more details on how to apply the patches in platform-agnostic terms (e.g. "Unpack your WAD").Button Mapping
Wii Remote Classic Controller Function Home Home
Remember that L/ZL are your A buttonOpen/Close Home Button Menu D-Pad D-Pad
Left StickMenus
Navigation
Gameplay
MovementA L
ZLGameplay
Change WeaponB R
ZRSOPHIA
Lock Cannon Angle
On-Foot
Strafe1 Y
AMenus
Confirm (seriously)
Gameplay
Shoot2 B Menus
Cancel (seriously)
SOPHIA
Jump
On-Foot
BombD-Pad + 1 + B Right Stick On-Foot
Aim, Shoot and StrafePlus X Gameplay
Enter/Exit SOPHIAMinus Plus
MinusSOPHIA
Overworld Map
General Notes
- You only need to use one or the other of the Gecko codes or pre-patched WAD. If you're booting via a method which can apply Gecko codes, that will be much easier. If you need the hack patched directly into the game (e.g. for use as a Wii U injection), use the WAD patches.
- Hacking WiiWare titles is a lot more difficult than I expected. Gecko codes loaded via app work exactly as they do for disc games, but appending a code section to the
main.dol
prevents the title from booting. That's why the WAD patches are here, primarily for anybody who wants to use this as a Wii U Wii VC injection.
- The WAD patches completely break accelerometer compatibility, as I needed somewhere to inject the patches and the accelerometer is not used here except to help the Wii Remote locate the sensor bar while the Home Button Menu is open. Too bad.
- This is not a workable solution for games which do use the accelerometer. I don't have a plan for what to do in that situation currently. Besides, this was a lot of extra effort because I had to manually create every branch to and from modified code, since I no longer have a code handler running here. Look at me. I'm the code handler now.
- The major addition here is twin-stick controls for the top-down stages. As an alternative to moving and aiming with the D-Pad/Left Stick, this allows you to move with the D-Pad/Left Stick and shoot in any direction with the Right Stick. Blaster Master: Overdrive can be quite challenging, so this is very helpful.
- Obviously, if you prefer the traditional controls, they are also preserved here. You can just use the normal movement, shoot and strafe buttons and ignore the Right Stick.
- While some mappings might seem odd (A on L/ZL; Plus on X), this control scheme is largely adapted from the Blaster Master Zero trilogy which followed this game. If you've played any of those games, you should be right at home here. The only other slightly weird thing is mapping 1 to both Y and A. This game has inverted Confirm/Cancel controls, so this was solely done to make menu navigation work naturally while keeping Shoot on Y. Or you can shoot with A and Confirm with Y if you're weird like that.
- Blaster Master: Overdrive is a pretty 6/10 kind of game. I have a soft spot for it as I really like the Blaster Master franchise, but there's a reason this one has been forgotten. It's not a series low-point like Blaster Master 2 for Sega Genesis but neither does it reach the highs of the original game or the modern Blaster Master Zero trilogy. Still, at the time of release it was probably the second-best mainline game in the series (not as good as the NES original but better than the Game Boy Color version).
- Fixing the controls and making it less blurry doesn't completely redeem the game, but maybe it takes it from a 6 to a 6.5. It's not a hidden gem, it's not a forgotten classic, it's just an all right game held back by controls and visuals that aren't all right. Give it a shot if you really like Blaster Master games.
- EDIT: Bonus note. Back when this game launched in 2010, publisher Gaijinworks's Victor Ireland made a number of posts on gaming message boards about his intention to push Sunsoft to release an update to add Classic Controller and progressive scan support. That never ended up happening, but even though it took 14 years, we've finally made it to the future.
Technical Notes
Yeesh, this really blew out. Writing the original Gecko codes went about as well as any disc-based game, but when it came to injecting the hacks into the WAD, everything got a lot more complicated. I don't really know anything about the NAND title loading process, but my understanding is that aloader.bin
file runs before the actual title contents. I think it must be this which fails to handle the expandedmain.dol
. At a guess, the situation is something like, the expandedmain.dol
bumps up the addressing where all other data is placed in memory by theloader.bin
, so none of the data is where the code insidemain.dol
expects to find it any more and it immediately falls apart when it tries to read it. Is this fixable? Can somebody fix this? Please? A way to apply code modifications to WiiWare that is less "manual" would be great.
Quickly skimming through the different parts of the Classic Controller hack, you've got aC2
for the pointer incalc_dpd_variable()
, aC2
inread_kpad_ext()
for the left stick emulation and twin-stick aiming support (I'll come back to that) and anotherC2
inread_kpad_button()
for the button input.
The twin-stick aiming code is kind of spaghetti. It's derived from the standard D-Pad emulation setup, but has to do a bunch of trickery to accommodate movement on the real D-Pad/Left Stick and aiming on the Right Stick when the original game was controlled entirely on a single D-Pad. The way this is done is that any time you move the Right Stick in a new direction, D-Pad emulation occurs on that stick for a single frame. The right stick also handles "pressing" the shoot and strafe buttons for you. Broken down frame by frame, here's how it works:
In this way, everything that's happening is technically possible in normal gameplay with frame perfect input, since that's all this is. Arguably, it's not twin-stick aiming, it's tool-assisted frame-perfect strafing.
- frame 0: player is holding D-Pad Right and Alex is running to the right
- frame 1: player moves Right Stick to the left
- for a single frame, D-Pad emulation occurs on the right stick and Alex turns to face left
- at the same time, the shoot button is pressed and held and Alex begins shooting left
- frame 2+: the strafe button is pressed and held so that Alex continues facing/shooting left
- at the same time, normal D-Pad operation is restored and Alex resumes moving to the right
- ... time passes ...
- frame 201: the player moves the Right Stick from the left to the up-left position
- for a single frame, the strafe button is released so that Alex can turn to face the new direction
- for that same frame, D-Pad emulation is back on the right stick and Alex turns to face up-left
- frame 202+: the strafe button is pressed and held so that Alex continues facing/shooting up-left
- at the same time, normal D-Pad operation is restored and Alex resumes moving to the right
Great job. Some wiiware games deserve cc hack, like alien crush returns, lostwinds.It should be relatively easy to modify that Mario Kart Wii hack to have different control schemes like the one you mentioned. It's a slightly more complicated hack than most because it's remapping inputs instead of just mapping them, if you follow my meaning. But I'll try to remember for my next update and I'll post a version that should be easier to edit.
The tl;dr version of how the current code works is that it's only remapping the buttons that are changed and leaving all the others alone, so e.g. you can't easily edit what the B button does using that code since it's not part of the code at all. But I can do a version which manually remaps every single button to itself, and then anybody can just switch around the buttons as they desire. I promise I'm making it sound more complicated than it is, it will be a pretty quick project and then everybody can just have whatever Mario Kart Wii button layout they like.
Sega Bass Fishing definitely sounds like a fun one to look into. It's on the more complicated end with all its different inputs, but I'll definitely put it on my list. Thanks for the walkthrough of the various motions it needs as well, that's good info for if/when I get to investigating the game.
Would be super awesome to see more people get into Classic Controller hacking. Obviously some games are a lot more complicated than others, so if you do take a shot at it, the obvious choice for a starting place would be a game that has no "remove the unsupported extension controller" type error, uses the solo Wii Remote and zero motion controls. With a game like that, the guide should cover everything.
That's good to know, thanks very much. I've actually been playing through Super Paper Mario slowly any time I get burned out on hacking stuff. I know I could just download a save from online, but you know, most of my leisure time for actual months at this point has gone into Classic Controller hacking, so it's nice to have a bit of downtime. I haven't gotten to any of the parts that need accelerometer support yet, but it helps to know that it's only really used in one place.
I did look into Mario Strikers Charged and was having a lot of trouble, then realized it's another Next Level Games ... game. I've looked at three of theirs so far including Strikers: one that I completely failed at, and the other being Punch-Out!! The major quirk of NLG titles is that they all use the low-level controller report data rather than the more "friendly" processed data which almost all other games use.
I've currently got five different games that use the low-level data where progress basically stalled because I don't really understand where or how to handle it. For Punch-Out!!, this wasn't too bad because I only had to figure out how to remap the buttons in the raw controller reports since it's a purely button-based game. That said, it took me three weeks on-and-off to get Punch-Out!! done, and that's one I'm considering easy. For Strikers, it's a lot more complicated, since I'll need a much greater understanding of the low-level controller functions and reports to figure out how the accelerometer and analog stick inputs work.
No updates on Fluidity yet, I haven't looked at that game at all. Just for reference, I've got about 30 games on my list of things that I actively want to look into, either because they're games I personally like or games people from here or elsewhere have asked about. I'm not approaching them in any particular order, I'll sort of just try to guestimate how difficult a project will be based on how the original controls work and how much time and energy I've got at a given moment.
Generally if there's no updates for a while, I've either been busy with other stuff, got stuck multiple times in a row and moved on to a different project (I attempted three other games before the one I succeeded at in this post) or landed on a game where I didn't get stuck so much as I had very slow progress because of unexpected challenges (also the game in this post).
Most people just use their USB loader app to apply Gecko codes because they (all?) include support for cheats. You can also apply codes using the Gecko OS retail disc loader, but even then, most (all?) USB loaders can launch retail discs as well, so they're pretty convenient for using cheats whether you're loading discs, backups or even NAND/emuNAND channels. It's worth mentioning that USB Loader GX calls Gecko codes "Ocarina" codes for reasons I don't know, so it's possible you're already using Gecko codes under another name. I described the basic process for using Gecko codes with USB loaders in this post.
Once you have the codes in the correct text file on your SD card, they'll show up in your loader's cheats section. For example, in USB Loader GX, you choose a game, then go to Settings > Ocarina and it will show a list of all the codes you have for that game. You can switch them ON/OFF from that menu, then choose "Create" to generate the code file. Lastly, you'll need to make sure Ocarina codes are enabled in USB Loader GX. Go back to Settings > Game Load and scroll down to Ocarina. Switch it to ON to make sure Ocarina (Gecko) codes are active for this game.
Totally get it, no hard feelings. I also know how easy it is to get excited about dream projects and that it sometimes must seem like a quick process, since I'll sometimes drop several codes over a few days. But a lot of that is just that I've got multiple projects on the go sometimes, so it's not so much that I hacked five games in the last week (or 13 if you count every region!) but that five of them got finished this week.
I also want to thank everyone for being cool about valuing my time/effort in general. It is a pretty tough process for each game and it's nice to know people understand that and are helping to make sure that idea gets across.
That said, now it's time for a game absolutely nobody has been patiently waiting for!
2010's Blaster Master: Overdrive is perhaps the most forgotten entry in the storied Sunsoft Metroidvania franchise. Released exclusively to the Wii Shop Channel as WiiWare, they had high hopes of reviving the franchise after several previous failed attempts. Instead, this would be yet another unsuccessful title, a pattern which wouldn't turn around until the celebrated Blaster Master Zero trilogy.
Overdrive closely follows the formula of the NES classic, with a sprawling, Metroid-style overworld navigated in the upgradable SOPHIA tank giving way to top-down shooter levels outside the tank. The most prominent additions here are a world map and the ability to save. While it retained the core of what makes Blaster Master fun, critics and players noted two major flaws with this release: the budget presentation (4:3, 480i and a generic art style missing the character of the NES game) and the awkward Wiimote controls (with the Wiimote held sideways and requiring frequent use of the uncomfortable A/B buttons). What to do?
Besides the Classic Controller hack itself, there's a few more codes here to make the game look slightly nicer. It's never going to be a great looking game, but forcing 480p, disabling the copy (deflicker) filter and forcing 4:3 all help to sharpen up the image.
Blaster Master has no widescreen support anyway; it just draws black bars in the extra space, so forcing 4:3 allows the full resolution to be dedicated to drawing the actual gameplay area.
The viWidth mod is more subjective: this will reduce the sharpness slightly but corrects the aspect ratio so that round objects like enemy bullets and SOPHIA's tires are ... round.
USAEUR
Code:Classic Controller Support [Vague Rant] C2129C78 0000001D 90010024 2C040000 408200D8 8803005C 2C000002 408200CC 48000015 800E4480 3FAAAAAB 3C75C28F 3F800000 7CA802A6 90A1000C 80030004 70008000 41820010 38000000 90030020 90030024 38C00002 98C3005E 81850000 7D8803A6 4E800021 2C030001 7FE3FB78 80A1000C C0450004 40820008 EC4200B2 C0650008 C0030020 C023006C FC211024 4800002D D0030020 C0030024 C0230070 FC200850 48000019 D0030024 80010024 7C0803A6 38210020 4E800020 FC0100FA C025000C FC000800 4180000C FC000890 48000014 FC200850 FC000800 41810008 FC000890 4E800020 60000000 00000000 C212ABA8 00000020 4E800421 2C140001 408200F4 48000011 00000000 3F000000 00000000 7C6802A6 809EFFA0 80BEFFA4 80DEFFA8 80E30000 39200000 C0430004 C0630008 C03E0014 FC200850 39000004 48000069 C03E0018 39000001 4800005D 91230000 2C090000 4182001C 7C093800 41820010 7084FFF0 61290200 48000024 39200600 C03E000C FC200850 39000004 48000049 C03E0010 39000001 4800003D 7C844B78 909EFFA0 90BEFFA4 7CC62079 90DEFFA8 48000050 FC000A10 FC001040 4D800020 FC011840 41800008 5508083C 7D294378 4E800020 FC000A10 FC001040 4D800020 FC011840 41800008 5508083C 7CC04039 40820008 7CA54378 7C844378 4E800020 00000000 C2128C84 00000019 2C040002 408200B8 71090800 41820008 60C68000 71090001 41820008 60C60002 71094000 41820008 60C60001 71090002 41820008 60C60008 71098000 41820008 60C60004 71090010 41820008 60C60200 71090040 41820008 60C60100 71090008 41820008 60C60010 71090020 41820008 60C60200 71092000 41820008 60C60800 71090200 41820008 60C60400 71090080 41820008 60C60800 71090004 41820008 60C60400 71090400 41820008 60C61000 71091000 41820008 60C61000 70C99FFF 60000000 00000000
Code:Disable Copy Filter [Vague Rant] 040C02E0 48000040
Code:Force 480p [Vague Rant] 041EF558 00000002 021EF56E 00000000 041EF5D0 00000016 021EF5E6 00000000
Code:Force 4:3 [Vague Rant] 040E44AC 38000000
Code:Force 704 viWidth [Vague Rant] 021EF562 00000008 021EF566 000002C0 021EF5DA 00000008 021EF5DE 000002C0
Code:Classic Controller Support [Vague Rant] C212A588 0000001D 90010024 2C040000 408200D8 8803005C 2C000002 408200CC 48000015 800E4D90 3FAAAAAB 3C75C28F 3F800000 7CA802A6 90A1000C 80030004 70008000 41820010 38000000 90030020 90030024 38C00002 98C3005E 81850000 7D8803A6 4E800021 2C030001 7FE3FB78 80A1000C C0450004 40820008 EC4200B2 C0650008 C0030020 C023006C FC211024 4800002D D0030020 C0030024 C0230070 FC200850 48000019 D0030024 80010024 7C0803A6 38210020 4E800020 FC0100FA C025000C FC000800 4180000C FC000890 48000014 FC200850 FC000800 41810008 FC000890 4E800020 60000000 00000000 C212B4B8 00000020 4E800421 2C140001 408200F4 48000011 00000000 3F000000 00000000 7C6802A6 809EFFA0 80BEFFA4 80DEFFA8 80E30000 39200000 C0430004 C0630008 C03E0014 FC200850 39000004 48000069 C03E0018 39000001 4800005D 91230000 2C090000 4182001C 7C093800 41820010 7084FFF0 61290200 48000024 39200600 C03E000C FC200850 39000004 48000049 C03E0010 39000001 4800003D 7C844B78 909EFFA0 90BEFFA4 7CC62079 90DEFFA8 48000050 FC000A10 FC001040 4D800020 FC011840 41800008 5508083C 7D294378 4E800020 FC000A10 FC001040 4D800020 FC011840 41800008 5508083C 7CC04039 40820008 7CA54378 7C844378 4E800020 00000000 C2129594 00000019 2C040002 408200B8 71090800 41820008 60C68000 71090001 41820008 60C60002 71094000 41820008 60C60001 71090002 41820008 60C60008 71098000 41820008 60C60004 71090010 41820008 60C60200 71090040 41820008 60C60100 71090008 41820008 60C60010 71090020 41820008 60C60200 71092000 41820008 60C60800 71090200 41820008 60C60400 71090080 41820008 60C60800 71090004 41820008 60C60400 71090400 41820008 60C61000 71091000 41820008 60C61000 70C99FFF 60000000 00000000
Code:Disable Copy Filter [Vague Rant] 040C0BF0 48000040
Code:Force 480p [Vague Rant] 041F0598 00000002 021F05AE 00000000 041F0610 00000016 021F0626 00000000
Code:Force 4:3 [Vague Rant] 040E4DBC 38000000
Code:Force 704 viWidth [Vague Rant] 021F05A2 00000008 021F05A6 000002C0 021F061A 00000008 021F061E 000002C0
View attachment 466938
The archive above includes several tools, IPS patches and a Windows batch script to make applying this hack directly to a WAD relatively painless.
In addition to that ZIP, you will need:
I will not help you find either of the above.
- a Blaster Master: Overdrive WAD (either USA or EUR)
common-key.bin
To use the script:
As a general rule, you shouldn't download and run random executables and batch scripts you find on the Internet. If you can't or don't want to run any of these on your machine, the IPS patches are included in the
- extract the ZIP file somewhere sensible
- add the
common-key.bin
to that directory
- drag and drop your Blaster Master: Overdrive WAD onto the
apply-patch.bat
file
- alternatively, you can run the script directly and drag and drop the WAD into the window that opens or just type the path to your WAD manually
- answer the y/n prompts for which patches you want to apply
- once you're ready, the script will use the included tools to unpack, patch and repack a new WAD with your chosen patches
- the original WAD will not be modified
- do whatever you normally would do with a WAD file
- if you're making a Wii U Wii VC injection, use the "Force Classic Controller connected" option in your injection software.
- if you enabled the Force 4:3 patch, also remember to use the "Force 4:3 (vWii NAND titles only)" option in the injection software, unless you want the game to be stretched to fill 16:9
patches
directory and you can figure out how to apply them in whatever way you feel comfortable. There is areadme.txt
included with slightly more details on how to apply the patches in platform-agnostic terms (e.g. "Unpack your WAD").Button Mapping
Wii Remote Classic Controller Function Home Home
Remember that L/ZL are your A buttonOpen/Close Home Button Menu D-Pad D-Pad
Left StickMenus
Navigation
Gameplay
MovementA L
ZLGameplay
Change WeaponB R
ZRSOPHIA
Lock Cannon Angle
On-Foot
Strafe1 Y
AMenus
Confirm (seriously)
Gameplay
Shoot2 B Menus
Cancel (seriously)
SOPHIA
Jump
On-Foot
BombD-Pad + 1 + B Right Stick On-Foot
Aim, Shoot and StrafePlus X Gameplay
Enter/Exit SOPHIAMinus Plus
MinusSOPHIA
Overworld Map
General Notes
- You only need to use one or the other of the Gecko codes or pre-patched WAD. If you're booting via a method which can apply Gecko codes, that will be much easier. If you need the hack patched directly into the game (e.g. for use as a Wii U injection), use the WAD patches.
- Hacking WiiWare titles is a lot more difficult than I expected. Gecko codes loaded via app work exactly as they do for disc games, but appending a code section to the
main.dol
prevents the title from booting. That's why the WAD patches are here, primarily for anybody who wants to use this as a Wii U Wii VC injection.
- The WAD patches completely break accelerometer compatibility, as I needed somewhere to inject the patches and the accelerometer is not used here except to help the Wii Remote locate the sensor bar while the Home Button Menu is open. Too bad.
- This is not a workable solution for games which do use the accelerometer. I don't have a plan for what to do in that situation currently. Besides, this was a lot of extra effort because I had to manually create every branch to and from modified code, since I no longer have a code handler running here. Look at me. I'm the code handler now.
- The major addition here is twin-stick controls for the top-down stages. As an alternative to moving and aiming with the D-Pad/Left Stick, this allows you to move with the D-Pad/Left Stick and shoot in any direction with the Right Stick. Blaster Master: Overdrive can be quite challenging, so this is very helpful.
- Obviously, if you prefer the traditional controls, they are also preserved here. You can just use the normal movement, shoot and strafe buttons and ignore the Right Stick.
- While some mappings might seem odd (A on L/ZL; Plus on X), this control scheme is largely adapted from the Blaster Master Zero trilogy which followed this game. If you've played any of those games, you should be right at home here. The only other slightly weird thing is mapping 1 to both Y and A. This game has inverted Confirm/Cancel controls, so this was solely done to make menu navigation work naturally while keeping Shoot on Y. Or you can shoot with A and Confirm with Y if you're weird like that.
- Blaster Master: Overdrive is a pretty 6/10 kind of game. I have a soft spot for it as I really like the Blaster Master franchise, but there's a reason this one has been forgotten. It's not a series low-point like Blaster Master 2 for Sega Genesis but neither does it reach the highs of the original game or the modern Blaster Master Zero trilogy. Still, at the time of release it was probably the second-best mainline game in the series (not as good as the NES original but better than the Game Boy Color version).
- Fixing the controls and making it less blurry doesn't completely redeem the game, but maybe it takes it from a 6 to a 6.5. It's not a hidden gem, it's not a forgotten classic, it's just an all right game held back by controls and visuals that aren't all right. Give it a shot if you really like Blaster Master games.
- EDIT: Bonus note. Back when this game launched in 2010, publisher Gaijinworks's Victor Ireland made a number of posts on gaming message boards about his intention to push Sunsoft to release an update to add Classic Controller and progressive scan support. That never ended up happening, but even though it took 14 years, we've finally made it to the future.
Technical Notes
Yeesh, this really blew out. Writing the original Gecko codes went about as well as any disc-based game, but when it came to injecting the hacks into the WAD, everything got a lot more complicated. I don't really know anything about the NAND title loading process, but my understanding is that aloader.bin
file runs before the actual title contents. I think it must be this which fails to handle the expandedmain.dol
. At a guess, the situation is something like, the expandedmain.dol
bumps up the addressing where all other data is placed in memory by theloader.bin
, so none of the data is where the code insidemain.dol
expects to find it any more and it immediately falls apart when it tries to read it. Is this fixable? Can somebody fix this? Please? A way to apply code modifications to WiiWare that is less "manual" would be great.
Quickly skimming through the different parts of the Classic Controller hack, you've got aC2
for the pointer incalc_dpd_variable()
, aC2
inread_kpad_ext()
for the left stick emulation and twin-stick aiming support (I'll come back to that) and anotherC2
inread_kpad_button()
for the button input.
The twin-stick aiming code is kind of spaghetti. It's derived from the standard D-Pad emulation setup, but has to do a bunch of trickery to accommodate movement on the real D-Pad/Left Stick and aiming on the Right Stick when the original game was controlled entirely on a single D-Pad. The way this is done is that any time you move the Right Stick in a new direction, D-Pad emulation occurs on that stick for a single frame. The right stick also handles "pressing" the shoot and strafe buttons for you. Broken down frame by frame, here's how it works:
In this way, everything that's happening is technically possible in normal gameplay with frame perfect input, since that's all this is. Arguably, it's not twin-stick aiming, it's tool-assisted frame-perfect strafing.
- frame 0: player is holding D-Pad Right and Alex is running to the right
- frame 1: player moves Right Stick to the left
- for a single frame, D-Pad emulation occurs on the right stick and Alex turns to face left
- at the same time, the shoot button is pressed and held and Alex begins shooting left
- frame 2+: the strafe button is pressed and held so that Alex continues facing/shooting left
- at the same time, normal D-Pad operation is restored and Alex resumes moving to the right
- ... time passes ...
- frame 201: the player moves the Right Stick from the left to the up-left position
- for a single frame, the strafe button is released so that Alex can turn to face the new direction
- for that same frame, D-Pad emulation is back on the right stick and Alex turns to face up-left
- frame 202+: the strafe button is pressed and held so that Alex continues facing/shooting up-left
- at the same time, normal D-Pad operation is restored and Alex resumes moving to the right
Yes, you can add the codes for the classic controller hack to dolphin and it should work. Just watch out for the right region and revision version.I use Wiiflow, i never noticed that usb loader gx had gecko but I have seen Dolphin emulator have gecko cheat. Would any of this cheat works on Dolphin Emulator? and i will check into Wiiflow if there is cheat code avail thank you for answering my question.
Nice work like usual! Ill check the making CC hacks thing and see if i can learn anything to make them, i have like no coding knowledge, but ill look into itIt should be relatively easy to modify that Mario Kart Wii hack to have different control schemes like the one you mentioned. It's a slightly more complicated hack than most because it's remapping inputs instead of just mapping them, if you follow my meaning. But I'll try to remember for my next update and I'll post a version that should be easier to edit.
The tl;dr version of how the current code works is that it's only remapping the buttons that are changed and leaving all the others alone, so e.g. you can't easily edit what the B button does using that code since it's not part of the code at all. But I can do a version which manually remaps every single button to itself, and then anybody can just switch around the buttons as they desire. I promise I'm making it sound more complicated than it is, it will be a pretty quick project and then everybody can just have whatever Mario Kart Wii button layout they like.
Sega Bass Fishing definitely sounds like a fun one to look into. It's on the more complicated end with all its different inputs, but I'll definitely put it on my list. Thanks for the walkthrough of the various motions it needs as well, that's good info for if/when I get to investigating the game.
Would be super awesome to see more people get into Classic Controller hacking. Obviously some games are a lot more complicated than others, so if you do take a shot at it, the obvious choice for a starting place would be a game that has no "remove the unsupported extension controller" type error, uses the solo Wii Remote and zero motion controls. With a game like that, the guide should cover everything.
That's good to know, thanks very much. I've actually been playing through Super Paper Mario slowly any time I get burned out on hacking stuff. I know I could just download a save from online, but you know, most of my leisure time for actual months at this point has gone into Classic Controller hacking, so it's nice to have a bit of downtime. I haven't gotten to any of the parts that need accelerometer support yet, but it helps to know that it's only really used in one place.
I did look into Mario Strikers Charged and was having a lot of trouble, then realized it's another Next Level Games ... game. I've looked at three of theirs so far including Strikers: one that I completely failed at, and the other being Punch-Out!! The major quirk of NLG titles is that they all use the low-level controller report data rather than the more "friendly" processed data which almost all other games use.
I've currently got five different games that use the low-level data where progress basically stalled because I don't really understand where or how to handle it. For Punch-Out!!, this wasn't too bad because I only had to figure out how to remap the buttons in the raw controller reports since it's a purely button-based game. That said, it took me three weeks on-and-off to get Punch-Out!! done, and that's one I'm considering easy. For Strikers, it's a lot more complicated, since I'll need a much greater understanding of the low-level controller functions and reports to figure out how the accelerometer and analog stick inputs work.
No updates on Fluidity yet, I haven't looked at that game at all. Just for reference, I've got about 30 games on my list of things that I actively want to look into, either because they're games I personally like or games people from here or elsewhere have asked about. I'm not approaching them in any particular order, I'll sort of just try to guestimate how difficult a project will be based on how the original controls work and how much time and energy I've got at a given moment.
Generally if there's no updates for a while, I've either been busy with other stuff, got stuck multiple times in a row and moved on to a different project (I attempted three other games before the one I succeeded at in this post) or landed on a game where I didn't get stuck so much as I had very slow progress because of unexpected challenges (also the game in this post).
Most people just use their USB loader app to apply Gecko codes because they (all?) include support for cheats. You can also apply codes using the Gecko OS retail disc loader, but even then, most (all?) USB loaders can launch retail discs as well, so they're pretty convenient for using cheats whether you're loading discs, backups or even NAND/emuNAND channels. It's worth mentioning that USB Loader GX calls Gecko codes "Ocarina" codes for reasons I don't know, so it's possible you're already using Gecko codes under another name. I described the basic process for using Gecko codes with USB loaders in this post.
Once you have the codes in the correct text file on your SD card, they'll show up in your loader's cheats section. For example, in USB Loader GX, you choose a game, then go to Settings > Ocarina and it will show a list of all the codes you have for that game. You can switch them ON/OFF from that menu, then choose "Create" to generate the code file. Lastly, you'll need to make sure Ocarina codes are enabled in USB Loader GX. Go back to Settings > Game Load and scroll down to Ocarina. Switch it to ON to make sure Ocarina (Gecko) codes are active for this game.
Totally get it, no hard feelings. I also know how easy it is to get excited about dream projects and that it sometimes must seem like a quick process, since I'll sometimes drop several codes over a few days. But a lot of that is just that I've got multiple projects on the go sometimes, so it's not so much that I hacked five games in the last week (or 13 if you count every region!) but that five of them got finished this week.
I also want to thank everyone for being cool about valuing my time/effort in general. It is a pretty tough process for each game and it's nice to know people understand that and are helping to make sure that idea gets across.
That said, now it's time for a game absolutely nobody has been patiently waiting for!
2010's Blaster Master: Overdrive is perhaps the most forgotten entry in the storied Sunsoft Metroidvania franchise. Released exclusively to the Wii Shop Channel as WiiWare, they had high hopes of reviving the franchise after several previous failed attempts. Instead, this would be yet another unsuccessful title, a pattern which wouldn't turn around until the celebrated Blaster Master Zero trilogy.
Overdrive closely follows the formula of the NES classic, with a sprawling, Metroid-style overworld navigated in the upgradable SOPHIA tank giving way to top-down shooter levels outside the tank. The most prominent additions here are a world map and the ability to save. While it retained the core of what makes Blaster Master fun, critics and players noted two major flaws with this release: the budget presentation (4:3, 480i and a generic art style missing the character of the NES game) and the awkward Wiimote controls (with the Wiimote held sideways and requiring frequent use of the uncomfortable A/B buttons). What to do?
Besides the Classic Controller hack itself, there's a few more codes here to make the game look slightly nicer. It's never going to be a great looking game, but forcing 480p, disabling the copy (deflicker) filter and forcing 4:3 all help to sharpen up the image.
Blaster Master has no widescreen support anyway; it just draws black bars in the extra space, so forcing 4:3 allows the full resolution to be dedicated to drawing the actual gameplay area.
The viWidth mod is more subjective: this will reduce the sharpness slightly but corrects the aspect ratio so that round objects like enemy bullets and SOPHIA's tires are ... round.
USAEUR
Code:Classic Controller Support [Vague Rant] C2129C78 0000001D 90010024 2C040000 408200D8 8803005C 2C000002 408200CC 48000015 800E4480 3FAAAAAB 3C75C28F 3F800000 7CA802A6 90A1000C 80030004 70008000 41820010 38000000 90030020 90030024 38C00002 98C3005E 81850000 7D8803A6 4E800021 2C030001 7FE3FB78 80A1000C C0450004 40820008 EC4200B2 C0650008 C0030020 C023006C FC211024 4800002D D0030020 C0030024 C0230070 FC200850 48000019 D0030024 80010024 7C0803A6 38210020 4E800020 FC0100FA C025000C FC000800 4180000C FC000890 48000014 FC200850 FC000800 41810008 FC000890 4E800020 60000000 00000000 C212ABA8 00000020 4E800421 2C140001 408200F4 48000011 00000000 3F000000 00000000 7C6802A6 809EFFA0 80BEFFA4 80DEFFA8 80E30000 39200000 C0430004 C0630008 C03E0014 FC200850 39000004 48000069 C03E0018 39000001 4800005D 91230000 2C090000 4182001C 7C093800 41820010 7084FFF0 61290200 48000024 39200600 C03E000C FC200850 39000004 48000049 C03E0010 39000001 4800003D 7C844B78 909EFFA0 90BEFFA4 7CC62079 90DEFFA8 48000050 FC000A10 FC001040 4D800020 FC011840 41800008 5508083C 7D294378 4E800020 FC000A10 FC001040 4D800020 FC011840 41800008 5508083C 7CC04039 40820008 7CA54378 7C844378 4E800020 00000000 C2128C84 00000019 2C040002 408200B8 71090800 41820008 60C68000 71090001 41820008 60C60002 71094000 41820008 60C60001 71090002 41820008 60C60008 71098000 41820008 60C60004 71090010 41820008 60C60200 71090040 41820008 60C60100 71090008 41820008 60C60010 71090020 41820008 60C60200 71092000 41820008 60C60800 71090200 41820008 60C60400 71090080 41820008 60C60800 71090004 41820008 60C60400 71090400 41820008 60C61000 71091000 41820008 60C61000 70C99FFF 60000000 00000000
Code:Disable Copy Filter [Vague Rant] 040C02E0 48000040
Code:Force 480p [Vague Rant] 041EF558 00000002 021EF56E 00000000 041EF5D0 00000016 021EF5E6 00000000
Code:Force 4:3 [Vague Rant] 040E44AC 38000000
Code:Force 704 viWidth [Vague Rant] 021EF562 00000008 021EF566 000002C0 021EF5DA 00000008 021EF5DE 000002C0
Code:Classic Controller Support [Vague Rant] C212A588 0000001D 90010024 2C040000 408200D8 8803005C 2C000002 408200CC 48000015 800E4D90 3FAAAAAB 3C75C28F 3F800000 7CA802A6 90A1000C 80030004 70008000 41820010 38000000 90030020 90030024 38C00002 98C3005E 81850000 7D8803A6 4E800021 2C030001 7FE3FB78 80A1000C C0450004 40820008 EC4200B2 C0650008 C0030020 C023006C FC211024 4800002D D0030020 C0030024 C0230070 FC200850 48000019 D0030024 80010024 7C0803A6 38210020 4E800020 FC0100FA C025000C FC000800 4180000C FC000890 48000014 FC200850 FC000800 41810008 FC000890 4E800020 60000000 00000000 C212B4B8 00000020 4E800421 2C140001 408200F4 48000011 00000000 3F000000 00000000 7C6802A6 809EFFA0 80BEFFA4 80DEFFA8 80E30000 39200000 C0430004 C0630008 C03E0014 FC200850 39000004 48000069 C03E0018 39000001 4800005D 91230000 2C090000 4182001C 7C093800 41820010 7084FFF0 61290200 48000024 39200600 C03E000C FC200850 39000004 48000049 C03E0010 39000001 4800003D 7C844B78 909EFFA0 90BEFFA4 7CC62079 90DEFFA8 48000050 FC000A10 FC001040 4D800020 FC011840 41800008 5508083C 7D294378 4E800020 FC000A10 FC001040 4D800020 FC011840 41800008 5508083C 7CC04039 40820008 7CA54378 7C844378 4E800020 00000000 C2129594 00000019 2C040002 408200B8 71090800 41820008 60C68000 71090001 41820008 60C60002 71094000 41820008 60C60001 71090002 41820008 60C60008 71098000 41820008 60C60004 71090010 41820008 60C60200 71090040 41820008 60C60100 71090008 41820008 60C60010 71090020 41820008 60C60200 71092000 41820008 60C60800 71090200 41820008 60C60400 71090080 41820008 60C60800 71090004 41820008 60C60400 71090400 41820008 60C61000 71091000 41820008 60C61000 70C99FFF 60000000 00000000
Code:Disable Copy Filter [Vague Rant] 040C0BF0 48000040
Code:Force 480p [Vague Rant] 041F0598 00000002 021F05AE 00000000 041F0610 00000016 021F0626 00000000
Code:Force 4:3 [Vague Rant] 040E4DBC 38000000
Code:Force 704 viWidth [Vague Rant] 021F05A2 00000008 021F05A6 000002C0 021F061A 00000008 021F061E 000002C0
View attachment 466938
The archive above includes several tools, IPS patches and a Windows batch script to make applying this hack directly to a WAD relatively painless.
In addition to that ZIP, you will need:
I will not help you find either of the above.
- a Blaster Master: Overdrive WAD (either USA or EUR)
common-key.bin
To use the script:
As a general rule, you shouldn't download and run random executables and batch scripts you find on the Internet. If you can't or don't want to run any of these on your machine, the IPS patches are included in the
- extract the ZIP file somewhere sensible
- add the
common-key.bin
to that directory
- drag and drop your Blaster Master: Overdrive WAD onto the
apply-patch.bat
file
- alternatively, you can run the script directly and drag and drop the WAD into the window that opens or just type the path to your WAD manually
- answer the y/n prompts for which patches you want to apply
- once you're ready, the script will use the included tools to unpack, patch and repack a new WAD with your chosen patches
- the original WAD will not be modified
- do whatever you normally would do with a WAD file
- if you're making a Wii U Wii VC injection, use the "Force Classic Controller connected" option in your injection software.
- if you enabled the Force 4:3 patch, also remember to use the "Force 4:3 (vWii NAND titles only)" option in the injection software, unless you want the game to be stretched to fill 16:9
patches
directory and you can figure out how to apply them in whatever way you feel comfortable. There is areadme.txt
included with slightly more details on how to apply the patches in platform-agnostic terms (e.g. "Unpack your WAD").Button Mapping
Wii Remote Classic Controller Function Home Home
Remember that L/ZL are your A buttonOpen/Close Home Button Menu D-Pad D-Pad
Left StickMenus
Navigation
Gameplay
MovementA L
ZLGameplay
Change WeaponB R
ZRSOPHIA
Lock Cannon Angle
On-Foot
Strafe1 Y
AMenus
Confirm (seriously)
Gameplay
Shoot2 B Menus
Cancel (seriously)
SOPHIA
Jump
On-Foot
BombD-Pad + 1 + B Right Stick On-Foot
Aim, Shoot and StrafePlus X Gameplay
Enter/Exit SOPHIAMinus Plus
MinusSOPHIA
Overworld Map
General Notes
- You only need to use one or the other of the Gecko codes or pre-patched WAD. If you're booting via a method which can apply Gecko codes, that will be much easier. If you need the hack patched directly into the game (e.g. for use as a Wii U injection), use the WAD patches.
- Hacking WiiWare titles is a lot more difficult than I expected. Gecko codes loaded via app work exactly as they do for disc games, but appending a code section to the
main.dol
prevents the title from booting. That's why the WAD patches are here, primarily for anybody who wants to use this as a Wii U Wii VC injection.
- The WAD patches completely break accelerometer compatibility, as I needed somewhere to inject the patches and the accelerometer is not used here except to help the Wii Remote locate the sensor bar while the Home Button Menu is open. Too bad.
- This is not a workable solution for games which do use the accelerometer. I don't have a plan for what to do in that situation currently. Besides, this was a lot of extra effort because I had to manually create every branch to and from modified code, since I no longer have a code handler running here. Look at me. I'm the code handler now.
- The major addition here is twin-stick controls for the top-down stages. As an alternative to moving and aiming with the D-Pad/Left Stick, this allows you to move with the D-Pad/Left Stick and shoot in any direction with the Right Stick. Blaster Master: Overdrive can be quite challenging, so this is very helpful.
- Obviously, if you prefer the traditional controls, they are also preserved here. You can just use the normal movement, shoot and strafe buttons and ignore the Right Stick.
- While some mappings might seem odd (A on L/ZL; Plus on X), this control scheme is largely adapted from the Blaster Master Zero trilogy which followed this game. If you've played any of those games, you should be right at home here. The only other slightly weird thing is mapping 1 to both Y and A. This game has inverted Confirm/Cancel controls, so this was solely done to make menu navigation work naturally while keeping Shoot on Y. Or you can shoot with A and Confirm with Y if you're weird like that.
- Blaster Master: Overdrive is a pretty 6/10 kind of game. I have a soft spot for it as I really like the Blaster Master franchise, but there's a reason this one has been forgotten. It's not a series low-point like Blaster Master 2 for Sega Genesis but neither does it reach the highs of the original game or the modern Blaster Master Zero trilogy. Still, at the time of release it was probably the second-best mainline game in the series (not as good as the NES original but better than the Game Boy Color version).
- Fixing the controls and making it less blurry doesn't completely redeem the game, but maybe it takes it from a 6 to a 6.5. It's not a hidden gem, it's not a forgotten classic, it's just an all right game held back by controls and visuals that aren't all right. Give it a shot if you really like Blaster Master games.
- EDIT: Bonus note. Back when this game launched in 2010, publisher Gaijinworks's Victor Ireland made a number of posts on gaming message boards about his intention to push Sunsoft to release an update to add Classic Controller and progressive scan support. That never ended up happening, but even though it took 14 years, we've finally made it to the future.
Technical Notes
Yeesh, this really blew out. Writing the original Gecko codes went about as well as any disc-based game, but when it came to injecting the hacks into the WAD, everything got a lot more complicated. I don't really know anything about the NAND title loading process, but my understanding is that aloader.bin
file runs before the actual title contents. I think it must be this which fails to handle the expandedmain.dol
. At a guess, the situation is something like, the expandedmain.dol
bumps up the addressing where all other data is placed in memory by theloader.bin
, so none of the data is where the code insidemain.dol
expects to find it any more and it immediately falls apart when it tries to read it. Is this fixable? Can somebody fix this? Please? A way to apply code modifications to WiiWare that is less "manual" would be great.
Quickly skimming through the different parts of the Classic Controller hack, you've got aC2
for the pointer incalc_dpd_variable()
, aC2
inread_kpad_ext()
for the left stick emulation and twin-stick aiming support (I'll come back to that) and anotherC2
inread_kpad_button()
for the button input.
The twin-stick aiming code is kind of spaghetti. It's derived from the standard D-Pad emulation setup, but has to do a bunch of trickery to accommodate movement on the real D-Pad/Left Stick and aiming on the Right Stick when the original game was controlled entirely on a single D-Pad. The way this is done is that any time you move the Right Stick in a new direction, D-Pad emulation occurs on that stick for a single frame. The right stick also handles "pressing" the shoot and strafe buttons for you. Broken down frame by frame, here's how it works:
In this way, everything that's happening is technically possible in normal gameplay with frame perfect input, since that's all this is. Arguably, it's not twin-stick aiming, it's tool-assisted frame-perfect strafing.
- frame 0: player is holding D-Pad Right and Alex is running to the right
- frame 1: player moves Right Stick to the left
- for a single frame, D-Pad emulation occurs on the right stick and Alex turns to face left
- at the same time, the shoot button is pressed and held and Alex begins shooting left
- frame 2+: the strafe button is pressed and held so that Alex continues facing/shooting left
- at the same time, normal D-Pad operation is restored and Alex resumes moving to the right
- ... time passes ...
- frame 201: the player moves the Right Stick from the left to the up-left position
- for a single frame, the strafe button is released so that Alex can turn to face the new direction
- for that same frame, D-Pad emulation is back on the right stick and Alex turns to face up-left
- frame 202+: the strafe button is pressed and held so that Alex continues facing/shooting up-left
- at the same time, normal D-Pad operation is restored and Alex resumes moving to the right
Nice job!@Vague Rant I followed your tutorial and I was able to (partially) make a CC hack for Mario Super Sluggers. I picked that game to practice because it doesn't have a "Connect the nunchuk" message, and I don't have any experience with making gecko codes or working with ASM so I don't know how to make a code to skip that. I was able to make the game recognize the Classic Controller thanks to your guide, though I still haven't managed to emulate the motion controls (shake wiimote, tilt, etc). Thank you soo much! I'm still happy with what I managed to do. I will keep practicing!
I was gonna ask, could you explain how to remove or skip the "nunchuk" error message? Because I wanna try that with Project Zero 2: Wii Edition (PAL). I know that the method might vary depending on what game it is, but any explanation will be useful!
I was also thinking that Project Zero 2 would be really nice with a cc hack. As far as I remember there are just a few motion controls in that game just like in Fatal Frame 4. Might be the perfect candidates to start with.@Vague Rant I followed your tutorial and I was able to (partially) make a CC hack for Mario Super Sluggers. I picked that game to practice because it doesn't have a "Connect the nunchuk" message, and I don't have any experience with making gecko codes or working with ASM so I don't know how to make a code to skip that. I was able to make the game recognize the Classic Controller thanks to your guide, though I still haven't managed to emulate the motion controls (shake wiimote, tilt, etc). Thank you soo much! I'm still happy with what I managed to do. I will keep practicing!
I was gonna ask, could you explain how to remove or skip the "nunchuk" error message? Because I wanna try that with Project Zero 2: Wii Edition (PAL). I know that the method might vary depending on what game it is, but any explanation will be useful!