; ; +-------------------------------------------------------------------------+ ; | This file has been generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2009 by Hex-Rays, | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : E6F971B37336C0F9FCE53F895780031E ; File Name : th02/MAINE.EXE ; Format : MS-DOS executable (EXE) ; Base Address: 0h Range: 0h-FCF0h Loaded length: DE32h ; 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 maine_02_TEXT .386 ; ... then switch to what we actually need. ; And yes, we can't move this to an include file for some reason. include ReC98.inc include th02/th02.inc extern SCOPY@:proc extern _execl:proc ; =========================================================================== ; Segment type: Pure code _TEXT segment word public 'CODE' use16 assume cs:_TEXT assume es:nothing, ds:_DATA, fs:nothing, gs:nothing include libs/master.lib/bfnt_entry_pat.asm include libs/master.lib/bfnt_extend_header_skip.asm include libs/master.lib/bfnt_header_read.asm include libs/master.lib/bfnt_header_analysis.asm include libs/master.lib/bcloser.asm include libs/master.lib/bfill.asm include libs/master.lib/bfnt_palette_set.asm include libs/master.lib/bgetc.asm include libs/master.lib/palette_black_in.asm include libs/master.lib/palette_black_out.asm include libs/master.lib/bopenr.asm include libs/master.lib/bread.asm include libs/master.lib/bseek.asm include libs/master.lib/bseek_.asm include libs/master.lib/cutline.asm include libs/master.lib/dos_axdx.asm include libs/master.lib/dos_filesize.asm include libs/master.lib/dos_setvect.asm include libs/master.lib/egc.asm include libs/master.lib/egc_shift_down.asm include libs/master.lib/egc_shift_left.asm include libs/master.lib/file_append.asm include libs/master.lib/file_close.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_size.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_line.asm include libs/master.lib/grcg_setcolor.asm include libs/master.lib/gaiji_backup.asm include libs/master.lib/gaiji_entry_bfnt.asm include libs/master.lib/gaiji_putca.asm include libs/master.lib/gaiji_putsa.asm include libs/master.lib/gaiji_read.asm include libs/master.lib/gaiji_write.asm include libs/master.lib/graph_400line.asm include libs/master.lib/graph_clear.asm include libs/master.lib/graph_copy_page.asm include libs/master.lib/graph_extmode.asm include libs/master.lib/graph_gaiji_putc.asm include libs/master.lib/graph_gaiji_puts.asm include libs/master.lib/graph_pi_free.asm include libs/master.lib/graph_pi_load_pack.asm include libs/master.lib/graph_pack_put_8.asm include libs/master.lib/key_sense.asm include libs/master.lib/over_put_8.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/palette_entry_rgb.asm include libs/master.lib/rottbl.asm include libs/master.lib/smem_release.asm include libs/master.lib/smem_wget.asm include libs/master.lib/text_clear.asm include libs/master.lib/vsync.asm include libs/master.lib/vsync_wait.asm include libs/master.lib/palette_white_in.asm include libs/master.lib/palette_white_out.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_entry_pat.asm include libs/master.lib/super_entry_at.asm include libs/master.lib/super_entry_bfnt.asm include libs/master.lib/pfint21.asm db 0 include th02/formats/pfopen.asm include libs/master.lib/pf_str_ieq.asm _TEXT ends ; =========================================================================== ; Segment type: Pure code maine_01_TEXT segment byte public 'CODE' use16 assume cs:maine_01_TEXT ;org 3 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_95A3 proc near var_2 = word ptr -2 arg_0 = dword ptr 4 enter 2, 0 pushd [bp+arg_0] call file_ropen call file_size mov [bp+var_2], ax push ds push offset end_buf push ax call file_read call file_close leave retn 4 sub_95A3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_95CB proc near var_9 = byte ptr -9 var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 4 @@y = word ptr 8 @@x = word ptr 0Ah enter 0Ah, 0 push si push di mov di, gb_0_ mov [bp+var_4], 10000000 mov [bp+var_9], 0 xor si, si jmp short loc_9638 ; --------------------------------------------------------------------------- loc_95E4: mov eax, [bp+arg_0] cdq idiv [bp+var_4] mov ebx, 10 cdq idiv ebx mov [bp+var_8], edx mov eax, [bp+var_4] cdq idiv ebx mov [bp+var_4], eax mov ax, word ptr [bp+var_8] add ax, gb_0_ mov di, ax cmp [bp+var_8], 0 jz short loc_961D mov [bp+var_9], 1 loc_961D: cmp [bp+var_9], 0 jz short loc_9637 mov ax, si shl ax, 4 add ax, [bp+@@x] call graph_gaiji_putc pascal, ax, [bp+@@y], di, 15 loc_9637: inc si loc_9638: cmp si, 8 jl short loc_95E4 pop di pop si leave retn 8 sub_95CB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9643 proc near var_50 = byte ptr -50h arg_0 = word ptr 4 arg_2 = dword ptr 6 arg_6 = word ptr 0Ah arg_8 = word ptr 0Ch arg_A = word ptr 0Eh enter 50h, 0 push si push di lea ax, [bp+var_50] push ss push ax push ds push offset unk_D030 mov cx, 50h ; 'P' call SCOPY@ xor si, si xor di, di jmp short loc_96C4 ; --------------------------------------------------------------------------- loc_9660: call _input_sense les bx, [bp+arg_2] add bx, si mov al, es:[bx] mov [bp+si+var_50], al inc si mov bx, word ptr [bp+arg_2] add bx, si mov al, es:[bx] mov [bp+si+var_50], al inc si mov [bp+si+var_50], 0 push ss lea ax, [bp+var_50] push ax mov al, byte_F02A cbw push ax push [bp+arg_8] push [bp+arg_A] call _graph_putsa_fx add sp, 0Ah cmp byte_F02B, 0 jz short loc_96B9 cmp _key_det, 0 jz short loc_96B9 test di, 3 jz short loc_96C1 mov ax, [bp+arg_0] mov bx, 3 cwd idiv bx push ax jmp short loc_96BC ; --------------------------------------------------------------------------- loc_96B9: push [bp+arg_0] loc_96BC: call frame_delay loc_96C1: add di, 2 loc_96C4: cmp di, [bp+arg_6] jl short loc_9660 xor si, si jmp short loc_96EC ; --------------------------------------------------------------------------- loc_96CD: call _input_sense cmp byte_F02B, 0 jz short loc_96E4 cmp _key_det, 0 jz short loc_96E4 push 0 jmp short loc_96E6 ; --------------------------------------------------------------------------- loc_96E4: push 2 loc_96E6: call frame_delay inc si loc_96EC: cmp si, 14h jl short loc_96CD cmp byte_F02B, 0 jz short loc_96FB call sub_9A7E loc_96FB: pop di pop si leave retn 0Ch sub_9643 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9701 proc far var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = dword ptr 0Ah enter 8, 0 push si push di mov ax, [bp+arg_0] sar ax, 3 mov dx, [bp+arg_2] shl dx, 6 add ax, dx mov dx, [bp+arg_2] shl dx, 4 add ax, dx mov si, ax xor di, di jmp loc_97E6 ; --------------------------------------------------------------------------- loc_9724: graph_accesspage 1 les bx, _VRAM_PLANE_B add bx, si mov ax, es:[bx] mov [bp+var_8], ax les bx, _VRAM_PLANE_R add bx, si mov ax, es:[bx] mov [bp+var_6], ax les bx, _VRAM_PLANE_G add bx, si mov ax, es:[bx] mov [bp+var_4], ax les bx, _VRAM_PLANE_E add bx, si mov ax, es:[bx] mov [bp+var_2], ax mov al, 0 out dx, al call grcg_setcolor pascal, (GC_RMW shl 16) + 0 mov ax, di add ax, ax les bx, [bp+arg_4] add bx, ax mov ax, es:[bx] les bx, _VRAM_PLANE_B add bx, si mov es:[bx], ax call grcg_off mov ax, di add ax, ax les bx, [bp+arg_4] add bx, ax mov ax, es:[bx] and ax, [bp+var_8] les bx, _VRAM_PLANE_B add bx, si or es:[bx], ax mov ax, di add ax, ax les bx, [bp+arg_4] add bx, ax mov ax, es:[bx] and ax, [bp+var_6] les bx, _VRAM_PLANE_R add bx, si or es:[bx], ax mov ax, di add ax, ax les bx, [bp+arg_4] add bx, ax mov ax, es:[bx] and ax, [bp+var_4] les bx, _VRAM_PLANE_G add bx, si or es:[bx], ax mov ax, di add ax, ax les bx, [bp+arg_4] add bx, ax mov ax, es:[bx] and ax, [bp+var_2] les bx, _VRAM_PLANE_E add bx, si or es:[bx], ax add si, 50h ; 'P' inc di loc_97E6: cmp di, 10h jl loc_9724 pop di pop si leave retf sub_9701 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_97F1 proc far var_60 = byte ptr -60h arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah enter 60h, 0 push si push di lea ax, [bp+var_60] push ss push ax push ds push offset byte_D080 mov cx, 60h call SCOPY@ xor di, di jmp short loc_983D ; --------------------------------------------------------------------------- loc_980C: xor si, si jmp short loc_9830 ; --------------------------------------------------------------------------- loc_9810: mov ax, di shl ax, 5 lea dx, [bp+var_60] add ax, dx push ss push ax push [bp+arg_2] mov ax, si shl ax, 4 add ax, [bp+arg_0] push ax call sub_9701 add sp, 8 inc si loc_9830: cmp si, [bp+arg_4] jl short loc_9810 push 0Ah call frame_delay inc di loc_983D: cmp di, 3 jl short loc_980C pop di pop si leave retf sub_97F1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9846 proc near var_2 = byte ptr -2 var_1 = byte ptr -1 arg_0 = dword ptr 4 arg_4 = word ptr 8 enter 2, 0 push si push di mov di, [bp+arg_4] mov si, 64h ; 'd' mov [bp+var_2], 0 xor cx, cx jmp short loc_98A1 ; --------------------------------------------------------------------------- loc_985A: mov ax, di cwd idiv si mov [bp+var_1], al cmp [bp+var_2], 0 jnz short loc_986B mov [bp+var_2], al loc_986B: cmp [bp+var_2], 0 jnz short loc_9876 cmp cx, 2 jnz short loc_9885 loc_9876: les bx, [bp+arg_0] add bx, cx mov al, [bp+var_1] add al, 0A0h mov es:[bx], al jmp short loc_988E ; --------------------------------------------------------------------------- loc_9885: les bx, [bp+arg_0] add bx, cx mov byte ptr es:[bx], 0CFh ; 'マ' loc_988E: mov al, [bp+var_1] cbw imul si sub di, ax inc cx mov bx, 0Ah mov ax, si cwd idiv bx mov si, ax loc_98A1: cmp cx, 3 jl short loc_985A les bx, [bp+arg_0] add bx, cx mov byte ptr es:[bx], 0 pop di pop si leave retn 6 sub_9846 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_98B5 proc near var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 4 enter 6, 0 push si push di cmp [bp+arg_0], 0 jnz short loc_98C5 xor ax, ax jmp short loc_98DE ; --------------------------------------------------------------------------- loc_98C5: cmp [bp+arg_0], 1 jnz short loc_98D0 mov ax, 28h ; '(' jmp short loc_98DE ; --------------------------------------------------------------------------- loc_98D0: cmp [bp+arg_0], 2 jnz short loc_98DB mov ax, 3E80h jmp short loc_98DE ; --------------------------------------------------------------------------- loc_98DB: mov ax, 3EA8h loc_98DE: mov si, ax mov di, 1F54h call egc_start_copy mov [bp+var_2], 0 jmp short loc_9930 ; --------------------------------------------------------------------------- loc_98EF: mov [bp+var_4], 0 jmp short loc_9921 ; --------------------------------------------------------------------------- loc_98F6: graph_accesspage 1 les bx, _VRAM_PLANE_B add bx, si mov ax, es:[bx] mov [bp+var_6], ax mov al, 0 out dx, al mov bx, word ptr _VRAM_PLANE_B add bx, di mov ax, [bp+var_6] mov es:[bx], ax add [bp+var_4], 2 add si, 2 add di, 2 loc_9921: cmp [bp+var_4], 28h ; '(' jl short loc_98F6 inc [bp+var_2] add di, 28h ; '(' add si, 28h ; '(' loc_9930: cmp [bp+var_2], 0C8h ; 'ネ' jl short loc_98EF call egc_off pop di pop si leave retn 2 sub_98B5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9942 proc near 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 enter 6, 0 push si push di cmp [bp+arg_0], 0 jnz short loc_9952 xor ax, ax jmp short loc_996B ; --------------------------------------------------------------------------- loc_9952: cmp [bp+arg_0], 1 jnz short loc_995D mov ax, 28h ; '(' jmp short loc_996B ; --------------------------------------------------------------------------- loc_995D: cmp [bp+arg_0], 2 jnz short loc_9968 mov ax, 3E80h jmp short loc_996B ; --------------------------------------------------------------------------- loc_9968: mov ax, 3EA8h loc_996B: mov si, ax mov ax, [bp+arg_4] sar ax, 3 mov dx, [bp+arg_2] shl dx, 6 add ax, dx mov dx, [bp+arg_2] shl dx, 4 add ax, dx mov di, ax call egc_start_copy mov [bp+var_2], 0 jmp short loc_99D2 ; --------------------------------------------------------------------------- loc_9991: mov [bp+var_4], 0 jmp short loc_99C3 ; --------------------------------------------------------------------------- loc_9998: graph_accesspage 1 les bx, _VRAM_PLANE_B add bx, si mov ax, es:[bx] mov [bp+var_6], ax mov al, 0 out dx, al mov bx, word ptr _VRAM_PLANE_B add bx, di mov ax, [bp+var_6] mov es:[bx], ax add [bp+var_4], 2 add si, 2 add di, 2 loc_99C3: cmp [bp+var_4], 28h ; '(' jl short loc_9998 inc [bp+var_2] add di, 28h ; '(' add si, 28h ; '(' loc_99D2: cmp [bp+var_2], 0C8h ; 'ネ' jl short loc_9991 call egc_off pop di pop si leave retn 6 sub_9942 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_99E4 proc near 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 enter 6, 0 push si push di cmp [bp+arg_4], 0 jnz short loc_99F4 xor ax, ax jmp short loc_9A0D ; --------------------------------------------------------------------------- loc_99F4: cmp [bp+arg_4], 1 jnz short loc_99FF mov ax, 28h ; '(' jmp short loc_9A0D ; --------------------------------------------------------------------------- loc_99FF: cmp [bp+arg_4], 2 jnz short loc_9A0A mov ax, 3E80h jmp short loc_9A0D ; --------------------------------------------------------------------------- loc_9A0A: mov ax, 3EA8h loc_9A0D: mov si, ax mov di, 1F54h mov ax, [bp+arg_2] imul ax, 50h add si, ax call egc_start_copy mov ax, [bp+arg_2] mov [bp+var_2], ax jmp short loc_9A68 ; --------------------------------------------------------------------------- loc_9A27: mov [bp+var_4], 0 jmp short loc_9A59 ; --------------------------------------------------------------------------- loc_9A2E: graph_accesspage 1 les bx, _VRAM_PLANE_B add bx, si mov ax, es:[bx] mov [bp+var_6], ax mov al, 0 out dx, al mov bx, word ptr _VRAM_PLANE_B add bx, di mov ax, [bp+var_6] mov es:[bx], ax add [bp+var_4], 2 add si, 2 add di, 2 loc_9A59: cmp [bp+var_4], 28h ; '(' jl short loc_9A2E inc [bp+var_2] add di, 28h ; '(' add si, 28h ; '(' loc_9A68: mov ax, [bp+arg_0] add ax, [bp+arg_2] cmp ax, [bp+var_2] jg short loc_9A27 call egc_off pop di pop si leave retn 6 sub_99E4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A7E proc near var_2 = word ptr -2 enter 2, 0 push si push di call grcg_setcolor pascal, (GC_RMW shl 16) + 0 mov si, 14Ch jmp short loc_9AC5 ; --------------------------------------------------------------------------- loc_9A94: mov di, 90h jmp short loc_9ABE ; --------------------------------------------------------------------------- loc_9A99: 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, _VRAM_PLANE_B add bx, [bp+var_2] mov word ptr es:[bx], 0FFFFh add di, 10h loc_9ABE: cmp di, 1F0h jl short loc_9A99 inc si loc_9AC5: cmp si, 15Ch jl short loc_9A94 call grcg_off pop di pop si leave retn sub_9A7E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AD4 proc near push bp mov bp, sp push si push ds push offset aEnd3_txt ; "end3.txt" call sub_95A3 push 1Eh call frame_delay push 1 call palette_white_out call _snd_load c, offset aEnding_m, ds, SND_LOAD_SONG kajacall KAJA_SONG_PLAY pop cx call sub_9A7E push 4 call palette_white_in push 5 call _snd_delay_until_measure pop cx mov si, 0A0h jmp short loc_9B5C ; --------------------------------------------------------------------------- loc_9B1B: push si push 100 lea ax, [si+319] push ax push (299 shl 16) or 4 call egc_shift_left call grcg_setcolor pascal, (GC_RMW shl 16) + 0 lea ax, [si+312] push ax push 100 lea ax, [si+319] push ax push 299 call grcg_boxfill call grcg_off push 1 call frame_delay sub si, 4 loc_9B5C: cmp si, 24h ; '$' jg short loc_9B1B pop si pop bp retn sub_9AD4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B64 proc near push bp mov bp, sp push si push ds push offset aEnd1_txt ; "end1.txt" call sub_95A3 call _snd_load c, offset aEnd1_m, ds, SND_LOAD_SONG kajacall KAJA_SONG_PLAY pop cx mov PaletteTone, 0 call far ptr palette_show graph_accesspage 1 call _pi_slot_load c, 0, offset aEd01_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 push 2 call palette_black_in push 28h ; '(' call frame_delay push 0 call sub_98B5 mov byte_F02A, 2Fh ; '/' mov byte_F02B, 1 push 90014Ch push 2Ch ; ',' push ds push offset end_buf push 6 call sub_9643 push 14h call frame_delay push 1 call palette_black_out push 1 call sub_98B5 push 1 call palette_black_in mov si, 1 jmp short loc_9C2D ; --------------------------------------------------------------------------- loc_9C15: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_9C2D: cmp si, 3 jle short loc_9C15 push 2 call sub_98B5 mov si, 4 jmp short loc_9C54 ; --------------------------------------------------------------------------- loc_9C3C: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_9C54: cmp si, 5 jle short loc_9C3C mov byte_F02A, 26h ; '&' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 6) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' mov si, 7 jmp short loc_9C91 ; --------------------------------------------------------------------------- loc_9C79: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_9C91: cmp si, 9 jle short loc_9C79 mov byte_F02A, 26h ; '&' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 10) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 11) push 6 call sub_9643 push 14h call frame_delay push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 12) push 6 call sub_9643 xor si, si jmp short loc_9D10 ; --------------------------------------------------------------------------- loc_9CDE: graph_accesspage 0 call egc_shift_down pascal, (160 shl 16) or 100, (479 shl 16) or 297, 2 push 3 mov ax, si add ax, ax mov dx, 0C6h ; 'ニ' sub dx, ax push dx push 2 call sub_99E4 push 1 call frame_delay inc si loc_9D10: cmp si, 64h ; 'd' jl short loc_9CDE push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 13) push 6 call sub_9643 mov byte_F02A, 26h ; '&' mov si, 0Eh jmp short loc_9D48 ; --------------------------------------------------------------------------- loc_9D30: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_9D48: cmp si, 0Fh jle short loc_9D30 mov byte_F02A, 2Fh ; '/' mov si, 10h jmp short loc_9D6F ; --------------------------------------------------------------------------- loc_9D57: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_9D6F: cmp si, 11h jle short loc_9D57 mov byte_F02A, 26h ; '&' mov si, 12h jmp short loc_9D96 ; --------------------------------------------------------------------------- loc_9D7E: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_9D96: cmp si, 14h jle short loc_9D7E mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 21) push 6 call sub_9643 mov byte_F02A, 26h ; '&' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 22) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 23) push 6 call sub_9643 graph_accesspage 1 call _pi_slot_load c, 0, offset aEd02_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 push 2 call palette_black_out les bx, _resident cmp es:[bx+mikoconfig_t.shottype], 0 jnz short loc_9E2A push 0 jmp short loc_9E3B ; --------------------------------------------------------------------------- loc_9E2A: les bx, _resident cmp es:[bx+mikoconfig_t.shottype], 1 jnz short loc_9E39 push 2 jmp short loc_9E3B ; --------------------------------------------------------------------------- loc_9E39: push 3 loc_9E3B: call sub_98B5 push 2 call palette_black_in mov byte_F02A, 26h ; '&' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 24) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' mov si, 19h jmp short loc_9E7D ; --------------------------------------------------------------------------- loc_9E65: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_9E7D: cmp si, 1Ah jle short loc_9E65 mov byte_F02A, 26h ; '&' les bx, _resident cmp es:[bx+mikoconfig_t.shottype], 0 jnz loc_9F22 mov si, 1Bh jmp short loc_9EB1 ; --------------------------------------------------------------------------- loc_9E99: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_9EB1: cmp si, 1Ch jle short loc_9E99 mov byte_F02A, 2Fh ; '/' mov si, 1Dh jmp short loc_9ED8 ; --------------------------------------------------------------------------- loc_9EC0: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_9ED8: cmp si, 1Eh jle short loc_9EC0 push 1 call sub_98B5 mov byte_F02A, 26h ; '&' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 31) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 32) push 0Ch call sub_9643 mov byte_F02B, 0 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 33) jmp loc_A092 ; --------------------------------------------------------------------------- loc_9F22: les bx, _resident cmp es:[bx+mikoconfig_t.shottype], 1 jnz loc_9FD3 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 34) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 35) push 6 call sub_9643 mov byte_F02A, 26h ; '&' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 36) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' mov si, 25h ; '%' jmp short loc_9F8E ; --------------------------------------------------------------------------- loc_9F76: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_9F8E: cmp si, 26h ; '&' jle short loc_9F76 mov byte_F02A, 26h ; '&' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 39) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 40) push 0Ch call sub_9643 mov byte_F02B, 0 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 41) jmp loc_A092 ; --------------------------------------------------------------------------- loc_9FD3: les bx, _resident cmp es:[bx+mikoconfig_t.shottype], 2 jnz loc_A097 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 42) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 43) push 6 call sub_9643 mov byte_F02A, 26h ; '&' mov si, 2Ch ; ',' jmp short loc_A029 ; --------------------------------------------------------------------------- loc_A011: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A029: cmp si, 2Dh ; '-' jle short loc_A011 mov byte_F02A, 2Fh ; '/' mov si, 2Eh ; '.' jmp short loc_A050 ; --------------------------------------------------------------------------- loc_A038: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A050: cmp si, 2Fh ; '/' jle short loc_A038 mov byte_F02A, 26h ; '&' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 48) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 49) push 0Ch call sub_9643 mov byte_F02B, 0 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 50) loc_A092: push 9 call sub_9643 loc_A097: call sub_9AD4 pop si pop bp retn sub_9B64 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A09D proc near push bp mov bp, sp push si push ds push offset aEnd2_txt ; "end2.txt" call sub_95A3 call _snd_load c, offset aEnd1_m, ds, SND_LOAD_SONG kajacall KAJA_SONG_PLAY pop cx mov PaletteTone, 0 call far ptr palette_show graph_accesspage 1 call _pi_slot_load c, 0, offset aEd01_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 push 2 call palette_black_in push 28h ; '(' call frame_delay push 0 call sub_98B5 mov byte_F02A, 2Fh ; '/' mov byte_F02B, 1 push 90014Ch push 2Ch ; ',' push ds push offset end_buf push 6 call sub_9643 push 14h call frame_delay push 1 call palette_black_out graph_accesspage 1 call _pi_slot_load c, 0, offset aEd03_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 push 0 call sub_98B5 push 1 call palette_black_in mov si, 1 jmp short loc_A19D ; --------------------------------------------------------------------------- loc_A185: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A19D: cmp si, 3 jle short loc_A185 push 1 call sub_98B5 mov si, 4 jmp short loc_A1C4 ; --------------------------------------------------------------------------- loc_A1AC: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A1C4: cmp si, 9 jle short loc_A1AC push 2 call sub_98B5 mov si, 0Ah jmp short loc_A1EB ; --------------------------------------------------------------------------- loc_A1D3: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A1EB: cmp si, 0Bh jle short loc_A1D3 push 3 call sub_98B5 mov si, 0Ch jmp short loc_A212 ; --------------------------------------------------------------------------- loc_A1FA: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A212: cmp si, 0Dh jle short loc_A1FA push ds push offset aEd03a_rgb ; "ed03a.rgb" call palette_entry_rgb call far ptr palette_show mov byte_F02A, 29h ; ')' mov si, 0Eh jmp short loc_A247 ; --------------------------------------------------------------------------- loc_A22F: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A247: cmp si, 0Fh jle short loc_A22F push 2 call palette_black_out graph_accesspage 1 call _pi_slot_load c, 0, offset aEd04_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 graph_accesspage 0 push 0 call sub_98B5 push 2 call palette_black_in mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 16) push 6 call sub_9643 mov byte_F02A, 29h ; ')' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 17) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' mov si, 12h jmp short loc_A2EA ; --------------------------------------------------------------------------- loc_A2D2: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A2EA: cmp si, 13h jle short loc_A2D2 push 1 call sub_98B5 mov byte_F02A, 29h ; ')' mov si, 14h jmp short loc_A316 ; --------------------------------------------------------------------------- loc_A2FE: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A316: cmp si, 15h jle short loc_A2FE mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 22) push 6 call sub_9643 mov byte_F02A, 29h ; ')' mov si, 17h jmp short loc_A353 ; --------------------------------------------------------------------------- loc_A33B: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A353: cmp si, 18h jle short loc_A33B mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 25) push 6 call sub_9643 mov byte_F02A, 29h ; ')' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 26) push 6 call sub_9643 push 0Ah call frame_delay les bx, _resident cmp es:[bx+mikoconfig_t.shottype], 0 jnz loc_A4EC push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 27) push 6 call sub_9643 push 1Eh call frame_delay push 2 call sub_98B5 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 28) push 6 call sub_9643 push 3 call sub_98B5 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 29) push 6 call sub_9643 mov byte_F02A, 29h ; ')' mov si, 1Eh jmp short loc_A403 ; --------------------------------------------------------------------------- loc_A3EB: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A403: cmp si, 1Fh jle short loc_A3EB mov byte_F02A, 2Fh ; '/' mov si, 20h ; ' ' jmp short loc_A42A ; --------------------------------------------------------------------------- loc_A412: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A42A: cmp si, 24h ; '$' jle short loc_A412 mov byte_F02A, 29h ; ')' mov si, 25h ; '%' jmp short loc_A451 ; --------------------------------------------------------------------------- loc_A439: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A451: cmp si, 26h ; '&' jle short loc_A439 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 39) push 6 call sub_9643 push 2 call palette_black_out graph_accesspage 1 call _pi_slot_load c, 0, offset aEd05_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 push 0 call sub_98B5 push 2 call palette_black_in mov si, 28h ; '(' jmp short loc_A4D3 ; --------------------------------------------------------------------------- loc_A4BB: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A4D3: cmp si, 2Eh ; '.' jle short loc_A4BB mov byte_F02B, 0 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 47) jmp loc_A869 ; --------------------------------------------------------------------------- loc_A4EC: les bx, _resident cmp es:[bx+mikoconfig_t.shottype], 1 jnz loc_A6B6 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 48) push 6 call sub_9643 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 49) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 50) push 6 call sub_9643 mov byte_F02A, 29h ; ')' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 51) push 6 call sub_9643 push 1Eh call frame_delay push 2 call sub_98B5 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 52) push 6 call sub_9643 push 3 call sub_98B5 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 53) push 6 call sub_9643 mov byte_F02A, 29h ; ')' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 54) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 55) push 6 call sub_9643 mov byte_F02A, 29h ; ')' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 56) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 57) push 6 call sub_9643 mov byte_F02A, 29h ; ')' mov si, 3Ah ; ':' jmp short loc_A5F9 ; --------------------------------------------------------------------------- loc_A5E1: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A5F9: cmp si, 3Dh ; '=' jle short loc_A5E1 mov byte_F02A, 2Fh ; '/' mov si, 3Eh ; '>' jmp short loc_A620 ; --------------------------------------------------------------------------- loc_A608: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A620: cmp si, 42h ; 'B' jle short loc_A608 push 2 call palette_black_out graph_accesspage 1 call _pi_slot_load c, 0, offset aEd05_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 push 1 call sub_98B5 push 2 call palette_black_in mov si, 43h ; 'C' jmp short loc_A68C ; --------------------------------------------------------------------------- loc_A674: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A68C: cmp si, 44h ; 'D' jle short loc_A674 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 69) push 0Ch call sub_9643 mov byte_F02B, 0 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 70) jmp loc_A869 ; --------------------------------------------------------------------------- loc_A6B6: push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 71) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 72) push 6 call sub_9643 mov byte_F02A, 29h ; ')' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 73) push 6 call sub_9643 push 1Eh call frame_delay push 2 call sub_98B5 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 74) push 6 call sub_9643 push 3 call sub_98B5 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 75) push 6 call sub_9643 mov byte_F02A, 29h ; ')' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 76) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 77) push 6 call sub_9643 mov byte_F02A, 29h ; ')' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 78) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 79) push 6 call sub_9643 mov byte_F02A, 29h ; ')' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 80) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 81) push 6 call sub_9643 mov byte_F02A, 29h ; ')' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 82) push 6 call sub_9643 mov byte_F02A, 2Fh ; '/' push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 83) push 6 call sub_9643 push 2 call palette_black_out graph_accesspage 1 call _pi_slot_load c, 0, offset aEd05_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 push 2 call sub_98B5 push 2 call palette_black_in mov si, 54h ; 'T' jmp short loc_A842 ; --------------------------------------------------------------------------- loc_A82A: push 90014Ch push 2Ch ; ',' mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax push 6 call sub_9643 inc si loc_A842: cmp si, 5Bh ; '[' jle short loc_A82A push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 92) push 6 call sub_9643 mov byte_F02B, 0 push 90014Ch push 2Ch ; ',' push ds push offset end_buf + (END_LINE_LEN * 93) loc_A869: push 0Ch call sub_9643 call sub_9AD4 pop si pop bp retn sub_A09D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A874 proc near var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 enter 2, 0 push si push di mov si, [bp+arg_4] mov di, [bp+arg_0] mov [bp+var_2], 0 jmp short loc_A898 ; --------------------------------------------------------------------------- loc_A887: push si push [bp+arg_2] push di call over_put_8 inc [bp+var_2] inc di add si, 10h loc_A898: cmp [bp+var_2], 5 jl short loc_A887 pop di pop si leave retn 6 sub_A874 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A8A4 proc near push bp mov bp, sp call grcg_setcolor pascal, (GC_RMW shl 16) + 0 push 1A000C0h push 27F010Fh call grcg_boxfill call grcg_off pop bp retn sub_A8A4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame rotrect proc near arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 push bp mov bp, sp push [bp+arg_4] push [bp+arg_0] call rotrect_animate push 200064h push [bp+arg_2] call sub_9942 push 4 call frame_delay mov PaletteTone, 100 call far ptr palette_show pop bp retn 6 rotrect endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A8FA proc near @@g_str = byte ptr -4 enter 4, 0 push si push di push 6 call _snd_delay_until_measure pop cx xor si, si jmp short loc_A920 ; --------------------------------------------------------------------------- loc_A90C: push 1B000B8h push si call sub_A874 push 4 call frame_delay add si, 5 loc_A920: cmp si, 37h ; '7' jl short loc_A90C push ds push offset aVer1_00 ; "ver 1.00" push 2F00C0h push 210h call _graph_putsa_fx add sp, 0Ah push 8 call _snd_delay_until_measure pop cx mov si, 0B8h jmp short loc_A992 ; --------------------------------------------------------------------------- loc_A947: call grcg_setcolor pascal, (GC_RMW shl 16) + 0 push 528 lea ax, [si+4] push ax push 591 lea ax, [si+19] push ax call grcg_boxfill call grcg_off push 1B0h push si push 32h ; '2' call sub_A874 push ds push offset aVer1_00 ; "ver 1.00" push 2Fh ; '/' lea ax, [si+8] push ax push 210h call _graph_putsa_fx add sp, 0Ah push 1 call frame_delay add si, 4 loc_A992: cmp si, 170h jl short loc_A947 push 9 call _snd_delay_until_measure pop cx mov byte_F02A, 2Fh ; '/' push 1B000C0h push 14h push ds push offset aXxcvsB@b@vrvsv ; "封魔録  STAFF" push 0Ch call sub_9643 push 0Dh call _snd_delay_until_measure pop cx graph_accesspage 1 call _pi_slot_load c, 0, offset aEd06_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 graph_accesspage 0 push 4 push 0 push 29h ; ')' call rotrect call sub_A8A4 push ds push offset aGvgngogigab@b@ ; "プログラム   ZUN" push 2F00C0h push 1A0h call _graph_putsa_fx add sp, 0Ah push 11h call _snd_delay_until_measure pop cx push ds push offset aEd06b_rgb ; "ed06b.rgb" call palette_entry_rgb call far ptr palette_show push 0FCh push 2 push 29h ; ')' call rotrect push 15h call _snd_delay_until_measure pop cx push 200064h push 3 call sub_9942 push ds push offset aEd06c_rgb ; "ed06c.rgb" call palette_entry_rgb call far ptr palette_show push 4 push 3 push 29h ; ')' call rotrect graph_accesspage 1 call _pi_slot_load c, 0, offset aEd07_pi, ds call _pi_slot_put c, 0, large 0 freePISlotLarge 0 graph_accesspage 0 push 19h call _snd_delay_until_measure pop cx call sub_A8A4 push ds push offset aGogigtgbgbgnb@ ; "グラフィック ZUN" push 2F00C0h push 1A0h call _graph_putsa_fx add sp, 0Ah push ds push offset aB@b@b@b@b@b@b@ ; "       高附日向" push 2F00E0h push 1A0h call _graph_putsa_fx add sp, 0Ah push ds push offset aB@b@b@b@bigibG ; "    (オールクリア画)" push 2F00F0h push 1A0h call _graph_putsa_fx add sp, 0Ah push ds push offset aEd07a_rgb ; "ed07a.rgb" call palette_entry_rgb call far ptr palette_show push 0FCh push 0 push 29h ; ')' call rotrect push 1Dh call _snd_delay_until_measure pop cx push ds push offset aEd07b_rgb ; "ed07b.rgb" call palette_entry_rgb call far ptr palette_show push 8 push 1 push 0E9h call rotrect push 21h ; '!' call _snd_delay_until_measure pop cx push 200064h push 2 call sub_9942 push 0F8h push 2 push 0E9h call rotrect push 25h ; '%' call _snd_delay_until_measure pop cx call sub_A8A4 push ds push offset aVlvtvrvhvbb@b@ ; "MUSIC  ZUN" push 2F00C0h push 1B0h call _graph_putsa_fx add sp, 0Ah push ds push offset aEd07b_rgb ; "ed07b.rgb" call palette_entry_rgb call far ptr palette_show push 8 push 3 push 0E9h call rotrect graph_accesspage 1 call _pi_slot_load c, 0, offset aEd08_pi, ds call _pi_slot_put c, 0, large 0 graph_accesspage 0 push 29h ; ')' call _snd_delay_until_measure pop cx call _pi_slot_palette_apply stdcall, 0 pop cx freePISlotLarge 0 push 0F8h push 0 push 0E9h call rotrect push 2Dh ; '-' call _snd_delay_until_measure pop cx push ds push offset aEd08a_rgb ; "ed08a.rgb" call palette_entry_rgb call far ptr palette_show push 0Ch push 1 push 29h ; ')' call rotrect push 31h ; '1' call _snd_delay_until_measure pop cx call sub_A8A4 push ds push offset aVsvdvrvsb@vovk ; "TEST PLAYER" push 2F00C0h push 1A0h call _graph_putsa_fx add sp, 0Ah push ds push offset aB@b@b@b@vivivs ; "    かおる" push 2F00E0h push 1A0h call _graph_putsa_fx add sp, 0Ah push ds push offset aB@b@b@b@vbbVv ; "    C−W" push 2F00F8h push 1A0h call _graph_putsa_fx add sp, 0Ah push ds push offset aB@b@Orucb@mbiS ; "   山田 恵一郎" push 2F0110h push 1A0h call _graph_putsa_fx add sp, 0Ah push ds push offset aVVSSxrivVVVV ; " その他大勢のみなさん" push 2F0128h push 1A0h call _graph_putsa_fx add sp, 0Ah push ds push offset aEd08b_rgb ; "ed08b.rgb" call palette_entry_rgb call far ptr palette_show push 0F4h push 2 push 29h ; ')' call rotrect push 35h ; '5' call _snd_delay_until_measure pop cx push ds push offset aEd08c_rgb ; "ed08c.rgb" call palette_entry_rgb call far ptr palette_show push 0Ch push 3 push 29h ; ')' call rotrect push 39h ; '9' call _snd_delay_until_measure pop cx push 4 call palette_black_out graph_accesspage 1 call _pi_slot_load c, 0, offset aEd09_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 call graph_copy_page pascal, 0 push 4 call palette_black_in push 64h ; 'd' call frame_delay graph_accesspage 1 push ds push offset aVsvivbvovlb@vs mov al, byte_F02A cbw push ax push 600018h call _graph_putsa_fx add sp, 0Ah push 150060h push 18h call sub_97F1 add sp, 6 push 0C8h ; 'ネ' call frame_delay graph_accesspage 1 push ds push offset aB@nPiuU_ ; " 最終得点" mov al, byte_F02A cbw push ax push 800040h call _graph_putsa_fx add sp, 0Ah push 0C00080h pushd [_score] call sub_95CB push 100080h push 40h call sub_97F1 add sp, 6 push 64h ; 'd' call frame_delay graph_accesspage 1 push ds push offset aGrgugegbgjgeb ; "コンティニュー" mov al, byte_F02A cbw push ax push 0A00040h call _graph_putsa_fx add sp, 0Ah push (256 shl 16) or 160 les bx, _resident mov ax, es:[bx+mikoconfig_t.continues_used] add ax, gb_0_ push ax push 15 call graph_gaiji_putc push 1000A0h push 40h call sub_97F1 add sp, 6 push 64h ; 'd' call frame_delay graph_accesspage 1 push ds push offset aB@Gigugn ; "  ランク" mov al, byte_F02A cbw push ax push 0C00040h call _graph_putsa_fx add sp, 0Ah push (208 shl 16) or 192 push GAIJI_W push ds mov al, _rank cbw shl ax, 3 add ax, offset _RANKS_CENTER push ax push 15 call graph_gaiji_puts push 1000C0h push 40h call sub_97F1 add sp, 6 push 64h ; 'd' call frame_delay graph_accesspage 1 push ds push offset aGvgmgcgdbPik ; "プレイヤー初期" mov al, byte_F02A cbw push ax push 0E00040h call _graph_putsa_fx add sp, 0Ah push (256 shl 16) or 224 les bx, _resident mov al, es:[bx+mikoconfig_t.start_lives] mov ah, 0 add ax, gb_1_ push ax push 15 call graph_gaiji_putc push 1000E0h push 40h call sub_97F1 add sp, 6 push 64h ; 'd' call frame_delay graph_accesspage 1 push ds push offset aCMvpik ; " 霊撃初期数" mov al, byte_F02A cbw push ax push 1000040h call _graph_putsa_fx add sp, 0Ah push (256 shl 16) or 256 les bx, _resident mov al, es:[bx+mikoconfig_t.start_bombs] mov ah, 0 add ax, gb_0_ push ax push 15 call graph_gaiji_putc push 100100h push 40h call sub_97F1 add sp, 6 push 96h call frame_delay graph_accesspage 1 les bx, _resident mov di, es:[bx+mikoconfig_t.skill] cmp di, 64h ; 'd' jle short loc_AEAC mov di, 64h ; 'd' jmp short loc_AEB2 ; --------------------------------------------------------------------------- loc_AEAC: or di, di jge short loc_AEB2 xor di, di loc_AEB2: push ds push offset aVavVVSrso ; "あなたの腕前" mov al, byte_F02A cbw push ax push 1200040h call _graph_putsa_fx add sp, 0Ah push di push ss lea ax, [bp+@@g_str] push ax call sub_9846 push (192 shl 16) or 288 push GAIJI_W push ss lea ax, [bp+@@g_str] push ax push 15 call graph_gaiji_puts cmp di, 64h ; 'd' jnz short loc_AEEF xor si, si jmp short loc_AF56 ; --------------------------------------------------------------------------- loc_AEEF: cmp di, 5Ah ; 'Z' jl short loc_AEF9 mov si, 1 jmp short loc_AF56 ; --------------------------------------------------------------------------- loc_AEF9: cmp di, 50h ; 'P' jl short loc_AF03 mov si, 2 jmp short loc_AF56 ; --------------------------------------------------------------------------- loc_AF03: cmp di, 46h ; 'F' jl short loc_AF17 cmp di, 4Dh ; 'M' jnz short loc_AF12 mov si, 3 jmp short loc_AF56 ; --------------------------------------------------------------------------- loc_AF12: mov si, 4 jmp short loc_AF56 ; --------------------------------------------------------------------------- loc_AF17: cmp di, 3Ch ; '<' jl short loc_AF21 mov si, 5 jmp short loc_AF56 ; --------------------------------------------------------------------------- loc_AF21: cmp di, 32h ; '2' jl short loc_AF2B mov si, 6 jmp short loc_AF56 ; --------------------------------------------------------------------------- loc_AF2B: cmp di, 28h ; '(' jl short loc_AF35 mov si, 7 jmp short loc_AF56 ; --------------------------------------------------------------------------- loc_AF35: cmp di, 1Eh jl short loc_AF3F mov si, 8 jmp short loc_AF56 ; --------------------------------------------------------------------------- loc_AF3F: cmp di, 14h jl short loc_AF49 mov si, 9 jmp short loc_AF56 ; --------------------------------------------------------------------------- loc_AF49: cmp di, 0Ah jl short loc_AF53 mov si, 0Ah jmp short loc_AF56 ; --------------------------------------------------------------------------- loc_AF53: mov si, 0Bh loc_AF56: mov ax, si imul ax, END_LINE_LEN add ax, offset end_buf push ds push ax mov al, byte_F02A cbw push ax push 12000F0h call _graph_putsa_fx add sp, 0Ah push 60120h push 40h call sub_97F1 add sp, 6 push 78h ; 'x' call frame_delay push 180120h push 0C0h call sub_97F1 add sp, 6 push 0C8h ; 'ネ' call frame_delay graph_accesspage 1 push ds push offset aVpvxvxvvb@vyvt ; "1997 ZUN (Amusement Makers)" mov al, byte_F02A cbw push ax push 1600040h call _graph_putsa_fx add sp, 0Ah push 120160h push 40h call sub_97F1 add sp, 6 call _key_delay push 5 call palette_black_out nopcall sub_AFE7 call graph_clear pop di pop si leave retn sub_A8FA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_AFE7 proc far push bp mov bp, sp call scoredat_is_extra_unlocked or ax, ax jz loc_B07D les bx, _resident cmp es:[bx+mikoconfig_t.continues_used], 0 jnz short loc_B07D call _pi_slot_load c, 0, offset aAll_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 push 2 call palette_black_in push 96h call frame_delay call _pi_slot_load c, 0, offset aBut_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 call _key_delay push 5 call palette_black_out loc_B07D: pop bp retf sub_AFE7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B07F proc far push bp mov bp, sp call scoredat_is_extra_unlocked or ax, ax jz loc_B115 mov PaletteTone, 0 call far ptr palette_show call _pi_slot_load c, 0, offset aAll_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 push 2 call palette_black_in push 96h call frame_delay call _pi_slot_load c, 0, offset aExtra_pi, ds call _pi_slot_palette_apply stdcall, 0 pop cx call _pi_slot_put c, 0, large 0 freePISlotLarge 0 call _key_delay push 5 call palette_black_out loc_B115: pop bp retf sub_B07F 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 cfg_load or ax, ax jz loc_B1FE les bx, _resident cmp es:[bx+mikoconfig_t.stage], 7Fh jnz loc_B1FE call _game_init_main call gaiji_backup push ds push offset aMikoft_bft ; "MIKOFT.bft" call gaiji_entry_bfnt call _snd_pmd_resident call _snd_mmd_resident les bx, _resident cmp es:[bx+mikoconfig_t.bgm_mode], 0 jnz short loc_B161 mov _snd_midi_active, 0 jmp short loc_B189 ; --------------------------------------------------------------------------- loc_B161: les bx, _resident cmp es:[bx+mikoconfig_t.bgm_mode], 1 jnz short loc_B173 mov _snd_midi_active, 0 jmp short loc_B184 ; --------------------------------------------------------------------------- loc_B173: les bx, _resident cmp es:[bx+mikoconfig_t.bgm_mode], 2 jnz short loc_B189 mov al, _snd_midi_possible mov _snd_midi_active, al loc_B184: call _snd_determine_mode loc_B189: graph_accesspage 0 mov dx, 0A4h out dx, al call super_entry_bfnt pascal, ds, offset aEndft_bft ; "endft.bft" push 64h ; 'd' call frame_delay les bx, _resident cmp es:[bx+mikoconfig_t.rank], 4 jz short loc_B1C2 cmp es:[bx+mikoconfig_t.continues_used], 0 jz short loc_B1BA call sub_9B64 jmp short loc_B1BD ; --------------------------------------------------------------------------- loc_B1BA: call sub_A09D loc_B1BD: call sub_A8FA jmp short loc_B1C6 ; --------------------------------------------------------------------------- loc_B1C2: call sub_B07F loc_B1C6: mov PaletteTone, 50 call far ptr palette_show call score_enter mov PaletteTone, 0 call far ptr palette_show call gaiji_restore call _game_exit pushd 0 push ds push offset path ; "op" push ds push offset path ; "op" call _execl add sp, 0Ch loc_B1FE: pop bp retf _main endp maine_01_TEXT ends ; =========================================================================== maine_02_TEXT segment word public 'CODE' use16 extern _graph_putsa_fx:proc extern _key_delay:proc extern _vram_planes_set:proc extern _pi_slot_load:proc extern FRAME_DELAY:proc extern _input_sense:proc extern _game_exit:proc extern _snd_mmd_resident:proc extern _snd_determine_mode:proc extern _snd_pmd_resident:proc extern _snd_load:proc extern _game_init_main:proc extern _pi_slot_palette_apply:proc extern _pi_slot_put:proc extern _snd_kaja_interrupt:proc extern _snd_delay_until_measure:proc maine_02_TEXT ends ; =========================================================================== maine_03_TEXT segment byte public 'CODE' use16 extern CFG_LOAD:proc maine_03_TEXT ends ; =========================================================================== maine_04_TEXT segment byte public 'CODE' use16 extern SCOREDAT_IS_EXTRA_UNLOCKED:proc extern SCORE_ENTER:proc maine_04_TEXT ends ; =========================================================================== maine_05_TEXT segment byte public 'CODE' use16 extern EGC_START_COPY:proc extern ROTRECT_ANIMATE:proc maine_05_TEXT ends .data include th02/strings/ranks_center[data].asm unk_D030 db 50h dup(0) label byte_D080 byte db 0AAh, 0AAh, 55h, 55h, 0AAh, 0AAh, 55h, 55h db 0AAh, 0AAh, 55h, 55h, 0AAh, 0AAh, 55h, 55h db 0AAh, 0AAh, 55h, 55h, 0AAh, 0AAh, 55h, 55h db 0AAh, 0AAh, 55h, 55h, 0AAh, 0AAh, 55h, 55h db 33h, 33h, 33h, 33h, 0CCh, 0CCh, 0CCh, 0CCh db 33h, 33h, 33h, 33h, 0CCh, 0CCh, 0CCh, 0CCh db 33h, 33h, 33h, 33h, 0CCh, 0CCh, 0CCh, 0CCh db 33h, 33h, 33h, 33h, 0CCh, 0CCh, 0CCh, 0CCh db 0CCh, 0CCh, 0CCh, 0CCh, 33h, 33h, 33h, 33h db 0CCh, 0CCh, 0CCh, 0CCh, 33h, 33h, 33h, 33h db 0CCh, 0CCh, 0CCh, 0CCh, 33h, 33h, 33h, 33h db 0CCh, 0CCh, 0CCh, 0CCh, 33h, 33h, 33h, 33h aEnd3_txt db 'end3.txt',0 aEnding_m db 'ending.m',0 aEnd1_txt db 'end1.txt',0 aEnd1_m db 'end1.m',0 aEd01_pi db 'ed01.pi',0 aEd02_pi db 'ed02.pi',0 aEnd2_txt db 'end2.txt',0 aEd03_pi db 'ed03.pi',0 aEd03a_rgb db 'ed03a.rgb',0 aEd04_pi db 'ed04.pi',0 aEd05_pi db 'ed05.pi',0 aVer1_00 db 'ver 1.00',0 aXxcvsB@b@vrvsv db '封魔録  STAFF',0 aEd06_pi db 'ed06.pi',0 aGvgngogigab@b@ db 'プログラム   ZUN',0 aEd06b_rgb db 'ed06b.rgb',0 aEd06c_rgb db 'ed06c.rgb',0 aEd07_pi db 'ed07.pi',0 aGogigtgbgbgnb@ db 'グラフィック ZUN',0 aB@b@b@b@b@b@b@ db '       高附日向',0 aB@b@b@b@bigibG db '    (オールクリア画)',0 aEd07a_rgb db 'ed07a.rgb',0 aEd07b_rgb db 'ed07b.rgb',0 aVlvtvrvhvbb@b@ db 'MUSIC  ZUN',0 aEd08_pi db 'ed08.pi',0 aEd08a_rgb db 'ed08a.rgb',0 aVsvdvrvsb@vovk db 'TEST PLAYER',0 aB@b@b@b@vivivs db '    かおる',0 aB@b@b@b@vbbVv db '    C−W',0 aB@b@Orucb@mbiS db '   山田 恵一郎',0 aVVSSxrivVVVV db ' その他大勢のみなさん',0 aEd08b_rgb db 'ed08b.rgb',0 aEd08c_rgb db 'ed08c.rgb',0 aEd09_pi db 'ED09.pi',0 aVsvivbvovlb@vs db 'Thank you for playing',0 aB@nPiuU_ db ' 最終得点',0 aGrgugegbgjgeb db 'コンティニュー',0 aB@Gigugn db '  ランク',0 aGvgmgcgdbPik db 'プレイヤー初期',0 aCMvpik db ' 霊撃初期数',0 aVavVVSrso db 'あなたの腕前',0 aVpvxvxvvb@vyvt db '1997 ZUN (Amusement Makers)',0 aAll_pi db 'all.pi',0 aBut_pi db 'but.pi',0 aExtra_pi db 'extra.pi',0 aMikoft_bft db 'MIKOFT.bft',0 aEndft_bft db 'endft.bft',0 ; char path[] path db 'op',0 include libs/master.lib/bfnt_id[data].asm include libs/master.lib/clip[data].asm include libs/master.lib/edges[data].asm include libs/master.lib/fil[data].asm include libs/master.lib/dos_ropen[data].asm include libs/master.lib/gaiji_backup[data].asm include libs/master.lib/gaiji_entry_bfnt[data].asm include libs/master.lib/grp[data].asm include libs/master.lib/pal[data].asm include libs/master.lib/pf[data].asm include libs/master.lib/sin8[data].asm include libs/master.lib/tx[data].asm include libs/master.lib/version[data].asm include libs/master.lib/vs[data].asm include libs/master.lib/mem[data].asm include libs/master.lib/super_entry_bfnt[data].asm include libs/master.lib/superpa[data].asm public _key_delay_groups _key_delay_groups db 5, 3, 0 db 0 include th02/formats/pfopen[data].asm extern _rank:byte .data? end_buf db 100 dup(END_LINE_LEN dup(?)) byte_F02A db ? byte_F02B db ? include libs/master.lib/clip[bss].asm include libs/master.lib/fil[bss].asm include libs/master.lib/pal[bss].asm include libs/master.lib/vs[bss].asm include libs/master.lib/vsync[bss].asm include libs/master.lib/mem[bss].asm include libs/master.lib/superpa[bss].asm include th01/hardware/vram_planes[bss].asm include th02/formats/pi_slots[bss].asm include libs/master.lib/pfint21[bss].asm include th02/hardware/input_sense[bss].asm include th02/snd/snd[bss].asm include th02/snd/load[bss].asm extern _resident:dword extern _score:dword end