; ; +-------------------------------------------------------------------------+ ; | This file has been generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2009 by Hex-Rays, | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : 661F4F8FFAF1F3274F503D154133DEF0 ; File Name : th03/OP.EXE ; Format : MS-DOS executable (EXE) ; Base Address: 0h Range: 0h-FD80h Loaded length: E97Ah ; 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 th03/th03.asm include th02/music/music.inc extern SCOPY@:proc extern __mbcjmstojis:proc extern __mbctype:byte extern _execl:proc extern _getch:proc extern _memcpy:proc ; =========================================================================== ; Segment type: Pure code _TEXT segment word public 'CODE' use16 assume cs:_TEXT assume es:nothing, ds:_DATA, fs:nothing, gs:nothing include libs/master.lib/bfnt_entry_pat.asm include libs/master.lib/bfnt_extend_header_skip.asm include libs/master.lib/bfnt_header_read.asm include libs/master.lib/bfnt_header_analysis.asm include libs/master.lib/bcloser.asm include libs/master.lib/bfill.asm include libs/master.lib/bfnt_palette_set.asm include libs/master.lib/bgetc.asm include libs/master.lib/palette_black_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_setvect.asm include libs/master.lib/egc.asm include libs/master.lib/egc_shift_left_all.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_boxfill.asm include libs/master.lib/grcg_byteboxfill_x.asm include libs/master.lib/grcg_polygon_c.asm include libs/master.lib/grcg_pset.asm include libs/master.lib/grcg_setcolor.asm include libs/master.lib/gaiji_backup.asm include libs/master.lib/gaiji_entry_bfnt.asm include libs/master.lib/gaiji_putsa.asm include libs/master.lib/gaiji_read.asm include libs/master.lib/gaiji_write.asm include libs/master.lib/graph_400line.asm include libs/master.lib/graph_clear.asm include libs/master.lib/graph_copy_page.asm include libs/master.lib/graph_extmode.asm include libs/master.lib/graph_gaiji_puts.asm include libs/master.lib/graph_pi_free.asm include libs/master.lib/graph_pi_load_pack.asm include libs/master.lib/graph_pack_put_8.asm include libs/master.lib/graph_show.asm include libs/master.lib/graph_start.asm include libs/master.lib/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/palette_entry_rgb.asm include libs/master.lib/rottbl.asm include libs/master.lib/smem_release.asm include libs/master.lib/smem_wget.asm include libs/master.lib/soundio.asm include libs/master.lib/text_clear.asm include libs/master.lib/txesc.asm include libs/master.lib/text_putsa.asm include libs/master.lib/vsync.asm include libs/master.lib/vsync_wait.asm include libs/master.lib/palette_white_in.asm include libs/master.lib/hmem_lallocate.asm include libs/master.lib/mem_assign_dos.asm include libs/master.lib/mem_assign.asm include libs/master.lib/memheap.asm include libs/master.lib/mem_unassign.asm include libs/master.lib/super_free.asm include libs/master.lib/super_entry_pat.asm include libs/master.lib/super_entry_at.asm include libs/master.lib/super_entry_bfnt.asm include libs/master.lib/super_cancel_pat.asm include libs/master.lib/super_put.asm include libs/master.lib/respal_exist.asm include libs/master.lib/respal_free.asm include libs/master.lib/pfint21.asm db 0 ; =============== S U B R O U T I N E ======================================= sub_2DB8 proc far mov cx, 100h mov dx, 188h loc_2DBE: in al, dx inc al jnz short loc_2DC9 loop loc_2DBE xor ax, ax jmp short loc_2DDD ; --------------------------------------------------------------------------- loc_2DC9: pushf cli mov bh, 7 call sound_i and al, 3Fh or al, 80h mov bl, al call sound_o popf mov ax, 1 loc_2DDD: mov word_DABC, ax retf sub_2DB8 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= sub_2DE2 proc near mov bh, 0Fh call sound_o mov dx, 188h mov al, 0Eh out dx, al inc dx inc dx in al, dx not al retn sub_2DE2 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= sub_2DF4 proc far push bp push si push di xor bp, bp cmp word_DABC, 0 jz short loc_2E0D pushf cli mov bl, 80h call sub_2DE2 and ax, 3Fh mov si, ax popf loc_2E0D: or word_E9A4, si pop di pop si pop bp retf sub_2DF4 endp ; --------------------------------------------------------------------------- nop xchg dx, bx out dx, al xchg dx, bx in al, dx not al retn ; --------------------------------------------------------------------------- db 0 ; --------------------------------------------------------------------------- include libs/master.lib/draw_trapezoid.asm 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 8 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9908 proc near var_A = word ptr -0Ah var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 var_3 = word ptr -3 enter 0Ah, 0 push ds push offset aYume_cfg ; "YUME.CFG" call file_ropen push ss lea ax, [bp+var_8] push ax push 8 call file_read call file_close mov ax, [bp+var_3] mov [bp+var_A], ax mov word ptr dword_FC54+2, ax mov word ptr dword_FC54, 0 les bx, dword_FC54 mov al, [bp+var_8] mov es:[bx+15h], al call snd_determine_mode mov byte_D880, 0 cmp _snd_active, 0 jnz short loc_9961 les bx, dword_FC54 mov byte ptr es:[bx+15h], 0 mov byte_D880, 1 jmp short loc_996C ; --------------------------------------------------------------------------- loc_9961: cmp [bp+var_8], 0 jnz short loc_996C mov _snd_active, 0 loc_996C: les bx, dword_FC54 mov al, [bp+var_7] mov es:[bx+16h], al mov al, [bp+var_6] mov es:[bx+0Bh], al leave retn sub_9908 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9980 proc near var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 enter 8, 0 push ds push offset aYume_cfg ; "YUME.CFG" call file_append pushd 0 push 0 call file_seek les bx, dword_FC54 mov al, es:[bx+15h] mov [bp+var_8], al mov al, es:[bx+16h] mov [bp+var_7], al mov al, es:[bx+0Bh] mov [bp+var_6], al push ss lea ax, [bp+var_8] push ax push 4 call file_write call file_close leave retn sub_9980 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_99C3 proc near var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 enter 8, 0 lea ax, [bp+var_8] push ss push ax push ds push offset unk_D881 mov cx, 8 call SCOPY@ push ds push offset aYume_cfg ; "YUME.CFG" call file_append pushd 0 push 0 call file_seek les bx, dword_FC54 mov al, es:[bx+15h] mov [bp+var_8], al mov al, es:[bx+16h] mov [bp+var_7], al mov al, es:[bx+0Bh] mov [bp+var_6], al push ss lea ax, [bp+var_8] push ax push 8 call file_write call file_close leave retn sub_99C3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A17 proc near var_4 = word ptr -4 var_2 = word ptr -2 enter 4, 0 push si les bx, dword_FC54 mov byte ptr es:[bx+39h], 0 mov byte ptr es:[bx+17h], 0 mov byte ptr es:[bx+33h], 0 mov byte ptr es:[bx+0Eh], 0 mov byte ptr es:[bx+0Fh], 1 mov byte ptr es:[bx+28h], 1 mov byte ptr es:[bx+34h], 2 mov byte ptr es:[bx+35h], 0 mov byte ptr es:[bx+0Dh], 0FFh call sub_BD9A or al, al jz short loc_9A59 mov al, 1 jmp loc_9B9A ; --------------------------------------------------------------------------- loc_9A59: les bx, dword_FC54 mov al, es:[bx+0Ch] mov ah, 0 dec ax cwd sub ax, dx mov bx, ax sar bx, 1 mov al, [bx+0A0h] mov ah, 0 mov [bp+var_4], ax mov bx, word ptr dword_FC54 mov eax, es:[bx+10h] mov random_seed, eax xor si, si jmp short loc_9ADB ; --------------------------------------------------------------------------- loc_9A85: call IRand mov bx, 7 cwd idiv bx mov [bp+var_2], dx mov bx, [bp+var_2] cmp byte ptr [bx+99h], 0 jnz short loc_9A85 mov ax, [bp+var_4] cmp ax, [bp+var_2] jz short loc_9A85 mov byte ptr [bx+99h], 1 mov ax, [bp+var_2] add ax, ax inc ax mov [bp+var_2], ax les bx, dword_FC54 add bx, si mov al, byte ptr [bp+var_2] mov es:[bx+29h], al mov bx, word ptr dword_FC54 mov al, es:[bx+0Ch] mov ah, 0 cmp ax, [bp+var_2] jnz short loc_9ADA add bx, si mov al, byte ptr [bp+var_2] inc al mov es:[bx+29h], al loc_9ADA: inc si loc_9ADB: cmp si, 6 jl short loc_9A85 les bx, dword_FC54 mov al, es:[bx+29h] mov es:[bx+0Dh], al mov al, byte ptr [bp+var_4] add al, al inc al mov es:[bx+2Fh], al mov byte ptr es:[bx+30h], 0Fh cmp byte ptr es:[bx+0Ch], 0Fh jnz short loc_9B07 inc byte ptr es:[bx+30h] loc_9B07: les bx, dword_FC54 mov byte ptr es:[bx+31h], 11h cmp byte ptr es:[bx+0Ch], 11h jnz short loc_9B1B inc byte ptr es:[bx+31h] loc_9B1B: xor si, si jmp short loc_9B39 ; --------------------------------------------------------------------------- loc_9B1F: les bx, dword_FC54 add bx, si mov al, es:[bx+29h] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 cmp ax, 9 jge loc_9A59 inc si loc_9B39: cmp si, 9 jl short loc_9B1F xor si, si jmp short loc_9B4E ; --------------------------------------------------------------------------- loc_9B42: les bx, dword_FC54 add bx, si mov byte ptr es:[bx+18h], 0 inc si loc_9B4E: cmp si, 10h jl short loc_9B42 les bx, dword_FC54 mov byte ptr es:[bx+36h], 3 mov byte ptr es:[bx+37h], 0 mov al, es:[bx+0Bh] mov ah, 0 imul ax, 19h add al, 46h ; 'F' mov es:[bx+38h], al call sub_9980 call gaiji_restore kajacall KAJA_SONG_STOP call sub_BFC2 pushd 0 push ds push offset path ; "mainl" push ds push offset path ; "mainl" call _execl add sp, 0Ch mov al, 0 loc_9B9A: pop si leave retn sub_9A17 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B9D proc near arg_0 = word ptr 4 arg_2 = word ptr 6 push bp mov bp, sp push si push di mov di, [bp+arg_2] mov si, [bp+arg_0] or di, di jnz short loc_9BB8 push 1B0012h push ds push offset gp1P_VS_CPU jmp short loc_9BD3 ; --------------------------------------------------------------------------- loc_9BB8: cmp di, 1 jnz short loc_9BC9 push 1B0013h push ds push offset gp1P_VS_2P jmp short loc_9BD3 ; --------------------------------------------------------------------------- loc_9BC9: push 1B0014h push ds push offset gpCPU_VS_CPU loc_9BD3: push si call gaiji_putsa pop di pop si pop bp retn 4 sub_9B9D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9BDF proc near var_2 = word ptr -2 enter 2, 0 push si xor si, si les bx, dword_FC54 cmp byte ptr es:[bx+28h], 80h jnb loc_9C8B call text_clear call sub_B0AF mov [bp+var_2], 0 pushd 0E1h call sub_9B9D push 10001h call sub_9B9D push 20001h call sub_9B9D loc_9C1B: call sub_C986 or si, si jnz short loc_9C7E test byte ptr word_F296, 1 jz short loc_9C4A push [bp+var_2] push 1 call sub_9B9D dec [bp+var_2] cmp [bp+var_2], 0 jge short loc_9C41 mov [bp+var_2], 2 loc_9C41: push [bp+var_2] push 0E1h call sub_9B9D loc_9C4A: test byte ptr word_F296, 2 jz short loc_9C70 push [bp+var_2] push 1 call sub_9B9D inc [bp+var_2] cmp [bp+var_2], 2 jle short loc_9C67 mov [bp+var_2], 0 loc_9C67: push [bp+var_2] push 0E1h call sub_9B9D loc_9C70: test byte ptr word_F296, 20h jnz short loc_9C9B test byte ptr word_F296+1, 20h jnz short loc_9C9B loc_9C7E: mov si, word_F296 push 1 call frame_delay jmp short loc_9C1B ; --------------------------------------------------------------------------- loc_9C8B: les bx, dword_FC54 mov al, es:[bx+28h] mov ah, 0 add ax, 0FF80h mov [bp+var_2], ax loc_9C9B: cmp [bp+var_2], 2 jnz short loc_9CA5 mov al, 1 jmp short loc_9CA7 ; --------------------------------------------------------------------------- loc_9CA5: mov al, 0 loc_9CA7: les bx, dword_FC54 mov es:[bx+0Eh], al cmp [bp+var_2], 1 jz short loc_9CB9 mov al, 1 jmp short loc_9CBB ; --------------------------------------------------------------------------- loc_9CB9: mov al, 0 loc_9CBB: les bx, dword_FC54 mov es:[bx+0Fh], al mov byte ptr es:[bx+39h], 0 mov byte ptr es:[bx+17h], 0 mov byte ptr es:[bx+33h], 0 mov al, byte ptr [bp+var_2] add al, 80h mov es:[bx+28h], al mov byte ptr es:[bx+35h], 0 cmp [bp+var_2], 1 jnz short loc_9CEF call sub_BA88 or al, al jz short loc_9D03 jmp short loc_9CF6 ; --------------------------------------------------------------------------- loc_9CEF: call sub_BC1F or al, al jz short loc_9D03 loc_9CF6: les bx, dword_FC54 mov byte ptr es:[bx+28h], 0 mov al, 1 jmp short loc_9D49 ; --------------------------------------------------------------------------- loc_9D03: mov [bp+var_2], 0 jmp short loc_9D19 ; --------------------------------------------------------------------------- loc_9D0A: les bx, dword_FC54 add bx, [bp+var_2] mov byte ptr es:[bx+18h], 0 inc [bp+var_2] loc_9D19: cmp [bp+var_2], 10h jl short loc_9D0A call sub_9980 call gaiji_restore kajacall KAJA_SONG_STOP call sub_BFC2 pushd 0 push ds push offset path ; "mainl" push ds push offset path ; "mainl" call _execl add sp, 0Ch mov al, 0 loc_9D49: pop si leave retn sub_9BDF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9D4C proc near push bp mov bp, sp push si les bx, dword_FC54 mov byte ptr es:[bx+0Eh], 1 mov byte ptr es:[bx+0Fh], 1 inc byte ptr es:[bx+39h] cmp byte ptr es:[bx+39h], 4 jbe short loc_9D6E mov byte ptr es:[bx+39h], 1 loc_9D6E: les bx, dword_FC54 mov byte ptr es:[bx+17h], 0 mov byte ptr es:[bx+33h], 0 mov byte ptr es:[bx+28h], 7Fh mov byte ptr es:[bx+35h], 0 mov al, es:[bx+39h] mov ah, 0 add ax, ax mov bx, ax mov al, [bx+0C2h] mov bx, word ptr dword_FC54 mov es:[bx+0Ch], al mov al, es:[bx+39h] mov ah, 0 add ax, ax mov dx, 0C2h ; 'ツ' inc dx add ax, dx mov bx, ax mov al, [bx] mov bx, word ptr dword_FC54 mov es:[bx+0Dh], al mov al, es:[bx+39h] mov ah, 0 shl ax, 2 mov bx, ax mov eax, [bx+0C8h] mov bx, word ptr dword_FC54 mov es:[bx+10h], eax xor si, si jmp short loc_9DDF ; --------------------------------------------------------------------------- loc_9DD3: les bx, dword_FC54 add bx, si mov byte ptr es:[bx+18h], 0 inc si loc_9DDF: cmp si, 10h jl short loc_9DD3 push 1 call palette_black_out call sub_9980 call gaiji_restore kajacall KAJA_SONG_STOP call sub_BFC2 pushd 0 push ds push offset path ; "mainl" push ds push offset path ; "mainl" call _execl add sp, 0Ch pop si pop bp retn sub_9D4C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9E16 proc near push bp mov bp, sp push si mov word_F296, 0 xor si, si jmp short loc_9E43 ; --------------------------------------------------------------------------- loc_9E24: call sub_C986 les bx, dword_FC54 inc dword ptr es:[bx+10h] inc si cmp si, 208h jle short loc_9E3C call sub_9D4C loc_9E3C: push 1 call frame_delay loc_9E43: cmp word_F296, 0 jz short loc_9E24 push 0A00100h push 0 call super_put mov si, 0B0h ; 'ー' jmp short loc_9E76 ; --------------------------------------------------------------------------- loc_9E5C: push si call sub_B10A push si push 1000002h call super_put push 1 call frame_delay add si, 8 loc_9E76: cmp si, 120h jl short loc_9E5C pop si pop bp retn sub_9E16 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9E7F proc near push bp mov bp, sp push si les bx, dword_FC54 mov byte ptr es:[bx+33h], 0FFh mov byte ptr es:[bx+35h], 1 mov byte ptr es:[bx+28h], 0 xor si, si jmp short loc_9EA6 ; --------------------------------------------------------------------------- loc_9E9A: les bx, dword_FC54 add bx, si mov byte ptr es:[bx+18h], 0 inc si loc_9EA6: cmp si, 10h jl short loc_9E9A call sub_9980 call gaiji_restore kajacall KAJA_SONG_STOP call super_free call sub_BFC2 pushd 0 push ds push offset path ; "mainl" push ds push offset path ; "mainl" call _execl add sp, 0Ch mov al, 0 pop si pop bp retn sub_9E7F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9EDD proc near arg_0 = word ptr 4 arg_2 = word ptr 6 push bp mov bp, sp push si push di mov si, [bp+arg_2] mov di, [bp+arg_0] or si, si jnz short loc_9EF8 push (25 shl 16) + 17 push ds push offset gpSTART jmp short loc_9F4B ; --------------------------------------------------------------------------- loc_9EF8: cmp si, 1 jnz short loc_9F09 push (23 shl 16) + 18 push ds push offset gpVS_START jmp short loc_9F4B ; --------------------------------------------------------------------------- loc_9F09: cmp si, 2 jnz short loc_9F1A push (22 shl 16) + 19 push ds push offset gpMUSIC_ROOM jmp short loc_9F4B ; --------------------------------------------------------------------------- loc_9F1A: cmp si, 3 jnz short loc_9F2B push (24 shl 16) + 20 push ds push offset gpHISCORE jmp short loc_9F4B ; --------------------------------------------------------------------------- loc_9F2B: cmp si, 4 jnz short loc_9F3C push (25 shl 16) + 21 push ds push offset gpOPTION jmp short loc_9F4B ; --------------------------------------------------------------------------- loc_9F3C: cmp si, 5 jnz short loc_9F51 push (26 shl 16) + 22 push ds push offset gpQUIT loc_9F4B: push di call gaiji_putsa loc_9F51: pop di pop si pop bp retn 4 sub_9EDD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9F57 proc near arg_0 = word ptr 4 arg_2 = word ptr 6 push bp mov bp, sp push si push di mov di, [bp+arg_2] mov si, [bp+arg_0] or di, di jnz short loc_9FD6 call gaiji_putsa pascal, (25 shl 16) + 17, ds offset gpRANK, si call text_putsa pascal, (37 shl 16) + 17, ds, offset asc_D965, TX_WHITE les bx, dword_FC54 mov al, es:[bx+0Bh] mov ah, 0 mov bx, ax cmp bx, 3 ja loc_A092 add bx, bx jmp cs:off_A099[bx] loc_9FA2: push (38 shl 16) + 17 push ds push offset gpEASY jmp loc_A08C ; --------------------------------------------------------------------------- loc_9FAF: push (37 shl 16) + 17 push ds push offset gpNORMAL jmp loc_A08C ; --------------------------------------------------------------------------- loc_9FBC: push (38 shl 16) + 17 push ds push offset gpHARD jmp loc_A08C ; --------------------------------------------------------------------------- loc_9FC9: push (37 shl 16) + 17 push ds push offset gpLUNATIC jmp loc_A08C ; --------------------------------------------------------------------------- loc_9FD6: cmp di, 1 jnz short loc_A02A call gaiji_putsa pascal, (25 shl 16) + 19, ds, offset gpMUSIC, si les bx, dword_FC54 mov al, es:[bx+15h] mov ah, 0 or ax, ax jz short loc_A006 cmp ax, 1 jz short loc_A012 cmp ax, 2 jz short loc_A01E jmp loc_A092 ; --------------------------------------------------------------------------- loc_A006: push (35 shl 16) + 19 push ds push offset gpOFF jmp short loc_A08C ; --------------------------------------------------------------------------- loc_A012: push (35 shl 16) + 19 push ds push offset gpFM_86 jmp short loc_A08C ; --------------------------------------------------------------------------- loc_A01E: push (35 shl 16) + 19 push ds push offset gpMIDI_SC88 jmp short loc_A08C ; --------------------------------------------------------------------------- loc_A02A: cmp di, 2 jnz short loc_A07D call gaiji_putsa pascal, (23 shl 16) + 21, ds, offset gpKEYCONFIG, si les bx, dword_FC54 mov al, es:[bx+16h] mov ah, 0 or ax, ax jz short loc_A059 cmp ax, 1 jz short loc_A065 cmp ax, 2 jz short loc_A071 jmp short loc_A092 ; --------------------------------------------------------------------------- loc_A059: push (37 shl 16) + 21 push ds push offset gpKEY_VS_KEY jmp short loc_A08C ; --------------------------------------------------------------------------- loc_A065: push (37 shl 16) + 21 push ds push offset gpJOY_VS_KEY jmp short loc_A08C ; --------------------------------------------------------------------------- loc_A071: push (37 shl 16) + 21 push ds push offset gpKEY_VS_JOY jmp short loc_A08C ; --------------------------------------------------------------------------- loc_A07D: cmp di, 3 jnz short loc_A092 push (32 shl 16) + 22 push ds push offset gpQUIT loc_A08C: push si call gaiji_putsa loc_A092: pop di pop si pop bp retn 4 sub_9F57 endp ; --------------------------------------------------------------------------- db 0 off_A099 dw offset loc_9FA2 dw offset loc_9FAF dw offset loc_9FBC dw offset loc_9FC9 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A0A1 proc near arg_0 = byte ptr 4 arg_2 = byte ptr 6 push bp mov bp, sp mov al, byte_D951 cbw push ax push 1 call fp_E97E mov al, [bp+arg_0] add byte_D951, al cmp byte_D951, 0 jge short loc_A0C3 mov al, [bp+arg_2] mov byte_D951, al loc_A0C3: mov al, byte_D951 cmp al, [bp+arg_2] jle short loc_A0D0 mov byte_D951, 0 loc_A0D0: mov al, byte_D951 cbw push ax push 0E1h call fp_E97E pop bp retn 4 sub_A0A1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A0E0 proc near push bp mov bp, sp push si cmp byte_D954, 0 jnz short loc_A133 call text_clear cmp byte_D953, 0 jnz short loc_A0FA call sub_B0DB loc_A0FA: mov byte_D953, 0 mov byte_E97A, 0 xor si, si jmp short loc_A11E ; --------------------------------------------------------------------------- loc_A108: push si mov al, byte_D951 cbw cmp ax, si jnz short loc_A116 mov ax, 0E1h jmp short loc_A119 ; --------------------------------------------------------------------------- loc_A116: mov ax, 1 loc_A119: push ax call sub_9EDD inc si loc_A11E: cmp si, 6 jl short loc_A108 mov fp_E97E, offset sub_9EDD mov byte_D954, 1 mov byte_E97A, 0 loc_A133: cmp word_F296, 0 jnz short loc_A13F mov byte_E97A, 1 loc_A13F: cmp byte_E97A, 0 jz loc_A1F3 test byte ptr word_F296, 1 jz short loc_A156 push 5 push 0FFFFh call sub_A0A1 loc_A156: test byte ptr word_F296, 2 jz short loc_A164 push 5 push 1 call sub_A0A1 loc_A164: test byte ptr word_F296+1, 20h jnz short loc_A172 test byte ptr word_F296, 20h jz short loc_A1DB loc_A172: mov al, byte_D951 cbw mov bx, ax cmp bx, 5 ja short loc_A1DB add bx, bx jmp cs:off_A1F7[bx] loc_A184: call sub_9A17 jmp short loc_A19A ; --------------------------------------------------------------------------- loc_A189: les bx, dword_FC54 mov byte ptr es:[bx+0Ch], 1 mov byte ptr es:[bx+0Dh], 1 call sub_9BDF loc_A19A: call sub_B008 call sub_9E16 call sub_B3C3 mov byte_D954, 0 mov byte_E97A, 0 mov byte_D953, 1 jmp short loc_A1F3 ; --------------------------------------------------------------------------- loc_A1B4: nopcall sub_AC06 jmp short loc_A19A ; --------------------------------------------------------------------------- loc_A1BB: call sub_9E7F jmp short loc_A1DB ; --------------------------------------------------------------------------- loc_A1C0: mov byte_D954, 0 mov byte_E97C, 1 mov byte_D951, 0 jmp short loc_A1DB ; --------------------------------------------------------------------------- loc_A1D1: mov byte_D954, 0 mov byte_D952, 1 loc_A1DB: test byte ptr word_F296+1, 10h jz short loc_A1E7 mov byte_D952, 1 loc_A1E7: cmp word_F296, 0 jz short loc_A1F3 mov byte_E97A, 0 loc_A1F3: pop si pop bp retn sub_A0E0 endp ; --------------------------------------------------------------------------- db 0 off_A1F7 dw offset loc_A184 dw offset loc_A189 dw offset loc_A1B4 dw offset loc_A1BB dw offset loc_A1C0 dw offset loc_A1D1 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A203 proc near push bp mov bp, sp push si cmp byte_D955, 0 jnz short loc_A24A call text_clear call sub_B0AF mov byte_E97B, 0 xor si, si jmp short loc_A235 ; --------------------------------------------------------------------------- loc_A21F: push si mov al, byte_D951 cbw cmp ax, si jnz short loc_A22D mov ax, TX_WHITE jmp short loc_A230 ; --------------------------------------------------------------------------- loc_A22D: mov ax, TX_BLACK loc_A230: push ax call sub_9F57 inc si loc_A235: cmp si, 4 jl short loc_A21F mov fp_E97E, offset sub_9F57 mov byte_D955, 1 mov byte_E97B, 0 loc_A24A: cmp word_F296, 0 jnz short loc_A256 mov byte_E97B, 1 loc_A256: cmp byte_E97B, 0 jz loc_A414 test byte ptr word_F296, 1 jz short loc_A26D push 3 push 0FFFFh call sub_A0A1 loc_A26D: test byte ptr word_F296, 2 jz short loc_A27B push 3 push 1 call sub_A0A1 loc_A27B: test byte ptr word_F296, 8 jz loc_A31D mov al, byte_D951 cbw or ax, ax jz short loc_A298 cmp ax, 1 jz short loc_A2AE cmp ax, 2 jz short loc_A2FE jmp short loc_A312 ; --------------------------------------------------------------------------- loc_A298: les bx, dword_FC54 inc byte ptr es:[bx+0Bh] cmp byte ptr es:[bx+0Bh], 3 jbe short loc_A312 mov byte ptr es:[bx+0Bh], 0 jmp short loc_A312 ; --------------------------------------------------------------------------- loc_A2AE: cmp byte_D880, 0 jnz short loc_A312 les bx, dword_FC54 cmp byte ptr es:[bx+15h], 0 jnz short loc_A2DB mov byte ptr es:[bx+15h], 1 kajacall KAJA_SONG_STOP call snd_determine_mode kajacall KAJA_SONG_PLAY jmp short loc_A2F1 ; --------------------------------------------------------------------------- loc_A2DB: les bx, dword_FC54 mov byte ptr es:[bx+15h], 0 kajacall KAJA_SONG_STOP mov _snd_active, 0 loc_A2F1: mov al, byte_D951 cbw push ax push 0E1h call sub_9F57 jmp short loc_A312 ; --------------------------------------------------------------------------- loc_A2FE: les bx, dword_FC54 inc byte ptr es:[bx+16h] cmp byte ptr es:[bx+16h], 2 jbe short loc_A312 mov byte ptr es:[bx+16h], 0 loc_A312: mov al, byte_D951 cbw push ax push 0E1h call sub_9F57 loc_A31D: test byte ptr word_F296, 4 jz loc_A3CC mov al, byte_D951 cbw or ax, ax jz short loc_A33B cmp ax, 1 jz short loc_A357 cmp ax, 2 jz short loc_A3A7 jmp loc_A3C1 ; --------------------------------------------------------------------------- loc_A33B: les bx, dword_FC54 cmp byte ptr es:[bx+0Bh], 0 jnz short loc_A34D mov byte ptr es:[bx+0Bh], 3 jmp short loc_A3C1 ; --------------------------------------------------------------------------- loc_A34D: les bx, dword_FC54 dec byte ptr es:[bx+0Bh] jmp short loc_A3C1 ; --------------------------------------------------------------------------- loc_A357: cmp byte_D880, 0 jnz short loc_A3C1 les bx, dword_FC54 cmp byte ptr es:[bx+15h], 0 jnz short loc_A384 mov byte ptr es:[bx+15h], 1 kajacall KAJA_SONG_STOP call snd_determine_mode kajacall KAJA_SONG_PLAY jmp short loc_A39A ; --------------------------------------------------------------------------- loc_A384: les bx, dword_FC54 mov byte ptr es:[bx+15h], 0 kajacall KAJA_SONG_STOP mov _snd_active, 0 loc_A39A: mov al, byte_D951 cbw push ax push 0E1h call sub_9F57 jmp short loc_A3C1 ; --------------------------------------------------------------------------- loc_A3A7: les bx, dword_FC54 cmp byte ptr es:[bx+16h], 0 jnz short loc_A3B9 mov byte ptr es:[bx+16h], 2 jmp short loc_A3C1 ; --------------------------------------------------------------------------- loc_A3B9: les bx, dword_FC54 dec byte ptr es:[bx+16h] loc_A3C1: mov al, byte_D951 cbw push ax push 0E1h call sub_9F57 loc_A3CC: test byte ptr word_F296+1, 20h jnz short loc_A3DA test byte ptr word_F296, 20h jz short loc_A3F2 loc_A3DA: mov al, byte_D951 cbw cmp ax, 3 jnz short loc_A3F2 mov byte_D955, 0 mov byte_D951, 4 mov byte_E97C, 0 loc_A3F2: test byte ptr word_F296+1, 10h jz short loc_A408 mov byte_D955, 0 mov byte_D951, 4 mov byte_E97C, 0 loc_A408: cmp word_F296, 0 jz short loc_A414 mov byte_E97B, 0 loc_A414: pop si pop bp retn sub_A203 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl main(int argc, const char **argv, const char **envp) public _main _main proc far _argc = word ptr 6 _argv = dword ptr 8 _envp = dword ptr 0Ch push bp mov bp, sp call graph_400line call text_clear call respal_create cmp graph_VramZoom, 0 jz short loc_A452 push ds push offset aVfvcvbgngngbgn call dos_puts2 push ds push offset aUmx call dos_puts2 push ds push offset aViosrfvVVkvqbd loc_A446: call dos_puts2 call _getch pop bp retf ; --------------------------------------------------------------------------- loc_A452: push ds push offset aCOul ; "夢時空1.dat" call sub_C421 add sp, 4 or ax, ax jz short loc_A468 push ds push offset aGbgvgkxsslvVBb ; "\nメモリ不足です。メモリ空きを増やしてか"... jmp short loc_A446 ; --------------------------------------------------------------------------- loc_A468: call gaiji_backup push ds push offset aMikoft_bft ; "MIKOFT.bft" call gaiji_entry_bfnt call sub_9908 les bx, dword_FC54 cmp byte ptr es:[bx+28h], 80h jb short loc_A497 cmp byte ptr es:[bx+39h], 0 jnz short loc_A497 call sub_B38D call sub_B3EF call sub_B3C3 call sub_9BDF loc_A497: les bx, dword_FC54 cmp byte ptr es:[bx+37h], 0 jnz short loc_A4B0 call sub_ADE2 les bx, dword_FC54 mov byte ptr es:[bx+37h], 1 jmp short loc_A4BC ; --------------------------------------------------------------------------- loc_A4B0: les bx, dword_FC54 mov byte ptr es:[bx+37h], 0 call sub_B008 loc_A4BC: call sub_9E16 mov byte_E97C, 0 mov word_F296, 0 call sub_A0E0 call sub_B3C3 jmp short loc_A4FE ; --------------------------------------------------------------------------- loc_A4D2: call sub_C986 mov al, byte_E97C cbw or ax, ax jz short loc_A4E6 cmp ax, 1 jz short loc_A4EB jmp short loc_A4EE ; --------------------------------------------------------------------------- loc_A4E6: call sub_A0E0 jmp short loc_A4EE ; --------------------------------------------------------------------------- loc_A4EB: call sub_A203 loc_A4EE: les bx, dword_FC54 inc dword ptr es:[bx+10h] push 1 call frame_delay loc_A4FE: cmp byte_D952, 0 jz short loc_A4D2 call sub_99C3 call gaiji_restore call text_clear call sub_BEB8 call respal_free pop bp retf _main endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A51E proc near var_1 = byte ptr -1 arg_0 = byte ptr 4 arg_2 = byte ptr 6 enter 2, 0 mov al, 1 sub al, byte ptr word_F828+1 mov [bp+var_1], al mov dx, 0A6h ; 'ヲ' out dx, al push 10h mov al, [bp+arg_2] mov ah, 0 shl ax, 4 add ax, 28h ; '(' push ax mov al, [bp+arg_0] mov ah, 0 or ax, 20h push ax mov al, [bp+arg_2] mov ah, 0 shl ax, 2 mov bx, ax pushd dword ptr [bx+5F2h] call sub_C6DB mov dx, 0A6h ; 'ヲ' mov al, byte ptr word_F828+1 out dx, al push 10h mov al, [bp+arg_2] mov ah, 0 shl ax, 4 add ax, 28h ; '(' push ax mov al, [bp+arg_0] mov ah, 0 or ax, 20h push ax mov al, [bp+arg_2] mov ah, 0 shl ax, 2 mov bx, ax pushd dword ptr [bx+5F2h] call sub_C6DB leave retn 4 sub_A51E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A590 proc near arg_0 = byte ptr 4 push bp mov bp, sp push si xor si, si jmp short loc_A5AD ; --------------------------------------------------------------------------- loc_A598: push si mov al, [bp+arg_0] mov ah, 0 cmp ax, si jnz short loc_A5A6 mov al, 0Fh jmp short loc_A5A8 ; --------------------------------------------------------------------------- loc_A5A6: mov al, 3 loc_A5A8: push ax call sub_A51E inc si loc_A5AD: cmp si, 15h jl short loc_A598 pop si pop bp retn 2 sub_A590 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A5B7 proc near push bp mov bp, sp push si push 7D00h call hmem_allocbyte mov word_F82A, ax xor si, si jmp short loc_A5DF ; --------------------------------------------------------------------------- loc_A5CA: les bx, VRAM_PLANE_B add bx, si mov eax, es:[bx] mov es, word_F82A mov es:[si], eax add si, 4 loc_A5DF: cmp si, 7D00h jl short loc_A5CA pop si pop bp retn sub_A5B7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A5E8 proc near push bp mov bp, sp push word_F82A call hmem_free pop bp retn sub_A5E8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A5F6 proc near push bp mov bp, sp push si push di push ds mov ax, 0A800h mov es, ax assume es:nothing mov ax, word_F82A mov ds, ax xor di, di xor si, si mov cx, 3E80h rep movsw pop ds pop di pop si pop bp retn sub_A5F6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A614 proc near var_3 = byte ptr -3 var_2 = word ptr -2 arg_0 = byte ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 arg_6 = word ptr 0Ah arg_8 = word ptr 0Ch arg_A = word ptr 0Eh enter 4, 0 push si push di mov di, [bp+arg_A] sar [bp+arg_6], 4 mov [bp+var_2], 0 jmp short loc_A67F ; --------------------------------------------------------------------------- loc_A628: mov ax, [bp+var_2] shl ax, 8 cwd idiv [bp+arg_2] add al, [bp+arg_0] mov [bp+var_3], al mov ah, 0 add ax, ax mov bx, ax push word ptr [bx+396h] push [bp+arg_4] push [bp+arg_8] call sub_C005 add sp, 6 mov bx, [bp+var_2] shl bx, 2 mov [bx+di], ax mov al, [bp+var_3] mov ah, 0 add ax, ax mov bx, ax push word ptr [bx+316h] push [bp+arg_4] push [bp+arg_6] call sub_C005 add sp, 6 mov bx, [bp+var_2] shl bx, 2 mov [bx+di+2], ax inc [bp+var_2] loc_A67F: mov ax, [bp+var_2] cmp ax, [bp+arg_2] jl short loc_A628 mov bx, [bp+var_2] shl bx, 2 mov ax, [di] mov [bx+di], ax mov bx, [bp+var_2] shl bx, 2 mov ax, [di+2] mov [bx+di+2], ax pop di pop si leave retn 0Ch sub_A614 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A6A3 proc near push bp mov bp, sp push si cmp byte_DE82, 0 jnz loc_A752 xor si, si jmp loc_A746 ; --------------------------------------------------------------------------- loc_A6B5: call IRand mov bx, 280h cwd idiv bx mov bx, si shl bx, 2 mov [bx+1F98h], dx call IRand mov bx, 1900h cwd idiv bx mov bx, si shl bx, 2 mov [bx+1F9Ah], dx call IRand and ax, 7 mov dx, 4 sub dx, ax mov bx, si shl bx, 2 mov [bx+1FD8h], dx mov bx, si shl bx, 2 cmp word ptr [bx+1FD8h], 0 jnz short loc_A70A mov bx, si shl bx, 2 mov word ptr [bx+1FD8h], 1 loc_A70A: call IRand and ax, 3 shl ax, 4 add ax, 20h ; ' ' mov bx, si shl bx, 2 mov [bx+1FDAh], ax call IRand mov [si+2018h], al call IRand and al, 7 mov dl, 4 sub dl, al mov [si+2028h], dl cmp byte ptr [si+2028h], 0 jnz short loc_A745 mov byte ptr [si+2028h], 4 loc_A745: inc si loc_A746: cmp si, 10h jl loc_A6B5 mov byte_DE82, 1 loc_A752: xor si, si jmp loc_A88F ; --------------------------------------------------------------------------- loc_A757: push 1F70h mov bx, si shl bx, 2 push word ptr [bx+1F98h] mov bx, si shl bx, 2 push word ptr [bx+1F9Ah] mov ax, si and ax, 3 shl ax, 4 add ax, 40h push ax mov ax, si mov bx, 4 cwd idiv bx add ax, 3 push ax mov al, [si+2018h] push ax call sub_A614 mov bx, si shl bx, 2 mov ax, [bx+1FD8h] mov bx, si shl bx, 2 add [bx+1F98h], ax mov bx, si shl bx, 2 mov ax, [bx+1FDAh] mov bx, si shl bx, 2 add [bx+1F9Ah], ax mov al, [si+2028h] add [si+2018h], al mov bx, si shl bx, 2 cmp word ptr [bx+1F98h], 0 jle short loc_A7D1 mov bx, si shl bx, 2 cmp word ptr [bx+1F98h], 27Fh jl short loc_A7E3 loc_A7D1: mov bx, si shl bx, 2 mov dx, 0FFFFh mov ax, [bx+1FD8h] imul dx mov [bx+1FD8h], ax loc_A7E3: mov bx, si shl bx, 2 cmp word ptr [bx+1F9Ah], 1F40h jl loc_A879 call IRand mov bx, 280h cwd idiv bx mov bx, si shl bx, 2 mov [bx+1F98h], dx mov bx, si shl bx, 2 mov word ptr [bx+1F9Ah], 0F9C0h call IRand and ax, 0Fh mov dx, 8 sub dx, ax mov bx, si shl bx, 2 mov [bx+1FD8h], dx mov bx, si shl bx, 2 cmp word ptr [bx+1FD8h], 0 jnz short loc_A83E mov bx, si shl bx, 2 mov word ptr [bx+1FD8h], 1 loc_A83E: call IRand and ax, 3 shl ax, 4 add ax, 20h ; ' ' mov bx, si shl bx, 2 mov [bx+1FDAh], ax call IRand mov [si+2018h], al call IRand and al, 7 mov dl, 4 sub dl, al mov [si+2028h], dl cmp byte ptr [si+2028h], 0 jnz short loc_A879 mov byte ptr [si+2028h], 4 loc_A879: push ds push offset unk_F760 mov ax, si mov bx, 4 cwd idiv bx add ax, 3 push ax call grcg_polygon_c inc si loc_A88F: cmp si, 10h jl loc_A757 pop si pop bp retn sub_A6A3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A899 proc near push bp mov bp, sp call sub_A5F6 call grcg_setcolor pascal, ((GC_RMW or GC_B) shl 16) + 15 call sub_A6A3 call grcg_off mov dx, 0A4h ; '、' mov al, byte ptr word_F828+1 out dx, al mov al, 1 sub al, byte ptr word_F828+1 mov byte ptr word_F828+1, al mov dx, 0A6h ; 'ヲ' out dx, al push 1 call frame_delay_ pop bp retn sub_A899 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A8CF proc near var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 enter 6, 0 push si push di mov [bp+var_6], 0 jmp short loc_A8F7 ; --------------------------------------------------------------------------- loc_A8DC: push 3200h call hmem_allocbyte mov bx, [bp+var_6] shl bx, 2 mov [bx+203Eh], ax mov word ptr [bx+203Ch], 0 inc [bp+var_6] loc_A8F7: cmp [bp+var_6], 4 jl short loc_A8DC xor si, si mov di, 40h jmp short loc_A97D ; --------------------------------------------------------------------------- loc_A904: mov [bp+var_2], 130h jmp short loc_A975 ; --------------------------------------------------------------------------- loc_A90B: mov ax, [bp+var_2] sar ax, 3 mov dx, di shl dx, 6 add ax, dx mov dx, di shl dx, 4 add ax, dx mov [bp+var_4], ax les bx, VRAM_PLANE_B assume es:nothing add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F82C mov es:[bx+si], eax les bx, VRAM_PLANE_R add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F830 mov es:[bx+si], eax les bx, VRAM_PLANE_G add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F834 mov es:[bx+si], eax les bx, VRAM_PLANE_E add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F838 mov es:[bx+si], eax add si, 4 add [bp+var_2], 20h ; ' ' loc_A975: cmp [bp+var_2], 270h jl short loc_A90B inc di loc_A97D: cmp di, 50h ; 'P' jl short loc_A904 mov di, 50h ; 'P' jmp short loc_AA00 ; --------------------------------------------------------------------------- loc_A987: mov [bp+var_2], 130h jmp short loc_A9F8 ; --------------------------------------------------------------------------- loc_A98E: mov ax, [bp+var_2] sar ax, 3 mov dx, di shl dx, 6 add ax, dx mov dx, di shl dx, 4 add ax, dx mov [bp+var_4], ax les bx, VRAM_PLANE_B add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F82C mov es:[bx+si], eax les bx, VRAM_PLANE_R add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F830 mov es:[bx+si], eax les bx, VRAM_PLANE_G add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F834 mov es:[bx+si], eax les bx, VRAM_PLANE_E add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F838 mov es:[bx+si], eax add si, 4 add [bp+var_2], 20h ; ' ' loc_A9F8: cmp [bp+var_2], 270h jl short loc_A98E inc di loc_AA00: cmp di, 180h jl short loc_A987 pop di pop si leave retn sub_A8CF endp include th02/music/music_cmt_load.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_AA53 proc near push bp mov bp, sp push word_F82E call hmem_free push word_F832 call hmem_free push word_F836 call hmem_free push word_F83A call hmem_free pop bp retn sub_AA53 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_AA7C proc near var_2 = word ptr -2 enter 2, 0 push si push di xor cx, cx mov si, 40h jmp short loc_AB05 ; --------------------------------------------------------------------------- loc_AA89: mov di, 130h jmp short loc_AAFE ; --------------------------------------------------------------------------- loc_AA8E: mov ax, di sar ax, 3 mov dx, si shl dx, 6 add ax, dx mov dx, si shl dx, 4 add ax, dx mov [bp+var_2], ax les bx, dword ptr unk_F82C add bx, cx mov eax, es:[bx] les bx, VRAM_PLANE_B add bx, [bp+var_2] mov es:[bx], eax les bx, dword ptr unk_F830 add bx, cx mov eax, es:[bx] les bx, VRAM_PLANE_R add bx, [bp+var_2] mov es:[bx], eax les bx, dword ptr unk_F834 add bx, cx mov eax, es:[bx] les bx, VRAM_PLANE_G add bx, [bp+var_2] mov es:[bx], eax les bx, dword ptr unk_F838 add bx, cx mov eax, es:[bx] les bx, VRAM_PLANE_E add bx, [bp+var_2] mov es:[bx], eax add cx, 4 add di, 20h ; ' ' loc_AAFE: cmp di, 270h jl short loc_AA8E inc si loc_AB05: cmp si, 50h ; 'P' jl loc_AA89 mov si, 50h ; 'P' jmp short loc_AB8D ; --------------------------------------------------------------------------- loc_AB11: mov di, 130h jmp short loc_AB86 ; --------------------------------------------------------------------------- loc_AB16: mov ax, di sar ax, 3 mov dx, si shl dx, 6 add ax, dx mov dx, si shl dx, 4 add ax, dx mov [bp+var_2], ax les bx, dword ptr unk_F82C add bx, cx mov eax, es:[bx] les bx, VRAM_PLANE_B add bx, [bp+var_2] mov es:[bx], eax les bx, dword ptr unk_F830 add bx, cx mov eax, es:[bx] les bx, VRAM_PLANE_R add bx, [bp+var_2] mov es:[bx], eax les bx, dword ptr unk_F834 add bx, cx mov eax, es:[bx] les bx, VRAM_PLANE_G add bx, [bp+var_2] mov es:[bx], eax les bx, dword ptr unk_F838 add bx, cx mov eax, es:[bx] les bx, VRAM_PLANE_E add bx, [bp+var_2] mov es:[bx], eax add cx, 4 add di, 20h ; ' ' loc_AB86: cmp di, 270h jl short loc_AB16 inc si loc_AB8D: cmp si, 180h jl loc_AB11 pop di pop si leave retn sub_AA7C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_AB99 proc near @@track = word ptr 4 push bp mov bp, sp push si push di call music_cmt_load pascal, [bp+@@track] call sub_A5F6 call sub_AA7C push 1300040h push 1Fh push ds push offset music_cmt call sub_C6DB mov di, 1 jmp short loc_ABDC ; --------------------------------------------------------------------------- loc_ABC0: push 130h lea ax, [di+4] shl ax, 4 push ax push 1Dh push ds mov ax, di imul ax, MUSIC_CMT_LINE_LEN add ax, offset music_cmt push ax call sub_C6DB inc di loc_ABDC: cmp di, MUSIC_CMT_LINE_COUNT jl short loc_ABC0 xor si, si jmp short loc_ABFA ; --------------------------------------------------------------------------- loc_ABE5: les bx, VRAM_PLANE_B add bx, si mov eax, es:[bx] mov es, word_F82A mov es:[si], eax add si, 4 loc_ABFA: cmp si, 7D00h jl short loc_ABE5 pop di pop si pop bp retn 2 sub_AB99 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_AC06 proc far push bp mov bp, sp push si xor si, si jmp short loc_AC15 ; --------------------------------------------------------------------------- loc_AC0E: push si call sub_C69C inc si loc_AC15: cmp si, 20h ; ' ' jl short loc_AC0E call super_free call text_clear mov byte ptr word_F828+1, 1 mov PaletteTone, 0 call far ptr palette_show mov dx, 0A4h ; '、' mov al, 0 out dx, al mov dx, 0A6h ; 'ヲ' out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' mov al, 1 out dx, al call pi_slot_load pascal, 0, ds, offset aOp3_pi call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 freePISlotLarge 0 mov al, byte_DE83 mov byte ptr word_F828, al push word_F828 call sub_A590 push 0 call graph_copy_page mov dx, 0A6h ; 'ヲ' mov al, 1 out dx, al mov dx, 0A4h ; '、' mov al, 0 out dx, al call sub_A5B7 call sub_A8CF mov dx, 0A6h ; 'ヲ' mov al, 1 out dx, al mov al, byte_DE83 mov ah, 0 call sub_AB99 pascal, ax mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al mov al, byte_DE83 mov ah, 0 call sub_AB99 pascal, ax mov PaletteTone, 64h ; 'd' call far ptr palette_show loc_ACC2: call sub_C986 cmp word_F296, 0 jz short loc_ACD3 call sub_A899 jmp short loc_ACC2 ; --------------------------------------------------------------------------- loc_ACD3: call sub_C986 test byte ptr word_F296, 1 jz short loc_AD0E push word_F828 push 3 call sub_A51E cmp byte ptr word_F828, 0 jbe short loc_ACF5 dec byte ptr word_F828 jmp short loc_ACFA ; --------------------------------------------------------------------------- loc_ACF5: mov byte ptr word_F828, 14h loc_ACFA: cmp byte ptr word_F828, 13h jnz short loc_AD05 dec byte ptr word_F828 loc_AD05: push word_F828 push 0Fh call sub_A51E loc_AD0E: test byte ptr word_F296, 2 jz short loc_AD44 push word_F828 push 3 call sub_A51E cmp byte ptr word_F828, 14h jnb short loc_AD2B inc byte ptr word_F828 jmp short loc_AD30 ; --------------------------------------------------------------------------- loc_AD2B: mov byte ptr word_F828, 0 loc_AD30: cmp byte ptr word_F828, 13h jnz short loc_AD3B inc byte ptr word_F828 loc_AD3B: push word_F828 push 0Fh call sub_A51E loc_AD44: test byte ptr word_F296, 20h jnz short loc_AD52 test byte ptr word_F296+1, 20h jz short loc_AD9A loc_AD52: cmp byte ptr word_F828, 14h jz short loc_ADB0 kajacall KAJA_SONG_STOP push SND_LOAD_SONG mov al, byte ptr word_F828 mov ah, 0 shl ax, 2 mov bx, ax pushd dword ptr [bx+646h] call snd_load add sp, 6 kajacall KAJA_SONG_PLAY mov al, byte ptr word_F828 mov byte_DE83, al mov ah, 0 call sub_AB99 pascal, ax call sub_A899 mov al, byte ptr word_F828 mov ah, 0 call sub_AB99 pascal, ax loc_AD9A: test byte ptr word_F296+1, 10h jnz short loc_ADB0 cmp word_F296, 0 jnz loc_ACC2 call sub_A899 jmp loc_ACD3 ; --------------------------------------------------------------------------- loc_ADB0: call sub_C986 cmp word_F296, 0 jz short loc_ADC1 call sub_A899 jmp short loc_ADB0 ; --------------------------------------------------------------------------- loc_ADC1: call sub_A5E8 call sub_AA53 mov dx, 0A4h ; '、' mov al, 0 out dx, al mov dx, 0A6h ; 'ヲ' out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' mov al, 1 out dx, al mov al, 0 out dx, al pop si pop bp retf sub_AC06 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_ADE2 proc near var_3 = byte ptr -3 var_2 = word ptr -2 enter 4, 0 push si mov [bp+var_2], 0 mov [bp+var_3], 0 push ds push offset aOpwin_bft ; "opwin.bft" call super_entry_bfnt kajacall KAJA_SONG_STOP call snd_load c, offset aOp_m, ds, SND_LOAD_SONG call pi_slot_load pascal, 0, ds, offset aTl01_pi mov PaletteTone, 0 call far ptr palette_show mov dx, 0A6h ; 'ヲ' mov al, 1 out dx, al call pi_slot_put pascal, large 0, 0 mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 push 2 call egc_shift_left_all mov Palettes+45, 0 mov Palettes+46, 0 mov Palettes+47, 0 call far ptr palette_show mov Palettes+33, 0 mov Palettes+34, 0 mov Palettes+35, 0 call far ptr palette_show freePISlotLarge 0 call pi_slot_load pascal, 0, ds, offset aTl02_pi mov dx, 0A4h ; '、' mov al, 1 out dx, al mov si, 0A0h jmp short loc_AF02 ; --------------------------------------------------------------------------- loc_AEA0: push 1 call frame_delay mov al, byte ptr [bp+var_2] mov Palettes+45, al mov Palettes+46, al mov Palettes+47, al call far ptr palette_show cmp [bp+var_2], 80h jg short loc_AECB mov al, byte ptr [bp+var_2] mov Palettes+33, al mov Palettes+34, al mov Palettes+35, al loc_AECB: call far ptr palette_show cmp [bp+var_2], 64h ; 'd' jg short loc_AEE1 mov ax, [bp+var_2] mov PaletteTone, ax call far ptr palette_show loc_AEE1: add [bp+var_2], 2 mov dx, 0A4h ; '、' mov al, [bp+var_3] out dx, al mov al, 1 sub al, [bp+var_3] mov [bp+var_3], al mov dx, 0A6h ; 'ヲ' out dx, al push 4 call egc_shift_left_all sub si, 2 loc_AF02: cmp si, 11h jg short loc_AEA0 jmp short loc_AF25 ; --------------------------------------------------------------------------- loc_AF09: mov al, byte ptr [bp+var_2] mov Palettes+45, al mov Palettes+46, al mov Palettes+47, al call far ptr palette_show add [bp+var_2], 2 push 1 call frame_delay loc_AF25: cmp [bp+var_2], 0FFh jl short loc_AF09 mov vsync_Count1, 0 call sub_B3EF loc_AF35: cmp vsync_Count1, 10h jb short loc_AF35 xor si, si jmp short loc_AF65 ; --------------------------------------------------------------------------- loc_AF40: mov PaletteTone, 0C8h ; 'ネ' call far ptr palette_show push 1 call frame_delay mov PaletteTone, 64h ; 'd' call far ptr palette_show push 1 call frame_delay inc si loc_AF65: cmp si, 8 jl short loc_AF40 mov PaletteTone, 0C8h ; 'ネ' call far ptr palette_show kajacall KAJA_SONG_PLAY mov dx, 0A4h ; '、' mov al, 0 out dx, al mov dx, 0A6h ; 'ヲ' out dx, al call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 push 1 call frame_delay mov PaletteTone, 64h ; 'd' call far ptr palette_show push 1 call frame_delay xor si, si jmp short loc_AFD9 ; --------------------------------------------------------------------------- loc_AFB4: mov PaletteTone, 0C8h ; 'ネ' call far ptr palette_show push 1 call frame_delay mov PaletteTone, 64h ; 'd' call far ptr palette_show push 1 call frame_delay inc si loc_AFD9: cmp si, 8 jl short loc_AFB4 mov dx, 0A6h ; 'ヲ' mov al, 1 out dx, al call pi_slot_put pascal, large 0, 0 mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al freePISlotLarge 0 call sub_B38D pop si leave retn sub_ADE2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B008 proc near push bp mov bp, sp push si push ds push offset aOpwin_bft ; "opwin.bft" call super_entry_bfnt kajacall KAJA_SONG_STOP call snd_load c, offset aOp_m, ds, SND_LOAD_SONG mov PaletteTone, 0 call far ptr palette_show call pi_slot_load pascal, 0, ds, offset aTl02_pi mov dx, 0A4h ; '、' mov al, 0 out dx, al call sub_B3EF mov dx, 0A6h ; 'ヲ' mov al, 1 out dx, al call pi_slot_put pascal, large 0, 0 mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al freePISlotLarge 0 call sub_B38D kajacall KAJA_SONG_PLAY xor si, si jmp short loc_B0A7 ; --------------------------------------------------------------------------- loc_B094: mov PaletteTone, si call far ptr palette_show push 1 call frame_delay add si, 4 loc_B0A7: cmp si, 64h ; 'd' jle short loc_B094 pop si pop bp retn sub_B008 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B0AF proc near push bp mov bp, sp push si mov si, 120h jmp short loc_B0D2 ; --------------------------------------------------------------------------- loc_B0B8: push si call sub_B10A push si push 1000002h call super_put push 1 call frame_delay add si, 8 loc_B0D2: cmp si, 188h jl short loc_B0B8 pop si pop bp retn sub_B0AF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B0DB proc near push bp mov bp, sp push si mov si, 180h jmp short loc_B101 ; --------------------------------------------------------------------------- loc_B0E4: lea ax, [si+8] push ax call sub_B10A push si push 1000002h call super_put push 1 call frame_delay sub si, 8 loc_B101: cmp si, 118h jge short loc_B0E4 pop si pop bp retn sub_B0DB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B10A proc near arg_0 = word ptr 4 push bp mov bp, sp push si push di mov ax, [bp+arg_0] shr ax, 3 mov di, 77B0h add di, ax mov ax, 0AD00h mov es, ax assume es:nothing loc_B11F: mov al, 1 out 0A6h, al mov dx, es:[di] mov ax, 0B500h mov es, ax assume es:nothing mov cx, es:[di] mov ax, 0BD00h mov es, ax assume es:nothing mov bx, es:[di] mov ax, 0E500h mov es, ax assume es:nothing mov si, es:[di] xor al, al out 0A6h, al mov es:[di], si mov ax, 0BD00h mov es, ax assume es:nothing mov es:[di], bx mov ax, 0B500h mov es, ax assume es:nothing mov es:[di], cx mov ax, 0AD00h mov es, ax assume es:nothing mov es:[di], dx sub di, 50h ; 'P' jnb short loc_B11F pop di pop si pop bp retn 2 sub_B10A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B168 proc near var_4 = word ptr -4 var_1 = byte ptr -1 arg_0 = word ptr 4 enter 4, 0 push si push di mov [bp+var_4], 0 call IRand mov byte_FC50, al call IRand mov byte_FC51, al call IRand mov byte_FBD7, al mov si, 2396h xor di, di jmp short loc_B19B ; --------------------------------------------------------------------------- loc_B192: mov al, [si] mov ah, 0 add [bp+var_4], ax inc di inc si loc_B19B: cmp di, 0CCh jl short loc_B192 mov ax, [bp+var_4] mov word_FB84, ax mov si, 2460h dec si mov al, byte_FC51 mov [bp+var_1], al mov di, 0CBh ; 'ヒ' jmp short loc_B1D4 ; --------------------------------------------------------------------------- loc_B1B6: mov al, [si] mov dl, byte_FC50 add dl, [bp+var_1] sub al, dl mov [si], al mov al, [si] mov [bp+var_1], al mov al, byte_FC51 ror [bp+var_1], 3 xor [bp+var_1], al dec di dec si loc_B1D4: or di, di jge short loc_B1B6 push ds push word_E1F2 call file_append mov ax, [bp+arg_0] imul ax, 0CEh movzx eax, ax push eax push 0 call file_seek push ds push offset word_FB84 push 0CEh call file_write call file_close pop di pop si leave retn 2 sub_B168 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B20D proc near var_1 = byte ptr -1 enter 2, 0 push si mov si, 2394h xor dx, dx jmp short loc_B235 ; --------------------------------------------------------------------------- loc_B219: mov al, [si+1] mov [bp+var_1], al mov al, byte_FC51 ror [bp+var_1], 3 xor [bp+var_1], al mov al, byte_FC50 add al, [bp+var_1] add al, [si] mov [si], al inc dx inc si loc_B235: cmp dx, 0CBh ; 'ヒ' jl short loc_B219 mov al, byte_FC50 add al, byte_FC51 add al, [si] mov [si], al pop si leave retn sub_B20D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B249 proc near var_1 = byte ptr -1 enter 2, 0 push si push di mov [bp+var_1], 29h ; ')' xor si, si jmp short loc_B28A ; --------------------------------------------------------------------------- loc_B257: xor di, di jmp short loc_B266 ; --------------------------------------------------------------------------- loc_B25B: mov bx, si shl bx, 3 mov byte ptr [bx+di+2396h], 2Ah ; '*' inc di loc_B266: cmp di, 8 jl short loc_B25B xor di, di jmp short loc_B27A ; --------------------------------------------------------------------------- loc_B26F: mov bx, si imul bx, 0Ah mov byte ptr [bx+di+23E8h], 20h ; ' ' inc di loc_B27A: cmp di, 0Ah jl short loc_B26F mov byte ptr [si+244Ch], 0 mov byte ptr [si+2456h], 21h ; '!' inc si loc_B28A: cmp si, 0Ah jl short loc_B257 mov byte_FBDC, 21h ; '!' mov di, 1 jmp short loc_B2A9 ; --------------------------------------------------------------------------- loc_B299: mov bx, di imul bx, 0Ah mov al, [bp+var_1] mov [bx+23EBh], al inc di dec [bp+var_1] loc_B2A9: cmp di, 0Ah jl short loc_B299 mov byte_FBD6, 12h xor si, si jmp short loc_B2BF ; --------------------------------------------------------------------------- loc_B2B7: push si call sub_B168 call sub_B20D inc si loc_B2BF: cmp si, 4 jl short loc_B2B7 pop di pop si leave retn sub_B249 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B2C8 proc near push bp mov bp, sp push si xor cx, cx mov si, 2396h xor dx, dx jmp short loc_B2DD ; --------------------------------------------------------------------------- loc_B2D5: mov al, [si] mov ah, 0 add cx, ax inc dx inc si loc_B2DD: cmp dx, 0CCh jl short loc_B2D5 cmp word_FB84, cx jz short loc_B2ED mov al, 1 jmp short loc_B2EF ; --------------------------------------------------------------------------- loc_B2ED: mov al, 0 loc_B2EF: pop si pop bp retn sub_B2C8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B2F2 proc near arg_0 = word ptr 4 push bp mov bp, sp push ds push word_E1F2 call file_exist or ax, ax jnz short loc_B314 push ds push word_E1F2 call file_create call file_close jmp short loc_B34D ; --------------------------------------------------------------------------- loc_B314: push ds push word_E1F2 call file_ropen mov ax, [bp+arg_0] imul ax, 0CEh movzx eax, ax push eax push 0 call file_seek push ds push offset word_FB84 push 0CEh call file_read call file_close call sub_B20D call sub_B2C8 or al, al jz short loc_B357 loc_B34D: call sub_B249 mov ax, 1 pop bp retn 2 ; --------------------------------------------------------------------------- loc_B357: xor ax, ax pop bp retn 2 sub_B2F2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B35D proc near var_1 = byte ptr -1 enter 2, 0 push si mov [bp+var_1], 7 xor si, si jmp short loc_B382 ; --------------------------------------------------------------------------- loc_B36A: push si call sub_B2F2 or ax, ax jz short loc_B376 mov al, 7 jmp short loc_B38A ; --------------------------------------------------------------------------- loc_B376: cmp byte_FBD6, 63h ; 'c' jnz short loc_B381 mov [bp+var_1], 9 loc_B381: inc si loc_B382: cmp si, 4 jl short loc_B36A mov al, [bp+var_1] loc_B38A: pop si leave retn sub_B35D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B38D proc near push bp mov bp, sp push si call sub_CB68 xor si, si jmp short loc_B3B0 ; --------------------------------------------------------------------------- loc_B39A: lea ax, [si+2] push ax mov bx, si shl bx, 2 pushd dword ptr [bx+0A0Eh] push 0 call sub_C48A inc si loc_B3B0: cmp si, 3 jl short loc_B39A push 0Dh push ds push offset aSlex_cd2 ; "slex.cd2" call sub_C680 pop si pop bp retn sub_B38D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B3C3 proc near push bp mov bp, sp push 1 push ds push offset a99sl_cdg ; "99sl.cdg" push 0 call sub_C48A push 0Bh push ds push offset aSlwin_cdg ; "slwin.cdg" push 0 call sub_C514 push 0Ch push ds push offset aSlex_cdg ; "slex.cdg" push 0 call sub_C514 pop bp retn sub_B3C3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B3EF proc near push bp mov bp, sp push si push 0 pushd [off_E1FE] push 0 call sub_C48A mov si, 3 jmp short loc_B41C ; --------------------------------------------------------------------------- loc_B406: lea ax, [si+2] push ax mov bx, si shl bx, 2 pushd dword ptr [bx+0A0Eh] push 0 call sub_C48A inc si loc_B41C: cmp si, 6 jl short loc_B406 pop si pop bp retn sub_B3EF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B424 proc near push bp mov bp, sp push si mov vsync_Count1, 0 kajacall KAJA_SONG_STOP call snd_load c, offset aSelect_m, ds, SND_LOAD_SONG kajacall KAJA_SONG_PLAY mov word_FC64, 0C8h ; 'ネ' les bx, dword_FC54 assume es:nothing mov eax, es:[bx+10h] mov random_seed, eax call text_clear call super_free push ds push offset aChname_bft ; "chname.bft" call super_entry_bfnt mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' mov al, 1 out dx, al call graph_clear mov dx, 0A4h ; '、' mov al, 0 out dx, al mov byte_FC5C, 0 push ds push offset aTlsl_rgb ; "TLSL.RGB" call palette_entry_rgb call far ptr palette_show mov si, 6 jmp short loc_B4BC ; --------------------------------------------------------------------------- loc_B4A6: lea ax, [si+2] push ax mov bx, si shl bx, 2 pushd dword ptr [bx+0A0Eh] push 0 call sub_C48A inc si loc_B4BC: cmp si, 9 jl short loc_B4A6 loc_B4C1: cmp vsync_Count1, 1Eh jb short loc_B4C1 mov word_FC66, 8 call sub_B35D mov byte_FC68, al pop si pop bp retn sub_B424 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B4D7 proc near push bp mov bp, sp push si xor si, si jmp short loc_B4E6 ; --------------------------------------------------------------------------- loc_B4DF: push si call sub_C69C inc si loc_B4E6: cmp si, 16h jl short loc_B4DF call super_free pop si pop bp retn sub_B4D7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B4F3 proc near push bp mov bp, sp push 200060h cmp byte_FC5A, 0 jnz short loc_B50C mov al, byte_FC58 cbw add ax, 2 jmp short loc_B50E ; --------------------------------------------------------------------------- loc_B50C: xor ax, ax loc_B50E: push ax call sub_C020 push 1A00060h cmp byte_FC5B, 0 jnz short loc_B52A mov al, byte_FC59 cbw add ax, 2 jmp short loc_B52D ; --------------------------------------------------------------------------- loc_B52A: mov ax, 1 loc_B52D: push ax call sub_C0D4 pop bp retn sub_B4F3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B535 proc near push bp mov bp, sp push 200060h cmp byte_FC5A, 0 jnz short loc_B54E mov al, byte_FC58 cbw add ax, 2 jmp short loc_B550 ; --------------------------------------------------------------------------- loc_B54E: xor ax, ax loc_B550: push ax call sub_C020 push 1A00060h push 1 call sub_C020 pop bp retn sub_B535 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B565 proc near var_4 = word ptr -4 var_2 = word ptr -2 enter 4, 0 push si push di push 200130h push 0Bh call sub_CAF6 les bx, dword_FC54 cmp byte ptr es:[bx+28h], 1 jz short loc_B590 push 1A00130h push 0Bh call sub_CAF6 loc_B590: call grcg_setcolor pascal, (GC_RMW shl 16) + 14 mov [bp+var_2], 0 mov [bp+var_4], 13Bh jmp short loc_B625 ; --------------------------------------------------------------------------- loc_B5A7: mov di, 5 mov si, 8Ch ; '・ jmp short loc_B5C7 ; --------------------------------------------------------------------------- loc_B5AF: push si push [bp+var_4] lea ax, [si+8] push ax mov ax, [bp+var_4] add ax, 0Fh push ax call grcg_boxfill dec di sub si, 0Bh loc_B5C7: mov al, byte_FC58 cbw imul ax, 3 add ax, [bp+var_2] mov bx, ax mov al, [bx+0A32h] mov ah, 0 cmp ax, di jl short loc_B5AF les bx, dword_FC54 cmp byte ptr es:[bx+28h], 1 jz short loc_B61E mov di, 5 mov si, 20Ch jmp short loc_B608 ; --------------------------------------------------------------------------- loc_B5F0: push si push [bp+var_4] lea ax, [si+8] push ax mov ax, [bp+var_4] add ax, 0Fh push ax call grcg_boxfill dec di sub si, 0Bh loc_B608: mov al, byte_FC59 cbw imul ax, 3 add ax, [bp+var_2] mov bx, ax mov al, [bx+0A32h] mov ah, 0 cmp ax, di jl short loc_B5F0 loc_B61E: inc [bp+var_2] add [bp+var_4], 10h loc_B625: cmp [bp+var_2], 3 jl loc_B5A7 call grcg_off pop di pop si leave retn sub_B565 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B636 proc near push bp mov bp, sp push si push di mov di, 88h ; '・ xor si, si jmp short loc_B663 ; --------------------------------------------------------------------------- loc_B642: push 100h push di mov ax, si add ax, ax push ax call super_put push 140h push di mov ax, si add ax, ax inc ax push ax call super_put inc si add di, 14h loc_B663: mov al, byte_FC68 mov ah, 0 cmp ax, si jg short loc_B642 pop di pop si pop bp retn sub_B636 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B670 proc near push bp mov bp, sp push 0A00130h push 0Ch call sub_CAF6 push 0B0013Ch mov al, byte_FC58 cbw add ax, 0Dh push ax call sub_CAF6 les bx, dword_FC54 cmp byte ptr es:[bx+28h], 1 jz short loc_B6BE push 2200130h push 0Ch call sub_CAF6 push 230013Ch mov al, byte_FC59 cbw add ax, 0Dh push ax call sub_CAF6 loc_B6BE: pop bp retn sub_B670 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B6C0 proc near var_7 = byte ptr -7 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 arg_6 = byte ptr 0Ah arg_8 = byte ptr 0Ch enter 8, 0 push si mov si, [bp+arg_4] mov [bp+var_6], 0 jmp short loc_B73B ; --------------------------------------------------------------------------- loc_B6CF: mov al, byte ptr [bp+var_6] add al, [bp+arg_8] mov [bp+var_7], al mov ah, 0 imul [bp+arg_2] mov bx, 100h cwd idiv bx mov [bp+var_7], al mov ah, 0 add ax, ax mov bx, ax push word ptr [bx+396h] push si push 140h call sub_C005 add sp, 6 mov [bp+var_2], ax mov al, byte ptr [bp+var_6] add al, [bp+arg_6] mov [bp+var_7], al mov ah, 0 imul [bp+arg_0] mov bx, 100h cwd idiv bx mov [bp+var_7], al mov ah, 0 add ax, ax mov bx, ax push word ptr [bx+316h] push si push 0C8h ; 'ネ' call sub_C005 add sp, 6 mov [bp+var_4], ax push [bp+var_2] push ax call grcg_pset inc [bp+var_6] loc_B73B: cmp [bp+var_6], 100h jb short loc_B6CF pop si leave retn 0Ah sub_B6C0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B747 proc near var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 enter 6, 0 push si push di mov al, byte ptr word_FC52 mov ah, 0 mov si, ax cmp si, 80h jl short loc_B761 mov ax, 100h sub ax, si mov si, ax loc_B761: mov ax, si add ax, si add ax, 100h mov [bp+var_4], ax add si, 100h mov ax, si add ax, si mov [bp+var_2], ax call grcg_setcolor pascal, (GC_RMW shl 16) + 6 push word_FC52 mov al, byte ptr word_FC52 add al, al push ax push 0DCh ; 'ワ' push si push [bp+var_2] call sub_B6C0 mov al, 0 sub al, byte ptr word_FC52 push ax mov al, byte ptr word_FC52 mov ah, 0 cwd sub ax, dx sar ax, 1 push ax push 78h ; 'x' push [bp+var_4] push si call sub_B6C0 call grcg_setcolor pascal, (GC_RMW shl 16) + 5 mov ax, word_FC66 cwd sub ax, dx sar ax, 1 mov di, ax test byte ptr word_FC66, 1 jz short loc_B7CD inc di loc_B7CD: mov [bp+var_6], 1 jmp short loc_B824 ; --------------------------------------------------------------------------- loc_B7D4: mov al, byte ptr [bp+var_6] add al, al mov dl, byte ptr word_FC52 sub dl, al push dx mov al, byte ptr word_FC52 add al, al mov dl, byte ptr [bp+var_6] shl dl, 2 sub al, dl push ax push 0DCh ; 'ワ' push si push [bp+var_2] call sub_B6C0 mov al, 0 sub al, byte ptr word_FC52 mov dl, byte ptr [bp+var_6] add dl, dl add al, dl push ax mov al, byte ptr word_FC52 mov ah, 0 mov dx, [bp+var_6] add dx, dx sub ax, dx cwd sub ax, dx sar ax, 1 push ax push 78h ; 'x' push [bp+var_4] push si call sub_B6C0 inc [bp+var_6] loc_B824: cmp [bp+var_6], di jle short loc_B7D4 call grcg_setcolor pascal, (GC_RMW shl 16) + 1 lea ax, [di+1] mov [bp+var_6], ax jmp short loc_B88C ; --------------------------------------------------------------------------- loc_B83C: mov al, byte ptr [bp+var_6] add al, al mov dl, byte ptr word_FC52 sub dl, al push dx mov al, byte ptr word_FC52 add al, al mov dl, byte ptr [bp+var_6] shl dl, 2 sub al, dl push ax push 0DCh ; 'ワ' push si push [bp+var_2] call sub_B6C0 mov al, 0 sub al, byte ptr word_FC52 mov dl, byte ptr [bp+var_6] add dl, dl add al, dl push ax mov al, byte ptr word_FC52 mov ah, 0 mov dx, [bp+var_6] add dx, dx sub ax, dx cwd sub ax, dx sar ax, 1 push ax push 78h ; 'x' push [bp+var_4] push si call sub_B6C0 inc [bp+var_6] loc_B88C: mov ax, [bp+var_6] cmp ax, word_FC66 jle short loc_B83C call grcg_off mov al, byte ptr word_FC52 add al, 2 mov byte ptr word_FC52, al pop di pop si leave retn sub_B747 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B8A6 proc near var_2 = word ptr -2 arg_0 = byte ptr 4 arg_2 = word ptr 6 enter 2, 0 push si push di mov si, [bp+arg_2] mov ax, si shl ax, 4 shl ax, 3 add ax, 0F0h mov di, ax mov al, [si+2468h] cbw imul ax, 14h add ax, 80h mov [bp+var_2], ax push di push ax push 10h push ds mov ax, si imul ax, 3 add ax, 0A4Dh push ax mov al, [bp+arg_0] mov ah, 0 push ax call graph_gaiji_puts push di mov ax, [bp+var_2] add ax, 10h push ax push 10h push ds mov ax, si imul ax, 3 add ax, 0A53h push ax mov al, [bp+arg_0] mov ah, 0 push ax call graph_gaiji_puts pop di pop si leave retn 4 sub_B8A6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B908 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 di, [bp+arg_2] mov si, [bp+arg_0] cmp byte ptr [si+246Ah], 0 jnz loc_BA82 cmp byte ptr [si+0A59h], 0 jz short loc_B932 or di, di jnz loc_BA82 mov byte ptr [si+0A59h], 0 jmp loc_BA82 ; --------------------------------------------------------------------------- loc_B932: test di, 1 jz short loc_B951 dec byte ptr [si+2468h] cmp byte ptr [si+2468h], 0 jge short loc_B94C mov al, byte_FC68 dec al mov [si+2468h], al loc_B94C: mov byte ptr [si+0A59h], 1 loc_B951: test di, 2 jz short loc_B974 inc byte ptr [si+2468h] mov al, [si+2468h] cbw mov dl, byte_FC68 mov dh, 0 cmp ax, dx jl short loc_B96F mov byte ptr [si+2468h], 0 loc_B96F: mov byte ptr [si+0A59h], 1 loc_B974: test di, 20h ; Hack db 00fh db 084h db 07fh db 000h mov al, [si+2468h] cbw mov [bp+var_2], ax les bx, dword_FC54 add bx, si mov al, byte ptr [bp+var_2] add al, al inc al mov es:[bx+0Ch], al push 1 call palette_white_in mov bx, 1 sub bx, si cmp byte ptr [bx+246Ah], 0 jz short loc_B9CC les bx, dword_FC54 mov al, es:[bx+0Ch] cmp al, es:[bx+0Dh] jnz short loc_B9CC add bx, si inc byte ptr es:[bx+0Ch] push si mov bx, [bp+var_2] shl bx, 2 pushd dword ptr [bx+0A0Eh] push 1 jmp short loc_B9DA ; --------------------------------------------------------------------------- loc_B9CC: push si mov bx, [bp+var_2] shl bx, 2 pushd dword ptr [bx+0A0Eh] push 0 loc_B9DA: call sub_C48A mov bx, 1 sub bx, si cmp byte ptr [bx+246Ah], 0 jz short loc_B9F1 mov word_FC62, 0 loc_B9F1: mov byte ptr [si+246Ah], 1 mov byte ptr [si+0A59h], 1 loc_B9FB: test di, 10h ; Hack db 00fh db 084h db 07fh db 000h mov al, [si+2468h] cbw mov [bp+var_2], ax les bx, dword_FC54 add bx, si mov al, byte ptr [bp+var_2] add al, al add al, 2 mov es:[bx+0Ch], al push 1 call palette_white_in mov bx, 1 sub bx, si cmp byte ptr [bx+246Ah], 0 jz short loc_BA53 les bx, dword_FC54 mov al, es:[bx+0Ch] cmp al, es:[bx+0Dh] jnz short loc_BA53 add bx, si dec byte ptr es:[bx+0Ch] push si mov bx, [bp+var_2] shl bx, 2 pushd dword ptr [bx+0A0Eh] push 0 jmp short loc_BA61 ; --------------------------------------------------------------------------- loc_BA53: push si mov bx, [bp+var_2] shl bx, 2 pushd dword ptr [bx+0A0Eh] push 1 loc_BA61: call sub_C48A mov bx, 1 sub bx, si cmp byte ptr [bx+246Ah], 0 jz short loc_BA78 mov word_FC62, 0 loc_BA78: mov byte ptr [si+246Ah], 1 mov byte ptr [si+0A59h], 1 loc_BA82: pop di pop si leave retn 4 sub_B908 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BA88 proc near push bp mov bp, sp call sub_B424 call text_clear les bx, dword_FC54 mov al, es:[bx+0Ch] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 mov byte_FC58, al mov al, es:[bx+0Dh] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 mov byte_FC59, al mov byte_FC5A, 0 mov byte_FC5B, 0 cmp byte ptr es:[bx+16h], 0 jnz short loc_BAD4 setfarfp farfp_FC5E, sub_C9AA jmp short loc_BAF9 ; --------------------------------------------------------------------------- loc_BAD4: les bx, dword_FC54 cmp byte ptr es:[bx+16h], 1 jnz short loc_BAED setfarfp farfp_FC5E, sub_C9B4 jmp short loc_BAF9 ; --------------------------------------------------------------------------- loc_BAED: setfarfp farfp_FC5E, sub_C9D6 loc_BAF9: push 10h call frame_delay mov word_FC62, 0 loc_BB06: call sub_B747 call sub_B4F3 call sub_B565 call sub_B636 call sub_B670 push 0 cmp byte_FC5A, 0 jz short loc_BB22 mov al, 0Fh jmp short loc_BB24 ; --------------------------------------------------------------------------- loc_BB22: mov al, 8 loc_BB24: push ax call sub_B8A6 push 1 cmp byte_FC5B, 0 jz short loc_BB35 mov al, 0Fh jmp short loc_BB37 ; --------------------------------------------------------------------------- loc_BB35: mov al, 0Ah loc_BB37: push ax call sub_B8A6 call sub_C1B4 call farfp_FC5E push word_F292 push 0 call sub_B908 push word_F294 push 1 call sub_B908 test byte ptr word_F296+1, 10h jz short loc_BB82 mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al call graph_clear mov dx, 0A4h ; '、' mov al, 0 out dx, al call text_clear call sub_B4D7 kajacall KAJA_SONG_STOP mov al, 1 pop bp retn ; --------------------------------------------------------------------------- loc_BB82: cmp byte_FC5A, 0 jz short loc_BBB7 cmp byte_FC5B, 0 jz short loc_BBB7 call text_clear cmp word_FC62, 10h jb short loc_BBB0 mov ax, word_FC62 imul ax, 6 mov dx, 0C8h ; 'ネ' sub dx, ax mov PaletteTone, dx call far ptr palette_show loc_BBB0: cmp word_FC62, 20h ; ' ' ja short loc_BC18 loc_BBB7: cmp vsync_Count1, 3 jb short loc_BBB7 cmp vsync_Count1, 4 jbe short loc_BBD0 cmp word_FC66, 1 jle short loc_BBD0 dec word_FC66 loc_BBD0: mov vsync_Count1, 0 mov dx, 0A6h ; 'ヲ' mov al, byte_FC5C out dx, al mov al, 1 sub al, byte_FC5C mov byte_FC5C, al mov dx, 0A4h ; '、' out dx, al call grcg_setcolor pascal, (GC_RMW shl 16) + 0 pushd 0 push 4F018Fh call grcg_byteboxfill_x call grcg_off inc word_FC62 les bx, dword_FC54 inc dword ptr es:[bx+10h] jmp loc_BB06 ; --------------------------------------------------------------------------- loc_BC18: call sub_B4D7 mov al, 0 pop bp retn sub_BA88 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BC1F proc near push bp mov bp, sp push si call sub_B424 les bx, dword_FC54 mov al, es:[bx+0Ch] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 mov byte_FC58, al mov al, es:[bx+0Dh] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 mov byte_FC59, al mov byte_FC5A, 0 mov byte_FC5B, 0 setfarfp farfp_FC5E, sub_C986 xor si, si jmp loc_BD8B ; --------------------------------------------------------------------------- loc_BC63: mov word_FC62, 0 loc_BC69: call sub_B747 call sub_B4F3 call sub_B565 call sub_B636 call sub_B670 call sub_C1B4 call farfp_FC5E push 0 cmp byte_FC5A, 0 jz short loc_BC8E mov al, 0Fh jmp short loc_BC90 ; --------------------------------------------------------------------------- loc_BC8E: mov al, 8 loc_BC90: push ax call sub_B8A6 cmp byte_FC5A, 0 jz short loc_BCAE push 1 cmp byte_FC5B, 0 jz short loc_BCA8 mov al, 0Fh jmp short loc_BCAA ; --------------------------------------------------------------------------- loc_BCA8: mov al, 0Ah loc_BCAA: push ax call sub_B8A6 loc_BCAE: push word_F296 push si call sub_B908 test byte ptr word_F296+1, 10h jz short loc_BCE3 mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al call graph_clear mov dx, 0A4h ; '、' mov al, 0 out dx, al call text_clear call sub_B4D7 kajacall KAJA_SONG_STOP mov al, 1 jmp loc_BD97 ; --------------------------------------------------------------------------- loc_BCE3: or si, si jnz short loc_BCF7 cmp byte_FC5A, 0 jz short loc_BCF7 cmp word_FC62, 0Ch ja loc_BD8A loc_BCF7: or si, si jz short loc_BD29 cmp byte_FC5B, 0 jz short loc_BD29 call text_clear cmp word_FC62, 10h jb short loc_BD22 mov ax, word_FC62 imul ax, 6 mov dx, 0C8h ; 'ネ' sub dx, ax mov PaletteTone, dx call far ptr palette_show loc_BD22: cmp word_FC62, 20h ; ' ' ja short loc_BD8A loc_BD29: cmp vsync_Count1, 3 jb short loc_BD29 cmp vsync_Count1, 4 jbe short loc_BD42 cmp word_FC66, 1 jle short loc_BD42 dec word_FC66 loc_BD42: mov vsync_Count1, 0 mov dx, 0A6h ; 'ヲ' mov al, byte_FC5C out dx, al mov al, 1 sub al, byte_FC5C mov byte_FC5C, al mov dx, 0A4h ; '、' out dx, al call grcg_setcolor pascal, (GC_RMW shl 16) + 0 pushd 0 push 4F018Fh call grcg_byteboxfill_x call grcg_off inc word_FC62 les bx, dword_FC54 inc dword ptr es:[bx+10h] jmp loc_BC69 ; --------------------------------------------------------------------------- loc_BD8A: inc si loc_BD8B: cmp si, 2 jl loc_BC63 call sub_B4D7 mov al, 0 loc_BD97: pop si pop bp retn sub_BC1F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BD9A proc near push bp mov bp, sp call sub_B424 mov byte_FC58, 0 mov byte_FC5A, 0 mov byte_FC5B, 1 setfarfp farfp_FC5E, sub_C986 mov word_FC62, 0 loc_BDC1: call sub_B747 call sub_B535 call sub_B565 call sub_B636 call sub_B670 push 0 cmp byte_FC5A, 0 jz short loc_BDDD mov al, 0Fh jmp short loc_BDDF ; --------------------------------------------------------------------------- loc_BDDD: mov al, 8 loc_BDDF: push ax call sub_B8A6 call sub_C1B4 call farfp_FC5E push word_F296 push 0 call sub_B908 test byte ptr word_F296+1, 10h jz short loc_BE21 mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al call graph_clear mov dx, 0A4h ; '、' mov al, 0 out dx, al call text_clear call sub_B4D7 kajacall KAJA_SONG_STOP mov al, 1 pop bp retn ; --------------------------------------------------------------------------- loc_BE21: cmp byte_FC5A, 0 jz short loc_BE4F call text_clear cmp word_FC62, 10h jb short loc_BE48 mov ax, word_FC62 imul ax, 6 mov dx, 0C8h ; 'ネ' sub dx, ax mov PaletteTone, dx call far ptr palette_show loc_BE48: cmp word_FC62, 20h ; ' ' ja short loc_BEB0 loc_BE4F: cmp vsync_Count1, 3 jb short loc_BE4F cmp vsync_Count1, 4 jbe short loc_BE68 cmp word_FC66, 1 jle short loc_BE68 dec word_FC66 loc_BE68: mov vsync_Count1, 0 mov dx, 0A6h ; 'ヲ' mov al, byte_FC5C out dx, al mov al, 1 sub al, byte_FC5C mov byte_FC5C, al mov dx, 0A4h ; '、' out dx, al call grcg_setcolor pascal, (GC_RMW shl 16) + 0 pushd 0 push 4F018Fh call grcg_byteboxfill_x call grcg_off inc word_FC62 les bx, dword_FC54 inc dword ptr es:[bx+10h] jmp loc_BDC1 ; --------------------------------------------------------------------------- loc_BEB0: call sub_B4D7 mov al, 0 pop bp retn sub_BD9A endp db 0 op_01_TEXT ends ; =========================================================================== ; Segment type: Pure code op_02_TEXT segment word public 'CODE' use16 assume cs:op_02_TEXT ;org 8 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BEB8 proc far push bp mov bp, sp nopcall sub_BFC2 call key_beep_on call text_systemline_show call text_cursor_show pop bp retf sub_BEB8 endp include th01/hardware/vram_planes_set.asm include th02/hardware/snd_determine_mode.asm include th02/hardware/snd_pmd_resident.asm include th02/hardware/snd_load.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BFC2 proc far push bp mov bp, sp call pfend mov dx, 0A6h ; 'ヲ' mov al, 1 out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al mov dx, 0A4h ; '、' out dx, al call vsync_end call mem_unassign call text_clear call js_end call egc_start pop bp retf sub_BFC2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C005 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah push bp mov bp, sp movsx eax, [bp+arg_2] movsx edx, [bp+arg_4] imul eax, edx sar eax, 8 add ax, [bp+arg_0] pop bp retf sub_C005 endp ; --------------------------------------------------------------------------- db 0 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C020 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah push bp mov bp, sp push si push di call grcg_setcolor pascal, (GC_RMW shl 16) + 0 mov si, [bp+arg_0] shl si, 4 add si, 1AA8h mov ax, [si+0Eh] mov word ptr cs:loc_C097+1, ax mov ax, [bp+arg_4] sar ax, 3 add ax, [si+6] mov di, ax mov word ptr cs:loc_C090+1, ax mov ax, [si+8] mov word ptr cs:loc_C082+1, ax mov word ptr cs:loc_C09C+1, ax shl ax, 2 add ax, 50h ; 'P' mov word ptr cs:loc_C07E+1, ax jmp short $+2 mov ax, [bp+arg_2] mov bx, ax shl ax, 2 add ax, bx add ax, 0A800h mov es, ax push ds mov ax, [si+0Ch] mov ds, ax xor si, si loc_C07E: mov dx, 1234h cld loc_C082: mov cx, 1234h rep movsd sub di, dx jns short loc_C082 xor al, al out 7Ch, al loc_C090: mov bx, 1234h mov di, bx xor si, si loc_C097: mov ax, 1234h mov ds, ax assume ds:nothing loc_C09C: mov cx, 1234h loc_C09F: mov eax, [si] or es:[di], eax add si, 4 add di, 4 loop loc_C09F sub di, dx jns short loc_C09C mov di, bx mov ax, es add ax, 800h mov es, ax assume es:nothing cmp ax, 0C000h jb short loc_C09C cmp ax, 0C800h jnb short loc_C0CC add ax, 2000h mov es, ax assume es:nothing jmp short loc_C09C ; --------------------------------------------------------------------------- loc_C0CC: pop ds assume ds:_DATA pop di pop si pop bp retf 6 sub_C020 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C0D4 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah push bp mov bp, sp push si push di call grcg_setcolor pascal, (GC_RMW shl 16) + 0 mov si, [bp+arg_0] shl si, 4 add si, 1AA8h mov ax, [bp+arg_4] sar ax, 3 add ax, [si+6] mov bx, [si+8] shl bx, 2 add ax, bx dec ax mov di, ax mov word ptr cs:loc_C154+1, ax mov word ptr cs:loc_C17C+1, ax mov word ptr cs:loc_C13E+1, bx mov word ptr cs:loc_C16A+1, bx mov ax, 50h ; 'P' sub ax, bx mov word ptr cs:loc_C13A+1, ax mov word ptr cs:loc_C166+1, ax jmp short $+2 mov ax, [bp+arg_2] mov bx, ax shl ax, 2 add ax, bx add ax, 0A800h mov es, ax assume es:nothing mov bx, 1E70h mov fs, word ptr [si+0Ch] xor si, si loc_C13A: mov dx, 1234h nop loc_C13E: mov cx, 1234h loc_C141: mov al, fs:[si] xlat mov es:[di], al inc si dec di loop loc_C141 sub di, dx jns short loc_C13E xor al, al out 7Ch, al loc_C154: mov di, 1234h mov si, [bp+arg_0] shl si, 4 add si, 1AA8h mov fs, word ptr [si+0Eh] xor si, si loc_C166: mov dx, 1234h nop loc_C16A: mov cx, 4D2h loc_C16D: mov al, fs:[si] xlat or es:[di], al inc si dec di loop loc_C16D sub di, dx jns short loc_C16A loc_C17C: mov di, 1234h mov ax, es add ax, 800h mov es, ax assume es:nothing cmp ax, 0C000h jb short loc_C16A cmp ax, 0C800h jnb short loc_C197 add ax, 2000h mov es, ax assume es:nothing jmp short loc_C16A ; --------------------------------------------------------------------------- loc_C197: pop di pop si pop bp retf 6 sub_C0D4 endp ; --------------------------------------------------------------------------- nop include th02/hardware/frame_delay.asm db 0 ; =============== S U B R O U T I N E ======================================= sub_C1B4 proc far xor ax, ax mov word_F292, ax mov word_F294, ax mov word_F296, ax mov word_E9A4, ax jmp short $+2 mov bl, 2 xor ax, ax mov es, ax loc_C1CA: mov ah, byte ptr es:[531h] test ah, 4 jz short loc_C1D9 or word_F296, 1 loc_C1D9: test ah, 20h jz short loc_C1E3 or word_F296, 2 loc_C1E3: test ah, 8 jz short loc_C1F2 or word_F294, 20h or word_F296, 4 loc_C1F2: test ah, 10h jz short loc_C201 or word_F294, 10h or word_F296, 8 loc_C201: mov ah, byte ptr es:[533h] test ah, 1 jz short loc_C215 or word_F294, 8 or word_F296, 8 loc_C215: test ah, 4 jz short loc_C226 or word_F294, 200h or word_F296, 200h loc_C226: test ah, 8 jz short loc_C235 or word_F294, 2 or word_F296, 2 loc_C235: test ah, 10h jz short loc_C246 or word_F294, 800h or word_F296, 800h loc_C246: mov ah, byte ptr es:[532h] test ah, 40h jz short loc_C25A or word_F294, 4 or word_F296, 4 loc_C25A: test ah, 4 jz short loc_C26B or word_F294, 100h or word_F296, 100h loc_C26B: test ah, 8 jz short loc_C27A or word_F294, 1 or word_F296, 1 loc_C27A: test ah, 10h jz short loc_C28B or word_F294, 400h or word_F296, 400h loc_C28B: mov ah, byte ptr es:[52Fh] test ah, 2 jz short loc_C29F or word_F292, 20h or word_F296, 20h loc_C29F: test ah, 4 jz short loc_C2AE or word_F292, 10h or word_F296, 10h loc_C2AE: test ah, 10h jz short loc_C2B9 or word_F292, 200h loc_C2B9: test ah, 20h jz short loc_C2C3 or word_F292, 2 loc_C2C3: test ah, 40h jz short loc_C2CE or word_F292, 800h loc_C2CE: mov ah, byte ptr es:[52Eh] test ah, 1 jz short loc_C2DD or word_F292, 4 loc_C2DD: test ah, 4 jz short loc_C2E7 or word_F292, 8 loc_C2E7: mov ah, byte ptr es:[52Ch] test ah, 8 jz short loc_C2F7 or word_F292, 100h loc_C2F7: test ah, 10h jz short loc_C301 or word_F292, 1 loc_C301: test ah, 20h jz short loc_C30C or word_F292, 400h loc_C30C: test ah, 1 jz short loc_C317 or word_F296, 4000h loc_C317: mov ah, byte ptr es:[52Ah] test ah, 1 jz short loc_C327 or word_F296, 1000h loc_C327: mov ah, byte ptr es:[52Dh] test ah, 10h jz short loc_C337 or word_F296, 2000h loc_C337: mov ah, byte ptr es:[530h] test ah, 10h jz short loc_C346 or word_F296, 20h loc_C346: dec bl jz short locret_C354 mov cx, 400h loc_C34D: out 5Fh, al loop loc_C34D jmp loc_C1CA ; --------------------------------------------------------------------------- locret_C354: retf sub_C1B4 endp include th02/formats/pi_slot_palette_apply.asm include th02/formats/pi_slot_put.asm include th02/hardware/snd_kaja_func.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C421 proc far arg_0 = dword ptr 6 push bp mov bp, sp push 55F0h call mem_assign_dos or ax, ax jz short loc_C435 mov ax, 1 pop bp retf ; --------------------------------------------------------------------------- loc_C435: nopcall vram_planes_set call graph_start mov dx, 0A6h ; 'ヲ' mov al, 1 out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al call graph_clear mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al mov dx, 0A4h ; '、' out dx, al call vsync_start call key_beep_off call text_systemline_hide call text_cursor_hide call egc_start call sub_2DB8 pushd [bp+arg_0] call pfstart xor ax, ax pop bp retf sub_C421 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C48A proc far var_4 = dword ptr -4 arg_0 = word ptr 6 arg_2 = dword ptr 8 arg_6 = word ptr 0Ch enter 4, 0 push si push di mov di, [bp+arg_6] push di nopcall sub_C69C mov ax, di shl ax, 4 add ax, 1AA8h mov si, ax pushd [bp+arg_2] call file_ropen push ds push si push 10h call file_read mov ax, [si] imul ax, 5 movzx eax, ax mov [bp+var_4], eax movsx eax, [bp+arg_0] imul eax, [bp+var_4] push eax push 1 call file_seek push word ptr [si] call hmem_allocbyte mov [si+0Ch], ax push word ptr [si+0Ch] push 0 push word ptr [si] call file_read mov ax, [si] shl ax, 2 push ax call hmem_allocbyte mov [si+0Eh], ax push word ptr [si+0Eh] push 0 mov ax, [si] shl ax, 2 push ax call file_read call file_close pop di pop si leave retf 8 sub_C48A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C514 proc far var_4 = dword ptr -4 arg_0 = word ptr 6 arg_2 = dword ptr 8 arg_6 = word ptr 0Ch enter 4, 0 push si push di mov di, [bp+arg_6] push di nopcall sub_C69C mov ax, di shl ax, 4 add ax, 1AA8h mov si, ax pushd [bp+arg_2] call file_ropen push ds push si push 10h call file_read mov ax, [si] imul ax, 5 movzx eax, ax mov [bp+var_4], eax movsx eax, [bp+arg_0] imul eax, [bp+var_4] push eax push 1 call file_seek movzx eax, word ptr [si] push eax push 1 call file_seek mov word ptr [si+0Ch], 0 mov ax, [si] shl ax, 2 push ax call hmem_allocbyte mov [si+0Eh], ax push word ptr [si+0Eh] push 0 mov ax, [si] shl ax, 2 push ax call file_read call file_close pop di pop si leave retf 8 sub_C514 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C59A proc far var_2 = word ptr -2 arg_0 = dword ptr 6 arg_4 = word ptr 0Ah enter 2, 0 push si push di pushd [bp+arg_0] call file_ropen push [bp+arg_4] nopcall sub_C69C mov ax, [bp+arg_4] shl ax, 4 add ax, 1AA8h mov si, ax push ds push ax push 10h call file_read mov di, si mov [bp+var_2], 1 jmp short loc_C5DD ; --------------------------------------------------------------------------- loc_C5CE: mov ax, [bp+arg_4] add ax, [bp+var_2] push ax nopcall sub_C69C inc [bp+var_2] loc_C5DD: mov al, [di+0Ah] mov ah, 0 cmp ax, [bp+var_2] jg short loc_C5CE mov [bp+var_2], 0 jmp short loc_C669 ; --------------------------------------------------------------------------- loc_C5EE: mov ax, [di] mov [si], ax mov ax, [di+2] mov [si+2], ax mov ax, [di+4] mov [si+4], ax mov ax, [di+6] mov [si+6], ax mov ax, [di+8] mov [si+8], ax mov al, [di+0Ah] mov [si+0Ah], al mov byte ptr [si+0Bh], 0 cmp byte_DDE0, 0 jnz short loc_C633 push word ptr [si] call hmem_allocbyte mov [si+0Ch], ax push word ptr [si+0Ch] push 0 push word ptr [si] call file_read jmp short loc_C645 ; --------------------------------------------------------------------------- loc_C633: mov word ptr [si+0Ch], 0 movzx eax, word ptr [si] push eax push 1 call file_seek loc_C645: mov ax, [si] shl ax, 2 push ax call hmem_allocbyte mov [si+0Eh], ax push word ptr [si+0Eh] push 0 mov ax, [si] shl ax, 2 push ax call file_read inc [bp+var_2] add si, 10h loc_C669: mov al, [di+0Ah] mov ah, 0 cmp ax, [bp+var_2] jg loc_C5EE call file_close pop di pop si leave retf 6 sub_C59A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C680 proc far arg_0 = dword ptr 6 arg_4 = word ptr 0Ah push bp mov bp, sp mov byte_DDE0, 1 push [bp+arg_4] pushd [bp+arg_0] call sub_C59A mov byte_DDE0, 0 pop bp retf 6 sub_C680 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C69C proc far arg_0 = word ptr 6 push bp mov bp, sp push si push di mov ax, [bp+arg_0] shl ax, 4 add ax, 1AA8h mov di, ax xor si, si jmp short loc_C6D0 ; --------------------------------------------------------------------------- loc_C6B0: mov bx, si add bx, bx cmp word ptr [bx+di+0Ch], 0 jz short loc_C6CF mov bx, si add bx, bx push word ptr [bx+di+0Ch] call hmem_free mov bx, si add bx, bx mov word ptr [bx+di+0Ch], 0 loc_C6CF: inc si loc_C6D0: cmp si, 2 jl short loc_C6B0 pop di pop si pop bp retf 2 sub_C69C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C6DB proc far var_32 = byte ptr -32h var_12 = word ptr -12h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = word ptr -0Ch var_A = word ptr -0Ah var_8 = dword ptr -8 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = dword ptr 6 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh enter 32h, 0 push si push di mov di, [bp+arg_8] mov ax, [bp+arg_4] sar ax, 4 and ax, 3 mov [bp+var_E], ax mov ax, [bp+arg_4] sar ax, 6 and ax, 7 mov [bp+var_10], ax push GC_RMW mov ax, [bp+arg_4] and ax, 0Fh push ax call grcg_setcolor mov dx, 68h ; 'h' mov al, 0Bh out dx, al jmp loc_C924 ; --------------------------------------------------------------------------- loc_C714: mov ax, [bp+arg_6] imul ax, 50h push ax mov ax, di mov bx, 8 cwd idiv bx pop dx add dx, ax mov word ptr [bp+var_8+2], 0A800h mov word ptr [bp+var_8], dx mov ax, di cwd idiv bx mov [bp+var_C], dx les bx, [bp+arg_0] assume es:nothing mov al, es:[bx] mov ah, 0 mov bx, ax test __mbctype+1[bx], 4 jz short loc_C769 mov bx, word ptr [bp+arg_0] mov al, es:[bx] cbw shl ax, 8 mov dl, es:[bx+1] mov dh, 0 add ax, dx push ax call __mbcjmstojis pop cx mov [bp+var_2], ax add word ptr [bp+arg_0], 2 jmp short loc_C7AF ; --------------------------------------------------------------------------- loc_C769: les bx, [bp+arg_0] mov al, es:[bx] mov ah, 0 mov bx, ax test __mbctype+1[bx], 3 jz short loc_C787 mov bx, word ptr [bp+arg_0] mov al, es:[bx] mov ah, 0 add ax, 2980h jmp short loc_C7A2 ; --------------------------------------------------------------------------- loc_C787: les bx, [bp+arg_0] mov al, es:[bx] cbw mov bx, ax test byte ptr [bx+0D51h], 5Eh jz short loc_C7A7 mov bx, word ptr [bp+arg_0] mov al, es:[bx] mov ah, 0 add ax, 2900h loc_C7A2: mov [bp+var_2], ax jmp short loc_C7AC ; --------------------------------------------------------------------------- loc_C7A7: mov [bp+var_2], 2B21h loc_C7AC: inc word ptr [bp+arg_0] loc_C7AF: mov al, byte ptr [bp+var_2] and al, 0FFh mov dx, 0A1h ; '。' out dx, al mov ax, [bp+var_2] shr ax, 8 sub al, 20h ; ' ' mov dx, 0A3h ; '」' out dx, al cmp [bp+var_2], 2921h jb short loc_C810 cmp [bp+var_2], 2B7Eh ja short loc_C810 cmp di, 278h jg loc_C92F mov [bp+var_12], 0 jmp short loc_C803 ; --------------------------------------------------------------------------- loc_C7E1: mov al, byte ptr [bp+var_12] or al, 20h mov dx, 0A5h ; '・' out dx, al mov dx, 0A9h ; 'ゥ' in al, dx mov ah, 0 shl ax, 8 mov bx, [bp+var_12] add bx, bx lea dx, [bp+var_32] add bx, dx mov ss:[bx], ax inc [bp+var_12] loc_C803: cmp [bp+var_12], 10h jl short loc_C7E1 mov [bp+var_A], 0 jmp short loc_C866 ; --------------------------------------------------------------------------- loc_C810: cmp di, 270h jg loc_C92F mov [bp+var_12], 0 jmp short loc_C85B ; --------------------------------------------------------------------------- loc_C81F: mov al, byte ptr [bp+var_12] or al, 20h mov dx, 0A5h ; '・' out dx, al mov dx, 0A9h ; 'ゥ' in al, dx mov ah, 0 shl ax, 8 mov bx, [bp+var_12] add bx, bx lea dx, [bp+var_32] add bx, dx mov ss:[bx], ax mov dx, 0A5h ; '・' mov al, byte ptr [bp+var_12] out dx, al mov dx, 0A9h ; 'ゥ' in al, dx mov ah, 0 mov bx, [bp+var_12] add bx, bx lea dx, [bp+var_32] add bx, dx add ss:[bx], ax inc [bp+var_12] loc_C85B: cmp [bp+var_12], 10h jl short loc_C81F mov [bp+var_A], 1 loc_C866: mov [bp+var_12], 0 jmp loc_C90B ; --------------------------------------------------------------------------- loc_C86E: mov bx, [bp+var_12] add bx, bx lea ax, [bp+var_32] add bx, ax mov ax, ss:[bx] mov [bp+var_4], ax mov ax, [bp+var_E] cmp ax, 1 jz short loc_C892 cmp ax, 2 jz short loc_C8A8 cmp ax, 3 jz short loc_C89E jmp short loc_C8BE ; --------------------------------------------------------------------------- loc_C892: mov si, [bp+var_4] mov ax, si add ax, ax or [bp+var_4], ax jmp short loc_C8BE ; --------------------------------------------------------------------------- loc_C89E: mov si, [bp+var_4] mov ax, si add ax, ax or [bp+var_4], ax loc_C8A8: mov si, [bp+var_4] mov ax, si add ax, ax or [bp+var_4], ax xor si, [bp+var_4] mov ax, si add ax, ax not ax and [bp+var_4], ax loc_C8BE: cmp [bp+var_C], 0 jz short loc_C8F1 mov cl, byte ptr [bp+var_C] add cl, 8 mov ax, [bp+var_4] shr ax, cl les bx, [bp+var_8] mov es:[bx], al mov ax, [bp+var_4] mov cl, byte ptr [bp+var_C] shr ax, cl mov es:[bx+1], al mov cl, 8 sub cl, byte ptr [bp+var_C] mov al, byte ptr [bp+var_4] shl al, cl mov es:[bx+2], al jmp short loc_C904 ; --------------------------------------------------------------------------- loc_C8F1: mov ax, [bp+var_4] shr ax, 8 les bx, [bp+var_8] mov es:[bx], al mov al, byte ptr [bp+var_4] mov es:[bx+1], al loc_C904: add word ptr [bp+var_8], 50h ; 'P' inc [bp+var_12] loc_C90B: cmp [bp+var_12], 10h jl loc_C86E cmp [bp+var_A], 0 jz short loc_C91C add di, 8 loc_C91C: mov ax, [bp+var_10] add ax, 8 add di, ax loc_C924: les bx, [bp+arg_0] cmp byte ptr es:[bx], 0 jnz loc_C714 loc_C92F: mov dx, 68h ; 'h' mov al, 0Ah out dx, al call grcg_off pop di pop si leave retf 0Ah sub_C6DB endp include th02/formats/pi_slot_load.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C986 proc far push bp mov bp, sp nopcall sub_C1B4 cmp word_DABC, 0 jz short loc_C9A1 call sub_2DF4 mov ax, word_E9A4 or word_F296, ax loc_C9A1: mov ax, word_F292 or word_F296, ax pop bp retf sub_C986 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C9AA proc far push bp mov bp, sp nopcall sub_C1B4 pop bp retf sub_C9AA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C9B4 proc far push bp mov bp, sp nopcall sub_C1B4 cmp word_DABC, 0 jz short loc_C9D4 call sub_2DF4 mov ax, word_E9A4 mov word_F292, ax mov ax, word_F296 mov word_F294, ax loc_C9D4: pop bp retf sub_C9B4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C9D6 proc far push bp mov bp, sp nopcall sub_C1B4 cmp word_DABC, 0 jz short loc_C9F6 call sub_2DF4 mov ax, word_E9A4 mov word_F294, ax mov ax, word_F296 mov word_F292, ax loc_C9F6: pop bp retf sub_C9D6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C9F8 proc far push bp mov bp, sp nopcall sub_C1B4 mov ax, word_F296 or word_F292, ax cmp word_DABC, 0 jz short loc_CA1A call sub_2DF4 mov ax, word_E9A4 or word_F292, ax loc_CA1A: mov word_F294, 0 pop bp retf sub_C9F8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CA22 proc far push bp mov bp, sp nopcall sub_C1B4 mov ax, word_F296 or ax, word_F292 mov word_F294, ax cmp word_DABC, 0 jz short loc_CA47 call sub_2DF4 mov ax, word_E9A4 or word_F294, ax loc_CA47: mov word_F292, 0 pop bp retf sub_CA22 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CA4F proc far push bp mov bp, sp nopcall sub_C1B4 test byte ptr word_F296+1, 10h jnz short loc_CA65 test byte ptr word_F296+1, 20h jz short loc_CA6B loc_CA65: mov word_F296, 1000h loc_CA6B: mov word_F292, 0 mov word_F294, 0 pop bp retf sub_CA4F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CA79 proc far push bp mov bp, sp nopcall sub_C1B4 cmp word_DABC, 0 jz short loc_CA94 call sub_2DF4 mov ax, word_E9A4 or word_F296, ax loc_CA94: mov ax, word_F292 or word_F296, ax mov word_F292, 0 mov word_F294, 0 pop bp retf sub_CA79 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CAA9 proc far arg_0 = word ptr 6 push bp mov bp, sp push si push di mov si, [bp+arg_0] xor di, di loc_CAB3: call sub_C986 cmp word_F296, 0 jz short loc_CAC7 push 1 nopcall frame_delay jmp short loc_CAB3 ; --------------------------------------------------------------------------- loc_CAC7: or si, si jnz short loc_CAEB mov si, 270Fh jmp short loc_CAEB ; --------------------------------------------------------------------------- loc_CAD0: call sub_C986 cmp word_F296, 0 jnz short loc_CAEF inc di push 1 nopcall frame_delay cmp si, 270Fh jnz short loc_CAEB xor di, di loc_CAEB: cmp di, si jl short loc_CAD0 loc_CAEF: pop di pop si pop bp retf 2 sub_CAA9 endp ; --------------------------------------------------------------------------- db 0 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CAF6 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah push bp mov bp, sp push si push di mov si, [bp+arg_0] shl si, 4 add si, 1AA8h mov ax, [bp+arg_4] sar ax, 3 add ax, [si+6] mov di, ax mov ax, [si+8] mov word ptr cs:loc_CB3C+1, ax jmp short $+2 shl ax, 2 add ax, 50h ; 'P' mov dx, ax mov ax, [bp+arg_2] mov bx, ax shl ax, 2 add ax, bx add ax, 0A800h mov es, ax push ds mov ax, [si+0Eh] mov ds, ax xor si, si mov bx, di cld nop loc_CB3C: mov cx, 1234h rep movsd sub di, dx jns short loc_CB3C mov di, bx mov ax, es add ax, 800h mov es, ax assume es:nothing cmp ax, 0C000h jb short loc_CB3C cmp ax, 0C800h jnb short loc_CB60 add ax, 2000h mov es, ax assume es:nothing jmp short loc_CB3C loc_CB60: pop ds pop di pop si pop bp retf 6 sub_CAF6 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= sub_CB68 proc far push di xor ax, ax mov di, 1E70h xor dl, dl jmp short loc_CB7D ; --------------------------------------------------------------------------- loc_CB72: xor dl, dl mov cx, 8 loc_CB77: rol al, 1 rcr dl, 1 loop loc_CB77 loc_CB7D: mov [di], dl inc di inc al jnz short loc_CB72 pop di retf sub_CB68 endp include th02/hardware/frame_delay_.asm db 0 op_02_TEXT ends .data byte_D880 db 0 unk_D881 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 1 db 0 db 0 db 2 db 0 db 3 db 5 db 4 db 6 gp1P_VS_CPU db 88h, 89h, 8Ah, 8Bh, 8Ch, 8Dh, 8Eh, 8Fh, 0 gp1P_VS_2P db 88h, 89h, 8Ah, 8Bh, 96h, 97h, 98h, 99h, 0 gpCPU_VS_CPU db 92h, 93h, 94h, 95h, 8Ch, 8Dh, 8Eh, 8Fh, 0 db 3 db 1 db 5 db 0Dh db 7 db 0Bh db 9 db 5 db 58h ; X db 2 db 0 db 0 db 0E8h ; ・ db 3 db 0 db 0 db 80h db 0Ch db 0 db 0 db 0F4h db 1 db 0 db 0 gpSTART db 30h, 31h, 32h, 0 gpVS_START db 33h, 34h, 35h, 36h, 37h, 38h, 0 gpMUSIC_ROOM db 41h, 42h, 43h, 44h, 45h, 46h, 47h, 0 gpHISCORE db 82h, 83h, 84h, 85h, 86h, 0 gpOPTION db 3Dh, 3Eh, 3Fh, 40h, 0 gpQUIT db 48h, 49h, 4Ah, 0 gpRANK db 6Eh, 6Fh, 70h, 0 gpMUSIC db 4Bh, 4Ch, 4Dh, 4Eh, 0 gpKEYCONFIG db 5Ch, 5Dh, 5Eh, 5Fh, 60h, 61h, 0 g4SPACES db 0CFh, 0CFh, 0CFh, 0CFh, 0 gpEASY db 71h, 72h, 73h, 0 gpNORMAL db 74h, 75h, 76h, 77h, 0 gpHARD db 78h, 79h, 7Ah, 0 gpLUNATIC db 7Bh, 7Ch, 7Dh, 7Eh, 0 gpOFF db 0CFh, 0CFh, 5Ah, 5Bh, 0CFh, 0CFh, 0CFh, 0 gpFM_86 db 0CFh, 4Fh, 50h, 51h, 52h, 0CFh, 0CFh, 0 gpMIDI_SC88 db 53h, 54h, 55h, 56h, 57h, 58h, 59h, 0 gpTYPE1 db 62h, 63h, 64h, 65h, 0 gpTYPE2 db 62h, 63h, 64h, 66h, 0 gpTYPE3 db 62h, 63h, 64h, 67h, 0 gpKEY_VS_KEY db 68h, 69h, 6Ch, 6Dh, 68h, 69h, 0 gpJOY_VS_KEY db 6Ah, 6Bh, 6Ch, 6Dh, 68h, 69h, 0 gpKEY_VS_JOY db 68h, 69h, 6Ch, 6Dh, 6Ah, 6Bh, 0 byte_D951 db 0 byte_D952 db 0 byte_D953 db 1 byte_D954 db 0 byte_D955 db 0 aYume_cfg db 'YUME.CFG',0 ; char path[] path db 'mainl',0 asc_D965 db ' ',0 aVfvcvbgngngbgn db 'GDCクロックが5MHzになっています。',0Ah,0 aUmx db '東方夢時空は2.5MHzでないと正常にゲームがプレイ出来ません',0Ah,0 aViosrfvVVkvqbd db 0Ah db 'お手数ですが2.5MHzに切り替えて、もう一度実行してね。',0Ah,0 aCOul db '夢時空1.dat',0 aGbgvgkxsslvVBb db 0Ah db 'メモリ不足です。メモリ空きを増やしてから実行してくりゃれ',0Ah,0 aMikoft_bft db 'MIKOFT.bft',0 db 0 include libs/master.lib/bfnt_id[data].asm include libs/master.lib/clip[data].asm include libs/master.lib/edges[data].asm include libs/master.lib/fil[data].asm include libs/master.lib/dos_ropen[data].asm include libs/master.lib/gaiji_backup[data].asm include libs/master.lib/gaiji_entry_bfnt[data].asm include libs/master.lib/grp[data].asm word_DABC dw 0 db 0 db 0 db 0 db 0 db 0 db 0 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 _snd_active db 0 db 0 include libs/master.lib/respal_exist[data].asm include libs/master.lib/draw_trapezoid[data].asm include th02/formats/pfopen[data].asm byte_DDE0 db 0 db 0 dd aNo_1B@cVOul ; "NO.1  夢は時空を越えて " dd aNo_2B@B@Select ; "NO.2     Selection " dd aNo_3Umx ; "NO.3 東方妖恋談 " dd aNo_4Reincarnat ; "NO.4 Reincarnation " dd aNo_5Dim_Dream ; "NO.5 Dim. Dream " dd aNo_6TabulaRasa ; "NO.6 Tabula rasa 〜空白少女 " dd aNo_7B@Maniacal ; "NO.7   Maniacal Princess " dd aNo_8CPOBLostDr ; "NO.8 夢消失 〜Lost Dream " dd aNo_9CMCvlyBDre ; "NO.9 夢幻遊戯 〜Dream War " dd aNo_10Cvc@mirab ; "NO.10 魔法決戦!〜Fight it out!" dd aNo_11B@SailorO ; "NO.11   Sailor of Time " dd aNo_12Strawberr ; "NO.12 Strawberry Crisis!! " dd aNo_13F ; "NO.13 非統一魔法世界論 " dd aNo_14B@cvc@pri ; "NO.14  魔法鐘愛 " dd aNo_15B@lviuvC ; "NO.15  久遠の夢 " dd aNo_16Umx ; "NO.16 東方の青い空 " dd aNo_17IiiuvCumo ; "NO.17 永遠の満月 " dd aNo_18MapleDrea ; "NO.18 Maple Dream... " dd aNo_19CRlvLxu ; "NO.19 霊人の休日 " dd aB@b@ ; "    " dd aB@b@vpvxvivf ; "   Quit " dd aOp_m_0 ; "op.m" dd aSelect_m_0 ; "select.m" dd a00mm_m ; "00mm.m" dd a01mm_m ; "01mm.m" dd a02mm_m ; "02mm.m" dd a03mm_m ; "03mm.m" dd a04mm_m ; "04mm.m" dd a05mm_m ; "05mm.m" dd a06mm_m ; "06mm.m" dd aDec_m ; "dec.m" dd a07mm_m ; "07mm.m" dd a08mm_m ; "08mm.m" dd aDemo1_m ; "demo1.m" dd aDemo2_m ; "demo2.m" dd aDemo3_m ; "demo3.m" dd aDemo4_m ; "demo4.m" dd aDemo5_m ; "demo5.m" dd aEd_m ; "ed.m" dd aScore_m ; "score.m" byte_DE82 db 0 byte_DE83 db 0 aNo_1B@cVOul db 'NO.1  夢は時空を越えて ',0 aNo_2B@B@Select db 'NO.2     Selection ',0 aNo_3Umx db 'NO.3 東方妖恋談 ',0 aNo_4Reincarnat db 'NO.4 Reincarnation ',0 aNo_5Dim_Dream db 'NO.5 Dim. Dream ',0 aNo_6TabulaRasa db 'NO.6 Tabula rasa 〜空白少女 ',0 aNo_7B@Maniacal db 'NO.7   Maniacal Princess ',0 aNo_8CPOBLostDr db 'NO.8 夢消失 〜Lost Dream ',0 aNo_9CMCvlyBDre db 'NO.9 夢幻遊戯 〜Dream War ',0 aNo_10Cvc@mirab db 'NO.10 魔法決戦!〜Fight it out!',0 aNo_11B@SailorO db 'NO.11   Sailor of Time ',0 aNo_12Strawberr db 'NO.12 Strawberry Crisis!! ',0 aNo_13F db 'NO.13 非統一魔法世界論 ',0 aNo_14B@cvc@pri db 'NO.14  魔法鐘愛 ',0 aNo_15B@lviuvC db 'NO.15  久遠の夢 ',0 aNo_16Umx db 'NO.16 東方の青い空 ',0 aNo_17IiiuvCumo db 'NO.17 永遠の満月 ',0 aNo_18MapleDrea db 'NO.18 Maple Dream... ',0 aNo_19CRlvLxu db 'NO.19 霊人の休日 ',0 aB@b@ db '    ',0 aB@b@vpvxvivf db '   Quit ',0 aOp_m_0 db 'op.m',0 aSelect_m_0 db 'select.m',0 a00mm_m db '00mm.m',0 a01mm_m db '01mm.m',0 a02mm_m db '02mm.m',0 a03mm_m db '03mm.m',0 a04mm_m db '04mm.m',0 a05mm_m db '05mm.m',0 a06mm_m db '06mm.m',0 aDec_m db 'dec.m',0 a07mm_m db '07mm.m',0 a08mm_m db '08mm.m',0 aDemo1_m db 'demo1.m',0 aDemo2_m db 'demo2.m',0 aDemo3_m db 'demo3.m',0 aDemo4_m db 'demo4.m',0 aDemo5_m db 'demo5.m',0 aEd_m db 'ed.m',0 aScore_m db 'score.m',0 include th02/music/music_cmt_load[data].asm aOp3_pi db 'op3.pi',0 aOpwin_bft db 'opwin.bft',0 aOp_m db 'op.m',0 aTl01_pi db 'TL01.PI',0 aTl02_pi db 'TL02.PI',0 db 0 word_E1F2 dw 0A04h aYume_nem db 'YUME.NEM',0 db 0 off_E1FE dd a00sl_cd2 ; "00SL.CD2" dd a02sl_cd2 ; "02SL.CD2" dd a04sl_cd2 ; "04SL.CD2" dd a06sl_cd2 ; "06SL.CD2" dd a08sl_cd2 ; "08SL.CD2" dd a10sl_cd2 ; "10SL.CD2" dd a12sl_cd2 ; "12SL.CD2" dd a14sl_cd2 ; "14SL.CD2" dd a16sl_cd2 ; "16SL.CD2" db 3 db 1 db 5 db 4 db 4 db 2 db 3 db 4 db 3 db 2 db 3 db 1 db 4 db 1 db 4 db 2 db 2 db 5 db 4 db 5 db 1 db 5 db 2 db 4 db 5 db 5 db 3 db 12h db 13h db 0 db 16h db 17h db 0 db 14h db 15h db 0 db 18h db 19h db 0 db 0 db 0 a00sl_cd2 db '00SL.CD2',0 a02sl_cd2 db '02SL.CD2',0 a04sl_cd2 db '04SL.CD2',0 a06sl_cd2 db '06SL.CD2',0 a08sl_cd2 db '08SL.CD2',0 a10sl_cd2 db '10SL.CD2',0 a12sl_cd2 db '12SL.CD2',0 a14sl_cd2 db '14SL.CD2',0 a16sl_cd2 db '16SL.CD2',0 aSlex_cd2 db 'slex.cd2',0 a99sl_cdg db '99sl.cdg',0 aSlwin_cdg db 'slwin.cdg',0 aSlex_cdg db 'slex.cdg',0 aSelect_m db 'select.m',0 aChname_bft db 'chname.bft',0 aTlsl_rgb db 'TLSL.RGB',0 db 041h, 0C1h, 0E1h, 0 .data? byte_E97A db ? byte_E97B db ? byte_E97C db ? db ? fp_E97E dw ? include libs/master.lib/clip[bss].asm include libs/master.lib/fil[bss].asm word_E9A4 dw ? db ? db ? ; include libs/master.lib/pal[bss].asm include libs/master.lib/vs[bss].asm include libs/master.lib/vsync[bss].asm include libs/master.lib/mem[bss].asm include libs/master.lib/superpa[bss].asm include th01/hardware/vram_planes[bss].asm include th02/hardware/snd[bss].asm include th02/hardware/snd_load[bss].asm include libs/master.lib/pfint21[bss].asm word_F292 dw ? word_F294 dw ? word_F296 dw ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; include th02/formats/pi_slots[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 ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; unk_F760 db ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; db ? ; db ? ; db ? ; word_F828 dw ? word_F82A dw ? unk_F82C db ? ; db ? ; word_F82E dw ? unk_F830 db ? ; db ? ; word_F832 dw ? unk_F834 db ? ; db ? ; word_F836 dw ? unk_F838 db ? ; db ? ; word_F83A dw ? include th02/music/music_cmt[bss].asm word_FB84 dw ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; byte_FBD6 db ? byte_FBD7 db ? dd ? ; byte_FBDC db ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; db ? ; db ? ; db ? ; byte_FC50 db ? byte_FC51 db ? word_FC52 dw ? dword_FC54 dd ? byte_FC58 db ? byte_FC59 db ? byte_FC5A db ? byte_FC5B db ? byte_FC5C db ? db ? farfp_FC5E dd ? word_FC62 dw ? word_FC64 dw ? word_FC66 dw ? byte_FC68 db ? db ? ; end