Hacking New Classic Controller Hacks

Jayinem

Well-Known Member
Member
Joined
Dec 16, 2021
Messages
1,377
Trophies
1
XP
3,141
Country
United States
It's a shame all game Wii games didn't have this option from default, as time has gone on I think it's the worst control scheme ever created. To be fair a few games implemented it well like Metroid Prime 3 and Skyward Sword but overall still awful.
 

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,502
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,700
Country
@Vague Rant Thanks for the answer. Yeah, the idea is using the IR pointer. This is how I mapped the game on Dolphin, I'm sure you can figure out something better.
I looked into this and have now updated the Metroid: Other M post with a new code adding Nunchuk support. 👍

Wario Shake Dimension is working now with the "force cc connected" option. Thanks for that info. I tried Super paper mario. Got it working until I had to enter a name and then the game freezes with a loud buzzing sound. Does it mean I have the wrong revision version? How can I check the rev Version number? Unfortunately I don't have the disc anymore. But if the cc codes are for another version of super paper mario, wouldn't it just freeze at the start and not after typing a name?
Never used gecko codes before but using Dolphin Android and this happens when inputting the code for Super Paper Mario.

I mean.... What is the error? Where is the error?? Can anyone help, I'm living upto my name here..
View attachment 462343

Edit... Turns out you take out the heading and only add the code then! That cleared the error however it doesn't seem to working when i boot the game. Using the correct rev also.
Really odd that you're both having problems with Super Paper Mario. I re-tested it on my end on both Dolphin (Windows) and real (OG Wii) hardware and it works without any issues. I'm really not sure what could be causing this. Tough to guess without it ever breaking for me. Definitely weird that it crashes when creating a save specifically. These controller hacks run on every single frame, so I'd generally expect them to either crash immediately or never. Confusing.

Can someone make a hack to use the gamecube controller in pes 2013 or the classic controller in need for speed pro street or carbon
I generally don't mention if I've started on a game because I don't want to get hopes up that it will get finished, but I did actually look at Need for Speed: ProStreet after a previous request. I got it partially working, but it needs more work to actually be playable. I got a bit stuck and put it aside and moved on to other games, but I do want to come back to it and see if I can figure it out. Need for Speed: Carbon I'm probably less likely to do since you can already play the GameCube version via Nintendont with whatever controller you want. Is there anything the Wii version adds that you don't get from playing the GameCube one?

Wow, these hacks are great! Thanks for the work. Is it possible to have this thread appear in the Wii U forum as well? Some people, myself included, like to inject Wii games with cc hacks to play them on the gamepad, and I just came across this thread by chance.
Thanks! Fellow Wii U owner here, opening up more Wii games to be playable on GamePad is definitely a nice bonus to this project. I'm not sure if GBATemp can display the same thread across multiple boards, but perhaps some sort of tutorial thread on the Wii U side about how to add Classic Controller hacks to games, with a link back to this thread and any other Classic Controller hacks (crediar's Kirby's Return to Dream Land and Thomas83Lin's Rune Factory: Tides of Destiny; others?), would be a solid idea.



926ec030f29f83ce5318754fdb631a33.png


Arika's Endless Ocean is perhaps the most "blue ocean" game ever released on the Wii, both figuratively and literally. Nintendo courted casual gamers heavily in the Wii/DS generation and this game is just an extremely chilled out, relaxing time. With fantastic graphics and no real way to lose, this game becomes far more about the fun of exploring the depths of the ocean, discovering lost treasures and polishing marine life until it sparkles. It's also one of the few Wii games to support playing custom MP3 music from the SD card, so you can listen to whatever you want (Sigur Rós) while you dive. While the sequel added Classic Controller support, the original game is an extremely Wiimote-focussed affair, with basically all interactions revolving around the IR pointer, with some occasional shaking. This game's heavy focus on the Wiimote led me to implement a Nunchuk mode in addition to Classic Controller, retaining the original spirit while adding a little bit of flexibility. Highlight for @SPAC3W4IFU, who asked about this game.

USAEuropeJapan (Rev 1)

  1. Code:
    Classic Controller and Nunchuk Support [Vague Rant]
    C22D3BAC 0000000D
    7C0802A6 48000005
    7CA802A6 7C0803A6
    80030000 70004000
    4182003C C0050040
    C0250048 80C50044
    34C6FFFF 41820028
    D003000C D0030010
    D0030014 D0230018
    90C50044 4E800020
    4059999A 00000004
    40BC7277 38000004
    90050044 9421FFC0
    60000000 00000000
    C22D48EC 0000003A
    7C0802A6 48000005
    7CA802A6 80C50198
    80E60000 2C070000
    41820008 90E5019C
    88EE0028 2C070001
    4082000C 3903FFF4
    48000010 2C070002
    40820188 7C681B78
    9421FFE0 90010024
    90610008 90A1000C
    90C10010 38000002
    9803005E 800501A0
    C04501B0 C008006C
    FC000210 C0280070
    FC200A10 FC00082A
    FC001040 408000C8
    2C040000 41820018
    8005019C 90060000
    80010024 38210020
    48000128 2C070001
    418200A4 C0030074
    FC000210 C0230078
    FC200A10 FC00082A
    FC001040 4080000C
    2C000001 40820080
    2C000001 41820018
    38000000 90030020
    90030024 38000001
    900501A0 818501A4
    7D8803A6 4E800021
    2C030001 80610008
    80A1000C 80C10010
    C04501A8 40820008
    EC4200B2 C06501AC
    C0030020 C0230074
    FC211024 48000059
    D0030020 C0030024
    C0230078 FC200850
    48000045 D0030024
    8005019C 90060000
    48000024 38000000
    900501A0 C008006C
    D0030020 C0080070
    D0030024 38000000
    90060000 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C02501B4 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    8068494C 3F800000
    00000000 8031F36C
    3FAAAAAB 3C23D70A
    3DCCCCCD 3F4CCCCD
    7C0803A6 9421FFE0
    60000000 00000000
    C22D5CA4 0000001C
    2C040001 40820014
    71002000 418200C8
    60E71000 480000C0
    2C040002 408200B8
    71200800 41820008
    60E78000 71200001
    41820008 60E70008
    71204000 41820008
    60E70004 71200002
    41820008 60E70001
    71208000 41820008
    60E70002 71200010
    41820008 60E70800
    71200040 41820008
    60E70400 71200008
    41820008 60E70100
    71200020 41820008
    60E70200 71202000
    41820008 61084000
    71200200 41820008
    60E70800 71200080
    41820008 60E71000
    71200004 41820008
    60E70400 71200400
    41820008 60E70010
    71201000 41820008
    60E71000 70E09FFF
    60000000 00000000
  2. Code:
    Classic Controller and Nunchuk Support [Vague Rant]
    C22D3A4C 0000000D
    7C0802A6 48000005
    7CA802A6 7C0803A6
    80030000 70004000
    4182003C C0050040
    C0250048 80C50044
    34C6FFFF 41820028
    D003000C D0030010
    D0030014 D0230018
    90C50044 4E800020
    4059999A 00000004
    40BC7277 38000004
    90050044 9421FFC0
    60000000 00000000
    C22D478C 0000003A
    7C0802A6 48000005
    7CA802A6 80C50198
    80E60000 2C070000
    41820008 90E5019C
    88EE0028 2C070001
    4082000C 3903FFF4
    48000010 2C070002
    40820188 7C681B78
    9421FFE0 90010024
    90610008 90A1000C
    90C10010 38000002
    9803005E 800501A0
    C04501B0 C008006C
    FC000210 C0280070
    FC200A10 FC00082A
    FC001040 408000C8
    2C040000 41820018
    8005019C 90060000
    80010024 38210020
    48000128 2C070001
    418200A4 C0030074
    FC000210 C0230078
    FC200A10 FC00082A
    FC001040 4080000C
    2C000001 40820080
    2C000001 41820018
    38000000 90030020
    90030024 38000001
    900501A0 818501A4
    7D8803A6 4E800021
    2C030001 80610008
    80A1000C 80C10010
    C04501A8 40820008
    EC4200B2 C06501AC
    C0030020 C0230074
    FC211024 48000059
    D0030020 C0030024
    C0230078 FC200850
    48000045 D0030024
    8005019C 90060000
    48000024 38000000
    900501A0 C008006C
    D0030020 C0080070
    D0030024 38000000
    90060000 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C02501B4 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    8068450C 3F800000
    00000000 8031F20C
    3FAAAAAB 3C23D70A
    3DCCCCCD 3F4CCCCD
    7C0803A6 9421FFE0
    60000000 00000000
    C22D5B44 0000001C
    2C040001 40820014
    71002000 418200C8
    60E71000 480000C0
    2C040002 408200B8
    71200800 41820008
    60E78000 71200001
    41820008 60E70008
    71204000 41820008
    60E70004 71200002
    41820008 60E70001
    71208000 41820008
    60E70002 71200010
    41820008 60E70800
    71200040 41820008
    60E70400 71200008
    41820008 60E70100
    71200020 41820008
    60E70200 71202000
    41820008 61084000
    71200200 41820008
    60E70800 71200080
    41820008 60E71000
    71200004 41820008
    60E70400 71200400
    41820008 60E70010
    71201000 41820008
    60E71000 70E09FFF
    60000000 00000000
  3. Code:
    Classic Controller and Nunchuk Support [Vague Rant]
    C22D0350 0000000D
    7C0802A6 48000005
    7CA802A6 7C0803A6
    80030000 70004000
    4182003C C0050040
    C0250048 80C50044
    34C6FFFF 41820028
    D003000C D0030010
    D0030014 D0230018
    90C50044 4E800020
    4059999A 00000004
    40BC7277 38000004
    90050044 9421FFC0
    60000000 00000000
    C22D1090 0000003A
    7C0802A6 48000005
    7CA802A6 80C50198
    80E60000 2C070000
    41820008 90E5019C
    88EE0028 2C070001
    4082000C 3903FFF4
    48000010 2C070002
    40820188 7C681B78
    9421FFE0 90010024
    90610008 90A1000C
    90C10010 38000002
    9803005E 800501A0
    C04501B0 C008006C
    FC000210 C0280070
    FC200A10 FC00082A
    FC001040 408000C8
    2C040000 41820018
    8005019C 90060000
    80010024 38210020
    48000128 2C070001
    418200A4 C0030074
    FC000210 C0230078
    FC200A10 FC00082A
    FC001040 4080000C
    2C000001 40820080
    2C000001 41820018
    38000000 90030020
    90030024 38000001
    900501A0 818501A4
    7D8803A6 4E800021
    2C030001 80610008
    80A1000C 80C10010
    C04501A8 40820008
    EC4200B2 C06501AC
    C0030020 C0230074
    FC211024 48000059
    D0030020 C0030024
    C0230078 FC200850
    48000045 D0030024
    8005019C 90060000
    48000024 38000000
    900501A0 C008006C
    D0030020 C0080070
    D0030024 38000000
    90060000 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C02501B4 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    80667A94 3F800000
    00000000 80317CB8
    3FAAAAAB 3C23D70A
    3DCCCCCD 3F4CCCCD
    7C0803A6 9421FFE0
    60000000 00000000
    C22D2448 0000001C
    2C040001 40820014
    71002000 418200C8
    60E71000 480000C0
    2C040002 408200B8
    71200800 41820008
    60E78000 71200001
    41820008 60E70008
    71204000 41820008
    60E70004 71200002
    41820008 60E70001
    71208000 41820008
    60E70002 71200010
    41820008 60E70800
    71200040 41820008
    60E70400 71200008
    41820008 60E70100
    71200020 41820008
    60E70200 71202000
    41820008 61084000
    71200200 41820008
    60E70800 71200080
    41820008 60E71000
    71200004 41820008
    60E70400 71200400
    41820008 60E70010
    71201000 41820008
    60E71000 70E09FFF
    60000000 00000000

