Controller Address & Button Values (X,Y,Z) Values
#1
Controller Address & Button (X,Y,Z) Values

NTSC-U/J, PAL = 2834XXXX YYYYZZZZ
NTSC-K = 2833XXXX YYYYZZZZ



XXXX Values

NTSC-U
1462 = First Wii Wheel/Nunchuck
199A = Second Wii Wheel/Nunchuck
1ED2 = Third Wii Wheel/Nunchuck
240A = Fourth Wii Wheel/Nunchuck
14C2 = First Classic Controller
19FA = Second Classic Controller
1F32 = Third Classic Controller
246A = Fourth Classic Controller
3E80 = GCN Controller - Port 1
3E8C = GCN Controller - Port 2
3E98 = GCN Controller - Port 3
3EA4 = GCN Controller - Port 4

PAL
57E2 = First Wii Wheel/Nunchuck
5D1A = Second Wii Wheel/Nunchuck
6252 = Third Wii Wheel/Nunchuck
678A = Fourth Wii Wheel/Nunchuck
5842 = First Classic Controller
5D7A = Second Classic Controller
62B2 = Third Classic Controller
67EA = Fourth Classic Controller
8200 = GCN Controller - Port 1
820C = GCN Controller - Port 2
8218 = GCN Controller - Port 3
8224 = GCN Controller - Port 4

NTSC-J
5162 = First Wii Wheel/Nunchuck
569A = Second Wii Wheel/Nunchuck
5BD2 = Third Wii Wheel/Nunchuck
610A = Fourth Wii Wheel/Nunchuck
51C2 = First Classic Controller
56FA = Second Classic Controller
5C32 = Third Classic Controller
616A = Fourth Classic Controller
7B80 = GCN Controller - Port 1
7B8C = GCN Controller - Port 2
7B98 = GCN Controller - Port 3
7BA4 = GCN Controller - Port 4

NTSC-K
37E2 = First Wii Wheel/Nunchuck
3D1A = Second Wii Wheel/Nunchuck
4252 = Third Wii Wheel/Nunchuck
478A = Fourth Wii Wheel/Nunchuck
3842 = First Classic Controller
3D7A = Second Classic Controller
42B2 = Third Classic Controller
47EA = Fourth Classic Controller
6200 = GCN Controller - Port 1
620C = GCN Controller - Port 2
6218 = GCN Controller - Port 3
6224 = GCN Controller - Port 4



Special X/Y/Z Values

NTSC-U
24341474 BF735000 = Wii Mote Vertical
26341474 BF735000 = Wii Mote Sideways

PAL
243457F4 BF735000 = Wii Mote Vertical
263457F4 BF735000 = Wii Mote Sideways

NTSC-J
24345174 BF735000 = Wii Mote Vertical
26345174 BF735000 = Wii Mote Sideways

NTSC-K
243337F4 BF735000 = Wii Mote Vertical
263337F4 BF735000 = Wii Mote Sideways



YYYY Values

YYYY = 0000; = just that button(s) pressed
YYYY = FFFF - ZZZZ; = at least that button(s) pressed
Formula must be done in Hex.



ZZZZ Values (add together for pressed-at-same-time effect)

GCN Controller
0081 = Left
0082 = Right
0084 = Down
0088 = Up
0090 = Z
00A0 = R
00C0 = L
0180 = A
0280 = B
0480 = X
0880 = Y
1080 = Start

NOTE: If you are wanting to add the GCN Controller ZZZZ values together for 'pressed-at-same-time' effect,  use the Wavebird values, then add 0x80 (in hex) to the final result.

Wavebird (Wireless GCN)
0001 = Left
0002 = Right
0004 = Down
0008 = Up
0010 = Z
0020 = R
0040 = L
0100 = A
0200 = B
0400 = X
0800 = Y
1000 = Start

Wii Wheel/Nunchuck
0001 = Left
0002 = Right
0004 = Down
0008 = Up
0010 = +
0100 = 2
0200 = 1
0400 = B
0800 = A
1000 = -
2000 = Z
4000 = C
8000 = Home

Classic Controller
0001 = Up
0002 = Left
0004 = Z (Right)
0008 = X
0010 = A
0020 = Y
0040 = B
0080 = Z (Left)
0200 = R
0400 = +
0800 = Home
1000 = -
2000 = L
4000 = Down
8000 = Right

#The following is for ASM Code creators
GCN C Stick X /Y Axis
RMCE = 0x8034C204/5
RMCP = 0x80350584/5
RMCJ = 0x8034FF04/5
RMCK = 0x8033E584/5

Neutral = hovering around 0x80 (never stays exact due to nature of the stick)
Max Byte = 0xE0
Low Byte = 0x20

Max Top Left = 0xC7/0x3E
Max Top Right = 0xC7/0xC7
Max Bottom Left = 0x3E/0x3E
Max Bottom Right = 0x3E/0xC7

Following below is good for C stick activation in codes:
Greater than 0xC2 for Top and/or Right to be Activated
Less than 0x50 for Bottom and/or Left to be Activated

---

Analog Stick X/Y Axis
RMCE = 0x8034C202/3
RMCP = 0x80350582/3
RMCJ = 0x8034FF02/3
RMCK = 0x8033E582/3

Neutral = hovering around 0x80 (never stays exact due to nature of the stick)

Max Byte = 0xEA
Low Byte = 0x10

Max Top Left = 0xCD/0x30
Max Top Right = 0xCD/0xCD
Max Bottom Left = 0x30/0x30
Max Bottom Right = 0x30/0xCD

