Hacking New Classic Controller Hacks

awesomeee

Well-Known Member
Member
Joined
Oct 7, 2024
Messages
119
Trophies
0
XP
169
Country
United States
Believe so, in a both chuck and wiimote setup iirc. Also bit of flickery going on!

Akin to a smg set up and play style I'd say.
Great! That means a classic controller hack should be 100% possible (probably)

Classic controller hacks use KPADRead functions, and the nunchuk is supported here, so there should be enough code to hack classic controller support in.
 
  • Like
Reactions: Lostbhoy

Lostbhoy

HEY YOU GUYS!
Member
Joined
Aug 23, 2009
Messages
2,876
Trophies
4
Age
45
Location
Scotland
XP
6,256
Country
United Kingdom
Great! That means a classic controller hack should be 100% possible (probably)

Classic controller hacks use KPADRead functions, and the nunchuk is supported here, so there should be enough code to hack classic controller support in.
Good to hear... Living upto your name lol 🤣

Well hopefully the vaguester can have a look when he's finished with the rest of the wii library the poor guy has on his plate 🤣🤣👍👍
 

sonictopfan

Well-Known Member
Member
Joined
Mar 2, 2010
Messages
2,817
Trophies
1
XP
2,314
Country
Great! That means a classic controller hack should be 100% possible (probably)

Classic controller hacks use KPADRead functions, and the nunchuk is supported here, so there should be enough code to hack classic controller support in.
What about Sonic Riders Zero Gravity? It has support for every controller set up including the Gamecube, Nunchuck, and Wii remote both sideway and vertical, but no classic controller support making it incompatible with the gamepad, can it be done?
 

awesomeee

Well-Known Member
Member
Joined
Oct 7, 2024
Messages
119
Trophies
0
XP
169
Country
United States
What about Sonic Riders Zero Gravity? It has support for every controller set up including the Gamecube, Nunchuck, and Wii remote both sideway and vertical, but no classic controller support making it incompatible with the gamepad, can it be done?


Sonic Riders has been mentioned before and it's one I took a look at but made absolutely no progress with. This is probably by far the most complicated one I've looked at so far, because it needs the Classic Controller remapped to behave like a GameCube pad. In Wii games, there's one (technically two) libraries that handle reading the Wiimote/Nunchuk/Classic Controller, and a completely unrelated library handles reading the GameCube controller. That makes having a Classic Controller behave like a solo Wiimote/Nunchuk a much simpler prospect than behaving like a controller from a completely separate library. I still want to figure this one out, but it's definitely tough.

^
|
 

sonictopfan

Well-Known Member
Member
Joined
Mar 2, 2010
Messages
2,817
Trophies
1
XP
2,314
Country
Thank you for the response, I appreciate it.

Idk if this helps but the game has multiple options not just the GC controller, honestly if I can just emulate the Wii remote shake to one of the buttons (B button for example) it should be "kind of" doable, you can use UWUVCI with the default vertical control method and for the most part the game is playable, only downsides are you have to use the d-pad (which sucks but I can live with that) and you cannot dive as it requires a remote shake to activate, meaning you'd be racing with a disadvantage over the cpu and you cannot beat the story on account the final boss requires the dive move, in thoery the old DKCR patch should work.
 

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,532
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,900
Country
Can these codes be added to wherever USB Loader GX downloads it's Ocarina codes to avoid having to make manual changes to exiting .txt files on the SD card?
Good question. I'm not actually sure where USB Loader GX gets its codes from. It used to be GeckoCodes.org, but that closed down years ago. Anybody know how it works currently?

Hi @Vague Rant . Thanks for your Kirby's patch and code with shake emulation. It works perfectly as inject.
I have a issue with my SMG2 gamepad inject : when i press home button, the gamepad's totally disconnecting and i can't come back to the game.
The only thing i can is shutdown wii u.
The fix i already mentioned which works for little king's story doesn't work for SMG2.
Is there a way to fix it ?
I don't have this problem with Galaxy 1 gamepad inject.
Yeah, that's a known issue with Super Hackio's Galaxy 2 hack. I didn't author the Mario Galaxy hacks myself, just rebuilt them to work on Wii U, so I don't have any inside understanding of how Super Hackio implemented the CC support in those games. I don't really know why it is that Galaxy 2 has that issue, or why Galaxy 1 doesn't. Sorry.

@Vague Rant I just injected "Jett Rocket" successfully to the wii u menu. Thanks again for the possibility. Since you decided to keep the menu navigation sanity over the gameplay, I had an idea where you could have both. Just mirror the jump button to A and Y. In this case it's easy to hold Y for jump, B for interaction, ZR for shake/dash and ZL to re-center the camera. And you would have the A and B buttons for confirm and back prompts in the navigation menu. But of course if it's too much of a hassle, then it's ok like it is. If there's one thing I have learned here, then it's to believe the master when he says it's complicated 😂
That's a good idea. I think if I do come back to Jett Rocket I will also just say to hell with it and make a version that completely disregards the menu controls. I'm sure plenty of people here are used to "reversed" confirm/cancel buttons anyway from playing Xbox or PlayStation games, so it wouldn't be the worst thing in the world.

Hello all.
I would like to make a quick statement here.

For a while, i have been only asking for hacks and doing a little help, by reccomending the GCT embedder.

So from now on, i will try my best to help anyone that is having trouble in this thread 👍

I will make a simpler process for a patched Kirby Wii ISO when i have time, that uses the Riivolution ISO builder and another tool.
-awesomeee
Post automatically merged:

Hello all. I have made a simple Kirby Wii ISO Patcher. This uses the Riivolution ISO Builder and the Easy GCT Embedder, so i have made sure to leave credits in this program.
That's really cool, nice work. Kirby's definitely a pretty complicated one to build, so that will be a huge help to people. 👍

@Vague Rant Can the Easy GCT embedder be placed somewhere in the first post of this thead? It will be useful to anyone making a VC inject.
PS: Its fine if not, would just be useful 👍
Good idea, will do!

I'm interested if there will be a controller patch for No More Heroes 1
I just looked at that games controls and im a little concerned, it uses up and down wiimote tilt attacks, it might be possible though, Vague Rant did manage to get Mario sports mix underhand and overhand shots working, and epic mickey which is an extremely difficult game, interesting idea!
Yeah, what awesomeee said basically. The game is on my list in the "Jeez, these look complicated as hell" section due to the use of detailed motion controls. Doesn't mean that it's impossible, but there's already a few games with complex motion controls that I've had to either give up on or backburner hard because I wasn't able to figure them out.

Can you do Sonic Riders Zero Gravity please? Game has GC controller support, Wii remote sideways support, wii remote vertical support, but no CC support, which makes it incompatible with the Wii U gamepad.

Edit: Also Looney Tunes Acme Arsenal please, game was released on PS2 and Xbox 360 with controller support but on Wii it forces the nunchuck and is full of forced waggle.
What about Sonic Riders Zero Gravity? It has support for every controller set up including the Gamecube, Nunchuck, and Wii remote both sideway and vertical, but no classic controller support making it incompatible with the gamepad, can it be done?
I don't think Sonic Riders actually does support the Nunchuk or that would have been the first thing I tried to do. It's not on the box and I can't find any info about it being playable that way. In theory, it would be easier to emulate the standalone Wiimote in either vertical or horizontal setup instead of trying to do the GameCube controller, but obviously you lose the analog stick support that way. I definitely would like to figure this game out though, I've come back to it a couple of times but haven't had much success so far.

