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.
I looked into this and have now updated the Metroid: Other M post with a new code adding Nunchuk support.@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.
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?
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.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.
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?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
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.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.
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
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
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
Wii Remote | Nunchuk | Game Function |
---|---|---|
Minus | Z | Auto-Swim |
Shake | C | Various |
Pointer | Stick | Movement (underwater) |
Wii Remote | Classic Controller | Game Function |
---|---|---|
Home | Home Remember to point with the right stick on Classic Controller | Open/Close Home Button Menu |
D-Pad | D-Pad | Tool Menu Navigation |
A | A/R | Menus Confirm Gameplay Interact |
B | B/ZR | Menus Cancel Gameplay Swim |
Plus | Plus | Focus Zoom In |
Minus | Minus/ZL | Gameplay Auto-Swim Focus Zoom Out |
1 | Y | Open Map |
2 | X | Change View |
Shake | L | Various |
IR Pointer | Left Stick Right Stick | Menus Navigation Gameplay Movement (underwater) Cursor Movement |
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.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.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 itI 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)
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
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
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 Remote Nunchuk Game Function Minus Z Auto-Swim Shake C Various Pointer Stick Movement (underwater)
Wii Remote Classic Controller Game Function Home Home
Remember to point with the right stick on Classic ControllerOpen/Close Home Button Menu D-Pad D-Pad Tool Menu Navigation A A/R Menus
Confirm
Gameplay
InteractB B/ZR Menus
Cancel
Gameplay
SwimPlus Plus Focus
Zoom InMinus Minus/ZL Gameplay
Auto-Swim
Focus
Zoom Out1 Y Open Map 2 X Change View Shake L Various IR Pointer Left Stick
Right StickMenus
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 toread_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 tocalc_dpd_variable()
, a child ofread_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 insideKPADRead
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.