Hacking New Classic Controller Hacks

  • Thread starter Thread starter Vague Rant
  • Start date Start date
  • Views Views 249,513
  • Replies Replies 689
  • Likes Likes 42
C201C434 0000001F 4800000D 00000000 00000000 7C6802A6 5760083C 7C630214 2C0400FD 4082000C A1230000 48000014 2C040002 408200C4 38800001 B1230000 71200800 41820008 61088000 71200001 41820008 61080008 71204000 41820008 61080004 71200002 41820008 61080001 71208000 41820008 61080002 71200010 41820008 61082000 71200040 41820008 61080800 71200008 41820008 61084000 71200020 41820008 61080400 71202000 41820008 61080200 71200200 41820008 61080100 71200080 41820008 61082000 71200004 41820008 61080400 71200400 41820008 61080010 71201000 41820008 61081000 7CE74378 70E09FFF 00000000
Would this work on Lego Batman 2 DC super heroes too ? I couldn't see that Lego game on your list and it's one of the few games that not only use only wiimote nunchuck combo but also is almost impossible to set on a regular controller due to some kind of weird thing making the Lego games pointer shaking for no reason (like going instantly off-screen), so if you have that or know a working cheat code from one of your other games i'll be really thankfull (well I gotta say I already am with the classic controller support of Animal Crossing city folk lol)
Post automatically merged:

Would this work on Lego Batman 2 DC super heroes too ? I couldn't see that Lego game on your list and it's one of the few games that not only use only wiimote nunchuck combo but also is almost impossible to set on a regular controller due to some kind of weird thing making the Lego games pointer shaking for no reason (like going instantly off-screen), so if you have that or know a working cheat code from one of your other games i'll be really thankfull (well I gotta say I already am with the classic controller support of Animal Crossing city folk lol)
I probably forgot to precise that I'm on android and using the official dolphin release and not anything like dolphin mmjr or something like that so these videos about a classic controller fix using a text editor and some files don't work for me 😭
 
Would this work on Lego Batman 2 DC super heroes too ? I couldn't see that Lego game on your list and it's one of the few games that not only use only wiimote nunchuck combo but also is almost impossible to set on a regular controller due to some kind of weird thing making the Lego games pointer shaking for no reason (like going instantly off-screen), so if you have that or know a working cheat code from one of your other games i'll be really thankfull (well I gotta say I already am with the classic controller support of Animal Crossing city folk lol)
Post automatically merged:


I probably forgot to precise that I'm on android and using the official dolphin release and not anything like dolphin mmjr or something like that so these videos about a classic controller fix using a text editor and some files don't work for me 😭
Why would you care about a controller hack if you are on emulator ? Just map the Wiimote buttons and controls to the buttons of the controller you're using. These kind of hack are useful when We play on original hardware, Wii or Wii U that implement blockages and software limitations.
 
Why would you care about a controller hack if you are on emulator ? Just map the Wiimote buttons and controls to the buttons of the controller you're using. These kind of hack are useful when We play on original hardware, Wii or Wii U that implement blockages and software limitations.
It isn't possible for that game, lego games on Wii use some kind of gyro that require some kind of constant shake or else the cursor on screen would teleport randomly. This isn't a problem on real hardware as long as you play with a real wiimote or even works on emulator this way but if isn't modded it would just do what I said earlier even ending up not showing the cursor after some time ingame, making the game impossible to play so yeah it needs a mod or gecko code to fix it
 
It isn't possible for that game, lego games on Wii use some kind of gyro that require some kind of constant shake or else the cursor on screen would teleport randomly. This isn't a problem on real hardware as long as you play with a real wiimote or even works on emulator this way but if isn't modded it would just do what I said earlier even ending up not showing the cursor after some time ingame, making the game impossible to play so yeah it needs a mod or gecko code to fix it
You can check some youtube videos that share their dolphin layout set up for controller in some games. It may help you or maybe not
 
Sorry, they do not. The Wii Remote and Nunchuk use the same software library as the Classic Controller, so it's comparatively easier to get Classic Controller working in games that already support Wii Remote/Nunchuk. GameCube is a bit of a different ball park which I'm not sure how you'd go about implementing.



Let's get digital.

View attachment 456485

