[Reverse-engineering] [th04/th05] Text popups

As in, "HiScore Entry!!", "Extend!!", "Full PowerUp!!", etc.
Class CFloatingText in uth05win… but I decided against naming it like
that because of some stage/BGM title-related variables in the middle.

Funded by -Tom-.
This commit is contained in:
nmlgc 2019-03-06 19:57:23 +01:00
parent fac879f8e6
commit 3ba536a2d8
6 changed files with 467 additions and 635 deletions

245
th04/hud/popup.asm Normal file
View File

@ -0,0 +1,245 @@
; void popup_update_and_render(void);
public popup_update_and_render
popup_update_and_render proc near
@@i = byte ptr -1
enter 2, 0
mov al, _popup_id_new
cmp al, _popup_id_cur
jz short @@needs_init?
cmp _popup_frame, 64
jb short @@needs_init?
call text_putsa pascal, (PLAYFIELD_TRAM_X shl 16) + POPUP_TRAM_Y, _PLAYFIELD_BLANK_ROW, TX_WHITE
call text_putsa pascal, (PLAYFIELD_TRAM_X shl 16) + 23, _PLAYFIELD_BLANK_ROW, TX_WHITE
mov _popup_frame, 0
@@needs_init?:
cmp _popup_frame, 0
jnz short @@done?
mov al, _popup_id_new
mov _popup_id_cur, al
mov [bp+@@i], 0
jmp short @@shiftbuf_init_more?
; ---------------------------------------------------------------------------
@@shiftbuf_init_loop:
mov al, [bp+@@i]
mov ah, 0
mov bx, ax
mov _popup_shiftbuf[bx], g_EMPTY
inc [bp+@@i]
@@shiftbuf_init_more?:
cmp [bp+@@i], POPUP_LEN
jb short @@shiftbuf_init_loop
mov al, _popup_id_cur
mov ah, 0
shl ax, 2
mov bx, ax
pushd _POPUP_STRINGS[bx]
call _strlen
add sp, 4
mov _popup_gaiji_len, ax
mov bx, _popup_gaiji_len
mov _popup_shiftbuf[bx], 0
add ax, ax
mov dx, PLAYFIELD_TRAM_X + PLAYFIELD_TRAM_W
sub dx, ax
mov _popup_cur_tram_x, dx
cmp _popup_id_new, POPUP_ID_BONUS
jz short @@enforce_bonus_text_width
mov ax, PLAYFIELD_TRAM_X + (PLAYFIELD_TRAM_W / 2)
sub ax, _popup_gaiji_len
mov _popup_dest_tram_x, ax
jmp short @@finish_init
; ---------------------------------------------------------------------------
; Since we print the number of points separately...
@@enforce_bonus_text_width:
mov _popup_dest_tram_x, 16
@@finish_init:
mov _popup_dest_reached, 0
@@done?:
cmp _popup_frame, POPUP_DURATION
jb short @@shift_needed?
call text_putsa pascal, (PLAYFIELD_TRAM_X shl 16) + POPUP_TRAM_Y, _PLAYFIELD_BLANK_ROW, TX_WHITE
mov _popup_frame, 0
mov _popup_fp, offset nullfunc_near
leave
retn
; ---------------------------------------------------------------------------
@@shift_needed?:
mov al, _popup_frame
mov ah, 0
mov dx, _popup_gaiji_len
dec dx
cmp ax, dx
jge short @@use_unshifted_string
mov [bp+@@i], 0
jmp short @@shift_more?
; ---------------------------------------------------------------------------
@@shift_loop:
mov al, [bp+@@i]
mov ah, 0
mov bx, ax
mov al, _popup_shiftbuf[bx+1]
mov dl, [bp+@@i]
mov dh, 0
mov bx, dx
mov _popup_shiftbuf[bx], al
inc [bp+@@i]
@@shift_more?:
mov al, [bp+@@i]
mov ah, 0
mov dx, _popup_gaiji_len
dec dx
cmp ax, dx
jl short @@shift_loop
mov al, _popup_id_cur
mov ah, 0
shl ax, 2
mov bx, ax
les bx, _POPUP_STRINGS[bx]
assume es:nothing
mov al, _popup_frame
mov ah, 0
add bx, ax
mov al, es:[bx]
mov bx, offset _popup_shiftbuf
dec bx
add bx, _popup_gaiji_len
mov [bx], al
call gaiji_putsa pascal, _popup_cur_tram_x, POPUP_TRAM_Y, ds, offset _popup_shiftbuf, TX_WHITE
jmp @@ret
; ---------------------------------------------------------------------------
@@use_unshifted_string:
mov ax, _popup_cur_tram_x
cmp ax, _popup_dest_tram_x
jle short @@dest_reached
push ax
push 2
mov al, _popup_id_cur
mov ah, 0
shl ax, 2
mov bx, ax
pushd _POPUP_STRINGS[bx]
push TX_WHITE
call gaiji_putsa
mov ax, _popup_gaiji_len
add ax, ax
add ax, _popup_cur_tram_x
cmp ax, PLAYFIELD_TRAM_X + PLAYFIELD_TRAM_W - GAIJI_TRAM_W
jg short @@still_shifting
mov ax, _popup_gaiji_len
add ax, ax
add ax, _popup_cur_tram_x
call text_putca pascal, ax, (POPUP_TRAM_Y shl 16) or ' ', TX_WHITE
@@still_shifting:
sub _popup_cur_tram_x, GAIJI_TRAM_W
jmp short @@ret
; ---------------------------------------------------------------------------
@@dest_reached:
cmp _popup_dest_reached, 0
jnz short @@put_regular
mov _popup_dest_reached, 1
call text_putsa pascal, (PLAYFIELD_TRAM_X shl 16) + POPUP_TRAM_Y, _PLAYFIELD_BLANK_ROW, TX_WHITE
@@put_regular:
push _popup_dest_tram_x
push POPUP_TRAM_Y
mov al, _popup_id_cur
mov ah, 0
shl ax, 2
mov bx, ax
pushd _POPUP_STRINGS[bx]
push TX_WHITE
call gaiji_putsa
cmp _popup_id_cur, POPUP_ID_BONUS
jnz short @@ret
if GAME eq 5
call hud_points_put pascal, ((PLAYFIELD_TRAM_X + (PLAYFIELD_TRAM_W / 2)) shl 16) + 2, large [_popup_bonus]
else
call popup_points_put pascal, large [_popup_bonus]
endif
@@ret:
inc _popup_frame
leave
retn
popup_update_and_render endp
if GAME eq 4
; Yes, specific to the bonus popup, due to the hardcoded position.
; void pascal near popup_points_put(unsigned long points);
public popup_points_put
popup_points_put proc pascal near
arg @@points:dword
local @@digit:dword, @@divisor:dword, @@buf:byte:SCORE_DIGITS + 2 ; padding...
push si
push di
mov @@divisor, 1000000
xor si, si
xor di, di
jmp short @@more_digits?
; ---------------------------------------------------------------------------
@@digit_loop:
mov eax, @@points
xor edx, edx
div @@divisor
mov @@digit, eax
mov eax, @@points
xor edx, edx
div @@divisor
mov @@points, edx
or di, word ptr @@digit
or di, di
jz short @@omit_leading_zeroes
mov al, byte ptr @@digit
add al, GB_DIGITS
mov @@buf[si], al
jmp short @@divisor_next
; ---------------------------------------------------------------------------
@@omit_leading_zeroes:
mov @@buf[si], g_EMPTY
@@divisor_next:
mov ebx, 10
mov eax, @@divisor
xor edx, edx
div ebx
mov @@divisor, eax
inc si
@@more_digits?:
cmp @@divisor, 1
ja short @@digit_loop
mov al, byte ptr @@points
add al, gb_0_
mov @@buf[SCORE_DIGITS - 2], al ; (ones)
mov @@buf[SCORE_DIGITS - 1], gb_0_ ; ("continues used" digit)
mov @@buf[SCORE_DIGITS - 0], 0 ; (null terminator)
push ((PLAYFIELD_TRAM_X + (PLAYFIELD_TRAM_W / 2)) shl 16) + POPUP_TRAM_Y
push ss
lea ax, @@buf
push ax
push TX_WHITE
call gaiji_putsa
pop di
pop si
ret
popup_points_put endp
endif

27
th04/hud/popup[bss].asm Normal file
View File

@ -0,0 +1,27 @@
POPUP_TRAM_Y = 2
POPUP_LEN = 8
POPUP_DURATION = 128
public _popup_gaiji_len, _popup_id_cur, _popup_dest_reached, _popup_shiftbuf
public _popup_cur_tram_x, _popup_dest_tram_x, _bgm_title_id, _popup_id_new
public _overlay_text_fp, _popup_fp, _popup_byte_unknown, _popup_bonus
_popup_gaiji_len dw ?
_popup_id_cur db ?
_popup_dest_reached db ?
; Buffer used for shifting in the popup text from the right of the playfield.
; Only used while the text isn't fully visible.
_popup_shiftbuf db (POPUP_LEN + 1) dup(?)
db ? ; (word alignment)
if GAME eq 5
dd ? ;
endif
_popup_cur_tram_x dw ?
_popup_dest_tram_x dw ?
_bgm_title_id db ?
_popup_id_new db ?
_overlay_text_fp dw ?
_popup_fp dw ?
_popup_byte_unknown db ?
db ?
_popup_bonus dd ?

View File

