Hacking New Classic Controller Hacks

  • Thread starter Thread starter Vague Rant
  • Start date Start date
  • Views Views 244,445
  • Replies Replies 687
  • Likes Likes 42
@proboscis2 Building off of your current functions, remapping controls and adding IR support, this is what I currently have built for Pikmin 2
$Classic Controller Support V 0.4 WIP [New Play Control! Pikmin 2 USA] [Proboscis-2, Awesome]

C218DD5C 00000023
901F0068 811F0060
48000061 80DF0000
7D083378 911F0000
7D0840F8 80DF0008
7CC84038 911F0008
811F0064 4800003D
80DF0004 7D083378
911F0004 71060040
41820010 38C00002
98DF005E 480000C4
71060080 418200BC
88DF005E 68C60002
98DF005E 480000AC
38E00000 71060800
41820008 60E78000
71060200 41820008
60E70008 71060004
41820008 60E70002
71060010 41820008
60E70800 71061000
41820008 60E70004
71060040 41820008
60E70400 71060020
41820008 60E71000
71060001 41820008
60E70200 71064000
41820008 60E70180
71062000 41820008
60E70004 71060080
41820008 60E72000
71060400 41820008
60E70090 71060008
41820008 60E74000
7CE83B78 4E800020
60000000 00000000
c24fd120 00000003
2C000001 4182000C
C0230104 48000008
C0230074 00000000
c24fd13c 00000003
2C000001 4182000C
C0230108 48000008
C0230078 00000000
C24dbd28 00000003
2C000002 40820008
38000001 2c000001
60000000 00000000
C24dbc18 00000003
2C000002 40820008
38000001 2c000001
60000000 00000000
C20098c4 00000003
2C000002 40820008
38000001 2c000001
60000000 00000000
c24dbcf0 00000003
2C000002 40820008
38000001 2c000001
60000000 00000000
c24dbbe8 00000003
2C000002 40820008
38000001 2c000001
60000000 00000000
c200972c 00000003
2C000002 40820008
38000001 2c000001
60000000 00000000
C218C764 00000029
90010024 2C040000
4082013C 8803005C
2C000002 40820130
48000021 80193BA4
3FAAAAAB 3C54FDF4
00000000 00000000
3DCCCCCD 3F800000
7CA802A6 90A1000C
5727083C 38E7000C
C0030074 FC000210
C0230078 FC200A10
C083006C FC802210
C0A30070 FCA02A10
FC00082A FC84282A
FC00202A C0450014
FC001040 4180000C
38C0012C 48000014
7CC53AAE 28060000
408100B4 38C6FFFF
7CC53B2E 38C00002
98C3005E 81850000
7D8803A6 4E800021
2C030001 7FE3FB78
80A1000C C0450004
40820008 EC4200B2
C0650008 C0030020
C0230074 C083006C
FC21202A FC211024
48000039 D0030020
C0030024 C0230078
FC200850 C0830070
FC802050 FC21202A
48000019 D0030024
80010024 7C0803A6
38210020 4E800020
FC0100FA C0250018
FC000800 4180000C
FC000890 48000014
FC200850 FC000800
41810008 FC000890
4E800020 00000000
0401215c 60000000
Changes:
Remapped controls a little (NOT COMPLETE)
Added IR support on right stick
This code is working for me on dolphin but the IR support on right stick doesn't work.
 
This code is working for me on dolphin but the IR support on right stick doesn't work.
Normal behavior, This happens with some codes. For some reason sometimes the IR emulation won’t work properly with the codes in dolphin

Instead map your controller right stick to the actual IR sensor for dolphin to work around this
 
  • Like
Reactions: MysticStarlight
I figured it out how to play Super Mario Galaxy with classic controller hack and additional gecko cheats, playable through USB Loader GX :D Here the steps to have it working:



1/ use redump md5sum verified Super Mario Galaxy backup

2/ convert it into wbfs with update partition removed

3/ use RiivolutionIsoBuilder to apply Super Hackio Classic Controller xml Riivolution patch:
RiivolutionIsoBuilder.exe <ISO Path> <Riivolution XML file path> <Output ISO/WBFS path>
4/ create a gct file with the cheat codes you want to add to the patched wbfs (note: USB Loader GX can not boot the Riivolution patched iso with Ocarina cheat codes applied via USB Loader GX)

5/ extract patched wfbs with Wiimm's ISO Tools (wit):
wit x SMG-CC-patched.wbfs SMG-CC-patched

6/ add gecko cheat code file RMGE01.gct with Wiimm's SZS Toolset:
wstrt patch SMG-CC-patched\sys\main.dol --add-section RMGE01.gct
6/ rebuild patched wbfs image:
wit copy SMG-CC-patched SMG-CC-patchedgecko.wbfs

You now have classic controller patched wbfs image with gecko cheats of choice built in the wbfs image. This now works smoothly with USB Loader GX (note: disable Ocarina in the game settings prior launching the game). It works amazing, when you disconnect classic controller and re-attach the nunchuk, the default controls work again as well. Below the cheat codes I built in the wbfs image. They all work without issues... only the Moon Jump code will only work with the nunchuk being attached.


RMGE01
Super Mario Galaxy (USA)

Infinite Air
043014C8 60000000

Infinite Coins
C23458B0 00000002
388003E7 9083000C
7C832378 00000000

Infinite Health
042B1C30 60000000

Infinite Lives
04F63CF0 00630000

Infinite Time
0438E65C 60000000
0434B600 60000000

Infinite Star Bits
C23B1F44 00000002
3800270F 90030008
7C030378 00000000
C23B2590 00000002
388003E7 90830040
7C832378 00000000

Moon Jump
C22E9D40 00000003
3C808049 807C02D8
90645E94 7F83E378
60000000 00000000
C22AD38C 00000005
3C808062 8084D340
54840529 41820010
3C808049 80845E94
909F02D8 7FE3FB78
60000000 00000000


If someone is able to explain how I can convert the Moon Jump cheat to have the jump button A and B of the classic controller being picked up, we have the perfect patched SMG game
:D
 
Last edited by skx7,
Hi ^_^

I have a question, and it was if it would be possible to add nunchuk support for Endless Ocean 2 like in the first game.
It's really annoying having to keep the B button pressed all the time hmrpf :glare:

That's all, thanks :shy:
 
Hi ^_^

I have a question, and it was if it would be possible to add nunchuk support for Endless Ocean 2 like in the first game.
It's really annoying having to keep the B button pressed all the time hmrpf :glare:

That's all, thanks :shy:
You can play this game with a classic controller if it suits you more.
 
Nice, I'm glad you eventually got DK Returns running on the GamePad, super awesome to hear that it works. Thanks for letting me know about Wario as well. The broken controls like that are usually a symptom of the Wii game not correctly detecting the Classic Controller; the same thing happens with injections of Excite Truck unless you enable the "Force Classic Controller connected" checkbox in the injector tool. I wonder if Wario could be fixed with that? If not, it's out of my hands, it's an issue with the Classic Controller emulation in Wii VC injection where it's just not compatible with some games. Unfortunately, that's the case for New Super Mario Bros. Wii, injected versions don't recognize the Classic Controller. Silent Hill definitely sounds like it's on the more complicated end of the spectrum, since it has multiple different hand motions that have to be recognized, so that's probably on the less-likely end, sorry.


That sounds like a great idea. It seems relatively feasible. I think the major complication would be remapping the inputs on the Wii Remote itself, since you'd need a different layout (A to jump, B to shoot, etc.). To date, I haven't done any remapping of original game inputs, only adding additional mappings on the Classic Controller, so I would need to figure out how to do that, but it does sound cool. I assume you mean retaining the original IR pointer for aiming, right? So you'd move on the Nunchuk, shoot/jump on B/A, maybe Morph Ball on Nunchuk C like in Prime, lock on camera on Nunchuk Z ... Concentration could either use the original motion controls or be mapped on Wiimote Minus or something, since the game doesn't use Minus anyway as far as I can tell. This is definitely an interesting one. As always, no promises, but my curiosity is piqued.



View attachment 462240

Animal Crossing: City Folk aka Let's Go to the City is the third game in Nintendo's Animal Crossing life sim series. The main addition to this entry was Wii Speak support the titular city, expanding on the small town areas of previous entries. This perhaps falls into the "controversial Wii sequel" series, with many complaints about the lack of improvements over the earlier games and the loss of NES games, since Nintendo were now selling those on the Wii Shop Channel instead of giving them away for free. Still, though not revolutionary, City Folk has the same charming atmosphere as the rest of the franchise. And at least it's a real Animal Crossing game. Cough, Amiibo Festival.
Pointer on Left Stick