Tron Evolution: Battle Grids is a tie-in game for the 2010 film, Tron: Legacy, developed by n-Space--perhaps best known for making practically the entire Nintendo DS FPS library with their renditions of the Call of Duty and James Bond franchises. In Battle Grids, you get a collection of 7 game modes, about half of which are quite good. Regardless, the game sold very poorly, partly off the back of the Tron: Legacy film underperforming and probably also because collections of motion control minigames were a pretty played out genre by 2010. It also didn't help that the HD consoles received the real Tron: Evolution, a third-person action-platformer, while the Wii (and the DS and PSP) got less ambitious titles based around the Grid Games. That said, Battle Grids actually ended up reviewing slightly better than the HD game, with the focus on the Grid Games resulting in a smoother transition to video game form.

While I'm not a fan of motion-controlled steering, I actually think the light cycle mode in this game is fantastic and I'd say even better with traditional controls. Speaking of controls, this title uses a mix of vertical and horizontal Wiimote, with optional Nunchuk support in the vertical games. Six of the seven games require motion controls to play, with the last requiring the use of the infra-red pointer instead. This hack makes all seven games playable on the Wii Classic Controller.

USA / USA (Championship Edition) / Europe

  1. Same code for all three releases.
    Code:
    Classic Controller Support [Vague Rant, crediar]
    C20D0308 00000002
    2C040001 41820008
    2C040002 00000000
    C20D1D80 00000004
    8806011C 2C000002
    4182000C C0260120
    48000008 C026012C
    60000000 00000000
    C20D1D88 00000004
    8806011C 2C000002
    4182000C C0260124
    48000008 C0260130
    60000000 00000000
    C2102D58 00000005
    41820020 801F0044
    70000080 40820014
    3C008010 60002D70
    7C0903A6 4E800420
    60000000 00000000
    C2172C38 00000005
    41820020 801E0044
    70000080 40820014
    3C008017 60002C40
    7C0903A6 4E800420
    60000000 00000000
    C21F30B4 00000005
    41820020 801F0044
    70000080 40820014
    3C00801F 600030C4
    7C0903A6 4E800420
    60000000 00000000
    C22D6C6C 00000002
    3CA08000 90C52FFC
    3C03FC27 00000000
    04367F50 3860FFFF
    C23A6E90 0000001E
    88130028 2C000002
    408200DC 3CA08000
    80A52FFC 2C050000
    41820008 80A50010
    38E00000 3CC5FC27
    2806A0C6 41820040
    3CC5FFDA 280642D1
    41820034 3CC5FC37
    2806C646 41820028
    C0150074 FC000050
    D015000C FC000028
    D0150010 C0150078
    EC0000F2 D0150014
    48000078 C002CFE0
    D0150010 C015006C
    FC000050 D0150014
    C0150070 FC000050
    C02D000C FC000800
    41800030 80150000
    60000002 90150000
    80150084 2C000000
    40820038 80150004
    60000002 90150004
    90150084 48000024
    80150084 2C000000
    41820018 80150008
    60000002 90150008
    38000000 90150084
    4E800020 9421FFB0
    60000000 00000000
    C23A8160 0000001C
    88B30028 2C050002
    408200CC 7C0802A6
    98A3005E 3CA08000
    80A52FFC 2C050000
    41820008 80A50010
    3CC5FFD9 28062CEA
    38A00000 38C00000
    40820018 38C00001
    3CA08065 80A5DBB0
    7CA53039 4082000C
    C035006C 48000008
    C0350074 C042D070
    C06DC2C0 FC211824
    48000035 38630004
    3AB50004 2C050001
    4182000C C035006C
    48000008 C0350074
    FC200850 48000011
    3AB5FFFC 7C0803A6
    4E800020 C0030020
    EC2100B2 FC00082A
    C022D06C FC000800
    4180000C FC000890
    48000014 FC200850
    FC000800 41810008
    FC000890 D0030020
    4E800020 9421FFC0
    60000000 00000000
    C23A6AEC 0000004E
    90030068 7C0802A6
    3CA08000 80A52FFC
    2C050000 41820008
    80A50010 38E00000
    39000000 39200000
    3CE08065 80E7DBB0
    2C070001 4082005C
    3CC5FC27 2806A0C6
    4182004C 3CC5FFDA
    280642D1 41820040
    3CC5FC37 2806C646
    4082000C 39000001
    4800002C 3CC5FFE0
    28060595 40820008
    48000014 3CC004B9
    60C600D5 7C053000
    40820010 39000001
    48000008 39200001
    80C30060 4800003D
    80830000 7CC62378
    90C30000 80C30064
    48000029 80830004
    7CC62378 90C30004
    80C30068 48000015
    80830008 7CC62378
    90C30008 48000198
    38A00000 70C40800
    41820008 60A58000
    2C070000 4182000C
    2C090001 418200A8
    70C40001 41820008
    60A50008 70C44000
    41820008 60A50004
    70C40002 41820008
    60A50001 70C48000
    41820008 60A50002
    70C40010 41820008
    60A50800 70C40040
    41820018 2C080001
    4182000C 60A50400
    48000008 60A54000
    70C40008 41820008
    60A54000 70C40020
    41820008 60A52000
    70C42000 41820008
    60A52000 70C40200
    41820008 60A50080
    70C40080 41820008
    60A50800 70C40004
    418200BC 60A50400
    480000B4 70C40001
    41820008 60A50002
    70C44000 41820008
    60A50001 70C40002
    41820008 60A50008
    70C48000 41820008
    60A50004 70C40010
    4182000C 2C070001
    60A50100 70C40040
    41820018 2C080001
    4182000C 60A50200
    48000008 60A50400
    70C40008 41820008
    60A50800 70C40020
    41820014 2C080001
    41820008 60A50400
    60A50200 70C42000
    41820008 60A50008
    70C40200 41820008
    60A50004 70C40080
    41820008 60A50001
    70C40004 41820008
    60A50080 70C40400
    41820008 60A50010
    70C41000 41820008
    60A51000 7CA62B78
    4E800020 7C0803A6
    60000000 00000000

