ReC98/th03/hardware/input_modes.asm

155 lines
2.7 KiB
NASM

; Merges the inputs for the P1 multi-player keys into the single-player state
; after sensing.
; void input_mode_interface();
_input_mode_interface proc far
push bp
mov bp, sp
nopcall _input_reset_sense_key_held
cmp js_bexist, 0
jz short @@nojoy
call js_sense
mov ax, js_stat
or _input_sp, ax
@@nojoy:
mov ax, _input_mp_p1
or _input_sp, ax
pop bp
retf
_input_mode_interface endp
; Completely ignores joystick input.
; void input_mode_key_vs_key();
_input_mode_key_vs_key proc far
push bp
mov bp, sp
nopcall _input_reset_sense_key_held
pop bp
retf
_input_mode_key_vs_key endp
; void input_mode_joy_vs_key();
_input_mode_joy_vs_key proc far
push bp
mov bp, sp
nopcall _input_reset_sense_key_held
cmp js_bexist, 0
jz short loc_EDA2
call js_sense
mov ax, js_stat
mov _input_mp_p1, ax
mov ax, _input_sp
mov _input_mp_p2, ax
loc_EDA2:
pop bp
retf
_input_mode_joy_vs_key endp
; void input_mode_key_vs_joy();
_input_mode_key_vs_joy proc far
push bp
mov bp, sp
nopcall _input_reset_sense_key_held
cmp js_bexist, 0
jz short @@nojoy
call js_sense
mov ax, js_stat
mov _input_mp_p2, ax
mov ax, _input_sp
mov _input_mp_p1, ax
@@nojoy:
pop bp
retf
_input_mode_key_vs_joy endp
; void input_mode_1p_vs_cpu();
_input_mode_1p_vs_cpu proc far
push bp
mov bp, sp
nopcall _input_reset_sense_key_held
mov ax, _input_sp
or _input_mp_p1, ax
cmp js_bexist, 0
jz short @@nojoy
call js_sense
mov ax, js_stat
or _input_mp_p1, ax
@@nojoy:
mov _input_mp_p2, INPUT_NONE
pop bp
retf
_input_mode_1p_vs_cpu endp
; void input_mode_cpu_vs_1p();
_input_mode_cpu_vs_1p proc far
push bp
mov bp, sp
nopcall _input_reset_sense_key_held
mov ax, _input_sp
or ax, _input_mp_p1
mov _input_mp_p2, ax
cmp js_bexist, 0
jz short loc_EE15
call js_sense
mov ax, js_stat
or _input_mp_p2, ax
loc_EE15:
mov _input_mp_p1, INPUT_NONE
pop bp
retf
_input_mode_cpu_vs_1p endp
; Just allows quitting via the OK or CANCEL, both of which are mapped to
; INPUT_CANCEL.
; void input_mode_cpu_vs_cpu();
_input_mode_cpu_vs_cpu proc far
push bp
mov bp, sp
nopcall _input_reset_sense_key_held
test _input_sp.hi, high INPUT_CANCEL
jnz short @@map
test _input_sp.hi, high INPUT_OK
jz short @@ret
@@map:
mov _input_sp, INPUT_CANCEL
@@ret:
mov _input_mp_p1, INPUT_NONE
mov _input_mp_p2, INPUT_NONE
pop bp
retf
_input_mode_cpu_vs_cpu endp
; Just allows quitting via pressing any button.
; void input_mode_attract();
_input_mode_attract proc far
push bp
mov bp, sp
nopcall _input_reset_sense_key_held
cmp js_bexist, 0
jz short @@nojoy
call js_sense
mov ax, js_stat
or _input_sp, ax
@@nojoy:
mov ax, _input_mp_p1
or _input_sp, ax
mov _input_mp_p1, INPUT_NONE
mov _input_mp_p2, INPUT_NONE
pop bp
retf
_input_mode_attract endp