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

View File

@ -444,8 +444,8 @@ loc_AF2D:
call sub_100C6
call _circles_render
GRCG_OFF_CLOBBERING dx
call fp_2CE88
call fp_2CE8A
call _overlay_text_fp
call _popup_fp
call sub_10287
call far ptr _input_reset_sense
mov al, byte_25FF8
@ -752,7 +752,7 @@ sub_B237 proc near
loc_B260:
mov word_20A84, 1
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
les bx, _ksoconfig
cmp byte ptr es:[bx+17h], 0
@ -1051,8 +1051,8 @@ loc_B506:
kajacall KAJA_SONG_PLAY
loc_B52C:
mov fp_2CE88, offset sub_11914
mov fp_2CE8A, offset nullsub_2
mov _overlay_text_fp, offset sub_11914
mov _popup_fp, offset nullfunc_near
pop si
pop bp
retn
@ -2095,10 +2095,10 @@ RANDRING_NEXT_DEF 1
; =============== S U B R O U T I N E =======================================
nullsub_2 proc near
public nullfunc_near
nullfunc_near proc near
retn
nullsub_2 endp
nullfunc_near endp
; ---------------------------------------------------------------------------
nop
@ -2606,7 +2606,7 @@ sub_C473 proc near
push bp
mov bp, sp
mov byte_2429A, 0
mov fp_23F58, offset nullsub_2
mov fp_23F58, offset nullfunc_near
pop bp
retn
sub_C473 endp
@ -2986,7 +2986,7 @@ loc_C7AE:
jnz short loc_C7C9
mov _scroll_active, 0
call graph_scrollup pascal, 0
mov fp_23F58, offset nullsub_2
mov fp_23F58, offset nullfunc_near
jmp short loc_C7D0
; ---------------------------------------------------------------------------
@ -3244,7 +3244,7 @@ sub_C9DA proc near
jnz short loc_C9FD
mov _scroll_active, 0
call graph_scrollup pascal, 0
mov fp_23F58, offset nullsub_2
mov fp_23F58, offset nullfunc_near
loc_C9FD:
call sub_C99E
@ -3473,7 +3473,7 @@ sub_CBFD proc near
jnz short loc_CC20
mov _scroll_active, 0
call graph_scrollup pascal, 0
mov fp_23F58, offset nullsub_2
mov fp_23F58, offset nullfunc_near
loc_CC20:
call sub_CB30
@ -3673,7 +3673,7 @@ loc_CDB4:
jnz short loc_CDCF
mov _scroll_active, 0
call graph_scrollup pascal, 0
mov fp_23F58, offset nullsub_2
mov fp_23F58, offset nullfunc_near
jmp short loc_CDD6
; ---------------------------------------------------------------------------
@ -7483,7 +7483,7 @@ sub_EE58 proc near
mov _boss_update, eax
mov ax, _boss_fg_render_func
mov _boss_fg_render, ax
mov fp_2CE88, offset sub_11CBB
mov _overlay_text_fp, offset sub_11CBB
mov al, 1
pop bp
retn
@ -8553,7 +8553,7 @@ var_1 = byte ptr -1
cmp byte_2C99C, 24h ; '$'
jb short loc_F8B0
call sub_118D1
mov fp_2CE88, offset nullsub_2
mov _overlay_text_fp, offset nullfunc_near
mov al, 1
jmp short loc_F902
; ---------------------------------------------------------------------------
@ -8629,7 +8629,7 @@ var_1 = byte ptr -1
cmp byte_2C99C, 0
jnz short loc_F920
call sub_118F3
mov fp_2CE88, offset nullsub_2
mov _overlay_text_fp, offset nullfunc_near
mov al, 1
jmp short loc_F972
; ---------------------------------------------------------------------------
@ -9733,8 +9733,8 @@ var_2 = byte ptr -2
ja short loc_105E6
cmp dream, 128
jb short loc_105E6
mov byte_2CE87, 4
mov fp_2CE8A, offset sub_11DEA
mov _popup_id_new, POPUP_ID_DREAMBONUS_MAX
mov _popup_fp, offset popup_update_and_render
cmp _bullet_clear_time, 20
jnb short loc_105E6
mov _bullet_clear_time, 20
@ -12219,7 +12219,7 @@ sub_118D1 proc near
; ---------------------------------------------------------------------------
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
loc_118EB:
@ -12244,7 +12244,7 @@ sub_118F3 proc near
; ---------------------------------------------------------------------------
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
loc_1190C:
@ -12278,16 +12278,16 @@ var_1 = byte ptr -1
jnz short loc_1193E
loc_11936:
mov fp_2CE88, offset sub_11AAE
mov _overlay_text_fp, offset sub_11AAE
jmp short loc_11956
; ---------------------------------------------------------------------------
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
loc_11956:
mov byte_2CE8C, 0
mov _popup_byte_unknown, 0
jmp short loc_119AD
; ---------------------------------------------------------------------------
@ -12361,7 +12361,7 @@ var_1 = byte ptr -1
cmp byte_2288A, 0
jnz short loc_119C9
call sub_118F3
mov fp_2CE88, offset nullsub_2
mov _overlay_text_fp, offset nullfunc_near
jmp short loc_11A19
; ---------------------------------------------------------------------------
@ -12479,7 +12479,7 @@ sub_11A65 proc near
var_1 = byte ptr -1
enter 2, 0
mov al, byte_2CE8C
mov al, _popup_byte_unknown
add al, byte_2288B
mov [bp+var_1], al
cmp [bp+var_1], 0
@ -12509,9 +12509,9 @@ sub_11A65 endp
sub_11AAE proc near
push bp
mov bp, sp
cmp byte_2CE8C, 0C0h
cmp _popup_byte_unknown, 0C0h
jb loc_11B65
cmp byte_2CE8C, 0C0h
cmp _popup_byte_unknown, 0C0h
jnz short loc_11ACB
call sub_118D1
mov byte_228EC, 0
@ -12519,17 +12519,17 @@ sub_11AAE proc near
; ---------------------------------------------------------------------------
loc_11ACB:
test byte_2CE8C, 1
test _popup_byte_unknown, 1
jnz short loc_11AD6
inc byte_228EC
loc_11AD6:
cmp byte_228EC, 10h
jb short loc_11AF8
test byte_2CE8C, 1
test _popup_byte_unknown, 1
jz loc_11CB5
mov fp_2CE88, offset nullsub_2
mov byte_2CE8C, 0
mov _overlay_text_fp, offset nullfunc_near
mov _popup_byte_unknown, 0
mov byte_228EC, 0
pop bp
retn
@ -12580,7 +12580,7 @@ loc_11B19:
; ---------------------------------------------------------------------------
loc_11B65:
cmp byte_2CE8C, 0
cmp _popup_byte_unknown, 0
jnz short loc_11B91
mov byte_228EC, 10h
pushd [_stage_title]
@ -12680,9 +12680,9 @@ loc_11C4E:
push word_2CE6A
call sub_11A1D
GRCG_OFF_CLOBBERING dx
test byte_2CE8C, 3
test _popup_byte_unknown, 3
jnz short loc_11CB5
cmp byte_2CE8C, 0
cmp _popup_byte_unknown, 0
jz short loc_11CB5
inc byte_228EC
cmp byte_228EC, 18h
@ -12690,7 +12690,7 @@ loc_11C4E:
mov byte_228EC, 0
loc_11CB5:
inc byte_2CE8C
inc _popup_byte_unknown
pop bp
retn
sub_11AAE endp
@ -12722,7 +12722,7 @@ loc_11CE1:
jb short loc_11CFE
test byte_2288B, 1
jz loc_11DE4
mov fp_2CE88, offset nullsub_2
mov _overlay_text_fp, offset nullfunc_near
mov byte_2288B, 0
pop bp
retn
@ -12803,183 +12803,7 @@ loc_11DE4:
retn
sub_11CBB endp
; =============== 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
include th04/hud/popup.asm
; =============== S U B R O U T I N E =======================================
@ -17980,8 +17804,8 @@ loc_14435:
or al, al
jz short loc_14450
mov _is_hiscore, 1
mov byte_2CE87, 0
mov fp_2CE8A, offset sub_11DEA
mov _popup_id_new, POPUP_ID_HISCORE_ENTRY
mov _popup_fp, offset popup_update_and_render
loc_14450:
mov eax, _score_delta_frame
@ -18067,8 +17891,8 @@ sub_144CB proc near
push bp
mov bp, sp
setfarfp _boss_update, nullsub_1
mov _boss_fg_render, offset nullsub_2
mov _boss_custombullets_render, offset nullsub_2
mov _boss_fg_render, offset nullfunc_near
mov _boss_custombullets_render, offset nullfunc_near
mov boss_phase, 0
mov byte_26349, 0
mov byte ptr word_2634A+1, 0
@ -18122,8 +17946,8 @@ sub_14544 proc near
call super_entry_bfnt
call _cdg_load_all_noalpha pascal, 16, ds, offset aSt00bk_cdg
call bb_stage_load pascal, ds, offset aSt00_bb
mov _stage_render, offset nullsub_2
mov _stage_invalidate, offset nullsub_2
mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullfunc_near
pop bp
retn
sub_14544 endp
@ -18209,8 +18033,8 @@ sub_146D0 proc near
call super_entry_bfnt
call _cdg_load_all_noalpha pascal, 16, ds, offset aSt02bk_cdg
call bb_stage_load pascal, ds, offset aSt02_bb
mov _stage_render, offset nullsub_2
mov _stage_invalidate, offset nullsub_2
mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullfunc_near
pop bp
retn
sub_146D0 endp
@ -18256,8 +18080,8 @@ sub_1479F proc near
call super_entry_bfnt
call _cdg_load_all_noalpha pascal, 16, ds, offset aSt03bk_cdg
call bb_stage_load pascal, ds, offset aSt03_bb
mov _stage_render, offset nullsub_2
mov _stage_invalidate, offset nullsub_2
mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullfunc_near
pop bp
retn
sub_1479F endp
@ -18310,8 +18134,8 @@ sub_14879 proc near
push (24 shl 16) or 24
nopcall select_for_rank
mov _yumeko_interval_phase7, al
mov _stage_render, offset nullsub_2
mov _stage_invalidate, offset nullsub_2
mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullfunc_near
pop bp
retn
sub_14879 endp
@ -18325,7 +18149,7 @@ sub_14976 proc near
push bp
mov bp, sp
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
call sub_144CB
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, 17, ds, offset aSt05bk2_cdg
call bb_stage_load pascal, ds, offset aSt05_bb
mov _stage_render, offset nullsub_2
mov _stage_invalidate, offset nullsub_2
mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullfunc_near
pop bp
retn
sub_14976 endp
@ -18382,8 +18206,8 @@ sub_14A06 proc near
push offset aSt06_bmt ; "st06.bmt"
call super_entry_bfnt
call bb_stage_load pascal, ds, offset aSt03_bb_0
mov _stage_render, offset nullsub_2
mov _stage_invalidate, offset nullsub_2
mov _stage_render, offset nullfunc_near
mov _stage_invalidate, offset nullfunc_near
pop bp
retn
sub_14A06 endp
@ -22011,8 +21835,8 @@ sub_16F05 proc near
loc_16F3B:
call sub_10407
mov byte_2CE87, 1
mov fp_2CE8A, offset sub_11DEA
mov _popup_id_new, POPUP_ID_EXTEND
mov _popup_fp, offset popup_update_and_render
call snd_se_play pascal, 7
loc_16F52:
@ -22049,8 +21873,8 @@ loc_16F76:
jnb short loc_16FAA
cmp power, 127
jnz short loc_16F9B
mov byte_2CE87, 3
mov fp_2CE8A, offset sub_11DEA
mov _popup_id_new, POPUP_ID_FULL_POWERUP
mov _popup_fp, offset popup_update_and_render
cmp _bullet_clear_time, 20
jnb short loc_16F9B
mov _bullet_clear_time, 20
@ -22183,8 +22007,8 @@ loc_170B5:
cmp power, 128
jb short loc_170E7
mov power, 128
mov byte_2CE87, 3
mov fp_2CE8A, offset sub_11DEA
mov _popup_id_new, POPUP_ID_FULL_POWERUP
mov _popup_fp, offset popup_update_and_render
cmp _bullet_clear_time, 20
jnb short loc_170E7
mov _bullet_clear_time, 20
@ -22225,8 +22049,8 @@ loc_1712C:
inc lives
call sub_10407
call snd_se_play pascal, 7
mov byte_2CE87, 1
mov fp_2CE8A, offset sub_11DEA
mov _popup_id_new, POPUP_ID_EXTEND
mov _popup_fp, offset popup_update_and_render
jmp short loc_17171
; ---------------------------------------------------------------------------
@ -22236,8 +22060,8 @@ loc_17150:
mov _bullet_clear_time, 20
loc_1715C:
mov byte_2CE87, 3
mov fp_2CE8A, offset sub_11DEA
mov _popup_id_new, POPUP_ID_FULL_POWERUP
mov _popup_fp, offset popup_update_and_render
mov power, 128
call sub_E4FC
@ -22466,8 +22290,8 @@ sub_1720E endp
sub_172FF proc far
push bp
mov bp, sp
mov _midboss_invalidate?, offset nullsub_2
mov _midboss_render, offset nullsub_2
mov _midboss_invalidate?, offset nullfunc_near
mov _midboss_render, offset nullfunc_near
setfarfp _midboss_update, nullsub_1
mov _midboss_hp, 0
pop bp
@ -23841,7 +23665,7 @@ loc_17EE9:
loc_17EFA:
mov [bp+var_8], ax
mov dword_2CE8E, 0
mov _popup_bonus, 0
xor di, di
jmp loc_17F8D
; ---------------------------------------------------------------------------
@ -23864,7 +23688,7 @@ loc_17F0B:
loc_17F31:
movzx eax, [bp+var_4]
add dword_2CE8E, eax
add _popup_bonus, eax
add _score_delta, eax
push word ptr [si+2]
push word ptr [si+4]
@ -23904,10 +23728,10 @@ loc_17F89:
loc_17F8D:
cmp di, 190h
jl loc_17F0B
cmp dword_2CE8E, 0
cmp _popup_bonus, 0
jz short loc_17FA8
mov byte_2CE87, 2
mov fp_2CE8A, offset sub_11DEA
mov _popup_id_new, POPUP_ID_BONUS
mov _popup_fp, offset popup_update_and_render
loc_17FA8:
inc _bullet_clear_trigger
@ -29305,7 +29129,7 @@ loc_1AF66:
loc_1AF85:
call sub_F2B4
mov fp_2CE88, offset sub_11CBB
mov _overlay_text_fp, offset sub_11CBB
mov boss_phase, 0
mov boss_phase_frame, 0
mov _boss_fg_render, offset sub_10F12
@ -30806,7 +30630,7 @@ loc_1BCE7:
mov boss_phase_frame, 0
mov boss_phase, 0FDh
call sub_1B3C2
mov _boss_custombullets_render, offset nullsub_2
mov _boss_custombullets_render, offset nullfunc_near
jmp short loc_1BD09
; ---------------------------------------------------------------------------
@ -32013,7 +31837,7 @@ loc_1C7E3:
mov boss_phase_frame, 0
mov boss_phase, 0FDh
call sub_1B3C2
mov _boss_custombullets_render, offset nullsub_2
mov _boss_custombullets_render, offset nullfunc_near
jmp short loc_1C805
; ---------------------------------------------------------------------------
@ -33354,7 +33178,7 @@ loc_1D4F4:
call boss_explode_small pascal, 4
mov boss_phase_frame, 0
mov boss_phase, 0FDh
mov _boss_custombullets_render, offset nullsub_2
mov _boss_custombullets_render, offset nullfunc_near
jmp short loc_1D513
; ---------------------------------------------------------------------------
@ -37024,7 +36848,7 @@ loc_1F643:
call boss_explode_small pascal, 4
mov boss_phase_frame, 0
mov boss_phase, 0FDh
mov _boss_custombullets_render, offset nullsub_2
mov _boss_custombullets_render, offset nullfunc_near
mov byte_226C0, 0
jmp short loc_1F666
; ---------------------------------------------------------------------------
@ -37771,7 +37595,7 @@ loc_1FC55:
inc boss_phase
mov boss_phase_frame, 0
mov byte_2C96C, 1
mov _boss_fg_render, offset nullsub_2
mov _boss_fg_render, offset nullfunc_near
jmp loc_1FD5D
; ---------------------------------------------------------------------------
@ -37840,7 +37664,7 @@ loc_1FD19:
call sub_E480
loc_1FD25:
mov fp_2CE88, offset sub_119B1
mov _overlay_text_fp, offset sub_119B1
kajacall KAJA_SONG_FADE, 10
jmp short loc_1FD51
; ---------------------------------------------------------------------------
@ -38743,22 +38567,17 @@ off_22884 dw offset sub_1F776
dw offset sub_1F823
byte_2288A db 0
byte_2288B db 0
byte_2288C db 0
public _popup_frame
_popup_frame db 0
db 0
include th04/formats/bb_txt[data].asm
include th04/strings/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
include th04/hud/popup[data].asm
byte_228EC 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
asc_228FC db ' ',0
aPLAYFIELD_BLANK_ROW db ' ',0
db 0
SHOT_FUNCS label word
; Reimu
@ -45914,23 +45733,9 @@ fp_2CE68 dw ?
word_2CE6A dw ?
word_2CE6C dw ?
word_2CE6E dw ?
word_2CE70 dw ?
byte_2CE72 db ?
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 ?
include th04/hud/popup[bss].asm
public _stage_title, _stage_bgm_title, _boss_bgm_title
_stage_title dd ?
_stage_bgm_title dd ?