ReC98/th02_op.asm

5710 lines
105 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;
; +-------------------------------------------------------------------------+
; | This file has been generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> |
; +-------------------------------------------------------------------------+
;
; Input MD5 : 9FB2839DB50F38119D0B98D4FB70CD0E
; File Name : th02/OP.EXE
; Format : MS-DOS executable (EXE)
; Base Address: 0h Range: 0h-F9F0h Loaded length: E8F8h
; Entry Point : 0:0
; OS type : MS DOS
; Application type: Executable 16bit
.286 ; Force the .model directive to create 16-bit default segments...
.model large op_02_TEXT
__LARGE__ equ 1
.386 ; ... then switch to what we actually need.
; And yes, we can't move this to an include file for some reason.
include ReC98.inc
include th02/th02.asm
include th02/music/music.inc
extern F_LMOD@:proc
extern LDIV@:proc
extern LXMUL@:proc
extern LXRSH@:proc
extern SCOPY@:proc
extern __mbcjmstojis:proc
extern __mbctype:byte
extern _execl:proc
extern _memcpy:proc
; ===========================================================================
; Segment type: Pure code
_TEXT segment word public 'CODE' use16
assume cs:_TEXT
assume es:nothing, ds:_DATA, fs:nothing, gs:nothing
include libs/master.lib/bfnt_entry_pat.asm
include libs/master.lib/bfnt_extend_header_skip.asm
include libs/master.lib/bfnt_header_read.asm
include libs/master.lib/bfnt_header_analysis.asm
include libs/master.lib/bcloser.asm
include libs/master.lib/bfill.asm
include libs/master.lib/bfnt_palette_set.asm
include libs/master.lib/bgetc.asm
include libs/master.lib/palette_black_in.asm
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
include libs/master.lib/dos_axdx.asm
include libs/master.lib/dos_setvect.asm
include libs/master.lib/egc.asm
include libs/master.lib/file_close.asm
include libs/master.lib/file_create.asm
include libs/master.lib/file_exist.asm
include libs/master.lib/file_read.asm
include libs/master.lib/file_ropen.asm
include libs/master.lib/file_seek.asm
include libs/master.lib/file_write.asm
include libs/master.lib/dos_close.asm
include libs/master.lib/dos_ropen.asm
include libs/master.lib/grcg_boxfill.asm
include libs/master.lib/grc_setclip.asm
include libs/master.lib/grcg_fill.asm
include libs/master.lib/grcg_hline.asm
include libs/master.lib/grcg_polygon_c.asm
include libs/master.lib/grcg_round_boxfill.asm
include libs/master.lib/grcg_setcolor.asm
include libs/master.lib/gaiji_backup.asm
include libs/master.lib/gaiji_entry_bfnt.asm
include libs/master.lib/gaiji_putca.asm
include libs/master.lib/gaiji_putsa.asm
include libs/master.lib/gaiji_read.asm
include libs/master.lib/gaiji_write.asm
include libs/master.lib/graph_400line.asm
include libs/master.lib/graph_clear.asm
include libs/master.lib/graph_copy_page.asm
include libs/master.lib/graph_extmode.asm
include libs/master.lib/graph_gaiji_putc.asm
include libs/master.lib/graph_gaiji_puts.asm
include libs/master.lib/graph_pi_free.asm
include libs/master.lib/graph_pi_load_pack.asm
include libs/master.lib/graph_pack_put_8.asm
include libs/master.lib/graph_show.asm
include libs/master.lib/graph_start.asm
include libs/master.lib/keybeep.asm
include libs/master.lib/draw_trapezoid.asm
include libs/master.lib/make_linework.asm
include libs/master.lib/palette_init.asm
include libs/master.lib/palette_show.asm
include libs/master.lib/pfclose.asm
include libs/master.lib/pfgetc.asm
include libs/master.lib/pfread.asm
include libs/master.lib/pfrewind.asm
include libs/master.lib/pfseek.asm
include libs/master.lib/random.asm
include libs/master.lib/palette_entry_rgb.asm
include libs/master.lib/rottbl.asm
include libs/master.lib/smem_release.asm
include libs/master.lib/smem_wget.asm
include libs/master.lib/text_clear.asm
include libs/master.lib/txesc.asm
include libs/master.lib/text_fillca.asm
include libs/master.lib/text_putca.asm
include libs/master.lib/text_putsa.asm
include libs/master.lib/vsync.asm
include libs/master.lib/vsync_wait.asm
include libs/master.lib/palette_white_in.asm
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
include libs/master.lib/super_entry_at.asm
include libs/master.lib/super_entry_bfnt.asm
include libs/master.lib/super_cancel_pat.asm
include libs/master.lib/super_put_rect.asm
include libs/master.lib/super_put.asm
include libs/master.lib/pfint21.asm
db 0
include th02/formats/pfopen.asm
include libs/master.lib/pf_str_ieq.asm
_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_01_TEXT segment byte public 'CODE' use16
assume cs:op_01_TEXT
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9BF0 proc far
var_C = word ptr -0Ch
var_A = word ptr -0Ah
var_8 = byte ptr -8
var_7 = byte ptr -7
var_6 = byte ptr -6
var_5 = byte ptr -5
var_4 = byte ptr -4
var_3 = word ptr -3
var_1 = byte ptr -1
enter 0Ch, 0
mov [bp+var_A], ds
mov [bp+var_C], 163h
push [bp+var_A]
push [bp+var_C]
call file_exist
or ax, ax
jnz short loc_9C0E
jmp loc_9C9D
; ---------------------------------------------------------------------------
loc_9C0E:
push [bp+var_A]
push [bp+var_C]
call file_ropen
push ss
lea ax, [bp+var_8]
push ax
push 8
call file_read
mov al, [bp+var_8]
mov byte_DC34, al
mov al, [bp+var_7]
mov snd_bgm_mode, al
mov al, [bp+var_6]
mov byte_F3E2, al
mov al, [bp+var_5]
mov byte_F3E1, al
mov ax, [bp+var_3]
mov word_E900, ax
cmp word_E900, 0
jz short loc_9C9D
mov ax, word_E900
mov word ptr dword_F3DC+2, ax
mov word ptr dword_F3DC, 0
les bx, dword_F3DC
mov al, [bp+var_4]
mov es:[bx+24h], al
mov al, [bp+var_1]
mov es:[bx+0Ch], al
call file_close
cmp snd_bgm_mode, SND_BGM_OFF
jnz short loc_9C80
mov snd_fm_possible, 0
mov snd_active, 0
jmp short loc_9C99
; ---------------------------------------------------------------------------
loc_9C80:
cmp snd_bgm_mode, SND_BGM_FM
jnz short loc_9C8E
mov snd_midi_active, 0
jmp short loc_9C94
; ---------------------------------------------------------------------------
loc_9C8E:
mov al, snd_midi_possible
mov snd_midi_active, al
loc_9C94:
call snd_determine_mode
loc_9C99:
xor ax, ax
leave
retf
; ---------------------------------------------------------------------------
loc_9C9D:
mov ax, 1
leave
retf
sub_9BF0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9CA2 proc far
var_C = byte ptr -0Ch
var_B = byte ptr -0Bh
var_A = byte ptr -0Ah
var_9 = byte ptr -9
var_8 = byte ptr -8
var_5 = byte ptr -5
var_4 = word ptr -4
var_2 = word ptr -2
enter 0Ch, 0
mov [bp+var_2], ds
mov [bp+var_4], 163h
mov [bp+var_5], 0
mov al, byte_DC34
mov [bp+var_C], al
mov al, snd_bgm_mode
mov [bp+var_B], al
mov al, byte_F3E2
mov [bp+var_A], al
mov al, byte_F3E1
mov [bp+var_9], al
les bx, dword_F3DC
mov al, es:[bx+24h]
mov [bp+var_8], al
push [bp+var_2]
push [bp+var_4]
call file_create
push ss
lea ax, [bp+var_C]
push ax
push 5
call file_write
push ds
push offset word_E900
push 2
call file_write
push ss
lea ax, [bp+var_5]
push ax
push 1
call file_write
call file_close
leave
retf
sub_9CA2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9D0A proc far
push bp
mov bp, sp
call text_clear
call text_fillca pascal, ' ', TX_BLACK + TX_REVERSE
pop bp
retf
sub_9D0A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9D1D proc near
arg_0 = byte ptr 4
arg_2 = word ptr 6
push bp
mov bp, sp
call pi_slot_load stdcall, 0, [bp+arg_2], ds
mov dx, 0A6h ; '<27>'
mov al, [bp+arg_0]
out dx, al
call pi_slot_palette_apply stdcall, 0
call pi_slot_put stdcall, 0, 0, 0
add sp, 0Eh
freePISlot 0
pop bp
retn 4
sub_9D1D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9D5C proc far
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
enter 6, 0
push si
mov dx, word ptr gZUN+2
mov ax, word ptr gZUN
mov [bp+var_4], dx
mov [bp+var_6], ax
call sub_9D0A
call snd_load stdcall, offset aHuuma_efc, ds, SND_LOAD_SE
push 177h
push 1
call sub_9D1D
push 17Eh
push 0
call sub_9D1D
call pi_slot_load stdcall, 0, offset aOpa_pi, ds
call pi_slot_load stdcall, 1, offset aOpb_pi, ds
call pi_slot_load stdcall, 2, offset aOpc_pi, ds
add sp, 18h
mov PaletteTone, 0C8h ; '<27>'
call far ptr palette_show
mov [bp+var_2], 0
jmp short loc_9E0F
; ---------------------------------------------------------------------------
loc_9DC4:
xor si, si
jmp short loc_9DED
; ---------------------------------------------------------------------------
loc_9DC8:
mov ax, 39
sub ax, [bp+var_2]
call text_putca pascal, ax, si, ' ', TX_WHITE
mov ax, [bp+var_2]
add ax, 40
call text_putca pascal, ax, si, ' ', TX_WHITE
inc si
loc_9DED:
cmp si, 25
jl short loc_9DC8
mov ax, [bp+var_2]
add ax, ax
mov dx, 0C8h ; '<27>'
sub dx, ax
mov PaletteTone, dx
call far ptr palette_show
push 1
call frame_delay
inc [bp+var_2]
loc_9E0F:
cmp [bp+var_2], 28h ; '('
jl short loc_9DC4
mov [bp+var_2], 28h ; '('
jmp short loc_9E39
; ---------------------------------------------------------------------------
loc_9E1C:
mov ax, [bp+var_2]
add ax, ax
mov dx, 0C8h ; '<27>'
sub dx, ax
mov PaletteTone, dx
call far ptr palette_show
push 1
call frame_delay
inc [bp+var_2]
loc_9E39:
cmp [bp+var_2], 32h ; '2'
jl short loc_9E1C
mov PaletteTone, 64h ; 'd'
call far ptr palette_show
les bx, dword_F3DC
cmp byte ptr es:[bx+27h], 0
jnz short loc_9E97
mov [bp+var_2], 0
cmp snd_midi_possible, 0
jz short loc_9E7D
mov al, snd_midi_active
mov ah, 0
mov [bp+var_2], ax
mov snd_midi_active, 1
call snd_load c, offset aOp_m, ds, SND_LOAD_SONG
loc_9E7D:
mov snd_midi_active, 0
call snd_load c, offset aOp_m, ds, SND_LOAD_SONG
mov al, byte ptr [bp+var_2]
mov snd_midi_active, al
loc_9E97:
push 12h
call frame_delay
call sub_B2E8
mov PaletteTone, 0C8h ; '<27>'
call far ptr palette_show
mov dx, 0A6h ; '<27>'
mov al, 1
out dx, al
push 224h
push 180h
push 0DFh ; '<27>'
push 0
call graph_gaiji_putc
push 234h
push 180h
push 10h
push ss
lea ax, [bp+var_6]
push ax
push 0
call graph_gaiji_puts
push 220h
push 17Ch
push 0DFh ; '<27>'
push 6
call graph_gaiji_putc
push 230h
push 17Ch
push 10h
push ss
lea ax, [bp+var_6]
push ax
push 6
call graph_gaiji_puts
push 0
call graph_copy_page
les bx, dword_F3DC
cmp byte ptr es:[bx+27h], 0
jnz short loc_9F16
kajacall KAJA_SONG_PLAY
pop cx
loc_9F16:
les bx, dword_F3DC
mov byte ptr es:[bx+27h], 0
push ds
push offset aOp_rgb ; "op.rgb"
call palette_entry_rgb
call far ptr palette_show
push 6
call palette_white_in
pop si
leave
retf
sub_9D5C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9F37 proc near
push bp
mov bp, sp
call snd_se_reset
call snd_se_play stdcall, 13
pop cx
call snd_se_update
push 14h
call frame_delay
les bx, dword_F3DC
mov al, byte_F3E1
mov es:[bx+15h], al
mov al, byte_F3E2
mov es:[bx+14h], al
mov al, byte_F3E1
mov es:[bx+1Ah], al
mov al, byte_F3E2
mov es:[bx+19h], al
mov al, snd_bgm_mode
mov es:[bx+18h], al
mov byte ptr es:[bx+17h], 0
mov word ptr es:[bx+10h], 0
mov word ptr es:[bx+0Eh], 0
mov word ptr es:[bx+12h], 0
mov byte ptr es:[bx+25h], 0
mov word ptr es:[bx+20h], 0
mov byte ptr es:[bx+27h], 0
mov word ptr es:[bx+2Eh], 0
mov word ptr es:[bx+2Ch], 0
pop bp
retn
sub_9F37 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9FAF proc far
push bp
mov bp, sp
call sub_9F37
les bx, dword_F3DC
mov al, byte_DC34
mov es:[bx+16h], al
mov byte ptr es:[bx+0Bh], 0
call sub_9CA2
call pi_slot_load stdcall, 0, offset aTs1_pi, ds
call text_clear
call sub_BD24
kajacall KAJA_SONG_FADE, 15
add sp, 8
call gaiji_restore
call super_free
call sub_B019
les bx, dword_F3DC
cmp byte ptr es:[bx+0Ch], 0
jz short loc_A011
push 0
push 0
push ds
push offset aSelect ; "select"
push ds
push offset aSelect ; "select"
jmp short loc_A01D
; ---------------------------------------------------------------------------
loc_A011:
push 0
push 0
push ds
push offset path ; "main"
push ds
push offset path ; "main"
loc_A01D:
call _execl
add sp, 0Ch
pop bp
retf
sub_9FAF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A027 proc far
push bp
mov bp, sp
les bx, dword_F3DC
mov byte ptr es:[bx+15h], 2
mov byte ptr es:[bx+14h], 3
mov byte ptr es:[bx+1Ah], 2
mov byte ptr es:[bx+19h], 3
mov al, snd_bgm_mode
mov es:[bx+18h], al
mov byte ptr es:[bx+16h], 1
mov word ptr es:[bx+12h], 0
mov byte ptr es:[bx+25h], 0
mov al, byte_E8FE
mov es:[bx+27h], al
mov byte ptr es:[bx+26h], 0
call sub_9CA2
call text_clear
freePISlot 0
freePISlot 1
freePISlot 2
call gaiji_restore
call super_free
call sub_B019
push 0
push 0
push ds
push offset path ; "main"
push ds
push offset path ; "main"
call _execl
add sp, 0Ch
pop bp
retf
sub_A027 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A0C6 proc far
push bp
mov bp, sp
call sub_9F37
les bx, dword_F3DC
mov byte ptr es:[bx+16h], 4
mov byte ptr es:[bx+0Bh], 5
mov byte ptr es:[bx+15h], 2
mov byte ptr es:[bx+14h], 1
mov byte ptr es:[bx+1Ah], 2
mov byte ptr es:[bx+19h], 1
call sub_9CA2
call pi_slot_load stdcall, 0, offset aTs1_pi, ds
call text_clear
call sub_BD24
kajacall KAJA_SONG_FADE, 15
add sp, 8
call gaiji_restore
call super_free
call sub_B019
les bx, dword_F3DC
cmp byte ptr es:[bx+0Ch], 0
jz short loc_A13A
push 0
push 0
push ds
push offset aSelect ; "select"
push ds
push offset aSelect ; "select"
jmp short loc_A146
; ---------------------------------------------------------------------------
loc_A13A:
push 0
push 0
push ds
push offset path ; "main"
push ds
push offset path ; "main"
loc_A146:
call _execl
add sp, 0Ch
pop bp
retf
sub_A0C6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A150 proc near
push bp
mov bp, sp
push 11Ch
push 104h
push 10h
push ds
push offset gSTART
push 0
call graph_gaiji_puts
push 0ECh
push 114h
push 10h
push ds
push offset gEXTRA_START
push 0
call graph_gaiji_puts
push 10Ch
push 124h
push 10h
push ds
push offset gHISCORE
push 0
call graph_gaiji_puts
push 114h
push 134h
push 10h
push ds
push offset gOPTION
push 0
call graph_gaiji_puts
push 0F4h
push 144h
push 10h
push ds
push offset gMUSIC_MODE
push 0
call graph_gaiji_puts
push 124h
push 154h
push 10h
push ds
push offset gQUIT
push 0
call graph_gaiji_puts
push 0D4h
push 174h
push 10h
push ds
push offset gRANK
push 0
call graph_gaiji_puts
push 134h
push 174h
push 10h
push ds
mov al, byte_DC34
cbw
shl ax, 3
add ax, offset gcEASY
push ax
push 0
call graph_gaiji_puts
pop bp
retn
sub_A150 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A1F5 proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
push bp
mov bp, sp
push si
push di
mov si, [bp+arg_2]
mov di, [bp+arg_0]
or si, si
jnz short loc_A20E
push 35
push 16
push ds
push offset gSTART
jmp short loc_A248
; ---------------------------------------------------------------------------
loc_A20E:
cmp si, 2
jnz short loc_A21D
push 33
push 18
push ds
push offset gHISCORE
jmp short loc_A248
; ---------------------------------------------------------------------------
loc_A21D:
cmp si, 3
jnz short loc_A22C
push 34
push 19
push ds
push offset gOPTION
jmp short loc_A248
; ---------------------------------------------------------------------------
loc_A22C:
cmp si, 4
jnz short loc_A23B
push 30
push 20
push ds
push offset gMUSIC_MODE
jmp short loc_A248
; ---------------------------------------------------------------------------
loc_A23B:
cmp si, 5
jnz short loc_A24E
push 36
push 21
push ds
push offset gQUIT
loc_A248:
push di
call gaiji_putsa
loc_A24E:
cmp si, 1
jnz short loc_A274
cmp byte_F4A2, 0
jz short loc_A265
push 29
push 17
push ds
push offset gEXTRA_START
push di
jmp short loc_A26F
; ---------------------------------------------------------------------------
loc_A265:
push 29
push 17
push ds
push offset gEXTRA_START
push TX_BLUE
loc_A26F:
call gaiji_putsa
loc_A274:
call gaiji_putsa pascal, 26, 23, ds, offset gRANK, TX_GREEN
push 38
push 23
push ds
mov al, byte_DC34
cbw
shl ax, 3
add ax, offset gcEASY
push ax
push TX_GREEN
call gaiji_putsa
pop di
pop si
pop bp
retn 4
sub_A1F5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A2A2 proc near
arg_0 = byte ptr 4
arg_2 = byte ptr 6
push bp
mov bp, sp
mov al, byte_D6C0
cbw
call fp_E902 pascal, ax, TX_YELLOW
mov al, [bp+arg_0]
add byte_D6C0, al
cmp byte_D6C1, 0
jnz short loc_A2D1
cmp byte_F4A2, 0
jnz short loc_A2D1
cmp byte_D6C0, 1
jnz short loc_A2D1
add byte_D6C0, al
loc_A2D1:
cmp byte_D6C0, 0
jge short loc_A2DE
mov al, [bp+arg_2]
mov byte_D6C0, al
loc_A2DE:
mov al, byte_D6C0
cmp al, [bp+arg_2]
jle short loc_A2EB
mov byte_D6C0, 0
loc_A2EB:
mov al, byte_D6C0
cbw
push ax
push 0E1h
call fp_E902
pop bp
retn 4
sub_A2A2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A2FB proc far
push bp
mov bp, sp
push si
cmp byte_D790, 0
jnz short loc_A356
mov byte_E8F8, 0
mov byte_D790, 1
call text_clear
mov dx, 0A4h ; '<27>'
mov al, 1
out dx, al
push 0
call graph_copy_page
call sub_A150
mov dx, 0A4h ; '<27>'
mov al, 0
out dx, al
mov word_E8FC, 0
xor si, si
jmp short loc_A34B
; ---------------------------------------------------------------------------
loc_A335:
push si
mov al, byte_D6C0
cbw
cmp ax, si
jnz short loc_A343
mov ax, TX_WHITE
jmp short loc_A346
; ---------------------------------------------------------------------------
loc_A343:
mov ax, TX_YELLOW
loc_A346:
push ax
call sub_A1F5
inc si
loc_A34B:
cmp si, 6
jl short loc_A335
mov fp_E902, offset sub_A1F5
loc_A356:
cmp word_F3C8, 0
jnz short loc_A362
mov byte_E8F8, 1
loc_A362:
cmp byte_E8F8, 0
jnz short loc_A36C
jmp loc_A466
; ---------------------------------------------------------------------------
loc_A36C:
test byte ptr word_F3C8, 1
jz short loc_A37A
push 5
push 0FFFFh
call sub_A2A2
loc_A37A:
test byte ptr word_F3C8, 2
jz short loc_A388
push 5
push 1
call sub_A2A2
loc_A388:
test byte ptr word_F3C8, 10h
jnz short loc_A399
test byte ptr word_F3C8, 80h
jnz short loc_A399
jmp loc_A448
; ---------------------------------------------------------------------------
loc_A399:
mov al, byte_D6C0
cbw
mov bx, ax
cmp bx, 5
jbe short loc_A3A7
jmp loc_A448
; ---------------------------------------------------------------------------
loc_A3A7:
add bx, bx
jmp cs:off_A475[bx]
loc_A3AE:
call sub_9FAF
jmp loc_A448
; ---------------------------------------------------------------------------
loc_A3B5:
call sub_A0C6
jmp loc_A448
; ---------------------------------------------------------------------------
loc_A3BC:
mov word_F4A4, 7D0h
call text_clear
call sub_B77E
mov dx, 0A6h ; '<27>'
mov al, 1
out dx, al
mov dx, 0A4h ; '<27>'
mov al, 0
out dx, al
call pi_slot_load stdcall, 0, offset aOp2_pi, ds
call pi_slot_palette_apply stdcall, 0
call pi_slot_put stdcall, 0, 0, 0
add sp, 0Eh
freePISlot 0
push ds
push offset aOp_rgb ; "op.rgb"
call palette_entry_rgb
call far ptr palette_show
push 0
call graph_copy_page
mov dx, 0A6h ; '<27>'
mov al, 0
out dx, al
loc_A424:
mov byte_D790, 0
jmp short loc_A448
; ---------------------------------------------------------------------------
loc_A42B:
mov byte_D6C0, 0
mov byte_D6C1, 1
jmp short loc_A424
; ---------------------------------------------------------------------------
loc_A437:
call text_clear
call sub_C7A0
jmp short loc_A424
; ---------------------------------------------------------------------------
loc_A443:
mov byte_D6C2, 1
loc_A448:
test byte ptr word_F3C8, 40h
jz short loc_A454
mov byte_D6C2, 1
loc_A454:
cmp word_F3C8, 0
jz short loc_A466
mov byte_E8F8, 0
mov word_E8FC, 0
loc_A466:
cmp word_E8FC, 280h
jbe short loc_A472
call sub_A027
loc_A472:
pop si
pop bp
retf
sub_A2FB endp
; ---------------------------------------------------------------------------
off_A475 dw offset loc_A3AE
dw offset loc_A3B5
dw offset loc_A3BC
dw offset loc_A42B
dw offset loc_A437
dw offset loc_A443
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A481 proc near
push bp
mov bp, sp
push 0C4h ; '<27>'
push 104h
push 10h
push ds
push offset gRANK
push 0
call graph_gaiji_puts
push 0C4h ; '<27>'
push 114h
push 10h
push ds
push offset gMUSIC
push 0
call graph_gaiji_puts
push 0C4h ; '<27>'
push 124h
push 10h
push ds
push offset gPLAYER
push 0
call graph_gaiji_puts
push 0C4h ; '<27>'
push 134h
push 10h
push ds
push offset gBOMB
push 0
call graph_gaiji_puts
push word ptr PERF_TITLE+2
push word ptr PERF_TITLE
push 0
push 144h
push 0C4h ; '<27>'
call sub_AB4D
add sp, 0Ah
push 11Ch
push 154h
push 10h
push ds
push offset gRESET
push 0
call graph_gaiji_puts
push 124h
push 174h
push 10h
push ds
push offset gQUIT
push 0
call graph_gaiji_puts
pop bp
retn
sub_A481 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A510 proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
push bp
mov bp, sp
push si
push di
mov di, [bp+arg_2]
mov si, [bp+arg_0]
or di, di
jnz short loc_A568
push 24
push 16
push ds
push offset gRANK
push si
call gaiji_putsa
push 42
push 16
push ds
mov al, byte_DC34
cbw
shl ax, 3
add ax, offset gcEASY
push ax
push si
call gaiji_putsa
push 150h
push 104h
push 80h
push 10h
call sub_AE00
push 154h
push 104h
push 10h
push ds
mov al, byte_DC34
cbw
shl ax, 3
add ax, offset gcEASY
jmp short loc_A5B3
; ---------------------------------------------------------------------------
loc_A568:
cmp di, 1
jnz short loc_A5BE
call gaiji_putsa pascal, 24, 17, ds, offset gMUSIC, si
push 47
push 17
push ds
mov al, snd_bgm_mode
cbw
imul ax, 5
add ax, offset gOFF
push ax
push si
call gaiji_putsa
push 178h
push 114h
push 40h
push 10h
call sub_AE00
push 17Ch
push 114h
push 10h
push ds
mov al, snd_bgm_mode
cbw
imul ax, 5
add ax, 145h
loc_A5B3:
push ax
push 0
call graph_gaiji_puts
jmp loc_A6E9
; ---------------------------------------------------------------------------
loc_A5BE:
cmp di, 2
jnz short loc_A60A
call gaiji_putsa pascal, 24, 18, ds, offset gPLAYER, si
push 49
push 18
mov al, byte_F3E1
cbw
add ax, 0A1h ; '<27>'
push ax
push si
call gaiji_putca
push 188h
push 124h
push 20h ; ' '
push 10h
call sub_AE00
push 18Ch
push 124h
mov al, byte_F3E1
cbw
add ax, 0A1h ; '<27>'
push ax
push 0
call graph_gaiji_putc
jmp loc_A6E9
; ---------------------------------------------------------------------------
loc_A60A:
cmp di, 3
jnz short loc_A656
call gaiji_putsa pascal, 24, 19, ds, offset gBOMB, si
push 49
push 19
mov al, byte_F3E2
cbw
add ax, 0A0h
push ax
push si
call gaiji_putca
push 188h
push 134h
push 20h ; ' '
push 10h
call sub_AE00
push 18Ch
push 134h
mov al, byte_F3E2
cbw
add ax, 0A0h
push ax
push 0
call graph_gaiji_putc
jmp loc_A6E9
; ---------------------------------------------------------------------------
loc_A656:
cmp di, 4
jnz short loc_A6C7
call text_putsa pascal, 24, 20, word ptr PERF_TITLE+2, word ptr PERF_TITLE, si
push 45
push 20
les bx, dword_F3DC
mov al, es:[bx+24h]
mov ah, 0
shl ax, 2
mov bx, ax
push word ptr (PERF_OPTION+2)[bx]
push word ptr PERF_OPTION[bx]
push si
call text_putsa
push 168h
push 144h
push 80h
push 10h
call sub_AE00
les bx, dword_F3DC
mov al, es:[bx+24h]
mov ah, 0
shl ax, 2
mov bx, ax
push word ptr (PERF_OPTION+2)[bx]
push word ptr PERF_OPTION[bx]
push 0
push 144h
push 16Ch
call sub_AB4D
add sp, 0Ah
jmp short loc_A6E9
; ---------------------------------------------------------------------------
loc_A6C7:
cmp di, 5
jnz short loc_A6D6
push 35
push 21
push ds
push offset gRESET
jmp short loc_A6E3
; ---------------------------------------------------------------------------
loc_A6D6:
cmp di, 6
jnz short loc_A6E9
push 36
push 23
push ds
push offset gQUIT
loc_A6E3:
push si
call gaiji_putsa
loc_A6E9:
pop di
pop si
pop bp
retn 4
sub_A510 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A6EF proc near
push bp
mov bp, sp
cmp snd_bgm_mode, SND_BGM_OFF
jnz short loc_A70E
mov snd_fm_possible, 0
kajacall KAJA_SONG_STOP
pop cx
mov snd_active, 0
pop bp
retn
; ---------------------------------------------------------------------------
loc_A70E:
cmp snd_bgm_mode, SND_BGM_FM
jnz short loc_A725
kajacall KAJA_SONG_STOP
pop cx
mov snd_midi_active, 0
jmp short loc_A73B
; ---------------------------------------------------------------------------
loc_A725:
cmp snd_bgm_mode, SND_BGM_MIDI
jnz short loc_A748
kajacall KAJA_SONG_STOP
pop cx
mov al, snd_midi_possible
mov snd_midi_active, al
loc_A73B:
call snd_determine_mode
kajacall KAJA_SONG_PLAY
pop cx
loc_A748:
pop bp
retn
sub_A6EF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A74A proc far
push bp
mov bp, sp
push si
cmp byte_D792, 0
jnz short loc_A79F
mov byte_D791, 0
mov byte_D792, 1
call text_clear
mov dx, 0A4h ; '<27>'
mov al, 1
out dx, al
push 0
call graph_copy_page
call sub_A481
mov dx, 0A4h ; '<27>'
mov al, 0
out dx, al
xor si, si
jmp short loc_A794
; ---------------------------------------------------------------------------
loc_A77E:
push si
mov al, byte_D6C0
cbw
cmp ax, si
jnz short loc_A78C
mov ax, TX_WHITE
jmp short loc_A78F
; ---------------------------------------------------------------------------
loc_A78C:
mov ax, TX_YELLOW
loc_A78F:
push ax
call sub_A510
inc si
loc_A794:
cmp si, 7
jl short loc_A77E
mov fp_E902, offset sub_A510
loc_A79F:
cmp word_F3C8, 0
jnz short loc_A7AB
mov byte_D791, 1
loc_A7AB:
cmp byte_D791, 0
jnz short loc_A7B5
jmp loc_A9A1
; ---------------------------------------------------------------------------
loc_A7B5:
test byte ptr word_F3C8, 1
jz short loc_A7C3
push 6
push 0FFFFh
call sub_A2A2
loc_A7C3:
test byte ptr word_F3C8, 2
jz short loc_A7D1
push 6
push 1
call sub_A2A2
loc_A7D1:
test byte ptr word_F3C8, 8
jnz short loc_A7DB
jmp loc_A85C
; ---------------------------------------------------------------------------
loc_A7DB:
mov al, byte_D6C0
cbw
call sub_A510 pascal, ax, TX_YELLOW
mov al, byte_D6C0
cbw
mov bx, ax
cmp bx, 4
ja short loc_A851
add bx, bx
jmp cs:off_A9AF[bx]
loc_A7F8:
inc byte_DC34
cmp byte_DC34, 3
jle short loc_A851
mov byte_DC34, 0
jmp short loc_A851
; ---------------------------------------------------------------------------
loc_A80A:
inc snd_bgm_mode
cmp snd_bgm_mode, SND_BGM_MIDI
jle short loc_A81A
mov snd_bgm_mode, SND_BGM_OFF
loc_A81A:
call sub_A6EF
jmp short loc_A851
; ---------------------------------------------------------------------------
loc_A81F:
inc byte_F3E1
cmp byte_F3E1, 4
jle short loc_A851
mov byte_F3E1, 0
jmp short loc_A851
; ---------------------------------------------------------------------------
loc_A831:
inc byte_F3E2
cmp byte_F3E2, 3
jle short loc_A851
mov byte_F3E2, 0
jmp short loc_A851
; ---------------------------------------------------------------------------
loc_A843:
les bx, dword_F3DC
mov al, 1
sub al, es:[bx+24h]
mov es:[bx+24h], al
loc_A851:
mov al, byte_D6C0
cbw
call sub_A510 pascal, ax, TX_WHITE
loc_A85C:
test byte ptr word_F3C8, 4
jnz short loc_A866
jmp loc_A8E7
; ---------------------------------------------------------------------------
loc_A866:
mov al, byte_D6C0
cbw
call sub_A510 pascal, ax, TX_YELLOW
mov al, byte_D6C0
cbw
mov bx, ax
cmp bx, 4
ja short loc_A8DC
add bx, bx
jmp cs:off_A9A5[bx]
loc_A883:
dec byte_DC34
cmp byte_DC34, 0
jge short loc_A8DC
mov byte_DC34, 3
jmp short loc_A8DC
; ---------------------------------------------------------------------------
loc_A895:
dec snd_bgm_mode
cmp snd_bgm_mode, SND_BGM_OFF
jge short loc_A8A5
mov snd_bgm_mode, SND_BGM_MIDI
loc_A8A5:
call sub_A6EF
jmp short loc_A8DC
; ---------------------------------------------------------------------------
loc_A8AA:
dec byte_F3E1
cmp byte_F3E1, 0
jge short loc_A8DC
mov byte_F3E1, 4
jmp short loc_A8DC
; ---------------------------------------------------------------------------
loc_A8BC:
dec byte_F3E2
cmp byte_F3E2, 0
jge short loc_A8DC
mov byte_F3E2, 3
jmp short loc_A8DC
; ---------------------------------------------------------------------------
loc_A8CE:
les bx, dword_F3DC
mov al, 1
sub al, es:[bx+24h]
mov es:[bx+24h], al
loc_A8DC:
mov al, byte_D6C0
cbw
push ax
push 0E1h
call sub_A510
loc_A8E7:
test byte ptr word_F3C8, 10h
jnz short loc_A8F8
test byte ptr word_F3C8, 80h
jnz short loc_A8F8
jmp loc_A97F
; ---------------------------------------------------------------------------
loc_A8F8:
mov al, byte_D6C0
cbw
cmp ax, 5
jz short loc_A908
cmp ax, 6
jz short loc_A970
jmp short loc_A97F
; ---------------------------------------------------------------------------
loc_A908:
mov byte_DC34, 1
mov snd_bgm_mode, SND_BGM_FM
kajacall KAJA_SONG_STOP
mov snd_midi_active, 0
call snd_determine_mode
kajacall KAJA_SONG_PLAY
add sp, 4
mov byte_F3E1, 2
mov byte_F3E2, 3
les bx, dword_F3DC
mov byte ptr es:[bx+22h], 1
mov byte ptr es:[bx+24h], 0
call sub_A510 pascal, 0, TX_YELLOW
call sub_A510 pascal, 1, TX_YELLOW
call sub_A510 pascal, 2, TX_YELLOW
call sub_A510 pascal, 3, TX_YELLOW
call sub_A510 pascal, 4, TX_YELLOW
jmp short loc_A97F
; ---------------------------------------------------------------------------
loc_A970:
mov byte_D6C0, 3
mov byte_D6C1, 0
mov byte_D792, 0
loc_A97F:
test byte ptr word_F3C8, 40h
jz short loc_A995
mov byte_D6C0, 3
mov byte_D6C1, 0
mov byte_D792, 0
loc_A995:
cmp word_F3C8, 0
jz short loc_A9A1
mov byte_D791, 0
loc_A9A1:
pop si
pop bp
retf
sub_A74A endp
; ---------------------------------------------------------------------------
db 0
off_A9A5 dw offset loc_A883
dw offset loc_A895
dw offset loc_A8AA
dw offset loc_A8BC
dw offset loc_A8CE
off_A9AF dw offset loc_A7F8
dw offset loc_A80A
dw offset loc_A81F
dw offset loc_A831
dw offset loc_A843
; =============== 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
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 snd_pmd_resident
or ax, ax
jz short loc_A9EE
call snd_mmd_resident
call sub_AFB0
or ax, ax
jz short loc_A9DD
push 3
call sub_AB41
jmp short loc_A9EE
; ---------------------------------------------------------------------------
loc_A9DD:
call sub_B86E
mov byte_F4A2, al
call sub_9BF0
cmp ax, 1
jnz short loc_A9F3
loc_A9EE:
mov ax, 1
leave
retf
; ---------------------------------------------------------------------------
loc_A9F3:
call gaiji_backup
push ds
push offset aMikoft_bft ; "MIKOFT.bft"
call gaiji_entry_bfnt
les bx, dword_F3DC
cmp byte ptr es:[bx+27h], 0
jnz short loc_AA1C
mov byte_E8FE, 1
kajacall KAJA_SONG_STOP
pop cx
jmp short loc_AA4A
; ---------------------------------------------------------------------------
loc_AA1C:
les bx, dword_F3DC
mov al, es:[bx+27h]
inc al
mov byte_E8FE, al
cmp byte_E8FE, 3
jbe short loc_AA35
mov byte_E8FE, 1
loc_AA35:
mov word_F4A4, 15Eh
call sub_B77E
mov dx, 0A4h ; '<27>'
mov al, 0
out dx, al
mov dx, 0A6h ; '<27>'
out dx, al
loc_AA4A:
mov word_F3C8, 0
mov al, snd_bgm_mode
mov snd_active, al
les bx, dword_F3DC
cmp byte ptr es:[bx+27h], 0
jnz short loc_AA8F
cmp snd_midi_possible, 0
jz short loc_AA8F
mov al, snd_midi_active
mov [bp+var_2], al
mov snd_midi_active, 1
call snd_load stdcall, offset aGminit_m, ds, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
add sp, 8
mov al, [bp+var_2]
mov snd_midi_active, al
loc_AA8F:
call sub_9D5C
call pi_slot_load stdcall, 2, offset aTs3_pi, ds
call pi_slot_load stdcall, 1, offset aTs2_pi, ds
add sp, 0Ch
mov word_F3C8, 0
mov word_E8FC, 0
jmp short loc_AAF0
; ---------------------------------------------------------------------------
loc_AABA:
call sub_AED0
cmp byte_D6C1, 0
jnz short loc_AACC
call sub_A2FB
jmp short loc_AAD7
; ---------------------------------------------------------------------------
loc_AACC:
cmp byte_D6C1, 1
jnz short loc_AAD7
call sub_A74A
loc_AAD7:
les bx, dword_F3DC
add word ptr es:[bx+1Ch], 1
adc word ptr es:[bx+1Eh], 0
inc word_E8FC
push 1
call frame_delay
loc_AAF0:
cmp byte_D6C2, 0
jz short loc_AABA
les bx, dword_F3DC
mov al, es:[bx+23h]
mov [bp+var_1], al
mov word_E900, 0
call sub_9CA2
call text_clear
call graph_clear
call sub_AB28
call gaiji_restore
mov al, [bp-1]
mov ah, 0
leave
retf
_main endp
db 0
op_01_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_02_TEXT segment word public 'CODE' use16
assume cs:op_02_TEXT
;org 8
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AB28 proc far
push bp
mov bp, sp
nopcall sub_B019
call key_beep_on
call text_systemline_show
call text_cursor_show
pop bp
retf
sub_AB28 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AB41 proc far
arg_0 = word ptr 6
push bp
mov bp, sp
mov ax, [bp+arg_0]
int 59h ; GSS Computer Graphics Interface (GSS*CGI)
; DS:DX -> block of 5 array pointers
; Return: CF set on error, AX = error code
; CF clear if successful, AX = return code
pop bp
retf 2
sub_AB41 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AB4D proc far
var_32 = byte ptr -32h
var_12 = word ptr -12h
var_10 = word ptr -10h
var_E = word ptr -0Eh
var_C = word ptr -0Ch
var_A = word ptr -0Ah
var_8 = dword ptr -8
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
arg_6 = dword ptr 0Ch
enter 32h, 0
push si
push di
mov di, [bp+arg_0]
mov ax, [bp+arg_4]
sar ax, 4
and ax, 3
mov [bp+var_E], ax
mov ax, [bp+arg_4]
sar ax, 6
and ax, 7
mov [bp+var_10], ax
call grcg_setcolor pascal, GC_RMW, [bp+arg_4]
mov dx, 68h ; 'h'
mov al, 0Bh
out dx, al
jmp loc_AD92
; ---------------------------------------------------------------------------
loc_AB82:
mov ax, [bp+arg_2]
imul ax, 50h
push ax
mov ax, di
mov bx, 8
cwd
idiv bx
pop dx
add dx, ax
mov word ptr [bp+var_8+2], 0A800h
mov word ptr [bp+var_8], dx
mov ax, di
cwd
idiv bx
mov [bp+var_C], dx
les bx, [bp+arg_6]
mov al, es:[bx]
mov ah, 0
mov bx, ax
test __mbctype+1[bx], 4
jz short loc_ABD7
mov bx, word ptr [bp+arg_6]
mov al, es:[bx]
cbw
shl ax, 8
mov dl, es:[bx+1]
mov dh, 0
add ax, dx
push ax
call __mbcjmstojis
pop cx
mov [bp+var_2], ax
add word ptr [bp+arg_6], 2
jmp short loc_AC1D
; ---------------------------------------------------------------------------
loc_ABD7:
les bx, [bp+arg_6]
mov al, es:[bx]
mov ah, 0
mov bx, ax
test __mbctype+1[bx], 3
jz short loc_ABF5
mov bx, word ptr [bp+arg_6]
mov al, es:[bx]
mov ah, 0
add ax, 2980h
jmp short loc_AC10
; ---------------------------------------------------------------------------
loc_ABF5:
les bx, [bp+arg_6]
mov al, es:[bx]
cbw
mov bx, ax
test byte ptr [bx+0E91h], 5Eh
jz short loc_AC15
mov bx, word ptr [bp+arg_6]
mov al, es:[bx]
mov ah, 0
add ax, 2900h
loc_AC10:
mov [bp+var_2], ax
jmp short loc_AC1A
; ---------------------------------------------------------------------------
loc_AC15:
mov [bp+var_2], 2B21h
loc_AC1A:
inc word ptr [bp+arg_6]
loc_AC1D:
mov al, byte ptr [bp+var_2]
and al, 0FFh
mov dx, 0A1h ; '<27>'
out dx, al
mov ax, [bp+var_2]
shr ax, 8
sub al, 20h ; ' '
mov dx, 0A3h ; '<27>'
out dx, al
cmp [bp+var_2], 2921h
jb short loc_AC7E
cmp [bp+var_2], 2B7Eh
ja short loc_AC7E
cmp di, 278h
jg loc_AD9D
mov [bp+var_12], 0
jmp short loc_AC71
; ---------------------------------------------------------------------------
loc_AC4F:
mov al, byte ptr [bp+var_12]
or al, 20h
mov dx, 0A5h ; '<27>'
out dx, al
mov dx, 0A9h ; '<27>'
in al, dx
mov ah, 0
shl ax, 8
mov bx, [bp+var_12]
add bx, bx
lea dx, [bp+var_32]
add bx, dx
mov ss:[bx], ax
inc [bp+var_12]
loc_AC71:
cmp [bp+var_12], 10h
jl short loc_AC4F
mov [bp+var_A], 0
jmp short loc_ACD4
; ---------------------------------------------------------------------------
loc_AC7E:
cmp di, 270h
jg loc_AD9D
mov [bp+var_12], 0
jmp short loc_ACC9
; ---------------------------------------------------------------------------
loc_AC8D:
mov al, byte ptr [bp+var_12]
or al, 20h
mov dx, 0A5h ; '<27>'
out dx, al
mov dx, 0A9h ; '<27>'
in al, dx
mov ah, 0
shl ax, 8
mov bx, [bp+var_12]
add bx, bx
lea dx, [bp+var_32]
add bx, dx
mov ss:[bx], ax
mov dx, 0A5h ; '<27>'
mov al, byte ptr [bp+var_12]
out dx, al
mov dx, 0A9h ; '<27>'
in al, dx
mov ah, 0
mov bx, [bp+var_12]
add bx, bx
lea dx, [bp+var_32]
add bx, dx
add ss:[bx], ax
inc [bp+var_12]
loc_ACC9:
cmp [bp+var_12], 10h
jl short loc_AC8D
mov [bp+var_A], 1
loc_ACD4:
mov [bp+var_12], 0
jmp loc_AD79
; ---------------------------------------------------------------------------
loc_ACDC:
mov bx, [bp+var_12]
add bx, bx
lea ax, [bp+var_32]
add bx, ax
mov ax, ss:[bx]
mov [bp+var_4], ax
mov ax, [bp+var_E]
cmp ax, 1
jz short loc_AD00
cmp ax, 2
jz short loc_AD16
cmp ax, 3
jz short loc_AD0C
jmp short loc_AD2C
; ---------------------------------------------------------------------------
loc_AD00:
mov si, [bp+var_4]
mov ax, si
add ax, ax
or [bp+var_4], ax
jmp short loc_AD2C
; ---------------------------------------------------------------------------
loc_AD0C:
mov si, [bp+var_4]
mov ax, si
add ax, ax
or [bp+var_4], ax
loc_AD16:
mov si, [bp+var_4]
mov ax, si
add ax, ax
or [bp+var_4], ax
xor si, [bp+var_4]
mov ax, si
add ax, ax
not ax
and [bp+var_4], ax
loc_AD2C:
cmp [bp+var_C], 0
jz short loc_AD5F
mov cl, byte ptr [bp+var_C]
add cl, 8
mov ax, [bp+var_4]
shr ax, cl
les bx, [bp+var_8]
mov es:[bx], al
mov ax, [bp+var_4]
mov cl, byte ptr [bp+var_C]
shr ax, cl
mov es:[bx+1], al
mov cl, 8
sub cl, byte ptr [bp+var_C]
mov al, byte ptr [bp+var_4]
shl al, cl
mov es:[bx+2], al
jmp short loc_AD72
; ---------------------------------------------------------------------------
loc_AD5F:
mov ax, [bp+var_4]
shr ax, 8
les bx, [bp+var_8]
mov es:[bx], al
mov al, byte ptr [bp+var_4]
mov es:[bx+1], al
loc_AD72:
add word ptr [bp+var_8], 50h ; 'P'
inc [bp+var_12]
loc_AD79:
cmp [bp+var_12], 10h
jl loc_ACDC
cmp [bp+var_A], 0
jz short loc_AD8A
add di, 8
loc_AD8A:
mov ax, [bp+var_10]
add ax, 8
add di, ax
loc_AD92:
les bx, [bp+arg_6]
cmp byte ptr es:[bx], 0
jnz loc_AB82
loc_AD9D:
mov dx, 68h ; 'h'
mov al, 0Ah
out dx, al
call grcg_off
pop di
pop si
leave
retf
sub_AB4D endp
include th01/hardware/vram_planes_set.asm
include th02/formats/pi_slot_load.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AE00 proc far
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
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
arg_6 = word ptr 0Ch
enter 0Ah, 0
push si
push di
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
xor di, di
jmp loc_AEAE
; ---------------------------------------------------------------------------
loc_AE23:
mov [bp+var_2], 0
mov cx, si
jmp short loc_AE9F
; ---------------------------------------------------------------------------
loc_AE2C:
or si, si
jl short loc_AE99
mov dx, 0A6h ; '<27>'
mov al, 1
out dx, al
les bx, VRAM_PLANE_B
add bx, cx
mov ax, es:[bx]
mov [bp+var_A], ax
les bx, VRAM_PLANE_R
add bx, cx
mov ax, es:[bx]
mov [bp+var_8], ax
les bx, VRAM_PLANE_G
add bx, cx
mov ax, es:[bx]
mov [bp+var_6], ax
les bx, VRAM_PLANE_E
add bx, cx
mov ax, es:[bx]
mov [bp+var_4], ax
mov al, 0
out dx, al
les bx, VRAM_PLANE_B
add bx, cx
mov ax, [bp+var_A]
mov es:[bx], ax
les bx, VRAM_PLANE_R
add bx, cx
mov ax, [bp+var_8]
mov es:[bx], ax
les bx, VRAM_PLANE_G
add bx, cx
mov ax, [bp+var_6]
mov es:[bx], ax
les bx, VRAM_PLANE_E
add bx, cx
mov ax, [bp+var_4]
mov es:[bx], ax
loc_AE99:
inc [bp+var_2]
add cx, 2
loc_AE9F:
mov ax, [bp+arg_2]
sar ax, 4
cmp ax, [bp+var_2]
jg short loc_AE2C
add si, 50h ; 'P'
inc di
loc_AEAE:
cmp di, [bp+arg_0]
jl loc_AE23
pop di
pop si
leave
retf 8
sub_AE00 endp
include th02/frame_delay_.asm
; =============== S U B R O U T I N E =======================================
sub_AED0 proc far
mov word_F3C8, 0
mov al, 7
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
mov bh, ah
mov al, 8
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test bh, 4
jnz short loc_AEEE
test ah, 8
jz short loc_AEF3
loc_AEEE:
or word_F3C8, 1
loc_AEF3:
test bh, 8
jnz short loc_AEFD
test ah, 40h
jz short loc_AF02
loc_AEFD:
or word_F3C8, 4
loc_AF02:
test ah, 4
jz short loc_AF0D
or word_F3C8, 1000h
loc_AF0D:
test ah, 10h
jz short loc_AF18
or word_F3C8, 2000h
loc_AF18:
mov al, 9
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test bh, 20h
jnz short loc_AF28
test ah, 8
jz short loc_AF2D
loc_AF28:
or word_F3C8, 2
loc_AF2D:
test bh, 10h
jnz short loc_AF37
test ah, 1
jz short loc_AF3C
loc_AF37:
or word_F3C8, 8
loc_AF3C:
test ah, 4
jz short loc_AF47
or word_F3C8, 4000h
loc_AF47:
test ah, 10h
jz short loc_AF52
or word_F3C8, 8000h
loc_AF52:
mov al, 5
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 2
jz short loc_AF62
or word_F3C8, 10h
loc_AF62:
test ah, 4
jz short loc_AF6C
or word_F3C8, 20h
loc_AF6C:
mov al, 0
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 1
jz short loc_AF7C
or word_F3C8, 40h
loc_AF7C:
mov al, 3
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 10h
jz short loc_AF8D
or word_F3C8, 80h
loc_AF8D:
mov al, 2
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 1
jz short loc_AF9E
or word_F3C8, 100h
loc_AF9E:
mov al, 6
mov ah, 4
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 10h
jz short locret_AFAE
or word_F3C8, 10h
locret_AFAE:
retf
sub_AED0 endp
; ---------------------------------------------------------------------------
nop
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AFB0 proc far
push bp
mov bp, sp
push 3E80h
call mem_assign_dos
or ax, ax
jz short loc_AFC4
mov ax, 1
pop bp
retf
; ---------------------------------------------------------------------------
loc_AFC4:
nopcall vram_planes_set
call graph_start
mov dx, 0A6h ; '<27>'
mov al, 1
out dx, al
call graph_clear
mov dx, 0A6h ; '<27>'
mov al, 0
out dx, al
call graph_clear
mov dx, 0A6h ; '<27>'
mov al, 0
out dx, al
mov dx, 0A4h ; '<27>'
out dx, al
call vsync_start
call key_beep_off
call text_systemline_hide
call text_cursor_hide
call egc_start
mov pfkey, 12h
push ds
push offset aUmx ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>^"
call pfstart
xor ax, ax
pop bp
retf
sub_AFB0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B019 proc far
push bp
mov bp, sp
call pfend
mov dx, 0A6h ; '<27>'
mov al, 1
out dx, al
call graph_clear
mov dx, 0A6h ; '<27>'
mov al, 0
out dx, al
call graph_clear
mov dx, 0A6h ; '<27>'
mov al, 0
out dx, al
mov dx, 0A4h ; '<27>'
out dx, al
call vsync_end
call mem_unassign
call text_clear
call egc_start
pop bp
retf
sub_B019 endp
; ---------------------------------------------------------------------------
db 0
include th02/hardware/snd_mmd_resident.asm
include th02/hardware/snd_determine_mode.asm
include th02/hardware/snd_pmd_resident.asm
include th02/hardware/snd_load.asm
include th02/formats/pi_slot_palette_apply.asm
include th02/formats/pi_slot_put.asm
include th02/hardware/snd_kaja_func.asm
; ---------------------------------------------------------------------------
push bp
mov bp, sp
cmp snd_active, 0
jnz short loc_B232
push 64h ; 'd'
nopcall frame_delay_
pop bp
retf
; ---------------------------------------------------------------------------
loc_B232:
push 1
nopcall frame_delay_
mov ah, KAJA_GET_SONG_MEASURE
cmp snd_midi_active, 1
jz short loc_B246
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
jmp short loc_B24B
; ---------------------------------------------------------------------------
loc_B246:
mov dx, 0C0h
int 61h ; reserved for user interrupt
loc_B24B:
cmp ax, [bp+6]
jb short loc_B232
pop bp
retf
; ---------------------------------------------------------------------------
include th02/hardware/snd_se.asm
include th02/frame_delay.asm
op_02_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_03_TEXT segment byte public 'CODE' use16
assume cs:op_03_TEXT
;org 7
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B2E8 proc far
var_2 = word ptr -2
enter 2, 0
push si
mov [bp+var_2], 1
call snd_se_reset
call snd_se_play stdcall, 6
pop cx
call snd_se_update
xor si, si
jmp short loc_B370
; ---------------------------------------------------------------------------
loc_B308:
mov dx, 0A4h ; '<27>'
mov al, byte ptr [bp+var_2]
out dx, al
mov ax, 1
sub ax, [bp+var_2]
mov [bp+var_2], ax
or si, si
jnz short loc_B320
push 0
jmp short loc_B330
; ---------------------------------------------------------------------------
loc_B320:
cmp si, 5
jnz short loc_B329
push 1
jmp short loc_B330
; ---------------------------------------------------------------------------
loc_B329:
cmp si, 0Ah
jnz short loc_B33C
push 2
loc_B330:
push 0
push 0
call pi_slot_put
add sp, 6
loc_B33C:
mov ax, si
mov bx, 3
cwd
idiv bx
or dx, dx
jnz short loc_B350
mov PaletteTone, 96h
jmp short loc_B363
; ---------------------------------------------------------------------------
loc_B350:
mov ax, si
mov bx, 3
cwd
idiv bx
cmp dx, 1
jnz short loc_B368
mov PaletteTone, 64h ; 'd'
loc_B363:
call far ptr palette_show
loc_B368:
push 1
call frame_delay
inc si
loc_B370:
cmp si, 12h
jl short loc_B308
mov dx, 0A4h ; '<27>'
mov al, 0
out dx, al
freePISlot 0
freePISlot 1
freePISlot 2
pop si
leave
retf
sub_B2E8 endp
op_03_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_04_TEXT segment byte public 'CODE' use16
assume cs:op_04_TEXT
;org 1
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B3B1 proc near
push bp
mov bp, sp
push si
push word ptr HUUHI_DAT+2
push word ptr HUUHI_DAT
call file_ropen
mov al, byte_DC34
cbw
imul ax, 0B6h
push 0
push ax
push 0
call file_seek
push ds
push offset word_F3EC
push 0B6h ; '<27>'
call file_read
xor si, si
jmp short loc_B3EF
; ---------------------------------------------------------------------------
loc_B3E4:
mov al, [si+1DBCh]
add al, 0EEh
mov [si+1DBCh], al
inc si
loc_B3EF:
cmp si, 0B2h ; '<27>'
jl short loc_B3E4
call file_close
pop si
pop bp
retn
sub_B3B1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B3FD proc near
var_9 = byte ptr -9
var_8 = word ptr -8
var_6 = word ptr -6
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 0Ah, 0
push si
push di
mov di, 0A0h
mov [bp+var_2], 98h
mov [bp+var_4], 9680h
mov [bp+var_9], 0
xor si, si
jmp short loc_B492
; ---------------------------------------------------------------------------
loc_B418:
mov ax, [bp+var_4]
or ax, [bp+var_2]
jz short loc_B439
push 0
push 0Ah
push [bp+var_2]
push [bp+var_4]
push [bp+arg_4]
push [bp+arg_2]
call far ptr LDIV@
push dx
push ax
jmp short loc_B443
; ---------------------------------------------------------------------------
loc_B439:
push 0
push 0Ah
push [bp+arg_4]
push [bp+arg_2]
loc_B443:
call far ptr F_LMOD@
mov [bp+var_6], dx
mov [bp+var_8], ax
push 0
push 0Ah
push [bp+var_2]
push [bp+var_4]
call far ptr LDIV@
mov [bp+var_2], dx
mov [bp+var_4], ax
mov ax, [bp+var_8]
add ax, 0A0h
mov di, ax
mov ax, [bp+var_8]
or ax, [bp+var_6]
jz short loc_B477
mov [bp+var_9], 1
loc_B477:
cmp [bp+var_9], 0
jz short loc_B491
mov ax, si
add ax, ax
add ax, 1Ah
call gaiji_putca pascal, ax, [bp+arg_6], di, [bp+arg_0]
loc_B491:
inc si
loc_B492:
cmp si, 8
jl short loc_B418
pop di
pop si
leave
retn 8
sub_B3FD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B49D proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
push bp
mov bp, sp
push 48
push [bp+arg_4]
mov bx, [bp+arg_2]
shl bx, 2
push word ptr (HISCORE_TYPE+2)[bx]
push word ptr HISCORE_TYPE[bx]
push [bp+arg_0]
call text_putsa
pop bp
retn 6
sub_B49D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B4BF proc far
var_2 = word ptr -2
arg_0 = dword ptr 6
arg_4 = word ptr 0Ah
arg_6 = word ptr 0Ch
enter 2, 0
push si
push di
mov di, [bp+arg_6]
mov si, 1
mov cx, 1
jmp short loc_B4D8
; ---------------------------------------------------------------------------
loc_B4D0:
mov ax, 0Ah
imul si
mov si, ax
inc cx
loc_B4D8:
cmp cx, di
jl short loc_B4D0
xor cx, cx
jmp short loc_B507
; ---------------------------------------------------------------------------
loc_B4E0:
mov ax, [bp+arg_4]
cwd
idiv si
mov bx, 0Ah
cwd
idiv bx
mov [bp+var_2], dx
les bx, [bp+arg_0]
add bx, cx
mov al, byte ptr [bp+var_2]
add al, 30h ; '0'
mov es:[bx], al
mov bx, 0Ah
mov ax, si
cwd
idiv bx
mov si, ax
inc cx
loc_B507:
cmp cx, di
jl short loc_B4E0
les bx, [bp+arg_0]
add bx, cx
mov byte ptr es:[bx], 0
pop di
pop si
leave
retf
sub_B4BF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B518 proc near
var_6 = byte ptr -6
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
enter 6, 0
push si
push di
mov si, [bp+arg_4]
mov di, [bp+arg_0]
push 4
mov bx, [bp+arg_2]
shl bx, 2
push word ptr [bx+1E3Ch]
push ss
lea ax, [bp+var_6]
push ax
call sub_B4BF
push 56
push si
push ss
lea ax, [bp+var_6]
push ax
push di
call text_putsa
push 2
mov bx, [bp+arg_2]
shl bx, 2
mov al, [bx+1E3Fh]
cbw
push ax
push ss
lea ax, [bp+var_6]
push ax
call sub_B4BF
call text_putca pascal, 60, si, '/', di
push 61
push si
push ss
lea ax, [bp+var_6]
push ax
push di
call text_putsa
push 2
mov bx, [bp+arg_2]
shl bx, 2
mov al, [bx+1E3Eh]
cbw
push ax
push ss
lea ax, [bp+var_6]
push ax
call sub_B4BF
add sp, 18h
call text_putca pascal, 63, si, '/', di
push 64
push si
push ss
lea ax, [bp+var_6]
push ax
push di
call text_putsa
pop di
pop si
leave
retn 6
sub_B518 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B5B0 proc near
arg_0 = word ptr 4
push bp
mov bp, sp
push si
push di
mov di, TX_WHITE
call gaiji_putsa pascal, 22, 2, ds, offset gHI_SCORE, TX_GREEN
push 40
push 2
push ds
mov al, byte_DC34
cbw
shl ax, 3
add ax, offset gcEASY_0
push ax
push TX_GREEN
call gaiji_putsa
call text_putsa pascal, 8, 4, ds, offset aHISCORE_HEAD, TX_GREEN
xor si, si
jmp short loc_B66D
; ---------------------------------------------------------------------------
loc_B5F4:
cmp si, [bp+arg_0]
jnz short loc_B5FE
mov di, TX_GREEN
jmp short loc_B601
; ---------------------------------------------------------------------------
loc_B5FE:
mov di, TX_WHITE
loc_B601:
push 0Ch
lea ax, [si+7]
push ax
push ds
mov ax, si
imul ax, 7
add ax, 1DEAh
push ax
push di
call gaiji_putsa
lea ax, [si+7]
push ax
mov bx, si
shl bx, 2
push word ptr [bx+1DC0h]
push word ptr [bx+1DBEh]
push di
call sub_B3FD
cmp byte ptr [si+1E31h], 7Fh
jz short loc_B645
push 2Ch ; ','
lea ax, [si+7]
push ax
mov al, [si+1E31h]
mov ah, 0
add ax, 0A0h
push ax
jmp short loc_B64E
; ---------------------------------------------------------------------------
loc_B645:
push 44
lea ax, [si+7]
push ax
push 0F0h
loc_B64E:
push di
call gaiji_putca
lea ax, [si+7]
push ax
mov al, [si+1E64h]
mov ah, 0
push ax
push di
call sub_B49D
lea ax, [si+7]
push ax
push si
push di
call sub_B518
inc si
loc_B66D:
cmp si, 0Ah
jl short loc_B5F4
xor si, si
jmp short loc_B6B0
; ---------------------------------------------------------------------------
loc_B676:
cmp si, [bp+arg_0]
jnz short loc_B680
mov di, TX_GREEN
jmp short loc_B683
; ---------------------------------------------------------------------------
loc_B680:
mov di, TX_WHITE
loc_B683:
cmp si, 9
jz short loc_B695
push 9
lea ax, [si+7]
push ax
lea ax, [si+0A1h]
push ax
jmp short loc_B6A9
; ---------------------------------------------------------------------------
loc_B695:
call gaiji_putca pascal, 8, 16, 0A1h, di
push 10
push 16
push 0A0h
loc_B6A9:
push di
call gaiji_putca
inc si
loc_B6B0:
cmp si, 0Ah
jl short loc_B676
pop di
pop si
pop bp
retn 2
sub_B5B0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B6BB proc near
var_2 = word ptr -2
enter 2, 0
push si
push di
call grcg_setcolor pascal, GC_RMW, 10
call grcg_fill
call grcg_off
inc word_DCB0
xor si, si
jmp short loc_B723
; ---------------------------------------------------------------------------
loc_B6DD:
mov ax, si
imul ax, 0A0h
add ax, word_DCB0
mov [bp+var_2], ax
mov bx, 280h
cwd
idiv bx
mov [bp+var_2], dx
mov ax, si
imul ax, 64h
sub ax, word_DCB0
mov di, ax
loc_B6FE:
or di, di
jge short loc_B708
add di, 190h
jmp short loc_B6FE
; ---------------------------------------------------------------------------
loc_B708:
push [bp+var_2]
push di
push 0
call super_put_rect
mov ax, [bp+var_2]
add ax, 40h
push ax
push di
push 1
call super_put_rect
inc si
loc_B723:
cmp si, 4
jl short loc_B6DD
xor si, si
jmp short loc_B775
; ---------------------------------------------------------------------------
loc_B72C:
mov ax, si
imul ax, 0A0h
add ax, word_DCB0
add ax, 140h
mov [bp+var_2], ax
mov bx, 280h
cwd
idiv bx
mov [bp+var_2], dx
mov ax, si
imul ax, 64h
sub ax, word_DCB0
mov di, ax
loc_B750:
or di, di
jge short loc_B75A
add di, 190h
jmp short loc_B750
; ---------------------------------------------------------------------------
loc_B75A:
push [bp+var_2]
push di
push 0
call super_put_rect
mov ax, [bp+var_2]
add ax, 40h
push ax
push di
push 1
call super_put_rect
inc si
loc_B775:
cmp si, 4
jl short loc_B72C
pop di
pop si
leave
retn
sub_B6BB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B77E proc far
var_1 = byte ptr -1
enter 2, 0
push si
xor si, si
mov [bp+var_1], 0
call sub_B3B1
mov dx, 0A6h ; '<27>'
mov al, 0
out dx, al
call graph_clear
mov dx, 0A6h ; '<27>'
mov al, 1
out dx, al
call graph_clear
cmp byte_DCB2, 0
jz short loc_B7B7
mov byte_DCB2, 0
push ds
push offset aOp_h_bft ; "op_h.bft"
call super_entry_bfnt
loc_B7B7:
push ds
push offset aOp_h_rgb ; "op_h.rgb"
call palette_entry_rgb
call far ptr palette_show
push 80h
push 60h
push 200h
push 130h
call grc_setclip
call grcg_setcolor pascal, GC_RMW, 10
call grcg_fill
call grcg_off
push 0FFFFh
call sub_B5B0
mov word_DCB0, 0
mov dx, 0A6h ; '<27>'
mov al, 0
out dx, al
mov al, 1
sub al, [bp+var_1]
mov [bp+var_1], al
mov dx, 0A4h ; '<27>'
mov al, 1
out dx, al
loc_B808:
call sub_AED0
or si, si
jnz short loc_B81D
cmp word_F3C8, 0
jnz short loc_B81D
mov si, 1
jmp short loc_B829
; ---------------------------------------------------------------------------
loc_B81D:
cmp si, 1
jnz short loc_B829
cmp word_F3C8, 0
jnz short loc_B84F
loc_B829:
call sub_B6BB
push 1
call frame_delay
mov dx, 0A6h ; '<27>'
mov al, [bp+var_1]
out dx, al
mov al, 1
sub al, [bp+var_1]
mov [bp+var_1], al
mov dx, 0A4h ; '<27>'
out dx, al
mov ax, word_DCB0
cmp ax, word_F4A4
jbe short loc_B808
loc_B84F:
mov word_F3C8, 0
push 14h
call frame_delay
push 0
push 0
push 27Fh
push 18Fh
call grc_setclip
pop si
leave
retf
sub_B77E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B86E proc far
var_A = byte ptr -0Ah
var_6 = byte ptr -6
enter 0Ah, 0
push si
push di
lea ax, [bp+var_6]
push ss
push ax
push ds
push offset unk_DCB4
mov cx, 6
call SCOPY@
lea ax, [bp+var_A]
push ss
push ax
push ds
push offset unk_DCBA
mov cx, 3
call SCOPY@
mov di, 1
mov byte_DC34, 0
jmp short loc_B8D7
; ---------------------------------------------------------------------------
loc_B8A0:
call sub_B3B1
mov al, byte_DC34
cbw
add ax, ax
lea dx, [bp+var_6]
add ax, dx
mov bx, ax
mov ax, ss:[bx]
cmp ax, word_F3EC
jz short loc_B8C8
mov al, byte_DC34
cbw
mov bx, ax
mov byte ptr [bx+1E76h], 0
xor di, di
jmp short loc_B8D3
; ---------------------------------------------------------------------------
loc_B8C8:
mov al, byte_DC34
cbw
mov bx, ax
mov byte ptr [bx+1E76h], 1
loc_B8D3:
inc byte_DC34
loc_B8D7:
cmp byte_DC34, 3
jl short loc_B8A0
mov byte_DC34, 3
call sub_B3B1
xor si, si
jmp short loc_B902
; ---------------------------------------------------------------------------
loc_B8EA:
mov al, [bp+si+var_A]
mov ah, 0
test word_F3EC, ax
jz short loc_B8FC
mov byte ptr [si+1E79h], 1
jmp short loc_B901
; ---------------------------------------------------------------------------
loc_B8FC:
mov byte ptr [si+1E79h], 0
loc_B901:
inc si
loc_B902:
cmp si, 3
jl short loc_B8EA
mov ax, di
pop di
pop si
leave
retf
sub_B86E endp
op_04_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_05_TEXT segment byte public 'CODE' use16
assume cs:op_05_TEXT
;org 0Dh
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B90D proc far
arg_0 = word ptr 6
arg_2 = word ptr 8
push bp
mov bp, sp
push si
push di
cmp [bp+arg_2], 0
jnz short loc_B953
mov ax, [bp+arg_0]
or ax, ax
jz short loc_B92B
cmp ax, 1
jz short loc_B930
cmp ax, 2
jz short loc_B938
jmp short loc_B93E
; ---------------------------------------------------------------------------
loc_B92B:
mov si, 10h
jmp short loc_B93B
; ---------------------------------------------------------------------------
loc_B930:
mov si, 0E0h
mov di, 0E0h
jmp short loc_B93E
; ---------------------------------------------------------------------------
loc_B938:
mov si, 1B0h
loc_B93B:
mov di, 80h
loc_B93E:
push si
push di
push 10h
push 90h
call sub_AE00
push si
push di
push 0C0h
push 0Ah
jmp short loc_B9B2
; ---------------------------------------------------------------------------
loc_B953:
mov ax, [bp+arg_0]
or ax, ax
jz short loc_B966
cmp ax, 1
jz short loc_B96B
cmp ax, 2
jz short loc_B973
jmp short loc_B979
; ---------------------------------------------------------------------------
loc_B966:
mov si, 0D0h
jmp short loc_B976
; ---------------------------------------------------------------------------
loc_B96B:
mov si, 1A0h
mov di, 0E8h
jmp short loc_B979
; ---------------------------------------------------------------------------
loc_B973:
mov si, 270h
loc_B976:
mov di, 88h
loc_B979:
push si
push di
push 10h
push 90h
call sub_AE00
mov ax, [bp+arg_0]
or ax, ax
jz short loc_B998
cmp ax, 1
jz short loc_B99D
cmp ax, 2
jz short loc_B9A5
jmp short loc_B9AB
; ---------------------------------------------------------------------------
loc_B998:
mov si, 18h
jmp short loc_B9A8
; ---------------------------------------------------------------------------
loc_B99D:
mov si, 0E8h
mov di, 170h
jmp short loc_B9AB
; ---------------------------------------------------------------------------
loc_B9A5:
mov si, 1B8h
loc_B9A8:
mov di, 110h
loc_B9AB:
push si
push di
push 0C0h
push 8
loc_B9B2:
call sub_AE00
pop di
pop si
pop bp
retf
sub_B90D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B9BB proc far
var_2 = word ptr -2
arg_0 = word ptr 6
arg_2 = word ptr 8
enter 2, 0
push si
push di
mov ax, [bp+arg_0]
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 [bp+var_2], ax
call grcg_setcolor pascal, GC_RMW, 0
xor si, si
jmp short loc_BA11
; ---------------------------------------------------------------------------
loc_B9E8:
xor di, di
jmp short loc_BA07
; ---------------------------------------------------------------------------
loc_B9EC:
test si, 1
jz short loc_B9F7
mov ax, 0AAAAh
jmp short loc_B9FA
; ---------------------------------------------------------------------------
loc_B9F7:
mov ax, 5555h
loc_B9FA:
les bx, VRAM_PLANE_B
add bx, [bp+var_2]
mov es:[bx+di], ax
add di, 2
loc_BA07:
cmp di, 18h
jl short loc_B9EC
inc si
add [bp+var_2], 50h ; 'P'
loc_BA11:
cmp si, 90h
jl short loc_B9E8
call grcg_off
pop di
pop si
leave
retf
sub_B9BB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BA20 proc far
arg_0 = word ptr 6
arg_2 = word ptr 8
push bp
mov bp, sp
push si
push di
mov ax, [bp+arg_0]
or ax, ax
jz short loc_BA38
cmp ax, 1
jz short loc_BA3D
cmp ax, 2
jz short loc_BA45
jmp short loc_BA4B
; ---------------------------------------------------------------------------
loc_BA38:
mov si, 10h
jmp short loc_BA48
; ---------------------------------------------------------------------------
loc_BA3D:
mov si, 0E0h
mov di, 88h
jmp short loc_BA4B
; ---------------------------------------------------------------------------
loc_BA45:
mov si, 1B0h
loc_BA48:
mov di, 128h
loc_BA4B:
call grcg_setcolor pascal, GC_RMW, [bp+arg_2]
lea ax, [si+8]
push ax
lea ax, [di+8]
push ax
lea ax, [si+0C8h]
push ax
lea ax, [di+48h]
push ax
push 8
call grcg_round_boxfill
call grcg_setcolor pascal, GC_RMW, 0
push si
push di
lea ax, [si+0C0h]
push ax
lea ax, [di+40h]
push ax
push 8
call grcg_round_boxfill
call grcg_off
mov bx, [bp+arg_0]
imul bx, 0Ch
push word ptr [bx+6F4h]
push word ptr [bx+6F2h]
mov ax, [bp+arg_2]
or ax, 20h
push ax
lea ax, [di+8]
push ax
lea ax, [si+8]
push ax
call sub_AB4D
mov bx, [bp+arg_0]
imul bx, 0Ch
push word ptr [bx+6F8h]
push word ptr [bx+6F6h]
mov ax, [bp+arg_2]
or ax, 20h
push ax
lea ax, [di+18h]
push ax
lea ax, [si+8]
push ax
call sub_AB4D
mov bx, [bp+arg_0]
imul bx, 0Ch
push word ptr [bx+6FCh]
push word ptr [bx+6FAh]
mov ax, [bp+arg_2]
or ax, 20h
push ax
lea ax, [di+28h]
push ax
lea ax, [si+8]
push ax
call sub_AB4D
add sp, 1Eh
pop di
pop si
pop bp
retf
sub_BA20 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BAFC proc far
push bp
mov bp, sp
call grcg_setcolor pascal, GC_RMW, 12
push 88h
push 18h
push 208h
push 38h ; '8'
push 8
call grcg_round_boxfill
call grcg_setcolor pascal, GC_RMW, 0
push 80h
push 10h
push 200h
push 30h ; '0'
push 8
call grcg_round_boxfill
call grcg_off
push word ptr off_DD46+2
push word ptr off_DD46
push 2Ch ; ','
push 18h
push 90h
call sub_AB4D
add sp, 0Ah
les bx, dword_F3DC
cmp byte ptr es:[bx+0Bh], 5
jnz short loc_BBBE
call grcg_setcolor pascal, GC_RMW, 12
push 18h
push 38h ; '8'
push 278h
push 68h ; 'h'
push 8
call grcg_round_boxfill
call grcg_setcolor pascal, GC_RMW, 0
push 10h
push 30h ; '0'
push 270h
push 60h
push 8
call grcg_round_boxfill
call grcg_off
push word ptr off_DD4A+2
push word ptr off_DD4A
push 2Fh ; '/'
push 38h ; '8'
push 20h ; ' '
call sub_AB4D
push word ptr off_DD4E+2
push word ptr off_DD4E
push 2Fh ; '/'
push 48h ; 'H'
push 20h ; ' '
call sub_AB4D
add sp, 14h
loc_BBBE:
pop bp
retf
sub_BAFC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BBC0 proc far
push bp
mov bp, sp
mov PaletteTone, 0
call far ptr palette_show
mov dx, 0A6h ; '<27>'
mov al, 0
out dx, al
call pi_slot_load stdcall, 3, offset aTselect_pi, ds
call pi_slot_palette_apply stdcall, 3
call pi_slot_put stdcall, 0, 0, 3
add sp, 0Eh
freePISlot 3
push 1
call graph_copy_page
mov dx, 0A6h ; '<27>'
mov al, 0
out dx, al
les bx, dword_F3DC
cmp byte ptr es:[bx+0Bh], 5
jz short loc_BC61
cmp byte_F4A6, 0
jz short loc_BC3A
push word ptr off_DD52+2
push word ptr off_DD52
push 2Fh ; '/'
push 70h ; 'p'
push 10h
call sub_AB4D
add sp, 0Ah
loc_BC3A:
cmp byte_F4A7, 0
jz short loc_BC58
push word ptr off_DD52+2
push word ptr off_DD52
push 2Fh ; '/'
push 70h ; 'p'
push 0E0h
call sub_AB4D
add sp, 0Ah
loc_BC58:
cmp byte_F4A8, 0
jz short loc_BCBA
jmp short loc_BCA3
; ---------------------------------------------------------------------------
loc_BC61:
cmp byte_F4A9, 0
jz short loc_BC7E
push word ptr off_DD52+2
push word ptr off_DD52
push 2Fh ; '/'
push 70h ; 'p'
push 10h
call sub_AB4D
add sp, 0Ah
loc_BC7E:
cmp byte_F4AA, 0
jz short loc_BC9C
push word ptr off_DD52+2
push word ptr off_DD52
push 2Fh ; '/'
push 70h ; 'p'
push 0E0h
call sub_AB4D
add sp, 0Ah
loc_BC9C:
cmp byte_F4AB, 0
jz short loc_BCBA
loc_BCA3:
push word ptr off_DD52+2
push word ptr off_DD52
push 2Fh ; '/'
push 70h ; 'p'
push 1B0h
call sub_AB4D
add sp, 0Ah
loc_BCBA:
call pi_slot_put stdcall, 24, 136, 0
call pi_slot_put stdcall, 224, 224, 1
call pi_slot_put stdcall, 440, 136, 2
les bx, dword_F3DC
mov byte ptr es:[bx+26h], 1
push 88h
push 18h
call sub_B9BB
push 88h
push 1B8h
call sub_B9BB
push 7
push 0
call sub_BA20
push 0Ch
push 1
call sub_BA20
push 7
push 2
call sub_BA20
add sp, 26h
call sub_BAFC
push 2
call palette_black_in
pop bp
retf
sub_BBC0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BD24 proc far
var_C = byte ptr -0Ch
var_6 = byte ptr -6
enter 0Ch, 0
push si
push di
xor si, si
lea ax, [bp+var_6]
push ss
push ax
push ds
push offset unk_DD56
mov cx, 6
call SCOPY@
lea ax, [bp+var_C]
push ss
push ax
push ds
push offset unk_DD5C
mov cx, 6
call SCOPY@
xor di, di
call sub_BBC0
loc_BD54:
call sub_AED0
or si, si
jz short loc_BD60
jmp loc_BF95
; ---------------------------------------------------------------------------
loc_BD60:
test byte ptr word_F3C8, 4
jnz short loc_BD6A
jmp loc_BE6D
; ---------------------------------------------------------------------------
loc_BD6A:
push 7
mov al, byte_DD20
cbw
push ax
call sub_BA20
add sp, 4
push 1
call frame_delay
push 0
mov al, byte_DD20
cbw
push ax
call sub_B90D
add sp, 4
push 1
call frame_delay
mov al, byte_DD20
cbw
push ax
mov al, byte_DD20
cbw
add ax, ax
lea dx, [bp+var_C]
add ax, dx
mov bx, ax
mov ax, ss:[bx]
add ax, 8
push ax
mov al, byte_DD20
cbw
add ax, ax
lea dx, [bp+var_6]
add ax, dx
mov bx, ax
mov ax, ss:[bx]
add ax, 8
push ax
call pi_slot_put
add sp, 6
push 1
call frame_delay
mov al, byte_DD20
cbw
add ax, ax
lea dx, [bp+var_C]
add ax, dx
mov bx, ax
mov ax, ss:[bx]
add ax, 8
push ax
mov al, byte_DD20
cbw
add ax, ax
lea dx, [bp+var_6]
add ax, dx
mov bx, ax
mov ax, ss:[bx]
add ax, 8
push ax
call sub_B9BB
add sp, 4
dec byte_DD20
cmp byte_DD20, 0
jge short loc_BE0F
mov byte_DD20, 2
loc_BE0F:
push 1
call frame_delay
push 1
mov al, byte_DD20
cbw
push ax
call sub_B90D
add sp, 4
push 1
call frame_delay
push 0Ch
mov al, byte_DD20
cbw
push ax
call sub_BA20
add sp, 4
push 1
call frame_delay
mov al, byte_DD20
cbw
push ax
mov al, byte_DD20
cbw
add ax, ax
lea dx, [bp+var_C]
add ax, dx
mov bx, ax
push word ptr ss:[bx]
mov al, byte_DD20
cbw
add ax, ax
lea dx, [bp+var_6]
add ax, dx
mov bx, ax
push word ptr ss:[bx]
call pi_slot_put
add sp, 6
loc_BE6D:
test byte ptr word_F3C8, 8
jnz short loc_BE77
jmp loc_BF7A
; ---------------------------------------------------------------------------
loc_BE77:
push 0
mov al, byte_DD20
cbw
push ax
call sub_B90D
add sp, 4
push 1
call frame_delay
mov al, byte_DD20
cbw
push ax
mov al, byte_DD20
cbw
add ax, ax
lea dx, [bp+var_C]
add ax, dx
mov bx, ax
mov ax, ss:[bx]
add ax, 8
push ax
mov al, byte_DD20
cbw
add ax, ax
lea dx, [bp+var_6]
add ax, dx
mov bx, ax
mov ax, ss:[bx]
add ax, 8
push ax
call pi_slot_put
add sp, 6
push 1
call frame_delay
push 7
mov al, byte_DD20
cbw
push ax
call sub_BA20
add sp, 4
push 1
call frame_delay
mov al, byte_DD20
cbw
add ax, ax
lea dx, [bp+var_C]
add ax, dx
mov bx, ax
mov ax, ss:[bx]
add ax, 8
push ax
mov al, byte_DD20
cbw
add ax, ax
lea dx, [bp+var_6]
add ax, dx
mov bx, ax
mov ax, ss:[bx]
add ax, 8
push ax
call sub_B9BB
add sp, 4
inc byte_DD20
cmp byte_DD20, 2
jle short loc_BF1C
mov byte_DD20, 0
loc_BF1C:
push 1
call frame_delay
push 1
mov al, byte_DD20
cbw
push ax
call sub_B90D
add sp, 4
push 1
call frame_delay
push 0Ch
mov al, byte_DD20
cbw
push ax
call sub_BA20
add sp, 4
push 1
call frame_delay
mov al, byte_DD20
cbw
push ax
mov al, byte_DD20
cbw
add ax, ax
lea dx, [bp+var_C]
add ax, dx
mov bx, ax
push word ptr ss:[bx]
mov al, byte_DD20
cbw
add ax, ax
lea dx, [bp+var_6]
add ax, dx
mov bx, ax
push word ptr ss:[bx]
call pi_slot_put
add sp, 6
loc_BF7A:
test byte ptr word_F3C8, 10h
jnz short loc_BF88
test byte ptr word_F3C8, 80h
jz short loc_BF95
loc_BF88:
les bx, dword_F3DC
mov al, byte_DD20
mov es:[bx+26h], al
jmp short loc_BFB7
; ---------------------------------------------------------------------------
loc_BF95:
push 1
call frame_delay
mov si, word_F3C8
or si, si
jz short loc_BFB2
inc di
cmp di, 1Eh
ja short loc_BFAD
jmp loc_BD54
; ---------------------------------------------------------------------------
loc_BFAD:
xor si, si
jmp loc_BD54
; ---------------------------------------------------------------------------
loc_BFB2:
xor di, di
jmp loc_BD54
; ---------------------------------------------------------------------------
loc_BFB7:
freePISlot 0
freePISlot 1
freePISlot 2
push 1
call palette_black_out
pop di
pop si
leave
retf
sub_BD24 endp
op_05_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_06_TEXT segment byte public 'CODE' use16
assume cs:op_06_TEXT
;org 5
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BFF5 proc near
var_1 = byte ptr -1
arg_0 = byte ptr 4
arg_2 = byte ptr 6
enter 2, 0
mov al, 1
sub al, byte ptr word_F57C+1
mov [bp+var_1], al
mov dx, 0A6h ; '<27>'
out dx, al
mov al, [bp+arg_2]
mov ah, 0
shl ax, 2
mov bx, ax
push word ptr [bx+8E8h]
push word ptr [bx+8E6h]
mov al, [bp+arg_0]
mov ah, 0
or ax, 20h
push ax
mov al, [bp+arg_2]
mov ah, 0
add ax, 6
shl ax, 4
push ax
push 10h
call sub_AB4D
mov dx, 0A6h ; '<27>'
mov al, byte ptr word_F57C+1
out dx, al
mov al, [bp+arg_2]
mov ah, 0
shl ax, 2
mov bx, ax
push word ptr [bx+8E8h]
push word ptr [bx+8E6h]
mov al, [bp+arg_0]
mov ah, 0
or ax, 20h
push ax
mov al, [bp+arg_2]
mov ah, 0
add ax, 6
shl ax, 4
push ax
push 10h
call sub_AB4D
add sp, 14h
leave
retn 4
sub_BFF5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C070 proc near
arg_0 = byte ptr 4
push bp
mov bp, sp
push si
xor si, si
jmp short loc_C08D
; ---------------------------------------------------------------------------
loc_C078:
push si
mov al, [bp+arg_0]
mov ah, 0
cmp ax, si
jnz short loc_C086
mov al, 0Fh
jmp short loc_C088
; ---------------------------------------------------------------------------
loc_C086:
mov al, 3
loc_C088:
push ax
call sub_BFF5
inc si
loc_C08D:
cmp si, 11h
jl short loc_C078
pop si
pop bp
retn 2
sub_C070 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C097 proc near
push bp
mov bp, sp
push si
push 7D00h
call hmem_allocbyte
mov word ptr dword_F57E+2, ax
mov word ptr dword_F57E, 0
xor si, si
jmp short loc_C0CD
; ---------------------------------------------------------------------------
loc_C0B0:
les bx, VRAM_PLANE_B
add bx, si
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, dword_F57E
add bx, si
mov es:[bx+2], dx
mov es:[bx], ax
add si, 4
loc_C0CD:
cmp si, 7D00h
jl short loc_C0B0
pop si
pop bp
retn
sub_C097 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C0D6 proc near
push bp
mov bp, sp
push word ptr dword_F57E+2
call hmem_free
pop bp
retn
sub_C0D6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C0E4 proc near
push bp
mov bp, sp
xor cx, cx
jmp short loc_C108
; ---------------------------------------------------------------------------
loc_C0EB:
les bx, dword_F57E
add bx, cx
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, VRAM_PLANE_B
add bx, cx
mov es:[bx+2], dx
mov es:[bx], ax
add cx, 4
loc_C108:
cmp cx, 7D00h
jl short loc_C0EB
pop bp
retn
sub_C0E4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C110 proc near
var_3 = byte ptr -3
var_2 = word ptr -2
arg_0 = byte ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
arg_6 = word ptr 0Ah
arg_8 = word ptr 0Ch
arg_A = word ptr 0Eh
enter 4, 0
push si
push di
mov di, [bp+arg_A]
sar [bp+arg_6], 4
mov [bp+var_2], 0
jmp short loc_C18E
; ---------------------------------------------------------------------------
loc_C124:
mov ax, [bp+var_2]
shl ax, 8
cwd
idiv [bp+arg_2]
add al, [bp+arg_0]
mov [bp+var_3], al
mov ax, [bp+arg_4]
cwd
mov bl, [bp+var_3]
mov bh, 0
add bx, bx
push ax
mov ax, [bx+308h]
push dx
cwd
pop cx
pop bx
call LXMUL@
mov cl, 8
call far ptr LXRSH@
add ax, [bp+arg_8]
mov bx, [bp+var_2]
shl bx, 2
mov [bx+di], ax
mov ax, [bp+arg_4]
cwd
mov bl, [bp+var_3]
mov bh, 0
add bx, bx
push ax
mov ax, [bx+288h]
push dx
cwd
pop cx
pop bx
call LXMUL@
mov cl, 8
call far ptr LXRSH@
add ax, [bp+arg_6]
mov bx, [bp+var_2]
shl bx, 2
mov [bx+di+2], ax
inc [bp+var_2]
loc_C18E:
mov ax, [bp+var_2]
cmp ax, [bp+arg_2]
jl short loc_C124
mov bx, [bp+var_2]
shl bx, 2
mov ax, [di]
mov [bx+di], ax
mov bx, [bp+var_2]
shl bx, 2
mov ax, [di+2]
mov [bx+di+2], ax
pop di
pop si
leave
retn 0Ch
sub_C110 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C1B2 proc near
push bp
mov bp, sp
push si
cmp byte_DF96, 0
jz short loc_C1C0
jmp loc_C263
; ---------------------------------------------------------------------------
loc_C1C0:
xor si, si
jmp loc_C256
; ---------------------------------------------------------------------------
loc_C1C5:
call IRand
mov bx, 280h
cwd
idiv bx
mov bx, si
shl bx, 2
mov [bx+1EACh], dx
call IRand
mov bx, 1900h
cwd
idiv bx
mov bx, si
shl bx, 2
mov [bx+1EAEh], dx
call IRand
and ax, 7
mov dx, 4
sub dx, ax
mov bx, si
shl bx, 2
mov [bx+1EECh], dx
mov bx, si
shl bx, 2
cmp word ptr [bx+1EECh], 0
jnz short loc_C21A
mov bx, si
shl bx, 2
mov word ptr [bx+1EECh], 1
loc_C21A:
call IRand
and ax, 3
shl ax, 4
add ax, 20h ; ' '
mov bx, si
shl bx, 2
mov [bx+1EEEh], ax
call IRand
mov [si+1F2Ch], al
call IRand
and al, 7
mov dl, 4
sub dl, al
mov [si+1F3Ch], dl
cmp byte ptr [si+1F3Ch], 0
jnz short loc_C255
mov byte ptr [si+1F3Ch], 4
loc_C255:
inc si
loc_C256:
cmp si, 10h
jge short loc_C25E
jmp loc_C1C5
; ---------------------------------------------------------------------------
loc_C25E:
mov byte_DF96, 1
loc_C263:
xor si, si
jmp loc_C3A1
; ---------------------------------------------------------------------------
loc_C268:
push 1E84h
mov bx, si
shl bx, 2
push word ptr [bx+1EACh]
mov bx, si
shl bx, 2
push word ptr [bx+1EAEh]
mov ax, si
and ax, 3
shl ax, 4
add ax, 40h
push ax
mov ax, si
mov bx, 4
cwd
idiv bx
add ax, 3
push ax
mov al, [si+1F2Ch]
push ax
call sub_C110
mov bx, si
shl bx, 2
mov ax, [bx+1EECh]
mov bx, si
shl bx, 2
add [bx+1EACh], ax
mov bx, si
shl bx, 2
mov ax, [bx+1EEEh]
mov bx, si
shl bx, 2
add [bx+1EAEh], ax
mov al, [si+1F3Ch]
add [si+1F2Ch], al
mov bx, si
shl bx, 2
cmp word ptr [bx+1EACh], 0
jle short loc_C2E2
mov bx, si
shl bx, 2
cmp word ptr [bx+1EACh], 27Fh
jl short loc_C2F4
loc_C2E2:
mov bx, si
shl bx, 2
mov dx, 0FFFFh
mov ax, [bx+1EECh]
imul dx
mov [bx+1EECh], ax
loc_C2F4:
mov bx, si
shl bx, 2
cmp word ptr [bx+1EAEh], 1F40h
jge short loc_C304
jmp loc_C38B
; ---------------------------------------------------------------------------
loc_C304:
call IRand
mov bx, 280h
cwd
idiv bx
mov bx, si
shl bx, 2
mov [bx+1EACh], dx
mov bx, si
shl bx, 2
mov word ptr [bx+1EAEh], 0F9C0h
call IRand
and ax, 0Fh
mov dx, 8
sub dx, ax
mov bx, si
shl bx, 2
mov [bx+1EECh], dx
mov bx, si
shl bx, 2
cmp word ptr [bx+1EECh], 0
jnz short loc_C350
mov bx, si
shl bx, 2
mov word ptr [bx+1EECh], 1
loc_C350:
call IRand
and ax, 3
shl ax, 4
add ax, 20h ; ' '
mov bx, si
shl bx, 2
mov [bx+1EEEh], ax
call IRand
mov [si+1F2Ch], al
call IRand
and al, 7
mov dl, 4
sub dl, al
mov [si+1F3Ch], dl
cmp byte ptr [si+1F3Ch], 0
jnz short loc_C38B
mov byte ptr [si+1F3Ch], 4
loc_C38B:
push ds
push offset unk_F4B4
mov ax, si
mov bx, 4
cwd
idiv bx
add ax, 3
push ax
call grcg_polygon_c
inc si
loc_C3A1:
cmp si, 10h
jge short loc_C3A9
jmp loc_C268
; ---------------------------------------------------------------------------
loc_C3A9:
pop si
pop bp
retn
sub_C1B2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C3AC proc near
push bp
mov bp, sp
call sub_C0E4
call grcg_setcolor pascal, GC_RMW or GC_B, 15
call sub_C1B2
call grcg_off
mov dx, 0A4h ; '<27>'
mov al, byte ptr word_F57C+1
out dx, al
mov al, 1
sub al, byte ptr word_F57C+1
mov byte ptr word_F57C+1, al
mov dx, 0A6h ; '<27>'
out dx, al
push 1
call frame_delay
pop bp
retn
sub_C3AC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C3E1 proc near
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
enter 6, 0
push si
push di
mov [bp+var_6], 0
jmp short loc_C409
; ---------------------------------------------------------------------------
loc_C3EE:
push 3200h
call hmem_allocbyte
mov bx, [bp+var_6]
shl bx, 2
mov [bx+1F54h], ax
mov word ptr [bx+1F52h], 0
inc [bp+var_6]
loc_C409:
cmp [bp+var_6], 4
jl short loc_C3EE
xor si, si
mov di, 40h
jmp loc_C4AC
; ---------------------------------------------------------------------------
loc_C417:
mov [bp+var_2], 0A0h
jmp loc_C4A1
; ---------------------------------------------------------------------------
loc_C41F:
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_4], ax
les bx, VRAM_PLANE_B
add bx, [bp+var_4]
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, dword ptr unk_F582
mov es:[bx+si+2], dx
mov es:[bx+si], ax
les bx, VRAM_PLANE_R
add bx, [bp+var_4]
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, dword ptr unk_F586
mov es:[bx+si+2], dx
mov es:[bx+si], ax
les bx, VRAM_PLANE_G
add bx, [bp+var_4]
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, dword ptr unk_F58A
mov es:[bx+si+2], dx
mov es:[bx+si], ax
les bx, VRAM_PLANE_E
add bx, [bp+var_4]
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, dword ptr unk_F58E
mov es:[bx+si+2], dx
mov es:[bx+si], ax
add si, 4
add [bp+var_2], 20h ; ' '
loc_C4A1:
cmp [bp+var_2], 1E0h
jge short loc_C4AB
jmp loc_C41F
; ---------------------------------------------------------------------------
loc_C4AB:
inc di
loc_C4AC:
cmp di, 50h ; 'P'
jge short loc_C4B4
jmp loc_C417
; ---------------------------------------------------------------------------
loc_C4B4:
mov di, 50h ; 'P'
jmp loc_C54F
; ---------------------------------------------------------------------------
loc_C4BA:
mov [bp+var_2], 130h
jmp loc_C544
; ---------------------------------------------------------------------------
loc_C4C2:
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_4], ax
les bx, VRAM_PLANE_B
add bx, [bp+var_4]
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, dword ptr unk_F582
mov es:[bx+si+2], dx
mov es:[bx+si], ax
les bx, VRAM_PLANE_R
add bx, [bp+var_4]
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, dword ptr unk_F586
mov es:[bx+si+2], dx
mov es:[bx+si], ax
les bx, VRAM_PLANE_G
add bx, [bp+var_4]
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, dword ptr unk_F58A
mov es:[bx+si+2], dx
mov es:[bx+si], ax
les bx, VRAM_PLANE_E
add bx, [bp+var_4]
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, dword ptr unk_F58E
mov es:[bx+si+2], dx
mov es:[bx+si], ax
add si, 4
add [bp+var_2], 20h ; ' '
loc_C544:
cmp [bp+var_2], 270h
jge short loc_C54E
jmp loc_C4C2
; ---------------------------------------------------------------------------
loc_C54E:
inc di
loc_C54F:
cmp di, 180h
jge short loc_C558
jmp loc_C4BA
; ---------------------------------------------------------------------------
loc_C558:
pop di
pop si
leave
retn
sub_C3E1 endp
include th02/music/music_cmt_load.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C5A4 proc near
push bp
mov bp, sp
push word_F584
call hmem_free
push word_F588
call hmem_free
push word_F58C
call hmem_free
push word_F590
call hmem_free
pop bp
retn
sub_C5A4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C5CD proc near
var_2 = word ptr -2
enter 2, 0
push si
push di
xor cx, cx
mov si, 40h
jmp loc_C673
; ---------------------------------------------------------------------------
loc_C5DB:
mov di, 0A0h
jmp loc_C669
; ---------------------------------------------------------------------------
loc_C5E1:
mov ax, di
sar ax, 3
mov dx, si
shl dx, 6
add ax, dx
mov dx, si
shl dx, 4
add ax, dx
mov [bp+var_2], ax
les bx, dword ptr unk_F582
add bx, cx
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, VRAM_PLANE_B
add bx, [bp+var_2]
mov es:[bx+2], dx
mov es:[bx], ax
les bx, dword ptr unk_F586
add bx, cx
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, VRAM_PLANE_R
add bx, [bp+var_2]
mov es:[bx+2], dx
mov es:[bx], ax
les bx, dword ptr unk_F58A
add bx, cx
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, VRAM_PLANE_G
add bx, [bp+var_2]
mov es:[bx+2], dx
mov es:[bx], ax
les bx, dword ptr unk_F58E
add bx, cx
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, VRAM_PLANE_E
add bx, [bp+var_2]
mov es:[bx+2], dx
mov es:[bx], ax
add cx, 4
add di, 20h ; ' '
loc_C669:
cmp di, 1E0h
jge short loc_C672
jmp loc_C5E1
; ---------------------------------------------------------------------------
loc_C672:
inc si
loc_C673:
cmp si, 50h ; 'P'
jge short loc_C67B
jmp loc_C5DB
; ---------------------------------------------------------------------------
loc_C67B:
mov si, 50h ; 'P'
jmp loc_C719
; ---------------------------------------------------------------------------
loc_C681:
mov di, 130h
jmp loc_C70F
; ---------------------------------------------------------------------------
loc_C687:
mov ax, di
sar ax, 3
mov dx, si
shl dx, 6
add ax, dx
mov dx, si
shl dx, 4
add ax, dx
mov [bp+var_2], ax
les bx, dword ptr unk_F582
add bx, cx
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, VRAM_PLANE_B
add bx, [bp+var_2]
mov es:[bx+2], dx
mov es:[bx], ax
les bx, dword ptr unk_F586
add bx, cx
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, VRAM_PLANE_R
add bx, [bp+var_2]
mov es:[bx+2], dx
mov es:[bx], ax
les bx, dword ptr unk_F58A
add bx, cx
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, VRAM_PLANE_G
add bx, [bp+var_2]
mov es:[bx+2], dx
mov es:[bx], ax
les bx, dword ptr unk_F58E
add bx, cx
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, VRAM_PLANE_E
add bx, [bp+var_2]
mov es:[bx+2], dx
mov es:[bx], ax
add cx, 4
add di, 20h ; ' '
loc_C70F:
cmp di, 270h
jge short loc_C718
jmp loc_C687
; ---------------------------------------------------------------------------
loc_C718:
inc si
loc_C719:
cmp si, 180h
jge short loc_C722
jmp loc_C681
; ---------------------------------------------------------------------------
loc_C722:
pop di
pop si
leave
retn
sub_C5CD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C726 proc near
@@track = word ptr 4
push bp
mov bp, sp
push si
push di
call music_cmt_load pascal, [bp+@@track]
call sub_C0E4
call sub_C5CD
push ds
push offset music_cmt
push 1Fh
push 40h
push 0A0h
call sub_AB4D
add sp, 0Ah
mov si, 1
jmp short loc_C76E
; ---------------------------------------------------------------------------
loc_C74F:
push ds
mov ax, si
imul ax, MUSIC_CMT_LINE_LEN
add ax, offset music_cmt
push ax
push 1Dh
lea ax, [si+4]
shl ax, 4
push ax
push 130h
call sub_AB4D
add sp, 0Ah
inc si
loc_C76E:
cmp si, MUSIC_CMT_LINE_COUNT
jl short loc_C74F
xor di, di
jmp short loc_C794
; ---------------------------------------------------------------------------
loc_C777:
les bx, VRAM_PLANE_B
add bx, di
mov dx, es:[bx+2]
mov ax, es:[bx]
les bx, dword_F57E
add bx, di
mov es:[bx+2], dx
mov es:[bx], ax
add di, 4
loc_C794:
cmp di, 7D00h
jl short loc_C777
pop di
pop si
pop bp
retn 2
sub_C726 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C7A0 proc far
var_1 = byte ptr -1
enter 2, 0
mov byte ptr word_F57C+1, 1
mov PaletteTone, 0
call far ptr palette_show
mov dx, 0A4h ; '<27>'
mov al, 0
out dx, al
mov dx, 0A6h ; '<27>'
out dx, al
call graph_clear
mov dx, 0A6h ; '<27>'
mov al, 1
out dx, al
call pi_slot_load stdcall, 0, offset aOp3_pi, ds
call pi_slot_palette_apply stdcall, 0
call pi_slot_put stdcall, 0, 0, 0
add sp, 0Eh
freePISlot 0
mov al, byte_DF97
mov byte ptr word_F57C, al
push word_F57C
call sub_C070
push 0
call graph_copy_page
mov dx, 0A6h ; '<27>'
mov al, 1
out dx, al
mov dx, 0A4h ; '<27>'
mov al, 0
out dx, al
call sub_C097
call sub_C3E1
mov dx, 0A6h ; '<27>'
mov al, 1
out dx, al
mov al, byte_DF97
mov ah, 0
push ax
call sub_C726
mov dx, 0A6h ; '<27>'
mov al, 0
out dx, al
mov al, byte_DF97
mov ah, 0
push ax
call sub_C726
mov PaletteTone, 64h ; 'd'
call far ptr palette_show
loc_C849:
call sub_AED0
cmp word_F3C8, 0
jz short loc_C85A
call sub_C3AC
jmp short loc_C849
; ---------------------------------------------------------------------------
loc_C85A:
call sub_AED0
test byte ptr word_F3C8, 1
jz short loc_C895
push word_F57C
push 3
call sub_BFF5
cmp byte ptr word_F57C, 0
jbe short loc_C87C
dec byte ptr word_F57C
jmp short loc_C881
; ---------------------------------------------------------------------------
loc_C87C:
mov byte ptr word_F57C, 10h
loc_C881:
cmp byte ptr word_F57C, 0Fh
jnz short loc_C88C
dec byte ptr word_F57C
loc_C88C:
push word_F57C
push 0Fh
call sub_BFF5
loc_C895:
test byte ptr word_F3C8, 2
jz short loc_C8CB
push word_F57C
push 3
call sub_BFF5
cmp byte ptr word_F57C, 10h
jnb short loc_C8B2
inc byte ptr word_F57C
jmp short loc_C8B7
; ---------------------------------------------------------------------------
loc_C8B2:
mov byte ptr word_F57C, 0
loc_C8B7:
cmp byte ptr word_F57C, 0Fh
jnz short loc_C8C2
inc byte ptr word_F57C
loc_C8C2:
push word_F57C
push 0Fh
call sub_BFF5
loc_C8CB:
test byte ptr word_F3C8, 10h
jnz short loc_C8D9
test byte ptr word_F3C8, 80h
jz short loc_C950
loc_C8D9:
cmp byte ptr word_F57C, 10h
jnz short loc_C8E3
jmp loc_C967
; ---------------------------------------------------------------------------
loc_C8E3:
mov al, snd_midi_active
mov [bp+var_1], al
mov al, snd_midi_possible
mov snd_midi_active, al
push SND_LOAD_SONG
mov al, byte ptr word_F57C
mov ah, 0
shl ax, 2
mov bx, ax
push word ptr [bx+92Ch]
push word ptr [bx+92Ah]
call snd_load
mov snd_midi_active, 0
push SND_LOAD_SONG
mov al, byte ptr word_F57C
mov ah, 0
shl ax, 2
mov bx, ax
push word ptr [bx+92Ch]
push word ptr [bx+92Ah]
call snd_load
mov al, [bp+var_1]
mov snd_midi_active, al
kajacall KAJA_SONG_PLAY
add sp, 0Eh
mov al, byte ptr word_F57C
mov byte_DF97, al
mov ah, 0
push ax
call sub_C726
call sub_C3AC
mov al, byte ptr word_F57C
mov ah, 0
push ax
call sub_C726
loc_C950:
test byte ptr word_F3C8, 40h
jnz short loc_C967
cmp word_F3C8, 0
jz short loc_C961
jmp loc_C849
; ---------------------------------------------------------------------------
loc_C961:
call sub_C3AC
jmp loc_C85A
; ---------------------------------------------------------------------------
loc_C967:
call sub_AED0
cmp word_F3C8, 0
jz short loc_C978
call sub_C3AC
jmp short loc_C967
; ---------------------------------------------------------------------------
loc_C978:
call sub_C0D6
call sub_C5A4
mov dx, 0A4h ; '<27>'
mov al, 0
out dx, al
mov dx, 0A6h ; '<27>'
out dx, al
call graph_clear
mov dx, 0A6h ; '<27>'
mov al, 1
out dx, al
call pi_slot_load stdcall, 0, offset aOp2_pi_0, ds
call pi_slot_palette_apply stdcall, 0
call pi_slot_put stdcall, 0, 0, 0
add sp, 0Eh
freePISlot 0
push ds
push offset aOp_rgb_0 ; "op.rgb"
call palette_entry_rgb
call far ptr palette_show
push 0
call graph_copy_page
mov dx, 0A6h ; '<27>'
mov al, 0
out dx, al
leave
retf
sub_C7A0 endp
op_06_TEXT ends
.data
byte_D6C0 db 0
byte_D6C1 db 0
byte_D6C2 db 0
db 0
gZUN db 0C3h, 0BEh, 0B6h, 0
include th02/strings/ranks_center[data].asm
gHIT_KEY db 0B1h, 0B2h, 0BDh, 0CFh, 0B4h, 0AEh, 0C2h, 0
g7SPACES db 0CFh, 0CFh, 0CFh, 0CFh, 0CFh, 0CFh, 0CFh, 0
gSTART db 0BCh, 0BDh, 0AAh, 0BBh, 0BDh, 0, 0, 0, 0, 0
gEXTRA_START db 0AEh, 0C1h, 0BDh, 0BBh, 0AAh, 0CFh, 0BCh, 0BDh, 0AAh, 0BBh, 0BDh, 0
gHISCORE db 0B1h, 0B2h, 0BCh, 0ACh, 0B8h, 0BBh, 0AEh, 0, 0, 0
gOPTION db 0B8h, 0B9h, 0BDh, 0B2h, 0B8h, 0B6h, 0, 0, 0, 0
gQUIT db 0BAh, 0BEh, 0B2h, 0BDh, 0, 0, 0, 0, 0, 0
gRANK db 0BBh, 0AAh, 0B6h, 0B4h, 0, 0, 0, 0, 0, 0
gPLAYER db 0B9h, 0B5h, 0AAh, 0C2h, 0AEh, 0BBh, 0, 0, 0, 0
gMUSIC db 0B7h, 0BEh, 0BCh, 0B2h, 0ACh, 0, 0, 0, 0, 0
gBOMB db 0ABh, 0B8h, 0B7h, 0ABh, 0, 0, 0, 0, 0, 0
gMUSIC_MODE db 0B7h, 0BEh, 0BCh, 0B2h, 0ACh, 0CFh, 0B7h, 0B8h, 0ADh, 0AEh, 0
gRESET db 0BBh, 0AEh, 0BCh, 0AEh, 0BDh, 0, 0, 0, 0, 0
gsEASY db 0E8h, 0E9h, 0
gsNORMAL db 0EAh, 0EBh, 0
gsHARD db 0ECh, 0EDh, 0
gsLUNATIC db 0EEh, 0EFh, 0
gOFF db 0B8h, 0AFh, 0AFh, 0CFh, 0
gFM db 0CFh, 0AFh, 0B7h, 0CFh, 0
gMIDI db 0B7h, 0B2h, 0ADh, 0B2h, 0
PERF_TITLE dd aPERF_TITLE
PERF_OPTION dd aPERF_NORMAL
dd aPERF_TRUNCATE
byte_D790 db 0
byte_D791 db 0
byte_D792 db 0
aHuuma_cfg db 'huuma.cfg',0
aHuuma_efc db 'huuma.efc',0
aOp2_pi db 'op2.pi',0
aOp_pi db 'op.pi',0
aOpa_pi db 'opa.pi',0
aOpb_pi db 'opb.pi',0
aOpc_pi db 'opc.pi',0
aOp_m db 'op.m',0
aOp_rgb db 'op.rgb',0
aTs1_pi db 'ts1.pi',0
aSelect db 'select',0
; char path[]
path db 'main',0
aPERF_TITLE db '<27><><EFBFBD>o',0
aPERF_NORMAL db '<27>@<40>ʏ<EFBFBD> ',0
aPERF_TRUNCATE db '<27><EFBFBD>y<EFBFBD><79>',0
aMikoft_bft db 'MIKOFT.bft',0
aGminit_m db 'gminit.m',0
aTs3_pi db 'ts3.pi',0
aTs2_pi db 'ts2.pi',0
db 0
include libs/master.lib/bfnt_id[data].asm
include libs/master.lib/clip[data].asm
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
include libs/master.lib/gaiji_entry_bfnt[data].asm
include libs/master.lib/grp[data].asm
include libs/master.lib/pal[data].asm
include libs/master.lib/pf[data].asm
include libs/master.lib/rand[data].asm
include libs/master.lib/sin8[data].asm
include libs/master.lib/tx[data].asm
include libs/master.lib/version[data].asm
include libs/master.lib/vs[data].asm
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
include th02/formats/pfopen[data].asm
aUmx db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>^',0
snd_active db 0
db 0
include th02/hardware/snd_se[data].asm
byte_DC34 db 1
db 0
include th02/strings/hiscore[data].asm
gcEASY_0 db 0CFh, 0AEh, 0AAh, 0BCh, 0C2h, 0CFh, 0CFh, 0
gcNORMAL_0 db 0B6h, 0B8h, 0BBh, 0B7h, 0AAh, 0B5h, 0CFh, 0
gcHARD_0 db 0CFh, 0B1h, 0AAh, 0BBh, 0ADh, 0CFh, 0CFh, 0
gcLUNATIC_0 db 0B5h, 0BEh, 0B6h, 0AAh, 0BDh, 0B2h, 0ACh, 0
HISCORE_TYPE dd aKOUKIDOU ; "<22><><EFBFBD>@<40><>"
dd aBOUGYO ; "<22>h<EFBFBD><68>"
dd aKOUGEKI ; "<22>U<EFBFBD><55>"
word_DCB0 dw 0
byte_DCB2 db 1
db 0
unk_DCB4 db 3Eh ; >
db 1
db 76h ; v
db 0
db 0DAh ; <20>
db 0
unk_DCBA db 1
db 2
db 4
aHuuhi_dat db 'huuhi.dat',0
aKOUKIDOU db '<27><><EFBFBD>@<40><>',0
aBOUGYO db '<27>h<EFBFBD><68>',0
aKOUGEKI db '<27>U<EFBFBD><55>',0
aHISCORE_HEAD db ' <20><><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>@<40>@<40>@<40>@<40>@<40>@<40><><EFBFBD>_<EFBFBD>@<40>@<40>@ STAGE TYPE <20><><EFBFBD>t',0
aOp_h_bft db 'op_h.bft',0
aOp_h_rgb db 'op_h.rgb',0
byte_DD20 db 1
db 0
dd aIaczlVCV ; " <20>A<EFBFBD>z<EFBFBD>ʂ̗͂<CC97><CD82>g<EFBFBD><67><EFBFBD>Ȃ<EFBFBD> "
dd aNlfIVVivL@uocV ; " <20>L<EFBFBD>͈͂ł<CD82><C582>‹@<40><><EFBFBD>͂<EFBFBD> "
dd aB@lnvvnvl@uocG ; "<22>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD>̓^<5E>C<EFBFBD>v<EFBFBD>@"
dd aB@sMvvkcdvVVvv ; " <20>@<40>ˌ<EFBFBD><CB8C><EFBFBD><EFBFBD>D<EFBFBD><44><EFBFBD>Ă<EFBFBD><C482><EFBFBD> <20>@"
dd aB@GogigugxvOcv ; "<22>@ <20>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>̎<EFBFBD><CC8E><EFBFBD>@ "
dd aB@b@chmfpdolgG ; "<22>@<40>@<40>h<EFBFBD><68><EFBFBD>d<EFBFBD><64><EFBFBD>^<5E>C<EFBFBD>v<EFBFBD>@<40>@"
dd aB@iaczlVCVRavd ; " <20>@<40>A<EFBFBD>z<EFBFBD>ʂ̗͂Ő키 "
dd aB@numvcVkcdvVV ; "<22>@<40>U<EFBFBD><55><EFBFBD>͂<EFBFBD><CD82>D<EFBFBD><44><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>@"
dd aB@b@numvpdolgG ; "<22>@<40>@<40>U<EFBFBD><55><EFBFBD>d<EFBFBD><64><EFBFBD>^<5E>C<EFBFBD>v<EFBFBD>@<40>@"
off_DD46 dd aSCVRaumgxgGcgl
; "<22>˖<EFBFBD><CB96>̐퓬<CC90>X<EFBFBD>^<5E>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD>̂R<CC82>‚<EFBFBD><C282><EFBFBD><E782A6><EFBFBD>E...
off_DD4A dd aTnbjb@ggglgxgg
; "<22><><EFBFBD>j<EFBFBD>@<40>G<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD><67><EFBFBD>X<EFBFBD>e<EFBFBD>[<5B>W<EFBFBD>ł́A<CD81><41><EFBFBD>Փx<D593>A<EFBFBD>E...
off_DD4E dd aB@b@b@vVVVBauq
; "<22>@<40>@<40>@<40><><EFBFBD><EFBFBD><EA82BC><EFBFBD>A<EFBFBD><41><EFBFBD>Փx<D593>d<EFBFBD>w<EFBFBD>s<EFBFBD>q<EFBFBD>`<60>A<EFBFBD>v<EFBFBD><76><EFBFBD>E...
off_DD52 dd aBsbsvbvkvdvVqv
; " <20><><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>k<EFBFBD>d<EFBFBD>`<60>q<EFBFBD>d<EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD> "
unk_DD56 db 10h
db 0
db 0E0h
db 0
db 0B0h ; <20>
db 1
unk_DD5C db 80h
db 0
db 0E0h
db 0
db 80h
db 0
aIaczlVCV db ' <20>A<EFBFBD>z<EFBFBD>ʂ̗͂<CC97><CD82>g<EFBFBD><67><EFBFBD>Ȃ<EFBFBD> ',0
aNlfIVVivL@uocV db ' <20>L<EFBFBD>͈͂ł<CD82><C582>‹@<40><><EFBFBD>͂<EFBFBD> ',0
aB@lnvvnvl@uocG db '<27>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD>̓^<5E>C<EFBFBD>v<EFBFBD>@',0
aB@sMvvkcdvVVvv db ' <20>@<40>ˌ<EFBFBD><CB8C><EFBFBD><EFBFBD>D<EFBFBD><44><EFBFBD>Ă<EFBFBD><C482><EFBFBD> <20>@',0
aB@GogigugxvOcv db '<27>@ <20>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>̎<EFBFBD><CC8E><EFBFBD>@ ',0
aB@b@chmfpdolgG db '<27>@<40>@<40>h<EFBFBD><68><EFBFBD>d<EFBFBD><64><EFBFBD>^<5E>C<EFBFBD>v<EFBFBD>@<40>@',0
aB@iaczlVCVRavd db ' <20>@<40>A<EFBFBD>z<EFBFBD>ʂ̗͂Ő키 ',0
aB@numvcVkcdvVV db '<27>@<40>U<EFBFBD><55><EFBFBD>͂<EFBFBD><CD82>D<EFBFBD><44><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>@',0
aB@b@numvpdolgG db '<27>@<40>@<40>U<EFBFBD><55><EFBFBD>d<EFBFBD><64><EFBFBD>^<5E>C<EFBFBD>v<EFBFBD>@<40>@',0
aSCVRaumgxgGcgl db '<27>˖<EFBFBD><CB96>̐퓬<CC90>X<EFBFBD>^<5E>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD>̂R<CC82>‚<EFBFBD><C282><EFBFBD><E782A6><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD>',0
aTnbjb@ggglgxgg db '<27><><EFBFBD>j<EFBFBD>@<40>G<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD><67><EFBFBD>X<EFBFBD>e<EFBFBD>[<5B>W<EFBFBD>ł́A<CD81><41><EFBFBD>Փx<D593>A<EFBFBD>v<EFBFBD><76><EFBFBD>C<EFBFBD><43><EFBFBD>[<5B>A<EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD>͕ύX<CF8D>o<EFBFBD><6F><EFBFBD>܂<EFBFBD><DC82><EFBFBD>',0
aB@b@b@vVVVBauq db '<27>@<40>@<40>@<40><><EFBFBD><EFBFBD><EA82BC><EFBFBD>A<EFBFBD><41><EFBFBD>Փx<D593>d<EFBFBD>w<EFBFBD>s<EFBFBD>q<EFBFBD>`<60>A<EFBFBD>v<EFBFBD><76><EFBFBD>C<EFBFBD><43><EFBFBD>[<5B>R<EFBFBD>l<EFBFBD>A<EFBFBD>{<7B><><EFBFBD>P<EFBFBD>‚ƂȂ<C682><C882>܂<EFBFBD> ',0
aBsbsvbvkvdvVqv db ' <20><><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>k<EFBFBD>d<EFBFBD>`<60>q<EFBFBD>d<EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD> ',0
aTselect_pi db 'TSELECT.pi',0
dd aNo_1Umx ; "NO.1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>@<40>`<60><><EFBFBD>y<EFBFBD><79><EFBFBD>"
dd aNo_2B@Focab@bE ; "NO.2 <20>@ <20><><EFBFBD><EFBFBD><EFBFBD>@<40>`Eastern Wind "
dd aNo_3B@EndOfDay ; "NO.3 <20>@ End of Daylight<68>@ "
dd aNo_4B@b@b@b@b@ ; "NO.4 <20>@<40>@<40>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>@<40>@<40>@<40>@"
dd aNo_5VVrvivmbav ; "NO.5 <20>Ђ<EFBFBD><D082><EFBFBD>A<EFBFBD>ނ炳<DE82><E782B3><EFBFBD>ɂ<EFBFBD><C982><EFBFBD>"
dd aNo_6B@umx ; "NO.6 <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>@<40>`<60>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
dd aNo_7B@SheSInAT ; "NO.7 <20>@ She's in a temper!! "
dd aNo_8B@B@VtvVVV ; "NO.8 <20>@ <20>@ <20><><EFBFBD>݂̂<DD82><CC82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40>@ "
dd aNo_9B@b@b@b@oa ; "NO.9 <20>@<40>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><71><EFBFBD>ā@<40>@<40>@"
dd aNo_10B@B@C ; "NO.10 <20>@ <09>@ <20><><EFBFBD>F<EFBFBD>}<7D>W<EFBFBD>b<EFBFBD>N <09>@ "
dd aNo_11CompleteD ; "NO.11 Complete Darkness "
dd aNo_12B@b@iucVR ; "NO.12 <09>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>̐X<CC90>@<40>@<40>@ "
dd aNo_13RSbvav ; "NO.13 <20>̘b<CC98><62><EFBFBD>񂾁[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
dd aNo_14B@Ggglgxg ; "NO.14 <20>@ <20>G<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>u "
dd aNo_15RaoVVVVVV ; "NO.15 <20><><EFBFBD>Ԃނ<D482><DE82>߂݂̂<CC82><DD82><EFBFBD><EFBFBD><EFBFBD> "
dd aB@b@ ; " <20>@<40>@ "
dd aB@b@vpvxvivf ; " <20>@<40>@<40>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
dd aOp_m_0 ; "op.m"
dd aStage0_m ; "stage0.m"
dd aStage1_m ; "stage1.m"
dd aStage2_m ; "stage2.m"
dd aStage3_m ; "stage3.m"
dd aStage4_m ; "stage4.m"
dd aBoss1_m ; "boss1.m"
dd aBoss4_m ; "boss4.m"
dd aBoss2_m ; "boss2.m"
dd aBoss3_m ; "boss3.m"
dd aMima_m ; "mima.m"
dd aEnd1_m ; "end1.m"
dd aEnding_m ; "ending.m"
dd aStage5_m ; "stage5.m"
dd aBoss5_m ; "boss5.m"
byte_DF96 db 0
byte_DF97 db 0
aNo_1Umx db 'NO.1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>@<40>`<60><><EFBFBD>y<EFBFBD><79><EFBFBD>',0
aNo_2B@Focab@bE db 'NO.2 <20>@ <20><><EFBFBD><EFBFBD><EFBFBD>@<40>`Eastern Wind ',0
aNo_3B@EndOfDay db 'NO.3 <20>@ End of Daylight<68>@ ',0
aNo_4B@b@b@b@b@ db 'NO.4 <20>@<40>@<40>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>@<40>@<40>@<40>@',0
aNo_5VVrvivmbav db 'NO.5 <20>Ђ<EFBFBD><D082><EFBFBD>A<EFBFBD>ނ炳<DE82><E782B3><EFBFBD>ɂ<EFBFBD><C982><EFBFBD>',0
aNo_6B@umx db 'NO.6 <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>@<40>`<60>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aNo_7B@SheSInAT db 'NO.7 <20>@ She',27h,'s in a temper!! ',0
aNo_8B@B@VtvVVV db 'NO.8 <20>@ <20>@ <20><><EFBFBD>݂̂<DD82><CC82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40>@ ',0
aNo_9B@b@b@b@oa db 'NO.9 <20>@<40>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><71><EFBFBD>ā@<40>@<40>@',0
aNo_10B@B@C db 'NO.10 <20>@ <20>@ <20><><EFBFBD>F<EFBFBD>}<7D>W<EFBFBD>b<EFBFBD>N <20>@ ',0
aNo_11CompleteD db 'NO.11 Complete Darkness ',0
aNo_12B@b@iucVR db 'NO.12 <20>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>̐X<CC90>@<40>@<40>@ ',0
aNo_13RSbvav db 'NO.13 <20>̘b<CC98><62><EFBFBD>񂾁[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',0
aNo_14B@Ggglgxg db 'NO.14 <20>@ <20>G<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>u ',0
aNo_15RaoVVVVVV db 'NO.15 <20><><EFBFBD>Ԃނ<D482><DE82>߂݂̂<CC82><DD82><EFBFBD><EFBFBD><EFBFBD> ',0
aB@b@ db ' <20>@<40>@ ',0
aB@b@vpvxvivf db ' <20>@<40>@<40>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',0
aOp_m_0 db 'op.m',0
aStage0_m db 'stage0.m',0
aStage1_m db 'stage1.m',0
aStage2_m db 'stage2.m',0
aStage3_m db 'stage3.m',0
aStage4_m db 'stage4.m',0
aBoss1_m db 'boss1.m',0
aBoss4_m db 'boss4.m',0
aBoss2_m db 'boss2.m',0
aBoss3_m db 'boss3.m',0
aMima_m db 'mima.m',0
aEnd1_m db 'end1.m',0
aEnding_m db 'ending.m',0
aStage5_m db 'stage5.m',0
aBoss5_m db 'boss5.m',0
include th02/music/music_cmt_load[data].asm
aOp3_pi db 'op3.pi',0
aOp2_pi_0 db 'op2.pi',0
aOp_rgb_0 db 'op.rgb',0
.data?
byte_E8F8 db ?
snd_bgm_mode db ?
dw ?
word_E8FC dw ?
byte_E8FE db ?
db ?
word_E900 dw ?
fp_E902 dw ?
include libs/master.lib/clip[bss].asm
include libs/master.lib/fil[bss].asm
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 libs/master.lib/super_put_rect[bss].asm
include th01/hardware/vram_planes[bss].asm
include th02/formats/pi_slots[bss].asm
include libs/master.lib/pfint21[bss].asm
word_F3C8 dw ?
include th02/hardware/snd[bss].asm
include th02/hardware/snd_load[bss].asm
dword_F3DC dd ?
db ? ;
byte_F3E1 db ?
byte_F3E2 db ?
dd ? ;
dd ? ;
db ? ;
word_F3EC dw ?
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
byte_F4A2 db ?
db ?
word_F4A4 dw ?
byte_F4A6 db ?
byte_F4A7 db ?
byte_F4A8 db ?
byte_F4A9 db ?
byte_F4AA db ?
byte_F4AB db ?
dd ? ;
dd ? ;
unk_F4B4 db ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
db ? ;
db ? ;
db ? ;
word_F57C dw ?
dword_F57E dd ?
unk_F582 db ? ;
db ? ;
word_F584 dw ?
unk_F586 db ? ;
db ? ;
word_F588 dw ?
unk_F58A db ? ;
db ? ;
word_F58C dw ?
unk_F58E db ? ;
db ? ;
word_F590 dw ?
include th02/music/music_cmt[bss].asm
end