Looney Tunes does sound somewhat complicated due to use of the Nunchuk accelerometer. That's always difficult to figure out because it involves more reworking of the KPAD library than usual, since the Classic Controller doesn't have a Nunchuk accelerometer. I know it doesn't have any of these things, that's what the hacks are for, but the tl;dr is that KPAD, which (most) games use to read input from controllers, has different code paths and a different output format depending on the extension controller connected. Wrangling the Classic report into a fully-featured Nunchuk report is pretty complex vs. "just" getting the Nunchuk analog stick working. Still, I'll add it to my list of games to investigate.

@Vague Rant... I promised i wasn't gonna do a request lol but could the Wii SSX game be possible?

I mean like, is it do-able?
Definitely looks like an extremely complicated one with lots of motion controls, including on the Nunchuk (tilts for steering and tricks, shake for snowballs) and then using to Wiimote accelerometer to draw specific shapes in the air to do Ubertricks. I wouldn't go as far as saying it's impossible, but figuring out how to simulate all of that probably isn't on the cards for me, sorry.



tornado-hero.png


Tornado Outbreak comes from Loose Cannon Studios, an independent developer made up mostly of Sucker Punch/Sly Cooper team members, including Sly creator Dev Madan. Players control Zephyr, a Wind Katamari Warrior who comes to Earth in search of the scattered power orbs, leaving a trail of destruction in his wake. Each level is filled with objects of increasing size which can only be picked up by a sufficiently powerful tornado, meaning Zephyr has to start small with plants and rocks before he can graduate to fences, trees, people, livestock, cars and eventually whole buildings. Also there's some bad guys or whatever.

USAEUR

  1. Code:
    Classic Controller Support [Vague Rant]
    C208BDE4 00000003
    881F0224 2C000002
    40820008 38000001
    60000000 00000000
    C231ECAC 0000000A
    C03E04DC 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820014 C0240000
    FC000850 D01E0068
    48000020 807E0000
    70600080 41820014
    C03E0068 2C190001
    FC000850 D01E0068
    60000000 00000000
    C231F6C8 0000001E
    90010024 2C040000
    408200E0 8803005C
    2C000002 408200D4
    2C190001 40820090
    48000015 802EF324
    3FAAAAAB 3D4CCCCD
    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
    C231E724 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 60C62000
    71092000 41820008
    60C64000 71090200
    41820008 60C60800
    71090080 41820008
    60C62000 71090004
    41820008 60C60400
    71090400 41820008
    60C60010 71091000
    41820008 60C60200
    7CC73378 70C99FFF
    60000000 00000000
  2. Code:
    Classic Controller Support [Vague Rant]
    C208BDE4 00000003
    881F0224 2C000002
    40820008 38000001
    60000000 00000000
    C231EE5C 0000000A
    C03E04DC 48000009
    4059999A 7C8802A6
    807E0004 70600080
    41820014 C0240000
    FC000850 D01E0068
    48000020 807E0000
    70600080 41820014
    C03E0068 2C190001
    FC000850 D01E0068
    60000000 00000000
    C231F878 0000001E
    90010024 2C040000
    408200E0 8803005C
    2C000002 408200D4
    2C190001 40820090
    48000015 802EF4D4
    3FAAAAAB 3D4CCCCD
    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
    C231E8D4 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 60C62000
    71092000 41820008
    60C64000 71090200
    41820008 60C60800
    71090080 41820008
    60C62000 71090004
    41820008 60C60400
    71090400 41820008
    60C60010 71091000
    41820008 60C60200
    7CC73378 70C99FFF
    60000000 00000000

USA/EUR

  1. Code:
    16:9 Widescreen [Vague Rant]
    C2028304 00000003
    EC3F0024 80C70540
    2C060000 40820008
    EC210072 00000000

Button Mapping​

This is actually a pretty weird case: Tornado Outbreak includes support for the Classic Controller analog sticks out of the box. It's not possible to see this normally because you're blocked by the "insert the Nunchuk" error, but once that is bypassed, the sticks just start working. That's why the table includes some Classic Controller inputs on the left column.

Wii Remote/Nunchuk/ClassicClassic ControllerFunction
Wiimote HomeHome
Works normally
Open/Close Home Menu
Wiimote D-PadD-Pad
(see also Classic Right Stick)
Menus
Navigation
Gameplay
Camera Control
Wiimote AA
R
Menus
Confirm
Gameplay
Stone Stomp (jump)
Wiimote BB
ZR
Menus
Cancel
Gameplay
Absorb Fire Flyers
Shield
Wiimote 1MinusMenus
Start Game without Saving
Wiimote 2Not mappedNot used?
Wiimote PlusPlusGameplay
Pause
Wiimote MinusNot mappedNot used?
Wiimote ShakeXGameplay
Attack Totem
Wiimote PointerLeft StickHome Button Menu
Navigation
Nunchuk StickNot mapped
(see Classic Left Stick)
Gameplay
Movement
Nunchuk CLMultiplayer
Target Other Player
Nunchuk ZY
ZL
Gameplay
Dash
Classic Left StickClassic Left StickMenus
Navigation
Gameplay
Movement
Classic Right StickClassic Right StickGameplay
Camera Control

General Notes​

  • If you're using this as a Wii U Wii VC injection, you must enable the "Force Classic Controller connected" option in your injection software. Many thanks to @KeinesR for reporting this.

  • Tornado Outbreak has the weirdest non-widescreen-support. The game checks your widescreen setting and adjusts the HUD to display in widescreen, then peaces out without doing anything else. The entire game except the HUD is just 4:3 stretched across 16:9. To counter this, I've included a code to add real 16:9 support in gameplay, for anybody who isn't satisfied by widescreen HUD technology alone.

    • The HD versions on PS3/Xbox 360 included native widescreen support. I don't own either of those versions, but looking at footage on YouTube, this hack seems to offer a pretty close approximation of what the game looks like (minus the HD) on those platforms.

    • The code checks your aspect ratio setting before doing anything, so if you really are running in 4:3, it's fine to have this code active, it will just chill. Even if you're only planning to play in 4:3 right now, I recommend using the code anyway. That way, if you ever do want to play in widescreen but you've forgotten this issue, it will Just Work™. Also it's free.

  • As mentioned in the Button Mapping section, Tornado Outbreak already has some unfinished Classic Controller support. That was really nice. The Right Stick camera controls even respect the option to invert the camera movement in the pause/options menu. More games with freebies please.

  • Although this game did release on PS3 and Xbox 360, I haven't really taken many cues from the control schemes in those versions. The controls here are pretty much what you'd get on the Wiimote and Nunchuk if you removed the accelerometers and fused them into one device and called it a Classic Controller.

    • The HD versions made some odd choices like leaving the left trigger idle and putting Dash on a face button, even though manual camera control is very important in this game. I went ahead and did both, making it possible to keep your thumb on the Right Stick at all times and use the triggers for actions. Alternatively, if you prefer to use the face buttons, you can do that too.

    • The assembly source for the button injector is in the Technical Notes section if you want to build your own custom mapping using CodeWrite.

Technical Notes​

