Hacking New Classic Controller Hacks

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,512
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,771
Country
I also wanted to say thank you very much for your hard work and effort. It's easy to ask about specific games to be classic controller hacked, but it looks very complicated from your documentation. I guess I need a masters degree in computer science to do that. Thought it would be easier like to fiddle around with a gecko code, but this is real magic you are doing here. Yesterday I have tested de Blob on the wii u gamepad and it feels like a different game, always ment to be for the wii u system 🙏
That's super cool, love to hear that it works well on Wii U as well. I've got a Wii U myself, but I do all my testing on an original Wii just because it's so much faster than building a whole separate injection any time I make a code change or whatever. It's also nice that I can "expand the Wii U library" like that, since as much as I love it, it's missing a lot of the weirder, more niche stuff that made the Wii great.

THANK U SOO MUCH!
Also i think the 1 button on WiiMote is used in the hi-hat toy to play a demo, haha
Whoops! Thanks for noticing this, I've updated the Rhythm Heaven codes with a v1.1 that maps the 1 and also 2 button, just in case.

Hi @Vague Rant and thank you for those amazing wii stuffs. Do you know if there is a place to download cc hack already dolpatched iso ? (for making wii u injects) My computer is a piece of s*** and i can't make it myself. Many thanks.
Sorry, I'm not aware of anywhere these are available pre-built. Even I don't have them pre-built, since I test on a regular Wii with Gecko codes. Good luck!

Thank you for all the effort you've put into these :D

Do you think it would be feasible to make a CC hack for Mario Super Sluggers?
Looks a bit more complex than most since you need to charge up your swings/pitches via motion controls, but nothing that seems impossible off the bat (pun). I'll add it to my list of games to investigate.

