; 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