Hacking New Classic Controller Hacks

Alepss

New Member
Newbie
Joined
Jul 17, 2024
Messages
3
Trophies
0
XP
70
Country
United States
Amazing work!
I have a question: is it possible to remap the analog triggers from the classic controller to the classic controller pro? Because, for example, DBZ BT3 has that issue when using the classic controller pro. It would be amazing if it had a layout similar to the PS2. It's just a question! ty
 
  • Like
Reactions: Vague Rant

blue-spirit

Active Member
Newcomer
Joined
Jan 23, 2024
Messages
43
Trophies
0
Age
27
XP
156
Country
Germany
While we're on the subject of fluids ...

Blue Tongue's de Blob was one of the few third-party Wii games to really break through Nintendo's commercial domination of the console. The fact that they managed to do so on Nintendo's home turf, the 3D platformer, makes that all the more impressive. With its environment-painting gameplay sometimes compared at launch to Super Mario Sunshine, in the years since, parallels have also been drawn to Splatoon, putting this game in some pretty good company. That said, once you got past the wildly creative gameplay, visuals and soundtrack, there was one major criticism: the poor use of motion controls. Players had to shake the Wiimote to jump, in a platformer. While this would be fixed in the excellent sequel, the original de Blob had to wait for HD ports on later consoles to get a jump button. Let's rectify that oversight.

I've read nothing but good things about this game. I've never tried it because of the controls, so thanks for sharing your code!
 
  • Like
Reactions: Vague Rant

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,493
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,555
Country
@Vague Rant Could you also make a short tutorial for wii disc games like for the wads please? I mean you already did it partially on the first page, but I don't know the first steps like extracting the original control code out of a main.dol to modify it. Is there a command line for that or what program are you using? There are a lot of nerds and geeks on gbatemp who would like to participate in that cc hacking project and maybe in some years it will be possible to play all Wii games with a cc hack. That would be really great. I would also like to get deeper in that topic. So your tutorial would be a big help. Thanks a lot
To be honest, it wouldn't really be a short tutorial as it's a pretty involved process, but the next game I attempt, I'll document it as I go. There's no apps to modify games like this, I'm just digging into the assembly code and writing and inserting my own routines which reroute the KPAD data into different fields and stuff like that. The main Gecko code type these hacks are made up of are C2 codes, which are assembly insertion rather than in-place modifications, i.e. they're not so much editing the controls in the main.dol as they are adding new code to each game that didn't exist before so that it behaves differently.

Weren't there also hacks that enabled the Classic Controller for the Mario Galaxy games? I didn't see them listed here
Yep, there are Classic Controller hacks for both Mario Galaxy games by Super Hackio. This thread isn't a list of all Classic Controller hacks, these are just the ones that I've made personally. The others that I'm aware of are crediar's Donkey Kong Country Returns and Kirby's Return to Dreamland, Thomas83Lin's Rune Factory: Tides of Destiny and New Super Mario Bros. Wii, and the aforementioned Mario Galaxy hacks.

Amazing work!
I have a question: is it possible to remap the analog triggers from the classic controller to the classic controller pro? Because, for example, DBZ BT3 has that issue when using the classic controller pro. It would be amazing if it had a layout similar to the PS2. It's just a question! ty
I don't know, that sounds pretty much impossible to me.



new-hero.png

Dragon Ball Z: Budokai Tenkaichi 3 is the third entry in Spike's fighting game series based on the hit manga and anime by the late Akira Toriyama. Tenkaichi 3 is a deep dive into the lore and history of the Dragon Ball Z franchise, with a roster of 98 unique characters in 161 different forms, the largest ever fighting game roster at the time. Though hugely popular and successful, the Tenkaichi series would lie dormant for 17 years after the release of this game, until the fourth entry released *checks watch* ... yesterday.

This is technically a Classic Controller hack, but Tenkaichi 3 always supported the Classic Controller. The issue, as noted by @Alepss, is that the game was developed around the original Classic Controller and its analog shoulder buttons, which were removed in the Pro revision. This hack instead replicates the PlayStation 2 control scheme, where aerial controls are on R1/R2 (Classic R/ZR), with double-taps triggering the equivalent of a full analog button press.