Button Mapping​

All right, this one needs some explaining. There are seven different games in here each with their own control schemes. Some of these are sideways Wiimote solo and some are vertical Wiimote with Nunchuk. This means the hack alternates between five different configurations depending on the game that's running currently. As such, I'm going to split this into multiple tables.

I know the tables look super daunting, but if you're interested in giving it a shot, I'd say jump into Light Cycle Arena and you can get away with just using A (accelerate) and ZR (jump) for a decent amount of time before you need to learn any more mechanics at all.

All right. Ready?

General​

[TABLE=full]
[TR]
[th]Wii Remote/Nunchuk[/th][th]Classic Controller[/th][th]Game Function[/th]
[/TR]
[TR]
[td]Home[/td][td]Home
I also added support for the Home Button Menu, works mostly as normal[/td][td]Open/Close Home Button Menu[/td]
[/TR]
[TR]
[td]Wiimote A[/td][td]A[/td][td]Confirm[/td]
[/TR]
[TR]
[td]Wiimote B[/td][td]B[/td][td]Cancel[/td]
[/TR]
[TR]
[td]Plus[/td][td]Plus[/td][td]Pause[/td]
[/TR]
[TR]
[td]Minus[/td][td]Minus[/td][td]Various[/td]
[/TR]
[TR]
[td]Wiimote IR Pointer[/td][td]Left Stick[/td][td]Menu Navigation[/td]
[/TR]
[/TABLE]

Vertical Games​

These games are mostly played using two sticks, so remember that all buttons are also mapped to the bumpers/triggers since your thumbs are busy.

