; ; +-------------------------------------------------------------------------+ ; | This file has been generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2009 by Hex-Rays, | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : F97D1B72F01476639E9D33E361F57330 ; File Name : th05/OP.EXE ; Format : MS-DOS executable (EXE) ; Base Address: 0h Range: 0h-14240h Loaded length: 1280Ah ; 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 __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 th05/th05.inc include th05/music/music.inc extern SCOPY@:proc extern _execl:proc extern _getch:proc extern _strlen: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_header_read.asm include libs/master.lib/bfnt_header_analysis.asm include libs/master.lib/atrtcmod.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_keyclear.asm include libs/master.lib/dos_puts2.asm include libs/master.lib/dos_read.asm include libs/master.lib/dos_seek.asm include libs/master.lib/dos_setvect.asm include libs/master.lib/egc.asm include libs/master.lib/file_append.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_byteboxfill_x.asm include libs/master.lib/grcg_hline.asm include libs/master.lib/grcg_polygon_c.asm include libs/master.lib/grcg_setcolor.asm include libs/master.lib/grcg_vline.asm include libs/master.lib/get_machine_98.asm include libs/master.lib/get_machine_at.asm include libs/master.lib/get_machine_dosbox.asm include libs/master.lib/check_machine_fmr.asm include libs/master.lib/get_machine.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_pi_free.asm include libs/master.lib/graph_pi_load_pack.asm include libs/master.lib/graph_show.asm include libs/master.lib/graph_start.asm include libs/master.lib/js_end.asm include libs/master.lib/keybeep.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/rottbl.asm include libs/master.lib/smem_release.asm include libs/master.lib/smem_wget.asm include libs/master.lib/soundio.asm include libs/master.lib/text_clear.asm include libs/master.lib/txesc.asm include libs/master.lib/vsync.asm include libs/master.lib/vsync_wait.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/respal_exist.asm include libs/master.lib/respal_free.asm include libs/master.lib/js_start.asm include libs/master.lib/draw_trapezoid.asm include libs/master.lib/js_sense.asm include libs/master.lib/bgm_bell_org.asm include libs/master.lib/bgm_mget.asm include libs/master.lib/bgm_read_sdata.asm include libs/master.lib/bgm_timer.asm include libs/master.lib/bgm_pinit.asm include libs/master.lib/bgm_timerhook.asm include libs/master.lib/bgm_play.asm include libs/master.lib/bgm_sound.asm include libs/master.lib/bgm_effect_sound.asm include libs/master.lib/bgm_stop_play.asm include libs/master.lib/bgm_set_tempo.asm include libs/master.lib/bgm_init_finish.asm include libs/master.lib/bgm_stop_sound.asm include libs/master.lib/graph_pack_put_8_noclip.asm include libs/master.lib/graph_gaiji_puts.asm include libs/master.lib/graph_gaiji_putc.asm include libs/master.lib/pfint21.asm db 0 include th03/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 ; org 0Ch 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_A39C proc near push bp mov bp, sp push si push di les bx, _ksoconfig mov byte ptr es:[bx+1Ah], 0 mov byte ptr es:[bx+1Fh], 0 mov byte ptr es:[bx+13h], 0 mov al, es:[bx+0Fh] mov es:[bx+0Dh], al mov al, es:[bx+10h] mov es:[bx+0Eh], al call sub_D12D or ax, ax jnz short loc_A443 xor si, si jmp short loc_A400 ; --------------------------------------------------------------------------- loc_A3CF: les bx, _ksoconfig add bx, si mov byte ptr es:[bx+20h], 0 mov bx, word ptr _ksoconfig add bx, si mov byte ptr es:[bx+44h], 0 xor di, di jmp short loc_A3FA ; --------------------------------------------------------------------------- loc_A3E9: mov ax, di shl ax, 3 les bx, _ksoconfig add bx, ax mov byte ptr es:[bx+si+4Ch], 0 inc di loc_A3FA: cmp di, 6 jl short loc_A3E9 inc si loc_A400: cmp si, 8 jl short loc_A3CF call sub_BC83 call sub_BB0E kajacall KAJA_SONG_FADE, 10 call sub_D7EC les bx, _ksoconfig cmp byte ptr es:[bx+17h], 0 jnz short loc_A430 pushd 0 push ds push offset aMain ; "main" push ds push offset aMain ; "main" jmp short loc_A43B ; --------------------------------------------------------------------------- loc_A430: pushd 0 push ds push offset path ; "deb" push ds push offset path ; "deb" loc_A43B: call _execl add sp, 0Ch loc_A443: pop di pop si pop bp retn sub_A39C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A447 proc near push bp mov bp, sp push si push di les bx, _ksoconfig mov byte ptr es:[bx+1Fh], 0 mov byte ptr es:[bx+13h], 6 mov byte ptr es:[bx+0Dh], 3 mov byte ptr es:[bx+0Eh], 3 call sub_D12D or ax, ax jnz short loc_A4CB xor si, si jmp short loc_A4A0 ; --------------------------------------------------------------------------- loc_A46F: les bx, _ksoconfig add bx, si mov byte ptr es:[bx+20h], 0 mov bx, word ptr _ksoconfig add bx, si mov byte ptr es:[bx+44h], 0 xor di, di jmp short loc_A49A ; --------------------------------------------------------------------------- loc_A489: mov ax, di shl ax, 3 les bx, _ksoconfig add bx, ax mov byte ptr es:[bx+si+4Ch], 0 inc di loc_A49A: cmp di, 6 jl short loc_A489 inc si loc_A4A0: cmp si, 8 jl short loc_A46F call sub_BC83 call sub_BB0E kajacall KAJA_SONG_FADE, 10 call sub_D7EC pushd 0 push ds push offset aMain ; "main" push ds push offset aMain ; "main" call _execl add sp, 0Ch loc_A4CB: pop di pop si pop bp retn sub_A447 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A4CF proc near push bp mov bp, sp push si les bx, _ksoconfig mov byte ptr es:[bx+1Ah], 0 mov byte ptr es:[bx+13h], 0 mov byte ptr es:[bx+0Dh], 3 mov byte ptr es:[bx+0Eh], 3 inc byte ptr es:[bx+1Fh] cmp byte ptr es:[bx+1Fh], 4 jbe short loc_A4FB mov byte ptr es:[bx+1Fh], 1 loc_A4FB: cmp _input, INPUT_LEFT or INPUT_RIGHT jnz short loc_A535 cmp byte_1411F, 0 jz short loc_A529 cmp byte_14120, 0 jz short loc_A529 cmp byte_14121, 0 jz short loc_A529 cmp byte_14122, 0 jz short loc_A529 les bx, _ksoconfig mov byte ptr es:[bx+1Fh], 5 jmp short loc_A535 ; --------------------------------------------------------------------------- loc_A529: les bx, _ksoconfig mov byte ptr es:[bx+1Fh], 0 jmp loc_A5E9 ; --------------------------------------------------------------------------- loc_A535: les bx, _ksoconfig mov al, es:[bx+1Fh] mov ah, 0 dec ax mov bx, ax cmp bx, 4 ja short loc_A5A4 add bx, bx jmp cs:off_A5EC[bx] loc_A54E: les bx, _ksoconfig mov byte ptr es:[bx+14h], 0 mov byte ptr es:[bx+1Dh], 3 jmp short loc_A5A4 ; --------------------------------------------------------------------------- loc_A55E: les bx, _ksoconfig mov byte ptr es:[bx+14h], 1 mov byte ptr es:[bx+1Dh], 1 jmp short loc_A5A4 ; --------------------------------------------------------------------------- loc_A56E: les bx, _ksoconfig mov byte ptr es:[bx+14h], 2 mov byte ptr es:[bx+1Dh], 2 jmp short loc_A5A4 ; --------------------------------------------------------------------------- loc_A57E: les bx, _ksoconfig mov byte ptr es:[bx+14h], 3 mov byte ptr es:[bx+1Dh], 4 jmp short loc_A5A4 ; --------------------------------------------------------------------------- loc_A58E: les bx, _ksoconfig mov byte ptr es:[bx+14h], 2 mov byte ptr es:[bx+1Dh], 6 kajacall KAJA_SONG_FADE, 8 loc_A5A4: xor si, si jmp short loc_A5BF ; --------------------------------------------------------------------------- loc_A5A8: les bx, _ksoconfig add bx, si mov byte ptr es:[bx+20h], 0 mov bx, word ptr _ksoconfig add bx, si mov byte ptr es:[bx+44h], 0 inc si loc_A5BF: cmp si, 8 jl short loc_A5A8 call sub_BC83 call sub_BB0E push 1 call palette_black_out call sub_D7EC pushd 0 push ds push offset aMain ; "main" push ds push offset aMain ; "main" call _execl add sp, 0Ch loc_A5E9: pop si pop bp retn sub_A4CF endp ; --------------------------------------------------------------------------- off_A5EC dw offset loc_A54E dw offset loc_A55E dw offset loc_A56E dw offset loc_A57E dw offset loc_A58E ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A5F6 proc near var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 2, 0 push si push di mov si, [bp+arg_2] mov ax, si imul ax, 14h add ax, 0FAh mov di, ax push 100h push ax push 800010h call sub_E2D8 call grcg_setcolor pascal, GC_RMW, [bp+arg_0] mov [bp+var_2], si mov bx, si cmp bx, 5 ja short loc_A69A add bx, bx jmp cs:off_A70B[bx] loc_A634: push (272 shl 16) or 250 push 10 call cdg_put_nocolors les bx, _ksoconfig mov al, es:[bx+11h] mov ah, 0 add ax, 16h mov [bp+var_2], ax jmp short loc_A69A ; --------------------------------------------------------------------------- loc_A653: cmp byte_14116, 0 loc_A658: jnz short loc_A665 call grcg_setcolor pascal, (GC_RMW shl 16) + 2 loc_A665: push (272 shl 16) or 270 push 11 jmp short loc_A695 ; --------------------------------------------------------------------------- loc_A66F: push (272 shl 16) or 290 push 12 jmp short loc_A695 ; --------------------------------------------------------------------------- loc_A679: push (272 shl 16) or 310 push 13 jmp short loc_A695 ; --------------------------------------------------------------------------- loc_A683: push (272 shl 16) or 330 push 14 jmp short loc_A695 ; --------------------------------------------------------------------------- loc_A68D: push (272 shl 16) or 350 push 15 loc_A695: call cdg_put_nocolors loc_A69A: GRCG_OFF_CLOBBERING dx cmp [bp+arg_0], 0Eh jnz short loc_A705 call cdg_put pascal, 256, di, 35 call cdg_put pascal, 352, di, 36 pushd 180h push 2800010h call sub_E2D8 mov word_F9BE, 2 mov bx, [bp+var_2] shl bx, 2 pushd dword ptr MENU_DESC[bx] ; s call _strlen add sp, 4 shl ax, 3 mov dx, 270h sub dx, ax push dx push 1800009h mov bx, [bp+var_2] shl bx, 2 pushd dword ptr MENU_DESC[bx] call sub_D436 loc_A705: pop di pop si leave retn 4 sub_A5F6 endp ; --------------------------------------------------------------------------- off_A70B dw offset loc_A634 dw offset loc_A653 dw offset loc_A66F dw offset loc_A679 dw offset loc_A683 dw offset loc_A68D ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A717 proc near var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 4, 0 push si push di mov di, 0E0h mov ax, [bp+arg_2] shl ax, 4 add ax, 0FAh mov [bp+var_4], ax cmp [bp+arg_2], 7 jnz short loc_A737 mov [bp+var_4], 16Eh loc_A737: push 0E0h push [bp+var_4] push 0C00010h call sub_E2D8 call grcg_setcolor pascal, GC_RMW, [bp+arg_0] mov bx, [bp+arg_2] cmp bx, 7 ja loc_A8DA add bx, bx jmp cs:off_A958[bx] loc_A764: push (224 shl 16) or 250 push 16 call cdg_put_nocolors push 14000FAh les bx, _ksoconfig mov al, es:[bx+11h] mov ah, 0 add ax, 21 push ax call cdg_put_nocolors les bx, _ksoconfig mov al, es:[bx+11h] mov ah, 0 add ax, 6 loc_A797: mov si, ax jmp loc_A8DA ; --------------------------------------------------------------------------- loc_A79C: push (224 shl 16) or 266 push 17 call cdg_put_nocolors push 140010Ah les bx, _ksoconfig mov al, es:[bx+0Fh] mov ah, 0 push ax call cdg_put_nocolors mov si, 0Ah jmp loc_A8DA ; --------------------------------------------------------------------------- loc_A7C5: push (224 shl 16) or 282 push 18 call cdg_put_nocolors push 140011Ah les bx, _ksoconfig mov al, es:[bx+10h] mov ah, 0 push ax call cdg_put_nocolors mov si, 0Bh jmp loc_A8DA ; --------------------------------------------------------------------------- loc_A7EE: push (224 shl 16) or 298 push 19 call cdg_put_nocolors les bx, _ksoconfig cmp byte ptr es:[bx+12h], 0 jnz short loc_A80B mov ax, 1Ch jmp short loc_A818 ; --------------------------------------------------------------------------- loc_A80B: les bx, _ksoconfig mov al, es:[bx+12h] mov ah, 0 add ax, 18h loc_A818: mov [bp+var_2], ax push (320 shl 16) or 298 push ax call cdg_put_nocolors les bx, _ksoconfig mov al, es:[bx+12h] mov ah, 0 add ax, 0Ch jmp loc_A797 ; --------------------------------------------------------------------------- loc_A837: push (224 shl 16) or 314 push 20 call cdg_put_nocolors les bx, _ksoconfig cmp byte ptr es:[bx+15h], 0 jnz short loc_A854 mov ax, 1Ch jmp short loc_A865 ; --------------------------------------------------------------------------- loc_A854: les bx, _ksoconfig loc_A858: mov al, es:[bx+15h] mov ah, 0 push ax mov ax, 1Fh pop dx sub ax, dx loc_A865: mov [bp+var_2], ax push (320 shl 16) or 314 push ax call cdg_put_nocolors les bx, _ksoconfig mov al, es:[bx+15h] mov ah, 0 add ax, 0Fh jmp loc_A797 ; --------------------------------------------------------------------------- loc_A884: push (272 shl 16) or 330 les bx, _ksoconfig mov al, es:[bx+16h] mov ah, 0 mov dx, 33 sub dx, ax push dx call cdg_put_nocolors mov di, 100h les bx, _ksoconfig mov al, es:[bx+16h] mov ah, 0 add ax, 12h jmp loc_A797 ; --------------------------------------------------------------------------- loc_A8B2: push (272 shl 16) or 346 push 31 call cdg_put_nocolors mov di, 100h mov si, 14h jmp short loc_A8DA ; --------------------------------------------------------------------------- loc_A8C7: push (272 shl 16) or 366 push 15 call cdg_put_nocolors mov di, 256 mov si, 15h loc_A8DA: GRCG_OFF_CLOBBERING dx cmp [bp+arg_0], 0Eh jnz short loc_A951 call cdg_put pascal, di, [bp+var_4], 35 cmp di, 256 jnz short loc_A8FD lea ax, [di+96] push ax jmp short loc_A900 ; --------------------------------------------------------------------------- loc_A8FD: push 384 loc_A900: push [bp+var_4] push 36 call cdg_put pushd 180h push 2800010h call sub_E2D8 mov word_F9BE, 2 mov bx, si shl bx, 2 pushd dword ptr MENU_DESC[bx] ; s call _strlen add sp, 4 shl ax, 3 mov dx, 270h sub dx, ax push dx push 1800009h mov bx, si shl bx, 2 pushd dword ptr MENU_DESC[bx] call sub_D436 loc_A951: pop di pop si leave retn 4 sub_A717 endp ; --------------------------------------------------------------------------- db 0 off_A958 dw offset loc_A764 dw offset loc_A79C dw offset loc_A7C5 dw offset loc_A7EE dw offset loc_A837 dw offset loc_A884 dw offset loc_A8B2 dw offset loc_A8C7 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A968 proc near arg_0 = byte ptr 4 arg_2 = byte ptr 6 push bp mov bp, sp mov al, byte_F071 cbw push ax push 8 call fp_11DD2 mov al, [bp+arg_0] add byte_F071, al mov al, byte_F071 cbw or ax, ax jge short loc_A98B mov al, [bp+arg_2] mov byte_F071, al loc_A98B: mov al, byte_F071 cmp al, [bp+arg_2] jle short loc_A998 mov byte_F071, 0 loc_A998: cmp byte_14116, 0 jnz short loc_A9B6 mov al, byte_F071 cbw cmp ax, 1 jnz short loc_A9B6 cmp byte_11DD0, 0 jnz short loc_A9B6 mov al, [bp+arg_0] add byte_F071, al loc_A9B6: mov al, byte_F071 cbw push ax push 0Eh call fp_11DD2 call snd_se_reset call snd_se_play pascal, 1 call snd_se_update pop bp retn 4 sub_A968 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A9D6 proc near push bp mov bp, sp push si cmp byte_F0DC, 0 jnz short loc_AA2B mov byte_F073, 0 mov byte_11DD4, 0 push 0C000FAh push 12000A0h call sub_E2D8 xor si, si jmp short loc_AA16 ; --------------------------------------------------------------------------- loc_AA00: push si mov al, byte_F071 cbw cmp ax, si jnz short loc_AA0E mov ax, 0Eh jmp short loc_AA11 ; --------------------------------------------------------------------------- loc_AA0E: mov ax, 8 loc_AA11: push ax call sub_A5F6 inc si loc_AA16: cmp si, 6 jl short loc_AA00 mov fp_11DD2, offset sub_A5F6 mov byte_F0DC, 1 mov byte_11DD4, 0 loc_AA2B: cmp _input, INPUT_NONE jnz short loc_AA37 mov byte_11DD4, 1 loc_AA37: cmp byte_11DD4, 0 jz loc_ABC0 test _input.lo, low INPUT_UP jz short loc_AA4E push 5 push 0FFFFh call sub_A968 loc_AA4E: test _input.lo, low INPUT_DOWN jz short loc_AA5C push 5 push 1 call sub_A968 loc_AA5C: test _input.hi, high INPUT_OK jnz short loc_AA6C test _input.lo, low INPUT_SHOT jz loc_ABA8 loc_AA6C: call snd_se_reset call snd_se_play pascal, 11 call snd_se_update mov al, byte_F071 cbw mov bx, ax cmp bx, 5 ja loc_ABA8 add bx, bx jmp cs:off_ABC3[bx] loc_AA91: call sub_A39C graph_accesspage 1 call pi_slot_load pascal, 0, ds, offset aOp1_pi call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 call pi_slot_free pascal, 0 push 0 call graph_copy_page mov PaletteTone, 64h ; 'd' call far ptr palette_show mov byte_F0DC, 0 mov byte_11DD0, 0 mov byte_F071, 0 jmp loc_ABC0 ; --------------------------------------------------------------------------- loc_AAE1: call sub_A447 graph_accesspage 1 call pi_slot_load pascal, 0, ds, offset aOp1_pi call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 call pi_slot_free pascal, 0 push 0 call graph_copy_page mov PaletteTone, 64h ; 'd' call far ptr palette_show mov byte_F0DC, 0 mov byte_11DD0, 0 mov byte_F071, 1 jmp loc_ABC0 ; --------------------------------------------------------------------------- loc_AB31: call sub_CC5C mov byte_F0DC, 0 jmp short loc_ABA8 ; --------------------------------------------------------------------------- loc_AB3B: call sub_C490 call load_char_select_sprite_function graph_accesspage 1 call pi_slot_load pascal, 0, ds, offset aOp1_pi call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 call pi_slot_free pascal, 0 push 0 call graph_copy_page mov PaletteTone, 64h ; 'd' call far ptr palette_show mov byte_F0DC, 0 mov byte_11DD0, 0 mov byte_F071, 3 jmp short loc_ABC0 ; --------------------------------------------------------------------------- loc_AB8D: mov byte_F0DC, 0 mov byte_11DD0, 1 mov byte_F071, 0 jmp short loc_ABA8 ; --------------------------------------------------------------------------- loc_AB9E: mov byte_F0DC, 0 mov byte_F072, 1 loc_ABA8: test _input.hi, high INPUT_CANCEL jz short loc_ABB4 mov byte_F072, 1 loc_ABB4: cmp _input, INPUT_NONE jz short loc_ABC0 mov byte_11DD4, 0 loc_ABC0: pop si pop bp retn sub_A9D6 endp ; --------------------------------------------------------------------------- off_ABC3 dw offset loc_AA91 dw offset loc_AAE1 dw offset loc_AB31 dw offset loc_AB3B dw offset loc_AB8D dw offset loc_AB9E ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_ABCF proc near push bp mov bp, sp push si cmp byte_F0DD, 0 jnz short loc_AC1F mov byte_11DD5, 0 push 11000FAh push 0A00090h call sub_E2D8 xor si, si jmp short loc_AC0A ; --------------------------------------------------------------------------- loc_ABF4: push si mov al, byte_F071 cbw cmp ax, si jnz short loc_AC02 mov ax, 0Eh jmp short loc_AC05 ; --------------------------------------------------------------------------- loc_AC02: mov ax, 8 loc_AC05: push ax call sub_A717 inc si loc_AC0A: cmp si, 8 jl short loc_ABF4 mov fp_11DD2, offset sub_A717 mov byte_F0DD, 1 mov byte_11DD5, 0 loc_AC1F: cmp _input, INPUT_NONE jnz short loc_AC2B mov byte_11DD5, 1 loc_AC2B: cmp byte_11DD5, 0 jz loc_AF2E test _input.lo, low INPUT_UP jz short loc_AC42 push 7 push 0FFFFh call sub_A968 loc_AC42: test _input.lo, low INPUT_DOWN jz short loc_AC50 push 7 push 1 call sub_A968 loc_AC50: test _input.hi, high INPUT_OK jnz short loc_AC60 test _input.lo, low INPUT_SHOT jz loc_ACF8 loc_AC60: mov al, byte_F071 cbw cmp ax, 6 jz short loc_AC71 cmp ax, 7 jz short loc_ACD8 jmp loc_AD01 ; --------------------------------------------------------------------------- loc_AC71: les bx, _ksoconfig mov byte ptr es:[bx+11h], 1 mov byte ptr es:[bx+0Fh], 3 mov byte ptr es:[bx+10h], 3 mov byte ptr es:[bx+12h], 2 mov byte ptr es:[bx+15h], 1 mov byte ptr es:[bx+16h], 1 kajacall KAJA_SONG_STOP les bx, _ksoconfig mov al, es:[bx+12h] mov ah, 0 push ax mov al, es:[bx+15h] mov ah, 0 push ax call snd_determine_modes call snd_load pascal, ds, offset aMiko, SND_LOAD_SE call snd_load pascal, ds, offset aOp, SND_LOAD_SONG kajacall KAJA_SONG_PLAY mov byte_F0DD, 0 jmp short loc_ACF8 ; --------------------------------------------------------------------------- loc_ACD8: call snd_se_reset call snd_se_play pascal, 11 call snd_se_update mov byte_F0DD, 0 mov byte_F071, 4 mov byte_11DD0, 0 loc_ACF8: test _input.lo, low INPUT_RIGHT jz loc_ADFF loc_AD01: mov al, byte_F071 cbw mov bx, ax cmp bx, 5 ja loc_ADF5 add bx, bx jmp cs:off_AF3D[bx] loc_AD15: les bx, _ksoconfig inc byte ptr es:[bx+11h] cmp byte ptr es:[bx+11h], 3 jbe loc_ADF5 mov byte ptr es:[bx+11h], 0 jmp loc_ADF5 ; --------------------------------------------------------------------------- loc_AD2E: les bx, _ksoconfig inc byte ptr es:[bx+0Fh] cmp byte ptr es:[bx+0Fh], 6 jbe loc_ADF5 mov byte ptr es:[bx+0Fh], 1 jmp loc_ADF5 ; --------------------------------------------------------------------------- loc_AD47: les bx, _ksoconfig inc byte ptr es:[bx+10h] cmp byte ptr es:[bx+10h], 3 jbe loc_ADF5 mov byte ptr es:[bx+10h], 0 jmp loc_ADF5 ; --------------------------------------------------------------------------- loc_AD60: les bx, _ksoconfig inc byte ptr es:[bx+12h] cmp byte ptr es:[bx+12h], 3 jb short loc_AD74 mov byte ptr es:[bx+12h], 0 loc_AD74: kajacall KAJA_SONG_STOP les bx, _ksoconfig mov al, es:[bx+12h] mov ah, 0 push ax mov al, es:[bx+15h] mov ah, 0 push ax call snd_determine_modes call snd_load pascal, ds, offset aOp, SND_LOAD_SONG kajacall KAJA_SONG_PLAY jmp short loc_ADF5 ; --------------------------------------------------------------------------- loc_ADA8: les bx, _ksoconfig cmp byte ptr es:[bx+15h], 0 jnz short loc_ADBA mov byte ptr es:[bx+15h], 2 jmp short loc_ADC2 ; --------------------------------------------------------------------------- loc_ADBA: les bx, _ksoconfig dec byte ptr es:[bx+15h] loc_ADC2: les bx, _ksoconfig mov al, es:[bx+12h] mov ah, 0 push ax mov al, es:[bx+15h] mov ah, 0 push ax call snd_determine_modes call snd_load pascal, ds, offset aMiko, SND_LOAD_SE jmp short loc_ADF5 ; --------------------------------------------------------------------------- loc_ADE7: les bx, _ksoconfig mov al, 1 sub al, es:[bx+16h] mov es:[bx+16h], al loc_ADF5: mov al, byte_F071 cbw push ax push 0Eh call sub_A717 loc_ADFF: test _input.lo, low INPUT_LEFT jz loc_AF0C mov al, byte_F071 cbw mov bx, ax cmp bx, 5 ja loc_AF02 add bx, bx jmp cs:off_AF31[bx] loc_AE1C: les bx, _ksoconfig cmp byte ptr es:[bx+11h], 0 jnz short loc_AE2C mov byte ptr es:[bx+11h], 4 loc_AE2C: les bx, _ksoconfig dec byte ptr es:[bx+11h] jmp loc_AF02 ; --------------------------------------------------------------------------- loc_AE37: les bx, _ksoconfig cmp byte ptr es:[bx+0Fh], 1 jnz short loc_AE47 mov byte ptr es:[bx+0Fh], 7 loc_AE47: les bx, _ksoconfig dec byte ptr es:[bx+0Fh] jmp loc_AF02 ; --------------------------------------------------------------------------- loc_AE52: les bx, _ksoconfig cmp byte ptr es:[bx+10h], 0 jnz short loc_AE62 mov byte ptr es:[bx+10h], 4 loc_AE62: les bx, _ksoconfig dec byte ptr es:[bx+10h] jmp loc_AF02 ; --------------------------------------------------------------------------- loc_AE6D: les bx, _ksoconfig cmp byte ptr es:[bx+12h], 0 jnz short loc_AE7F mov byte ptr es:[bx+12h], 2 jmp short loc_AE87 ; --------------------------------------------------------------------------- loc_AE7F: les bx, _ksoconfig dec byte ptr es:[bx+12h] loc_AE87: kajacall KAJA_SONG_STOP les bx, _ksoconfig mov al, es:[bx+12h] mov ah, 0 push ax mov al, es:[bx+15h] mov ah, 0 push ax call snd_determine_modes call snd_load pascal, ds, offset aOp, SND_LOAD_SONG kajacall KAJA_SONG_PLAY jmp short loc_AF02 ; --------------------------------------------------------------------------- loc_AEBB: les bx, _ksoconfig inc byte ptr es:[bx+15h] cmp byte ptr es:[bx+15h], 3 jb short loc_AECF mov byte ptr es:[bx+15h], 0 loc_AECF: les bx, _ksoconfig mov al, es:[bx+12h] mov ah, 0 push ax mov al, es:[bx+15h] mov ah, 0 push ax call snd_determine_modes call snd_load pascal, ds, offset aMiko, SND_LOAD_SE jmp short loc_AF02 ; --------------------------------------------------------------------------- loc_AEF4: les bx, _ksoconfig mov al, 1 sub al, es:[bx+16h] mov es:[bx+16h], al loc_AF02: mov al, byte_F071 cbw push ax push 0Eh call sub_A717 loc_AF0C: test _input.hi, high INPUT_CANCEL jz short loc_AF22 mov byte_F0DD, 0 mov byte_F071, 4 mov byte_11DD0, 0 loc_AF22: cmp _input, INPUT_NONE jz short loc_AF2E mov byte_11DD5, 0 loc_AF2E: pop si pop bp retn sub_ABCF endp ; --------------------------------------------------------------------------- off_AF31 dw offset loc_AE1C dw offset loc_AE37 dw offset loc_AE52 dw offset loc_AE6D dw offset loc_AEBB dw offset loc_AEF4 off_AF3D dw offset loc_AD15 dw offset loc_AD2E dw offset loc_AD47 dw offset loc_AD60 dw offset loc_ADA8 dw offset loc_ADE7 ; =============== 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 _argc = word ptr 6 _argv = dword ptr 8 _envp = dword ptr 0Ch push bp mov bp, sp push si xor si, si call text_clear call respal_create mov word_F9CC, 5208h push ds push offset aKaikidan1_dat0 call sub_DF12 add sp, 4 or ax, ax jz short loc_AF7D push ds push offset aNotEnoughMem call dos_puts2 call _getch loc_AF7D: call sub_BA94 les bx, _ksoconfig cmp byte ptr es:[bx+11h], 0FFh jnz short loc_AF97 call sub_B5A6 les bx, _ksoconfig mov byte ptr es:[bx+11h], 1 loc_AF97: les bx, _ksoconfig mov al, es:[bx+12h] mov ah, 0 push ax mov al, es:[bx+15h] mov ah, 0 push ax call snd_determine_modes call snd_load pascal, ds, offset aMiko, SND_LOAD_SE les bx, _ksoconfig cmp byte ptr es:[bx+0Ah], 0 jnz short loc_AFD1 call opening_function les bx, _ksoconfig mov byte ptr es:[bx+0Ah], 1 loc_AFD1: les bx, _ksoconfig cmp byte ptr es:[bx+1Fh], 5 jnz short loc_AFE1 mov byte ptr es:[bx+1Fh], 0 loc_AFE1: les bx, _ksoconfig cmp byte ptr es:[bx+1Fh], 0 jnz short loc_AFF4 kajacall KAJA_SONG_STOP loc_AFF4: call sub_BC8D call load_char_select_sprite_function call sub_CD94 mov byte_11DD0, 0 mov byte_F072, 0 mov byte_F071, 0 jmp short loc_B058 ; --------------------------------------------------------------------------- loc_B00E: call _input_reset_sense_held mov al, byte_11DD0 cbw or ax, ax jz short loc_B022 cmp ax, 1 jz short loc_B032 jmp short loc_B035 ; --------------------------------------------------------------------------- loc_B022: call sub_A9D6 cmp si, 280h jl short loc_B035 call sub_A4CF xor si, si jmp short loc_B035 ; --------------------------------------------------------------------------- loc_B032: call sub_ABCF loc_B035: cmp _input, INPUT_NONE jz short loc_B043 cmp _input, INPUT_LEFT or INPUT_RIGHT jnz short loc_B046 loc_B043: inc si jmp short loc_B048 ; --------------------------------------------------------------------------- loc_B046: xor si, si loc_B048: les bx, _ksoconfig inc dword ptr es:[bx+28h] push 1 call frame_delay loc_B058: cmp byte_F072, 0 jz short loc_B00E call sub_BC83 call sub_BB91 call text_clear call sub_D41C call respal_free pop si pop bp retf _main endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B077 proc near var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 2, 0 push si push di mov si, [bp+arg_2] mov di, [bp+arg_0] push si push di mov ax, word_12F30 shl ax, 4 push ax push 10h call sub_E2D8 push si push di push 2 call super_put push si lea ax, [di+8] push ax push 6 call super_put add si, 10h mov [bp+var_2], 1 jmp short loc_B0CD ; --------------------------------------------------------------------------- loc_B0B2: push si push di push 0 call super_put push si lea ax, [di+8] push ax push 3 call super_put inc [bp+var_2] add si, 10h loc_B0CD: mov ax, word_12F30 dec ax cmp ax, [bp+var_2] jg short loc_B0B2 push si push di push 4 call super_put push si lea ax, [di+8] push ax push 7 call super_put pop di pop si leave retn 4 sub_B077 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B0F1 proc near var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 2, 0 push si push di mov si, [bp+arg_2] mov di, [bp+arg_0] push si lea ax, [di+8] push ax mov ax, word_12F30 shl ax, 4 push ax push 10h call sub_E2D8 push si push di push 6 call super_put add si, 10h mov [bp+var_2], 1 jmp short loc_B132 ; --------------------------------------------------------------------------- loc_B123: push si push di push 3 call super_put inc [bp+var_2] add si, 10h loc_B132: mov ax, word_12F30 dec ax cmp ax, [bp+var_2] jg short loc_B123 push si push di push 7 call super_put pop di pop si leave retn 4 sub_B0F1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B14A proc near var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 2, 0 push si push di mov ax, [bp+arg_2] mov [bp+var_2], ax mov si, [bp+arg_0] push ax push si push 5 call super_put add [bp+var_2], 10h mov di, 1 jmp short loc_B17B ; --------------------------------------------------------------------------- loc_B16B: push [bp+var_2] push si push 1 call super_put inc di add [bp+var_2], 10h loc_B17B: mov ax, word_12F30 dec ax cmp ax, di jg short loc_B16B push [bp+var_2] push si push 8 call super_put add si, 10h mov di, 1 jmp short loc_B1A8 ; --------------------------------------------------------------------------- loc_B196: push [bp+arg_2] push si call sub_B077 push 1 call frame_delay inc di add si, 8 loc_B1A8: mov ax, word_12F32 add ax, ax add ax, 0FFFDh cmp ax, di jg short loc_B196 pop di pop si leave retn 4 sub_B14A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B1BA proc near var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 2, 0 push si push di mov si, [bp+arg_2] mov di, [bp+arg_0] push si push di mov ax, word_12F30 shl ax, 4 push ax push 20h ; ' ' call sub_E2D8 push si push di push 5 call super_put push si lea ax, [di+10h] push ax push 6 call super_put add si, 10h mov [bp+var_2], 1 jmp short loc_B210 ; --------------------------------------------------------------------------- loc_B1F5: push si push di push 1 call super_put push si lea ax, [di+10h] push ax push 3 call super_put inc [bp+var_2] add si, 10h loc_B210: mov ax, word_12F30 dec ax cmp ax, [bp+var_2] jg short loc_B1F5 push si push di push 8 call super_put push si lea ax, [di+10h] push ax push 7 call super_put pop di pop si leave retn 4 sub_B1BA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B234 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_0] mov ax, word_12F32 shl ax, 4 add ax, 0FFF0h add si, ax mov di, 1 jmp short loc_B25E ; --------------------------------------------------------------------------- loc_B24C: push [bp+arg_2] push si call sub_B0F1 push 1 call frame_delay inc di sub si, 8 loc_B25E: mov ax, word_12F32 add ax, ax add ax, 0FFFEh cmp ax, di jg short loc_B24C pop di pop si pop bp retn 4 sub_B234 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B270 proc near var_4 = dword ptr -4 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 4, 0 push si mov si, 88h mov ax, [bp+arg_2] or ax, ax jz short loc_B2A0 cmp ax, 1 jz short loc_B293 cmp ax, 2 jnz short loc_B2AB mov word ptr [bp+var_4+2], ds mov word ptr [bp+var_4], offset aSETUP_BGM_OPTION1 ; "ステレオFM音源" jmp short loc_B2AB ; --------------------------------------------------------------------------- loc_B293: mov word ptr [bp+var_4+2], ds mov word ptr [bp+var_4], offset aSETUP_BGM_OPTION2 ; " 標準FM音源 " add si, 10h jmp short loc_B2AB ; --------------------------------------------------------------------------- loc_B2A0: mov word ptr [bp+var_4+2], ds mov word ptr [bp+var_4], offset aSETUP_BGM_OPTION3 ; "  音楽無し  " add si, 20h ; ' ' loc_B2AB: push 30h ; '0' push si push [bp+arg_0] pushd [bp+var_4] call sub_D436 pop si leave retn 4 sub_B270 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B2BF proc near var_4 = dword ptr -4 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 4, 0 push si mov si, 88h mov ax, [bp+arg_2] or ax, ax jz short loc_B2F1 cmp ax, 1 jz short loc_B2DA cmp ax, 2 jz short loc_B2E4 jmp short loc_B2FC ; --------------------------------------------------------------------------- loc_B2DA: mov word ptr [bp+var_4+2], ds mov word ptr [bp+var_4], offset aSETUP_SFX_OPTION1 ; "  FM音源  " jmp short loc_B2FC ; --------------------------------------------------------------------------- loc_B2E4: mov word ptr [bp+var_4+2], ds mov word ptr [bp+var_4], offset aSETUP_SFX_OPTION2 ; " Beep音源 " add si, 10h jmp short loc_B2FC ; --------------------------------------------------------------------------- loc_B2F1: mov word ptr [bp+var_4+2], ds mov word ptr [bp+var_4], offset aSETUP_SFX_OPTION3 ; "  効果音無し  " add si, 20h ; ' ' loc_B2FC: push 30h ; '0' push si push [bp+arg_0] pushd [bp+var_4] call sub_D436 pop si leave retn 4 sub_B2BF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B310 proc near push bp mov bp, sp push si push di mov di, 88h xor si, si jmp short loc_B335 ; --------------------------------------------------------------------------- loc_B31C: push 0D0h push di push 0Fh mov bx, si shl bx, 2 pushd [SETUP_BGM_BODY+bx] call sub_D436 inc si add di, 10h loc_B335: cmp si, 9 jl short loc_B31C pop di pop si pop bp retn sub_B310 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B33E proc near push bp mov bp, sp push si push di mov di, 88h xor si, si jmp short loc_B363 ; --------------------------------------------------------------------------- loc_B34A: push 0D0h push di push 0Fh mov bx, si shl bx, 2 pushd [SETUP_SFX_BODY+bx] call sub_D436 inc si add di, 10h loc_B363: cmp si, 9 jl short loc_B34A pop di pop si pop bp retn sub_B33E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B36C proc near var_2 = word ptr -2 enter 2, 0 mov word_12F30, 1Ch push 600050h call sub_B1BA push 700058h push 0Fh push ds push offset aSETUP_BGM_HEAD ; "     使用する音源を選択して下さい・... call sub_D436 mov word_12F30, 0Ah mov word_12F32, 4 push 200080h call sub_B14A mov [bp+var_2], 0 jmp short loc_B3C3 ; --------------------------------------------------------------------------- loc_B3AC: push [bp+var_2] cmp [bp+var_2], 2 jnz short loc_B3BA mov ax, 0Fh jmp short loc_B3BC ; --------------------------------------------------------------------------- loc_B3BA: xor ax, ax loc_B3BC: push ax call sub_B270 inc [bp+var_2] loc_B3C3: cmp [bp+var_2], 3 jl short loc_B3AC mov word_12F30, 19h mov word_12F32, 0Ah push 0C00080h call sub_B14A call sub_B310 mov [bp+var_2], 2 loc_B3E6: push 0 call _input_wait_for_change push 1 call frame_delay test _input.hi, high INPUT_OK jnz short loc_B452 test _input.lo, low INPUT_SHOT jnz short loc_B452 test _input.lo, low INPUT_UP jz short loc_B429 push [bp+var_2] push 0 call sub_B270 cmp [bp+var_2], 2 jnz short loc_B41E mov [bp+var_2], 0 jmp short loc_B421 ; --------------------------------------------------------------------------- loc_B41E: inc [bp+var_2] loc_B421: push [bp+var_2] push 0Fh call sub_B270 loc_B429: test _input.lo, low INPUT_DOWN jz short loc_B3E6 push [bp+var_2] push 0 call sub_B270 cmp [bp+var_2], 0 jnz short loc_B445 mov [bp+var_2], 2 jmp short loc_B448 ; --------------------------------------------------------------------------- loc_B445: dec [bp+var_2] loc_B448: push [bp+var_2] push 0Fh call sub_B270 jmp short loc_B3E6 ; --------------------------------------------------------------------------- loc_B452: mov word_12F30, 19h mov word_12F32, 0Ah push 0C00080h call sub_B234 mov word_12F30, 0Ah mov word_12F32, 4 push 200080h call sub_B234 les bx, _ksoconfig mov al, byte ptr [bp+var_2] mov es:[bx+12h], al leave retn sub_B36C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B489 proc near var_2 = word ptr -2 enter 2, 0 mov word_12F30, 1Ch push 600050h call sub_B1BA push 700058h push 0Fh push ds push offset aSETUP_SFX_HEAD ; "    効果音に使用する音源を選択して・... call sub_D436 mov word_12F30, 0Ah mov word_12F32, 4 push 200080h call sub_B14A mov [bp+var_2], 0 jmp short loc_B4E0 ; --------------------------------------------------------------------------- loc_B4C9: push [bp+var_2] cmp [bp+var_2], 1 jnz short loc_B4D7 mov ax, 0Fh jmp short loc_B4D9 ; --------------------------------------------------------------------------- loc_B4D7: xor ax, ax loc_B4D9: push ax call sub_B2BF inc [bp+var_2] loc_B4E0: cmp [bp+var_2], 3 jl short loc_B4C9 mov word_12F30, 19h mov word_12F32, 0Ah push 0C00080h call sub_B14A call sub_B33E mov [bp+var_2], 1 loc_B503: push 0 call _input_wait_for_change push 1 call frame_delay test _input.hi, high INPUT_OK jnz short loc_B56F test _input.lo, low INPUT_SHOT jnz short loc_B56F test _input.lo, low INPUT_DOWN jz short loc_B546 push [bp+var_2] push 0 call sub_B2BF cmp [bp+var_2], 2 jnz short loc_B53B mov [bp+var_2], 0 jmp short loc_B53E ; --------------------------------------------------------------------------- loc_B53B: inc [bp+var_2] loc_B53E: push [bp+var_2] push 0Fh call sub_B2BF loc_B546: test _input.lo, low INPUT_UP jz short loc_B503 push [bp+var_2] push 0 call sub_B2BF cmp [bp+var_2], 0 jnz short loc_B562 mov [bp+var_2], 2 jmp short loc_B565 ; --------------------------------------------------------------------------- loc_B562: dec [bp+var_2] loc_B565: push [bp+var_2] push 0Fh call sub_B2BF jmp short loc_B503 ; --------------------------------------------------------------------------- loc_B56F: mov word_12F30, 19h mov word_12F32, 0Ah push 0C00080h call sub_B234 mov word_12F30, 0Ah mov word_12F32, 4 push 200080h call sub_B234 les bx, _ksoconfig mov al, byte ptr [bp+var_2] mov es:[bx+15h], al leave retn sub_B489 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B5A6 proc near push bp mov bp, sp mov PaletteTone, 0 call far ptr palette_show push ds push offset aMswin_bft ; "mswin.bft" call super_entry_bfnt graph_accesspage 1 call pi_slot_load pascal, 0, ds, offset aMs_pi call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 call pi_slot_free pascal, 0 push 0 call graph_copy_page push 1 call palette_black_in call sub_B36C push 1 call frame_delay push 0 call graph_copy_page call sub_B489 push 1 call palette_black_out call super_free pop bp retn sub_B5A6 endp include th04/zunsoft.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame opening_function proc near opening_switch_frame = word ptr -8 var_6 = word ptr -6 opening_scr_fade_multi = byte ptr -4 opening_scr_fade = byte ptr -3 opening_key_pressed = byte ptr -2 @@page = byte ptr -1 enter 8, 0 push si push di ;m_curFrame=-1? mov [bp+opening_key_pressed], 0 mov [bp+opening_scr_fade], 0 mov [bp+opening_scr_fade_multi], 100 ; 'd' mov PaletteTone, 0 call far ptr palette_show graph_accesspage 1 call pi_slot_load pascal, 0, ds, offset aZun00_pi call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 call pi_slot_free pascal, 0 push 0 call graph_copy_page call sub_D688 graph_accesspage 1 call graph_clear graph_accesspage 0 call graph_clear xor si, si jmp short loc_B8C7 ; --------------------------------------------------------------------------- ;fps hack? loc_B872: mov bx, si imul bx, 3 mov al, [bx+2E1Eh] mov bx, si imul bx, 3 mov [bx+3F54h], al mov bx, si imul bx, 3 mov al, [bx+2E1Fh] mov bx, si imul bx, 3 mov [bx+3F55h], al mov bx, si imul bx, 3 mov al, [bx+2E20h] mov bx, si imul bx, 3 mov [bx+3F56h], al mov bx, si imul bx, 3 mov byte ptr [bx+2E1Eh], 0 mov bx, si imul bx, 3 mov byte ptr [bx+2E1Fh], 0 mov bx, si imul bx, 3 mov byte ptr [bx+2E20h], 0 inc si loc_B8C7: cmp si, 15 jl short loc_B872 call snd_load pascal, ds, offset aLogo, SND_LOAD_SONG kajacall KAJA_SONG_PLAY mov [bp+var_6], 3F84h xor si, si jmp short loc_B8F4 ; --------------------------------------------------------------------------- ;void COpParticle::Initialize(){? loc_B8E8: mov bx, [bp+var_6] mov word ptr [bx], 0 inc si add [bp+var_6], 0Eh loc_B8F4: cmp si, 256 jl short loc_B8E8 ;} push 20000h call sub_E0F1 mov PaletteTone, 64h ; 'd' call far ptr palette_show push ds push offset aZun02_bft ; "zun02.bft" call super_entry_bfnt push ds push offset aZun04_bft ; "zun04.bft" call super_entry_bfnt push ds push offset aZun01_bft ; "zun01.bft" call super_entry_bfnt push ds push offset aZun03_bft ; "zun03.bft" call super_entry_bfnt mov [bp+@@page], 0 graph_accesspage 1 graph_showpage 0 xor di, di jmp loc_BA47 ; --------------------------------------------------------------------------- loc_B949: call _input_reset_sense_held cmp _input, INPUT_NONE jz short loc_B959 mov [bp+opening_key_pressed], 1;m_bKeyPressed=true? loc_B959: mov [bp+opening_switch_frame], di mov cx, 12 ; switch 12 cases mov bx, offset word_BA64 loc_B962: mov ax, cs:[bx] cmp ax, [bp+opening_switch_frame] jz short loc_B971 add bx, 2 loop loc_B962 jmp short opening_frame_case_default ; default ; --------------------------------------------------------------------------- loc_B971: jmp word ptr cs:[bx+18h] ; switch jump loc_B975: push (180 shl 16) or 180 ; jumptable 0000B971 case 0 jmp short loc_B9B3 ; --------------------------------------------------------------------------- loc_B97D: push (460 shl 16) or 220 ; jumptable 0000B971 case 16 jmp short loc_B9BD ; --------------------------------------------------------------------------- loc_B985: push (220 shl 16) or 160 ; jumptable 0000B971 case 24 jmp short loc_B9B3 ; --------------------------------------------------------------------------- loc_B98D: push (380 shl 16) or 240 ; jumptable 0000B971 case 32 jmp short loc_B9BD ; --------------------------------------------------------------------------- loc_B995: push (340 shl 16) or 200 ; jumptable 0000B971 case 44 jmp short loc_B9BD ; --------------------------------------------------------------------------- loc_B99D: push (280 shl 16) or 170 ; jumptable 0000B971 case 48 jmp short loc_B9B3 ; --------------------------------------------------------------------------- loc_B9A5: push (380 shl 16) or 260 ; jumptable 0000B971 case 52 jmp short loc_B9BD ; --------------------------------------------------------------------------- loc_B9AD: push (200 shl 16) or 190 ; jumptable 0000B971 cases 40,56 loc_B9B3: push 20 jmp short loc_B9C9 ; --------------------------------------------------------------------------- loc_B9B7: push (440 shl 16) or 210 ; jumptable 0000B971 case 60 loc_B9BD: push 20 jmp short loc_B9D5 ; --------------------------------------------------------------------------- loc_B9C1: push (320 shl 16) or 200 ; jumptable 0000B971 case 64 push 64 loc_B9C9: push 0 jmp short loc_B9D7 ; --------------------------------------------------------------------------- loc_B9CD: push (320 shl 16) or 200 ; jumptable 0000B971 case 68 push 64 loc_B9D5: push 10 loc_B9D7: call _zunsoft_pyro_new opening_frame_case_default: call sub_D6F0 ; default call _zunsoft_update_and_render loc_B9E2: cmp vsync_Count1, 2 jb short loc_B9E2 mov vsync_Count1, 0 graph_accesspage [bp+@@page] mov al, 1 sub al, [bp+@@page] mov [bp+@@page], al graph_showpage al cmp [bp+opening_key_pressed], 0 jnz short loc_BA26 cmp di, 16 ;if (m_curFrame>=16) jl short loc_BA1B cmp [bp+opening_scr_fade], 100 jnb short loc_BA1B ;if (m_curScrFade<100) mov al, [bp+opening_scr_fade] ;m_curScrFade+=2; add al, 2 mov [bp+opening_scr_fade], al loc_BA1B: mov al, [bp+opening_scr_fade] mov ah, 0 push ax call _zunsoft_palette_update_and_show jmp short loc_BA41 ; --------------------------------------------------------------------------- loc_BA26: cmp [bp+opening_scr_fade_multi], 0 jbe short loc_BA56 mov al, [bp+opening_scr_fade_multi] add al, 0FEh mov [bp+opening_scr_fade_multi], al mov al, [bp+opening_scr_fade_multi] mov ah, 0 mov PaletteTone, ax call far ptr palette_show loc_BA41: call snd_se_update inc di ;m_curFrame++ loc_BA47: cmp di, 170 ;if (m_curFrame<170) jl loc_B949 push 1 call palette_black_out loc_BA56: call super_free call sub_D726 pop di pop si leave retn opening_function endp ; --------------------------------------------------------------------------- word_BA64 dw 0, 10h, 18h, 20h dw 28h, 2Ch, 30h, 34h ; value table for switch statement dw 38h, 3Ch, 40h, 44h dw offset loc_B975 ; jump table for switch statement dw offset loc_B97D dw offset loc_B985 dw offset loc_B98D dw offset loc_B9AD dw offset loc_B995 dw offset loc_B99D dw offset loc_B9A5 dw offset loc_B9AD dw offset loc_B9B7 dw offset loc_B9C1 dw offset loc_B9CD ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BA94 proc near var_C = word ptr -0Ch var_A = byte ptr -0Ah var_4 = word ptr -4 enter 0Ch, 0 push ds push offset aMiko_cfg ; "MIKO.CFG" call file_ropen push ss lea ax, [bp+var_A] push ax push 0Ah call file_read call file_close mov ax, [bp+var_4] mov [bp+var_C], ax mov word ptr _ksoconfig+2, ax mov word ptr _ksoconfig, 0 les bx, _ksoconfig cmp byte ptr es:[bx+0Fh], 6 ja short loc_BAD3 cmp byte ptr es:[bx+0Fh], 0 jnz short loc_BADC loc_BAD3: les bx, _ksoconfig mov byte ptr es:[bx+0Fh], 3 loc_BADC: les bx, _ksoconfig cmp byte ptr es:[bx+10h], 3 jbe short loc_BAEC mov byte ptr es:[bx+10h], 3 loc_BAEC: les bx, _ksoconfig cmp byte ptr es:[bx+12h], 3 jb short loc_BAFC mov byte ptr es:[bx+12h], 0 loc_BAFC: les bx, _ksoconfig cmp byte ptr es:[bx+15h], 3 jb short locret_BB0C mov byte ptr es:[bx+15h], 0 locret_BB0C: leave retn sub_BA94 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BB0E proc near 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 = byte ptr -3 var_2 = byte ptr -2 enter 8, 0 push ds push offset aMiko_cfg ; "MIKO.CFG" call file_append pushd 0 push 0 call file_seek les bx, _ksoconfig mov al, es:[bx+11h] mov [bp+var_8], al mov al, es:[bx+0Fh] mov [bp+var_7], al mov al, es:[bx+10h] mov [bp+var_6], al mov al, es:[bx+12h] mov [bp+var_5], al mov al, es:[bx+15h] mov [bp+var_4], al mov al, es:[bx+16h] mov [bp+var_3], al push ss lea ax, [bp+var_8] push ax push 6 call file_write pushd 9 push 0 call file_seek mov al, [bp+var_8] add al, [bp+var_7] add al, [bp+var_6] add al, [bp+var_5] add al, [bp+var_4] add al, [bp+var_3] mov [bp+var_2], al push ss lea ax, [bp+var_2] push ax push 1 call file_write call file_close leave retn sub_BB0E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BB91 proc near var_A = byte ptr -0Ah var_9 = byte ptr -9 var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 var_5 = byte ptr -5 var_1 = byte ptr -1 enter 0Ah, 0 lea ax, [bp+var_A] push ss push ax push ds push offset unk_FF00 mov cx, 0Ah call SCOPY@ push ds push offset aMiko_cfg ; "MIKO.CFG" call file_append pushd 0 push 0 call file_seek les bx, _ksoconfig mov al, es:[bx+11h] mov [bp+var_A], al mov al, es:[bx+0Fh] mov [bp+var_9], al mov al, es:[bx+10h] mov [bp+var_8], al mov al, es:[bx+12h] mov [bp+var_7], al mov al, es:[bx+15h] mov [bp+var_6], al mov al, es:[bx+16h] mov [bp+var_5], al mov al, [bp+var_A] add al, [bp+var_9] add al, [bp+var_8] add al, [bp+var_7] add al, [bp+var_6] add al, [bp+var_5] mov [bp+var_1], al push ss lea ax, [bp+var_A] push ax push 0Ah call file_write call file_close leave retn sub_BB91 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame load_char_select_sprite_function proc near push bp mov bp, sp call cdg_load_all pascal, 0, ds, offset aSft1_cd2 call cdg_load_all pascal, 10, ds, offset aSft2_cd2 call cdg_load_all pascal, 35, ds, offset aCar_cd2 call cdg_load_single_noalpha pascal, 40, ds, offset aSl00_cdg, 0 call cdg_load_single_noalpha pascal, 41, ds, offset aSl01_cdg, 0 call cdg_load_single_noalpha pascal, 42, ds, offset aSl02_cdg, 0 call cdg_load_single_noalpha pascal, 43, ds, offset aSl03_cdg, 0 call cdg_load_single pascal, 44, ds, offset aSlcl_cdg, 0 call cdg_load_single_noalpha pascal, 45, ds, offset aSl04_cdg, 0 pop bp retn load_char_select_sprite_function endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BC83 proc near push bp mov bp, sp call cdg_freeall pop bp retn sub_BC83 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BC8D proc near @@page_show = byte ptr -2 @@page_access = byte ptr -1 enter 2, 0 push si mov PaletteTone, 0 call far ptr palette_show call pi_slot_load pascal, 0, ds, offset aOp2a_pi call pi_slot_load pascal, 1, ds, offset aOp2b_pi call pi_slot_load pascal, 2, ds, offset aOp2c_pi call pi_slot_load pascal, 3, ds, offset aOp2d_pi call pi_slot_load pascal, 4, ds, offset aOp2e_pi call pi_slot_load pascal, 5, ds, offset aOp2f_pi call pi_slot_load pascal, 6, ds, offset aOp2g_pi call pi_slot_load pascal, 7, ds, offset aOp2h_pi graph_accesspage 0 graph_showpage al call grcg_setcolor pascal, (GC_RMW shl 16) + 1 graph_accesspage 1 pushd 0 push 4F018Fh call grcg_byteboxfill_x graph_accesspage 0 pushd 0 push 4F018Fh call grcg_byteboxfill_x GRCG_OFF_CLOBBERING dx push 1 call graph_copy_page mov [bp+@@page_access], 1 mov [bp+var_2], 0 graph_accesspage 0 graph_showpage al xor si, si jmp short loc_BDAD ; --------------------------------------------------------------------------- loc_BD55: mov ax, si mov bx, 8 cwd idiv bx cmp dx, 1 jg short loc_BD81 mov ax, si cwd idiv bx call pi_slot_palette_apply pascal, ax pushd 278;draw(0.278) mov ax, si mov bx, 8 cwd idiv bx push ax call pi_slot_put loc_BD81: push 1 call frame_delay graph_accesspage [bp+@@page_access] graph_showpage [bp+var_2] mov [bp+@@page_access], al mov al, 1 sub al, [bp+var_2] mov [bp+var_2], al lea ax, [si+24h] mov PaletteTone, ax call far ptr palette_show inc si loc_BDAD: cmp si, 40h jl short loc_BD55 mov si, 1 jmp short loc_BDBE ; --------------------------------------------------------------------------- loc_BDB7: call pi_slot_free pascal, si inc si loc_BDBE: cmp si, 8 jl short loc_BDB7 push 1 call graph_copy_page les bx, _ksoconfig cmp byte ptr es:[bx+1Fh], 0 jnz short loc_BDE8 call snd_load pascal, ds, offset aOp_0, SND_LOAD_SONG kajacall KAJA_SONG_PLAY loc_BDE8: call pi_slot_load pascal, 0, ds, offset aOp1_pi_0 graph_accesspage 0 graph_showpage al push 16 call frame_delay xor si, si jmp short loc_BE46 ; --------------------------------------------------------------------------- loc_BE08: mov ax, si mov bx, 4 cwd idiv bx cmp dx, 1 jg short loc_BE25 pushd 0 push 0 mov ax, si cwd idiv bx push ax call sub_DC94 loc_BE25: push 1 call frame_delay graph_accesspage [bp+@@page_access] graph_showpage [bp+var_2] mov [bp+@@page_access], al mov al, 1 sub al, [bp+var_2] mov [bp+var_2], al inc si loc_BE46: cmp si, 10h jl short loc_BE08 graph_accesspage 1 graph_showpage 0 call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 call pi_slot_free pascal, 0 push 0 call graph_copy_page pop si leave retn sub_BC8D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BE79 proc near var_5 = byte ptr -5 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = byte ptr 6 enter 6, 0 push si mov [bp+var_5], 5 mov al, [bp+arg_2] mov ah, 0 sub ax, word_1403A shl ax, 4 mov si, ax or si, si jl loc_BF48 cmp si, 0C0h jge loc_BF48 cmp [bp+arg_0], 0 jz short loc_BEF4 call grcg_setcolor pascal, (GC_RMW shl 16) + 5 push 0C012Ch lea ax, [si+60h] push ax call grcg_hline push 0C012Ch lea ax, [si+6Fh] push ax call grcg_hline push 0Ch lea ax, [si+60h] push ax lea ax, [si+6Fh] push ax call grcg_vline push 12Ch lea ax, [si+60h] push ax lea ax, [si+6Fh] push ax call grcg_vline GRCG_OFF_CLOBBERING dx jmp short loc_BF05 ; --------------------------------------------------------------------------- loc_BEF4: push 0 lea ax, [si+60h] push ax push 1400010h call sub_DB3C loc_BF05: mov al, [bp+arg_2] mov ah, 0 cmp ax, word_1403C jnz short loc_BF14 mov [bp+var_5], 3 loc_BF14: mov bx, music_game imul bx, 78h mov al, [bp+arg_2] mov ah, 0 shl ax, 2 add bx, ax mov ax, [bx+0FF0h] mov dx, [bx+0FEEh] mov [bp+var_2], ax mov [bp+var_4], dx add si, 60h push 0Ch push si mov al, [bp+var_5] mov ah, 0 push ax push [bp+var_2] push dx call sub_D436 loc_BF48: pop si leave retn 4 sub_BE79 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BF4D proc near arg_0 = byte ptr 4 push bp mov bp, sp push si xor si, si jmp short loc_BF6B ; --------------------------------------------------------------------------- loc_BF55: push si mov al, [bp+arg_0] mov ah, 0 cmp ax, si jnz short loc_BF64 mov ax, 1 jmp short loc_BF66 ; --------------------------------------------------------------------------- loc_BF64: xor ax, ax loc_BF66: push ax call sub_BE79 inc si loc_BF6B: mov ax, musicroom_trackcount add ax, 2 cmp ax, si jg short loc_BF55 push 0C0050h push 5 pushd [MUSICROOM_UP] call sub_D436 push 0C0120h push 5 pushd [MUSICROOM_DOWN] call sub_D436 push 0C0020h push 3 mov bx, music_game shl bx, 2 pushd dword ptr MUSICROOM_GAME[bx] call sub_D436 pop si pop bp retn 2 sub_BF4D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BFB7 proc near push bp mov bp, sp push si push 7D00h call hmem_allocbyte mov word_13E98, ax xor si, si jmp short loc_BFDF ; --------------------------------------------------------------------------- loc_BFCA: les bx, _VRAM_PLANE_B add bx, si mov eax, es:[bx] mov es, word_13E98 mov es:[si], eax add si, 4 loc_BFDF: cmp si, 7D00h jl short loc_BFCA pop si pop bp retn sub_BFB7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BFE8 proc near push bp mov bp, sp push word_13E98 call hmem_free pop bp retn sub_BFE8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BFF6 proc near push bp mov bp, sp push si push di push ds mov ax, GRAM_400 mov es, ax assume es:nothing mov ax, word_13E98 mov ds, ax xor di, di xor si, si mov cx, (ROW_SIZE * RES_Y) / 2 rep movsw pop ds pop di pop si pop bp retn sub_BFF6 endp include th02/music/polygons.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C293 proc near push bp mov bp, sp call sub_BFF6 call sub_D96E call grcg_setcolor pascal, ((GC_RMW or GC_B) shl 16) + 15 call polygons_update_and_render GRCG_OFF_CLOBBERING dx push 1 call frame_delay graph_showpage byte ptr word_13E94+1 mov al, 1 sub al, byte ptr word_13E94+1 mov byte ptr word_13E94+1, al graph_accesspage al pop bp retn sub_C293 endp include th05/music/music_cmt_load.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C32D proc pascal near local @@y:word push si push di push 1400020h push 7 push ds push offset _music_cmt call sub_D436 mov si, offset _music_cmt + MUSIC_CMT_LINE_LEN mov di, 1 mov @@y, 180 jmp short loc_C36D ; --------------------------------------------------------------------------- loc_C351: cmp byte ptr [si], ';' jz short loc_C365 push 320 push @@y push 7 push ds push si call sub_D436 loc_C365: inc di add @@y, 16 add si, MUSIC_CMT_LINE_LEN loc_C36D: cmp di, MUSIC_CMT_LINE_COUNT jl short loc_C351 pop di pop si ret sub_C32D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C376 proc near push bp mov bp, sp push si mov si, 4 jmp short loc_C390 ; --------------------------------------------------------------------------- loc_C37F: mov word_F9BE, si call sub_C32D call sub_C293 call sub_C32D call sub_C293 inc si loc_C390: cmp si, 8 jl short loc_C37F mov word_F9BE, 2 call sub_C32D call sub_C293 call sub_C32D pop si pop bp retn sub_C376 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C3A7 proc near push bp mov bp, sp mov word_F9BE, 2 push 1400020h push 1400010h call sub_DB3C push 14000B4h push 1400090h call sub_DB3C call sub_C293 push 1400020h push 1400010h call sub_DB3C push 14000B4h push 1400090h call sub_DB3C pop bp retn sub_C3A7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C3F9 proc near @@track = word ptr 4 push bp mov bp, sp cmp byte_13E96, 0 jz short loc_C406 call sub_C3A7 loc_C406: call music_cmt_load pascal, [bp+@@track] call sub_BFF6 push 1400040h push 1400100h call sub_DB3C cmp byte_13E96, 0 jz short loc_C42C call sub_C376 jmp short loc_C43A ; --------------------------------------------------------------------------- loc_C42C: mov byte_13E96, 1 call sub_C32D call sub_C293 call sub_C32D loc_C43A: call sub_BFF6 pop bp retn 2 sub_C3F9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C441 proc near arg_0 = word ptr 4 push bp mov bp, sp push si mov si, [bp+arg_0] pushd 20h ; ' ' push 1400010h call sub_DB3C pushd 60h push 14000C0h call sub_DB3C push si call sub_BF4D call sub_C293 pushd 20h ; ' ' push 1400010h call sub_DB3C pushd 60h push 14000C0h call sub_DB3C push si call sub_BF4D pop si pop bp retn 2 sub_C441 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C490 proc near var_1 = byte ptr -1 enter 2, 0 push si xor si, si mov word_1403A, 0 mov word_1403C, 0 mov byte ptr word_13E94, 0 mov bx, music_game add bx, bx mov ax, [bx+14A0h] mov musicroom_trackcount, ax mov byte_13E96, 0 call cdg_freeall call text_clear mov byte ptr word_13E94+1, 1 mov PaletteTone, 0 call far ptr palette_show graph_showpage 0 graph_accesspage al call graph_clear graph_accesspage 1 call pi_slot_load pascal, 0, ds, offset aMusic_pi call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 call pi_slot_free pascal, 0 call sub_D894 call sub_BFB7 call sub_D688 push word_13E94 call sub_BF4D push 0 call graph_copy_page graph_accesspage 1 graph_showpage 0 call pfend push ds push offset aMusic_dat ; "music.dat" call pfstart mov al, byte ptr word_13E94 mov ah, 0 call sub_C3F9 pascal, ax mov PaletteTone, 64h ; 'd' call far ptr palette_show loc_C555: call _input_reset_sense_held cmp _input, INPUT_NONE jz short loc_C57F cmp si, 18h jl short loc_C579 cmp _input, INPUT_UP jz short loc_C574 cmp _input, INPUT_DOWN jnz short loc_C579 loc_C574: mov si, 14h jmp short loc_C57F ; --------------------------------------------------------------------------- loc_C579: inc si call sub_C293 jmp short loc_C555 ; --------------------------------------------------------------------------- loc_C57F: call _input_reset_sense_held test _input.lo, low INPUT_UP jz short loc_C5EB mov al, byte ptr word_13E94 mov [bp+var_1], al cmp byte ptr word_13E94, 0 jbe short loc_C5D5 dec byte ptr word_13E94 mov al, byte ptr word_13E94 mov ah, 0 cmp ax, word_1403A jge short loc_C5AE mov al, byte ptr word_13E94 mov ah, 0 jmp short loc_C61C ; --------------------------------------------------------------------------- loc_C5AE: push word ptr [bp+var_1] push 0 call sub_BE79 push word_13E94 push 1 call sub_BE79 call sub_C293 push word ptr [bp+var_1] push 0 call sub_BE79 push word_13E94 push 1 call sub_BE79 jmp short loc_C5EB ; --------------------------------------------------------------------------- loc_C5D5: mov al, byte ptr musicroom_trackcount mov byte ptr word_13E94, al mov ax, musicroom_trackcount add ax, 0FFF5h mov word_1403A, ax push musicroom_trackcount call sub_C441 loc_C5EB: test _input.lo, low INPUT_DOWN jz short loc_C666 mov al, byte ptr word_13E94 mov [bp+var_1], al mov ah, 0 cmp ax, musicroom_trackcount jge short loc_C652 inc byte ptr word_13E94 mov al, byte ptr word_13E94 mov ah, 0 mov dx, word_1403A add dx, 0Ch cmp ax, dx jl short loc_C62B mov al, byte ptr word_13E94 mov ah, 0 add ax, 0FFF5h loc_C61C: mov word_1403A, ax mov al, byte ptr word_13E94 mov ah, 0 push ax call sub_C441 jmp loc_C6E3 ; --------------------------------------------------------------------------- loc_C62B: push word ptr [bp+var_1] push 0 call sub_BE79 push word_13E94 push 1 call sub_BE79 call sub_C293 push word ptr [bp+var_1] push 0 call sub_BE79 push word_13E94 push 1 call sub_BE79 jmp short loc_C666 ; --------------------------------------------------------------------------- loc_C652: mov byte ptr word_13E94, 0 mov word_1403A, 0 mov al, byte ptr word_13E94 mov ah, 0 push ax call sub_C441 loc_C666: test _input.lo, low INPUT_LEFT jz short loc_C680 dec music_game cmp music_game, 0 jge short loc_C698 mov music_game, 4 jmp short loc_C698 ; --------------------------------------------------------------------------- loc_C680: test _input.lo, low INPUT_RIGHT jz short loc_C6E3 inc music_game cmp music_game, 5 jl short loc_C698 mov music_game, 0 loc_C698: mov byte ptr word_13E94, 0 mov word_1403C, 0 mov word_1403A, 0 mov bx, music_game add bx, bx mov ax, [bx+14A0h] mov musicroom_trackcount, ax push 0 call sub_C441 kajacall KAJA_SONG_FADE, 32 call sub_C3F9 pascal, 0 mov bx, music_game imul bx, 78h call snd_load pascal, dword ptr [bx+1246h], SND_LOAD_SONG kajacall KAJA_SONG_PLAY loc_C6E3: test _input.lo, low INPUT_SHOT jnz short loc_C6F1 test _input.hi, high INPUT_OK jz short loc_C767 loc_C6F1: mov al, byte ptr word_13E94 mov ah, 0 cmp ax, musicroom_trackcount jz loc_C77F kajacall KAJA_SONG_FADE, 32 mov al, byte ptr word_1403C mov [bp+var_1], al mov al, byte ptr word_13E94 mov ah, 0 mov word_1403C, ax push word ptr [bp+var_1] push 0 call sub_BE79 push word_13E94 push 1 call sub_BE79 call sub_C293 push word ptr [bp+var_1] push 0 call sub_BE79 push word_13E94 push 1 call sub_BE79 mov al, byte ptr word_13E94 mov ah, 0 call sub_C3F9 pascal, ax mov bx, music_game imul bx, 78h mov al, byte ptr word_13E94 mov ah, 0 shl ax, 2 add bx, ax call snd_load pascal, dword ptr [bx+1246h], SND_LOAD_SONG kajacall KAJA_SONG_PLAY loc_C767: test _input.hi, high INPUT_CANCEL jnz short loc_C77F cmp _input, INPUT_NONE jnz loc_C555 xor si, si call sub_C293 jmp loc_C57F ; --------------------------------------------------------------------------- loc_C77F: call _input_reset_sense_held cmp _input, INPUT_NONE jz short loc_C790 call sub_C293 jmp short loc_C77F ; --------------------------------------------------------------------------- loc_C790: call pfend push ds push offset aKaikidan1_dat1 call pfstart kajacall KAJA_SONG_FADE, 16 call sub_BFE8 graph_showpage 0 graph_accesspage al push 1 call palette_black_out call sub_D726 call snd_load pascal, ds, offset aH_op+2, SND_LOAD_SONG kajacall KAJA_SONG_PLAY pop si leave retn sub_C490 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C7D5 proc near var_1 = byte ptr -1 enter 2, 0 push si mov si, 4 jmp short loc_C802 ; --------------------------------------------------------------------------- loc_C7DF: mov al, [si+5061h] mov [bp+var_1], al mov al, byte_14041 ror [bp+var_1], 3 xor [bp+var_1], al mov al, [si+5060h] mov dl, byte_14040 add dl, [bp+var_1] add al, dl mov [si+5060h], al inc si loc_C802: cmp si, 5Fh ; '_' jl short loc_C7DF mov al, byte_14040 add [si+5060h], al xor cx, cx mov si, 4 jmp short loc_C81E ; --------------------------------------------------------------------------- loc_C815: mov al, [si+5060h] mov ah, 0 add cx, ax inc si loc_C81E: cmp si, 60h jl short loc_C815 cmp word_14042, cx jz short loc_C82D mov al, 1 jmp short loc_C87B ; --------------------------------------------------------------------------- loc_C82D: mov si, 4 jmp short loc_C855 ; --------------------------------------------------------------------------- loc_C832: mov al, [si+50C1h] mov [bp+var_1], al mov al, byte_140A1 ror [bp+var_1], 3 xor [bp+var_1], al mov al, [si+50C0h] mov dl, byte_140A0 add dl, [bp+var_1] add al, dl mov [si+50C0h], al inc si loc_C855: cmp si, 5Fh ; '_' jl short loc_C832 mov al, byte_140A0 add [si+50C0h], al xor cx, cx mov si, 4 jmp short loc_C871 ; --------------------------------------------------------------------------- loc_C868: mov al, [si+50C0h] mov ah, 0 add cx, ax inc si loc_C871: cmp si, 60h jl short loc_C868 mov al, byte_140A2 sub al, cl loc_C87B: pop si leave retn sub_C7D5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C87E proc near var_1 = byte ptr -1 enter 2, 0 push si mov word_14042, 0 mov si, 4 jmp short loc_C899 ; --------------------------------------------------------------------------- loc_C88E: mov al, [si+5060h] mov ah, 0 add word_14042, ax inc si loc_C899: cmp si, 60h jl short loc_C88E call IRand mov byte_14040, al call IRand mov byte_14041, al mov [bp+var_1], 0 mov si, 5Fh ; '_' jmp short loc_C8DA ; --------------------------------------------------------------------------- loc_C8B7: mov al, [si+5060h] mov dl, byte_14040 add dl, [bp+var_1] sub al, dl mov [si+5060h], al mov al, [si+5060h] mov [bp+var_1], al mov al, byte_14041 ror [bp+var_1], 3 xor [bp+var_1], al dec si loc_C8DA: cmp si, 4 jge short loc_C8B7 pop si leave retn sub_C87E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C8E2 proc near var_3 = byte ptr -3 var_2 = word ptr -2 enter 4, 0 push si mov [bp+var_3], 0A8h ; 'ィ' xor si, si jmp short loc_C95A ; --------------------------------------------------------------------------- loc_C8EF: mov byte_1409E, 12h mov [bp+var_2], 0 jmp short loc_C90B ; --------------------------------------------------------------------------- loc_C8FB: mov bx, si shl bx, 3 add bx, [bp+var_2] mov byte ptr [bx+5091h], 0A0h inc [bp+var_2] loc_C90B: cmp [bp+var_2], 8 jl short loc_C8FB or si, si jnz short loc_C921 mov bx, si shl bx, 3 mov byte ptr [bx+5097h], 0A1h ; '。' jmp short loc_C932 ; --------------------------------------------------------------------------- loc_C921: mov bx, si shl bx, 3 mov al, [bp+var_3] mov [bx+5096h], al add al, 0FEh mov [bp+var_3], al loc_C932: mov [bp+var_2], 0 jmp short loc_C949 ; --------------------------------------------------------------------------- loc_C939: mov bx, si imul bx, 9 add bx, [bp+var_2] mov byte ptr [bx+5064h], 0C4h ; 'ト' inc [bp+var_2] loc_C949: cmp [bp+var_2], 8 jl short loc_C939 mov bx, si imul bx, 9 mov byte ptr [bx+506Ch], 0 inc si loc_C95A: cmp si, 5 jl short loc_C8EF push ds push offset aGensou_scr ; "GENSOU.SCR" call file_create xor si, si jmp short loc_C9B1 ; --------------------------------------------------------------------------- loc_C96C: mov [bp+var_2], 0 jmp short loc_C999 ; --------------------------------------------------------------------------- loc_C973: mov ax, si mov bx, 5 cwd idiv bx cmp dx, 4 jnz short loc_C98A mov bx, [bp+var_2] mov byte ptr [bx+50B9h], 0A1h ; '。' jmp short loc_C996 ; --------------------------------------------------------------------------- loc_C98A: mov bx, [bp+var_2] mov al, 0A6h sub al, byte ptr [bp+var_2] mov [bx+50B9h], al loc_C996: inc [bp+var_2] loc_C999: cmp [bp+var_2], 5 jl short loc_C973 call sub_C87E push ds push offset byte_14040 push 60h call file_write call sub_C7D5 inc si loc_C9B1: cmp si, 14h jl short loc_C96C call file_close pop si leave retn sub_C8E2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C9BE proc near arg_0 = word ptr 4 push bp mov bp, sp push ds push offset aGensou_scr ; "GENSOU.SCR" call file_exist or ax, ax jz short loc_CA0C push ds push offset aGensou_scr ; "GENSOU.SCR" call file_ropen mov ax, [bp+arg_0] imul ax, 5 mov dl, _hiscore_rank mov dh, 0 add ax, dx imul ax, 60h movzx eax, ax push eax push 0 call file_seek push ds push offset byte_14040 push 60h call file_read call file_close call sub_C7D5 or al, al jz short loc_CA15 loc_CA0C: call sub_C8E2 mov al, 1 pop bp retn 2 ; --------------------------------------------------------------------------- loc_CA15: mov al, 0 pop bp retn 2 sub_C9BE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CA1B proc near var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 enter 2, 0 push si push di mov si, [bp+arg_4] mov di, [bp+arg_0] mov bx, di shl bx, 3 mov al, [bx+5098h] mov ah, 0 add ax, 0FF60h cmp ax, 0Ah jl short loc_CA5B lea ax, [si-10h] push ax push [bp+arg_2] mov bx, di shl bx, 3 mov al, [bx+5098h] mov ah, 0 add ax, 0FF60h mov bx, 0Ah cwd idiv bx push ax call super_put loc_CA5B: push si push [bp+arg_2] mov bx, di shl bx, 3 mov al, [bx+5098h] mov ah, 0 add ax, 0FF60h mov bx, 0Ah cwd idiv bx push dx call super_put add si, 10h mov [bp+var_2], 6 jmp short loc_CAA4 ; --------------------------------------------------------------------------- loc_CA83: push si push [bp+arg_2] mov bx, di shl bx, 3 add bx, [bp+var_2] mov al, [bx+5091h] mov ah, 0 add ax, 0FF60h push ax call super_put dec [bp+var_2] add si, 10h loc_CAA4: cmp [bp+var_2], 0 jge short loc_CA83 pop di pop si leave retn 6 sub_CA1B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CAB0 proc near arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 push bp mov bp, sp push si push di mov si, [bp+arg_4] mov di, [bp+arg_2] cmp [bp+arg_0], 0FFh jz short loc_CADB lea ax, [si+2] push ax lea ax, [di+2] push ax push [bp+arg_0] push 0Eh call graph_gaiji_putc push si push di push [bp+arg_0] jmp short loc_CAF3 ; --------------------------------------------------------------------------- loc_CADB: lea ax, [si+2] push ax lea ax, [di+2] push ax push 0EF000Eh call graph_gaiji_putc push si push di push 0EFh ; '・ loc_CAF3: push 7 call graph_gaiji_putc pop di pop si pop bp retn 6 sub_CAB0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CB00 proc near var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 2, 0 push si push di cmp [bp+arg_0], 0 jnz short loc_CB3A mov bx, [bp+arg_2] cmp bx, 3 ja short loc_CB33 add bx, bx jmp cs:off_CBD4[bx] loc_CB1B: mov si, 8 jmp short loc_CB23 ; --------------------------------------------------------------------------- loc_CB20: mov si, 148h loc_CB23: mov di, 58h ; 'X' jmp short loc_CB33 ; --------------------------------------------------------------------------- loc_CB28: mov si, 8 jmp short loc_CB30 ; --------------------------------------------------------------------------- loc_CB2D: mov si, 148h loc_CB30: mov di, 0E0h loc_CB33: mov [bp+var_2], 7 jmp short loc_CB74 ; --------------------------------------------------------------------------- loc_CB3A: mov bx, [bp+arg_2] cmp bx, 3 ja short loc_CB6F add bx, bx jmp cs:off_CBCC[bx] loc_CB49: mov si, 8 jmp short loc_CB51 ; --------------------------------------------------------------------------- loc_CB4E: mov si, 148h loc_CB51: mov ax, [bp+arg_0] shl ax, 4 add ax, 60h jmp short loc_CB6D ; --------------------------------------------------------------------------- loc_CB5C: mov si, 8 jmp short loc_CB64 ; --------------------------------------------------------------------------- loc_CB61: mov si, 148h loc_CB64: mov ax, [bp+arg_0] shl ax, 4 add ax, 0E8h ; '・ loc_CB6D: mov di, ax loc_CB6F: mov [bp+var_2], 2 loc_CB74: lea ax, [si+2] push ax lea ax, [di+2] push ax push 10h mov ax, [bp+arg_0] imul ax, 9 add ax, 5064h push ds push ax push 0Eh call graph_gaiji_puts push si push di push 10h mov ax, [bp+arg_0] imul ax, 9 add ax, 5064h push ds push ax push [bp+var_2] call graph_gaiji_puts lea ax, [si+96h] push ax push di push [bp+arg_0] call sub_CA1B lea ax, [si+11Eh] push ax push di mov bx, [bp+arg_0] mov al, [bx+50B9h] mov ah, 0 push ax call sub_CAB0 pop di pop si leave retn 4 sub_CB00 endp ; --------------------------------------------------------------------------- off_CBCC dw offset loc_CB49 dw offset loc_CB4E dw offset loc_CB5C dw offset loc_CB61 off_CBD4 dw offset loc_CB1B dw offset loc_CB20 dw offset loc_CB28 dw offset loc_CB2D ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CBDC proc near push bp mov bp, sp push si push di graph_accesspage 1 call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 graph_accesspage 0 call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 xor si, si jmp short loc_CC27 ; --------------------------------------------------------------------------- loc_CC13: push si call sub_C9BE xor di, di jmp short loc_CC21 ; --------------------------------------------------------------------------- loc_CC1B: push si push di call sub_CB00 inc di loc_CC21: cmp di, 5 jl short loc_CC1B inc si loc_CC27: cmp si, 4 jl short loc_CC13 push 1F00178h mov al, _hiscore_rank mov ah, 0 add ax, ax add ax, 14h push ax call super_put push 2300178h mov al, _hiscore_rank mov ah, 0 add ax, ax add ax, 15h push ax call super_put pop di pop si pop bp retn sub_CBDC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CC5C proc near push bp mov bp, sp kajacall KAJA_SONG_STOP call snd_load pascal, ds, offset aName, SND_LOAD_SONG kajacall KAJA_SONG_PLAY kajacall KAJA_SONG_FADE, -128 push 1 call palette_black_out les bx, _ksoconfig mov al, es:[bx+11h] mov _hiscore_rank, al call pi_slot_load pascal, 0, ds, offset aHi01_pi loc_CC9F: call sub_CBDC push 1 call palette_black_in loc_CCA9: call _input_reset_sense_held push 1 call frame_delay test _input.hi, high INPUT_OK jnz short loc_CD17 test _input.lo, low INPUT_SHOT jnz short loc_CD17 test _input.hi, high INPUT_CANCEL jnz short loc_CD17 test _input.hi, high INPUT_OK jnz short loc_CD17 test _input.lo, low INPUT_LEFT jz short loc_CCF8 cmp _hiscore_rank, RANK_EASY jz short loc_CCF8 dec _hiscore_rank mov PaletteTone, 0 call far ptr palette_show call sub_CBDC push 1 call palette_black_in loc_CCF8: test _input.lo, low INPUT_RIGHT jz short loc_CCA9 cmp _hiscore_rank, RANK_EXTRA jnb short loc_CCA9 inc _hiscore_rank mov PaletteTone, 0 call far ptr palette_show jmp short loc_CC9F ; --------------------------------------------------------------------------- loc_CD17: kajacall KAJA_SONG_FADE, 1 push 1 call palette_black_out call pi_slot_free pascal, 0 graph_accesspage 1 call pi_slot_load pascal, 0, ds, offset aOp1_pi_1 call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 call pi_slot_free pascal, 0 push 0 call graph_copy_page push 1 call palette_black_in loc_CD64: call _input_reset_sense_held push 1 call frame_delay cmp _input, INPUT_NONE jnz short loc_CD64 kajacall KAJA_SONG_STOP call snd_load pascal, ds, offset aOp_1, SND_LOAD_SONG kajacall KAJA_SONG_PLAY pop bp retn sub_CC5C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CD94 proc near push bp mov bp, sp push si mov byte_14116, 0 xor si, si jmp short loc_CE0E ; --------------------------------------------------------------------------- loc_CDA1: mov _hiscore_rank, RANK_EASY jmp short loc_CE06 ; --------------------------------------------------------------------------- loc_CDA8: push si call sub_C9BE or al, al jnz short loc_CE0D mov bx, si imul bx, 5 mov al, _hiscore_rank mov ah, 0 add bx, ax mov al, byte_1409E mov [bx+5122h], al mov bx, si imul bx, 5 mov al, _hiscore_rank mov ah, 0 add bx, ax cmp byte ptr [bx+5122h], 80h jz short loc_CDE7 mov bx, si imul bx, 5 mov al, _hiscore_rank mov ah, 0 add bx, ax mov byte ptr [bx+5122h], 0 loc_CDE7: cmp _hiscore_rank, RANK_EXTRA jnb short loc_CE02 mov bx, si imul bx, 5 mov al, _hiscore_rank mov ah, 0 add bx, ax mov al, [bx+5122h] or byte_14116, al loc_CE02: inc _hiscore_rank loc_CE06: cmp _hiscore_rank, RANK_COUNT jb short loc_CDA8 loc_CE0D: inc si loc_CE0E: cmp si, 4 jl short loc_CDA1 les bx, _ksoconfig mov al, es:[bx+11h] mov _hiscore_rank, al push ds push offset aScnum_bft ; "scnum.bft" call super_entry_bfnt push ds push offset aHi_m_bft ; "hi_m.bft" call super_entry_bfnt xor si, si jmp short loc_CE5D ; --------------------------------------------------------------------------- loc_CE34: mov bx, si imul bx, 5 mov al, [bx+5122h] mov bx, si imul bx, 5 or al, [bx+5123h] mov bx, si imul bx, 5 or al, [bx+5124h] mov bx, si imul bx, 5 or al, [bx+5125h] mov [si+513Fh], al inc si loc_CE5D: cmp si, 4 jl short loc_CE34 pop si pop bp retn sub_CD94 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CE65 proc near var_6 = dword ptr -6 var_2 = word ptr -2 arg_0 = byte ptr 4 enter 6, 0 push si push di mov al, [bp+arg_0] mov ah, 0 mov bx, ax cmp bx, 3 ja short loc_CE90 add bx, bx jmp cs:off_CEF7[bx] loc_CE7E: mov si, 0F02h jmp short loc_CE90 ; --------------------------------------------------------------------------- loc_CE83: mov si, 0F22h jmp short loc_CE90 ; --------------------------------------------------------------------------- loc_CE88: mov si, 4614h jmp short loc_CE90 ; --------------------------------------------------------------------------- loc_CE8D: mov si, 4632h loc_CE90: call grcg_setcolor pascal, (GC_RMW shl 16) + 1 mov [bp+var_6], 0AAAAAAAAh xor di, di jmp short loc_CEE5 ; --------------------------------------------------------------------------- loc_CEA7: test di, 1 jnz short loc_CEB5 mov eax, 0AAAAAAAAh jmp short loc_CEBB ; --------------------------------------------------------------------------- loc_CEB5: mov eax, 55555555h loc_CEBB: mov [bp+var_6], eax mov [bp+var_2], 0 jmp short loc_CEDB ; --------------------------------------------------------------------------- loc_CEC6: les bx, _VRAM_PLANE_B add bx, si mov eax, [bp+var_6] mov es:[bx], eax add [bp+var_2], 4 add si, 4 loc_CEDB: cmp [bp+var_2], 1Ch jl short loc_CEC6 inc di add si, 34h ; '4' loc_CEE5: cmp di, 0A0h jl short loc_CEA7 GRCG_OFF_CLOBBERING dx pop di pop si leave retn 2 sub_CE65 endp ; --------------------------------------------------------------------------- off_CEF7 dw offset loc_CE7E dw offset loc_CE83 dw offset loc_CE88 dw offset loc_CE8D ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CEFF proc near var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 4 enter 4, 0 push si push di mov al, byte ptr word_14118 mov ah, 0 mov bx, ax cmp bx, 3 ja short loc_CF59 add bx, bx jmp cs:off_D08D[bx] loc_CF18: mov si, 10h mov di, 30h ; '0' mov [bp+var_2], 0B0h ; 'ー' mov [bp+var_4], 0C0h jmp short loc_CF59 ; --------------------------------------------------------------------------- loc_CF2A: mov si, 110h mov di, 30h ; '0' mov [bp+var_2], 1B0h mov [bp+var_4], 0C0h jmp short loc_CF59 ; --------------------------------------------------------------------------- loc_CF3C: mov si, 0A0h mov di, 0E0h mov [bp+var_2], 140h jmp short loc_CF54 ; --------------------------------------------------------------------------- loc_CF49: mov si, 190h mov di, 0E0h mov [bp+var_2], 230h loc_CF54: mov [bp+var_4], 170h loc_CF59: cmp [bp+arg_0], 0 jnz loc_D012 mov al, byte ptr word_14118 mov ah, 0 mov bx, ax cmp byte ptr [bx+5143h], 0 jz short loc_CF82 lea ax, [si-8] push ax lea ax, [di-8] push ax mov al, byte ptr word_14118 mov ah, 0 add ax, 40 push ax jmp short loc_CF8C ; --------------------------------------------------------------------------- loc_CF82: lea ax, [si-8] push ax lea ax, [di-8] push ax push 45 loc_CF8C: call cdg_put_noalpha call grcg_setcolor pascal, (GC_RMW shl 16) + 1 lea ax, [si+0D8h] mov bx, 8 cwd idiv bx push ax push di lea ax, [si+0DFh] cwd idiv bx push ax lea ax, [di+97h] push ax call grcg_byteboxfill_x mov ax, si mov bx, 8 cwd idiv bx push ax lea ax, [di+98h] push ax lea ax, [si+0DFh] cwd idiv bx push ax lea ax, [di+9Fh] push ax call grcg_byteboxfill_x GRCG_OFF_CLOBBERING dx mov al, byte ptr word_14118 mov ah, 0 imul ax, 5 mov dl, _rank mov dh, 0 add ax, dx mov bx, ax cmp byte ptr [bx+5122h], 0 jz loc_D086 mov ax, [bp+var_2] add ax, 0FFF8h push ax mov ax, [bp+var_4] add ax, 0FFF8h push ax push 44 call cdg_put jmp short loc_D086 ; --------------------------------------------------------------------------- loc_D012: lea ax, [si-8] push ax lea ax, [di-8] push ax push 0E00008h call sub_DB3C lea ax, [si-8] push ax push di push 800A0h call sub_DB3C mov al, byte ptr word_14118 mov ah, 0 mov bx, ax cmp byte ptr [bx+5143h], 0 jz short loc_D050 push si push di mov al, byte ptr word_14118 mov ah, 0 add ax, 28h ; '(' push ax jmp short loc_D054 ; --------------------------------------------------------------------------- loc_D050: push si push di push 45 loc_D054: call cdg_put_noalpha mov al, byte ptr word_14118 mov ah, 0 imul ax, 5 mov dl, _rank mov dh, 0 add ax, dx mov bx, ax cmp byte ptr [bx+5122h], 0 jz short loc_D07F call cdg_put pascal, [bp+var_2], [bp+var_4], 44 loc_D07F: push word_14118 call sub_CE65 loc_D086: pop di pop si leave retn 2 sub_CEFF endp ; --------------------------------------------------------------------------- db 0 off_D08D dw offset loc_CF18 dw offset loc_CF2A dw offset loc_CF3C dw offset loc_CF49 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D095 proc near var_2 = word ptr -2 enter 2, 0 push si mov al, byte ptr word_14118 mov ah, 0 mov [bp+var_2], ax mov PaletteTone, 0 call far ptr palette_show graph_accesspage 1 call pi_slot_load pascal, 0, ds, offset aSlb1_pi call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 call pi_slot_free pascal, 0 push 0 call graph_copy_page call sub_D688 graph_accesspage 1 graph_showpage 0 xor si, si mov byte ptr word_14118, 0 jmp short loc_D111 ; --------------------------------------------------------------------------- loc_D0F7: mov al, byte ptr word_14118 mov ah, 0 cmp ax, [bp+var_2] jz short loc_D106 mov ax, 1 jmp short loc_D108 ; --------------------------------------------------------------------------- loc_D106: xor ax, ax loc_D108: push ax call sub_CEFF inc si inc byte ptr word_14118 loc_D111: cmp si, 4 jl short loc_D0F7 mov al, byte ptr [bp+var_2] mov byte ptr word_14118, al push 0 call graph_copy_page push 1 call palette_black_in pop si leave retn sub_D095 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D12D proc near var_4 = word ptr -4 var_1 = byte ptr -1 enter 4, 0 mov [bp+var_4], 0 jmp short loc_D146 ; --------------------------------------------------------------------------- loc_D138: mov bx, [bp+var_4] mov al, [bx+513Fh] mov [bx+5143h], al inc [bp+var_4] loc_D146: cmp [bp+var_4], 4 jl short loc_D138 les bx, _ksoconfig cmp byte ptr es:[bx+13h], 6 jnz short loc_D18A mov _rank, RANK_EXTRA mov byte ptr word_14118, 0FFh mov [bp+var_4], 0 jmp short loc_D182 ; --------------------------------------------------------------------------- loc_D168: cmp byte ptr word_14118, 0FFh jnz short loc_D17F mov bx, [bp+var_4] cmp byte ptr [bx+5143h], 0 jz short loc_D17F mov al, byte ptr [bp+var_4] mov byte ptr word_14118, al loc_D17F: inc [bp+var_4] loc_D182: cmp [bp+var_4], 4 jl short loc_D168 jmp short loc_D1B2 ; --------------------------------------------------------------------------- loc_D18A: mov [bp+var_4], 0 jmp short loc_D19C ; --------------------------------------------------------------------------- loc_D191: mov bx, [bp+var_4] mov byte ptr [bx+5143h], 1 inc [bp+var_4] loc_D19C: cmp [bp+var_4], 4 jl short loc_D191 les bx, _ksoconfig mov al, es:[bx+11h] mov _rank, al mov byte ptr word_14118, 0 loc_D1B2: call sub_D095 loc_D1B5: call _input_reset_sense_held cmp [bp+var_1], 0 jnz loc_D2EC test _input.lo, low INPUT_LEFT jnz short loc_D1D0 test _input.lo, low INPUT_RIGHT jz short loc_D223 loc_D1D0: call snd_se_reset call snd_se_play pascal, 1 call snd_se_update graph_accesspage 1 push 1 call sub_CEFF xor byte ptr word_14118, 1 push 0 call sub_CEFF mov vsync_Count1, 0 push 1 call frame_delay graph_showpage 1 push 0 call graph_copy_page mov vsync_Count1, 0 push 1 call frame_delay graph_showpage 0 loc_D223: test _input.lo, low INPUT_UP jnz short loc_D231 test _input.lo, low INPUT_DOWN jz short loc_D284 loc_D231: call snd_se_reset call snd_se_play pascal, 1 call snd_se_update graph_accesspage 1 push 1 call sub_CEFF xor byte ptr word_14118, 2 push 0 call sub_CEFF mov vsync_Count1, 0 push 1 call frame_delay graph_showpage 1 push 0 call graph_copy_page mov vsync_Count1, 0 push 1 call frame_delay graph_showpage 0 loc_D284: test _input.hi, high INPUT_OK jnz short loc_D292 test _input.lo, low INPUT_SHOT jz short loc_D2CC loc_D292: mov al, byte ptr word_14118 mov ah, 0 mov bx, ax cmp byte ptr [bx+5143h], 0 jz short loc_D2CC call snd_se_reset call snd_se_play pascal, 11 call snd_se_update les bx, _ksoconfig mov al, byte ptr word_14118 mov es:[bx+14h], al push 1 call palette_black_out call sub_D726 xor ax, ax leave retn ; --------------------------------------------------------------------------- loc_D2CC: test _input.hi, high INPUT_CANCEL jz short loc_D2E4 push 1 call palette_black_out call sub_D726 mov ax, 1 leave retn ; --------------------------------------------------------------------------- loc_D2E4: mov al, byte ptr _input mov [bp+var_1], al jmp short loc_D2F7 ; --------------------------------------------------------------------------- loc_D2EC: cmp _input, INPUT_NONE jnz short loc_D2F7 mov [bp+var_1], 0 loc_D2F7: push 1 call frame_delay jmp loc_D1B5 ; --------------------------------------------------------------------------- leave retn sub_D12D 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 4 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing include th03/formats/hfliplut.asm include th04/snd/pmd_res.asm include th02/snd/mmd_res.asm include th04/snd/detmodes.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D41C proc far push bp mov bp, sp nopcall sub_D7EC call key_beep_on call text_systemline_show call text_cursor_show pop bp retf sub_D41C endp ; --------------------------------------------------------------------------- db 0 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D436 proc far arg_0 = dword ptr 6 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh push bp mov bp, sp push si push di push ds mov dx, [bp+arg_4] GRCG_NOINT_SETMODE_VIA_MOV al, GC_RMW GRCG_SETCOLOR_DIRECT_INLINED dx mov ax, 0A800h mov es, ax assume es:nothing mov dx, [bp+arg_6] shl dx, 6 mov di, dx shr dx, 2 add di, dx mov cx, [bp+arg_8] mov al, 0Bh out 68h, al mov bx, word_F9BE add bx, bx cmp bx, 8 jb short loc_D492 cmp bx, 10h jnb short loc_D492 mov ax, [bx+9AEh] mov word ptr cs:loc_D58A+3, ax mov bx, 8 loc_D492: mov ax, [bx+9A2h] mov word ptr cs:loc_D4F4+1, ax mov ax, [bx+9ACh] mov word ptr cs:loc_D546+1, ax mov ax, word_F9C0 mov word ptr cs:loc_D513+1, ax mov word ptr cs:loc_D55A+1, ax push ds pop fs assume fs:_DATA lds si, [bp+arg_0] lodsb or al, al jz short loc_D51F loc_D4B8: mov dx, cx shr dx, 3 add di, dx and cx, 7 mov ah, 9 test al, 0E0h jns short loc_D531 jp short loc_D52E mov ah, al lodsb shl ah, 1 cmp al, 9Fh jnb short loc_D4D8 cmp al, 80h adc ax, 0FEDFh loc_D4D8: sbb al, 0FEh and ax, 7F7Fh out 0A1h, al mov al, ah out 0A3h, al nop loc_D4E4: mov al, ch or al, 20h out 0A5h, al in al, 0A9h mov ah, al mov al, ch out 0A5h, al in al, 0A9h loc_D4F4: call sub_D56F mov bh, al mov bl, 0 shr ax, cl shr bx, cl xchg ah, al stosw mov es:[di], bl add di, 4Eh ; 'N' inc ch cmp ch, 10h jb short loc_D4E4 sub di, 500h loc_D513: mov dx, 1234h loc_D516: xor ch, ch add cx, dx lodsb or al, al jnz short loc_D4B8 loc_D51F: mov al, 0Ah out 68h, al GRCG_OFF_VIA_XOR al pop ds pop di pop si pop bp retf 0Ah ; --------------------------------------------------------------------------- loc_D52E: add ax, 80h loc_D531: cmp al, 20h ; ' ' jz short loc_D55A out 0A1h, al mov al, ah out 0A3h, al nop loc_D53C: mov al, ch or al, 20h out 0A5h, al in al, 0A9h xor ah, ah loc_D546: call sub_D56F ror ax, cl stosw add di, 4Eh ; 'N' inc ch cmp ch, 10h jb short loc_D53C sub di, 500h loc_D55A: mov dx, 1234h shr dx, 1 jmp short loc_D516 sub_D436 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= sub_D562 proc near mov dx, ax add dx, dx or ax, dx retn sub_D562 endp ; --------------------------------------------------------------------------- mov dx, ax shl dx, 1 or ax, dx ; =============== S U B R O U T I N E ======================================= sub_D56F proc near mov dx, ax mov bp, ax add bp, bp or ax, bp xor dx, ax add dx, dx not dx and ax, dx retn sub_D56F endp ; =============== S U B R O U T I N E ======================================= sub_D580 proc near call sub_D56F mov bl, ch and bx, 3 add bx, bx loc_D58A: and ax, fs:[bx+1234h] retn sub_D580 endp include th04/formats/cdg_put_noalpha.asm include th04/snd/se.asm ; =============== S U B R O U T I N E ======================================= sub_D688 proc far push si push di cmp word_F9C4, 0 jnz short loc_D6BD push 7D00h call hmem_allocbyte mov word_F9C4, ax push 7D00h call hmem_allocbyte mov word_F9C6, ax push 7D00h call hmem_allocbyte mov word_F9C8, ax push 7D00h call hmem_allocbyte mov word_F9CA, ax loc_D6BD: mov dl, 4 push ds push 0E000h push word_F9CA push 0B800h push word_F9C8 push 0B000h push word_F9C6 push 0A800h push word_F9C4 loc_D6DC: pop es pop ds xor si, si xor di, di mov cx, (ROW_SIZE * RES_Y) / 4 rep movsd dec dl jnz short loc_D6DC pop ds pop di pop si retf sub_D688 endp ; =============== S U B R O U T I N E ======================================= sub_D6F0 proc far push si push di mov dl, 4 push ds push 0E000h push word_F9CA push 0B800h push word_F9C8 push 0B000h push word_F9C6 push 0A800h push word_F9C4 loc_D711: pop ds pop es xor si, si xor di, di mov cx, (ROW_SIZE * RES_Y) / 4 rep movsd dec dl jnz short loc_D711 pop ds pop di pop si retf sub_D6F0 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= sub_D726 proc far cmp word_F9C4, 0 jz short locret_D757 push word_F9C4 call hmem_free push word_F9C6 call hmem_free push word_F9C8 call hmem_free push word_F9CA call hmem_free mov word_F9C4, 0 locret_D757: retf sub_D726 endp include th04/formats/cdg_put.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D7EC proc far push bp mov bp, sp call pfend graph_accesspage 1 call graph_clear graph_accesspage 0 call graph_clear graph_accesspage 0 graph_showpage al call mem_unassign call vsync_end call text_clear call js_end call egc_start call bgm_finish pop bp retf sub_D7EC endp include th04/math/vector1_at.asm include th04/math/vector2_at.asm ; =============== S U B R O U T I N E ======================================= sub_D894 proc far push si push di GRCG_SETMODE_VIA_MOV al, GC_RMW mov ax, 0A800h mov es, ax assume es:nothing mov di, 1400h call sub_DA30 mov di, 19A0h call sub_DA30 mov di, 1F40h call sub_DA30 mov di, 24E0h call sub_DA30 mov di, 2A80h call sub_DA30 mov di, 3020h call sub_DA30 mov ah, GC_RI call grcg_setcolor_direct_noint_1 mov al, 0 mov di, 156Ch call sub_DB0D mov al, 1 mov di, 156Dh call sub_DB0D mov al, 2 mov di, 156Eh call sub_DB0D mov al, 0 mov di, 1B0Ch call sub_DB0D mov al, 1 mov di, 1B0Dh call sub_DB0D mov al, 3 mov di, 1B0Eh call sub_DB0D mov al, 0 mov di, 20ACh call sub_DB0D mov al, 1 mov di, 20ADh call sub_DB0D mov al, 4 mov di, 20AEh call sub_DB0D mov al, 0 mov di, 264Ch call sub_DB0D mov al, 1 mov di, 264Dh call sub_DB0D mov al, 5 mov di, 264Eh call sub_DB0D mov al, 0 mov di, 2BECh call sub_DB0D mov al, 1 mov di, 2BEDh call sub_DB0D mov al, 6 mov di, 2BEEh call sub_DB0D mov al, 7 mov di, 318Ch call sub_DB0D mov al, 7 mov di, 318Dh call sub_DB0D mov al, 8 mov di, 318Eh call sub_DB0D GRCG_OFF_VIA_XOR al push ds mov ah, PMD_GET_WORKAREA_ADDRESS int 60h mov ax, ds pop ds mov word ptr dword_1281A, dx mov word ptr dword_1281A+2, ax pop di pop si retf sub_D894 endp ; =============== S U B R O U T I N E ======================================= sub_D96E proc far push si push di push ds push ds pop fs GRCG_SETMODE_VIA_MOV al, GC_RMW mov ax, 0A800h mov es, ax mov di, 3020h call sub_DA30 lds bx, dword_1281A mov di, 1400h mov si, 0 call sub_D9E2 add bx, 2 mov di, 19A0h mov si, 1 call sub_D9E2 add bx, 2 mov di, 1F40h mov si, 2 call sub_D9E2 add bx, 2 mov di, 24E0h mov si, 3 call sub_D9E2 add bx, 2 mov di, 2A80h mov si, 4 call sub_D9E2 mov ah, GC_RI call grcg_setcolor_direct_noint_1 mov di, 3020h add bx, 4 call sub_DA12 call near ptr sub_DA6B add bx, 2 call sub_DA12 call near ptr sub_DA6B GRCG_OFF_VIA_XOR al pop ds pop di pop si retf sub_D96E endp ; =============== S U B R O U T I N E ======================================= sub_D9E2 proc near call sub_DA12 push ds push fs pop ds cmp al, [si+382Ah] jnz short loc_D9F5 cmp al, [si+3832h] jz short loc_DA10 loc_D9F5: mov ah, [si+382Ah] mov [si+3832h], ah mov [si+382Ah], al call sub_DA30 mov ah, GC_RI call grcg_setcolor_direct_noint_1 mov al, [si+382Ah] call near ptr sub_DA6B loc_DA10: pop ds retn sub_D9E2 endp ; =============== S U B R O U T I N E ======================================= sub_DA12 proc near push bx mov bx, [bx] mov ax, [bx+4] cmp ah, 4 jbe short loc_DA1F mov ah, 4 loc_DA1F: cmp al, ah jbe short loc_DA2C cmp al, 1 jbe short loc_DA2C mov al, [bx+55h] jmp short loc_DA2E ; --------------------------------------------------------------------------- loc_DA2C: mov al, 0FFh loc_DA2E: pop bx retn sub_DA12 endp ; =============== S U B R O U T I N E ======================================= sub_DA30 proc near push di push si mov ah, GC_GI call grcg_setcolor_direct_noint_1 add di, 30h ; '0' mov ax, 0EEEEh mov dl, 0Fh loc_DA3F: mov cx, 0Eh rep stosw add di, 34h ; '4' dec dl jnz short loc_DA3F mov ah, GC_RGI call grcg_setcolor_direct_noint_1 mov si, 9EEh sub di, 4B0h mov dl, 9 loc_DA59: mov cx, 0Eh rep movsw sub si, 1Ch add di, 34h ; '4' dec dl jnz short loc_DA59 pop si pop di retn sub_DA30 endp ; =============== S U B R O U T I N E ======================================= sub_DA6B proc far cmp al, 0FFh jnz short loc_DA70 retn ; --------------------------------------------------------------------------- loc_DA70: push bx push di mov ah, al and ah, 0Fh xor bh, bh mov bl, ah shr al, 4 mov dl, 1Ch mul dl mov dl, cs:[bx+801h] add bx, bx add ax, cs:[bx+7E9h] mov cx, ax shr ax, 3 add di, ax and cl, 7 jmp cs:off_DAD1[bx] loc_DA9D: shr dl, cl mov al, cl mov cx, 9 loc_DAA4: mov es:[di], dl add di, 50h ; 'P' loop loc_DAA4 mov cl, al mov al, 0E0h shr al, cl mov cx, 6 loc_DAB5: mov es:[di], al add di, 50h ; 'P' loop loc_DAB5 jmp short loc_DACE ; --------------------------------------------------------------------------- loc_DABF: xor dh, dh ror dx, cl mov cx, 8 loc_DAC6: mov es:[di], dx add di, 50h ; 'P' loop loc_DAC6 loc_DACE: pop di pop bx retn sub_DA6B endp ; --------------------------------------------------------------------------- off_DAD1 dw offset loc_DA9D dw offset loc_DABF dw offset loc_DA9D dw offset loc_DABF dw offset loc_DA9D dw offset loc_DA9D dw offset loc_DABF dw offset loc_DA9D dw offset loc_DABF dw offset loc_DA9D dw offset loc_DABF dw offset loc_DA9D dw 180h dw 182h dw 184h dw 186h dw 188h dw 18Ch dw 18Eh dw 190h dw 192h dw 194h dw 196h dw 198h dw 0C0C0h dw 0C040h dw 0C060h dw 40C0h dw 40C0h dw 60C0h ; =============== S U B R O U T I N E ======================================= sub_DB0D proc near xor ah, ah shl al, 3 add ax, 0A0Ah mov si, ax mov cx, 8 loc_DB1A: movsb add di, 4Fh ; 'O' loop loc_DB1A retn sub_DB0D endp GRCG_SETCOLOR_DIRECT_NOINT_DEF 1 db 0 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_DB3C proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch push bp mov bp, sp push di push si push ds cld mov ax, [bp+arg_6] mov dx, [bp+arg_4] mov bx, ax sar bx, 4 shl bx, 1 shl dx, 6 add bx, dx shr dx, 2 add bx, dx mov word ptr cs:loc_DBA1+1, bx and ax, 0Fh mov cx, ax add ax, [bp+arg_2] shr ax, 4 or cx, cx jz short loc_DB6F inc ax loc_DB6F: mov word ptr cs:loc_DBA6+1, ax jmp short $+2 mov cx, 28h ; '(' sub cx, ax shl cx, 1 mov ax, [bp+arg_0] mov bp, cx push 0E000h push word_F9CA push 0B800h push word_F9C8 push 0B000h push word_F9C6 push 0A800h push word_F9C4 mov dl, 4 loc_DB9F: mov bx, ax loc_DBA1: mov di, 1234h pop ds assume es:nothing pop es loc_DBA6: mov cx, 1234h mov si, di rep movsw add di, bp dec bx jnz short loc_DBA6 dec dl jnz short loc_DB9F pop ds pop si pop di pop bp retf 8 sub_DB3C endp ; --------------------------------------------------------------------------- nop include th05/snd/load.asm include th05/snd/kajaint.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_DC94 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch push bp mov bp, sp push si push di mov si, [bp+arg_2] mov di, si shl si, 2 les si, [si+0A84h] assume es:nothing imul di, 48h push [bp+arg_6] push [bp+arg_4] mov ax, [di+3866h] push ax shr ax, 1 push ax mov di, [di+3868h] mov ax, [bp+arg_0] call sub_DD10 pop di pop si pop bp retf 8 sub_DC94 endp ; --------------------------------------------------------------------------- push bp mov bp, sp push si push di xor ax, ax xor dx, dx mov si, [bp+0Ah] mov cl, [bp+8] test cl, 1 jz short loc_DCDD mov ax, 0A0h loc_DCDD: test cl, 2 jz short loc_DCE5 mov dx, 0FA0h loc_DCE5: shl si, 2 les si, [si+0A84h] add si, ax mov ax, es add ax, dx mov es, ax assume es:nothing mov di, 0C8h ; 'ネ' push word ptr [bp+0Eh] push word ptr [bp+0Ch] push 140h push 140h mov ax, [bp+6] call sub_DD10 pop di pop si pop bp retf 0Ah ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_DD10 proc near arg_0 = word ptr 2 arg_2 = word ptr 4 arg_4 = word ptr 6 arg_6 = word ptr 8 shl ax, 3 add ax, 0A64h mov word_1282C, ax mov bp, sp mov dx, [bp+arg_6] shr dx, 3 mov ax, [bp+arg_4] shl ax, 6 add dx, ax shr ax, 2 add dx, ax mov word_12830, dx mov word_1282E, 0 loc_DD38: push es call graph_pack_put_8_noclip pascal, 0, 400, es, si, [bp+arg_2] push ds push di push si mov di, word_12830 add word_12830, 50h ; 'P' cmp word_12830, 7D00h jb short loc_DD62 sub word_12830, 7D00h loc_DD62: call sub_DD97 mov ax, GRAM_400 mov es, ax assume es:nothing mov ds, ax assume ds:nothing mov si, 7D00h mov cx, [bp+arg_2] shr cx, 4 rep movsw call egc_off pop si pop di pop ds assume ds:_DATA pop es assume es:nothing add si, [bp+arg_0] mov ax, si shr ax, 4 mov dx, es add dx, ax mov es, dx and si, 0Fh dec di jnz short loc_DD38 retn 8 sub_DD10 endp ; =============== S U B R O U T I N E ======================================= sub_DD97 proc near call egc_on outw2 EGC_ACTIVEPLANEREG, 0FFF0h egc_selectpat egc_setrop EGC_COMPAREREAD or EGC_WS_PATREG or EGC_RL_MEMREAD outw2 EGC_ADDRRESSREG, 0 outw2 EGC_BITLENGTHREG, 0Fh mov bx, word_1282C mov ax, word_1282E and ax, 3 shl ax, 1 add bx, ax outw2 EGC_MASKREG, [bx] inc word_1282E retn sub_DD97 endp include th05/formats/pi_slot_load.asm include th05/formats/pi_slot_put.asm include th05/formats/pi_slot_palette_apply.asm include th05/formats/pi_slot_free.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_DF12 proc far arg_0 = dword ptr 6 push bp mov bp, sp push word_F9CC call mem_assign_dos or ax, ax jz short loc_DF27 mov ax, 1 pop bp retf ; --------------------------------------------------------------------------- loc_DF27: call graph_start graph_accesspage 1 call graph_clear graph_accesspage 0 call graph_clear graph_accesspage 0 graph_showpage al mov bbufsiz, 2000h call vsync_start call key_beep_off call text_systemline_hide call text_cursor_hide call egc_start call js_start les bx, [bp+arg_0] assume es:nothing cmp byte ptr es:[bx], 0 jz short loc_DF82 push word ptr [bp+arg_0+2] push bx call pfstart loc_DF82: push 400h call bgm_init xor ax, ax pop bp retf sub_DF12 endp include th04/hardware/input_sense.asm include th05/hardware/input_held.asm include th05/hardware/input_wait.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E0CE proc far push bp mov bp, sp cmp _snd_bgm_mode, SND_BGM_OFF jnz short loc_E0DD mov ax, 0FFFFh pop bp retf ; --------------------------------------------------------------------------- loc_E0DD: mov ah, KAJA_GET_SONG_MEASURE cmp _snd_bgm_mode, SND_BGM_MIDI jz short loc_E0EA 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_E0EF ; --------------------------------------------------------------------------- loc_E0EA: mov dx, 0C0h int 61h ; reserved for user interrupt loc_E0EF: pop bp retf sub_E0CE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E0F1 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 push bp mov bp, sp push si loc_E0F5: call sub_E0CE mov si, ax or si, si jge short loc_E109 push [bp+arg_0] nopcall frame_delay jmp short loc_E10E ; --------------------------------------------------------------------------- loc_E109: cmp si, [bp+arg_2] jl short loc_E0F5 loc_E10E: pop si pop bp retf 4 sub_E0F1 endp ; --------------------------------------------------------------------------- db 0 include th04/formats/cdg_put_nocolors.asm include th05/hardware/frame_delay.asm db 0 include th04/formats/cdg_load.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E2D8 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch push bp mov bp, sp push di call sub_E354 outw EGC_MODE_ROP_REG, EGC_COMPAREREAD or EGC_WS_ROP or EGC_RL_MEMREAD or 0F0h mov ax, [bp+arg_6] mov dx, [bp+arg_4] mov bx, ax sar bx, 4 shl bx, 1 shl dx, 6 add bx, dx shr dx, 2 add bx, dx mov di, bx and ax, 0Fh mov cx, ax add ax, [bp+arg_2] shr ax, 4 or cx, cx jz short loc_E30F inc ax loc_E30F: mov word_12EFE, ax mov cx, 28h ; '(' sub cx, ax shl cx, 1 mov bx, [bp+arg_0] mov bp, cx mov ax, GRAM_400 mov es, ax assume es:nothing loc_E323: mov cx, word_12EFE loc_E327: or di, di js short loc_E33F cmp di, 7D00h jnb short loc_E33F mov al, 1 out 0A6h, al mov dx, es:[di] xor ax, ax out 0A6h, al mov es:[di], dx loc_E33F: add di, 2 loop loc_E327 add di, bp dec bx jns short loc_E323 call egc_off pop di pop bp retf 8 sub_E2D8 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= sub_E354 proc near push es push 0 pop es pushf cli GRCG_SETMODE_VIA_MOV al, GC_TDW mov es:[495h], al popf pop es assume es:nothing mov al, 7 out 6Ah, al ; PC-98 GDC (6a): ; mov al, 5 out 6Ah, al ; PC-98 GDC (6a): ; mov al, 6 out 6Ah, al ; PC-98 GDC (6a): ; outw EGC_ACTIVEPLANEREG, 0FFF0h outw EGC_READPLANEREG, 0FFh outw EGC_MASKREG, 0FFFFh mov dx, EGC_ADDRRESSREG sub ax, ax out dx, ax outw EGC_BITLENGTHREG, 0Fh retn sub_E354 endp align 2 op_02_TEXT ends .data db 0 byte_F071 db 0 byte_F072 db 0 byte_F073 db 1 MENU_DESC dd aMENU_START ; "ゲームを開始します" dd aMENU_START_EXTRA ; "エキストラステージを開始します" dd aMENU_HISCORE ; "現在のハイスコアを表\示します" dd aMENU_MUSICROOM ; "音楽室に入ります" dd aMENU_OPTION ; "各種設定を変更出来ます" dd aMENU_QUIT ; "DOSに戻ります" dd aMENU_EASY ; "難易度をやさしくします  (初心者向"... dd aMENU_NORMAL ; "難易度を標準にします    (一般向・... dd aMENU_HARD ; "難易度を難しくします   (アーケーダ・... dd aMENU_LUNATIC ; "難易度を非常に難しくします (シュータ・... dd aMENU_LIVES ; "ゲームスタート時の人数を変更出来ます(・... dd aMENU_BOMBS ; "ボムの使用回数を変更出来ます(除くエキ・... dd aMENU_BGM_OFF ; "BGMは流れません" dd aMENU_BGM_26K ; "BGMに26K音源互換を使用します" dd aMENU_BGM_86K ; "BGMに86音源互換を使用します" dd aMENU_SFX_OFF ; "効果音は流れません" dd aMENU_SFX_FM ; "効果音にFM音源を使用します" dd aMENU_SFX_BEEP ; "効果音にBeep音源を使用します" dd aMENU_SLOW ; "敵弾の多い場所で、わざと処理落ち(スロ・... dd aMENU_TURBO ; "処理落ちをマシンのスピードに任せます(・... dd aMENU_RESET ; "このオプションを全て標準に戻します" dd aMENU_OPTION_QUIT ; "オプションを終了します" dd aMENU_START_EASY ; "ゲームを開始します(イージー)" dd aMENU_START_NORMAL ; "ゲームを開始します(ノーマル)" dd aMENU_START_HARD ; "ゲームを開始します(ハード)" dd aMENU_START_LUNATIC ; "ゲームを開始します(ルナティック)" byte_F0DC db 0 byte_F0DD db 0 ; char aMain[] aMain db 'main',0 ; char path[] path db 'deb',0 aMENU_START db 'ゲームを開始します',0 aMENU_START_EXTRA db 'エキストラステージを開始します',0 aMENU_HISCORE db '現在のハイスコアを表示します',0 aMENU_MUSICROOM db '音楽室に入ります',0 aMENU_OPTION db '各種設定を変更出来ます',0 aMENU_QUIT db 'DOSに戻ります',0 aMENU_EASY db '難易度をやさしくします  (初心者向け)  ',0 aMENU_NORMAL db '難易度を標準にします    (一般向け)  ',0 aMENU_HARD db '難易度を難しくします   (アーケーダー向け)',0 aMENU_LUNATIC db '難易度を非常に難しくします (シューター向け)',0 aMENU_LIVES db 'ゲームスタート時の人数を変更出来ます(除くエキストラ)',0 aMENU_BOMBS db 'ボムの使用回数を変更出来ます(除くエキストラ)',0 aMENU_BGM_OFF db 'BGMは流れません',0 aMENU_BGM_26K db 'BGMに26K音源互換を使用します',0 aMENU_BGM_86K db 'BGMに86音源互換を使用します',0 aMENU_SFX_OFF db '効果音は流れません',0 aMENU_SFX_FM db '効果音にFM音源を使用します',0 aMENU_SFX_BEEP db '効果音にBeep音源を使用します',0 aMENU_SLOW db '敵弾の多い場所で、わざと処理落ち(スロー)させます(初心者用)',0 aMENU_TURBO db '処理落ちをマシンのスピードに任せます(標準)',0 aMENU_RESET db 'このオプションを全て標準に戻します',0 aMENU_OPTION_QUIT db 'オプションを終了します',0 aMENU_START_EASY db 'ゲームを開始します(イージー)',0 aMENU_START_NORMAL db 'ゲームを開始します(ノーマル)',0 aMENU_START_HARD db 'ゲームを開始します(ハード)',0 aMENU_START_LUNATIC db 'ゲームを開始します(ルナティック)',0 aOp1_pi db 'op1.pi',0 aMiko db 'miko',0 aOp db 'op',0 aKaikidan1_dat0 db '怪綺談1.dat',0 aNotEnoughMem db 0Ah db '空きメモリ不足です。メモリ空きを増やしてから実行してね',0Ah,0 db 0 include libs/master.lib/atrtcmod[data].asm 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/get_machine_98[data].asm include libs/master.lib/get_machine_at[data].asm include libs/master.lib/grp[data].asm include libs/master.lib/js[data].asm include libs/master.lib/machine[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/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 libs/master.lib/respal_exist[data].asm include libs/master.lib/draw_trapezoid[data].asm include libs/master.lib/bgm_timerhook[data].asm include libs/master.lib/bgm[data].asm include th04/snd/se_priority[data].asm db 71h ; q db 0 db 6Bh ; k db 0 db 78h ; x db 0 db 72h ; r db 0 db 89h db 0 db 1Fh db 0 db 19h db 0 db 26h ; & db 0 db 20h db 0 db 37h ; 7 db 0 db 0BEh ; セ db 9 db 0C6h ; ニ db 9 db 0CEh db 9 db 0D6h db 9 db 88h db 88h db 0 db 0 db 22h ; " db 22h ; " db 0 db 0 db 88h db 88h db 44h ; D db 44h ; D db 22h ; " db 22h ; " db 11h db 11h db 0AAh ; ェ db 0AAh ; ェ db 44h ; D db 44h ; D db 0AAh ; ェ db 0AAh ; ェ db 11h db 11h db 0AAh ; ェ db 0AAh ; ェ db 55h ; U db 55h ; U db 0AAh ; ェ db 0AAh ; ェ db 55h ; U db 55h ; U word_F9BE dw 2 word_F9C0 dw 10h include th03/snd/se_state[data].asm word_F9C4 dw 0 word_F9C6 dw 0 word_F9C8 dw 0 word_F9CA dw 0 word_F9CC dw 4E20h db 3Bh ; ; db 83h db 0BBh ; サ db 83h db 0B8h ; ク db 3Bh ; ; db 0B8h ; ク db 3Bh ; ; db 83h db 0BBh ; サ db 83h db 0B8h ; ク db 3Bh ; ; db 0B8h ; ク db 3Bh ; ; db 83h db 0BBh ; サ db 83h db 0B8h ; ク db 3Bh ; ; db 0B8h ; ク db 3Bh ; ; db 83h db 0BBh ; サ db 83h db 0B8h ; ク db 3Bh ; ; db 0B8h ; ク db 3Fh ; ? db 60h db 0C0h ; タ db 0FEh db 80h db 80h unk_F9F0 db 0C0h ; タ db 40h db 66h db 0A9h db 99h db 81h db 81h db 81h db 0C3h db 42h db 3Ch db 4 db 4 db 4 db 4 db 4 db 0Ch db 8 db 3Ch ; < db 42h ; B db 81h db 1 db 6 db 18h db 61h ; a db 7Eh ; ~ db 3Ch ; < db 42h ; B db 1 db 0Eh db 1 db 0C1h db 42h ; B db 7Ch ; | db 0Ch db 12h db 22h ; " db 42h ; B db 42h ; B db 7Fh db 2 db 2 db 3Eh ; > db 40h db 80h db 0BCh ; シ db 42h ; B db 1 db 82h db 7Ch ; | db 7Eh ; ~ db 0C1h db 80h db 70h ; p db 0Eh db 1 db 83h db 7Eh ; ~ db 3Eh ; > db 63h ; c db 0C0h ; タ db 80h db 86h db 0C1h db 63h ; c db 3Ch ; < include th05/snd/load[data].asm include th04/snd/snd[data].asm db 0 db 0 db 11h db 11h db 0 db 0 db 44h ; D db 44h ; D db 88h db 88h db 11h db 11h db 22h ; " db 22h ; " db 44h ; D db 44h ; D db 0AAh ; ェ db 0AAh ; ェ db 55h ; U db 55h ; U db 0AAh ; ェ db 0AAh ; ェ db 55h ; U db 55h ; U db 0EEh db 0EEh db 77h ; w db 77h ; w db 0BBh ; サ db 0BBh ; サ db 0DDh db 0DDh include th05/formats/pi_slot_buffers[bss].asm include th05/hardware/vram_planes[data].asm include th03/formats/cdg[data].asm SETUP_BGM_BODY dd aSETUP_BGM_BODY1 dd aSETUP_BGM_BODY2 dd aSETUP_BGM_BODY3 dd aSETUP_BGM_BODY4 dd aSETUP_BGM_BODY5 dd aSETUP_BGM_BODY6 dd aSETUP_BGM_BODY7 dd aSETUP_BGM_BODY8 dd aSETUP_TAIL SETUP_SFX_BODY dd aSETUP_SFX_BODY1 dd aSETUP_SFX_BODY2 dd aSETUP_SFX_BODY3 dd aSETUP_SFX_BODY4 dd aSETUP_SFX_BODY5 dd aSETUP_SFX_BODY6 dd aSETUP_SFX_BODY7 dd aSETUP_SFX_BODY8 dd aSETUP_TAIL aSETUP_BGM_BODY1 db 'ステレオFM音源:PC-9801-86(互換)ボード   ',0 aSETUP_BGM_BODY2 db '         CanBe内蔵音源など、 ',0 aSETUP_BGM_BODY3 db '       FM6音+SSG3音+リズム音源',0 aSETUP_BGM_BODY4 db ' 標準FM音源: PC-9801-26K(互換)ボード ',0 aSETUP_BGM_BODY5 db ' PC-9801DA等に内蔵の音源など ',0 aSETUP_BGM_BODY6 db '         FM3音+SSG3音 ',0 aSETUP_BGM_BODY7 db '  音楽無し:  FM音源が無い場合 ',0 aSETUP_BGM_BODY8 db ' ',0 aSETUP_TAIL db 'なお、これらの設定はOptionで変更可能です',0 aSETUP_SFX_BODY1 db ' FM音源 :効果音にFM音源を使用します  ',0 aSETUP_SFX_BODY2 db '       BGMがステレオFM音源時推奨 ',0 aSETUP_SFX_BODY3 db '      (標準FM音源では、3chを使用します ',0 aSETUP_SFX_BODY4 db '       ので、BGMが正常にきけないかも)',0 aSETUP_SFX_BODY5 db 'Beep音源:効果音にBeep音源を使用します',0 aSETUP_SFX_BODY6 db ' FM音源が無い場合使用します  ',0 aSETUP_SFX_BODY7 db ' 効果音無し :何らかの事情で効果音を鳴らしたく',0 aSETUP_SFX_BODY8 db '       無い場合 ',0 aSETUP_BGM_OPTION1 db 'ステレオFM音源',0 aSETUP_BGM_OPTION2 db ' 標準FM音源 ',0 aSETUP_BGM_OPTION3 db '  音楽無し  ',0 aSETUP_SFX_OPTION1 db '  FM音源  ',0 aSETUP_SFX_OPTION2 db ' Beep音源 ',0 aSETUP_SFX_OPTION3 db '  効果音無し  ',0 aSETUP_BGM_HEAD db '     使用する音源を選択して下さいね☆',0 aSETUP_SFX_HEAD db '    効果音に使用する音源を選択してね☆',0 aMswin_bft db 'mswin.bft',0 aMs_pi db 'ms.pi',0 db 0 aZun00_pi db 'zun00.pi',0 aLogo db 'logo',0 aZun02_bft db 'zun02.bft',0 aZun04_bft db 'zun04.bft',0 aZun01_bft db 'zun01.bft',0 aZun03_bft db 'zun03.bft',0 unk_FF00 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 aMiko_cfg db 'MIKO.CFG',0 db 0 aSft1_cd2 db 'sft1.cd2',0 aSft2_cd2 db 'sft2.cd2',0 aCar_cd2 db 'car.cd2',0 aSl00_cdg db 'sl00.cdg',0 aSl01_cdg db 'sl01.cdg',0 aSl02_cdg db 'sl02.cdg',0 aSl03_cdg db 'sl03.cdg',0 aSlcl_cdg db 'slcl.cdg',0 aSl04_cdg db 'sl04.cdg',0 aOp2a_pi db 'op2a.pi',0 aOp2b_pi db 'op2b.pi',0 aOp2c_pi db 'op2c.pi',0 aOp2d_pi db 'op2d.pi',0 aOp2e_pi db 'op2e.pi',0 aOp2f_pi db 'op2f.pi',0 aOp2g_pi db 'op2g.pi',0 aOp2h_pi db 'op2h.pi',0 aOp_0 db 'op',0 aOp1_pi_0 db 'op1.pi',0 MUSICROOM_UP dd aMUSICROOM_UP ; " ------ ▲ ------ " MUSICROOM_DOWN dd aMUSICROOM_DOWN ; " ------ ▼ ------ " dd asc_104D5 ; " ---------------- " MUSICROOM_GAME dd aMUSICROOM_TH01 dd aMUSICROOM_TH02 dd aMUSICROOM_TH03 dd aMUSICROOM_TH04 dd aMUSICROOM_TH05 dd aTH01_01 ; "No.1 A Sacred Lot " dd aTH01_02 ; "No.2 永遠の巫女 " dd aTH01_03 ; "No.3 The Positive and Negative " dd aTH01_04 ; "No.4 Highly Responsive to Prayers " dd aTH01_05 dd aTH01_06 ; "No.6 天使伝説 " dd aTH01_07 ; "No.7 Oriental Magician " dd aTH01_08 ; "No.8 破邪の小太刀 " dd aTH01_09 ; "No.9 魔鏡 " dd aTH01_10 ; "No.10 the Legend of KAGE " dd aTH01_11 ; "No.11 いざ、倒れ逝くその時まで " dd aTH01_12 ; "No.12 Civilization of Magic " dd aTH01_13 ; "No.13 星幽天使 " dd aTH01_14 ; "No.14 アイリス " dd aMUSICROOM_QUIT1 ; " タイトルに戻る " dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd aTH02_01 dd aTH02_02 ; "No.2   博麗 〜Eastern Wind " dd aTH02_03 ; "No.3   She's in a temper!! " dd aTH02_04 ; "No.4   End of Daylight  " dd aTH02_05 ; "No.5     やみのちから   " dd aTH02_06 ; "No.6      幻夢界     " dd aTH02_07 dd aTH02_08 ; "No.8 ひもろぎ、むらさきにもえ " dd aTH02_09 dd aTH02_10 dd aTH02_11 ; "No.11 Complete Darkness " dd aTH02_12 ; "No.12   エキストララブ " dd aTH02_13 ; "No.13 戦車むすめのみるゆめ " dd aTH02_14 ; "No.14   遠野の森    " dd aTH02_15 dd aTH02_16 ; "未使用.1 博麗神社境内 " dd aTH02_17 ; "未使用.2  陽落ちて   " dd aTH02_18 ; "未使用.3  封魔終演   " dd aMUSICROOM_QUIT1 ; " タイトルに戻る " dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd aTH03_01 dd aTH03_02 ; "No.2     Selection " dd aTH03_03 dd aTH03_04 ; "No.4 Reincarnation " dd aTH03_05 ; "No.5 Dim. Dream " dd aTH03_06 dd aTH03_07 ; "No.7   Maniacal Princess " dd aTH03_08 ; "No.8 夢消失 〜Lost Dream " dd aTH03_09 ; "No.9 夢幻遊戯 〜Dream War " dd aTH03_10 ; "No.10 魔法決戦!〜Fight it out! " dd aTH03_11 ; "No.11   Sailor of Time " dd aTH03_12 ; "No.12 Strawberry Crisis!! " dd aTH03_13 dd aTH03_14 ; "No.14  魔法鐘愛 " dd aTH03_15 ; "No.15  久遠の夢 " dd aTH03_16 dd aTH03_17 ; "No.17 永遠の満月 " dd aTH03_18 ; "No.18 Maple Dream... " dd aTH03_19 dd aTH03_20 ; "No.20 勝利デモ " dd aTH03_21 ; "No.21 ゲームオーバー " dd aTH03_22 ; "未使用.1 時の風 " dd aTH03_23 ; "未使用.2 スターボウドリーム " dd aTH03_24 ; "未使用.3 Phantasmagoria " dd aMUSICROOM_QUIT2 ; " タイトルに戻る " dd 0 dd 0 dd 0 dd 0 dd 0 dd aTH04_01 ; "No.1 幻想郷 〜 Lotus Land Story " dd aTH04_02 ; "No.2 Witching Dream " dd aTH04_03 ; "No.3 Selene's light " dd aTH04_04 dd aTH04_05 ; "No.5 Break the Sabbath " dd aTH04_06 ; "No.6 紅響曲 〜 Scarlet Phoneme " dd aTH04_07 ; "No.7 Bad Apple!! " dd aTH04_08 ; "No.8 霊戦 〜 Perdition crisis " dd aTH04_09 ; "No.9 アリスマエステラ " dd aTH04_10 ; "No.10 少女綺想曲 〜 Capriccio " dd aTH04_11 ; "No.11 星の器 〜 Casket of Star " dd aTH04_12 ; "No.12 Lotus Love " dd aTH04_13 ; "No.13 眠れる恐怖 〜Sleeping Terror " dd aTH04_14 ; "No.14 Dream Land " dd aTH04_15 ; "No.15 幽夢 〜 Inanimate Dream " dd aTH04_16 dd aTH04_17 ; "No.17 メイド幻想 〜 Icemilk Magic " dd aTH04_18 ; "No.18 かわいい悪魔 〜 Innocence " dd aTH04_19 ; "No.19 Days " dd aTH04_20 ; "No.20 Peaceful " dd aTH04_21 ; "No.21 Arcadian Dream " dd aTH04_22 ; "No.22 幻想の住人 " dd aTH04_23 ; "未使用.1 Lotus Road " dd aTH04_24 ; "未使用.2 Dreamy pilot " dd aTH04_25 ; "未使用.3 Incomplete Plot " dd aTH04_26 ; "未使用.4 Border Land " dd aTH04_27 ; "未使用.5 Magic Shop of Raspberry " dd aTH04_28 ; "未使用.6 Crescent Dream " dd aMUSICROOM_QUIT1 ; " タイトルに戻る " dd 0 dd aTH05_01 dd aTH05_02 ; "No.2 Dream Express " dd aTH05_03 ; "No.3 魔法陣 〜 Magic Square " dd aTH05_04 dd aTH05_05 ; "No.5 霊天 〜 Spiritual Heaven " dd aTH05_06 ; "No.6 Romantic Children " dd aTH05_07 ; "No.7 プラスチックマインド " dd aTH05_08 ; "No.8 メイプルワイズ " dd aTH05_09 ; "No.9 禁断の魔法 〜 Forbidden Magic" dd aTH05_10 ; "No.10 真紅の少女 〜 Crimson Dead!!" dd aTH05_11 ; "No.11 裏切りの少女 〜 Judas Kiss " dd aTH05_12 ; "No.12 the Last Judgement " dd aTH05_13 ; "No.13 悲しき人形 〜 Doll of Misery" dd aTH05_14 ; "No.14 世界の果て 〜 World's End " dd aTH05_15 ; "No.15 神話幻想 〜 Infinite Being " dd aTH05_16 ; "No.16 不思議の国のアリス " dd aTH05_17 ; "No.17 the Grimoire of Alice " dd aTH05_18 ; "No.18 神社 " dd aTH05_19 ; "No.19 Endless " dd aTH05_20 ; "No.20 久遠の楽園 " dd aTH05_21 ; "No.21 Mystic Dream " dd aTH05_22 ; "No.22 Peaceful Romancer " dd aTH05_23 ; "No.23 魂の休らむ所 " dd aMUSICROOM_QUIT1 ; " タイトルに戻る " dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd aR_00 ; "r_00" dd aR_01 ; "r_01" dd aR_02 ; "r_02" dd aR_03 ; "r_03" dd aR_04 ; "r_04" dd aR_05 ; "r_05" dd aR_06 ; "r_06" dd aR_07 ; "r_07" dd aR_08 ; "r_08" dd aR_09 ; "r_09" dd aR_10 ; "r_10" dd aR_11 ; "r_11" dd aR_12 ; "r_12" dd aR_13 ; "r_13" dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd aH_op ; "h_op" dd aH_st00 ; "h_st00" dd aH_st00b ; "h_st00b" dd aH_st01 ; "h_st01" dd aH_st01b ; "h_st01b" dd aH_st02 ; "h_st02" dd aH_st02b ; "h_st02b" dd aH_st03 ; "h_st03" dd aH_st03b ; "h_st03b" dd aH_st04 ; "h_st04" dd aH_st04b ; "h_st04b" dd aH_st05 ; "h_st05" dd aH_st05b ; "h_st05b" dd aH_end ; "h_end" dd aH_staff ; "h_staff" dd aH_ng00 ; "h_ng00" dd aH_ng01 ; "h_ng01" dd aH_ng02 ; "h_ng02" dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd aY_op ; "y_op" dd aY_select ; "y_select" dd aY_00mm ; "y_00mm" dd aY_01mm ; "y_01mm" dd aY_02mm ; "y_02mm" dd aY_03mm ; "y_03mm" dd aY_04mm ; "y_04mm" dd aY_05mm ; "y_05mm" dd aY_06mm ; "y_06mm" dd aY_dec ; "y_dec" dd aY_07mm ; "y_07mm" dd aY_08mm ; "y_08mm" dd aY_demo1 ; "y_demo1" dd aY_demo2 ; "y_demo2" dd aY_demo3 ; "y_demo3" dd aY_demo4 ; "y_demo4" dd aY_demo5 ; "y_demo5" dd aY_ed ; "y_ed" dd aY_score ; "y_score" dd aY_win ; "y_win" dd aY_over ; "y_over" dd aY_ng00 ; "y_ng00" dd aY_ng01 ; "y_ng01" dd aY_ng02 ; "y_ng02" dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd aG_op ; "g_op" dd aG_st00 ; "g_st00" dd aG_st10 ; "g_st10" dd aG_st00b ; "g_st00b" dd aG_st01 ; "g_st01" dd aG_st01b ; "g_st01b" dd aG_st02 ; "g_st02" dd aG_st02b ; "g_st02b" dd aG_st03 ; "g_st03" dd aG_st03c ; "g_st03c" dd aG_st03b ; "g_st03b" dd aG_st04 ; "g_st04" dd aG_st04b ; "g_st04b" dd aG_st05 ; "g_st05" dd aG_st05b ; "g_st05b" dd aG_st06 ; "g_st06" dd aG_st06b ; "g_st06b" dd aG_st06c ; "g_st06c" dd aG_end1 ; "g_end1" dd aG_end2 ; "g_end2" dd aG_staff ; "g_staff" dd aG_name ; "g_name" dd aG_ng00 ; "g_ng00" dd aG_ng01 ; "g_ng01" dd aG_ng02 ; "g_ng02" dd aG_ng03 ; "g_ng03" dd aG_ng04 ; "g_ng04" dd aG_ng05 ; "g_ng05" dd 0 dd 0 dd aH_op+2 dd aH_st00+2 dd aH_st00b+2 dd aH_st01+2 dd aH_st01b+2 dd aH_st02+2 dd aH_st02b+2 dd aH_st03+2 dd aH_st03b+2 dd aG_st03c+2 dd aSt03d ; "st03d" dd aH_st04+2 dd aH_st04b+2 dd aH_st05+2 dd aH_st05b+2 dd aG_st06+2 dd aG_st06b+2 dd aEd00 ; "ed00" dd aEd01 ; "ed01" dd aEd02 ; "ed02" dd aH_staff+2 dd aExed ; "exed" dd aG_name+2 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 dd 0 music_game dw 4 MUSICROOM_TRACKCOUNTS dw 14,18,24,28,23 include th02/music/polygons[data].asm aMUSICROOM_UP db ' ------ ▲ ------ ',0 aMUSICROOM_DOWN db ' ------ ▼ ------ ',0 asc_104D5 db ' ---------------- ',0 aMUSICROOM_TH01 db ' 第1弾 東方靈異伝 Arrange ver ',0 aMUSICROOM_TH02 db ' 第2弾 東方封魔録 Special MIX ',0 aMUSICROOM_TH03 db ' 第3弾 東方夢時空 Special MIX ',0 aMUSICROOM_TH04 db ' 第4弾 東方幻想郷 Special MIX ',0 aMUSICROOM_TH05 db ' 第5弾 東方怪綺談 MysticSquare ',0 aTH01_01 db 'No.1 A Sacred Lot ',0 aTH01_02 db 'No.2 永遠の巫女 ',0 aTH01_03 db 'No.3 The Positive and Negative ',0 aTH01_04 db 'No.4 Highly Responsive to Prayers ',0 aTH01_05 db 'No.5 東方怪奇談 ',0 aTH01_06 db 'No.6 天使伝説 ',0 aTH01_07 db 'No.7 Oriental Magician ',0 aTH01_08 db 'No.8 破邪の小太刀 ',0 aTH01_09 db 'No.9 魔鏡 ',0 aTH01_10 db 'No.10 the Legend of KAGE ',0 aTH01_11 db 'No.11 いざ、倒れ逝くその時まで ',0 aTH01_12 db 'No.12 Civilization of Magic ',0 aTH01_13 db 'No.13 星幽天使 ',0 aTH01_14 db 'No.14 アイリス ',0 aMUSICROOM_QUIT1 db ' タイトルに戻る ',0 aTH02_01 db 'No.1 東方封魔録 〜浄土曼荼羅 ',0 aTH02_02 db 'No.2   博麗 〜Eastern Wind ',0 aTH02_03 db 'No.3   She',27h,'s in a temper!! ',0 aTH02_04 db 'No.4   End of Daylight  ',0 aTH02_05 db 'No.5     やみのちから   ',0 aTH02_06 db 'No.6      幻夢界     ',0 aTH02_07 db 'No.7     死を賭して    ',0 aTH02_08 db 'No.8 ひもろぎ、むらさきにもえ ',0 aTH02_09 db 'No.9     恋色マジック   ',0 aTH02_10 db 'No.10  東方封魔録 〜幽幻乱舞 ',0 aTH02_11 db 'No.11 Complete Darkness ',0 aTH02_12 db 'No.12   エキストララブ ',0 aTH02_13 db 'No.13 戦車むすめのみるゆめ ',0 aTH02_14 db 'No.14   遠野の森    ',0 aTH02_15 db 'No.15 昔話わんだーらんど ',0 aTH02_16 db '未使用.1 博麗神社境内 ',0 aTH02_17 db '未使用.2  陽落ちて   ',0 aTH02_18 db '未使用.3  封魔終演   ',0 aTH03_01 db 'No.1  夢は時空を越えて ',0 aTH03_02 db 'No.2     Selection ',0 aTH03_03 db 'No.3 東方妖恋談 ',0 aTH03_04 db 'No.4 Reincarnation ',0 aTH03_05 db 'No.5 Dim. Dream ',0 aTH03_06 db 'No.6 Tabula rasa 〜空白少女 ',0 aTH03_07 db 'No.7   Maniacal Princess ',0 aTH03_08 db 'No.8 夢消失 〜Lost Dream ',0 aTH03_09 db 'No.9 夢幻遊戯 〜Dream War ',0 aTH03_10 db 'No.10 魔法決戦!〜Fight it out! ',0 aTH03_11 db 'No.11   Sailor of Time ',0 aTH03_12 db 'No.12 Strawberry Crisis!! ',0 aTH03_13 db 'No.13 非統一魔法世界論 ',0 aTH03_14 db 'No.14  魔法鐘愛 ',0 aTH03_15 db 'No.15  久遠の夢 ',0 aTH03_16 db 'No.16 東方の青い空 ',0 aTH03_17 db 'No.17 永遠の満月 ',0 aTH03_18 db 'No.18 Maple Dream... ',0 aTH03_19 db 'No.19 霊人の休日 ',0 aTH03_20 db 'No.20 勝利デモ ',0 aTH03_21 db 'No.21 ゲームオーバー ',0 aTH03_22 db '未使用.1 時の風 ',0 aTH03_23 db '未使用.2 スターボウドリーム ',0 aTH03_24 db '未使用.3 Phantasmagoria ',0 aMUSICROOM_QUIT2 db ' タイトルに戻る ',0 aTH04_01 db 'No.1 幻想郷 〜 Lotus Land Story ',0 aTH04_02 db 'No.2 Witching Dream ',0 aTH04_03 db 'No.3 Selene',27h,'s light ',0 aTH04_04 db 'No.4 装飾戦 〜 Decoration Battle ',0 aTH04_05 db 'No.5 Break the Sabbath ',0 aTH04_06 db 'No.6 紅響曲 〜 Scarlet Phoneme ',0 aTH04_07 db 'No.7 Bad Apple!! ',0 aTH04_08 db 'No.8 霊戦 〜 Perdition crisis ',0 aTH04_09 db 'No.9 アリスマエステラ ',0 aTH04_10 db 'No.10 少女綺想曲 〜 Capriccio ',0 aTH04_11 db 'No.11 星の器 〜 Casket of Star ',0 aTH04_12 db 'No.12 Lotus Love ',0 aTH04_13 db 'No.13 眠れる恐怖 〜Sleeping Terror ',0 aTH04_14 db 'No.14 Dream Land ',0 aTH04_15 db 'No.15 幽夢 〜 Inanimate Dream ',0 aTH04_16 db 'No.16 禁じざるをえない遊戯 ',0 aTH04_17 db 'No.17 メイド幻想 〜 Icemilk Magic ',0 aTH04_18 db 'No.18 かわいい悪魔 〜 Innocence ',0 aTH04_19 db 'No.19 Days ',0 aTH04_20 db 'No.20 Peaceful ',0 aTH04_21 db 'No.21 Arcadian Dream ',0 aTH04_22 db 'No.22 幻想の住人 ',0 aTH04_23 db '未使用.1 Lotus Road ',0 aTH04_24 db '未使用.2 Dreamy pilot ',0 aTH04_25 db '未使用.3 Incomplete Plot ',0 aTH04_26 db '未使用.4 Border Land ',0 aTH04_27 db '未使用.5 Magic Shop of Raspberry ',0 aTH04_28 db '未使用.6 Crescent Dream ',0 aTH05_01 db 'No.1 怪綺談 〜 Mystic Square ',0 aTH05_02 db 'No.2 Dream Express ',0 aTH05_03 db 'No.3 魔法陣 〜 Magic Square ',0 aTH05_04 db 'No.4 夢想時空 ',0 aTH05_05 db 'No.5 霊天 〜 Spiritual Heaven ',0 aTH05_06 db 'No.6 Romantic Children ',0 aTH05_07 db 'No.7 プラスチックマインド ',0 aTH05_08 db 'No.8 メイプルワイズ ',0 aTH05_09 db 'No.9 禁断の魔法 〜 Forbidden Magic',0 aTH05_10 db 'No.10 真紅の少女 〜 Crimson Dead!!',0 aTH05_11 db 'No.11 裏切りの少女 〜 Judas Kiss ',0 aTH05_12 db 'No.12 the Last Judgement ',0 aTH05_13 db 'No.13 悲しき人形 〜 Doll of Misery',0 aTH05_14 db 'No.14 世界の果て 〜 World',27h,'s End ',0 aTH05_15 db 'No.15 神話幻想 〜 Infinite Being ',0 aTH05_16 db 'No.16 不思議の国のアリス ',0 aTH05_17 db 'No.17 the Grimoire of Alice ',0 aTH05_18 db 'No.18 神社 ',0 aTH05_19 db 'No.19 Endless ',0 aTH05_20 db 'No.20 久遠の楽園 ',0 aTH05_21 db 'No.21 Mystic Dream ',0 aTH05_22 db 'No.22 Peaceful Romancer ',0 aTH05_23 db 'No.23 魂の休らむ所 ',0 aR_00 db 'r_00',0 aR_01 db 'r_01',0 aR_02 db 'r_02',0 aR_03 db 'r_03',0 aR_04 db 'r_04',0 aR_05 db 'r_05',0 aR_06 db 'r_06',0 aR_07 db 'r_07',0 aR_08 db 'r_08',0 aR_09 db 'r_09',0 aR_10 db 'r_10',0 aR_11 db 'r_11',0 aR_12 db 'r_12',0 aR_13 db 'r_13',0 aH_op db 'h_op',0 aH_st00 db 'h_st00',0 aH_st00b db 'h_st00b',0 aH_st01 db 'h_st01',0 aH_st01b db 'h_st01b',0 aH_st02 db 'h_st02',0 aH_st02b db 'h_st02b',0 aH_st03 db 'h_st03',0 aH_st03b db 'h_st03b',0 aH_st04 db 'h_st04',0 aH_st04b db 'h_st04b',0 aH_st05 db 'h_st05',0 aH_st05b db 'h_st05b',0 aH_end db 'h_end',0 aH_staff db 'h_staff',0 aH_ng00 db 'h_ng00',0 aH_ng01 db 'h_ng01',0 aH_ng02 db 'h_ng02',0 aY_op db 'y_op',0 aY_select db 'y_select',0 aY_00mm db 'y_00mm',0 aY_01mm db 'y_01mm',0 aY_02mm db 'y_02mm',0 aY_03mm db 'y_03mm',0 aY_04mm db 'y_04mm',0 aY_05mm db 'y_05mm',0 aY_06mm db 'y_06mm',0 aY_dec db 'y_dec',0 aY_07mm db 'y_07mm',0 aY_08mm db 'y_08mm',0 aY_demo1 db 'y_demo1',0 aY_demo2 db 'y_demo2',0 aY_demo3 db 'y_demo3',0 aY_demo4 db 'y_demo4',0 aY_demo5 db 'y_demo5',0 aY_ed db 'y_ed',0 aY_score db 'y_score',0 aY_win db 'y_win',0 aY_over db 'y_over',0 aY_ng00 db 'y_ng00',0 aY_ng01 db 'y_ng01',0 aY_ng02 db 'y_ng02',0 aG_op db 'g_op',0 aG_st00 db 'g_st00',0 aG_st10 db 'g_st10',0 aG_st00b db 'g_st00b',0 aG_st01 db 'g_st01',0 aG_st01b db 'g_st01b',0 aG_st02 db 'g_st02',0 aG_st02b db 'g_st02b',0 aG_st03 db 'g_st03',0 aG_st03c db 'g_st03c',0 aG_st03b db 'g_st03b',0 aG_st04 db 'g_st04',0 aG_st04b db 'g_st04b',0 aG_st05 db 'g_st05',0 aG_st05b db 'g_st05b',0 aG_st06 db 'g_st06',0 aG_st06b db 'g_st06b',0 aG_st06c db 'g_st06c',0 aG_end1 db 'g_end1',0 aG_end2 db 'g_end2',0 aG_staff db 'g_staff',0 aG_name db 'g_name',0 aG_ng00 db 'g_ng00',0 aG_ng01 db 'g_ng01',0 aG_ng02 db 'g_ng02',0 aG_ng03 db 'g_ng03',0 aG_ng04 db 'g_ng04',0 aG_ng05 db 'g_ng05',0 aSt03d db 'st03d',0 aEd00 db 'ed00',0 aEd01 db 'ed01',0 aEd02 db 'ed02',0 aExed db 'exed',0 include th05/music/music_cmt_load[data].asm aMusic_pi db 'music.pi',0 aMusic_dat db 'music.dat',0 aKaikidan1_dat1 db '怪綺談1.dat',0 db 0 aGensou_scr db 'GENSOU.SCR',0 aName db 'name',0 aHi01_pi db 'hi01.pi',0 aOp1_pi_1 db 'op1.pi',0 aOp_1 db 'op',0 aScnum_bft db 'scnum.bft',0 aHi_m_bft db 'hi_m.bft',0 db 0 aSlb1_pi db 'slb1.pi',0 .data? public _ksoconfig _ksoconfig dd ? byte_11DD0 db ? db ? fp_11DD2 dw ? byte_11DD4 db ? byte_11DD5 db ? include libs/master.lib/clip[bss].asm include libs/master.lib/fil[bss].asm include libs/master.lib/js[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 th03/formats/hfliplut[bss].asm include th04/snd/interrupt[bss].asm include libs/master.lib/bgm[bss].asm dd ? ; dd ? ; dd ? ; dd ? ; dword_1281A dd ? include th02/snd/load[bss].asm word_1282C dw ? word_1282E dw ? word_12830 dw ? include th05/formats/pi_slot_headers[bss].asm include th04/hardware/input[bss].asm include th04/formats/cdg[bss].asm include libs/master.lib/pfint21[bss].asm word_12EFE dw ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; word_12F30 dw ? word_12F32 dw ? include th04/zunsoft[bss].asm 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 ? ; include th02/music/polygons[bss].asm word_13E94 dw ? byte_13E96 db ? db ? word_13E98 dw ? dd ? ; dd ? ; dd ? ; dd ? ; include th02/music/music_cmt[bss].asm word_1403A dw ? word_1403C dw ? musicroom_trackcount dw ? byte_14040 db ? byte_14041 db ? word_14042 dw ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; db ? ; db ? ; byte_1409E db ? db ? byte_140A0 db ? byte_140A1 db ? byte_140A2 db ? 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 ? ; _hiscore_rank db ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; byte_14116 db ? db ? word_14118 dw ? _rank db ? dd ? ; byte_1411F db ? byte_14120 db ? byte_14121 db ? byte_14122 db ? dd ? ; db ? ; end