USAUSA (Rev 1)EuropeEurope (Rev 1)Japan (Rev 1)Korea (Rev 1)

  1. Code:
    Classic Controller Support (Pointer on Left Stick) v1.1 [Vague Rant, crediar]
    C20FA624 00000003
    2C030002 40820008
    3863FFFF 3803FF04
    60000000 00000000
    C20FA68C 00000003
    2C040002 40820008
    3884FFFF 20640001
    60000000 00000000
    042CE160 48000010
    C2443CE4 00000003
    2C000001 4182000C
    C0230104 48000008
    C0230074 00000000
    C2443D00 00000003
    2C000001 4182000C
    C0230108 48000008
    C0230078 00000000
    C23BE750 0000001C
    88A40028 2C050002
    408200CC 88A3005E
    2C050002 4C820020
    9421FFF0 7C0802A6
    9001000C 90610008
    3CC0803A 60C6D338
    7CC803A6 4E800021
    2C030001 80610008
    48000005 7CA802A6
    C0450084 40820008
    EC4200B2 C0650088
    C0030020 C023006C
    FC211024 48000039
    D0030020 C0030024
    C0230070 FC200850
    48000025 D0030024
    38000000 9003006C
    90030070 8001000C
    7C0803A6 38210010
    4E800020 FC0100FA
    C025008C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    3FAAAAAB 3C75C28F
    3F800000 9421FFC0
    60000000 00000000
    C23BF784 00000026
    901F0068 811F0060
    48000061 80DF0000
    7D083378 911F0000
    7D0840F8 80DF0008
    7CC84038 911F0008
    811F0064 4800003D
    80DF0004 7D083378
    911F0004 71060040
    41820010 38C00002
    98DF005E 480000E0
    71060080 418200D8
    88DF005E 68C60002
    98DF005E 480000C8
    38E00000 71060800
    41820008 60E78000
    71060001 41820008
    60E70008 71064000
    41820008 60E70004
    71060002 41820008
    60E70001 71068000
    41820008 60E70002
    71060010 41820008
    60E70800 71060040
    41820008 60E70400
    71060008 41820008
    60E71080 71060020
    41820008 60E70180
    71062000 41820008
    60E70080 71060200
    41820008 60E72000
    71060080 41820008
    60E71040 71060004
    4182000C 60E70050
    48000004 71060400
    41820008 60E70090
    71061000 41820008
    60E70200 7CE83B78
    4E800020 00000000
  2. Code:
    Classic Controller Support (Pointer on Left Stick) v1.1 [Vague Rant, crediar]
    C20FA624 00000003
    2C030002 40820008
    3863FFFF 3803FF04
    60000000 00000000
    C20FA68C 00000003
    2C040002 40820008
    3884FFFF 20640001
    60000000 00000000
    042CE284 48000010
    C2443F4C 00000003
    2C000001 4182000C
    C0230104 48000008
    C0230074 00000000
    C2443F68 00000003
    2C000001 4182000C
    C0230108 48000008
    C0230078 00000000
    C23BE9B8 0000001C
    88A40028 2C050002
    408200CC 88A3005E
    2C050002 4C820020
    9421FFF0 7C0802A6
    9001000C 90610008
    3CC0803A 60C6D5A0
    7CC803A6 4E800021
    2C030001 80610008
    48000005 7CA802A6
    C0450084 40820008
    EC4200B2 C0650088
    C0030020 C023006C
    FC211024 48000039
    D0030020 C0030024
    C0230070 FC200850
    48000025 D0030024
    38000000 9003006C
    90030070 8001000C
    7C0803A6 38210010
    4E800020 FC0100FA
    C025008C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    3FAAAAAB 3C75C28F
    3F800000 9421FFC0
    60000000 00000000
    C23BF9EC 00000026
    901F0068 811F0060
    48000061 80DF0000
    7D083378 911F0000
    7D0840F8 80DF0008
    7CC84038 911F0008
    811F0064 4800003D
    80DF0004 7D083378
    911F0004 71060040
    41820010 38C00002
    98DF005E 480000E0
    71060080 418200D8
    88DF005E 68C60002
    98DF005E 480000C8
    38E00000 71060800
    41820008 60E78000
    71060001 41820008
    60E70008 71064000
    41820008 60E70004
    71060002 41820008
    60E70001 71068000
    41820008 60E70002
    71060010 41820008
    60E70800 71060040
    41820008 60E70400
    71060008 41820008
    60E71080 71060020
    41820008 60E70180
    71062000 41820008
    60E70080 71060200
    41820008 60E72000
    71060080 41820008
    60E71040 71060004
    4182000C 60E70050
    48000004 71060400
    41820008 60E70090
    71061000 41820008
    60E70200 7CE83B78
    4E800020 00000000
  3. Code:
    Classic Controller Support (Pointer on Left Stick) v1.1 [Vague Rant, crediar]
    C20FA784 00000003
    2C030002 40820008
    3863FFFF 3803FF04
    60000000 00000000
    C20FA7EC 00000003
    2C040002 40820008
    3884FFFF 20640001
    60000000 00000000
    042CDFB0 48000010
    C2443CC8 00000003
    2C000001 4182000C
    C0230104 48000008
    C0230074 00000000
    C2443CE4 00000003
    2C000001 4182000C
    C0230108 48000008
    C0230078 00000000
    C23BE5A0 0000001C
    88A40028 2C050002
    408200CC 88A3005E
    2C050002 4C820020
    9421FFF0 7C0802A6
    9001000C 90610008
    3CC0803A 60C6D188
    7CC803A6 4E800021
    2C030001 80610008
    48000005 7CA802A6
    C0450084 40820008
    EC4200B2 C0650088
    C0030020 C023006C
    FC211024 48000039
    D0030020 C0030024
    C0230070 FC200850
    48000025 D0030024
    38000000 9003006C
    90030070 8001000C
    7C0803A6 38210010
    4E800020 FC0100FA
    C025008C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    3FAAAAAB 3C75C28F
    3F800000 9421FFC0
    60000000 00000000
    C23BF5D4 00000026
    901F0068 811F0060
    48000061 80DF0000
    7D083378 911F0000
    7D0840F8 80DF0008
    7CC84038 911F0008
    811F0064 4800003D
    80DF0004 7D083378
    911F0004 71060040
    41820010 38C00002
    98DF005E 480000E0
    71060080 418200D8
    88DF005E 68C60002
    98DF005E 480000C8
    38E00000 71060800
    41820008 60E78000
    71060001 41820008
    60E70008 71064000
    41820008 60E70004
    71060002 41820008
    60E70001 71068000
    41820008 60E70002
    71060010 41820008
    60E70800 71060040
    41820008 60E70400
    71060008 41820008
    60E71080 71060020
    41820008 60E70180
    71062000 41820008
    60E70080 71060200
    41820008 60E72000
    71060080 41820008
    60E71040 71060004
    4182000C 60E70050
    48000004 71060400
    41820008 60E70090
    71061000 41820008
    60E70200 7CE83B78
    4E800020 00000000
  4. Code:
    Classic Controller Support (Pointer on Left Stick) v1.1 [Vague Rant, crediar]
    C20FA784 00000003
    2C030002 40820008
    3863FFFF 3803FF04
    60000000 00000000
    C20FA7EC 00000003
    2C040002 40820008
    3884FFFF 20640001
    60000000 00000000
    042CE0D4 48000010
    C2443F30 00000003
    2C000001 4182000C
    C0230104 48000008
    C0230074 00000000
    C2443F4C 00000003
    2C000001 4182000C
    C0230108 48000008
    C0230078 00000000
    C23BE808 0000001C
    88A40028 2C050002
    408200CC 88A3005E
    2C050002 4C820020
    9421FFF0 7C0802A6
    9001000C 90610008
    3CC0803A 60C6D3F0
    7CC803A6 4E800021
    2C030001 80610008
    48000005 7CA802A6
    C0450084 40820008
    EC4200B2 C0650088
    C0030020 C023006C
    FC211024 48000039
    D0030020 C0030024
    C0230070 FC200850
    48000025 D0030024
    38000000 9003006C
    90030070 8001000C
    7C0803A6 38210010
    4E800020 FC0100FA
    C025008C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    3FAAAAAB 3C75C28F
    3F800000 9421FFC0
    60000000 00000000
    C23BF83C 00000026
    901F0068 811F0060
    48000061 80DF0000
    7D083378 911F0000
    7D0840F8 80DF0008
    7CC84038 911F0008
    811F0064 4800003D
    80DF0004 7D083378
    911F0004 71060040
    41820010 38C00002
    98DF005E 480000E0
    71060080 418200D8
    88DF005E 68C60002
    98DF005E 480000C8
    38E00000 71060800
    41820008 60E78000
    71060001 41820008
    60E70008 71064000
    41820008 60E70004
    71060002 41820008
    60E70001 71068000
    41820008 60E70002
    71060010 41820008
    60E70800 71060040
    41820008 60E70400
    71060008 41820008
    60E71080 71060020
    41820008 60E70180
    71062000 41820008
    60E70080 71060200
    41820008 60E72000
    71060080 41820008
    60E71040 71060004
    4182000C 60E70050
    48000004 71060400
    41820008 60E70090
    71061000 41820008
    60E70200 7CE83B78
    4E800020 00000000
  5. Code:
    Classic Controller Support (Pointer on Left Stick) v1.1 [Vague Rant, crediar]
    C20FA8DC 00000003
    2C030002 40820008
    3863FFFF 3803FF04
    60000000 00000000
    C20FA944 00000003
    2C040002 40820008
    3884FFFF 20640001
    60000000 00000000
    042CE300 48000010
    C2443E80 00000003
    2C000001 4182000C
    C0230104 48000008
    C0230074 00000000
    C2443E9C 00000003
    2C000001 4182000C
    C0230108 48000008
    C0230078 00000000
    C23BE8F4 0000001C
    88A40028 2C050002
    408200CC 88A3005E
    2C050002 4C820020
    9421FFF0 7C0802A6
    9001000C 90610008
    3CC0803A 60C6D4DC
    7CC803A6 4E800021
    2C030001 80610008
    48000005 7CA802A6
    C0450084 40820008
    EC4200B2 C0650088
    C0030020 C023006C
    FC211024 48000039
    D0030020 C0030024
    C0230070 FC200850
    48000025 D0030024
    38000000 9003006C
    90030070 8001000C
    7C0803A6 38210010
    4E800020 FC0100FA
    C025008C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    3FAAAAAB 3C75C28F
    3F800000 9421FFC0
    60000000 00000000
    C23BF928 00000026
    901F0068 811F0060
    48000061 80DF0000
    7D083378 911F0000
    7D0840F8 80DF0008
    7CC84038 911F0008
    811F0064 4800003D
    80DF0004 7D083378
    911F0004 71060040
    41820010 38C00002
    98DF005E 480000E0
    71060080 418200D8
    88DF005E 68C60002
    98DF005E 480000C8
    38E00000 71060800
    41820008 60E78000
    71060001 41820008
    60E70008 71064000
    41820008 60E70004
    71060002 41820008
    60E70001 71068000
    41820008 60E70002
    71060010 41820008
    60E70800 71060040
    41820008 60E70400
    71060008 41820008
    60E71080 71060020
    41820008 60E70180
    71062000 41820008
    60E70080 71060200
    41820008 60E72000
    71060080 41820008
    60E71040 71060004
    4182000C 60E70050
    48000004 71060400
    41820008 60E70090
    71061000 41820008
    60E70200 7CE83B78
    4E800020 00000000
  6. Code:
    Classic Controller Support (Pointer on Left Stick) v1.1 [Vague Rant, crediar]
    C20FA6A4 00000003
    2C030002 40820008
    3863FFFF 3803FF04
    60000000 00000000
    C20FA70C 00000003
    2C040002 40820008
    3884FFFF 20640001
    60000000 00000000
    042CF840 48000010
    C244D8C4 00000003
    2C000001 4182000C
    C0230104 48000008
    C0230074 00000000
    C244D8E0 00000003
    2C000001 4182000C
    C0230108 48000008
    C0230078 00000000
    C23C72FC 0000001C
    88A40028 2C050002
    408200CC 88A3005E
    2C050002 4C820020
    9421FFF0 7C0802A6
    9001000C 90610008
    3CC0803B 60C65EE4
    7CC803A6 4E800021
    2C030001 80610008
    48000005 7CA802A6
    C0450084 40820008
    EC4200B2 C0650088
    C0030020 C023006C
    FC211024 48000039
    D0030020 C0030024
    C0230070 FC200850
    48000025 D0030024
    38000000 9003006C
    90030070 8001000C
    7C0803A6 38210010
    4E800020 FC0100FA
    C025008C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    3FAAAAAB 3C75C28F
    3F800000 9421FFC0
    60000000 00000000
    C23C8330 00000026
    901F0068 811F0060
    48000061 80DF0000
    7D083378 911F0000
    7D0840F8 80DF0008
    7CC84038 911F0008
    811F0064 4800003D
    80DF0004 7D083378
    911F0004 71060040
    41820010 38C00002
    98DF005E 480000E0
    71060080 418200D8
    88DF005E 68C60002
    98DF005E 480000C8
    38E00000 71060800
    41820008 60E78000
    71060001 41820008
    60E70008 71064000
    41820008 60E70004
    71060002 41820008
    60E70001 71068000
    41820008 60E70002
    71060010 41820008
    60E70800 71060040
    41820008 60E70400
    71060008 41820008
    60E71080 71060020
    41820008 60E70180
    71062000 41820008
    60E70080 71060200
    41820008 60E72000
    71060080 41820008
    60E71040 71060004
    4182000C 60E70050
    48000004 71060400
    41820008 60E70090
    71061000 41820008
    60E70200 7CE83B78
    4E800020 00000000
