Hacking New Classic Controller Hacks

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,509
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,732
Country
Any chances for Zelda Skyward sword to receive this amazing upgrade?
As awesomeee mentioned before me, not likely. Simulating the gyro controls is extremely complicated stuff that's way beyond me. Maybe somebody could do it, but unfortunately it won't be me.

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. 👍
Hahaha, thanks, yeah. Epic Mickey 2 is definitely one I have on my list ever since I did the first one, but I haven't even started thinking about it yet beyond typing its name into a text file. Maybe I'll get lucky and it'll be similar enough to the first game that I can just copy what I did for that game straight across, but I'm not ready to try it and find out yet. :P



top3.png


Shin'en's Jett Rocket marked one of the most ambitious releases to WiiWare, a full 3D platformer. Cubed3 lauded it as "a clear contender for WiiWare Game of the Year, if not 2010’s best Wii game in general." That's clearly wrong, Super Mario Galaxy 2 had just been released when they said that, but they did say it. Regardless, this is a fun romp across three worlds in typical collectathon form, with hundreds of hidden trinkets to find. In addition to the Mario Sunshine-esque jetpack alluded to in the title, there's even a few vehicles for Jett to ride. Like most of Shin'en's games, this one was a technical showpiece, with particular praise being focussed on its water. Tragically, the game missed the boat on Miiverse, so we'll never know what the water guy thought of it.

