; ; +-------------------------------------------------------------------------+ ; | This file has been generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2009 by Hex-Rays, | ; +-------------------------------------------------------------------------+ ; ; 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 ; 'ヲ' 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 ; 'ネ' 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 ; 'ネ' 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 ; 'ネ' 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 ; 'ネ' call far ptr palette_show mov dx, 0A6h ; 'ヲ' mov al, 1 out dx, al push 224h push 180h push 0DFh ; '゚' 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 ; '゚' 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 ; '、' mov al, 1 out dx, al push 0 call graph_copy_page call sub_A150 mov dx, 0A4h ; '、' 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 ; 'ヲ' mov al, 1 out dx, al mov dx, 0A4h ; '、' 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 ; 'ヲ' 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 ; 'ト' push 104h push 10h push ds push offset gRANK push 0 call graph_gaiji_puts push 0C4h ; 'ト' push 114h push 10h push ds push offset gMUSIC push 0 call graph_gaiji_puts push 0C4h ; 'ト' push 124h push 10h push ds push offset gPLAYER push 0 call graph_gaiji_puts push 0C4h ; 'ト' 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 ; 'ト' 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 ; '。' 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 ; '。' 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 ; '、' mov al, 1 out dx, al push 0 call graph_copy_page call sub_A481 mov dx, 0A4h ; '、' 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 ; '、' mov al, 0 out dx, al mov dx, 0A6h ; 'ヲ' 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 ; '。' out dx, al mov ax, [bp+var_2] shr ax, 8 sub al, 20h ; ' ' mov dx, 0A3h ; '」' 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 ; '・' out dx, al mov dx, 0A9h ; 'ゥ' 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 ; '・' out dx, al mov dx, 0A9h ; 'ゥ' 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 ; '・' mov al, byte ptr [bp+var_12] out dx, al mov dx, 0A9h ; 'ゥ' 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 ; 'ヲ' 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 ; 'ヲ' mov al, 1 out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al mov dx, 0A4h ; '、' 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 ; "東方封魔.録" 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 ; 'ヲ' mov al, 1 out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al mov dx, 0A4h ; '、' 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 ; '、' 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 ; '、' 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 ; 'カ' 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 ; 'イ' 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 ; 'ヲ' mov al, 0 out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' 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 ; 'ヲ' mov al, 0 out dx, al mov al, 1 sub al, [bp+var_1] mov [bp+var_1], al mov dx, 0A4h ; '、' 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 ; 'ヲ' mov al, [bp+var_1] out dx, al mov al, 1 sub al, [bp+var_1] mov [bp+var_1], al mov dx, 0A4h ; '、' 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 ; 'ヲ' 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 ; 'ヲ' 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 ; 'ヲ' 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 ; 'ヲ' 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 ; '、' 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 ; 'ヲ' 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 ; '、' mov al, 0 out dx, al mov dx, 0A6h ; 'ヲ' out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' 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 ; 'ヲ' mov al, 1 out dx, al mov dx, 0A4h ; '、' mov al, 0 out dx, al call sub_C097 call sub_C3E1 mov dx, 0A6h ; 'ヲ' mov al, 1 out dx, al mov al, byte_DF97 mov ah, 0 push ax call sub_C726 mov dx, 0A6h ; 'ヲ' 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 ; '、' mov al, 0 out dx, al mov dx, 0A6h ; 'ヲ' out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' 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 ; 'ヲ' 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 '演出',0 aPERF_NORMAL db ' 通常 ',0 aPERF_TRUNCATE db '一部軽減',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 '東方封魔.録',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 ; "高機動" dd aBOUGYO ; "防御" dd aKOUGEKI ; "攻撃" word_DCB0 dw 0 byte_DCB2 db 1 db 0 unk_DCB4 db 3Eh ; > db 1 db 76h ; v db 0 db 0DAh ; レ db 0 unk_DCBA db 1 db 2 db 4 aHuuhi_dat db 'huuhi.dat',0 aKOUKIDOU db '高機動',0 aBOUGYO db '防御',0 aKOUGEKI db '攻撃',0 aHISCORE_HEAD db ' お名前      得点    STAGE TYPE 日付',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 ; " 陰陽玉の力を使わない " dd aNlfIVVivL@uocV ; " 広範囲でかつ機動力に " dd aB@lnvvnvl@uocG ; " 強い高機動力タイプ " dd aB@sMvvkcdvVVvv ; "  靈撃が優れている  " dd aB@GogigugxvOcv ; "  バランスの取れた  " dd aB@b@chmfpdolgG ; "  防御重視タイプ  " dd aB@iaczlVCVRavd ; "  陰陽玉の力で戦う " dd aB@numvcVkcdvVV ; " 攻撃力が優れている " dd aB@b@numvpdolgG ; "  攻撃重視タイプ  " off_DD46 dd aSCVRaumgxgGcgl ; "靈夢の戦闘スタイルを、下の3つからえら・... off_DD4A dd aTnbjb@ggglgxgg ; "注) エキストラステージでは、難易度、・... off_DD4E dd aB@b@b@vVVVBauq ; "   それぞれ、難易度EXTRA、プレ・... off_DD52 dd aBsbsvbvkvdvVqv ; " ☆☆CLEARED☆☆ " unk_DD56 db 10h db 0 db 0E0h db 0 db 0B0h ; ー db 1 unk_DD5C db 80h db 0 db 0E0h db 0 db 80h db 0 aIaczlVCV db ' 陰陽玉の力を使わない ',0 aNlfIVVivL@uocV db ' 広範囲でかつ機動力に ',0 aB@lnvvnvl@uocG db ' 強い高機動力タイプ ',0 aB@sMvvkcdvVVvv db '  靈撃が優れている  ',0 aB@GogigugxvOcv db '  バランスの取れた  ',0 aB@b@chmfpdolgG db '  防御重視タイプ  ',0 aB@iaczlVCVRavd db '  陰陽玉の力で戦う ',0 aB@numvcVkcdvVV db ' 攻撃力が優れている ',0 aB@b@numvpdolgG db '  攻撃重視タイプ  ',0 aSCVRaumgxgGcgl db '靈夢の戦闘スタイルを、下の3つからえらんでね',0 aTnbjb@ggglgxgg db '注) エキストラステージでは、難易度、プレイヤー、ボム数は変更出来ません',0 aB@b@b@vVVVBauq db '   それぞれ、難易度EXTRA、プレイヤー3人、ボム1個となります ',0 aBsbsvbvkvdvVqv db ' ☆☆CLEARED☆☆ ',0 aTselect_pi db 'TSELECT.pi',0 dd aNo_1Umx ; "NO.1 東方封魔録 〜浄土曼荼羅" dd aNo_2B@Focab@bE ; "NO.2   博麗 〜Eastern Wind " dd aNo_3B@EndOfDay ; "NO.3   End of Daylight  " dd aNo_4B@b@b@b@b@ ; "NO.4      幻夢界    " dd aNo_5VVrvivmbav ; "NO.5 ひもろぎ、むらさきにもえ" dd aNo_6B@umx ; "NO.6  東方封魔録 〜幽幻乱舞" dd aNo_7B@SheSInAT ; "NO.7   She's in a temper!! " dd aNo_8B@B@VtvVVV ; "NO.8     やみのちから   " dd aNo_9B@b@b@b@oa ; "NO.9     死を賭して   " dd aNo_10B@B@C ; "NO.10     恋色マジック   " dd aNo_11CompleteD ; "NO.11 Complete Darkness " dd aNo_12B@b@iucVR ; "NO.12   遠野の森    " dd aNo_13RSbvav ; "NO.13 昔話わんだーらんど " dd aNo_14B@Ggglgxg ; "NO.14   エキストララブ " dd aNo_15RaoVVVVVV ; "NO.15 戦車むすめのみるゆめ " dd aB@b@ ; "    " dd aB@b@vpvxvivf ; "   Quit " 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 東方封魔録 〜浄土曼荼羅',0 aNo_2B@Focab@bE db 'NO.2   博麗 〜Eastern Wind ',0 aNo_3B@EndOfDay db 'NO.3   End of Daylight  ',0 aNo_4B@b@b@b@b@ db 'NO.4      幻夢界    ',0 aNo_5VVrvivmbav db 'NO.5 ひもろぎ、むらさきにもえ',0 aNo_6B@umx db 'NO.6  東方封魔録 〜幽幻乱舞',0 aNo_7B@SheSInAT db 'NO.7   She',27h,'s in a temper!! ',0 aNo_8B@B@VtvVVV db 'NO.8     やみのちから   ',0 aNo_9B@b@b@b@oa db 'NO.9     死を賭して   ',0 aNo_10B@B@C db 'NO.10     恋色マジック   ',0 aNo_11CompleteD db 'NO.11 Complete Darkness ',0 aNo_12B@b@iucVR db 'NO.12   遠野の森    ',0 aNo_13RSbvav db 'NO.13 昔話わんだーらんど ',0 aNo_14B@Ggglgxg db 'NO.14   エキストララブ ',0 aNo_15RaoVVVVVV db 'NO.15 戦車むすめのみるゆめ ',0 aB@b@ db '    ',0 aB@b@vpvxvivf db '   Quit ',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