Pointer on Right Stick

USAUSA (Rev 1)EuropeEurope (Rev 1)Japan (Rev 1)Korea (Rev 1)

  1. Code:
    Classic Controller Support (Pointer on Right Stick) v1.1 [Vague Rant, crediar]
    C20FA624 00000003
    2C030002 40820008
    3863FFFF 3803FF04
    60000000 00000000
    C20FA68C 00000003
    2C040002 40820008
    3884FFFF 20640001
    60000000 00000000
    042CE160 48000010
    C2443CE4 00000003
    2C000001 4182000C
    C0230104 48000008
    C0230074 00000000
    C2443D00 00000003
    2C000001 4182000C
    C0230108 48000008
    C0230078 00000000
    C23BE750 0000001A
    88A40028 2C050002
    408200C0 88A3005E
    2C050002 4C820020
    9421FFF0 7C0802A6
    9001000C 90610008
    3CC0803A 60C6D338
    7CC803A6 4E800021
    2C030001 80610008
    48000005 7CA802A6
    C0450078 40820008
    EC4200B2 C065007C
    C0030020 C0230074
    FC211024 4800002D
    D0030020 C0030024
    C0230078 FC200850
    48000019 D0030024
    8001000C 7C0803A6
    38210010 4E800020
    FC0100FA C0250080
    FC000800 4180000C
    FC000890 48000014
    FC200850 FC000800
    41810008 FC000890
    4E800020 3FAAAAAB
    3C75C28F 3F800000
    9421FFC0 00000000
    C23BF784 00000026
    901F0068 811F0060
    48000061 80DF0000
    7D083378 911F0000
    7D0840F8 80DF0008
    7CC84038 911F0008
    811F0064 4800003D
    80DF0004 7D083378
    911F0004 71060040
    41820010 38C00002
    98DF005E 480000E0
    71060080 418200D8
    88DF005E 68C60002
    98DF005E 480000C8
    38E00000 71060800
    41820008 60E78000
    71060001 41820008
    60E70008 71064000
    41820008 60E70004
    71060002 41820008
    60E70001 71068000
    41820008 60E70002
    71060010 41820008
    60E70800 71060040
    41820008 60E70400
    71060008 41820008
    60E71080 71060020
    41820008 60E70180
    71062000 41820008
    60E70080 71060200
    41820008 60E72000
    71060080 41820008
    60E71040 71060004
    4182000C 60E70050
    48000004 71060400
    41820008 60E70090
    71061000 41820008
    60E70200 7CE83B78
    4E800020 00000000
  2. Code:
    Classic Controller Support (Pointer on Right Stick) v1.1 [Vague Rant, crediar]
    C20FA624 00000003
    2C030002 40820008
    3863FFFF 3803FF04
    60000000 00000000
    C20FA68C 00000003
    2C040002 40820008
    3884FFFF 20640001
    60000000 00000000
    042CE284 48000010
    C2443F4C 00000003
    2C000001 4182000C
    C0230104 48000008
    C0230074 00000000
    C2443F68 00000003
    2C000001 4182000C
    C0230108 48000008
    C0230078 00000000
    C23BE9B8 0000001A
    88A40028 2C050002
    408200C0 88A3005E
    2C050002 4C820020
    9421FFF0 7C0802A6
    9001000C 90610008
    3CC0803A 60C6D5A0
    7CC803A6 4E800021
    2C030001 80610008
    48000005 7CA802A6
    C0450078 40820008
    EC4200B2 C065007C
    C0030020 C0230074
    FC211024 4800002D
    D0030020 C0030024
    C0230078 FC200850
    48000019 D0030024
    8001000C 7C0803A6
    38210010 4E800020
    FC0100FA C0250080
    FC000800 4180000C
    FC000890 48000014
    FC200850 FC000800
    41810008 FC000890
    4E800020 3FAAAAAB
    3C75C28F 3F800000
    9421FFC0 00000000
    C23BF9EC 00000026
    901F0068 811F0060
    48000061 80DF0000
    7D083378 911F0000
    7D0840F8 80DF0008
    7CC84038 911F0008
    811F0064 4800003D
    80DF0004 7D083378
    911F0004 71060040
    41820010 38C00002
    98DF005E 480000E0
    71060080 418200D8
    88DF005E 68C60002
    98DF005E 480000C8
    38E00000 71060800
    41820008 60E78000
    71060001 41820008
    60E70008 71064000
    41820008 60E70004
    71060002 41820008
    60E70001 71068000
    41820008 60E70002
    71060010 41820008
    60E70800 71060040
    41820008 60E70400
    71060008 41820008
    60E71080 71060020
    41820008 60E70180
    71062000 41820008
    60E70080 71060200
    41820008 60E72000
    71060080 41820008
    60E71040 71060004
    4182000C 60E70050
    48000004 71060400
    41820008 60E70090
    71061000 41820008
    60E70200 7CE83B78
    4E800020 00000000
  3. Code:
    Classic Controller Support (Pointer on Right Stick) v1.1 [Vague Rant, crediar]
    C20FA784 00000003
    2C030002 40820008
    3863FFFF 3803FF04
    60000000 00000000
    C20FA7EC 00000003
    2C040002 40820008
    3884FFFF 20640001
    60000000 00000000
    042CDFB0 48000010
    C2443CC8 00000003
    2C000001 4182000C
    C0230104 48000008
    C0230074 00000000
    C2443CE4 00000003
    2C000001 4182000C
    C0230108 48000008
    C0230078 00000000
    C23BE5A0 0000001A
    88A40028 2C050002
    408200C0 88A3005E
    2C050002 4C820020
    9421FFF0 7C0802A6
    9001000C 90610008
    3CC0803A 60C6D188
    7CC803A6 4E800021
    2C030001 80610008
    48000005 7CA802A6
    C0450078 40820008
    EC4200B2 C065007C
    C0030020 C0230074
    FC211024 4800002D
    D0030020 C0030024
    C0230078 FC200850
    48000019 D0030024
    8001000C 7C0803A6
    38210010 4E800020
    FC0100FA C0250080
    FC000800 4180000C
    FC000890 48000014
    FC200850 FC000800
    41810008 FC000890
    4E800020 3FAAAAAB
    3C75C28F 3F800000
    9421FFC0 00000000
    C23BF5D4 00000026
    901F0068 811F0060
    48000061 80DF0000
    7D083378 911F0000
    7D0840F8 80DF0008
    7CC84038 911F0008
    811F0064 4800003D
    80DF0004 7D083378
    911F0004 71060040
    41820010 38C00002
    98DF005E 480000E0
    71060080 418200D8
    88DF005E 68C60002
    98DF005E 480000C8
    38E00000 71060800
    41820008 60E78000
    71060001 41820008
    60E70008 71064000
    41820008 60E70004
    71060002 41820008
    60E70001 71068000
    41820008 60E70002
    71060010 41820008
    60E70800 71060040
    41820008 60E70400
    71060008 41820008
    60E71080 71060020
    41820008 60E70180
    71062000 41820008
    60E70080 71060200
    41820008 60E72000
    71060080 41820008
    60E71040 71060004
    4182000C 60E70050
    48000004 71060400
    41820008 60E70090
    71061000 41820008
    60E70200 7CE83B78
    4E800020 00000000
  4. Code:
    Classic Controller Support (Pointer on Right Stick) v1.1 [Vague Rant, crediar]
    C20FA784 00000003
    2C030002 40820008
    3863FFFF 3803FF04
    60000000 00000000
    C20FA7EC 00000003
    2C040002 40820008
    3884FFFF 20640001
    60000000 00000000
    042CE0D4 48000010
    C2443F30 00000003
    2C000001 4182000C
    C0230104 48000008
    C0230074 00000000
    C2443F4C 00000003
    2C000001 4182000C
    C0230108 48000008
    C0230078 00000000
    C23BE808 0000001A
    88A40028 2C050002
    408200C0 88A3005E
    2C050002 4C820020
    9421FFF0 7C0802A6
    9001000C 90610008
    3CC0803A 60C6D3F0
    7CC803A6 4E800021
    2C030001 80610008
    48000005 7CA802A6
    C0450078 40820008
    EC4200B2 C065007C
    C0030020 C0230074
    FC211024 4800002D
    D0030020 C0030024
    C0230078 FC200850
    48000019 D0030024
    8001000C 7C0803A6
    38210010 4E800020
    FC0100FA C0250080
    FC000800 4180000C
    FC000890 48000014
    FC200850 FC000800
    41810008 FC000890
    4E800020 3FAAAAAB
    3C75C28F 3F800000
    9421FFC0 00000000
    C23BF83C 00000026
    901F0068 811F0060
    48000061 80DF0000
    7D083378 911F0000
    7D0840F8 80DF0008
    7CC84038 911F0008
    811F0064 4800003D
    80DF0004 7D083378
    911F0004 71060040
    41820010 38C00002
    98DF005E 480000E0
    71060080 418200D8
    88DF005E 68C60002
    98DF005E 480000C8
    38E00000 71060800
    41820008 60E78000
    71060001 41820008
    60E70008 71064000
    41820008 60E70004
    71060002 41820008
    60E70001 71068000
    41820008 60E70002
    71060010 41820008
    60E70800 71060040
    41820008 60E70400
    71060008 41820008
    60E71080 71060020
    41820008 60E70180
    71062000 41820008
    60E70080 71060200
    41820008 60E72000
    71060080 41820008
    60E71040 71060004
    4182000C 60E70050
    48000004 71060400
    41820008 60E70090
    71061000 41820008
    60E70200 7CE83B78
    4E800020 00000000
  5. Code:
    Classic Controller Support (Pointer on Right Stick) v1.1 [Vague Rant, crediar]
    C20FA8DC 00000003
    2C030002 40820008
    3863FFFF 3803FF04
    60000000 00000000
    C20FA944 00000003
    2C040002 40820008
    3884FFFF 20640001
    60000000 00000000
    042CE300 48000010
    C2443E80 00000003
    2C000001 4182000C
    C0230104 48000008
    C0230074 00000000
    C2443E9C 00000003
    2C000001 4182000C
    C0230108 48000008
    C0230078 00000000
    C23BE8F4 0000001A
    88A40028 2C050002
    408200C0 88A3005E
    2C050002 4C820020
    9421FFF0 7C0802A6
    9001000C 90610008
    3CC0803A 60C6D4DC
    7CC803A6 4E800021
    2C030001 80610008
    48000005 7CA802A6
    C0450078 40820008
    EC4200B2 C065007C
    C0030020 C0230074
    FC211024 4800002D
    D0030020 C0030024
    C0230078 FC200850
    48000019 D0030024
    8001000C 7C0803A6
    38210010 4E800020
    FC0100FA C0250080
    FC000800 4180000C
    FC000890 48000014
    FC200850 FC000800
    41810008 FC000890
    4E800020 3FAAAAAB
    3C75C28F 3F800000
    9421FFC0 00000000
    C23BF928 00000026
    901F0068 811F0060
    48000061 80DF0000
    7D083378 911F0000
    7D0840F8 80DF0008
    7CC84038 911F0008
    811F0064 4800003D
    80DF0004 7D083378
    911F0004 71060040
    41820010 38C00002
    98DF005E 480000E0
    71060080 418200D8
    88DF005E 68C60002
    98DF005E 480000C8
    38E00000 71060800
    41820008 60E78000
    71060001 41820008
    60E70008 71064000
    41820008 60E70004
    71060002 41820008
    60E70001 71068000
    41820008 60E70002
    71060010 41820008
    60E70800 71060040
    41820008 60E70400
    71060008 41820008
    60E71080 71060020
    41820008 60E70180
    71062000 41820008
    60E70080 71060200
    41820008 60E72000
    71060080 41820008
    60E71040 71060004
    4182000C 60E70050
    48000004 71060400
    41820008 60E70090
    71061000 41820008
    60E70200 7CE83B78
    4E800020 00000000
  6. Code:
    Classic Controller Support (Pointer on Right Stick) v1.1[Vague Rant, crediar]
    C20FA6A4 00000003
    2C030002 40820008
    3863FFFF 3803FF04
    60000000 00000000
    C20FA70C 00000003
    2C040002 40820008
    3884FFFF 20640001
    60000000 00000000
    042CF840 48000010
    C244D8C4 00000003
    2C000001 4182000C
    C0230104 48000008
    C0230074 00000000
    C244D8E0 00000003
    2C000001 4182000C
    C0230108 48000008
    C0230078 00000000
    C23C72FC 0000001A
    88A40028 2C050002
    408200C0 88A3005E
    2C050002 4C820020
    9421FFF0 7C0802A6
    9001000C 90610008
    3CC0803B 60C65EE4
    7CC803A6 4E800021
    2C030001 80610008
    48000005 7CA802A6
    C0450078 40820008
    EC4200B2 C065007C
    C0030020 C0230074
    FC211024 4800002D
    D0030020 C0030024
    C0230078 FC200850
    48000019 D0030024
    8001000C 7C0803A6
    38210010 4E800020
    FC0100FA C0250080
    FC000800 4180000C
    FC000890 48000014
    FC200850 FC000800
    41810008 FC000890
    4E800020 3FAAAAAB
    3C75C28F 3F800000
    9421FFC0 00000000
    C23C8330 00000026
    901F0068 811F0060
    48000061 80DF0000
    7D083378 911F0000
    7D0840F8 80DF0008
    7CC84038 911F0008
    811F0064 4800003D
    80DF0004 7D083378
    911F0004 71060040
    41820010 38C00002
    98DF005E 480000E0
    71060080 418200D8
    88DF005E 68C60002
    98DF005E 480000C8
    38E00000 71060800
    41820008 60E78000
    71060001 41820008
    60E70008 71064000
    41820008 60E70004
    71060002 41820008
    60E70001 71068000
    41820008 60E70002
    71060010 41820008
    60E70800 71060040
    41820008 60E70400
    71060008 41820008
    60E71080 71060020
    41820008 60E70180
    71062000 41820008
    60E70080 71060200
    41820008 60E72000
    71060080 41820008
    60E71040 71060004
    4182000C 60E70050
    48000004 71060400
    41820008 60E70090
    71061000 41820008
    60E70200 7CE83B78
    4E800020 00000000

