; ; +-------------------------------------------------------------------------+ ; | This file has been generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : CE44AA7A114237C6B3CD67EEA9C0225A ; File Name : th03/MAINL.EXE ; Format : MS-DOS executable (EXE) ; Base Address: 0h Range: 0h-10CF0h Loaded length: F72Ch ; Entry Point : 0:0 ; OS type : MS DOS ; Application type: Executable 16bit .386 .model use16 large _TEXT include ReC98.inc include th03/th03.inc include th01/hardware/grppsafx.inc include th03/sprites/regi.inc include th03/formats/scoredat.inc extern SCOPY@:proc extern __ctype:byte extern _execl:proc extern _tolower:proc group_01 group CFG_LRES_TEXT, mainl_01_TEXT, SCOREDAT_TEXT, REGIST_TEXT, mainl_03_TEXT ; =========================================================================== ; Segment type: Pure code _TEXT segment word public 'CODE' use16 assume cs:_TEXT assume es:nothing, ds:_DATA, fs:nothing, gs:nothing include libs/master.lib/bfnt_entry_pat.asm include libs/master.lib/bfnt_extend_header_skip.asm include libs/master.lib/bfnt_header_read.asm include libs/master.lib/bfnt_header_analysis.asm include libs/master.lib/bcloser.asm include libs/master.lib/bfill.asm include libs/master.lib/bfnt_palette_set.asm include libs/master.lib/bgetc.asm include libs/master.lib/palette_black_in.asm include libs/master.lib/palette_black_out.asm include libs/master.lib/bopenr.asm include libs/master.lib/bread.asm include libs/master.lib/bseek.asm include libs/master.lib/bseek_.asm include libs/master.lib/dos_axdx.asm include libs/master.lib/dos_filesize.asm include libs/master.lib/dos_keyclear.asm include libs/master.lib/dos_setvect.asm include libs/master.lib/egc.asm include libs/master.lib/file_append.asm include libs/master.lib/file_close.asm include libs/master.lib/file_create.asm include libs/master.lib/file_exist.asm include libs/master.lib/file_read.asm include libs/master.lib/file_ropen.asm include libs/master.lib/file_seek.asm include libs/master.lib/file_size.asm include libs/master.lib/file_write.asm include libs/master.lib/dos_close.asm include libs/master.lib/dos_ropen.asm include libs/master.lib/grcg_boxfill.asm include libs/master.lib/grcg_byteboxfill_x.asm include libs/master.lib/grcg_setcolor.asm include libs/master.lib/gdc_outpw.asm db 0 include libs/master.lib/gaiji_backup.asm include libs/master.lib/gaiji_entry_bfnt.asm include libs/master.lib/gaiji_read.asm include libs/master.lib/gaiji_write.asm include libs/master.lib/graph_400line.asm include libs/master.lib/graph_clear.asm include libs/master.lib/graph_copy_page.asm include libs/master.lib/graph_extmode.asm include libs/master.lib/graph_gaiji_putc.asm include libs/master.lib/graph_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_scrollup.asm include libs/master.lib/graph_show.asm include libs/master.lib/iatan2.asm include libs/master.lib/js_end.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/text_fillca.asm include libs/master.lib/vsync.asm include libs/master.lib/vsync_wait.asm include libs/master.lib/palette_white_in.asm include libs/master.lib/palette_white_out.asm include libs/master.lib/hmem_lallocate.asm include libs/master.lib/mem_assign_dos.asm include libs/master.lib/mem_assign.asm include libs/master.lib/memheap.asm include libs/master.lib/mem_unassign.asm include libs/master.lib/super_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_set_palettes.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 th03/formats/pfopen.asm include libs/master.lib/pf_str_ieq.asm include libs/master.lib/graph_pack_put_8_noclip.asm _TEXT ends ; =========================================================================== CFG_LRES_TEXT segment byte public 'CODE' use16 _cfg_load_resident_ptr procdesc near CFG_LRES_TEXT ends ; Segment type: Pure code mainl_01_TEXT segment byte public 'CODE' use16 assume cs:group_01 ;org 3 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9624 proc near var_2 = byte ptr -2 var_1 = byte ptr -1 enter 2, 0 push ds push offset aLogo0_rgb ; "logo0.rgb" call palette_entry_rgb call far ptr palette_show call cdg_load_all_noalpha pascal, 0, ds, offset aLogo_cd2 call cdg_load_single pascal, 5, ds, offset aLogo5_cdg, 0 les bx, _resident cmp es:[bx+resident_t.pid_winner], 0 jnz short loc_965E mov al, _playchar_filename_id[0] jmp short loc_9661 ; --------------------------------------------------------------------------- loc_965E: mov al, _playchar_filename_id[1] loc_9661: mov [bp+var_1], al les bx, _resident cmp es:[bx+resident_t.pid_winner], 0 jnz short loc_969A cmp es:[bx+resident_t.story_stage], 6 jnz short loc_967C mov [bp+var_2], 9 jmp short loc_96B7 ; --------------------------------------------------------------------------- loc_967C: les bx, _resident cmp es:[bx+resident_t.story_stage], 7 jnz short loc_968D mov [bp+var_2], 0Ah jmp short loc_96B7 ; --------------------------------------------------------------------------- loc_968D: les bx, _resident cmp es:[bx+resident_t.pid_winner], 0 jnz short loc_96AA jmp short loc_96A5 ; --------------------------------------------------------------------------- loc_969A: les bx, _resident cmp es:[bx+resident_t.pid_winner], 0 jnz short loc_96AA loc_96A5: mov al, _playchar_filename_id[1] jmp short loc_96AD ; --------------------------------------------------------------------------- loc_96AA: mov al, _playchar_filename_id[0] loc_96AD: mov ah, 0 cwd sub ax, dx sar ax, 1 mov [bp+var_2], al loc_96B7: push 6 push ds mov al, [bp+var_1] mov ah, 0 cwd sub ax, dx mov bx, ax sar bx, 1 add bx, bx push word ptr [bx+90h] mov al, [bp+var_1] mov ah, 0 and ax, 1 push ax call cdg_load_single_noalpha mov al, [bp+var_1] mov ah, 0 cwd sub ax, dx mov bx, ax sar bx, 1 shl bx, 2 pushd dword ptr [bx+0A2h] call file_ropen mov al, [bp+var_2] mov ah, 0 imul ax, 0B4h cwde push eax push 0 call file_seek push ds push offset unk_F72C push 3Ch ; '<' call file_read mov byte_F768, 0 push ds push offset unk_F769 push 3Ch ; '<' call file_read mov byte_F7A5, 0 push ds push offset unk_F7A6 push 3Ch ; '<' call file_read mov byte_F7E2, 0 call file_close leave retn sub_9624 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_973E proc near push bp mov bp, sp call graph_putsa_fx pascal, (80 shl 16) or 272, 2Fh, ds, offset unk_F72C call graph_putsa_fx pascal, (80 shl 16) or 288, 2Fh, ds, offset unk_F769 call graph_putsa_fx pascal, (80 shl 16) or 304, 2Fh, ds, offset unk_F7A6 pop bp retn sub_973E endp include th03/formats/cdg_free_all.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_978D proc near push bp mov bp, sp push si graph_accesspage 1 call graph_clear graph_accesspage 0 call graph_clear graph_showpage 0 mov PaletteTone, 0 call far ptr palette_show call graph_show call cdg_put_noalpha_8 pascal, large (352 shl 16) or 300, 0 kajacall KAJA_SONG_PLAY push 2 call palette_black_in push 60010h call snd_delay_until_measure mov si, 1 jmp short loc_97FC ; --------------------------------------------------------------------------- loc_97E8: call cdg_put_noalpha_8 pascal, large (352 shl 16) or 300, si push 6 call frame_delay inc si loc_97FC: cmp si, 5 jl short loc_97E8 push 0A0040h call snd_delay_until_measure mov PaletteTone, 200 call far ptr palette_show call cdg_put_noalpha_8 pascal, large (224 shl 16) or 64, 6 call cdg_put_noalpha_8 pascal, large (352 shl 16) or 300, 5 push ds push offset aLogo1_rgb ; "logo1.rgb" call palette_entry_rgb call far ptr palette_show call cdg_free_all push 0B0004h call snd_delay_until_measure push 1 call palette_white_in push 8 call frame_delay call sub_973E call sub_9887 or ax, ax jnz short loc_9868 call sub_990C loc_9868: call input_mode_interface cmp _input_sp, INPUT_NONE jnz short loc_987D push 1 call frame_delay jmp short loc_9868 ; --------------------------------------------------------------------------- loc_987D: push 1 call palette_black_out pop si pop bp retn sub_978D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9887 proc near var_2 = word ptr -2 enter 2, 0 les bx, _resident cmp es:[bx+resident_t.game_mode], GM_STORY jnz short loc_98A1 les bx, _resident cmp es:[bx+resident_t.pid_winner], 0 jz short loc_98A6 loc_98A1: mov ax, 1 leave retn ; --------------------------------------------------------------------------- loc_98A6: les bx, _resident mov al, es:[bx+resident_t.story_stage] mov ah, 0 add bx, ax mov al, es:[bx+resident_t.story_opponents] mov bx, word ptr _resident mov es:[bx+resident_t.RESIDENT_playchar_paletted][1], al cmp es:[bx+resident_t.story_stage], 7 jnz short loc_98CA mov ax, 3 leave retn ; --------------------------------------------------------------------------- loc_98CA: les bx, _resident cmp es:[bx+resident_t.story_stage], 8 jnz short loc_98DA mov ax, 4 leave retn ; --------------------------------------------------------------------------- loc_98DA: les bx, _resident cmp es:[bx+resident_t.story_stage], 9 jnz short loc_98EA mov ax, 5 leave retn ; --------------------------------------------------------------------------- loc_98EA: les bx, _resident mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 mov [bp+var_2], ax cmp [bp+var_2], 7 jl short loc_9908 mov es:[bx+resident_t.RESIDENT_playchar_paletted][1], (1 + (PLAYCHAR_REIMU * 2)) loc_9908: xor ax, ax leave retn sub_9887 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_990C proc near var_1 = byte ptr -1 enter 2, 0 graph_showpage 0 graph_accesspage 1 mov al, _playchar_filename_id[0] mov [bp+var_1], al push 0 push ds mov ah, 0 cwd sub ax, dx mov bx, ax sar bx, 1 add bx, bx push word ptr [bx+90h] mov al, [bp+var_1] mov ah, 0 and ax, 1 push ax call cdg_load_single les bx, _resident mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1] add al, -1 mov [bp+var_1], al push 1 push ds mov ah, 0 cwd sub ax, dx mov bx, ax sar bx, 1 add bx, bx push word ptr [bx+90h] mov al, [bp+var_1] mov ah, 0 and ax, 1 push ax call cdg_load_single mov al, [bp+var_1] mov ah, 0 cwd sub ax, dx sar ax, 1 mov [bp+var_1], al mov byte_F7E5, 1 les bx, _resident cmp es:[bx+resident_t.game_mode], GM_STORY jz short loc_9997 mov bx, word_E504 mov al, [bx+4] add al, 4 jmp short loc_99CB ; --------------------------------------------------------------------------- loc_9997: cmp [bp+var_1], 7 jnz short loc_99A8 mov bx, word_E504 mov al, [bx+4] add al, 2 jmp short loc_99CB ; --------------------------------------------------------------------------- loc_99A8: cmp [bp+var_1], 8 jnz short loc_99B7 mov bx, word_E504 inc byte ptr [bx+4] jmp short loc_99F1 ; --------------------------------------------------------------------------- loc_99B7: les bx, _resident cmp es:[bx+resident_t.story_stage], 6 jnz short loc_99D4 mov bx, word_E504 mov al, [bx+4] add al, 3 loc_99CB: mov bx, word_E504 mov [bx+4], al jmp short loc_99F1 ; --------------------------------------------------------------------------- loc_99D4: push 2 push ds push word_E502 les bx, _resident mov al, es:[bx+resident_t.story_stage] mov ah, 0 inc ax push ax call cdg_load_single mov byte_F7E5, 0 loc_99F1: call pi_load pascal, 0, ds, offset aStnx0_pi call pi_put_8 pascal, large 0, 0 freePISlotLarge 0 call pi_load pascal, 0, ds, word_E504 call pi_put_8 pascal, large 0, 0 leave retn sub_990C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A2C proc near var_4 = word ptr -4 var_2 = word ptr -2 enter 4, 0 push si mov si, 3A3h mov [bp+var_2], 3AAh mov PaletteTone, 0 call far ptr palette_show call pi_palette_apply pascal, 0 call graph_copy_page pascal, 0 freePISlotLarge 0 call cdg_put_8 pascal, large (96 shl 16) or 96, 0 call cdg_put_hflip_8 pascal, large (352 shl 16) or 96, 1 cmp byte_F7E5, 0 jnz short loc_9A8E call cdg_put_8 pascal, large (384 shl 16) or 46, 2 loc_9A8E: call cdg_free pascal, 0 call cdg_free pascal, 1 call cdg_free pascal, 2 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 add ax, ax mov [bp+var_4], ax push (80 shl 16) or 292 push (15 or FX_WEIGHT_BOLD) mov bx, [bp+var_4] shl bx, 2 pushd CHAR_TITLE[bx] call graph_putsa_fx push (128 shl 16) or 308 push (15 or FX_WEIGHT_BOLD) mov bx, [bp+var_4] shl bx, 2 pushd CHAR_NAME[bx] call graph_putsa_fx les bx, _resident mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 add ax, ax mov [bp+var_4], ax push (336 shl 16) or 292 push (15 or FX_WEIGHT_BOLD) mov bx, [bp+var_4] shl bx, 2 pushd CHAR_TITLE[bx] call graph_putsa_fx push (384 shl 16) or 308 push (15 or FX_WEIGHT_BOLD) mov bx, [bp+var_4] shl bx, 2 pushd CHAR_NAME[bx] call graph_putsa_fx push 1 call palette_black_in mov vsync_Count1, 0 graph_accesspage 1 call graph_clear push 0 call sub_9D20 push 1 call sub_9D20 call pi_load pascal, 0, ds, offset aEn2_pi call pi_put_interlace_8 pascal, large 280, 0 freePISlotLarge 0 les bx, _resident mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 mov [bp+var_4], ax mov bx, [bp+var_4] cmp bx, 8 ja short loc_9BC2 add bx, bx jmp cs:off_9C9F[bx] loc_9B97: push 0 push ds push offset aEnemy00_pi ; "ENEMY00.pi" jmp short loc_9BBD ; --------------------------------------------------------------------------- loc_9B9F: push 0 push ds push offset aEnemy01_pi ; "ENEMY01.pi" jmp short loc_9BBD ; --------------------------------------------------------------------------- loc_9BA7: push 0 push ds push offset aEnemy02_pi ; "ENEMY02.pi" jmp short loc_9BBD ; --------------------------------------------------------------------------- loc_9BAF: push 0 push ds push offset aEnemy03_pi ; "ENEMY03.pi" jmp short loc_9BBD ; --------------------------------------------------------------------------- loc_9BB7: push 0 push ds push offset aEnemy04_pi ; "ENEMY04.pi" loc_9BBD: call pi_load loc_9BC2: call pi_put_interlace_8 pascal, large 304, 0 les bx, _resident mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 mov [bp+var_4], ax cmp [bp+var_4], 0Ah jl short loc_9BFB mov bx, 10 cwd idiv bx add al, [si] mov [si], al mov ax, [bp+var_4] cwd idiv bx mov [bp+var_4], dx loc_9BFB: mov al, [si+1] add al, byte ptr [bp+var_4] mov [si+1], al kajacall KAJA_SONG_STOP les bx, _resident cmp es:[bx+resident_t.story_stage], 6 jz short loc_9C1E push SND_LOAD_SONG push ds push si jmp short loc_9C25 ; --------------------------------------------------------------------------- loc_9C1E: push SND_LOAD_SONG push ds push [bp+var_2] loc_9C25: call _snd_load add sp, 6 call _snd_load c, offset aYume_efc, ds, SND_LOAD_SE mov _input_sp, INPUT_NONE loc_9C42: cmp vsync_Count1, 20h ; ' ' jbe short loc_9C42 jmp short loc_9C50 ; --------------------------------------------------------------------------- loc_9C4B: call input_mode_interface loc_9C50: cmp vsync_Count1, 60h ja short loc_9C5E cmp _input_sp, INPUT_NONE jz short loc_9C4B loc_9C5E: push 1 call palette_white_out graph_accesspage 0 call graph_clear push 1 call palette_white_in call text_fillca pascal, (' ' shl 16) + TX_BLACK + TX_REVERSE call pi_palette_apply pascal, 0 freePISlotLarge 0 call respal_set_palettes pop si leave retn sub_9A2C endp ; --------------------------------------------------------------------------- off_9C9F dw offset loc_9B97 dw offset loc_9B97 dw offset loc_9B9F dw offset loc_9BA7 dw offset loc_9B9F dw offset loc_9BA7 dw offset loc_9B97 dw offset loc_9BAF dw offset loc_9BB7 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9CB1 proc near arg_0 = dword ptr 4 arg_4 = word ptr 8 push bp mov bp, sp push si mov si, [bp+arg_4] call pi_load pascal, 0, large [bp+arg_0] mov ax, si imul ax, 320 call pi_put_interlace_8 pascal, ax, (200 shl 16) freePISlotLarge 0 les bx, [bp+arg_0] mov byte ptr es:[bx+2], 'e' mov byte ptr es:[bx+3], 'x' call pi_load pascal, 0, word ptr [bp+arg_0+2], bx mov ax, si imul ax, 320 call pi_put_interlace_8 pascal, ax, (208 shl 16) freePISlotLarge 0 pop si pop bp retn 6 sub_9CB1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9D20 proc near var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_2 = word ptr -2 arg_0 = word ptr 4 enter 0Eh, 0 push si push di mov di, [bp+arg_0] xor si, si jmp short loc_9D35 ; --------------------------------------------------------------------------- loc_9D2D: mov al, [si+116h] mov [bp+si+var_E], al inc si loc_9D35: cmp si, 0Ch jl short loc_9D2D les bx, _resident add bx, di mov al, es:[bx+resident_t.RESIDENT_playchar_paletted] mov ah, 0 dec ax mov [bp+var_2], ax cmp [bp+var_2], 10 jl short loc_9D65 mov bx, 10 cwd idiv bx add al, [bp+var_E] mov [bp+var_E], al mov ax, [bp+var_2] cwd idiv bx mov [bp+var_2], dx loc_9D65: mov al, [bp+var_D] add al, byte ptr [bp+var_2] mov [bp+var_D], al push di push ss lea ax, [bp+var_E] push ax call sub_9CB1 pop di pop si leave retn 2 sub_9D20 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 var_2 = byte ptr -2 var_1 = byte ptr -1 _argc = word ptr 6 _argv = dword ptr 8 _envp = dword ptr 0Ch enter 2, 0 call _cfg_load_resident_ptr or ax, ax jz @@ret call game_init_main pascal, ds, offset aCOul call respal_exist mov _snd_midi_active, 0 les bx, _resident cmp es:[bx+resident_t.bgm_mode], SND_BGM_OFF jz short loc_9DAD call _snd_determine_mode loc_9DAD: call gaiji_backup push ds push offset aMikoft_bft ; "MIKOFT.bft" call gaiji_entry_bfnt call _snd_load c, offset aYume_efc, ds, SND_LOAD_SE call _snd_se_reset call _hflip_lut_generate les bx, _resident cmp es:[bx+resident_t.show_score_menu], 0 jz short loc_9E04 call sub_B7D2 call text_clear call gaiji_restore call _game_exit pushd 0 push ds push offset path ; "op" push ds push offset path ; "op" call _execl add sp, 0Ch loc_9E04: les bx, _resident mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0] add al, -1 mov _playchar_filename_id[0], al mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1] add al, -1 mov _playchar_filename_id[1], al cmp es:[bx+resident_t.story_stage], 0 jz loc_9F85 cmp es:[bx+resident_t.game_mode], GM_STORY jnz short loc_9E3F call sub_9887 mov [bp+var_1], al cmp [bp+var_1], 4 jz short loc_9E89 cmp [bp+var_1], 5 jnz short loc_9E3F call sub_B972 loc_9E3F: call _snd_load c, offset aWin_m, ds, SND_LOAD_SONG call sub_9624 call sub_978D kajacall KAJA_SONG_STOP les bx, _resident cmp es:[bx+resident_t.game_mode], GM_STORY jnz loc_9F58 call sub_9887 mov [bp+var_1], al cmp [bp+var_1], 0 jnz short loc_9E7B loc_9E75: call sub_9A2C jmp loc_9F1E ; --------------------------------------------------------------------------- loc_9E7B: cmp [bp+var_1], 3 jz short loc_9E89 cmp [bp+var_1], 4 jnz loc_9F38 loc_9E89: call cdg_free_all freePISlotLarge 0 mov al, _playchar_filename_id[0] mov ah, 0 cwd sub ax, dx sar ax, 1 mov [bp+var_2], al cmp [bp+var_2], 10 jb short loc_9EDC les bx, off_E4B6 mov al, es:[bx+1] mov dl, [bp+var_2] mov dh, 0 mov bx, 10 push ax mov ax, dx cwd idiv bx pop dx add dl, al mov bx, word ptr off_E4B6 mov es:[bx+1], dl mov al, [bp+var_2] mov ah, 0 mov bx, 10 cwd idiv bx mov [bp+var_2], dl loc_9EDC: les bx, off_E4B6 mov al, [bp+var_2] add es:[bx+2], al cmp [bp+var_1], 4 jnz short loc_9EF1 inc byte ptr es:[bx+5] loc_9EF1: graph_accesspage 0 graph_showpage al call graph_clear call graph_show pushd [off_E4B6] call sub_A12E call sub_AC6E call sub_A174 call sub_990C call sub_9A2C call gaiji_restore loc_9F1E: call _game_exit_from_mainl_to_main pushd 0 push ds push offset aMain ; "main" push ds push offset aMain ; "main" loc_9F2E: call _execl add sp, 0Ch leave retf ; --------------------------------------------------------------------------- loc_9F38: call cdg_free_all freePISlotLarge 0 call sub_B7D2 call sub_9F8D or ax, ax jnz short loc_9F85 call sub_B92E jmp short loc_9F69 ; --------------------------------------------------------------------------- loc_9F58: call cdg_free_all freePISlotLarge 0 loc_9F69: call text_clear call gaiji_restore call _game_exit pushd 0 push ds push offset path ; "op" push ds push offset path ; "op" jmp short loc_9F2E ; --------------------------------------------------------------------------- loc_9F85: call sub_990C jmp loc_9E75 ; --------------------------------------------------------------------------- @@ret: leave retf _main endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9F8D proc near var_6 = dword ptr -6 var_2 = word ptr -2 enter 6, 0 push si push di mov si, 1 mov [bp+var_2], 0 mov word ptr [bp+var_6+2], ds mov word ptr [bp+var_6], offset a0 xor di, di jmp short loc_9FB3 ; --------------------------------------------------------------------------- loc_9FA7: les bx, _resident add bx, di mov es:[bx+resident_t.score_last], 0 inc di loc_9FB3: cmp di, (PLAYER_COUNT * SCORE_DIGITS) jl short loc_9FA7 les bx, _resident cmp es:[bx+resident_t.rem_credits], 0 jnz short loc_9FC8 xor ax, ax jmp loc_A12A ; --------------------------------------------------------------------------- loc_9FC8: call cdg_put_noalpha_8 pascal, large (192 shl 16) or 272, 0 call cdg_put_noalpha_8 pascal, large (352 shl 16) or 272, 3 les bx, _resident mov al, es:[bx+resident_t.rem_credits] les bx, [bp+var_6] add al, es:[bx] mov es:[bx], al call graph_putsa_fx pascal, (576 shl 16) or 371, 2Fh, word ptr [bp+var_6+2], bx push 1 call palette_black_in loc_A00B: call input_mode_interface test _input_sp.lo, low INPUT_LEFT jnz short loc_A01E test _input_sp.lo, low INPUT_RIGHT jz short loc_A056 loc_A01E: cmp [bp+var_2], 0 jnz short loc_A05B mov ax, 1 sub ax, si mov si, ax push (192 shl 16) or 272 add ax, ax mov dx, 2 sub dx, ax push dx call cdg_put_noalpha_8 push (352 shl 16) or 272 mov ax, si add ax, ax inc ax push ax call cdg_put_noalpha_8 mov [bp+var_2], 1 jmp short loc_A05B ; --------------------------------------------------------------------------- loc_A056: mov [bp+var_2], 0 loc_A05B: test _input_sp.hi, high INPUT_OK jnz short loc_A069 test _input_sp.lo, low INPUT_SHOT jz short loc_A0B0 loc_A069: cmp si, 1 jnz short loc_A0C5 call grcg_setcolor pascal, (GC_RMW shl 16) + 0 call grcg_boxfill pascal, (576 shl 16) or 371, (592 shl 16) or 387 call grcg_off les bx, _resident dec es:[bx+resident_t.rem_credits] les bx, [bp+var_6] dec byte ptr es:[bx] call graph_putsa_fx pascal, (576 shl 16) or 371, 2Fh, word ptr [bp+var_6+2], bx jmp short loc_A0C5 ; --------------------------------------------------------------------------- loc_A0B0: test _input_sp.hi, high INPUT_CANCEL jz short loc_A0BB xor si, si jmp short loc_A0C5 ; --------------------------------------------------------------------------- loc_A0BB: push 1 call frame_delay jmp loc_A00B ; --------------------------------------------------------------------------- loc_A0C5: kajacall KAJA_SONG_FADE, 3 push 1 call palette_black_out graph_accesspage 0 graph_showpage al mov PaletteTone, 0 call far ptr palette_show call pi_load pascal, 0, ds, offset aOver_pi call pi_palette_apply pascal, 0 call pi_put_8 pascal, large 0, 0 freePISlotLarge 0 kajacall KAJA_SONG_STOP les bx, _resident dec es:[bx+resident_t.story_stage] mov es:[bx+resident_t.story_lives], CREDIT_LIVES mov ax, si loc_A12A: pop di pop si leave retn sub_9F8D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A12E proc near arg_0 = dword ptr 4 push bp mov bp, sp push si call sub_A174 pushd [bp+arg_0] call file_ropen or ax, ax jnz short loc_A147 mov ax, 1 jmp short loc_A16F ; --------------------------------------------------------------------------- loc_A147: call file_size mov si, ax push ax call hmem_allocbyte mov word ptr _cutscene_script+2, ax mov word ptr _cutscene_script, 0 push ax push word ptr _cutscene_script push si call file_read call file_close xor ax, ax loc_A16F: pop si pop bp retn 4 sub_A12E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A174 proc near push bp mov bp, sp cmp _cutscene_script, 0 jz short loc_A191 push word ptr _cutscene_script+2 call hmem_free mov _cutscene_script, 0 loc_A191: pop bp retn sub_A174 endp EGC_START_COPY_DEF 1, near ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A1C7 proc near var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 4, 0 push si push di mov ax, [bp+arg_2] sar ax, 3 mov dx, [bp+arg_0] shl dx, 6 add ax, dx mov dx, [bp+arg_0] shl dx, 4 add ax, dx mov si, ax call egc_start_copy_1 xor di, di jmp short loc_A225 ; --------------------------------------------------------------------------- loc_A1EC: mov [bp+var_2], 0 jmp short loc_A21B ; --------------------------------------------------------------------------- loc_A1F3: graph_accesspage 0 les bx, _VRAM_PLANE_B add bx, si mov ax, es:[bx] mov [bp+var_4], ax mov al, 1 out dx, al mov bx, word ptr _VRAM_PLANE_B add bx, si mov ax, [bp+var_4] mov es:[bx], ax add [bp+var_2], 2 add si, 2 loc_A21B: cmp [bp+var_2], 28h ; '(' jl short loc_A1F3 inc di add si, 28h ; '(' loc_A225: cmp di, 0C8h jl short loc_A1EC call egc_off graph_accesspage 0 pop di pop si leave retn 4 sub_A1C7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A23C proc near var_8 = dword ptr -8 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 = word ptr 0Ah enter 8, 0 push si push di mov eax, _pi_buffers mov [bp+var_8], eax cmp [bp+arg_2], 1 jnz short loc_A257 add word ptr [bp+var_8], 0A0h jmp short loc_A26F ; --------------------------------------------------------------------------- loc_A257: cmp [bp+arg_2], 2 jnz short loc_A264 add word ptr [bp+var_8], 0FA00h jmp short loc_A26F ; --------------------------------------------------------------------------- loc_A264: cmp [bp+arg_2], 3 jnz short loc_A26F add word ptr [bp+var_8], 0FAA0h loc_A26F: mov eax, [bp+var_8] shr eax, 10h mov dx, word ptr [bp+var_8] shr dx, 4 add ax, dx mov dx, word ptr [bp+var_8] and dx, 0Fh mov word ptr [bp+var_8+2], ax mov word ptr [bp+var_8], dx graph_showpage 1 mov ax, [bp+arg_6] sar ax, 3 mov dx, [bp+arg_4] shl dx, 6 add ax, dx mov dx, [bp+arg_4] shl dx, 4 add ax, dx mov si, ax graph_accesspage 0 xor di, di jmp loc_A34E ; --------------------------------------------------------------------------- loc_A2B4: call graph_pack_put_8_noclip pascal, large 400, [bp+var_8], 320 call egc_start_copy_1 egc_selectpat egc_setrop EGC_COMPAREREAD or EGC_WS_PATREG or EGC_RL_MEMREAD outw2 EGC_BITLENGTHREG, 0Fh mov bx, [bp+arg_0] shl bx, 3 mov ax, di and ax, 3 add ax, ax add bx, ax outw2 EGC_MASKREG, _PI_MASKS[bx] mov [bp+var_4], 7D00h mov [bp+var_2], 0 jmp short loc_A31E ; --------------------------------------------------------------------------- loc_A301: les bx, _VRAM_PLANE_B add bx, [bp+var_4] mov ax, es:[bx] mov bx, word ptr _VRAM_PLANE_B add bx, si mov es:[bx], ax inc [bp+var_2] add si, 2 add [bp+var_4], 2 loc_A31E: cmp [bp+var_2], 14h jl short loc_A301 call egc_off add si, 28h ; '(' add word ptr [bp+var_8], 140h mov eax, [bp+var_8] shr eax, 10h mov dx, word ptr [bp+var_8] shr dx, 4 add ax, dx mov dx, word ptr [bp+var_8] and dx, 0Fh mov word ptr [bp+var_8+2], ax mov word ptr [bp+var_8], dx inc di loc_A34E: cmp di, 0C8h jl loc_A2B4 graph_showpage 0 push [bp+arg_6] push [bp+arg_4] call sub_A1C7 pop di pop si leave retn 8 sub_A23C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A36B proc near var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 enter 8, 0 push si push di call sub_A43C graph_accesspage 0 push 3C00h call hmem_allocbyte mov word ptr dword_105CA+2, ax mov word ptr dword_105CA, 0 xor si, si mov di, 140h mov [bp+var_4], 0 jmp loc_A430 ; --------------------------------------------------------------------------- loc_A398: mov [bp+var_2], 50h ; 'P' mov [bp+var_6], 0 jmp loc_A424 ; --------------------------------------------------------------------------- loc_A3A5: mov ax, [bp+var_2] sar ax, 3 mov dx, di shl dx, 6 add ax, dx mov dx, di shl dx, 4 add ax, dx mov [bp+var_8], ax les bx, _VRAM_PLANE_B add bx, [bp+var_8] mov ax, es:[bx] mov dx, si add dx, dx les bx, dword_105CA add bx, dx mov es:[bx], ax inc si les bx, _VRAM_PLANE_R add bx, [bp+var_8] mov ax, es:[bx] mov dx, si add dx, dx les bx, dword_105CA add bx, dx mov es:[bx], ax inc si les bx, _VRAM_PLANE_G add bx, [bp+var_8] mov ax, es:[bx] mov dx, si add dx, dx les bx, dword_105CA add bx, dx mov es:[bx], ax inc si les bx, _VRAM_PLANE_E add bx, [bp+var_8] mov ax, es:[bx] mov dx, si add dx, dx les bx, dword_105CA add bx, dx mov es:[bx], ax inc si add [bp+var_6], 2 add [bp+var_2], 10h loc_A424: cmp [bp+var_6], 3Ch ; '<' jl loc_A3A5 inc [bp+var_4] inc di loc_A430: cmp [bp+var_4], 40h jl loc_A398 pop di pop si leave retn sub_A36B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A43C proc near push bp mov bp, sp cmp dword_105CA, 0 jz short loc_A459 push word ptr dword_105CA+2 call hmem_free mov dword_105CA, 0 loc_A459: pop bp retn sub_A43C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A45B proc near var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 enter 6, 0 push si push di xor cx, cx mov si, 140h mov [bp+var_4], 0 jmp loc_A4FE ; --------------------------------------------------------------------------- loc_A46E: mov [bp+var_2], 50h ; 'P' mov [bp+var_6], 0 jmp short loc_A4F4 ; --------------------------------------------------------------------------- loc_A47A: mov ax, [bp+var_2] sar ax, 3 mov dx, si shl dx, 6 add ax, dx mov dx, si shl dx, 4 add ax, dx mov di, ax mov ax, cx add ax, ax les bx, dword_105CA add bx, ax mov ax, es:[bx] les bx, _VRAM_PLANE_B add bx, di mov es:[bx], ax inc cx mov ax, cx add ax, ax les bx, dword_105CA add bx, ax mov ax, es:[bx] les bx, _VRAM_PLANE_R add bx, di mov es:[bx], ax inc cx mov ax, cx add ax, ax les bx, dword_105CA add bx, ax mov ax, es:[bx] les bx, _VRAM_PLANE_G add bx, di mov es:[bx], ax inc cx mov ax, cx add ax, ax les bx, dword_105CA add bx, ax mov ax, es:[bx] les bx, _VRAM_PLANE_E add bx, di mov es:[bx], ax inc cx add [bp+var_6], 2 add [bp+var_2], 10h loc_A4F4: cmp [bp+var_6], 3Ch ; '<' jl short loc_A47A inc [bp+var_4] inc si loc_A4FE: cmp [bp+var_4], 40h jl loc_A46E pop di pop si leave retn sub_A45B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A50A proc near var_2 = byte ptr -2 var_1 = byte ptr -1 arg_0 = dword ptr 4 enter 2, 0 les bx, _cutscene_script mov cl, es:[bx] inc word ptr _cutscene_script les bx, _cutscene_script mov al, es:[bx] mov [bp+var_1], al inc word ptr _cutscene_script les bx, _cutscene_script mov al, es:[bx] mov [bp+var_2], al inc word ptr _cutscene_script mov al, cl mov ah, 0 mov bx, ax test (__ctype + 1)[bx], _IS_DIG jnz short loc_A554 les bx, [bp+arg_0] mov ax, word_105D8 mov es:[bx], ax sub word ptr _cutscene_script, 3 leave retn 4 ; --------------------------------------------------------------------------- loc_A554: mov al, [bp+var_1] mov ah, 0 mov bx, ax test (__ctype + 1)[bx], _IS_DIG jnz short loc_A578 mov al, cl mov ah, 0 add ax, 0FFD0h les bx, [bp+arg_0] mov es:[bx], ax sub word ptr _cutscene_script, 2 leave retn 4 ; --------------------------------------------------------------------------- loc_A578: mov al, [bp+var_2] mov ah, 0 mov bx, ax test (__ctype + 1)[bx], _IS_DIG jnz short loc_A5A8 mov al, cl mov ah, 0 add ax, 0FFD0h imul ax, 0Ah mov dl, [bp+var_1] mov dh, 0 add ax, dx add ax, 0FFD0h les bx, [bp+arg_0] mov es:[bx], ax dec word ptr _cutscene_script leave retn 4 ; --------------------------------------------------------------------------- loc_A5A8: mov al, cl mov ah, 0 add ax, 0FFD0h imul ax, 64h mov dl, [bp+var_1] mov dh, 0 add dx, 0FFD0h imul dx, 0Ah add ax, dx mov dl, [bp+var_2] mov dh, 0 add ax, dx add ax, 0FFD0h les bx, [bp+arg_0] mov es:[bx], ax leave retn 4 sub_A50A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A5D3 proc near arg_0 = dword ptr 4 push bp mov bp, sp les bx, _cutscene_script cmp byte ptr es:[bx], ',' jnz short loc_A5EF inc word ptr _cutscene_script pushd [bp+arg_0] call sub_A50A pop bp retn 4 ; --------------------------------------------------------------------------- loc_A5EF: les bx, [bp+arg_0] mov ax, word_105D8 mov es:[bx], ax pop bp retn 4 sub_A5D3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A5FC proc near push bp mov bp, sp add point_105D0.x, 16 cmp point_105D0.x, 560 jl short loc_A64B add point_105D0.y, 16 mov point_105D0.x, 144 cmp point_105D0.y, 384 jl short loc_A64B cmp byte_105CE, 0 jnz short loc_A62D call input_wait_for_change pascal, 0 loc_A62D: mov point_105D0.x, 80 mov point_105D0.y, 320 graph_accesspage 1 call sub_A45B graph_accesspage 0 call sub_A45B loc_A64B: pop bp retn sub_A5FC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A64D proc near var_16 = byte ptr -16h var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = byte ptr 4 enter 16h, 0 push si mov al, [bp+arg_0] mov ah, 0 push ax ; ch call _tolower pop cx mov [bp+arg_0], al mov ah, 0 mov [bp+var_6], ax mov cx, 10h ; switch 16 cases mov bx, offset word_AC2E loc_A66C: mov ax, cs:[bx] cmp ax, [bp+var_6] jz short loc_A67C add bx, 2 loop loc_A66C jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_A67C: jmp word ptr cs:[bx+20h] ; switch jump loc_A680: add point_105D0.y, 16 ; jumptable 0000A67C case 110 mov point_105D0.x, 80 cmp point_105D0.y, 384 jl loc_AC1E ; default loc_A695: les bx, _cutscene_script ; jumptable 0000A67C case 115 mov al, es:[bx] mov [bp+arg_0], al cmp [bp+arg_0], '-' jz short loc_A6C4 mov word_105D8, 0 push ss lea ax, [bp+var_2] push ax call sub_A50A cmp byte_105CE, 0 jnz short loc_A6C8 call input_wait_for_change pascal, [bp+var_2] jmp short loc_A6C8 ; --------------------------------------------------------------------------- loc_A6C4: inc word ptr _cutscene_script loc_A6C8: mov point_105D0.x, 80 mov point_105D0.y, 320 graph_accesspage 1 call sub_A45B graph_accesspage 0 call sub_A45B jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_A6E9: mov word_105D8, 0Fh ; jumptable 0000A67C case 99 push ss lea ax, [bp+var_2] push ax call sub_A50A mov al, byte ptr [bp+var_2] mov col_105D6, al jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_A700: mov word_105D8, 2 ; jumptable 0000A67C case 98 push ss lea ax, [bp+var_2] push ax call sub_A50A mov bx, [bp+var_2] cmp bx, 3 ja loc_AC1E ; default add bx, bx jmp cs:off_AC26[bx] loc_A71F: mov byte_105D7, 0 jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_A727: mov byte_105D7, 10h jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_A72F: mov byte_105D7, 20h ; ' ' jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_A737: mov byte_105D7, 30h ; '0' jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_A73F: les bx, _cutscene_script ; jumptable 0000A67C case 119 mov al, es:[bx] mov ah, 0 push ax ; ch call _tolower pop cx mov [bp+arg_0], al cmp [bp+arg_0], 'o' jz short loc_A75E cmp [bp+arg_0], 'i' jnz short loc_A78C loc_A75E: inc word ptr _cutscene_script mov word_105D8, 1 push ss lea ax, [bp+var_2] push ax call sub_A50A cmp [bp+arg_0], 'i' jnz short loc_A781 push [bp+var_2] call palette_white_in jmp loc_AB90 ; --------------------------------------------------------------------------- loc_A781: push [bp+var_2] call palette_white_out jmp loc_AB90 ; --------------------------------------------------------------------------- loc_A78C: mov word_105D8, 40h cmp [bp+arg_0], 'm' jz short loc_A7CF cmp [bp+arg_0], 'k' jnz short loc_A7A2 inc word ptr _cutscene_script loc_A7A2: push ss lea ax, [bp+var_2] push ax call sub_A50A cmp byte_105CE, 0 jnz loc_AC1E ; default cmp [bp+arg_0], 'k' jz short loc_A7C4 push [bp+var_2] call frame_delay jmp loc_AB90 ; --------------------------------------------------------------------------- loc_A7C4: call input_wait_for_ok pascal, [bp+var_2] jmp loc_AB90 ; --------------------------------------------------------------------------- loc_A7CF: inc word ptr _cutscene_script les bx, _cutscene_script mov al, es:[bx] mov [bp+arg_0], al cmp [bp+arg_0], 'k' jnz short loc_A7E7 inc word ptr _cutscene_script loc_A7E7: push ss lea ax, [bp+var_2] push ax call sub_A50A push ss lea ax, [bp+var_4] push ax call sub_A5D3 cmp byte_105CE, 0 jnz loc_AC1E ; default cmp [bp+arg_0], 'k' jz short loc_A814 push [bp+var_2] push [bp+var_4] call snd_delay_until_measure jmp loc_AB63 ; --------------------------------------------------------------------------- loc_A814: call input_wait_for_ok_or_measure pascal, [bp+var_2], [bp+var_4] jmp loc_AB63 ; --------------------------------------------------------------------------- loc_A822: les bx, _cutscene_script ; jumptable 0000A67C case 118 cmp byte ptr es:[bx], 'p' jz short loc_A843 mov word_105D8, 1 push ss lea ax, [bp+var_2] push ax call sub_A50A mov ax, [bp+var_2] mov word_105D4, ax jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_A843: inc word ptr _cutscene_script mov word_105D8, 0 push ss lea ax, [bp+var_2] push ax call sub_A50A graph_showpage byte ptr [bp+var_2] jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_A85F: mov word_105D8, 64h ; 'd' ; jumptable 0000A67C case 116 push ss lea ax, [bp+var_2] push ax call sub_A50A cmp byte_105CE, 0 jnz short loc_A87B push 1 call frame_delay loc_A87B: mov ax, [bp+var_2] mov PaletteTone, ax call far ptr palette_show jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_A889: les bx, _cutscene_script ; jumptable 0000A67C case 102 mov al, es:[bx] mov [bp+arg_0], al cmp [bp+arg_0], 'm' jz short loc_A8D5 cmp [bp+arg_0], 'i' jz short loc_A8A7 cmp [bp+arg_0], 'o' jnz loc_AC1E ; default loc_A8A7: inc word ptr _cutscene_script mov word_105D8, 1 push ss lea ax, [bp+var_2] push ax call sub_A50A cmp [bp+arg_0], 'i' jnz short loc_A8CA push [bp+var_2] call palette_black_in jmp loc_AB90 ; --------------------------------------------------------------------------- loc_A8CA: push [bp+var_2] call palette_black_out jmp loc_AB90 ; --------------------------------------------------------------------------- loc_A8D5: inc word ptr _cutscene_script mov word_105D8, 1 push ss lea ax, [bp+var_2] push ax call sub_A50A mov ax, [bp+var_2] add ax, 200h push ax jmp loc_AB8B ; --------------------------------------------------------------------------- loc_A8F1: les bx, _cutscene_script ; jumptable 0000A67C case 103 cmp byte ptr es:[bx], 'a' jz short loc_A945 mov word_105D8, 8 push ss lea ax, [bp+var_2] push ax call sub_A50A mov [bp+var_4], 0 jmp short loc_A933 ; --------------------------------------------------------------------------- loc_A910: test byte ptr [bp+var_4], 1 jz short loc_A91A push 4 jmp short loc_A91D ; --------------------------------------------------------------------------- loc_A91A: push RES_Y - 4 loc_A91D: call graph_scrollup cmp byte_105CE, 0 jnz short loc_A930 push 1 call frame_delay loc_A930: inc [bp+var_4] loc_A933: mov ax, [bp+var_4] cmp ax, [bp+var_2] jle short loc_A910 call graph_scrollup pascal, 0 jmp loc_AB90 ; --------------------------------------------------------------------------- loc_A945: inc word ptr _cutscene_script mov word_105D8, 0 push ss lea ax, [bp+var_2] push ax call sub_A50A graph_accesspage 1 push point_105D0.x push point_105D0.y mov ax, [bp+var_2] dec ax push ax mov al, col_105D6 mov ah, 0 push ax call graph_gaiji_putc graph_accesspage 0 push point_105D0.x push point_105D0.y push [bp+var_2] mov al, col_105D6 mov ah, 0 push ax call graph_gaiji_putc call sub_A5FC jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_A997: mov word_105D8, 0 ; jumptable 0000A67C case 107 push ss lea ax, [bp+var_2] push ax call sub_A50A cmp byte_105CE, 0 jnz loc_AC1E ; default call input_wait_for_change pascal, 0 jmp loc_AB90 ; --------------------------------------------------------------------------- loc_A9B8: graph_accesspage 1 ; jumptable 0000A67C case 64 call graph_clear graph_accesspage 0 call graph_clear jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_A9D1: les bx, _cutscene_script ; jumptable 0000A67C case 112 mov al, es:[bx] mov [bp+arg_0], al inc word ptr _cutscene_script cmp [bp+arg_0], '=' jz short loc_A9EB cmp [bp+arg_0], '@' jnz short loc_AA1B loc_A9EB: graph_accesspage 1 cmp [bp+arg_0], '=' jnz short loc_A9FE call pi_palette_apply pascal, 0 loc_A9FE: call pi_put_8 pascal, large 0, 0 call graph_copy_page pascal, 0 graph_accesspage 0 call sub_A36B jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_AA1B: cmp [bp+arg_0], '-' jnz short loc_AA32 freePISlotLarge 0 jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_AA32: cmp [bp+arg_0], 'p' jnz short loc_AA42 call pi_palette_apply pascal, 0 jmp loc_AB90 ; --------------------------------------------------------------------------- loc_AA42: cmp [bp+arg_0], ',' jz short loc_AA4F dec word ptr _cutscene_script jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_AA4F: mov [bp+var_2], 0 jmp short loc_AA84 ; --------------------------------------------------------------------------- loc_AA56: les bx, _cutscene_script mov al, es:[bx] mov [bp+arg_0], al inc word ptr _cutscene_script mov ah, 0 mov bx, ax test (__ctype + 1)[bx], _IS_CTL jnz short loc_AA8A cmp [bp+arg_0], ' ' jz short loc_AA8A lea bx, [bp+var_16] add bx, [bp+var_2] mov al, [bp+arg_0] mov ss:[bx], al inc [bp+var_2] loc_AA84: cmp [bp+var_2], 0Ch jl short loc_AA56 loc_AA8A: lea bx, [bp+var_16] add bx, [bp+var_2] mov byte ptr ss:[bx], 0 push 0 push ss lea ax, [bp+var_16] push ax call pi_load jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_AAA3: mov word_105D8, 4 ; jumptable 0000A67C case 61 les bx, _cutscene_script mov al, es:[bx] mov [bp+arg_0], al cmp [bp+arg_0], 3Dh ; '=' jz short loc_AAF8 push ss lea ax, [bp+var_2] push ax call sub_A50A graph_showpage 1 graph_accesspage 0 cmp [bp+var_2], 4 jge short loc_AAD5 jmp short loc_AB44 ; --------------------------------------------------------------------------- loc_AAD5: call grcg_setcolor pascal, (GC_RMW shl 16) + 0 call grcg_byteboxfill_x pascal, ((160 / 8) shl 16) or 64, ((472 / 8) shl 16) or 263 call grcg_off jmp short loc_AB54 ; --------------------------------------------------------------------------- loc_AAF8: inc word ptr _cutscene_script push ss lea ax, [bp+var_2] push ax call sub_A50A mov word_105D8, 1 push ss lea ax, [bp+var_4] push ax call sub_A5D3 xor si, si jmp short loc_AB33 ; --------------------------------------------------------------------------- loc_AB16: push 0A00040h push [bp+var_2] push si call sub_A23C cmp byte_105CE, 0 jnz short loc_AB32 push [bp+var_4] call frame_delay loc_AB32: inc si loc_AB33: cmp si, 4 jl short loc_AB16 graph_showpage 1 graph_accesspage 0 loc_AB44: call pi_put_quarter_8 pascal, (160 shl 16) + 64, 0, [bp+var_2] loc_AB54: graph_showpage 0 push 0A00040h call sub_A1C7 loc_AB63: jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_AB66: les bx, _cutscene_script ; jumptable 0000A67C case 109 mov al, es:[bx] mov [bp+arg_0], al cmp [bp+arg_0], 24h ; '$' jnz short loc_AB7F inc word ptr _cutscene_script push (KAJA_SONG_STOP shl 8) jmp short loc_AB8B ; --------------------------------------------------------------------------- loc_AB7F: cmp [bp+arg_0], 2Ah ; '*' jnz short loc_AB93 inc word ptr _cutscene_script loc_AB89: push (KAJA_SONG_PLAY shl 8) loc_AB8B: call snd_kaja_interrupt loc_AB90: jmp loc_AC1E ; default ; --------------------------------------------------------------------------- loc_AB93: cmp [bp+arg_0], 2Ch ; ',' jnz loc_AC1E ; default inc word ptr _cutscene_script mov [bp+var_2], 0 jmp short loc_ABD4 ; --------------------------------------------------------------------------- loc_ABA6: les bx, _cutscene_script mov al, es:[bx] mov [bp+arg_0], al inc word ptr _cutscene_script mov ah, 0 mov bx, ax test (__ctype + 1)[bx], _IS_CTL jnz short loc_ABDA cmp [bp+arg_0], 20h ; ' ' jz short loc_ABDA lea bx, [bp+var_16] add bx, [bp+var_2] mov al, [bp+arg_0] mov ss:[bx], al inc [bp+var_2] loc_ABD4: cmp [bp+var_2], 0Ch jl short loc_ABA6 loc_ABDA: lea bx, [bp+var_16] add bx, [bp+var_2] mov byte ptr ss:[bx], 0 kajacall KAJA_SONG_STOP push SND_LOAD_SONG push ss lea ax, [bp+var_16] push ax call _snd_load add sp, 6 jmp short loc_AB89 ; --------------------------------------------------------------------------- loc_ABFE: push ss ; jumptable 0000A67C case 101 lea ax, [bp+var_2] push ax call sub_A50A call _snd_se_reset call snd_se_play pascal, [bp+var_2] call _snd_se_update jmp short loc_AC1E ; default ; --------------------------------------------------------------------------- loc_AC1A: mov al, -1 ; jumptable 0000A67C case 36 jmp short loc_AC20 ; --------------------------------------------------------------------------- loc_AC1E: mov al, 0 ; default loc_AC20: pop si leave retn 2 sub_A64D endp ; --------------------------------------------------------------------------- db 0 off_AC26 dw offset loc_A71F dw offset loc_A727 dw offset loc_A72F dw offset loc_A737 word_AC2E dw 24h, 3Dh, 40h, 62h dw 63h, 65h, 66h, 67h ; value table for switch statement dw 6Bh, 6Dh, 6Eh, 70h dw 73h, 74h, 76h, 77h dw offset loc_AC1A ; jump table for switch statement dw offset loc_AAA3 dw offset loc_A9B8 dw offset loc_A700 dw offset loc_A6E9 dw offset loc_ABFE dw offset loc_A889 dw offset loc_A8F1 dw offset loc_A997 dw offset loc_AB66 dw offset loc_A680 dw offset loc_A9D1 dw offset loc_A695 dw offset loc_A85F dw offset loc_A822 dw offset loc_A73F ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_AC6E proc near var_6 = dword ptr -6 var_2 = byte ptr -2 var_1 = byte ptr -1 enter 6, 0 push si mov word ptr [bp+var_6+2], ds mov word ptr [bp+var_6], offset asc_EFC2 mov point_105D0.x, 80 mov point_105D0.y, 320 mov word_105D4, 1 mov col_105D6, 0Fh mov byte_105D7, 20h ; ' ' mov [bp+var_2], 0 call sub_A36B mov byte_105CE, 0 loc_ACA3: call input_mode_interface test _input_sp.hi, high INPUT_CANCEL jz short loc_ACB6 mov byte_105CE, 1 jmp short loc_ACBB ; --------------------------------------------------------------------------- loc_ACB6: mov byte_105CE, 0 loc_ACBB: les bx, _cutscene_script mov al, es:[bx] mov [bp+var_1], al inc word ptr _cutscene_script mov ah, 0 mov bx, ax test (__ctype + 1)[bx], _IS_CTL jnz short loc_ACA3 cmp [bp+var_1], ' ' jz short loc_ACA3 cmp [bp+var_1], '\' jnz short loc_ACFB les bx, _cutscene_script mov al, es:[bx] mov [bp+var_1], al inc word ptr _cutscene_script push word ptr [bp+var_1] call sub_A64D cmp al, -1 jnz short loc_ACA3 jmp loc_ADA0 ; --------------------------------------------------------------------------- loc_ACFB: les bx, [bp+var_6] mov al, [bp+var_1] mov es:[bx], al les bx, _cutscene_script mov al, es:[bx] mov [bp+var_1], al les bx, [bp+var_6] mov es:[bx+1], al inc word ptr _cutscene_script graph_accesspage 1 push point_105D0.x push point_105D0.y mov al, col_105D6 or al, byte_105D7 mov ah, 0 push ax push word ptr [bp+var_6+2] push bx call graph_putsa_fx graph_accesspage 0 push point_105D0.x push point_105D0.y mov al, col_105D6 or al, byte_105D7 mov ah, 0 push ax pushd [bp+var_6] call graph_putsa_fx call sub_A5FC cmp byte_105CE, 0 jnz loc_ACA3 cmp _input_sp, INPUT_NONE jnz short loc_AD7A push word_105D4 call frame_delay jmp loc_ACA3 ; --------------------------------------------------------------------------- loc_AD7A: mov ax, word_105D4 mov bx, 3 cwd idiv bx mov si, ax test [bp+var_2], 1 jnz short loc_AD8F or si, si jz short loc_AD9A loc_AD8F: or si, si jnz short loc_AD94 inc si loc_AD94: push si call frame_delay loc_AD9A: inc [bp+var_2] jmp loc_ACA3 ; --------------------------------------------------------------------------- loc_ADA0: call sub_A45B call sub_A43C pop si leave retn sub_AC6E endp mainl_01_TEXT ends SCOREDAT_TEXT segment byte public 'CODE' use16 @SCOREDAT_LOAD_AND_DECODE$Q6RANK_T procdesc pascal near \ rank:word SCOREDAT_TEXT ends REGIST_TEXT segment byte public 'CODE' use16 @SCOREDAT_ENCODE_AND_SAVE$Q6RANK_T procdesc pascal near \ rank:word @regist_load_and_put_initial$qv procdesc near @regist_score_enter_from_resident$qv procdesc near @alphabet_put_initial$qv procdesc near @regist_rows_put$qv procdesc near @regist_name_enter$qv procdesc near REGIST_TEXT ends mainl_03_TEXT segment byte public 'CODE' use16 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B74E proc near var_1 = byte ptr -1 enter 2, 0 push si push di xor cx, cx jmp short loc_B769 ; --------------------------------------------------------------------------- loc_B758: mov bx, _entered_place shl bx, 3 add bx, cx cmp _hi.SDS_score.SD_name[bx], REGI_SP jnz short loc_B7A2 inc cx loc_B769: cmp cx, SCOREDAT_NAME_LEN jl short loc_B758 loc_B76E: 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 shl ax, 3 add ax, 92Eh mov di, ax mov cx, (SCOREDAT_NAME_LEN - 1) jmp short loc_B79C ; --------------------------------------------------------------------------- loc_B78B: mov bx, _entered_place shl bx, 3 add bx, cx mov al, [di] mov _hi.SDS_score.SD_name[bx], al dec cx inc di loc_B79C: or cx, cx jge short loc_B78B jmp short loc_B7CE ; --------------------------------------------------------------------------- loc_B7A2: mov bx, _entered_place shl bx, 3 mov al, _hi.SDS_score.SD_name[bx] mov [bp+var_1], al xor cx, cx jmp short loc_B7C7 ; --------------------------------------------------------------------------- loc_B7B4: mov bx, _entered_place shl bx, 3 add bx, cx mov al, _hi.SDS_score.SD_name[bx] cmp al, [bp+var_1] jnz short loc_B7CE inc cx loc_B7C7: cmp cx, SCOREDAT_NAME_LEN jl short loc_B7B4 jmp short loc_B76E ; --------------------------------------------------------------------------- loc_B7CE: pop di pop si leave retn sub_B74E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B7D2 proc near push bp mov bp, sp les bx, _resident mov eax, es:[bx+resident_t.rand] mov random_seed, eax call _snd_load c, offset aScore_m, ds, SND_LOAD_SONG kajacall KAJA_SONG_PLAY les bx, _resident mov al, es:[bx+resident_t.rank] mov ah, 0 call @scoredat_load_and_decode$q6rank_t pascal, ax les bx, _resident cmp es:[bx+resident_t.story_stage], STAGE_NONE jnz short loc_B819 mov _entered_place, -1 jmp short loc_B81F ; --------------------------------------------------------------------------- loc_B819: call @regist_score_enter_from_resident$qv mov _entered_place, ax loc_B81F: call @regist_load_and_put_initial$qv cmp _entered_place, -1 jnz short loc_B835 call @regist_rows_put$qv push 2 call palette_black_in jmp short loc_B858 ; --------------------------------------------------------------------------- loc_B835: call @regist_rows_put$qv call graph_copy_page pascal, 1 graph_accesspage 0 call @alphabet_put_initial$qv push 2 call palette_black_in call @regist_name_enter$qv call sub_B74E call @regist_rows_put$qv loc_B858: call input_wait_for_change pascal, 0 les bx, _resident cmp es:[bx+resident_t.rem_credits], 0 jz short loc_B871 cmp es:[bx+resident_t.story_stage], STAGE_ALL jnz short loc_B879 loc_B871: kajacall KAJA_SONG_FADE, 16 loc_B879: push 2 call palette_black_out les bx, _resident mov al, es:[bx+resident_t.rank] mov ah, 0 call @scoredat_encode_and_save$q6rank_t pascal, ax call super_free graph_accesspage 0 graph_showpage al mov PaletteTone, 0 call far ptr palette_show les bx, _resident cmp es:[bx+resident_t.rem_credits], 0 jz short loc_B8F1 cmp es:[bx+resident_t.story_stage], STAGE_ALL jz short loc_B8F1 call pi_load pascal, 0, ds, offset aConti_pi call pi_palette_apply pascal, 0 call pi_put_8 pascal, large 0, 0 freePISlotLarge 0 call cdg_load_all pascal, 0, ds, offset aConti_cd2 pop bp retn ; --------------------------------------------------------------------------- loc_B8F1: call pi_load pascal, 0, ds, offset aOver_pi_0 call pi_palette_apply pascal, 0 call pi_put_8 pascal, large 0, 0 freePISlotLarge 0 call _snd_delay_until_volume stdcall, 255 pop cx kajacall KAJA_SONG_STOP pop bp retn sub_B7D2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B92E proc near push bp mov bp, sp kajacall KAJA_SONG_STOP call _snd_load c, offset aOver_m, ds, SND_LOAD_SONG kajacall KAJA_SONG_PLAY push 1 call palette_black_in push 30040h call snd_delay_until_measure push 1 call palette_black_out kajacall KAJA_SONG_STOP pop bp retn sub_B92E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B972 proc near var_1 = byte ptr -1 enter 2, 0 call cdg_free pascal, 0 call cdg_free pascal, 1 call cdg_free pascal, 2 freePISlotLarge 0 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 [bp+var_1], al cmp [bp+var_1], 10 jl short loc_B9DD les bx, off_EE4E mov al, es:[bx+1] push ax mov al, [bp+var_1] cbw mov bx, 10 cwd idiv bx pop dx add dl, al mov bx, word ptr off_EE4E mov es:[bx+1], dl mov al, [bp+var_1] cbw mov bx, 10 cwd idiv bx mov [bp+var_1], dl loc_B9DD: les bx, off_EE4E mov al, [bp+var_1] add es:[bx+2], al mov PaletteTone, 0 call far ptr palette_show push 60h call frame_delay graph_accesspage 0 graph_showpage al call graph_clear call graph_show pushd [off_EE4E] call sub_A12E call sub_AC6E call sub_A174 call sub_C40D les bx, _resident mov es:[bx+resident_t.story_stage], STAGE_ALL call sub_B7D2 les bx, _resident cmp es:[bx+resident_t.rem_credits], 3 jnz short loc_BA66 cmp es:[bx+resident_t.RESIDENT_playchar_paletted], (1 + (PLAYCHAR_CHIYURI * 2)) jnb short loc_BA66 graph_accesspage 1 call graph_clear graph_accesspage 0 call graph_clear graph_showpage 0 push ds push offset a@99ed_txt ; "@99ED.TXT" call sub_A12E call sub_AC6E call sub_A174 loc_BA66: call text_clear call gaiji_restore call _game_exit pushd 0 push ds push offset aOp_0 ; "op" push ds push offset aOp_0 ; "op" call _execl add sp, 0Ch leave retn sub_B972 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BA8A proc near arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 push bp mov bp, sp push si push di mov ax, [bp+arg_4] sar ax, 3 mov dx, [bp+arg_2] shl dx, 6 add ax, dx mov dx, [bp+arg_2] shl dx, 4 add ax, dx mov di, ax mov si, [bp+arg_0] shl si, 4 add si, 0A62h mov ax, 0A800h mov es, ax assume es:nothing mov cx, [bp+arg_4] ; Hack (and cx, 7) db 081h db 0e1h db 007h db 000h mov bx, 8 loc_BAC0: mov ax, [si] ror ax, cl or es:[di], ax add di, 50h ; 'P' add si, 2 dec bx jnz short loc_BAC0 pop di pop si pop bp retn 6 sub_BA8A endp include th03/formats/cdg_unput_upwards.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BB51 proc near push bp mov bp, sp push di mov ax, 0A800h mov es, ax assume es:nothing xor ax, ax mov di, ax mov cx, 3E80h rep stosw pop di pop bp retn sub_BB51 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BB66 proc near push bp mov bp, sp push si mov si, 22C2h xor ax, ax jmp short loc_BB78 ; --------------------------------------------------------------------------- loc_BB71: mov byte ptr [si], 0 inc ax add si, 10h loc_BB78: cmp ax, 50h ; 'P' jl short loc_BB71 pop si pop bp retn sub_BB66 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BB80 proc near @@length = byte ptr -2 @@angle = byte ptr -1 enter 2, 0 push si push di mov si, 22C2h xor di, di jmp loc_BC1A ; --------------------------------------------------------------------------- loc_BB8E: cmp byte ptr [si], 0 jnz loc_BC16 mov ax, di shl ax, 3 cmp ax, word_10BB2 jg short loc_BC16 mov byte ptr [si], 1 test di, 3 jz short loc_BBBE call IRand mov bx, (632 shl 4) cwd idiv bx mov [si+2], dx mov word ptr [si+4], 0 jmp short loc_BBD1 ; --------------------------------------------------------------------------- loc_BBBE: mov word ptr [si+2], (632 shl 4) call IRand mov bx, (392 shl 4) cwd idiv bx mov [si+4], dx loc_BBD1: call IRand mov bx, 20h cwd idiv bx add dl, 50h mov [bp+@@angle], dl call IRand mov bx, 40h cwd idiv bx add dl, 30h ; '0' mov [bp+@@length], dl call IRand and ax, 3 mov [si+0Ah], ax push ds lea ax, [si+6] push ax push ds lea ax, [si+8] push ax push word ptr [bp+@@angle] mov al, [bp+@@length] mov ah, 0 push ax call vector2 loc_BC16: inc di add si, 10h loc_BC1A: mov al, byte_106B0 mov ah, 0 cmp ax, di jg loc_BB8E pop di pop si leave retn sub_BB80 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BC29 proc near push bp mov bp, sp push si mov si, 22C2h xor dx, dx jmp short loc_BC63 ; --------------------------------------------------------------------------- loc_BC34: cmp byte ptr [si], 0 jz short loc_BC5F mov byte ptr [si], 1 mov ax, [si+6] add [si+2], ax mov ax, [si+8] add [si+4], ax cmp word ptr [si+2], 0 jg short loc_BC53 add word ptr [si+2], 2780h loc_BC53: cmp word ptr [si+4], 1880h jl short loc_BC5F sub word ptr [si+4], 1880h loc_BC5F: inc dx add si, 10h loc_BC63: mov al, byte_106B0 mov ah, 0 cmp ax, dx jg short loc_BC34 pop si pop bp retn sub_BC29 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BC6F proc near push bp mov bp, sp push si push di mov si, 22C2h xor di, di jmp short loc_BC98 ; --------------------------------------------------------------------------- loc_BC7B: cmp byte ptr [si], 0 jz short loc_BC94 mov ax, [si+2] sar ax, 4 push ax mov ax, [si+4] sar ax, 4 push ax push word ptr [si+0Ah] call sub_BA8A loc_BC94: inc di add si, 10h loc_BC98: mov al, byte_106B0 mov ah, 0 cmp ax, di jg short loc_BC7B pop di pop si pop bp retn sub_BC6F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BCA5 proc near arg_0 = word ptr 4 arg_2 = word ptr 6 push bp mov bp, sp cmp _snd_active, 0 jnz short loc_BCB9 mov ax, word_10BB2 cmp ax, [bp+arg_0] jle short loc_BCCF jmp short loc_BCCA ; --------------------------------------------------------------------------- loc_BCB9: mov ah, KAJA_GET_SONG_MEASURE int 60h ; - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE ; BX = handle ; Return: CF set on error, DH = error code ; CF clear if successful cmp ax, [bp+arg_2] jb short loc_BCCF cmp word_10BB2, 0C0h jle short loc_BCCF loc_BCCA: mov ax, 1 jmp short loc_BCD1 ; --------------------------------------------------------------------------- loc_BCCF: xor ax, ax loc_BCD1: pop bp retn 4 sub_BCA5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BCD5 proc near push bp mov bp, sp call sub_BB80 call sub_BC29 call sub_BC6F cmp byte_10BB6, 0 jz short loc_BCFE cmp vsync_Count1, 1 jbe short loc_BCFE mov byte_10BB5, 0 mov byte_106B0, 32h ; '2' mov byte_10BB6, 0 loc_BCFE: cmp vsync_Count1, 0 jz short loc_BCFE mov vsync_Count1, 0 graph_showpage byte_10BB4 mov al, 1 sub al, byte_10BB4 mov byte_10BB4, al graph_accesspage al pop bp retn sub_BCD5 endp include th03/formats/cdg_put_dissolve.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BDF4 proc near arg_0 = word ptr 4 push bp mov bp, sp push si push di mov di, [bp+arg_0] call sub_BB51 mov ax, word_10BB2 cmp ax, word_10BBE jg loc_BEC1 push 140h mov al, byte_10BB4 mov ah, 0 add ax, ax mov bx, ax push word ptr [bx+27D8h] push di call cdg_unput_for_upwards_motion_e_8 mov al, byte_10BB4 mov ah, 0 add ax, ax mov bx, ax mov ax, [bx+27D8h] cmp ax, word_10BC0 jle short loc_BE66 mov al, byte_10BB4 mov ah, 0 add ax, ax mov dx, word_10BBC mov bx, ax sub [bx+27D8h], dx mov al, byte_10BB4 mov ah, 0 add ax, ax mov bx, ax mov ax, [bx+27D8h] cmp ax, word_10BC0 jge short loc_BE66 mov al, byte_10BB4 mov ah, 0 add ax, ax mov dx, word_10BC0 mov bx, ax mov [bx+27D8h], dx loc_BE66: mov ax, word_10BBE mov bx, 8 cwd idiv bx push ax mov ax, word_10BB2 cwd pop bx idiv bx mov dx, 7 sub dx, ax mov si, dx or si, si jge short loc_BE84 xor si, si loc_BE84: cmp byte_10BB5, 0 jz short loc_BEA7 cmp byte_10BC6, 0 jz short loc_BEA7 push (504 shl 16) or 200 mov al, byte_10BC6 mov ah, 0 push ax push si call cdg_put_dissolve_e_8 mov byte_10BC7, 1 loc_BEA7: push 320 mov al, byte_10BB4 mov ah, 0 add ax, ax mov bx, ax push word ptr [bx+27D8h] push di push si call cdg_put_dissolve_e_8 mov byte_10BC7, 0 loc_BEC1: pop di pop si pop bp retn 2 sub_BDF4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BEC7 proc near arg_0 = word ptr 4 push bp mov bp, sp push si push di mov di, [bp+arg_0] call sub_BB51 cmp word_10BB2, 0A1h jg loc_BF78 cmp word_10BB2, 0A0h jge short loc_BF57 push 140h mov al, byte_10BB4 mov ah, 0 add ax, ax mov bx, ax push word ptr [bx+27D8h] push di call cdg_unput_for_upwards_motion_e_8 mov al, byte_10BB4 mov ah, 0 add ax, ax mov bx, ax dec word ptr [bx+27D8h] mov ax, word_10BB2 mov bx, 20 cwd idiv bx mov si, ax cmp si, 7 jle short loc_BF18 mov si, 7 loc_BF18: cmp byte_10BB5, 0 jz short loc_BF3B cmp byte_10BC6, 0 jz short loc_BF3B push (504 shl 16) or 200 mov al, byte_10BC6 mov ah, 0 push ax push si call cdg_put_dissolve_e_8 mov byte_10BC7, 1 loc_BF3B: push 320 mov al, byte_10BB4 mov ah, 0 add ax, ax mov bx, ax push word ptr [bx+27D8h] push di push si call cdg_put_dissolve_e_8 mov byte_10BC7, 0 jmp short loc_BF78 ; --------------------------------------------------------------------------- loc_BF57: call grcg_setcolor pascal, (GC_RMW shl 16) + 0 call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8) call grcg_off loc_BF78: pop di pop si pop bp retn 2 sub_BEC7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BF7E proc near @@slot = word ptr 4 @@y_center = word ptr 6 @@x_center = word ptr 8 push bp mov bp, sp push si cmp word_10BB2, 0A0h jg short loc_BFAD mov ax, word_10BB2 mov bx, 20 cwd idiv bx mov dx, 7 sub dx, ax mov si, dx or si, si jge short loc_BFA0 xor si, si loc_BFA0: call cdg_put_dissolve_e_8 pascal, [bp+@@x_center], [bp+@@y_center], [bp+@@slot], si loc_BFAD: pop si pop bp retn 6 sub_BF7E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BFB2 proc near arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 push bp mov bp, sp push si mov si, [bp+arg_4] cmp word_10BBC, 2 jnz short loc_BFE3 mov al, byte_10BB4 mov ah, 0 add ax, ax mov bx, ax mov word ptr [bx+27D8h], 108h mov al, byte_10BB4 mov ah, 0 xor ax, 1 add ax, ax mov bx, ax mov word ptr [bx+27D8h], 107h jmp short loc_C00E ; --------------------------------------------------------------------------- loc_BFE3: mov al, byte_10BB4 mov ah, 0 add ax, ax mov dx, 118h sub dx, word_10BC4 mov bx, ax mov [bx+27D8h], dx mov al, byte_10BB4 mov ah, 0 xor ax, 1 add ax, ax mov dx, 118h sub dx, word_10BC4 mov bx, ax mov [bx+27D8h], dx loc_C00E: mov word_10BB2, 0 loc_C014: push si call sub_BDF4 call sub_BCD5 inc word_10BB2 push [bp+arg_2] push 100h call sub_BCA5 or ax, ax jz short loc_C014 mov word_10BB2, 0 loc_C032: push si call sub_BEC7 call sub_BCD5 inc word_10BB2 push [bp+arg_0] push 100h call sub_BCA5 or ax, ax jz short loc_C032 call grcg_setcolor pascal, (GC_RMW shl 16) + 0 call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8) call grcg_off call sub_BCD5 call grcg_setcolor pascal, (GC_RMW shl 16) + 0 call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8) call grcg_off call sub_BCD5 pop si pop bp retn 6 sub_BFB2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C097 proc near arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 push bp mov bp, sp push si push di mov si, [bp+arg_4] cmp word_10BBC, 2 jnz short loc_C0C9 mov al, byte_10BB4 mov ah, 0 add ax, ax mov bx, ax mov word ptr [bx+27D8h], 108h mov al, byte_10BB4 mov ah, 0 xor ax, 1 add ax, ax mov bx, ax mov word ptr [bx+27D8h], 107h jmp short loc_C0D6 ; --------------------------------------------------------------------------- loc_C0C9: mov ax, 118h sub ax, word_10BC4 mov word_10BC8, ax mov word_10BCA, ax loc_C0D6: mov word_10BB2, 0 loc_C0DC: push si call sub_BDF4 mov byte_10BC7, 1 push 320 push word_10BC2 lea ax, [si-1] push ax push 0 call cdg_put_dissolve_e_8 mov byte_10BC7, 0 call sub_BCD5 inc word_10BB2 push [bp+arg_2] push 100h call sub_BCA5 or ax, ax jz short loc_C0DC mov word_10BB2, 0 loc_C114: cmp word_10BB2, 0A1h jg short loc_C12A push 320 push word_10BC2 lea ax, [si-1] push ax call cdg_unput_for_upwards_motion_e_8 loc_C12A: push si call sub_BEC7 cmp word_10BB2, 0A1h jg short loc_C199 mov ax, word_10BB2 dec ax mov bx, 20 cwd idiv bx mov di, ax cmp di, 7 jle short loc_C14A mov di, 7 loc_C14A: cmp byte_10BB4, 0 jnz short loc_C155 dec word_10BC2 loc_C155: mov byte_10BC7, 1 cmp word_10BB2, 0A0h jge short loc_C173 push 320 push word_10BC2 lea ax, [si-1] push ax push di call cdg_put_dissolve_e_8 jmp short loc_C194 ; --------------------------------------------------------------------------- loc_C173: call grcg_setcolor pascal, (GC_RMW shl 16) + 0 call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8) call grcg_off loc_C194: mov byte_10BC7, 0 loc_C199: call sub_BCD5 inc word_10BB2 push [bp+arg_0] push 100h call sub_BCA5 or ax, ax jz loc_C114 call grcg_setcolor pascal, (GC_RMW shl 16) + 0 call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8) call grcg_off call sub_BCD5 call grcg_setcolor pascal, (GC_RMW shl 16) + 0 call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8) call grcg_off call sub_BCD5 pop di pop si pop bp retn 6 sub_C097 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C1FD proc near arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 push bp mov bp, sp cmp word_10BBC, 2 jnz short loc_C22A mov al, byte_10BB4 mov ah, 0 add ax, ax mov bx, ax mov word ptr [bx+27D8h], 108h mov al, byte_10BB4 mov ah, 0 xor ax, 1 add ax, ax mov bx, ax mov word ptr [bx+27D8h], 107h jmp short loc_C237 ; --------------------------------------------------------------------------- loc_C22A: mov ax, 118h sub ax, word_10BC4 mov word_10BC8, ax mov word_10BCA, ax loc_C237: mov word_10BB2, 0 loc_C23D: push [bp+arg_4] call sub_BDF4 call sub_BCD5 inc word_10BB2 push [bp+arg_2] push 100h call sub_BCA5 or ax, ax jz short loc_C23D mov word_10BB2, 0 loc_C25D: call sub_BB51 call sub_BCD5 inc word_10BB2 push [bp+arg_0] push 100h call sub_BCA5 or ax, ax jz short loc_C25D mov al, byte_10BB4 mov ah, 0 add ax, ax mov bx, ax mov ax, [bx+27D8h] mov word_10BC2, ax pop bp retn 6 sub_C1FD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C288 proc near var_4 = word ptr -4 var_2 = word ptr -2 enter 4, 0 push si push di push (352 shl 16) or 174 push (15 or FX_WEIGHT_BOLD) mov al, playchar_10BD7 mov ah, 0 shl ax, 2 mov bx, ax pushd aVERDICT_PLAYCHARS[bx] call graph_putsa_fx push (360 shl 16) or 199 push (15 or FX_WEIGHT_BOLD) mov al, _rank mov ah, 0 shl ax, 2 mov bx, ax pushd aVERDICT_RANKS[bx] call graph_putsa_fx mov si, 408 mov [bp+var_4], 0 mov [bp+var_2], 8 jmp short loc_C319 ; --------------------------------------------------------------------------- loc_C2D5: mov bx, [bp+var_2] mov al, [bx+27DCh] mov ah, 0 mov di, ax cmp [bp+var_4], 0 jnz short loc_C2F7 or di, di jz short loc_C2F7 mov ax, [bp+var_2] shl ax, 3 sub si, ax mov [bp+var_4], 1 loc_C2F7: cmp [bp+var_4], 0 jz short loc_C316 push si push (224 shl 16) or (15 or FX_WEIGHT_BOLD) mov bx, di shl bx, 2 pushd aVERDICT_NUMBERS[bx] call graph_putsa_fx add si, 16 loc_C316: dec [bp+var_2] loc_C319: cmp [bp+var_2], 0 jg short loc_C2D5 mov al, _rem_credits mov ah, 0 mov di, ax push si push (224 shl 16) or (15 or FX_WEIGHT_BOLD) mov bx, di shl bx, 2 pushd aVERDICT_NUMBERS[bx] call graph_putsa_fx push (408 shl 16) or 248 push (15 or FX_WEIGHT_BOLD) mov bx, di shl bx, 2 pushd aVERDICT_NUMBERS[bx] call graph_putsa_fx mov al, _skill mov ah, 0 mov bx, 100 cwd idiv bx mov di, ax mov si, 408 mov [bp+var_4], 0 or di, di jz short loc_C38D sub si, 16 mov [bp+var_4], 1 push si push (291 shl 16) or (15 or FX_WEIGHT_BOLD) mov bx, di shl bx, 2 pushd aVERDICT_NUMBERS[bx] call graph_putsa_fx add si, 16 loc_C38D: mov al, _skill mov ah, 0 mov bx, 100 cwd idiv bx mov bx, 10 mov ax, dx cwd idiv bx mov di, ax or di, di jz short loc_C3B4 cmp [bp+var_4], 0 jnz short loc_C3B4 mov [bp+var_4], 1 sub si, 8 loc_C3B4: cmp [bp+var_4], 0 jz short loc_C3D3 push si push (291 shl 16) or (15 or FX_WEIGHT_BOLD) mov bx, di shl bx, 2 pushd aVERDICT_NUMBERS[bx] call graph_putsa_fx add si, 16 loc_C3D3: mov al, _skill mov ah, 0 mov bx, 10 cwd idiv bx mov di, dx push si push (291 shl 16) or (15 or FX_WEIGHT_BOLD) mov bx, di shl bx, 2 pushd aVERDICT_NUMBERS[bx] call graph_putsa_fx lea ax, [si+16] call graph_putsa_fx pascal, ax, (291 shl 16) or (15 or FX_WEIGHT_BOLD), ds, offset aU_ ; "�_" pop di pop si leave retn sub_C288 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C40D proc near push bp mov bp, sp push si push di kajacall KAJA_SONG_FADE, 16 push 4 call palette_black_out call _snd_delay_until_volume stdcall, 255 pop cx kajacall KAJA_SONG_STOP mov byte_106B0, 50h ; 'P' mov si, 1 jmp short loc_C44B ; --------------------------------------------------------------------------- loc_C43C: les bx, _resident assume es:nothing add bx, si mov al, es:[bx+resident_t.pid_winner] mov [si+27DCh], al inc si loc_C44B: cmp si, 9 jl short loc_C43C les bx, _resident mov al, 3 sub al, es:[bx+resident_t.rem_credits] mov _rem_credits, al mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 mov playchar_10BD7, al mov al, es:[bx+resident_t.rank] mov _rank, al mov al, es:[bx+resident_t.skill] mov _skill, al mov al, byte_10BD3 mov ah, 0 cmp ax, 3 jz short loc_C48B cmp ax, 4 jz short loc_C49E jmp short loc_C4B1 ; --------------------------------------------------------------------------- loc_C48B: mov al, byte_10BD2 mov ah, 0 cwd sub ax, dx sar ax, 1 add al, _skill add al, 2 mov _skill, al loc_C49E: mov al, byte_10BD2 mov ah, 0 cwd sub ax, dx sar ax, 1 add al, _skill add al, 7 mov _skill, al loc_C4B1: cmp byte_10BD3, 5 jb short loc_C4C0 mov al, _skill add al, 15 mov _skill, al loc_C4C0: cmp byte_10BD4, 0 jz short loc_C4CC mov _skill, 100 loc_C4CC: cmp _skill, 100 jbe short loc_C4D8 mov _skill, 100 loc_C4D8: call _snd_load c, offset aEd_m, ds, SND_LOAD_SONG mov PaletteTone, 0 call far ptr palette_show push ds push offset aEdbk1_rgb ; "edbk1.rgb" call palette_entry_rgb call far ptr palette_show call grcg_setcolor pascal, (GC_RMW shl 16) + 8 graph_accesspage 1 call grcg_byteboxfill_x pascal, large 0, (((RES_X - 1) / 8) shl 16) or (RES_Y - 1) graph_accesspage 0 call grcg_byteboxfill_x pascal, large 0, (((RES_X - 1) / 8) shl 16) or (RES_Y - 1) call grcg_setcolor pascal, (GC_RMW shl 16) + 0 graph_accesspage 1 call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8) graph_accesspage 0 call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8) call grcg_off graph_showpage 1 call cdg_load_single_noalpha pascal, 0, ds, offset aStf1_cdg, 0 call cdg_load_single_noalpha pascal, 1, ds, offset aStf11_cdg, 0 call cdg_load_single pascal, 2, ds, offset aStf3_cdg, 0 call cdg_load_single pascal, 3, ds, offset aStf4_cdg, 0 call cdg_load_single_noalpha pascal, 4, ds, offset aStf5_cdg, 0 call cdg_load_single_noalpha pascal, 5, ds, offset aStf6_cdg, 0 call cdg_load_single_noalpha pascal, 6, ds, offset aStf7_cdg, 0 call cdg_load_single_noalpha pascal, 7, ds, offset aStf8_cdg, 0 call cdg_load_single_noalpha pascal, 8, ds, offset aStf9_cdg, 0 call cdg_load_single_noalpha pascal, 9, ds, offset aStf10_cdg, 0 call cdg_load_single_noalpha pascal, 10, ds, offset aStf2_cdg, 0 call cdg_load_single_noalpha pascal, 11, ds, offset aStf12_cdg, 0 call sub_BB66 mov word_10BB2, 0 les bx, _resident mov eax, es:[bx+resident_t.rand] mov random_seed, eax mov byte_10BB4, 0 mov PaletteTone, 100 call far ptr palette_show kajacall KAJA_SONG_PLAY mov byte_10BB6, 1 mov byte_10BB5, 1 push 1 call frame_delay mov vsync_Count1, 0 loc_C657: call sub_BB51 call sub_BCD5 inc word_10BB2 push 40100h call sub_BCA5 or ax, ax jz short loc_C657 mov byte_10BC7, 0 mov word_10BC4, 0 mov word_10BC0, 0C8h mov word_10BBC, 2 mov word_10BBE, 41h ; 'A' mov byte_10BC6, 0 pushd 8 push 0Ah call sub_BFB2 mov word_10BBC, 1 mov word_10BBE, 0A1h mov byte_10BB6, 0 push 10010h push 14h call sub_BFB2 mov word_10BC4, 20h ; ' ' mov word_10BC0, 0A8h ; '�' push 20016h push 18h call sub_C1FD mov byte_10BC6, 7 mov word_10BC0, 0D8h mov word_10BC4, 0FFF0h push 30020h push 22h ; '"' call sub_C097 mov byte_10BC6, 0 mov word_10BC0, 0C8h mov word_10BC4, 0 push 40024h push 26h ; '&' call sub_BFB2 push 0B002Ah push 2Ch ; ',' call sub_BFB2 push 50030h push 32h ; '2' call sub_BFB2 push 60036h push 38h ; '8' call sub_BFB2 push 0A003Ch push 3Eh ; '>' call sub_BFB2 mov word_10BB2, 0 loc_C735: call sub_BB51 push 1400080h push 8 call sub_BF7E push 0C000F0h push 9 call sub_BF7E call sub_BCD5 inc word_10BB2 push 420100h call sub_BCA5 or ax, ax jz short loc_C735 mov al, 1 sub al, byte_10BB4 graph_accesspage al call sub_C288 graph_accesspage byte_10BB4 call sub_C288 mov word_10BB2, 0 xor di, di loc_C781: call input_mode_interface call sub_BB51 call sub_BCD5 inc word_10BB2 or di, di jz short loc_C7AB mov PaletteTone, di call far ptr palette_show test byte ptr word_10BB2, 1 jz short loc_C781 dec di or di, di jnz short loc_C781 jmp short loc_C7CD ; --------------------------------------------------------------------------- loc_C7AB: cmp _input_sp, INPUT_NONE jz short loc_C781 cmp word_10BB2, 100h jle short loc_C781 kajacall KAJA_SONG_FADE, 8 mov di, 100 mov word_10BB2, 0 jmp short loc_C781 ; --------------------------------------------------------------------------- loc_C7CD: xor si, si jmp short loc_C7D8 ; --------------------------------------------------------------------------- loc_C7D1: call cdg_free pascal, si inc si loc_C7D8: cmp si, CDG_SLOT_COUNT jl short loc_C7D1 pop di pop si pop bp retn sub_C40D endp mainl_03_TEXT ends ; =========================================================================== SHARED segment word public 'CODE' use16 extern _snd_determine_mode:proc extern _snd_delay_until_volume:proc extern _snd_load:proc extern VECTOR2:proc extern _game_exit:proc extern CDG_PUT_8:proc extern CDG_PUT_HFLIP_8:proc extern FRAME_DELAY:proc extern PI_PALETTE_APPLY:proc extern PI_PUT_8:proc extern PI_PUT_INTERLACE_8:proc extern _snd_se_reset:proc extern SND_SE_PLAY:proc extern _snd_se_update:proc extern SND_KAJA_INTERRUPT:proc extern GAME_INIT_MAIN:proc extern CDG_LOAD_SINGLE:proc extern CDG_LOAD_SINGLE_NOALPHA:proc extern CDG_LOAD_ALL_NOALPHA:proc extern CDG_LOAD_ALL:proc extern CDG_FREE:proc extern _game_exit_from_mainl_to_main:proc extern GRAPH_PUTSA_FX:proc extern SND_DELAY_UNTIL_MEASURE:proc extern INPUT_WAIT_FOR_OK_OR_MEASURE:proc extern INPUT_WAIT_FOR_OK:proc extern PI_LOAD:proc extern PI_PUT_QUARTER_8:proc extern INPUT_MODE_INTERFACE:proc extern INPUT_WAIT_FOR_CHANGE:proc extern CDG_PUT_NOALPHA_8:proc extern _hflip_lut_generate:proc SHARED ends .data dw offset a00sl_cd2 dw offset a02sl_cd2 dw offset a04sl_cd2 dw offset a06sl_cd2 dw offset a08sl_cd2 dw offset a10sl_cd2 dw offset a12sl_cd2 dw offset a14sl_cd2 dw offset a16sl_cd2 dd a@00tx_txt ; "@00TX.TXT" dd a@01tx_txt ; "@01TX.TXT" dd a@02tx_txt ; "@02TX.TXT" dd a@03tx_txt ; "@03TX.TXT" dd a@04tx_txt ; "@04TX.TXT" dd a@05tx_txt ; "@05TX.TXT" dd a@06tx_txt ; "@06TX.TXT" dd a@07tx_txt ; "@07TX.TXT" dd a@08tx_txt ; "@08TX.TXT" off_E4B6 dd a@00dm0_txt ; "@00DM0.TXT" CHAR_TITLE dd TITLE_REIMU ; " ���Ɠ`����ێ炷��ޏ� " CHAR_NAME dd NAME_REIMU ; " ����@�˖�" dd TITLE_MIMA ; " �v���̖��ɉ^����C���鐸�_ " dd NAME_MIMA ; " �� ��" dd TITLE_MARISA ; " ���@�ƍg������Ȃ鑶�� " dd NAME_MARISA ; " ���J�@������ " dd TITLE_ELLEN ; "�͂��炫���̂ŗ����閂��" dd NAME_ELLEN ; "�@�@�G����" dd TITLE_KOTOHIME ; " �e���ɔ��݂�P " dd NAME_KOTOHIME ; " ���e�P" dd TITLE_KANA ; " ������������������ " dd NAME_KANA ; "�J�i�E�A�i�x����" dd TITLE_RIKAKO ; " �@�@�@����T���Ȋw " dd NAME_RIKAKO ; "�@���q�@�����q" dd TITLE_CHIYURI ; "�@ ���������閲���̏Z�l " dd NAME_CHIYURI ; " �k���́@�����" dd TITLE_YUMEMI ; "�@ �@�@�@�����`���@�@�@ " dd NAME_YUMEMI ; " �@����@����" word_E502 dw offset aSt_cd2 word_E504 dw offset aStnx1_pi a0016_pi db '0016.pi',0 db 0 db 0 db 0 db 0 a00sl_cd2 db '00sl.cd2',0 a02sl_cd2 db '02sl.cd2',0 a04sl_cd2 db '04sl.cd2',0 a06sl_cd2 db '06sl.cd2',0 a08sl_cd2 db '08sl.cd2',0 a10sl_cd2 db '10sl.cd2',0 a12sl_cd2 db '12sl.cd2',0 a14sl_cd2 db '14sl.cd2',0 a16sl_cd2 db '16sl.cd2',0 a@00tx_txt db '@00TX.TXT',0 a@01tx_txt db '@01TX.TXT',0 a@02tx_txt db '@02TX.TXT',0 a@03tx_txt db '@03TX.TXT',0 a@04tx_txt db '@04TX.TXT',0 a@05tx_txt db '@05TX.TXT',0 a@06tx_txt db '@06TX.TXT',0 a@07tx_txt db '@07TX.TXT',0 a@08tx_txt db '@08TX.TXT',0 a@00dm0_txt db '@00DM0.TXT',0 TITLE_REIMU db ' ���Ɠ`����ێ炷��ޏ� ',0 NAME_REIMU db ' ����@�˖�',0 TITLE_MIMA db ' �v���̖��ɉ^����C���鐸�_ ',0 NAME_MIMA db ' �� ��',0 TITLE_MARISA db ' ���@�ƍg������Ȃ鑶�� ',0 NAME_MARISA db ' ���J�@������ ',0 TITLE_ELLEN db '�͂��炫���̂ŗ����閂��',0 NAME_ELLEN db '�@�@�G����',0 TITLE_KOTOHIME db ' �e���ɔ��݂�P ',0 NAME_KOTOHIME db ' ���e�P',0 TITLE_KANA db ' ������������������ ',0 NAME_KANA db '�J�i�E�A�i�x����',0 TITLE_RIKAKO db ' �@�@�@����T���Ȋw ',0 NAME_RIKAKO db '�@���q�@�����q',0 TITLE_CHIYURI db '�@ ���������閲���̏Z�l ',0 NAME_CHIYURI db ' �k���́@�����',0 TITLE_YUMEMI db '�@ �@�@�@�����`���@�@�@ ',0 NAME_YUMEMI db ' �@����@����',0 include th03/formats/cfg_lres[data].asm aLogo0_rgb db 'logo0.rgb',0 aLogo_cd2 db 'logo.cd2',0 aLogo5_cdg db 'logo5.cdg',0 aLogo1_rgb db 'logo1.rgb',0 aSt_cd2 db 'st.cd2',0 aStnx1_pi db 'stnx1.pi',0 aStnx0_pi db 'stnx0.pi',0 a00mm_m db '00mm.m',0 aDec_m db 'dec.m',0 aEn2_pi db 'EN2.pi',0 aEnemy00_pi db 'ENEMY00.pi',0 aEnemy01_pi db 'ENEMY01.pi',0 aEnemy02_pi db 'ENEMY02.pi',0 aEnemy03_pi db 'ENEMY03.pi',0 aEnemy04_pi db 'ENEMY04.pi',0 aYume_efc db 'YUME.EFC',0 aCOul db '������1.dat',0 aMikoft_bft db 'MIKOFT.bft',0 ; char path[] path db 'op',0 aWin_m db 'win.m',0 ; char aMain[] aMain db 'main',0 include libs/master.lib/atan8[data].asm include libs/master.lib/bfnt_id[data].asm include libs/master.lib/clip[data].asm include libs/master.lib/edges[data].asm include libs/master.lib/fil[data].asm include libs/master.lib/dos_ropen[data].asm include libs/master.lib/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 public _snd_active _snd_active db 0 db 0 include libs/master.lib/respal_exist[data].asm include th03/snd/se_state[data].asm include th02/formats/pfopen[data].asm include th03/formats/cdg[data].asm include th03/snd/se_priority[data].asm a0 db '0',0 aOver_pi db 'over.pi',0 include th03/formats/pi_put_masked[data].asm asc_EFC2 db ' ', 0 even public _REGIST_PLAYCHARS _REGIST_PLAYCHARS label dword dd aNoEntry ; " No Entry! " dd aB@b@sCB@b@ ; "�@�@�˖��@�@" dd aB@b@cgcvb@b@ ; "�@�@�����@�@" dd aB@cvcanB@ ; " �@�������@ " dd aB@gggmgub@ ; " �@�G�����@ " dd aB@pmuexpb@ ; " �@���e�P�@ " dd aB@Gjgi ; " �@ �J�i " dd aB@canboq ; " �@�����q " dd aB@vVfvsb@ ; " �@�����@ " dd aB@CF ; " �@ �����@ " public _REGI_PLAYCHAR _REGI_PLAYCHAR label byte db REGI_R, REGI_E, REGI_I, REGI_M, REGI_U, regi_sp, regi_sp, regi_sp db REGI_M, REGI_I, REGI_M, REGI_A, regi_sp, regi_sp, regi_sp, regi_sp db REGI_M, REGI_A, REGI_R, REGI_I, REGI_S, REGI_A, regi_sp, regi_sp db REGI_E, REGI_L, REGI_E, REGI_N, regi_sp, regi_sp, regi_sp, regi_sp db REGI_K, REGI_O, REGI_T, REGI_O, REGI_H, REGI_I, REGI_M, REGI_E db REGI_K, REGI_A, REGI_N, REGI_A, regi_sp, regi_sp, regi_sp, regi_sp db REGI_R, REGI_I, REGI_K, REGI_A, REGI_K, REGI_O, regi_sp, regi_sp db REGI_C, REGI_H, REGI_I, REGI_Y, REGI_U, REGI_R, REGI_I, regi_sp db REGI_Y, REGI_U, REGI_M, REGI_E, REGI_M, REGI_I, regi_sp, regi_sp public _SCOREDAT_FN _SCOREDAT_FN dw offset aYume_nem public _rank_image_fn, _REGIST_INPUT_HOLD_INIT _rank_image_fn dw offset aRft0_cdg _REGIST_INPUT_HOLD_INIT dw 4 dup(0) aNoEntry db ' No Entry! ',0 aB@b@sCB@b@ db '�@�@�˖��@�@',0 aB@b@cgcvb@b@ db '�@�@�����@�@',0 aB@cvcanB@ db ' �@�������@ ',0 aB@gggmgub@ db ' �@�G�����@ ',0 aB@pmuexpb@ db ' �@���e�P�@ ',0 aB@Gjgi db ' �@ �J�i ',0 aB@canboq db ' �@�����q ',0 aB@vVfvsb@ db ' �@�����@ ',0 aB@CF db ' �@ �����@ ',0 aYume_nem db 'YUME.NEM',0 aRft0_cdg db 'rft0.cdg',0 public _regib_pi, _regi2_bft, _regi1_bft _regib_pi db 'regib.pi',0 _regi2_bft db 'regi2.bft',0 _regi1_bft db 'regi1.bft',0 aScore_m db 'score.m',0 aConti_pi db 'conti.pi',0 aConti_cd2 db 'conti.cd2',0 aOver_pi_0 db 'over.pi',0 aOver_m db 'over.m',0 db 0 off_EE4E dd a@00ed_txt ; "@00ED.TXT" db 3Ch ; < db 0 db 7Eh ; ~ db 0 db 0FFh db 0 db 0FFh db 0 db 0FFh db 0 db 0FFh db 0 db 7Eh ; ~ db 0 db 3Ch ; < db 0 db 0 db 0 db 18h db 0 db 3Ch ; < db 0 db 7Eh ; ~ db 0 db 7Eh ; ~ db 0 db 3Ch ; < db 0 db 18h db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 18h db 0 db 3Ch ; < db 0 db 3Ch ; < db 0 db 18h db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 18h db 0 db 18h db 0 db 0 db 0 db 0 db 0 db 0 db 0 include th03/formats/cdg_put_dissolve[data].asm aVERDICT_PLAYCHARS label dword dd aFocab@sC_0 ; " ����@�˖�" dd aCgCv_0 ; " �� ��" dd aCIjb@cvcan_0 ; " ���J�@������ " dd aB@b@gggmgu_0 ; "�@�@�G����" dd aPmuexp_0 ; " ���e�P" dd aGjgibegagigx_0 ; "�J�i�E�A�i�x����" dd aB@tisqb@canb_0 ; "�@���q�@�����q" dd aCkftiB@vVfvs_0 ; " �k���́@�����" dd aB@iknsb@cF_0 ; " �@����@����" aVERDICT_RANKS label dword dd aVdvbvuvs ; " �d������" dd aVmvpvtvnvbvm ; " �m����������" dd aVgvbvtvd ; " �g������" dd aVkvxvovbvfvivg ; "�k������������" aVERDICT_NUMBERS label dword dd aVo ; "�O" dd aVp ; "�P" dd aVq ; "�Q" dd aVr ; "�R" dd aVs ; "�S" dd aVt ; "�T" dd aVu ; "�U" dd aVv ; "�V" dd aVw ; "�W" dd aVx ; "�X" a@00ed_txt db '@00ED.TXT',0 a@99ed_txt db '@99ED.TXT',0 ; char aOp_0[] aOp_0 db 'op',0 aFocab@sC_0 db ' ����@�˖�',0 aCgCv_0 db ' �� ��',0 aCIjb@cvcan_0 db ' ���J�@������ ',0 aB@b@gggmgu_0 db '�@�@�G����',0 aPmuexp_0 db ' ���e�P',0 aGjgibegagigx_0 db '�J�i�E�A�i�x����',0 aB@tisqb@canb_0 db '�@���q�@�����q',0 aCkftiB@vVfvs_0 db ' �k���́@�����',0 aB@iknsb@cF_0 db ' �@����@����',0 aVdvbvuvs db ' �d������',0 aVmvpvtvnvbvm db ' �m����������',0 aVgvbvtvd db ' �g������',0 aVkvxvovbvfvivg db '�k������������',0 aVo db '�O',0 aVp db '�P',0 aVq db '�Q',0 aVr db '�R',0 aVs db '�S',0 aVt db '�T',0 aVu db '�U',0 aVv db '�V',0 aVw db '�W',0 aVx db '�X',0 aU_ db '�_',0 aEd_m db 'ed.m',0 aEdbk1_rgb db 'edbk1.rgb',0 aStf1_cdg db 'stf1.cdg',0 aStf11_cdg db 'stf11.cdg',0 aStf3_cdg db 'stf3.cdg',0 aStf4_cdg db 'stf4.cdg',0 aStf5_cdg db 'stf5.cdg',0 aStf6_cdg db 'stf6.cdg',0 aStf7_cdg db 'stf7.cdg',0 aStf8_cdg db 'stf8.cdg',0 aStf9_cdg db 'stf9.cdg',0 aStf10_cdg db 'stf10.cdg',0 aStf2_cdg db 'stf2.cdg',0 aStf12_cdg db 'stf12.cdg',0 .data? unk_F72C db ? ; db 59 dup(?) byte_F768 db ? unk_F769 db ? ; db 59 dup(?) byte_F7A5 db ? unk_F7A6 db ? ; db 59 dup(?) byte_F7E2 db ? _playchar_filename_id db PLAYER_COUNT dup (?) byte_F7E5 db ? include libs/master.lib/clip[bss].asm include libs/master.lib/fil[bss].asm include libs/master.lib/js[bss].asm include libs/master.lib/pal[bss].asm include libs/master.lib/vs[bss].asm include libs/master.lib/vsync[bss].asm include libs/master.lib/mem[bss].asm include libs/master.lib/superpa[bss].asm include 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 public _cutscene_script _cutscene_script dd ? dword_105CA dd ? byte_105CE db ? db ? point_105D0 Point <?> word_105D4 dw ? col_105D6 db ? byte_105D7 db ? word_105D8 dw ? public _resident _resident dd ? public _hi _hi scoredat_section_t <?> include th03/hiscore/regist[bss].asm db 2 dup(?) byte_106B0 db ? db 1281 dup(?) word_10BB2 dw ? byte_10BB4 db ? byte_10BB5 db ? byte_10BB6 db ? db 5 dup(?) word_10BBC dw ? word_10BBE dw ? word_10BC0 dw ? word_10BC2 dw ? word_10BC4 dw ? byte_10BC6 db ? byte_10BC7 db ? word_10BC8 dw ? word_10BCA dw ? _rem_credits db ? db 5 dup(?) byte_10BD2 db ? byte_10BD3 db ? byte_10BD4 db ? db ? _rank db ? playchar_10BD7 db ? _skill db ? db ? ; end