Code breakdown:
  • C2: bypass Nunchuk error
  • C2 in read_kpad_acc(): emulate shaking
  • C2 in calc_dpd_variable(): emulate IR pointer
  • C2 in read_kpad_button(): button injector
Code:
; read_kpad_button
; 8031E724 for USA
; 8031E8D4 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, 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, 0x2000    ; z

    CLASSIC_L:
      andi. r9, r8, 0x2000
      beq- CLASSIC_R
      ori r6, r6, 0x4000    ; c

    CLASSIC_R:
      andi. r9, r8, 0x200
      beq- CLASSIC_ZL
      ori r6, r6, 0x800     ; a

    CLASSIC_ZL:
      andi. r9, r8, 0x80
      beq- CLASSIC_ZR
      ori r6, r6, 0x2000    ; z

    CLASSIC_ZR:
      andi. r9, r8, 0x4
      beq- CLASSIC_PLUS
      ori r6, r6, 0x400     ; b

    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, 0x200     ; 1

RETURN:
  mr r7, r6
  andi. r9, r6, 0x9FFF
 
Last edited by Vague Rant,

awesomeee

Well-Known Member
Member
Joined
Oct 7, 2024
Messages
119
Trophies
0
XP
169
Country
United States
Amazing!
Glad you are back aswell, take some more time to rest if needed 👍

Im also glad that the hydroventure hack was possible, its SOO fun on the gamepad and i beat the game 100%!

Hopefully that game increases your knowledge on kpad_read_acc aswell. (Motion control inputs in general too)
Post automatically merged:

@Vague Rant The gecko codes in USB Loader come from http://codes.rc24.xyz/
 
Last edited by awesomeee,

Nintendo Maniac

Well-Known Member
Member
Joined
Apr 26, 2007
Messages
877
Trophies
1
XP
786
Country
United States
New Super Mario Bros. Wii

Wii RemoteClassic Controller/ProFunction
AAMenus
Confirm
Overworld
View Map
Gameplay
Bubble (multiplayer)
BNot mappedNot used?
1YMenus
Cancel
Gameplay
Run
Pick Up Objects

I know for people that grew up with a SNES that the above is the preferred configuration and matches their own corresponding muscle-memory, but would it be rude of me to ask about a CC_A=jump + CC_B=run configuration for those of us that grew up with the GameBoy instead? (and later DS - I did use my DS as my primary GBA machine for quite a bit as well) I've only computer SMB1, SMB lost levels, and SMB2 for example in their Game Boy incarnations.

As an example, even though I own Contra 4 on cartridge, I actually can barely even play it very well because my own muscle-memory wants to have A=jump and B=shoot as was the case for all of the 2D Metroid games up to that point in time except for Super Metroid (which has built-in configurable controls anyway), and was similarly especially true if you played the NES or Game Boy versions of Contra.

Also, everyone I knew with game consoles (a neighbor near my old house, a neighbor near my current house, and my uncle) all had a Genesis/Mega Drive growing up rather than a SNES - I've literally only played a SNES a whopping one time which was a Best Buy demo unit running Yoshi's Island when I was like 4 years old.

EDIT: Oh lawl, looking at your more recent codes it seems that you've been already doing both AB/BY variations, so I'm guessing NSMBWii simply predated you making both?
 
Last edited by Nintendo Maniac,
  • Like
Reactions: awesomeee

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,532
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,900
Country
Amazing!
Glad you are back aswell, take some more time to rest if needed 👍

Im also glad that the hydroventure hack was possible, its SOO fun on the gamepad and i beat the game 100%!

Hopefully that game increases your knowledge on kpad_read_acc aswell. (Motion control inputs in general too)
Post automatically merged:

@Vague Rant The gecko codes in USB Loader come from http://codes.rc24.xyz/
A rest probably would have been more productive. The gap between the last couple of hacks was really just that I hit against a long string of games I couldn't figure out the motion controls for. The accelerometers also tend to be what I get to last unless the game needs them right at the beginning, so I basically went through most of the process of making a Classic Controller hack multiple times, then got stuck with nothing releasable because one part of the controls just didn't work. Then I picked up Tornado just because it seemed like a pretty simple game, control-wise, and I wanted to find one I could actually finish. (And then I got stuck figuring out how to fix its weird broken widescreen feature.)

Fluidity definitely forced me to learn more about how accelerometer input works and the math behind it. It wanted some pretty specific/accurate info that I wasn't initially providing. Pretty great that you 100%'ed it already with the hack. I ended up playing through quite a lot of it again just to test that everything was working correctly, but nowhere near 100%!

Nice to know that USB Loader GX uses RC24's code database. They mirror GameHacking.org's, and technically I got approved to post to GameHacking a couple of months ago. I never actually took them up on the offer, mainly because I got sidetracked doing a bunch of Classic Controller hacks, haha. I'll have to see if they'll still have me.

I know for people that grew up with a SNES that the above is the preferred configuration and matches their own corresponding muscle-memory, but would it be rude of me to ask about a CC_A=jump + CC_B=run configuration for those of us that grew up with the GameBoy instead? (and later DS - I did use my DS as my primary GBA machine for quite a bit as well) I've only computer SMB1, SMB lost levels, and SMB2 for example in their Game Boy incarnations.

As an example, even though I own Contra 4 on cartridge, I actually can barely even play it very well because my own muscle-memory wants to have A=jump and B=shoot as was the case for all of the 2D Metroid games up to that point in time except for Super Metroid (which has built-in configurable controls anyway), and was similarly especially true if you played the NES or Game Boy versions of Contra.

Also, everyone I knew with game consoles (a neighbor near my old house, a neighbor near my current house, and my uncle) all had a Genesis/Mega Drive growing up rather than a SNES - I've literally only played a SNES a whopping one time which was a Best Buy demo unit running Yoshi's Island when I was like 4 years old.

EDIT: Oh lawl, looking at your more recent codes it seems that you've been already doing both AB/BY variations, so I'm guessing NSMBWii simply predated you making both?
Actually, alternate control schemes mostly boil down to how much energy I've got when I'm posting the code set. For the last few codes though (I think starting with New Super Mario Bros. Wii, actually?) I've been including the assembly code in the Technical Notes section, which you can use to remap the controls any way you like. I know it sounds kind of complicated, but it's really quite simple to modify the controls if anybody wants a different setup and you don't need any technical knowledge at all.

With the assembly copied from the Technical Notes, you can just paste it into the app CodeWrite, put the insertion address (the number you see at the top of the assembly file) into the top field, then click the right arrow to generate the Gecko code for you, so all you have to do is swap the button numbers around. You can see in the screenshot below where the A/B/X/Y buttons are mapped.

codewrite.png


Each button is labelled with a friendly name like CLASSIC_A and then to change what emulated button gets pressed, you just change the last line for that button, e.g. ori r6, r6, 0x100 ; 2. To swap NSMBWii around to using a B/A approach, you'd just want to do something like this:
Code:
    CLASSIC_A:
      andi. r9, r8, 0x10
      beq- CLASSIC_B
      ori r6, r6, 0x100     ; 2

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

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

    CLASSIC_Y:
      andi. r9, r8, 0x20
      beq- REVISION
      ori r6, r6, 0x800     ; a
Once you've built your code, you can just replace the button mapping part in the original hack with your custom version.



SI_Wii_FragileDreams_image1600w.jpg


