mirror of https://github.com/nmlgc/ReC98.git
376 lines
10 KiB
NASM
376 lines
10 KiB
NASM
;
|
|
; +-------------------------------------------------------------------------+
|
|
; | This file has been generated by The Interactive Disassembler (IDA) |
|
|
; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> |
|
|
; +-------------------------------------------------------------------------+
|
|
;
|
|
; 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
|
|
|
|
.386
|
|
.model use16 large _TEXT
|
|
|
|
include ReC98.inc
|
|
include th02/th02.inc
|
|
|
|
extern _execl:proc
|
|
|
|
maine_01 group END_TEXT, maine_01_TEXT
|
|
|
|
; ===========================================================================
|
|
|
|
; 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
|
|
|
|
; ===========================================================================
|
|
|
|
END_TEXT segment byte public 'CODE' use16
|
|
@end_bad_animate$qv procdesc near
|
|
@end_good_animate$qv procdesc near
|
|
@staffroll_and_verdict_animate$qv procdesc near
|
|
END_TEXT ends
|
|
|
|
; Segment type: Pure code
|
|
maine_01_TEXT segment byte public 'CODE' use16
|
|
assume cs:maine_01
|
|
;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
|
|
public @extra_unlock_animate$qv
|
|
@extra_unlock_animate$qv 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_load c, 0, offset aAll_pi, ds
|
|
call _pi_palette_apply stdcall, 0
|
|
pop cx
|
|
call _pi_put_8 c, 0, large 0
|
|
freePISlotLarge 0
|
|
push 2
|
|
call palette_black_in
|
|
call @frame_delay$qi pascal, 150
|
|
call _pi_load c, 0, offset aBut_pi, ds
|
|
call _pi_palette_apply stdcall, 0
|
|
pop cx
|
|
call _pi_put_8 c, 0, large 0
|
|
freePISlotLarge 0
|
|
call @key_delay$qv
|
|
push 5
|
|
call palette_black_out
|
|
|
|
loc_B07D:
|
|
pop bp
|
|
retf
|
|
@extra_unlock_animate$qv 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_load c, 0, offset aAll_pi, ds
|
|
call _pi_palette_apply stdcall, 0
|
|
pop cx
|
|
call _pi_put_8 c, 0, large 0
|
|
freePISlotLarge 0
|
|
push 2
|
|
call palette_black_in
|
|
call @frame_delay$qi pascal, 150
|
|
call _pi_load c, 0, offset aExtra_pi, ds
|
|
call _pi_palette_apply stdcall, 0
|
|
pop cx
|
|
call _pi_put_8 c, 0, large 0
|
|
freePISlotLarge 0
|
|
call @key_delay$qv
|
|
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$qv
|
|
or ax, ax
|
|
jz loc_B1FE
|
|
les bx, _resident
|
|
cmp es:[bx+mikoconfig_t.stage], 7Fh
|
|
jnz loc_B1FE
|
|
call @game_init_main$qv
|
|
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, 164 ; Port 00A4h: Page display register
|
|
out dx, al
|
|
call super_entry_bfnt pascal, ds, offset aEndft_bft ; "endft.bft"
|
|
call @frame_delay$qi pascal, 100
|
|
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 @end_bad_animate$qv
|
|
jmp short loc_B1BD
|
|
; ---------------------------------------------------------------------------
|
|
|
|
loc_B1BA:
|
|
call @end_good_animate$qv
|
|
|
|
loc_B1BD:
|
|
call @staffroll_and_verdict_animate$qv
|
|
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$qv
|
|
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
|
|
|
|
; ===========================================================================
|
|
|
|
SHARED segment word public 'CODE' use16
|
|
extern @key_delay$qv:proc
|
|
extern _pi_load:proc
|
|
extern @FRAME_DELAY$QI:proc
|
|
extern @game_exit$qv:proc
|
|
extern _snd_mmd_resident:proc
|
|
extern _snd_determine_mode:proc
|
|
extern _snd_pmd_resident:proc
|
|
extern @game_init_main$qv:proc
|
|
extern _pi_palette_apply:proc
|
|
extern _pi_put_8:proc
|
|
SHARED ends
|
|
|
|
; ===========================================================================
|
|
|
|
maine_03_TEXT segment word public 'CODE' use16
|
|
extern @cfg_load$qv: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
|
|
|
|
.data
|
|
|
|
aAll_pi = ($ - 7)
|
|
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
|
|
|
|
.data?
|
|
|
|
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
|
|
|
|
end
|