Code: Select all
extern GetSnesbtns
extern GetSnesJoyCount
extern printnumber
extern sincelast_snes_check
extern delay_between_snescheck
; I didn't include all to save space on posting
extern pl1Ak, pl1Bk, pl1Yk, pl1Xk, pl1Lk, pl1Rk, pl1selk, pl1startk, pl1upk
extern pl1leftk, pl1rightk, pl1downk
extern delay_between_snescheck
%define SNES_B 1
%define SNES_Y 2
%define SNES_SEL 4
%define SNES_START 8
%define SNES_UP 16
%define SNES_DOWN 32
%define SNES_LEFT 64
%define SNES_RIGHT 128
%define SNES_A 256
%define SNES_X 512
%define SNES_L 1024
%define SNES_R 2048
; 5-2 are the same as number 1 instead of pl1 its pl2 or 3 etc...
NEWSYM ADD_SNES_5
NEWSYM ADD_SNES_4
NEWSYM ADD_SNES_3
NEWSYM ADD_SNES_2
NEWSYM ADD_SNES_1
push dword 1
call GetSnesbtns
pop ebx
mov ecx, pressed
mov ebx, ecx
add ebx, [pl1Bk]
mov edx, eax
and edx, 1
mov [ebx], dl
shr eax, 1
;Y
mov ebx, ecx
add ebx, [pl1Yk]
mov edx, eax
and edx, 1
mov [ebx], dl
shr eax, 1
;next button
mov ebx, ecx
add ebx, [pl1selk]
mov edx, eax
and edx, 1
mov [ebx], dl
shr eax, 1
;start
mov ebx, ecx
add ebx, [pl1startk]
mov edx, eax
and edx, 1
mov [ebx], dl
shr eax, 1
;up
mov ebx, ecx
add ebx, [pl1upk]
mov edx, eax
and edx, 1
mov [ebx], dl
shr eax, 1
;down
mov ebx, ecx
add ebx, [pl1downk]
mov edx, eax
and edx, 1
mov [ebx], dl
shr eax, 1
;left
mov ebx, ecx
add ebx, [pl1leftk]
mov edx, eax
and edx, 1
mov [ebx], dl
shr eax, 1
;right
mov ebx, ecx
add ebx, [pl1rightk]
mov edx, eax
and edx, 1
mov [ebx], dl
shr eax, 1
;a
mov ebx, ecx
add ebx, [pl1Ak]
mov edx, eax
and edx, 1
mov [ebx], dl
shr eax, 1
;X
mov ebx, ecx
add ebx, [pl1Xk]
mov edx, eax
and edx, 1
mov [ebx], dl
shr eax, 1
;L
mov ebx, ecx
add ebx, [pl1Lk]
mov edx, eax
and edx, 1
mov [ebx], dl
shr eax, 1
;R
mov ebx, ecx
add ebx, [pl1Rk]
mov edx, eax
and edx, 1
mov [ebx], dl
shr eax, 1
jmp SNES_M.End_snes_btns ; ****************
NEWSYM SNES_M
push eax
push ebx
push ecx
push edx
call sincelast_snes_check
cmp eax, [delay_between_snescheck]
jl .End_snes_btns
call GetSnesJoyCount
cmp eax, 5
je ADD_SNES_5
cmp eax, 4
je ADD_SNES_4
cmp eax, 3
je ADD_SNES_3
cmp eax, 2
je ADD_SNES_2
cmp eax, 1
je ADD_SNES_1
.End_snes_btns
pop edx
pop ecx
pop ebx
pop eax
ret