I will look into it, and like i just read the readme file, you're awesome !
I will look into it, and like i just read the readme file, you're awesome !
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.Any chances for Zelda Skyward sword to receive this amazing upgrade?
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.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.
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
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
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
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
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
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
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
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
common-key.bin
common-key.bin
to that directoryapply-patch.bat
filepatches
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").Wii Remote/Nunchuk | Classic Controller | Function |
---|---|---|
Wiimote Home | Home Works normally | Open/Close Home Menu |
Wiimote D-Pad Left/Right | D-Pad Left/Right Right Stick Left/Right | Gameplay Camera Rotation |
Wiimote D-Pad Up | D-Pad Up Y L ZL | Gameplay Re-Center Camera |
Wiimote A | A | Menus Confirm Gameplay Jump |
Wiimote B | B | Menus Cancel Gameplay Interact |
Wiimote 1 & 2 | Not mapped | Not used? |
Wiimote Plus | Plus | Gameplay Pause |
Wiimote Minus | Minus | Menus Delete Save |
Wiimote Shake | X R ZR | Gameplay Dash/Air Dash Charge Rocket |
Wiimote Pointer | Left Stick Right Stick | Menus Navigation |
Nunchuk Stick | Left Stick | Gameplay Movement |
Nunchuk C & Z | Not mapped | Not used? |
C2
: bypass Nunchuk checkC2
: allow reading Classic Controller Left Stick as Nunchuk Stick04
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 itC2
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 triggerC2
in calc_dpd_variable()
: IR pointer emulation04
and C2
in read_kpad_ext()
: inject CC Left Stick into Nunchuk stick, add left/right D-Pad emulation on CC Right StickC2
in read_kpad_button()
: button injectorC2
code with CodeWrite.; 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
; 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
C2
code into the IPS patch or anything like that, that won't work.Use the Easy GCT embedder. https://www.dropbox.com/scl/fi/p945....zip?rlkey=n4uhselp912hchf19d1zeea5t&e=1&dl=0hi there, thanks for the amazing work. is there a method to create files so i can inject them into the iso? Thanks.
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).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.
Yes, i think so.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).
I didn't have that one on my list and I'm definitely in the group that doesn't know it. It sounds like a fun game concept, though. Will add it to the list of games to investigate.@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...
Thanks for helping people get this stuff figured out, greatly appreciated.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.
.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:0x80176B48:dword:0x48000090
0x80176E20:dword:0x60000000
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 I can't track down the KPAD stuff via something likeOne more thing: how do you make cc hacks for games like wiiware that dont have KPAD read function stuff?
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).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
).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.)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
Disable Copy Filter [Vague Rant]
0417CB50 48000040
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
Disable Copy Filter [Vague Rant]
0417CC20 48000040
common-key.bin
common-key.bin
to that directoryapply-patch.bat
filepatches
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").Wii Remote | Classic Controller | Function |
---|---|---|
Home | Home Works normally but remember that X is your A button | Open/Close Home Menu |
D-Pad | D-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) |
A | X | Overworld Enter Playroom Gameplay Zoom Out |
B | Not mapped | Not used? |
1 | B | Menus Cancel Water Gather Ice Stick Cloud Suck |
2 | A | Menus Confirm Water Interact Cloud Lightning |
Plus | Plus | Overworld Options Gameplay Pause |
Minus | Minus | Overworld Tutorial Gameplay View Map |
1 & D-Pad | Right Stick | Water Spray (up) Gather (down) Cloud Blow Wind |
Shake | ZL ZR | Water/Ice Jump Cloud Rain |
Tilt | Left Stick | Gameplay Movement |
IR Pointer | Left Stick | Home Button Menu Navigation |
C2
in read_kpad_acc()
: accelerometer handling, with separate tilt and shake inputC2
in calc_dpd_variable()
: IR pointer emulationC2
in read_kpad_ext()
: Right Stick D-Pad+1 button emulationC2
in read_kpad_button()
: button injector; 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
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.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@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
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.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, the00000001.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 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.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
That's super awesome, very glad to hear that. I'll do the EUR/JPN versions as well when I get a chance.@Vague Rant Good news! Your kirby wii patch works. Metafortress removal has been embedded into the iso.
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.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.
You're the king, thank you. Is this possible to edit the existent cc hack code of Kirby and add shake emulation ?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 inSUKP01.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.
Spoilers, not sure yet but I'm looking into it currently.You're the king, thank you. Is this possible to edit the existent cc hack code of Kirby and add shake emulation ?
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.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.
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-byteOkay, 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?
common-key.bin
. Attached is a batch script you can use to test your common-key.bin
.common-key.bin
onto it. It should give you an output like this: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.
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.
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
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
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
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
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
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
Wii Remote | Classic Controller | Function |
---|---|---|
Home | Home Works normally but remember that ZL/ZR are your A buttons | Open/Close Home Menu |
D-Pad | D-Pad Left Stick | Menus Navigation Gameplay Movement Some Shaking |
A | ZL ZR | Gameplay Guard |
B | Not mapped | Not used? |
1 | B/A Style B Y/B Style Y | Menus Cancel Gameplay Inhale Use Copy Ability |
2 | B/A Style A Y/B Style B | Menus Confirm Gameplay Jump Float |
Plus | Plus | Gameplay Pause |
Minus | Minus B/A Style Y Y/B Style A | Gameplay Release Copy Ability |
Shake | X L R | Gameplay Various |
IR Pointer | Left Stick | Home Button Menu Navigation |
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.main.dol
like so:wit dolpatch main.dol xml=kirby-metaknight-usa.xml
04
in isExtConnected()
and 04
in isClassicValid()
: disable bad extension errorC2
in read_kpad_acc()
: shake emulationC2
in calc_acc_variable()
: IR pointer emulationC2
in read_kpad_ext()
: D-Pad emulationC2
in read_kpad_button()
: button injection; 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