; ; +-------------------------------------------------------------------------+ ; | This file has been generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2009 by Hex-Rays, | ; +-------------------------------------------------------------------------+ ; ; 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 group_01 group CFG_LRES_TEXT, MAINL_SC_TEXT, CUTSCENE_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$qv procdesc near CFG_LRES_TEXT ends MAINL_SC_TEXT segment byte public 'CODE' use16 @win_load$qv procdesc pascal near @win_text_put$qv procdesc pascal near MAINL_SC_TEXT ends ; Segment type: Pure code CUTSCENE_TEXT segment byte public 'CODE' use16 assume cs:group_01 ;org 3 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing 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 call snd_delay_until_measure pascal, (6 shl 16) or 16 mov si, 1 jmp short loc_97FC ; --------------------------------------------------------------------------- loc_97E8: call cdg_put_noalpha_8 pascal, large (352 shl 16) or 300, si call @frame_delay$qi pascal, 6 inc si loc_97FC: cmp si, 5 jl short loc_97E8 call snd_delay_until_measure pascal, (10 shl 16) or 64 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 call snd_delay_until_measure pascal, (11 shl 16) or 4 push 1 call palette_white_in call @frame_delay$qi pascal, 8 call @win_text_put$qv call sub_9887 or ax, ax jnz short loc_9868 call sub_990C loc_9868: call @input_mode_interface$qv cmp _input_sp, INPUT_NONE jnz short loc_987D call @frame_delay$qi pascal, 1 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[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 _PIC_FN[bx] 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 _PIC_FN[bx] 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 _do_not_show_stage_number, 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 _do_not_show_stage_number, 0 loc_99F1: call @pi_load$qinxc pascal, 0, ds, offset aStnx0_pi call @pi_put_8$qiii pascal, large 0, 0 freePISlotLarge 0 call @pi_load$qinxc pascal, 0, ds, word_E504 call @pi_put_8$qiii 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$qi 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 _do_not_show_stage_number, 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 (V_WHITE 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 (V_WHITE 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 (V_WHITE 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 (V_WHITE 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$qinxc pascal, 0, ds, offset aEn2_pi call @pi_put_interlace_8$qiii 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$qinxc loc_9BC2: call @pi_put_interlace_8$qiii 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$qv 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$qi 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$qinxc pascal, 0, large [bp+arg_0] mov ax, si imul ax, 320 call @pi_put_interlace_8$qiii 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$qinxc pascal, 0, word ptr [bp+arg_0+2], bx mov ax, si imul ax, 320 call @pi_put_interlace_8$qiii 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$qv or ax, ax jz @@ret call @game_init_main$qnxuc 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$qv 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[0], al mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1] add al, -1 mov _playchar[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 @win_load$qv 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[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 call @cutscene_script_load$qnxc pascal, [off_E4B6] call @cutscene_animate$qv call @cutscene_script_free$qv call sub_990C call sub_9A2C call gaiji_restore loc_9F1E: call @game_exit_from_mainl_to_main$qv 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$qv 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$qv 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: call @frame_delay$qi pascal, 1 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$qinxc pascal, 0, ds, offset aOver_pi call @pi_palette_apply$qi pascal, 0 call @pi_put_8$qiii 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 @CUTSCENE_SCRIPT_LOAD$QNXC procdesc pascal near \ fn:dword @cutscene_script_free$qv procdesc near @cutscene_animate$qv procdesc pascal near CUTSCENE_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$qi 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$qinxc pascal, 0, ds, offset aConti_pi call @pi_palette_apply$qi pascal, 0 call @pi_put_8$qiii pascal, large 0, 0 freePISlotLarge 0 call cdg_load_all pascal, 0, ds, offset aConti_cd2 pop bp retn ; --------------------------------------------------------------------------- loc_B8F1: call @pi_load$qinxc pascal, 0, ds, offset aOver_pi_0 call @pi_palette_apply$qi pascal, 0 call @pi_put_8$qiii 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 call snd_delay_until_measure pascal, (3 shl 16) or 64 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 call @frame_delay$qi pascal, 96 graph_accesspage 0 graph_showpage al call graph_clear call graph_show call @cutscene_script_load$qnxc pascal, [off_EE4E] call @cutscene_animate$qv call @cutscene_script_free$qv 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 @cutscene_script_load$qnxc call @cutscene_animate$qv call @cutscene_script_free$qv loc_BA66: call text_clear call gaiji_restore call @game_exit$qv 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 (V_WHITE 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 (V_WHITE 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 (V_WHITE 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 (V_WHITE 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 (V_WHITE 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 (V_WHITE 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 (V_WHITE 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 (V_WHITE 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 (V_WHITE 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 call @frame_delay$qi pascal, 1 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$qv 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 include th02/snd/snd.inc extern _snd_determine_mode:proc extern _snd_delay_until_volume:proc extern _snd_load:proc extern VECTOR2:proc extern @game_exit$qv:proc extern CDG_PUT_8:proc extern CDG_PUT_HFLIP_8:proc extern @FRAME_DELAY$QI:proc extern @PI_PALETTE_APPLY$QI:proc extern @PI_PUT_8$QIII:proc extern @PI_PUT_INTERLACE_8$QIII:proc extern _snd_se_reset:proc extern SND_KAJA_INTERRUPT:proc extern @GAME_INIT_MAIN$QNXUC: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$qv:proc extern GRAPH_PUTSA_FX:proc extern SND_DELAY_UNTIL_MEASURE:proc extern @PI_LOAD$QINXC:proc extern @INPUT_MODE_INTERFACE$QV:proc extern @INPUT_WAIT_FOR_CHANGE$QI:proc extern CDG_PUT_NOALPHA_8:proc extern _hflip_lut_generate:proc SHARED ends .data public _PIC_FN _PIC_FN label word 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 public _WIN_MESSAGE_FN _WIN_MESSAGE_FN label word 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 ; " 久遠の夢に運命を任せる精神 " dd NAME_MIMA ; " 魅 魔" dd TITLE_MARISA ; " 魔法と紅夢からなる存在 " dd NAME_MARISA ; " 霧雨 魔理沙 " dd TITLE_ELLEN ; "はたらきもので恋を夢見る魔女" dd NAME_ELLEN ; "  エレン" dd TITLE_KOTOHIME ; " 弾幕に美を夢みる姫 " dd NAME_KOTOHIME ; " 小兎姫" dd TITLE_KANA ; " 夢を失った少女騒霊 " dd NAME_KANA ; "カナ・アナベラル" dd TITLE_RIKAKO ; "    夢を探す科学 " dd NAME_RIKAKO ; " 朝倉 理香子" dd TITLE_CHIYURI ; "  時をかける夢幻の住人 " dd NAME_CHIYURI ; " 北白河 ちゆり" 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 ' 久遠の夢に運命を任せる精神 ',0 NAME_MIMA db ' 魅 魔',0 TITLE_MARISA db ' 魔法と紅夢からなる存在 ',0 NAME_MARISA db ' 霧雨 魔理沙 ',0 TITLE_ELLEN db 'はたらきもので恋を夢見る魔女',0 NAME_ELLEN db '  エレン',0 TITLE_KOTOHIME db ' 弾幕に美を夢みる姫 ',0 NAME_KOTOHIME db ' 小兎姫',0 TITLE_KANA db ' 夢を失った少女騒霊 ',0 NAME_KANA db 'カナ・アナベラル',0 TITLE_RIKAKO db '    夢を探す科学 ',0 NAME_RIKAKO db ' 朝倉 理香子',0 TITLE_CHIYURI db '  時をかける夢幻の住人 ',0 NAME_CHIYURI db ' 北白河 ちゆり',0 TITLE_YUMEMI db '     夢幻伝説    ',0 NAME_YUMEMI db '  岡崎 夢美',0 include th03/formats/cfg_lres[data].asm public _logo0_rgb, _logo_cd2, _logo5_cdg _logo0_rgb db 'logo0.rgb',0 _logo_cd2 db 'logo.cd2',0 _logo5_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 public _CUTSCENE_KANJI _CUTSCENE_KANJI 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@ ; "  エレン  " dd aB@pmuexpb@ ; "  小兎姫  " dd aB@Gjgi ; "   カナ " dd aB@canboq ; "  理香子 " 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 '  エレン  ',0 aB@pmuexpb@ db '  小兎姫  ',0 aB@Gjgi db '   カナ ',0 aB@canboq db '  理香子 ',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 ; " 霧雨 魔理沙 " dd aB@b@gggmgu_0 ; "  エレン" dd aPmuexp_0 ; " 小兎姫" dd aGjgibegagigx_0 ; "カナ・アナベラル" dd aB@tisqb@canb_0 ; " 朝倉 理香子" dd aCkftiB@vVfvs_0 ; " 北白河 ちゆり" dd aB@iknsb@cF_0 ; "  岡崎 夢美" aVERDICT_RANKS label dword dd aVdvbvuvs ; " Easy" dd aVmvpvtvnvbvm ; " Normal" dd aVgvbvtvd ; " Hard" dd aVkvxvovbvfvivg ; "Lunatic" aVERDICT_NUMBERS label dword dd aVo ; "0" dd aVp ; "1" dd aVq ; "2" dd aVr ; "3" dd aVs ; "4" dd aVt ; "5" dd aVu ; "6" dd aVv ; "7" dd aVw ; "8" dd aVx ; "9" 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 ' 霧雨 魔理沙 ',0 aB@b@gggmgu_0 db '  エレン',0 aPmuexp_0 db ' 小兎姫',0 aGjgibegagigx_0 db 'カナ・アナベラル',0 aB@tisqb@canb_0 db ' 朝倉 理香子',0 aCkftiB@vVfvs_0 db ' 北白河 ちゆり',0 aB@iknsb@cF_0 db '  岡崎 夢美',0 aVdvbvuvs db ' Easy',0 aVmvpvtvnvbvm db ' Normal',0 aVgvbvtvd db ' Hard',0 aVkvxvovbvfvivg db 'Lunatic',0 aVo db '0',0 aVp db '1',0 aVq db '2',0 aVr db '3',0 aVs db '4',0 aVt db '5',0 aVu db '6',0 aVv db '7',0 aVw db '8',0 aVx db '9',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? extern _playchar:byte:PLAYCHAR_COUNT extern _do_not_show_stage_number:byte 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 th03/cutscene/cutscene[bss].asm 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