USAUSA (Rev 1)EuropeJapanJapan (Rev 1)

  1. Code:
    Classic Controller Pro Mod [Vague Rant]
    C2258EAC 00000002
    801E0000 70000100
    60000000 00000000
    C2259578 00000015
    7125DFFB 71200004
    41820008 60A52100
    71200200 41820004
    71202000 41820008
    60A50004 A01FFFFC
    B0BFFFFC 7CA60078
    887FFFFE 39202000
    4800001D 987FFFFE
    887FFFFF 39200200
    4800000D 987FFFFF
    48000048 7C630774
    7CC04839 41820014
    2C030000 40820014
    38600008 48000024
    2C03FFFF 40820010
    3860FFFF 7CA04839
    40820014 3463FFFF
    41810008 38600000
    7CA54878 4E800020
    7CA92B78 807F0060
    60000000 00000000
  2. Code:
    Classic Controller Pro Mod [Vague Rant]
    C2259A7C 00000002
    801E0000 70000100
    60000000 00000000
    C225A148 00000015
    7125DFFB 71200004
    41820008 60A52100
    71200200 41820004
    71202000 41820008
    60A50004 A01FFFFC
    B0BFFFFC 7CA60078
    887FFFFE 39202000
    4800001D 987FFFFE
    887FFFFF 39200200
    4800000D 987FFFFF
    48000048 7C630774
    7CC04839 41820014
    2C030000 40820014
    38600008 48000024
    2C03FFFF 40820010
    3860FFFF 7CA04839
    40820014 3463FFFF
    41810008 38600000
    7CA54878 4E800020
    7CA92B78 807F0060
    60000000 00000000
  3. Code:
    Classic Controller Pro Mod [Vague Rant]
    C225A578 00000002
    801E0000 70000100
    60000000 00000000
    C225AC44 00000015
    7125DFFB 71200004
    41820008 60A52100
    71200200 41820004
    71202000 41820008
    60A50004 A01FFFFC
    B0BFFFFC 7CA60078
    887FFFFE 39202000
    4800001D 987FFFFE
    887FFFFF 39200200
    4800000D 987FFFFF
    48000048 7C630774
    7CC04839 41820014
    2C030000 40820014
    38600008 48000024
    2C03FFFF 40820010
    3860FFFF 7CA04839
    40820014 3463FFFF
    41810008 38600000
    7CA54878 4E800020
    7CA92B78 807F0060
    60000000 00000000
  4. Code:
    Classic Controller Pro Mod [Vague Rant]
    C22586B0 00000002
    801E0000 70000100
    60000000 00000000
    C2258D7C 00000015
    7125DFFB 71200004
    41820008 60A52100
    71200200 41820004
    71202000 41820008
    60A50004 A01FFFFC
    B0BFFFFC 7CA60078
    887FFFFE 39202000
    4800001D 987FFFFE
    887FFFFF 39200200
    4800000D 987FFFFF
    48000048 7C630774
    7CC04839 41820014
    2C030000 40820014
    38600008 48000024
    2C03FFFF 40820010
    3860FFFF 7CA04839
    40820014 3463FFFF
    41810008 38600000
    7CA54878 4E800020
    7CA92B78 807F0060
    60000000 00000000
  5. Code:
    Classic Controller Pro Mod [Vague Rant]
    C2258E10 00000002
    801E0000 70000100
    60000000 00000000
    C22594DC 00000015
    7125DFFB 71200004
    41820008 60A52100
    71200200 41820004
    71202000 41820008
    60A50004 A01FFFFC
    B0BFFFFC 7CA60078
    887FFFFE 39202000
    4800001D 987FFFFE
    887FFFFF 39200200
    4800000D 987FFFFF
    48000048 7C630774
    7CC04839 41820014
    2C030000 40820014
    38600008 48000024
    2C03FFFF 40820010
    3860FFFF 7CA04839
    40820014 3463FFFF
    41810008 38600000
    7CA54878 4E800020
    7CA92B78 807F0060
    60000000 00000000

Button Mapping​

The mapping here is mostly unchanged, besides the modified shoulder buttons, so I will only be covering the changed buttons.

Classic ControllerClassic Controller ProGame Function
L (half press)ZRDescend
L (full press)ZR (double tap)Rapid Descend
R (half press)RAscend
R (full press)R (double tap)Rapid Ascend
ZR (double tap)L (double tap)Emergency Blaster Wave

General Notes​

  • This modifies the control scheme for all Classic Controllers, so if you are playing on an original Classic Controller with analog shoulder buttons, I don't recommend using this code. The other control schemes (Wii Remote and Nunchuk, GameCube controller) are completely unmodified, so those are fine, but the original CC will play awfully with this control scheme. I don't know how or have any plan to fix this, just don't use the code if you want to play with an original Classic Controller.

  • As mentioned, this uses the control scheme from the PlayStation 2 version of Tenkaichi 3, where ascending/descending is done on the right shoulder/trigger buttons instead of L and R on the original Classic Controller. These have a more logical "up/down" layout than L/R do; the only reason they're laid out that way is because of the analog nature of the shoulder buttons on original CCs. On a more traditional, non-analog-shoulders controller, the PS2 layout makes more sense. This code is not really adjustable in the way most of the others are, so if you don't like this layout, eh ...

Technical Notes​

This was my first time remapping the Classic Controller itself or dealing with the original-CC-specific analog shoulder buttons. It went pretty well. Code breakdown:

C2
This is modifying read_kpad_stick(), which also reads the analog shoulder buttons, in a slightly tricky way. Instead of reading the actual analog shoulder data for the L button, it reads in the fake button value which I set up below in KPADRead(), 0x100. Notably, the Classic Controller (Pro) only has one free button field, since there's 16 possible bits and the CC has 15 buttons. Anyway, instead of actually faking some analog data, I'm reading in the actual bytes of the button value 0x100 as if it was analog data, because that's perfectly fine for this game specifically. Other games likely use different thresholds for when they consider the analog button "half-pressed", so this is in theory portable but in practice shrug, depends on the game.

C2
This modifies KPADRead() to first rotate the shoulder buttons around to match the PS2 setup and add a fake button 0x100 which we use to trigger the left analog shoulder (since it's been moved to ZR here). It then adds a function which masks out the L/R full-press bits by default (so all presses are half-presses) and tracks whether the player has pressed ascend or descend twice in the same 8-frame window. If they have, we unmask the relevant digital press bit so that the game is now reading a full press. Once you release the button, it goes back to the original masking behavior, i.e. the buttons return to half-presses. This matches the behavior of the Wiimote and Nunchuk control scheme, which uses Nunchuk C/Z and similarly checks for two presses in an 8-frame window. I didn't find or copy that code from the original game, just observed the 8-frame timer by pausing execution and frame advancing to see how it worked, but the result should be identical to the original Nunchuk double-tap detection.
 

tech_A_nina

Member
Newcomer
Joined
Aug 1, 2018
Messages
20
Trophies
0
XP
223
Country
United Kingdom
Documentation sounds great. Tomorrow I'm gonna inject de Blob to the wii u system. This was a great game even with the crappy controls, but now it will be better than ever. Thanks for that. Have you considered the following games already: "batman the brave and the bold" (minimal motion controls) and "rhythm heaven fever" (no motion controls)?
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    realtimesave @ realtimesave: cool