Hacking New Classic Controller Hacks

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
70
Trophies
0
XP
110
Country
United States
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!
 

Deleted member 688789

Well-Known Member
Newcomer
Joined
Jan 23, 2024
Messages
52
Trophies
0
XP
184
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!

What 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.
 

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
70
Trophies
0
XP
110
Country
United States
What 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 just asking him how all was going, no mean to be pushy or anything, i even said he deserved the break đź‘Ť
Post automatically merged:

But yes, @Vague Rant please do take a break for a little longer, you deserve it :)
 
Last edited by awesomeee,
  • Like
Reactions: Vague Rant

tech_A_nina

Active Member
Newcomer
Joined
Aug 1, 2018
Messages
35
Trophies
0
XP
302
Country
United Kingdom
I 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
 
  • Like
Reactions: MysticStarlight

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
70
Trophies
0
XP
110
Country
United States
I 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
 
Last edited by awesomeee,

Deleted member 688789

Well-Known Member
Newcomer
Joined
Jan 23, 2024
Messages
52
Trophies
0
XP
184
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

It 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.
 
Last edited by Deleted member 688789,
  • Like
Reactions: Vague Rant

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
70
Trophies
0
XP
110
Country
United States
It 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. I would never want to pressure someone intentionally or not.
 
Last edited by awesomeee,
  • Like
Reactions: Vague Rant

Deleted member 688789

Well-Known Member
Newcomer
Joined
Jan 23, 2024
Messages
52
Trophies
0
XP
184
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.

Hey, 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.
 
Last edited by Deleted member 688789,

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
70
Trophies
0
XP
110
Country
United States
Hey, 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.
Thanks :)
It was honestly a weird thing to get tense abour lol, i feel better now and ill probably play some wiiware :)
Vagues notifications are probably exploded from my pings haha
About the “break” thing, i meant to say like “you should take a longer break!” But i didnt clearly state it, cya!
Post automatically merged:

By the way, im really grateful you apologized, other people on the internet arent so kind and dont apologize, but you did the right thing here :)
 

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,515
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,793
Country
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...
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.

@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?
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.

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 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).

How do i get Gecko cheats app for Gamecube or Wii?
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.

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.
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!



blaster-hero.png

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

  1. 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
  2. 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 BlasterMasterOverdrive_ClassicControllerHack_v1.0.zip

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:
  • a Blaster Master: Overdrive WAD (either USA or EUR)
  • common-key.bin
I will not help you find either of the above.

To use the script:
  1. extract the ZIP file somewhere sensible

  2. add the common-key.bin to that directory

  3. 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

  4. answer the y/n prompts for which patches you want to apply

  5. 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

  6. 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
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 patches 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").

Button Mapping​

Wii RemoteClassic ControllerFunction
HomeHome
Remember that L/ZL are your A button
Open/Close Home Button Menu
D-PadD-Pad
Left Stick
Menus
Navigation
Gameplay
Movement
AL
ZL
Gameplay
Change Weapon
BR
ZR
SOPHIA
Lock Cannon Angle
On-Foot
Strafe
1Y
A
Menus
Confirm (seriously)
Gameplay
Shoot
2BMenus
Cancel (seriously)
SOPHIA
Jump
On-Foot
Bomb
D-Pad + 1 + BRight StickOn-Foot
Aim, Shoot and Strafe
PlusXGameplay
Enter/Exit SOPHIA
MinusPlus
Minus
SOPHIA
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 a 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.

Quickly skimming through the different parts of the Classic Controller hack, you've got a 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.

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:
  • 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
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.
 
Last edited by Vague Rant,

FanNintendo

Well-Known Member
Member
Joined
Apr 16, 2018
Messages
1,668
Trophies
0
Age
52
XP
2,830
Country
United States
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

  1. 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
  2. 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:
  • a Blaster Master: Overdrive WAD (either USA or EUR)
  • common-key.bin
I will not help you find either of the above.

