[Reverse-engineering] [th02] Keyboard input

Don't really understand the other games yet because they start introducing
joystick support and TH03 has multiplayer and then there are these master.lib
modifications that don't really make any sense to me, especially when you add
that TH04 seemingly does not read js_stat *at all*, yet still works just fine
with a gamepad and... urgh.
This commit is contained in:
nmlgc 2015-02-22 22:33:07 +01:00
parent 436f1c5722
commit f0be7dadf4
7 changed files with 248 additions and 526 deletions

13
th02/hardware/input.inc Normal file
View File

@ -0,0 +1,13 @@
INPUT_UP = 1
INPUT_DOWN = 2
INPUT_LEFT = 4
INPUT_RIGHT = 8
INPUT_SHOT = 10h
INPUT_BOMB = 20h
INPUT_CANCEL = 40h
INPUT_OK = 80h
INPUT_Q = 100h
INPUT_UP_LEFT = 1000h
INPUT_UP_RIGHT = 2000h
INPUT_DOWN_LEFT = 4000h
INPUT_DOWN_RIGHT = 8000h

View File

@ -0,0 +1,117 @@
; void DEFCONV input_sense(void);
proc_defconv input_sense
mov _input, 0
mov al, 7
mov ah, 4
int 18h
mov bh, ah
mov al, 8
mov ah, 4
int 18h
test bh, 4
jnz short @@up
test ah, 8
jz short @@left?
@@up:
or _input, INPUT_UP
@@left?:
test bh, 8
jnz short @@left
test ah, 40h
jz short @@num7?
@@left:
or _input, INPUT_LEFT
@@num7?:
test ah, 4
jz short @@num9?
or _input, INPUT_UP_LEFT
@@num9?:
test ah, 10h
jz short @@down?
or _input, INPUT_UP_RIGHT
@@down?:
mov al, 9
mov ah, 4
int 18h
test bh, 20h
jnz short @@down
test ah, 8
jz short @@right?
@@down:
or _input, INPUT_DOWN
@@right?:
test bh, 10h
jnz short @@right
test ah, 1
jz short @@num1?
@@right:
or _input, INPUT_RIGHT
@@num1?:
test ah, 4
jz short @@num3?
or _input, INPUT_DOWN_LEFT
@@num3?:
test ah, 10h
jz short @@z?
or _input, INPUT_DOWN_RIGHT
@@z?:
mov al, 5
mov ah, 4
int 18h
test ah, 2
jz short @@x?
or _input, INPUT_SHOT
@@x?:
test ah, 4
jz short @@esc?
or _input, INPUT_BOMB
@@esc?:
mov al, 0
mov ah, 4
int 18h
test ah, 1
jz short @@return?
or _input, INPUT_CANCEL
@@return?:
mov al, 3
mov ah, 4
int 18h
test ah, 10h
jz short @@q?
or _input, INPUT_OK
@@q?:
mov al, 2
mov ah, 4
int 18h
test ah, 1
jz short @@space?
or _input, INPUT_Q
@@space?:
mov al, 6
mov ah, 4
int 18h
test ah, 10h
jz short @@ret
or _input, INPUT_SHOT
@@ret:
retf
endp_defconv
even

View File

@ -0,0 +1,2 @@
public _input
_input dw ?

View File

@ -1,3 +1,4 @@
GAME = 2 GAME = 2
include defconv_c.inc include defconv_c.inc
include th02/hardware/input.inc
include th02/frame_delay_macro.asm include th02/frame_delay_macro.asm

View File