EUR (v3)USA (v3) / EUR (v256)USA (v256) / EUR (v512)USA (v512)

  1. Code:
    Classic Controller Support [Vague Rant]
    C205E3C4 00000003
    80010008 2C000002
    40820008 38000001
    60000000 00000000
    C205E78C 00000002
    28000001 41820008
    28000002 00000000
    0416E078 48000024
    0416E0D4 4E800020
    C2149624 0000000E
    C03E04D8 4800000D
    4059999A 00000000
    7CA802A6 809E0004
    708000E0 41820010
    C0250000 3880000F
    48000014 80850004
    2C040000 40810024
    C0250000 2C190001
    40820010 FC200850
    D0250000 3884FFFF
    D03E04DC D03E04E0
    90850004 80030014
    389E000C 80A30010
    60000000 00000000
    C214A054 0000001C
    90010024 2C040000
    408200D0 8803005C
    2C000002 408200C4
    48000015 80104B34
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030060
    C0230074 FC20082A
    C0030020 FC211024
    48000035 D0030020
    C0030064 C0230078
    FC20082A C0030024
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    0414AF20 7FC3F378
    C214AF58 00000011
    4E800421 2C190001
    40820078 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 809EFFA0
    80BEFFA4 80DEFFA8
    C03E0014 60000000
    39000001 48000015
    909EFFA0 90BEFFA4
    90DEFFA8 48000034
    FC000A10 FC001040
    4D800020 FC011840
    41800008 5508083C
    7CC04039 40820008
    7CA54378 7C844378
    7CC64079 4E800020
    60000000 00000000
    C21490B0 0000001A
    2C040002 408200BC
    38800001 71090800
    41820008 60C68000
    71090001 41820008
    60C60008 71094000
    41820008 60C60004
    71090002 41820008
    60C60001 71098000
    41820008 60C60002
    71090010 41820008
    60C60800 71090040
    41820008 60C60400
    71090008 41820008
    60C60080 71090020
    41820008 60C60008
    71092000 41820008
    60C60008 71090200
    41820008 60C60040
    71090080 41820008
    60C60008 71090004
    41820008 60C60020
    71090400 41820008
    60C60010 71091000
    41820008 60C61000
    7CC73378 70C99FFF
    60000000 00000000
    Code:
    Classic Controller Support (Un-Inverted Camera) [Vague Rant]
    C205E3C4 00000003
    80010008 2C000002
    40820008 38000001
    60000000 00000000
    C205E78C 00000002
    28000001 41820008
    28000002 00000000
    0416E078 48000024
    0416E0D4 4E800020
    C2149624 0000000E
    C03E04D8 4800000D
    4059999A 00000000
    7CA802A6 809E0004
    708000E0 41820010
    C0250000 3880000F
    48000014 80850004
    2C040000 40810024
    C0250000 2C190001
    40820010 FC200850
    D0250000 3884FFFF
    D03E04DC D03E04E0
    90850004 80030014
    389E000C 80A30010
    60000000 00000000
    C214A054 0000001C
    90010024 2C040000
    408200D0 8803005C
    2C000002 408200C4
    48000015 80104B34
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030060
    C0230074 FC20082A
    C0030020 FC211024
    48000035 D0030020
    C0030064 C0230078
    FC20082A C0030024
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    0414AF20 7FC3F378
    C214AF58 00000011
    4E800421 2C190001
    40820078 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 809EFFA0
    80BEFFA4 80DEFFA8
    C03E0014 FC200850
    39000001 48000015
    909EFFA0 90BEFFA4
    90DEFFA8 48000034
    FC000A10 FC001040
    4D800020 FC011840
    41800008 5508083C
    7CC04039 40820008
    7CA54378 7C844378
    7CC64079 4E800020
    60000000 00000000
    C21490B0 0000001A
    2C040002 408200BC
    38800001 71090800
    41820008 60C68000
    71090001 41820008
    60C60008 71094000
    41820008 60C60004
    71090002 41820008
    60C60002 71098000
    41820008 60C60001
    71090010 41820008
    60C60800 71090040
    41820008 60C60400
    71090008 41820008
    60C60080 71090020
    41820008 60C60008
    71092000 41820008
    60C60008 71090200
    41820008 60C60040
    71090080 41820008
    60C60008 71090004
    41820008 60C60020
    71090400 41820008
    60C60010 71091000
    41820008 60C61000
    7CC73378 70C99FFF
    60000000 00000000
  2. Code:
    Classic Controller Support [Vague Rant]
    C205E41C 00000003
    80010008 2C000002
    40820008 38000001
    60000000 00000000
    C205E7E4 00000002
    28000001 41820008
    28000002 00000000
    0416E0D0 48000024
    0416E12C 4E800020
    C214967C 0000000E
    C03E04D8 4800000D
    4059999A 00000000
    7CA802A6 809E0004
    708000E0 41820010
    C0250000 3880000F
    48000014 80850004
    2C040000 40810024
    C0250000 2C190001
    40820010 FC200850
    D0250000 3884FFFF
    D03E04DC D03E04E0
    90850004 80030014
    389E000C 80A30010
    60000000 00000000
    C214A0AC 0000001C
    90010024 2C040000
    408200D0 8803005C
    2C000002 408200C4
    48000015 80104B8C
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030060
    C0230074 FC20082A
    C0030020 FC211024
    48000035 D0030020
    C0030064 C0230078
    FC20082A C0030024
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    0414AF78 7FC3F378
    C214AFB0 00000011
    4E800421 2C190001
    40820078 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 809EFFA0
    80BEFFA4 80DEFFA8
    C03E0014 60000000
    39000001 48000015
    909EFFA0 90BEFFA4
    90DEFFA8 48000034
    FC000A10 FC001040
    4D800020 FC011840
    41800008 5508083C
    7CC04039 40820008
    7CA54378 7C844378
    7CC64079 4E800020
    60000000 00000000
    C2149108 0000001A
    2C040002 408200BC
    38800001 71090800
    41820008 60C68000
    71090001 41820008
    60C60008 71094000
    41820008 60C60004
    71090002 41820008
    60C60001 71098000
    41820008 60C60002
    71090010 41820008
    60C60800 71090040
    41820008 60C60400
    71090008 41820008
    60C60080 71090020
    41820008 60C60008
    71092000 41820008
    60C60008 71090200
    41820008 60C60040
    71090080 41820008
    60C60008 71090004
    41820008 60C60020
    71090400 41820008
    60C60010 71091000
    41820008 60C61000
    7CC73378 70C99FFF
    60000000 00000000
    Code:
    Classic Controller Support (Un-Inverted Camera) [Vague Rant]
    C205E41C 00000003
    80010008 2C000002
    40820008 38000001
    60000000 00000000
    C205E7E4 00000002
    28000001 41820008
    28000002 00000000
    0416E0D0 48000024
    0416E12C 4E800020
    C214967C 0000000E
    C03E04D8 4800000D
    4059999A 00000000
    7CA802A6 809E0004
    708000E0 41820010
    C0250000 3880000F
    48000014 80850004
    2C040000 40810024
    C0250000 2C190001
    40820010 FC200850
    D0250000 3884FFFF
    D03E04DC D03E04E0
    90850004 80030014
    389E000C 80A30010
    60000000 00000000
    C214A0AC 0000001C
    90010024 2C040000
    408200D0 8803005C
    2C000002 408200C4
    48000015 80104B8C
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030060
    C0230074 FC20082A
    C0030020 FC211024
    48000035 D0030020
    C0030064 C0230078
    FC20082A C0030024
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    0414AF78 7FC3F378
    C214AFB0 00000011
    4E800421 2C190001
    40820078 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 809EFFA0
    80BEFFA4 80DEFFA8
    C03E0014 FC200850
    39000001 48000015
    909EFFA0 90BEFFA4
    90DEFFA8 48000034
    FC000A10 FC001040
    4D800020 FC011840
    41800008 5508083C
    7CC04039 40820008
    7CA54378 7C844378
    7CC64079 4E800020
    60000000 00000000
    C2149108 0000001A
    2C040002 408200BC
    38800001 71090800
    41820008 60C68000
    71090001 41820008
    60C60008 71094000
    41820008 60C60004
    71090002 41820008
    60C60002 71098000
    41820008 60C60001
    71090010 41820008
    60C60800 71090040
    41820008 60C60400
    71090008 41820008
    60C60080 71090020
    41820008 60C60008
    71092000 41820008
    60C60008 71090200
    41820008 60C60040
    71090080 41820008
    60C60008 71090004
    41820008 60C60020
    71090400 41820008
    60C60010 71091000
    41820008 60C61000
    7CC73378 70C99FFF
    60000000 00000000
  3. Code:
    Classic Controller Support [Vague Rant]
    C205E5AC 00000003
    80010008 2C000002
    40820008 38000001
    60000000 00000000
    C205E974 00000002
    28000001 41820008
    28000002 00000000
    04178C5C 48000010
    04178CCC 48000010
    C2150198 0000000E
    C03E05BC 4800000D
    4059999A 00000000
    7CA802A6 809E0004
    708000E0 41820010
    C0250000 3880000F
    48000014 80850004
    2C040000 40810024
    C0250000 2C160001
    40820010 FC200850
    D0250000 3884FFFF
    D03E05C0 D03E05C4
    90850004 80030014
    389E000C 80A30010
    60000000 00000000
    C2150D28 0000001C
    90010024 2C040000
    408200D0 8803005C
    2C000002 408200C4
    48000015 80107160
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030060
    C0230074 FC20082A
    C0030020 FC211024
    48000035 D0030020
    C0030064 C0230078
    FC20082A C0030024
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    04151C70 7FC3F378
    C2151CA8 00000011
    4E800421 2C160001
    40820078 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 809EFFA0
    80BEFFA4 80DEFFA8
    C03E0014 60000000
    39000001 48000015
    909EFFA0 90BEFFA4
    90DEFFA8 48000034
    FC000A10 FC001040
    4D800020 FC011840
    41800008 5508083C
    7CC04039 40820008
    7CA54378 7C844378
    7CC64079 4E800020
    60000000 00000000
    C214FBE4 0000001A
    2C040002 408200BC
    38800001 71000800
    41820008 60C68000
    71000001 41820008
    60C60008 71004000
    41820008 60C60004
    71000002 41820008
    60C60001 71008000
    41820008 60C60002
    71000010 41820008
    60C60800 71000040
    41820008 60C60400
    71000008 41820008
    60C60080 71000020
    41820008 60C60008
    71002000 41820008
    60C60008 71000200
    41820008 60C60040
    71000080 41820008
    60C60008 71000004
    41820008 60C60020
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
    Code:
    Classic Controller Support (Un-Inverted Camera) [Vague Rant]
    C205E5AC 00000003
    80010008 2C000002
    40820008 38000001
    60000000 00000000
    C205E974 00000002
    28000001 41820008
    28000002 00000000
    04178C5C 48000010
    04178CCC 48000010
    C2150198 0000000E
    C03E05BC 4800000D
    4059999A 00000000
    7CA802A6 809E0004
    708000E0 41820010
    C0250000 3880000F
    48000014 80850004
    2C040000 40810024
    C0250000 2C160001
    40820010 FC200850
    D0250000 3884FFFF
    D03E05C0 D03E05C4
    90850004 80030014
    389E000C 80A30010
    60000000 00000000
    C2150D28 0000001C
    90010024 2C040000
    408200D0 8803005C
    2C000002 408200C4
    48000015 80107160
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030060
    C0230074 FC20082A
    C0030020 FC211024
    48000035 D0030020
    C0030064 C0230078
    FC20082A C0030024
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    04151C70 7FC3F378
    C2151CA8 00000011
    4E800421 2C160001
    40820078 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 809EFFA0
    80BEFFA4 80DEFFA8
    C03E0014 FC200850
    39000001 48000015
    909EFFA0 90BEFFA4
    90DEFFA8 48000034
    FC000A10 FC001040
    4D800020 FC011840
    41800008 5508083C
    7CC04039 40820008
    7CA54378 7C844378
    7CC64079 4E800020
    60000000 00000000
    C214FBE4 0000001A
    2C040002 408200BC
    38800001 71000800
    41820008 60C68000
    71000001 41820008
    60C60008 71004000
    41820008 60C60004
    71000002 41820008
    60C60002 71008000
    41820008 60C60001
    71000010 41820008
    60C60800 71000040
    41820008 60C60400
    71000008 41820008
    60C60080 71000020
    41820008 60C60008
    71002000 41820008
    60C60008 71000200
    41820008 60C60040
    71000080 41820008
    60C60008 71000004
    41820008 60C60020
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
  4. Code:
    Classic Controller Support [Vague Rant]
    C205E5AC 00000003
    80010008 2C000002
    40820008 38000001
    60000000 00000000
    C205E974 00000002
    28000001 41820008
    28000002 00000000
    04178C7C 48000010
    04178CEC 48000010
    C21501B8 0000000E
    C03E05BC 4800000D
    4059999A 00000000
    7CA802A6 809E0004
    708000E0 41820010
    C0250000 3880000F
    48000014 80850004
    2C040000 40810024
    C0250000 2C160001
    40820010 FC200850
    D0250000 3884FFFF
    D03E05C0 D03E05C4
    90850004 80030014
    389E000C 80A30010
    60000000 00000000
    C2150D48 0000001C
    90010024 2C040000
    408200D0 8803005C
    2C000002 408200C4
    48000015 80107180
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030060
    C0230074 FC20082A
    C0030020 FC211024
    48000035 D0030020
    C0030064 C0230078
    FC20082A C0030024
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    04151C90 7FC3F378
    C2151CC8 00000011
    4E800421 2C160001
    40820078 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 809EFFA0
    80BEFFA4 80DEFFA8
    C03E0014 60000000
    39000001 48000015
    909EFFA0 90BEFFA4
    90DEFFA8 48000034
    FC000A10 FC001040
    4D800020 FC011840
    41800008 5508083C
    7CC04039 40820008
    7CA54378 7C844378
    7CC64079 4E800020
    60000000 00000000
    C214FC04 0000001A
    2C040002 408200BC
    38800001 71000800
    41820008 60C68000
    71000001 41820008
    60C60008 71004000
    41820008 60C60004
    71000002 41820008
    60C60001 71008000
    41820008 60C60002
    71000010 41820008
    60C60800 71000040
    41820008 60C60400
    71000008 41820008
    60C60080 71000020
    41820008 60C60008
    71002000 41820008
    60C60008 71000200
    41820008 60C60040
    71000080 41820008
    60C60008 71000004
    41820008 60C60020
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
    Code:
    Classic Controller Support (Un-Inverted Camera) [Vague Rant]
    C205E5AC 00000003
    80010008 2C000002
    40820008 38000001
    60000000 00000000
    C205E974 00000002
    28000001 41820008
    28000002 00000000
    04178C7C 48000010
    04178CEC 48000010
    C21501B8 0000000E
    C03E05BC 4800000D
    4059999A 00000000
    7CA802A6 809E0004
    708000E0 41820010
    C0250000 3880000F
    48000014 80850004
    2C040000 40810024
    C0250000 2C160001
    40820010 FC200850
    D0250000 3884FFFF
    D03E05C0 D03E05C4
    90850004 80030014
    389E000C 80A30010
    60000000 00000000
    C2150D48 0000001C
    90010024 2C040000
    408200D0 8803005C
    2C000002 408200C4
    48000015 80107180
    3FAAAAAB 3C75C28F
    3F800000 7CA802A6
    90A1000C 38C00002
    98C3005E 81850000
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450004
    40820008 EC4200B2
    C0650008 C0030060
    C0230074 FC20082A
    C0030020 FC211024
    48000035 D0030020
    C0030064 C0230078
    FC20082A C0030024
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C025000C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    04151C90 7FC3F378
    C2151CC8 00000011
    4E800421 2C160001
    40820078 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 809EFFA0
    80BEFFA4 80DEFFA8
    C03E0014 FC200850
    39000001 48000015
    909EFFA0 90BEFFA4
    90DEFFA8 48000034
    FC000A10 FC001040
    4D800020 FC011840
    41800008 5508083C
    7CC04039 40820008
    7CA54378 7C844378
    7CC64079 4E800020
    60000000 00000000
    C214FC04 0000001A
    2C040002 408200BC
    38800001 71000800
    41820008 60C68000
    71000001 41820008
    60C60008 71004000
    41820008 60C60004
    71000002 41820008
    60C60002 71008000
    41820008 60C60001
    71000010 41820008
    60C60800 71000040
    41820008 60C60400
    71000008 41820008
    60C60080 71000020
    41820008 60C60008
    71002000 41820008
    60C60008 71000200
    41820008 60C60040
    71000080 41820008
    60C60008 71000004
    41820008 60C60020
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
View attachment JettRocket_ClassicControllerHack_v1.0.zip