Button Mapping​

[TABLE=full]
[TR]
[th]Wii Remote & Nunchuk[/th][th]Classic Controller[/th][th]Game Function[/th]
[/TR]
[TR]
[td]Wiimote Home[/td][td]Home
Home Menu works as normal but remember to enable the pointer with L and use the correct stick for your code[/td][td]Open/Close Home Button Menu[/td]
[/TR]
[TR]
[td]Wiimote D-Pad[/td][td]D-Pad[/td][td]Up: Change Camera
Left/Right: Change Tool
Down: Put Away Tool[/td]
[/TR]
[TR]
[td]Wiimote A[/td][td]A[/td][td]Confirm
Action[/td]
[/TR]
[TR]
[td]Wiimote B[/td][td]B[/td][td]Cancel
Run
Pick Up Items[/td]
[/TR]
[TR]
[td]Wiimote Plus[/td][td]Plus
ZR[/td][td]Open/Close Map
Next Tab[/td]
[/TR]
[TR]
[td]Wiimote Minus[/td][td]X
ZL[/td][td]Open/Close Inventory
Previous Tab[/td]
[/TR]
[TR]
[td]Wiimote 1[/td][td]Minus[/td][td]Take Photo[/td]
[/TR]
[TR]
[td]Wiimote 2[/td][td]Y[/td][td]Open/Close Photos[/td]
[/TR]
[TR]
[td]Nunchuk Analog Stick[/td][td]Left Stick[/td][td]Movement[/td]
[/TR]
[TR]
[td]Nunchuk C[/td][td]Not mapped
(use A instead)[/td][td]Confirm
Action[/td]
[/TR]
[TR]
[td]Nunchuk Z[/td][td]R[/td][td]Cancel
Run
Pick Up Items[/td]
[/TR]
[TR]
[td]Wiimote IR Pointer[/td][td]L (toggle)
Left Stick or Right Stick
(depends on code used)[/td][td]Move Cursor[/td]
[/TR]
[/TABLE]