@ -2001,7 +2001,7 @@ loc_B237:
call gaiji_putsa pascal, (18 shl 16) + 12, ds, offset gDEMO_PLAY, TX_YELLOW + TX_BLINK call gaiji_putsa pascal, (18 shl 16) + 12, ds, offset gDEMO_PLAY, TX_YELLOW + TX_BLINK
loc_B249: loc_B249:
mov word_1FFA8, 0 mov _input, 0
loc_B24F: loc_B24F:
call farfp_1F4A4 call farfp_1F4A4
@ -2615,20 +2615,20 @@ loc_BA33:
loc_BA3D: loc_BA3D:
push TX_WHITE push TX_WHITE
call gaiji_putsa call gaiji_putsa
call sub_F62E call _input_sense
inc si inc si
cmp [bp+var_1], 0 cmp [bp+var_1], 0
jnz short loc_BA5C jnz short loc_BA5C
cmp word_1FFA8, 0 cmp _input, 0
jnz short loc_BA5C jnz short loc_BA5C
mov [bp+var_1], 1 mov [bp+var_1], 1
loc_BA5C: loc_BA5C:
cmp [bp+var_1], 1 cmp [bp+var_1], 1
jnz loc_BB30 jnz loc_BB30
test byte ptr word_1FFA8, 1 test byte ptr _input, 1
jnz short loc_BA72 jnz short loc_BA72
test byte ptr word_1FFA8, 2 test byte ptr _input, 2
jz short loc_BAC8 jz short loc_BAC8
loc_BA72: loc_BA72:
@ -2662,9 +2662,9 @@ loc_BA98:
mov [bp+var_1], 0 mov [bp+var_1], 0
loc_BAC8: loc_BAC8:
test byte ptr word_1FFA8, 80h test byte ptr _input, INPUT_OK
jnz short loc_BAD6 jnz short loc_BAD6
test byte ptr word_1FFA8, 10h test byte ptr _input, INPUT_SHOT
jz short loc_BB24 jz short loc_BB24
loc_BAD6: loc_BAD6:
@ -2682,7 +2682,7 @@ loc_BAE3:
mov byte_1DB74, 0 mov byte_1DB74, 0
loc_BB24: loc_BB24:
test byte ptr word_1FFA8, 40h test byte ptr _input, INPUT_CANCEL
jz loc_BCA4 jz loc_BCA4
jmp loc_BCA0 jmp loc_BCA0
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -2690,11 +2690,11 @@ loc_BB24:
loc_BB30: loc_BB30:
cmp [bp+var_1], 2 cmp [bp+var_1], 2
jnz short loc_BB9D jnz short loc_BB9D
cmp word_1FFA8, 0 cmp _input, 0
jnz loc_BCA4 jnz loc_BCA4
mov PaletteTone, 64h ; 'd' mov PaletteTone, 64h ; 'd'
call far ptr palette_show call far ptr palette_show
mov word_1FFA8, 0 mov _input, 0
call gaiji_putsa pascal, (18 shl 16) + 12, ds, offset g11SPACES, TX_WHITE call gaiji_putsa pascal, (18 shl 16) + 12, ds, offset g11SPACES, TX_WHITE
call gaiji_putsa pascal, (17 shl 16) + 14, ds, offset g11SPACES, TX_WHITE call gaiji_putsa pascal, (17 shl 16) + 14, ds, offset g11SPACES, TX_WHITE
call gaiji_putsa pascal, (17 shl 16) + 15, ds, offset g11SPACES, TX_WHITE call gaiji_putsa pascal, (17 shl 16) + 15, ds, offset g11SPACES, TX_WHITE
@ -2706,7 +2706,7 @@ loc_BB30:
loc_BB9D: loc_BB9D:
cmp [bp+var_1], 3 cmp [bp+var_1], 3
jnz short loc_BBB2 jnz short loc_BBB2
cmp word_1FFA8, 0 cmp _input, 0
jnz loc_BCA4 jnz loc_BCA4
inc [bp+var_1] inc [bp+var_1]
jmp loc_BCA4 jmp loc_BCA4
@ -2715,9 +2715,9 @@ loc_BB9D:
loc_BBB2: loc_BBB2:
cmp [bp+var_1], 4 cmp [bp+var_1], 4
jnz loc_BCA4 jnz loc_BCA4
test byte ptr word_1FFA8, 1 test byte ptr _input, 1
jnz short loc_BBC8 jnz short loc_BBC8
test byte ptr word_1FFA8, 2 test byte ptr _input, 2
jz short loc_BC1E jz short loc_BC1E
loc_BBC8: loc_BBC8:
@ -2751,9 +2751,9 @@ loc_BBEE:
mov [bp+var_1], 3 mov [bp+var_1], 3
loc_BC1E: loc_BC1E:
test byte ptr word_1FFA8, 80h test byte ptr _input, INPUT_OK
jnz short loc_BC2C jnz short loc_BC2C
test byte ptr word_1FFA8, 10h test byte ptr _input, INPUT_SHOT
jz short loc_BC99 jz short loc_BC99
loc_BC2C: loc_BC2C:
@ -2774,7 +2774,7 @@ loc_BC94:
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_BC99: loc_BC99:
test byte ptr word_1FFA8, 40h test byte ptr _input, INPUT_CANCEL
jz short loc_BCA4 jz short loc_BCA4
loc_BCA0: loc_BCA0:
@ -2906,7 +2906,7 @@ loc_BDA2:
mov dx, word_20344 mov dx, word_20344
mov bx, ax mov bx, ax
mov ss:[bx], dx mov ss:[bx], dx
call sub_F62E call _input_sense
les bx, dword_2026C les bx, dword_2026C
cmp byte ptr es:[bx+27h], 0 cmp byte ptr es:[bx+27h], 0
jz short loc_BDCC jz short loc_BDCC
@ -2928,7 +2928,7 @@ loc_BDE8:
call farfp_23A76 call farfp_23A76
call sub_10BC6 call sub_10BC6
call sub_41AA call sub_41AA
test byte ptr word_1FFA8, 40h test byte ptr _input, INPUT_CANCEL
jz short loc_BE0F jz short loc_BE0F
call sub_B9E2 call sub_B9E2
or ax, ax or ax, ax
@ -3367,20 +3367,20 @@ sub_C13E endp
sub_C1E4 proc far sub_C1E4 proc far
push bp push bp
mov bp, sp mov bp, sp
cmp word_1FFA8, 0 cmp _input, 0
jnz short loc_C20B jnz short loc_C20B
mov ax, word_1DB86 mov ax, word_1DB86
add ax, ax add ax, ax
les bx, dword_1F4A8 les bx, dword_1F4A8
add bx, ax add bx, ax
mov ax, es:[bx] mov ax, es:[bx]
mov word_1FFA8, ax mov _input, ax
inc word_1DB86 inc word_1DB86
cmp word_1DB86, 1B26h cmp word_1DB86, 1B26h
jl short loc_C222 jl short loc_C222
loc_C20B: loc_C20B:
mov word_1FFA8, 0 mov _input, 0
push 0Ah push 0Ah
call palette_black_out call palette_black_out
mov byte_20607, 1 mov byte_20607, 1
@ -3605,15 +3605,15 @@ loc_C3E5:
jge loc_C348 jge loc_C348
push 1Eh push 1Eh
call frame_delay call frame_delay
mov word_1FFA8, 0 mov _input, 0
jmp short loc_C400 jmp short loc_C400
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_C3FB: loc_C3FB:
call sub_F62E call _input_sense
loc_C400: loc_C400:
cmp word_1FFA8, 0 cmp _input, 0
jz short loc_C3FB jz short loc_C3FB
call sub_FBE9 call sub_FBE9
call sub_1C9FE call sub_1C9FE
@ -3637,10 +3637,10 @@ loc_C400:
mov di, 1 mov di, 1
loc_C47A: loc_C47A:
call sub_F62E call _input_sense
cmp [bp+var_2], 0 cmp [bp+var_2], 0
jnz short loc_C493 jnz short loc_C493
cmp word_1FFA8, 0 cmp _input, 0
jnz short loc_C493 jnz short loc_C493
mov [bp+var_2], 1 mov [bp+var_2], 1
jmp short loc_C4A5 jmp short loc_C4A5
@ -3649,19 +3649,19 @@ loc_C47A:
loc_C493: loc_C493:
cmp [bp+var_2], 1 cmp [bp+var_2], 1
jnz short loc_C4A5 jnz short loc_C4A5
cmp word_1FFA8, 0 cmp _input, 0
jz short loc_C4A5 jz short loc_C4A5
mov [bp+var_2], 2 mov [bp+var_2], 2
loc_C4A5: loc_C4A5:
test byte ptr word_1FFA8, 1 test byte ptr _input, 1
jz short loc_C4B8 jz short loc_C4B8
mov di, 1 mov di, 1
push 0E500E1h push 0E500E1h
call sub_C2F4 call sub_C2F4
loc_C4B8: loc_C4B8:
test byte ptr word_1FFA8, 2 test byte ptr _input, 2
jz short loc_C4CA jz short loc_C4CA
xor di, di xor di, di
push 0E100E5h push 0E100E5h
@ -3670,11 +3670,11 @@ loc_C4B8:
loc_C4CA: loc_C4CA:
cmp [bp+var_2], 2 cmp [bp+var_2], 2
jnz short loc_C4E5 jnz short loc_C4E5
test byte ptr word_1FFA8, 10h test byte ptr _input, INPUT_SHOT
jnz short loc_C4EE jnz short loc_C4EE
test byte ptr word_1FFA8, 80h test byte ptr _input, INPUT_OK
jnz short loc_C4EE jnz short loc_C4EE
test byte ptr word_1FFA8, 40h test byte ptr _input, INPUT_CANCEL
jnz short loc_C4EE jnz short loc_C4EE
loc_C4E5: loc_C4E5:
@ -3684,7 +3684,7 @@ loc_C4E5:
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_C4EE: loc_C4EE:
test byte ptr word_1FFA8, 40h test byte ptr _input, INPUT_CANCEL
jz short loc_C4F7 jz short loc_C4F7
loc_C4F5: loc_C4F5:
@ -9439,7 +9439,7 @@ loc_F1F2:
loc_F1F7: loc_F1F7:
cmp byte_20604, 0 cmp byte_20604, 0
jnz loc_F43E jnz loc_F43E
mov ax, word_1FFA8 mov ax, _input
and ax, 0F000h and ax, 0F000h
cmp ax, 4000h cmp ax, 4000h
jz loc_F29E jz loc_F29E
@ -9456,7 +9456,7 @@ loc_F21B:
jz loc_F2A4 jz loc_F2A4
loc_F222: loc_F222:
mov bx, word_1FFA8 mov bx, _input
and bx, 0Fh and bx, 0Fh
dec bx dec bx
cmp bx, 9 cmp bx, 9
@ -9601,7 +9601,7 @@ loc_F2FB:
sub ax, di sub ax, di
mov bx, word_205F4 mov bx, word_205F4
mov [bx], ax mov [bx], ax
test byte ptr word_1FFA8, 10h test byte ptr _input, INPUT_SHOT
jz short loc_F349 jz short loc_F349
cmp byte_1EB0D, 0FFh cmp byte_1EB0D, 0FFh
jnz short loc_F336 jnz short loc_F336
@ -9671,7 +9671,7 @@ loc_F3B3:
mov byte_1E519, al mov byte_1E519, al
mov al, byte_2060F mov al, byte_2060F
mov byte_1E51A, al mov byte_1E51A, al
test word_1FFA8, 0C002h test _input, INPUT_DOWN or INPUT_DOWN_LEFT or INPUT_DOWN_RIGHT
jz short loc_F3F1 jz short loc_F3F1
mov al, byte_20610 mov al, byte_20610
add al, 5 add al, 5
@ -9684,7 +9684,7 @@ loc_F3B3:
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_F3F1: loc_F3F1:
test word_1FFA8, 0F00Fh test _input, INPUT_UP or INPUT_DOWN or INPUT_LEFT or INPUT_RIGHT or INPUT_UP_LEFT or INPUT_UP_RIGHT or INPUT_DOWN_LEFT or INPUT_DOWN_RIGHT
jnz short loc_F417 jnz short loc_F417
mov al, byte_20610 mov al, byte_20610
add al, 0FBh add al, 0FBh
@ -9712,7 +9712,7 @@ loc_F426:
dec byte_22D4B dec byte_22D4B
loc_F434: loc_F434:
test byte ptr word_1FFA8, 20h test byte ptr _input, INPUT_BOMB
jz short loc_F43E jz short loc_F43E
call sub_E280 call sub_E280
@ -9973,144 +9973,7 @@ sub_F5B1 endp
include th02/frame_delay.asm include th02/frame_delay.asm
db 0 db 0
include th02/hardware/input_sense.asm
; =============== S U B R O U T I N E =======================================
sub_F62E proc far
mov word_1FFA8, 0
mov al, 7
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
mov bh, ah
mov al, 8
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test bh, 4
jnz short loc_F64C
test ah, 8
jz short loc_F651
loc_F64C:
or word_1FFA8, 1
loc_F651:
test bh, 8
jnz short loc_F65B
test ah, 40h
jz short loc_F660
loc_F65B:
or word_1FFA8, 4
loc_F660:
test ah, 4
jz short loc_F66B
or word_1FFA8, 1000h
loc_F66B:
test ah, 10h
jz short loc_F676
or word_1FFA8, 2000h
loc_F676:
mov al, 9
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test bh, 20h
jnz short loc_F686
test ah, 8
jz short loc_F68B
loc_F686:
or word_1FFA8, 2
loc_F68B:
test bh, 10h
jnz short loc_F695
test ah, 1
jz short loc_F69A
loc_F695:
or word_1FFA8, 8
loc_F69A:
test ah, 4
jz short loc_F6A5
or word_1FFA8, 4000h
loc_F6A5:
test ah, 10h
jz short loc_F6B0
or word_1FFA8, 8000h
loc_F6B0:
mov al, 5
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 2
jz short loc_F6C0
or word_1FFA8, 10h
loc_F6C0:
test ah, 4
jz short loc_F6CA
or word_1FFA8, 20h
loc_F6CA:
mov al, 0
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 1
jz short loc_F6DA
or word_1FFA8, 40h
loc_F6DA:
mov al, 3
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 10h
jz short loc_F6EB
or word_1FFA8, 80h
loc_F6EB:
mov al, 2
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 1
jz short loc_F6FC
or word_1FFA8, 100h
loc_F6FC:
mov al, 6
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 10h
jz short locret_F70C
or word_1FFA8, 10h
locret_F70C:
retf
sub_F62E endp
; ---------------------------------------------------------------------------
nop
; =============== S U B R O U T I N E ======================================= ; =============== S U B R O U T I N E =======================================
@ -10721,7 +10584,7 @@ loc_FD5A:
call _snd_se_reset call _snd_se_reset
call sub_DE4E call sub_DE4E
call _snd_se_update call _snd_se_update
mov word_1FFA8, 1 mov _input, 1
call sub_F4BC call sub_F4BC
pop si pop si
leave leave
@ -10860,7 +10723,7 @@ loc_FEB9:
call _snd_se_reset call _snd_se_reset
call sub_DE4E call sub_DE4E
call _snd_se_update call _snd_se_update
mov word_1FFA8, 1 mov _input, 1
call sub_F4BC call sub_F4BC
pop si pop si
leave leave
@ -17005,7 +16868,7 @@ arg_0 = word ptr 4
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_13090: loc_13090:
call sub_F62E call _input_sense
push [bp+arg_0] push [bp+arg_0]
call sub_12F23 call sub_12F23
cmp si, 24h ; '$' cmp si, 24h ; '$'
@ -17039,7 +16902,7 @@ loc_130CC:
loc_130CF: loc_130CF:
inc di inc di
cmp word_1FFA8, 0 cmp _input, 0
jz short loc_130DE jz short loc_130DE
mov [bp+var_2], 1 mov [bp+var_2], 1
jmp short loc_130EA jmp short loc_130EA
@ -34693,17 +34556,17 @@ loc_1CB6B:
call sub_1C785 call sub_1C785
xor di, di xor di, di
mov [bp+var_8], 0 mov [bp+var_8], 0
mov word_1FFA8, 0 mov _input, 0
mov [bp+var_A], 1 mov [bp+var_A], 1
loc_1CB89: loc_1CB89:
mov [bp+var_B], 0 mov [bp+var_B], 0
loc_1CB8D: loc_1CB8D:
call sub_F62E call _input_sense
cmp [bp+var_A], 0 cmp [bp+var_A], 0
jnz loc_1CCFE jnz loc_1CCFE
test byte ptr word_1FFA8, 1 test byte ptr _input, 1
jz short loc_1CBC3 jz short loc_1CBC3
push di push di
push [bp+var_8] push [bp+var_8]
@ -34721,7 +34584,7 @@ loc_1CBB9:
call sub_1C8E3 call sub_1C8E3
loc_1CBC3: loc_1CBC3:
test byte ptr word_1FFA8, 2 test byte ptr _input, 2
jz short loc_1CBEC jz short loc_1CBEC
push di push di
push [bp+var_8] push [bp+var_8]
@ -34739,7 +34602,7 @@ loc_1CBE2:
call sub_1C8E3 call sub_1C8E3
loc_1CBEC: loc_1CBEC:
test byte ptr word_1FFA8, 4 test byte ptr _input, 4
jz short loc_1CC0F jz short loc_1CC0F
push di push di
push [bp+var_8] push [bp+var_8]
@ -34757,7 +34620,7 @@ loc_1CC05:
call sub_1C8E3 call sub_1C8E3
loc_1CC0F: loc_1CC0F:
test byte ptr word_1FFA8, 8 test byte ptr _input, 8
jz short loc_1CC32 jz short loc_1CC32
push di push di
push [bp+var_8] push [bp+var_8]
@ -34775,9 +34638,9 @@ loc_1CC28:
call sub_1C8E3 call sub_1C8E3
loc_1CC32: loc_1CC32:
test byte ptr word_1FFA8, 10h test byte ptr _input, INPUT_SHOT
jnz short loc_1CC42 jnz short loc_1CC42
test byte ptr word_1FFA8, 80h test byte ptr _input, INPUT_OK
jz loc_1CCD7 jz loc_1CCD7
loc_1CC42: loc_1CC42:
@ -34862,7 +34725,7 @@ loc_1CCD0:
call sub_1C914 call sub_1C914
loc_1CCD7: loc_1CCD7:
test byte ptr word_1FFA8, 20h test byte ptr _input, INPUT_BOMB
jz short loc_1CCF7 jz short loc_1CCF7
mov bx, [bp+var_2] mov bx, [bp+var_2]
imul bx, 7 imul bx, 7
@ -34878,13 +34741,13 @@ loc_1CCF0:
call sub_1C914 call sub_1C914
loc_1CCF7: loc_1CCF7:
test byte ptr word_1FFA8, 40h test byte ptr _input, INPUT_CANCEL
jnz short loc_1CD2E jnz short loc_1CD2E
loc_1CCFE: loc_1CCFE:
push 1 push 1
call frame_delay call frame_delay
mov ax, word_1FFA8 mov ax, _input
mov [bp+var_A], ax mov [bp+var_A], ax
cmp [bp+var_A], 0 cmp [bp+var_A], 0
jz loc_1CB89 jz loc_1CB89
@ -37466,7 +37329,7 @@ include libs/master.lib/super_put_rect[bss].asm
include th01/hardware/vram_planes[bss].asm include th01/hardware/vram_planes[bss].asm
include th02/formats/pi_slots[bss].asm include th02/formats/pi_slots[bss].asm
include libs/master.lib/pfint21[bss].asm include libs/master.lib/pfint21[bss].asm
word_1FFA8 dw ? include th02/hardware/input_sense[bss].asm
include th02/hardware/snd[bss].asm include th02/hardware/snd[bss].asm
include th02/hardware/snd_load[bss].asm include th02/hardware/snd_load[bss].asm
dword_1FFBC dd ? dword_1FFBC dd ?