To use the script:

  1. extract the ZIP file somewhere sensible

  2. add the common-key.bin to that directory

  3. 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

  4. answer the y/n prompts for which patches you want to apply

  5. 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

  6. 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
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 patches 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").

Button Mapping​

Wii RemoteClassic ControllerFunction
HomeHome
Remember that L/ZL are your A button
Open/Close Home Button Menu
D-PadD-Pad
Left Stick
Menus
Navigation
Gameplay
Movement
AL
ZL
Gameplay
Change Weapon
BR
ZR
SOPHIA
Lock Cannon Angle
On-Foot
Strafe
1Y
A
Menus
Confirm (seriously)
Gameplay
Shoot
2BMenus
Cancel (seriously)
SOPHIA
Jump
On-Foot
Bomb
D-Pad + 1 + BRight StickOn-Foot
Aim, Shoot and Strafe
PlusXGameplay
Enter/Exit SOPHIA
MinusPlus
Minus
SOPHIA
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 a 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.

Quickly skimming through the different parts of the Classic Controller hack, you've got a 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.

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:
  • 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
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.
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.
 

NestorM

Well-Known Member
Member
Joined
Feb 19, 2021
Messages
102
Trophies
1
Age
40
XP
1,098
Country
France
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

  1. 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
  2. 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:
  • a Blaster Master: Overdrive WAD (either USA or EUR)
  • common-key.bin
I will not help you find either of the above.

To use the script:

  1. extract the ZIP file somewhere sensible

  2. add the common-key.bin to that directory

  3. 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

  4. answer the y/n prompts for which patches you want to apply

  5. 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

  6. 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
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 patches 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").

Button Mapping​

Wii RemoteClassic ControllerFunction
HomeHome
Remember that L/ZL are your A button
Open/Close Home Button Menu
D-PadD-Pad
Left Stick
Menus
Navigation
Gameplay
Movement
AL
ZL
Gameplay
Change Weapon
BR
ZR
SOPHIA
Lock Cannon Angle
On-Foot
Strafe
1Y
A
Menus
Confirm (seriously)
Gameplay
Shoot
2BMenus
Cancel (seriously)
SOPHIA
Jump
On-Foot
Bomb
D-Pad + 1 + BRight StickOn-Foot
Aim, Shoot and Strafe
PlusXGameplay
Enter/Exit SOPHIA
MinusPlus
Minus
SOPHIA
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 a 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.

Quickly skimming through the different parts of the Classic Controller hack, you've got a 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.

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:
  • 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
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.
Great job. Some wiiware games deserve cc hack, like alien crush returns, lostwinds.
 

tech_A_nina

Active Member
Newcomer
Joined
Aug 1, 2018
Messages
35
Trophies
0
XP
302
Country
United Kingdom
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.
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.
 

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
70
Trophies
0
XP
110
Country
United States
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

  1. 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
  2. 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:
  • a Blaster Master: Overdrive WAD (either USA or EUR)
  • common-key.bin
I will not help you find either of the above.

To use the script:

  1. extract the ZIP file somewhere sensible

  2. add the common-key.bin to that directory

  3. 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

  4. answer the y/n prompts for which patches you want to apply

  5. 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

  6. 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
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 patches 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").

Button Mapping​

Wii RemoteClassic ControllerFunction
HomeHome
Remember that L/ZL are your A button
Open/Close Home Button Menu
D-PadD-Pad
Left Stick
Menus
Navigation
Gameplay
Movement
AL
ZL
Gameplay
Change Weapon
BR
ZR
SOPHIA
Lock Cannon Angle
On-Foot
Strafe
1Y
A
Menus
Confirm (seriously)
Gameplay
Shoot
2BMenus
Cancel (seriously)
SOPHIA
Jump
On-Foot
Bomb
D-Pad + 1 + BRight StickOn-Foot
Aim, Shoot and Strafe
PlusXGameplay
Enter/Exit SOPHIA
MinusPlus
Minus
SOPHIA
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 a 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.