General Notes​

  • Two code varieties for this one, choose whichever feels more natural to you. IR aiming is pretty important to City Folk, with all inventory manipulation being IR-based. If you choose the Left Stick code, the Left Stick toggles between movement and IR input, i.e. you can't move and point at the same time. However, there's rarely any advantage to this, as there's no real multitasking possible. If you choose the Right Stick code, all you can really do is move the stupid cursor around while you run. Whee. If you want my opinion, use the Left Stick code.

  • Where possible, I try to "intelligently" enable/disable the pointer mode. The player can always toggle it on/off with the L button, but some other actions (opening the Inventory, Map or Photos menus) will automatically enable pointer mode for you. Try to remember to exit these menus using the same button you used to open them: e.g. you can press X to open the inventory (pointer turns on automatically) then X again to close it (pointer turns off automatically). If you instead open the menu with X then close it with B, you'll still be in pointer mode, because you didn't close with X. In this case, you should press L to disable the pointer manually. I'm trying here.

  • If the IR pointer movement is too fast/slow for you, you can adjust it by editing the float 0.015 (3C75C28F) about halfway through the code. You could adjust it down to 0.01 (3C23D70A) for a slower cursor, or bump it up to 0.02 (3CA3D70A) for a faster cursor, or whatever other number feels appropriate. There's plenty of hex float converters online, I linked one in a previous post somewhere.

  • It's worth knowing that this game supports USB keyboards. Using an on-screen keyboard with an IR pointer is sort of acceptable, but using an on-screen keyboard with a pointer you control using an analog stick is a bad time. If you have a USB keyboard handy it will hugely improve the experience if you're looking to do any typing (e.g. writing letters or chatting with other players over network play). It doesn't have to be a special Wii keyboard or anything; I use a standard PC Logitech Unifying USB dongle in my Wii. Failing that, if you use the phone in your house you can change the keyboard settings to use an old-school mobile keyboard which you might find easier to use with an analog stick.

  • I got a specific request (elsewhere, not in this thread) for an option where the Right Stick pointer is always enabled, but personally I think it's kind of bad. The game changes a lot of things about how it works when you're pointing at the screen, which don't make sense when playing on a traditional controller. For example, pressing A now makes you walk toward the cursor instead of interacting with whatever is in front of you. Pointing at the screen also causes the HUD to display at all times, which means the screen is cluttered with on-screen buttons the whole time you're playing. If anybody here wants this version, I guess ask for it but I find it offers an inferior experience to either of the codes above and shouldn't really be considered an equal option against those.

Changelog​

  • v1.1 corrects the cursor speed; thanks to @RiceKryzpi for noticing this!

Technical Notes​

This game has that same Super Paper Mario issue where the Home Button Menu causes a Classic Controller re-init every 64 frames. I solved it the same way, disabling getInfoAsync() from running. Thinking about it more since last time, I suspect this probably has something to do with checking things like the battery level that displays in the HBM. I do still allow getInfoAsync() to run when you first enter the HBM in both this and Paper Mario, so it's not like the HBM is running blind but if you just leave it open it might not correctly track the battery level or something pointless like that, I don't care.

Briefly, the code is: C2 to allow Classic Controller's left stick to be read for movement, C2 to disable the bad EXT error, 04 disable getInfoAsync(), C2 and C2 actually redirect analog reads to the Classic when needed, C2 custom read_kpad_dpd() (Left Stick code has an additional feature to prevent character movement while in pointer mode) and then the button injector gets inserted into KPADRead() in the last C2.

Credits​

  • mogchamp from the AC: Wiimmfi Folk Discord for advising on the button layout
Can anyone help illuminate what I'm doing wrong to get this working for me?
I have Animal Crossing City Folk (RUUE01).wbfs on my SD card. I put the Rev01 code onto a .txt. file into the txtcodes folder at the root of my SD card. I create a .gct through USB Loader GX. I load AC:CF through USB Loader GX with Ocarina enabled. Here, one of two things happen; either it black screens and I have to power off the wii with the power button on the console or the game doesn't even recognize that the code is active. I've been trying for hours to get this to work and it just won't. Any help is appreciated.
 
Can someone test Donkey Jungle Beat - the code for classic controller support for the USA release shows the wiimote warning to next go into black screen unresponsive Wii. That code is v1.1 - does someone has the the v1.0 initial code? I think the updated code has some kind of bug. Thanks
 
Can someone test Donkey Jungle Beat - the code for classic controller support for the USA release shows the wiimote warning to next go into black screen unresponsive Wii. That code is v1.1 - does someone has the the v1.0 initial code? I think the updated code has some kind of bug. Thanks

I noticed this as well. Could never get it to work.
 
  • Like
Reactions: skx7
Yep, Forgotten Sands definitely uses Metafortress. Sadly, that one was never bypassed as far as I know, so it's not possible to modify that game at all currently. It's a shame, it was a game I immediately thought would be great for a Classic Controller hack, but bypassing Metafortress is a genius-level task. The Kirby fixes are over 1,300 individual patches. Fixing up Dolphin's bug just now was 7 patches for me. crediar is unmatched.


Huh, that's definitely odd. Pasting the data into a hex editor is all I had to do to generate mine. I'm not sure what format xyzzy dumps it in exactly, but wadunpacker/wadpacker just want a standard 16-byte common-key.bin. Attached is a batch script you can use to test your common-key.bin.

View attachment 472047

Just extract it wherever your key is located and drag and drop your common-key.bin onto it. It should give you an output like this:
Code:
The correct Wii common key has the following MD5 hash:
8d1a2ebcd82a3469b77facf15d9c8e50

common-key.bin has the following MD5 hash:
8d1a2ebcd82a3469b77facf15d9c8e50

common-key.bin is a valid Wii common key.

Or if your file is somehow bad:
Code:
The correct Wii common key has the following MD5 hash:
8d1a2ebcd82a3469b77facf15d9c8e50

common-key.bin has the following MD5 hash:
4ae71336e44bf9bf79d2752e234818a5

common-key.bin is NOT a valid Wii common key.



View attachment 472036

Once again, it's a game that already has a Classic Controller hack by the GOAT, crediar. 2011's Kirby's Return to Dream Land (USA)/Kirby's Adventure Wii (EUR) marked a return to the classic Kirby formula which had been on ice since 2004's Amazing Mirror. After various diversions like Kirby's Air Ride and Good-Feel's Epic Yarn, HAL took the series back to its roots with this one, a throwback to the classic Dream Land trilogy from the Game Boy and SNES. While featuring mostly traditional controls, the game occasionally requires shaking and pointer input, which are now handled via button/analog stick inputs.

Highlights for @leejaclane, @NestorM and @awesomeee who all asked about this game. Popular!

USAEURJPN

  1. Code:
    Classic Controller Support (B/A Style) [Vague Rant, crediar]
    041ABD10 60000000
    041ABD84 38600000
    C206B63C 0000000A
    C03E05C0 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820010 C0240000
    D03E0068 48000024
    807E0000 70600080
    41820018 C03E0068
    2C160001 4082000C
    FC000850 D01E0068
    60000000 00000000
    C206C1B8 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8004CCD0
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 80030004
    70008000 41820010
    38000000 90030020
    90030024 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C023006C FC211024
    4800002D D0030020
    C0030024 C0230070
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    C206D120 00000012
    4E800421 2C160001
    40820084 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C035006C FC200850
    39000004 48000021
    C0350070 39000001
    48000015 90950000
    90B50004 90D50008
    48000034 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 7CC04039
    40820008 7CA54378
    7C844378 7CC62079
    4E800020 00000000
    C206B074 0000001A
    2C040002 408200BC
    38800000 71000800
    41820008 60C68000
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000010 41820008
    60C60100 71000040
    41820008 60C60200
    71000008 41820008
    60C60080 71000020
    41820008 60C61000
    71002000 41820008
    60C60080 71000200
    41820008 60C60080
    71000080 41820008
    60C60800 71000004
    41820008 60C60800
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
  2. Code:
    Classic Controller Support (B/A Style) [Vague Rant, crediar]
    041AC620 60000000
    041AC694 38600000
    C206B87C 0000000A
    C03E05C0 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820010 C0240000
    D03E0068 48000024
    807E0000 70600080
    41820018 C03E0068
    2C160001 4082000C
    FC000850 D01E0068
    60000000 00000000
    C206C3F8 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8004CF10
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 80030004
    70008000 41820010
    38000000 90030020
    90030024 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C023006C FC211024
    4800002D D0030020
    C0030024 C0230070
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    C206D360 00000012
    4E800421 2C160001
    40820084 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C035006C FC200850
    39000004 48000021
    C0350070 39000001
    48000015 90950000
    90B50004 90D50008
    48000034 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 7CC04039
    40820008 7CA54378
    7C844378 7CC62079
    4E800020 00000000
    C206B2B4 0000001A
    2C040002 408200BC
    38800000 71000800
    41820008 60C68000
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000010 41820008
    60C60100 71000040
    41820008 60C60200
    71000008 41820008
    60C60080 71000020
    41820008 60C61000
    71002000 41820008
    60C60080 71000200
    41820008 60C60080
    71000080 41820008
    60C60800 71000004
    41820008 60C60800
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
  3. Code:
    Classic Controller Support (B/A Style) [Vague Rant, crediar]
    041AACC4 60000000
    041AAD38 38600000
    C206B63C 0000000A
    C03E05C0 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820010 C0240000
    D03E0068 48000024
    807E0000 70600080
    41820018 C03E0068
    2C160001 4082000C
    FC000850 D01E0068
    60000000 00000000
    C206C1B8 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8004CCD0
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 80030004
    70008000 41820010
    38000000 90030020
    90030024 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C023006C FC211024
    4800002D D0030020
    C0030024 C0230070
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    C206D120 00000012
    4E800421 2C160001
    40820084 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C035006C FC200850
    39000004 48000021
    C0350070 39000001
    48000015 90950000
    90B50004 90D50008
    48000034 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 7CC04039
    40820008 7CA54378
    7C844378 7CC62079
    4E800020 00000000
    C206B074 0000001A
    2C040002 408200BC
    38800000 71000800
    41820008 60C68000
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000010 41820008
    60C60100 71000040
    41820008 60C60200
    71000008 41820008
    60C60080 71000020
    41820008 60C61000
    71002000 41820008
    60C60080 71000200
    41820008 60C60080
    71000080 41820008
    60C60800 71000004
    41820008 60C60800
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000