View File

@ -244,7 +244,7 @@ arg_A = word ptr 0Eh
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_9660: loc_9660:
call sub_B536 call _input_sense
les bx, [bp+arg_2] les bx, [bp+arg_2]
add bx, si add bx, si
mov al, es:[bx] mov al, es:[bx]
@ -268,7 +268,7 @@ loc_9660:
add sp, 0Ah add sp, 0Ah
cmp byte_F02B, 0 cmp byte_F02B, 0
jz short loc_96B9 jz short loc_96B9
cmp word_FAEE, 0 cmp _input, 0
jz short loc_96B9 jz short loc_96B9
test di, 3 test di, 3
jz short loc_96C1 jz short loc_96C1
@ -297,10 +297,10 @@ loc_96C4:
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_96CD: loc_96CD:
call sub_B536 call _input_sense
cmp byte_F02B, 0 cmp byte_F02B, 0
jz short loc_96E4 jz short loc_96E4
cmp word_FAEE, 0 cmp _input, 0
jz short loc_96E4 jz short loc_96E4
push 0 push 0
jmp short loc_96E6 jmp short loc_96E6
@ -3479,144 +3479,7 @@ include th01/hardware/vram_planes_set.asm
include th02/formats/pi_slot_load.asm include th02/formats/pi_slot_load.asm
include th02/frame_delay.asm include th02/frame_delay.asm
db 0 db 0
include th02/hardware/input_sense.asm
; =============== S U B R O U T I N E =======================================
sub_B536 proc far
mov word_FAEE, 0
mov al, 7
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
mov bh, ah
mov al, 8
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test bh, 4
jnz short loc_B554
test ah, 8
jz short loc_B559
loc_B554:
or word_FAEE, 1
loc_B559:
test bh, 8
jnz short loc_B563
test ah, 40h
jz short loc_B568
loc_B563:
or word_FAEE, 4
loc_B568:
test ah, 4
jz short loc_B573
or word_FAEE, 1000h
loc_B573:
test ah, 10h
jz short loc_B57E
or word_FAEE, 2000h
loc_B57E:
mov al, 9
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test bh, 20h
jnz short loc_B58E
test ah, 8
jz short loc_B593
loc_B58E:
or word_FAEE, 2
loc_B593:
test bh, 10h
jnz short loc_B59D
test ah, 1
jz short loc_B5A2
loc_B59D:
or word_FAEE, 8
loc_B5A2:
test ah, 4
jz short loc_B5AD
or word_FAEE, 4000h
loc_B5AD:
test ah, 10h
jz short loc_B5B8
or word_FAEE, 8000h
loc_B5B8:
mov al, 5
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 2
jz short loc_B5C8
or word_FAEE, 10h
loc_B5C8:
test ah, 4
jz short loc_B5D2
or word_FAEE, 20h
loc_B5D2:
mov al, 0
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 1
jz short loc_B5E2
or word_FAEE, 40h
loc_B5E2:
mov al, 3
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 10h
jz short loc_B5F3
or word_FAEE, 80h
loc_B5F3:
mov al, 2
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 1
jz short loc_B604
or word_FAEE, 100h
loc_B604:
mov al, 6
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 10h
jz short locret_B614
or word_FAEE, 10h
locret_B614:
retf
sub_B536 endp
; ---------------------------------------------------------------------------
nop
; =============== S U B R O U T I N E ======================================= ; =============== S U B R O U T I N E =======================================
@ -4421,17 +4284,17 @@ loc_BDEC:
call sub_BA25 call sub_BA25
xor di, di xor di, di
mov [bp+var_8], 0 mov [bp+var_8], 0
mov word_FAEE, 0 mov _input, 0
mov [bp+var_A], 1 mov [bp+var_A], 1
loc_BE0A: loc_BE0A:
mov [bp+var_B], 0 mov [bp+var_B], 0
loc_BE0E: loc_BE0E:
call sub_B536 call _input_sense
cmp [bp+var_A], 0 cmp [bp+var_A], 0
jnz loc_BF7F jnz loc_BF7F
test byte ptr word_FAEE, 1 test byte ptr _input, 1
jz short loc_BE44 jz short loc_BE44
push di push di
push [bp+var_8] push [bp+var_8]
@ -4449,7 +4312,7 @@ loc_BE3A:
call sub_BB83 call sub_BB83
loc_BE44: loc_BE44:
test byte ptr word_FAEE, 2 test byte ptr _input, 2
jz short loc_BE6D jz short loc_BE6D
push di push di
push [bp+var_8] push [bp+var_8]
@ -4467,7 +4330,7 @@ loc_BE63:
call sub_BB83 call sub_BB83
loc_BE6D: loc_BE6D:
test byte ptr word_FAEE, 4 test byte ptr _input, 4
jz short loc_BE90 jz short loc_BE90
push di push di
push [bp+var_8] push [bp+var_8]
@ -4485,7 +4348,7 @@ loc_BE86:
call sub_BB83 call sub_BB83
loc_BE90: loc_BE90:
test byte ptr word_FAEE, 8 test byte ptr _input, 8
jz short loc_BEB3 jz short loc_BEB3
push di push di
push [bp+var_8] push [bp+var_8]
@ -4503,9 +4366,9 @@ loc_BEA9:
call sub_BB83 call sub_BB83
loc_BEB3: loc_BEB3:
test byte ptr word_FAEE, 10h test byte ptr _input, INPUT_SHOT
jnz short loc_BEC3 jnz short loc_BEC3
test byte ptr word_FAEE, 80h test byte ptr _input, INPUT_OK
jz loc_BF58 jz loc_BF58
loc_BEC3: loc_BEC3:
@ -4590,7 +4453,7 @@ loc_BF51:
call sub_BBB4 call sub_BBB4
loc_BF58: loc_BF58:
test byte ptr word_FAEE, 20h test byte ptr _input, INPUT_BOMB
jz short loc_BF78 jz short loc_BF78
mov bx, [bp+var_2] mov bx, [bp+var_2]
imul bx, 7 imul bx, 7
@ -4606,13 +4469,13 @@ loc_BF71:
call sub_BBB4 call sub_BBB4
loc_BF78: loc_BF78:
test byte ptr word_FAEE, 40h test byte ptr _input, INPUT_CANCEL
jnz short loc_BFAF jnz short loc_BFAF
loc_BF7F: loc_BF7F:
push 1 push 1
call frame_delay call frame_delay
mov ax, word_FAEE mov ax, _input
mov [bp+var_A], ax mov [bp+var_A], ax
cmp [bp+var_A], 0 cmp [bp+var_A], 0
jz loc_BE0A jz loc_BE0A
@ -6500,7 +6363,7 @@ include libs/master.lib/superpa[bss].asm
include th01/hardware/vram_planes[bss].asm include th01/hardware/vram_planes[bss].asm
include th02/formats/pi_slots[bss].asm include th02/formats/pi_slots[bss].asm
include libs/master.lib/pfint21[bss].asm include libs/master.lib/pfint21[bss].asm
word_FAEE dw ? include th02/hardware/input_sense[bss].asm
include th02/hardware/snd[bss].asm include th02/hardware/snd[bss].asm
include th02/hardware/snd_load[bss].asm include th02/hardware/snd_load[bss].asm
dword_FB02 dd ? dword_FB02 dd ?