Button Mapping​

This one adds support for both the Classic Controller and Nunchuk, so we'll need a table for each. That said, the Nunchuk mode is basically just the normal Wiimote mode plus a stick and two buttons, so we'll get that one out of the way first.

Wii RemoteNunchukGame Function
MinusZAuto-Swim
ShakeCVarious
PointerStickMovement (underwater)

Wii RemoteClassic ControllerGame Function
HomeHome
Remember to point with the right stick on Classic Controller
Open/Close Home Button Menu
D-PadD-PadTool Menu Navigation
AA/RMenus
Confirm
Gameplay
Interact
BB/ZRMenus
Cancel
Gameplay
Swim
PlusPlusFocus
Zoom In
MinusMinus/ZLGameplay
Auto-Swim
Focus
Zoom Out
1YOpen Map
2XChange View
ShakeLVarious
IR PointerLeft Stick
Right Stick
Menus
Navigation
Gameplay
Movement (underwater)
Cursor Movement

General Notes​

  • Again, basically everything you do in this game revolves around the IR pointer, from player movement to aiming and fish interactions. Adapting this to a twin-stick (Classic)/one-stick-one-pointer (Nunchuk) setup does require a bit of compromise. Essentially, the different inputs have to fight over who's in charge of the IR pointer at the moment. I decided that the left stick gets higher priority: if you try to use both simultaneously, the left stick wins and right stick movement is ignored.

    • The way this all works is that the left stick represents absolute movement and the right stick/IR pointer represents cursor movement. This allows you to swim around with entirely traditional controls (stick and buttons) then when you want to use the cursor, you let go of the left stick and move it around with the right stick/IR pointer. When you want to stop using the pointer, you go back to the left stick again.

    • In the brief walking segments, you will need to use the right stick/IR cursor to move around and interact with people, objects and animals. The traditional, left-stick movement only works underwater.

    • Remember that A is double-mapped to Classic A and R. When your thumb is busy manipulating the cursor with the right stick, you can use the R button to focus on a fish or whatever else you're interacting with without having to move off the right stick.

  • Is this the first Nunchuk hack? Having to add Nunchuk support from scratch forced me to rethink how button injection should work, so with this hack I'm finally retiring crediar's original button injector, which also proved useful when updating the previous Metroid: Other M hack with Nunchuk support, since a method of remapping the Wiimote itself was also necessary in that case. But I'm getting side-tracked. A nice bonus here is that if you're just diving (not interacting with anything), you can do all of that entirely on the solo Nunchuk.

  • Japan received two revisions of this game; the first was recalled after the discovery of a game-breaking bug in the aquarium feature. Owners were able to request a replacement copy with the bug fixed. By the time the game came to the US and Europe, this bug fix was already included. I didn't bother hacking the Japan Rev 0 release because I doubt there's enough people playing that rare, recalled Japanese version anyway.

Technical Notes​

This hack is made up of three codes, all within KPAD.

The first one applies to read_kpad_acc(). It's slightly different to previous accelerometer hacks in that instead of completely replacing the "real" accelerometer, here we only replace the function while the user is holding the shake button (Classic L/Nunchuk C). Otherwise, the accelerometer function runs normally. This is important for Nunchuk mode. The accelerometer data is used to determine the relative angle at which the sensor bar should be found, so to correctly find the sensor bar we need the real accelerometer data, not our faked version.

The second hack, which makes up the bulk of the total lines, applies to calc_dpd_variable(), a child of read_kpad_dpd(), the pointer function. Previous hacks applied directly to the parent function, but in this case where we still want the pointer to function normally sometimes, it was easier to apply it here, since this is after KPAD has determined whether or not the (real) IR pointer is currently in-use. This way, if KPAD says a real Wiimote is currently really pointed at the sensor bar, we can use that pointer data, but if not we can stick with our fake pointer instead. This hack is also responsible for managing which stick is currently "in charge" of the IR pointer and disabling the cursor visibility when in absolute mode. A lot going on in here.

As mentioned, this hack marks the debut of a new button injector, which is the third hack. It's still inside KPADRead and It still does all the same stuff, but it's also able to remap the Wiimote itself and it still manages to be slightly shorter than the original method. We're jumping in earlier here (before the button states have been processed into pressed/held/released), so we no longer have to manage all of that manually: injecting the values before they get to that code means the game handles processing the buttons for us, as if they were real Wiimote buttons.
 

tech_A_nina

Active Member
Newcomer
Joined
Aug 1, 2018
Messages
31
Trophies
0
XP
261
Country
United Kingdom
I looked into this and have now updated the Metroid: Other M post with a new code adding Nunchuk support. 👍



Really odd that you're both having problems with Super Paper Mario. I re-tested it on my end on both Dolphin (Windows) and real (OG Wii) hardware and it works without any issues. I'm really not sure what could be causing this. Tough to guess without it ever breaking for me. Definitely weird that it crashes when creating a save specifically. These controller hacks run on every single frame, so I'd generally expect them to either crash immediately or never. Confusing.


I generally don't mention if I've started on a game because I don't want to get hopes up that it will get finished, but I did actually look at Need for Speed: ProStreet after a previous request. I got it partially working, but it needs more work to actually be playable. I got a bit stuck and put it aside and moved on to other games, but I do want to come back to it and see if I can figure it out. Need for Speed: Carbon I'm probably less likely to do since you can already play the GameCube version via Nintendont with whatever controller you want. Is there anything the Wii version adds that you don't get from playing the GameCube one?


Thanks! Fellow Wii U owner here, opening up more Wii games to be playable on GamePad is definitely a nice bonus to this project. I'm not sure if GBATemp can display the same thread across multiple boards, but perhaps some sort of tutorial thread on the Wii U side about how to add Classic Controller hacks to games, with a link back to this thread and any other Classic Controller hacks (crediar's Kirby's Return to Dream Land and Thomas83Lin's Rune Factory: Tides of Destiny; others?), would be a solid idea.



View attachment 462904