USAEURJPN

  1. Code:
    Classic Controller Support (Y/B Style) [Vague Rant, crediar]
    041ABD10 60000000
    041ABD84 38600000
    C206B63C 0000000A
    C03E05C0 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820010 C0240000
    D03E0068 48000024
    807E0000 70600080
    41820018 C03E0068
    2C160001 4082000C
    FC000850 D01E0068
    60000000 00000000
    C206C1B8 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8004CCD0
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 80030004
    70008000 41820010
    38000000 90030020
    90030024 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C023006C FC211024
    4800002D D0030020
    C0030024 C0230070
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    C206D120 00000012
    4E800421 2C160001
    40820084 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C035006C FC200850
    39000004 48000021
    C0350070 39000001
    48000015 90950000
    90B50004 90D50008
    48000034 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 7CC04039
    40820008 7CA54378
    7C844378 7CC62079
    4E800020 00000000
    C206B074 0000001A
    2C040002 408200BC
    38800000 71000800
    41820008 60C68000
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000010 41820008
    60C61000 71000040
    41820008 60C60100
    71000008 41820008
    60C60080 71000020
    41820008 60C60200
    71002000 41820008
    60C60080 71000200
    41820008 60C60080
    71000080 41820008
    60C60800 71000004
    41820008 60C60800
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
  2. Code:
    Classic Controller Support (Y/B Style) [Vague Rant, crediar]
    041AC620 60000000
    041AC694 38600000
    C206B87C 0000000A
    C03E05C0 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820010 C0240000
    D03E0068 48000024
    807E0000 70600080
    41820018 C03E0068
    2C160001 4082000C
    FC000850 D01E0068
    60000000 00000000
    C206C3F8 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8004CF10
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 80030004
    70008000 41820010
    38000000 90030020
    90030024 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C023006C FC211024
    4800002D D0030020
    C0030024 C0230070
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    C206D360 00000012
    4E800421 2C160001
    40820084 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C035006C FC200850
    39000004 48000021
    C0350070 39000001
    48000015 90950000
    90B50004 90D50008
    48000034 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 7CC04039
    40820008 7CA54378
    7C844378 7CC62079
    4E800020 00000000
    C206B2B4 0000001A
    2C040002 408200BC
    38800000 71000800
    41820008 60C68000
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000010 41820008
    60C61000 71000040
    41820008 60C60100
    71000008 41820008
    60C60080 71000020
    41820008 60C60200
    71002000 41820008
    60C60080 71000200
    41820008 60C60080
    71000080 41820008
    60C60800 71000004
    41820008 60C60800
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
  3. Code:
    Classic Controller Support (Y/B Style) [Vague Rant, crediar]
    041AACC4 60000000
    041AAD38 38600000
    C206B63C 0000000A
    C03E05C0 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820010 C0240000
    D03E0068 48000024
    807E0000 70600080
    41820018 C03E0068
    2C160001 4082000C
    FC000850 D01E0068
    60000000 00000000
    C206C1B8 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8004CCD0
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 80030004
    70008000 41820010
    38000000 90030020
    90030024 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C023006C FC211024
    4800002D D0030020
    C0030024 C0230070
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    C206D120 00000012
    4E800421 2C160001
    40820084 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C035006C FC200850
    39000004 48000021
    C0350070 39000001
    48000015 90950000
    90B50004 90D50008
    48000034 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 7CC04039
    40820008 7CA54378
    7C844378 7CC62079
    4E800020 00000000
    C206B074 0000001A
    2C040002 408200BC
    38800000 71000800
    41820008 60C68000
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000010 41820008
    60C61000 71000040
    41820008 60C60100
    71000008 41820008
    60C60080 71000020
    41820008 60C60200
    71002000 41820008
    60C60080 71000200
    41820008 60C60080
    71000080 41820008
    60C60800 71000004
    41820008 60C60800
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000

Button Mapping​

[TABLE=full]
[TR]
[th]Wii Remote[/th][th]Classic Controller[/th][th]Function[/th]
[/TR]
[TR]
[td]Home[/td][td]Home
Works normally but remember that ZL/ZR are your A buttons[/td][td]Open/Close Home Menu[/td]
[/TR]
[TR]
[td]D-Pad[/td][td]D-Pad
Left Stick[/td][td]Menus
Navigation
Gameplay
Movement
Some Shaking[/td]
[/TR]
[TR]
[td]A[/td][td]ZL
ZR[/td][td]Gameplay
Guard[/td]
[/TR]
[TR]
[td]B[/td][td]Not mapped[/td][td]Not used?[/td]
[/TR]
[TR]
[td]1[/td][td]B/A Style
B
Y/B Style
Y[/td][td]Menus
Cancel
Gameplay
Inhale
Use Copy Ability[/td]
[/TR]
[TR]
[td]2[/td][td]B/A Style
A
Y/B Style
B[/td][td]Menus
Confirm
Gameplay
Jump
Float[/td]
[/TR]
[TR]
[td]Plus[/td][td]Plus[/td][td]Gameplay
Pause[/td]
[/TR]
[TR]
[td]Minus[/td][td]Minus
B/A Style
Y
Y/B Style
A[/td][td]Gameplay
Release Copy Ability[/td]
[/TR]
[TR]
[td]Shake[/td][td]X
L
R[/td][td]Gameplay
Various[/td]
[/TR]
[TR]
[td]IR Pointer[/td][td]Left Stick[/td][td]Home Button Menu
Navigation[/td]
[/TR]
[/TABLE]

General Notes​

  • As mentioned above, this is a game which already had an excellent Classic Controller hack courtesy of crediar. That original hack already covers most of the game's content, while this version builds upon that work by adding support for shaking as well as the IR pointer and D-Pad emulation on the Left Stick.

  • If you're looking to use this as a Wii U Wii VC injection or patching the CC hack directly into the game for any other reason, you will also need to patch your main.dol file to bypass the Metafortress binary protection, which will otherwise crash the game if you try to modify it in any way. You can download patches for all three supported versions (USA, EUR and JPN) at the below link.

    View attachment 472029
    • The patches are provided in both Riivolution XML and standard IPS patch formats. Use whichever you find easier. You can apply a Riivolution XML patch to your main.dol like so:

      wit dolpatch main.dol xml=kirby-metaknight-usa.xml

      The IPS files, you can apply using any standard IPS patching tool, e.g. Alcaro's Floating IPS.

  • The control scheme here is adapted from the remastered version on Nintendo Switch, with some minor changes. The Switch version doesn't need a dedicated Shake button because the controls were reworked there with different button inputs for each of the original shakes, but here we do need a Shake button, so that is placed on X/L/R. On Switch, X opens a new menu which doesn't exist in the Wii version, and L/R are duplicate Guard buttons (already handled on ZL/ZR).
    • The only bit of weirdness this causes is that the Wiimote A button is on ZL/ZR, making control of the Home Button Menu slightly odd. As always (or at least recently), the button injector assembly is in the Technical Notes if you want to customize the layout.

Technical Notes​

Due to the way Metafortress works, Kirby's Return to Dream Land has to include a full symbol map for the protection scheme to reference. This is nice for us, too, though, because we get to know what all these functions are called.

Code breakdown:
  • 04 in isExtConnected() and 04 in isClassicValid(): disable bad extension error
  • C2 in read_kpad_acc(): shake emulation
  • C2 in calc_acc_variable(): IR pointer emulation
  • C2 in read_kpad_ext(): D-Pad emulation
  • C2 in read_kpad_button(): button injection
The button injector source below is currently set up for B/A Style, the default in modern Kirby games.
Code:
; read_kpad_button
; 8006B074 for USA/JPN
; 8006B2B4 for EUR
; r4 holds extType
; r6 holds wiimote bitfield
; r7 holds wiimote+nunchuk bitfield
; r8 holds classic bitfield

