mirror of https://github.com/nmlgc/ReC98.git
3992 lines
79 KiB
NASM
3992 lines
79 KiB
NASM
;
|
||
; +-------------------------------------------------------------------------+
|
||
; | This file has been generated by The Interactive Disassembler (IDA) |
|
||
; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> |
|
||
; +-------------------------------------------------------------------------+
|
||
;
|
||
; 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
|
||
.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.inc
|
||
include th02/music/music.inc
|
||
|
||
extern SCOPY@:proc
|
||
extern __mbcjmstojis:proc
|
||
extern __mbctype:byte
|
||
extern __ctype: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
|
||
include libs/master.lib/js_start.asm
|
||
include libs/master.lib/js_sense.asm
|
||
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
|
||
|
||
include th03/formats/cfg.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
public START_GAME
|
||
start_game proc near
|
||
|
||
var_4 = word ptr -4
|
||
var_2 = word ptr -2
|
||
|
||
enter 4, 0
|
||
push si
|
||
les bx, _resident
|
||
mov es:[bx+resident_t.demo_num], 0
|
||
mov es:[bx+resident_t.pid_winner], 0
|
||
mov es:[bx+resident_t.story_stage], 0
|
||
mov es:[bx+resident_t.RESIDENT_is_cpu][0], 0
|
||
mov es:[bx+resident_t.RESIDENT_is_cpu][1], 1
|
||
mov es:[bx+resident_t.game_mode], GM_STORY
|
||
mov es:[bx+resident_t.story_lives], CREDIT_LIVES
|
||
mov es:[bx+resident_t.show_score_menu], 0
|
||
mov es:[bx+resident_t.RESIDENT_playchar_paletted][1], -1
|
||
call sub_BD9A
|
||
or al, al
|
||
jz short loc_9A59
|
||
mov al, 1
|
||
jmp loc_9B9A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9A59:
|
||
les bx, _resident
|
||
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
|
||
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 _resident
|
||
mov eax, es:[bx+resident_t.rand]
|
||
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, _resident
|
||
add bx, si
|
||
mov al, byte ptr [bp+var_2]
|
||
mov es:[bx+resident_t.story_opponents], al
|
||
mov bx, word ptr _resident
|
||
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
|
||
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+resident_t.story_opponents], al
|
||
|
||
loc_9ADA:
|
||
inc si
|
||
|
||
loc_9ADB:
|
||
cmp si, 6
|
||
jl short loc_9A85
|
||
les bx, _resident
|
||
mov al, es:[bx+resident_t.story_opponents]
|
||
mov es:[bx+resident_t.RESIDENT_playchar_paletted][1], al
|
||
mov al, byte ptr [bp+var_4]
|
||
add al, al
|
||
inc al
|
||
mov es:[bx+resident_t.story_opponents][6], al
|
||
mov es:[bx+resident_t.story_opponents][7], (1 + (PLAYCHAR_CHIYURI * 2))
|
||
cmp es:[bx+resident_t.RESIDENT_playchar_paletted][0], (1 + (PLAYCHAR_CHIYURI * 2))
|
||
jnz short loc_9B07
|
||
inc es:[bx+resident_t.story_opponents][7]
|
||
|
||
loc_9B07:
|
||
les bx, _resident
|
||
mov es:[bx+resident_t.story_opponents][8], (1 + (PLAYCHAR_YUMEMI * 2))
|
||
cmp es:[bx+resident_t.RESIDENT_playchar_paletted][0], (1 + (PLAYCHAR_YUMEMI * 2))
|
||
jnz short loc_9B1B
|
||
inc es:[bx+resident_t.story_opponents][8]
|
||
|
||
loc_9B1B:
|
||
xor si, si
|
||
jmp short loc_9B39
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9B1F:
|
||
les bx, _resident
|
||
add bx, si
|
||
mov al, es:[bx+resident_t.story_opponents]
|
||
mov ah, 0
|
||
dec ax
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
cmp ax, 9
|
||
jge loc_9A59
|
||
inc si
|
||
|
||
loc_9B39:
|
||
cmp si, STAGE_COUNT
|
||
jl short loc_9B1F
|
||
xor si, si
|
||
jmp short loc_9B4E
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9B42:
|
||
les bx, _resident
|
||
add bx, si
|
||
mov es:[bx+resident_t.score_last], 0
|
||
inc si
|
||
|
||
loc_9B4E:
|
||
cmp si, (PLAYER_COUNT * SCORE_DIGITS)
|
||
jl short loc_9B42
|
||
les bx, _resident
|
||
mov es:[bx+resident_t.rem_credits], 3
|
||
mov es:[bx+resident_t.op_skip_animation], 0
|
||
mov al, es:[bx+resident_t.rank]
|
||
mov ah, 0
|
||
imul ax, 25
|
||
add al, 70
|
||
mov es:[bx+resident_t.skill], al
|
||
call cfg_save
|
||
call gaiji_restore
|
||
kajacall KAJA_SONG_STOP
|
||
call game_exit
|
||
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
|
||
start_game 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
|
||
public START_VS
|
||
start_vs proc near
|
||
|
||
var_2 = word ptr -2
|
||
|
||
enter 2, 0
|
||
push si
|
||
xor si, si
|
||
les bx, _resident
|
||
cmp es:[bx+resident_t.game_mode], GM_VS
|
||
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 input_mode_interface
|
||
or si, si
|
||
jnz short loc_9C7E
|
||
test _input_sp.lo, low INPUT_UP
|
||
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 _input_sp.lo, low INPUT_DOWN
|
||
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 _input_sp.lo, low INPUT_SHOT
|
||
jnz short loc_9C9B
|
||
test _input_sp.hi, high INPUT_OK
|
||
jnz short loc_9C9B
|
||
|
||
loc_9C7E:
|
||
mov si, _input_sp
|
||
push 1
|
||
call frame_delay
|
||
jmp short loc_9C1B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9C8B:
|
||
les bx, _resident
|
||
mov al, es:[bx+resident_t.game_mode]
|
||
mov ah, 0
|
||
add ax, -GM_VS
|
||
mov [bp+var_2], ax
|
||
|
||
loc_9C9B:
|
||
cmp [bp+var_2], VS_CPU_CPU
|
||
jnz short loc_9CA5
|
||
mov al, 1
|
||
jmp short loc_9CA7
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9CA5:
|
||
mov al, 0
|
||
|
||
loc_9CA7:
|
||
les bx, _resident
|
||
mov es:[bx+resident_t.RESIDENT_is_cpu][0], al
|
||
cmp [bp+var_2], VS_1P_2P
|
||
jz short loc_9CB9
|
||
mov al, 1
|
||
jmp short loc_9CBB
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9CB9:
|
||
mov al, 0
|
||
|
||
loc_9CBB:
|
||
les bx, _resident
|
||
mov es:[bx+resident_t.RESIDENT_is_cpu][1], al
|
||
mov es:[bx+resident_t.demo_num], 0
|
||
mov es:[bx+resident_t.pid_winner], 0
|
||
mov es:[bx+resident_t.story_stage], 0
|
||
mov al, byte ptr [bp+var_2]
|
||
add al, GM_VS
|
||
mov es:[bx+resident_t.game_mode], al
|
||
mov es:[bx+resident_t.show_score_menu], 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, _resident
|
||
mov es:[bx+resident_t.game_mode], GM_NONE
|
||
mov al, 1
|
||
jmp short loc_9D49
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9D03:
|
||
mov [bp+var_2], 0
|
||
jmp short loc_9D19
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9D0A:
|
||
les bx, _resident
|
||
add bx, [bp+var_2]
|
||
mov es:[bx+resident_t.score_last], 0
|
||
inc [bp+var_2]
|
||
|
||
loc_9D19:
|
||
cmp [bp+var_2], (PLAYER_COUNT * SCORE_DIGITS)
|
||
jl short loc_9D0A
|
||
call cfg_save
|
||
call gaiji_restore
|
||
kajacall KAJA_SONG_STOP
|
||
call game_exit
|
||
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
|
||
start_vs endp
|
||
|
||
include th03/start.asm
|
||
|
||
; =============== 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 _input_sp, INPUT_NONE
|
||
xor si, si
|
||
jmp short loc_9E43
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9E24:
|
||
call input_mode_interface
|
||
les bx, _resident
|
||
inc es:[bx+resident_t.rand]
|
||
inc si
|
||
cmp si, 208h
|
||
jle short loc_9E3C
|
||
call start_demo
|
||
|
||
loc_9E3C:
|
||
push 1
|
||
call frame_delay
|
||
|
||
loc_9E43:
|
||
cmp _input_sp, INPUT_NONE
|
||
jz short loc_9E24
|
||
call super_put pascal, large (160 shl 16) or 256, 0
|
||
mov si, 176
|
||
jmp short loc_9E76
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9E5C:
|
||
push si
|
||
call sub_B10A
|
||
call super_put pascal, si, large (256 shl 16) or 2
|
||
call frame_delay pascal, 1
|
||
add si, 8
|
||
|
||
loc_9E76:
|
||
cmp si, 288
|
||
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
|
||
public SCORE_MENU
|
||
score_menu proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
les bx, _resident
|
||
mov es:[bx+resident_t.story_stage], STAGE_NONE
|
||
mov es:[bx+resident_t.show_score_menu], 1
|
||
mov es:[bx+resident_t.game_mode], GM_NONE
|
||
xor si, si
|
||
jmp short loc_9EA6
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9E9A:
|
||
les bx, _resident
|
||
add bx, si
|
||
mov es:[bx+resident_t.score_last], 0
|
||
inc si
|
||
|
||
loc_9EA6:
|
||
cmp si, (PLAYER_COUNT * SCORE_DIGITS)
|
||
jl short loc_9E9A
|
||
call cfg_save
|
||
call gaiji_restore
|
||
kajacall KAJA_SONG_STOP
|
||
call super_free
|
||
call game_exit
|
||
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
|
||
score_menu endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
public MAIN_PUT
|
||
main_put 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
|
||
main_put endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
public OPTION_PUT
|
||
option_put 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, _resident
|
||
mov al, es:[bx+resident_t.rank]
|
||
mov ah, 0
|
||
mov bx, ax
|
||
cmp bx, RANK_LUNATIC
|
||
ja loc_A092
|
||
add bx, bx
|
||
jmp cs:off_A099[bx]
|
||
|
||
@@easy:
|
||
push (38 shl 16) + 17
|
||
push ds
|
||
push offset gpEASY
|
||
jmp loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
@@normal:
|
||
push (37 shl 16) + 17
|
||
push ds
|
||
push offset gpNORMAL
|
||
jmp loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
@@hard:
|
||
push (38 shl 16) + 17
|
||
push ds
|
||
push offset gpHARD
|
||
jmp loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
@@lunatic:
|
||
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, _resident
|
||
mov al, es:[bx+resident_t.bgm_mode]
|
||
mov ah, 0
|
||
or ax, ax
|
||
jz short loc_A006
|
||
cmp ax, SND_BGM_FM
|
||
jz short @@fm
|
||
cmp ax, SND_BGM_MIDI
|
||
jz short @@midi
|
||
jmp loc_A092
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A006:
|
||
push (35 shl 16) + 19
|
||
push ds
|
||
push offset gpOFF
|
||
jmp short loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
@@fm:
|
||
push (35 shl 16) + 19
|
||
push ds
|
||
push offset gpFM_86
|
||
jmp short loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
@@midi:
|
||
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, _resident
|
||
mov al, es:[bx+resident_t.key_mode]
|
||
mov ah, 0
|
||
or ax, ax
|
||
jz short @@key_vs_key
|
||
cmp ax, KM_JOY_KEY
|
||
jz short @@joy_vs_key
|
||
cmp ax, KM_KEY_JOY
|
||
jz short @@key_vs_joy
|
||
jmp short loc_A092
|
||
; ---------------------------------------------------------------------------
|
||
|
||
@@key_vs_key:
|
||
push (37 shl 16) + 21
|
||
push ds
|
||
push offset gpKEY_VS_KEY
|
||
jmp short loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
@@joy_vs_key:
|
||
push (37 shl 16) + 21
|
||
push ds
|
||
push offset gpJOY_VS_KEY
|
||
jmp short loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
@@key_vs_joy:
|
||
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
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 0
|
||
off_A099 dw offset @@easy
|
||
dw offset @@normal
|
||
dw offset @@hard
|
||
dw offset @@lunatic
|
||
option_put endp
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
public MENU_SEL_MOVE
|
||
menu_sel_move proc near
|
||
|
||
arg_0 = byte ptr 4
|
||
arg_2 = byte ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
mov al, _menu_sel
|
||
cbw
|
||
push ax
|
||
push 1
|
||
call _putfunc
|
||
mov al, [bp+arg_0]
|
||
add _menu_sel, al
|
||
cmp _menu_sel, 0
|
||
jge short loc_A0C3
|
||
mov al, [bp+arg_2]
|
||
mov _menu_sel, al
|
||
|
||
loc_A0C3:
|
||
mov al, _menu_sel
|
||
cmp al, [bp+arg_2]
|
||
jle short loc_A0D0
|
||
mov _menu_sel, 0
|
||
|
||
loc_A0D0:
|
||
mov al, _menu_sel
|
||
cbw
|
||
push ax
|
||
push 0E1h
|
||
call _putfunc
|
||
pop bp
|
||
retn 4
|
||
menu_sel_move endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
public MAIN_UPDATE_AND_RENDER
|
||
main_update_and_render proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
cmp _main_menu_initialized, 0
|
||
jnz short @@main_initialized
|
||
call text_clear
|
||
cmp byte_D953, 0
|
||
jnz short loc_A0FA
|
||
call sub_B0DB
|
||
|
||
loc_A0FA:
|
||
mov byte_D953, 0
|
||
mov _main_input_allowed, 0
|
||
xor si, si
|
||
jmp short loc_A11E
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A108:
|
||
push si
|
||
mov al, _menu_sel
|
||
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 main_put
|
||
inc si
|
||
|
||
loc_A11E:
|
||
cmp si, 6
|
||
jl short loc_A108
|
||
mov _putfunc, offset main_put
|
||
mov _main_menu_initialized, 1
|
||
mov _main_input_allowed, 0
|
||
|
||
@@main_initialized:
|
||
cmp _input_sp, INPUT_NONE
|
||
jnz short loc_A13F
|
||
mov _main_input_allowed, 1
|
||
|
||
loc_A13F:
|
||
cmp _main_input_allowed, 0
|
||
jz @@no_main_input_allowed
|
||
test _input_sp.lo, low INPUT_UP
|
||
jz short loc_A156
|
||
call menu_sel_move pascal, 5, -1
|
||
|
||
loc_A156:
|
||
test _input_sp.lo, low INPUT_DOWN
|
||
jz short loc_A164
|
||
call menu_sel_move pascal, 5, 1
|
||
|
||
loc_A164:
|
||
test _input_sp.hi, high INPUT_OK
|
||
jnz short loc_A172
|
||
test _input_sp.lo, low INPUT_SHOT
|
||
jz short loc_A1DB
|
||
|
||
loc_A172:
|
||
mov al, _menu_sel
|
||
cbw
|
||
mov bx, ax
|
||
cmp bx, 5
|
||
ja short loc_A1DB
|
||
add bx, bx
|
||
jmp cs:off_A1F7[bx]
|
||
|
||
menu_sel_start:
|
||
call start_game
|
||
jmp short loc_A19A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
menu_sel_vs_start:
|
||
les bx, _resident
|
||
mov es:[bx+resident_t.RESIDENT_playchar_paletted][0], (1 + (PLAYCHAR_REIMU * 2))
|
||
mov es:[bx+resident_t.RESIDENT_playchar_paletted][1], (1 + (PLAYCHAR_REIMU * 2))
|
||
call start_vs
|
||
|
||
loc_A19A:
|
||
call sub_B008
|
||
call sub_9E16
|
||
call sub_B3C3
|
||
mov _main_menu_initialized, 0
|
||
mov _main_input_allowed, 0
|
||
mov byte_D953, 1
|
||
jmp short @@no_main_input_allowed
|
||
; ---------------------------------------------------------------------------
|
||
|
||
menu_sel_musicroom:
|
||
nopcall musicroom
|
||
jmp short loc_A19A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
menu_sel_hiscore:
|
||
call score_menu
|
||
jmp short loc_A1DB
|
||
; ---------------------------------------------------------------------------
|
||
|
||
menu_sel_option:
|
||
mov _main_menu_initialized, 0
|
||
mov _in_option, 1
|
||
mov _menu_sel, 0
|
||
jmp short loc_A1DB
|
||
; ---------------------------------------------------------------------------
|
||
|
||
menu_sel_quit:
|
||
mov _main_menu_initialized, 0
|
||
mov _quit, 1
|
||
|
||
loc_A1DB:
|
||
test _input_sp.hi, high INPUT_CANCEL
|
||
jz short loc_A1E7
|
||
mov _quit, 1
|
||
|
||
loc_A1E7:
|
||
cmp _input_sp, INPUT_NONE
|
||
jz short @@no_main_input_allowed
|
||
mov _main_input_allowed, 0
|
||
|
||
@@no_main_input_allowed:
|
||
pop si
|
||
pop bp
|
||
retn
|
||
main_update_and_render endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 0
|
||
off_A1F7 dw offset menu_sel_start
|
||
dw offset menu_sel_vs_start
|
||
dw offset menu_sel_musicroom
|
||
dw offset menu_sel_hiscore
|
||
dw offset menu_sel_option
|
||
dw offset menu_sel_quit
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
public OPTION_UPDATE_AND_RENDER
|
||
option_update_and_render proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
cmp _option_initialized, 0
|
||
jnz short loc_A24A
|
||
call text_clear
|
||
call sub_B0AF
|
||
mov _option_input_allowed, 0
|
||
xor si, si
|
||
jmp short loc_A235
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A21F:
|
||
push si
|
||
mov al, _menu_sel
|
||
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 option_put
|
||
inc si
|
||
|
||
loc_A235:
|
||
cmp si, 4
|
||
jl short loc_A21F
|
||
mov _putfunc, offset option_put
|
||
mov _option_initialized, 1
|
||
mov _option_input_allowed, 0
|
||
|
||
loc_A24A:
|
||
cmp _input_sp, INPUT_NONE
|
||
jnz short loc_A256
|
||
mov _option_input_allowed, 1
|
||
|
||
loc_A256:
|
||
cmp _option_input_allowed, 0
|
||
jz loc_A414
|
||
test _input_sp.lo, low INPUT_UP
|
||
jz short loc_A26D
|
||
call menu_sel_move pascal, 3, -1
|
||
|
||
loc_A26D:
|
||
test _input_sp.lo, low INPUT_DOWN
|
||
jz short loc_A27B
|
||
call menu_sel_move pascal, 3, 1
|
||
|
||
loc_A27B:
|
||
test _input_sp.lo, low INPUT_RIGHT
|
||
jz loc_A31D
|
||
mov al, _menu_sel
|
||
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, _resident
|
||
inc es:[bx+resident_t.rank]
|
||
cmp es:[bx+resident_t.rank], RANK_LUNATIC
|
||
jbe short loc_A312
|
||
mov es:[bx+resident_t.rank], RANK_EASY
|
||
jmp short loc_A312
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A2AE:
|
||
cmp _snd_sel_disabled, 0
|
||
jnz short loc_A312
|
||
les bx, _resident
|
||
cmp es:[bx+resident_t.bgm_mode], SND_BGM_OFF
|
||
jnz short loc_A2DB
|
||
mov es:[bx+resident_t.bgm_mode], SND_BGM_FM
|
||
kajacall KAJA_SONG_STOP
|
||
call snd_determine_mode
|
||
kajacall KAJA_SONG_PLAY
|
||
jmp short loc_A2F1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A2DB:
|
||
les bx, _resident
|
||
mov es:[bx+resident_t.bgm_mode], SND_BGM_OFF
|
||
kajacall KAJA_SONG_STOP
|
||
mov _snd_active, 0
|
||
|
||
loc_A2F1:
|
||
mov al, _menu_sel
|
||
cbw
|
||
push ax
|
||
push 0E1h
|
||
call option_put
|
||
jmp short loc_A312
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A2FE:
|
||
les bx, _resident
|
||
inc es:[bx+resident_t.key_mode]
|
||
cmp es:[bx+resident_t.key_mode], KM_KEY_JOY
|
||
jbe short loc_A312
|
||
mov es:[bx+resident_t.key_mode], KM_KEY_KEY
|
||
|
||
loc_A312:
|
||
mov al, _menu_sel
|
||
cbw
|
||
push ax
|
||
push 0E1h
|
||
call option_put
|
||
|
||
loc_A31D:
|
||
test _input_sp.lo, low INPUT_LEFT
|
||
jz loc_A3CC
|
||
mov al, _menu_sel
|
||
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, _resident
|
||
cmp es:[bx+resident_t.rank], RANK_EASY
|
||
jnz short loc_A34D
|
||
mov es:[bx+resident_t.rank], RANK_LUNATIC
|
||
jmp short loc_A3C1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A34D:
|
||
les bx, _resident
|
||
dec es:[bx+resident_t.rank]
|
||
jmp short loc_A3C1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A357:
|
||
cmp _snd_sel_disabled, 0
|
||
jnz short loc_A3C1
|
||
les bx, _resident
|
||
cmp es:[bx+resident_t.bgm_mode], SND_BGM_OFF
|
||
jnz short loc_A384
|
||
mov es:[bx+resident_t.bgm_mode], SND_BGM_FM
|
||
kajacall KAJA_SONG_STOP
|
||
call snd_determine_mode
|
||
kajacall KAJA_SONG_PLAY
|
||
jmp short loc_A39A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A384:
|
||
les bx, _resident
|
||
mov es:[bx+resident_t.bgm_mode], SND_BGM_OFF
|
||
kajacall KAJA_SONG_STOP
|
||
mov _snd_active, 0
|
||
|
||
loc_A39A:
|
||
mov al, _menu_sel
|
||
cbw
|
||
push ax
|
||
push 0E1h
|
||
call option_put
|
||
jmp short loc_A3C1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A3A7:
|
||
les bx, _resident
|
||
cmp es:[bx+resident_t.key_mode], KM_KEY_KEY
|
||
jnz short loc_A3B9
|
||
mov es:[bx+resident_t.key_mode], KM_KEY_JOY
|
||
jmp short loc_A3C1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A3B9:
|
||
les bx, _resident
|
||
dec es:[bx+resident_t.key_mode]
|
||
|
||
loc_A3C1:
|
||
mov al, _menu_sel
|
||
cbw
|
||
push ax
|
||
push 0E1h
|
||
call option_put
|
||
|
||
loc_A3CC:
|
||
test _input_sp.hi, high INPUT_OK
|
||
jnz short loc_A3DA
|
||
test _input_sp.lo, low INPUT_SHOT
|
||
jz short loc_A3F2
|
||
|
||
loc_A3DA:
|
||
mov al, _menu_sel
|
||
cbw
|
||
cmp ax, 3
|
||
jnz short loc_A3F2
|
||
mov _option_initialized, 0
|
||
mov _menu_sel, 4
|
||
mov _in_option, 0
|
||
|
||
loc_A3F2:
|
||
test _input_sp.hi, high INPUT_CANCEL
|
||
jz short loc_A408
|
||
mov _option_initialized, 0
|
||
mov _menu_sel, 4
|
||
mov _in_option, 0
|
||
|
||
loc_A408:
|
||
cmp _input_sp, INPUT_NONE
|
||
jz short loc_A414
|
||
mov _option_input_allowed, 0
|
||
|
||
loc_A414:
|
||
pop si
|
||
pop bp
|
||
retn
|
||
option_update_and_render 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:
|
||
call _game_init_op c, offset aCOul, ds
|
||
or ax, ax
|
||
jz short loc_A468
|
||
push ds
|
||
push offset aGbgvgkxsslvVBb ; "\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>ł<EFBFBD><C582>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𑝂₵<F0919D82>Ă<EFBFBD>"...
|
||
jmp short loc_A446
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A468:
|
||
call gaiji_backup
|
||
push ds
|
||
push offset aMikoft_bft ; "MIKOFT.bft"
|
||
call gaiji_entry_bfnt
|
||
call cfg_load
|
||
les bx, _resident
|
||
cmp es:[bx+resident_t.game_mode], GM_VS
|
||
jb short loc_A497
|
||
cmp es:[bx+resident_t.demo_num], 0
|
||
jnz short loc_A497
|
||
call sub_B38D
|
||
call sub_B3EF
|
||
call sub_B3C3
|
||
call start_vs
|
||
|
||
loc_A497:
|
||
les bx, _resident
|
||
cmp es:[bx+resident_t.op_skip_animation], 0
|
||
jnz short loc_A4B0
|
||
call sub_ADE2
|
||
les bx, _resident
|
||
mov es:[bx+resident_t.op_skip_animation], 1
|
||
jmp short loc_A4BC
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A4B0:
|
||
les bx, _resident
|
||
mov es:[bx+resident_t.op_skip_animation], 0
|
||
call sub_B008
|
||
|
||
loc_A4BC:
|
||
call sub_9E16
|
||
mov _in_option, 0
|
||
mov _input_sp, INPUT_NONE
|
||
call main_update_and_render
|
||
call sub_B3C3
|
||
jmp short loc_A4FE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A4D2:
|
||
call input_mode_interface
|
||
mov al, _in_option
|
||
cbw
|
||
or ax, ax
|
||
jz short @@not_in_option
|
||
cmp ax, 1
|
||
jz short @@in_option
|
||
jmp short loc_A4EE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
@@not_in_option:
|
||
call main_update_and_render
|
||
jmp short loc_A4EE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
@@in_option:
|
||
call option_update_and_render
|
||
|
||
loc_A4EE:
|
||
les bx, _resident
|
||
inc es:[bx+resident_t.rand]
|
||
push 1
|
||
call frame_delay
|
||
|
||
loc_A4FE:
|
||
cmp _quit, 0
|
||
jz short loc_A4D2
|
||
call cfg_save_exit
|
||
call gaiji_restore
|
||
call text_clear
|
||
call game_exit_to_dos
|
||
call respal_free
|
||
pop bp
|
||
retf
|
||
_main endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
public DRAW_TRACK
|
||
draw_track proc near
|
||
|
||
var_1 = byte ptr -1
|
||
@@color = byte ptr 4
|
||
@@sel = byte ptr 6
|
||
|
||
enter 2, 0
|
||
mov al, 1
|
||
sub al, _music_page
|
||
mov [bp+var_1], al
|
||
graph_accesspage al
|
||
push 16
|
||
mov al, [bp+@@sel]
|
||
mov ah, 0
|
||
shl ax, 4
|
||
add ax, 40
|
||
push ax
|
||
mov al, [bp+@@color]
|
||
mov ah, 0
|
||
or ax, 20h
|
||
push ax
|
||
mov al, [bp+@@sel]
|
||
mov ah, 0
|
||
shl ax, 2
|
||
mov bx, ax
|
||
pushd _MUSIC_TITLES[bx]
|
||
call graph_putsa_fx
|
||
graph_accesspage _music_page
|
||
push 16
|
||
mov al, [bp+@@sel]
|
||
mov ah, 0
|
||
shl ax, 4
|
||
add ax, 40
|
||
push ax
|
||
mov al, [bp+@@color]
|
||
mov ah, 0
|
||
or ax, 20h
|
||
push ax
|
||
mov al, [bp+@@sel]
|
||
mov ah, 0
|
||
shl ax, 2
|
||
mov bx, ax
|
||
pushd _MUSIC_TITLES[bx]
|
||
call graph_putsa_fx
|
||
leave
|
||
retn 4
|
||
draw_track endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
public DRAW_TRACKS
|
||
draw_tracks proc near
|
||
|
||
@@sel = byte ptr 4
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
xor si, si
|
||
jmp short loc_A5AD
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A598:
|
||
push si
|
||
mov al, [bp+@@sel]
|
||
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 draw_track
|
||
inc si
|
||
|
||
loc_A5AD:
|
||
cmp si, 15h
|
||
jl short loc_A598
|
||
pop si
|
||
pop bp
|
||
retn 2
|
||
draw_tracks endp
|
||
|
||
include th02/music/music.asm
|
||
include th03/music/cmt_back_snap.asm
|
||
include th02/music/music_cmt_load.asm
|
||
include th03/music/cmt_back_free_put.asm
|
||
include th03/music/draw_cmt.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
public MUSICROOM
|
||
musicroom proc far
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
xor si, si
|
||
jmp short loc_AC15
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AC0E:
|
||
call cdg_free pascal, si
|
||
inc si
|
||
|
||
loc_AC15:
|
||
cmp si, CDG_SLOT_COUNT
|
||
jl short loc_AC0E
|
||
call super_free
|
||
call text_clear
|
||
mov _music_page, 1
|
||
mov PaletteTone, 0
|
||
call far ptr palette_show
|
||
graph_showpage 0
|
||
graph_accesspage al
|
||
call graph_clear
|
||
graph_accesspage 1
|
||
call pi_slot_load pascal, 0, ds, offset aOp3_pi
|
||
call pi_slot_palette_apply pascal, 0
|
||
call pi_slot_put pascal, large 0, 0
|
||
freePISlotLarge 0
|
||
mov al, music_track_playing
|
||
mov _music_sel, al
|
||
call draw_tracks pascal, word ptr _music_sel
|
||
call graph_copy_page pascal, 0
|
||
graph_accesspage 1
|
||
graph_showpage 0
|
||
call screen_back_B_snap
|
||
call cmt_back_snap
|
||
graph_accesspage 1
|
||
mov al, music_track_playing
|
||
mov ah, 0
|
||
call draw_cmt pascal, ax
|
||
graph_accesspage 0
|
||
mov al, music_track_playing
|
||
mov ah, 0
|
||
call draw_cmt pascal, ax
|
||
mov PaletteTone, 100
|
||
call far ptr palette_show
|
||
|
||
loc_ACC2:
|
||
call input_mode_interface
|
||
cmp _input_sp, INPUT_NONE
|
||
jz short loc_ACD3
|
||
call music_flip
|
||
jmp short loc_ACC2
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_ACD3:
|
||
call input_mode_interface
|
||
test _input_sp.lo, low INPUT_UP
|
||
jz short loc_AD0E
|
||
call draw_track pascal, word ptr _music_sel, 3
|
||
cmp _music_sel, 0
|
||
jbe short loc_ACF5
|
||
dec _music_sel
|
||
jmp short loc_ACFA
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_ACF5:
|
||
mov _music_sel, 14h
|
||
|
||
loc_ACFA:
|
||
cmp _music_sel, 13h
|
||
jnz short loc_AD05
|
||
dec _music_sel
|
||
|
||
loc_AD05:
|
||
call draw_track pascal, word ptr _music_sel, 15
|
||
|
||
loc_AD0E:
|
||
test _input_sp.lo, low INPUT_DOWN
|
||
jz short loc_AD44
|
||
call draw_track pascal, word ptr _music_sel, 3
|
||
cmp _music_sel, 14h
|
||
jnb short loc_AD2B
|
||
inc _music_sel
|
||
jmp short loc_AD30
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AD2B:
|
||
mov _music_sel, 0
|
||
|
||
loc_AD30:
|
||
cmp _music_sel, 13h
|
||
jnz short loc_AD3B
|
||
inc _music_sel
|
||
|
||
loc_AD3B:
|
||
call draw_track pascal, word ptr _music_sel, 15
|
||
|
||
loc_AD44:
|
||
test _input_sp.lo, low INPUT_SHOT
|
||
jnz short loc_AD52
|
||
test _input_sp.hi, high INPUT_OK
|
||
jz short loc_AD9A
|
||
|
||
loc_AD52:
|
||
cmp _music_sel, 14h
|
||
jz short loc_ADB0
|
||
kajacall KAJA_SONG_STOP
|
||
push SND_LOAD_SONG
|
||
mov al, _music_sel
|
||
mov ah, 0
|
||
shl ax, 2
|
||
mov bx, ax
|
||
pushd _MUSIC_FILES[bx]
|
||
call snd_load
|
||
add sp, 6
|
||
kajacall KAJA_SONG_PLAY
|
||
mov al, _music_sel
|
||
mov music_track_playing, al
|
||
mov ah, 0
|
||
call draw_cmt pascal, ax
|
||
call music_flip
|
||
mov al, _music_sel
|
||
mov ah, 0
|
||
call draw_cmt pascal, ax
|
||
|
||
loc_AD9A:
|
||
test _input_sp.hi, high INPUT_CANCEL
|
||
jnz short loc_ADB0
|
||
cmp _input_sp, INPUT_NONE
|
||
jnz loc_ACC2
|
||
call music_flip
|
||
jmp loc_ACD3
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_ADB0:
|
||
call input_mode_interface
|
||
cmp _input_sp, INPUT_NONE
|
||
jz short loc_ADC1
|
||
call music_flip
|
||
jmp short loc_ADB0
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_ADC1:
|
||
call screen_back_B_free
|
||
call cmt_back_free
|
||
graph_showpage 0
|
||
graph_accesspage al
|
||
call graph_clear
|
||
graph_accesspage 1
|
||
mov al, 0
|
||
out dx, al
|
||
pop si
|
||
pop bp
|
||
retf
|
||
musicroom endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_ADE2 proc near
|
||
|
||
@@page = byte ptr -3
|
||
var_2 = word ptr -2
|
||
|
||
enter 4, 0
|
||
push si
|
||
mov [bp+var_2], 0
|
||
mov [bp+@@page], 0
|
||
call super_entry_bfnt pascal, ds, offset aOpwin_bft ; "opwin.bft"
|
||
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
|
||
graph_accesspage 1
|
||
call pi_slot_put pascal, large 0, 0
|
||
graph_accesspage 0
|
||
call pi_slot_palette_apply pascal, 0
|
||
call pi_slot_put pascal, large 0, 0
|
||
call egc_shift_left_all pascal, 2
|
||
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
|
||
graph_showpage 1
|
||
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], 100
|
||
jg short loc_AEE1
|
||
mov ax, [bp+var_2]
|
||
mov PaletteTone, ax
|
||
call far ptr palette_show
|
||
|
||
loc_AEE1:
|
||
add [bp+var_2], 2
|
||
graph_showpage [bp+@@page]
|
||
mov al, 1
|
||
sub al, [bp+@@page]
|
||
mov [bp+@@page], al
|
||
graph_accesspage al
|
||
call egc_shift_left_all pascal, 4
|
||
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, 200
|
||
call far ptr palette_show
|
||
push 1
|
||
call frame_delay
|
||
mov PaletteTone, 100
|
||
call far ptr palette_show
|
||
push 1
|
||
call frame_delay
|
||
inc si
|
||
|
||
loc_AF65:
|
||
cmp si, 8
|
||
jl short loc_AF40
|
||
mov PaletteTone, 200
|
||
call far ptr palette_show
|
||
kajacall KAJA_SONG_PLAY
|
||
graph_showpage 0
|
||
graph_accesspage al
|
||
call pi_slot_palette_apply pascal, 0
|
||
call pi_slot_put pascal, large 0, 0
|
||
push 1
|
||
call frame_delay
|
||
mov PaletteTone, 100
|
||
call far ptr palette_show
|
||
push 1
|
||
call frame_delay
|
||
xor si, si
|
||
jmp short loc_AFD9
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AFB4:
|
||
mov PaletteTone, 200
|
||
call far ptr palette_show
|
||
push 1
|
||
call frame_delay
|
||
mov PaletteTone, 100
|
||
call far ptr palette_show
|
||
push 1
|
||
call frame_delay
|
||
inc si
|
||
|
||
loc_AFD9:
|
||
cmp si, 8
|
||
jl short loc_AFB4
|
||
graph_accesspage 1
|
||
call pi_slot_put pascal, large 0, 0
|
||
graph_accesspage 0
|
||
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
|
||
call super_entry_bfnt pascal, ds, offset aOpwin_bft ; "opwin.bft"
|
||
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
|
||
graph_showpage 0
|
||
call sub_B3EF
|
||
graph_accesspage 1
|
||
call pi_slot_put pascal, large 0, 0
|
||
graph_accesspage 0
|
||
call pi_slot_palette_apply pascal, 0
|
||
call pi_slot_put pascal, large 0, 0
|
||
graph_accesspage 0
|
||
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, 100
|
||
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, 288
|
||
jmp short loc_B0D2
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B0B8:
|
||
push si
|
||
call sub_B10A
|
||
call super_put pascal, si, large (256 shl 16) or 2
|
||
call frame_delay pascal, 1
|
||
add si, 8
|
||
|
||
loc_B0D2:
|
||
cmp si, 392
|
||
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, 384
|
||
jmp short loc_B101
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B0E4:
|
||
lea ax, [si+8]
|
||
push ax
|
||
call sub_B10A
|
||
call super_put pascal, si, large (256 shl 16) or 2
|
||
call frame_delay pascal, 1
|
||
sub si, 8
|
||
|
||
loc_B101:
|
||
cmp si, 280
|
||
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 ; '<27>'
|
||
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 ; '<27>'
|
||
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 hflip_lut_generate
|
||
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 cdg_load_single_forcealpha
|
||
inc si
|
||
|
||
loc_B3B0:
|
||
cmp si, 3
|
||
jl short loc_B39A
|
||
call cdg_load_all_noalpha pascal, 13, ds, offset aSlex_cd2
|
||
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
|
||
call cdg_load_single_forcealpha pascal, 1, ds, offset a99sl_cdg, 0
|
||
call cdg_load_single_noalpha pascal, 11, ds, offset aSlwin_cdg , 0
|
||
call cdg_load_single_noalpha pascal, 12, ds, offset aSlex_cdg, 0
|
||
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
|
||
call cdg_load_single_forcealpha pascal, 0, [off_E1FE], 0
|
||
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 cdg_load_single_forcealpha
|
||
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 ; '<27>'
|
||
les bx, _resident
|
||
assume es:nothing
|
||
mov eax, es:[bx+resident_t.rand]
|
||
mov random_seed, eax
|
||
call text_clear
|
||
call super_free
|
||
call super_entry_bfnt pascal, ds, offset aChname_bft ; "chname.bft"
|
||
graph_accesspage 0
|
||
call graph_clear
|
||
graph_accesspage 1
|
||
call graph_clear
|
||
graph_showpage 0
|
||
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 cdg_load_single_forcealpha
|
||
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:
|
||
call cdg_free pascal, si
|
||
inc si
|
||
|
||
loc_B4E6:
|
||
cmp si, 22
|
||
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 (32 shl 16) or 96
|
||
cmp byte_FC5A, 0
|
||
jnz short loc_B50C
|
||
mov al, _playchars[0]
|
||
cbw
|
||
add ax, 2
|
||
jmp short loc_B50E
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B50C:
|
||
xor ax, ax
|
||
|
||
loc_B50E:
|
||
push ax
|
||
call cdg_put
|
||
push (416 shl 16) or 96
|
||
cmp byte_FC5B, 0
|
||
jnz short loc_B52A
|
||
mov al, _playchars[1]
|
||
cbw
|
||
add ax, 2
|
||
jmp short loc_B52D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B52A:
|
||
mov ax, 1
|
||
|
||
loc_B52D:
|
||
push ax
|
||
call cdg_put_hflip
|
||
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 (32 shl 16) or 96
|
||
cmp byte_FC5A, 0
|
||
jnz short loc_B54E
|
||
mov al, _playchars[0]
|
||
cbw
|
||
add ax, 2
|
||
jmp short loc_B550
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B54E:
|
||
xor ax, ax
|
||
|
||
loc_B550:
|
||
push ax
|
||
call cdg_put
|
||
push (416 shl 16) or 96
|
||
push 1
|
||
call cdg_put
|
||
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 (32 shl 16) or 304
|
||
push 11
|
||
call cdg_put_noalpha
|
||
les bx, _resident
|
||
cmp es:[bx+resident_t.game_mode], GM_STORY
|
||
jz short loc_B590
|
||
push (416 shl 16) or 304
|
||
push 11
|
||
call cdg_put_noalpha
|
||
|
||
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 ; '<27>E
|
||
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, 15
|
||
push ax
|
||
call grcg_boxfill
|
||
dec di
|
||
sub si, 0Bh
|
||
|
||
loc_B5C7:
|
||
mov al, _playchars[0]
|
||
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, _resident
|
||
cmp es:[bx+resident_t.game_mode], GM_STORY
|
||
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, 15
|
||
push ax
|
||
call grcg_boxfill
|
||
dec di
|
||
sub si, 0Bh
|
||
|
||
loc_B608:
|
||
mov al, _playchars[1]
|
||
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, 136
|
||
xor si, si
|
||
jmp short loc_B663
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B642:
|
||
push 256
|
||
push di
|
||
mov ax, si
|
||
add ax, ax
|
||
push ax
|
||
call super_put
|
||
push 320
|
||
push di
|
||
mov ax, si
|
||
add ax, ax
|
||
inc ax
|
||
push ax
|
||
call super_put
|
||
inc si
|
||
add di, 20
|
||
|
||
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 (160 shl 16) or 304
|
||
push 12
|
||
call cdg_put_noalpha
|
||
push (176 shl 16) or 316
|
||
mov al, _playchars[0]
|
||
cbw
|
||
add ax, 13
|
||
push ax
|
||
call cdg_put_noalpha
|
||
les bx, _resident
|
||
cmp es:[bx+resident_t.game_mode], GM_STORY
|
||
jz short loc_B6BE
|
||
push (544 shl 16) or 304
|
||
push 12
|
||
call cdg_put_noalpha
|
||
push (560 shl 16) or 316
|
||
mov al, _playchars[1]
|
||
cbw
|
||
add ax, 13
|
||
push ax
|
||
call cdg_put_noalpha
|
||
|
||
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
|
||
call vector1_at c, (RES_X / 2), si, _CosTable8[bx]
|
||
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
|
||
call vector1_at c, (RES_Y / 2), si, _SinTable8[bx]
|
||
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 ; '<27>'
|
||
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 ; '<27>'
|
||
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 ; '<27>'
|
||
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
|
||
public P_CURSOR_PUT
|
||
p_cursor_put proc near
|
||
|
||
@@y = word ptr -2
|
||
@@col = 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, 240
|
||
mov di, ax
|
||
mov al, [si+2468h]
|
||
cbw
|
||
imul ax, 20
|
||
add ax, 128
|
||
mov [bp+@@y], ax
|
||
push di
|
||
push ax
|
||
push GAIJI_W
|
||
push ds
|
||
mov ax, si
|
||
imul ax, (gc_GAIJI_W + 1)
|
||
add ax, offset _P_CURSOR_TOP
|
||
push ax
|
||
mov al, [bp+@@col]
|
||
mov ah, 0
|
||
push ax
|
||
call graph_gaiji_puts
|
||
push di
|
||
mov ax, [bp+@@y]
|
||
add ax, GLYPH_H
|
||
push ax
|
||
push GAIJI_W
|
||
push ds
|
||
mov ax, si
|
||
imul ax, (gc_GAIJI_W + 1)
|
||
add ax, offset _P_CURSOR_BOTTOM
|
||
push ax
|
||
mov al, [bp+@@col]
|
||
mov ah, 0
|
||
push ax
|
||
call graph_gaiji_puts
|
||
pop di
|
||
pop si
|
||
leave
|
||
retn 4
|
||
p_cursor_put 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, _resident
|
||
add bx, si
|
||
mov al, byte ptr [bp+var_2]
|
||
add al, al
|
||
inc al
|
||
mov es:[bx+resident_t.RESIDENT_playchar_paletted], 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, _resident
|
||
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
|
||
cmp al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
|
||
jnz short loc_B9CC
|
||
add bx, si
|
||
inc es:[bx+resident_t.RESIDENT_playchar_paletted]
|
||
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 cdg_load_single_forcealpha
|
||
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, _resident
|
||
add bx, si
|
||
mov al, byte ptr [bp+var_2]
|
||
add al, al
|
||
add al, 2
|
||
mov es:[bx+resident_t.RESIDENT_playchar_paletted], 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, _resident
|
||
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
|
||
cmp al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
|
||
jnz short loc_BA53
|
||
add bx, si
|
||
dec es:[bx+resident_t.RESIDENT_playchar_paletted]
|
||
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 cdg_load_single_forcealpha
|
||
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, _resident
|
||
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
|
||
mov ah, 0
|
||
dec ax
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
mov _playchars[0], al
|
||
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
|
||
mov ah, 0
|
||
dec ax
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
mov _playchars[1], al
|
||
mov byte_FC5A, 0
|
||
mov byte_FC5B, 0
|
||
cmp es:[bx+resident_t.key_mode], KM_KEY_KEY
|
||
jnz short loc_BAD4
|
||
setfarfp _input_mode, input_mode_key_vs_key
|
||
jmp short loc_BAF9
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BAD4:
|
||
les bx, _resident
|
||
cmp es:[bx+resident_t.key_mode], KM_JOY_KEY
|
||
jnz short loc_BAED
|
||
setfarfp _input_mode, input_mode_joy_vs_key
|
||
jmp short loc_BAF9
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BAED:
|
||
setfarfp _input_mode, input_mode_key_vs_joy
|
||
|
||
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 p_cursor_put
|
||
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 p_cursor_put
|
||
call _input_reset_sense_key_held
|
||
call _input_mode
|
||
push _input_mp_p1
|
||
push 0
|
||
call sub_B908
|
||
push _input_mp_p2
|
||
push 1
|
||
call sub_B908
|
||
test _input_sp.hi, high INPUT_CANCEL
|
||
jz short loc_BB82
|
||
graph_accesspage 0
|
||
call graph_clear
|
||
graph_showpage 0
|
||
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, 200
|
||
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
|
||
graph_accesspage byte_FC5C
|
||
mov al, 1
|
||
sub al, byte_FC5C
|
||
mov byte_FC5C, al
|
||
graph_showpage al
|
||
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
|
||
call grcg_byteboxfill_x pascal, large 0, (((RES_X - 1) / 8) shl 16) or (RES_Y - 1)
|
||
call grcg_off
|
||
inc word_FC62
|
||
les bx, _resident
|
||
inc es:[bx+resident_t.rand]
|
||
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, _resident
|
||
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
|
||
mov ah, 0
|
||
dec ax
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
mov _playchars[0], al
|
||
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
|
||
mov ah, 0
|
||
dec ax
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
mov _playchars[1], al
|
||
mov byte_FC5A, 0
|
||
mov byte_FC5B, 0
|
||
setfarfp _input_mode, input_mode_interface
|
||
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 _input_reset_sense_key_held
|
||
call _input_mode
|
||
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 p_cursor_put
|
||
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 p_cursor_put
|
||
|
||
loc_BCAE:
|
||
push _input_sp
|
||
push si
|
||
call sub_B908
|
||
test _input_sp.hi, high INPUT_CANCEL
|
||
jz short loc_BCE3
|
||
graph_accesspage 0
|
||
call graph_clear
|
||
graph_showpage 0
|
||
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, 200
|
||
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
|
||
graph_accesspage byte_FC5C
|
||
mov al, 1
|
||
sub al, byte_FC5C
|
||
mov byte_FC5C, al
|
||
graph_showpage al
|
||
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
|
||
call grcg_byteboxfill_x pascal, large 0, (((RES_X - 1) / 8) shl 16) or (RES_Y - 1)
|
||
call grcg_off
|
||
inc word_FC62
|
||
les bx, _resident
|
||
inc es:[bx+resident_t.rand]
|
||
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 _playchars[0], 0
|
||
mov byte_FC5A, 0
|
||
mov byte_FC5B, 1
|
||
setfarfp _input_mode, input_mode_interface
|
||
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 p_cursor_put
|
||
call _input_reset_sense_key_held
|
||
call _input_mode
|
||
push _input_sp
|
||
push 0
|
||
call sub_B908
|
||
test _input_sp.hi, high INPUT_CANCEL
|
||
jz short loc_BE21
|
||
graph_accesspage 0
|
||
call graph_clear
|
||
graph_showpage 0
|
||
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, 200
|
||
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
|
||
graph_accesspage byte_FC5C
|
||
mov al, 1
|
||
sub al, byte_FC5C
|
||
mov byte_FC5C, al
|
||
graph_showpage al
|
||
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
|
||
call grcg_byteboxfill_x pascal, large 0, (((RES_X - 1) / 8) shl 16) or (RES_Y - 1)
|
||
call grcg_off
|
||
inc word_FC62
|
||
les bx, _resident
|
||
inc es:[bx+resident_t.rand]
|
||
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
|
||
|
||
include th02/exit_dos.asm
|
||
include th01/hardware/vram_planes_set.asm
|
||
include th02/snd/detmode.asm
|
||
include th02/snd/pmd_res.asm
|
||
include th02/snd/load.asm
|
||
include th02/exit.asm
|
||
include th03/math/vector1_at.asm
|
||
db 0
|
||
include th03/formats/cdg_put.asm
|
||
include th03/formats/cdg_put_hflip.asm
|
||
include th02/hardware/frame_delay.asm
|
||
db 0
|
||
include th03/hardware/input_sense.asm
|
||
include th02/formats/pi_slot_palette_apply.asm
|
||
include th02/formats/pi_slot_put.asm
|
||
include th02/snd/kajaint.asm
|
||
include th02/initop.asm
|
||
include th03/formats/cdg_load.asm
|
||
include th03/hardware/grppsafx.asm
|
||
include th02/formats/pi_slot_load.asm
|
||
include th03/hardware/input_modes.asm
|
||
include th03/hardware/input_wait.asm
|
||
db 0
|
||
include th03/formats/cdg_put_noalpha.asm
|
||
include th03/formats/hfliplut.asm
|
||
extern FRAME_DELAY_2:proc
|
||
op_02_TEXT ends
|
||
|
||
.data
|
||
|
||
include th03/formats/cfg[data].asm
|
||
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
|
||
include th03/start[data].asm
|
||
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
|
||
_menu_sel db 0
|
||
_quit db 0
|
||
byte_D953 db 1
|
||
_main_menu_initialized db 0
|
||
_option_initialized db 0
|
||
aYume_cfg db 'YUME.CFG',0
|
||
; char path[]
|
||
path db 'mainl',0
|
||
asc_D965 db ' ',0
|
||
aVfvcvbgngngbgn db '<27>f<EFBFBD>c<EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>T<EFBFBD>l<EFBFBD>g<EFBFBD><67><EFBFBD>ɂȂ<C982><C882>Ă<EFBFBD><C482>܂<EFBFBD><DC82>B',0Ah,0
|
||
aUmx db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͂Q<CD82>D<EFBFBD>T<EFBFBD>l<EFBFBD>g<EFBFBD><67><EFBFBD>łȂ<C582><C882>Ɛ<EFBFBD><C690><EFBFBD><EFBFBD>ɃQ<C983>[<5B><><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><76><EFBFBD>C<EFBFBD>o<EFBFBD><6F><EFBFBD>܂<EFBFBD><DC82><EFBFBD>',0Ah,0
|
||
aViosrfvVVkvqbd db 0Ah
|
||
db '<27><><EFBFBD>萔<EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD>Q<EFBFBD>D<EFBFBD>T<EFBFBD>l<EFBFBD>g<EFBFBD><67><EFBFBD>ɐ<C990><D882>ւ<EFBFBD><D682>āA<C481><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD>s<EFBFBD><73><EFBFBD>ĂˁB',0Ah,0
|
||
aCOul db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1.dat',0
|
||
aGbgvgkxsslvVBb db 0Ah
|
||
db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>ł<EFBFBD><C582>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𑝂₵<F0919D82>Ă<EFBFBD><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',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
|
||
include libs/master.lib/js[data].asm
|
||
include libs/master.lib/pal[data].asm
|
||
include libs/master.lib/pf[data].asm
|
||
include libs/master.lib/rand[data].asm
|
||
include libs/master.lib/sin8[data].asm
|
||
include libs/master.lib/tx[data].asm
|
||
include libs/master.lib/vs[data].asm
|
||
include libs/master.lib/wordmask[data].asm
|
||
include libs/master.lib/mem[data].asm
|
||
include libs/master.lib/super_entry_bfnt[data].asm
|
||
include libs/master.lib/superpa[data].asm
|
||
_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
|
||
include th03/formats/cdg[data].asm
|
||
public _MUSIC_TITLES
|
||
_MUSIC_TITLES label dword
|
||
dd aNo_1B@cVOul ; "NO.1 <20>@<40><><EFBFBD>͎<EFBFBD><CD8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD> "
|
||
dd aNo_2B@B@Select ; "NO.2 <20>@ <20>@ Selection "
|
||
dd aNo_3Umx ; "NO.3 <20><><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><64><EFBFBD>k "
|
||
dd aNo_4Reincarnat ; "NO.4 Reincarnation "
|
||
dd aNo_5Dim_Dream ; "NO.5 Dim. Dream "
|
||
dd aNo_6TabulaRasa ; "NO.6 Tabula rasa<73>@<40>`<60><EFBFBD><F394928F><EFBFBD> "
|
||
dd aNo_7B@Maniacal ; "NO.7 <20>@ Maniacal Princess "
|
||
dd aNo_8CPOBLostDr ; "NO.8 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>`Lost Dream "
|
||
dd aNo_9CMCvlyBDre ; "NO.9 <20><><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>Y <20>`Dream War "
|
||
dd aNo_10Cvc@mirab ; "NO.10 <20><><EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>`Fight it out!"
|
||
dd aNo_11B@SailorO ; "NO.11 <20>@ Sailor of Time "
|
||
dd aNo_12Strawberr ; "NO.12 Strawberry Crisis!! "
|
||
dd aNo_13F ; "NO.13 <20>ꖂ<F1939D88>@<40><><EFBFBD>E<EFBFBD>_ "
|
||
dd aNo_14B@cvc@pri ; "NO.14 <09>@<40><><EFBFBD>@<40><><EFBFBD><EFBFBD> "
|
||
dd aNo_15B@lviuvC ; "NO.15 <09>@<40>v<EFBFBD><76><EFBFBD>̖<EFBFBD> "
|
||
dd aNo_16Umx ; "NO.16 <09><><EFBFBD><EFBFBD><EFBFBD>̐<CC90><C282><EFBFBD> "
|
||
dd aNo_17IiiuvCumo ; "NO.17 <20>i<EFBFBD><69><EFBFBD>̖<EFBFBD><CC96><EFBFBD> "
|
||
dd aNo_18MapleDrea ; "NO.18 Maple Dream... "
|
||
dd aNo_19CRlvLxu ; "NO.19 <20><><EFBFBD>l<EFBFBD>̋x<CC8B><78> "
|
||
dd aB@b@ ; " <20>@<40>@ "
|
||
dd aB@b@vpvxvivf ; " <20>@<40>@<40>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
|
||
public _MUSIC_FILES
|
||
_MUSIC_FILES label dword
|
||
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"
|
||
include th02/music/polygons[data].asm
|
||
music_track_playing db 0
|
||
aNo_1B@cVOul db 'NO.1 <20>@<40><><EFBFBD>͎<EFBFBD><CD8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD> ',0
|
||
aNo_2B@B@Select db 'NO.2 <20>@ <20>@ Selection ',0
|
||
aNo_3Umx db 'NO.3 <20><><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><64><EFBFBD>k ',0
|
||
aNo_4Reincarnat db 'NO.4 Reincarnation ',0
|
||
aNo_5Dim_Dream db 'NO.5 Dim. Dream ',0
|
||
aNo_6TabulaRasa db 'NO.6 Tabula rasa<73>@<40>`<60><EFBFBD><F394928F><EFBFBD> ',0
|
||
aNo_7B@Maniacal db 'NO.7 <20>@ Maniacal Princess ',0
|
||
aNo_8CPOBLostDr db 'NO.8 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>`Lost Dream ',0
|
||
aNo_9CMCvlyBDre db 'NO.9 <20><><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>Y <20>`Dream War ',0
|
||
aNo_10Cvc@mirab db 'NO.10 <20><><EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>`Fight it out!',0
|
||
aNo_11B@SailorO db 'NO.11 <20>@ Sailor of Time ',0
|
||
aNo_12Strawberr db 'NO.12 Strawberry Crisis!! ',0
|
||
aNo_13F db 'NO.13 <20>ꖂ<F1939D88>@<40><><EFBFBD>E<EFBFBD>_ ',0
|
||
aNo_14B@cvc@pri db 'NO.14 <20>@<40><><EFBFBD>@<40><><EFBFBD><EFBFBD> ',0
|
||
aNo_15B@lviuvC db 'NO.15 <20>@<40>v<EFBFBD><76><EFBFBD>̖<EFBFBD> ',0
|
||
aNo_16Umx db 'NO.16 <20><><EFBFBD><EFBFBD><EFBFBD>̐<CC90><C282><EFBFBD> ',0
|
||
aNo_17IiiuvCumo db 'NO.17 <20>i<EFBFBD><69><EFBFBD>̖<EFBFBD><CC96><EFBFBD> ',0
|
||
aNo_18MapleDrea db 'NO.18 Maple Dream... ',0
|
||
aNo_19CRlvLxu db 'NO.19 <20><><EFBFBD>l<EFBFBD>̋x<CC8B><78> ',0
|
||
aB@b@ db ' <20>@<40>@ ',0
|
||
aB@b@vpvxvivf db ' <20>@<40>@<40>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',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
|
||
include th03/strings/p_cursor[data].asm
|
||
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?
|
||
|
||
_main_input_allowed db ?
|
||
_option_input_allowed db ?
|
||
_in_option db ?
|
||
db ?
|
||
_putfunc dw ?
|
||
include libs/master.lib/clip[bss].asm
|
||
include libs/master.lib/fil[bss].asm
|
||
include libs/master.lib/js[bss].asm
|
||
include libs/master.lib/pal[bss].asm
|
||
include libs/master.lib/vs[bss].asm
|
||
include libs/master.lib/vsync[bss].asm
|
||
include libs/master.lib/mem[bss].asm
|
||
include libs/master.lib/superpa[bss].asm
|
||
include th01/hardware/vram_planes[bss].asm
|
||
include th02/snd/snd[bss].asm
|
||
include th02/snd/load[bss].asm
|
||
include libs/master.lib/pfint21[bss].asm
|
||
include th03/hardware/input[bss].asm
|
||
include th03/formats/cdg[bss].asm
|
||
include th02/formats/pi_slots[bss].asm
|
||
include th03/formats/hfliplut[bss].asm
|
||
include th02/music/music[bss].asm
|
||
include th03/music/cmt_back[bss].asm
|
||
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 ?
|
||
public _resident
|
||
_resident dd ?
|
||
public _playchars
|
||
_playchars db PLAYER_COUNT dup (?)
|
||
byte_FC5A db ?
|
||
byte_FC5B db ?
|
||
byte_FC5C db ?
|
||
db ?
|
||
include th03/hardware/input_modes[bss].asm
|
||
word_FC62 dw ?
|
||
word_FC64 dw ?
|
||
word_FC66 dw ?
|
||
byte_FC68 db ?
|
||
db ? ;
|
||
|
||
end
|