A collaboration between Namco and tri-Crescendo (Star Ocean, Baten Kaitos, Tales of ...), Fragile Dreams: Farewell Ruins of the Moon is a genre-bending ... survival horror RPG? As one of the few remaining humans still alive in post-apocalyptic future Japan, Seto braves the dangerous outside world looking for other survivors and an explanation of just what has happened to this ruined world. Gameplay involves real-time combat with a level up and inventory system interrupted by more thoughtful segments involving environmental and other puzzles.

USAEURJPN

  1. Code:
    Classic Controller Support [Vague Rant]
    04244BE0 38000001
    041108D8 38000001
    C223EF28 0000000E
    889E005C 2C040002
    40820060 809E0004
    4800000D 00000000
    BF800000 7CA802A6
    C0050004 D01E04DC
    70800080 41820010
    38C00004 90C50000
    48000020 80C50000
    2C060000 40810024
    2C140001 4082000C
    38C6FFFF 90C50000
    FC800090 D09E04D8
    FC042028 D01E04DC
    80C3000C 00000000
    C223F998 00000027
    90010024 2C040000
    40820128 8803005C
    2C000002 4082011C
    2C140001 408200D8
    48000019 3DCCCCCD
    801FA430 3FAAAAAB
    3DCCCCCD 3F800000
    7CA802A6 90A1000C
    80830000 70800400
    40820044 38000002
    9803005E C0030074
    D0030020 C0230078
    FC200850 D0230024
    FC000210 FC200A10
    FC00082A C0250000
    FC000800 41810078
    38000000 9803005E
    4800006C 38000002
    9803005E 81850004
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450008
    40820008 EC4200B2
    C065000C C0030060
    C0230074 FC20082A
    C0030020 FC211024
    48000035 D0030020
    C0030064 C0230078
    FC20082A C0030024
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C0250010 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    04240890 7FC3F378
    C223E9A4 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 60C60800
    71092000 41820008
    60C64000 71090200
    41820008 60C60800
    71090080 41820008
    60C62000 71090004
    41820008 60C60400
    71090400 41820008
    60C60010 71091000
    41820008 60C61000
    7CC73378 70C99FFF
    60000000 00000000
  2. Code:
    Classic Controller Support [Vague Rant]
    04245240 38000001
    041108E8 38000001
    C223F588 0000000E
    881E005C 2C000002
    40820060 809E0004
    4800000D 00000000
    BF800000 7CA802A6
    C0050004 D01E04DC
    70800080 41820010
    38C00004 90C50000
    48000020 80C50000
    2C060000 40810024
    2C140001 4082000C
    38C6FFFF 90C50000
    FC800090 D09E04D8
    FC042028 D01E04DC
    80C3000C 00000000
    C223FFF8 00000027
    90010024 2C040000
    40820128 8803005C
    2C000002 4082011C
    2C140001 408200D8
    48000019 3DCCCCCD
    801FAA90 3FAAAAAB
    3DCCCCCD 3F800000
    7CA802A6 90A1000C
    80830000 70800400
    40820044 38000002
    9803005E C0030074
    D0030020 C0230078
    FC200850 D0230024
    FC000210 FC200A10
    FC00082A C0250000
    FC000800 41810078
    38000000 9803005E
    4800006C 38000002
    9803005E 81850004
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450008
    40820008 EC4200B2
    C065000C C0030060
    C0230074 FC20082A
    C0030020 FC211024
    48000035 D0030020
    C0030064 C0230078
    FC20082A C0030024
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C0250010 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    04240EF0 7FC3F378
    C223F004 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 60C60800
    71092000 41820008
    60C64000 71090200
    41820008 60C60800
    71090080 41820008
    60C62000 71090004
    41820008 60C60400
    71090400 41820008
    60C60010 71091000
    41820008 60C61000
    7CC73378 70C99FFF
    60000000 00000000
  3. Code:
    Classic Controller Support [Vague Rant]
    04031148 38000001
    C2228398 0000000E
    881E005C 2C000002
    40820060 809E0004
    4800000D 00000000
    BF800000 7CA802A6
    C0050004 D01E04A8
    70800080 41820010
    38C00004 90C50000
    48000020 80C50000
    2C060000 40810024
    2C0F0001 4082000C
    38C6FFFF 90C50000
    FC800090 D09E04A4
    FC042028 D01E04A8
    80C3000C 00000000
    C2228DE0 00000027
    90010024 2C040000
    40820128 8803005C
    2C000002 4082011C
    2C0F0001 408200D8
    48000019 3DCCCCCD
    801E5378 3FAAAAAB
    3DCCCCCD 3F800000
    7CA802A6 90A1000C
    80830000 70800400
    40820044 38000002
    9803005E C0030074
    D0030020 C0230078
    FC200850 D0230024
    FC000210 FC200A10
    FC00082A C0250000
    FC000800 41810078
    38000000 9803005E
    4800006C 38000002
    9803005E 81850004
    7D8803A6 4E800021
    2C030001 7FE3FB78
    80A1000C C0450008
    40820008 EC4200B2
    C065000C C0030060
    C0230074 FC20082A
    C0030020 FC211024
    48000035 D0030020
    C0030064 C0230078
    FC20082A C0030024
    FC200850 48000019
    D0030024 80010024
    7C0803A6 38210020
    4E800020 FC0100FA
    C0250010 FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 4E800020
    60000000 00000000
    04229C98 7FC3F378
    C222A388 0000001A
    2C040002 408200BC
    38800001 71200800
    41820008 60E78000
    71200001 41820008
    60E70008 71204000
    41820008 60E70004
    71200002 41820008
    60E70001 71208000
    41820008 60E70002
    71200010 41820008
    60E70800 71200040
    41820008 60E70400
    71200008 41820008
    60E70080 71200020
    41820008 60E70800
    71202000 41820008
    60E74000 71200200
    41820008 60E70800
    71200080 41820008
    60E72000 71200004
    41820008 60E70400
    71200400 41820008
    60E70010 71201000
    41820008 60E71000
    7CE83B78 70E09FFF
    60000000 00000000

Button Mapping​

Wii Remote/NunchukClassic ControllerFunction
Wiimote HomeHome
You must hold the B button to enable the pointer
Open/Close Home Menu
Wiimote D-PadD-PadMenus
Navigation
Gameplay
Open Menus
Wiimote AA
Y
R
Menus
Confirm
Gameplay
Attack
Interact
Wiimote BB
ZR
Menus
Cancel
Gameplay
First-Person View
Wiimote 1 & 2Not mappedNot used?
Wiimote PlusPlusZoom In Map
Wiimote MinusMinusZoom Out Map
Wiimote TiltXGameplay
Hint from PF
Wiimote PointerThird-Person
Right Stick
First-Person
Left Stick
Right Stick
Gameplay
Aim Flashlight
Nunchuk StickLeft StickMenus
Navigation
Gameplay
Movement
Nunchuk CLGameplay
Crouch
Nunchuk ZZLGameplay
Re-Center Camera