CLASSIC:
  cmpwi r4, 0x2
  bne- RETURN

  li r4, 0x0            ; i'm a wiimote

    CLASSIC_HOME:
      andi. r0, r8, 0x800
      beq- CLASSIC_UP
      ori r6, r6, 0x8000    ; home

    CLASSIC_UP:
      andi. r0, r8, 0x1
      beq- CLASSIC_DOWN
      ori r6, r6, 0x2       ; right (v) / up (h)

    CLASSIC_DOWN:
      andi. r0, r8, 0x4000
      beq- CLASSIC_LEFT
      ori r6, r6, 0x1       ; left (v) / down (h)

    CLASSIC_LEFT:
      andi. r0, r8, 0x2
      beq- CLASSIC_RIGHT
      ori r6, r6, 0x8       ; up (v) / left (h)

    CLASSIC_RIGHT:
      andi. r0, r8, 0x8000
      beq- CLASSIC_A
      ori r6, r6, 0x4       ; down (v) / right (h)

    CLASSIC_A:
      andi. r0, r8, 0x10
      beq- CLASSIC_B
      ori r6, r6, 0x100     ; 2

    CLASSIC_B:
      andi. r0, r8, 0x40
      beq- CLASSIC_X
      ori r6, r6, 0x200     ; 1

    CLASSIC_X:
      andi. r0, r8, 0x8
      beq- CLASSIC_Y
      ori r6, r6, 0x80      ; shake

    CLASSIC_Y:
      andi. r0, r8, 0x20
      beq- CLASSIC_L
      ori r6, r6, 0x1000    ; minus

    CLASSIC_L:
      andi. r0, r8, 0x2000
      beq- CLASSIC_R
      ori r6, r6, 0x80      ; shake

    CLASSIC_R:
      andi. r0, r8, 0x200
      beq- CLASSIC_ZL
      ori r6, r6, 0x80      ; shake

    CLASSIC_ZL:
      andi. r0, r8, 0x80
      beq- CLASSIC_ZR
      ori r6, r6, 0x800     ; a

    CLASSIC_ZR:
      andi. r0, r8, 0x4
      beq- CLASSIC_PLUS
      ori r6, r6, 0x800     ; a

    CLASSIC_PLUS:
      andi. r0, r8, 0x400
      beq- CLASSIC_MINUS
      ori r6, r6, 0x10      ; plus

    CLASSIC_MINUS:
      andi. r0, r8, 0x1000
      beq- RETURN
      ori r6, r6, 0x1000    ; minus

RETURN:
  mr r7, r6
  andi. r0, r6, 0x9FFF
Hi I tried out this code for the pal version and while the buttons on the cc work, the game gives me the detach the extension prompt.
 
Yep, Forgotten Sands definitely uses Metafortress. Sadly, that one was never bypassed as far as I know, so it's not possible to modify that game at all currently. It's a shame, it was a game I immediately thought would be great for a Classic Controller hack, but bypassing Metafortress is a genius-level task. The Kirby fixes are over 1,300 individual patches. Fixing up Dolphin's bug just now was 7 patches for me. crediar is unmatched.


Huh, that's definitely odd. Pasting the data into a hex editor is all I had to do to generate mine. I'm not sure what format xyzzy dumps it in exactly, but wadunpacker/wadpacker just want a standard 16-byte common-key.bin. Attached is a batch script you can use to test your common-key.bin.

View attachment 472047

Just extract it wherever your key is located and drag and drop your common-key.bin onto it. It should give you an output like this:
Code:
The correct Wii common key has the following MD5 hash:
8d1a2ebcd82a3469b77facf15d9c8e50

common-key.bin has the following MD5 hash:
8d1a2ebcd82a3469b77facf15d9c8e50

common-key.bin is a valid Wii common key.

Or if your file is somehow bad:
Code:
The correct Wii common key has the following MD5 hash:
8d1a2ebcd82a3469b77facf15d9c8e50

common-key.bin has the following MD5 hash:
4ae71336e44bf9bf79d2752e234818a5

common-key.bin is NOT a valid Wii common key.



View attachment 472036

Once again, it's a game that already has a Classic Controller hack by the GOAT, crediar. 2011's Kirby's Return to Dream Land (USA)/Kirby's Adventure Wii (EUR) marked a return to the classic Kirby formula which had been on ice since 2004's Amazing Mirror. After various diversions like Kirby's Air Ride and Good-Feel's Epic Yarn, HAL took the series back to its roots with this one, a throwback to the classic Dream Land trilogy from the Game Boy and SNES. While featuring mostly traditional controls, the game occasionally requires shaking and pointer input, which are now handled via button/analog stick inputs.

Highlights for @leejaclane, @NestorM and @awesomeee who all asked about this game. Popular!

USAEURJPN

  1. Code:
    Classic Controller Support (B/A Style) [Vague Rant, crediar]
    041ABD10 60000000
    041ABD84 38600000
    C206B63C 0000000A
    C03E05C0 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820010 C0240000
    D03E0068 48000024
    807E0000 70600080
    41820018 C03E0068
    2C160001 4082000C
    FC000850 D01E0068
    60000000 00000000
    C206C1B8 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8004CCD0
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 80030004
    70008000 41820010
    38000000 90030020
    90030024 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C023006C FC211024
    4800002D D0030020
    C0030024 C0230070
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    C206D120 00000012
    4E800421 2C160001
    40820084 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C035006C FC200850
    39000004 48000021
    C0350070 39000001
    48000015 90950000
    90B50004 90D50008
    48000034 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 7CC04039
    40820008 7CA54378
    7C844378 7CC62079
    4E800020 00000000
    C206B074 0000001A
    2C040002 408200BC
    38800000 71000800
    41820008 60C68000
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000010 41820008
    60C60100 71000040
    41820008 60C60200
    71000008 41820008
    60C60080 71000020
    41820008 60C61000
    71002000 41820008
    60C60080 71000200
    41820008 60C60080
    71000080 41820008
    60C60800 71000004
    41820008 60C60800
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
  2. Code:
    Classic Controller Support (B/A Style) [Vague Rant, crediar]
    041AC620 60000000
    041AC694 38600000
    C206B87C 0000000A
    C03E05C0 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820010 C0240000
    D03E0068 48000024
    807E0000 70600080
    41820018 C03E0068
    2C160001 4082000C
    FC000850 D01E0068
    60000000 00000000
    C206C3F8 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8004CF10
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 80030004
    70008000 41820010
    38000000 90030020
    90030024 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C023006C FC211024
    4800002D D0030020
    C0030024 C0230070
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    C206D360 00000012
    4E800421 2C160001
    40820084 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C035006C FC200850
    39000004 48000021
    C0350070 39000001
    48000015 90950000
    90B50004 90D50008
    48000034 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 7CC04039
    40820008 7CA54378
    7C844378 7CC62079
    4E800020 00000000
    C206B2B4 0000001A
    2C040002 408200BC
    38800000 71000800
    41820008 60C68000
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000010 41820008
    60C60100 71000040
    41820008 60C60200
    71000008 41820008
    60C60080 71000020
    41820008 60C61000
    71002000 41820008
    60C60080 71000200
    41820008 60C60080
    71000080 41820008
    60C60800 71000004
    41820008 60C60800
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
  3. Code:
    Classic Controller Support (B/A Style) [Vague Rant, crediar]
    041AACC4 60000000
    041AAD38 38600000
    C206B63C 0000000A
    C03E05C0 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820010 C0240000
    D03E0068 48000024
    807E0000 70600080
    41820018 C03E0068
    2C160001 4082000C
    FC000850 D01E0068
    60000000 00000000
    C206C1B8 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8004CCD0
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 80030004
    70008000 41820010
    38000000 90030020
    90030024 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C023006C FC211024
    4800002D D0030020
    C0030024 C0230070
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    C206D120 00000012
    4E800421 2C160001
    40820084 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C035006C FC200850
    39000004 48000021
    C0350070 39000001
    48000015 90950000
    90B50004 90D50008
    48000034 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 7CC04039
    40820008 7CA54378
    7C844378 7CC62079
    4E800020 00000000
    C206B074 0000001A
    2C040002 408200BC
    38800000 71000800
    41820008 60C68000
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000010 41820008
    60C60100 71000040
    41820008 60C60200
    71000008 41820008
    60C60080 71000020
    41820008 60C61000
    71002000 41820008
    60C60080 71000200
    41820008 60C60080
    71000080 41820008
    60C60800 71000004
    41820008 60C60800
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000

USAEURJPN

  1. Code:
    Classic Controller Support (Y/B Style) [Vague Rant, crediar]
    041ABD10 60000000
    041ABD84 38600000
    C206B63C 0000000A
    C03E05C0 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820010 C0240000
    D03E0068 48000024
    807E0000 70600080
    41820018 C03E0068
    2C160001 4082000C
    FC000850 D01E0068
    60000000 00000000
    C206C1B8 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8004CCD0
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 80030004
    70008000 41820010
    38000000 90030020
    90030024 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C023006C FC211024
    4800002D D0030020
    C0030024 C0230070
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    C206D120 00000012
    4E800421 2C160001
    40820084 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C035006C FC200850
    39000004 48000021
    C0350070 39000001
    48000015 90950000
    90B50004 90D50008
    48000034 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 7CC04039
    40820008 7CA54378
    7C844378 7CC62079
    4E800020 00000000
    C206B074 0000001A
    2C040002 408200BC
    38800000 71000800
    41820008 60C68000
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000010 41820008
    60C61000 71000040
    41820008 60C60100
    71000008 41820008
    60C60080 71000020
    41820008 60C60200
    71002000 41820008
    60C60080 71000200
    41820008 60C60080
    71000080 41820008
    60C60800 71000004
    41820008 60C60800
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
  2. Code:
    Classic Controller Support (Y/B Style) [Vague Rant, crediar]
    041AC620 60000000
    041AC694 38600000
    C206B87C 0000000A
    C03E05C0 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820010 C0240000
    D03E0068 48000024
    807E0000 70600080
    41820018 C03E0068
    2C160001 4082000C
    FC000850 D01E0068
    60000000 00000000
    C206C3F8 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8004CF10
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 80030004
    70008000 41820010
    38000000 90030020
    90030024 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C023006C FC211024
    4800002D D0030020
    C0030024 C0230070
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    C206D360 00000012
    4E800421 2C160001
    40820084 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C035006C FC200850
    39000004 48000021
    C0350070 39000001
    48000015 90950000
    90B50004 90D50008
    48000034 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 7CC04039
    40820008 7CA54378
    7C844378 7CC62079
    4E800020 00000000
    C206B2B4 0000001A
    2C040002 408200BC
    38800000 71000800
    41820008 60C68000
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000010 41820008
    60C61000 71000040
    41820008 60C60100
    71000008 41820008
    60C60080 71000020
    41820008 60C60200
    71002000 41820008
    60C60080 71000200
    41820008 60C60080
    71000080 41820008
    60C60800 71000004
    41820008 60C60800
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
  3. Code:
    Classic Controller Support (Y/B Style) [Vague Rant, crediar]
    041AACC4 60000000
    041AAD38 38600000
    C206B63C 0000000A
    C03E05C0 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820010 C0240000
    D03E0068 48000024
    807E0000 70600080
    41820018 C03E0068
    2C160001 4082000C
    FC000850 D01E0068
    60000000 00000000
    C206C1B8 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8004CCD0
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 80030004
    70008000 41820010
    38000000 90030020
    90030024 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030020
    C023006C FC211024
    4800002D D0030020
    C0030024 C0230070
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    C206D120 00000012
    4E800421 2C160001
    40820084 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C035006C FC200850
    39000004 48000021
    C0350070 39000001
    48000015 90950000
    90B50004 90D50008
    48000034 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 7CC04039
    40820008 7CA54378
    7C844378 7CC62079
    4E800020 00000000
    C206B074 0000001A
    2C040002 408200BC
    38800000 71000800
    41820008 60C68000
    71000001 41820008
    60C60002 71004000
    41820008 60C60001
    71000002 41820008
    60C60008 71008000
    41820008 60C60004
    71000010 41820008
    60C61000 71000040
    41820008 60C60100
    71000008 41820008
    60C60080 71000020
    41820008 60C60200
    71002000 41820008
    60C60080 71000200
    41820008 60C60080
    71000080 41820008
    60C60800 71000004
    41820008 60C60800
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000