Arika's Endless Ocean is perhaps the most "blue ocean" game ever released on the Wii, both figuratively and literally. Nintendo courted casual gamers heavily in the Wii/DS generation and this game is just an extremely chilled out, relaxing time. With fantastic graphics and no real way to lose, this game becomes far more about the fun of exploring the depths of the ocean, discovering lost treasures and polishing marine life until it sparkles. It's also one of the few Wii games to support playing custom MP3 music from the SD card, so you can listen to whatever you want (Sigur Rós) while you dive. While the sequel added Classic Controller support, the original game is an extremely Wiimote-focussed affair, with basically all interactions revolving around the IR pointer, with some occasional shaking. This game's heavy focus on the Wiimote led me to implement a Nunchuk mode in addition to Classic Controller, retaining the original spirit while adding a little bit of flexibility. Highlight for @SPAC3W4IFU, who asked about this game.

USAEuropeJapan (Rev 1)

  1. Code:
    Classic Controller and Nunchuk Support [Vague Rant]
    C22D3BAC 0000000D
    7C0802A6 48000005
    7CA802A6 7C0803A6
    80030000 70004000
    4182003C C0050040
    C0250048 80C50044
    34C6FFFF 41820028
    D003000C D0030010
    D0030014 D0230018
    90C50044 4E800020
    4059999A 00000004
    40BC7277 38000004
    90050044 9421FFC0
    60000000 00000000
    C22D48EC 0000003A
    7C0802A6 48000005
    7CA802A6 80C50198
    80E60000 2C070000
    41820008 90E5019C
    88EE0028 2C070001
    4082000C 3903FFF4
    48000010 2C070002
    40820188 7C681B78
    9421FFE0 90010024
    90610008 90A1000C
    90C10010 38000002
    9803005E 800501A0
    C04501B0 C008006C
    FC000210 C0280070
    FC200A10 FC00082A
    FC001040 408000C8
    2C040000 41820018
    8005019C 90060000
    80010024 38210020
    48000128 2C070001
    418200A4 C0030074
    FC000210 C0230078
    FC200A10 FC00082A
    FC001040 4080000C
    2C000001 40820080
    2C000001 41820018
    38000000 90030020
    90030024 38000001
    900501A0 818501A4
    7D8803A6 4E800021
    2C030001 80610008
    80A1000C 80C10010
    C04501A8 40820008
    EC4200B2 C06501AC
    C0030020 C0230074
    FC211024 48000059
    D0030020 C0030024
    C0230078 FC200850
    48000045 D0030024
    8005019C 90060000
    48000024 38000000
    900501A0 C008006C
    D0030020 C0080070
    D0030024 38000000
    90060000 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C02501B4 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    8068494C 3F800000
    00000000 8031F36C
    3FAAAAAB 3C23D70A
    3DCCCCCD 3F4CCCCD
    7C0803A6 9421FFE0
    60000000 00000000
    C22D5CA4 0000001C
    2C040001 40820014
    71002000 418200C8
    60E71000 480000C0
    2C040002 408200B8
    71200800 41820008
    60E78000 71200001
    41820008 60E70008
    71204000 41820008
    60E70004 71200002
    41820008 60E70001
    71208000 41820008
    60E70002 71200010
    41820008 60E70800
    71200040 41820008
    60E70400 71200008
    41820008 60E70100
    71200020 41820008
    60E70200 71202000
    41820008 61084000
    71200200 41820008
    60E70800 71200080
    41820008 60E71000
    71200004 41820008
    60E70400 71200400
    41820008 60E70010
    71201000 41820008
    60E71000 70E09FFF
    60000000 00000000
  2. Code:
    Classic Controller and Nunchuk Support [Vague Rant]
    C22D3A4C 0000000D
    7C0802A6 48000005
    7CA802A6 7C0803A6
    80030000 70004000
    4182003C C0050040
    C0250048 80C50044
    34C6FFFF 41820028
    D003000C D0030010
    D0030014 D0230018
    90C50044 4E800020
    4059999A 00000004
    40BC7277 38000004
    90050044 9421FFC0
    60000000 00000000
    C22D478C 0000003A
    7C0802A6 48000005
    7CA802A6 80C50198
    80E60000 2C070000
    41820008 90E5019C
    88EE0028 2C070001
    4082000C 3903FFF4
    48000010 2C070002
    40820188 7C681B78
    9421FFE0 90010024
    90610008 90A1000C
    90C10010 38000002
    9803005E 800501A0
    C04501B0 C008006C
    FC000210 C0280070
    FC200A10 FC00082A
    FC001040 408000C8
    2C040000 41820018
    8005019C 90060000
    80010024 38210020
    48000128 2C070001
    418200A4 C0030074
    FC000210 C0230078
    FC200A10 FC00082A
    FC001040 4080000C
    2C000001 40820080
    2C000001 41820018
    38000000 90030020
    90030024 38000001
    900501A0 818501A4
    7D8803A6 4E800021
    2C030001 80610008
    80A1000C 80C10010
    C04501A8 40820008
    EC4200B2 C06501AC
    C0030020 C0230074
    FC211024 48000059
    D0030020 C0030024
    C0230078 FC200850
    48000045 D0030024
    8005019C 90060000
    48000024 38000000
    900501A0 C008006C
    D0030020 C0080070
    D0030024 38000000
    90060000 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C02501B4 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    8068450C 3F800000
    00000000 8031F20C
    3FAAAAAB 3C23D70A
    3DCCCCCD 3F4CCCCD
    7C0803A6 9421FFE0
    60000000 00000000
    C22D5B44 0000001C
    2C040001 40820014
    71002000 418200C8
    60E71000 480000C0
    2C040002 408200B8
    71200800 41820008
    60E78000 71200001
    41820008 60E70008
    71204000 41820008
    60E70004 71200002
    41820008 60E70001
    71208000 41820008
    60E70002 71200010
    41820008 60E70800
    71200040 41820008
    60E70400 71200008
    41820008 60E70100
    71200020 41820008
    60E70200 71202000
    41820008 61084000
    71200200 41820008
    60E70800 71200080
    41820008 60E71000
    71200004 41820008
    60E70400 71200400
    41820008 60E70010
    71201000 41820008
    60E71000 70E09FFF
    60000000 00000000
  3. Code:
    Classic Controller and Nunchuk Support [Vague Rant]
    C22D0350 0000000D
    7C0802A6 48000005
    7CA802A6 7C0803A6
    80030000 70004000
    4182003C C0050040
    C0250048 80C50044
    34C6FFFF 41820028
    D003000C D0030010
    D0030014 D0230018
    90C50044 4E800020
    4059999A 00000004
    40BC7277 38000004
    90050044 9421FFC0
    60000000 00000000
    C22D1090 0000003A
    7C0802A6 48000005
    7CA802A6 80C50198
    80E60000 2C070000
    41820008 90E5019C
    88EE0028 2C070001
    4082000C 3903FFF4
    48000010 2C070002
    40820188 7C681B78
    9421FFE0 90010024
    90610008 90A1000C
    90C10010 38000002
    9803005E 800501A0
    C04501B0 C008006C
    FC000210 C0280070
    FC200A10 FC00082A
    FC001040 408000C8
    2C040000 41820018
    8005019C 90060000
    80010024 38210020
    48000128 2C070001
    418200A4 C0030074
    FC000210 C0230078
    FC200A10 FC00082A
    FC001040 4080000C
    2C000001 40820080
    2C000001 41820018
    38000000 90030020
    90030024 38000001
    900501A0 818501A4
    7D8803A6 4E800021
    2C030001 80610008
    80A1000C 80C10010
    C04501A8 40820008
    EC4200B2 C06501AC
    C0030020 C0230074
    FC211024 48000059
    D0030020 C0030024
    C0230078 FC200850
    48000045 D0030024
    8005019C 90060000
    48000024 38000000
    900501A0 C008006C
    D0030020 C0080070
    D0030024 38000000
    90060000 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C02501B4 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    80667A94 3F800000
    00000000 80317CB8
    3FAAAAAB 3C23D70A
    3DCCCCCD 3F4CCCCD
    7C0803A6 9421FFE0
    60000000 00000000
    C22D2448 0000001C
    2C040001 40820014
    71002000 418200C8
    60E71000 480000C0
    2C040002 408200B8
    71200800 41820008
    60E78000 71200001
    41820008 60E70008
    71204000 41820008
    60E70004 71200002
    41820008 60E70001
    71208000 41820008
    60E70002 71200010
    41820008 60E70800
    71200040 41820008
    60E70400 71200008
    41820008 60E70100
    71200020 41820008
    60E70200 71202000
    41820008 61084000
    71200200 41820008
    60E70800 71200080
    41820008 60E71000
    71200004 41820008
    60E70400 71200400
    41820008 60E70010
    71201000 41820008
    60E71000 70E09FFF
    60000000 00000000

Button Mapping​

This one adds support for both the Classic Controller and Nunchuk, so we'll need a table for each. That said, the Nunchuk mode is basically just the normal Wiimote mode plus a stick and two buttons, so we'll get that one out of the way first.

Wii RemoteNunchukGame Function
MinusZAuto-Swim
ShakeCVarious
PointerStickMovement (underwater)