General Notes​

  • Fragile Dreams is a game where you walk around pointing a flashlight for the entire game. Ordinarily, this is controlled with the IR pointer, so this required some specific handing to make it work on a stick. When you're walking around in third-person view, the flashlight is directly mapped on the Right Stick in an absolute sense: you're not controlling a cursor, you just point the stick in the direction you want to point the flashlight. When you're not using the stick, the flashlight is simply pointed straight ahead of your character.

    When you hold the B button to enter the first-person view to inspect objects, this switches to a cursor-based setup where you control where the flashlight is pointing in a relative fashion; the cursor position moves based on what you do on the stick (in first-person, that means either stick) and stays wherever you leave it rather than snapping back to the center. Neither of these is quite as good as a real IR pointer, but this was the best way I could find to accommodate the flashlight.

  • I recommend going into the Options menu and disabling the cursor icon. It's quite distracting when playing in third-person mode because the Right Stick will flail the cursor around awkwardly. You don't really need it anyway because the position of the flashlight beam already indicates where the cursor is pointing.

    • Technically, you don't have the flashlight for the first couple of minutes of the game. The cursor is slightly useful right at the beginning since you don't have the flashlight to behave as a substitute cursor. You might want to play up to the first save point then turn off the cursor in the Options. Alternatively, you can just deal with having no cursor for a couple of minutes until you grab the flashlight, whatever works for you.

  • Fragile Dreams has an optional feature that has you use audio from the Wiimote speaker to hear hints and find things in your surroundings. The game has been confirmed to work as a Wii U VC injection (thanks @KeinesR!), but you absolutely must go into the Fragile Dreams Options screen and turn off the Wiimote speaker. Wii VC does not emulate that feature, so if you leave it enabled, it will be impossible to progress. Disabling this feature will pipe the Wiimote audio into the normal game audio so you're not missing anything. While you're in the Options, I would also recommend enabling the visual indicator for sounds.

    • The game's tutorial screens will still say things like "Hold the Wii Remote to your ear." I'm ... I'm not in charge of those, that's just how they made the game. Any time something wants you to hold the Wiimote to your ear, just listen to the audio coming from your normal speakers. This has nothing to do with the Classic Controller hack, the original game just doesn't account for people turning off that feature.

Technical Notes​

Code breakdown:
  • 04 in setKpad(): disable leftover Classic Controller support in the Home Button Menu because it interferes with the simulated Wiimote & Nunchuk; not necessary in JPN version
  • 04: disable Nunchuk error
  • C2 in read_kpad_acc(): simulate tilting the Wiimote to receive a hint from PF
  • C2 in calc_dpd_variable(): dual-mode pointer emulation with absolute and delta variants
  • 04 in read_kpad_ext(): redirect Classic Left Stick into Nunchuk Stick
  • C2 in read_kpad_button() (USA/EUR)/KPADiRead() (JPN): button injector

USA/EURJPN

  1. Code:
    ; read_kpad_button
    ; 8023E9A4 for USA
    ; 8023F004 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, 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      ; tilt
    
        CLASSIC_Y:
          andi. r9, r8, 0x20
          beq- CLASSIC_L
          ori r6, r6, 0x800     ; a
    
        CLASSIC_L:
          andi. r9, r8, 0x2000
          beq- CLASSIC_R
          ori r6, r6, 0x4000    ; c
    
        CLASSIC_R:
          andi. r9, r8, 0x200
          beq- CLASSIC_ZL
          ori r6, r6, 0x800     ; a
    
        CLASSIC_ZL:
          andi. r9, r8, 0x80
          beq- CLASSIC_ZR
          ori r6, r6, 0x2000    ; z
    
        CLASSIC_ZR:
          andi. r9, r8, 0x4
          beq- CLASSIC_PLUS
          ori r6, r6, 0x400     ; b
    
        CLASSIC_PLUS:
          andi. r9, r8, 0x400
          beq- CLASSIC_MINUS
          ori r6, r6, 0x10      ; plus
    
        CLASSIC_MINUS:
          andi. r9, r8, 0x1000
          beq- RETURN
          ori r6, r6, 0x1000    ; minus
    
    RETURN:
      mr r7, r6
      andi. r9, r6, 0x9FFF
  2. Code:
    ; KPADRead
    ; 8022A388 for JPN
    ; r4 holds extType
    ; r7 holds wiimote bitfield
    ; r8 holds wiimote+nunchuk bitfield
    ; r9 holds classic bitfield
    
    CLASSIC:
      cmpwi r4, 0x2
      bne- RETURN
    
      li r4, 0x1            ; i'm a nunchuk
    
        CLASSIC_HOME:
          andi. r0, r9, 0x800
          beq- CLASSIC_UP
          ori r7, r7, 0x8000    ; home
    
        CLASSIC_UP:
          andi. r0, r9, 0x1
          beq- CLASSIC_DOWN
          ori r7, r7, 0x8       ; up (v) / left (h)
    
        CLASSIC_DOWN:
          andi. r0, r9, 0x4000
          beq- CLASSIC_LEFT
          ori r7, r7, 0x4       ; down (v) / right (h)
    
        CLASSIC_LEFT:
          andi. r0, r9, 0x2
          beq- CLASSIC_RIGHT
          ori r7, r7, 0x1       ; left (v) / down (h)
    
        CLASSIC_RIGHT:
          andi. r0, r9, 0x8000
          beq- CLASSIC_A
          ori r7, r7, 0x2       ; right (v) / up (h)
    
        CLASSIC_A:
          andi. r0, r9, 0x10
          beq- CLASSIC_B
          ori r7, r7, 0x800     ; a
    
        CLASSIC_B:
          andi. r0, r9, 0x40
          beq- CLASSIC_X
          ori r7, r7, 0x400     ; b
    
        CLASSIC_X:
          andi. r0, r9, 0x8
          beq- CLASSIC_Y
          ori r7, r7, 0x80      ; tilt
    
        CLASSIC_Y:
          andi. r0, r9, 0x20
          beq- CLASSIC_L
          ori r7, r7, 0x800     ; a
    
        CLASSIC_L:
          andi. r0, r9, 0x2000
          beq- CLASSIC_R
          ori r7, r7, 0x4000    ; c
    
        CLASSIC_R:
          andi. r0, r9, 0x200
          beq- CLASSIC_ZL
          ori r7, r7, 0x800     ; a
    
        CLASSIC_ZL:
          andi. r0, r9, 0x80
          beq- CLASSIC_ZR
          ori r7, r7, 0x2000    ; z
    
        CLASSIC_ZR:
          andi. r0, r9, 0x4
          beq- CLASSIC_PLUS
          ori r7, r7, 0x400     ; b
    
        CLASSIC_PLUS:
          andi. r0, r9, 0x400
          beq- CLASSIC_MINUS
          ori r7, r7, 0x10      ; plus
    
        CLASSIC_MINUS:
          andi. r0, r9, 0x1000
          beq- RETURN
          ori r7, r7, 0x1000    ; minus
    
    RETURN:
      mr r8, r7
      andi. r0, r7, 0x9FFF
 
Last edited by Vague Rant,

awesomeee

Well-Known Member
Member
Joined
Oct 7, 2024
Messages
119
Trophies
0
XP
169
Country
United States
@Vague Rant So it seems like the force classic controller setting isnt working in mario sluggers. Each time i try to press a button, it works but then wont register any future input.

I apologize for the false information that force cc worked. The compatibility guide directly said so, but it wont work for some reason.

Turning the gamepad off then on allows for another input but then stops registering, its a super weird issue.
 
  • Like
Reactions: Tarmfot

awesomeee