@ -1,3 +1,11 @@
POPUP_ID_HISCORE_ENTRY = 0
POPUP_ID_EXTEND = 1
POPUP_ID_BONUS = 2
POPUP_ID_FULL_POWERUP = 3
if GAME eq 5
POPUP_ID_DREAMBONUS_MAX = 4
endif
gStage_1 db 0BCh, 0BDh, 0AAh, 0B0h, 0AEh, 2, 0A1h, 0 gStage_1 db 0BCh, 0BDh, 0AAh, 0B0h, 0AEh, 2, 0A1h, 0
gFINAL_STAGE db 0AFh, 0B2h, 0B7h, 0AAh, 0B5h, 2, 0BCh, 0BDh, 0AAh, 0B0h, 0AEh, 0 gFINAL_STAGE db 0AFh, 0B2h, 0B7h, 0AAh, 0B5h, 2, 0BCh, 0BDh, 0AAh, 0B0h, 0AEh, 0
gEXTRA_STAGE db 0AEh, 0C1h, 0BDh, 0BBh, 0AAh, 2, 0BCh, 0BDh, 0AAh, 0B0h, 0AEh, 0 gEXTRA_STAGE db 0AEh, 0C1h, 0BDh, 0BBh, 0AAh, 2, 0BCh, 0BDh, 0AAh, 0B0h, 0AEh, 0
@ -5,3 +13,17 @@ gpHISCORE_ENTRY db 40h, 41h, 42h, 43h, 44h, 45h, 46h, 47h, 0
gpEXTEND db 48h, 49h, 4Ah, 4Bh, 4Ch, 0 gpEXTEND db 48h, 49h, 4Ah, 4Bh, 4Ch, 0
gpBONUS db 58h, 59h, 5Ah, 5Bh, 0 gpBONUS db 58h, 59h, 5Ah, 5Bh, 0
gpFULL_POWERUP db 50h, 51h, 52h, 53h, 54h, 55h, 56h, 57h, 0 gpFULL_POWERUP db 50h, 51h, 52h, 53h, 54h, 55h, 56h, 57h, 0
if GAME eq 5
gpDREAMBONUS_MAX db 65h, 66h, 67h, 68h, 69h, 6Ah, 6Bh, 6Ch, 6Dh, 6Eh, 0
endif
align 2
public _POPUP_STRINGS
_POPUP_STRINGS label dword
dd gpHISCORE_ENTRY
dd gpEXTEND
dd gpBONUS
dd gpFULL_POWERUP
if GAME eq 5
dd gpDREAMBONUS_MAX
endif

View File

@ -7,3 +7,5 @@ include th04/hardware/grcg.inc
include th04/hardware/input.inc include th04/hardware/input.inc
include th04/math/randring_next.inc include th04/math/randring_next.inc
include th04/math/motion.inc include th04/math/motion.inc
include th02/gaiji_boldfont.inc
include th04/gaiji.inc

View File