Wii RemoteClassic ControllerGame Function
HomeHome
Remember to point with the right stick on Classic Controller
Open/Close Home Button Menu
D-PadD-PadTool Menu Navigation
AA/RMenus
Confirm
Gameplay
Interact
BB/ZRMenus
Cancel
Gameplay
Swim
PlusPlusFocus
Zoom In
MinusMinus/ZLGameplay
Auto-Swim
Focus
Zoom Out
1YOpen Map
2XChange View
ShakeLVarious
IR PointerLeft Stick
Right Stick
Menus
Navigation
Gameplay
Movement (underwater)
Cursor Movement


General Notes​

  • Again, basically everything you do in this game revolves around the IR pointer, from player movement to aiming and fish interactions. Adapting this to a twin-stick (Classic)/one-stick-one-pointer (Nunchuk) setup does require a bit of compromise. Essentially, the different inputs have to fight over who's in charge of the IR pointer at the moment. I decided that the left stick gets higher priority: if you try to use both simultaneously, the left stick wins and right stick movement is ignored.
    • The way this all works is that the left stick represents absolute movement and the right stick/IR pointer represents cursor movement. This allows you to swim around with entirely traditional controls (stick and buttons) then when you want to use the cursor, you let go of the left stick and move it around with the right stick/IR pointer. When you want to stop using the pointer, you go back to the left stick again.

    • In the brief walking segments, you will need to use the right stick/IR cursor to move around and interact with people, objects and animals. The traditional, left-stick movement only works underwater.

    • Remember that A is double-mapped to Classic A and R. When your thumb is busy manipulating the cursor with the right stick, you can use the R button to focus on a fish or whatever else you're interacting with without having to move off the right stick.

  • Is this the first Nunchuk hack? Having to add Nunchuk support from scratch forced me to rethink how button injection should work, so with this hack I'm finally retiring crediar's original button injector, which also proved useful when updating the previous Metroid: Other M hack with Nunchuk support, since a method of remapping the Wiimote itself was also necessary in that case. But I'm getting side-tracked. A nice bonus here is that if you're just diving (not interacting with anything), you can do all of that entirely on the solo Nunchuk.

  • Japan received two revisions of this game; the first was recalled after the discovery of a game-breaking bug in the aquarium feature. Owners were able to request a replacement copy with the bug fixed. By the time the game came to the US and Europe, this bug fix was already included. I didn't bother hacking the Japan Rev 0 release because I doubt there's enough people playing that rare, recalled Japanese version anyway.

Technical Notes​

This hack is made up of three codes, all within KPAD.

The first one applies to read_kpad_acc(). It's slightly different to previous accelerometer hacks in that instead of completely replacing the "real" accelerometer, here we only replace the function while the user is holding the shake button (Classic L/Nunchuk C). Otherwise, the accelerometer function runs normally. This is important for Nunchuk mode. The accelerometer data is used to determine the relative angle at which the sensor bar should be found, so to correctly find the sensor bar we need the real accelerometer data, not our faked version.

The second hack, which makes up the bulk of the total lines, applies to calc_dpd_variable(), a child of read_kpad_dpd(), the pointer function. Previous hacks applied directly to the parent function, but in this case where we still want the pointer to function normally sometimes, it was easier to apply it here, since this is after KPAD has determined whether or not the (real) IR pointer is currently in-use. This way, if KPAD says a real Wiimote is currently really pointed at the sensor bar, we can use that pointer data, but if not we can stick with our fake pointer instead. This hack is also responsible for managing which stick is currently "in charge" of the IR pointer and disabling the cursor visibility when in absolute mode. A lot going on in here.

As mentioned, this hack marks the debut of a new button injector, which is the third hack. It's still inside KPADRead and It still does all the same stuff, but it's also able to remap the Wiimote itself and it still manages to be slightly shorter than the original method. We're jumping in earlier here (before the button states have been processed into pressed/held/released), so we no longer have to manage all of that manually: injecting the values before they get to that code means the game handles processing the buttons for us, as if they were real Wiimote buttons.
Did you test it with a pal version as well? I just have a pal rev 1 and a ntsc rev 0 version of this game. Unfortunately the pal rev 1 is not working. I asked some friends about a ntsc rev 2 version. Maybe this will do the trick. I let you know. In the meantime: how about the game rhythm heaven fever and cc support? Should be relatively easy, it just have two buttons a and b to be pressed. It would be better to transfer them to ZR and ZL, because you have to press them simultaneously sometimes. Would be really great. It is one of those games: easy to understand, but so hard to perfect it
 
  • Like
Reactions: Maeson

Deleted member 688789

Well-Known Member
Newcomer
Joined
Jan 23, 2024
Messages
52
Trophies
0
XP
184
Did you test it with a pal version as well? I just have a pal rev 1 and a ntsc rev 0 version of this game. Unfortunately the pal rev 1 is not working. I asked some friends about a ntsc rev 2 version. Maybe this will do the trick. I let you know. In the meantime: how about the game rhythm heaven fever and cc support? Should be relatively easy, it just have two buttons a and b to be pressed. It would be better to transfer them to ZR and ZL, because you have to press them simultaneously sometimes. Would be really great. It is one of those games: easy to understand, but so hard to perfect it
I also have the same problem with my pal version.

Here is what I found out:

1. Saving is not a problem, it even saves before it stops with a black screen. The problem seems to be the cutscenes. If you load into a cutscene, the game crashes, but you can load into save files that are in the middle of a chapter and play the game normally.

2. The problem seems to be related to the hack, as I tried Xenoblade, Super Paper Mario and Heaven Rythm Feaver as a base and tried patching the normal game and the Wii U Virtual Console version of the game.