Well-Known Member
Member
Joined
Oct 7, 2024
Messages
119
Trophies
0
XP
169
Country
United States
I did look into Mario Strikers Charged and was having a lot of trouble, then realized it's another Next Level Games ... game. I've looked at three of theirs so far including Strikers: one that I completely failed at, and the other being Punch-Out!! The major quirk of NLG titles is that they all use the low-level controller report data rather than the more "friendly" processed data which almost all other games use.
Sorry to hear that. Did you find where to inject the buttons though? Or is KPADRead like all over the place because of the controller data stuff?
Post automatically merged:

There is one motion input which I did not solve here: when you simultaneously shake both the Wii Remote and Nunchuk, Mickey fires off all three Guardians (Tint/Turp spirits) at once. You won't be able to do that move with this hack; instead, you'll have to fire off all three individually using separate Nunchuk shakes (R button). It would be nice, but it's entirely playable without it.
As for this, does pressing Y and R at the same time work? Both are a shake emulation, one for NC and one for Wiimote
 
Last edited by awesomeee,

KeinesR

Well-Known Member
Member
Joined
Feb 14, 2020
Messages
174
Trophies
0
Age
34
XP
491
Country
Venezuela
Thank you master, i was able to convert all this games into wii u NUS format:

Animal Crossing: City Folk / Let's Go to the City
Bit.Trip Complete
de Blob
de Blob 2
Disney Universe
Donkey Kong Jungle Beat
Endless Ocean
Epic Mickey
Excite Truck
Fragile Dreams: Farewell Ruins of the Moon (i patched this even with spanish translate)
Kirby's Epic Yarn
Kirby's Return to Dream Land / Kirby's Adventure Wii
Little King's Story
Madagascar: Escape 2 Africa
Mario Sports Mix
Metroid: Other M (also adds Nunchuk support)
Mushroom Men: The Spore Wars
Namco Museum Megamix
Punch-Out!!
Rhythm Heaven Fever / Beat the Beat: Rhythm Paradise
Speed Racer: The Videogame
Tornado Outbreak
Tron Evolution: Battle Grids
Wario Land: Shake It! / The Shake Dimension

everything worked perfect, (by the way, tornado outbreak needs force classic controller)

Keep up the good work!
 

awesomeee

Well-Known Member
Member
Joined
Oct 7, 2024
Messages
119
Trophies
0
XP
169
Country
United States
Im looking into UNO right now to see if a CC hack might be possible
And wii speak channel for some reason, that one might have enough code for me to work with

@Vague Rant Im having a lot of trouble finding read_kpad_button and the andi. function, is there anything else the guide didnt show? Help would be appreciated, thank you! There are a lot of b1 instructions so the symbol map can be confusing.
 
Last edited by awesomeee,

awesomeee

Well-Known Member
Member
Joined
Oct 7, 2024
Messages
119
Trophies
0
XP
169
Country
United States
Ive been looking at the symbol map for a while, but i can only find addi functions and not andi. functions, any idea about that?
 

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,532
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,900
Country
Sorry to hear that. Did you find where to inject the buttons though? Or is KPADRead like all over the place because of the controller data stuff?
Post automatically merged:


As for this, does pressing Y and R at the same time work? Both are a shake emulation, one for NC and one for Wiimote
I backburnered Mario Strikers after realizing it was another NLG game, so I haven't really figured anything out for it beyond what doesn't work (buttons via KPAD). As for Epic Mickey, nope, the separate Wiimote/Nunchuk shakes don't trigger the combined shake for whatever reason. Not sure what I'm missing there.

Oh oh.... What about Star Wars Force Unleashed??
Another one that's on my list but in the tough games category since it uses somewhat complex motion controls, compared to the kind of game that just responds to any waggle whatsoever.

Thank you master, i was able to convert all this games into wii u NUS format:

everything worked perfect, (by the way, tornado outbreak needs force classic controller)

Keep up the good work!
That's super awesome, thanks very much for the confirmation on all these games. I'll add that note to the Tornado Outbreak post as well. Great work!

Im looking into UNO right now to see if a CC hack might be possible
And wii speak channel for some reason, that one might have enough code for me to work with

@Vague Rant Im having a lot of trouble finding read_kpad_button and the andi. function, is there anything else the guide didnt show? Help would be appreciated, thank you! There are a lot of b1 instructions so the symbol map can be confusing.
Ive been looking at the symbol map for a while, but i can only find addi functions and not andi. functions, any idea about that?
andi. and addi are instructions rather than functions, a function is basically when you put a bunch of individual instructions together to get them to do some specific task. It can definitely be tough to track down the KPAD functions, especially in later games: it seems like Dolphin is better at locating select_1obj_continue() in older games for whatever reason. It can be a bit of an ordeal locating KPADRead() in newer (2010-ish?) games. Sometimes Dolphin doesn't recognize it as a function at all, so it won't appear in things like the Caller list (not even with an autogenerated name). That's why in a previous post I talked about my backup method of using breakpoints on WPADProbe(), since Dolphin is good at recognizing that, but it takes more effort to figure out which of its callers is KPADRead().

Uno is a neat idea though. I have that game on my Wii U just because it never got its own Uno title. It would be nice to have a version that was playable without the need for a Wiimote, so I'll throw that onto my to-investigate list.



EA-Goes-Undercover-in-MySims-Agents-for-the-Wii-and-Nintendo-DS.jpg


MySims Agents is the fifth entry in the EA's bobble-headed Sims spinoff series. Developed by EA Redwood Shores/Visceral Games (sixth-gen James Bond games, The Simpsons Game, Dead Space series), it is often regarded as the best title in the franchise. Mostly abandoning the town and life sim elements, Agents is a mystery adventure game, with the player's Sim running a detective agency and taking on cases affecting the recurring characters of the MySims universe. The result is not far from a point-and-click adventure, but with direct control over your character: gameplay mostly revolves around interactions with people and objects in the environment with some light platforming.