The archive above includes several tools, IPS patches and a Windows batch script to make applying this hack directly to a WAD relatively painless.

In addition to that ZIP, you will need:
  • a Jett Rocket WAD (USA/EUR, v3/v256/v512)
  • common-key.bin
I will not help you find either of the above.

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

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

  3. drag and drop your Jett Rocket WAD onto the apply-patch.bat file

    • alternatively, you can run the script directly and drag and drop the WAD into the window that opens or just type the path to your WAD manually

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

  5. once you're ready, the script will use the included tools to unpack, patch and repack a new WAD with your chosen patch

    • the original WAD will not be modified

  6. do whatever you normally would do with a WAD file
As a general rule, you shouldn't download and run random executables and batch scripts you find on the Internet. If you can't or don't want to run any of these on your machine, the IPS patches are included in the patches directory and you can figure out how to apply them in whatever way you feel comfortable. There is a readme.txt included with slightly more details on how to apply the patches in platform-agnostic terms (e.g. "Unpack your WAD").

Button Mapping​

Wii Remote/NunchukClassic ControllerFunction
Wiimote HomeHome
Works normally
Open/Close Home Menu
Wiimote D-Pad Left/RightD-Pad Left/Right
Right Stick Left/Right
Gameplay
Camera Rotation
Wiimote D-Pad UpD-Pad Up
Y
L
ZL
Gameplay
Re-Center Camera
Wiimote AAMenus
Confirm
Gameplay
Jump
Wiimote BBMenus
Cancel
Gameplay
Interact
Wiimote 1 & 2Not mappedNot used?
Wiimote PlusPlusGameplay
Pause
Wiimote MinusMinusMenus
Delete Save
Wiimote ShakeX
R
ZR
Gameplay
Dash/Air Dash
Charge Rocket
Wiimote PointerLeft Stick
Right Stick
Menus
Navigation
Nunchuk StickLeft StickGameplay
Movement
Nunchuk C & ZNot mappedNot used?

General Notes​

  • Firstly, explaining the two hack versions: by default, this game has inverted camera rotation (like Super Mario 64). When you press right, the position of the virtual camera rotates counter-clockwise around your character, meaning your vision cone moves to the left. The "Un-Inverted Camera" codes swap this to the opposite, so that pressing right rotates the camera clockwise and the vision cone moves right. This will come down to personal preference, but the first is how the original game works and the second is how modern games tend to work (e.g. Super Mario 64 in Super Mario 3D All-Stars).

  • Next, explaining the six WAD versions: Jett Rocket was released across two regions (USA and EUR) with three revisions each (v3, v256 and v512). In order from oldest to newest, they go like this:

    • EUR v3
    • USA v3 / EUR v256
    • USA v256 / EUR v512
    • USA v512

    The most "common" versions are USA v3, EUR v256 and EUR v512. Without uh, explaining in too much detail what I mean by this, if you didn't get your game from the official source (Wii Shop Channel/NUS), you probably have one of those three. You can check your game revision using tools like ShowMiiWads or Dolphin (right click, Properties, Info, Name).

  • This is definitely one where I compromised slightly on the button layout for the sake of keeping menu navigation sane. A/Confirm and B/Cancel are here, but that also means your main action buttons are A/Jump, B/Interact and X/Shake. If I was going for pure gameplay controls I'd do B/Jump, A/Interact and Y/Shake, but then you'd also have inverted B/Confirm and A/Cancel. Button injector is in the technical notes if you want to build a version of the code with different inputs, but if you want to edit the WAD patch version ... ehhhhh ... hex edit the IPS files I guess, that's too complicated.

    • One other weird thing is that on the main menu, you can use the Nunchuk Stick to "look around" (sort of like moving the menu around in Smash Melee, but only the background moves) and the IR Pointer to select menu options. In this hack, the Left Stick is pulling double-duty as both the Nunchuk Stick and IR Pointer, so the background will move around a bit while you navigate the menu. If this bothers you, use the Right Stick to move the IR pointer instead.