Button Mapping​

[TABLE=full]
[TR]
[th]Wii Remote[/th][th]Classic Controller[/th][th]Function[/th]
[/TR]
[TR]
[td]Home[/td][td]Home
Works normally but remember that ZL/ZR are your A buttons[/td][td]Open/Close Home Menu[/td]
[/TR]
[TR]
[td]D-Pad[/td][td]D-Pad
Left Stick[/td][td]Menus
Navigation
Gameplay
Movement
Some Shaking[/td]
[/TR]
[TR]
[td]A[/td][td]ZL
ZR[/td][td]Gameplay
Guard[/td]
[/TR]
[TR]
[td]B[/td][td]Not mapped[/td][td]Not used?[/td]
[/TR]
[TR]
[td]1[/td][td]B/A Style
B
Y/B Style
Y[/td][td]Menus
Cancel
Gameplay
Inhale
Use Copy Ability[/td]
[/TR]
[TR]
[td]2[/td][td]B/A Style
A
Y/B Style
B[/td][td]Menus
Confirm
Gameplay
Jump
Float[/td]
[/TR]
[TR]
[td]Plus[/td][td]Plus[/td][td]Gameplay
Pause[/td]
[/TR]
[TR]
[td]Minus[/td][td]Minus
B/A Style
Y
Y/B Style
A[/td][td]Gameplay
Release Copy Ability[/td]
[/TR]
[TR]
[td]Shake[/td][td]X
L
R[/td][td]Gameplay
Various[/td]
[/TR]
[TR]
[td]IR Pointer[/td][td]Left Stick[/td][td]Home Button Menu
Navigation[/td]
[/TR]
[/TABLE]

General Notes​

  • As mentioned above, this is a game which already had an excellent Classic Controller hack courtesy of crediar. That original hack already covers most of the game's content, while this version builds upon that work by adding support for shaking as well as the IR pointer and D-Pad emulation on the Left Stick.

  • If you're looking to use this as a Wii U Wii VC injection or patching the CC hack directly into the game for any other reason, you will also need to patch your main.dol file to bypass the Metafortress binary protection, which will otherwise crash the game if you try to modify it in any way. You can download patches for all three supported versions (USA, EUR and JPN) at the below link.

    View attachment 472029
    • The patches are provided in both Riivolution XML and standard IPS patch formats. Use whichever you find easier. You can apply a Riivolution XML patch to your main.dol like so:

      wit dolpatch main.dol xml=kirby-metaknight-usa.xml

      The IPS files, you can apply using any standard IPS patching tool, e.g. Alcaro's Floating IPS.

  • The control scheme here is adapted from the remastered version on Nintendo Switch, with some minor changes. The Switch version doesn't need a dedicated Shake button because the controls were reworked there with different button inputs for each of the original shakes, but here we do need a Shake button, so that is placed on X/L/R. On Switch, X opens a new menu which doesn't exist in the Wii version, and L/R are duplicate Guard buttons (already handled on ZL/ZR).
    • The only bit of weirdness this causes is that the Wiimote A button is on ZL/ZR, making control of the Home Button Menu slightly odd. As always (or at least recently), the button injector assembly is in the Technical Notes if you want to customize the layout.

Technical Notes​

Due to the way Metafortress works, Kirby's Return to Dream Land has to include a full symbol map for the protection scheme to reference. This is nice for us, too, though, because we get to know what all these functions are called.

Code breakdown:
  • 04 in isExtConnected() and 04 in isClassicValid(): disable bad extension error
  • C2 in read_kpad_acc(): shake emulation
  • C2 in calc_acc_variable(): IR pointer emulation
  • C2 in read_kpad_ext(): D-Pad emulation
  • C2 in read_kpad_button(): button injection
The button injector source below is currently set up for B/A Style, the default in modern Kirby games.
Code:
; read_kpad_button
; 8006B074 for USA/JPN
; 8006B2B4 for EUR
; r4 holds extType
; r6 holds wiimote bitfield
; r7 holds wiimote+nunchuk bitfield
; r8 holds classic bitfield

CLASSIC:
  cmpwi r4, 0x2
  bne- RETURN

  li r4, 0x0            ; i'm a wiimote

    CLASSIC_HOME:
      andi. r0, r8, 0x800
      beq- CLASSIC_UP
      ori r6, r6, 0x8000    ; home

    CLASSIC_UP:
      andi. r0, r8, 0x1
      beq- CLASSIC_DOWN
      ori r6, r6, 0x2       ; right (v) / up (h)

    CLASSIC_DOWN:
      andi. r0, r8, 0x4000
      beq- CLASSIC_LEFT
      ori r6, r6, 0x1       ; left (v) / down (h)

    CLASSIC_LEFT:
      andi. r0, r8, 0x2
      beq- CLASSIC_RIGHT
      ori r6, r6, 0x8       ; up (v) / left (h)

    CLASSIC_RIGHT:
      andi. r0, r8, 0x8000
      beq- CLASSIC_A
      ori r6, r6, 0x4       ; down (v) / right (h)

    CLASSIC_A:
      andi. r0, r8, 0x10
      beq- CLASSIC_B
      ori r6, r6, 0x100     ; 2

    CLASSIC_B:
      andi. r0, r8, 0x40
      beq- CLASSIC_X
      ori r6, r6, 0x200     ; 1

    CLASSIC_X:
      andi. r0, r8, 0x8
      beq- CLASSIC_Y
      ori r6, r6, 0x80      ; shake

    CLASSIC_Y:
      andi. r0, r8, 0x20
      beq- CLASSIC_L
      ori r6, r6, 0x1000    ; minus

    CLASSIC_L:
      andi. r0, r8, 0x2000
      beq- CLASSIC_R
      ori r6, r6, 0x80      ; shake

    CLASSIC_R:
      andi. r0, r8, 0x200
      beq- CLASSIC_ZL
      ori r6, r6, 0x80      ; shake

    CLASSIC_ZL:
      andi. r0, r8, 0x80
      beq- CLASSIC_ZR
      ori r6, r6, 0x800     ; a

    CLASSIC_ZR:
      andi. r0, r8, 0x4
      beq- CLASSIC_PLUS
      ori r6, r6, 0x800     ; a

    CLASSIC_PLUS:
      andi. r0, r8, 0x400
      beq- CLASSIC_MINUS
      ori r6, r6, 0x10      ; plus

    CLASSIC_MINUS:
      andi. r0, r8, 0x1000
      beq- RETURN
      ori r6, r6, 0x1000    ; minus

RETURN:
  mr r7, r6
  andi. r0, r6, 0x9FFF

I'm having trouble with Kirby (PAL) on the Wii U Wii VC. I ran hese commands in order:

wit x SUKP01.wbfs KirbyGamePad

wit dolpatch KirbyGamePad\sys\main.dol xml=kirby-metaknight-eur_v1.1.xml

wstrt patch KirbyGamePad\sys\main.dol --add-section SUKP01.gct

wit copy KirbyGamePad KirbyGamePad.wbfs

At first, the game boots normally to the title screen, but after selecting a save and starting the game it goes to a black screen. I already patched the main.dol to bypass the Metafortress protection. Any ideas what I might have done wrong or what else I should check?
 
Skyward sword uses motion plus, it might not be possible sadly
Post automatically merged:


Also, Vague rant, if you have epic mickey 2 on your list PLEASE do not do that one yet, do it later (unless someone begs lol)
The reason why is because epic mickey 1 already seems stressful enough with all that info you told us, so it isnt worth doing for now as it can be stressful. 👍
And would it be possible in a large future thanks to those decomp projects ?

https://github.com/zeldaret/ss

https://decomp.wiki/en/projects/gamecube-wii/skyward-sword
 
Hi ^_^

I have a question, and it was if it would be possible to add nunchuk support for Endless Ocean 2 like in the first game.
It's really annoying having to keep the B button pressed all the time hmrpf :glare:

That's all, thanks :shy:

Not watching that cancer of a video, TLDR?
 
Hi! If I can recommend a Wii game to do with this 'Hack' I would recommend The Sims 3 on Wii if you want a Recommendation! :)
 

Site & Scene News

Popular threads in this forum