View File

@ -938,7 +938,7 @@ loc_A34B:
mov fp_E902, offset sub_A1F5 mov fp_E902, offset sub_A1F5
loc_A356: loc_A356:
cmp word_F3C8, 0 cmp _input, 0
jnz short loc_A362 jnz short loc_A362
mov byte_E8F8, 1 mov byte_E8F8, 1
@ -949,23 +949,23 @@ loc_A362:
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_A36C: loc_A36C:
test byte ptr word_F3C8, 1 test byte ptr _input, INPUT_UP
jz short loc_A37A jz short loc_A37A
push 5 push 5
push 0FFFFh push 0FFFFh
call sub_A2A2 call sub_A2A2
loc_A37A: loc_A37A:
test byte ptr word_F3C8, 2 test byte ptr _input, INPUT_DOWN
jz short loc_A388 jz short loc_A388
push 5 push 5
push 1 push 1
call sub_A2A2 call sub_A2A2
loc_A388: loc_A388:
test byte ptr word_F3C8, 10h test byte ptr _input, INPUT_SHOT
jnz short loc_A399 jnz short loc_A399
test byte ptr word_F3C8, 80h test byte ptr _input, INPUT_OK
jnz short loc_A399 jnz short loc_A399
jmp loc_A448 jmp loc_A448
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -1039,12 +1039,12 @@ loc_A443:
mov byte_D6C2, 1 mov byte_D6C2, 1
loc_A448: loc_A448:
test byte ptr word_F3C8, 40h test byte ptr _input, INPUT_CANCEL
jz short loc_A454 jz short loc_A454
mov byte_D6C2, 1 mov byte_D6C2, 1
loc_A454: loc_A454:
cmp word_F3C8, 0 cmp _input, 0
jz short loc_A466 jz short loc_A466
mov byte_E8F8, 0 mov byte_E8F8, 0
mov word_E8FC, 0 mov word_E8FC, 0
@ -1429,7 +1429,7 @@ loc_A794:
mov fp_E902, offset sub_A510 mov fp_E902, offset sub_A510
loc_A79F: loc_A79F:
cmp word_F3C8, 0 cmp _input, 0
jnz short loc_A7AB jnz short loc_A7AB
mov byte_D791, 1 mov byte_D791, 1
@ -1440,21 +1440,21 @@ loc_A7AB:
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_A7B5: loc_A7B5:
test byte ptr word_F3C8, 1 test byte ptr _input, INPUT_UP
jz short loc_A7C3 jz short loc_A7C3
push 6 push 6
push 0FFFFh push 0FFFFh
call sub_A2A2 call sub_A2A2
loc_A7C3: loc_A7C3:
test byte ptr word_F3C8, 2 test byte ptr _input, INPUT_DOWN
jz short loc_A7D1 jz short loc_A7D1
push 6 push 6
push 1 push 1
call sub_A2A2 call sub_A2A2
loc_A7D1: loc_A7D1:
test byte ptr word_F3C8, 8 test byte ptr _input, INPUT_RIGHT
jnz short loc_A7DB jnz short loc_A7DB
jmp loc_A85C jmp loc_A85C
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -1518,7 +1518,7 @@ loc_A851:
call sub_A510 pascal, ax, TX_WHITE call sub_A510 pascal, ax, TX_WHITE
loc_A85C: loc_A85C:
test byte ptr word_F3C8, 4 test byte ptr _input, INPUT_LEFT
jnz short loc_A866 jnz short loc_A866
jmp loc_A8E7 jmp loc_A8E7
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -1584,9 +1584,9 @@ loc_A8DC:
call sub_A510 call sub_A510
loc_A8E7: loc_A8E7:
test byte ptr word_F3C8, 10h test byte ptr _input, INPUT_SHOT
jnz short loc_A8F8 jnz short loc_A8F8
test byte ptr word_F3C8, 80h test byte ptr _input, INPUT_OK
jnz short loc_A8F8 jnz short loc_A8F8
jmp loc_A97F jmp loc_A97F
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -1628,14 +1628,14 @@ loc_A970:
mov byte_D792, 0 mov byte_D792, 0
loc_A97F: loc_A97F:
test byte ptr word_F3C8, 40h test byte ptr _input, INPUT_CANCEL
jz short loc_A995 jz short loc_A995
mov byte_D6C0, 3 mov byte_D6C0, 3
mov byte_D6C1, 0 mov byte_D6C1, 0
mov byte_D792, 0 mov byte_D792, 0
loc_A995: loc_A995:
cmp word_F3C8, 0 cmp _input, 0
jz short loc_A9A1 jz short loc_A9A1
mov byte_D791, 0 mov byte_D791, 0
@ -1731,7 +1731,7 @@ loc_AA35:
out dx, al out dx, al
loc_AA4A: loc_AA4A:
mov word_F3C8, 0 mov _input, 0
mov al, snd_bgm_mode mov al, snd_bgm_mode
mov snd_active, al mov snd_active, al
les bx, dword_F3DC les bx, dword_F3DC
@ -1753,13 +1753,13 @@ loc_AA8F:
call _pi_slot_load stdcall, 2, offset aTs3_pi, ds call _pi_slot_load stdcall, 2, offset aTs3_pi, ds
call _pi_slot_load stdcall, 1, offset aTs2_pi, ds call _pi_slot_load stdcall, 1, offset aTs2_pi, ds
add sp, 0Ch add sp, 0Ch
mov word_F3C8, 0 mov _input, 0
mov word_E8FC, 0 mov word_E8FC, 0
jmp short loc_AAF0 jmp short loc_AAF0
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_AABA: loc_AABA:
call sub_AED0 call _input_sense
cmp byte_D6C1, 0 cmp byte_D6C1, 0
jnz short loc_AACC jnz short loc_AACC
call sub_A2FB call sub_A2FB
@ -2251,144 +2251,7 @@ loc_AEAE:
sub_AE00 endp sub_AE00 endp
include th02/frame_delay_.asm include th02/frame_delay_.asm
include th02/hardware/input_sense.asm
; =============== S U B R O U T I N E =======================================
sub_AED0 proc far
mov word_F3C8, 0
mov al, 7
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
mov bh, ah
mov al, 8
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test bh, 4
jnz short loc_AEEE
test ah, 8
jz short loc_AEF3
loc_AEEE:
or word_F3C8, 1
loc_AEF3:
test bh, 8
jnz short loc_AEFD
test ah, 40h
jz short loc_AF02
loc_AEFD:
or word_F3C8, 4
loc_AF02:
test ah, 4
jz short loc_AF0D
or word_F3C8, 1000h
loc_AF0D:
test ah, 10h
jz short loc_AF18
or word_F3C8, 2000h
loc_AF18:
mov al, 9
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test bh, 20h
jnz short loc_AF28
test ah, 8
jz short loc_AF2D
loc_AF28:
or word_F3C8, 2
loc_AF2D:
test bh, 10h
jnz short loc_AF37
test ah, 1
jz short loc_AF3C
loc_AF37:
or word_F3C8, 8
loc_AF3C:
test ah, 4
jz short loc_AF47
or word_F3C8, 4000h
loc_AF47:
test ah, 10h
jz short loc_AF52
or word_F3C8, 8000h
loc_AF52:
mov al, 5
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 2
jz short loc_AF62
or word_F3C8, 10h
loc_AF62:
test ah, 4
jz short loc_AF6C
or word_F3C8, 20h
loc_AF6C:
mov al, 0
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 1
jz short loc_AF7C
or word_F3C8, 40h
loc_AF7C:
mov al, 3
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 10h
jz short loc_AF8D
or word_F3C8, 80h
loc_AF8D:
mov al, 2
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 1
jz short loc_AF9E
or word_F3C8, 100h
loc_AF9E:
mov al, 6
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 10h
jz short locret_AFAE
or word_F3C8, 10h
locret_AFAE:
retf
sub_AED0 endp
; ---------------------------------------------------------------------------
nop
; =============== S U B R O U T I N E ======================================= ; =============== S U B R O U T I N E =======================================
@ -3129,10 +2992,10 @@ loc_B7B7:
out dx, al out dx, al
loc_B808: loc_B808:
call sub_AED0 call _input_sense
or si, si or si, si
jnz short loc_B81D jnz short loc_B81D
cmp word_F3C8, 0 cmp _input, 0
jnz short loc_B81D jnz short loc_B81D
mov si, 1 mov si, 1
jmp short loc_B829 jmp short loc_B829
@ -3141,7 +3004,7 @@ loc_B808:
loc_B81D: loc_B81D:
cmp si, 1 cmp si, 1
jnz short loc_B829 jnz short loc_B829
cmp word_F3C8, 0 cmp _input, 0
jnz short loc_B84F jnz short loc_B84F
loc_B829: loc_B829:
@ -3161,7 +3024,7 @@ loc_B829:
jbe short loc_B808 jbe short loc_B808
loc_B84F: loc_B84F:
mov word_F3C8, 0 mov _input, 0
push 14h push 14h
call frame_delay call frame_delay
push 0 push 0
@ -3795,14 +3658,14 @@ var_6 = byte ptr -6
call sub_BBC0 call sub_BBC0
loc_BD54: loc_BD54:
call sub_AED0 call _input_sense
or si, si or si, si
jz short loc_BD60 jz short loc_BD60
jmp loc_BF95 jmp loc_BF95
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_BD60: loc_BD60:
test byte ptr word_F3C8, 4 test byte ptr _input, INPUT_LEFT
jnz short loc_BD6A jnz short loc_BD6A
jmp loc_BE6D jmp loc_BE6D
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -3914,7 +3777,7 @@ loc_BE0F:
add sp, 6 add sp, 6
loc_BE6D: loc_BE6D:
test byte ptr word_F3C8, 8 test byte ptr _input, INPUT_RIGHT
jnz short loc_BE77 jnz short loc_BE77
jmp loc_BF7A jmp loc_BF7A
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -4026,9 +3889,9 @@ loc_BF1C:
add sp, 6 add sp, 6
loc_BF7A: loc_BF7A:
test byte ptr word_F3C8, 10h test byte ptr _input, INPUT_SHOT
jnz short loc_BF88 jnz short loc_BF88
test byte ptr word_F3C8, 80h test byte ptr _input, INPUT_OK
jz short loc_BF95 jz short loc_BF95
loc_BF88: loc_BF88:
@ -4041,7 +3904,7 @@ loc_BF88:
loc_BF95: loc_BF95:
push 1 push 1
call frame_delay call frame_delay
mov si, word_F3C8 mov si, _input
or si, si or si, si
jz short loc_BFB2 jz short loc_BFB2
inc di inc di
@ -5068,16 +4931,16 @@ var_1 = byte ptr -1
call far ptr palette_show call far ptr palette_show
loc_C849: loc_C849:
call sub_AED0 call _input_sense
cmp word_F3C8, 0 cmp _input, 0
jz short loc_C85A jz short loc_C85A
call sub_C3AC call sub_C3AC
jmp short loc_C849 jmp short loc_C849
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_C85A: loc_C85A:
call sub_AED0 call _input_sense
test byte ptr word_F3C8, 1 test byte ptr _input, INPUT_UP
jz short loc_C895 jz short loc_C895
push word_F57C push word_F57C
push 3 push 3
@ -5102,7 +4965,7 @@ loc_C88C:
call sub_BFF5 call sub_BFF5
loc_C895: loc_C895:
test byte ptr word_F3C8, 2 test byte ptr _input, INPUT_DOWN
jz short loc_C8CB jz short loc_C8CB
push word_F57C push word_F57C
push 3 push 3
@ -5127,9 +4990,9 @@ loc_C8C2:
call sub_BFF5 call sub_BFF5
loc_C8CB: loc_C8CB:
test byte ptr word_F3C8, 10h test byte ptr _input, INPUT_SHOT
jnz short loc_C8D9 jnz short loc_C8D9
test byte ptr word_F3C8, 80h test byte ptr _input, INPUT_OK
jz short loc_C950 jz short loc_C950
loc_C8D9: loc_C8D9:
@ -5176,9 +5039,9 @@ loc_C8E3:
call sub_C726 call sub_C726
loc_C950: loc_C950:
test byte ptr word_F3C8, 40h test byte ptr _input, INPUT_CANCEL
jnz short loc_C967 jnz short loc_C967
cmp word_F3C8, 0 cmp _input, 0
jz short loc_C961 jz short loc_C961
jmp loc_C849 jmp loc_C849
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -5189,8 +5052,8 @@ loc_C961:
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_C967: loc_C967:
call sub_AED0 call _input_sense
cmp word_F3C8, 0 cmp _input, 0
jz short loc_C978 jz short loc_C978
call sub_C3AC call sub_C3AC
jmp short loc_C967 jmp short loc_C967
@ -5473,7 +5336,7 @@ include libs/master.lib/super_put_rect[bss].asm
include th01/hardware/vram_planes[bss].asm include th01/hardware/vram_planes[bss].asm
include th02/formats/pi_slots[bss].asm include th02/formats/pi_slots[bss].asm
include libs/master.lib/pfint21[bss].asm include libs/master.lib/pfint21[bss].asm
word_F3C8 dw ? include th02/hardware/input_sense[bss].asm
include th02/hardware/snd[bss].asm include th02/hardware/snd[bss].asm
include th02/hardware/snd_load[bss].asm include th02/hardware/snd_load[bss].asm
dword_F3DC dd ? dword_F3DC dd ?