Quickly skimming through the different parts of the Classic Controller hack, you've got a 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.

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:
  • 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
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.
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 it đź‘Ť
 
  • Like
Reactions: Vague Rant

MysticStarlight

Well-Known Member
Member
Joined
May 15, 2024
Messages
107
Trophies
0
Age
24
XP
454
Country
United States
@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!
 

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
70
Trophies
0
XP
110
Country
United States
@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!
Nice job!
 
  • Like
Reactions: MysticStarlight

tech_A_nina

Active Member
Newcomer
Joined
Aug 1, 2018
Messages
35
Trophies
0
XP
302
Country
United Kingdom
@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.
 

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
70
Trophies
0
XP
110
Country
United States
We need like a tutorial on how to make the motion parts of wiimote be emulated on a classic controller is the issue for now.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • Sicklyboy @ Sicklyboy:
    Now I have to go run out to my truck to get a new can and it's dark and cold and wet and windy :(
  • K3Nv2 @ K3Nv2:
    Don't huff the cleaner in the store wait tell you get to your car
  • K3Nv2 @ K3Nv2:
    They were talking about how a principal and assistant tried framing a kid with a weed cartridge on the radio and I'm just like how did that kid get hated that much
    +2
  • Sicklyboy @ Sicklyboy:
    of course it's texas
    +1
  • Sicklyboy @ Sicklyboy:
    shithole state
  • K3Nv2 @ K3Nv2:
    Florida would also be acceptable
  • darkscyht3s @ darkscyht3s:
    when reading upon the instructions on how to use YANBF it says to drag apfix.pck and widescreen.pck but there is no apfix.pck in the current version download of twilight 7z
  • darkscyht3s @ darkscyht3s:
    im
    on windows btw
  • SylverReZ @ SylverReZ:
    @darkscyht3s, Make a thread in the DS section.
    +1
  • BigOnYa @ BigOnYa:
    Hi @SylverReZ How are you, at this hour?
  • SylverReZ @ SylverReZ:
    Can't even get to sleep.
    +2
  • kijetesantakalu042 @ kijetesantakalu042:
    Hate how microsoft wants me to use the outlook app instead of letting me simply look at my calendar
  • K3Nv2 @ K3Nv2:
    It's looking out for you
  • kijetesantakalu042 @ kijetesantakalu042:
    I could drive for an hour and suffocate bill gates.
  • kijetesantakalu042 @ kijetesantakalu042:
    Don't fight me, bill
  • kijetesantakalu042 @ kijetesantakalu042:
    Found his address.
  • K3Nv2 @ K3Nv2:
    https://a.co/d/jc0KUK6 Sir I smell alcohol
  • Veho @ Veho:
    Oh shit fr? Let's get wasted.
    +2
  • Sicklyboy @ Sicklyboy:
    The one problem I have with a lot of beard balms like that is that they smell so intensely that it's like the only thing I can smell for an hour
  • Veho @ Veho:
    Question, what does a beard balm/wax actually do? Is it just a hair oil product, or does it act as a gel and shapes it or what?
  • Sicklyboy @ Sicklyboy:
    Yeah it's a hair oil, kind of like a leave-in conditioner, but it also helps to keep your skin under the beard moisturized a bit, and since it is oily it does help a tiny bit with helping it hold its shape or lay flatter especially after brushing it
  • Sicklyboy @ Sicklyboy:
    I rarely ever use it, really only if I'm going out and trying to look/smell a tiny bit nicer. Kind of like how I treat cologne lol
  • Sicklyboy @ Sicklyboy:
    The one I have right now that I use every once in a while is tobacco + vanilla scented. It smells -fantastic- IMO, but same issue, for like the first hour or two it is just an ever present scent that I smell on every single inhale.
    Sicklyboy @ Sicklyboy: The one I have right now that I use every once in a while is tobacco + vanilla scented. It...