I realize there are versions available on other consoles and on PC which would make a classic controller hack a little bit redundant, but Marvel Ultimate Alliance on Wii always felt basically unplayable to me because of its very finicky motion controls.
I have no idea how difficult it would be to add classic controller support for it, I imagine it wouldn't be easy so I have zero expectations of seeing it done without like a full-on romhack of the game (which again would be kind of a waste of time since it's on other consoles and on PC). But the idea of the game actually being made more playable on Wii is kind of nice. It's probably the worst treatment of any multiplatform game on Wii, at least as far as I know (there are still plenty I've never played).
Even if a classic controller hack wasn't exactly like how it plays on other consoles, anything would be better than the motion controls. But again, I have zero expectations here and with other consoles and PC to play on, it doesn't really need a controller hack.
I loved Endless Ocean, that was a cool game. I never played the second one, but I know the first one was all based around using the Wiimote IR pointer, so it's not exactly optimized for playing with an analog stick whereas I assume the controls in the second game were adjusted to work without a pointer. I do have kind of an idea though: since the game has third-person and first-person segments, perhaps something like the Metroid: Other M approach where pointer mode is toggle-able would work. But instead of toggling between off and on, it would toggle between absolute movement which you would use to swim in third-person and a cursor you could use to point at objects in first-person. This is all just theorycrafting for now, but it would be interesting to see how well a system like that worked on a traditional controller. I'll have to play the original game a bit and see if it looks feasible.
I wish I could, but this is basically something Nintendo would have to fix on their end, and they're not helping. There's basically no way to debug that situation: there's no emulator that specifically supports Wii U Classic Controller emulation, there's no GameCube memory card ports to plug in a USB debugger, so it's impossible to know what's going on inside the game's memory when a game like this is running, and so impossible to know why it isn't working. New Super Mario Bros. Wii is another one like this, just refuses to recognize that the Wii U's controller emulation exists and offers no way to determine why not. The best hope is probably that somebody adds Wii U Classic Controller emulation as a feature within the Dolphin emulator, so that we can debug why it isn't working. Until then, it's kind of a mystery.
Continuing the Wii's run of controversial sequels (or I guess preceding it, this might be the first one?), Super Paper Mario was the first game in the series to move away from the RPG gameplay of the first two entries. This action-puzzler continued in the story-focussed vein of the earlier titles, but with real-time combat and an emphasis on viewing the world from different perspectives, with Mario's new ability to move between 2D and 3D being the main focus. Though extremely well received, others felt this game marked a turning point in the franchise towards lesser games which lost the spirit of the first two games. Still, you can't blame this game for what came next. Or maybe you can: this remains the best-selling entry in the entire Paper Mario franchise. Highlight for @leejaclane who asked about this game.
This game handles menu controls separately from movement, so to navigate menus you must use the D-Pad. In gameplay, you can move Mario and the Tippi cursor around with the left analog stick, but all menus are D-Pad only.
They released eight different revisions of this game counting all international releases. I've only hacked the final revision received in each region, so that's Rev 2 for USA, Rev 1 for Europe and Japan, and Rev 0 for Korea. If you have a different version of the game, these hacks will not work. If you can give me a compelling reason to hack the other revisions I might come back to them, but jeez eight different releases.
I normally advocate for the Y/B layout for platform games, but this really isn't a platform game in any meaningful sense and the Paper Mario series has long since decided that A is its dedicated confirm and jump button, so I went for consistency with the rest of the Paper series over Y/B platform Mario.
Technical Notes
When this game was suggested, I speculated that I might be able to essentially reuse the work I did on Metroid here. That seemed true initially, with this hack coming together pretty quickly, but then I hit a roadblock in the Home Button Menu. The HBM requests a status report from the low-level WPAD library every 64 frames, and this was triggering a reinitialization of the Classic Controller and IR pointer, which notably meant the pointer would completely stop working. I couldn't figure out what caused this, so my solution was just to disable the 64 frame timer in the HBM library update() function which calls getInfoAsync(), which is the first line (04) in this code. I don't think this broke anything but if the Home Button Menu does anything weird, that's probably why. The rest is pretty stock ports of the pointer, stick emulation and button injector from Metroid.
Credits
#wiidev on EFNet for idling while I asked questions about WPAD. Nobody answered them, but I like to think we all had a fun time.
Ok no problem. Thanks for answer. I have a question. Donkey Kong Country Returns already have a cc patch, but it's only playable with dpad. Can you make something to make it playable with both dpad and left thumbstick ?
Well, I tried the RE4 hack and it's amazing!! finally we can play with any controls without extra steps.
(I would like to learn how to remap some buttons, can you give us some indication of where to start learning?)
I'll definitely try super paper mario with a classic controller, I've been playing it through RVLoader and a gamecube controller.
Again, @Vague Rant thank you so much for your work. I feel that the Wii had a lot of potential with all the control schemes available and they didn't want to adapt them.
If you mean remapping the controls of Resident Evil 4, I wouldn't really have any idea, especially when it comes to GameCube controllers. As far as remapping the controls in one of these Classic Controller hacks, you're looking at something like this.
Code:
70C30800 41820008 60A58000 70C30001 41820008 60A50002 70C34000 41820008 60A50001 70C30002 41820008 60A50008
btn 0800 btn 8000 btn 0001 presses btn 0002 btn 4000 btn 0001 btn 0002 btn 0008
CC Home presses WM Home CC D-Up presses WM D-Up CC D-Dwn presses WM D-Dwn CC D-Lft presses WM D-Lft
So if for some bizarre reason you wanted the CC Home button to press the Wiimote B button, you'd change 60A58000 (Wiimote button 8000) to 60A50400 (Wiimote button 0400).
I've actually been thinking I should open a GitHub repo where I post the actual assembly codes. That would look more like this:
Code:
BTN_HOME:
li r5, 0x0
andi. r3, r6, 0x800
beq- BTN_UP
ori r5, r5, 0x8000 ; home
BTN_UP:
andi. r3, r6, 0x1
beq- BTN_DOWN
ori r5, r5, 0x2 ; d-pad up
BTN_DOWN:
andi. r3, r6, 0x4000
beq- BTN_LEFT
ori r5, r5, 0x1 ; d-pad down
BTN_LEFT:
andi. r3, r6, 0x2
beq- BTN_RIGHT
ori r5, r5, 0x8 ; d-pad left
Assembly code isn't the most readable thing around but with the comments and stuff it should be reasonably easy to understand what to edit to get what you want. However, then people would have to convert this assembly to Gecko codes with a PPC assembler, which might be more effort than just editing the existing codes? I dunno, is this something people would use?
I realize there are versions available on other consoles and on PC which would make a classic controller hack a little bit redundant, but Marvel Ultimate Alliance on Wii always felt basically unplayable to me because of its very finicky motion controls.
I have no idea how difficult it would be to add classic controller support for it, I imagine it wouldn't be easy so I have zero expectations of seeing it done without like a full-on romhack of the game (which again would be kind of a waste of time since it's on other consoles and on PC). But the idea of the game actually being made more playable on Wii is kind of nice. It's probably the worst treatment of any multiplatform game on Wii, at least as far as I know (there are still plenty I've never played).
Even if a classic controller hack wasn't exactly like how it plays on other consoles, anything would be better than the motion controls. But again, I have zero expectations here and with other consoles and PC to play on, it doesn't really need a controller hack.
Wow, you're not kidding, reading about the motion controls in this game it sounds absolutely miserable. As a general rule, I'd say the more motion controls a game has, the harder it is to Classic Controller hack, because it involves first learning what exact motion values the game identifies as a shake, thrust, swing, etc. Wario Land: Shake It! and Donkey Kong Jungle Beat detect shaking in pretty much completely unrelated ways, which are different again from how Namco Museum does it and again from how Tron does it, so each one of those ends up taking more effort (or eluding me completely as in some other games I've attempted). I also personally have no experience working with accelerometers, so even the theory side escapes me, like "What values will an accelerometer register if I thrust the Wiimote forward?" I mostly have to just figure this out by trial and error.
I'll be honest and say Ultimate Alliance seems complicated enough that it's one I'm less likely to attempt, but I did enjoy X-Men Legends on GameCube back in the day, so it would absolutely be nice to continue the "series" on Wii. I'll consider this a "Would be nice to have." Also, I'll say I don't really mind if a game already has conventional controls on another platform. A couple of the games I already did are on other platforms, no big deal.
Ok no problem. Thanks for answer. I have a question. Donkey Kong Country Returns already have a cc patch, but it's only playable with dpad. Can you make something to make it playable with both dpad and left thumbstick ?
This is 1000% something I think about all the time. I'm almost certain I could do a version of this where the left stick is just mirroring the D-Pad (8-way movement), but I'd be a lot happier if I could figure out how the Nunchuk is handled so you get full analog movement on the Classic Controller. This is definitely one I will attempt in future. If I don't figure out how the Nunchuk is handled here I may still fall back on digital movement if that's something anybody wants, but I'll be extremely disappointed if that happens.
Sidhe Interactive's Speed Racer: The Videogame is the closest thing we ever got to an F-Zero game on the Wii, even moreso than FAST Racing League on WiiWare. You have the futuristic vehicles and tracks with boost pads, jumps, loops and tubes, vehicular combat with a rival system, a health meter, tens of competitors on the track (up to 20), with gorgeous visuals, all at 60 FPS. Add in the pumping electronica soundtrack by Winifred Phillips (God of War, Borderlands, Assassin's Creed) and you've got the makings of a classic. I've oversold it at this point, so let's reel it in a bit: it's also got ... five tracks. They gets some decent mileage out of them, with each track sporting three different layouts (plus reverse mode), but yes, this is a movie tie-in game which had to meet the hard deadline of the spectacularly unsuccessful movie release. Regardless what you thought of the movie, Speed Racer: The Videogame is great fun. It reviewed quite well and became a minor cult hit with a small community of speedrunners (mainly for the PS2 version, which had conventional controls). We can't be beaten out by the PS2 though, so let's bring some normal controls to our version.
Home
Home Menu works as normal but remember that Classic X is your Wiimote A button
Open/Close Home Button Menu
D-Pad
D-Pad
Left Stick
Menus
Navigation Gameplay
Adjust Car-Fu Moves
Wiimote A
X
Menus
Confirm Gameplay
Use Boost to Recover Health
Wiimote B
Y/ZR
Menus
Cancel Gameplay
Boost
Plus
Plus
Pause
Minus
Minus
Change Camera
Wiimote 1
B
Menus
Cancel Gameplay
Brake/Reverse
Wiimote 2
A
Menus
Confirm Gameplay
Accelerate
Wiimote Tilt
Left Stick
Steer
Wiimote Shake
ZL
Jump
Wiimote Thrust Left/Right
L/R
Shunt (attack)
Wiimote IR Pointer
Left Stick
Home Button Menu
Navigation
General Notes
If you have a choice, I strongly recommend playing the European/PAL version game. It's not life-changing, but the US version is missing some features in the Time Trial mode, where the game keeps track of your best lap with a ghost racer and an interval indicator (timer of how far behind/ahead you are). The Europe version also has pretty pink lights on the edges of the first track which are missing from the US/Japan versions.
If, for whatever reason, you can't play the PAL game, the Japanese one does support running in English and has all the Time Trial features. Since it's not supposed to be played in English, it uses a different font for the text which doesn't always fit into the button prompts and such, but it's completely playable if you specifically need an NTSC game and can't force the PAL version or whatever.
Even though this does add back a conventional control scheme, you might still want to try the PS2 version if you get the chance. Launching four months after the Wii version to coincide with the home video release of the movie, there are a number of changes besides the controls:
worse graphics
less competitors on track (maximum 12 racers, vs. 20 on Wii)
1 extra track
5 extra cars
For this game I combined the D-Pad and Wiimote Tilt both into the Classic Left Stick, because they don't really clash at all and you need to have easy access to the different Car-Fu moves. So if you need to do a backflip, you pull back on the analog stick then press ZL (shake/jump), etc. This way you don't have to stop steering just to do a Car-Fu move. And they're all pretty intuitive anyway, e.g. to "do a barrel boll!" you originally pressed D-Pad Left/Right and shook the Wiimote; here you steer to the left/right and press ZL. It's fine, try the brief tutorial mode from the menu, it's not too complicated.
Technical Notes
Getting the left/right Shunt Car-Fu accelerometer movement working here really sucked. Even Dolphin can't simulate this correctly; you basically have to hook up an actual Wiimote or other motion-supporting controller and physically do the movements. I had to pause execution mid-motion a bunch of times (harder than it sounds to Swing a Wiimote and press F10 simultaneously on a keyboard without dedicated function keys!) to get a feel for what kind of data that motion imparted. I was eventually able to replicate this and it amounts to an extreme change to the accelerometer Y-axis (which from the user perspective is the X-axis when the Wiimote is turned sideways as it is here) which continues for at least 5 frames. Sounds easy when you say it like that.
Other than that, pretty standard at this point: the usual pointer, stick and button hacks.
Little King's Story is a cult hit RTS/city builder/life sim/RPG from the creator of Harvest Moon/Story of Seasons, Yasuhiro Wada. It was originally released on the Wii, is currently available on Steam and briefly had a reimagined PS Vita release, which has since been delisted. In the game, you play as a child (canonically named Corobo, but chosen by the player) who comes to rule over a tiny kingdom. Tasked with expanding your empire, the moment-to-moment gameplay is somewhat reminiscent of Pikmin, with Corobo being almost powerless on his own and "Charging" recruits at different tasks (tossing them at the target like Olimar). The Wii release has no motion or pointer controls whatsoever, but can only be played with the Wii Remote and Nunchuk. This made it a good candidate for a Classic Controller hack, which you can find in the spoiler below.
The button mapping used here is a combination of common sense, the Steam version button layout and advice from Deadweight in the Little King's Story community. That said, the code is relatively easy to customize if you want to use a different layout. First off, here's our layout as set up in the above codes:
Wii Remote/Nunchuk
Classic Controller
Game Function
Home
Home
Classic Controller analog stick is not supported in the Home Button Menu, you will need to use a Wii Remote to quit
Open/Close Home Button Menu
D-Pad Up
D-Pad Up
ZR
Change Formation
D-Pad Down
D-Pad Down
X
Change Rank (party order, i.e. selected job type)
D-Pad Left/Right
D-Pad Left/Right
L/R
Camera Rotation
Wiimote A
A
Confirm/Action/Charge
Wiimote B
B
Cancel
Recruit (town)
Call Back (field)
Nunchuk C
Y
Zoom Camera (town)
Scepter Attack (field)
Nunchuk Z
ZL
Target
Plus/Minus
Plus
Open/Close Field Menu
Wiimote 1
Wiimote 2
Minus
Dismiss Party (town)
Return to Castle (field)
If you prefer the D-Pad, you can use that to access its original functions (and to navigate menus), but its functions have all been mirrored to the face and shoulder buttons, which is closer to how the original control scheme has you mostly using the action buttons with your right hand. The most contentious change is that the Nunchuk C button has moved to the Y face button. This is how Corobo attacks and feels better with the other action buttons than it does up on the Nunchuk-equivalent L-button. Realistically, the original devs put it on C because that's the only other button you really have access to in the Wiimote and Nunchuk layout. The base game already does a lot of re-using buttons for different functions depending on whether you're in town or the field, and this hack added one more with the Wiimote 1/2 Dismiss (town)/Return (field) buttons being combined into Classic Controller Minus. It feels pretty intuitive combining these since they're both cancel/quit type inputs which are out of the way so you don't accidentally press them.
If you want to change any of these mappings, you'll need to edit the end section of the code. Here it is again with labels for the buttons from the above scheme:
Code:
| Wii Output | xxxx xxxx | Classic Input
------------------------------------------------------
1 | | 70A40800 | Home
2 | | 2C040000 41820008 |
3 | Home | 60C68000 70A40001 | D-Pad Up
4 | | 2C040000 41820008 |
5 | D-Pad Up | 60C60008 70A44000 | D-Pad Down
6 | | 2C040000 41820008 |
7 | D-Pad Down | 60C60004 70A40002 | D-Pad Left
8 | | 2C040000 41820008 |
9 | D-Pad Left | 60C60001 70A48000 | D-Pad Right
10 | | 2C040000 41820008 |
11 | D-Pad Right | 60C60002 70A40010 | A
12 | | 2C040000 41820008 |
13 | A | 60C60800 70A40040 | B
14 | | 2C040000 41820008 |
15 | B | 60C60400 70A40008 | X
16 | | 2C040000 41820008 |
17 | D-Pad Down | 60C60004 70A40020 | Y
18 | | 2C040000 41820008 |
19 | C | 60C64000 70A42000 | L
20 | | 2C040000 41820008 |
21 | D-Pad Left | 60C60001 70A40200 | R
22 | | 2C040000 41820008 |
23 | D-Pad Right | 60C60002 70A40080 | ZL
24 | | 2C040000 41820008 |
25 | Z | 60C62000 70A40004 | ZR
26 | | 2C040000 41820008 |
27 | D-Pad Up | 60C60008 70A40400 | Plus
28 | | 2C040000 41820008 |
29 | Plus | 60C60010 70A41000 | Minus
30 | | 2C040000 41820008 |
31 | 1+2 | 60C60300 00000000 |
I know it's a bit lopsided and confusing to look at, but each button value on the right side triggers the next button down on the left side. Just look at the first mapping, where Classic Controller 0800 Home on line 1 (right) triggers Wiimote 8000 Home on line 3 (left), to get a feel for how it works. Personally, I'd suggest changing the left column if you want to customize this layout, keeping the Classic Controller inputs in their default order. Otherwise, it gets confusing really fast.
Each button is a four digit value. Here's a table of the button values you can substitute in to customize your mapping.
Wii Remote/Nunchuk
Classic Controller
0001 D-Pad Left 0002 D-Pad Right 0004 D-Pad Down 0008 D-Pad Up 0010 + 0020 // no button 0040 // no button 0080 // no button 0100 2 0200 1 0400 B 0800 A 1000 - 2000 Z 4000 C 8000 Home
0001 D-Pad Up 0002 D-Pad Left 0004 ZR 0008 X 0010 A 0020 Y 0040 B 0080 ZL 0100 // no button 0200 R 0400 + 0800 // no button 1000 - 2000 L 4000 D-Pad Down 8000 D-Pad Right
General Notes
Just stuff you might want to know about the hack and underlying game.
this is specifically a hack of the way Little King's Story handles Nunchuk inputs; it can't really be generalized to other games (barring perhaps other games on the same engine, assuming they exist)
this code breaks the original Nunchuk input; turn off the code if you want to go back to playing with the original controls
sorry, I don't have the slightest idea how to map camera rotation to the right stick
has also been tested and works on Wii U as a Wii VC injection with Classic Controller emulation, for semi-portable play
if you have the choice, you should probably play the USA or Japan versions, which came out after the European game and include extra content and 60 Hz support
fans regard the Steam and Vita versions as inferior to the original Wii release
Technical Notes
Slightly nerdier stuff. The code is basically made up of 4 main parts. The first three are King-specific while the last can basically be ported to other games as long as you can figure out the rest yourself.
the first line patches out the code which determines that the Classic Controller is not an acceptable extension
the second line tells the game that it should accept Nunchuk button values when they're "pressed" by a Classic Controller (extension type 2)
the next four lines again tell the game to use extension 2 and force it to read the Classic Controller left analog offset instead of the Nunchuk when reading the joystick X/Y values
the remainder is crediar's original button remapping hack which injects into the SDK read_kpad_acc() function; it reads the CC button values then translates and injects them into the Wiimote/Nunchuk button field
Credits
DeadweightLKS, the world's #1 Little King's Story expert, for advising on the ideal button layout
crediar: creating the original Classic Controller hacks for sideways Wii Remote games, in particular Kirby's Return to Dream Land
Vague Rant: hacking Nunchuk inputs (C, Z and the analog stick) and disabling "wrong extension" error
Sounds interesting! Are there enough buttons left for all of the things you can do in Mario Kart Wii? Accelerate, Brake, Slide, Item, Trick, Wheelie ... there's only really four buttons on the Wiimote that are (somewhat) usable in sideways layout, so it'd be pretty crowded. But it might be fun to see if anything could be worked out.
Classic Con Hacking Returns! Donkey Kong Country Returns is the revival of the classic SNES trilogy, crafted by Retro Studios (Metroid Prime). The game was critically acclaimed then and now, and remains one of the least controversial sequels on the Wii. There's no Kremlings, some people didn't like that. But the game is stellar in all respects and one of the best Wii games and/or 2D platformers ever created. Can you tell I like this one?
That said, this needs a bit more intro than most, because crediar's original Classic Controller hack for Donkey Kong Country Returns a) already exists and b) kicked off this entire genre of Wii hack. Where the original hack had the Classic Controller simulate a sideways Wii Remote, in revisiting this game, I've instead had the Classic Controller be recognized as a Wii Remote & Nunchuk combo, which provides full analog movement on the Classic Controller. As a small bonus, this feature is optional and can be toggled on/off individually for both players while in-game. Highlight for @NestorM who asked about this game.
As mentioned in the intro, this is essentially two Classic Controller hacks working in tandem, so there are two button layouts: one when simulating the Wiimote and Nunchuk and another for simulating the solo Wiimote.
The default is the Nunchuk layout, so let's start with that. This layout matches the one used by Donkey Kong Country Returns 3D on the 3DS and Tropical Freeze on Wii U and Switch.
Wii Remote & Nunchuk
Classic Controller
Game Function
Wiimote Home
Home
Home Menu works as normal
Open/Close Home Button Menu
Wiimote D-Pad
D-Pad
Not used?
Wiimote A
A/B
Menus
Confirm Gameplay
Jump
Wiimote B
R/ZR
Menus
Cancel Gameplay
Grab
Wiimote Plus
Plus
Menus
Copy Save Gameplay
Pause
Wiimote Minus
Minus
Menus
Delete Save Gameplay
Pause
Wiimote 1/2
Not used
Nunchuk Analog Stick
Left Stick
Menus
Navigation Gameplay
Movement
Nunchuk C
Not used
Nunchuk Z
L/ZL
World Map
Zoom Out Gameplay
Grab
Wiimote & Nunchuk Shake
X/Y (either)
Gameplay
Various
Insert/Remove Nunchuk
Plus and Minus (together)
Toggle Controller Mode
Next, let's take a look at the Wiimote layout. I matched the later games in the series as closely as possible here, but since there's no analog movement on the Wii Remote, the Grab buttons are now both Grab and Run, as in the actual, physical Wiimote button layout.
Wii Remote
Classic Controller
Game Function
Home
Home
Home Menu works as normal
Open/Close Home Button Menu
D-Pad
D-Pad
Menus
Navigation Gameplay
Movement
A
A
World Map
Zoom Out
B
Not used
Plus
Plus
Menus
Copy Save Gameplay
Pause
Minus
Minus
Menus
Delete Save Gameplay
Pause
1
L/R
ZL/ZR
Menus
Cancel Gameplay
Grab/Run
2
B/A
Menus
Confirm Gameplay
Jump
Shake
X/Y
Gameplay
Various
Insert/Remove Nunchuk
Plus and Minus
Toggle Controller Mode
General Notes
crediar's original hack is amazing and brought this game to many who might otherwise have been turned off by the motion controls. If this updated hack seems useless to you, it probably is. That said, this was an opportunity to expand on crediar's incredible work and make the game even more flexible in its controls. I credit crediar in all of my Classic Controller hacks, since they continue to use parts of the original DKCR hack, but obviously this one owes even more to crediar. A fun note is that the very first line of the code comes unchanged from crediar's original, which was pleasing to me.
In North America, two different disc revisions of Donkey Kong Country Returns were pressed, the original (Rev 0) and Rev 1 which included some minor fixes. You will need to know which hack to apply depending on which disc you own. Lazy approach: just try both and see which one works. Slightly less lazy: inspect the disc and look for the revision marking (00 or 01) etched on the inner ring. High effort: back up your disc, load it up in Dolphin, right click it, and look at Properties > Info > Name. It will say either Donkey Kong Country Returns (Disc 1, Revision 0) or (Disc 1, Revision 1). And then you'll know.
The Wiimote/Nunchuk toggle feature is relatively pointless, I know. Generally, people want to play with one or the other, not alternate between two different control schemes. Honestly, my main motivation was just that toggling between two different extension controllers with a button combo seemed funny. That said, there is maybe one situation where this is useful. If you've got one actual Classic Controller and one SNES Classic Mini controller and want to play multiplayer, the player with the SNES pad can toggle to Wiimote mode and have D-Pad control, while the Classic Controller retains analog support. Will anybody ever actually do this? Nope. Technically, this satisfies NestorM's request that you be able to play with both the D-Pad and analog stick, you just have to be two different people.
Technical Notes
Besides the first line of the code mentioned earlier and the standard button injector, this is a complete rewrite of the Classic Controller hack. It's of course still derived from crediar's hack in other ways, as that hack provided something of a roadmap to several of the relevant functions. For example, while my approach ended up being completely different, the original Wiimote shaking hack was hugely informative when tracking down shaking on the Nunchuk. Anyway, let's break down the code.
04
crediar's original patch which prevents shaking from being disabled when a Classic Controller is inserted into the base of the Wiimote.
C2
This is the actual shake hack. In a point of difference from most Wii games, DKCR does not use read_kpad_acc() to read the accelerometers. That was a significant challenge since I've mostly worked with that function to emulate motion controls. Where crediar's original hack injected some fake motion data into the low-level accelerometer data, I took a different approach where I'm coming in at the "other end" (after the motion controls have been evaluated) and enabling the "player shook the controller/s" bits. This amounts to setting and unsetting six bits (presumably six axes?) on alternating frames. In Nunchuk mode, the shakes alternate each frame (Wiimote on frame 0, Nunchuk on frame 1, Wiimote on frame 2) so you're shaking every single frame. On the solo Wiimote, this is just Wiimote, no shake, Wiimote, no shake. I'm storing whether you're currently on the Wiimote or Nunchuk/no shake frame separately for each player.
C2, C2 and C2
The next three codes are all just checking if the user is on a Classic Controller and redirecting Nunchuk analog stick reads to the Classic Controller left stick. The third one is checking for relatively small movements; I don't know what it actually does but my guess is that it's keeping the controller awake (resetting the five minute sleep timer) if the player is touching the analog stick, while leaving some leeway for bad dead zone inputs. Just a guess, though.
04
This patches a check that your extension controller is not >1 (Nunchuk) to >2 (Classic Controller).
20 and C2
The first of these is setting up the default controller mode (Nunchuk style) in some free memory, then patching the game to read the mode from memory instead of using the hardcoded values. Then the C2 is handling multiplayer: adjusting the offset where the values should be read from depending on whether you're player 1 or 2. DKCR aligns all functions to 0x10 (16) bytes, so there's a lot of free space if you add it all up (between 0-12 bytes free between every function). I only needed 4 bytes to save both controllers, so that was fine. There was a one-in-four risk that one of the disc regions would have, by pure coincidence, already been aligned to 0x10 bytes, rendering this approach slightly more complicated, but thankfully none of them were and the hack was able to be reused unchanged.
C2 and C2
Finally getting to some SDK stuff, this is read_kpad_dpd() and read_kpad_button(). The former has nothing interesting going on, but button is doing a lot of heavy lifting this time around. Since we're using it to toggle between Nunchuk and Wiimote modes, we have to call the function which handles extension changes from within the button injector. This is actually the function from the above paragraph. DKCR doesn't have symbols, so the name I came up with for it was ControllerTypeEnumerator(), since it reads the extension and then sets different values for each EXT type (including several invalid ones like Classic Controller). Anyway, when the user toggles controls with Plus and Minus, I'm adjusting the controller values set up in the previous paragraph for the current player, storing r3, r4 and the link register on the stack, then calling the extension toggle function.
Sounds interesting! Are there enough buttons left for all of the things you can do in Mario Kart Wii? Accelerate, Brake, Slide, Item, Trick, Wheelie ... there's only really four buttons on the Wiimote that are (somewhat) usable in sideways layout, so it'd be pretty crowded. But it might be fun to see if anything could be worked out.
Classic Con Hacking Returns! Donkey Kong Country Returns is the revival of the classic SNES trilogy, crafted by Retro Studios (Metroid Prime). The game was critically acclaimed then and now, and remains one of the least controversial sequels on the Wii. There's no Kremlings, some people didn't like that. But the game is stellar in all respects and one of the best Wii games and/or 2D platformers ever created. Can you tell I like this one?
That said, this needs a bit more intro than most, because crediar's original Classic Controller hack for Donkey Kong Country Returns a) already exists and b) kicked off this entire genre of Wii hack. Where the original hack had the Classic Controller simulate a sideways Wii Remote, in revisiting this game, I've instead had the Classic Controller be recognized as a Wii Remote & Nunchuk combo, which provides full analog movement on the Classic Controller. As a small bonus, this feature is optional and can be toggled on/off individually for both players while in-game. Highlight for @NestorM who asked about this game.
As mentioned in the intro, this is essentially two Classic Controller hacks working in tandem, so there are two button layouts: one when simulating the Wiimote and Nunchuk and another for simulating the solo Wiimote.
The default is the Nunchuk layout, so let's start with that. This layout matches the one used by Donkey Kong Country Returns 3D on the 3DS and Tropical Freeze on Wii U and Switch.
Wii Remote & Nunchuk
Classic Controller
Game Function
Wiimote Home
Home
Home Menu works as normal
Open/Close Home Button Menu
Wiimote D-Pad
D-Pad
Not used?
Wiimote A
A/B
Menus
Confirm Gameplay
Jump
Wiimote B
R/ZR
Menus
Cancel Gameplay
Grab
Wiimote Plus
Plus
Menus
Copy Save Gameplay
Pause
Wiimote Minus
Minus
Menus
Delete Save Gameplay
Pause
Wiimote 1/2
Not used
Nunchuk Analog Stick
Left Stick
Menus
Navigation Gameplay
Movement
Nunchuk C
Not used
Nunchuk Z
L/ZL
World Map
Zoom Out Gameplay
Grab
Wiimote & Nunchuk Shake
X/Y (either)
Gameplay
Various
Insert/Remove Nunchuk
Plus and Minus (together)
Toggle Controller Mode
Next, let's take a look at the Wiimote layout. I matched the later games in the series as closely as possible here, but since there's no analog movement on the Wii Remote, the Grab buttons are now both Grab and Run, as in the actual, physical Wiimote button layout.
Wii Remote
Classic Controller
Game Function
Home
Home
Home Menu works as normal
Open/Close Home Button Menu
D-Pad
D-Pad
Menus
Navigation Gameplay
Movement
A
A
World Map
Zoom Out
B
Not used
Plus
Plus
Menus
Copy Save Gameplay
Pause
Minus
Minus
Menus
Delete Save Gameplay
Pause
1
L/R
ZL/ZR
Menus
Cancel Gameplay
Grab/Run
2
B/A
Menus
Confirm Gameplay
Jump
Shake
X/Y
Gameplay
Various
Insert/Remove Nunchuk
Plus and Minus
Toggle Controller Mode
General Notes
crediar's original hack is amazing and brought this game to many who might otherwise have been turned off by the motion controls. If this updated hack seems useless to you, it probably is. That said, this was an opportunity to expand on crediar's incredible work and make the game even more flexible in its controls. I credit crediar in all of my Classic Controller hacks, since they continue to use parts of the original DKCR hack, but obviously this one owes even more to crediar. A fun note is that the very first line of the code comes unchanged from crediar's original, which was pleasing to me.
In North America, two different disc revisions of Donkey Kong Country Returns were pressed, the original (Rev 0) and Rev 1 which included some minor fixes. You will need to know which hack to apply depending on which disc you own. Lazy approach: just try both and see which one works. Slightly less lazy: inspect the disc and look for the revision marking (00 or 01) etched on the inner ring. High effort: back up your disc, load it up in Dolphin, right click it, and look at Properties > Info > Name. It will say either Donkey Kong Country Returns (Disc 1, Revision 0) or (Disc 1, Revision 1). And then you'll know.
The Wiimote/Nunchuk toggle feature is relatively pointless, I know. Generally, people want to play with one or the other, not alternate between two different control schemes. Honestly, my main motivation was just that toggling between two different extension controllers with a button combo seemed funny. That said, there is maybe one situation where this is useful. If you've got one actual Classic Controller and one SNES Classic Mini controller and want to play multiplayer, the player with the SNES pad can toggle to Wiimote mode and have D-Pad control, while the Classic Controller retains analog support. Will anybody ever actually do this? Nope. Technically, this satisfies NestorM's request that you be able to play with both the D-Pad and analog stick, you just have to be two different people.
Technical Notes
Besides the first line of the code mentioned earlier and the standard button injector, this is a complete rewrite of the Classic Controller hack. It's of course still derived from crediar's hack in other ways, as that hack provided something of a roadmap to several of the relevant functions. For example, while my approach ended up being completely different, the original Wiimote shaking hack was hugely informative when tracking down shaking on the Nunchuk. Anyway, let's break down the code.
04
crediar's original patch which prevents shaking from being disabled when a Classic Controller is inserted into the base of the Wiimote.
C2
This is the actual shake hack. In a point of difference from most Wii games, DKCR does not use read_kpad_acc() to read the accelerometers. That was a significant challenge since I've mostly worked with that function to emulate motion controls. Where crediar's original hack injected some fake motion data into the low-level accelerometer data, I took a different approach where I'm coming in at the "other end" (after the motion controls have been evaluated) and enabling the "player shook the controller/s" bits. This amounts to setting and unsetting six bits (presumably six axes?) on alternating frames. In Nunchuk mode, the shakes alternate each frame (Wiimote on frame 0, Nunchuk on frame 1, Wiimote on frame 2) so you're shaking every single frame. On the solo Wiimote, this is just Wiimote, no shake, Wiimote, no shake. I'm storing whether you're currently on the Wiimote or Nunchuk/no shake frame separately for each player.
C2, C2 and C2
The next three codes are all just checking if the user is on a Classic Controller and redirecting Nunchuk analog stick reads to the Classic Controller left stick. The third one is checking for relatively small movements; I don't know what it actually does but my guess is that it's keeping the controller awake (resetting the five minute sleep timer) if the player is touching the analog stick, while leaving some leeway for bad dead zone inputs. Just a guess, though.
04
This patches a check that your extension controller is not >1 (Nunchuk) to >2 (Classic Controller).
20 and C2
The first of these is setting up the default controller mode (Nunchuk style) in some free memory, then patching the game to read the mode from memory instead of using the hardcoded values. Then the C2 is handling multiplayer: adjusting the offset where the values should be read from depending on whether you're player 1 or 2. DKCR aligns all functions to 0x10 (16) bytes, so there's a lot of free space if you add it all up (between 0-12 bytes free between every function). I only needed 4 bytes to save both controllers, so that was fine. There was a one-in-four risk that one of the disc regions would have, by pure coincidence, already been aligned to 0x10 bytes, rendering this approach slightly more complicated, but thankfully none of them were and the hack was able to be reused unchanged.
C2 and C2
Finally getting to some SDK stuff, this is read_kpad_dpd() and read_kpad_button(). The former has nothing interesting going on, but button is doing a lot of heavy lifting this time around. Since we're using it to toggle between Nunchuk and Wiimote modes, we have to call the function which handles extension changes from within the button injector. This is actually the function from the above paragraph. DKCR doesn't have symbols, so the name I came up with for it was ControllerTypeEnumerator(), since it reads the extension and then sets different values for each EXT type (including several invalid ones like Classic Controller). Anyway, when the user toggles controls with Plus and Minus, I'm adjusting the controller values set up in the previous paragraph for the current player, storing r3, r4 and the link register on the stack, then calling the extension toggle function.
Hey vague_rant, I'm glad to see you are still working on this. Thanks a lot for the effort I was trying to create an injection to the wii u for DK returns with the new analog stick movements so I could use the wii u gamepad, but it didn't work. There was no input noticable. I did the same as you mentioned in the super Mario galaxy tutorial. Am I missing something or isn't it possible to get it working on the wii u? I would like to replay the games on the wii u gamepad. Hope you can help. Again thanks a lot for your great work
Sounds interesting! Are there enough buttons left for all of the things you can do in Mario Kart Wii? Accelerate, Brake, Slide, Item, Trick, Wheelie ... there's only really four buttons on the Wiimote that are (somewhat) usable in sideways layout, so it'd be pretty crowded. But it might be fun to see if anything could be worked out.
Classic Con Hacking Returns! Donkey Kong Country Returns is the revival of the classic SNES trilogy, crafted by Retro Studios (Metroid Prime). The game was critically acclaimed then and now, and remains one of the least controversial sequels on the Wii. There's no Kremlings, some people didn't like that. But the game is stellar in all respects and one of the best Wii games and/or 2D platformers ever created. Can you tell I like this one?
That said, this needs a bit more intro than most, because crediar's original Classic Controller hack for Donkey Kong Country Returns a) already exists and b) kicked off this entire genre of Wii hack. Where the original hack had the Classic Controller simulate a sideways Wii Remote, in revisiting this game, I've instead had the Classic Controller be recognized as a Wii Remote & Nunchuk combo, which provides full analog movement on the Classic Controller. As a small bonus, this feature is optional and can be toggled on/off individually for both players while in-game. Highlight for @NestorM who asked about this game.
As mentioned in the intro, this is essentially two Classic Controller hacks working in tandem, so there are two button layouts: one when simulating the Wiimote and Nunchuk and another for simulating the solo Wiimote.
The default is the Nunchuk layout, so let's start with that. This layout matches the one used by Donkey Kong Country Returns 3D on the 3DS and Tropical Freeze on Wii U and Switch.
Wii Remote & Nunchuk
Classic Controller
Game Function
Wiimote Home
Home
Home Menu works as normal
Open/Close Home Button Menu
Wiimote D-Pad
D-Pad
Not used?
Wiimote A
A/B
Menus
Confirm Gameplay
Jump
Wiimote B
R/ZR
Menus
Cancel Gameplay
Grab
Wiimote Plus
Plus
Menus
Copy Save Gameplay
Pause
Wiimote Minus
Minus
Menus
Delete Save Gameplay
Pause
Wiimote 1/2
Not used
Nunchuk Analog Stick
Left Stick
Menus
Navigation Gameplay
Movement
Nunchuk C
Not used
Nunchuk Z
L/ZL
World Map
Zoom Out Gameplay
Grab
Wiimote & Nunchuk Shake
X/Y (either)
Gameplay
Various
Insert/Remove Nunchuk
Plus and Minus (together)
Toggle Controller Mode
Next, let's take a look at the Wiimote layout. I matched the later games in the series as closely as possible here, but since there's no analog movement on the Wii Remote, the Grab buttons are now both Grab and Run, as in the actual, physical Wiimote button layout.
Wii Remote
Classic Controller
Game Function
Home
Home
Home Menu works as normal
Open/Close Home Button Menu
D-Pad
D-Pad
Menus
Navigation Gameplay
Movement
A
A
World Map
Zoom Out
B
Not used
Plus
Plus
Menus
Copy Save Gameplay
Pause
Minus
Minus
Menus
Delete Save Gameplay
Pause
1
L/R
ZL/ZR
Menus
Cancel Gameplay
Grab/Run
2
B/A
Menus
Confirm Gameplay
Jump
Shake
X/Y
Gameplay
Various
Insert/Remove Nunchuk
Plus and Minus
Toggle Controller Mode
General Notes
crediar's original hack is amazing and brought this game to many who might otherwise have been turned off by the motion controls. If this updated hack seems useless to you, it probably is. That said, this was an opportunity to expand on crediar's incredible work and make the game even more flexible in its controls. I credit crediar in all of my Classic Controller hacks, since they continue to use parts of the original DKCR hack, but obviously this one owes even more to crediar. A fun note is that the very first line of the code comes unchanged from crediar's original, which was pleasing to me.
In North America, two different disc revisions of Donkey Kong Country Returns were pressed, the original (Rev 0) and Rev 1 which included some minor fixes. You will need to know which hack to apply depending on which disc you own. Lazy approach: just try both and see which one works. Slightly less lazy: inspect the disc and look for the revision marking (00 or 01) etched on the inner ring. High effort: back up your disc, load it up in Dolphin, right click it, and look at Properties > Info > Name. It will say either Donkey Kong Country Returns (Disc 1, Revision 0) or (Disc 1, Revision 1). And then you'll know.
The Wiimote/Nunchuk toggle feature is relatively pointless, I know. Generally, people want to play with one or the other, not alternate between two different control schemes. Honestly, my main motivation was just that toggling between two different extension controllers with a button combo seemed funny. That said, there is maybe one situation where this is useful. If you've got one actual Classic Controller and one SNES Classic Mini controller and want to play multiplayer, the player with the SNES pad can toggle to Wiimote mode and have D-Pad control, while the Classic Controller retains analog support. Will anybody ever actually do this? Nope. Technically, this satisfies NestorM's request that you be able to play with both the D-Pad and analog stick, you just have to be two different people.
Technical Notes
Besides the first line of the code mentioned earlier and the standard button injector, this is a complete rewrite of the Classic Controller hack. It's of course still derived from crediar's hack in other ways, as that hack provided something of a roadmap to several of the relevant functions. For example, while my approach ended up being completely different, the original Wiimote shaking hack was hugely informative when tracking down shaking on the Nunchuk. Anyway, let's break down the code.
04
crediar's original patch which prevents shaking from being disabled when a Classic Controller is inserted into the base of the Wiimote.
C2
This is the actual shake hack. In a point of difference from most Wii games, DKCR does not use read_kpad_acc() to read the accelerometers. That was a significant challenge since I've mostly worked with that function to emulate motion controls. Where crediar's original hack injected some fake motion data into the low-level accelerometer data, I took a different approach where I'm coming in at the "other end" (after the motion controls have been evaluated) and enabling the "player shook the controller/s" bits. This amounts to setting and unsetting six bits (presumably six axes?) on alternating frames. In Nunchuk mode, the shakes alternate each frame (Wiimote on frame 0, Nunchuk on frame 1, Wiimote on frame 2) so you're shaking every single frame. On the solo Wiimote, this is just Wiimote, no shake, Wiimote, no shake. I'm storing whether you're currently on the Wiimote or Nunchuk/no shake frame separately for each player.
C2, C2 and C2
The next three codes are all just checking if the user is on a Classic Controller and redirecting Nunchuk analog stick reads to the Classic Controller left stick. The third one is checking for relatively small movements; I don't know what it actually does but my guess is that it's keeping the controller awake (resetting the five minute sleep timer) if the player is touching the analog stick, while leaving some leeway for bad dead zone inputs. Just a guess, though.
04
This patches a check that your extension controller is not >1 (Nunchuk) to >2 (Classic Controller).
20 and C2
The first of these is setting up the default controller mode (Nunchuk style) in some free memory, then patching the game to read the mode from memory instead of using the hardcoded values. Then the C2 is handling multiplayer: adjusting the offset where the values should be read from depending on whether you're player 1 or 2. DKCR aligns all functions to 0x10 (16) bytes, so there's a lot of free space if you add it all up (between 0-12 bytes free between every function). I only needed 4 bytes to save both controllers, so that was fine. There was a one-in-four risk that one of the disc regions would have, by pure coincidence, already been aligned to 0x10 bytes, rendering this approach slightly more complicated, but thankfully none of them were and the hack was able to be reused unchanged.
C2 and C2
Finally getting to some SDK stuff, this is read_kpad_dpd() and read_kpad_button(). The former has nothing interesting going on, but button is doing a lot of heavy lifting this time around. Since we're using it to toggle between Nunchuk and Wiimote modes, we have to call the function which handles extension changes from within the button injector. This is actually the function from the above paragraph. DKCR doesn't have symbols, so the name I came up with for it was ControllerTypeEnumerator(), since it reads the extension and then sets different values for each EXT type (including several invalid ones like Classic Controller). Anyway, when the user toggles controls with Plus and Minus, I'm adjusting the controller values set up in the previous paragraph for the current player, storing r3, r4 and the link register on the stack, then calling the extension toggle function.
Ok now I managed to get DK returns running on the wii u gamepad. My first iso was corrupted. Thanks for the code. Next I will try super paper mario, because it's also using the wiimote nuncuck combo. Is there a chance to get silent hill shattered memories running with a classic controller patch? Would be a perfect game for the wii u gamepad. I also tried to inject Wario shake it, but the controlls were false, like moving forward and backward with the up and down buttons of the d-pad. Is there a working cc patch for new super mario bros?
Hey vague_rant, I'm glad to see you are still working on this. Thanks a lot for the effort I was trying to create an injection to the wii u for DK returns with the new analog stick movements so I could use the wii u gamepad, but it didn't work. There was no input noticable. I did the same as you mentioned in the super Mario galaxy tutorial. Am I missing something or isn't it possible to get it working on the wii u? I would like to replay the games on the wii u gamepad. Hope you can help. Again thanks a lot for your great work
Post automatically merged:
Ok now I managed to get DK returns running on the wii u gamepad. My first iso was corrupted. Thanks for the code. Next I will try super paper mario, because it's also using the wiimote nuncuck combo. Is there a chance to get silent hill shattered memories running with a classic controller patch? Would be a perfect game for the wii u gamepad. I also tried to inject Wario shake it, but the controlls were false, like moving forward and backward with the up and down buttons of the d-pad. Is there a working cc patch for new super mario bros?
Nice, I'm glad you eventually got DK Returns running on the GamePad, super awesome to hear that it works. Thanks for letting me know about Wario as well. The broken controls like that are usually a symptom of the Wii game not correctly detecting the Classic Controller; the same thing happens with injections of Excite Truck unless you enable the "Force Classic Controller connected" checkbox in the injector tool. I wonder if Wario could be fixed with that? If not, it's out of my hands, it's an issue with the Classic Controller emulation in Wii VC injection where it's just not compatible with some games. Unfortunately, that's the case for New Super Mario Bros. Wii, injected versions don't recognize the Classic Controller. Silent Hill definitely sounds like it's on the more complicated end of the spectrum, since it has multiple different hand motions that have to be recognized, so that's probably on the less-likely end, sorry.
That sounds like a great idea. It seems relatively feasible. I think the major complication would be remapping the inputs on the Wii Remote itself, since you'd need a different layout (A to jump, B to shoot, etc.). To date, I haven't done any remapping of original game inputs, only adding additional mappings on the Classic Controller, so I would need to figure out how to do that, but it does sound cool. I assume you mean retaining the original IR pointer for aiming, right? So you'd move on the Nunchuk, shoot/jump on B/A, maybe Morph Ball on Nunchuk C like in Prime, lock on camera on Nunchuk Z ... Concentration could either use the original motion controls or be mapped on Wiimote Minus or something, since the game doesn't use Minus anyway as far as I can tell. This is definitely an interesting one. As always, no promises, but my curiosity is piqued.
Animal Crossing: City Folk aka Let's Go to the City is the third game in Nintendo's Animal Crossing life sim series. The main addition to this entry was Wii Speak support the titular city, expanding on the small town areas of previous entries. This perhaps falls into the "controversial Wii sequel" series, with many complaints about the lack of improvements over the earlier games and the loss of NES games, since Nintendo were now selling those on the Wii Shop Channel instead of giving them away for free. Still, though not revolutionary, City Folk has the same charming atmosphere as the rest of the franchise. And at least it's a real Animal Crossing game. Cough, Amiibo Festival.
Home
Home Menu works as normal but remember to enable the pointer with L and use the correct stick for your code
Open/Close Home Button Menu
Wiimote D-Pad
D-Pad
Up: Change Camera
Left/Right: Change Tool
Down: Put Away Tool
Wiimote A
A
Confirm
Action
Wiimote B
B
Cancel
Run
Pick Up Items
Wiimote Plus
Plus
ZR
Open/Close Map
Next Tab
Wiimote Minus
X
ZL
Open/Close Inventory
Previous Tab
Wiimote 1
Minus
Take Photo
Wiimote 2
Y
Open/Close Photos
Nunchuk Analog Stick
Left Stick
Movement
Nunchuk C
Not mapped
(use A instead)
Confirm
Action
Nunchuk Z
R
Cancel
Run
Pick Up Items
Wiimote IR Pointer
L (toggle)
Left Stick or Right Stick
(depends on code used)
Move Cursor
General Notes
Two code varieties for this one, choose whichever feels more natural to you. IR aiming is pretty important to City Folk, with all inventory manipulation being IR-based. If you choose the Left Stick code, the Left Stick toggles between movement and IR input, i.e. you can't move and point at the same time. However, there's rarely any advantage to this, as there's no real multitasking possible. If you choose the Right Stick code, all you can really do is move the stupid cursor around while you run. Whee. If you want my opinion, use the Left Stick code.
Where possible, I try to "intelligently" enable/disable the pointer mode. The player can always toggle it on/off with the L button, but some other actions (opening the Inventory, Map or Photos menus) will automatically enable pointer mode for you. Try to remember to exit these menus using the same button you used to open them: e.g. you can press X to open the inventory (pointer turns on automatically) then X again to close it (pointer turns off automatically). If you instead open the menu with X then close it with B, you'll still be in pointer mode, because you didn't close with X. In this case, you should press L to disable the pointer manually. I'm trying here.
If the IR pointer movement is too fast/slow for you, you can adjust it by editing the float 0.015 (3C75C28F) about halfway through the code. You could adjust it down to 0.01 (3C23D70A) for a slower cursor, or bump it up to 0.02 (3CA3D70A) for a faster cursor, or whatever other number feels appropriate. There's plenty of hex float converters online, I linked one in a previous post somewhere.
It's worth knowing that this game supports USB keyboards. Using an on-screen keyboard with an IR pointer is sort of acceptable, but using an on-screen keyboard with a pointer you control using an analog stick is a bad time. If you have a USB keyboard handy it will hugely improve the experience if you're looking to do any typing (e.g. writing letters or chatting with other players over network play). It doesn't have to be a special Wii keyboard or anything; I use a standard PC Logitech Unifying USB dongle in my Wii. Failing that, if you use the phone in your house you can change the keyboard settings to use an old-school mobile keyboard which you might find easier to use with an analog stick.
I got a specific request (elsewhere, not in this thread) for an option where the Right Stick pointer is always enabled, but personally I think it's kind of bad. The game changes a lot of things about how it works when you're pointing at the screen, which don't make sense when playing on a traditional controller. For example, pressing A now makes you walk toward the cursor instead of interacting with whatever is in front of you. Pointing at the screen also causes the HUD to display at all times, which means the screen is cluttered with on-screen buttons the whole time you're playing. If anybody here wants this version, I guess ask for it but I find it offers an inferior experience to either of the codes above and shouldn't really be considered an equal option against those.
Technical Notes
This game has that same Super Paper Mario issue where the Home Button Menu causes a Classic Controller re-init every 64 frames. I solved it the same way, disabling getInfoAsync() from running. Thinking about it more since last time, I suspect this probably has something to do with checking things like the battery level that displays in the HBM. I do still allow getInfoAsync() to run when you first enter the HBM in both this and Paper Mario, so it's not like the HBM is running blind but if you just leave it open it might not correctly track the battery level or something pointless like that, I don't care.
Briefly, the code is: C2 to allow Classic Controller's left stick to be read for movement, C2 to disable the bad EXT error, 04 disable getInfoAsync(), C2 and C2 actually redirect analog reads to the Classic when needed, C2 custom read_kpad_dpd() (Left Stick code has an additional feature to prevent character movement while in pointer mode) and then the button injector gets inserted into KPADRead() in the last C2.
Credits
mogchamp from the AC: Wiimmfi Folk Discord for advising on the button layout
@Vague Rant Thanks for the answer. Yeah, the idea is using the IR pointer. This is how I mapped the game on Dolphin, I'm sure you can figure out something better.
Wii Remote
Wii Remote & Nunchuck
Game Function
A
D-Pad Down
Third person: Morphball
First person: Fire
B
Z
Third person: Nothing, but Redux uses it for missiles
First person: Move the camera
1
A
Confirm / Shoot
2
B
Jump / Cancel
+ / -
+ / -
Pointer
C (pressed, though it would
work better if a on/off toggle)
Nice, I'm glad you eventually got DK Returns running on the GamePad, super awesome to hear that it works. Thanks for letting me know about Wario as well. The broken controls like that are usually a symptom of the Wii game not correctly detecting the Classic Controller; the same thing happens with injections of Excite Truck unless you enable the "Force Classic Controller connected" checkbox in the injector tool. I wonder if Wario could be fixed with that? If not, it's out of my hands, it's an issue with the Classic Controller emulation in Wii VC injection where it's just not compatible with some games. Unfortunately, that's the case for New Super Mario Bros. Wii, injected versions don't recognize the Classic Controller. Silent Hill definitely sounds like it's on the more complicated end of the spectrum, since it has multiple different hand motions that have to be recognized, so that's probably on the less-likely end, sorry.
That sounds like a great idea. It seems relatively feasible. I think the major complication would be remapping the inputs on the Wii Remote itself, since you'd need a different layout (A to jump, B to shoot, etc.). To date, I haven't done any remapping of original game inputs, only adding additional mappings on the Classic Controller, so I would need to figure out how to do that, but it does sound cool. I assume you mean retaining the original IR pointer for aiming, right? So you'd move on the Nunchuk, shoot/jump on B/A, maybe Morph Ball on Nunchuk C like in Prime, lock on camera on Nunchuk Z ... Concentration could either use the original motion controls or be mapped on Wiimote Minus or something, since the game doesn't use Minus anyway as far as I can tell. This is definitely an interesting one. As always, no promises, but my curiosity is piqued.
Animal Crossing: City Folk aka Let's Go to the City is the third game in Nintendo's Animal Crossing life sim series. The main addition to this entry was Wii Speak support the titular city, expanding on the small town areas of previous entries. This perhaps falls into the "controversial Wii sequel" series, with many complaints about the lack of improvements over the earlier games and the loss of NES games, since Nintendo were now selling those on the Wii Shop Channel instead of giving them away for free. Still, though not revolutionary, City Folk has the same charming atmosphere as the rest of the franchise. And at least it's a real Animal Crossing game. Cough, Amiibo Festival.
Home
Home Menu works as normal but remember to enable the pointer with L and use the correct stick for your code
Open/Close Home Button Menu
Wiimote D-Pad
D-Pad
Up: Change Camera
Left/Right: Change Tool
Down: Put Away Tool
Wiimote A
A
Confirm
Action
Wiimote B
B
Cancel
Run
Pick Up Items
Wiimote Plus
Plus
ZR
Open/Close Map
Next Tab
Wiimote Minus
X
ZL
Open/Close Inventory
Previous Tab
Wiimote 1
Minus
Take Photo
Wiimote 2
Y
Open/Close Photos
Nunchuk Analog Stick
Left Stick
Movement
Nunchuk C
Not mapped
(use A instead)
Confirm
Action
Nunchuk Z
R
Cancel
Run
Pick Up Items
Wiimote IR Pointer
L (toggle)
Left Stick or Right Stick
(depends on code used)
Move Cursor
General Notes
Two code varieties for this one, choose whichever feels more natural to you. IR aiming is pretty important to City Folk, with all inventory manipulation being IR-based. If you choose the Left Stick code, the Left Stick toggles between movement and IR input, i.e. you can't move and point at the same time. However, there's rarely any advantage to this, as there's no real multitasking possible. If you choose the Right Stick code, all you can really do is move the stupid cursor around while you run. Whee. If you want my opinion, use the Left Stick code.
Where possible, I try to "intelligently" enable/disable the pointer mode. The player can always toggle it on/off with the L button, but some other actions (opening the Inventory, Map or Photos menus) will automatically enable pointer mode for you. Try to remember to exit these menus using the same button you used to open them: e.g. you can press X to open the inventory (pointer turns on automatically) then X again to close it (pointer turns off automatically). If you instead open the menu with X then close it with B, you'll still be in pointer mode, because you didn't close with X. In this case, you should press L to disable the pointer manually. I'm trying here.
If the IR pointer movement is too fast/slow for you, you can adjust it by editing the float 0.015 (3C75C28F) about halfway through the code. You could adjust it down to 0.01 (3C23D70A) for a slower cursor, or bump it up to 0.02 (3CA3D70A) for a faster cursor, or whatever other number feels appropriate. There's plenty of hex float converters online, I linked one in a previous post somewhere.
It's worth knowing that this game supports USB keyboards. Using an on-screen keyboard with an IR pointer is sort of acceptable, but using an on-screen keyboard with a pointer you control using an analog stick is a bad time. If you have a USB keyboard handy it will hugely improve the experience if you're looking to do any typing (e.g. writing letters or chatting with other players over network play). It doesn't have to be a special Wii keyboard or anything; I use a standard PC Logitech Unifying USB dongle in my Wii. Failing that, if you use the phone in your house you can change the keyboard settings to use an old-school mobile keyboard which you might find easier to use with an analog stick.
I got a specific request (elsewhere, not in this thread) for an option where the Right Stick pointer is always enabled, but personally I think it's kind of bad. The game changes a lot of things about how it works when you're pointing at the screen, which don't make sense when playing on a traditional controller. For example, pressing A now makes you walk toward the cursor instead of interacting with whatever is in front of you. Pointing at the screen also causes the HUD to display at all times, which means the screen is cluttered with on-screen buttons the whole time you're playing. If anybody here wants this version, I guess ask for it but I find it offers an inferior experience to either of the codes above and shouldn't really be considered an equal option against those.
Technical Notes
This game has that same Super Paper Mario issue where the Home Button Menu causes a Classic Controller re-init every 64 frames. I solved it the same way, disabling getInfoAsync() from running. Thinking about it more since last time, I suspect this probably has something to do with checking things like the battery level that displays in the HBM. I do still allow getInfoAsync() to run when you first enter the HBM in both this and Paper Mario, so it's not like the HBM is running blind but if you just leave it open it might not correctly track the battery level or something pointless like that, I don't care.
Briefly, the code is: C2 to allow Classic Controller's left stick to be read for movement, C2 to disable the bad EXT error, 04 disable getInfoAsync(), C2 and C2 actually redirect analog reads to the Classic when needed, C2 custom read_kpad_dpd() (Left Stick code has an additional feature to prevent character movement while in pointer mode) and then the button injector gets inserted into KPADRead() in the last C2.
Credits
mogchamp from the AC: Wiimmfi Folk Discord for advising on the button layout
Wario Shake Dimension is working now with the "force cc connected" option. Thanks for that info. I tried Super paper mario. Got it working until I had to enter a name and then the game freezes with a loud buzzing sound. Does it mean I have the wrong revision version? How can I check the rev Version number? Unfortunately I don't have the disc anymore. But if the cc codes are for another version of super paper mario, wouldn't it just freeze at the start and not after typing a name?
Never used gecko codes before but using Dolphin Android and this happens when inputting the code for Super Paper Mario.
I mean.... What is the error? Where is the error?? Can anyone help, I'm living upto my name here..
Edit... Turns out you take out the heading and only add the code then! That cleared the error however it doesn't seem to working when i boot the game. Using the correct rev also.
Never used gecko codes before but using Dolphin Android and this happens when inputting the code for Super Paper Mario.
I mean.... What is the error? Where is the error?? Can anyone help, I'm living upto my name here.. View attachment 462343
Edit... Turns out you take out the heading and only add the code then! That cleared the error however it doesn't seem to working when i boot the game. Using the correct rev also.
Ok but how do you know it is rev 2? Is there a way to check that? After all they released so man revisions for this game. Maybe we both have the wrong ones. In that case it won't work
Ok but how do you know it is rev 2? Is there a way to check that? After all they released so man revisions for this game. Maybe we both have the wrong ones. In that case it won't work
Ok but how do you know it is rev 2? Is there a way to check that? After all they released so man revisions for this game. Maybe we both have the wrong ones. In that case it won't work
Dolphin or tools such as Wii Backup Manager can identify what revision a game is. The disc will typically have an indication on it as well, assuming you have the disc available.
Ok thanks. Turns out I have rev1 for super paper mario pal which the cc code was for, but it freezes after I create a save file. Has anyone tested the classic controller patch already with success?
Wow, these hacks are great! Thanks for the work. Is it possible to have this thread appear in the Wii U forum as well? Some people, myself included, like to inject Wii games with cc hacks to play them on the gamepad, and I just came across this thread by chance.
In what could possibly be the worst way to start October for emulation enthusiasts, as of just a few minutes ago the Ryujinx repository appears to be down, with the...
The Legend of Zelda: Echoes of Wisdom has officially leaked online ahead of its 26th September street date.
TLOZ: Echoes of Wisdom marks the first time that a...
The Legend of Zelda: A Link to the Past is a standout game in the Zelda franchise, and one that many hold dear. With a remarkably open design for its time, paired...
It's time to see what surprise PlayStation has in store for the future, with its PS5 Technical Presentation broadcast. Will we see a PS5 Pro? Or will it be something...
Images of what are supposedly a factory prototype for the Nintendo Switch 2 alongside a spec sheet have appeared on a Chinese forum.
The renders show the device from...
With a Switch 2 reveal hopefully on the horizon, the question is how much will Nintendo ask for the base model at launch and what will their launch offerings be...
A brand new system software update has been released. Nintendo has just put out a milestone firmware release for the Nintendo Switch, bringing the OFW to 19.0.0...
Late yesterday, Nintendo and The Pokemon Company filed a lawsuit against Pocketpair, the developer of the monster-collecting open-world game Palworld, alleging it...
When Palworld released into early access back in January of this year, it drew attention for its similarities to Pokemon. Some called into question whether or not the...
The little brother to Nintendo’s flagship hardware, the Switch Lite released in 2019 to positive reviews. With all the power of the full-sized console at a lower...
In what could possibly be the worst way to start October for emulation enthusiasts, as of just a few minutes ago the Ryujinx repository appears to be down, with the...
It's time to see what surprise PlayStation has in store for the future, with its PS5 Technical Presentation broadcast. Will we see a PS5 Pro? Or will it be something...
The Legend of Zelda: Echoes of Wisdom has officially leaked online ahead of its 26th September street date.
TLOZ: Echoes of Wisdom marks the first time that a...
Images of what are supposedly a factory prototype for the Nintendo Switch 2 alongside a spec sheet have appeared on a Chinese forum.
The renders show the device from...
With a Switch 2 reveal hopefully on the horizon, the question is how much will Nintendo ask for the base model at launch and what will their launch offerings be...
A brand new system software update has been released. Nintendo has just put out a milestone firmware release for the Nintendo Switch, bringing the OFW to 19.0.0...
Late yesterday, Nintendo and The Pokemon Company filed a lawsuit against Pocketpair, the developer of the monster-collecting open-world game Palworld, alleging it...
A little under four years after its PC port, and PlayStation has delisted Horizon Zero Dawn. That's because Horizon Zero Dawn Remastered will soon take its place...
When Palworld released into early access back in January of this year, it drew attention for its similarities to Pokemon. Some called into question whether or not the...
The little brother to Nintendo’s flagship hardware, the Switch Lite released in 2019 to positive reviews. With all the power of the full-sized console at a lower...
Will Assurance Wireless notify me when my device is eligible to be unlocked/has been unlocked?
Assurance Wireless will automatically unlock eligible devices if it is technically possible for us to do so. For any device that cannot be remotely unlocked, Assurance Wireless will send a notification to the device when it becomes eligible with next steps to complete the unlock process. If you need help with device unlocking, please contact Assurance Wireless Customer Care at 1-888-321-5880.