Technical Notes​

Code breakdown:
  • C2: bypass Nunchuk check
  • C2: allow reading Classic Controller Left Stick as Nunchuk Stick
  • 04 and 04 in setKpad(): disable the native Classic Controller support included in the Home Button Menu; ironic, but since we're already emulating a Wiimote and Nunchuk, the HBM otherwise behaves as if you have two controllers fighting over it
  • C2 in read_kpad_acc(): when player presses shake button, inject shaking for the next 15 (!) frames; air dashes require a ridiculous amount of shaking to trigger
  • C2 in calc_dpd_variable(): IR pointer emulation
  • 04 and C2 in read_kpad_ext(): inject CC Left Stick into Nunchuk stick, add left/right D-Pad emulation on CC Right Stick
  • C2 in read_kpad_button(): button injector
Button injector assembly, for custom button layouts; generate Gecko C2 code with CodeWrite.

EUR v3 / USA v3 / EUR v256USA v256 / EUR v512 / USA v512

  1. Code:
    ; read_kpad_button
    ; 801490B0 for EUR (v3)
    ; 80149108 for USA (v3) / EUR (v256)
    ; r4 holds extType
    ; r6 holds wiimote bitfield
    ; r7 holds wiimote+nunchuk bitfield
    ; r8 holds classic bitfield
    
    CLASSIC:
      cmpwi r4, 0x2
      bne- RETURN
    
      li r4, 0x1            ; i'm a nunchuk
    
        CLASSIC_HOME:
          andi. r9, r8, 0x800
          beq- CLASSIC_UP
          ori r6, r6, 0x8000    ; home
    
        CLASSIC_UP:
          andi. r9, r8, 0x1
          beq- CLASSIC_DOWN
          ori r6, r6, 0x8       ; up (v) / left (h)
    
        CLASSIC_DOWN:
          andi. r9, r8, 0x4000
          beq- CLASSIC_LEFT
          ori r6, r6, 0x4       ; down (v) / right (h)
    
        CLASSIC_LEFT:
          andi. r9, r8, 0x2
          beq- CLASSIC_RIGHT
          ori r6, r6, 0x1       ; left (v) / down (h)
    
        CLASSIC_RIGHT:
          andi. r9, r8, 0x8000
          beq- CLASSIC_A
          ori r6, r6, 0x2       ; right (v) / up (h)
    
        CLASSIC_A:
          andi. r9, r8, 0x10
          beq- CLASSIC_B
          ori r6, r6, 0x800     ; a
    
        CLASSIC_B:
          andi. r9, r8, 0x40
          beq- CLASSIC_X
          ori r6, r6, 0x400     ; b
    
        CLASSIC_X:
          andi. r9, r8, 0x8
          beq- CLASSIC_Y
          ori r6, r6, 0x80      ; shake
    
        CLASSIC_Y:
          andi. r9, r8, 0x20
          beq- CLASSIC_L
          ori r6, r6, 0x8       ; up (v) / left (h)
    
        CLASSIC_L:
          andi. r9, r8, 0x2000
          beq- CLASSIC_R
          ori r6, r6, 0x8       ; up (v) / left (h)
    
        CLASSIC_R:
          andi. r9, r8, 0x200
          beq- CLASSIC_ZL
          ori r6, r6, 0x40      ; shake
    
        CLASSIC_ZL:
          andi. r9, r8, 0x80
          beq- CLASSIC_ZR
          ori r6, r6, 0x8       ; up (v) / left (h)
    
        CLASSIC_ZR:
          andi. r9, r8, 0x4
          beq- CLASSIC_PLUS
          ori r6, r6, 0x20      ; shake
    
        CLASSIC_PLUS:
          andi. r9, r8, 0x400
          beq- CLASSIC_MINUS
          ori r6, r6, 0x10      ; plus
    
        CLASSIC_MINUS:
          andi. r9, r8, 0x1000
          beq- RETURN
          ori r6, r6, 0x1000    ; minus
    
    RETURN:
      mr r7, r6
      andi. r9, r6, 0x9FFF
  2. Code:
    ; read_kpad_button
    ; 8014FBE4 for USA (v256) / EUR (v512)
    ; 8014FC04 for USA (v512)
    ; r4 holds extType
    ; r6 holds wiimote bitfield
    ; r7 holds wiimote+nunchuk bitfield
    ; r8 holds classic bitfield
    
    CLASSIC:
      cmpwi r4, 0x2
      bne- RETURN
    
      li r4, 0x1            ; i'm a nunchuk
    
        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, 0x8       ; up (v) / left (h)
    
        CLASSIC_DOWN:
          andi. r0, r8, 0x4000
          beq- CLASSIC_LEFT
          ori r6, r6, 0x4       ; down (v) / right (h)
    
        CLASSIC_LEFT:
          andi. r0, r8, 0x2
          beq- CLASSIC_RIGHT
          ori r6, r6, 0x1       ; left (v) / down (h)
    
        CLASSIC_RIGHT:
          andi. r0, r8, 0x8000
          beq- CLASSIC_A
          ori r6, r6, 0x2       ; right (v) / up (h)
    
        CLASSIC_A:
          andi. r0, r8, 0x10
          beq- CLASSIC_B
          ori r6, r6, 0x800     ; a
    
        CLASSIC_B:
          andi. r0, r8, 0x40
          beq- CLASSIC_X
          ori r6, r6, 0x400     ; b
    
        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, 0x8       ; up (v) / left (h)
    
        CLASSIC_L:
          andi. r0, r8, 0x2000
          beq- CLASSIC_R
          ori r6, r6, 0x8       ; up (v) / left (h)
    
        CLASSIC_R:
          andi. r0, r8, 0x200
          beq- CLASSIC_ZL
          ori r6, r6, 0x40      ; shake
    
        CLASSIC_ZL:
          andi. r0, r8, 0x80
          beq- CLASSIC_ZR
          ori r6, r6, 0x8       ; up (v) / left (h)
    
        CLASSIC_ZR:
          andi. r0, r8, 0x4
          beq- CLASSIC_PLUS
          ori r6, r6, 0x20      ; shake
    
        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