[TABLE=full]
[TR]
[th]Wii Remote/Nunchuk[/th][th]Classic Controller[/th][th]Game Function[/th]
[/TR]
[TR]
[td]Nunchuk Analog Stick
D-Pad[/td][td]Left Stick
D-Pad[/td][td]Movement[/td]
[/TR]
[TR]
[td]Wiimote A[/td][td]A
ZL[/td][td]Light Discs, Grid Tanks
Shield
Hyper Ball
Backspin[/td]
[/TR]
[TR]
[td]Wiimote B[/td][td]B
ZR[/td][td]Light Discs, Grid Tanks
Attack
Hyper Ball
Forward Spin[/td]
[/TR]
[TR]
[td]Nunchuk C[/td][td]B[/td][td]Story/Light Discs
Jump[/td]
[/TR]
[TR]
[td]Nunchuk Z[/td][td]L[/td][td]Grid Tanks
Mine[/td]
[/TR]
[TR]
[td]Wiimote Shake[/td][td]R[/td][td]Light Discs
Use Power-Up[/td]
[/TR]
[TR]
[td]Wiimote Tilt[/td][td]Right Stick[/td][td]Hyper Ball
Serve/Throw (Stick Up)
Rebound Angle (Stick Left/Right)[/td]
[/TR]
[TR]
[td]Wiimote IR Pointer[/td][td]Right Stick[/td][td]Grid Tanks
Aiming[/td]
[/TR]
[/TABLE]

Horizontal Games​

[TABLE=full]
[TR]
[th]Wii Remote/Nunchuk[/th][th]Classic Controller[/th][th]Game Function[/th]
[/TR]
[TR]
[td]D-Pad Up[/td][td]D-Pad Up
Pull Back on Left Stick[/td][td]Light Cycle
Wheelie[/td]
[/TR]
[TR]
[td]D-Pad Down[/td][td]D-Pad Down
ZL[/td][td]Power Slide[/td]
[/TR]
[TR]
[td]D-Pad Left/Right[/td][td]D-Pad Left/Right
L/R[/td][td]Light Cycle
Instant Turn[/td]
[/TR]
[TR]
[td]Wiimote A[/td][td]X[/td][td]Light Cycle
Stealth Mode
Runner
Shoot[/td]
[/TR]
[TR]
[td]Wiimote B[/td][td]Light Cycle
Y
Runner
B[/td][td]Light Cycle
Reverse Camera
Runner
Boost[/td]
[/TR]
[TR]
[td]Wiimote 1[/td][td]Light Cycle
B
Runner
Y[/td][td]Brake[/td]
[/TR]
[TR]
[td]Wiimote 2[/td][td]A[/td][td]Accelerate[/td]
[/TR]
[TR]
[td]Wiimote Shake[/td][td]ZR[/td][td]Jump[/td]
[/TR]
[TR]
[td]Wiimote Tilt[/td][td]Left Stick[/td][td]Steer
Light Cycle
Pull Back to Wheelie[/td]
[/TR]
[/TABLE]

General Notes​