Thank you so much for this! I'm able to play ACCF on my Wii U with the gamepad now :) Only thing is I can't find the text to slow down the cursor in the text (maybe I'm just being dumb!) I am looking at Europe Rev. 1 so maybe that's it! Honestly it doesn't even matter that much I'm just so happy this has been done after all these years!
Whoops again! That's completely on me, you're not being dumb at all. I was using the fast cursor speed for testing and forgot to put it back to the intended one before releasing the code. I've edited the codes now, v1.1 has the "medium" cursor speed which is what I meant to release, but of course you can still edit it to any other value. Otherwise super glad to hear you're enjoying it! I'm pretty happy with this one since Wii U never got a real Animal Crossing. Admittedly, you could already play the GameCube one, but having the Wii game on GamePad is about as close as it gets to a native Wii U Animal Crossing.



SI_Wii_MarioSportsMix_image1600w.jpg


The second (and final) chapter in Square Enix's Mario X Final Fantasy crossover sports series, Mario Sports Mix builds on Mario Hoops 3-on-3 aka Mario Slam Basketball by adding three more sports to the lineup with Hockey, Dodgeball and Volleyball. Looking deceptively spartan on first glance, most of the game's unique content is hidden behind the Tournament menu selection, which reveals a full story mode with unlockable characters and an unexpected final boss. Sports Mix saw a muted reception at launch because none of the games reached the depth of the dedicated single-sport Mario titles (at least the ones released up to that point; Mario Smash Tennis wasn't out yet!) and the motion controls don't really add much. Still, with its lengthy story mode, a killer soundtrack by Masayoshi Soken (Final Fantasy XIV, XVI) and Kumi Tanioka (Crystal Chronicles) and full online support, this one deserves a second chance.

Highlight for @awesomeee, who asked about this game.

USAEuropeJapan

  1. Code:
    Classic Controller Support [Vague Rant]
    C206FCE4 00000002
    28040001 41820008
    28040002 00000000
    C206FFD0 00000003
    3884FFFF 2C040001
    40820008 3884FFFF
    60000000 00000000
    040701C0 28040003
    04070C40 28040003
    04070E44 28050003
    C230D140 0000000A
    8803005C 2C000002
    4082003C 4800000D
    00000000 4059999A
    7CE802A6 C0870000
    D08305BC 801E0004
    700000C0 41820014
    C0870004 70000080
    41820008 FC802050
    D08305C0 D08305C4
    60000000 00000000
    C230DCD8 00000024
    90010024 2C040000
    40820110 8803005C
    2C000002 40820104
    48000021 802C2680
    3FAAAAAB 3C23D70A
    00000000 00000000
    3DCCCCCD 3F800000
    7CA802A6 90A1000C
    5727083C 38E7000C
    C0030074 FC000210
    C0230078 FC200A10
    FC00082A C0450014
    FC001040 4180000C
    38C0012C 48000014
    7CC53AAE 28060000
    408100A0 38C6FFFF
    7CC53B2E 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C0230074 FC211024
    4800002D D0030020
    C0030024 C0230078
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C0250018 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    0430EC28 7FC3F378
    C230CB94 0000001A
    2C040002 408200C0
    38800001 71000800
    41820008 60C68000
    71000001 41820008
    60C60008 71004000
    41820008 60C60004
    71000002 41820008
    60C60001 71008000
    41820008 60C60002
    71000010 41820008
    60C60800 71000040
    41820008 60C60080
    71000008 41820008
    60C60C00 71000020
    41820008 60C60040
    71002000 41820008
    60C64001 71000200
    41820008 60C60082
    71000080 41820008
    60C62000 71000004
    41820008 60C60400
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
  2. Code:
    Classic Controller Support [Vague Rant]
    C206FD14 00000002
    28040001 41820008
    28040002 00000000
    C2070000 00000003
    3884FFFF 2C040001
    40820008 3884FFFF
    60000000 00000000
    040701F0 28040003
    04070C70 28040003
    04070E74 28050003
    C230D1D0 0000000A
    8803005C 2C000002
    4082003C 4800000D
    00000000 4059999A
    7CE802A6 C0870000
    D08305BC 801E0004
    700000C0 41820014
    C0870004 70000080
    41820008 FC802050
    D08305C0 D08305C4
    60000000 00000000
    C230DD68 00000024
    90010024 2C040000
    40820110 8803005C
    2C000002 40820104
    48000021 802C2710
    3FAAAAAB 3C23D70A
    00000000 00000000
    3DCCCCCD 3F800000
    7CA802A6 90A1000C
    5727083C 38E7000C
    C0030074 FC000210
    C0230078 FC200A10
    FC00082A C0450014
    FC001040 4180000C
    38C0012C 48000014
    7CC53AAE 28060000
    408100A0 38C6FFFF
    7CC53B2E 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C0230074 FC211024
    4800002D D0030020
    C0030024 C0230078
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C0250018 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    0430ECB8 7FC3F378
    C230CC24 0000001A
    2C040002 408200C0
    38800001 71000800
    41820008 60C68000
    71000001 41820008
    60C60008 71004000
    41820008 60C60004
    71000002 41820008
    60C60001 71008000
    41820008 60C60002
    71000010 41820008
    60C60800 71000040
    41820008 60C60080
    71000008 41820008
    60C60C00 71000020
    41820008 60C60040
    71002000 41820008
    60C64001 71000200
    41820008 60C60082
    71000080 41820008
    60C62000 71000004
    41820008 60C60400
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
  3. Code:
    Classic Controller Support [Vague Rant]
    C206FC94 00000002
    28040001 41820008
    28040002 00000000
    C206FF80 00000003
    3884FFFF 2C040001
    40820008 3884FFFF
    60000000 00000000
    04070170 28040003
    04070BF0 28040003
    04070DF4 28050003
    C230D100 0000000A
    8803005C 2C000002
    4082003C 4800000D
    00000000 4059999A
    7CE802A6 C0870000
    D08305BC 801E0004
    700000C0 41820014
    C0870004 70000080
    41820008 FC802050
    D08305C0 D08305C4
    60000000 00000000
    C230DC98 00000024
    90010024 2C040000
    40820110 8803005C
    2C000002 40820104
    48000021 802C2640
    3FAAAAAB 3C23D70A
    00000000 00000000
    3DCCCCCD 3F800000
    7CA802A6 90A1000C
    5727083C 38E7000C
    C0030074 FC000210
    C0230078 FC200A10
    FC00082A C0450014
    FC001040 4180000C
    38C0012C 48000014
    7CC53AAE 28060000
    408100A0 38C6FFFF
    7CC53B2E 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C0230074 FC211024
    4800002D D0030020
    C0030024 C0230078
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C0250018 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    0430EBE8 7FC3F378
    C230CB54 0000001A
    2C040002 408200C0
    38800001 71000800
    41820008 60C68000
    71000001 41820008
    60C60008 71004000
    41820008 60C60004
    71000002 41820008
    60C60001 71008000
    41820008 60C60002
    71000010 41820008
    60C60800 71000040
    41820008 60C60080
    71000008 41820008
    60C60C00 71000020
    41820008 60C60040
    71002000 41820008
    60C64001 71000200
    41820008 60C60082
    71000080 41820008
    60C62000 71000004
    41820008 60C60400
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000

Button Mapping​

In addition to the regular button-for-button mappings, Mario Sports Mix makes use of a couple of button/motion combinations. Since the Classic Controller had some leftover buttons after mapping the original functionality, button combos have also been placed on individual buttons for some functions. Also, there's four games in here, this table will get ridiculous if I cover every gameplay feature, so if I say that A means Pass, assume that A means Pass in sports where that's relevant (Basketball, Hockey, Dodgeball) and not in sports where it isn't (Volleyball), etc. You get what I'm saying here.

Wii Remote & NunchukClassic ControllerGame Function
Wiimote HomeHome
Remember to use the Right Stick
Open Home Menu
Wiimote D-PadD-PadMenus
Navigation
Gameplay
Dodgeball Fake-Out (with Shake)
Wiimote D-Pad & ShakeRGameplay
Dodgeball Fake-Out
Wiimote AAMenus
Confirm
Gameplay
Pass
Wiimote BZRMenus
Cancel
Gameplay
Use Item
Wiimote A & BXGameplay
Special Move
Wiimote 1 & 2Not mappedNot used?
(I refuse to learn this lesson)
Wiimote PlusPlusMenus
Settings
Gameplay
Pause
Wiimote MinusMinusNot used?
Wiimote Swing DownBGameplay
Jump/Shoot/etc.
Volleyball Underhand
Wiimote Swing UpYGameplay
Jump/Shoot/etc.
Volleyball Overhand
Wiimote IR PointerRight StickMenus
Navigation
Nunchuk StickLeft StickMenus
Navigation
Gameplay
Movement
Nunchuk CLGameplay
Switch with CPU Teammates
Nunchuk ZZLGameplay
Basketball Trick
Hockey Charge Shot

General Notes​

  • I didn't mention it in the table above because it just complicates things, but you can also move left/right through menus with the L/R buttons. Not a big deal, but makes it feel slightly more "native" to Classic Controller. This is basically a complete accident. Since I was already mapping D-Pad+Shake to R for the Dodgeball Fake-Out move, I realized I could D-Pad Right and get menu navigation as a bonus feature, doing the opposite on L. Fun trick.

  • It feels kind of extravagant to have two whole Wiimote Swing buttons when the game barely uses them (only Volleyball cares which direction you swing), but you know, oh well. This whole game is playable on a sideways Wii Remote, so we're overflowing with spare buttons anyway. Besides, I find the games feel more natural when using different buttons even though they ultimately have the same functionality: I like using Y to shoot for goal in Hockey, but B to jump in Basketball.

  • Speaking of solo Wiimote, I considered pulling a Donkey Kong and doing a double CC hack allowing both control schemes to be emulated, but I don't think it's really warranted for this game. Where Donkey Kong is a 2D platformer and some players will prefer to play with traditional controls, there's no real benefit to the Wiimote control scheme here. It's just the same thing condensed down to fewer buttons and missing analogue movement controls. If you want to play on the D-Pad, you'll have to stick to using an actual physical Wiimote, sorry.

    Technical Notes​

    Code breakdown:

    C2, C2, 04, 04, 04
    Various Nunchuk checks. These are very brief, essentially just saying "Classic is fine too," we're not doing any actual input redirection in here, which I'll explain later.

    C2
    Down/Up Wiimote Swings in read_kpad_acc().

    C2
    IR pointer in calc_dpd_variable(); literally unchanged from Rhythm Heaven, so that paid off nicely.

    04
    I'm pretty excited about this one in read_kpad_ext(). In previous hacks for Nunchuk games, my approach has been to track down everywhere that the Nunchuk analog stick is read and add some code there to check whether this is a Nunchuk or Classic Controller, redirecting analog stick reads to the appropriate address for each. For this one, I am instead redirecting the Classic Controller left stick into the Nunchuk field, so that the original analog reading code works unchanged. The way KPAD works, the Classic Controller already uses this field, which was a problem before now, but ever since I switched to the new button injector, I'm actually injecting the buttons before they ever reach that address ...

    C2
    ... which happens here in read_kpad_button(). After we've already read the Classic Controller button values, we say "I'm a Nunchuk, actually. Please don't bother processing the Classic Controller button values." This leaves the Classic Controller button fields, which are also the Nunchuk analog stick addresses, completely empty, allowing us to drop the Classic analog in there and have the game pick it up more easily than my previous approach.
 

NestorM

Well-Known Member
Member
Joined
Feb 19, 2021
Messages
100
Trophies
1
Age
40
XP
1,090
Country
France
That's super cool, love to hear that it works well on Wii U as well. I've got a Wii U myself, but I do all my testing on an original Wii just because it's so much faster than building a whole separate injection any time I make a code change or whatever. It's also nice that I can "expand the Wii U library" like that, since as much as I love it, it's missing a lot of the weirder, more niche stuff that made the Wii great.


Whoops! Thanks for noticing this, I've updated the Rhythm Heaven codes with a v1.1 that maps the 1 and also 2 button, just in case.


Sorry, I'm not aware of anywhere these are available pre-built. Even I don't have them pre-built, since I test on a regular Wii with Gecko codes. Good luck!


Looks a bit more complex than most since you need to charge up your swings/pitches via motion controls, but nothing that seems impossible off the bat (pun). I'll add it to my list of games to investigate.


Whoops again! That's completely on me, you're not being dumb at all. I was using the fast cursor speed for testing and forgot to put it back to the intended one before releasing the code. I've edited the codes now, v1.1 has the "medium" cursor speed which is what I meant to release, but of course you can still edit it to any other value. Otherwise super glad to hear you're enjoying it! I'm pretty happy with this one since Wii U never got a real Animal Crossing. Admittedly, you could already play the GameCube one, but having the Wii game on GamePad is about as close as it gets to a native Wii U Animal Crossing.



View attachment 465145

The second (and final) chapter in Square Enix's Mario X Final Fantasy crossover sports series, Mario Sports Mix builds on Mario Hoops 3-on-3 aka Mario Slam Basketball by adding three more sports to the lineup with Hockey, Dodgeball and Volleyball. Looking deceptively spartan on first glance, most of the game's unique content is hidden behind the Tournament menu selection, which reveals a full story mode with unlockable characters and an unexpected final boss. Sports Mix saw a muted reception at launch because none of the games reached the depth of the dedicated single-sport Mario titles (at least the ones released up to that point; Mario Smash Tennis wasn't out yet!) and the motion controls don't really add much. Still, with its lengthy story mode, a killer soundtrack by Masayoshi Soken (Final Fantasy XIV, XVI) and Kumi Tanioka (Crystal Chronicles) and full online support, this one deserves a second chance.

Highlight for @awesomeee, who asked about this game.

USAEuropeJapan

  1. Code:
    Classic Controller Support [Vague Rant]
    C206FCE4 00000002
    28040001 41820008
    28040002 00000000
    C206FFD0 00000003
    3884FFFF 2C040001
    40820008 3884FFFF
    60000000 00000000
    040701C0 28040003
    04070C40 28040003
    04070E44 28050003
    C230D140 0000000A
    8803005C 2C000002
    4082003C 4800000D
    00000000 4059999A
    7CE802A6 C0870000
    D08305BC 801E0004
    700000C0 41820014
    C0870004 70000080
    41820008 FC802050
    D08305C0 D08305C4
    60000000 00000000
    C230DCD8 00000024
    90010024 2C040000
    40820110 8803005C
    2C000002 40820104
    48000021 802C2680
    3FAAAAAB 3C23D70A
    00000000 00000000
    3DCCCCCD 3F800000
    7CA802A6 90A1000C
    5727083C 38E7000C
    C0030074 FC000210
    C0230078 FC200A10
    FC00082A C0450014
    FC001040 4180000C
    38C0012C 48000014
    7CC53AAE 28060000
    408100A0 38C6FFFF
    7CC53B2E 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C0230074 FC211024
    4800002D D0030020
    C0030024 C0230078
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C0250018 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    0430EC28 7FC3F378
    C230CB94 0000001A
    2C040002 408200C0
    38800001 71000800
    41820008 60C68000
    71000001 41820008
    60C60008 71004000
    41820008 60C60004
    71000002 41820008
    60C60001 71008000
    41820008 60C60002
    71000010 41820008
    60C60800 71000040
    41820008 60C60080
    71000008 41820008
    60C60C00 71000020
    41820008 60C60040
    71002000 41820008
    60C64001 71000200
    41820008 60C60082
    71000080 41820008
    60C62000 71000004
    41820008 60C60400
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
  2. Code:
    Classic Controller Support [Vague Rant]
    C206FD14 00000002
    28040001 41820008
    28040002 00000000
    C2070000 00000003
    3884FFFF 2C040001
    40820008 3884FFFF
    60000000 00000000
    040701F0 28040003
    04070C70 28040003
    04070E74 28050003
    C230D1D0 0000000A
    8803005C 2C000002
    4082003C 4800000D
    00000000 4059999A
    7CE802A6 C0870000
    D08305BC 801E0004
    700000C0 41820014
    C0870004 70000080
    41820008 FC802050
    D08305C0 D08305C4
    60000000 00000000
    C230DD68 00000024
    90010024 2C040000
    40820110 8803005C
    2C000002 40820104
    48000021 802C2710
    3FAAAAAB 3C23D70A
    00000000 00000000
    3DCCCCCD 3F800000
    7CA802A6 90A1000C
    5727083C 38E7000C
    C0030074 FC000210
    C0230078 FC200A10
    FC00082A C0450014
    FC001040 4180000C
    38C0012C 48000014
    7CC53AAE 28060000
    408100A0 38C6FFFF
    7CC53B2E 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C0230074 FC211024
    4800002D D0030020
    C0030024 C0230078
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C0250018 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    0430ECB8 7FC3F378
    C230CC24 0000001A
    2C040002 408200C0
    38800001 71000800
    41820008 60C68000
    71000001 41820008
    60C60008 71004000
    41820008 60C60004
    71000002 41820008
    60C60001 71008000
    41820008 60C60002
    71000010 41820008
    60C60800 71000040
    41820008 60C60080
    71000008 41820008
    60C60C00 71000020
    41820008 60C60040
    71002000 41820008
    60C64001 71000200
    41820008 60C60082
    71000080 41820008
    60C62000 71000004
    41820008 60C60400
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
  3. Code:
    Classic Controller Support [Vague Rant]
    C206FC94 00000002
    28040001 41820008
    28040002 00000000
    C206FF80 00000003
    3884FFFF 2C040001
    40820008 3884FFFF
    60000000 00000000
    04070170 28040003
    04070BF0 28040003
    04070DF4 28050003
    C230D100 0000000A
    8803005C 2C000002
    4082003C 4800000D
    00000000 4059999A
    7CE802A6 C0870000
    D08305BC 801E0004
    700000C0 41820014
    C0870004 70000080
    41820008 FC802050
    D08305C0 D08305C4
    60000000 00000000
    C230DC98 00000024
    90010024 2C040000
    40820110 8803005C
    2C000002 40820104
    48000021 802C2640
    3FAAAAAB 3C23D70A
    00000000 00000000
    3DCCCCCD 3F800000
    7CA802A6 90A1000C
    5727083C 38E7000C
    C0030074 FC000210
    C0230078 FC200A10
    FC00082A C0450014
    FC001040 4180000C
    38C0012C 48000014
    7CC53AAE 28060000
    408100A0 38C6FFFF
    7CC53B2E 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C0230074 FC211024
    4800002D D0030020
    C0030024 C0230078
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C0250018 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    0430EBE8 7FC3F378
    C230CB54 0000001A
    2C040002 408200C0
    38800001 71000800
    41820008 60C68000
    71000001 41820008
    60C60008 71004000
    41820008 60C60004
    71000002 41820008
    60C60001 71008000
    41820008 60C60002
    71000010 41820008
    60C60800 71000040
    41820008 60C60080
    71000008 41820008
    60C60C00 71000020
    41820008 60C60040
    71002000 41820008
    60C64001 71000200
    41820008 60C60082
    71000080 41820008
    60C62000 71000004
    41820008 60C60400
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000

Button Mapping​

In addition to the regular button-for-button mappings, Mario Sports Mix makes use of a couple of button/motion combinations. Since the Classic Controller had some leftover buttons after mapping the original functionality, button combos have also been placed on individual buttons for some functions. Also, there's four games in here, this table will get ridiculous if I cover every gameplay feature, so if I say that A means Pass, assume that A means Pass in sports where that's relevant (Basketball, Hockey, Dodgeball) and not in sports where it isn't (Volleyball), etc. You get what I'm saying here.

Wii Remote & NunchukClassic ControllerGame Function
Wiimote HomeHome
Remember to use the Right Stick
Open Home Menu
Wiimote D-PadD-PadMenus
Navigation
Gameplay
Dodgeball Fake-Out (with Shake)
Wiimote D-Pad & ShakeRGameplay
Dodgeball Fake-Out
Wiimote AAMenus
Confirm
Gameplay
Pass
Wiimote BZRMenus
Cancel
Gameplay
Use Item
Wiimote A & BXGameplay
Special Move
Wiimote 1 & 2Not mappedNot used?
(I refuse to learn this lesson)
Wiimote PlusPlusMenus
Settings
Gameplay
Pause
Wiimote MinusMinusNot used?
Wiimote Swing DownBGameplay
Jump/Shoot/etc.
Volleyball Underhand
Wiimote Swing UpYGameplay
Jump/Shoot/etc.
Volleyball Overhand
Wiimote IR PointerRight StickMenus
Navigation
Nunchuk StickLeft StickMenus
Navigation
Gameplay
Movement
Nunchuk CLGameplay
Switch with CPU Teammates
Nunchuk ZZLGameplay
Basketball Trick
Hockey Charge Shot

General Notes​

  • I didn't mention it in the table above because it just complicates things, but you can also move left/right through menus with the L/R buttons. Not a big deal, but makes it feel slightly more "native" to Classic Controller. This is basically a complete accident. Since I was already mapping D-Pad+Shake to R for the Dodgeball Fake-Out move, I realized I could D-Pad Right and get menu navigation as a bonus feature, doing the opposite on L. Fun trick.

  • It feels kind of extravagant to have two whole Wiimote Swing buttons when the game barely uses them (only Volleyball cares which direction you swing), but you know, oh well. This whole game is playable on a sideways Wii Remote, so we're overflowing with spare buttons anyway. Besides, I find the games feel more natural when using different buttons even though they ultimately have the same functionality: I like using Y to shoot for goal in Hockey, but B to jump in Basketball.

  • Speaking of solo Wiimote, I considered pulling a Donkey Kong and doing a double CC hack allowing both control schemes to be emulated, but I don't think it's really warranted for this game. Where Donkey Kong is a 2D platformer and some players will prefer to play with traditional controls, there's no real benefit to the Wiimote control scheme here. It's just the same thing condensed down to fewer buttons and missing analogue movement controls. If you want to play on the D-Pad, you'll have to stick to using an actual physical Wiimote, sorry.

    Technical Notes​

    Code breakdown:

    C2, C2, 04, 04, 04
    Various Nunchuk checks. These are very brief, essentially just saying "Classic is fine too," we're not doing any actual input redirection in here, which I'll explain later.

    C2
    Down/Up Wiimote Swings in read_kpad_acc().

    C2
    IR pointer in calc_dpd_variable(); literally unchanged from Rhythm Heaven, so that paid off nicely.

    04
    I'm pretty excited about this one in read_kpad_ext(). In previous hacks for Nunchuk games, my approach has been to track down everywhere that the Nunchuk analog stick is read and add some code there to check whether this is a Nunchuk or Classic Controller, redirecting analog stick reads to the appropriate address for each. For this one, I am instead redirecting the Classic Controller left stick into the Nunchuk field, so that the original analog reading code works unchanged. The way KPAD works, the Classic Controller already uses this field, which was a problem before now, but ever since I switched to the new button injector, I'm actually injecting the buttons before they ever reach that address ...

    C2
    ... which happens here in read_kpad_button(). After we've already read the Classic Controller button values, we say "I'm a Nunchuk, actually. Please don't bother processing the Classic Controller button values." This leaves the Classic Controller button fields, which are also the Nunchuk analog stick addresses, completely empty, allowing us to drop the Classic analog in there and have the game pick it up more easily than my previous approach.
Thanks for answer. Do you project to make a cc hack for super mario sluggers and battalion wars 2?
 
Last edited by NestorM,

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
61
Trophies
0
XP
96
Country
United States
Looks a bit more complex than most since you need to charge up your swings/pitches via motion controls, but nothing that seems impossible off the bat (pun). I'll add it to my list of games to investigate.
If you inject with uwuvci / teconmoon with FORCE CLASSIC CONTROLLER the game somehow works with gamepad. Controls are a bit awkward when booted up due to using vertical controls at the start, but theres an option to change to horizontal controls to fix it
Might wanna look into that if it helps with classic controller 👍
 
Last edited by awesomeee,
  • Like
Reactions: Vague Rant

tech_A_nina

Active Member
Newcomer
Joined
Aug 1, 2018
Messages
35
Trophies
0
XP
294
Country
United Kingdom
@Vague Rant I have tested kirby epic yarn on the wii u gamepad today. Well done with the IR pointer. Very accurate. So I was wondering if it's possible to create a cc hack for "dead space extraction"? There are some motion controls though. I remember there was the shake of the wiimote to ignite the glow stick and tilt the wiimote for the secondary fire mode. But other than that it should be fine. It's one of the best rail shooters
 

TeleTubby666

Well-Known Member
Member
Joined
Aug 18, 2013
Messages
110
Trophies
1
XP
2,320
Country
Germany
Mario Kart has classic controller support and you can trick without shaking. Maybe it would be a nice addition to put the drift on the same button as the trick, but maybe it's not as great in mkwii as it is in mk8.

Yes, you are right, I was mixing things up. I would second your request to have drifting on the same button as in MK8
 

NestorM

Well-Known Member
Member
Joined
Feb 19, 2021
Messages
100
Trophies
1
Age
40
XP
1,090
Country
France
@Vague Rant i've dolpath metroid other m with cc hack with iso gct cheat embedder, then inject embedded iso. It works with Wii u gamepad ! DKCR also works as inject with analog control scheme. Thank you for your amazing job !
 
Last edited by NestorM,
  • Like
Reactions: Vague Rant

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,512
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,771
Country
Thanks for answer. Do you project to make a cc hack for super mario sluggers and battalion wars 2?
I have Sluggers on my list of games to investigate, Battalion Wars I didn't have yet but I like that idea, so it's going on too. 👍

@Vague Rant I have tested kirby epic yarn on the wii u gamepad today. Well done with the IR pointer. Very accurate. So I was wondering if it's possible to create a cc hack for "dead space extraction"? There are some motion controls though. I remember there was the shake of the wiimote to ignite the glow stick and tilt the wiimote for the secondary fire mode. But other than that it should be fine. It's one of the best rail shooters
That sounds pretty interesting. The pointer part is definitely doable, I haven't managed to fail that part in any games so far. Motion stuff is more hit and miss of course, depending on the complexity of the implementation, but I'll add this one to my list to investigate.

I would quite happily pay if codes could be generated for Nitrobike
Haha, it's the other person in the world who's heard of Nitrobike. No need to pay, I basically plan to keep going until I'm not enjoying myself any more and turning it into a job would probably accelerate that process. I actually already started looking at Nitrobike, but hit a roadblock because the game stops reading the accelerometer data (whether real or the fake data I was injecting) as soon as you plug in any extension controller, which obviously meant no steering. It's one I want to come back to, though.



SI_Wii_DeBlob2_image1600w.jpg


The second game in the previously-hit Blue Tongue painter-platformer franchise, de Blob 2 was a colossal bomb. Despite fixing practically every complaint players and reviews had with the excellent-but-flawed prequel (adding stage checkpoints, more variety in objectives and a jump button) and even going cross-platform with a simultaneous Wii, PS3 and Xbox 360 launch, de Blob 2 sold tragically low numbers. What happened here? Besides the fixes to the previous game's formula, new additions include side-scrolling 2D platformer levels, Super Mario Galaxy-style co-op gameplay and an upgrade system with improved abilities unlocked by finding hidden collectables. While de Blob 1 was a great start, this sequel delivered on everything the first game promised and more. Then, three people bought it and THQ shuttered the studio. A criminally underrated game, even its revival on then-current platforms back in 2018 didn't do much to move the needle. Please play de Blob 2.

USAEurope

  1. Code:
    Classic Controller Support [Vague Rant]
    C20B3018 00000002
    28000001 41820008
    28000002 00000000
    C2276964 00000003
    2C030002 40820008
    38600001 38800000
    60000000 00000000
    C2276E68 00000003
    2C030002 40820008
    38600001 38800000
    60000000 00000000
    042AE110 28000002
    C22BBD04 00000003
    2C040002 40820008
    38800001 3804FF05
    60000000 00000000
    C22BE748 00000003
    2C030002 40820008
    38600001 3803FFFE
    60000000 00000000
    C22BE818 00000003
    2C030002 40820008
    38600001 3803FFFF
    60000000 00000000
    C2068C4C 00000007
    48000009 4059999A
    7C6802A6 C0230000
    801E0004 70000100
    4082001C 801E0008
    70000100 4182000C
    FC200850 48000008
    C03E05C4 00000000
    C20697B8 00000024
    90010024 2C040000
    40820110 8803005C
    2C000002 40820104
    48000021 80089240
    3FAAAAAB 3C75C28F
    00000000 00000000
    3DCCCCCD 3F800000
    7CA802A6 90A1000C
    5727083C 38E7000C
    C0030074 FC000210
    C0230078 FC200A10
    FC00082A C0450014
    FC001040 4180000C
    38C0012C 48000014
    7CC53AAE 28060000
    408100A0 38C6FFFF
    7CC53B2E 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C0230074 FC211024
    4800002D D0030020
    C0030024 C0230078
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C0250018 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    0406A708 7FC3F378
    C206A740 00000012
    4E800421 2C160001
    40820080 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 809EFFA0
    80BEFFA4 80DEFFA8
    C03E0014 39000001
    48000021 C03E0018
    39000004 48000015
    909EFFA0 90BEFFA4
    90DEFFA8 48000034
    FC000A10 FC001040
    4D800020 FC011840
    41800008 5508083C
    7CC04039 40820008
    7CA54378 7C844378
    7CC64079 4E800020
    60000000 00000000
    C2068674 0000001A
    2C040002 408200C0
    38800001 71000800
    41820008 60C68000
    71000001 41820008
    60C60008 71004000
    41820008 60C60004
    71000002 41820008
    60C60001 71008000
    41820008 60C60002
    71000010 41820008
    60C60800 71000040
    41820008 60C60800
    71000008 41820008
    60C60200 71000020
    41820008 60C60100
    71002000 41820008
    60C64000 71000200
    41820008 60C60800
    71000080 41820008
    60C62000 71000004
    41820008 60C60400
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70E09FFF
    60000000 00000000
  2. Code:
    Classic Controller Support [Vague Rant]
    C20B30B8 00000002
    28000001 41820008
    28000002 00000000
    C2276944 00000003
    2C030002 40820008
    38600001 38800000
    60000000 00000000
    C2276E08 00000003
    2C030002 40820008
    38600001 38800000
    60000000 00000000
    042AE080 28000002
    C22BBC74 00000003
    2C040002 40820008
    38800001 3804FF05
    60000000 00000000
    C22BE6B8 00000003
    2C030002 40820008
    38600001 3803FFFE
    60000000 00000000
    C22BE788 00000003
    2C030002 40820008
    38600001 3803FFFF
    60000000 00000000
    C2068C4C 00000007
    48000009 4059999A
    7C6802A6 C0230000
    801E0004 70000100
    4082001C 801E0008
    70000100 4182000C
    FC200850 48000008
    C03E05C4 00000000
    C20697B8 00000024
    90010024 2C040000
    40820110 8803005C
    2C000002 40820104
    48000021 80089240
    3FAAAAAB 3C75C28F
    00000000 00000000
    3DCCCCCD 3F800000
    7CA802A6 90A1000C
    5727083C 38E7000C
    C0030074 FC000210
    C0230078 FC200A10
    FC00082A C0450014
    FC001040 4180000C
    38C0012C 48000014
    7CC53AAE 28060000
    408100A0 38C6FFFF
    7CC53B2E 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C0230074 FC211024
    4800002D D0030020
    C0030024 C0230078
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C0250018 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    0406A708 7FC3F378
    C206A740 00000012
    4E800421 2C160001
    40820080 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 809EFFA0
    80BEFFA4 80DEFFA8
    C03E0014 39000001
    48000021 C03E0018
    39000004 48000015
    909EFFA0 90BEFFA4
    90DEFFA8 48000034
    FC000A10 FC001040
    4D800020 FC011840
    41800008 5508083C
    7CC04039 40820008
    7CA54378 7C844378
    7CC64079 4E800020
    60000000 00000000
    C2068674 0000001A
    2C040002 408200C0
    38800001 71000800
    41820008 60C68000
    71000001 41820008
    60C60008 71004000
    41820008 60C60004
    71000002 41820008
    60C60001 71008000
    41820008 60C60002
    71000010 41820008
    60C60800 71000040
    41820008 60C60800
    71000008 41820008
    60C60200 71000020
    41820008 60C60100
    71002000 41820008
    60C64000 71000200
    41820008 60C60800
    71000080 41820008
    60C62000 71000004
    41820008 60C60400
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70E09FFF
    60000000 00000000

Button Mapping​

I'm not going to do a whole table for it, but just so people know, when playing with the Nunchuk you will also have access to "shaking" on the Wiimote 2 button, which is otherwise unused. It's not the most convenient button placement, but I didn't want to break the existing control scheme to add something so minor. Motion controls are used very infrequently in de Blob 2, but if you specifically want to play on Nunchuk without motion controls, now you can. Otherwise, on to the Classic Controller.

Wii Remote & NunchukClassic ControllerGame Function
Wiimote HomeHome
Remember to use the Right Stick
Open Home Menu
Wiimote D-PadD-Pad
Right Stick
Gameplay
Camera Controls
Wiimote AA/B/RMenus
Confirm
Gameplay
Jump
Pinky (Co-Op)
Shoot Paint
Wiimote BZRGameplay
Brake
Drop (air)
Wiimote 1XGameplay
Show/Hide Compass
Wiimote 2YNot used?
Wiimote PlusPlusGameplay
Pause
Wiimote MinusMinusMenus
Back/Cancel
Gameplay
Skip Text/Cutscenes
Wiimote ShakeYGameplay
Shake Off Enemies
Wiimote IR PointerRight StickMenus
Navigation
Pinky (Co-Op)
Aim
Nunchuk StickLeft StickMenus
Navigation
Gameplay
Movement
Nunchuk CLGameplay
Re-Center Camera
Nunchuk ZZLGameplay
Lock-On

General Notes​

  • I'm pretty sure the 2 button is unused, so I commandeered it as our shake button. If it actually is used ... it's probably fine, I doubt the game ever cares that you're pressing 2 and also shaking the Wiimote every time you press 2.

  • Controls here are slightly different to the mapping for de Blob 1 because the games themselves are slightly different. Here, Wiimote A is mapped to Classic A or B so that you still have normal A-Confirm controls but also B-Jump as in de Blob 1. Where in de Blob 1, the compass was mapped on A/Y/X, here it's just on X since the other buttons are taken. I think the only thing you really need to consciously think about is that shaking has moved from Classic B to Classic Y, because it's no longer your jump button.

  • Co-op gameplay in de Blob 2 is pretty much identical to how it works in the Mario Galaxy games, where player 2 controls the infra-red pointer to collect items and attack enemies. If you really want, you can do this on the Classic Controller with the Right Stick and R button, but for most players I'd recommend just using the actual Wiimote that the Classic Controller is attached to instead.

Technical Notes​

This game goes overboard with the Nunchuk checks, I had to fix it in seven places (that's the first seven codes, three C2s, an 04 and three more C2s.

The next C2 is in read_kpad_acc() and adds a feature that every Wiimote 2 button press/release is a shake. Since later we map the Classic Y button to Wiimote 2, this allows us to add a shake button to both Classic Controller and Nunchuk in one go.

The C2 after that is the standard calc_dpd_variable() pointer job.

Then we come to an 04 which is like the one from Mario Sports Mix, redirecting the Left Stick into the Nunchuk Analog Stick field in read_kpad_ext(). Still in that function, the next C2 adds D-Pad emulation on the right stick, for camera controls.

And the final C2 is a standard read_kpad_button() button injector.



How about a one-two punch?

SI_Wii_PunchOut_image1600w.png


Punch-Out!! is the fifth game (there were two arcade games nobody remembers) in Nintendo's historic boxing franchise, revived by Next Level Games after a 15-year knockdown. Closely styled after earlier entries in the series, Punch-Out!! for Wii continues their tradition of deceptively simple controls hiding a deeper technical game where reading your opponents' moves is as much or even more important than getting your own in. While including support for the Nunchuk and motion controls (and even the Wii Balance Board), the game can be played entirely on a sideways Wii Remote with button controls, but until now, not with the Classic Controller.

USA / USA (Rev 1)EUR / EUR (Rev 1)JPN

  1. Code:
    Classic Controller Support [Vague Rant]
    C21F85CC 0000001A
    90010024 2C040000
    408200C0 8803005C
    2C000002 408200B4
    48000015 80258C08
    3FAAAAAB 3CF5C28F
    3F800000 7CA802A6
    90A1000C 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
    C221F3F4 00000019
    B005002A A0E50000
    70060800 41820008
    60E78000 70060001
    41820008 60E70002
    70064000 41820008
    60E70001 70060002
    41820008 60E70008
    70068000 41820008
    60E70004 70060010
    41820008 60E70800
    70060040 41820008
    60E70100 70060008
    41820008 60E70400
    70060020 41820008
    60E70200 70062000
    41820008 60E70200
    70060200 41820008
    60E70100 70060080
    41820008 60E70200
    70060004 41820008
    60E70100 70060400
    41820008 60E70010
    70061000 41820008
    60E71000 B0E50000
    60000000 00000000
  2. Code:
    Classic Controller Support [Vague Rant]
    C21F9C90 0000001A
    90010024 2C040000
    408200C0 8803005C
    2C000002 408200B4
    48000015 8025A2CC
    3FAAAAAB 3CF5C28F
    3F800000 7CA802A6
    90A1000C 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
    C2220AB8 00000019
    B005002A A0E50000
    70060800 41820008
    60E78000 70060001
    41820008 60E70002
    70064000 41820008
    60E70001 70060002
    41820008 60E70008
    70068000 41820008
    60E70004 70060010
    41820008 60E70800
    70060040 41820008
    60E70100 70060008
    41820008 60E70400
    70060020 41820008
    60E70200 70062000
    41820008 60E70200
    70060200 41820008
    60E70100 70060080
    41820008 60E70200
    70060004 41820008
    60E70100 70060400
    41820008 60E70010
    70061000 41820008
    60E71000 B0E50000
    60000000 00000000
  3. Code:
    Classic Controller Support [Vague Rant]
    C21F9270 0000001A
    90010024 2C040000
    408200C0 8803005C
    2C000002 408200B4
    48000015 802598B8
    3FAAAAAB 3CF5C28F
    3F800000 7CA802A6
    90A1000C 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
    C222009C 00000019
    B005002A A0E50000
    70060800 41820008
    60E78000 70060001
    41820008 60E70002
    70064000 41820008
    60E70001 70060002
    41820008 60E70008
    70068000 41820008
    60E70004 70060010
    41820008 60E70800
    70060040 41820008
    60E70100 70060008
    41820008 60E70400
    70060020 41820008
    60E70200 70062000
    41820008 60E70200
    70060200 41820008
    60E70100 70060080
    41820008 60E70200
    70060004 41820008
    60E70100 70060400
    41820008 60E70010
    70061000 41820008
    60E71000 B0E50000
    60000000 00000000

Button Mapping​

Wii RemoteClassic ControllerGame Function
HomeHome
Works normally
Open Home Menu
Wiimote D-PadD-PadGameplay
Movement
Wiimote AAMenus
Confirm
Gameplay
Star Punch
Wiimote BXNot used?
Wiimote 1Y/L/ZLGameplay
Punch (Left)
Wiimote 2B/R/ZRGameplay
Punch (Right)
Wiimote PlusPlusGameplay
Pause
Wiimote MinusMinusNot used?
Wiimote IR PointerLeft StickMenus
Navigation

General Notes​

  • Sorry, no D-Pad Emulation feature this time; you will have to play using the actual D-Pad. I'll get into it more in the Technical Notes section, but Punch-Out!! (and Next Level games in general, based on previous experience) doesn't use the standard KPAD library to read the buttons, instead preferring to directly use the low-level WPAD controller reports. My understanding of WPAD is minimal, so button redirection is all you get.

  • Fortunately, Punch-Out!! does use KPAD to read the infra-red pointer (which is used to navigate all menus), so that works fine.

  • Controls here are largely taken from Super Punch-Out!! on SNES, with your Y/B punches and A to Uppercut, or Star Punch as it's called in the Wii game. In theory you could sort of play this on a SNES Classic Mini controller, but because menu navigation is all pointer-driven (or analog stick-driven in this hack) you'd still need to use a real Wiimote to navigate the menus.

  • It's not normal that there's two hacks here at once, so to briefly explain, I had already attempted Punch-Out!! previously and had the pointer working fine but soon realized buttons weren't going to work the traditional way, so I gave up and moved on to other games. In the middle of working on de Blob 2, I got distracted thinking about how WPAD handles the buttons, so I came back to Punch-Out!! and figured it out.

Technical Notes​

I originally picked up this game to investigate for a CC hack because it seemed like an easy one with its NES-style, sideways Wiimote controls. However, as mentioned in the General Notes, Punch-Out!! directly reads the WPAD controller reports rather than the more human-readable, parsed KPAD data which is what I'm familiar with. Whoops. Breaking down the code, the first C2 is pretty standard calc_dpd_variable() hacking. Because it only shows up in menus anyway, I don't have the sleep timer enabled for this game, the pointer is just always on.

On to the interesting part, the second C2 patches the WPAD __parse_cl_data() function. This function is used by several WPAD controller packet types to handle the Classic Controller portion of the report. Without getting into Starlet/ARM territory, this is about as low-level as you can get to read (or modify) the Classic Controller handling. Technically, it's not true that Punch-Out!! doesn't use KPAD for button reads, because the Home Button Menu still does. However, redirecting the Classic button reports into the Wiimote itself via WPAD, we fix both at the same time, since KPAD is ultimately reading the data it gets from WPAD.

In previous hacks, the way D-Pad Emulation is implemented is that I check the KPAD analog stick values and judge whether they've moved far enough to trigger adding the button presses to the KPAD button values. With this game's low-level button handling, this would require a hack using the raw, unprocessed analog stick data from WPAD, and currently I don't know where that data is or what it looks like.
 

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
61
Trophies
0
XP
96
Country
United States
Would a classic controller patch be possible for Kirby’s Return to Dreamland that includes all the controls like motion controls too? The current CC patch seems to be missing some stuff.

Another thing: i saw something regarding “an ips patch” to fix the Paper Mario crashing in WiiVC. Would it be possible to make an ips patch or something for this game too so WiiVC could work for Kirby? Kirby uses Metafortress, and i cant seem to find a way to disable it in WiiVC mode.
 

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,512
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,771
Country
Would a classic controller patch be possible for Kirby’s Return to Dreamland that includes all the controls like motion controls too? The current CC patch seems to be missing some stuff.

Another thing: i saw something regarding “an ips patch” to fix the Paper Mario crashing in WiiVC. Would it be possible to make an ips patch or something for this game too so WiiVC could work for Kirby? Kirby uses Metafortress, and i cant seem to find a way to disable it in WiiVC mode.
Good question, re: Metafortress. I'm not sure if there's any info on how to get around that besides in the USB loaders. I know most things that require shaking in Return to Dream Land can be done by mashing the D-Pad instead, are there other things that doesn't work for?



SI_Wii_MarioKartWii_image1600w.jpg


Mario Kart Wii is Mario Kart, on Wii. Does anybody need me to explain this one? They sold 37 million copies. It's the one with the bikes. Obviously, Mario Kart Wii already supports the Classic Controller, so this hack modifies the button layout to roughly approximate the one used in Mario Kart 8. Highlights for @TeleTubby666 who asked for this and @blue-spirit who suggested mapping Hop/Drift/Trick to a single button.

USAEuropeJapanKorea

  1. Code:
    MK8-Style Classic Controller Mod [Vague Rant]
    041C87C0 38000000
    041C87CC 38000000
    C21C87E4 0000000A
    7003DD5B 70040020
    41820008 60630010
    70042000 41820008
    60634000 70040200
    41820008 60630001
    70040080 41820008
    60632000 70040004
    41820008 60634200
    7C601B78 B01D002A
    60000000 00000000
  2. Code:
    MK8-Style Classic Controller Mod [Vague Rant]
    041C8860 38000000
    041C886C 38000000
    C21C8884 0000000A
    7003DD5B 70040020
    41820008 60630010
    70042000 41820008
    60634000 70040200
    41820008 60630001
    70040080 41820008
    60632000 70040004
    41820008 60634200
    7C601B78 B01D002A
    60000000 00000000
  3. Code:
    MK8-Style Classic Controller Mod [Vague Rant]
    041C8780 38000000
    041C878C 38000000
    C21C87A4 0000000A
    7003DD5B 70040020
    41820008 60630010
    70042000 41820008
    60634000 70040200
    41820008 60630001
    70040080 41820008
    60632000 70040004
    41820008 60634200
    7C601B78 B01D002A
    60000000 00000000
  4. Code:
    MK8-Style Classic Controller Mod [Vague Rant]
    041C8BBC 38000000
    041C8BC8 38000000
    C21C8BE0 0000000A
    7003DD5B 70040020
    41820008 60630010
    70042000 41820008
    60634000 70040200
    41820008 60630001
    70040080 41820008
    60632000 70040004
    41820008 60634200
    7C601B78 B01D002A
    60000000 00000000

Button Mapping​

Only some buttons are modified here, so if it's not mentioned, it's because the function is unchanged.

Original CCMK8-Style CCFunction
D-Pad UpD-Pad Up
R
Menus
Navigation
Gameplay
Start Wheelie
Trick
D-Pad DownD-Pad Down
L
Menus
Navigation
Gameplay
Stop Wheelie
Trick
D-Pad Left/RightD-Pad Left/RightMenus
Navigation
Gameplay
Trick
AA
Y
Menus
Confirm
Gameplay
Accelerate
LZLGameplay
Use Item
R & D-Pad DownZRGameplay
Hop
Drift
Trick
ZLNot mappedNot used?
ZRXGameplay
Reverse Camera

General Notes​

  • As part of reconfiguring the shoulder button layout, I had to disable the analog shoulder buttons, so this is not recommended on an original Classic Controller with analog L/R. It should work, but the button layout is not ideal and you'll need to full-press L/R to trigger those buttons. This hack is intended for use on the Classic Controller Pro or equivalent (e.g. Wii U GamePad).

  • This is about as close as I could get to the Mario Kart 8 controls that I think works well for Mario Kart Wii. To break down the specific changes:

    • Wheelies don't exist in Mario Kart 8 and I never thought the D-Pad was an acceptable solution in Mario Kart Wii. Here, they're placed on the L/R buttons. In actual Mario Kart 8, these are duplicate buttons for the Item and Hop/Drift functions on ZL/ZR. I decided to compromise on accurately mirroring MK8 here so that Wheelies can be performed without having to take your thumb off the left analog stick.

      • If you don't like this choice, I'll put some info in the Technical Notes section for how you can adjust this to your preferences.

    • Did everybody else know you could accelerate with the Y button in MK8? That's wild, I had no idea. In MKWii, the Y button does nothing, so this was easy to add.

    • Item use has moved from L to ZL. Obviously in MK8, either button works, but Wheelies had to go somewhere other than the D-Pad because that's not reasonable, so items are ZL-only here. The same goes for the next point, for R/ZR.

    • Hop/Drift has been moved from R to ZR and a Trick has been added to this button, so that pressing ZR as you come off a ramp, bounce off a mushroom, etc. will trigger both a Hop and a Trick, in line with later Mario Kart games.

      • The Down trick was chosen specifically here because none of the others work well for this purpose: Up will pull an unintentional Wheelie if you attempt another Hop right before landing and Left/Right cause bikes to rotate to the side (cosmetically only) which can be disorientating when landing a jump. As far as I can tell, there's no gameplay situation where pressing Hop + Down Trick simultaneously results in unintended behavior. Even mid-Wheelie, "Hop-Tricking" out just triggers a regular Hop, as would occur if you hadn't Tricked at all.

    • In MKWii, the X/ZR buttons are both used to show the reverse camera. In MK8, ZR is Hop/Drift/Trick and only X reverses the camera, so that's the case in this hack also.

  • I haven't forgotten about the request for D-Pad steering on the Wii Remote itself, but that is complicated by the fact that this game uses the low-level WPAD library for inputs rather than KPAD. I don't currently know anything at all about the low-level accelerometer data.

Technical Notes​

  • Like Punch-Out!! above, Mario Kart Wii doesn't use KPAD to read its buttons. This was pure coincidence, I just got very lucky that I came to this game right after learning how to remap the buttons inside WPAD. All three codes here are inside __parse_cl_data. The first two (04) are zeroing out the analog L/R button data, while the third (C2) masks out, edits and restores the custom buttons.

  • If you don't like the L/R Wheelie controls, you can change that feature by editing the below codes in your favorite text editor. You will need to complete the first line yourself. The missing three digits are: USA 7E4, EUR 884, JPN 7A4 and KOR BE0. For example, if you're playing the Korean version, the first line should be C21C8BE0 00000008. You don't need the 04 codes from the original version if you're using one of these, just the code below (with the first line fixed) will do what the thing says.
L Item, R Drift, ZL/ZR/D-Pad WheelieL/ZL Item, R/ZR Drift, D-Pad Wheelie
Code:
C21C8xxx 00000008
7003FF5B 70040020
41820008 60630010
70040200 41820008
60634000 70040080
41820008 60634000
70040004 41820008
60630001 7C601B78
B01D002A 00000000
Code:
C21C8xxx 00000008
7003FF5B 70040020
41820008 60630010
70040200 41820008
60634000 70040080
41820008 60632000
70040004 41820008
60634200 7C601B78
B01D002A 00000000
  • EDIT: If you want to go a step further and fully customize the button layout, below is the assembly code which you can use with CodeWrite to remap the buttons any way you like.

    • If any of your modifications involve editing what the L/R buttons do, you should also add the first two lines of the original code. Those lines disable the analog shoulder buttons so that they just behave like normal buttons, which will help you when remapping them.
Code:
; fully custom control mapper
    ; semicolons are comments, they're not part of the code, they just make it readable

; insertion addresses for CodeWrite
    ; 801C87E4 for USA
    ; 801C8884 for EUR
    ; 801C87A4 for JPN
    ; 801C8BE0 for KOR

; to edit button layout, change the "ori r3, r3, ?" lines by replacing the button values

; list of button values follows
    ; 0x800     ; home
    ; 0x1       ; up
    ; 0x4000    ; down
    ; 0x2       ; left
    ; 0x8000    ; right
    ; 0x10      ; a
    ; 0x40      ; b
    ; 0x8       ; x
    ; 0x20      ; y
    ; 0x2000    ; l
    ; 0x200     ; r
    ; 0x80      ; zl
    ; 0x4       ; zr
    ; 0x400     ; plus
    ; 0x1000    ; minus

  li r3, 0x0

CLASSIC_HOME:
  andi. r4, r0, 0x800
  beq- CLASSIC_UP
  ori r3, r3, 0x800     ; home

CLASSIC_UP:
  andi. r4, r0, 0x1
  beq- CLASSIC_DOWN
  ori r3, r3, 0x1       ; up

CLASSIC_DOWN:
  andi. r4, r0, 0x4000
  beq- CLASSIC_LEFT
  ori r3, r3, 0x4000    ; down

CLASSIC_LEFT:
  andi. r4, r0, 0x2
  beq- CLASSIC_RIGHT
  ori r3, r3, 0x2       ; left

CLASSIC_RIGHT:
  andi. r4, r0, 0x8000
  beq- CLASSIC_A
  ori r3, r3, 0x8000    ; right

CLASSIC_A:
  andi. r4, r0, 0x10
  beq- CLASSIC_B
  ori r3, r3, 0x10      ; a
  
CLASSIC_B:
  andi. r4, r0, 0x40
  beq- CLASSIC_X
  ori r3, r3, 0x40      ; b

CLASSIC_X:
  andi. r4, r0, 0x8
  beq- CLASSIC_Y
  ori r3, r3, 0x8       ; x

CLASSIC_Y:
  andi. r4, r0, 0x20
  beq- CLASSIC_L
  ori r3, r3, 0x20      ; y

CLASSIC_L:
  andi. r4, r0, 0x2000
  beq- CLASSIC_R
  ori r3, r3, 0x2000    ; l

CLASSIC_R:
  andi. r4, r0, 0x200
  beq- CLASSIC_ZL
  ori r3, r3, 0x200     ; r

CLASSIC_ZL:
  andi. r4, r0, 0x80
  beq- CLASSIC_ZR
  ori r3, r3, 0x80      ; zl

CLASSIC_ZR:
  andi. r4, r0, 0x4
  beq- CLASSIC_PLUS
  ori r3, r3, 0x4       ; zr

CLASSIC_PLUS:
  andi. r4, r0, 0x400
  beq- CLASSIC_MINUS
  ori r3, r3, 0x400     ; plus

CLASSIC_MINUS:
  andi. r4, r0, 0x1000
  beq- RETURN
  ori r3, r3, 0x1000    ; minus

RETURN:
  mr r0, r3
  sth r0, 0x2A(r29)
 
Last edited by Vague Rant,

NestorM

Well-Known Member
Member
Joined
Feb 19, 2021
Messages
100
Trophies
1
Age
40
XP
1,090
Country
France
@Vague Rant please can you fix endless ocean blue world who stuck on title screen with "connect classic controller " message when played as wii u injection. This game already support classic controller but can't be played with Wii u gamepad as inject.
 

Charco

Well-Known Member
Member
Joined
Nov 5, 2012
Messages
330
Trophies
1
XP
1,053
Country
Excuse my ignorance, I am new to gecko codes having only played around with them in USB Loader GX this weekend, but how do I add these codes to my games? Do I copy and paste them into the .txt file on my SD card to add to the existing codes?
 

Deleted member 688789

Well-Known Member
Newcomer
Joined
Jan 23, 2024
Messages
52
Trophies
0
XP
184
Good question, re: Metafortress. I'm not sure if there's any info on how to get around that besides in the USB loaders. I know most things that require shaking in Return to Dream Land can be done by mashing the D-Pad instead, are there other things that doesn't work for?

In some levels you still need to shake and can't resort to the d pad, for example if you are a snowball. There are also a few mini-games that require special inputs, but I haven't played most of them and I personally don't find them that important.
 
  • Like
Reactions: Vague Rant

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,512
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,771
Country
@Vague Rant please can you fix endless ocean blue world who stuck on title screen with "connect classic controller " message when played as wii u injection. This game already support classic controller but can't be played with Wii u gamepad as inject.
I think you asked this previously. :P The problem with games like that is that Nintendo's Classic Controller emulation feature for Wii games is not working correctly for some reason, but there's no real way to know why without Nintendo explaining or some kind of invasive hardware modification (which is beyond me). You also can't emulate the Wii VC injection environment via Dolphin, so there's no way to debug it there either. I would love to be able to fix games like this and New Super Mario Bros. Wii, but they're kind of a complete mystery. For a goofy analogy, it's like taking a car to a mechanic and saying "There's something wrong with my engine, but I don't know what. I'd like you to repair it without looking under the hood. Just fix it from the outside."

Yes. This was always my fav button to accelerate in mk8 on the wii u gamepad. Thx that you fixed it for mk wii.

Will this gecko code also work for the other mk wii mods?
I don't have any experience with MK Wii modding, but at a guess I think it should work. Mods generally don't relocate original code because that's super difficult and complicated, so the modifications should hit the same location regardless of whether the game is running clean or modified.

Excuse my ignorance, I am new to gecko codes having only played around with them in USB Loader GX this weekend, but how do I add these codes to my games? Do I copy and paste them into the .txt file on my SD card to add to the existing codes?
Yep, sounds like you get it already. On your SD card in txtcodes you can either create a brand new .txt file if you have no previous cheats, or add the code to the end of your existing file if you already have one. The format of txtcodes files is pretty easy to understand, it's just this:
Code:
GAMEID
Game Title

Cheat 1 Name
00000000 00000000
00000000 00000000
00000000 00000000

Cheat 2 Name
00000000 00000000
00000000 00000000
00000000 00000000

@Vague Rant in MK8 you can also accelerate/brake with the right stick.
Oh wow, learning stuff all over the place. Just trying this out now, it looks like it's not true analog accelerating/braking, the stick just hits a certain threshold and it starts being treated as a button press. Mario Kart Wii is more complicated than most because it uses the low-level WPAD library, but if I come back to this one with a better understanding of the raw analog data I'll see if I can implement that too.



SI_Wii_BitTripComplete_image1600w.jpg


Bit.Trip Complete by Gaijin Games (now Choice Provisions) is a compilation of all six retro-styled Bit.Trip WiiWare games into one bundle, featuring all-new challenges and unlockable extras. Each of these games were individually and collectively acclaimed, with this retail collection only improving them. All six titles were reproduced with their original control schemes, from the motion-controlled Beat and Flux, to the NES-style Runner and Core, to the Nunchuk/Classic Void and Fate. This does make the collection a bit hectic, requiring some swapping of controllers depending on the mode. Can anything be done about that?

USAEurope

  1. Code:
    All Games Support Classic Controller [Vague Rant]
    C2465BE8 00000008
    C03E05BC 88E3005C
    2C070002 4082002C
    48000009 BF2AAAAB
    7CE802A6 C0230070
    C0470000 EC2100B2
    3CE0BF80 90FE05C0
    38E00000 90FE05C4
    60000000 00000000
    C2465634 00000010
    2C040002 40820074
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000040 4182000C
    7D080079 60C60400
    71000008 41820008
    60C60100 71000020
    41820008 60C60200
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    70C09FFF 00000000
  2. Code:
    All Games Support Classic Controller [Vague Rant]
    C2467BD8 00000008
    C03E05BC 88E3005C
    2C070002 4082002C
    48000009 BF2AAAAB
    7CE802A6 C0230070
    C0470000 EC2100B2
    3CE0BF80 90FE05C0
    38E00000 90FE05C4
    60000000 00000000
    C2467624 00000010
    2C040002 40820074
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000040 4182000C
    7D080079 60C60400
    71000008 41820008
    60C60100 71000020
    41820008 60C60200
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    70C09FFF 00000000

Button Mapping​

This is a bit of a weird one because you're simultaneously using two controllers here. In addition to the Wiimote inputs listed here, you're also pressing their Classic Controller equivalents, important to know when navigating the main menu or playing the CC-based games, Void and Fate.

Wii RemoteClassic ControllerFunction
HomeHome
Works normally
Open/Close Home Menu
D-PadD-PadSideways Games
Movement/Aiming
AAMenu/Vertical Games
Confirm
Primary Action
BBMenu/Vertical Games
Cancel
Secondary Action
1YSideways Games
Cancel
Secondary Action
2XSideways Games
Confirm
Primary Action
PlusPlusNot used?
MinusMinusPause
Wiimote TiltLeft StickMotion Games
Move Paddle

General Notes​

  • Unlike all of the other hacks, here the Classic Controller becomes a simultaneous Classic Controller-and-Wiimote, so that the Wiimote-only games work normally and so do the Classic ones. This does involve a bit of compromise since both controllers have to coexist, trying not to overlap each other's buttons. I know it's weird that X is the main action button for sideways-style games, but anything else would compromise the main menu and vertical games, so it kind of is what it is.

  • No Left Stick D-Pad emulation for this one, it clashes with the analog stick already being used as an actual analog stick in two games and as the accelerometer tilt in two more. The two games which use the D-Pad (Runner and Core) must be played with the actual D-Pad.

  • The two motion-based games, Beat and Flux, I would say just don't play as well when remapped onto an analog stick. They were clearly designed around precise tilting of the Wii Remote and are simply harder to play without that input. If you have the option, I'd recommend unplugging the Classic Controller and using the original controls.

  • However, the rest play quite well with the Classic Controller. Two of them always had Classic Controller support, so obviously they're fine, and the other two are NES-style sideways Wiimote, which of course translates.

Technical Notes​

As good as this collection is quality-wise, the menu system stringing all of the games together is a bit slapdash. You're supposed to be able to quit from any game by pressing B on the Wiimote or Classic Controller while on the title screen, but this feature is broken for one game, Bit.Trip Void. The unmodified game requires you to specifically press the Wiimote B button, the Classic B button simply doesn't work. For this reason, I actually mapped only the Wiimote B button on Classic B, i.e. it's no longer possible to press the real Classic B. I don't think this causes any issues.

Code is: C2 in read_kpad_acc() to map tilt to the left analog, C2 in read_kpad_button() to map/remap the Wiimote and Classic Controller.
 

Maeson

Well-Known Member
Member
Joined
Apr 3, 2013
Messages
1,258
Trophies
2
XP
3,727
Country
Spain
It is incredible how many games you have modded already! And I played pretty much all of them. I need to take some time to get all of the codes and set them up both on my Wii and Dolphin. Thank you for all of this.

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.

Now, the game is pretty well known and is accessible on Dreamcast, that version was ported to several places like Xbox 360 and later Steam for PC, plus other platforms. The thing though, is that the Wii version is a bit special, because it's less of a port and more of an expansion. It has more areas to play (from 3 or 4 to 15), more fishes to catch, more lures to use (from 14 to 20, if I remember right), and it even adds a Nature Mode where time passes in real time. Unless there's a better port out there, the Wii release I think it has been the best version of the game since 2008.

I played it a lot throughout the years with its motion controls, but maybe a classic controller option could be great too. Thinking about it, there's quite a few fishing games on Wii that I ended up playing for a long time, specially this one and Fishing Resort, still my favourite fishing game by far.

If you end up wanting to take a look, it has no IR aiming function, and the motion controls are:

Nunchuk waggling for reeling (replicated with B Buttion, so it could be ignored)

Wiimote thrust (any direction) throw your hook to the designated spot (selected by the nunchuk's analog stick). Strength of the thrust seems to not matter, it always ends up in the same spot, so it could be simple.

Wiimote thrust left to move the lure left
Wiimote thrust right to move the lure right
Wiimote thrust up/down to move it towards you
These three are used to tease fish. Like the above, the strength used doesn't seem to make a difference.

And lastly, one a fish was hooked, it sometimes asks you to turn around the Wiimote in specific directions depending on where the fish is trying to go. I really don't know how to talk about how sensitive it is, or what type of movement it is exactly asking for...

Both the thrusts and the turning maybe could be replicated with the right analog stick, with R reeling, but then again I don't know how it could work. By the way, the PAL release is one of the very few Wii games that do not support 60Hz, it's limited to 50Hz. That was really disappointing when i found out...


And before I forget, you made an Excite Trucks code which is awesome, and related to that looking at the Dolphin Wiki I found out there is a code to play Excitebots at 60 FPS, like Excite Trucks (well, on real hardware the cap is 60 but it hardly sticks there). I tried a bit on Dolphin and it's amazing how much that game gains at higher frame rate.

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

NestorM

Well-Known Member
Member
Joined
Feb 19, 2021
Messages
100
Trophies
1
Age
40
XP
1,090
Country
France
I think you asked this previously. :P The problem with games like that is that Nintendo's Classic Controller emulation feature for Wii games is not working correctly for some reason, but there's no real way to know why without Nintendo explaining or some kind of invasive hardware modification (which is beyond me). You also can't emulate the Wii VC injection environment via Dolphin, so there's no way to debug it there either. I would love to be able to fix games like this and New Super Mario Bros. Wii, but they're kind of a complete mystery. For a goofy analogy, it's like taking a car to a mechanic and saying "There's something wrong with my engine, but I don't know what. I'd like you to repair it without looking under the hood. Just fix it from the outside."


I don't have any experience with MK Wii modding, but at a guess I think it should work. Mods generally don't relocate original code because that's super difficult and complicated, so the modifications should hit the same location regardless of whether the game is running clean or modified.


Yep, sounds like you get it already. On your SD card in txtcodes you can either create a brand new .txt file if you have no previous cheats, or add the code to the end of your existing file if you already have one. The format of txtcodes files is pretty easy to understand, it's just this:
Code:
GAMEID
Game Title

Cheat 1 Name
00000000 00000000
00000000 00000000
00000000 00000000

Cheat 2 Name
00000000 00000000
00000000 00000000
00000000 00000000


Oh wow, learning stuff all over the place. Just trying this out now, it looks like it's not true analog accelerating/braking, the stick just hits a certain threshold and it starts being treated as a button press. Mario Kart Wii is more complicated than most because it uses the low-level WPAD library, but if I come back to this one with a better understanding of the raw analog data I'll see if I can implement that too.



View attachment 466204

Bit.Trip Complete by Gaijin Games (now Choice Provisions) is a compilation of all six retro-styled Bit.Trip WiiWare games into one bundle, featuring all-new challenges and unlockable extras. Each of these games were individually and collectively acclaimed, with this retail collection only improving them. All six titles were reproduced with their original control schemes, from the motion-controlled Beat and Flux, to the NES-style Runner and Core, to the Nunchuk/Classic Void and Fate. This does make the collection a bit hectic, requiring some swapping of controllers depending on the mode. Can anything be done about that?

USAEurope

  1. Code:
    All Games Support Classic Controller [Vague Rant]
    C2465BE8 00000008
    C03E05BC 88E3005C
    2C070002 4082002C
    48000009 BF2AAAAB
    7CE802A6 C0230070
    C0470000 EC2100B2
    3CE0BF80 90FE05C0
    38E00000 90FE05C4
    60000000 00000000
    C2465634 00000010
    2C040002 40820074
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000040 4182000C
    7D080079 60C60400
    71000008 41820008
    60C60100 71000020
    41820008 60C60200
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    70C09FFF 00000000
  2. Code:
    All Games Support Classic Controller [Vague Rant]
    C2467BD8 00000008
    C03E05BC 88E3005C
    2C070002 4082002C
    48000009 BF2AAAAB
    7CE802A6 C0230070
    C0470000 EC2100B2
    3CE0BF80 90FE05C0
    38E00000 90FE05C4
    60000000 00000000
    C2467624 00000010
    2C040002 40820074
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000040 4182000C
    7D080079 60C60400
    71000008 41820008
    60C60100 71000020
    41820008 60C60200
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    70C09FFF 00000000

Button Mapping​

This is a bit of a weird one because you're simultaneously using two controllers here. In addition to the Wiimote inputs listed here, you're also pressing their Classic Controller equivalents, important to know when navigating the main menu or playing the CC-based games, Void and Fate.

Wii RemoteClassic ControllerFunction
HomeHome
Works normally
Open/Close Home Menu
D-PadD-PadSideways Games
Movement/Aiming
AAMenu/Vertical Games
Confirm
Primary Action
BBMenu/Vertical Games
Cancel
Secondary Action
1YSideways Games
Cancel
Secondary Action
2XSideways Games
Confirm
Primary Action
PlusPlusNot used?
MinusMinusPause
Wiimote TiltLeft StickMotion Games
Move Paddle

General Notes​

  • Unlike all of the other hacks, here the Classic Controller becomes a simultaneous Classic Controller-and-Wiimote, so that the Wiimote-only games work normally and so do the Classic ones. This does involve a bit of compromise since both controllers have to coexist, trying not to overlap each other's buttons. I know it's weird that X is the main action button for sideways-style games, but anything else would compromise the main menu and vertical games, so it kind of is what it is.

  • No Left Stick D-Pad emulation for this one, it clashes with the analog stick already being used as an actual analog stick in two games and as the accelerometer tilt in two more. The two games which use the D-Pad (Runner and Core) must be played with the actual D-Pad.

  • The two motion-based games, Beat and Flux, I would say just don't play as well when remapped onto an analog stick. They were clearly designed around precise tilting of the Wii Remote and are simply harder to play without that input. If you have the option, I'd recommend unplugging the Classic Controller and using the original controls.

  • However, the rest play quite well with the Classic Controller. Two of them always had Classic Controller support, so obviously they're fine, and the other two are NES-style sideways Wiimote, which of course translates.

Technical Notes​

As good as this collection is quality-wise, the menu system stringing all of the games together is a bit slapdash. You're supposed to be able to quit from any game by pressing B on the Wiimote or Classic Controller while on the title screen, but this feature is broken for one game, Bit.Trip Void. The unmodified game requires you to specifically press the Wiimote B button, the Classic B button simply doesn't work. For this reason, I actually mapped only the Wiimote B button on Classic B, i.e. it's no longer possible to press the real Classic B. I don't think this causes any issues.

Code is: C2 in read_kpad_acc() to map tilt to the left analog, C2 in read_kpad_button() to map/remap the Wiimote and Classic Controller.
Ok just saw that, sorry !
 
  • Like
Reactions: Vague Rant

Deleted member 688789

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

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • SylverReZ @ SylverReZ:
    My theory is that once he said he owns hacked Switches and sells them to friends, probably discussed about it on the same subreddit that Nintendo sued a bunch of modders on. Or, the second, being that he decided to log off and move on with his life. Maybe one day he'll come back to GBAtemp.
  • BigOnYa @ BigOnYa:
    Or 3, he's moved into an apartment across the street from you, watching and waiting for the right time to pounce.
    +1
  • K3Nv2 @ K3Nv2:
    If you see nice things being moved in and massive pallets of old hard drives run
    +2
  • The_Dizzy_Vizzy @ The_Dizzy_Vizzy:
    @SylverReZ, life is just DUCKY!!!
    +1
  • The_Dizzy_Vizzy @ The_Dizzy_Vizzy:
    @K3Nv2, how's life for you?
  • The_Dizzy_Vizzy @ The_Dizzy_Vizzy:
    @K3Nv2, CHRIST, everybody is gone again!!! Maybe it's me, I only shower once a year... :(
  • SylverReZ @ SylverReZ:
    @The_Dizzy_Vizzy, Everybody might be busy with other things, you just got to be patient.
  • SylverReZ @ SylverReZ:
    I'm around if you want to chat. :)
  • SylverReZ @ SylverReZ:
    Don't expect an instant reply, though.
  • The_Dizzy_Vizzy @ The_Dizzy_Vizzy:
    It's all good chief, I'm going to watch the film TROY, with Brad Pitt, and on the 6th (this Friday) we are going to see "The Return", when Ulysses returns and kills EVRYBODY.
    +1
  • K3Nv2 @ K3Nv2:
    Like how it takes them ten minutes to find trumps shooter but can't find a guy that blows off the ceo of united health care
    +2
  • SylverReZ @ SylverReZ:
    @K3Nv2, The fuck?
  • K3Nv2 @ K3Nv2:
    Someone blowing off the ceo of a health insurance company?
  • SylverReZ @ SylverReZ:
    @The_Dizzy_Vizzy, Sounds like fun. Hope you guys enjoy the movie, let me know how it went afterwards.
    +1
  • The_Dizzy_Vizzy @ The_Dizzy_Vizzy:
    @SylverReZ, You like Brad Pitt? I've been saying for YEARS that this cat is going to get an Academy Award". Not that I care for that kind of shit, but he's a great actor. He finally got one for best supporting actor in "Once Upon A Time......In Hollywood". Great film. If you haven't seen it, by all means watch it. It's the story of Sharon Tate, who was SLAUGHTERD by the Manson family.
  • SylverReZ @ SylverReZ:
    @The_Dizzy_Vizzy, I've heard of Brat Pitt, he played one of the people in Fight Club.
    +1
  • The_Dizzy_Vizzy @ The_Dizzy_Vizzy:
    @SylverReZ, but the movie is a re-imagining of how this went, she lives. Great flick, sad subject matter...
    +1
  • The_Dizzy_Vizzy @ The_Dizzy_Vizzy:
    @SylverReZ, he's in a bunch of great films. Anyway Syl, and everyone else, I gotta jet. Love you guys so much, great to keep up with you in a chatroom!!!!
    +2
  • SylverReZ @ SylverReZ:
    @The_Dizzy_Vizzy, Yeah, take care man. You're an awesome dude.
    +1
  • The_Dizzy_Vizzy @ The_Dizzy_Vizzy:
    @K3Nv2, that was awful. I hope they catch that piece of shit and stick him in a cell to the day he dies...
  • The_Dizzy_Vizzy @ The_Dizzy_Vizzy:
    @SylverReZ. awww, I'm touched (but not like that)
    !!!
    +1
  • K3Nv2 @ K3Nv2:
    He was a ceo of an insurance company both equal pieces of shit
  • K3Nv2 @ K3Nv2:
    Had chili for dinner just to piss off the dentist tomorrow
    +1
    K3Nv2 @ K3Nv2: Had chili for dinner just to piss off the dentist tomorrow +1