- Joined
- Aug 7, 2008
- Messages
- 2,512
- Trophies
- 2
- Location
- Melbourne
- Website
- vaguerant.tumblr.com
- XP
- 3,771
- Country
That's super cool, love to hear that it works well on Wii U as well. I've got a Wii U myself, but I do all my testing on an original Wii just because it's so much faster than building a whole separate injection any time I make a code change or whatever. It's also nice that I can "expand the Wii U library" like that, since as much as I love it, it's missing a lot of the weirder, more niche stuff that made the Wii great.I also wanted to say thank you very much for your hard work and effort. It's easy to ask about specific games to be classic controller hacked, but it looks very complicated from your documentation. I guess I need a masters degree in computer science to do that. Thought it would be easier like to fiddle around with a gecko code, but this is real magic you are doing here. Yesterday I have tested de Blob on the wii u gamepad and it feels like a different game, always ment to be for the wii u system
Whoops! Thanks for noticing this, I've updated the Rhythm Heaven codes with a v1.1 that maps the 1 and also 2 button, just in case.THANK U SOO MUCH!
Also i think the 1 button on WiiMote is used in the hi-hat toy to play a demo, haha
Sorry, I'm not aware of anywhere these are available pre-built. Even I don't have them pre-built, since I test on a regular Wii with Gecko codes. Good luck!Hi @Vague Rant and thank you for those amazing wii stuffs. Do you know if there is a place to download cc hack already dolpatched iso ? (for making wii u injects) My computer is a piece of s*** and i can't make it myself. Many thanks.
Looks a bit more complex than most since you need to charge up your swings/pitches via motion controls, but nothing that seems impossible off the bat (pun). I'll add it to my list of games to investigate.Thank you for all the effort you've put into these
Do you think it would be feasible to make a CC hack for Mario Super Sluggers?
Whoops again! That's completely on me, you're not being dumb at all. I was using the fast cursor speed for testing and forgot to put it back to the intended one before releasing the code. I've edited the codes now, v1.1 has the "medium" cursor speed which is what I meant to release, but of course you can still edit it to any other value. Otherwise super glad to hear you're enjoying it! I'm pretty happy with this one since Wii U never got a real Animal Crossing. Admittedly, you could already play the GameCube one, but having the Wii game on GamePad is about as close as it gets to a native Wii U Animal Crossing.Thank you so much for this! I'm able to play ACCF on my Wii U with the gamepad now Only thing is I can't find the text to slow down the cursor in the text (maybe I'm just being dumb!) I am looking at Europe Rev. 1 so maybe that's it! Honestly it doesn't even matter that much I'm just so happy this has been done after all these years!
The second (and final) chapter in Square Enix's Mario X Final Fantasy crossover sports series, Mario Sports Mix builds on Mario Hoops 3-on-3 aka Mario Slam Basketball by adding three more sports to the lineup with Hockey, Dodgeball and Volleyball. Looking deceptively spartan on first glance, most of the game's unique content is hidden behind the Tournament menu selection, which reveals a full story mode with unlockable characters and an unexpected final boss. Sports Mix saw a muted reception at launch because none of the games reached the depth of the dedicated single-sport Mario titles (at least the ones released up to that point; Mario Smash Tennis wasn't out yet!) and the
Highlight for @awesomeee, who asked about this game.
USAEuropeJapan
-
Code:
Classic Controller Support [Vague Rant] C206FCE4 00000002 28040001 41820008 28040002 00000000 C206FFD0 00000003 3884FFFF 2C040001 40820008 3884FFFF 60000000 00000000 040701C0 28040003 04070C40 28040003 04070E44 28050003 C230D140 0000000A 8803005C 2C000002 4082003C 4800000D 00000000 4059999A 7CE802A6 C0870000 D08305BC 801E0004 700000C0 41820014 C0870004 70000080 41820008 FC802050 D08305C0 D08305C4 60000000 00000000 C230DCD8 00000024 90010024 2C040000 40820110 8803005C 2C000002 40820104 48000021 802C2680 3FAAAAAB 3C23D70A 00000000 00000000 3DCCCCCD 3F800000 7CA802A6 90A1000C 5727083C 38E7000C C0030074 FC000210 C0230078 FC200A10 FC00082A C0450014 FC001040 4180000C 38C0012C 48000014 7CC53AAE 28060000 408100A0 38C6FFFF 7CC53B2E 38C00002 98C3005E 81850000 7D8803A6 4E800021 2C030001 7FE3FB78 80A1000C C0450004 40820008 EC4200B2 C0650008 C0030020 C0230074 FC211024 4800002D D0030020 C0030024 C0230078 FC200850 48000019 D0030024 80010024 7C0803A6 38210020 4E800020 FC0100FA C0250018 FC000800 4180000C FC000890 48000014 FC200850 FC000800 41810008 FC000890 4E800020 60000000 00000000 0430EC28 7FC3F378 C230CB94 0000001A 2C040002 408200C0 38800001 71000800 41820008 60C68000 71000001 41820008 60C60008 71004000 41820008 60C60004 71000002 41820008 60C60001 71008000 41820008 60C60002 71000010 41820008 60C60800 71000040 41820008 60C60080 71000008 41820008 60C60C00 71000020 41820008 60C60040 71002000 41820008 60C64001 71000200 41820008 60C60082 71000080 41820008 60C62000 71000004 41820008 60C60400 71000400 41820008 60C60010 71001000 41820008 60C61000 7CC73378 70C09FFF 60000000 00000000
-
Code:
Classic Controller Support [Vague Rant] C206FD14 00000002 28040001 41820008 28040002 00000000 C2070000 00000003 3884FFFF 2C040001 40820008 3884FFFF 60000000 00000000 040701F0 28040003 04070C70 28040003 04070E74 28050003 C230D1D0 0000000A 8803005C 2C000002 4082003C 4800000D 00000000 4059999A 7CE802A6 C0870000 D08305BC 801E0004 700000C0 41820014 C0870004 70000080 41820008 FC802050 D08305C0 D08305C4 60000000 00000000 C230DD68 00000024 90010024 2C040000 40820110 8803005C 2C000002 40820104 48000021 802C2710 3FAAAAAB 3C23D70A 00000000 00000000 3DCCCCCD 3F800000 7CA802A6 90A1000C 5727083C 38E7000C C0030074 FC000210 C0230078 FC200A10 FC00082A C0450014 FC001040 4180000C 38C0012C 48000014 7CC53AAE 28060000 408100A0 38C6FFFF 7CC53B2E 38C00002 98C3005E 81850000 7D8803A6 4E800021 2C030001 7FE3FB78 80A1000C C0450004 40820008 EC4200B2 C0650008 C0030020 C0230074 FC211024 4800002D D0030020 C0030024 C0230078 FC200850 48000019 D0030024 80010024 7C0803A6 38210020 4E800020 FC0100FA C0250018 FC000800 4180000C FC000890 48000014 FC200850 FC000800 41810008 FC000890 4E800020 60000000 00000000 0430ECB8 7FC3F378 C230CC24 0000001A 2C040002 408200C0 38800001 71000800 41820008 60C68000 71000001 41820008 60C60008 71004000 41820008 60C60004 71000002 41820008 60C60001 71008000 41820008 60C60002 71000010 41820008 60C60800 71000040 41820008 60C60080 71000008 41820008 60C60C00 71000020 41820008 60C60040 71002000 41820008 60C64001 71000200 41820008 60C60082 71000080 41820008 60C62000 71000004 41820008 60C60400 71000400 41820008 60C60010 71001000 41820008 60C61000 7CC73378 70C09FFF 60000000 00000000
-
Code:
Classic Controller Support [Vague Rant] C206FC94 00000002 28040001 41820008 28040002 00000000 C206FF80 00000003 3884FFFF 2C040001 40820008 3884FFFF 60000000 00000000 04070170 28040003 04070BF0 28040003 04070DF4 28050003 C230D100 0000000A 8803005C 2C000002 4082003C 4800000D 00000000 4059999A 7CE802A6 C0870000 D08305BC 801E0004 700000C0 41820014 C0870004 70000080 41820008 FC802050 D08305C0 D08305C4 60000000 00000000 C230DC98 00000024 90010024 2C040000 40820110 8803005C 2C000002 40820104 48000021 802C2640 3FAAAAAB 3C23D70A 00000000 00000000 3DCCCCCD 3F800000 7CA802A6 90A1000C 5727083C 38E7000C C0030074 FC000210 C0230078 FC200A10 FC00082A C0450014 FC001040 4180000C 38C0012C 48000014 7CC53AAE 28060000 408100A0 38C6FFFF 7CC53B2E 38C00002 98C3005E 81850000 7D8803A6 4E800021 2C030001 7FE3FB78 80A1000C C0450004 40820008 EC4200B2 C0650008 C0030020 C0230074 FC211024 4800002D D0030020 C0030024 C0230078 FC200850 48000019 D0030024 80010024 7C0803A6 38210020 4E800020 FC0100FA C0250018 FC000800 4180000C FC000890 48000014 FC200850 FC000800 41810008 FC000890 4E800020 60000000 00000000 0430EBE8 7FC3F378 C230CB54 0000001A 2C040002 408200C0 38800001 71000800 41820008 60C68000 71000001 41820008 60C60008 71004000 41820008 60C60004 71000002 41820008 60C60001 71008000 41820008 60C60002 71000010 41820008 60C60800 71000040 41820008 60C60080 71000008 41820008 60C60C00 71000020 41820008 60C60040 71002000 41820008 60C64001 71000200 41820008 60C60082 71000080 41820008 60C62000 71000004 41820008 60C60400 71000400 41820008 60C60010 71001000 41820008 60C61000 7CC73378 70C09FFF 60000000 00000000
Button Mapping
In addition to the regular button-for-button mappings, Mario Sports Mix makes use of a couple of button/motion combinations. Since the Classic Controller had some leftover buttons after mapping the original functionality, button combos have also been placed on individual buttons for some functions. Also, there's four games in here, this table will get ridiculous if I cover every gameplay feature, so if I say that A means Pass, assume that A means Pass in sports where that's relevant (Basketball, Hockey, Dodgeball) and not in sports where it isn't (Volleyball), etc. You get what I'm saying here.Wii Remote & Nunchuk | Classic Controller | Game Function |
---|---|---|
Wiimote Home | Home Remember to use the Right Stick | Open Home Menu |
Wiimote D-Pad | D-Pad | Menus Navigation Gameplay Dodgeball Fake-Out (with Shake) |
Wiimote D-Pad & Shake | R | Gameplay Dodgeball Fake-Out |
Wiimote A | A | Menus Confirm Gameplay Pass |
Wiimote B | ZR | Menus Cancel Gameplay Use Item |
Wiimote A & B | X | Gameplay Special Move |
Wiimote 1 & 2 | Not mapped | Not used? (I refuse to learn this lesson) |
Wiimote Plus | Plus | Menus Settings Gameplay Pause |
Wiimote Minus | Minus | Not used? |
Wiimote Swing Down | B | Gameplay Jump/Shoot/etc. Volleyball Underhand |
Wiimote Swing Up | Y | Gameplay Jump/Shoot/etc. Volleyball Overhand |
Wiimote IR Pointer | Right Stick | Menus Navigation |
Nunchuk Stick | Left Stick | Menus Navigation Gameplay Movement |
Nunchuk C | L | Gameplay Switch with CPU Teammates |
Nunchuk Z | ZL | Gameplay Basketball Trick Hockey Charge Shot |
General Notes
- I didn't mention it in the table above because it just complicates things, but you can also move left/right through menus with the L/R buttons. Not a big deal, but makes it feel slightly more "native" to Classic Controller. This is basically a complete accident. Since I was already mapping D-Pad+Shake to R for the Dodgeball Fake-Out move, I realized I could D-Pad Right and get menu navigation as a bonus feature, doing the opposite on L. Fun trick.
- It feels kind of extravagant to have two whole Wiimote Swing buttons when the game barely uses them (only Volleyball cares which direction you swing), but you know, oh well. This whole game is playable on a sideways Wii Remote, so we're overflowing with spare buttons anyway. Besides, I find the games feel more natural when using different buttons even though they ultimately have the same functionality: I like using Y to shoot for goal in Hockey, but B to jump in Basketball.
- Speaking of solo Wiimote, I considered pulling a Donkey Kong and doing a double CC hack allowing both control schemes to be emulated, but I don't think it's really warranted for this game. Where Donkey Kong is a 2D platformer and some players will prefer to play with traditional controls, there's no real benefit to the Wiimote control scheme here. It's just the same thing condensed down to fewer buttons and missing analogue movement controls. If you want to play on the D-Pad, you'll have to stick to using an actual physical Wiimote, sorry.
Technical Notes
Code breakdown:
C2
,C2
,04
,04
,04
Various Nunchuk checks. These are very brief, essentially just saying "Classic is fine too," we're not doing any actual input redirection in here, which I'll explain later.
C2
Down/Up Wiimote Swings inread_kpad_acc()
.
C2
IR pointer incalc_dpd_variable()
; literally unchanged from Rhythm Heaven, so that paid off nicely.
04
I'm pretty excited about this one inread_kpad_ext()
. In previous hacks for Nunchuk games, my approach has been to track down everywhere that the Nunchuk analog stick is read and add some code there to check whether this is a Nunchuk or Classic Controller, redirecting analog stick reads to the appropriate address for each. For this one, I am instead redirecting the Classic Controller left stick into the Nunchuk field, so that the original analog reading code works unchanged. The way KPAD works, the Classic Controller already uses this field, which was a problem before now, but ever since I switched to the new button injector, I'm actually injecting the buttons before they ever reach that address ...
C2
... which happens here inread_kpad_button()
. After we've already read the Classic Controller button values, we say "I'm a Nunchuk, actually. Please don't bother processing the Classic Controller button values." This leaves the Classic Controller button fields, which are also the Nunchuk analog stick addresses, completely empty, allowing us to drop the Classic analog in there and have the game pick it up more easily than my previous approach.