USAEURJPN

  1. Code:
    Classic Controller Support [Vague Rant]
    C2085968 00000003
    80810008 2C040002
    40820008 38800001
    2C1D0000 00000000
    C2085B60 00000002
    2C000001 41820008
    2C000002 00000000
    C2465500 00000007
    C03E04DC 801E0000
    70000100 41820024
    48000009 4059999A
    7C8802A6 C0240000
    2C190001 4082000C
    FC000850 D0040000
    60000000 00000000
    C2465F1C 00000033
    90010024 2C190001
    40820150 4800002D
    BF800000 BF23D70A
    00000000 00000000
    00000000 80436250
    3FAAAAAB 3DCCCCCD
    3F9D89D8 3F6CA37E
    7CA802A6 80C30004
    70C64000 41820034
    38000002 9803005E
    B0C50010 C0030020
    D0050008 C0030024
    D005000C C0050000
    D0030020 C0050004
    D0030024 480000E4
    8803005C 2C000002
    40820110 A8C50010
    70C64000 41820018
    38C00000 C0050008
    D0030020 C005000C
    D0030024 2C040000
    408200E8 B0C50010
    C0030074 FC000210
    C0230078 FC200A10
    FC00082A C045001C
    FC001040 4180000C
    38C0005A 48000014
    A8C50012 28060000
    408100B0 38C6FFFF
    B0C50012 9803005E
    80650014 28030001
    40810018 90A1000C
    7C6803A6 4E800021
    80A1000C 90650014
    2C030001 7FE3FB78
    C0450018 40820008
    EC4200B2 C065001C
    C0030020 C0230074
    FC211024 C0450020
    48000031 D0030020
    C0030024 C0230078
    FC200850 C0450024
    48000019 D0030024
    80010024 7C0803A6
    38210020 4E800020
    FC0100FA FC001000
    4180000C FC001090
    48000014 FC401050
    FC001000 41810008
    FC001090 4E800020
    60000000 00000000
    04466DE8 7FC3F378
    C2464F78 0000001B
    2C040002 408200BC
    38800001 71090800
    41820008 60E78000
    71090001 41820008
    60E70008 71094000
    41820008 60E70004
    71090002 41820008
    60E70001 71098000
    41820008 60E70002
    71090010 41820008
    60E70800 71090040
    41820008 60E70400
    71090008 41820008
    60E70100 71090020
    41820008 60E70200
    71092000 41820008
    60E74000 71090200
    41820008 60E70800
    71090080 41820008
    60E72000 71090004
    41820008 60E70400
    71090400 41820008
    60E70010 71091000
    41820008 60E71000
    70E94000 41820008
    60E70800 7CC63B78
    70C99FFF 00000000
  2. Code:
    Classic Controller Support [Vague Rant]
    C2085968 00000003
    80810008 2C040002
    40820008 38800001
    2C1D0000 00000000
    C2085B60 00000002
    2C000001 41820008
    2C000002 00000000
    C2465514 00000007
    C03E04DC 801E0000
    70000100 41820024
    48000009 4059999A
    7C8802A6 C0240000
    2C190001 4082000C
    FC000850 D0040000
    60000000 00000000
    C2465F30 00000033
    90010024 2C190001
    40820150 4800002D
    BF800000 BF23D70A
    00000000 00000000
    00000000 80436264
    3FAAAAAB 3DCCCCCD
    3F9D89D8 3F6CA37E
    7CA802A6 80C30004
    70C64000 41820034
    38000002 9803005E
    B0C50010 C0030020
    D0050008 C0030024
    D005000C C0050000
    D0030020 C0050004
    D0030024 480000E4
    8803005C 2C000002
    40820110 A8C50010
    70C64000 41820018
    38C00000 C0050008
    D0030020 C005000C
    D0030024 2C040000
    408200E8 B0C50010
    C0030074 FC000210
    C0230078 FC200A10
    FC00082A C045001C
    FC001040 4180000C
    38C0005A 48000014
    A8C50012 28060000
    408100B0 38C6FFFF
    B0C50012 9803005E
    80650014 28030001
    40810018 90A1000C
    7C6803A6 4E800021
    80A1000C 90650014
    2C030001 7FE3FB78
    C0450018 40820008
    EC4200B2 C065001C
    C0030020 C0230074
    FC211024 C0450020
    48000031 D0030020
    C0030024 C0230078
    FC200850 C0450024
    48000019 D0030024
    80010024 7C0803A6
    38210020 4E800020
    FC0100FA FC001000
    4180000C FC001090
    48000014 FC401050
    FC001000 41810008
    FC001090 4E800020
    60000000 00000000
    04466DFC 7FC3F378
    C2464F8C 0000001B
    2C040002 408200BC
    38800001 71090800
    41820008 60E78000
    71090001 41820008
    60E70008 71094000
    41820008 60E70004
    71090002 41820008
    60E70001 71098000
    41820008 60E70002
    71090010 41820008
    60E70800 71090040
    41820008 60E70400
    71090008 41820008
    60E70100 71090020
    41820008 60E70200
    71092000 41820008
    60E74000 71090200
    41820008 60E70800
    71090080 41820008
    60E72000 71090004
    41820008 60E70400
    71090400 41820008
    60E70010 71091000
    41820008 60E71000
    70E94000 41820008
    60E70800 7CC63B78
    70C99FFF 00000000
  3. Code:
    Classic Controller Support [Vague Rant]
    C2085968 00000003
    80810008 2C040002
    40820008 38800001
    2C1D0000 00000000
    C2085B60 00000002
    2C000001 41820008
    2C000002 00000000
    C24653C0 00000007
    C03E04DC 801E0000
    70000100 41820024
    48000009 4059999A
    7C8802A6 C0240000
    2C190001 4082000C
    FC000850 D0040000
    60000000 00000000
    C2465DDC 00000033
    90010024 2C190001
    40820150 4800002D
    BF800000 BF23D70A
    00000000 00000000
    00000000 80436110
    3FAAAAAB 3DCCCCCD
    3F9D89D8 3F6CA37E
    7CA802A6 80C30004
    70C64000 41820034
    38000002 9803005E
    B0C50010 C0030020
    D0050008 C0030024
    D005000C C0050000
    D0030020 C0050004
    D0030024 480000E4
    8803005C 2C000002
    40820110 A8C50010
    70C64000 41820018
    38C00000 C0050008
    D0030020 C005000C
    D0030024 2C040000
    408200E8 B0C50010
    C0030074 FC000210
    C0230078 FC200A10
    FC00082A C045001C
    FC001040 4180000C
    38C0005A 48000014
    A8C50012 28060000
    408100B0 38C6FFFF
    B0C50012 9803005E
    80650014 28030001
    40810018 90A1000C
    7C6803A6 4E800021
    80A1000C 90650014
    2C030001 7FE3FB78
    C0450018 40820008
    EC4200B2 C065001C
    C0030020 C0230074
    FC211024 C0450020
    48000031 D0030020
    C0030024 C0230078
    FC200850 C0450024
    48000019 D0030024
    80010024 7C0803A6
    38210020 4E800020
    FC0100FA FC001000
    4180000C FC001090
    48000014 FC401050
    FC001000 41810008
    FC001090 4E800020
    60000000 00000000
    04466CA8 7FC3F378
    C2464E38 0000001B
    2C040002 408200BC
    38800001 71090800
    41820008 60E78000
    71090001 41820008
    60E70008 71094000
    41820008 60E70004
    71090002 41820008
    60E70001 71098000
    41820008 60E70002
    71090010 41820008
    60E70800 71090040
    41820008 60E70400
    71090008 41820008
    60E70100 71090020
    41820008 60E70200
    71092000 41820008
    60E74000 71090200
    41820008 60E70800
    71090080 41820008
    60E72000 71090004
    41820008 60E70400
    71090400 41820008
    60E70010 71091000
    41820008 60E71000
    70E94000 41820008
    60E70800 7CC63B78
    70C99FFF 00000000

Button Mapping​

In this hack, the Nunchuk C button has been turned into a dedicated Cell Phone button and Wiimote 2, a dedicated Shake button. These functions will also work on a real Wiimote & Nunchuk combo.

Wii Remote/NunchukClassic ControllerFunction
Wiimote HomeHome
Remember that the Right Stick controls the pointer
Open/Close Home Menu
Wiimote D-PadD-PadMenus
Navigation
Gameplay
Toggle Equipment
Wiimote AA
R
Menus
Confirm
Gameplay
Interact
Wiimote BB
ZR
Menus
Cancel
Gameplay
Run
Wiimote 1YHQ Customization
Open/Close Inventory
Wiimote 2XNot used
(see Wiimote Shake)
Wiimote PlusPlusCutscenes
Skip Cutscene
Gameplay
Open Casebook
Wiimote MinusMinusGameplay
Pause/Save/Quit
Wiimote ShakeXGameplay
Shake Objects
Wiimote PointerRight StickMenus
Navigation
Minigames
Control Cursor
Wiimote Pointer
(Top Left + Press A)
LGameplay
Open Cell Phone
Nunchuk StickLeft StickGameplay
Movement
Nunchuk CLNot used
(see Wiimote Pointer)
Nunchuk ZZLGameplay
Jump