Should I play this game?
Absolutely yes, if only for the Light Cycle Arena mode which is brilliant and basically everything you could want from a Tron game or hectic multiplayer party game. It should be on modern platforms as a $10 download or something, but it's not. Each game also has multiple versions to unlock, e.g. there's a Light Cycle mode where you respawn infinitely and the goal is to get the most Derezzes, and another where the winner is just whoever lasts the longest in a field of light trails that gets progressively more impossible to navigate the longer the game lasts. There's also tons of mechanics at play: you can draft off enemy light trails, the stealth mode can be used to sneak up on opponents before re-enabling the light trail for a surprise attack, there's boosts for drifting and for jumping off ramps. Amazing game mode.​
The other modes range from atrocious (Light Discs) to pretty fun (Hyper Ball, this collection's Wii Tennis analogue), but Light Cycle Arena is the reason you're here. It's the reason I hacked the game and I strongly considered stopping as soon as that mode was playable. Really, the reason the rest got done is that Light Cycle Arena shared a lot with Light Cycle Race, Runner Arena and Runner Race, so once I had 4 modes done I figured I may as well do the rest.​

What do I need to know going in?
Version-wise, I recommend playing the Toys 'R Us exclusive Championship Edition, which comes with an additional vehicle, the Outrunner, for use in the Runner modes. It does support less languages than the PAL version (English, French and Spanish vs. English, French, Spanish, German, Italian and Dutch), but if you can understand one of the former, why not get a free extra car?​
Story-wise, this is technically a prequel to Tron: Legacy, but it's just a bunch of programs playing games against each other, none of it really matters. It does have Olivia Wilde and Bruce Boxleitner in it, and I don't just mean their characters, they actually reprised their roles. Jeff Bridges's character Flynn is also here, but voiced by a soundalike.​
Gameplay-wise, Light Cycle Race and Hyper Ball both have movement assist options enabled by default. Since you're playing on a Classic Controller now, maybe you want to turn these off in the Advanced Options, but that's your business. You can also turn off the control tutorials in the options, which might be a good idea because the controls are completely different now anyway and they're more likely to confuse you.​

Any weirdness I need to deal with in this hack?
I had to break MotionPlus support to get this working. Obviously, you can't do a realistic simulation of a MotionPlus with a Classic Controller anyway and only one game (Hyper Ball) actually supports the MotionPlus, using it for more accurate throws, but you will need to select No when the game asks if you wish to enable WMP. You will get errors if you try to use MotionPlus (even a real one) while this hack is enabled. If you want to play with MotionPlus, turn the hack off.​
The controls are going to be a little bit weird in the sideways games (all of the driving-based, Light Cycle and Runner modes). Those obviously use 1/2 as their primary action buttons, but the menu and tutorial screens are still navigated with A/B even in these modes. I did my best to mitigate this (switching back to the vertical style A/B layout when you pause the game), but some screens still tell you to press Wiimote "A" which is Classic Controller X in the horizontal orientation. If you press A and nothing happens, press X instead. Please understand.​
Another bit of minor weirdness, during the Grid Tanks game, the right stick is your IR pointer instead of the left stick. While I account for this in the pause menu (reverting to left-stick pointer for menu navigation), if you open the Home Menu during tank mode, you will still need to use the right stick to navigate.​

What else?
Can we give a round of applause to n-Space for using the same binary on all three editions of the game? This meant I only had to hack the game once and it works on all three releases. Thanks n-Space, I'm sorry you went out of business that time, I hope you get better.​

Technical Notes​

Nightmare.

As I mentioned in the intro, this game uses a combination of vertical and horizontal Wiimote, Nunchuk and no Nunchuk, motion control and the infra-red pointer, often multiple at a time. This meant that a one size fits all solution was not at all possible, so each game needed their own game-specific tweaks. Boo and/or hiss.

I'll include the first line of each code to make this a bit easier to follow.

C20D0308 00000002
This hooks into a function in Tron that checks whether a Nunchuk or some other attachment is in the Wiimote extension port. It adds a check for the Classic Controller so that the game knows it should enable reading the "Nunchuk" in games that support it.

C20D1D80 00000004 and C20D1D88 00000004
Some more Nunchuk stuff, here we're checking if the controller in use is a Classic Controller and redirecting the Nunchuk reads to read the CC left stick values instead.

C2102D58 00000005 and C2172C38 00000005 and C21F30B4 00000005
These three are similar patches which cover five of the different game modes' Wiimote shake motions. The first covers Light Cycle Arena and Race modes (shake to jump), the second is for Light Disc mode (shake to trigger power-up) and the third is for Runner Arena and Race modes (shake to jump). After the actual shake check, we're adding an additional check for whether the player pressed the 0x80 button. Similar to what we did for Namco Museum, this is an unused button on the real Wii, so we commandeer the free slot as our shake button, which can be defined in the button injector later.

C22D6C6C 00000002
This is a bit of a hack (isn't all of it?) but I couldn't find a pointer to the address where the current minigame ID reads from, which varies across play sessions. So instead, I hooked into this code which runs after the address has already been determined and write a spare copy of the address to 80002FFC. This way, we can always check what game mode is running currently, which we need later to change the controller mapping on a per-game basis.

04367F50 3860FFFF
This one-liner in WPADiGetMplsStatus() causes the MotionPlus check to always return -1. When a MotionPlus is attached, a whole separate set of KPAD library reads occurs which erase all our hard work hacking the input library. I don't know how to fix this "properly" so just removing MotionPlus support entirely was my solution. If you know, tell me.

C23A6E90 0000001E
This is a completely custom read_kpad_acc() (accelerometer) function which replaces the stock one if the current controller is a Classic Controller. If the Classic Controller check fails, the normal function runs (so regular Wiimote motion still works if the CC is unplugged). After the CC check, there's a check for which game is running, because the different games have different needs for the accelerometer. If this is one of the sideways games (Light Cycles or Runners), we use the left stick's X-axis as Wii Remote tilting, for steering. If this is Light Cycles, we also add in support for performing wheelies by pulling back on the analog stick. Otherwise, if this is a vertical game (which basically means Hyper Ball as it's the only vertical game with in-depth motion controls), we map the right stick as motion controls. The left stick is busy being a Nunchuk in this scenario, so the right stick is how you serve, throw and tilt your shots in Hyper Ball.

C23A8160 0000001C
As above but for read_kpad_dpd() (IR pointer), this implementation checks for a CC and runs normally if not, but if this is a CC it checks whether the current game is Grid Tanks. Again, the left stick is busy being a Nunchuk in that case, so the right stick is our IR pointer. There's an additional check for whether the game is paused currently which reverts the pointer to the left stick so that menu navigation isn't suddenly on the right stick. If you're not playing Grid Tanks currently, the left stick is the pointer.

C23A6AEC 0000004E
Finally, the button injector. Again, this involves checking what the current game is (and whether it's paused) so that we've got custom button layouts for each orientation and specific changes for games that need them. The tl;dr of this is:
  • the 3D platforming-style modes (the story mode Hub and Light Discs modes) get a custom mapping where the Nunchuk C button is placed on the Classic B button so that jumping works as you'd expect in a normal platform-based game
  • Runner remaps the turbo button to be Classic B button
Nightmare.
TRON EVOLUTION BATTLE GRIDS UPDATE
This is a wonderful mod however some of the controls didn't meet my preference.
I also really wanted to use triggers for regular buttons, A for jump, and move the insta-turn to the Rightstick.
I then discovered that Bomb Disc doesn't work reliably with the Nunchuk, even on the real Wii. This required mapping the analog to the dpad for vertical games and horizontal for light discs, so we can use the Bomb Disc combo in the Wiimote only mode. Turns out nunchuk is just convenient and adds no controls.
This was a heavy mod of the original, but I don't know how to make Gecko codes, so all credit to the original developer who gave me all the pieces to work with.
THE REAL VALUE in my update is that the code is heavily annotated so it EASY to update. (This code was extremely difficult to customize due to the complex functions to convert analog to motion/digital buttons.
If you are perfectly happy with the original layout use the original by all means. It is a good adaptation to Classic Controller. If you want to fine tune the mappings to your heart's content, my adaptation facilitates that. Since there are lots of hexcodes that skip all over the place and make the code very difficult to add and subtract, I gave each button assignment the option to set specific controls for nearly each game mode. (I couldn't distinguish between Hyperball and Tanks. They only use a few buttons and the developer didn't provide the game ID for Hyperball. If someone wanted to distinguish the Game ID is in the IR function but I've spent over a 100 hours on this and it isn't valuable to me to distinguish those two.)
Anyway, if you love this game and want to fine tune controls for yourself, this is for you. I generally play on Dolphin so I could create profiles for each game, but I love that this will automatically change mappings per game mode.
Note that for menu dialogs after starting the minigame you'll press X for Light Cycles and Runner and Left Trigger for Light Discs.
Here is my mapping, but change it as you like (annotations should make it easy):
GRID TANKS

SHIELD LT (A)
ATTACK RT (B)
MINE ZR (-)
AIM RS

LIGHT DISCS

SHIELD B/LT (A)
ATTACK X/RT (1)
JUMP A (2)
POWER UP Y/ZR (SHAKE)
SELECT LT

HYPERBALL

CATCH | BACKSPIN LT (A)
CATCH | FORWARD SPIN RT (B)
SERVE/THROW RS (TILT UP)
REBOUND RS (TILT L/R)

LIGHT CYCLES/RUNNER

STEER LS X axis (TLT L/R)
JUMP A (SHAKE)
ACCELERATE RT (2)
BRAKE ZR/B (1)
SLIDE LT (DPAD DOWN)

LIGHT CYCLE ARENA
STEALTH X/RS UP
INSTA-TURN RS L/R (DPAD L/R)

LIGHT CYCLE RACE
BARGE RS L/R (DPAD L/R)
WHEELIE ZL (DPAD UP )

LIGHT CYCLE ARENA/RACE
REARVIEW Y/RS DOWN (B)

RUNNER

SHOOT X (A)
BOOST ZL (B )
 

Attachments

Last edited by t1op,

Site & Scene News

Popular threads in this forum