ReC98/th03_mainl.asm

6045 lines
115 KiB
NASM
Raw Normal View History

2014-07-01 18:30:39 +00:00
;
; +-------------------------------------------------------------------------+
; | This file has been generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> |
; +-------------------------------------------------------------------------+
;
; Input MD5 : CE44AA7A114237C6B3CD67EEA9C0225A
; File Name : th03/MAINL.EXE
; Format : MS-DOS executable (EXE)
; Base Address: 0h Range: 0h-10CF0h Loaded length: F72Ch
; Entry Point : 0:0
; OS type : MS DOS
; Application type: Executable 16bit
.286 ; Force the .model directive to create 16-bit default segments...
2014-07-01 18:30:39 +00:00
.model large
.386 ; ... then switch to what we actually need.
; And yes, we can't move this to an include file for some reason.
2014-07-01 18:30:39 +00:00
include ReC98.inc
include th03/th03.inc
extern SCOPY@:proc
extern __mbcjmstojis:proc
extern __mbctype:byte
extern __ctype:byte
extern _execl:proc
extern _memcpy:proc
extern _tolower:proc
2014-07-01 18:30:39 +00:00
; ===========================================================================
; Segment type: Pure code
_TEXT segment word public 'CODE' use16
assume cs:_TEXT
assume es:nothing, ds:_DATA, fs:nothing, gs:nothing
2014-07-01 18:30:39 +00:00
2014-08-23 09:51:14 +00:00
include libs/master.lib/bfnt_entry_pat.asm
include libs/master.lib/bfnt_extend_header_skip.asm
2014-08-23 10:08:48 +00:00
include libs/master.lib/bfnt_header_read.asm
include libs/master.lib/bfnt_header_analysis.asm
2014-08-26 18:54:57 +00:00
include libs/master.lib/bcloser.asm
include libs/master.lib/bfill.asm
2014-08-23 14:56:01 +00:00
include libs/master.lib/bfnt_palette_set.asm
2014-08-26 19:23:54 +00:00
include libs/master.lib/bgetc.asm
2014-08-26 22:21:45 +00:00
include libs/master.lib/palette_black_in.asm
2014-08-26 22:33:43 +00:00
include libs/master.lib/palette_black_out.asm
include libs/master.lib/bopenr.asm
include libs/master.lib/bread.asm
include libs/master.lib/bseek.asm
include libs/master.lib/bseek_.asm
2014-08-23 01:03:17 +00:00
include libs/master.lib/dos_axdx.asm
2014-08-28 03:13:35 +00:00
include libs/master.lib/dos_filesize.asm
2014-08-23 01:02:18 +00:00
include libs/master.lib/dos_keyclear.asm
2014-08-22 23:38:22 +00:00
include libs/master.lib/dos_setvect.asm
include libs/master.lib/egc.asm
2014-08-30 05:58:36 +00:00
include libs/master.lib/file_append.asm
include libs/master.lib/file_close.asm
2014-08-30 06:32:10 +00:00
include libs/master.lib/file_create.asm
2014-08-30 06:46:38 +00:00
include libs/master.lib/file_exist.asm
2014-08-30 07:00:31 +00:00
include libs/master.lib/file_read.asm
2014-08-30 07:12:17 +00:00
include libs/master.lib/file_ropen.asm
include libs/master.lib/file_seek.asm
2014-08-30 08:06:10 +00:00
include libs/master.lib/file_size.asm
2014-08-30 07:38:09 +00:00
include libs/master.lib/file_write.asm
2014-08-22 22:46:33 +00:00
include libs/master.lib/dos_close.asm
include libs/master.lib/dos_ropen.asm
2014-08-28 03:31:57 +00:00
include libs/master.lib/grcg_boxfill.asm
2014-08-27 21:20:37 +00:00
include libs/master.lib/grcg_byteboxfill_x.asm
include libs/master.lib/grcg_setcolor.asm
2014-08-30 12:15:00 +00:00
include libs/master.lib/gdc_outpw.asm
2014-07-01 18:30:39 +00:00
db 0
include libs/master.lib/gaiji_backup.asm
2014-08-31 08:08:09 +00:00
include libs/master.lib/gaiji_entry_bfnt.asm
include libs/master.lib/gaiji_read.asm
include libs/master.lib/gaiji_write.asm
2014-08-27 22:58:40 +00:00
include libs/master.lib/graph_400line.asm
2014-08-27 04:03:08 +00:00
include libs/master.lib/graph_clear.asm
2014-08-27 04:13:48 +00:00
include libs/master.lib/graph_copy_page.asm
2014-08-15 14:11:51 +00:00
include libs/master.lib/graph_extmode.asm
include libs/master.lib/graph_gaiji_putc.asm
include libs/master.lib/graph_pi_free.asm
include libs/master.lib/graph_pi_load_pack.asm
2014-08-31 05:26:45 +00:00
include libs/master.lib/graph_pack_put_8.asm
2014-08-31 04:43:32 +00:00
include libs/master.lib/graph_scrollup.asm
include libs/master.lib/graph_show.asm
2014-08-30 11:44:36 +00:00
include libs/master.lib/iatan2.asm
2014-08-23 11:46:31 +00:00
include libs/master.lib/js_end.asm
2014-08-23 14:11:16 +00:00
include libs/master.lib/palette_show.asm
2014-08-27 01:11:13 +00:00
include libs/master.lib/pfclose.asm
2014-09-07 13:07:36 +00:00
include libs/master.lib/pfgetc.asm
2014-08-30 10:50:48 +00:00
include libs/master.lib/pfread.asm
include libs/master.lib/pfrewind.asm
2014-08-30 10:26:02 +00:00
include libs/master.lib/pfseek.asm
2014-08-30 10:13:04 +00:00
include libs/master.lib/random.asm
2014-08-31 03:14:54 +00:00
include libs/master.lib/palette_entry_rgb.asm
include libs/master.lib/rottbl.asm
include libs/master.lib/smem_release.asm
2014-08-21 23:04:46 +00:00
include libs/master.lib/smem_wget.asm
2014-08-31 04:27:47 +00:00
include libs/master.lib/soundio.asm
include libs/master.lib/text_clear.asm
2014-08-26 20:02:09 +00:00
include libs/master.lib/text_fillca.asm
include libs/master.lib/vsync.asm
2014-08-26 22:11:29 +00:00
include libs/master.lib/vsync_wait.asm
include libs/master.lib/palette_white_in.asm
2014-08-26 22:57:45 +00:00
include libs/master.lib/palette_white_out.asm
2014-08-21 23:19:52 +00:00
include libs/master.lib/hmem_lallocate.asm
include libs/master.lib/mem_assign_dos.asm
include libs/master.lib/mem_assign.asm
include libs/master.lib/memheap.asm
include libs/master.lib/mem_unassign.asm
include libs/master.lib/super_free.asm
include libs/master.lib/super_entry_pat.asm
2014-08-22 21:56:33 +00:00
include libs/master.lib/super_entry_at.asm
include libs/master.lib/super_entry_bfnt.asm
2014-08-22 21:33:18 +00:00
include libs/master.lib/super_cancel_pat.asm
include libs/master.lib/super_put.asm
include libs/master.lib/respal_exist.asm
2014-09-03 14:08:44 +00:00
include libs/master.lib/respal_set_palettes.asm
include libs/master.lib/pfint21.asm
2014-07-01 18:30:39 +00:00
db 0
include libs/master.lib/js_start.asm
include libs/master.lib/js_sense.asm
2014-07-01 18:30:39 +00:00
db 0
include th03/formats/pfopen.asm
include libs/master.lib/pf_str_ieq.asm
include libs/master.lib/graph_pack_put_8_noclip.asm
_TEXT ends
2014-07-01 18:30:39 +00:00
; ===========================================================================
; Segment type: Pure code
mainl_01_TEXT segment byte public 'CODE' use16
assume cs:mainl_01_TEXT
2014-07-01 18:30:39 +00:00
;org 3
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
2014-07-01 18:30:39 +00:00
include th03/formats/cfg_lres.asm
2014-07-01 18:30:39 +00:00
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9624 proc near
2014-07-01 18:30:39 +00:00
var_2 = byte ptr -2
var_1 = byte ptr -1
enter 2, 0
push ds
push offset aLogo0_rgb ; "logo0.rgb"
2014-08-31 03:14:54 +00:00
call palette_entry_rgb
2014-08-23 14:11:16 +00:00
call far ptr palette_show
call cdg_load_all_noalpha pascal, 0, ds, offset aLogo_cd2
call cdg_load_single pascal, 5, ds, offset aLogo5_cdg, 0
les bx, _resident
cmp es:[bx+resident_t.pid_winner], 0
2014-07-01 18:30:39 +00:00
jnz short loc_965E
mov al, _playchar_filename_id[0]
2014-07-01 18:30:39 +00:00
jmp short loc_9661
; ---------------------------------------------------------------------------
loc_965E:
mov al, _playchar_filename_id[1]
2014-07-01 18:30:39 +00:00
loc_9661:
2014-07-01 18:30:39 +00:00
mov [bp+var_1], al
les bx, _resident
cmp es:[bx+resident_t.pid_winner], 0
2014-07-01 18:30:39 +00:00
jnz short loc_969A
cmp es:[bx+resident_t.story_stage], 6
2014-07-01 18:30:39 +00:00
jnz short loc_967C
mov [bp+var_2], 9
jmp short loc_96B7
; ---------------------------------------------------------------------------
loc_967C:
les bx, _resident
cmp es:[bx+resident_t.story_stage], 7
2014-07-01 18:30:39 +00:00
jnz short loc_968D
mov [bp+var_2], 0Ah
jmp short loc_96B7
; ---------------------------------------------------------------------------
loc_968D:
les bx, _resident
cmp es:[bx+resident_t.pid_winner], 0
2014-07-01 18:30:39 +00:00
jnz short loc_96AA
jmp short loc_96A5
; ---------------------------------------------------------------------------
loc_969A:
les bx, _resident
cmp es:[bx+resident_t.pid_winner], 0
2014-07-01 18:30:39 +00:00
jnz short loc_96AA
loc_96A5:
mov al, _playchar_filename_id[1]
2014-07-01 18:30:39 +00:00
jmp short loc_96AD
; ---------------------------------------------------------------------------
loc_96AA:
mov al, _playchar_filename_id[0]
2014-07-01 18:30:39 +00:00
loc_96AD:
2014-07-01 18:30:39 +00:00
mov ah, 0
cwd
sub ax, dx
sar ax, 1
mov [bp+var_2], al
loc_96B7:
2014-07-01 18:30:39 +00:00
push 6
push ds
mov al, [bp+var_1]
mov ah, 0
cwd
sub ax, dx
mov bx, ax
sar bx, 1
add bx, bx
push word ptr [bx+90h]
mov al, [bp+var_1]
mov ah, 0
and ax, 1
push ax
call cdg_load_single_noalpha
2014-07-01 18:30:39 +00:00
mov al, [bp+var_1]
mov ah, 0
cwd
sub ax, dx
mov bx, ax
sar bx, 1
shl bx, 2
pushd dword ptr [bx+0A2h]
2014-08-30 07:12:17 +00:00
call file_ropen
2014-07-01 18:30:39 +00:00
mov al, [bp+var_2]
mov ah, 0
imul ax, 0B4h
cwde
push eax
push 0
call file_seek
2014-07-01 18:30:39 +00:00
push ds
push offset unk_F72C
push 3Ch ; '<'
2014-08-30 07:00:31 +00:00
call file_read
2014-07-01 18:30:39 +00:00
mov byte_F768, 0
push ds
push offset unk_F769
push 3Ch ; '<'
2014-08-30 07:00:31 +00:00
call file_read
2014-07-01 18:30:39 +00:00
mov byte_F7A5, 0
push ds
push offset unk_F7A6
push 3Ch ; '<'
2014-08-30 07:00:31 +00:00
call file_read
2014-07-01 18:30:39 +00:00
mov byte_F7E2, 0
call file_close
2014-07-01 18:30:39 +00:00
leave
retn
sub_9624 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_973E proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
call graph_putsa_fx pascal, (80 shl 16) or 272, 2Fh, ds, offset unk_F72C
call graph_putsa_fx pascal, (80 shl 16) or 288, 2Fh, ds, offset unk_F769
call graph_putsa_fx pascal, (80 shl 16) or 304, 2Fh, ds, offset unk_F7A6
2014-07-01 18:30:39 +00:00
pop bp
retn
sub_973E endp
include th03/formats/cdg_free_all.asm
2014-07-01 18:30:39 +00:00
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_978D proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
push si
graph_accesspage 1
2014-08-27 04:03:08 +00:00
call graph_clear
graph_accesspage 0
2014-08-27 04:03:08 +00:00
call graph_clear
graph_showpage 0
2014-08-23 13:47:05 +00:00
mov PaletteTone, 0
2014-08-23 14:11:16 +00:00
call far ptr palette_show
call graph_show
call cdg_put_noalpha_8 pascal, large (352 shl 16) or 300, 0
kajacall KAJA_SONG_PLAY
2014-07-01 18:30:39 +00:00
push 2
2014-08-26 22:21:45 +00:00
call palette_black_in
push 60010h
call snd_delay_until_measure
2014-07-01 18:30:39 +00:00
mov si, 1
jmp short loc_97FC
; ---------------------------------------------------------------------------
loc_97E8:
call cdg_put_noalpha_8 pascal, large (352 shl 16) or 300, si
2014-07-01 18:30:39 +00:00
push 6
2014-11-23 21:25:22 +00:00
call frame_delay
2014-07-01 18:30:39 +00:00
inc si
loc_97FC:
2014-07-01 18:30:39 +00:00
cmp si, 5
jl short loc_97E8
push 0A0040h
call snd_delay_until_measure
mov PaletteTone, 200
2014-08-23 14:11:16 +00:00
call far ptr palette_show
call cdg_put_noalpha_8 pascal, large (224 shl 16) or 64, 6
call cdg_put_noalpha_8 pascal, large (352 shl 16) or 300, 5
2014-07-01 18:30:39 +00:00
push ds
push offset aLogo1_rgb ; "logo1.rgb"
2014-08-31 03:14:54 +00:00
call palette_entry_rgb
2014-08-23 14:11:16 +00:00
call far ptr palette_show
call cdg_free_all
push 0B0004h
call snd_delay_until_measure
2014-07-01 18:30:39 +00:00
push 1
call palette_white_in
2014-07-01 18:30:39 +00:00
push 8
2014-11-23 21:25:22 +00:00
call frame_delay
2014-07-01 18:30:39 +00:00
call sub_973E
call sub_9887
or ax, ax
jnz short loc_9868
call sub_990C
loc_9868:
call input_mode_interface
cmp _input_sp, INPUT_NONE
2014-07-01 18:30:39 +00:00
jnz short loc_987D
push 1
2014-11-23 21:25:22 +00:00
call frame_delay
2014-07-01 18:30:39 +00:00
jmp short loc_9868
; ---------------------------------------------------------------------------
loc_987D:
2014-07-01 18:30:39 +00:00
push 1
2014-08-26 22:33:43 +00:00
call palette_black_out
2014-07-01 18:30:39 +00:00
pop si
pop bp
retn
sub_978D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9887 proc near
2014-07-01 18:30:39 +00:00
var_2 = word ptr -2
enter 2, 0
les bx, _resident
cmp es:[bx+resident_t.game_mode], GM_STORY
2014-07-01 18:30:39 +00:00
jnz short loc_98A1
les bx, _resident
cmp es:[bx+resident_t.pid_winner], 0
2014-07-01 18:30:39 +00:00
jz short loc_98A6
loc_98A1:
2014-07-01 18:30:39 +00:00
mov ax, 1
leave
retn
; ---------------------------------------------------------------------------
loc_98A6:
les bx, _resident
mov al, es:[bx+resident_t.story_stage]
2014-07-01 18:30:39 +00:00
mov ah, 0
add bx, ax
mov al, es:[bx+resident_t.story_opponents]
mov bx, word ptr _resident
mov es:[bx+resident_t.RESIDENT_playchar_paletted][1], al
cmp es:[bx+resident_t.story_stage], 7
2014-07-01 18:30:39 +00:00
jnz short loc_98CA
mov ax, 3
leave
retn
; ---------------------------------------------------------------------------
loc_98CA:
les bx, _resident
cmp es:[bx+resident_t.story_stage], 8
2014-07-01 18:30:39 +00:00
jnz short loc_98DA
mov ax, 4
leave
retn
; ---------------------------------------------------------------------------
loc_98DA:
les bx, _resident
cmp es:[bx+resident_t.story_stage], 9
2014-07-01 18:30:39 +00:00
jnz short loc_98EA
mov ax, 5
leave
retn
; ---------------------------------------------------------------------------
loc_98EA:
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
2014-07-01 18:30:39 +00:00
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
mov [bp+var_2], ax
cmp [bp+var_2], 7
jl short loc_9908
mov es:[bx+resident_t.RESIDENT_playchar_paletted][1], (1 + (PLAYCHAR_REIMU * 2))
2014-07-01 18:30:39 +00:00
loc_9908:
2014-07-01 18:30:39 +00:00
xor ax, ax
leave
retn
sub_9887 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_990C proc near
2014-07-01 18:30:39 +00:00
var_1 = byte ptr -1
enter 2, 0
graph_showpage 0
graph_accesspage 1
mov al, _playchar_filename_id[0]
2014-07-01 18:30:39 +00:00
mov [bp+var_1], al
push 0
push ds
mov ah, 0
cwd
sub ax, dx
mov bx, ax
sar bx, 1
add bx, bx
push word ptr [bx+90h]
mov al, [bp+var_1]
mov ah, 0
and ax, 1
push ax
call cdg_load_single
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
add al, -1
2014-07-01 18:30:39 +00:00
mov [bp+var_1], al
push 1
push ds
mov ah, 0
cwd
sub ax, dx
mov bx, ax
sar bx, 1
add bx, bx
push word ptr [bx+90h]
mov al, [bp+var_1]
mov ah, 0
and ax, 1
push ax
call cdg_load_single
2014-07-01 18:30:39 +00:00
mov al, [bp+var_1]
mov ah, 0
cwd
sub ax, dx
sar ax, 1
mov [bp+var_1], al
mov byte_F7E5, 1
les bx, _resident
cmp es:[bx+resident_t.game_mode], GM_STORY
2014-07-01 18:30:39 +00:00
jz short loc_9997
mov bx, word_E504
mov al, [bx+4]
add al, 4
jmp short loc_99CB
; ---------------------------------------------------------------------------
loc_9997:
2014-07-01 18:30:39 +00:00
cmp [bp+var_1], 7
jnz short loc_99A8
mov bx, word_E504
mov al, [bx+4]
add al, 2
jmp short loc_99CB
; ---------------------------------------------------------------------------
loc_99A8:
2014-07-01 18:30:39 +00:00
cmp [bp+var_1], 8
jnz short loc_99B7
mov bx, word_E504
inc byte ptr [bx+4]
jmp short loc_99F1
; ---------------------------------------------------------------------------
loc_99B7:
les bx, _resident
cmp es:[bx+resident_t.story_stage], 6
2014-07-01 18:30:39 +00:00
jnz short loc_99D4
mov bx, word_E504
mov al, [bx+4]
add al, 3
loc_99CB:
2014-07-01 18:30:39 +00:00
mov bx, word_E504
mov [bx+4], al
jmp short loc_99F1
; ---------------------------------------------------------------------------
loc_99D4:
2014-07-01 18:30:39 +00:00
push 2
push ds
push word_E502
les bx, _resident
mov al, es:[bx+resident_t.story_stage]
2014-07-01 18:30:39 +00:00
mov ah, 0
inc ax
push ax
call cdg_load_single
2014-07-01 18:30:39 +00:00
mov byte_F7E5, 0
loc_99F1:
call pi_load pascal, 0, ds, offset aStnx0_pi
call pi_put pascal, large 0, 0
freePISlotLarge 0
call pi_load pascal, 0, ds, word_E504
call pi_put pascal, large 0, 0
2014-07-01 18:30:39 +00:00
leave
retn
sub_990C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9A2C proc near
2014-07-01 18:30:39 +00:00
var_4 = word ptr -4
var_2 = word ptr -2
enter 4, 0
push si
mov si, 3A3h
mov [bp+var_2], 3AAh
2014-08-23 13:47:05 +00:00
mov PaletteTone, 0
2014-08-23 14:11:16 +00:00
call far ptr palette_show
call pi_palette_apply pascal, 0
call graph_copy_page pascal, 0
freePISlotLarge 0
call cdg_put_8 pascal, large (96 shl 16) or 96, 0
call cdg_put_hflip_8 pascal, large (352 shl 16) or 96, 1
2014-07-01 18:30:39 +00:00
cmp byte_F7E5, 0
jnz short loc_9A8E
call cdg_put_8 pascal, large (384 shl 16) or 46, 2
2014-07-01 18:30:39 +00:00
loc_9A8E:
call cdg_free pascal, 0
call cdg_free pascal, 1
call cdg_free pascal, 2
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
2014-07-01 18:30:39 +00:00
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
add ax, ax
mov [bp+var_4], ax
push (80 shl 16) or 292
push 2Fh
2014-07-01 18:30:39 +00:00
mov bx, [bp+var_4]
shl bx, 2
pushd CHAR_TITLE[bx]
call graph_putsa_fx
push (128 shl 16) or 308
push 2Fh
2014-07-01 18:30:39 +00:00
mov bx, [bp+var_4]
shl bx, 2
pushd CHAR_NAME[bx]
call graph_putsa_fx
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
2014-07-01 18:30:39 +00:00
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
add ax, ax
mov [bp+var_4], ax
push (336 shl 16) or 292
push 2Fh
2014-07-01 18:30:39 +00:00
mov bx, [bp+var_4]
shl bx, 2
pushd CHAR_TITLE[bx]
call graph_putsa_fx
push (384 shl 16) or 308
push 2Fh
2014-07-01 18:30:39 +00:00
mov bx, [bp+var_4]
shl bx, 2
pushd CHAR_NAME[bx]
call graph_putsa_fx
2014-07-01 18:30:39 +00:00
push 1
2014-08-26 22:21:45 +00:00
call palette_black_in
mov vsync_Count1, 0
graph_accesspage 1
2014-08-27 04:03:08 +00:00
call graph_clear
2014-07-01 18:30:39 +00:00
push 0
call sub_9D20
push 1
call sub_9D20
call pi_load pascal, 0, ds, offset aEn2_pi
call pi_put_interlace pascal, large 280, 0
freePISlotLarge 0
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
2014-07-01 18:30:39 +00:00
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
mov [bp+var_4], ax
mov bx, [bp+var_4]
cmp bx, 8
ja short loc_9BC2
add bx, bx
jmp cs:off_9C9F[bx]
loc_9B97:
2014-07-01 18:30:39 +00:00
push 0
push ds
push offset aEnemy00_pi ; "ENEMY00.pi"
jmp short loc_9BBD
; ---------------------------------------------------------------------------
loc_9B9F:
2014-07-01 18:30:39 +00:00
push 0
push ds
push offset aEnemy01_pi ; "ENEMY01.pi"
jmp short loc_9BBD
; ---------------------------------------------------------------------------
loc_9BA7:
2014-07-01 18:30:39 +00:00
push 0
push ds
push offset aEnemy02_pi ; "ENEMY02.pi"
jmp short loc_9BBD
; ---------------------------------------------------------------------------
loc_9BAF:
2014-07-01 18:30:39 +00:00
push 0
push ds
push offset aEnemy03_pi ; "ENEMY03.pi"
jmp short loc_9BBD
; ---------------------------------------------------------------------------
loc_9BB7:
2014-07-01 18:30:39 +00:00
push 0
push ds
push offset aEnemy04_pi ; "ENEMY04.pi"
loc_9BBD:
call pi_load
2014-07-01 18:30:39 +00:00
loc_9BC2:
call pi_put_interlace pascal, large 304, 0
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
2014-07-01 18:30:39 +00:00
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
mov [bp+var_4], ax
cmp [bp+var_4], 0Ah
jl short loc_9BFB
mov bx, 10
2014-07-01 18:30:39 +00:00
cwd
idiv bx
add al, [si]
mov [si], al
mov ax, [bp+var_4]
cwd
idiv bx
mov [bp+var_4], dx
loc_9BFB:
2014-07-01 18:30:39 +00:00
mov al, [si+1]
add al, byte ptr [bp+var_4]
mov [si+1], al
kajacall KAJA_SONG_STOP
les bx, _resident
cmp es:[bx+resident_t.story_stage], 6
2014-07-01 18:30:39 +00:00
jz short loc_9C1E
push SND_LOAD_SONG
2014-07-01 18:30:39 +00:00
push ds
push si
jmp short loc_9C25
; ---------------------------------------------------------------------------
loc_9C1E:
push SND_LOAD_SONG
2014-07-01 18:30:39 +00:00
push ds
push [bp+var_2]
loc_9C25:
call snd_load
2014-07-01 18:30:39 +00:00
add sp, 6
call snd_load c, offset aYume_efc, ds, SND_LOAD_SE
mov _input_sp, INPUT_NONE
2014-07-01 18:30:39 +00:00
loc_9C42:
cmp vsync_Count1, 20h ; ' '
2014-07-01 18:30:39 +00:00
jbe short loc_9C42
jmp short loc_9C50
; ---------------------------------------------------------------------------
loc_9C4B:
call input_mode_interface
2014-07-01 18:30:39 +00:00
loc_9C50:
cmp vsync_Count1, 60h
2014-07-01 18:30:39 +00:00
ja short loc_9C5E
cmp _input_sp, INPUT_NONE
2014-07-01 18:30:39 +00:00
jz short loc_9C4B
loc_9C5E:
2014-07-01 18:30:39 +00:00
push 1
2014-08-26 22:57:45 +00:00
call palette_white_out
graph_accesspage 0
2014-08-27 04:03:08 +00:00
call graph_clear
2014-07-01 18:30:39 +00:00
push 1
call palette_white_in
call text_fillca pascal, (' ' shl 16) + TX_BLACK + TX_REVERSE
call pi_palette_apply pascal, 0
freePISlotLarge 0
2014-09-03 14:08:44 +00:00
call respal_set_palettes
2014-07-01 18:30:39 +00:00
pop si
leave
retn
sub_9A2C endp
; ---------------------------------------------------------------------------
off_9C9F dw offset loc_9B97
2014-07-01 18:30:39 +00:00
dw offset loc_9B97
dw offset loc_9B9F
dw offset loc_9BA7
dw offset loc_9B9F
dw offset loc_9BA7
dw offset loc_9B97
dw offset loc_9BAF
dw offset loc_9BB7
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9CB1 proc near
2014-07-01 18:30:39 +00:00
arg_0 = dword ptr 4
arg_4 = word ptr 8
push bp
mov bp, sp
push si
mov si, [bp+arg_4]
call pi_load pascal, 0, large [bp+arg_0]
2014-07-01 18:30:39 +00:00
mov ax, si
imul ax, 320
call pi_put_interlace pascal, ax, (200 shl 16)
freePISlotLarge 0
2014-07-01 18:30:39 +00:00
les bx, [bp+arg_0]
mov byte ptr es:[bx+2], 'e'
mov byte ptr es:[bx+3], 'x'
call pi_load pascal, 0, word ptr [bp+arg_0+2], bx
2014-07-01 18:30:39 +00:00
mov ax, si
imul ax, 320
call pi_put_interlace pascal, ax, (208 shl 16)
freePISlotLarge 0
2014-07-01 18:30:39 +00:00
pop si
pop bp
retn 6
sub_9CB1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9D20 proc near
2014-07-01 18:30:39 +00:00
var_E = byte ptr -0Eh
var_D = byte ptr -0Dh
var_2 = word ptr -2
arg_0 = word ptr 4
enter 0Eh, 0
push si
push di
mov di, [bp+arg_0]
xor si, si
jmp short loc_9D35
; ---------------------------------------------------------------------------
loc_9D2D:
2014-07-01 18:30:39 +00:00
mov al, [si+116h]
mov [bp+si+var_E], al
inc si
loc_9D35:
2014-07-01 18:30:39 +00:00
cmp si, 0Ch
jl short loc_9D2D
les bx, _resident
2014-07-01 18:30:39 +00:00
add bx, di
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted]
2014-07-01 18:30:39 +00:00
mov ah, 0
dec ax
mov [bp+var_2], ax
cmp [bp+var_2], 10
2014-07-01 18:30:39 +00:00
jl short loc_9D65
mov bx, 10
2014-07-01 18:30:39 +00:00
cwd
idiv bx
add al, [bp+var_E]
mov [bp+var_E], al
mov ax, [bp+var_2]
cwd
idiv bx
mov [bp+var_2], dx
loc_9D65:
2014-07-01 18:30:39 +00:00
mov al, [bp+var_D]
add al, byte ptr [bp+var_2]
mov [bp+var_D], al
push di
push ss
lea ax, [bp+var_E]
push ax
call sub_9CB1
pop di
pop si
leave
retn 2
sub_9D20 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl main(int argc, const char **argv, const char **envp)
public _main
_main proc far
2014-07-01 18:30:39 +00:00
var_2 = byte ptr -2
var_1 = byte ptr -1
_argc = word ptr 6
_argv = dword ptr 8
_envp = dword ptr 0Ch
enter 2, 0
call cfg_load_resident
2014-07-01 18:30:39 +00:00
or ax, ax
jz @@ret
call game_init_main pascal, ds, offset aCOul
call respal_exist
mov _snd_midi_active, 0
les bx, _resident
cmp es:[bx+resident_t.bgm_mode], SND_BGM_OFF
2014-07-01 18:30:39 +00:00
jz short loc_9DAD
call _snd_determine_mode
2014-07-01 18:30:39 +00:00
loc_9DAD:
call gaiji_backup
2014-07-01 18:30:39 +00:00
push ds
push offset aMikoft_bft ; "MIKOFT.bft"
2014-08-31 08:08:09 +00:00
call gaiji_entry_bfnt
call snd_load c, offset aYume_efc, ds, SND_LOAD_SE
call _snd_se_reset
call _hflip_lut_generate
les bx, _resident
cmp es:[bx+resident_t.show_score_menu], 0
2014-07-01 18:30:39 +00:00
jz short loc_9E04
call sub_B7D2
2014-08-20 14:45:24 +00:00
call text_clear
call gaiji_restore
call _game_exit
pushd 0
2014-07-01 18:30:39 +00:00
push ds
push offset path ; "op"
push ds
push offset path ; "op"
call _execl
add sp, 0Ch
loc_9E04:
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
add al, -1
mov _playchar_filename_id[0], al
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
add al, -1
mov _playchar_filename_id[1], al
cmp es:[bx+resident_t.story_stage], 0
2014-07-01 18:30:39 +00:00
jz loc_9F85
cmp es:[bx+resident_t.game_mode], GM_STORY
2014-07-01 18:30:39 +00:00
jnz short loc_9E3F
call sub_9887
mov [bp+var_1], al
cmp [bp+var_1], 4
jz short loc_9E89
cmp [bp+var_1], 5
jnz short loc_9E3F
call sub_B972
loc_9E3F:
call snd_load c, offset aWin_m, ds, SND_LOAD_SONG
2014-07-01 18:30:39 +00:00
call sub_9624
call sub_978D
kajacall KAJA_SONG_STOP
les bx, _resident
cmp es:[bx+resident_t.game_mode], GM_STORY
2014-07-01 18:30:39 +00:00
jnz loc_9F58
call sub_9887
mov [bp+var_1], al
cmp [bp+var_1], 0
jnz short loc_9E7B
loc_9E75:
2014-07-01 18:30:39 +00:00
call sub_9A2C
jmp loc_9F1E
; ---------------------------------------------------------------------------
loc_9E7B:
2014-07-01 18:30:39 +00:00
cmp [bp+var_1], 3
jz short loc_9E89
cmp [bp+var_1], 4
jnz loc_9F38
loc_9E89:
call cdg_free_all
freePISlotLarge 0
mov al, _playchar_filename_id[0]
2014-07-01 18:30:39 +00:00
mov ah, 0
cwd
sub ax, dx
sar ax, 1
mov [bp+var_2], al
cmp [bp+var_2], 10
2014-07-01 18:30:39 +00:00
jb short loc_9EDC
les bx, off_E4B6
mov al, es:[bx+1]
mov dl, [bp+var_2]
mov dh, 0
mov bx, 10
2014-07-01 18:30:39 +00:00
push ax
mov ax, dx
cwd
idiv bx
pop dx
add dl, al
mov bx, word ptr off_E4B6
mov es:[bx+1], dl
mov al, [bp+var_2]
mov ah, 0
mov bx, 10
2014-07-01 18:30:39 +00:00
cwd
idiv bx
mov [bp+var_2], dl
loc_9EDC:
2014-07-01 18:30:39 +00:00
les bx, off_E4B6
mov al, [bp+var_2]
add es:[bx+2], al
cmp [bp+var_1], 4
jnz short loc_9EF1
inc byte ptr es:[bx+5]
loc_9EF1:
graph_accesspage 0
graph_showpage al
2014-08-27 04:03:08 +00:00
call graph_clear
call graph_show
pushd [off_E4B6]
2014-07-01 18:30:39 +00:00
call sub_A12E
call sub_AC6E
call sub_A174
call sub_990C
call sub_9A2C
call gaiji_restore
2014-07-01 18:30:39 +00:00
loc_9F1E:
2014-07-01 18:30:39 +00:00
call sub_D16F
pushd 0
2014-07-01 18:30:39 +00:00
push ds
push offset aMain ; "main"
push ds
push offset aMain ; "main"
loc_9F2E:
2014-07-01 18:30:39 +00:00
call _execl
add sp, 0Ch
leave
retf
; ---------------------------------------------------------------------------
loc_9F38:
call cdg_free_all
freePISlotLarge 0
2014-07-01 18:30:39 +00:00
call sub_B7D2
call sub_9F8D
or ax, ax
jnz short loc_9F85
call sub_B92E
jmp short loc_9F69
; ---------------------------------------------------------------------------
loc_9F58:
call cdg_free_all
freePISlotLarge 0
2014-07-01 18:30:39 +00:00
loc_9F69:
2014-08-20 14:45:24 +00:00
call text_clear
call gaiji_restore
call _game_exit
pushd 0
2014-07-01 18:30:39 +00:00
push ds
push offset path ; "op"
push ds
push offset path ; "op"
jmp short loc_9F2E
; ---------------------------------------------------------------------------
loc_9F85:
2014-07-01 18:30:39 +00:00
call sub_990C
jmp loc_9E75
; ---------------------------------------------------------------------------
@@ret:
2014-07-01 18:30:39 +00:00
leave
retf
_main endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9F8D proc near
2014-07-01 18:30:39 +00:00
var_6 = dword ptr -6
var_2 = word ptr -2
enter 6, 0
push si
push di
mov si, 1
mov [bp+var_2], 0
mov word ptr [bp+var_6+2], ds
mov word ptr [bp+var_6], offset a0
2014-07-01 18:30:39 +00:00
xor di, di
jmp short loc_9FB3
; ---------------------------------------------------------------------------
loc_9FA7:
les bx, _resident
2014-07-01 18:30:39 +00:00
add bx, di
mov es:[bx+resident_t.score_last], 0
2014-07-01 18:30:39 +00:00
inc di
loc_9FB3:
cmp di, (PLAYER_COUNT * SCORE_DIGITS)
2014-07-01 18:30:39 +00:00
jl short loc_9FA7
les bx, _resident
cmp es:[bx+resident_t.rem_credits], 0
2014-07-01 18:30:39 +00:00
jnz short loc_9FC8
xor ax, ax
jmp loc_A12A
; ---------------------------------------------------------------------------
loc_9FC8:
call cdg_put_noalpha_8 pascal, large (192 shl 16) or 272, 0
call cdg_put_noalpha_8 pascal, large (352 shl 16) or 272, 3
les bx, _resident
mov al, es:[bx+resident_t.rem_credits]
2014-07-01 18:30:39 +00:00
les bx, [bp+var_6]
add al, es:[bx]
mov es:[bx], al
call graph_putsa_fx pascal, (576 shl 16) or 371, 2Fh, word ptr [bp+var_6+2], bx
2014-07-01 18:30:39 +00:00
push 1
2014-08-26 22:21:45 +00:00
call palette_black_in
2014-07-01 18:30:39 +00:00
loc_A00B:
call input_mode_interface
test _input_sp.lo, low INPUT_LEFT
2014-07-01 18:30:39 +00:00
jnz short loc_A01E
test _input_sp.lo, low INPUT_RIGHT
2014-07-01 18:30:39 +00:00
jz short loc_A056
loc_A01E:
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 0
jnz short loc_A05B
mov ax, 1
sub ax, si
mov si, ax
push (192 shl 16) or 272
2014-07-01 18:30:39 +00:00
add ax, ax
mov dx, 2
sub dx, ax
push dx
call cdg_put_noalpha_8
push (352 shl 16) or 272
2014-07-01 18:30:39 +00:00
mov ax, si
add ax, ax
inc ax
push ax
call cdg_put_noalpha_8
2014-07-01 18:30:39 +00:00
mov [bp+var_2], 1
jmp short loc_A05B
; ---------------------------------------------------------------------------
loc_A056:
2014-07-01 18:30:39 +00:00
mov [bp+var_2], 0
loc_A05B:
test _input_sp.hi, high INPUT_OK
2014-07-01 18:30:39 +00:00
jnz short loc_A069
test _input_sp.lo, low INPUT_SHOT
2014-07-01 18:30:39 +00:00
jz short loc_A0B0
loc_A069:
2014-07-01 18:30:39 +00:00
cmp si, 1
jnz short loc_A0C5
2015-01-12 21:48:13 +00:00
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_boxfill pascal, (576 shl 16) or 371, (592 shl 16) or 387
call grcg_off
les bx, _resident
dec es:[bx+resident_t.rem_credits]
2014-07-01 18:30:39 +00:00
les bx, [bp+var_6]
dec byte ptr es:[bx]
call graph_putsa_fx pascal, (576 shl 16) or 371, 2Fh, word ptr [bp+var_6+2], bx
2014-07-01 18:30:39 +00:00
jmp short loc_A0C5
; ---------------------------------------------------------------------------
loc_A0B0:
test _input_sp.hi, high INPUT_CANCEL
2014-07-01 18:30:39 +00:00
jz short loc_A0BB
xor si, si
jmp short loc_A0C5
; ---------------------------------------------------------------------------
loc_A0BB:
2014-07-01 18:30:39 +00:00
push 1
2014-11-23 21:25:22 +00:00
call frame_delay
2014-07-01 18:30:39 +00:00
jmp loc_A00B
; ---------------------------------------------------------------------------
loc_A0C5:
kajacall KAJA_SONG_FADE, 3
2014-07-01 18:30:39 +00:00
push 1
2014-08-26 22:33:43 +00:00
call palette_black_out
graph_accesspage 0
graph_showpage al
2014-08-23 13:47:05 +00:00
mov PaletteTone, 0
2014-08-23 14:11:16 +00:00
call far ptr palette_show
call pi_load pascal, 0, ds, offset aOver_pi
call pi_palette_apply pascal, 0
call pi_put pascal, large 0, 0
freePISlotLarge 0
kajacall KAJA_SONG_STOP
les bx, _resident
dec es:[bx+resident_t.story_stage]
mov es:[bx+resident_t.story_lives], CREDIT_LIVES
2014-07-01 18:30:39 +00:00
mov ax, si
loc_A12A:
2014-07-01 18:30:39 +00:00
pop di
pop si
leave
retn
sub_9F8D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A12E proc near
2014-07-01 18:30:39 +00:00
arg_0 = dword ptr 4
push bp
mov bp, sp
push si
call sub_A174
pushd [bp+arg_0]
2014-08-30 07:12:17 +00:00
call file_ropen
2014-07-01 18:30:39 +00:00
or ax, ax
jnz short loc_A147
mov ax, 1
jmp short loc_A16F
; ---------------------------------------------------------------------------
loc_A147:
2014-08-30 08:06:10 +00:00
call file_size
2014-07-01 18:30:39 +00:00
mov si, ax
push ax
call hmem_allocbyte
mov word ptr _cutscene_script+2, ax
mov word ptr _cutscene_script, 0
2014-07-01 18:30:39 +00:00
push ax
push word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
push si
2014-08-30 07:00:31 +00:00
call file_read
call file_close
2014-07-01 18:30:39 +00:00
xor ax, ax
loc_A16F:
2014-07-01 18:30:39 +00:00
pop si
pop bp
retn 4
sub_A12E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A174 proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
cmp _cutscene_script, 0
2014-07-01 18:30:39 +00:00
jz short loc_A191
push word ptr _cutscene_script+2
call hmem_free
mov _cutscene_script, 0
2014-07-01 18:30:39 +00:00
loc_A191:
2014-07-01 18:30:39 +00:00
pop bp
retn
sub_A174 endp
EGC_START_COPY_DEF 1, near
2014-07-01 18:30:39 +00:00
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A1C7 proc near
2014-07-01 18:30:39 +00:00
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = word ptr 4
arg_2 = word ptr 6
enter 4, 0
push si
push di
mov ax, [bp+arg_2]
sar ax, 3
mov dx, [bp+arg_0]
shl dx, 6
add ax, dx
mov dx, [bp+arg_0]
shl dx, 4
add ax, dx
mov si, ax
call egc_start_copy_1
2014-07-01 18:30:39 +00:00
xor di, di
jmp short loc_A225
; ---------------------------------------------------------------------------
loc_A1EC:
2014-07-01 18:30:39 +00:00
mov [bp+var_2], 0
jmp short loc_A21B
; ---------------------------------------------------------------------------
loc_A1F3:
graph_accesspage 0
les bx, _VRAM_PLANE_B
2014-07-01 18:30:39 +00:00
add bx, si
mov ax, es:[bx]
mov [bp+var_4], ax
mov al, 1
out dx, al
mov bx, word ptr _VRAM_PLANE_B
2014-07-01 18:30:39 +00:00
add bx, si
mov ax, [bp+var_4]
mov es:[bx], ax
add [bp+var_2], 2
add si, 2
loc_A21B:
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 28h ; '('
jl short loc_A1F3
inc di
add si, 28h ; '('
loc_A225:
cmp di, 0C8h
2014-07-01 18:30:39 +00:00
jl short loc_A1EC
call egc_off
graph_accesspage 0
2014-07-01 18:30:39 +00:00
pop di
pop si
leave
retn 4
sub_A1C7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A23C proc near
2014-07-01 18:30:39 +00:00
var_8 = dword ptr -8
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
arg_6 = word ptr 0Ah
enter 8, 0
push si
push di
mov eax, _pi_buffers
2014-07-01 18:30:39 +00:00
mov [bp+var_8], eax
cmp [bp+arg_2], 1
jnz short loc_A257
add word ptr [bp+var_8], 0A0h
2014-07-01 18:30:39 +00:00
jmp short loc_A26F
; ---------------------------------------------------------------------------
loc_A257:
2014-07-01 18:30:39 +00:00
cmp [bp+arg_2], 2
jnz short loc_A264
add word ptr [bp+var_8], 0FA00h
jmp short loc_A26F
; ---------------------------------------------------------------------------
loc_A264:
2014-07-01 18:30:39 +00:00
cmp [bp+arg_2], 3
jnz short loc_A26F
add word ptr [bp+var_8], 0FAA0h
loc_A26F:
2014-07-01 18:30:39 +00:00
mov eax, [bp+var_8]
shr eax, 10h
mov dx, word ptr [bp+var_8]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_8]
and dx, 0Fh
mov word ptr [bp+var_8+2], ax
mov word ptr [bp+var_8], dx
graph_showpage 1
2014-07-01 18:30:39 +00:00
mov ax, [bp+arg_6]
sar ax, 3
mov dx, [bp+arg_4]
shl dx, 6
add ax, dx
mov dx, [bp+arg_4]
shl dx, 4
add ax, dx
mov si, ax
graph_accesspage 0
2014-07-01 18:30:39 +00:00
xor di, di
jmp loc_A34E
; ---------------------------------------------------------------------------
loc_A2B4:
call graph_pack_put_8_noclip pascal, large 400, [bp+var_8], 320
call egc_start_copy_1
egc_selectpat
egc_setrop EGC_COMPAREREAD or EGC_WS_PATREG or EGC_RL_MEMREAD
outw2 EGC_BITLENGTHREG, 0Fh
2014-07-01 18:30:39 +00:00
mov bx, [bp+arg_0]
shl bx, 3
mov ax, di
and ax, 3
add ax, ax
add bx, ax
outw2 EGC_MASKREG, _PI_MASKS[bx]
2014-07-01 18:30:39 +00:00
mov [bp+var_4], 7D00h
mov [bp+var_2], 0
jmp short loc_A31E
; ---------------------------------------------------------------------------
loc_A301:
les bx, _VRAM_PLANE_B
2014-07-01 18:30:39 +00:00
add bx, [bp+var_4]
mov ax, es:[bx]
mov bx, word ptr _VRAM_PLANE_B
2014-07-01 18:30:39 +00:00
add bx, si
mov es:[bx], ax
inc [bp+var_2]
add si, 2
add [bp+var_4], 2
loc_A31E:
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 14h
jl short loc_A301
call egc_off
2014-07-01 18:30:39 +00:00
add si, 28h ; '('
add word ptr [bp+var_8], 140h
mov eax, [bp+var_8]
shr eax, 10h
mov dx, word ptr [bp+var_8]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_8]
and dx, 0Fh
mov word ptr [bp+var_8+2], ax
mov word ptr [bp+var_8], dx
inc di
loc_A34E:
cmp di, 0C8h
2014-07-01 18:30:39 +00:00
jl loc_A2B4
graph_showpage 0
2014-07-01 18:30:39 +00:00
push [bp+arg_6]
push [bp+arg_4]
call sub_A1C7
pop di
pop si
leave
retn 8
sub_A23C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A36B proc near
2014-07-01 18:30:39 +00:00
var_8 = word ptr -8
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
enter 8, 0
push si
push di
call sub_A43C
graph_accesspage 0
2014-07-01 18:30:39 +00:00
push 3C00h
call hmem_allocbyte
2014-07-01 18:30:39 +00:00
mov word ptr dword_105CA+2, ax
mov word ptr dword_105CA, 0
xor si, si
mov di, 140h
mov [bp+var_4], 0
jmp loc_A430
; ---------------------------------------------------------------------------
loc_A398:
2014-07-01 18:30:39 +00:00
mov [bp+var_2], 50h ; 'P'
mov [bp+var_6], 0
jmp loc_A424
; ---------------------------------------------------------------------------
loc_A3A5:
2014-07-01 18:30:39 +00:00
mov ax, [bp+var_2]
sar ax, 3
mov dx, di
shl dx, 6
add ax, dx
mov dx, di
shl dx, 4
add ax, dx
mov [bp+var_8], ax
les bx, _VRAM_PLANE_B
2014-07-01 18:30:39 +00:00
add bx, [bp+var_8]
mov ax, es:[bx]
mov dx, si
add dx, dx
les bx, dword_105CA
add bx, dx
mov es:[bx], ax
inc si
les bx, _VRAM_PLANE_R
2014-07-01 18:30:39 +00:00
add bx, [bp+var_8]
mov ax, es:[bx]
mov dx, si
add dx, dx
les bx, dword_105CA
add bx, dx
mov es:[bx], ax
inc si
les bx, _VRAM_PLANE_G
2014-07-01 18:30:39 +00:00
add bx, [bp+var_8]
mov ax, es:[bx]
mov dx, si
add dx, dx
les bx, dword_105CA
add bx, dx
mov es:[bx], ax
inc si
les bx, _VRAM_PLANE_E
2014-07-01 18:30:39 +00:00
add bx, [bp+var_8]
mov ax, es:[bx]
mov dx, si
add dx, dx
les bx, dword_105CA
add bx, dx
mov es:[bx], ax
inc si
add [bp+var_6], 2
add [bp+var_2], 10h
loc_A424:
2014-07-01 18:30:39 +00:00
cmp [bp+var_6], 3Ch ; '<'
jl loc_A3A5
inc [bp+var_4]
inc di
loc_A430:
cmp [bp+var_4], 40h
2014-07-01 18:30:39 +00:00
jl loc_A398
pop di
pop si
leave
retn
sub_A36B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A43C proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
cmp dword_105CA, 0
jz short loc_A459
push word ptr dword_105CA+2
call hmem_free
2014-07-01 18:30:39 +00:00
mov dword_105CA, 0
loc_A459:
2014-07-01 18:30:39 +00:00
pop bp
retn
sub_A43C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A45B proc near
2014-07-01 18:30:39 +00:00
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
enter 6, 0
push si
push di
xor cx, cx
mov si, 140h
mov [bp+var_4], 0
jmp loc_A4FE
; ---------------------------------------------------------------------------
loc_A46E:
2014-07-01 18:30:39 +00:00
mov [bp+var_2], 50h ; 'P'
mov [bp+var_6], 0
jmp short loc_A4F4
; ---------------------------------------------------------------------------
loc_A47A:
2014-07-01 18:30:39 +00:00
mov ax, [bp+var_2]
sar ax, 3
mov dx, si
shl dx, 6
add ax, dx
mov dx, si
shl dx, 4
add ax, dx
mov di, ax
mov ax, cx
add ax, ax
les bx, dword_105CA
add bx, ax
mov ax, es:[bx]
les bx, _VRAM_PLANE_B
2014-07-01 18:30:39 +00:00
add bx, di
mov es:[bx], ax
inc cx
mov ax, cx
add ax, ax
les bx, dword_105CA
add bx, ax
mov ax, es:[bx]
les bx, _VRAM_PLANE_R
2014-07-01 18:30:39 +00:00
add bx, di
mov es:[bx], ax
inc cx
mov ax, cx
add ax, ax
les bx, dword_105CA
add bx, ax
mov ax, es:[bx]
les bx, _VRAM_PLANE_G
2014-07-01 18:30:39 +00:00
add bx, di
mov es:[bx], ax
inc cx
mov ax, cx
add ax, ax
les bx, dword_105CA
add bx, ax
mov ax, es:[bx]
les bx, _VRAM_PLANE_E
2014-07-01 18:30:39 +00:00
add bx, di
mov es:[bx], ax
inc cx
add [bp+var_6], 2
add [bp+var_2], 10h
loc_A4F4:
2014-07-01 18:30:39 +00:00
cmp [bp+var_6], 3Ch ; '<'
jl short loc_A47A
inc [bp+var_4]
inc si
loc_A4FE:
cmp [bp+var_4], 40h
2014-07-01 18:30:39 +00:00
jl loc_A46E
pop di
pop si
leave
retn
sub_A45B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A50A proc near
2014-07-01 18:30:39 +00:00
var_2 = byte ptr -2
var_1 = byte ptr -1
arg_0 = dword ptr 4
enter 2, 0
les bx, _cutscene_script
2014-07-01 18:30:39 +00:00
mov cl, es:[bx]
inc word ptr _cutscene_script
les bx, _cutscene_script
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov [bp+var_1], al
inc word ptr _cutscene_script
les bx, _cutscene_script
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov [bp+var_2], al
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
mov al, cl
mov ah, 0
mov bx, ax
test (__ctype + 1)[bx], _IS_DIG
2014-07-01 18:30:39 +00:00
jnz short loc_A554
les bx, [bp+arg_0]
mov ax, word_105D8
mov es:[bx], ax
sub word ptr _cutscene_script, 3
2014-07-01 18:30:39 +00:00
leave
retn 4
; ---------------------------------------------------------------------------
loc_A554:
2014-07-01 18:30:39 +00:00
mov al, [bp+var_1]
mov ah, 0
mov bx, ax
test (__ctype + 1)[bx], _IS_DIG
2014-07-01 18:30:39 +00:00
jnz short loc_A578
mov al, cl
mov ah, 0
add ax, 0FFD0h
les bx, [bp+arg_0]
mov es:[bx], ax
sub word ptr _cutscene_script, 2
2014-07-01 18:30:39 +00:00
leave
retn 4
; ---------------------------------------------------------------------------
loc_A578:
2014-07-01 18:30:39 +00:00
mov al, [bp+var_2]
mov ah, 0
mov bx, ax
test (__ctype + 1)[bx], _IS_DIG
2014-07-01 18:30:39 +00:00
jnz short loc_A5A8
mov al, cl
mov ah, 0
add ax, 0FFD0h
imul ax, 0Ah
mov dl, [bp+var_1]
mov dh, 0
add ax, dx
add ax, 0FFD0h
les bx, [bp+arg_0]
mov es:[bx], ax
dec word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
leave
retn 4
; ---------------------------------------------------------------------------
loc_A5A8:
2014-07-01 18:30:39 +00:00
mov al, cl
mov ah, 0
add ax, 0FFD0h
imul ax, 64h
mov dl, [bp+var_1]
mov dh, 0
add dx, 0FFD0h
imul dx, 0Ah
add ax, dx
mov dl, [bp+var_2]
mov dh, 0
add ax, dx
add ax, 0FFD0h
les bx, [bp+arg_0]
mov es:[bx], ax
leave
retn 4
sub_A50A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A5D3 proc near
2014-07-01 18:30:39 +00:00
arg_0 = dword ptr 4
push bp
mov bp, sp
les bx, _cutscene_script
cmp byte ptr es:[bx], ','
2014-07-01 18:30:39 +00:00
jnz short loc_A5EF
inc word ptr _cutscene_script
pushd [bp+arg_0]
2014-07-01 18:30:39 +00:00
call sub_A50A
pop bp
retn 4
; ---------------------------------------------------------------------------
loc_A5EF:
2014-07-01 18:30:39 +00:00
les bx, [bp+arg_0]
mov ax, word_105D8
mov es:[bx], ax
pop bp
retn 4
sub_A5D3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A5FC proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
add point_105D0.x, 16
cmp point_105D0.x, 560
2014-07-01 18:30:39 +00:00
jl short loc_A64B
add point_105D0.y, 16
mov point_105D0.x, 144
cmp point_105D0.y, 384
2014-07-01 18:30:39 +00:00
jl short loc_A64B
cmp byte_105CE, 0
jnz short loc_A62D
call input_wait_for_change pascal, 0
2014-07-01 18:30:39 +00:00
loc_A62D:
mov point_105D0.x, 80
mov point_105D0.y, 320
graph_accesspage 1
2014-07-01 18:30:39 +00:00
call sub_A45B
graph_accesspage 0
2014-07-01 18:30:39 +00:00
call sub_A45B
loc_A64B:
2014-07-01 18:30:39 +00:00
pop bp
retn
sub_A5FC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A64D proc near
2014-07-01 18:30:39 +00:00
var_16 = byte ptr -16h
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = byte ptr 4
enter 16h, 0
push si
mov al, [bp+arg_0]
mov ah, 0
push ax ; ch
call _tolower
pop cx
mov [bp+arg_0], al
mov ah, 0
mov [bp+var_6], ax
mov cx, 10h ; switch 16 cases
mov bx, offset word_AC2E
loc_A66C:
2014-07-01 18:30:39 +00:00
mov ax, cs:[bx]
cmp ax, [bp+var_6]
jz short loc_A67C
add bx, 2
loop loc_A66C
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A67C:
2014-07-01 18:30:39 +00:00
jmp word ptr cs:[bx+20h] ; switch jump
loc_A680:
add point_105D0.y, 16 ; jumptable 0000A67C case 110
mov point_105D0.x, 80
cmp point_105D0.y, 384
2014-07-01 18:30:39 +00:00
jl loc_AC1E ; default
loc_A695:
les bx, _cutscene_script ; jumptable 0000A67C case 115
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov [bp+arg_0], al
cmp [bp+arg_0], '-'
2014-07-01 18:30:39 +00:00
jz short loc_A6C4
mov word_105D8, 0
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
cmp byte_105CE, 0
jnz short loc_A6C8
call input_wait_for_change pascal, [bp+var_2]
2014-07-01 18:30:39 +00:00
jmp short loc_A6C8
; ---------------------------------------------------------------------------
loc_A6C4:
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
loc_A6C8:
mov point_105D0.x, 80
mov point_105D0.y, 320
graph_accesspage 1
2014-07-01 18:30:39 +00:00
call sub_A45B
graph_accesspage 0
2014-07-01 18:30:39 +00:00
call sub_A45B
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A6E9:
2014-07-01 18:30:39 +00:00
mov word_105D8, 0Fh ; jumptable 0000A67C case 99
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
mov al, byte ptr [bp+var_2]
mov col_105D6, al
2014-07-01 18:30:39 +00:00
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A700:
2014-07-01 18:30:39 +00:00
mov word_105D8, 2 ; jumptable 0000A67C case 98
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
mov bx, [bp+var_2]
cmp bx, 3
ja loc_AC1E ; default
add bx, bx
jmp cs:off_AC26[bx]
loc_A71F:
2014-07-01 18:30:39 +00:00
mov byte_105D7, 0
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A727:
2014-07-01 18:30:39 +00:00
mov byte_105D7, 10h
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A72F:
2014-07-01 18:30:39 +00:00
mov byte_105D7, 20h ; ' '
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A737:
2014-07-01 18:30:39 +00:00
mov byte_105D7, 30h ; '0'
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A73F:
les bx, _cutscene_script ; jumptable 0000A67C case 119
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov ah, 0
push ax ; ch
call _tolower
pop cx
mov [bp+arg_0], al
cmp [bp+arg_0], 'o'
2014-07-01 18:30:39 +00:00
jz short loc_A75E
cmp [bp+arg_0], 'i'
2014-07-01 18:30:39 +00:00
jnz short loc_A78C
loc_A75E:
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
mov word_105D8, 1
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
cmp [bp+arg_0], 'i'
2014-07-01 18:30:39 +00:00
jnz short loc_A781
push [bp+var_2]
call palette_white_in
2014-07-01 18:30:39 +00:00
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A781:
2014-07-01 18:30:39 +00:00
push [bp+var_2]
2014-08-26 22:57:45 +00:00
call palette_white_out
2014-07-01 18:30:39 +00:00
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A78C:
mov word_105D8, 40h
cmp [bp+arg_0], 'm'
2014-07-01 18:30:39 +00:00
jz short loc_A7CF
cmp [bp+arg_0], 'k'
2014-07-01 18:30:39 +00:00
jnz short loc_A7A2
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
loc_A7A2:
2014-07-01 18:30:39 +00:00
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
cmp byte_105CE, 0
jnz loc_AC1E ; default
cmp [bp+arg_0], 'k'
2014-07-01 18:30:39 +00:00
jz short loc_A7C4
push [bp+var_2]
2014-11-23 21:25:22 +00:00
call frame_delay
2014-07-01 18:30:39 +00:00
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A7C4:
2014-07-01 18:30:39 +00:00
push [bp+var_2]
call input_wait_for_ok
2014-07-01 18:30:39 +00:00
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A7CF:
inc word ptr _cutscene_script
les bx, _cutscene_script
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov [bp+arg_0], al
cmp [bp+arg_0], 'k'
2014-07-01 18:30:39 +00:00
jnz short loc_A7E7
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
loc_A7E7:
2014-07-01 18:30:39 +00:00
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
push ss
lea ax, [bp+var_4]
push ax
call sub_A5D3
cmp byte_105CE, 0
jnz loc_AC1E ; default
cmp [bp+arg_0], 'k'
2014-07-01 18:30:39 +00:00
jz short loc_A814
push [bp+var_2]
push [bp+var_4]
call snd_delay_until_measure
2014-07-01 18:30:39 +00:00
jmp loc_AB63
; ---------------------------------------------------------------------------
loc_A814:
2014-07-01 18:30:39 +00:00
push [bp+var_2]
push [bp+var_4]
call input_wait_for_ok_or_measure
2014-07-01 18:30:39 +00:00
jmp loc_AB63
; ---------------------------------------------------------------------------
loc_A822:
les bx, _cutscene_script ; jumptable 0000A67C case 118
cmp byte ptr es:[bx], 'p'
2014-07-01 18:30:39 +00:00
jz short loc_A843
mov word_105D8, 1
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
mov ax, [bp+var_2]
mov word_105D4, ax
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A843:
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
mov word_105D8, 0
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
graph_showpage byte ptr [bp+var_2]
2014-07-01 18:30:39 +00:00
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A85F:
2014-07-01 18:30:39 +00:00
mov word_105D8, 64h ; 'd' ; jumptable 0000A67C case 116
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
cmp byte_105CE, 0
jnz short loc_A87B
push 1
2014-11-23 21:25:22 +00:00
call frame_delay
2014-07-01 18:30:39 +00:00
loc_A87B:
2014-07-01 18:30:39 +00:00
mov ax, [bp+var_2]
2014-08-23 13:47:05 +00:00
mov PaletteTone, ax
2014-08-23 14:11:16 +00:00
call far ptr palette_show
2014-07-01 18:30:39 +00:00
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A889:
les bx, _cutscene_script ; jumptable 0000A67C case 102
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov [bp+arg_0], al
cmp [bp+arg_0], 'm'
2014-07-01 18:30:39 +00:00
jz short loc_A8D5
cmp [bp+arg_0], 'i'
2014-07-01 18:30:39 +00:00
jz short loc_A8A7
cmp [bp+arg_0], 'o'
2014-07-01 18:30:39 +00:00
jnz loc_AC1E ; default
loc_A8A7:
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
mov word_105D8, 1
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
cmp [bp+arg_0], 'i'
2014-07-01 18:30:39 +00:00
jnz short loc_A8CA
push [bp+var_2]
2014-08-26 22:21:45 +00:00
call palette_black_in
2014-07-01 18:30:39 +00:00
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A8CA:
2014-07-01 18:30:39 +00:00
push [bp+var_2]
2014-08-26 22:33:43 +00:00
call palette_black_out
2014-07-01 18:30:39 +00:00
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A8D5:
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
mov word_105D8, 1
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
mov ax, [bp+var_2]
add ax, 200h
push ax
jmp loc_AB8B
; ---------------------------------------------------------------------------
loc_A8F1:
les bx, _cutscene_script ; jumptable 0000A67C case 103
cmp byte ptr es:[bx], 'a'
2014-07-01 18:30:39 +00:00
jz short loc_A945
mov word_105D8, 8
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
mov [bp+var_4], 0
jmp short loc_A933
; ---------------------------------------------------------------------------
loc_A910:
2014-07-01 18:30:39 +00:00
test byte ptr [bp+var_4], 1
jz short loc_A91A
push 4
jmp short loc_A91D
; ---------------------------------------------------------------------------
loc_A91A:
push RES_Y - 4
2014-07-01 18:30:39 +00:00
loc_A91D:
2014-08-31 04:43:32 +00:00
call graph_scrollup
2014-07-01 18:30:39 +00:00
cmp byte_105CE, 0
jnz short loc_A930
push 1
2014-11-23 21:25:22 +00:00
call frame_delay
2014-07-01 18:30:39 +00:00
loc_A930:
2014-07-01 18:30:39 +00:00
inc [bp+var_4]
loc_A933:
2014-07-01 18:30:39 +00:00
mov ax, [bp+var_4]
cmp ax, [bp+var_2]
jle short loc_A910
call graph_scrollup pascal, 0
2014-07-01 18:30:39 +00:00
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A945:
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
mov word_105D8, 0
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
graph_accesspage 1
push point_105D0.x
push point_105D0.y
2014-07-01 18:30:39 +00:00
mov ax, [bp+var_2]
dec ax
push ax
mov al, col_105D6
2014-07-01 18:30:39 +00:00
mov ah, 0
push ax
call graph_gaiji_putc
graph_accesspage 0
push point_105D0.x
push point_105D0.y
2014-07-01 18:30:39 +00:00
push [bp+var_2]
mov al, col_105D6
2014-07-01 18:30:39 +00:00
mov ah, 0
push ax
call graph_gaiji_putc
2014-07-01 18:30:39 +00:00
call sub_A5FC
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A997:
2014-07-01 18:30:39 +00:00
mov word_105D8, 0 ; jumptable 0000A67C case 107
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
cmp byte_105CE, 0
jnz loc_AC1E ; default
call input_wait_for_change pascal, 0
2014-07-01 18:30:39 +00:00
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A9B8:
graph_accesspage 1 ; jumptable 0000A67C case 64
2014-08-27 04:03:08 +00:00
call graph_clear
graph_accesspage 0
2014-08-27 04:03:08 +00:00
call graph_clear
2014-07-01 18:30:39 +00:00
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A9D1:
les bx, _cutscene_script ; jumptable 0000A67C case 112
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov [bp+arg_0], al
inc word ptr _cutscene_script
cmp [bp+arg_0], '='
2014-07-01 18:30:39 +00:00
jz short loc_A9EB
cmp [bp+arg_0], '@'
2014-07-01 18:30:39 +00:00
jnz short loc_AA1B
loc_A9EB:
graph_accesspage 1
cmp [bp+arg_0], '='
2014-07-01 18:30:39 +00:00
jnz short loc_A9FE
call pi_palette_apply pascal, 0
2014-07-01 18:30:39 +00:00
loc_A9FE:
call pi_put pascal, large 0, 0
call graph_copy_page pascal, 0
graph_accesspage 0
2014-07-01 18:30:39 +00:00
call sub_A36B
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AA1B:
cmp [bp+arg_0], '-'
2014-07-01 18:30:39 +00:00
jnz short loc_AA32
freePISlotLarge 0
2014-07-01 18:30:39 +00:00
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AA32:
cmp [bp+arg_0], 'p'
2014-07-01 18:30:39 +00:00
jnz short loc_AA42
call pi_palette_apply pascal, 0
2014-07-01 18:30:39 +00:00
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_AA42:
cmp [bp+arg_0], ','
2014-07-01 18:30:39 +00:00
jz short loc_AA4F
dec word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AA4F:
2014-07-01 18:30:39 +00:00
mov [bp+var_2], 0
jmp short loc_AA84
; ---------------------------------------------------------------------------
loc_AA56:
les bx, _cutscene_script
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov [bp+arg_0], al
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
mov ah, 0
mov bx, ax
test (__ctype + 1)[bx], _IS_CTL
2014-07-01 18:30:39 +00:00
jnz short loc_AA8A
cmp [bp+arg_0], ' '
2014-07-01 18:30:39 +00:00
jz short loc_AA8A
lea bx, [bp+var_16]
add bx, [bp+var_2]
mov al, [bp+arg_0]
mov ss:[bx], al
inc [bp+var_2]
loc_AA84:
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 0Ch
jl short loc_AA56
loc_AA8A:
2014-07-01 18:30:39 +00:00
lea bx, [bp+var_16]
add bx, [bp+var_2]
mov byte ptr ss:[bx], 0
push 0
push ss
lea ax, [bp+var_16]
push ax
call pi_load
2014-07-01 18:30:39 +00:00
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AAA3:
2014-07-01 18:30:39 +00:00
mov word_105D8, 4 ; jumptable 0000A67C case 61
les bx, _cutscene_script
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov [bp+arg_0], al
cmp [bp+arg_0], 3Dh ; '='
jz short loc_AAF8
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
graph_showpage 1
graph_accesspage 0
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 4
jge short loc_AAD5
jmp short loc_AB44
; ---------------------------------------------------------------------------
loc_AAD5:
2015-01-12 21:48:13 +00:00
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((160 / 8) shl 16) or 64, ((472 / 8) shl 16) or 263
call grcg_off
2014-07-01 18:30:39 +00:00
jmp short loc_AB54
; ---------------------------------------------------------------------------
loc_AAF8:
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
mov word_105D8, 1
push ss
lea ax, [bp+var_4]
push ax
call sub_A5D3
xor si, si
jmp short loc_AB33
; ---------------------------------------------------------------------------
loc_AB16:
push 0A00040h
2014-07-01 18:30:39 +00:00
push [bp+var_2]
push si
call sub_A23C
cmp byte_105CE, 0
jnz short loc_AB32
push [bp+var_4]
2014-11-23 21:25:22 +00:00
call frame_delay
2014-07-01 18:30:39 +00:00
loc_AB32:
2014-07-01 18:30:39 +00:00
inc si
loc_AB33:
2014-07-01 18:30:39 +00:00
cmp si, 4
jl short loc_AB16
graph_showpage 1
graph_accesspage 0
2014-07-01 18:30:39 +00:00
loc_AB44:
call pi_put_quarter pascal, (160 shl 16) + 64, 0, [bp+var_2]
2014-07-01 18:30:39 +00:00
loc_AB54:
graph_showpage 0
push 0A00040h
2014-07-01 18:30:39 +00:00
call sub_A1C7
loc_AB63:
2014-07-01 18:30:39 +00:00
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AB66:
les bx, _cutscene_script ; jumptable 0000A67C case 109
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov [bp+arg_0], al
cmp [bp+arg_0], 24h ; '$'
jnz short loc_AB7F
inc word ptr _cutscene_script
push (KAJA_SONG_STOP shl 8)
2014-07-01 18:30:39 +00:00
jmp short loc_AB8B
; ---------------------------------------------------------------------------
loc_AB7F:
2014-07-01 18:30:39 +00:00
cmp [bp+arg_0], 2Ah ; '*'
jnz short loc_AB93
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
loc_AB89:
push (KAJA_SONG_PLAY shl 8)
2014-07-01 18:30:39 +00:00
loc_AB8B:
call snd_kaja_interrupt
2014-07-01 18:30:39 +00:00
loc_AB90:
2014-07-01 18:30:39 +00:00
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AB93:
2014-07-01 18:30:39 +00:00
cmp [bp+arg_0], 2Ch ; ','
jnz loc_AC1E ; default
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
mov [bp+var_2], 0
jmp short loc_ABD4
; ---------------------------------------------------------------------------
loc_ABA6:
les bx, _cutscene_script
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov [bp+arg_0], al
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
mov ah, 0
mov bx, ax
test (__ctype + 1)[bx], _IS_CTL
2014-07-01 18:30:39 +00:00
jnz short loc_ABDA
cmp [bp+arg_0], 20h ; ' '
jz short loc_ABDA
lea bx, [bp+var_16]
add bx, [bp+var_2]
mov al, [bp+arg_0]
mov ss:[bx], al
inc [bp+var_2]
loc_ABD4:
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 0Ch
jl short loc_ABA6
loc_ABDA:
2014-07-01 18:30:39 +00:00
lea bx, [bp+var_16]
add bx, [bp+var_2]
mov byte ptr ss:[bx], 0
kajacall KAJA_SONG_STOP
push SND_LOAD_SONG
2014-07-01 18:30:39 +00:00
push ss
lea ax, [bp+var_16]
push ax
call snd_load
2014-07-01 18:30:39 +00:00
add sp, 6
jmp short loc_AB89
; ---------------------------------------------------------------------------
loc_ABFE:
2014-07-01 18:30:39 +00:00
push ss ; jumptable 0000A67C case 101
lea ax, [bp+var_2]
push ax
call sub_A50A
call _snd_se_reset
call snd_se_play pascal, [bp+var_2]
call _snd_se_update
2014-07-01 18:30:39 +00:00
jmp short loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AC1A:
mov al, -1 ; jumptable 0000A67C case 36
2014-07-01 18:30:39 +00:00
jmp short loc_AC20
; ---------------------------------------------------------------------------
loc_AC1E:
2014-07-01 18:30:39 +00:00
mov al, 0 ; default
loc_AC20:
2014-07-01 18:30:39 +00:00
pop si
leave
retn 2
sub_A64D endp
; ---------------------------------------------------------------------------
db 0
off_AC26 dw offset loc_A71F
2014-07-01 18:30:39 +00:00
dw offset loc_A727
dw offset loc_A72F
dw offset loc_A737
word_AC2E dw 24h, 3Dh, 40h, 62h
2014-07-01 18:30:39 +00:00
dw 63h, 65h, 66h, 67h ; value table for switch statement
dw 6Bh, 6Dh, 6Eh, 70h
dw 73h, 74h, 76h, 77h
dw offset loc_AC1A ; jump table for switch statement
dw offset loc_AAA3
dw offset loc_A9B8
dw offset loc_A700
dw offset loc_A6E9
dw offset loc_ABFE
dw offset loc_A889
dw offset loc_A8F1
dw offset loc_A997
dw offset loc_AB66
dw offset loc_A680
dw offset loc_A9D1
dw offset loc_A695
dw offset loc_A85F
dw offset loc_A822
dw offset loc_A73F
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AC6E proc near
2014-07-01 18:30:39 +00:00
var_6 = dword ptr -6
var_2 = byte ptr -2
var_1 = byte ptr -1
enter 6, 0
push si
mov word ptr [bp+var_6+2], ds
mov word ptr [bp+var_6], offset asc_EFC2
mov point_105D0.x, 80
mov point_105D0.y, 320
2014-07-01 18:30:39 +00:00
mov word_105D4, 1
mov col_105D6, 0Fh
2014-07-01 18:30:39 +00:00
mov byte_105D7, 20h ; ' '
mov [bp+var_2], 0
call sub_A36B
mov byte_105CE, 0
loc_ACA3:
call input_mode_interface
test _input_sp.hi, high INPUT_CANCEL
2014-07-01 18:30:39 +00:00
jz short loc_ACB6
mov byte_105CE, 1
jmp short loc_ACBB
; ---------------------------------------------------------------------------
loc_ACB6:
2014-07-01 18:30:39 +00:00
mov byte_105CE, 0
loc_ACBB:
les bx, _cutscene_script
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov [bp+var_1], al
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
mov ah, 0
mov bx, ax
test (__ctype + 1)[bx], _IS_CTL
2014-07-01 18:30:39 +00:00
jnz short loc_ACA3
cmp [bp+var_1], ' '
2014-07-01 18:30:39 +00:00
jz short loc_ACA3
cmp [bp+var_1], '\'
2014-07-01 18:30:39 +00:00
jnz short loc_ACFB
les bx, _cutscene_script
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov [bp+var_1], al
inc word ptr _cutscene_script
2014-07-01 18:30:39 +00:00
push word ptr [bp+var_1]
call sub_A64D
cmp al, -1
2014-07-01 18:30:39 +00:00
jnz short loc_ACA3
jmp loc_ADA0
; ---------------------------------------------------------------------------
loc_ACFB:
2014-07-01 18:30:39 +00:00
les bx, [bp+var_6]
mov al, [bp+var_1]
mov es:[bx], al
les bx, _cutscene_script
2014-07-01 18:30:39 +00:00
mov al, es:[bx]
mov [bp+var_1], al
les bx, [bp+var_6]
mov es:[bx+1], al
inc word ptr _cutscene_script
graph_accesspage 1
push point_105D0.x
push point_105D0.y
mov al, col_105D6
2014-07-01 18:30:39 +00:00
or al, byte_105D7
mov ah, 0
push ax
push word ptr [bp+var_6+2]
push bx
call graph_putsa_fx
graph_accesspage 0
push point_105D0.x
push point_105D0.y
mov al, col_105D6
2014-07-01 18:30:39 +00:00
or al, byte_105D7
mov ah, 0
push ax
pushd [bp+var_6]
call graph_putsa_fx
2014-07-01 18:30:39 +00:00
call sub_A5FC
cmp byte_105CE, 0
jnz loc_ACA3
cmp _input_sp, INPUT_NONE
2014-07-01 18:30:39 +00:00
jnz short loc_AD7A
push word_105D4
2014-11-23 21:25:22 +00:00
call frame_delay
2014-07-01 18:30:39 +00:00
jmp loc_ACA3
; ---------------------------------------------------------------------------
loc_AD7A:
2014-07-01 18:30:39 +00:00
mov ax, word_105D4
mov bx, 3
cwd
idiv bx
mov si, ax
test [bp+var_2], 1
jnz short loc_AD8F
or si, si
jz short loc_AD9A
loc_AD8F:
2014-07-01 18:30:39 +00:00
or si, si
jnz short loc_AD94
inc si
loc_AD94:
2014-07-01 18:30:39 +00:00
push si
2014-11-23 21:25:22 +00:00
call frame_delay
2014-07-01 18:30:39 +00:00
loc_AD9A:
2014-07-01 18:30:39 +00:00
inc [bp+var_2]
jmp loc_ACA3
; ---------------------------------------------------------------------------
loc_ADA0:
2014-07-01 18:30:39 +00:00
call sub_A45B
call sub_A43C
pop si
leave
retn
sub_AC6E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_ADA9 proc near
2014-07-01 18:30:39 +00:00
var_1 = byte ptr -1
enter 2, 0
push si
mov si, 21EEh
xor dx, dx
jmp short loc_ADD1
; ---------------------------------------------------------------------------
loc_ADB5:
2014-07-01 18:30:39 +00:00
mov al, [si+1]
mov [bp+var_1], al
mov al, byte_106AB
ror [bp+var_1], 3
xor [bp+var_1], al
mov al, byte_106AA
add al, [bp+var_1]
add al, [si]
mov [si], al
inc dx
inc si
loc_ADD1:
cmp dx, 0CBh
2014-07-01 18:30:39 +00:00
jl short loc_ADB5
mov al, byte_106AA
add al, byte_106AB
add al, [si]
mov [si], al
pop si
leave
retn
sub_ADA9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_ADE5 proc near
2014-07-01 18:30:39 +00:00
var_1 = byte ptr -1
enter 2, 0
push si
push di
mov [bp+var_1], 29h ; ')'
xor si, si
jmp short loc_AE26
; ---------------------------------------------------------------------------
loc_ADF3:
2014-07-01 18:30:39 +00:00
xor di, di
jmp short loc_AE02
; ---------------------------------------------------------------------------
loc_ADF7:
2014-07-01 18:30:39 +00:00
mov bx, si
shl bx, 3
mov byte ptr [bx+di+21F0h], 2Ah ; '*'
inc di
loc_AE02:
2014-07-01 18:30:39 +00:00
cmp di, 8
jl short loc_ADF7
xor di, di
jmp short loc_AE16
; ---------------------------------------------------------------------------
loc_AE0B:
2014-07-01 18:30:39 +00:00
mov bx, si
imul bx, 0Ah
mov byte ptr [bx+di+2242h], 20h ; ' '
inc di
loc_AE16:
2014-07-01 18:30:39 +00:00
cmp di, 0Ah
jl short loc_AE0B
mov byte ptr [si+22A6h], 0
mov byte ptr [si+22B0h], 21h ; '!'
inc si
loc_AE26:
2014-07-01 18:30:39 +00:00
cmp si, 0Ah
jl short loc_ADF3
mov byte_10636, 21h ; '!'
mov di, 1
jmp short loc_AE45
; ---------------------------------------------------------------------------
loc_AE35:
2014-07-01 18:30:39 +00:00
mov bx, di
imul bx, 0Ah
mov al, [bp+var_1]
mov [bx+2245h], al
inc di
dec [bp+var_1]
loc_AE45:
2014-07-01 18:30:39 +00:00
cmp di, 0Ah
jl short loc_AE35
mov byte_10630, 12h
xor si, si
jmp short loc_AE5B
; ---------------------------------------------------------------------------
loc_AE53:
2014-07-01 18:30:39 +00:00
push si
call sub_AEF0
call sub_ADA9
inc si
loc_AE5B:
2014-07-01 18:30:39 +00:00
cmp si, 4
jl short loc_AE53
pop di
pop si
leave
retn
sub_ADE5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AE64 proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
push si
xor cx, cx
mov si, 21F0h
xor dx, dx
jmp short loc_AE79
; ---------------------------------------------------------------------------
loc_AE71:
2014-07-01 18:30:39 +00:00
mov al, [si]
mov ah, 0
add cx, ax
inc dx
inc si
loc_AE79:
cmp dx, 0CCh
2014-07-01 18:30:39 +00:00
jl short loc_AE71
cmp word_105DE, cx
jz short loc_AE89
mov al, 1
jmp short loc_AE8B
; ---------------------------------------------------------------------------
loc_AE89:
2014-07-01 18:30:39 +00:00
mov al, 0
loc_AE8B:
2014-07-01 18:30:39 +00:00
pop si
pop bp
retn
sub_AE64 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AE8E proc near
2014-07-01 18:30:39 +00:00
arg_0 = word ptr 4
push bp
mov bp, sp
push ds
push word_ED66
2014-08-30 06:46:38 +00:00
call file_exist
2014-07-01 18:30:39 +00:00
or ax, ax
jnz short loc_AEB0
push ds
push word_ED66
2014-08-30 06:32:10 +00:00
call file_create
call file_close
2014-07-01 18:30:39 +00:00
jmp short loc_AEE9
; ---------------------------------------------------------------------------
loc_AEB0:
2014-07-01 18:30:39 +00:00
push ds
push word_ED66
2014-08-30 07:12:17 +00:00
call file_ropen
2014-07-01 18:30:39 +00:00
mov ax, [bp+arg_0]
imul ax, 0CEh
movzx eax, ax
push eax
push 0
call file_seek
2014-07-01 18:30:39 +00:00
push ds
push offset word_105DE
push 0CEh
2014-08-30 07:00:31 +00:00
call file_read
call file_close
2014-07-01 18:30:39 +00:00
call sub_ADA9
call sub_AE64
or al, al
jz short loc_AEEC
loc_AEE9:
2014-07-01 18:30:39 +00:00
call sub_ADE5
loc_AEEC:
2014-07-01 18:30:39 +00:00
pop bp
retn 2
sub_AE8E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AEF0 proc near
2014-07-01 18:30:39 +00:00
var_4 = word ptr -4
var_1 = byte ptr -1
arg_0 = word ptr 4
enter 4, 0
push si
push di
mov [bp+var_4], 0
2014-08-30 10:13:04 +00:00
call IRand
2014-07-01 18:30:39 +00:00
mov byte_106AA, al
2014-08-30 10:13:04 +00:00
call IRand
2014-07-01 18:30:39 +00:00
mov byte_106AB, al
2014-08-30 10:13:04 +00:00
call IRand
2014-07-01 18:30:39 +00:00
mov byte_10631, al
les bx, _resident
cmp es:[bx+resident_t.story_stage], STAGE_ALL
2014-07-01 18:30:39 +00:00
jnz short loc_AF2A
cmp es:[bx+resident_t.rem_credits], 3
2014-07-01 18:30:39 +00:00
jnz short loc_AF2A
mov byte_10630, 63h ; 'c'
loc_AF2A:
2014-07-01 18:30:39 +00:00
mov si, 21F0h
xor di, di
jmp short loc_AF3A
; ---------------------------------------------------------------------------
loc_AF31:
2014-07-01 18:30:39 +00:00
mov al, [si]
mov ah, 0
add [bp+var_4], ax
inc di
inc si
loc_AF3A:
cmp di, 0CCh
2014-07-01 18:30:39 +00:00
jl short loc_AF31
mov ax, [bp+var_4]
mov word_105DE, ax
mov si, 22BAh
dec si
mov al, byte_106AB
mov [bp+var_1], al
mov di, 0CBh
2014-07-01 18:30:39 +00:00
jmp short loc_AF73
; ---------------------------------------------------------------------------
loc_AF55:
2014-07-01 18:30:39 +00:00
mov al, [si]
mov dl, byte_106AA
add dl, [bp+var_1]
sub al, dl
mov [si], al
mov al, [si]
mov [bp+var_1], al
mov al, byte_106AB
ror [bp+var_1], 3
xor [bp+var_1], al
dec di
dec si
loc_AF73:
2014-07-01 18:30:39 +00:00
or di, di
jge short loc_AF55
push ds
push word_ED66
2014-08-30 05:58:36 +00:00
call file_append
2014-07-01 18:30:39 +00:00
mov ax, [bp+arg_0]
imul ax, 0CEh
movzx eax, ax
push eax
push 0
call file_seek
2014-07-01 18:30:39 +00:00
push ds
push offset word_105DE
push 0CEh
2014-08-30 07:38:09 +00:00
call file_write
call file_close
2014-07-01 18:30:39 +00:00
pop di
pop si
leave
retn 2
sub_AEF0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AFAC proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
2014-08-23 13:47:05 +00:00
mov PaletteTone, 0
2014-08-23 14:11:16 +00:00
call far ptr palette_show
graph_accesspage 0
graph_showpage al
call pi_load pascal, 0, ds, offset aRegib_pi
call pi_palette_apply pascal, 0
call pi_put pascal, large 0, 0
freePISlotLarge 0
les bx, _resident
mov al, es:[bx+resident_t.rank]
2014-07-01 18:30:39 +00:00
mov bx, word_ED68
add [bx+3], al
call cdg_load_single pascal, 0, ds, bx, 0
call cdg_put_8 pascal, large (320 shl 16) or 312, 0
call cdg_free pascal, 0
call super_entry_bfnt pascal, ds, offset aRegi2_bft ; "regi2.bft"
call super_entry_bfnt pascal, ds, offset aRegi1_bft ; "regi1.bft"
call graph_copy_page pascal, 1
graph_accesspage 0
2014-07-01 18:30:39 +00:00
pop bp
retn
sub_AFAC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
include th03/formats/scoredat.inc
2014-07-01 18:30:39 +00:00
sub_B03D proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
push si
push di
xor si, si
jmp short loc_B091
; ---------------------------------------------------------------------------
loc_B046:
mov cx, (SCORE_DIGITS - 1)
2014-07-01 18:30:39 +00:00
jmp short loc_B08C
; ---------------------------------------------------------------------------
loc_B04B:
les bx, _resident
2014-07-01 18:30:39 +00:00
add bx, cx
mov al, es:[bx+resident_t.score_last]
2014-07-01 18:30:39 +00:00
mov ah, 0
add ax, 20h ; ' '
mov bx, si
imul bx, 0Ah
add bx, cx
mov dl, [bx+2243h]
mov dh, 0
cmp ax, dx
jg short loc_B0A1
les bx, _resident
2014-07-01 18:30:39 +00:00
add bx, cx
mov al, es:[bx+resident_t.score_last]
2014-07-01 18:30:39 +00:00
mov ah, 0
add ax, 20h ; ' '
mov bx, si
imul bx, 0Ah
add bx, cx
mov dl, [bx+2243h]
mov dh, 0
cmp ax, dx
jl short loc_B090
dec cx
loc_B08C:
2014-07-01 18:30:39 +00:00
or cx, cx
jge short loc_B04B
loc_B090:
2014-07-01 18:30:39 +00:00
inc si
loc_B091:
cmp si, SCOREDAT_PLACES
2014-07-01 18:30:39 +00:00
jl short loc_B046
cmp si, SCOREDAT_PLACES
2014-07-01 18:30:39 +00:00
jnz short loc_B0A1
mov ax, -1
jmp @@ret
2014-07-01 18:30:39 +00:00
; ---------------------------------------------------------------------------
loc_B0A1:
cmp si, (SCOREDAT_PLACES - 1)
2014-07-01 18:30:39 +00:00
jge short loc_B100
mov di, 8
jmp short loc_B0FC
; ---------------------------------------------------------------------------
loc_B0AB:
2014-07-01 18:30:39 +00:00
xor cx, cx
jmp short loc_B0C6
; ---------------------------------------------------------------------------
loc_B0AF:
2014-07-01 18:30:39 +00:00
mov bx, di
shl bx, 3
add bx, cx
mov al, [bx+21F0h]
mov bx, di
shl bx, 3
add bx, cx
mov [bx+21F8h], al
inc cx
loc_B0C6:
2014-07-01 18:30:39 +00:00
cmp cx, 8
jl short loc_B0AF
xor cx, cx
jmp short loc_B0E6
; ---------------------------------------------------------------------------
loc_B0CF:
2014-07-01 18:30:39 +00:00
mov bx, di
imul bx, 0Ah
add bx, cx
mov al, [bx+2242h]
mov bx, di
imul bx, 0Ah
add bx, cx
mov [bx+224Ch], al
inc cx
loc_B0E6:
2014-07-01 18:30:39 +00:00
cmp cx, 0Ah
jl short loc_B0CF
mov al, [di+22B0h]
mov [di+22B1h], al
mov al, [di+22A6h]
mov [di+22A7h], al
dec di
loc_B0FC:
2014-07-01 18:30:39 +00:00
cmp di, si
jge short loc_B0AB
loc_B100:
2014-07-01 18:30:39 +00:00
xor cx, cx
jmp short loc_B111
; ---------------------------------------------------------------------------
loc_B104:
2014-07-01 18:30:39 +00:00
mov bx, si
shl bx, 3
add bx, cx
mov byte ptr [bx+21F0h], 0Eh
inc cx
loc_B111:
2014-07-01 18:30:39 +00:00
cmp cx, 8
jl short loc_B104
mov cx, 1
jmp short loc_B133
; ---------------------------------------------------------------------------
loc_B11B:
les bx, _resident
2014-07-01 18:30:39 +00:00
add bx, cx
mov al, es:[bx+resident_t.pid_winner]
2014-07-01 18:30:39 +00:00
add al, 20h ; ' '
mov bx, si
imul bx, 0Ah
add bx, cx
mov [bx+2242h], al
inc cx
loc_B133:
2014-07-01 18:30:39 +00:00
cmp cx, 9
jl short loc_B11B
les bx, _resident
2014-07-01 18:30:39 +00:00
mov al, 23h ; '#'
sub al, es:[bx+resident_t.rem_credits]
2014-07-01 18:30:39 +00:00
mov bx, si
imul bx, 0Ah
mov [bx+2242h], al
mov bx, word ptr _resident
cmp es:[bx+resident_t.story_stage], STAGE_ALL
2014-07-01 18:30:39 +00:00
jnz short loc_B15D
mov byte ptr [si+22B0h], 30h ; '0'
jmp short loc_B16B
; ---------------------------------------------------------------------------
loc_B15D:
les bx, _resident
mov al, es:[bx+resident_t.story_stage]
2014-07-01 18:30:39 +00:00
add al, 20h ; ' '
mov [si+22B0h], al
loc_B16B:
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
2014-07-01 18:30:39 +00:00
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
inc al
mov [si+22A6h], al
mov ax, si
@@ret:
2014-07-01 18:30:39 +00:00
pop di
pop si
pop bp
retn
sub_B03D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B187 proc near
2014-07-01 18:30:39 +00:00
@@patnum = word ptr -2
2014-07-01 18:30:39 +00:00
enter 2, 0
push si
push di
mov [bp+@@patnum], 0
mov di, 320
2014-07-01 18:30:39 +00:00
jmp short loc_B1B5
; ---------------------------------------------------------------------------
loc_B197:
mov si, 64
2014-07-01 18:30:39 +00:00
jmp short loc_B1AC
; ---------------------------------------------------------------------------
loc_B19C:
call super_put pascal, si, di, [bp+@@patnum]
add si, 32
inc [bp+@@patnum]
2014-07-01 18:30:39 +00:00
loc_B1AC:
cmp si, 576
2014-07-01 18:30:39 +00:00
jl short loc_B19C
add di, 24
2014-07-01 18:30:39 +00:00
loc_B1B5:
cmp di, 368
2014-07-01 18:30:39 +00:00
jle short loc_B197
pop di
pop si
leave
retn
sub_B187 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B1BF proc near
2014-07-01 18:30:39 +00:00
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = word ptr 4
arg_2 = word ptr 6
enter 4, 0
push si
mov si, [bp+arg_2]
mov ax, si
mov bx, 16
2014-07-01 18:30:39 +00:00
cwd
idiv bx
shl dx, 5
add dx, 40h
2014-07-01 18:30:39 +00:00
mov [bp+var_2], dx
mov ax, si
cwd
idiv bx
imul ax, 18h
add ax, 140h
mov [bp+var_4], ax
push [bp+var_2]
push ax
push si
push [bp+arg_0]
call sub_B2AD
pop si
leave
retn 4
sub_B1BF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B1F6 proc near
2014-07-01 18:30:39 +00:00
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = word ptr 4
arg_2 = word ptr 6
enter 14h, 0
push si
mov si, [bp+arg_0]
mov ax, [bp+arg_2]
sar ax, 3
mov dx, si
shl dx, 6
add ax, dx
mov dx, si
shl dx, 4
add ax, dx
mov cx, ax
mov [bp+var_4], 0
jmp loc_B29F
; ---------------------------------------------------------------------------
loc_B21F:
graph_accesspage 1
les bx, _VRAM_PLANE_B
2014-07-01 18:30:39 +00:00
add bx, cx
mov eax, es:[bx]
mov [bp+var_14], eax
les bx, _VRAM_PLANE_R
2014-07-01 18:30:39 +00:00
add bx, cx
mov eax, es:[bx]
mov [bp+var_10], eax
les bx, _VRAM_PLANE_G
2014-07-01 18:30:39 +00:00
add bx, cx
mov eax, es:[bx]
mov [bp+var_C], eax
les bx, _VRAM_PLANE_E
2014-07-01 18:30:39 +00:00
add bx, cx
mov eax, es:[bx]
mov [bp+var_8], eax
mov al, 0
out dx, al
les bx, _VRAM_PLANE_B
2014-07-01 18:30:39 +00:00
add bx, cx
mov eax, [bp+var_14]
mov es:[bx], eax
les bx, _VRAM_PLANE_R
2014-07-01 18:30:39 +00:00
add bx, cx
mov eax, [bp+var_10]
mov es:[bx], eax
les bx, _VRAM_PLANE_G
2014-07-01 18:30:39 +00:00
add bx, cx
mov eax, [bp+var_C]
mov es:[bx], eax
les bx, _VRAM_PLANE_E
2014-07-01 18:30:39 +00:00
add bx, cx
mov eax, [bp+var_8]
mov es:[bx], eax
add cx, 50h ; 'P'
inc [bp+var_4]
loc_B29F:
2014-07-01 18:30:39 +00:00
cmp [bp+var_4], 20h ; ' '
jb loc_B21F
pop si
leave
retn 4
sub_B1F6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B2AD proc near
2014-07-01 18:30:39 +00:00
arg_0 = word ptr 4
arg_2 = word ptr 6
@@y = word ptr 8
2014-07-01 18:30:39 +00:00
arg_6 = word ptr 0Ah
push bp
mov bp, sp
push si
push di
mov di, [bp+arg_6]
mov si, [bp+arg_2]
cmp [bp+arg_0], 0
jz short loc_B2C1
add si, 49
2014-07-01 18:30:39 +00:00
loc_B2C1:
call super_put pascal, di, [bp+@@y], si
2014-07-01 18:30:39 +00:00
mov ax, [bp+arg_2]
mov bx, 16
2014-07-01 18:30:39 +00:00
cwd
idiv bx
cmp dx, 14
2014-07-01 18:30:39 +00:00
jnz short loc_B2E9
lea ax, [di+32]
2014-07-01 18:30:39 +00:00
push ax
push [bp+@@y]
2014-07-01 18:30:39 +00:00
lea ax, [si+1]
push ax
call super_put
2014-07-01 18:30:39 +00:00
loc_B2E9:
2014-07-01 18:30:39 +00:00
pop di
pop si
pop bp
retn 8
sub_B2AD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B2EF proc near
2014-07-01 18:30:39 +00:00
var_7 = byte ptr -7
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
@@place = word ptr 4
2014-07-01 18:30:39 +00:00
arg_2 = word ptr 6
arg_4 = word ptr 8
enter 8, 0
push si
push di
mov si, [bp+arg_4]
mov di, [bp+@@place]
cmp _entered_place, di
2014-07-01 18:30:39 +00:00
jnz short loc_B306
mov ax, 1
jmp short loc_B308
; ---------------------------------------------------------------------------
loc_B306:
2014-07-01 18:30:39 +00:00
xor ax, ax
loc_B308:
2014-07-01 18:30:39 +00:00
mov [bp+var_6], ax
cmp _entered_place, di
2014-07-01 18:30:39 +00:00
jnz short loc_B315
mov al, 0Fh
jmp short loc_B317
; ---------------------------------------------------------------------------
loc_B315:
2014-07-01 18:30:39 +00:00
mov al, 4
loc_B317:
2014-07-01 18:30:39 +00:00
mov [bp+var_7], al
cmp _entered_place, -1
2014-07-01 18:30:39 +00:00
jnz short loc_B32A
mov [bp+var_6], 1
mov [bp+var_7], 0Fh
loc_B32A:
2014-07-01 18:30:39 +00:00
cmp di, 9
jz short loc_B339
push si
push [bp+arg_2]
lea ax, [di+21h]
push ax
jmp short loc_B351
; ---------------------------------------------------------------------------
loc_B339:
2014-07-01 18:30:39 +00:00
lea ax, [si-8]
push ax
push [bp+arg_2]
push 21h ; '!'
push [bp+var_6]
call sub_B2AD
lea ax, [si+8]
push ax
push [bp+arg_2]
push 20h ; ' '
loc_B351:
2014-07-01 18:30:39 +00:00
push [bp+var_6]
call sub_B2AD
add si, 30h ; '0'
mov [bp+var_2], 7
jmp short loc_B38F
; ---------------------------------------------------------------------------
loc_B361:
2014-07-01 18:30:39 +00:00
mov bx, di
shl bx, 3
add bx, [bp+var_2]
cmp byte ptr [bx+21F0h], 0Eh
jz short loc_B389
push si
push [bp+arg_2]
mov bx, di
shl bx, 3
add bx, [bp+var_2]
mov al, [bx+21F0h]
mov ah, 0
push ax
push [bp+var_6]
call sub_B2AD
loc_B389:
2014-07-01 18:30:39 +00:00
dec [bp+var_2]
add si, 18h
loc_B38F:
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 0
jge short loc_B361
add si, 10h
mov [bp+var_4], 20h ; ' '
mov [bp+var_2], 9
jmp short loc_B3E0
; ---------------------------------------------------------------------------
loc_B3A4:
2014-07-01 18:30:39 +00:00
cmp [bp+var_4], 20h ; ' '
jnz short loc_B3BB
mov bx, di
imul bx, 0Ah
add bx, [bp+var_2]
mov al, [bx+2242h]
mov ah, 0
mov [bp+var_4], ax
loc_B3BB:
2014-07-01 18:30:39 +00:00
cmp [bp+var_4], 20h ; ' '
jz short loc_B3DA
push si
push [bp+arg_2]
mov bx, di
imul bx, 0Ah
add bx, [bp+var_2]
mov al, [bx+2242h]
mov ah, 0
push ax
push [bp+var_6]
call sub_B2AD
loc_B3DA:
2014-07-01 18:30:39 +00:00
dec [bp+var_2]
add si, 10h
loc_B3E0:
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 0
jge short loc_B3A4
add si, 10h
push si
mov ax, [bp+arg_2]
add ax, 8
push ax
mov al, [bp+var_7]
mov ah, 0
or ax, 20h
push ax
mov al, [di+22A6h]
mov ah, 0
shl ax, 2
mov bx, ax
pushd aSCORE_PLAYCHARS[bx]
call graph_putsa_fx
2014-07-01 18:30:39 +00:00
add si, 70h ; 'p'
push si
push [bp+arg_2]
mov al, [di+22B0h]
mov ah, 0
push ax
push [bp+var_6]
call sub_B2AD
pop di
pop si
leave
retn 6
sub_B2EF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B429 proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
push si
push di
call graph_copy_page pascal, 0
2014-07-01 18:30:39 +00:00
xor si, si
mov di, 68h ; 'h'
jmp short loc_B447
; ---------------------------------------------------------------------------
loc_B43C:
2014-07-01 18:30:39 +00:00
push 18h
push di
push si
call sub_B2EF
inc si
add di, 14h
loc_B447:
2014-07-01 18:30:39 +00:00
cmp si, 0Ah
jl short loc_B43C
pop di
pop si
pop bp
retn
sub_B429 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B450 proc near
2014-07-01 18:30:39 +00:00
arg_0 = word ptr 4
push bp
mov bp, sp
push si
mov si, [bp+arg_0]
push 18h
mov ax, si
imul ax, 14h
add ax, 68h ; 'h'
push ax
push si
call sub_B2EF
pop si
pop bp
retn 2
sub_B450 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B46B proc near
2014-07-01 18:30:39 +00:00
var_F = byte ptr -0Fh
var_E = byte ptr -0Eh
var_D = byte ptr -0Dh
var_C = byte ptr -0Ch
var_B = byte ptr -0Bh
var_A = word ptr -0Ah
var_8 = word ptr -8
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
enter 10h, 0
push si
mov [bp+var_2], 0
lea ax, [bp+var_A]
push ss
push ax
push ds
push offset unk_ED6A
mov cx, 8
call SCOPY@
mov [bp+var_B], 0
mov [bp+var_C], 1
mov [bp+var_D], 0
mov [bp+var_E], 7
mov [bp+var_F], 0
mov ax, _entered_place
2014-07-01 18:30:39 +00:00
imul ax, 14h
add ax, 68h ; 'h'
mov si, ax
jmp loc_B743
; ---------------------------------------------------------------------------
loc_B4A8:
call input_mode_interface
test _input_sp.lo, low INPUT_UP
2014-07-01 18:30:39 +00:00
jz short loc_B4F2
cmp [bp+var_A], 0
jz short loc_B4CD
cmp [bp+var_A], 1Eh
jl short loc_B4ED
mov ax, [bp+var_A]
mov bx, 4
cwd
idiv bx
or dx, dx
jnz short loc_B4ED
loc_B4CD:
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 2Dh ; '-'
jz short loc_B4ED
push [bp+var_2]
push 0
call sub_B1BF
sub [bp+var_2], 10h
cmp [bp+var_2], 0
jge short loc_B4E9
add [bp+var_2], 30h ; '0'
loc_B4E9:
2014-07-01 18:30:39 +00:00
mov [bp+var_C], 1
loc_B4ED:
2014-07-01 18:30:39 +00:00
inc [bp+var_A]
jmp short loc_B4F7
; ---------------------------------------------------------------------------
loc_B4F2:
2014-07-01 18:30:39 +00:00
mov [bp+var_A], 0
loc_B4F7:
test _input_sp.lo, low INPUT_DOWN
2014-07-01 18:30:39 +00:00
jz short loc_B53C
cmp [bp+var_8], 0
jz short loc_B517
cmp [bp+var_8], 1Eh
jl short loc_B537
mov ax, [bp+var_8]
mov bx, 4
cwd
idiv bx
or dx, dx
jnz short loc_B537
loc_B517:
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 2Dh ; '-'
jz short loc_B537
push [bp+var_2]
push 0
call sub_B1BF
add [bp+var_2], 10h
cmp [bp+var_2], 30h ; '0'
jl short loc_B533
sub [bp+var_2], 30h ; '0'
loc_B533:
2014-07-01 18:30:39 +00:00
mov [bp+var_C], 1
loc_B537:
2014-07-01 18:30:39 +00:00
inc [bp+var_8]
jmp short loc_B541
; ---------------------------------------------------------------------------
loc_B53C:
2014-07-01 18:30:39 +00:00
mov [bp+var_8], 0
loc_B541:
test _input_sp.lo, low INPUT_LEFT
2014-07-01 18:30:39 +00:00
jz short loc_B59A
cmp [bp+var_6], 0
jz short loc_B561
cmp [bp+var_6], 1Eh
jl short loc_B595
mov ax, [bp+var_6]
mov bx, 4
cwd
idiv bx
or dx, dx
jnz short loc_B595
loc_B561:
2014-07-01 18:30:39 +00:00
push [bp+var_2]
push 0
call sub_B1BF
mov ax, [bp+var_2]
mov bx, 16
2014-07-01 18:30:39 +00:00
cwd
idiv bx
or dx, dx
jnz short loc_B57C
add [bp+var_2], 0Eh
jmp short loc_B591
; ---------------------------------------------------------------------------
loc_B57C:
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 1Eh
jz short loc_B588
cmp [bp+var_2], 0Eh
jnz short loc_B58E
loc_B588:
2014-07-01 18:30:39 +00:00
sub [bp+var_2], 2
jmp short loc_B591
; ---------------------------------------------------------------------------
loc_B58E:
2014-07-01 18:30:39 +00:00
dec [bp+var_2]
loc_B591:
2014-07-01 18:30:39 +00:00
mov [bp+var_C], 1
loc_B595:
2014-07-01 18:30:39 +00:00
inc [bp+var_6]
jmp short loc_B59F
; ---------------------------------------------------------------------------
loc_B59A:
2014-07-01 18:30:39 +00:00
mov [bp+var_6], 0
loc_B59F:
test _input_sp.lo, low INPUT_RIGHT
2014-07-01 18:30:39 +00:00
jz short loc_B5F9
cmp [bp+var_4], 0
jz short loc_B5BF
cmp [bp+var_4], 1Eh
jl short loc_B5F4
mov ax, [bp+var_4]
mov bx, 4
cwd
idiv bx
or dx, dx
jnz short loc_B5F4
loc_B5BF:
2014-07-01 18:30:39 +00:00
push [bp+var_2]
push 0
call sub_B1BF
mov ax, [bp+var_2]
mov bx, 16
2014-07-01 18:30:39 +00:00
cwd
idiv bx
cmp dx, 0Eh
jnz short loc_B5DB
sub [bp+var_2], 0Eh
jmp short loc_B5F0
; ---------------------------------------------------------------------------
loc_B5DB:
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 0Ch
jz short loc_B5E7
cmp [bp+var_2], 1Ch
jnz short loc_B5ED
loc_B5E7:
2014-07-01 18:30:39 +00:00
add [bp+var_2], 2
jmp short loc_B5F0
; ---------------------------------------------------------------------------
loc_B5ED:
2014-07-01 18:30:39 +00:00
inc [bp+var_2]
loc_B5F0:
2014-07-01 18:30:39 +00:00
mov [bp+var_C], 1
loc_B5F4:
2014-07-01 18:30:39 +00:00
inc [bp+var_4]
jmp short loc_B5FE
; ---------------------------------------------------------------------------
loc_B5F9:
2014-07-01 18:30:39 +00:00
mov [bp+var_4], 0
loc_B5FE:
test _input_sp.hi, high INPUT_OK
2014-07-01 18:30:39 +00:00
jnz short loc_B60C
test _input_sp.lo, low INPUT_SHOT
2014-07-01 18:30:39 +00:00
jz short loc_B683
loc_B60C:
2014-07-01 18:30:39 +00:00
cmp [bp+var_D], 0
jnz short loc_B67D
cmp [bp+var_2], 1Eh
jnz short loc_B64B
mov al, [bp+var_E]
mov ah, 0
mov dx, 7
sub dx, ax
imul dx, 18h
add dx, 48h ; 'H'
push dx
push si
call sub_B1F6
mov bx, _entered_place
2014-07-01 18:30:39 +00:00
shl bx, 3
mov al, [bp+var_E]
mov ah, 0
add bx, ax
mov byte ptr [bx+21F0h], 0Eh
cmp [bp+var_E], 7
jnb short loc_B679
inc [bp+var_E]
jmp short loc_B679
; ---------------------------------------------------------------------------
loc_B64B:
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 2Eh ; '.'
jnz short loc_B657
mov [bp+var_B], 1
jmp short loc_B679
; ---------------------------------------------------------------------------
loc_B657:
mov bx, _entered_place
2014-07-01 18:30:39 +00:00
shl bx, 3
mov al, [bp+var_E]
mov ah, 0
add bx, ax
mov al, byte ptr [bp+var_2]
mov [bx+21F0h], al
cmp [bp+var_E], 0
jnz short loc_B676
mov [bp+var_B], 1
loc_B676:
2014-07-01 18:30:39 +00:00
dec [bp+var_E]
loc_B679:
2014-07-01 18:30:39 +00:00
mov [bp+var_C], 1
loc_B67D:
2014-07-01 18:30:39 +00:00
mov [bp+var_D], 1
jmp short loc_B687
; ---------------------------------------------------------------------------
loc_B683:
2014-07-01 18:30:39 +00:00
mov [bp+var_D], 0
loc_B687:
test _input_sp.lo, low INPUT_BOMB
2014-07-01 18:30:39 +00:00
jz short loc_B6CF
cmp [bp+var_F], 0
jnz short loc_B6C9
mov al, [bp+var_E]
mov ah, 0
mov dx, 7
sub dx, ax
imul dx, 18h
add dx, 48h ; 'H'
push dx
push si
call sub_B1F6
mov bx, _entered_place
2014-07-01 18:30:39 +00:00
shl bx, 3
mov al, [bp+var_E]
mov ah, 0
add bx, ax
mov byte ptr [bx+21F0h], 0Eh
cmp [bp+var_E], 7
jnb short loc_B6C5
inc [bp+var_E]
loc_B6C5:
2014-07-01 18:30:39 +00:00
mov [bp+var_C], 1
loc_B6C9:
2014-07-01 18:30:39 +00:00
mov [bp+var_F], 1
jmp short loc_B6D3
; ---------------------------------------------------------------------------
loc_B6CF:
2014-07-01 18:30:39 +00:00
mov [bp+var_F], 0
loc_B6D3:
2014-07-01 18:30:39 +00:00
cmp [bp+var_C], 1
jnz short loc_B73C
push [bp+var_2]
push 1
call sub_B1BF
mov al, [bp+var_E]
mov ah, 0
mov dx, 7
sub dx, ax
imul dx, 18h
add dx, 48h ; 'H'
push dx
push si
call sub_B1F6
mov bx, _entered_place
2014-07-01 18:30:39 +00:00
shl bx, 3
mov al, [bp+var_E]
mov ah, 0
add bx, ax
mov byte ptr [bx+21F0h], 0Eh
push _entered_place
2014-07-01 18:30:39 +00:00
call sub_B450
mov ax, [bp+var_2]
mov bx, 16
2014-07-01 18:30:39 +00:00
cwd
idiv bx
cmp dx, 0Eh
jz short loc_B738
mov al, [bp+var_E]
mov ah, 0
mov dx, 7
sub dx, ax
imul dx, 18h
add dx, 48h ; 'H'
push dx
push si
push [bp+var_2]
push 0
call sub_B2AD
loc_B738:
2014-07-01 18:30:39 +00:00
mov [bp+var_C], 0
loc_B73C:
2014-07-01 18:30:39 +00:00
push 1
2014-11-23 21:25:22 +00:00
call frame_delay
2014-07-01 18:30:39 +00:00
loc_B743:
2014-07-01 18:30:39 +00:00
cmp [bp+var_B], 0
jz loc_B4A8
pop si
leave
retn
sub_B46B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B74E proc near
2014-07-01 18:30:39 +00:00
var_1 = byte ptr -1
enter 2, 0
push si
push di
xor cx, cx
jmp short loc_B769
; ---------------------------------------------------------------------------
loc_B758:
mov bx, _entered_place
2014-07-01 18:30:39 +00:00
shl bx, 3
add bx, cx
cmp byte ptr [bx+21F0h], 0Eh
jnz short loc_B7A2
inc cx
loc_B769:
2014-07-01 18:30:39 +00:00
cmp cx, 8
jl short loc_B758
loc_B76E:
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
2014-07-01 18:30:39 +00:00
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
shl ax, 3
add ax, 92Eh
mov di, ax
mov cx, 7
jmp short loc_B79C
; ---------------------------------------------------------------------------
loc_B78B:
mov bx, _entered_place
2014-07-01 18:30:39 +00:00
shl bx, 3
add bx, cx
mov al, [di]
mov [bx+21F0h], al
dec cx
inc di
loc_B79C:
2014-07-01 18:30:39 +00:00
or cx, cx
jge short loc_B78B
jmp short loc_B7CE
; ---------------------------------------------------------------------------
loc_B7A2:
mov bx, _entered_place
2014-07-01 18:30:39 +00:00
shl bx, 3
mov al, [bx+21F0h]
mov [bp+var_1], al
xor cx, cx
jmp short loc_B7C7
; ---------------------------------------------------------------------------
loc_B7B4:
mov bx, _entered_place
2014-07-01 18:30:39 +00:00
shl bx, 3
add bx, cx
mov al, [bx+21F0h]
cmp al, [bp+var_1]
jnz short loc_B7CE
inc cx
loc_B7C7:
2014-07-01 18:30:39 +00:00
cmp cx, 8
jl short loc_B7B4
jmp short loc_B76E
; ---------------------------------------------------------------------------
loc_B7CE:
2014-07-01 18:30:39 +00:00
pop di
pop si
leave
retn
sub_B74E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B7D2 proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
les bx, _resident
mov eax, es:[bx+resident_t.rand]
2014-08-30 10:13:04 +00:00
mov random_seed, eax
call snd_load c, offset aScore_m, ds, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
les bx, _resident
mov al, es:[bx+resident_t.rank]
2014-07-01 18:30:39 +00:00
mov ah, 0
push ax
call sub_AE8E
les bx, _resident
cmp es:[bx+resident_t.story_stage], STAGE_NONE
2014-07-01 18:30:39 +00:00
jnz short loc_B819
mov _entered_place, -1
2014-07-01 18:30:39 +00:00
jmp short loc_B81F
; ---------------------------------------------------------------------------
loc_B819:
2014-07-01 18:30:39 +00:00
call sub_B03D
mov _entered_place, ax
2014-07-01 18:30:39 +00:00
loc_B81F:
2014-07-01 18:30:39 +00:00
call sub_AFAC
cmp _entered_place, -1
2014-07-01 18:30:39 +00:00
jnz short loc_B835
call sub_B429
push 2
2014-08-26 22:21:45 +00:00
call palette_black_in
2014-07-01 18:30:39 +00:00
jmp short loc_B858
; ---------------------------------------------------------------------------
loc_B835:
2014-07-01 18:30:39 +00:00
call sub_B429
call graph_copy_page pascal, 1
graph_accesspage 0
2014-07-01 18:30:39 +00:00
call sub_B187
push 2
2014-08-26 22:21:45 +00:00
call palette_black_in
2014-07-01 18:30:39 +00:00
call sub_B46B
call sub_B74E
call sub_B429
loc_B858:
call input_wait_for_change pascal, 0
les bx, _resident
cmp es:[bx+resident_t.rem_credits], 0
2014-07-01 18:30:39 +00:00
jz short loc_B871
cmp es:[bx+resident_t.story_stage], STAGE_ALL
2014-07-01 18:30:39 +00:00
jnz short loc_B879
loc_B871:
kajacall KAJA_SONG_FADE, 16
2014-07-01 18:30:39 +00:00
loc_B879:
2014-07-01 18:30:39 +00:00
push 2
2014-08-26 22:33:43 +00:00
call palette_black_out
les bx, _resident
mov al, es:[bx+resident_t.rank]
2014-07-01 18:30:39 +00:00
mov ah, 0
push ax
call sub_AEF0
call super_free
graph_accesspage 0
graph_showpage al
2014-08-23 13:47:05 +00:00
mov PaletteTone, 0
2014-08-23 14:11:16 +00:00
call far ptr palette_show
les bx, _resident
cmp es:[bx+resident_t.rem_credits], 0
2014-07-01 18:30:39 +00:00
jz short loc_B8F1
cmp es:[bx+resident_t.story_stage], STAGE_ALL
2014-07-01 18:30:39 +00:00
jz short loc_B8F1
call pi_load pascal, 0, ds, offset aConti_pi
call pi_palette_apply pascal, 0
call pi_put pascal, large 0, 0
freePISlotLarge 0
call cdg_load_all pascal, 0, ds, offset aConti_cd2
2014-07-01 18:30:39 +00:00
pop bp
retn
; ---------------------------------------------------------------------------
loc_B8F1:
call pi_load pascal, 0, ds, offset aOver_pi_0
call pi_palette_apply pascal, 0
call pi_put pascal, large 0, 0
freePISlotLarge 0
call _snd_delay_until_volume stdcall, 255
2014-07-01 18:30:39 +00:00
pop cx
kajacall KAJA_SONG_STOP
2014-07-01 18:30:39 +00:00
pop bp
retn
sub_B7D2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B92E proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
kajacall KAJA_SONG_STOP
call snd_load c, offset aOver_m, ds, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
2014-07-01 18:30:39 +00:00
push 1
2014-08-26 22:21:45 +00:00
call palette_black_in
push 30040h
call snd_delay_until_measure
2014-07-01 18:30:39 +00:00
push 1
2014-08-26 22:33:43 +00:00
call palette_black_out
kajacall KAJA_SONG_STOP
2014-07-01 18:30:39 +00:00
pop bp
retn
sub_B92E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B972 proc near
2014-07-01 18:30:39 +00:00
var_1 = byte ptr -1
enter 2, 0
call cdg_free pascal, 0
call cdg_free pascal, 1
call cdg_free pascal, 2
freePISlotLarge 0
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
2014-07-01 18:30:39 +00:00
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
mov [bp+var_1], al
cmp [bp+var_1], 10
2014-07-01 18:30:39 +00:00
jl short loc_B9DD
les bx, off_EE4E
mov al, es:[bx+1]
push ax
mov al, [bp+var_1]
cbw
mov bx, 10
2014-07-01 18:30:39 +00:00
cwd
idiv bx
pop dx
add dl, al
mov bx, word ptr off_EE4E
mov es:[bx+1], dl
mov al, [bp+var_1]
cbw
mov bx, 10
2014-07-01 18:30:39 +00:00
cwd
idiv bx
mov [bp+var_1], dl
loc_B9DD:
2014-07-01 18:30:39 +00:00
les bx, off_EE4E
mov al, [bp+var_1]
add es:[bx+2], al
2014-08-23 13:47:05 +00:00
mov PaletteTone, 0
2014-08-23 14:11:16 +00:00
call far ptr palette_show
push 60h
2014-11-23 21:25:22 +00:00
call frame_delay
graph_accesspage 0
graph_showpage al
2014-08-27 04:03:08 +00:00
call graph_clear
call graph_show
pushd [off_EE4E]
2014-07-01 18:30:39 +00:00
call sub_A12E
call sub_AC6E
call sub_A174
call sub_C40D
les bx, _resident
mov es:[bx+resident_t.story_stage], STAGE_ALL
2014-07-01 18:30:39 +00:00
call sub_B7D2
les bx, _resident
cmp es:[bx+resident_t.rem_credits], 3
2014-07-01 18:30:39 +00:00
jnz short loc_BA66
cmp es:[bx+resident_t.RESIDENT_playchar_paletted], (1 + (PLAYCHAR_CHIYURI * 2))
2014-07-01 18:30:39 +00:00
jnb short loc_BA66
graph_accesspage 1
2014-08-27 04:03:08 +00:00
call graph_clear
graph_accesspage 0
2014-08-27 04:03:08 +00:00
call graph_clear
graph_showpage 0
2014-07-01 18:30:39 +00:00
push ds
push offset a@99ed_txt ; "@99ED.TXT"
call sub_A12E
call sub_AC6E
call sub_A174
loc_BA66:
2014-08-20 14:45:24 +00:00
call text_clear
call gaiji_restore
call _game_exit
pushd 0
2014-07-01 18:30:39 +00:00
push ds
push offset aOp_0 ; "op"
push ds
push offset aOp_0 ; "op"
call _execl
add sp, 0Ch
leave
retn
sub_B972 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BA8A proc near
2014-07-01 18:30:39 +00:00
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
push bp
mov bp, sp
push si
push di
mov ax, [bp+arg_4]
sar ax, 3
mov dx, [bp+arg_2]
shl dx, 6
add ax, dx
mov dx, [bp+arg_2]
shl dx, 4
add ax, dx
mov di, ax
mov si, [bp+arg_0]
shl si, 4
add si, 0A62h
mov ax, 0A800h
mov es, ax
assume es:nothing
mov cx, [bp+arg_4]
; Hack (and cx, 7)
db 081h
db 0e1h
db 007h
db 000h
mov bx, 8
loc_BAC0:
2014-07-01 18:30:39 +00:00
mov ax, [si]
ror ax, cl
or es:[di], ax
add di, 50h ; 'P'
add si, 2
dec bx
jnz short loc_BAC0
pop di
pop si
pop bp
retn 6
sub_BA8A endp
include th03/formats/cdg_unput_upwards.asm
2014-07-01 18:30:39 +00:00
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BB51 proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
push di
mov ax, 0A800h
mov es, ax
assume es:nothing
xor ax, ax
mov di, ax
mov cx, 3E80h
rep stosw
pop di
pop bp
retn
sub_BB51 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BB66 proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
push si
mov si, 22C2h
xor ax, ax
jmp short loc_BB78
; ---------------------------------------------------------------------------
loc_BB71:
2014-07-01 18:30:39 +00:00
mov byte ptr [si], 0
inc ax
add si, 10h
loc_BB78:
2014-07-01 18:30:39 +00:00
cmp ax, 50h ; 'P'
jl short loc_BB71
pop si
pop bp
retn
sub_BB66 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BB80 proc near
2014-07-01 18:30:39 +00:00
@@length = byte ptr -2
@@angle = byte ptr -1
2014-07-01 18:30:39 +00:00
enter 2, 0
push si
push di
mov si, 22C2h
xor di, di
jmp loc_BC1A
; ---------------------------------------------------------------------------
loc_BB8E:
2014-07-01 18:30:39 +00:00
cmp byte ptr [si], 0
jnz loc_BC16
mov ax, di
shl ax, 3
cmp ax, word_10BB2
jg short loc_BC16
mov byte ptr [si], 1
test di, 3
jz short loc_BBBE
2014-08-30 10:13:04 +00:00
call IRand
mov bx, (632 shl 4)
2014-07-01 18:30:39 +00:00
cwd
idiv bx
mov [si+2], dx
mov word ptr [si+4], 0
jmp short loc_BBD1
; ---------------------------------------------------------------------------
loc_BBBE:
mov word ptr [si+2], (632 shl 4)
2014-08-30 10:13:04 +00:00
call IRand
mov bx, (392 shl 4)
2014-07-01 18:30:39 +00:00
cwd
idiv bx
mov [si+4], dx
loc_BBD1:
2014-08-30 10:13:04 +00:00
call IRand
mov bx, 20h
2014-07-01 18:30:39 +00:00
cwd
idiv bx
add dl, 50h
mov [bp+@@angle], dl
2014-08-30 10:13:04 +00:00
call IRand
mov bx, 40h
2014-07-01 18:30:39 +00:00
cwd
idiv bx
add dl, 30h ; '0'
mov [bp+@@length], dl
2014-08-30 10:13:04 +00:00
call IRand
2014-07-01 18:30:39 +00:00
and ax, 3
mov [si+0Ah], ax
push ds
lea ax, [si+6]
push ax
push ds
lea ax, [si+8]
push ax
push word ptr [bp+@@angle]
mov al, [bp+@@length]
2014-07-01 18:30:39 +00:00
mov ah, 0
push ax
call vector2
2014-07-01 18:30:39 +00:00
loc_BC16:
2014-07-01 18:30:39 +00:00
inc di
add si, 10h
loc_BC1A:
2014-07-01 18:30:39 +00:00
mov al, byte_106B0
mov ah, 0
cmp ax, di
jg loc_BB8E
pop di
pop si
leave
retn
sub_BB80 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BC29 proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
push si
mov si, 22C2h
xor dx, dx
jmp short loc_BC63
; ---------------------------------------------------------------------------
loc_BC34:
2014-07-01 18:30:39 +00:00
cmp byte ptr [si], 0
jz short loc_BC5F
mov byte ptr [si], 1
mov ax, [si+6]
add [si+2], ax
mov ax, [si+8]
add [si+4], ax
cmp word ptr [si+2], 0
jg short loc_BC53
add word ptr [si+2], 2780h
loc_BC53:
2014-07-01 18:30:39 +00:00
cmp word ptr [si+4], 1880h
jl short loc_BC5F
sub word ptr [si+4], 1880h
loc_BC5F:
2014-07-01 18:30:39 +00:00
inc dx
add si, 10h
loc_BC63:
2014-07-01 18:30:39 +00:00
mov al, byte_106B0
mov ah, 0
cmp ax, dx
jg short loc_BC34
pop si
pop bp
retn
sub_BC29 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BC6F proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
push si
push di
mov si, 22C2h
xor di, di
jmp short loc_BC98
; ---------------------------------------------------------------------------
loc_BC7B:
2014-07-01 18:30:39 +00:00
cmp byte ptr [si], 0
jz short loc_BC94
mov ax, [si+2]
sar ax, 4
push ax
mov ax, [si+4]
sar ax, 4
push ax
push word ptr [si+0Ah]
call sub_BA8A
loc_BC94:
2014-07-01 18:30:39 +00:00
inc di
add si, 10h
loc_BC98:
2014-07-01 18:30:39 +00:00
mov al, byte_106B0
mov ah, 0
cmp ax, di
jg short loc_BC7B
pop di
pop si
pop bp
retn
sub_BC6F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BCA5 proc near
2014-07-01 18:30:39 +00:00
arg_0 = word ptr 4
arg_2 = word ptr 6
push bp
mov bp, sp
cmp _snd_active, 0
2014-07-01 18:30:39 +00:00
jnz short loc_BCB9
mov ax, word_10BB2
cmp ax, [bp+arg_0]
jle short loc_BCCF
jmp short loc_BCCA
; ---------------------------------------------------------------------------
loc_BCB9:
mov ah, KAJA_GET_SONG_MEASURE
2014-07-01 18:30:39 +00:00
int 60h ; - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
; BX = handle
; Return: CF set on error, DH = error code
; CF clear if successful
cmp ax, [bp+arg_2]
jb short loc_BCCF
cmp word_10BB2, 0C0h
2014-07-01 18:30:39 +00:00
jle short loc_BCCF
loc_BCCA:
2014-07-01 18:30:39 +00:00
mov ax, 1
jmp short loc_BCD1
; ---------------------------------------------------------------------------
loc_BCCF:
2014-07-01 18:30:39 +00:00
xor ax, ax
loc_BCD1:
2014-07-01 18:30:39 +00:00
pop bp
retn 4
sub_BCA5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BCD5 proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
call sub_BB80
call sub_BC29
call sub_BC6F
cmp byte_10BB6, 0
jz short loc_BCFE
cmp vsync_Count1, 1
2014-07-01 18:30:39 +00:00
jbe short loc_BCFE
mov byte_10BB5, 0
mov byte_106B0, 32h ; '2'
mov byte_10BB6, 0
loc_BCFE:
cmp vsync_Count1, 0
2014-07-01 18:30:39 +00:00
jz short loc_BCFE
mov vsync_Count1, 0
graph_showpage byte_10BB4
2014-07-01 18:30:39 +00:00
mov al, 1
sub al, byte_10BB4
mov byte_10BB4, al
graph_accesspage al
2014-07-01 18:30:39 +00:00
pop bp
retn
sub_BCD5 endp
include th03/formats/cdg_put_dissolve.asm
2014-07-01 18:30:39 +00:00
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BDF4 proc near
2014-07-01 18:30:39 +00:00
arg_0 = word ptr 4
push bp
mov bp, sp
push si
push di
mov di, [bp+arg_0]
call sub_BB51
mov ax, word_10BB2
cmp ax, word_10BBE
jg loc_BEC1
push 140h
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
push word ptr [bx+27D8h]
push di
call cdg_unput_for_upwards_motion_e_8
2014-07-01 18:30:39 +00:00
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
mov ax, [bx+27D8h]
cmp ax, word_10BC0
jle short loc_BE66
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov dx, word_10BBC
mov bx, ax
sub [bx+27D8h], dx
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
mov ax, [bx+27D8h]
cmp ax, word_10BC0
jge short loc_BE66
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov dx, word_10BC0
mov bx, ax
mov [bx+27D8h], dx
loc_BE66:
2014-07-01 18:30:39 +00:00
mov ax, word_10BBE
mov bx, 8
cwd
idiv bx
push ax
mov ax, word_10BB2
cwd
pop bx
idiv bx
mov dx, 7
sub dx, ax
mov si, dx
or si, si
jge short loc_BE84
xor si, si
loc_BE84:
2014-07-01 18:30:39 +00:00
cmp byte_10BB5, 0
jz short loc_BEA7
cmp byte_10BC6, 0
jz short loc_BEA7
push (504 shl 16) or 200
2014-07-01 18:30:39 +00:00
mov al, byte_10BC6
mov ah, 0
push ax
push si
call cdg_put_dissolve_e_8
2014-07-01 18:30:39 +00:00
mov byte_10BC7, 1
loc_BEA7:
push 320
2014-07-01 18:30:39 +00:00
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
push word ptr [bx+27D8h]
push di
push si
call cdg_put_dissolve_e_8
2014-07-01 18:30:39 +00:00
mov byte_10BC7, 0
loc_BEC1:
2014-07-01 18:30:39 +00:00
pop di
pop si
pop bp
retn 2
sub_BDF4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BEC7 proc near
2014-07-01 18:30:39 +00:00
arg_0 = word ptr 4
push bp
mov bp, sp
push si
push di
mov di, [bp+arg_0]
call sub_BB51
cmp word_10BB2, 0A1h
2014-07-01 18:30:39 +00:00
jg loc_BF78
cmp word_10BB2, 0A0h
2014-07-01 18:30:39 +00:00
jge short loc_BF57
push 140h
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
push word ptr [bx+27D8h]
push di
call cdg_unput_for_upwards_motion_e_8
2014-07-01 18:30:39 +00:00
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
dec word ptr [bx+27D8h]
mov ax, word_10BB2
mov bx, 20
2014-07-01 18:30:39 +00:00
cwd
idiv bx
mov si, ax
cmp si, 7
jle short loc_BF18
mov si, 7
loc_BF18:
2014-07-01 18:30:39 +00:00
cmp byte_10BB5, 0
jz short loc_BF3B
cmp byte_10BC6, 0
jz short loc_BF3B
push (504 shl 16) or 200
2014-07-01 18:30:39 +00:00
mov al, byte_10BC6
mov ah, 0
push ax
push si
call cdg_put_dissolve_e_8
2014-07-01 18:30:39 +00:00
mov byte_10BC7, 1
loc_BF3B:
push 320
2014-07-01 18:30:39 +00:00
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
push word ptr [bx+27D8h]
push di
push si
call cdg_put_dissolve_e_8
2014-07-01 18:30:39 +00:00
mov byte_10BC7, 0
jmp short loc_BF78
; ---------------------------------------------------------------------------
loc_BF57:
2015-01-12 21:48:13 +00:00
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
2014-07-01 18:30:39 +00:00
loc_BF78:
2014-07-01 18:30:39 +00:00
pop di
pop si
pop bp
retn 2
sub_BEC7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BF7E proc near
2014-07-01 18:30:39 +00:00
@@slot = word ptr 4
@@y_center = word ptr 6
@@x_center = word ptr 8
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
push si
cmp word_10BB2, 0A0h
2014-07-01 18:30:39 +00:00
jg short loc_BFAD
mov ax, word_10BB2
mov bx, 20
2014-07-01 18:30:39 +00:00
cwd
idiv bx
mov dx, 7
sub dx, ax
mov si, dx
or si, si
jge short loc_BFA0
xor si, si
loc_BFA0:
call cdg_put_dissolve_e_8 pascal, [bp+@@x_center], [bp+@@y_center], [bp+@@slot], si
2014-07-01 18:30:39 +00:00
loc_BFAD:
2014-07-01 18:30:39 +00:00
pop si
pop bp
retn 6
sub_BF7E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BFB2 proc near
2014-07-01 18:30:39 +00:00
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
push bp
mov bp, sp
push si
mov si, [bp+arg_4]
cmp word_10BBC, 2
jnz short loc_BFE3
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
mov word ptr [bx+27D8h], 108h
mov al, byte_10BB4
mov ah, 0
xor ax, 1
add ax, ax
mov bx, ax
mov word ptr [bx+27D8h], 107h
jmp short loc_C00E
; ---------------------------------------------------------------------------
loc_BFE3:
2014-07-01 18:30:39 +00:00
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov dx, 118h
sub dx, word_10BC4
mov bx, ax
mov [bx+27D8h], dx
mov al, byte_10BB4
mov ah, 0
xor ax, 1
add ax, ax
mov dx, 118h
sub dx, word_10BC4
mov bx, ax
mov [bx+27D8h], dx
loc_C00E:
2014-07-01 18:30:39 +00:00
mov word_10BB2, 0
loc_C014:
2014-07-01 18:30:39 +00:00
push si
call sub_BDF4
call sub_BCD5
inc word_10BB2
push [bp+arg_2]
push 100h
call sub_BCA5
or ax, ax
jz short loc_C014
mov word_10BB2, 0
loc_C032:
2014-07-01 18:30:39 +00:00
push si
call sub_BEC7
call sub_BCD5
inc word_10BB2
push [bp+arg_0]
push 100h
call sub_BCA5
or ax, ax
jz short loc_C032
2015-01-12 21:48:13 +00:00
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
2014-07-01 18:30:39 +00:00
call sub_BCD5
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
2014-07-01 18:30:39 +00:00
call sub_BCD5
pop si
pop bp
retn 6
sub_BFB2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C097 proc near
2014-07-01 18:30:39 +00:00
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
push bp
mov bp, sp
push si
push di
mov si, [bp+arg_4]
cmp word_10BBC, 2
jnz short loc_C0C9
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
mov word ptr [bx+27D8h], 108h
mov al, byte_10BB4
mov ah, 0
xor ax, 1
add ax, ax
mov bx, ax
mov word ptr [bx+27D8h], 107h
jmp short loc_C0D6
; ---------------------------------------------------------------------------
loc_C0C9:
2014-07-01 18:30:39 +00:00
mov ax, 118h
sub ax, word_10BC4
mov word_10BC8, ax
mov word_10BCA, ax
loc_C0D6:
2014-07-01 18:30:39 +00:00
mov word_10BB2, 0
loc_C0DC:
2014-07-01 18:30:39 +00:00
push si
call sub_BDF4
mov byte_10BC7, 1
push 320
2014-07-01 18:30:39 +00:00
push word_10BC2
lea ax, [si-1]
push ax
push 0
call cdg_put_dissolve_e_8
2014-07-01 18:30:39 +00:00
mov byte_10BC7, 0
call sub_BCD5
inc word_10BB2
push [bp+arg_2]
push 100h
call sub_BCA5
or ax, ax
jz short loc_C0DC
mov word_10BB2, 0
loc_C114:
cmp word_10BB2, 0A1h
2014-07-01 18:30:39 +00:00
jg short loc_C12A
push 320
2014-07-01 18:30:39 +00:00
push word_10BC2
lea ax, [si-1]
push ax
call cdg_unput_for_upwards_motion_e_8
2014-07-01 18:30:39 +00:00
loc_C12A:
2014-07-01 18:30:39 +00:00
push si
call sub_BEC7
cmp word_10BB2, 0A1h
2014-07-01 18:30:39 +00:00
jg short loc_C199
mov ax, word_10BB2
dec ax
mov bx, 20
2014-07-01 18:30:39 +00:00
cwd
idiv bx
mov di, ax
cmp di, 7
jle short loc_C14A
mov di, 7
loc_C14A:
2014-07-01 18:30:39 +00:00
cmp byte_10BB4, 0
jnz short loc_C155
dec word_10BC2
loc_C155:
2014-07-01 18:30:39 +00:00
mov byte_10BC7, 1
cmp word_10BB2, 0A0h
2014-07-01 18:30:39 +00:00
jge short loc_C173
push 320
2014-07-01 18:30:39 +00:00
push word_10BC2
lea ax, [si-1]
push ax
push di
call cdg_put_dissolve_e_8
2014-07-01 18:30:39 +00:00
jmp short loc_C194
; ---------------------------------------------------------------------------
loc_C173:
2015-01-12 21:48:13 +00:00
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
2014-07-01 18:30:39 +00:00
loc_C194:
2014-07-01 18:30:39 +00:00
mov byte_10BC7, 0
loc_C199:
2014-07-01 18:30:39 +00:00
call sub_BCD5
inc word_10BB2
push [bp+arg_0]
push 100h
call sub_BCA5
or ax, ax
jz loc_C114
2015-01-12 21:48:13 +00:00
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
2014-07-01 18:30:39 +00:00
call sub_BCD5
2015-01-12 21:48:13 +00:00
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
2014-07-01 18:30:39 +00:00
call sub_BCD5
pop di
pop si
pop bp
retn 6
sub_C097 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C1FD proc near
2014-07-01 18:30:39 +00:00
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
push bp
mov bp, sp
cmp word_10BBC, 2
jnz short loc_C22A
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
mov word ptr [bx+27D8h], 108h
mov al, byte_10BB4
mov ah, 0
xor ax, 1
add ax, ax
mov bx, ax
mov word ptr [bx+27D8h], 107h
jmp short loc_C237
; ---------------------------------------------------------------------------
loc_C22A:
2014-07-01 18:30:39 +00:00
mov ax, 118h
sub ax, word_10BC4
mov word_10BC8, ax
mov word_10BCA, ax
loc_C237:
2014-07-01 18:30:39 +00:00
mov word_10BB2, 0
loc_C23D:
2014-07-01 18:30:39 +00:00
push [bp+arg_4]
call sub_BDF4
call sub_BCD5
inc word_10BB2
push [bp+arg_2]
push 100h
call sub_BCA5
or ax, ax
jz short loc_C23D
mov word_10BB2, 0
loc_C25D:
2014-07-01 18:30:39 +00:00
call sub_BB51
call sub_BCD5
inc word_10BB2
push [bp+arg_0]
push 100h
call sub_BCA5
or ax, ax
jz short loc_C25D
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
mov ax, [bx+27D8h]
mov word_10BC2, ax
pop bp
retn 6
sub_C1FD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C288 proc near
2014-07-01 18:30:39 +00:00
var_4 = word ptr -4
var_2 = word ptr -2
enter 4, 0
push si
push di
push (352 shl 16) or 174
push 2Fh
mov al, playchar_10BD7
2014-07-01 18:30:39 +00:00
mov ah, 0
shl ax, 2
mov bx, ax
pushd aVERDICT_PLAYCHARS[bx]
call graph_putsa_fx
push (360 shl 16) or 199
2014-07-01 18:30:39 +00:00
push 2Fh ; '/'
mov al, _rank
2014-07-01 18:30:39 +00:00
mov ah, 0
shl ax, 2
mov bx, ax
pushd aVERDICT_RANKS[bx]
call graph_putsa_fx
mov si, 408
2014-07-01 18:30:39 +00:00
mov [bp+var_4], 0
mov [bp+var_2], 8
jmp short loc_C319
; ---------------------------------------------------------------------------
loc_C2D5:
2014-07-01 18:30:39 +00:00
mov bx, [bp+var_2]
mov al, [bx+27DCh]
mov ah, 0
mov di, ax
cmp [bp+var_4], 0
jnz short loc_C2F7
or di, di
jz short loc_C2F7
mov ax, [bp+var_2]
shl ax, 3
sub si, ax
mov [bp+var_4], 1
loc_C2F7:
2014-07-01 18:30:39 +00:00
cmp [bp+var_4], 0
jz short loc_C316
push si
push (224 shl 16) or 2Fh
2014-07-01 18:30:39 +00:00
mov bx, di
shl bx, 2
pushd aVERDICT_NUMBERS[bx]
call graph_putsa_fx
add si, 16
2014-07-01 18:30:39 +00:00
loc_C316:
2014-07-01 18:30:39 +00:00
dec [bp+var_2]
loc_C319:
2014-07-01 18:30:39 +00:00
cmp [bp+var_2], 0
jg short loc_C2D5
mov al, _rem_credits
2014-07-01 18:30:39 +00:00
mov ah, 0
mov di, ax
push si
push (224 shl 16) or 2Fh
2014-07-01 18:30:39 +00:00
mov bx, di
shl bx, 2
pushd aVERDICT_NUMBERS[bx]
call graph_putsa_fx
push (408 shl 16) or 248
push 2Fh
2014-07-01 18:30:39 +00:00
mov bx, di
shl bx, 2
pushd aVERDICT_NUMBERS[bx]
call graph_putsa_fx
mov al, _skill
2014-07-01 18:30:39 +00:00
mov ah, 0
mov bx, 100
2014-07-01 18:30:39 +00:00
cwd
idiv bx
mov di, ax
mov si, 408
2014-07-01 18:30:39 +00:00
mov [bp+var_4], 0
or di, di
jz short loc_C38D
sub si, 16
2014-07-01 18:30:39 +00:00
mov [bp+var_4], 1
push si
push (291 shl 16) or 2Fh
2014-07-01 18:30:39 +00:00
mov bx, di
shl bx, 2
pushd aVERDICT_NUMBERS[bx]
call graph_putsa_fx
add si, 16
2014-07-01 18:30:39 +00:00
loc_C38D:
mov al, _skill
2014-07-01 18:30:39 +00:00
mov ah, 0
mov bx, 100
2014-07-01 18:30:39 +00:00
cwd
idiv bx
mov bx, 10
2014-07-01 18:30:39 +00:00
mov ax, dx
cwd
idiv bx
mov di, ax
or di, di
jz short loc_C3B4
cmp [bp+var_4], 0
jnz short loc_C3B4
mov [bp+var_4], 1
sub si, 8
loc_C3B4:
2014-07-01 18:30:39 +00:00
cmp [bp+var_4], 0
jz short loc_C3D3
push si
push (291 shl 16) or 2Fh
2014-07-01 18:30:39 +00:00
mov bx, di
shl bx, 2
pushd aVERDICT_NUMBERS[bx]
call graph_putsa_fx
add si, 16
2014-07-01 18:30:39 +00:00
loc_C3D3:
mov al, _skill
2014-07-01 18:30:39 +00:00
mov ah, 0
mov bx, 10
2014-07-01 18:30:39 +00:00
cwd
idiv bx
mov di, dx
push si
push (291 shl 16) or 2Fh
2014-07-01 18:30:39 +00:00
mov bx, di
shl bx, 2
pushd aVERDICT_NUMBERS[bx]
call graph_putsa_fx
lea ax, [si+16]
call graph_putsa_fx pascal, ax, (291 shl 16) or 2Fh, ds, offset aU_ ; "<22>_"
2014-07-01 18:30:39 +00:00
pop di
pop si
leave
retn
sub_C288 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C40D proc near
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
push si
push di
kajacall KAJA_SONG_FADE, 16
2014-07-01 18:30:39 +00:00
push 4
2014-08-26 22:33:43 +00:00
call palette_black_out
call _snd_delay_until_volume stdcall, 255
2014-07-01 18:30:39 +00:00
pop cx
kajacall KAJA_SONG_STOP
2014-07-01 18:30:39 +00:00
mov byte_106B0, 50h ; 'P'
mov si, 1
jmp short loc_C44B
; ---------------------------------------------------------------------------
loc_C43C:
les bx, _resident
2014-07-01 18:30:39 +00:00
assume es:nothing
add bx, si
mov al, es:[bx+resident_t.pid_winner]
2014-07-01 18:30:39 +00:00
mov [si+27DCh], al
inc si
loc_C44B:
2014-07-01 18:30:39 +00:00
cmp si, 9
jl short loc_C43C
les bx, _resident
2014-07-01 18:30:39 +00:00
mov al, 3
sub al, es:[bx+resident_t.rem_credits]
mov _rem_credits, al
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
2014-07-01 18:30:39 +00:00
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
mov playchar_10BD7, al
mov al, es:[bx+resident_t.rank]
mov _rank, al
mov al, es:[bx+resident_t.skill]
mov _skill, al
2014-07-01 18:30:39 +00:00
mov al, byte_10BD3
mov ah, 0
cmp ax, 3
jz short loc_C48B
cmp ax, 4
jz short loc_C49E
jmp short loc_C4B1
; ---------------------------------------------------------------------------
loc_C48B:
2014-07-01 18:30:39 +00:00
mov al, byte_10BD2
mov ah, 0
cwd
sub ax, dx
sar ax, 1
add al, _skill
2014-07-01 18:30:39 +00:00
add al, 2
mov _skill, al
2014-07-01 18:30:39 +00:00
loc_C49E:
2014-07-01 18:30:39 +00:00
mov al, byte_10BD2
mov ah, 0
cwd
sub ax, dx
sar ax, 1
add al, _skill
2014-07-01 18:30:39 +00:00
add al, 7
mov _skill, al
2014-07-01 18:30:39 +00:00
loc_C4B1:
2014-07-01 18:30:39 +00:00
cmp byte_10BD3, 5
jb short loc_C4C0
mov al, _skill
add al, 15
mov _skill, al
2014-07-01 18:30:39 +00:00
loc_C4C0:
2014-07-01 18:30:39 +00:00
cmp byte_10BD4, 0
jz short loc_C4CC
mov _skill, 100
2014-07-01 18:30:39 +00:00
loc_C4CC:
cmp _skill, 100
2014-07-01 18:30:39 +00:00
jbe short loc_C4D8
mov _skill, 100
2014-07-01 18:30:39 +00:00
loc_C4D8:
call snd_load c, offset aEd_m, ds, SND_LOAD_SONG
2014-08-23 13:47:05 +00:00
mov PaletteTone, 0
2014-08-23 14:11:16 +00:00
call far ptr palette_show
2014-07-01 18:30:39 +00:00
push ds
push offset aEdbk1_rgb ; "edbk1.rgb"
2014-08-31 03:14:54 +00:00
call palette_entry_rgb
2014-08-23 14:11:16 +00:00
call far ptr palette_show
2015-01-12 21:48:13 +00:00
call grcg_setcolor pascal, (GC_RMW shl 16) + 8
graph_accesspage 1
call grcg_byteboxfill_x pascal, large 0, (((RES_X - 1) / 8) shl 16) or (RES_Y - 1)
graph_accesspage 0
call grcg_byteboxfill_x pascal, large 0, (((RES_X - 1) / 8) shl 16) or (RES_Y - 1)
2015-01-12 21:48:13 +00:00
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
graph_accesspage 1
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
graph_accesspage 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
graph_showpage 1
call cdg_load_single_noalpha pascal, 0, ds, offset aStf1_cdg, 0
call cdg_load_single_noalpha pascal, 1, ds, offset aStf11_cdg, 0
call cdg_load_single pascal, 2, ds, offset aStf3_cdg, 0
call cdg_load_single pascal, 3, ds, offset aStf4_cdg, 0
call cdg_load_single_noalpha pascal, 4, ds, offset aStf5_cdg, 0
call cdg_load_single_noalpha pascal, 5, ds, offset aStf6_cdg, 0
call cdg_load_single_noalpha pascal, 6, ds, offset aStf7_cdg, 0
call cdg_load_single_noalpha pascal, 7, ds, offset aStf8_cdg, 0
call cdg_load_single_noalpha pascal, 8, ds, offset aStf9_cdg, 0
call cdg_load_single_noalpha pascal, 9, ds, offset aStf10_cdg, 0
call cdg_load_single_noalpha pascal, 10, ds, offset aStf2_cdg, 0
call cdg_load_single_noalpha pascal, 11, ds, offset aStf12_cdg, 0
2014-07-01 18:30:39 +00:00
call sub_BB66
mov word_10BB2, 0
les bx, _resident
mov eax, es:[bx+resident_t.rand]
2014-08-30 10:13:04 +00:00
mov random_seed, eax
2014-07-01 18:30:39 +00:00
mov byte_10BB4, 0
mov PaletteTone, 100
2014-08-23 14:11:16 +00:00
call far ptr palette_show
kajacall KAJA_SONG_PLAY
2014-07-01 18:30:39 +00:00
mov byte_10BB6, 1
mov byte_10BB5, 1
push 1
2014-11-23 21:25:22 +00:00
call frame_delay
mov vsync_Count1, 0
2014-07-01 18:30:39 +00:00
loc_C657:
2014-07-01 18:30:39 +00:00
call sub_BB51
call sub_BCD5
inc word_10BB2
push 40100h
2014-07-01 18:30:39 +00:00
call sub_BCA5
or ax, ax
jz short loc_C657
mov byte_10BC7, 0
mov word_10BC4, 0
mov word_10BC0, 0C8h
2014-07-01 18:30:39 +00:00
mov word_10BBC, 2
mov word_10BBE, 41h ; 'A'
mov byte_10BC6, 0
pushd 8
2014-07-01 18:30:39 +00:00
push 0Ah
call sub_BFB2
mov word_10BBC, 1
mov word_10BBE, 0A1h
2014-07-01 18:30:39 +00:00
mov byte_10BB6, 0
push 10010h
2014-07-01 18:30:39 +00:00
push 14h
call sub_BFB2
mov word_10BC4, 20h ; ' '
mov word_10BC0, 0A8h ; '<27>'
push 20016h
2014-07-01 18:30:39 +00:00
push 18h
call sub_C1FD
mov byte_10BC6, 7
mov word_10BC0, 0D8h
2014-07-01 18:30:39 +00:00
mov word_10BC4, 0FFF0h
push 30020h
2014-07-01 18:30:39 +00:00
push 22h ; '"'
call sub_C097
mov byte_10BC6, 0
mov word_10BC0, 0C8h
2014-07-01 18:30:39 +00:00
mov word_10BC4, 0
push 40024h
2014-07-01 18:30:39 +00:00
push 26h ; '&'
call sub_BFB2
push 0B002Ah
2014-07-01 18:30:39 +00:00
push 2Ch ; ','
call sub_BFB2
push 50030h
2014-07-01 18:30:39 +00:00
push 32h ; '2'
call sub_BFB2
push 60036h
2014-07-01 18:30:39 +00:00
push 38h ; '8'
call sub_BFB2
push 0A003Ch
2014-07-01 18:30:39 +00:00
push 3Eh ; '>'
call sub_BFB2
mov word_10BB2, 0
loc_C735:
2014-07-01 18:30:39 +00:00
call sub_BB51
push 1400080h
2014-07-01 18:30:39 +00:00
push 8
call sub_BF7E
push 0C000F0h
2014-07-01 18:30:39 +00:00
push 9
call sub_BF7E
call sub_BCD5
inc word_10BB2
push 420100h
2014-07-01 18:30:39 +00:00
call sub_BCA5
or ax, ax
jz short loc_C735
mov al, 1
sub al, byte_10BB4
graph_accesspage al
2014-07-01 18:30:39 +00:00
call sub_C288
graph_accesspage byte_10BB4
2014-07-01 18:30:39 +00:00
call sub_C288
mov word_10BB2, 0
xor di, di
loc_C781:
call input_mode_interface
2014-07-01 18:30:39 +00:00
call sub_BB51
call sub_BCD5
inc word_10BB2
or di, di
jz short loc_C7AB
2014-08-23 13:47:05 +00:00
mov PaletteTone, di
2014-08-23 14:11:16 +00:00
call far ptr palette_show
2014-07-01 18:30:39 +00:00
test byte ptr word_10BB2, 1
jz short loc_C781
dec di
or di, di
jnz short loc_C781
jmp short loc_C7CD
; ---------------------------------------------------------------------------
loc_C7AB:
cmp _input_sp, INPUT_NONE
2014-07-01 18:30:39 +00:00
jz short loc_C781
cmp word_10BB2, 100h
jle short loc_C781
kajacall KAJA_SONG_FADE, 8
mov di, 100
2014-07-01 18:30:39 +00:00
mov word_10BB2, 0
jmp short loc_C781
; ---------------------------------------------------------------------------
loc_C7CD:
2014-07-01 18:30:39 +00:00
xor si, si
jmp short loc_C7D8
; ---------------------------------------------------------------------------
loc_C7D1:
call cdg_free pascal, si
2014-07-01 18:30:39 +00:00
inc si
loc_C7D8:
cmp si, CDG_SLOT_COUNT
2014-07-01 18:30:39 +00:00
jl short loc_C7D1
pop di
pop si
pop bp
retn
sub_C40D endp
db 0
2014-07-01 18:30:39 +00:00
mainl_01_TEXT ends
2014-07-01 18:30:39 +00:00
; ===========================================================================
; Segment type: Pure code
seg2 segment word public 'CODE' use16
assume cs:seg2
;org 2
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
2014-07-01 18:30:39 +00:00
include th01/hardware/vram_planes_set.asm
2014-07-01 18:30:39 +00:00
db 0
include th02/snd/detmode.asm
include th02/snd/pmd_res.asm
include th02/snd/delayvol.asm
include th02/snd/load.asm
include th03/math/vector2.asm
2014-07-01 18:30:39 +00:00
nop
include th03/math/vector2_between_plus.asm
2019-11-19 14:26:47 +00:00
include th02/exit.asm
2014-07-01 18:30:39 +00:00
db 0
include th03/formats/cdg_put.asm
include th03/formats/cdg_put_hflip.asm
include th02/hardware/frame_delay.asm
2014-07-01 18:30:39 +00:00
db 0
include th03/hardware/input_sense.asm
include th02/formats/pi_palette_apply.asm
include th02/formats/pi_put.asm
include th03/formats/pi_put_interlace.asm
include th02/snd/se.asm
include th02/snd/kajaint.asm
include th02/initmain.asm
include th03/formats/cdg_load.asm
2014-07-01 18:30:39 +00:00
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_D16F proc far
2014-07-01 18:30:39 +00:00
push bp
mov bp, sp
call pfend
graph_accesspage 0
graph_showpage al
call vsync_end
call mem_unassign
2014-08-23 11:46:31 +00:00
call js_end
call egc_start
2014-07-01 18:30:39 +00:00
pop bp
retf
sub_D16F endp
include th03/hardware/grppsafx.asm
include th03/snd/delaymea.asm
include th03/hardware/input_wait_ok.asm
include th02/formats/pi_load.asm
include th03/formats/pi_put_quarter.asm
extern INPUT_MODE_INTERFACE:proc
extern INPUT_WAIT_FOR_CHANGE:proc
extern CDG_PUT_NOALPHA_8:proc
extern _hflip_lut_generate:proc
seg2 ends
2014-07-01 18:30:39 +00:00
.data
dw offset a00sl_cd2
dw offset a02sl_cd2
dw offset a04sl_cd2
dw offset a06sl_cd2
dw offset a08sl_cd2
dw offset a10sl_cd2
dw offset a12sl_cd2
dw offset a14sl_cd2
dw offset a16sl_cd2
2014-07-01 18:30:39 +00:00
dd a@00tx_txt ; "@00TX.TXT"
dd a@01tx_txt ; "@01TX.TXT"
dd a@02tx_txt ; "@02TX.TXT"
dd a@03tx_txt ; "@03TX.TXT"
dd a@04tx_txt ; "@04TX.TXT"
dd a@05tx_txt ; "@05TX.TXT"
dd a@06tx_txt ; "@06TX.TXT"
dd a@07tx_txt ; "@07TX.TXT"
dd a@08tx_txt ; "@08TX.TXT"
off_E4B6 dd a@00dm0_txt
2014-07-01 18:30:39 +00:00
; "@00DM0.TXT"
CHAR_TITLE dd TITLE_REIMU ; " <20><><EFBFBD>Ɠ`<60><><EFBFBD><EFBFBD><EFBFBD>ێ炷<DB8E><E782B7><EFBFBD>ޏ<EFBFBD> "
CHAR_NAME dd NAME_REIMU ; " <20><><EFBFBD><EFBFBD><EFBFBD>@<40>˖<EFBFBD>"
dd TITLE_MIMA ; " <20>v<EFBFBD><76><EFBFBD>̖<EFBFBD><CC96>ɉ^<5E><><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD>_ "
dd NAME_MIMA ; " <09><> <20><>"
dd TITLE_MARISA ; " <20><><EFBFBD>@<40>ƍg<C68D><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ鑶<C882><E991B6> "
dd NAME_MARISA ; " <20><><EFBFBD>J<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
dd TITLE_ELLEN ; "<22>͂<EFBFBD><CD82><EFBFBD><E782AB><EFBFBD>̂ŗ<CC82><C597>𖲌<EFBFBD><F096B28C><EFBFBD><E99682>"
dd NAME_ELLEN ; "<22>@<40>@<40>G<EFBFBD><47><EFBFBD><EFBFBD>"
dd TITLE_KOTOHIME ; " <09>e<EFBFBD><65><EFBFBD>ɔ<EFBFBD><C994>𖲂݂<F096B282><DD82>P "
dd NAME_KOTOHIME ; " <20><><EFBFBD>e<EFBFBD>P"
dd TITLE_KANA ; " <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
dd NAME_KANA ; "<22>J<EFBFBD>i<EFBFBD>E<EFBFBD>A<EFBFBD>i<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>"
dd TITLE_RIKAKO ; " <20>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><54><EFBFBD>Ȋw "
dd NAME_RIKAKO ; "<22>@<40><><EFBFBD>q<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>q"
dd TITLE_CHIYURI ; "<22>@ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E996B2><EFBFBD>̏Z<CC8F>l "
dd NAME_CHIYURI ; " <20>k<EFBFBD><6B><EFBFBD>́@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
dd TITLE_YUMEMI ; "<22>@ <20>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>`<60><><EFBFBD>@<40>@<40>@ "
dd NAME_YUMEMI ; " <20>@<40><><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD>"
word_E502 dw offset aSt_cd2
word_E504 dw offset aStnx1_pi
2014-07-01 18:30:39 +00:00
a0016_pi db '0016.pi',0
db 0
db 0
db 0
db 0
a00sl_cd2 db '00sl.cd2',0
a02sl_cd2 db '02sl.cd2',0
a04sl_cd2 db '04sl.cd2',0
a06sl_cd2 db '06sl.cd2',0
a08sl_cd2 db '08sl.cd2',0
a10sl_cd2 db '10sl.cd2',0
a12sl_cd2 db '12sl.cd2',0
a14sl_cd2 db '14sl.cd2',0
a16sl_cd2 db '16sl.cd2',0
a@00tx_txt db '@00TX.TXT',0
a@01tx_txt db '@01TX.TXT',0
a@02tx_txt db '@02TX.TXT',0
a@03tx_txt db '@03TX.TXT',0
a@04tx_txt db '@04TX.TXT',0
a@05tx_txt db '@05TX.TXT',0
a@06tx_txt db '@06TX.TXT',0
a@07tx_txt db '@07TX.TXT',0
a@08tx_txt db '@08TX.TXT',0
a@00dm0_txt db '@00DM0.TXT',0
TITLE_REIMU db ' <20><><EFBFBD>Ɠ`<60><><EFBFBD><EFBFBD><EFBFBD>ێ炷<DB8E><E782B7><EFBFBD>ޏ<EFBFBD> ',0
NAME_REIMU db ' <20><><EFBFBD><EFBFBD><EFBFBD>@<40>˖<EFBFBD>',0
TITLE_MIMA db ' <20>v<EFBFBD><76><EFBFBD>̖<EFBFBD><CC96>ɉ^<5E><><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD>_ ',0
NAME_MIMA db ' <20><> <20><>',0
TITLE_MARISA db ' <20><><EFBFBD>@<40>ƍg<C68D><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ鑶<C882><E991B6> ',0
NAME_MARISA db ' <20><><EFBFBD>J<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',0
TITLE_ELLEN db '<27>͂<EFBFBD><CD82><EFBFBD><E782AB><EFBFBD>̂ŗ<CC82><C597>𖲌<EFBFBD><F096B28C><EFBFBD><E99682>',0
NAME_ELLEN db '<27>@<40>@<40>G<EFBFBD><47><EFBFBD><EFBFBD>',0
TITLE_KOTOHIME db ' <20>e<EFBFBD><65><EFBFBD>ɔ<EFBFBD><C994>𖲂݂<F096B282><DD82>P ',0
NAME_KOTOHIME db ' <20><><EFBFBD>e<EFBFBD>P',0
TITLE_KANA db ' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',0
NAME_KANA db '<27>J<EFBFBD>i<EFBFBD>E<EFBFBD>A<EFBFBD>i<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>',0
TITLE_RIKAKO db ' <20>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><54><EFBFBD>Ȋw ',0
NAME_RIKAKO db '<27>@<40><><EFBFBD>q<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>q',0
TITLE_CHIYURI db '<27>@ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E996B2><EFBFBD>̏Z<CC8F>l ',0
NAME_CHIYURI db ' <20>k<EFBFBD><6B><EFBFBD>́@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
TITLE_YUMEMI db '<27>@ <20>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>`<60><><EFBFBD>@<40>@<40>@ ',0
NAME_YUMEMI db ' <20>@<40><><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD>',0
include th03/formats/cfg_lres[data].asm
aLogo0_rgb db 'logo0.rgb',0
aLogo_cd2 db 'logo.cd2',0
aLogo5_cdg db 'logo5.cdg',0
aLogo1_rgb db 'logo1.rgb',0
2014-07-01 18:30:39 +00:00
aSt_cd2 db 'st.cd2',0
aStnx1_pi db 'stnx1.pi',0
aStnx0_pi db 'stnx0.pi',0
2014-07-01 18:30:39 +00:00
a00mm_m db '00mm.m',0
aDec_m db 'dec.m',0
aEn2_pi db 'EN2.pi',0
aEnemy00_pi db 'ENEMY00.pi',0
aEnemy01_pi db 'ENEMY01.pi',0
aEnemy02_pi db 'ENEMY02.pi',0
aEnemy03_pi db 'ENEMY03.pi',0
aEnemy04_pi db 'ENEMY04.pi',0
aYume_efc db 'YUME.EFC',0
aCOul db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1.dat',0
aMikoft_bft db 'MIKOFT.bft',0
2014-07-01 18:30:39 +00:00
; char path[]
path db 'op',0
aWin_m db 'win.m',0
2014-07-01 18:30:39 +00:00
; char aMain[]
aMain db 'main',0
2014-08-30 11:44:36 +00:00
include libs/master.lib/atan8[data].asm
2014-08-23 10:08:48 +00:00
include libs/master.lib/bfnt_id[data].asm
include libs/master.lib/clip[data].asm
2014-08-27 22:05:06 +00:00
include libs/master.lib/edges[data].asm
include libs/master.lib/fil[data].asm
include libs/master.lib/dos_ropen[data].asm
include libs/master.lib/gaiji_backup[data].asm
2014-08-31 08:08:09 +00:00
include libs/master.lib/gaiji_entry_bfnt[data].asm
include libs/master.lib/grp[data].asm
include libs/master.lib/js[data].asm
2014-08-23 13:47:05 +00:00
include libs/master.lib/pal[data].asm
include libs/master.lib/pf[data].asm
2014-08-30 10:13:04 +00:00
include libs/master.lib/rand[data].asm
include libs/master.lib/sin8[data].asm
2014-08-15 12:26:44 +00:00
include libs/master.lib/tx[data].asm
include libs/master.lib/vs[data].asm
2014-08-27 23:37:48 +00:00
include libs/master.lib/wordmask[data].asm
include libs/master.lib/mem[data].asm
include libs/master.lib/super_entry_bfnt[data].asm
include libs/master.lib/superpa[data].asm
_snd_active db 0
2014-07-01 18:30:39 +00:00
db 0
include libs/master.lib/respal_exist[data].asm
include th03/snd/se_state[data].asm
include th02/formats/pfopen[data].asm
include th03/formats/cdg[data].asm
include th03/snd/se_priority[data].asm
a0 db '0',0
aOver_pi db 'over.pi',0
include th03/formats/pi_put_mask[data].asm
asc_EFC2 db ' ', 0
even
aSCORE_PLAYCHARS label dword
2014-07-01 18:30:39 +00:00
dd aNoEntry ; " No Entry! "
dd aB@b@sCB@b@ ; "<22>@<40>@<40>˖<EFBFBD><CB96>@<40>@"
dd aB@b@cgcvb@b@ ; "<22>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>@<40>@"
dd aB@cvcanB@ ; " <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ "
dd aB@gggmgub@ ; " <20>@<40>G<EFBFBD><47><EFBFBD><EFBFBD><EFBFBD>@ "
dd aB@pmuexpb@ ; " <20>@<40><><EFBFBD>e<EFBFBD>P<EFBFBD>@ "
dd aB@Gjgi ; " <20>@ <20>J<EFBFBD>i "
dd aB@canboq ; " <20>@<40><><EFBFBD><EFBFBD><EFBFBD>q "
dd aB@vVfvsb@ ; " <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ "
dd aB@CF ; " <20>@ <20><><EFBFBD><EFBFBD><EFBFBD>@ "
db 14h
db 4
db 8
db 0Ch
db 17h
db 0Eh
db 0Eh
db 0Eh
db 0Ch
db 8
db 0Ch
db 0
db 0Eh
db 0Eh
db 0Eh
db 0Eh
db 0Ch
db 0
db 14h
db 8
db 15h
db 0
db 0Eh
db 0Eh
db 4
db 0Bh
db 4
db 10h
db 0Eh
db 0Eh
db 0Eh
db 0Eh
db 0Ah
db 11h
db 16h
db 11h
db 7
db 8
db 0Ch
db 4
db 0Ah
db 0
db 10h
db 0
db 0Eh
db 0Eh
db 0Eh
db 0Eh
db 14h
db 8
db 0Ah
db 0
db 0Ah
db 11h
db 0Eh
db 0Eh
db 2
db 7
db 8
db 1Bh
db 17h
db 14h
db 8
db 0Eh
db 1Bh
db 17h
db 0Ch
db 4
db 0Ch
db 8
db 0Eh
db 0Eh
word_ED66 dw 0A04h
word_ED68 dw 0A0Dh
unk_ED6A db 0
2014-07-01 18:30:39 +00:00
db 0
db 0
db 0
db 0
db 0
db 0
db 0
aNoEntry db ' No Entry! ',0
aB@b@sCB@b@ db '<27>@<40>@<40>˖<EFBFBD><CB96>@<40>@',0
aB@b@cgcvb@b@ db '<27>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>@<40>@',0
aB@cvcanB@ db ' <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ ',0
aB@gggmgub@ db ' <20>@<40>G<EFBFBD><47><EFBFBD><EFBFBD><EFBFBD>@ ',0
aB@pmuexpb@ db ' <20>@<40><><EFBFBD>e<EFBFBD>P<EFBFBD>@ ',0
aB@Gjgi db ' <20>@ <20>J<EFBFBD>i ',0
aB@canboq db ' <20>@<40><><EFBFBD><EFBFBD><EFBFBD>q ',0
aB@vVfvsb@ db ' <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ ',0
aB@CF db ' <20>@ <20><><EFBFBD><EFBFBD><EFBFBD>@ ',0
2014-07-01 18:30:39 +00:00
aYume_nem db 'YUME.NEM',0
aRft0_cdg db 'rft0.cdg',0
aRegib_pi db 'regib.pi',0
aRegi2_bft db 'regi2.bft',0
aRegi1_bft db 'regi1.bft',0
aScore_m db 'score.m',0
aConti_pi db 'conti.pi',0
aConti_cd2 db 'conti.cd2',0
aOver_pi_0 db 'over.pi',0
aOver_m db 'over.m',0
2014-07-01 18:30:39 +00:00
db 0
off_EE4E dd a@00ed_txt
2014-07-01 18:30:39 +00:00
; "@00ED.TXT"
db 3Ch ; <
db 0
db 7Eh ; ~
db 0
db 0FFh
db 0
db 0FFh
db 0
db 0FFh
db 0
db 0FFh
db 0
db 7Eh ; ~
db 0
db 3Ch ; <
db 0
db 0
db 0
db 18h
db 0
db 3Ch ; <
db 0
db 7Eh ; ~
db 0
db 7Eh ; ~
db 0
db 3Ch ; <
db 0
db 18h
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 18h
db 0
db 3Ch ; <
db 0
db 3Ch ; <
db 0
db 18h
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 18h
db 0
db 18h
db 0
db 0
db 0
db 0
db 0
db 0
db 0
include th03/formats/cdg_put_dissolve[data].asm
aVERDICT_PLAYCHARS label dword
2014-07-01 18:30:39 +00:00
dd aFocab@sC_0 ; " <20><><EFBFBD><EFBFBD><EFBFBD>@<40>˖<EFBFBD>"
dd aCgCv_0 ; " <09><> <20><>"
dd aCIjb@cvcan_0 ; " <20><><EFBFBD>J<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
dd aB@b@gggmgu_0 ; "<22>@<40>@<40>G<EFBFBD><47><EFBFBD><EFBFBD>"
dd aPmuexp_0 ; " <20><><EFBFBD>e<EFBFBD>P"
dd aGjgibegagigx_0 ; "<22>J<EFBFBD>i<EFBFBD>E<EFBFBD>A<EFBFBD>i<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>"
dd aB@tisqb@canb_0 ; "<22>@<40><><EFBFBD>q<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>q"
dd aCkftiB@vVfvs_0 ; " <20>k<EFBFBD><6B><EFBFBD>́@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
dd aB@iknsb@cF_0 ; " <20>@<40><><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD>"
aVERDICT_RANKS label dword
2014-07-01 18:30:39 +00:00
dd aVdvbvuvs ; " <20>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
dd aVmvpvtvnvbvm ; " <20>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
dd aVgvbvtvd ; " <20>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
dd aVkvxvovbvfvivg ; "<22>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
aVERDICT_NUMBERS label dword
2014-07-01 18:30:39 +00:00
dd aVo ; "<22>O"
dd aVp ; "<22>P"
dd aVq ; "<22>Q"
dd aVr ; "<22>R"
dd aVs ; "<22>S"
dd aVt ; "<22>T"
dd aVu ; "<22>U"
dd aVv ; "<22>V"
dd aVw ; "<22>W"
dd aVx ; "<22>X"
a@00ed_txt db '@00ED.TXT',0
a@99ed_txt db '@99ED.TXT',0
2014-07-01 18:30:39 +00:00
; char aOp_0[]
aOp_0 db 'op',0
aFocab@sC_0 db ' <20><><EFBFBD><EFBFBD><EFBFBD>@<40>˖<EFBFBD>',0
aCgCv_0 db ' <20><> <20><>',0
aCIjb@cvcan_0 db ' <20><><EFBFBD>J<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',0
aB@b@gggmgu_0 db '<27>@<40>@<40>G<EFBFBD><47><EFBFBD><EFBFBD>',0
aPmuexp_0 db ' <20><><EFBFBD>e<EFBFBD>P',0
aGjgibegagigx_0 db '<27>J<EFBFBD>i<EFBFBD>E<EFBFBD>A<EFBFBD>i<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>',0
aB@tisqb@canb_0 db '<27>@<40><><EFBFBD>q<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>q',0
aCkftiB@vVfvs_0 db ' <20>k<EFBFBD><6B><EFBFBD>́@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aB@iknsb@cF_0 db ' <20>@<40><><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD>',0
aVdvbvuvs db ' <20>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aVmvpvtvnvbvm db ' <20>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aVgvbvtvd db ' <20>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aVkvxvovbvfvivg db '<27>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aVo db '<27>O',0
aVp db '<27>P',0
aVq db '<27>Q',0
aVr db '<27>R',0
aVs db '<27>S',0
aVt db '<27>T',0
aVu db '<27>U',0
aVv db '<27>V',0
aVw db '<27>W',0
aVx db '<27>X',0
aU_ db '<27>_',0
aEd_m db 'ed.m',0
aEdbk1_rgb db 'edbk1.rgb',0
aStf1_cdg db 'stf1.cdg',0
aStf11_cdg db 'stf11.cdg',0
aStf3_cdg db 'stf3.cdg',0
aStf4_cdg db 'stf4.cdg',0
aStf5_cdg db 'stf5.cdg',0
aStf6_cdg db 'stf6.cdg',0
aStf7_cdg db 'stf7.cdg',0
aStf8_cdg db 'stf8.cdg',0
aStf9_cdg db 'stf9.cdg',0
aStf10_cdg db 'stf10.cdg',0
aStf2_cdg db 'stf2.cdg',0
aStf12_cdg db 'stf12.cdg',0
.data?
; TODO: Missing clip[bss].asm (16 bytes) somewhere in there...
unk_F72C db ? ;
db 59 dup(?)
byte_F768 db ?
unk_F769 db ? ;
db 59 dup(?)
byte_F7A5 db ?
unk_F7A6 db ? ;
db 59 dup(?)
byte_F7E2 db ?
_playchar_filename_id db PLAYER_COUNT dup (?)
byte_F7E5 db ?
db 16 dup(?)
include libs/master.lib/fil[bss].asm
include libs/master.lib/js[bss].asm
2014-08-23 13:47:05 +00:00
include libs/master.lib/pal[bss].asm
include libs/master.lib/vs[bss].asm
include libs/master.lib/vsync[bss].asm
include libs/master.lib/mem[bss].asm
include libs/master.lib/superpa[bss].asm
include th01/hardware/vram_planes[bss].asm
include th02/snd/snd[bss].asm
include th02/snd/load[bss].asm
include libs/master.lib/pfint21[bss].asm
include th03/hardware/input[bss].asm
include th03/formats/cdg[bss].asm
include th02/formats/pi_slots[bss].asm
include th03/formats/hfliplut[bss].asm
public _cutscene_script
_cutscene_script dd ?
dword_105CA dd ?
byte_105CE db ?
db ?
point_105D0 Point <?>
word_105D4 dw ?
col_105D6 db ?
byte_105D7 db ?
word_105D8 dw ?
public _resident
_resident dd ?
word_105DE dw ?
db 80 dup(?)
byte_10630 db ?
byte_10631 db ?
db 4 dup(?)
byte_10636 db ?
db 115 dup(?)
byte_106AA db ?
byte_106AB db ?
include th03/hiscore/regist[bss].asm
db 2 dup(?)
byte_106B0 db ?
db 1281 dup(?)
word_10BB2 dw ?
byte_10BB4 db ?
byte_10BB5 db ?
byte_10BB6 db ?
db 5 dup(?)
word_10BBC dw ?
word_10BBE dw ?
word_10BC0 dw ?
word_10BC2 dw ?
word_10BC4 dw ?
byte_10BC6 db ?
byte_10BC7 db ?
word_10BC8 dw ?
word_10BCA dw ?
_rem_credits db ?
db 5 dup(?)
byte_10BD2 db ?
byte_10BD3 db ?
byte_10BD4 db ?
2014-07-01 18:30:39 +00:00
db ?
_rank db ?
playchar_10BD7 db ?
_skill db ?
2014-07-01 18:30:39 +00:00
db ? ;
end