@ -394,8 +394,8 @@ loc_ABD8:
call sub_12CE5 call sub_12CE5
call _circles_render call _circles_render
GRCG_OFF_CLOBBERING dx GRCG_OFF_CLOBBERING dx
call fp_259DC call _overlay_text_fp
call fp_259DE call _popup_fp
call sub_CD36 call sub_CD36
call far ptr _input_reset_sense call far ptr _input_reset_sense
mov ax, vsync_Count1 mov ax, vsync_Count1
@ -677,7 +677,7 @@ sub_AED0 proc near
loc_AEF9: loc_AEF9:
mov word_213DE, 1 mov word_213DE, 1
call text_fillca pascal, (' ' shl 16) + TX_BLACK + TX_REVERSE call text_fillca pascal, (' ' shl 16) + TX_BLACK + TX_REVERSE
mov fp_23D90, offset nullsub_1 mov fp_23D90, offset nullfunc_near
call sub_AD03 call sub_AD03
les bx, _humaconfig les bx, _humaconfig
cmp byte ptr es:[bx+3Eh], 0 cmp byte ptr es:[bx+3Eh], 0
@ -906,8 +906,8 @@ loc_B156:
loc_B1AE: loc_B1AE:
nopcall sub_CB99 nopcall sub_CB99
mov fp_259DC, offset sub_10DA3 mov _overlay_text_fp, offset sub_10DA3
mov fp_259DE, offset nullsub_1 mov _popup_fp, offset nullfunc_near
pop si pop si
pop bp pop bp
retn retn
@ -1835,10 +1835,10 @@ RANDRING_NEXT_DEF 1
; =============== S U B R O U T I N E ======================================= ; =============== S U B R O U T I N E =======================================
public nullfunc_near
nullsub_1 proc near nullfunc_near proc near
retn retn
nullsub_1 endp nullfunc_near endp
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
nop nop
@ -4012,15 +4012,15 @@ loc_CF70:
mov al, stage_id mov al, stage_id
add al, al add al, al
add al, 2 add al, 2
mov bgm_title_id, al mov _bgm_title_id, al
cmp stage_id, 3 cmp stage_id, 3
jnz short loc_CFAC jnz short loc_CFAC
cmp playchar, 0 cmp playchar, 0
jz short loc_CFAC jz short loc_CFAC
mov bgm_title_id, 10h mov _bgm_title_id, 10h
loc_CFAC: loc_CFAC:
mov fp_259DC, offset sub_11195 mov _overlay_text_fp, offset sub_11195
mov al, 1 mov al, 1
pop bp pop bp
retn retn
@ -6602,7 +6602,7 @@ var_1 = byte ptr -1
cmp byte_25660, 24h ; '$' cmp byte_25660, 24h ; '$'
jb short loc_E47B jb short loc_E47B
call sub_10D4B call sub_10D4B
mov fp_259DC, offset nullsub_1 mov _overlay_text_fp, offset nullfunc_near
mov al, 1 mov al, 1
jmp short loc_E4CD jmp short loc_E4CD
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -6678,7 +6678,7 @@ var_1 = byte ptr -1
cmp byte_25660, 0 cmp byte_25660, 0
jnz short loc_E4EB jnz short loc_E4EB
call sub_10D77 call sub_10D77
mov fp_259DC, offset nullsub_1 mov _overlay_text_fp, offset nullfunc_near
mov al, 1 mov al, 1
jmp short loc_E53D jmp short loc_E53D
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -7493,7 +7493,7 @@ loc_EBD8:
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_EBE4: loc_EBE4:
mov _stage_render, offset nullsub_1 mov _stage_render, offset nullfunc_near
loc_EBEA: loc_EBEA:
pop di pop di
@ -7865,8 +7865,8 @@ loc_EE60:
loc_EE8C: loc_EE8C:
nopcall sub_EEE8 nopcall sub_EEE8
mov byte_259DB, 1 mov _popup_id_new, POPUP_ID_EXTEND
mov fp_259DE, offset sub_112D8 mov _popup_fp, offset popup_update_and_render
call snd_se_play pascal, 7 call snd_se_play pascal, 7
locret_EEA3: locret_EEA3:
@ -10161,7 +10161,7 @@ sub_FFA4 proc near
push bp push bp
mov bp, sp mov bp, sp
mov byte_256A8, 0 mov byte_256A8, 0
mov fp_255AA, offset nullsub_1 mov fp_255AA, offset nullfunc_near
pop bp pop bp
retn retn
sub_FFA4 endp sub_FFA4 endp
@ -10461,7 +10461,7 @@ loc_10245:
jnz short loc_10281 jnz short loc_10281
mov _scroll_active, 0 mov _scroll_active, 0
call graph_scrollup pascal, 0 call graph_scrollup pascal, 0
mov fp_255AA, offset nullsub_1 mov fp_255AA, offset nullfunc_near
mov al, Palettes+42 mov al, Palettes+42
mov byte_257D6, al mov byte_257D6, al
mov al, Palettes+43 mov al, Palettes+43
@ -11887,16 +11887,16 @@ var_1 = byte ptr -1
les bx, _humaconfig les bx, _humaconfig
cmp byte ptr es:[bx+3Eh], 0 cmp byte ptr es:[bx+3Eh], 0
jnz short loc_10DC6 jnz short loc_10DC6
mov fp_259DC, offset sub_10F36 mov _overlay_text_fp, offset sub_10F36
jmp short loc_10DDE jmp short loc_10DDE
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_10DC6: loc_10DC6:
mov fp_259DC, offset nullsub_1 mov _overlay_text_fp, offset nullfunc_near
call gaiji_putsa pascal, (18 shl 16) + 12, ds, offset gDEMO_PLAY, TX_YELLOW + TX_BLINK call gaiji_putsa pascal, (18 shl 16) + 12, ds, offset gDEMO_PLAY, TX_YELLOW + TX_BLINK
loc_10DDE: loc_10DDE:
mov byte_259E0, 0 mov _popup_byte_unknown, 0
jmp short loc_10E35 jmp short loc_10E35
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -11970,7 +11970,7 @@ var_1 = byte ptr -1
cmp byte_22EA2, 0 cmp byte_22EA2, 0
jnz short loc_10E51 jnz short loc_10E51
call sub_10D77 call sub_10D77
mov fp_259DC, offset nullsub_1 mov _overlay_text_fp, offset nullfunc_near
jmp short loc_10EA1 jmp short loc_10EA1
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -12088,7 +12088,7 @@ sub_10EED proc near
var_1 = byte ptr -1 var_1 = byte ptr -1
enter 2, 0 enter 2, 0
mov al, byte_259E0 mov al, _popup_byte_unknown
add al, byte_22EA3 add al, byte_22EA3
mov [bp+var_1], al mov [bp+var_1], al
cmp [bp+var_1], 0 cmp [bp+var_1], 0
@ -12118,9 +12118,9 @@ sub_10EED endp
sub_10F36 proc near sub_10F36 proc near
push bp push bp
mov bp, sp mov bp, sp
cmp byte_259E0, 0C0h cmp _popup_byte_unknown, 0C0h
jb loc_10FED jb loc_10FED
cmp byte_259E0, 0C0h cmp _popup_byte_unknown, 0C0h
jnz short loc_10F53 jnz short loc_10F53
call sub_10D4B call sub_10D4B
mov byte_22EF6, 0 mov byte_22EF6, 0
@ -12128,17 +12128,17 @@ sub_10F36 proc near
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_10F53: loc_10F53:
test byte_259E0, 1 test _popup_byte_unknown, 1
jnz short loc_10F5E jnz short loc_10F5E
inc byte_22EF6 inc byte_22EF6
loc_10F5E: loc_10F5E:
cmp byte_22EF6, 10h cmp byte_22EF6, 10h
jb short loc_10F80 jb short loc_10F80
test byte_259E0, 1 test _popup_byte_unknown, 1
jz loc_1118F jz loc_1118F
mov fp_259DC, offset nullsub_1 mov _overlay_text_fp, offset nullfunc_near
mov byte_259E0, 0 mov _popup_byte_unknown, 0
mov byte_22EF6, 0 mov byte_22EF6, 0
pop bp pop bp
retn retn
@ -12189,7 +12189,7 @@ loc_10FA1:
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_10FED: loc_10FED:
cmp byte_259E0, 0 cmp _popup_byte_unknown, 0
jnz short loc_11057 jnz short loc_11057
mov byte_22EF6, 10h mov byte_22EF6, 10h
mov al, stage_id mov al, stage_id
@ -12198,13 +12198,13 @@ loc_10FED:
mov al, stage_id mov al, stage_id
add al, al add al, al
inc al inc al
mov bgm_title_id, al mov _bgm_title_id, al
cmp stage_id, 0 cmp stage_id, 0
jnz short loc_11023 jnz short loc_11023
cmp playchar, 0 cmp playchar, 0
jnz short loc_11023 jnz short loc_11023
mov stage_title_id, 0 mov stage_title_id, 0
mov bgm_title_id, 0 mov _bgm_title_id, 0
loc_11023: loc_11023:
mov al, stage_title_id mov al, stage_title_id
@ -12215,7 +12215,7 @@ loc_11023:
call _strlen call _strlen
add sp, 4 add sp, 4
mov stage_title_len, ax mov stage_title_len, ax
mov al, bgm_title_id mov al, _bgm_title_id
mov ah, 0 mov ah, 0
shl ax, 2 shl ax, 2
mov bx, ax mov bx, ax
@ -12279,7 +12279,7 @@ loc_110A1:
sub ax, bgm_title_len sub ax, bgm_title_len
push ax push ax
push 23 push 23
mov al, bgm_title_id mov al, _bgm_title_id
mov ah, 0 mov ah, 0
shl ax, 2 shl ax, 2
mov bx, ax mov bx, ax
@ -12328,9 +12328,9 @@ loc_11128:
push stage_title_len push stage_title_len
call sub_10EA5 call sub_10EA5
GRCG_OFF_CLOBBERING dx GRCG_OFF_CLOBBERING dx
test byte_259E0, 3 test _popup_byte_unknown, 3
jnz short loc_1118F jnz short loc_1118F
cmp byte_259E0, 0 cmp _popup_byte_unknown, 0
jz short loc_1118F jz short loc_1118F
inc byte_22EF6 inc byte_22EF6
cmp byte_22EF6, 18h cmp byte_22EF6, 18h
@ -12338,7 +12338,7 @@ loc_11128:
mov byte_22EF6, 0 mov byte_22EF6, 0
loc_1118F: loc_1118F:
inc byte_259E0 inc _popup_byte_unknown
pop bp pop bp
retn retn
sub_10F36 endp sub_10F36 endp
@ -12370,7 +12370,7 @@ loc_111BB:
jb short loc_111D8 jb short loc_111D8
test byte_22EA3, 1 test byte_22EA3, 1
jz loc_112D2 jz loc_112D2
mov fp_259DC, offset nullsub_1 mov _overlay_text_fp, offset nullfunc_near
mov byte_22EA3, 0 mov byte_22EA3, 0
pop bp pop bp
retn retn
@ -12401,7 +12401,7 @@ loc_11211:
cmp byte_22EA3, 0 cmp byte_22EA3, 0
jnz short loc_11237 jnz short loc_11237
mov byte_22EF6, 10h mov byte_22EF6, 10h
mov al, bgm_title_id mov al, _bgm_title_id
mov ah, 0 mov ah, 0
shl ax, 2 shl ax, 2
mov bx, ax mov bx, ax
@ -12422,7 +12422,7 @@ loc_11237:
sub ax, word_259C6 sub ax, word_259C6
push ax push ax
push 23 push 23
mov al, bgm_title_id mov al, _bgm_title_id
mov ah, 0 mov ah, 0
shl ax, 2 shl ax, 2
mov bx, ax mov bx, ax
@ -12463,257 +12463,7 @@ loc_112D2:
retn retn
sub_11195 endp sub_11195 endp
include th04/hud/popup.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_112D8 proc near
var_1 = byte ptr -1
enter 2, 0
mov al, byte_259DB
cmp al, byte_259CA
jz short loc_11317
cmp byte_22EA4, 40h
jb short loc_11317
call text_putsa pascal, (4 shl 16) + 2, off_22EF8, TX_WHITE
call text_putsa pascal, (4 shl 16) + 23, off_22EF8, TX_WHITE
mov byte_22EA4, 0
loc_11317:
cmp byte_22EA4, 0
jnz short loc_1138B
mov al, byte_259DB
mov byte_259CA, al
mov [bp+var_1], 0
jmp short loc_11339
; ---------------------------------------------------------------------------
loc_1132A:
mov al, [bp+var_1]
mov ah, 0
mov bx, ax
mov byte ptr [bx+468Ch], 2
inc [bp+var_1]
loc_11339:
cmp [bp+var_1], 8
jb short loc_1132A
mov al, byte_259CA
mov ah, 0
shl ax, 2
mov bx, ax
pushd dword ptr [bx+1BA6h]
call _strlen
add sp, 4
mov word_259C8, ax
mov bx, word_259C8
mov byte ptr [bx+468Ch], 0
add ax, ax
mov dx, 34h ; '4'
sub dx, ax
mov word_259D6, dx
cmp byte_259DB, 2
jz short loc_11380
mov ax, 1Ch
sub ax, word_259C8
mov word_259D8, ax
jmp short loc_11386
; ---------------------------------------------------------------------------
loc_11380:
mov word_259D8, 10h
loc_11386:
mov byte_259CB, 0
loc_1138B:
cmp byte_22EA4, 80h
jb short loc_113B2
call text_putsa pascal, (4 shl 16) + 2, off_22EF8, TX_WHITE
mov byte_22EA4, 0
mov fp_259DE, offset nullsub_1
leave
retn
; ---------------------------------------------------------------------------
loc_113B2:
mov al, byte_22EA4
mov ah, 0
mov dx, word_259C8
dec dx
cmp ax, dx
jge short loc_11424
mov [bp+var_1], 0
jmp short loc_113DF
; ---------------------------------------------------------------------------
loc_113C6:
mov al, [bp+var_1]
mov ah, 0
mov bx, ax
mov al, [bx+468Dh]
mov dl, [bp+var_1]
mov dh, 0
mov bx, dx
mov [bx+468Ch], al
inc [bp+var_1]
loc_113DF:
mov al, [bp+var_1]
mov ah, 0
mov dx, word_259C8
dec dx
cmp ax, dx
jl short loc_113C6
mov al, byte_259CA
mov ah, 0
shl ax, 2
mov bx, ax
les bx, off_22EE6[bx]
assume es:nothing
mov al, byte_22EA4
mov ah, 0
add bx, ax
mov al, es:[bx]
mov bx, 468Ch
dec bx
add bx, word_259C8
mov [bx], al
call gaiji_putsa pascal, word_259D6, 2, ds, offset unk_259CC, TX_WHITE
jmp loc_114BF
; ---------------------------------------------------------------------------
loc_11424:
mov ax, word_259D6
cmp ax, word_259D8
jle short loc_11474
push ax
push 2
mov al, byte_259CA
mov ah, 0
shl ax, 2
mov bx, ax
pushd off_22EE6[bx] ; strp
push TX_WHITE
call gaiji_putsa
mov ax, word_259C8
add ax, ax
add ax, word_259D6
cmp ax, 32h ; '2'
jg short loc_1146D
mov ax, word_259C8
add ax, ax
add ax, word_259D6
call text_putca pascal, ax, (2 shl 16) + ' ', TX_WHITE
loc_1146D:
sub word_259D6, 2
jmp short loc_114BF
; ---------------------------------------------------------------------------
loc_11474:
cmp byte_259CB, 0
jnz short loc_11493
mov byte_259CB, 1
call text_putsa pascal, (4 shl 16) + 2, off_22EF8, TX_WHITE
loc_11493:
push word_259D8
push 2
mov al, byte_259CA
mov ah, 0
shl ax, 2
mov bx, ax
pushd off_22EE6[bx] ; strp
push TX_WHITE
call gaiji_putsa
cmp byte_259CA, 2
jnz short loc_114BF
pushd [dword_259E2]
call sub_114C5
loc_114BF:
inc byte_22EA4
leave
retn
sub_112D8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_114C5 proc near
var_12 = dword ptr -12h
var_E = dword ptr -0Eh
var_A = byte ptr -0Ah
var_4 = byte ptr -4
var_3 = byte ptr -3
var_2 = byte ptr -2
arg_0 = dword ptr 4
enter 12h, 0
push si
push di
mov [bp+var_E], 0F4240h
xor si, si
xor di, di
jmp short loc_11521
; ---------------------------------------------------------------------------
loc_114D9:
mov eax, [bp+arg_0]
xor edx, edx
div [bp+var_E]
mov [bp+var_12], eax
mov eax, [bp+arg_0]
xor edx, edx
div [bp+var_E]
mov [bp+arg_0], edx
or di, word ptr [bp+var_12]
or di, di
jz short loc_11508
mov al, byte ptr [bp+var_12]
add al, 0A0h
mov [bp+si+var_A], al
jmp short loc_1150C
; ---------------------------------------------------------------------------
loc_11508:
mov [bp+si+var_A], 2
loc_1150C:
mov ebx, 0Ah
mov eax, [bp+var_E]
xor edx, edx
div ebx
mov [bp+var_E], eax
inc si
loc_11521:
cmp [bp+var_E], 1
ja short loc_114D9
mov al, byte ptr [bp+arg_0]
add al, 0A0h
mov [bp+var_4], al
mov [bp+var_3], 0A0h
mov [bp+var_2], 0
push (28 shl 16) + 2
push ss
lea ax, [bp+var_A]
push ax
push TX_WHITE
call gaiji_putsa
pop di
pop si
leave
retn 4
sub_114C5 endp
include th04/formats/bb_txt_load.asm include th04/formats/bb_txt_load.asm
; =============== S U B R O U T I N E ======================================= ; =============== S U B R O U T I N E =======================================
@ -12908,8 +12658,8 @@ loc_116FD:
or al, al or al, al
jz short loc_11718 jz short loc_11718
mov _is_hiscore, 1 mov _is_hiscore, 1
mov byte_259DB, 0 mov _popup_id_new, POPUP_ID_HISCORE_ENTRY
mov fp_259DE, offset sub_112D8 mov _popup_fp, offset popup_update_and_render
loc_11718: loc_11718:
mov eax, _score_delta_frame mov eax, _score_delta_frame
@ -15234,7 +14984,7 @@ var_1 = byte ptr -1
jnz short loc_12996 jnz short loc_12996
cmp word_2671A, 2 cmp word_2671A, 2
jg short loc_12A05 jg short loc_12A05
mov _stage_render, offset nullsub_1 mov _stage_render, offset nullfunc_near
loc_12991: loc_12991:
call tiles_render_all call tiles_render_all
@ -27865,8 +27615,8 @@ off_19EB0 dw offset loc_19AC8
sub_19EBC proc far sub_19EBC proc far
push bp push bp
mov bp, sp mov bp, sp
mov _midboss_invalidate?, offset nullsub_1 mov _midboss_invalidate?, offset nullfunc_near
mov _midboss_render, offset nullsub_1 mov _midboss_render, offset nullfunc_near
setfarfp _midboss_update, nullsub_2 setfarfp _midboss_update, nullsub_2
mov _midboss_active, 0 mov _midboss_active, 0
mov _midboss_hp, 0 mov _midboss_hp, 0
@ -33329,7 +33079,7 @@ loc_1CB7F:
mov [bp+var_8], 7D0h mov [bp+var_8], 7D0h
loc_1CB84: loc_1CB84:
mov dword_259E2, 0 mov _popup_bonus, 0
xor di, di xor di, di
jmp short loc_1CBF1 jmp short loc_1CBF1
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -33352,7 +33102,7 @@ loc_1CB91:
loc_1CBB7: loc_1CBB7:
movzx eax, [bp+var_4] movzx eax, [bp+var_4]
add dword_259E2, eax add _popup_bonus, eax
add _score_delta, eax add _score_delta, eax
push word ptr [si+2] push word ptr [si+2]
push word ptr [si+4] push word ptr [si+4]
@ -33377,10 +33127,10 @@ loc_1CBED:
loc_1CBF1: loc_1CBF1:
cmp di, 1B8h cmp di, 1B8h
jl short loc_1CB91 jl short loc_1CB91
cmp dword_259E2, 0 cmp _popup_bonus, 0
jz short loc_1CC0A jz short loc_1CC0A
mov byte_259DB, 2 mov _popup_id_new, POPUP_ID_BONUS
mov fp_259DE, offset sub_112D8 mov _popup_fp, offset popup_update_and_render
loc_1CC0A: loc_1CC0A:
inc _bullet_clear_trigger inc _bullet_clear_trigger
@ -35511,8 +35261,8 @@ loc_1DBD0:
jnb short loc_1DC04 jnb short loc_1DC04
cmp power, 127 cmp power, 127
jnz short loc_1DBF5 jnz short loc_1DBF5
mov byte_259DB, 3 mov _popup_id_new, POPUP_ID_FULL_POWERUP
mov fp_259DE, offset sub_112D8 mov _popup_fp, offset popup_update_and_render
cmp _bullet_clear_time, 20 cmp _bullet_clear_time, 20
jnb short loc_1DBF5 jnb short loc_1DBF5
mov _bullet_clear_time, 20 mov _bullet_clear_time, 20
@ -35615,8 +35365,8 @@ loc_1DCCC:
cmp power, 128 cmp power, 128
jb short loc_1DCFE jb short loc_1DCFE
mov power, 128 mov power, 128
mov byte_259DB, 3 mov _popup_id_new, POPUP_ID_FULL_POWERUP
mov fp_259DE, offset sub_112D8 mov _popup_fp, offset popup_update_and_render
cmp _bullet_clear_time, 20 cmp _bullet_clear_time, 20
jnb short loc_1DCFE jnb short loc_1DCFE
mov _bullet_clear_time, 20 mov _bullet_clear_time, 20
@ -35658,8 +35408,8 @@ loc_1DD47:
inc byte ptr es:[bx+0Bh] inc byte ptr es:[bx+0Bh]
call sub_EEE8 call sub_EEE8
call snd_se_play pascal, 7 call snd_se_play pascal, 7
mov byte_259DB, 1 mov _popup_id_new, POPUP_ID_EXTEND
mov fp_259DE, offset sub_112D8 mov _popup_fp, offset popup_update_and_render
jmp short loc_1DD90 ; jumptable 0001CCD9 case 696 jmp short loc_1DD90 ; jumptable 0001CCD9 case 696
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -35669,8 +35419,8 @@ loc_1DD6F:
mov _bullet_clear_time, 20 mov _bullet_clear_time, 20
loc_1DD7B: loc_1DD7B:
mov byte_259DB, 3 mov _popup_id_new, POPUP_ID_FULL_POWERUP
mov fp_259DE, offset sub_112D8 mov _popup_fp, offset popup_update_and_render
mov power, 128 mov power, 128
call sub_11DE6 call sub_11DE6
@ -35941,7 +35691,7 @@ sub_1DF61 proc near
push bp push bp
mov bp, sp mov bp, sp
setfarfp _boss_update, nullsub_2 setfarfp _boss_update, nullsub_2
mov _boss_fg_render, offset nullsub_1 mov _boss_fg_render, offset nullfunc_near
mov byte_26719, 0 mov byte_26719, 0
mov byte_2671D, 0 mov byte_2671D, 0
mov byte_2671F, 0 mov byte_2671F, 0
@ -35993,8 +35743,8 @@ sub_1DFEF proc far
call bb_stage_load pascal, ds, offset aSt00_bb call bb_stage_load pascal, ds, offset aSt00_bb
mov Palettes, 0FFh mov Palettes, 0FFh
mov Palettes+1, 0FFh mov Palettes+1, 0FFh
mov _stage_render, offset nullsub_1 mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullsub_1 mov _stage_invalidate, offset nullfunc_near
pop bp pop bp
retf retf
sub_1DFEF endp sub_1DFEF endp
@ -36039,8 +35789,8 @@ sub_1E0B3 proc far
push ( 32 shl 16) or 8 push ( 32 shl 16) or 8
call select_for_rank call select_for_rank
mov byte_2D01E, al mov byte_2D01E, al
mov _stage_render, offset nullsub_1 mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullsub_1 mov _stage_invalidate, offset nullfunc_near
pop bp pop bp
retf retf
sub_1E0B3 endp sub_1E0B3 endp
@ -36081,8 +35831,8 @@ sub_1E186 proc far
call super_entry_bfnt call super_entry_bfnt
call _cdg_load_single_noalpha pascal, 16, ds, offset aSt02bk_cdg, 0 call _cdg_load_single_noalpha pascal, 16, ds, offset aSt02bk_cdg, 0
call bb_stage_load pascal, ds, offset aSt02_bb call bb_stage_load pascal, ds, offset aSt02_bb
mov _stage_render, offset nullsub_1 mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullsub_1 mov _stage_invalidate, offset nullfunc_near
pop bp pop bp
retf retf
sub_1E186 endp sub_1E186 endp
@ -36177,8 +35927,8 @@ loc_1E3A6:
push 0 push 0
call _cdg_load_single_noalpha call _cdg_load_single_noalpha
call bb_stage_load pascal, ds, offset aSt03_bb call bb_stage_load pascal, ds, offset aSt03_bb
mov _stage_render, offset nullsub_1 mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullsub_1 mov _stage_invalidate, offset nullfunc_near
pop bp pop bp
retf retf
sub_1E245 endp sub_1E245 endp
@ -36192,7 +35942,7 @@ sub_1E3C2 proc far
push bp push bp
mov bp, sp mov bp, sp
setfarfp _midboss_update_func, nullsub_2 setfarfp _midboss_update_func, nullsub_2
mov _midboss_render_func, offset nullsub_1 mov _midboss_render_func, offset nullfunc_near
mov frames_until_midboss, 60000 mov frames_until_midboss, 60000
call sub_1DF61 call sub_1DF61
mov _boss_pos.cur.x, (192 shl 4) mov _boss_pos.cur.x, (192 shl 4)
@ -36231,7 +35981,7 @@ sub_1E47C proc far
push bp push bp
mov bp, sp mov bp, sp
setfarfp _midboss_update_func, nullsub_2 setfarfp _midboss_update_func, nullsub_2
mov _midboss_render_func, offset nullsub_1 mov _midboss_render_func, offset nullfunc_near
mov frames_until_midboss, 60000 mov frames_until_midboss, 60000
call sub_1DF61 call sub_1DF61
mov _boss_pos.cur.x, (192 shl 4) mov _boss_pos.cur.x, (192 shl 4)
@ -36245,8 +35995,8 @@ sub_1E47C proc far
mov _boss_hitbox_radius.x, (24 shl 4) mov _boss_hitbox_radius.x, (24 shl 4)
mov _boss_hitbox_radius.y, (48 shl 4) mov _boss_hitbox_radius.y, (48 shl 4)
call bb_stage_load pascal, ds, offset aSt05_bb call bb_stage_load pascal, ds, offset aSt05_bb
mov _stage_render, offset nullsub_1 mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullsub_1 mov _stage_invalidate, offset nullfunc_near
push (48 shl 16) or 64 push (48 shl 16) or 64
push (80 shl 16) or 96 push (80 shl 16) or 96
call select_for_rank call select_for_rank
@ -36294,8 +36044,8 @@ sub_1E518 proc far
mov byte_2D01E, 0 mov byte_2D01E, 0
call _cdg_load_single_noalpha pascal, 16, ds, offset aSt06bk_cdg, 0 call _cdg_load_single_noalpha pascal, 16, ds, offset aSt06bk_cdg, 0
call bb_stage_load pascal, ds, offset aSt06_bb call bb_stage_load pascal, ds, offset aSt06_bb
mov _stage_render, offset nullsub_1 mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullsub_1 mov _stage_invalidate, offset nullfunc_near
pop bp pop bp
retf retf
sub_1E518 endp sub_1E518 endp
@ -36616,8 +36366,8 @@ loc_1E801:
mov _boss_sprite_cur, 128 mov _boss_sprite_cur, 128
mov _boss_hitbox_radius.x, (24 shl 4) mov _boss_hitbox_radius.x, (24 shl 4)
mov _boss_hitbox_radius.y, (48 shl 4) mov _boss_hitbox_radius.y, (48 shl 4)
mov bgm_title_id, 0Fh mov _bgm_title_id, 0Fh
mov fp_259DC, offset sub_11195 mov _overlay_text_fp, offset sub_11195
call _cdg_free pascal, 16 call _cdg_free pascal, 16
call bb_stage_free call bb_stage_free
call _cdg_load_single_noalpha pascal, 16, ds, offset aSt06bk2_cdg, 0 call _cdg_load_single_noalpha pascal, 16, ds, offset aSt06bk2_cdg, 0
@ -36660,7 +36410,7 @@ loc_1E8C9:
call sub_B80F call sub_B80F
loc_1E8D5: loc_1E8D5:
mov fp_259DC, offset sub_10E39 mov _overlay_text_fp, offset sub_10E39
kajacall KAJA_SONG_FADE, 10 kajacall KAJA_SONG_FADE, 10
jmp short loc_1E905 jmp short loc_1E905
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -41093,19 +40843,15 @@ word_22E9E dw 0
word_22EA0 dw 0 word_22EA0 dw 0
byte_22EA2 db 0 byte_22EA2 db 0
byte_22EA3 db 0 byte_22EA3 db 0
byte_22EA4 db 0 public _popup_frame
_popup_frame db 0
db 0 db 0
include th04/formats/bb_txt[data].asm include th04/formats/bb_txt[data].asm
include th04/strings/popup[data].asm include th04/hud/popup[data].asm
db 0
off_22EE6 dd gpHISCORE_ENTRY
dd gpEXTEND
dd gpBONUS
dd gpFULL_POWERUP
byte_22EF6 db 0 byte_22EF6 db 0
db 0 db 0
off_22EF8 dd asc_22F6A public _PLAYFIELD_BLANK_ROW
; " "... _PLAYFIELD_BLANK_ROW dd aPLAYFIELD_BLANK_ROW
STAGE_TITLE dd aMCB@bPhantomLa ; "幻野 ~ Phantom Land " STAGE_TITLE dd aMCB@bPhantomLa ; "幻野 ~ Phantom Land "
dd aMCsb@bPhantomN ; "幻夜 ~ Phantom Night" dd aMCsb@bPhantomN ; "幻夜 ~ Phantom Night"
dd aMKib@bLakeOfBl ; "枯渇 ~ Lake of Blood" dd aMKib@bLakeOfBl ; "枯渇 ~ Lake of Blood"
@ -41132,7 +40878,7 @@ BGM_TITLE dd aWitchingDream ; "Witching Dream"
dd aVivavvvvilcvb@ ; "かわいい悪魔 ~ Innocence" dd aVivavvvvilcvb@ ; "かわいい悪魔 ~ Innocence"
dd aPnpcuyszlB@bCa ; "少女綺想曲 ~ Capriccio " dd aPnpcuyszlB@bCa ; "少女綺想曲 ~ Capriccio "
include th04/strings/demoplay[data].asm include th04/strings/demoplay[data].asm
asc_22F6A db ' ',0 aPLAYFIELD_BLANK_ROW db ' ',0
aMCB@bPhantomLa db '幻野 ~ Phantom Land ',0 aMCB@bPhantomLa db '幻野 ~ Phantom Land ',0
aMCsb@bPhantomN db '幻夜 ~ Phantom Night',0 aMCsb@bPhantomN db '幻夜 ~ Phantom Night',0
aMKib@bLakeOfBl db '枯渇 ~ Lake of Blood',0 aMKib@bLakeOfBl db '枯渇 ~ Lake of Blood',0
@ -42114,22 +41860,7 @@ bgm_title_len dw ?
stage_title_id db ? stage_title_id db ?
db ? db ?
word_259C6 dw ? word_259C6 dw ?
word_259C8 dw ? include th04/hud/popup[bss].asm
byte_259CA db ?
byte_259CB db ?
unk_259CC db ? ;
dd ? ;
dd ? ;
db ? ;
word_259D6 dw ?
word_259D8 dw ?
bgm_title_id db ?
byte_259DB db ?
fp_259DC dw ?
fp_259DE dw ?
byte_259E0 db ?
db ?
dword_259E2 dd ?
byte_259E6 db ? byte_259E6 db ?
db ? db ?
fp_259E8 dw ? fp_259E8 dw ?