If you want to edit the controls in the WAD version, you'll need to hex edit the patch file for your game revision to change the button values. This is going to be pretty complicated. I'd say build the C2 code from the above assembly then open the correct IPS patch for your game in your hex editor. The contents of the C2 code and the section of the IPS patch which is handling button injection will be almost identical, so you can cross-reference them to find where to edit the button values.

Don't just copy-paste the entire C2 code into the IPS patch or anything like that, that won't work.
 

tech_A_nina

Active Member
Newcomer
Joined
Aug 1, 2018
Messages
32
Trophies
0
XP
272
Country
United Kingdom
@Vague Rant Do you have the game "Mushroom Men" on your list already? It has some wiimote shaking action but not so much as I remember. Yes, he is a fungus, but with super powers like telekinesis. I bet not everybody here knows about that hidden gem. Let the spore wars begin...
 

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
46
Trophies
0
XP
75
Country
United States
@Vague Rant Regarding tilt support in Paper Mario: Theres some mini game in a secret place that uses left and right tilting controls. The long last shake isnt the only tilting thing.

Could you possibly replace the minus button to toggle Tippi? The controls are showing Wiimote only so its basically pointless. It would free up buttons. For shaking and tilitng.
 
  • Like
Reactions: Vague Rant

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
46
Trophies
0
XP
75
Country
United States
hi there, thanks for the amazing work. is there a method to create files so i can inject them into the iso? Thanks.
Use the Easy GCT embedder. https://www.dropbox.com/scl/fi/p945....zip?rlkey=n4uhselp912hchf19d1zeea5t&e=1&dl=0
Go to mkwii.com/gct and create a GCT file there. The rest is straightforward.
Post automatically merged:

@Vague Rant I tried putting Kirby Wii’s .ini file in the ISO’s data/sys directory. I noticed the metafortress patch had that same directory being “dolphin/data/sys” or something like that. It didnt work though. The WUP installable is still a black screen because of metafortress protection.

Metafortress protection is triggered when the main.dol is modified for more info, could an ips patch bypass that?

On the other hand, could the .ini file be incorporated into the iso somehow in that data/sys directory when extracting an iso? I need to look into the issue and if its even possible, i think that wii vc list is untrue. its a big theory but they didnt leave enough info on how to remove metafortress protection, something is fishy lol.
 
Last edited by awesomeee,

creedof69

Well-Known Member
Newcomer
Joined
Apr 28, 2023
Messages
45
Trophies
0
Age
26
XP
124
Country
France
Use the Easy GCT embedder. https://www.dropbox.com/scl/fi/p945....zip?rlkey=n4uhselp912hchf19d1zeea5t&e=1&dl=0
Go to mkwii.com/gct and create a GCT file there. The rest is straightforward.
Post automatically merged:

@Vague Rant I tried putting Kirby Wii’s .ini file in the ISO’s data/sys directory. I noticed the metafortress patch had that same directory being “dolphin/data/sys” or something like that. It didnt work though. The WUP installable is still a black screen because of metafortress protection.

Metafortress protection is triggered when the main.dol is modified for more info, could an ips patch bypass that?