Following below is good for Analog stick activation in codes:
Greater than 0xC8 for Top and/or Right to be Activated
Less than 0x42 for Bottom and/or Left to be Activated
Reply
#2
Wii Remote Shake Activator

NTSC-U/J, PAL = 2434XXXX 40000000
NTSC-K = 2433XXXX 40000000

NTSC-U
1478 = First Wii Wheel / Nunchuk
19B0 = Second Wii Wheel / Nunchuk
1EE8 = Third Wii Wheel / Nunchuk
2420 = Fourth Wii Wheel / Nunchuk

PAL
57F8 = First Wii Wheel / Nunchuk
5D30 = Second Wii Wheel / Nunchuk
6268 = Third Wii Wheel / Nunchuk
67A0 = Fourth Wii Wheel / Nunchuk

NTSC-J
5178 = First Wii Wheel / Nunchuk
56B4 = Second Wii Wheel / Nunchuk
5BEC = Third Wii Wheel / Nunchuk
6124 = Fourth Wii Wheel / Nunchuk

NTSC-K
3834 = First Wii Wheel / Nunchuk
3D6C = Second Wii Wheel / Nunchuk
42A4 = Third Wii Wheel / Nunchuk
47DC = Fourth Wii Wheel / Nunchuk

Nunchuk Shake Activator

NTSC-U/J, PAL = 2434XXXX 40000000
NTSC-K = 2433XXXX 40000000

NTSC-U
14D4 = First Wii Wheel / Nunchuk
1A0C = Second Wii Wheel / Nunchuk
1F44 = Third Wii Wheel / Nunchuk
247C = Fourth Wii Wheel / Nunchuk

PAL
5854 = First Wii Wheel / Nunchuk
5D8C = Second Wii Wheel / Nunchuk
62C4 = Third Wii Wheel / Nunchuk
67FC = Fourth Wii Wheel / Nunchuk

NTSC-J
51D4 = First Wii Wheel / Nunchuk
570C = Second Wii Wheel / Nunchuk
5C44 = Third Wii Wheel / Nunchuk
617C = Fourth Wii Wheel / Nunchuk

NTSC-K
3854 = First Wii Wheel / Nunchuk
3D8C = Second Wii Wheel / Nunchuk
42C4 = Third Wii Wheel / Nunchuk
47FC = Fourth Wii Wheel / Nunchuk
[Image: GiVNKqR.png]
Reply
#3
Button Conditionals

Using Pointer: 38000000 00000000
Inclusive (use mask): 28000000 FFFF0000
Apply Endif: 28000001 00000000
Little Endian (Reverse): 28000000 00000000

Compare Type:
Equal To: 28000000 00000000
Not Equal To: 2A000000 00000000
Greater Than: 2C000000 00000000
Less Than: 2E000000 00000000
Reply
#4
Wii Remote Peripheral Addresses (found with help from InvoxiPlayGames)

PAL
Player 1 = 8034583C
Player 2 = 80345D74
Player 3 = 803462AC
Player 4 = 803467E4

NTSC-U
Player 1 = 803414BC
Player 2 = 803419F4
Player 3 = 80341F2C
Player 4 = 80342464

NTSC-J
Player 1 = 803451BC
Player 2 = 803456F4
Player 3 = 80345C2C
Player 4 = 80346164

NTSC-K
Player 1 = 8033383C
Player 2 = 80333D74
Player 3 = 803342AC
Player 4 = 803347E4

Values
Remote Only = 0
Nunchuk = 1
Classic = 2
Reply
#5
Gamecube Input Value Addresses for all players

PAL
Player 1 = 0x80350580
Player 2 = 0x80350589
Player 3 = 0x80350590
Player 4 = 0x80350599


NTSC-U
Player 1 = 0x8034C200
Player 2 = 0x8034C209
Player 3 = 0x8034C210
Player 4 = 0x8034C219


NTSC-J
Player 1 = 0x8034FF00
Player 2 = 0x8034FF09
Player 3 = 0x8034FF10
Player 4 = 0x8034FF19


NTSC-K
Player 1 = 0x8033E580
Player 2 = 0x8033E589
Player 3 = 0x8033E590
Player 4 = 0x8033E599
Reply
#6
(08-01-2020, 06:14 PM)Brawlbox Wrote: Gamecube Input Value Addresses for all players
...

The addresses of players 2+4 (all regions) are wrong. The last digit must be 8 but not 9:

PAL
Player 1 = 0x80350580
Player 2 = 0x80350588
Player 3 = 0x80350590
Player 4 = 0x80350598

NTSC-U
Player 1 = 0x8034C200
Player 2 = 0x8034C208
Player 3 = 0x8034C210
Player 4 = 0x8034C218

NTSC-J
Player 1 = 0x8034FF00
Player 2 = 0x8034FF08
Player 3 = 0x8034FF10
Player 4 = 0x8034FF18

NTSC-K
Player 1 = 0x8033E580
Player 2 = 0x8033E588
Player 3 = 0x8033E590
Player 4 = 0x8033E598


And here you find the following structures:
Code:
typedef struct gcn_controller_t
{
    uint16_t buttons;    // 0: Buttons
    uint8_t  stick_x;    // 2: Stick, x-axis
    uint8_t  stick_y;    // 3: Stick, y-axis
    uint8_t  c_stick_x;  // 4: C-Stick, x-axis
    uint8_t  c_stick_y;  // 5: C-Stick, y-axis
    uint8_t  l;          // 6: shoulder L (analog)
    uint8_t  r;          // 7: shoulder R (analog)
    // END, offset 0x8
}
__attribute__((packed)) gcn_controller_t;
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)