View File

@ -444,8 +444,8 @@ loc_AF2D:
call sub_100C6 call sub_100C6
call _circles_render call _circles_render
GRCG_OFF_CLOBBERING dx GRCG_OFF_CLOBBERING dx
call fp_2CE88 call _overlay_text_fp
call fp_2CE8A call _popup_fp
call sub_10287 call sub_10287
call far ptr _input_reset_sense call far ptr _input_reset_sense
mov al, byte_25FF8 mov al, byte_25FF8
@ -752,7 +752,7 @@ sub_B237 proc near
loc_B260: loc_B260:
mov word_20A84, 1 mov word_20A84, 1
call text_fillca pascal, (' ' shl 16) + TX_BLACK + TX_REVERSE call text_fillca pascal, (' ' shl 16) + TX_BLACK + TX_REVERSE
mov fp_2300E, offset nullsub_2 mov fp_2300E, offset nullfunc_near
call sub_B063 call sub_B063
les bx, _ksoconfig les bx, _ksoconfig
cmp byte ptr es:[bx+17h], 0 cmp byte ptr es:[bx+17h], 0
@ -1051,8 +1051,8 @@ loc_B506:
kajacall KAJA_SONG_PLAY kajacall KAJA_SONG_PLAY
loc_B52C: loc_B52C:
mov fp_2CE88, offset sub_11914 mov _overlay_text_fp, offset sub_11914
mov fp_2CE8A, offset nullsub_2 mov _popup_fp, offset nullfunc_near
pop si pop si
pop bp pop bp
retn retn
@ -2095,10 +2095,10 @@ RANDRING_NEXT_DEF 1
; =============== S U B R O U T I N E ======================================= ; =============== S U B R O U T I N E =======================================
public nullfunc_near
nullsub_2 proc near nullfunc_near proc near
retn retn
nullsub_2 endp nullfunc_near endp
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
nop nop
@ -2606,7 +2606,7 @@ sub_C473 proc near
push bp push bp
mov bp, sp mov bp, sp
mov byte_2429A, 0 mov byte_2429A, 0
mov fp_23F58, offset nullsub_2 mov fp_23F58, offset nullfunc_near
pop bp pop bp
retn retn
sub_C473 endp sub_C473 endp
@ -2986,7 +2986,7 @@ loc_C7AE:
jnz short loc_C7C9 jnz short loc_C7C9
mov _scroll_active, 0 mov _scroll_active, 0
call graph_scrollup pascal, 0 call graph_scrollup pascal, 0
mov fp_23F58, offset nullsub_2 mov fp_23F58, offset nullfunc_near
jmp short loc_C7D0 jmp short loc_C7D0
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -3244,7 +3244,7 @@ sub_C9DA proc near
jnz short loc_C9FD jnz short loc_C9FD
mov _scroll_active, 0 mov _scroll_active, 0
call graph_scrollup pascal, 0 call graph_scrollup pascal, 0
mov fp_23F58, offset nullsub_2 mov fp_23F58, offset nullfunc_near
loc_C9FD: loc_C9FD:
call sub_C99E call sub_C99E
@ -3473,7 +3473,7 @@ sub_CBFD proc near
jnz short loc_CC20 jnz short loc_CC20
mov _scroll_active, 0 mov _scroll_active, 0
call graph_scrollup pascal, 0 call graph_scrollup pascal, 0
mov fp_23F58, offset nullsub_2 mov fp_23F58, offset nullfunc_near
loc_CC20: loc_CC20:
call sub_CB30 call sub_CB30
@ -3673,7 +3673,7 @@ loc_CDB4:
jnz short loc_CDCF jnz short loc_CDCF
mov _scroll_active, 0 mov _scroll_active, 0
call graph_scrollup pascal, 0 call graph_scrollup pascal, 0
mov fp_23F58, offset nullsub_2 mov fp_23F58, offset nullfunc_near
jmp short loc_CDD6 jmp short loc_CDD6
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -7483,7 +7483,7 @@ sub_EE58 proc near
mov _boss_update, eax mov _boss_update, eax
mov ax, _boss_fg_render_func mov ax, _boss_fg_render_func
mov _boss_fg_render, ax mov _boss_fg_render, ax
mov fp_2CE88, offset sub_11CBB mov _overlay_text_fp, offset sub_11CBB
mov al, 1 mov al, 1
pop bp pop bp
retn retn
@ -8553,7 +8553,7 @@ var_1 = byte ptr -1
cmp byte_2C99C, 24h ; '$' cmp byte_2C99C, 24h ; '$'
jb short loc_F8B0 jb short loc_F8B0
call sub_118D1 call sub_118D1
mov fp_2CE88, offset nullsub_2 mov _overlay_text_fp, offset nullfunc_near
mov al, 1 mov al, 1
jmp short loc_F902 jmp short loc_F902
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -8629,7 +8629,7 @@ var_1 = byte ptr -1
cmp byte_2C99C, 0 cmp byte_2C99C, 0
jnz short loc_F920 jnz short loc_F920
call sub_118F3 call sub_118F3
mov fp_2CE88, offset nullsub_2 mov _overlay_text_fp, offset nullfunc_near
mov al, 1 mov al, 1
jmp short loc_F972 jmp short loc_F972
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -9733,8 +9733,8 @@ var_2 = byte ptr -2
ja short loc_105E6 ja short loc_105E6
cmp dream, 128 cmp dream, 128
jb short loc_105E6 jb short loc_105E6
mov byte_2CE87, 4 mov _popup_id_new, POPUP_ID_DREAMBONUS_MAX
mov fp_2CE8A, offset sub_11DEA mov _popup_fp, offset popup_update_and_render
cmp _bullet_clear_time, 20 cmp _bullet_clear_time, 20
jnb short loc_105E6 jnb short loc_105E6
mov _bullet_clear_time, 20 mov _bullet_clear_time, 20
@ -12219,7 +12219,7 @@ sub_118D1 proc near
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_118DA: loc_118DA:
call text_putsa pascal, 4, si, off_228EE, TX_WHITE call text_putsa pascal, 4, si, _PLAYFIELD_BLANK_ROW, TX_WHITE
inc si inc si
loc_118EB: loc_118EB:
@ -12244,7 +12244,7 @@ sub_118F3 proc near
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_118FC: loc_118FC:
call text_putsa pascal, 4, si, off_228EE, TX_BLACK + TX_REVERSE call text_putsa pascal, 4, si, _PLAYFIELD_BLANK_ROW, TX_BLACK + TX_REVERSE
inc si inc si
loc_1190C: loc_1190C:
@ -12278,16 +12278,16 @@ var_1 = byte ptr -1
jnz short loc_1193E jnz short loc_1193E
loc_11936: loc_11936:
mov fp_2CE88, offset sub_11AAE mov _overlay_text_fp, offset sub_11AAE
jmp short loc_11956 jmp short loc_11956
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_1193E: loc_1193E:
mov fp_2CE88, offset nullsub_2 mov _overlay_text_fp, offset nullfunc_near
call gaiji_putsa pascal, (18 shl 16) + 12, ds, offset gDEMO_PLAY, TX_YELLOW + TX_BLINK call gaiji_putsa pascal, (18 shl 16) + 12, ds, offset gDEMO_PLAY, TX_YELLOW + TX_BLINK
loc_11956: loc_11956:
mov byte_2CE8C, 0 mov _popup_byte_unknown, 0
jmp short loc_119AD jmp short loc_119AD
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -12361,7 +12361,7 @@ var_1 = byte ptr -1
cmp byte_2288A, 0 cmp byte_2288A, 0
jnz short loc_119C9 jnz short loc_119C9
call sub_118F3 call sub_118F3
mov fp_2CE88, offset nullsub_2 mov _overlay_text_fp, offset nullfunc_near
jmp short loc_11A19 jmp short loc_11A19
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -12479,7 +12479,7 @@ sub_11A65 proc near
var_1 = byte ptr -1 var_1 = byte ptr -1
enter 2, 0 enter 2, 0
mov al, byte_2CE8C mov al, _popup_byte_unknown
add al, byte_2288B add al, byte_2288B
mov [bp+var_1], al mov [bp+var_1], al
cmp [bp+var_1], 0 cmp [bp+var_1], 0
@ -12509,9 +12509,9 @@ sub_11A65 endp
sub_11AAE proc near sub_11AAE proc near
push bp push bp
mov bp, sp mov bp, sp
cmp byte_2CE8C, 0C0h cmp _popup_byte_unknown, 0C0h
jb loc_11B65 jb loc_11B65
cmp byte_2CE8C, 0C0h cmp _popup_byte_unknown, 0C0h
jnz short loc_11ACB jnz short loc_11ACB
call sub_118D1 call sub_118D1
mov byte_228EC, 0 mov byte_228EC, 0
@ -12519,17 +12519,17 @@ sub_11AAE proc near
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_11ACB: loc_11ACB:
test byte_2CE8C, 1 test _popup_byte_unknown, 1
jnz short loc_11AD6 jnz short loc_11AD6
inc byte_228EC inc byte_228EC
loc_11AD6: loc_11AD6:
cmp byte_228EC, 10h cmp byte_228EC, 10h
jb short loc_11AF8 jb short loc_11AF8
test byte_2CE8C, 1 test _popup_byte_unknown, 1
jz loc_11CB5 jz loc_11CB5
mov fp_2CE88, offset nullsub_2 mov _overlay_text_fp, offset nullfunc_near
mov byte_2CE8C, 0 mov _popup_byte_unknown, 0
mov byte_228EC, 0 mov byte_228EC, 0
pop bp pop bp
retn retn
@ -12580,7 +12580,7 @@ loc_11B19:
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
loc_11B65: loc_11B65:
cmp byte_2CE8C, 0 cmp _popup_byte_unknown, 0
jnz short loc_11B91 jnz short loc_11B91
mov byte_228EC, 10h mov byte_228EC, 10h
pushd [_stage_title] pushd [_stage_title]
@ -12680,9 +12680,9 @@ loc_11C4E:
push word_2CE6A push word_2CE6A
call sub_11A1D call sub_11A1D
GRCG_OFF_CLOBBERING dx GRCG_OFF_CLOBBERING dx
test byte_2CE8C, 3 test _popup_byte_unknown, 3
jnz short loc_11CB5 jnz short loc_11CB5
cmp byte_2CE8C, 0 cmp _popup_byte_unknown, 0
jz short loc_11CB5 jz short loc_11CB5
inc byte_228EC inc byte_228EC
cmp byte_228EC, 18h cmp byte_228EC, 18h
@ -12690,7 +12690,7 @@ loc_11C4E:
mov byte_228EC, 0 mov byte_228EC, 0
loc_11CB5: loc_11CB5:
inc byte_2CE8C inc _popup_byte_unknown
pop bp pop bp
retn retn
sub_11AAE endp sub_11AAE endp
@ -12722,7 +12722,7 @@ loc_11CE1:
jb short loc_11CFE jb short loc_11CFE
test byte_2288B, 1 test byte_2288B, 1
jz loc_11DE4 jz loc_11DE4
mov fp_2CE88, offset nullsub_2 mov _overlay_text_fp, offset nullfunc_near
mov byte_2288B, 0 mov byte_2288B, 0
pop bp pop bp
retn retn
@ -12803,183 +12803,7 @@ loc_11DE4:
retn retn
sub_11CBB endp sub_11CBB endp
include th04/hud/popup.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_11DEA proc near
var_1 = byte ptr -1
enter 2, 0
mov al, byte_2CE87
cmp al, byte_2CE72
jz short loc_11E29
cmp byte_2288C, 40h
jb short loc_11E29
call text_putsa pascal, (4 shl 16) + 2, off_228EE, TX_WHITE
call text_putsa pascal, (4 shl 16) + 23, off_228EE, TX_WHITE
mov byte_2288C, 0
loc_11E29:
cmp byte_2288C, 0
jnz short loc_11E9D
mov al, byte_2CE87
mov byte_2CE72, al
mov [bp+var_1], 0
jmp short loc_11E4B
; ---------------------------------------------------------------------------
loc_11E3C:
mov al, [bp+var_1]
mov ah, 0
mov bx, ax
mov byte ptr [bx-3B6Ch], 2
inc [bp+var_1]
loc_11E4B:
cmp [bp+var_1], 8
jb short loc_11E3C
mov al, byte_2CE72
mov ah, 0
shl ax, 2
mov bx, ax
pushd dword ptr [bx+1EF8h]
call _strlen
add sp, 4
mov word_2CE70, ax
mov bx, word_2CE70
mov byte ptr [bx-3B6Ch], 0
add ax, ax
mov dx, 34h ; '4'
sub dx, ax
mov word_2CE82, dx
cmp byte_2CE87, 2
jz short loc_11E92
mov ax, 1Ch
sub ax, word_2CE70
mov word_2CE84, ax
jmp short loc_11E98
; ---------------------------------------------------------------------------
loc_11E92:
mov word_2CE84, 10h
loc_11E98:
mov byte_2CE73, 0
loc_11E9D:
cmp byte_2288C, 80h
jb short loc_11EC4
call text_putsa pascal, (4 shl 16) + 2, off_228EE, TX_WHITE
mov byte_2288C, 0
mov fp_2CE8A, offset nullsub_2
leave
retn
; ---------------------------------------------------------------------------
loc_11EC4:
mov al, byte_2288C
mov ah, 0
mov dx, word_2CE70
dec dx
cmp ax, dx
jge short loc_11F36
mov [bp+var_1], 0
jmp short loc_11EF1
; ---------------------------------------------------------------------------
loc_11ED8:
mov al, [bp+var_1]
mov ah, 0
mov bx, ax
mov al, [bx-3B6Bh]
mov dl, [bp+var_1]
mov dh, 0
mov bx, dx
mov [bx-3B6Ch], al
inc [bp+var_1]
loc_11EF1:
mov al, [bp+var_1]
mov ah, 0
mov dx, word_2CE70
dec dx
cmp ax, dx
jl short loc_11ED8
mov al, byte_2CE72
mov ah, 0
shl ax, 2
mov bx, ax
les bx, [bx+1EF8h]
assume es:nothing
mov al, byte_2288C
mov ah, 0
add bx, ax
mov al, es:[bx]
mov bx, 0C494h
dec bx
add bx, word_2CE70
mov [bx], al
call gaiji_putsa pascal, word_2CE82, 2, ds, offset unk_2CE74, TX_WHITE
jmp loc_11FD9
; ---------------------------------------------------------------------------
loc_11F36:
mov ax, word_2CE82
cmp ax, word_2CE84
jle short loc_11F86
push ax
push 2
mov al, byte_2CE72
mov ah, 0
shl ax, 2
mov bx, ax
pushd off_228D8[bx]
push TX_WHITE
call gaiji_putsa
mov ax, word_2CE70
add ax, ax
add ax, word_2CE82
cmp ax, 32h ; '2'
jg short loc_11F7F
mov ax, word_2CE70
add ax, ax
add ax, word_2CE82
call text_putca pascal, ax, 22020h, TX_WHITE
loc_11F7F:
sub word_2CE82, 2
jmp short loc_11FD9
; ---------------------------------------------------------------------------
loc_11F86:
cmp byte_2CE73, 0
jnz short loc_11FA5
mov byte_2CE73, 1
call text_putsa pascal, (4 shl 16) + 2, off_228EE, TX_WHITE
loc_11FA5:
push word_2CE84
push 2
mov al, byte_2CE72
mov ah, 0
shl ax, 2
mov bx, ax
pushd off_228D8[bx]
push TX_WHITE
call gaiji_putsa
cmp byte_2CE72, 2
jnz short loc_11FD9
call hud_points_put pascal, ((PLAYFIELD_TRAM_X + (PLAYFIELD_TRAM_W / 2)) shl 16) + 2, large [dword_2CE8E]
loc_11FD9:
inc byte_2288C
leave
retn
sub_11DEA endp
; =============== S U B R O U T I N E ======================================= ; =============== S U B R O U T I N E =======================================
@ -17980,8 +17804,8 @@ loc_14435:
or al, al or al, al
jz short loc_14450 jz short loc_14450
mov _is_hiscore, 1 mov _is_hiscore, 1
mov byte_2CE87, 0 mov _popup_id_new, POPUP_ID_HISCORE_ENTRY
mov fp_2CE8A, offset sub_11DEA mov _popup_fp, offset popup_update_and_render
loc_14450: loc_14450:
mov eax, _score_delta_frame mov eax, _score_delta_frame
@ -18067,8 +17891,8 @@ sub_144CB proc near
push bp push bp
mov bp, sp mov bp, sp
setfarfp _boss_update, nullsub_1 setfarfp _boss_update, nullsub_1
mov _boss_fg_render, offset nullsub_2 mov _boss_fg_render, offset nullfunc_near
mov _boss_custombullets_render, offset nullsub_2 mov _boss_custombullets_render, offset nullfunc_near
mov boss_phase, 0 mov boss_phase, 0
mov byte_26349, 0 mov byte_26349, 0
mov byte ptr word_2634A+1, 0 mov byte ptr word_2634A+1, 0
@ -18122,8 +17946,8 @@ sub_14544 proc near
call super_entry_bfnt call super_entry_bfnt
call _cdg_load_all_noalpha pascal, 16, ds, offset aSt00bk_cdg call _cdg_load_all_noalpha pascal, 16, ds, offset aSt00bk_cdg
call bb_stage_load pascal, ds, offset aSt00_bb call bb_stage_load pascal, ds, offset aSt00_bb
mov _stage_render, offset nullsub_2 mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullsub_2 mov _stage_invalidate, offset nullfunc_near
pop bp pop bp
retn retn
sub_14544 endp sub_14544 endp
@ -18209,8 +18033,8 @@ sub_146D0 proc near
call super_entry_bfnt call super_entry_bfnt
call _cdg_load_all_noalpha pascal, 16, ds, offset aSt02bk_cdg call _cdg_load_all_noalpha pascal, 16, ds, offset aSt02bk_cdg
call bb_stage_load pascal, ds, offset aSt02_bb call bb_stage_load pascal, ds, offset aSt02_bb
mov _stage_render, offset nullsub_2 mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullsub_2 mov _stage_invalidate, offset nullfunc_near
pop bp pop bp
retn retn
sub_146D0 endp sub_146D0 endp
@ -18256,8 +18080,8 @@ sub_1479F proc near
call super_entry_bfnt call super_entry_bfnt
call _cdg_load_all_noalpha pascal, 16, ds, offset aSt03bk_cdg call _cdg_load_all_noalpha pascal, 16, ds, offset aSt03bk_cdg
call bb_stage_load pascal, ds, offset aSt03_bb call bb_stage_load pascal, ds, offset aSt03_bb
mov _stage_render, offset nullsub_2 mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullsub_2 mov _stage_invalidate, offset nullfunc_near
pop bp pop bp
retn retn
sub_1479F endp sub_1479F endp
@ -18310,8 +18134,8 @@ sub_14879 proc near
push (24 shl 16) or 24 push (24 shl 16) or 24
nopcall select_for_rank nopcall select_for_rank
mov _yumeko_interval_phase7, al mov _yumeko_interval_phase7, al
mov _stage_render, offset nullsub_2 mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullsub_2 mov _stage_invalidate, offset nullfunc_near
pop bp pop bp
retn retn
sub_14879 endp sub_14879 endp
@ -18325,7 +18149,7 @@ sub_14976 proc near
push bp push bp
mov bp, sp mov bp, sp
setfarfp _midboss_update_func, nullsub_1 setfarfp _midboss_update_func, nullsub_1
mov _midboss_render_func, offset nullsub_2 mov _midboss_render_func, offset nullfunc_near
mov frames_until_midboss, 30000 mov frames_until_midboss, 30000
call sub_144CB call sub_144CB
mov _boss_pos.cur.x, (192 shl 4) mov _boss_pos.cur.x, (192 shl 4)
@ -18342,8 +18166,8 @@ sub_14976 proc near
call _cdg_load_all_noalpha pascal, 16, ds, offset aSt05bk_cdg call _cdg_load_all_noalpha pascal, 16, ds, offset aSt05bk_cdg
call _cdg_load_all_noalpha pascal, 17, ds, offset aSt05bk2_cdg call _cdg_load_all_noalpha pascal, 17, ds, offset aSt05bk2_cdg
call bb_stage_load pascal, ds, offset aSt05_bb call bb_stage_load pascal, ds, offset aSt05_bb
mov _stage_render, offset nullsub_2 mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullsub_2 mov _stage_invalidate, offset nullfunc_near
pop bp pop bp
retn retn
sub_14976 endp sub_14976 endp
@ -18382,8 +18206,8 @@ sub_14A06 proc near
push offset aSt06_bmt ; "st06.bmt" push offset aSt06_bmt ; "st06.bmt"
call super_entry_bfnt call super_entry_bfnt
call bb_stage_load pascal, ds, offset aSt03_bb_0 call bb_stage_load pascal, ds, offset aSt03_bb_0
mov _stage_render, offset nullsub_2 mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullsub_2 mov _stage_invalidate, offset nullfunc_near
pop bp pop bp
retn retn
sub_14A06 endp sub_14A06 endp
@ -22011,8 +21835,8 @@ sub_16F05 proc near
loc_16F3B: loc_16F3B:
call sub_10407 call sub_10407
mov byte_2CE87, 1 mov _popup_id_new, POPUP_ID_EXTEND
mov fp_2CE8A, offset sub_11DEA mov _popup_fp, offset popup_update_and_render
call snd_se_play pascal, 7 call snd_se_play pascal, 7
loc_16F52: loc_16F52:
@ -22049,8 +21873,8 @@ loc_16F76:
jnb short loc_16FAA jnb short loc_16FAA
cmp power, 127 cmp power, 127
jnz short loc_16F9B jnz short loc_16F9B
mov byte_2CE87, 3 mov _popup_id_new, POPUP_ID_FULL_POWERUP
mov fp_2CE8A, offset sub_11DEA mov _popup_fp, offset popup_update_and_render
cmp _bullet_clear_time, 20 cmp _bullet_clear_time, 20
jnb short loc_16F9B jnb short loc_16F9B
mov _bullet_clear_time, 20 mov _bullet_clear_time, 20
@ -22183,8 +22007,8 @@ loc_170B5:
cmp power, 128 cmp power, 128
jb short loc_170E7 jb short loc_170E7
mov power, 128 mov power, 128
mov byte_2CE87, 3 mov _popup_id_new, POPUP_ID_FULL_POWERUP
mov fp_2CE8A, offset sub_11DEA mov _popup_fp, offset popup_update_and_render
cmp _bullet_clear_time, 20 cmp _bullet_clear_time, 20
jnb short loc_170E7 jnb short loc_170E7
mov _bullet_clear_time, 20 mov _bullet_clear_time, 20
@ -22225,8 +22049,8 @@ loc_1712C:
inc lives inc lives
call sub_10407 call sub_10407
call snd_se_play pascal, 7 call snd_se_play pascal, 7
mov byte_2CE87, 1 mov _popup_id_new, POPUP_ID_EXTEND
mov fp_2CE8A, offset sub_11DEA mov _popup_fp, offset popup_update_and_render
jmp short loc_17171 jmp short loc_17171
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -22236,8 +22060,8 @@ loc_17150:
mov _bullet_clear_time, 20 mov _bullet_clear_time, 20
loc_1715C: loc_1715C:
mov byte_2CE87, 3 mov _popup_id_new, POPUP_ID_FULL_POWERUP
mov fp_2CE8A, offset sub_11DEA mov _popup_fp, offset popup_update_and_render
mov power, 128 mov power, 128
call sub_E4FC call sub_E4FC
@ -22466,8 +22290,8 @@ sub_1720E endp
sub_172FF proc far sub_172FF proc far
push bp push bp
mov bp, sp mov bp, sp
mov _midboss_invalidate?, offset nullsub_2 mov _midboss_invalidate?, offset nullfunc_near
mov _midboss_render, offset nullsub_2 mov _midboss_render, offset nullfunc_near
setfarfp _midboss_update, nullsub_1 setfarfp _midboss_update, nullsub_1
mov _midboss_hp, 0 mov _midboss_hp, 0
pop bp pop bp
@ -23841,7 +23665,7 @@ loc_17EE9:
loc_17EFA: loc_17EFA:
mov [bp+var_8], ax mov [bp+var_8], ax
mov dword_2CE8E, 0 mov _popup_bonus, 0
xor di, di xor di, di
jmp loc_17F8D jmp loc_17F8D
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -23864,7 +23688,7 @@ loc_17F0B:
loc_17F31: loc_17F31:
movzx eax, [bp+var_4] movzx eax, [bp+var_4]
add dword_2CE8E, eax add _popup_bonus, eax
add _score_delta, eax add _score_delta, eax
push word ptr [si+2] push word ptr [si+2]
push word ptr [si+4] push word ptr [si+4]
@ -23904,10 +23728,10 @@ loc_17F89:
loc_17F8D: loc_17F8D:
cmp di, 190h cmp di, 190h
jl loc_17F0B jl loc_17F0B
cmp dword_2CE8E, 0 cmp _popup_bonus, 0
jz short loc_17FA8 jz short loc_17FA8
mov byte_2CE87, 2 mov _popup_id_new, POPUP_ID_BONUS
mov fp_2CE8A, offset sub_11DEA mov _popup_fp, offset popup_update_and_render
loc_17FA8: loc_17FA8:
inc _bullet_clear_trigger inc _bullet_clear_trigger
@ -29305,7 +29129,7 @@ loc_1AF66:
loc_1AF85: loc_1AF85:
call sub_F2B4 call sub_F2B4
mov fp_2CE88, offset sub_11CBB mov _overlay_text_fp, offset sub_11CBB
mov boss_phase, 0 mov boss_phase, 0
mov boss_phase_frame, 0 mov boss_phase_frame, 0
mov _boss_fg_render, offset sub_10F12 mov _boss_fg_render, offset sub_10F12
@ -30806,7 +30630,7 @@ loc_1BCE7:
mov boss_phase_frame, 0 mov boss_phase_frame, 0
mov boss_phase, 0FDh mov boss_phase, 0FDh
call sub_1B3C2 call sub_1B3C2
mov _boss_custombullets_render, offset nullsub_2 mov _boss_custombullets_render, offset nullfunc_near
jmp short loc_1BD09 jmp short loc_1BD09
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -32013,7 +31837,7 @@ loc_1C7E3:
mov boss_phase_frame, 0 mov boss_phase_frame, 0
mov boss_phase, 0FDh mov boss_phase, 0FDh
call sub_1B3C2 call sub_1B3C2
mov _boss_custombullets_render, offset nullsub_2 mov _boss_custombullets_render, offset nullfunc_near
jmp short loc_1C805 jmp short loc_1C805
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -33354,7 +33178,7 @@ loc_1D4F4:
call boss_explode_small pascal, 4 call boss_explode_small pascal, 4
mov boss_phase_frame, 0 mov boss_phase_frame, 0
mov boss_phase, 0FDh mov boss_phase, 0FDh
mov _boss_custombullets_render, offset nullsub_2 mov _boss_custombullets_render, offset nullfunc_near
jmp short loc_1D513 jmp short loc_1D513
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -37024,7 +36848,7 @@ loc_1F643:
call boss_explode_small pascal, 4 call boss_explode_small pascal, 4
mov boss_phase_frame, 0 mov boss_phase_frame, 0
mov boss_phase, 0FDh mov boss_phase, 0FDh
mov _boss_custombullets_render, offset nullsub_2 mov _boss_custombullets_render, offset nullfunc_near
mov byte_226C0, 0 mov byte_226C0, 0
jmp short loc_1F666 jmp short loc_1F666
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -37771,7 +37595,7 @@ loc_1FC55:
inc boss_phase inc boss_phase
mov boss_phase_frame, 0 mov boss_phase_frame, 0
mov byte_2C96C, 1 mov byte_2C96C, 1
mov _boss_fg_render, offset nullsub_2 mov _boss_fg_render, offset nullfunc_near
jmp loc_1FD5D jmp loc_1FD5D
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -37840,7 +37664,7 @@ loc_1FD19:
call sub_E480 call sub_E480
loc_1FD25: loc_1FD25:
mov fp_2CE88, offset sub_119B1 mov _overlay_text_fp, offset sub_119B1
kajacall KAJA_SONG_FADE, 10 kajacall KAJA_SONG_FADE, 10
jmp short loc_1FD51 jmp short loc_1FD51
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -38743,22 +38567,17 @@ off_22884 dw offset sub_1F776
dw offset sub_1F823 dw offset sub_1F823
byte_2288A db 0 byte_2288A db 0
byte_2288B db 0 byte_2288B db 0
byte_2288C db 0 public _popup_frame
_popup_frame db 0
db 0 db 0
include th04/formats/bb_txt[data].asm include th04/formats/bb_txt[data].asm
include th04/strings/popup[data].asm include th04/hud/popup[data].asm
gpDREAMBONUS_MAX db 65h, 66h, 67h, 68h, 69h, 6Ah, 6Bh, 6Ch, 6Dh, 6Eh, 0
off_228D8 dd gpHISCORE_ENTRY
dd gpEXTEND
dd gpBONUS
dd gpFULL_POWERUP
dd gpDREAMBONUS_MAX
byte_228EC db 0 byte_228EC db 0
db 0 db 0
off_228EE dd asc_228FC public _PLAYFIELD_BLANK_ROW
; " "... _PLAYFIELD_BLANK_ROW dd aPLAYFIELD_BLANK_ROW
include th04/strings/demoplay[data].asm include th04/strings/demoplay[data].asm
asc_228FC db ' ',0 aPLAYFIELD_BLANK_ROW db ' ',0
db 0 db 0
SHOT_FUNCS label word SHOT_FUNCS label word
; Reimu ; Reimu
@ -45914,23 +45733,9 @@ fp_2CE68 dw ?
word_2CE6A dw ? word_2CE6A dw ?
word_2CE6C dw ? word_2CE6C dw ?
word_2CE6E dw ? word_2CE6E dw ?
word_2CE70 dw ?
byte_2CE72 db ? include th04/hud/popup[bss].asm
byte_2CE73 db ?
unk_2CE74 db ? ;
dd ? ;
dd ? ;
dd ? ;
db ? ;
word_2CE82 dw ?
word_2CE84 dw ?
db ? ;
byte_2CE87 db ?
fp_2CE88 dw ?
fp_2CE8A dw ?
byte_2CE8C db ?
db ?
dword_2CE8E dd ?
public _stage_title, _stage_bgm_title, _boss_bgm_title public _stage_title, _stage_bgm_title, _boss_bgm_title
_stage_title dd ? _stage_title dd ?
_stage_bgm_title dd ? _stage_bgm_title dd ?