3. After patching the game, the game shrinks, which was not the case with Wario Land, which I also have no problems with (but I've only tested those two so far).

4. It works fine if you play it via usb loader gx on the vwii by enabling ocarina codes (I have not tried playing the pre-patched game via usb loader gx).
 
Last edited by Deleted member 688789,
  • Like
Reactions: tech_A_nina

SPAC3W4IFU

Member
Newcomer
Joined
Mar 16, 2022
Messages
24
Trophies
0
Age
23
Location
Nyonya
XP
179
Country
United States
Awesome! Glad to see you were able to implement the hack into Endless Ocean! I'll have to try it out later when I have the time. Appreciate the shoutout too.
 
  • Like
Reactions: Vague Rant

tech_A_nina

Active Member
Newcomer
Joined
Aug 1, 2018
Messages
31
Trophies
0
XP
261
Country
United Kingdom
I also have the same problem with my pal version.

Here is what I found out:
1. Saving is no problem in fact it saves before it stops working with a black screen. The problem seems to be the cut scenes. If you load into a cut scene the game crashes but you can load into save files which are in the middle of a chapter and play the game normally.

2. The problem seems to be related to the hack since I tried out Xenoblade, Super Paper Mario and Heaven Rythm Feaver as a base and I tried to patch the normal game and the wii u virtual console version of the game.

3. After patching the game, the game shrinks in size which didn't happen with wario land, with which I also have no problems (But I just tested out these two so far).

4. It works fine if played via usb loader gx on the wii u via activating ocarina codes. ( I haven't tried playing the pre-patched game via usb loader gx)
Thanks for your insights. I will try the following solution then: install an unpatched pal version of the game on the wii u via injection mode, save it after the first cut scene, delete the game and reinstall the patched version again. Then start the game from the previous save point. If this works it will be Christmas in October for me
 

Jayinem

Well-Known Member
Member
Joined
Dec 16, 2021
Messages
1,377
Trophies
1
XP
3,141
Country
United States
To me an underrated game that never came to America was Disaster Day of Crisis. I think it could use classic controller support. It's made by the devs of Xenoblade Chronicles
 

Deleted member 688789

Well-Known Member
Newcomer
Joined
Jan 23, 2024
Messages
52
Trophies
0
XP
184
Thanks for your insights. I will try the following solution then: install an unpatched pal version of the game on the wii u via injection mode, save it after the first cut scene, delete the game and reinstall the patched version again. Then start the game from the previous save point. If this works it will be Christmas in October for me

I am afraid you will encounter the problem with every cutscene, which are mostly at the start of every chapter.

Edit: The game also gets stuck if you go into some warp pipes.
 
Last edited by Deleted member 688789,

Feffe

Well-Known Member
Member
Joined
Oct 12, 2008
Messages
234
Trophies
1
XP
2,311
Country
Italy
@Vague Rant Thank you very much for Other M Nunchuck code! I can confirm it works on Dolphin, even with the missile in third-person hack.

If you have a WiiMote Plus and you map the Home button both to Point -> Hide as "toggle(HOME)" and to Motion Input -> Recenter -> HOME, you end up with a third/first person switcher which also recenter the pointer. Of course, this also works with any controller with built-in gyro, such as JoyCon.
 
  • Like
Reactions: Vague Rant

tech_A_nina

Active Member
Newcomer
Joined
Aug 1, 2018
Messages
31
Trophies
0
XP
261
Country
United Kingdom
I got super paper mario working (pal and ntsc version). But here is the thing: it only works like Vague_Rant said via gecko code insert on dolphin and on the wii via usb loader gx ocarina. The main.dol of the game can't be changed with WIT otherwise both versions will crash before the first cut scene comes. So unfortunately it's not possible to inject this patched game to the wii u to be working on the wii u gamepad. As far as I know the usb loader gx on the vWii does not support the wii u gamepad
 
  • Like
Reactions: leejaclane

leejaclane

Well-Known Member
Member
Joined
Jul 25, 2022
Messages
206
Trophies
1
XP
572
Country
United States
I got super paper mario working (pal and ntsc version). But here is the thing: it only works like Vague_Rant said via gecko code insert on dolphin and on the wii via usb loader gx ocarina. The main.dol of the game can't be changed with WIT otherwise both versions will crash before the first cut scene comes. So unfortunately it's not possible to inject this patched game to the wii u to be working on the wii u gamepad. As far as I know the usb loader gx on the vWii does not support the wii u gamepad
I think there's a way to use Wii VC to inject forwarders to homebrew that allows you to use the Wii U gamepad with USB Loader GX, at least with Nintendont, but I don't have any experience with that and I wouldn't know if Wii games are supported or not. I do know that when using said method you can only access the SD card though. There are probably topics somewhere on the forum about this, if you feel like searching for them -- I don't feel like doing it myself since I don't really care about using the Wii U gamepad as a classic controller.
 
  • Like
Reactions: tech_A_nina

Deleted member 688789

Well-Known Member
Newcomer
Joined
Jan 23, 2024
Messages
52
Trophies
0
XP
184
I want to thank you again for these codes! Many of these games I have given up or never started because of the controls, and thanks to your codes I am now really enjoying these games for the first time. One game that I also really like, but where the controls degrade the gaming experience is the first Epic Mickey. In my opinion a cc hack would really benefit this game.

Edit: Is shaking mapped in Super Paper Mario? I came across a few instances where I had to shake but couldn't.
 
Last edited by Deleted member 688789,
  • Like
Reactions: Vague Rant

Desastuto1513

New Member
Newbie
Joined
Oct 7, 2024
Messages
2
Trophies
0
Age
17
XP
6
Country
Brazil
Hello! I'm new in this, and i want to know if are possible to make a cc code for the game Sonic Riders Zero Gravity

Thanks
 

awesomeee

Active Member
Newcomer
Joined
Oct 7, 2024
Messages
34
Trophies
0
XP
52
Country
United States
Any chance Mario Strikers Charged could get a CC patch? Playing online would be fun on the GamePad!
Post automatically merged:

WiiWare game Fluidity could also use a Classic Controller patch to the WAD if possible, it would be fun to play it on the GamePad!
 
Last edited by awesomeee,

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,502
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,700
Country
Quote extravaganza!

Did you test it with a pal version as well? I just have a pal rev 1 and a ntsc rev 0 version of this game. Unfortunately the pal rev 1 is not working. I asked some friends about a ntsc rev 2 version. Maybe this will do the trick. I let you know. In the meantime: how about the game rhythm heaven fever and cc support? Should be relatively easy, it just have two buttons a and b to be pressed. It would be better to transfer them to ZR and ZL, because you have to press them simultaneously sometimes. Would be really great. It is one of those games: easy to understand, but so hard to perfect it
I also have the same problem with my pal version.

Here is what I found out:

1. Saving is not a problem, it even saves before it stops with a black screen. The problem seems to be the cutscenes. If you load into a cutscene, the game crashes, but you can load into save files that are in the middle of a chapter and play the game normally.

2. The problem seems to be related to the hack, as I tried Xenoblade, Super Paper Mario and Heaven Rythm Feaver as a base and tried patching the normal game and the Wii U Virtual Console version of the game.

3. After patching the game, the game shrinks, which was not the case with Wario Land, which I also have no problems with (but I've only tested those two so far).

4. It works fine if you play it via usb loader gx on the vwii by enabling ocarina codes (I have not tried playing the pre-patched game via usb loader gx).
I got super paper mario working (pal and ntsc version). But here is the thing: it only works like Vague_Rant said via gecko code insert on dolphin and on the wii via usb loader gx ocarina. The main.dol of the game can't be changed with WIT otherwise both versions will crash before the first cut scene comes. So unfortunately it's not possible to inject this patched game to the wii u to be working on the wii u gamepad. As far as I know the usb loader gx on the vWii does not support the wii u gamepad
Personally I tested USA Rev 2 and PAL Rev 1, but obviously from later posts you two have discovered it's not to do with the versions, but somehow related to the game not liking the main.dol patching. I don't think this would be something I could directly fix since the WSTRT code handler stuff is out of my hands, but I need to revisit Super Paper Mario anyway (I missed the shaking support, see later quote) so I'll have another look if there's anything I can do differently.

Just idly speculating, I might be able to do it with a direct IPS patch to the main.dol. The benefit of the cheat code approach (besides being much easier to apply if you're using a USB loader or similar) is that I essentially get as much code space as I need. Since I'm adding a ton of extra assembly code, I need quite a bit of free space which the code handler handles for me (so that's why they call it that!). An alternative would be to find some unused parts of the main.dol and replace them with my code instead of adding them to the main.dol with WSTRT. Or I could just clobber something that is used but that we can get away with not having. read_kpad_acc() and read_kpad_dpd() can be sacrificed entirely if we replace them with much shorter Classic-only versions. This would break Wiimote control, but since this would only be useful to people playing with CC support on Wii U GamePad, that doesn't matter too much. Still no guarantee it would work via injection, but when I come back to SPM to fix accelerometer, I'll give this a shot to see if it works any better for Wii VC.

To me an underrated game that never came to America was Disaster Day of Crisis. I think it could use classic controller support. It's made by the devs of Xenoblade Chronicles
Disaster: Day of Crisis was fun, I played quite a bit of that one. I do remember some sections are pretty action-heavy third-person shooter/light gun-style using the IR pointer which is never as good on a stick, but definitely this was a cool game that would be nice to open up to more control schemes. Not sure how much motion control there was, I think there's also Nunchuk-shaking stuff which I've never really figured out properly, so on the more challenging end, but I'll add it to my list.

I think there's a way to use Wii VC to inject forwarders to homebrew that allows you to use the Wii U gamepad with USB Loader GX, at least with Nintendont, but I don't have any experience with that and I wouldn't know if Wii games are supported or not. I do know that when using said method you can only access the SD card though. There are probably topics somewhere on the forum about this, if you feel like searching for them -- I don't feel like doing it myself since I don't really care about using the Wii U gamepad as a classic controller.
Unfortunately, this doesn't work for Wii USB loading. USB loaders rely on custom IOSes to redirect disc reads to a USB drive or SD card. The way that Wii VC injection works is that all games run under Nintendo's special Wii U-only IOS255, which has its own official disc redirection support to load games from NAND/USB. This is also partly why game compatibility is not 100%, because some games (ones never intended for release on the Wii U eShop) don't work with Nintendo's "official cIOS". But yeah, since you can't use "traditional" cIOSes, traditional USB loading doesn't work.

I want to thank you again for these codes! Many of these games I have given up or never started because of the controls, and thanks to your codes I am now really enjoying these games for the first time. One game that I also really like, but where the controls degrade the gaming experience is the first Epic Mickey. In my opinion a cc hack would really benefit this game.

Edit: Is shaking mapped in Super Paper Mario? I came across a few instances where I had to shake but couldn't.
Epic Mickey is another one that's been mentioned before. Like Need for Speed: ProStreet, it's one that I looked at and got stuck so I put it on my to-do list and moved on to other games. In that case, I got lost trying to figure out how to fake the Nunchuk accelerometer, since you have to shake that for one of the abilities Mickey has. I definitely plan to come back to it and try again, especially because understanding the Nunchuk is something I've come up against multiple times at this point without ever finding a "proper" solution (in Donkey Kong Jungle Beat, I modified Wiimote shakes to also count as Nunchuk shakes, and in DKC Returns, I ultimately found where the game judges whether or not you shook the Nunchuk and modified it there instead of actually simulating Nunchuk accelerometer stuff).

EDIT: And I totally missed shaking support in Super Paper Mario, I will have to come back to that one and fix it up.

Hello! I'm new in this, and i want to know if are possible to make a cc code for the game Sonic Riders Zero Gravity

Thanks
Sonic Riders has been mentioned before and it's one I took a look at but made absolutely no progress with. This is probably by far the most complicated one I've looked at so far, because it needs the Classic Controller remapped to behave like a GameCube pad. In Wii games, there's one (technically two) libraries that handle reading the Wiimote/Nunchuk/Classic Controller, and a completely unrelated library handles reading the GameCube controller. That makes having a Classic Controller behave like a solo Wiimote/Nunchuk a much simpler prospect than behaving like a controller from a completely separate library. I still want to figure this one out, but it's definitely tough.

Any chance Mario Strikers Charged could get a CC patch? Playing online would be fun on the GamePad!
Post automatically merged:

WiiWare game Fluidity could also use a Classic Controller patch to the WAD if possible, it would be fun to play it on the GamePad!
Mario Strikers Charged is 100% a game I didn't play because of the motion controls. I really liked how the GameCube one controlled and it's a shame they didn't add an option like that for the sequel. Like a lot of games, the Nunchuk accelerometer is the most obvious barrier assuming nothing else goes wrong, since that's not something I've figured out a reliable solution for, but I'd really like to play that one with traditional controls.

Fluidity is a cool idea, I loved that game. While it's of course impossible to truly match the original and its tilt sensitivity, it would definitely be nice to have it playable on a stick. Would like to see if this could be done, onto the list.

While we're on the subject of fluids ...



deblogo.jpg


Blue Tongue's de Blob was one of the few third-party Wii games to really break through Nintendo's commercial domination of the console. The fact that they managed to do so on Nintendo's home turf, the 3D platformer, makes that all the more impressive. With its environment-painting gameplay sometimes compared at launch to Super Mario Sunshine, in the years since, parallels have also been drawn to Splatoon, putting this game in some pretty good company. That said, once you got past the wildly creative gameplay, visuals and soundtrack, there was one major criticism: the poor use of motion controls. Players had to shake the Wiimote to jump, in a platformer. While this would be fixed in the excellent sequel, the original de Blob had to wait for HD ports on later consoles to get a jump button. Let's rectify that oversight.

USAEuropeScandinaviaJapanKorea

  1. Code:
    Classic Controller Support/Nunchuk Mod [Vague Rant]
    C20BC650 00000002
    28000001 41820008
    28000002 00000000
    C21479FC 00000002
    28000001 41820008
    28000002 00000000
    C2147E08 00000002
    28040001 41820008
    28040002 00000000
    C22531F0 00000002
    28000001 41820008
    28000002 00000000
    C22A3BD8 00000002
    28150001 41820008
    28150002 00000000
    C2253230 00000003
    801F0018 28000001
    C05F1184 41820008
    C05F1190 00000000
    C22532FC 00000003
    801F0018 28000001
    C05F1188 41820008
    C05F1194 00000000
    04419884 48000010
    C2067278 00000007
    C03E04AC 801E0004
    70000080 41820024
    48000009 C059999A
    7C6802A6 C0230000
    2C0F0003 4082000C
    FC200850 D0230000
    60000000 00000000
    C2068248 0000001F
    80030000 70000040
    418200E8 80030004
    70000040 41820010
    38000000 90030020
    90030024 38000002
    9803005E 9421FFF0
    7C0802A6 90010014
    90610008 48000015
    800811DC 3FAAAAAB
    3C23D70A 3F800000
    7CA802A6 90A1000C
    81850000 7D8803A6
    4E800021 2C030001
    80610008 80A1000C
    C0450004 40820008
    EC4200B2 C0650008
    C0030020 C023006C
    FC211024 48000039
    D0030020 C0030024
    C0230070 FC200850
    48000025 D0030024
    38000000 9003006C
    90030070 80010014
    7C0803A6 38210010
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    9421FFC0 00000000
    C2068B74 00000013
    4E800421 C01E0014
    4800000D 3F000000
    00000000 7CA802A6
    C0450000 809EFFA0
    80BEFFA4 80DEFFA8
    80FE0004 39000002
    FC001040 48000029
    FC000050 39000001
    FC001040 48000019
    909EFFA0 90BEFFA4
    90DEFFA8 90FE0004
    48000038 41800024
    7CE34039 40820008
    7CA54378 7C844378
    7D0340F8 7CC61838
    7CE74378 48000010
    7CE34039 41820008
    7CE74278 4E800020
    60000000 00000000
    C206922C 00000022
    2C040001 40820038
    71000800 41820008
    68E70880 71000200
    41820008 68E70220
    71000100 41820008
    68E70110 71000010
    418200C8 68E70810
    480000C0 2C040002
    408200B8 71200800
    41820008 60E78000
    71200001 41820008
    60E70008 71204000
    41820008 60E70004
    71200002 41820008
    60E70001 71208000
    41820008 60E70002
    71200010 41820008
    60E70800 71200040
    41820008 60E70080
    71200008 41820008
    60E70020 71200020
    41820008 60E70800
    71202000 41820008
    60E74000 71200200
    41820008 60E70044
    71200080 41820008
    60E72000 71200004
    41820008 60E70400
    71200400 41820008
    60E70010 71201000
    41820008 60E71000
    801FFFFC 7CE70278
    7CE83B78 70E09FFF
    60000000 00000000
    C206924C 00000004
    901F0004 70000020
    41820010 801FFFFC
    68000800 901FFFFC
    60000000 00000000
  2. Code:
    Classic Controller Support/Nunchuk Mod [Vague Rant]
    C20BC6D0 00000002
    28000001 41820008
    28000002 00000000
    C2147A7C 00000002
    28000001 41820008
    28000002 00000000
    C2147E88 00000002
    28040001 41820008
    28040002 00000000
    C2253270 00000002
    28000001 41820008
    28000002 00000000
    C22A3C58 00000002
    28150001 41820008
    28150002 00000000
    C22532B0 00000003
    801F0018 28000001
    C05F1184 41820008
    C05F1190 00000000
    C225337C 00000003
    801F0018 28000001
    C05F1188 41820008
    C05F1194 00000000
    04419904 48000010
    C2067278 00000007
    C03E04AC 801E0004
    70000080 41820024
    48000009 C059999A
    7C6802A6 C0230000
    2C0F0003 4082000C
    FC200850 D0230000
    60000000 00000000
    C2068248 0000001F
    80030000 70000040
    418200E8 80030004
    70000040 41820010
    38000000 90030020
    90030024 38000002
    9803005E 9421FFF0
    7C0802A6 90010014
    90610008 48000015
    800811DC 3FAAAAAB
    3C23D70A 3F800000
    7CA802A6 90A1000C
    81850000 7D8803A6
    4E800021 2C030001
    80610008 80A1000C
    C0450004 40820008
    EC4200B2 C0650008
    C0030020 C023006C
    FC211024 48000039
    D0030020 C0030024
    C0230070 FC200850
    48000025 D0030024
    38000000 9003006C
    90030070 80010014
    7C0803A6 38210010
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    9421FFC0 00000000
    C2068B74 00000013
    4E800421 C01E0014
    4800000D 3F000000
    00000000 7CA802A6
    C0450000 809EFFA0
    80BEFFA4 80DEFFA8
    80FE0004 39000002
    FC001040 48000029
    FC000050 39000001
    FC001040 48000019
    909EFFA0 90BEFFA4
    90DEFFA8 90FE0004
    48000038 41800024
    7CE34039 40820008
    7CA54378 7C844378
    7D0340F8 7CC61838
    7CE74378 48000010
    7CE34039 41820008
    7CE74278 4E800020
    60000000 00000000
    C206922C 00000022
    2C040001 40820038
    71000800 41820008
    68E70880 71000200
    41820008 68E70220
    71000100 41820008
    68E70110 71000010
    418200C8 68E70810
    480000C0 2C040002
    408200B8 71200800
    41820008 60E78000
    71200001 41820008
    60E70008 71204000
    41820008 60E70004
    71200002 41820008
    60E70001 71208000
    41820008 60E70002
    71200010 41820008
    60E70800 71200040
    41820008 60E70080
    71200008 41820008
    60E70020 71200020
    41820008 60E70800
    71202000 41820008
    60E74000 71200200
    41820008 60E70044
    71200080 41820008
    60E72000 71200004
    41820008 60E70400
    71200400 41820008
    60E70010 71201000
    41820008 60E71000
    801FFFFC 7CE70278
    7CE83B78 70E09FFF
    60000000 00000000
    C206924C 00000004
    901F0004 70000020
    41820010 801FFFFC
    68000800 901FFFFC
    60000000 00000000
  3. Code:
    Classic Controller Support/Nunchuk Mod [Vague Rant]
    C20BC6D0 00000002
    28000001 41820008
    28000002 00000000
    C2147A5C 00000002
    28000001 41820008
    28000002 00000000
    C2147E68 00000002
    28040001 41820008
    28040002 00000000
    C2253250 00000002
    28000001 41820008
    28000002 00000000
    C22A3C38 00000002
    28150001 41820008
    28150002 00000000
    C2253290 00000003
    801F0018 28000001
    C05F1184 41820008
    C05F1190 00000000
    C225335C 00000003
    801F0018 28000001
    C05F1188 41820008
    C05F1194 00000000
    044198E4 48000010
    C2067278 00000007
    C03E04AC 801E0004
    70000080 41820024
    48000009 C059999A
    7C6802A6 C0230000
    2C0F0003 4082000C
    FC200850 D0230000
    60000000 00000000
    C2068248 0000001F
    80030000 70000040
    418200E8 80030004
    70000040 41820010
    38000000 90030020
    90030024 38000002
    9803005E 9421FFF0
    7C0802A6 90010014
    90610008 48000015
    800811DC 3FAAAAAB
    3C23D70A 3F800000
    7CA802A6 90A1000C
    81850000 7D8803A6
    4E800021 2C030001
    80610008 80A1000C
    C0450004 40820008
    EC4200B2 C0650008
    C0030020 C023006C
    FC211024 48000039
    D0030020 C0030024
    C0230070 FC200850
    48000025 D0030024
    38000000 9003006C
    90030070 80010014
    7C0803A6 38210010
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    9421FFC0 00000000
    C2068B74 00000013
    4E800421 C01E0014
    4800000D 3F000000
    00000000 7CA802A6
    C0450000 809EFFA0
    80BEFFA4 80DEFFA8
    80FE0004 39000002
    FC001040 48000029
    FC000050 39000001
    FC001040 48000019
    909EFFA0 90BEFFA4
    90DEFFA8 90FE0004
    48000038 41800024
    7CE34039 40820008
    7CA54378 7C844378
    7D0340F8 7CC61838
    7CE74378 48000010
    7CE34039 41820008
    7CE74278 4E800020
    60000000 00000000
    C206922C 00000022
    2C040001 40820038
    71000800 41820008
    68E70880 71000200
    41820008 68E70220
    71000100 41820008
    68E70110 71000010
    418200C8 68E70810
    480000C0 2C040002
    408200B8 71200800
    41820008 60E78000
    71200001 41820008
    60E70008 71204000
    41820008 60E70004
    71200002 41820008
    60E70001 71208000
    41820008 60E70002
    71200010 41820008
    60E70800 71200040
    41820008 60E70080
    71200008 41820008
    60E70020 71200020
    41820008 60E70800
    71202000 41820008
    60E74000 71200200
    41820008 60E70044
    71200080 41820008
    60E72000 71200004
    41820008 60E70400
    71200400 41820008
    60E70010 71201000
    41820008 60E71000
    801FFFFC 7CE70278
    7CE83B78 70E09FFF
    60000000 00000000
    C206924C 00000004
    901F0004 70000020
    41820010 801FFFFC
    68000800 901FFFFC
    60000000 00000000
  4. Code:
    Classic Controller Support/Nunchuk Mod [Vague Rant]
    C20BC660 00000002
    28000001 41820008
    28000002 00000000
    C2147C3C 00000002
    28000001 41820008
    28000002 00000000
    C2148048 00000002
    28040001 41820008
    28040002 00000000
    C2254F80 00000002
    28000001 41820008
    28000002 00000000
    C22A5968 00000002
    28150001 41820008
    28150002 00000000
    C2254FC0 00000003
    801F0018 28000001
    C05F1184 41820008
    C05F1190 00000000
    C225508C 00000003
    801F0018 28000001
    C05F1188 41820008
    C05F1194 00000000
    0441B614 48000010
    C2067278 00000007
    C03E04AC 801E0004
    70000080 41820024
    48000009 C059999A
    7C6802A6 C0230000
    2C0F0003 4082000C
    FC200850 D0230000
    60000000 00000000
    C2068248 0000001F
    80030000 70000040
    418200E8 80030004
    70000040 41820010
    38000000 90030020
    90030024 38000002
    9803005E 9421FFF0
    7C0802A6 90010014
    90610008 48000015
    8008121C 3FAAAAAB
    3C23D70A 3F800000
    7CA802A6 90A1000C
    81850000 7D8803A6
    4E800021 2C030001
    80610008 80A1000C
    C0450004 40820008
    EC4200B2 C0650008
    C0030020 C023006C
    FC211024 48000039
    D0030020 C0030024
    C0230070 FC200850
    48000025 D0030024
    38000000 9003006C
    90030070 80010014
    7C0803A6 38210010
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    9421FFC0 00000000
    C2068B74 00000013
    4E800421 C01E0014
    4800000D 3F000000
    00000000 7CA802A6
    C0450000 809EFFA0
    80BEFFA4 80DEFFA8
    80FE0004 39000002
    FC001040 48000029
    FC000050 39000001
    FC001040 48000019
    909EFFA0 90BEFFA4
    90DEFFA8 90FE0004
    48000038 41800024
    7CE34039 40820008
    7CA54378 7C844378
    7D0340F8 7CC61838
    7CE74378 48000010
    7CE34039 41820008
    7CE74278 4E800020
    60000000 00000000
    C206922C 00000022
    2C040001 40820038
    71000800 41820008
    68E70880 71000200
    41820008 68E70220
    71000100 41820008
    68E70110 71000010
    418200C8 68E70810
    480000C0 2C040002
    408200B8 71200800
    41820008 60E78000
    71200001 41820008
    60E70008 71204000
    41820008 60E70004
    71200002 41820008
    60E70001 71208000
    41820008 60E70002
    71200010 41820008
    60E70800 71200040
    41820008 60E70080
    71200008 41820008
    60E70020 71200020
    41820008 60E70800
    71202000 41820008
    60E74000 71200200
    41820008 60E70044
    71200080 41820008
    60E72000 71200004
    41820008 60E70400
    71200400 41820008
    60E70010 71201000
    41820008 60E71000
    801FFFFC 7CE70278
    7CE83B78 70E09FFF
    60000000 00000000
    C206924C 00000004
    901F0004 70000020
    41820010 801FFFFC
    68000800 901FFFFC
    60000000 00000000
  5. Code:
    Classic Controller Support/Nunchuk Mod [Vague Rant]
    C20BC5E0 00000002
    28000001 41820008
    28000002 00000000
    C2147B6C 00000002
    28000001 41820008
    28000002 00000000
    C2147F78 00000002
    28040001 41820008
    28040002 00000000
    C2254E70 00000002
    28000001 41820008
    28000002 00000000
    C22A5858 00000002
    28150001 41820008
    28150002 00000000
    C2254EB0 00000003
    801F0018 28000001
    C05F1184 41820008
    C05F1190 00000000
    C2254F7C 00000003
    801F0018 28000001
    C05F1188 41820008
    C05F1194 00000000
    0441B504 48000010
    C206729C 00000007
    C03E04AC 801E0004
    70000080 41820024
    48000009 C059999A
    7C6802A6 C0230000
    2C0F0003 4082000C
    FC200850 D0230000
    60000000 00000000
    C206826C 0000001F
    80030000 70000040
    418200E8 80030004
    70000040 41820010
    38000000 90030020
    90030024 38000002
    9803005E 9421FFF0
    7C0802A6 90010014
    90610008 48000015
    800811AC 3FAAAAAB
    3C23D70A 3F800000
    7CA802A6 90A1000C
    81850000 7D8803A6
    4E800021 2C030001
    80610008 80A1000C
    C0450004 40820008
    EC4200B2 C0650008
    C0030020 C023006C
    FC211024 48000039
    D0030020 C0030024
    C0230070 FC200850
    48000025 D0030024
    38000000 9003006C
    90030070 80010014
    7C0803A6 38210010
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    9421FFC0 00000000
    C2068B98 00000013
    4E800421 C01E0014
    4800000D 3F000000
    00000000 7CA802A6
    C0450000 809EFFA0
    80BEFFA4 80DEFFA8
    80FE0004 39000002
    FC001040 48000029
    FC000050 39000001
    FC001040 48000019
    909EFFA0 90BEFFA4
    90DEFFA8 90FE0004
    48000038 41800024
    7CE34039 40820008
    7CA54378 7C844378
    7D0340F8 7CC61838
    7CE74378 48000010
    7CE34039 41820008
    7CE74278 4E800020
    60000000 00000000
    C2069250 00000022
    2C040001 40820038
    71000800 41820008
    68E70880 71000200
    41820008 68E70220
    71000100 41820008
    68E70110 71000010
    418200C8 68E70810
    480000C0 2C040002
    408200B8 71200800
    41820008 60E78000
    71200001 41820008
    60E70008 71204000
    41820008 60E70004
    71200002 41820008
    60E70001 71208000
    41820008 60E70002
    71200010 41820008
    60E70800 71200040
    41820008 60E70080
    71200008 41820008
    60E70020 71200020
    41820008 60E70800
    71202000 41820008
    60E74000 71200200
    41820008 60E70044
    71200080 41820008
    60E72000 71200004
    41820008 60E70400
    71200400 41820008
    60E70010 71201000
    41820008 60E71000
    801FFFFC 7CE70278
    7CE83B78 70E09FFF
    60000000 00000000
    C2069270 00000004
    901F0004 70000020
    41820010 801FFFFC
    68000800 901FFFFC
    60000000 00000000

Button Mapping​

Once again, we've got two control schemes here, one for the Classic Controller and another for Nunchuk. Don't get used to this, I swear I just happen to have hit a run of games where Nunchuk support is worthwhile. I don't intend on having dedicated Nunchuk controls in hacks going forward unless they would very obviously benefit.

This one is a unique case in that it already had Nunchuk support to start with, but with the aforementioned Wiimote shake to jump. Since that had to be mapped to a button for Classic Controller, Nunchuk also got the benefits. The Nunchuk control scheme is mostly the same as always, so I'll only note buttons that have changed here.

Wii Remote & NunchukWii Remote & NunchukGame Function
Wiimote AWiimote PlusMenus
Confirm
Gameplay
Interact
Show Compass (hold)
Wiimote A (hold)Wiimote 1Gameplay
Show Compass
Wiimote PlusWiimote 2Gameplay
Pause
Wiimote ShakeWiimote AGameplay
Jump
Paint Landmarks

Now, on to the Classic Controller layout.

Wii Remote & NunchukClassic ControllerGame Function
Wiimote HomeHome
Remember to hold R to enable the IR pointer
Open Home Menu
Wiimote D-Pad UpD-Pad UpNot used?
Wiimote D-Pad DownD-Pad Down
R
Gameplay
First-Person View
Wiimote D-Pad Left/RightD-Pad Left/Right
Right Stick Left/Right
Gameplay
Rotate Camera
Wiimote AA
Y
Menus
Confirm
Gameplay
Interact
Show Compass (hold)
Wiimote A (hold)XGameplay
Show Compass
Wiimote BZRGameplay
Brake
Drop (air)
Wiimote 1 & 2Not mappedNot used?
Wiimote PlusPlusGameplay
Pause
Wiimote MinusMinusMenus
Back/Cancel
Gameplay
Skip Text/Cutscenes
Wiimote ShakeBGameplay
Jump
Paint Landmarks
Wiimote IR PointerR (hold to enable)
Left Stick
Menus
Navigation
Gameplay
Look Around (first person)
Nunchuk StickLeft StickMenus
Navigation
Gameplay
Movement
Nunchuk CLGameplay
Re-Center Camera
Nunchuk ZZLGameplay
Lock-On
Nunchuk ShakeNot mapped
Use Wiimote Shake (B)
Gameplay
Paint Landmarks

General Notes​

  • The Wiimote A (hold) buttons (Nunchuk 1, Classic X) require some explanation.

    • In the original control scheme for de Blob, you could display a Compass of surrounding objectives by holding down the A button while playing. In de Blob 2, the Wiimote A button was changed to Jump, so the Compass function was moved down to Wiimote 1. Since that button is not the easiest to press during gameplay, the Compass was turned into a feature that you toggled on/off with 1 instead of being a button you hold down to enable the Compass and release to hide it again.

    • This hack attempts to replicate that functionality by making one button (Nunchuk 1, Classic X) into a toggle, like a Caps Lock key for the A button. If you press 1/X, you're now holding A until you press 1/X again to release it. This simulates the Compass behavior from de Blob 2.

    • However, this also means you're holding down the A button permanently. That's fine in gameplay, but since the A button is also used to proceed in text prompts, confirm choices in menus, etc., it's not ideal, so you should try to remember to toggle "hold A" off again by pressing 1/X when you need the normal use of the A button back.

    • If the side effects are an issue for you, don't use this feature. The normal A button is mapped to Nunchuk Plus/Classic Y and Classic A, so you can have the normal "hold button to show Compass" setup as originally featured in de Blob 1 by just using one of those buttons.

  • Having A (Confirm) on Plus in the Nunchuk layout sounds weird, but this game already uses Minus for Cancel/Back, so it's really not as jarring as it might seem. And the benefit of having a jump button on A I feel outweighs any weirdness this causes in the menus.

  • The Classic layout takes some inspiration from the modern HD ports and some just preserving the rough Wii layout (e.g. Wiimote A on Classic A) for a middle-ground that I think works very well. Particularly notable is the double mapping of A to Y, so you can comfortably hold Y (Compass) while jumping with B. This mirrors the original Wii layout where you can hold Wiimote A while shaking the Wiimote to jump. You also get camera controls on the right stick, which helps in a game famed for its difficult camera.

Technical Notes​

This game has five separate damn Nunchuk checks which I had to track down to get Classic input working. That's the first five C2 codes, which now check for either Nunchuk of Classic Controller.

The next two C2 codes handle redirecting Nunchuk analog stick reads to the Classic Controller stick.

Following that is an 04 code, once again patching the Home Button Menu update() function to prevent it re-initing the Classic Controller every 64 frames as was done in Super Paper Mario and some other game, was it Animal Crossing?

Next C2 is a modification to read_kpad_acc() which injects a "different" shake every time you press the designated shake button, i.e. one up, one down, repeat. This isn't necessary for the jumping (either direction is fine), but there are times when you need to shake the Wiimote to fill a landmark with paint and it doesn't like you shaking in the same direction every time.

The next C2 is a pretty standard pointer hack for read_kpad_dpd(), with the one unique feature that the pointer is only enabled while you're holding the designated pointer button (R). The pointer is fairly optional in this game; it's used to look around in first-person mode and can optionally be used for menu navigation. Since the first-person camera is activated by holding a button, it made sense to tie the pointer to that same button.

Getting there, another C2 code to read_kpad_stick() handles emulating D-Pad left/right on the right analog stick for camera manipulation using a slightly modified version of the usual stick emulation feature in hacks like Metroid: Other M. Nothing too tricky going on there.

The last two C2s are in KPADRead() and handle the button mapping. The first is the new button injector which debuted in Endless Ocean and the second is handling that A button Caps Lock feature. If you press the "hold A" button, the A button value gets stored into a variable that gets ored into all button reads. If you press it again, the bit is cleared and A is no longer held.
 
Last edited by Vague Rant,

awesomeee

Active Member
Newcomer
Joined
Oct 7, 2024
Messages
34
Trophies
0
XP
52
Country
United States
Fluidity is a cool idea, I loved that game. While it's of course impossible to truly match the original and its tilt sensitivity, it would definitely be nice to have it playable on a stick. Would like to see if this could be done, onto the list
Ooh, nice! Some control concepts would be:
Y: Gather water (ability)
B: Jump water up
Up D pad: Spray water out (Ability later in the game)
Left stick: Move water
The right and left trigger buttons could be used for extra jumping / water ability buttons
I think gecko codes can be applied to a WiiWare wad if extracted, but im not sure.
 

Desastuto1513

New Member
Newbie
Joined
Oct 7, 2024
Messages
2
Trophies
0
Age
17
XP
6
Country
Brazil
I only have the wii family edition, so to play with more precision the classic controller has always my choice, and i don't now any software able to swap the inputs of the gc controller to cc controller.
 

awesomeee

Active Member
Newcomer
Joined
Oct 7, 2024
Messages
34
Trophies
0
XP
52
Country
United States
@Vague Rant I tried doing the unpacking wads thing for fluidity, but i cant seem to find a main.dol file for the game, is there any other way a gecko code / hack could be applied to it? (If the hack ever comes out lol)
Post automatically merged:

So basically the wiiware games are halted right now i assume since no way to really patch the game besides a usb loader, which makes wiivc not possible :(
 

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,502
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,700
Country
@Vague Rant I tried doing the unpacking wads thing for fluidity, but i cant seem to find a main.dol file for the game, is there any other way a gecko code / hack could be applied to it? (If the hack ever comes out lol)
Should definitely be doable but it will be a bit more work than for disc games. You'd have to unpack the WAD and then the resulting 00000001.app is an LZX-compressed main.dol. You can unpack that with a command line tool like lzx.exe which you can find in the download for the RiiConnect24 Auto WiiWare Patcher.

So the steps would be something like:
  • unpack WAD to get 00000001.app
  • copy 00000001.app and lzx.exe into the same directory
  • open the Windows command prompt in that directory (I just assume everybody is on Windows; anybody on other OSes can probably use WINE or find an alternative LZX decompressor)
  • type or paste lzx -d 00000001.app in the command prompt to decompress the file; this will replace the existing 00000001.app with a decompressed version
  • maybe rename the file to main.dol just to make things easier on yourself
  • do the general wstrt stuff with the decompressed main.dol and .gct file
  • rename the output file back to 00000001.app
  • compress it again with lzx -evb 00000001.app
  • copy your new 00000001.app back to the rest of your extracted WAD contents (replacing the original if it's still there)
  • rebuild the WAD file
At that point you should have a WAD with whatever Gecko codes you applied appended to the main binary and hopefully it'll work when installed on Wii/U.
 
  • Like
Reactions: tech_A_nina

tech_A_nina

Active Member
Newcomer
Joined
Aug 1, 2018
Messages
31
Trophies
0
XP
261
Country
United Kingdom
@Vague Rant Could you also make a short tutorial for wii disc games like for the wads please? I mean you already did it partially on the first page, but I don't know the first steps like extracting the original control code out of a main.dol to modify it. Is there a command line for that or what program are you using? There are a lot of nerds and geeks on gbatemp who would like to participate in that cc hacking project and maybe in some years it will be possible to play all Wii games with a cc hack. That would be really great. I would also like to get deeper in that topic. So your tutorial would be a big help. Thanks a lot
 
  • Like
Reactions: Vague Rant

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: Here is the thing about Democrats vs Republicans, they are all the same, tell you one thing then...