General Notes​

  • Although primarily targeting the Classic Controller, as noted in the button mapping table, the unused Nunchuk C and Wiimote 2 buttons have been co-opted as additional inputs here. This does extend to the actual Wiimote and Nunchuk layout, so you have a dedicated cell phone button (Nunchuk C/Classic L) and shake button (Wiimote 2/Classic X).

    • The cell phone menu is one you're opening constantly, but in the original game it can only be triggered by pointing at the top left of the screen and pressing A to select the phone icon. The dedicated phone button is doing just that: for a single frame, the pointer aims at the top left before going back to whatever it was doing before.

    • Shaking is never strictly necessary in this game; anything that wants you to shake the Wiimote can also be triggered by mashing the A button. However, if you're too lazy to press a button multiple times, you've now got a dedicated shake button you can simply press and hold to trigger shaking for as long as you need.

  • The one thing that doesn't function that well here compared to the OG control scheme are the computer hacking minigames. These require you to navigate the pointer around a maze without going outside of the walls, which is noticeably tougher when using an analog stick. However, they're pretty lenient and even failing them outright just leads to a chance to try again. If you have a kid playing this, you might need to help them though those parts.

    • If you're playing on a real Wii/Classic Controller, you can always pick up the Wiimote and play with the real pointer for these sections. You don't need to go get a Nunchuk or anything, just leave the CC attached and play using the "solo" Wiimote.

  • Look, this is definitely a kids' game, but it's a genuinely high-effort product from a "hardcore" studio. It's got plenty of culture and video game references for older players, including to other Visceral Games titles. Of course it's only minimally challenging for seasoned players, but the main attractions are the writing and classic adventure gameplay. Another thing that's not mentioned enough about this game are the quality of life features. It really shines through that these are experienced devs making a proper game that just happens to be aimed at kids. For example:

    • When approaching a person or object you've already interacted with, the button prompt is displayed transparently to indicate that they don't have any new information for you.

    • The above also applies to dialogue choices, you can repeat prompts if you want but they're transparent if there's no new information behind them. Any prompt with new dialogue behind it will be selected by default.

    • You can back out of any conversations immediately by pressing B, useful if you press A before realizing you've already spoken to that Sim.

    • All cutscenes are skippable with the Plus button (although that's kind of missing the point given the style of game this is).

Technical Notes​

Code breakdown:
  • C2 and C2: bypass Nunchuk error/keep reading buttons even when Nunchuk is missing
  • C2 in read_kpad_acc(): simulate shaking Wiimote
  • C2 in calc_dpd_variable(): pointer emulation; extra features for this game include the cell phone thing and specifically dialed in pointer boundaries since Visceral doesn't use the standard -1,+1 range used by other games
  • 04 in read_kpad_acc(): redirect Classic Left Stick into Nunchuk Stick field
  • C2 in read_kpad_button(): button injector, also handles enabling extra functionality on real Wiimote & Nunchuk
Code:
; read_kpad_button
; 80464F78 for USA
; 80464F8C for EUR
; 80464E38 for JPN
  cmpwi r4, 0x2
  bne- NUNCHUK

  li r4, 0x1            ; i'm a nunchuk

    CLASSIC_HOME:
      andi. r9, r8, 0x800
      beq- CLASSIC_UP
      ori r7, r7, 0x8000    ; home

    CLASSIC_UP:
      andi. r9, r8, 0x1
      beq- CLASSIC_DOWN
      ori r7, r7, 0x8       ; up (v) / left (h)

    CLASSIC_DOWN:
      andi. r9, r8, 0x4000
      beq- CLASSIC_LEFT
      ori r7, r7, 0x4       ; down (v) / right (h)

    CLASSIC_LEFT:
      andi. r9, r8, 0x2
      beq- CLASSIC_RIGHT
      ori r7, r7, 0x1       ; left (v) / down (h)

    CLASSIC_RIGHT:
      andi. r9, r8, 0x8000
      beq- CLASSIC_A
      ori r7, r7, 0x2       ; right (v) / up (h)

    CLASSIC_A:
      andi. r9, r8, 0x10
      beq- CLASSIC_B
      ori r7, r7, 0x800     ; a

    CLASSIC_B:
      andi. r9, r8, 0x40
      beq- CLASSIC_X
      ori r7, r7, 0x400     ; b

    CLASSIC_X:
      andi. r9, r8, 0x8
      beq- CLASSIC_Y
      ori r7, r7, 0x100     ; 2 (also shake)

    CLASSIC_Y:
      andi. r9, r8, 0x20
      beq- CLASSIC_L
      ori r7, r7, 0x200     ; 1

    CLASSIC_L:
      andi. r9, r8, 0x2000
      beq- CLASSIC_R
      ori r7, r7, 0x4000    ; c

    CLASSIC_R:
      andi. r9, r8, 0x200
      beq- CLASSIC_ZL
      ori r7, r7, 0x800     ; a

    CLASSIC_ZL:
      andi. r9, r8, 0x80
      beq- CLASSIC_ZR
      ori r7, r7, 0x2000    ; z

    CLASSIC_ZR:
      andi. r9, r8, 0x4
      beq- CLASSIC_PLUS
      ori r7, r7, 0x400     ; b

    CLASSIC_PLUS:
      andi. r9, r8, 0x400
      beq- CLASSIC_MINUS
      ori r7, r7, 0x10      ; plus

    CLASSIC_MINUS:
      andi. r9, r8, 0x1000
      beq- NUNCHUK
      ori r7, r7, 0x1000    ; minus

NUNCHUK:
  andi. r9, r7, 0x4000  ; nunchuk c
  beq- RETURN
  ori r7, r7, 0x800     ; wiimote a

RETURN:
  or r6, r6, r7
  andi. r9, r6, 0x9FFF
 

awesomeee

Well-Known Member
Member
Joined
Oct 7, 2024
Messages
119
Trophies
0
XP
169
Country
United States
The only issue i had trying to make a CC hack is a little lack of documentation, like the “find other major functions” but im quite surprised i got pretty far with my wii speak one, i probably got where kpadread is wrong, but i still tried my best 👍

Ill still look into it, but in the future the CC hack guide probably needs some more details 👍
Post automatically merged:

Nvm, find other major functions probably means like KPAD read stick which IS documented, my bad.
 
Last edited by awesomeee,

KeinesR

Well-Known Member
Member
Joined
Feb 14, 2020
Messages
174
Trophies
0
Age
34
XP
491
Country
Venezuela
Many thanks to you master @Vague Rant . i want to report 2 games

1. EDITED: Endless ocean works with force classic controller.

2. Resident evil 4 eur region does something VERY usefull, in the past to play in other languages with the gamepad you needed to make a savefile with the pal region, the install the usa region and convert the save file from pal to usa, and then you will be able to play, It is something not too difficult, but little annoying to do. With this awesome cheat code you dont need to do this, you can convert the pal version and voila! get fun killing ganados.
 
Last edited by KeinesR,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: @BigOnYa, coffee instead of tea +1