On the other hand, could the .ini file be incorporated into the iso somehow in that data/sys directory when extracting an iso? I need to look into the issue and if its even possible, i think that wii vc list is untrue. its a big theory but they didnt leave enough info on how to remove metafortress protection, something is fishy lol.
Hi awesomeee, is it necessary to install szs and wit before the cmd tool works ? Because It keep saying that there is no .GCT file in the gct folder (while I've put it in).
 

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,509
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,732
Country
@Vague Rant Do you have the game "Mushroom Men" on your list already? It has some wiimote shaking action but not so much as I remember. Yes, he is a fungus, but with super powers like telekinesis. I bet not everybody here knows about that hidden gem. Let the spore wars begin...
I didn't have that one on my list and I'm definitely in the group that doesn't know it. :D It sounds like a fun game concept, though. Will add it to the list of games to investigate.

Use the Easy GCT embedder. https://www.dropbox.com/scl/fi/p945....zip?rlkey=n4uhselp912hchf19d1zeea5t&e=1&dl=0
Go to mkwii.com/gct and create a GCT file there. The rest is straightforward.
Post automatically merged:

@Vague Rant I tried putting Kirby Wii’s .ini file in the ISO’s data/sys directory. I noticed the metafortress patch had that same directory being “dolphin/data/sys” or something like that. It didnt work though. The WUP installable is still a black screen because of metafortress protection.

Metafortress protection is triggered when the main.dol is modified for more info, could an ips patch bypass that?

On the other hand, could the .ini file be incorporated into the iso somehow in that data/sys directory when extracting an iso? I need to look into the issue and if its even possible, i think that wii vc list is untrue. its a big theory but they didnt leave enough info on how to remove metafortress protection, something is fishy lol.
Thanks for helping people get this stuff figured out, greatly appreciated.

Re: Metafortress, what that .ini file is doing is telling Dolphin which locations in the binary need to be patched to remove the DRM, so basically all of those code replacements need to be converted into something which can be applied directly (like an IPS file). It shouldn't be too bad in the scheme of things, the WiiWare hacks I've done recently are all a somewhat similar process in that I'm taking my assembly which would normally become a Gecko code and patching it directly into the main.dol. The SUKE01.ini file isn't Gecko codes, but it's not that far off them either:
INI:
0x80176B48:dword:0x48000090
0x80176E20:dword:0x60000000
All these are saying are "at this address, write the following dword (32-bit value)". And the values are just machine code. The first one is a branch forward by 90 bytes, the second one is a nop (no operation, i.e. do nothing). It's not even actually important to know what any of it does, all we need to do is replicate the same thing. You know what, this is simple enough, I'm gonna see if I can just do it now.

View attachment kirby-metaknight.zip

The above ZIP contains SUKE01.ini converted to both a Riivolution .xml and a standard .ips file. The former can be applied to the main.dol with wit dolpatch main.dol xml=kirby-metaknight.xml and the latter is just a normal IPS file you'd apply to the main.dol however you usually do (e.g. Floating IPS). You don't need both, they're just two ways to do the same thing. Then you'd rebuild the disc with your patched main.dol. I haven't tested this at all so I have no idea whether it will work. All credit remains to crediar who did the original hack, I literally just find-and-replaced it.

If anybody feels like testing this and letting me know whether it works, I'll do the same for the EUR/JPN releases.

One more thing: how do you make cc hacks for games like wiiware that dont have KPAD read function stuff?
If I can't track down the KPAD stuff via something like select_1obj_continue(), I usually come at it via WPADProbe(). That's (obviously) a function from WPAD, the low-level controller library, but there's a call of WPADProbe() near the start of KPADRead(). The major downside to this is that lots of other things also things call WPADProbe(). I'll generally set a breakpoint at the start of that function and then just sit somewhere "normal" in the game (basically meaning don't have the Home Button Menu open, they sometimes handle input differently to the main game).

By hitting Run in Dolphin a few times with that breakpoint set, you can get an idea of which calls of WPADProbe() are happening on every frame, via the link register in the Callstack section. Hopefully, there's not very many. When I'm doing this, I check each of those callers and figure out which one is KPADRead(), but that part is pretty unscientific. It's just that I've done enough Classic Controller hacks that I can sort of tell whether or not I'm looking at KPADRead() because the code is familiar. If I recognize it, it's probably KPADRead(), if I don't then it's something else. I guess you'd want to look for something you do recognize, like scroll down from the WPADProbe() call to see if you can find a place where three functions get called in quick succession (read_kpad_stick, acc and dpd).

Of course, some games (like Okami) just straight up do not use KPADRead() at all. In that case you'd have to do a low-level hack in WPAD, and I don't really know anything about that. I can sort of do button injections in WPAD, but how the more complicated stuff like accelerometer, IR pointer and even the analog sticks work in WPAD, no idea. (If anybody's hoping for Okami, sorry, that's not happening from me for that reason. Sad about that one.)



fluid-top.png


Curve Digital's Fluidity (USA)/Hydroventure (EUR) is a brilliant physics-based take on the Metroidvania formula where you play as a literal puddle of water. At the beginning of the game, all you can do is tilt the screen left and right to make the water flow in that direction. As you play, you gain more and more control over your water, from gathering your puddle into one big blob to whether it's in liquid, solid or gas form, with your new abilities providing you access to previously-inaccessible parts of the world.

More like Wetroid, am I right? Also, why are there so many Wii games about ink corrupting the world and needing to be cleaned up by the player? Both Epic Mickeys, both de Blobs, Fluidity, are there more of them? Anyway, the original controls are almost entirely motion-based, with tilting and shaking being the main methods of interaction.

Highlight for @awesomeee who was very interested in this game.
Fluidity makes heavy-handed use of the copy ("deflicker") filter, so I've also included a code to disable that for people who want sharper visuals.

Fluidity (USA)Hydroventure (EUR)

  1. Code:
    Classic Controller Support [Vague Rant]
    C21B37A4 00000014
    881E005C 2C000002
    4082008C 48000015
    BF400000 00000000
    C059999A 00000000
    7CA802A6 C09E006C
    C0450000 EC8400B2
    D09E05C4 FC802050
    D09E0058 C03E0070
    C0450000 EC2100B2
    D03E05BC C09E05C4
    809E0004 708000C0
    41820010 C0250008
    3880000B 48000014
    80850004 2C040000
    40810024 C025000C
    2C160001 40820010
    FC200850 D025000C
    3884FFFF D03E05C0
    90850004 389E000C
    60000000 00000000
    C21B4348 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8018CFA0
    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
    C21B52D0 00000013
    4E800421 2C160001
    40820088 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C0350074 FC200850
    39000004 48000021
    C0350078 39000001
    48000015 90950000
    90B50004 90D50008
    48000038 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 60840200
    7CC04039 40820008
    7CA54378 7C844378
    7CC62079 4E800020
    60000000 00000000
    C21B3204 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
    60C60800 71000020
    41820008 60C60002
    71002000 41820008
    60C60008 71000200
    41820008 60C60004
    71000080 41820008
    60C60040 71000004
    41820008 60C60080
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
    Code:
    Disable Copy Filter [Vague Rant]
    0417CB50 48000040
  2. Code:
    Classic Controller Support [Vague Rant]
    C21B3874 00000014
    881E005C 2C000002
    4082008C 48000015
    BF400000 00000000
    C059999A 00000000
    7CA802A6 C09E006C
    C0450000 EC8400B2
    D09E05C4 FC802050
    D09E0058 C03E0070
    C0450000 EC2100B2
    D03E05BC C09E05C4
    809E0004 708000C0
    41820010 C0250008
    3880000B 48000014
    80850004 2C040000
    40810024 C025000C
    2C160001 40820010
    FC200850 D025000C
    3884FFFF D03E05C0
    90850004 389E000C
    60000000 00000000
    C21B4418 0000001D
    90010024 2C040000
    408200D8 8803005C
    2C000002 408200CC
    48000015 8018D070
    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
    C21B53A0 00000013
    4E800421 2C160001
    40820088 4800000D
    3F000000 00000000
    7C6802A6 C0430000
    C0630004 80950000
    80B50004 80D50008
    C0350074 FC200850
    39000004 48000021
    C0350078 39000001
    48000015 90950000
    90B50004 90D50008
    48000038 FC000A10
    FC001040 4D800020
    FC011840 41800008
    5508083C 60840200
    7CC04039 40820008
    7CA54378 7C844378
    7CC62079 4E800020
    60000000 00000000
    C21B32D4 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
    60C60800 71000020
    41820008 60C60002
    71002000 41820008
    60C60008 71000200
    41820008 60C60004
    71000080 41820008
    60C60040 71000004
    41820008 60C60080
    71000400 41820008
    60C60010 71001000
    41820008 60C61000
    7CC73378 70C09FFF
    60000000 00000000
    Code:
    Disable Copy Filter [Vague Rant]
    0417CC20 48000040
View attachment FluidityHydroventure_ClassicControllerHack_v1.0.zip

The archive above includes several tools, IPS patches and a Windows batch script to make applying this hack directly to a WAD relatively painless.

In addition to that ZIP, you will need:
  • a Fluidity (USA)/Hydroventure (EUR) WAD
  • common-key.bin
I will not help you find either of the above.

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

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

  3. drag and drop your Fluidity/Hydroventure WAD onto the apply-patch.bat file

    • alternatively, you can run the script directly and drag and drop the WAD into the window that opens or just type the path to your WAD manually

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

  5. once you're ready, the script will use the included tools to unpack, patch and repack a new WAD with your chosen patch

    • the original WAD will not be modified

  6. do whatever you normally would do with a WAD file
As a general rule, you shouldn't download and run random executables and batch scripts you find on the Internet. If you can't or don't want to run any of these on your machine, the IPS patches are included in the patches directory and you can figure out how to apply them in whatever way you feel comfortable. There is a readme.txt included with slightly more details on how to apply the patches in platform-agnostic terms (e.g. "Unpack your WAD").

If you're building a Wii U Wii VC injection, normal Classic Controller emulation is fine for this game, you do not need to use the Force Classic Controller connected option. If you need some Wii U artworks, here's mine. I'm no kind of artist, so feel free to make better ones.

fluidity_iconTex.png fluidity_bootTvTex.png
hydroventure_iconTex.pnghydroventure_bootTvTex.png

Button Mapping​

Note that most of the abilities mentioned below are not available to players at the beginning of the game. You may consider this table to include gameplay spoilers. If you don't want to know what abilities you'll gain later in the game, just know that 1/2 are B/A, tilting is the Left Stick, shaking is ZL/ZR and various late-game abilities are on the Right Stick.

Wii RemoteClassic ControllerFunction
HomeHome
Works normally but remember that X is your A button
Open/Close Home Menu
D-PadD-Pad
Y (up)
L/R (left/right)
(see also Right Stick)
Menus
Navigation
Water
Spray (with B)
Control certain objects
Cloud
Blow Wind (with B)
AXOverworld
Enter Playroom
Gameplay
Zoom Out
BNot mappedNot used?
1BMenus
Cancel
Water
Gather
Ice
Stick
Cloud
Suck
2AMenus
Confirm
Water
Interact
Cloud
Lightning
PlusPlusOverworld
Options
Gameplay
Pause
MinusMinusOverworld
Tutorial
Gameplay
View Map
1 & D-PadRight StickWater
Spray (up)
Gather (down)
Cloud
Blow Wind
ShakeZL
ZR
Water/Ice
Jump
Cloud
Rain
TiltLeft StickGameplay
Movement
IR PointerLeft StickHome Button Menu
Navigation

General Notes​

  • After the tutorial, when you reach the overworld map screen, I recommend changing a couple of settings in the in-game Options menu (accessed via the Plus button):

    • Toggle the "Reticule" (Lolth, that's not spelled correctly) to Off.

      • This is meant to help you to visualize where straight is when tilting, but on an analog stick straight is just "when you're not moving the stick," so you really don't need it.

    • Toggle the Cloud up & down controls to Inverted.

      • I'm accurately simulating the directions of the accelerometer, which by default move the Cloud up when you tilt down and vice versa. I already thought this felt wrong with motion controls, but it feels even more wrong on an analog stick and that's coming from someone who always prefers flight-stick style inverted controls for 3D games. I just don't think it works in 2D.

  • The control scheme here is a mix of awesomeee's suggestions from this post and the controls from the 3DS sequel, Fluidity: Spin Cycle. For example, Jump (shake) is on ZL/ZR, which is similar to L/R in the 3DS game. Some mappings are also just practical problem solving, because Classic Controllers aren't Wii Remotes.

    • I did some testing early on with Jump on B, but adopting this change from the sequel allows 1/2 to retain their sensible B/A layout. I mentioned with Jett Rocket that I compromised my layout slightly to enable traditional B/A menu controls, but in this case, Curve canonized this layout in their next game, so I'm not even considering this to be a compromise. That said, the button injector assembly is in the Technical Notes section for anybody who wants to remap them.

  • The original game sometimes requires you to simultaneously use the accelerometer tilting and the Wiimote's D-Pad, which is not comfortable at all on the Classic Controller where both inputs are managed with the left thumb. There's two workarounds for this:

    • Firstly (because I think this method is better), you can use the Right Stick for most cases where the D-Pad is normally needed. This handles "pressing" the 1 button for you since you need to hold 1 while using the D-Pad for most actions. This allows those abilities to be controlled twin-stick style. Obviously, the diagonals also work: up-left, up-right, etc.

    • Secondarily, you can use the Y button for D-Pad Up, and L/R buttons for D-Pad Left/Right. Some interactive objects require the D-Pad, but only Left and Right are used, so L/R serves this purpose. Pressing B+Y (and optionally L/R) together can be used to perform abilities that require 1+D-Pad together if you don't want to do that on the Right Stick.

Technical Notes​

Code breakdown:
  • C2 in read_kpad_acc(): accelerometer handling, with separate tilt and shake input
  • C2 in calc_dpd_variable(): IR pointer emulation
  • C2 in read_kpad_ext(): Right Stick D-Pad+1 button emulation
  • C2 in read_kpad_button(): button injector
Code:
; read_kpad_button
; 801B3204 for USA
; 801B32D4 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, 0x800     ; a

    CLASSIC_Y:
      andi. r0, r8, 0x20
      beq- CLASSIC_L
      ori r6, r6, 0x2       ; right (v) / up (h)

    CLASSIC_L:
      andi. r0, r8, 0x2000
      beq- CLASSIC_R
      ori r6, r6, 0x8       ; up (v) / left (h)

    CLASSIC_R:
      andi. r0, r8, 0x200
      beq- CLASSIC_ZL
      ori r6, r6, 0x4       ; down (v) / right (h)

    CLASSIC_ZL:
      andi. r0, r8, 0x80
      beq- CLASSIC_ZR
      ori r6, r6, 0x40      ; shake 1

    CLASSIC_ZR:
      andi. r0, r8, 0x4
      beq- CLASSIC_PLUS
      ori r6, r6, 0x80      ; shake 2

    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
This hack was worked on alongside Jett Rocket; the Dash maneuver forms the basis of the Rain move here. In both cases, the shake button rather than being either a single shake/swing or shaking for as long as the player holds the button, inputs a continuous shake for a set number of frames (15 for Jett Rocket, 11 for Fluidity) after the user presses the shake button. This is great for games with more finicky shake detection, which expect shakes to continue for a specific period.

The accelerometer implementation here is actually sending contradictory information out via the individual axes and the calc_acc_vertical() function. This is a trick I did so that shaking (jumping) doesn't affect the tilting of the screen. You can continue to tilt independently of any shaking. Even if you do something goofy like constantly mashing the ZL/ZR buttons to shake permanently, tilting will be unaffected.
 

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
46
Trophies
0
XP
75
Country
United States
OH MY GODDDDDDDDDDDDDDDDDDDDDDDDDDDDD!!!!!!!!!!!!!!!!!
LETS GOOOOOOOOOOOOOOOOO
THANK YOU SO MUCHHHHHHHHHHHHHHHHHHHHHHHHHH
Post automatically merged:

@Vague Rant Im getting error ret = -1022 using YAWM installing the patched wad, YAWM, any idea what that is? Maybe its a one time error, it crashed shortly after, ill try again when i get home 👍
 
Last edited by awesomeee,

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,509
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,732
Country
@Vague Rant Im getting error ret = -1022 using YAWM installing the patched wad, YAWM, any idea what that is? Maybe its a one time error, it crashed shortly after, ill try again when i get home 👍
Huh, I'm not sure why that's happening. Googling the error code, apparently it means a hash mismatch in the TMD (title metadata) included in the WAD. I don't really know anything at all about rebuilding WADs, the tools I include in the ZIP handle it and I've just been assuming they do it correctly. In this case, the 00000001.app is being modified, but maybe the TMD is not updated by the repacker? The WAD works fine on my end though, I have it installed on my Wii U right now. I use Wii Mod Lite for all my WAD installs, not sure if it could be a matter of which app is being used on the Wii side?
 
  • Like
Reactions: awesomeee

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
46
Trophies
0
XP
75
Country
United States
Huh, I'm not sure why that's happening. Googling the error code, apparently it means a hash mismatch in the TMD (title metadata) included in the WAD. I don't really know anything at all about rebuilding WADs, the tools I include in the ZIP handle it and I've just been assuming they do it correctly. In this case, the 00000001.app is being modified, but maybe the TMD is not updated by the repacker? The WAD works fine on my end though, I have it installed on my Wii U right now. I use Wii Mod Lite for all my WAD installs, not sure if it could be a matter of which app is being used on the Wii side?
I think YAWM has safety measures why it wont let me download it if theres that tmd thing you are talking about, Wiimod lite might not have the restriction.

Also, apparently wiimod lite is like an illegal software that larsen messed with or something, but im not sure of the story
Post automatically merged:

@Vague Rant I tried wiimodlite but i also got the TMD issue. Im going to remake the fluidity wad.
Post automatically merged:

Update, it still isnt working. Whats going on? Is my common key invalid? Is the WAD bad?
@Vague Rant I think this is the issue. How do i fix this? I made sure my common key was correct, but this LZX issue is here. The contents of my WAD seem to be corrupted, this is getting stressful
Post automatically merged:

@Vague Rant Good news! Your kirby wii patch works. Metafortress removal has been embedded into the iso.
 

Attachments

  • Screenshot 2024-11-18 150357.png
    Screenshot 2024-11-18 150357.png
    7.9 KB · Views: 1
  • Screenshot 2024-11-18 151328.png
    Screenshot 2024-11-18 151328.png
    4.2 KB · Views: 1
  • Screenshot 2024-11-18 175114.png
    Screenshot 2024-11-18 175114.png
    18.3 KB · Views: 1
Last edited by awesomeee,

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,509
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,732
Country
Update, it still isnt working. Whats going on? Is my common key invalid? Is the WAD bad?
@Vague Rant I think this is the issue. How do i fix this? I made sure my common key was correct, but this LZX issue is here. The contents of my WAD seem to be corrupted, this is getting stressful
I know you said you checked it, but this definitely seems like a bad common-key issue. When the wadunpacker tool unpacks your WAD, it uses the common-key as a sort of password to know how all of the data should be decrypted. If you give it the wrong password, it will seem like it unpacked, but the data will all "decrypt" into random gibberish. That's why lzx doesn't recognize it as a valid lz-compressed file and all the other WAD contents are also corrupted.

@Vague Rant Good news! Your kirby wii patch works. Metafortress removal has been embedded into the iso.
That's super awesome, very glad to hear that. I'll do the EUR/JPN versions as well when I get a chance.

EDIT:
View attachment kirby-metaknight-uej.zip


EDIT 2: In the process of testing just now, I discovered that for Kirby's Adventure Wii (the EUR release of Return to Dream Land), Dolphin's Metafortress bypass in SUKP01.ini was broken. Since that's also what was used to generate the above patch, it was also broken. I've attached a corrected version below. If you downloaded it before this edit, your EUR patch is bad. The USA and JPN patches are completely fine, but if you were intending to patch the EUR version, download again. Please understand.

View attachment kirby-metaknight-uej_v1.1.zip

I've also made a pull request to Dolphin with this fix for anybody who likes to follow that sort of thing.
 
Last edited by Vague Rant,

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
46
Trophies
0
XP
75
Country
United States
I know you said you checked it, but this definitely seems like a bad common-key issue. When the wadunpacker tool unpacks your WAD, it uses the common-key as a sort of password to know how all of the data should be decrypted. If you give it the wrong password, it will seem like it unpacked, but the data will all "decrypt" into random gibberish. That's why lzx doesn't recognize it as a valid lz-compressed file and all the other WAD contents are also corrupted.

Gotcha. Ill be sure to fix my common key soon. Its pretty funny how the wad gets corrupted and stuff like that picture i sent honestly, thanks a bunch dude
 
  • Like
Reactions: Vague Rant

NestorM

Well-Known Member
Newcomer
Joined
Feb 19, 2021
Messages
98
Trophies
0
Age
39
XP
1,054
Country
France
I know you said you checked it, but this definitely seems like a bad common-key issue. When the wadunpacker tool unpacks your WAD, it uses the common-key as a sort of password to know how all of the data should be decrypted. If you give it the wrong password, it will seem like it unpacked, but the data will all "decrypt" into random gibberish. That's why lzx doesn't recognize it as a valid lz-compressed file and all the other WAD contents are also corrupted.


That's super awesome, very glad to hear that. I'll do the EUR/JPN versions as well when I get a chance.

EDIT:
View attachment kirby-metaknight-uej.zip

EDIT 2:
In the process of testing just now, I discovered that for Kirby's Adventure Wii (the EUR release of Return to Dream Land), Dolphin's Metafortress bypass in SUKP01.ini was broken. Since that's also what was used to generate the above patch, it was also broken. I've attached a corrected version below. If you downloaded it before this edit, your EUR patch is bad. The USA and JPN patches are completely fine, but if you were intending to patch the EUR version, download again. Please understand.

View attachment 472029

I've also made a pull request to Dolphin with this fix for anybody who likes to follow that sort of thing.
You're the king, thank you. Is this possible to edit the existent cc hack code of Kirby and add shake emulation ?
 
  • Like
Reactions: Vague Rant

CheeseBurgerwithLove

Well-Known Member
Member
Joined
Jul 3, 2023
Messages
131
Trophies
1
Age
25
XP
573
Country
United States
Off topic.

Maybe I remember wrong but I think Prince of Persia Forgotten Sands also has metafortress protection? I played it many years ago and I remember that in USBL GX I could never get it to work (black screen) and in CFG USB I got random crashes because of this protection.
 

awesomeee

Well-Known Member
Newcomer
Joined
Oct 7, 2024
Messages
46
Trophies
0
XP
75
Country
United States
Okay, this common key issue is getting annoying. I have it obtained, but i dont know if im converting it to a .bin file correctly. Do i just put the key in a hex editor then save it as a .bin? It keeps giving me the lzx error and im honestly not sure what to do.
Post automatically merged:

@Vague Rant I think your software is having issues with my common key or something, i dumped my key with xyzzy to make sure its 1/1 dumped, but it always throws the lzx error. I copy paste the key, put it in a hex editor then save it as a bin, does the software expect some other format?
 
Last edited by awesomeee,

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,509
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,732
Country
Off topic.

Maybe I remember wrong but I think Prince of Persia Forgotten Sands also has metafortress protection? I played it many years ago and I remember that in USBL GX I could never get it to work (black screen) and in CFG USB I got random crashes because of this protection.
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.

Okay, this common key issue is getting annoying. I have it obtained, but i dont know if im converting it to a .bin file correctly. Do i just put the key in a hex editor then save it as a .bin? It keeps giving me the lzx error and im honestly not sure what to do.
Post automatically merged:

@Vague Rant I think your software is having issues with my common key or something, i dumped my key with xyzzy to make sure its 1/1 dumped, but it always throws the lzx error. I copy paste the key, put it in a hex editor then save it as a bin, does the software expect some other format?
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 common-key-tester.zip

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.



H2x1_Wii_KirbysAdventureWii_image1600w.jpg


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​

Wii RemoteClassic ControllerFunction
HomeHome
Works normally but remember that ZL/ZR are your A buttons
Open/Close Home Menu
D-PadD-Pad
Left Stick
Menus
Navigation
Gameplay
Movement
Some Shaking
AZL
ZR
Gameplay
Guard
BNot mappedNot used?
1B/A Style
B
Y/B Style
Y
Menus
Cancel
Gameplay
Inhale
Use Copy Ability
2B/A Style
A
Y/B Style
B
Menus
Confirm
Gameplay
Jump
Float
PlusPlusGameplay
Pause
MinusMinus
B/A Style
Y
Y/B Style
A
Gameplay
Release Copy Ability
ShakeX
L
R
Gameplay
Various
IR PointerLeft StickHome Button Menu
Navigation

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
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: https://m.youtube.com/watch?v=NYfwRtS9Rmc&pp=ygUbVGhleSBjYWxsIGl0IGEgYW91cCBraXRjaGVu