mirror of https://github.com/nmlgc/ReC98.git
[Reverse-engineering] [th04/th05] .BB tile animation: Cel rendering
Not exclusively used for the boss entrance animations, even though its data is declared in that general vicinity. It's also used for all bombs in TH04, and Reimu's and Yuuka's bomb in TH05. Part of P0147, funded by -Tom- and Ember2528.
This commit is contained in:
parent
f3afd37e8f
commit
8691b23716
|
@ -1,5 +1,8 @@
|
|||
#define BB_SIZE 2048
|
||||
|
||||
// Bitmap format, storing 1-bit values for 8 tiles in one byte.
|
||||
typedef uint8_t bb_tiles8_t;
|
||||
|
||||
void pascal near bb_stage_load(const char far* fn);
|
||||
|
||||
/// Text dissolve circles
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
extern dots8_t __seg *bb_stage_seg;
|
||||
extern bb_tiles8_t __seg *bb_stage_seg;
|
||||
|
||||
void pascal near bb_stage_load(const char *fn)
|
||||
{
|
||||
|
@ -6,7 +6,7 @@ void pascal near bb_stage_load(const char *fn)
|
|||
bb_stage_seg = bb_load(fn);
|
||||
#else
|
||||
file_ropen(fn);
|
||||
bb_stage_seg = HMem<dots8_t>::allocbyte(BB_SIZE);
|
||||
bb_stage_seg = HMem<bb_tiles8_t>::allocbyte(BB_SIZE);
|
||||
file_read(bb_stage_seg, BB_SIZE);
|
||||
file_close(fn);
|
||||
#endif
|
||||
|
@ -19,7 +19,7 @@ void pascal far bb_stage_free(void)
|
|||
#endif
|
||||
{
|
||||
if(bb_stage_seg) {
|
||||
HMem<dots8_t>::free(bb_stage_seg);
|
||||
HMem<bb_tiles8_t>::free(bb_stage_seg);
|
||||
bb_stage_seg = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
public _tiles_bb_col, _boss_backdrop_colorfill, _tiles_bb_seg
|
||||
_tiles_bb_col db ?
|
||||
evendata
|
||||
; Called with the GRCG set to the [color] parameter to boss_bg_render(), this
|
||||
; function is supposed to fill the entire playfield area around the background
|
||||
; image with the given color.
|
||||
public _boss_backdrop_colorfill
|
||||
_boss_backdrop_colorfill dw ?
|
||||
_tiles_bb_seg dw ?
|
|
@ -1,3 +1,21 @@
|
|||
// The monochrome animations loaded from the ST*.BB and BB*.BB files, shown as
|
||||
// one colored 16×16 tile per bit. Used for the flashy transitions from regular
|
||||
// stage backgrounds to the bomb and boss backgrounds.
|
||||
|
||||
extern unsigned char tiles_bb_col;
|
||||
|
||||
extern bb_tiles8_t __seg *tiles_bb_seg;
|
||||
|
||||
// Fills the playfield tile starting at (⌊left/8⌋*8, top) with the current
|
||||
// GRCG tile. Assumes that the GRCG is set to TDW mode.
|
||||
void fastcall near grcg_tile_bb_put_8(screen_x_t left, vram_y_t top);
|
||||
void __fastcall near grcg_tile_bb_put_8(screen_x_t left, vram_y_t top);
|
||||
|
||||
// Renders the given animation [cel] in [tiles_bb_seg] to the playfield area
|
||||
// in VRAM. All tiles with a corresponding 1 bit are filled with the
|
||||
// [tiles_bb_col].
|
||||
inline void tiles_bb_put(bb_tiles8_t __seg *&seg, unsigned char &cel) {
|
||||
void pascal near tiles_bb_put_raw(int cel);
|
||||
|
||||
tiles_bb_seg = seg;
|
||||
tiles_bb_put_raw(cel);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
public TILES_BB_PUT_RAW
|
||||
tiles_bb_put_raw proc near
|
||||
|
||||
@@top = word ptr -6
|
||||
@@left = word ptr -4
|
||||
@@row_tiles_left = byte ptr -2
|
||||
@@bb_shiftreg = byte ptr -1
|
||||
@@cel = word ptr 4
|
||||
|
||||
@@bb_seg equ <fs>
|
||||
@@bb_off equ <di>
|
||||
|
||||
enter 6, 0
|
||||
push di
|
||||
push GC_TDW
|
||||
mov al, _tiles_bb_col
|
||||
mov ah, 0
|
||||
call grcg_setcolor pascal, ax
|
||||
mov ax, _tiles_bb_seg
|
||||
mov @@bb_seg, ax
|
||||
mov @@bb_off, [bp+@@cel]
|
||||
shl @@bb_off, 7
|
||||
mov [bp+@@top], PLAYFIELD_TOP
|
||||
|
||||
@@row_loop:
|
||||
mov [bp+@@left], PLAYFIELD_LEFT
|
||||
mov [bp+@@row_tiles_left], TILES_X
|
||||
|
||||
@@bb_byte_loop:
|
||||
mov al, @@bb_seg:[@@bb_off]
|
||||
mov [bp+@@bb_shiftreg], al
|
||||
|
||||
@@next_tile_in_row:
|
||||
test [bp+@@bb_shiftreg], 80h
|
||||
jz short @@skip_tile
|
||||
mov ax, [bp+@@left]
|
||||
mov dx, [bp+@@top]
|
||||
if (GAME eq 5)
|
||||
cmp _scroll_active, 0
|
||||
jz short @@roll?
|
||||
endif
|
||||
add dx, _scroll_line
|
||||
|
||||
@@roll?:
|
||||
cmp dx, RES_Y
|
||||
jl short @@put
|
||||
sub dx, RES_Y
|
||||
|
||||
@@put:
|
||||
call @grcg_tile_bb_put_8
|
||||
|
||||
@@skip_tile:
|
||||
shl [bp+@@bb_shiftreg], 1
|
||||
add [bp+@@left], TILE_W
|
||||
dec [bp+@@row_tiles_left]
|
||||
jz short @@row_next
|
||||
test [bp+@@row_tiles_left], 7
|
||||
jnz short @@next_tile_in_row
|
||||
inc @@bb_off
|
||||
jmp short @@bb_byte_loop
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
@@row_next:
|
||||
add @@bb_off, 2 ; 1 since we skipped the INC, 1 to skip the 8 unused tiles
|
||||
add [bp+@@top], TILE_H
|
||||
cmp [bp+@@top], PLAYFIELD_BOTTOM
|
||||
jb short @@row_loop
|
||||
GRCG_OFF_CLOBBERING dx
|
||||
pop di
|
||||
leave
|
||||
retn 2
|
||||
tiles_bb_put_raw endp
|
||||
even
|
165
th04_main.asm
165
th04_main.asm
|
@ -1695,77 +1695,7 @@ playfield_fillm_0_0_384_112 proc near
|
|||
playfield_fillm_0_0_384_112 endp
|
||||
|
||||
include th04/hardware/fillm64-56_256-256.asm
|
||||
|
||||
; =============== S U B R O U T I N E =======================================
|
||||
|
||||
; Attributes: bp-based frame
|
||||
|
||||
sub_BF16 proc near
|
||||
|
||||
@@top = word ptr -6
|
||||
@@left = word ptr -4
|
||||
var_2 = byte ptr -2
|
||||
var_1 = byte ptr -1
|
||||
arg_0 = word ptr 4
|
||||
|
||||
enter 6, 0
|
||||
push di
|
||||
push GC_TDW
|
||||
mov al, byte_2CDCA
|
||||
mov ah, 0
|
||||
push ax
|
||||
call grcg_setcolor
|
||||
mov ax, word_2CDCE
|
||||
mov fs, ax
|
||||
mov di, [bp+arg_0]
|
||||
shl di, 7
|
||||
mov [bp+@@top], PLAYFIELD_TOP
|
||||
|
||||
loc_BF39:
|
||||
mov [bp+@@left], PLAYFIELD_LEFT
|
||||
mov [bp+var_2], TILES_X
|
||||
|
||||
loc_BF42:
|
||||
mov al, fs:[di]
|
||||
mov [bp+var_1], al
|
||||
|
||||
loc_BF48:
|
||||
test [bp+var_1], 80h
|
||||
jz short loc_BF65
|
||||
mov ax, [bp+@@left]
|
||||
mov dx, [bp+@@top]
|
||||
add dx, _scroll_line
|
||||
cmp dx, RES_Y
|
||||
jl short loc_BF62
|
||||
sub dx, RES_Y
|
||||
|
||||
loc_BF62:
|
||||
call @grcg_tile_bb_put_8
|
||||
|
||||
loc_BF65:
|
||||
shl [bp+var_1], 1
|
||||
add [bp+@@left], TILE_W
|
||||
dec [bp+var_2]
|
||||
jz short loc_BF7A
|
||||
test [bp+var_2], 7
|
||||
jnz short loc_BF48
|
||||
inc di
|
||||
jmp short loc_BF42
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
loc_BF7A:
|
||||
add di, 2
|
||||
add [bp+@@top], TILE_H
|
||||
cmp [bp+@@top], PLAYFIELD_BOTTOM
|
||||
jb short loc_BF39
|
||||
GRCG_OFF_CLOBBERING dx
|
||||
pop di
|
||||
leave
|
||||
retn 2
|
||||
sub_BF16 endp
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
nop
|
||||
include th04/main/tile/bb_put_a.asm
|
||||
|
||||
; =============== S U B R O U T I N E =======================================
|
||||
|
||||
|
@ -8630,7 +8560,7 @@ player_bomb endp
|
|||
|
||||
sub_1002A proc near
|
||||
|
||||
arg_0 = word ptr 4
|
||||
@@cel = word ptr 4
|
||||
|
||||
push bp
|
||||
mov bp, sp
|
||||
|
@ -8644,11 +8574,10 @@ loc_10038:
|
|||
mov al, 2
|
||||
|
||||
loc_1003A:
|
||||
mov byte_2CDCA, al
|
||||
mov _tiles_bb_col, al
|
||||
mov ax, _bb_playchar_seg
|
||||
mov word_2CDCE, ax
|
||||
push [bp+arg_0]
|
||||
call main_01:sub_BF16
|
||||
mov _tiles_bb_seg, ax
|
||||
call tiles_bb_put_raw pascal, [bp+@@cel]
|
||||
pop bp
|
||||
retn 2
|
||||
sub_1002A endp
|
||||
|
@ -8857,8 +8786,7 @@ loc_1022A:
|
|||
add ax, -8
|
||||
|
||||
loc_1023E:
|
||||
push ax
|
||||
call main_01:sub_1002A
|
||||
call sub_1002A pascal, ax
|
||||
|
||||
loc_10242:
|
||||
jmp loc_10307
|
||||
|
@ -11080,7 +11008,7 @@ loc_12199:
|
|||
jnz short loc_121BF
|
||||
call main_01:boss_backdrop_render pascal, (32 shl 16) or 136, 1
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2CDCE, ax
|
||||
mov _tiles_bb_seg, ax
|
||||
mov ax, _boss_phase_frame
|
||||
sar ax, 1
|
||||
push ax
|
||||
|
@ -11130,7 +11058,7 @@ kurumi_bg_render proc near
|
|||
jnz short loc_1221B
|
||||
call main_01:boss_backdrop_render pascal, (32 shl 16) or 96, 0
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2CDCE, ax
|
||||
mov _tiles_bb_seg, ax
|
||||
mov ax, _boss_phase_frame
|
||||
sar ax, 1
|
||||
push ax
|
||||
|
@ -11207,7 +11135,7 @@ loc_12285:
|
|||
jnz short loc_122AB
|
||||
call main_01:boss_backdrop_render pascal, (32 shl 16) or 16, 0
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2CDCE, ax
|
||||
mov _tiles_bb_seg, ax
|
||||
mov ax, _boss_phase_frame
|
||||
sar ax, 1
|
||||
push ax
|
||||
|
@ -11250,7 +11178,7 @@ elly_bg_render endp
|
|||
|
||||
reimu_marisa_bg_render proc near
|
||||
|
||||
var_1 = byte ptr -1
|
||||
@@entrance_cel = byte ptr -1
|
||||
|
||||
enter 2, 0
|
||||
cmp _boss_phase, 0
|
||||
|
@ -11267,8 +11195,8 @@ loc_122EB:
|
|||
mov bx, 8
|
||||
cwd
|
||||
idiv bx
|
||||
mov [bp+var_1], al
|
||||
cmp [bp+var_1], 8
|
||||
mov [bp+@@entrance_cel], al
|
||||
cmp [bp+@@entrance_cel], 8
|
||||
jnb short loc_12309
|
||||
call main_01:tiles_render_all
|
||||
jmp short loc_12327
|
||||
|
@ -11284,11 +11212,10 @@ loc_12309:
|
|||
|
||||
loc_12327:
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2CDCE, ax
|
||||
mov al, [bp+var_1]
|
||||
mov _tiles_bb_seg, ax
|
||||
mov al, [bp+@@entrance_cel]
|
||||
mov ah, 0
|
||||
push ax
|
||||
call main_01:sub_BF16
|
||||
call tiles_bb_put_raw pascal, ax
|
||||
leave
|
||||
retn
|
||||
; ---------------------------------------------------------------------------
|
||||
|
@ -11326,7 +11253,7 @@ reimu_marisa_bg_render endp
|
|||
|
||||
yuuka5_bg_render proc near
|
||||
|
||||
var_1 = byte ptr -1
|
||||
@@entrance_cel = byte ptr -1
|
||||
|
||||
enter 2, 0
|
||||
cmp _boss_phase, 0
|
||||
|
@ -11343,8 +11270,8 @@ loc_12378:
|
|||
mov bx, 4
|
||||
cwd
|
||||
idiv bx
|
||||
mov [bp+var_1], al
|
||||
cmp [bp+var_1], 8
|
||||
mov [bp+@@entrance_cel], al
|
||||
cmp [bp+@@entrance_cel], 8
|
||||
jnb short loc_12396
|
||||
call main_01:tiles_render_all
|
||||
jmp short loc_123B4
|
||||
|
@ -11360,11 +11287,10 @@ loc_12396:
|
|||
|
||||
loc_123B4:
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2CDCE, ax
|
||||
mov al, [bp+var_1]
|
||||
mov _tiles_bb_seg, ax
|
||||
mov al, [bp+@@entrance_cel]
|
||||
mov ah, 0
|
||||
push ax
|
||||
call main_01:sub_BF16
|
||||
call tiles_bb_put_raw pascal, ax
|
||||
leave
|
||||
retn
|
||||
; ---------------------------------------------------------------------------
|
||||
|
@ -12010,7 +11936,7 @@ table_1289F dw loc_12484
|
|||
|
||||
yuuka6_bg_render proc near
|
||||
|
||||
var_1 = byte ptr -1
|
||||
@@entrance_cel = byte ptr -1
|
||||
|
||||
enter 2, 0
|
||||
push si
|
||||
|
@ -12058,10 +11984,10 @@ loc_12921:
|
|||
mov bx, 4
|
||||
cwd
|
||||
idiv bx
|
||||
mov [bp+var_1], al
|
||||
mov [bp+@@entrance_cel], al
|
||||
mov ah, GC_RGI
|
||||
call _grcg_setcolor_direct_seg1_raw
|
||||
cmp [bp+var_1], 8
|
||||
cmp [bp+@@entrance_cel], 8
|
||||
jnb short loc_12944
|
||||
call main_01:playfield_fill
|
||||
jmp short loc_12947
|
||||
|
@ -12072,11 +11998,10 @@ loc_12944:
|
|||
|
||||
loc_12947:
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2CDCE, ax
|
||||
mov al, [bp+var_1]
|
||||
mov _tiles_bb_seg, ax
|
||||
mov al, [bp+@@entrance_cel]
|
||||
mov ah, 0
|
||||
push ax
|
||||
call main_01:sub_BF16
|
||||
call tiles_bb_put_raw pascal, ax
|
||||
jmp short loc_12975
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
|
@ -12110,7 +12035,7 @@ yuuka6_bg_render endp
|
|||
|
||||
mugetsu_gengetsu_bg_render proc near
|
||||
|
||||
var_1 = byte ptr -1
|
||||
@@entrance_cel = byte ptr -1
|
||||
|
||||
enter 2, 0
|
||||
cmp _boss_phase, 0
|
||||
|
@ -12132,8 +12057,8 @@ loc_12996:
|
|||
mov bx, 4
|
||||
cwd
|
||||
idiv bx
|
||||
mov [bp+var_1], al
|
||||
cmp [bp+var_1], 8
|
||||
mov [bp+@@entrance_cel], al
|
||||
cmp [bp+@@entrance_cel], 8
|
||||
jnb short loc_129B4
|
||||
call main_01:tiles_render_all
|
||||
jmp short loc_129D2
|
||||
|
@ -12149,11 +12074,10 @@ loc_129B4:
|
|||
|
||||
loc_129D2:
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2CDCE, ax
|
||||
mov al, [bp+var_1]
|
||||
mov _tiles_bb_seg, ax
|
||||
mov al, [bp+@@entrance_cel]
|
||||
mov ah, 0
|
||||
push ax
|
||||
call main_01:sub_BF16
|
||||
call tiles_bb_put_raw pascal, ax
|
||||
leave
|
||||
retn
|
||||
; ---------------------------------------------------------------------------
|
||||
|
@ -17167,7 +17091,7 @@ loc_16651:
|
|||
mov _boss_phase_frame, 0
|
||||
call snd_se_play pascal, 13
|
||||
mov byte_25667, 0
|
||||
mov byte_2CDCA, 0Fh
|
||||
mov _tiles_bb_col, 15
|
||||
mov fp_255AC, offset yuuka5_bg_render
|
||||
jmp loc_169B8
|
||||
; ---------------------------------------------------------------------------
|
||||
|
@ -19458,7 +19382,7 @@ loc_17A31:
|
|||
mov _boss_phase_frame, 0
|
||||
call snd_se_play pascal, 13
|
||||
mov fp_255AC, offset reimu_marisa_bg_render
|
||||
mov byte_2CDCA, 0Fh
|
||||
mov _tiles_bb_col, 15
|
||||
mov byte_25670, 0
|
||||
jmp loc_17CA4
|
||||
; ---------------------------------------------------------------------------
|
||||
|
@ -21029,7 +20953,7 @@ loc_1876B:
|
|||
inc _boss_phase
|
||||
mov _boss_phase_frame, 0
|
||||
call snd_se_play pascal, 13
|
||||
mov byte_2CDCA, 0Fh
|
||||
mov _tiles_bb_col, 15
|
||||
mov fp_255AC, offset mugetsu_gengetsu_bg_render
|
||||
jmp loc_189A1
|
||||
; ---------------------------------------------------------------------------
|
||||
|
@ -22224,7 +22148,7 @@ loc_191FB:
|
|||
call snd_se_play pascal, 13
|
||||
mov byte_259F1, 0
|
||||
mov fp_255AC, offset kurumi_bg_render
|
||||
mov byte_2CDCA, 0
|
||||
mov _tiles_bb_col, 0
|
||||
jmp short loc_19235
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
|
@ -23236,7 +23160,7 @@ loc_19B56:
|
|||
mov byte_2D02D, 0
|
||||
mov byte_2D02C, -1
|
||||
mov fp_255AC, offset orange_bg_render
|
||||
mov byte_2CDCA, 0
|
||||
mov _tiles_bb_col, 0
|
||||
jmp short loc_19C02
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
|
@ -25682,7 +25606,7 @@ loc_1B4BA:
|
|||
call snd_se_play pascal, 13
|
||||
mov byte_25A02, 0
|
||||
mov fp_255AC, offset yuuka6_bg_render
|
||||
mov byte_2CDCA, 0Fh
|
||||
mov _tiles_bb_col, 15
|
||||
jmp loc_1B8EA
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
|
@ -27349,7 +27273,7 @@ loc_1C39E:
|
|||
call snd_se_play pascal, 13
|
||||
mov _boss_pos.velocity.y, 8
|
||||
mov fp_255AC, offset elly_bg_render
|
||||
mov byte_2CDCA, 0
|
||||
mov _tiles_bb_col, 0
|
||||
jmp loc_1C67A
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
|
@ -32112,7 +32036,7 @@ loc_1F3E2:
|
|||
mov _boss_phase_frame, 0
|
||||
call snd_se_play pascal, 13
|
||||
mov fp_255AC, offset reimu_marisa_bg_render
|
||||
mov byte_2CDCA, 0Fh
|
||||
mov _tiles_bb_col, 15
|
||||
jmp loc_1F8A5
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
|
@ -33826,7 +33750,7 @@ loc_202B0:
|
|||
inc _boss_phase
|
||||
mov _boss_phase_frame, 0
|
||||
call snd_se_play pascal, 13
|
||||
mov byte_2CDCA, 0Fh
|
||||
mov _tiles_bb_col, 15
|
||||
mov fp_255AC, offset mugetsu_gengetsu_bg_render
|
||||
jmp loc_206B6
|
||||
; ---------------------------------------------------------------------------
|
||||
|
@ -35214,10 +35138,7 @@ include th04/main/player/shots[bss].asm
|
|||
db 96 dup(?)
|
||||
public _resident
|
||||
_resident dd ?
|
||||
byte_2CDCA db ?
|
||||
db ?
|
||||
include th04/main/boss/backdrop[bss].asm
|
||||
word_2CDCE dw ?
|
||||
include th04/main/boss/bg[bss].asm
|
||||
byte_2CDD0 db ?
|
||||
byte_2CDD1 db ?
|
||||
db 342 dup(?)
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
; void* pascal near bb_load(const char far *fn);
|
||||
public BB_LOAD
|
||||
bb_load proc near
|
||||
push si
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
/// Formats
|
||||
/// -------
|
||||
dots8_t __seg* pascal near bb_load(const char far *fn);
|
||||
bb_tiles8_t __seg* pascal near bb_load(const char far *fn);
|
||||
/// -------
|
||||
|
||||
/// Stages
|
||||
|
|
170
th05_main.asm
170
th05_main.asm
|
@ -2023,14 +2023,13 @@ player_bomb endp
|
|||
|
||||
sub_C51A proc near
|
||||
|
||||
arg_0 = word ptr 4
|
||||
@@cel = word ptr 4
|
||||
|
||||
push bp
|
||||
mov bp, sp
|
||||
mov ax, _bb_playchar_seg
|
||||
mov word_2449C, ax
|
||||
push [bp+arg_0]
|
||||
call sub_DF36
|
||||
mov _tiles_bb_seg, ax
|
||||
call tiles_bb_put_raw pascal, [bp+@@cel]
|
||||
pop bp
|
||||
retn 2
|
||||
sub_C51A endp
|
||||
|
@ -2124,14 +2123,13 @@ bomb_reimu proc near
|
|||
mov bp, sp
|
||||
cmp _bomb_frame, 32
|
||||
jnb short loc_C7AE
|
||||
mov byte_24498, 0Fh
|
||||
mov _tiles_bb_col, 15
|
||||
mov al, _bomb_frame
|
||||
mov ah, 0
|
||||
cwd
|
||||
sub ax, dx
|
||||
sar ax, 1
|
||||
push ax
|
||||
call sub_C51A
|
||||
call sub_C51A pascal, ax
|
||||
|
||||
loc_C7AB:
|
||||
jmp loc_C849
|
||||
|
@ -2784,14 +2782,13 @@ bomb_yuuka proc near
|
|||
mov bp, sp
|
||||
cmp _bomb_frame, 32
|
||||
jnb short loc_CDB4
|
||||
mov byte_24498, 0Fh
|
||||
mov _tiles_bb_col, 15
|
||||
mov al, _bomb_frame
|
||||
mov ah, 0
|
||||
cwd
|
||||
sub ax, dx
|
||||
sar ax, 1
|
||||
push ax
|
||||
call sub_C51A
|
||||
call sub_C51A pascal, ax
|
||||
|
||||
loc_CDB1:
|
||||
jmp loc_CE4F
|
||||
|
@ -3150,7 +3147,7 @@ loc_D09F:
|
|||
jnz short loc_D0C8
|
||||
call boss_backdrop_render pascal, (64 shl 16) or 16, 0
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2449C, ax
|
||||
mov _tiles_bb_seg, ax
|
||||
mov ax, _boss_phase_frame
|
||||
cwd
|
||||
sub ax, dx
|
||||
|
@ -3228,11 +3225,10 @@ loc_D124:
|
|||
call cdg_put_noalpha_8 pascal, large (32 shl 16) or 16, 16
|
||||
|
||||
loc_D142:
|
||||
mov byte_24498, 0
|
||||
mov _tiles_bb_col, 0
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2449C, ax
|
||||
push si
|
||||
call sub_DF36
|
||||
mov _tiles_bb_seg, ax
|
||||
call tiles_bb_put_raw pascal, si
|
||||
jmp short loc_D17D
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
|
@ -3303,11 +3299,10 @@ loc_D1B0:
|
|||
call cdg_put_noalpha_8 pascal, large (32 shl 16) or 221, 16
|
||||
|
||||
loc_D1CE:
|
||||
mov byte_24498, 0Fh
|
||||
mov _tiles_bb_col, 15
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2449C, ax
|
||||
push si
|
||||
call sub_DF36
|
||||
mov _tiles_bb_seg, ax
|
||||
call tiles_bb_put_raw pascal, si
|
||||
jmp short loc_D209
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
|
@ -3346,7 +3341,7 @@ alice_bg_render endp
|
|||
public MAI_YUKI_BG_RENDER
|
||||
mai_yuki_bg_render proc near
|
||||
|
||||
var_1 = byte ptr -1
|
||||
@@entrance_cel = byte ptr -1
|
||||
|
||||
enter 2, 0
|
||||
cmp _boss_phase, 0
|
||||
|
@ -3363,8 +3358,8 @@ loc_D220:
|
|||
mov bx, 4
|
||||
cwd
|
||||
idiv bx
|
||||
mov [bp+var_1], al
|
||||
cmp [bp+var_1], 8
|
||||
mov [bp+@@entrance_cel], al
|
||||
cmp [bp+@@entrance_cel], 8
|
||||
jnb short loc_D23E
|
||||
call tiles_render_all
|
||||
jmp short loc_D25C
|
||||
|
@ -3379,13 +3374,12 @@ loc_D23E:
|
|||
call cdg_put_noalpha_8 pascal, large (96 shl 16) or 72, 16
|
||||
|
||||
loc_D25C:
|
||||
mov byte_24498, 9
|
||||
mov _tiles_bb_col, 9
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2449C, ax
|
||||
mov al, [bp+var_1]
|
||||
mov _tiles_bb_seg, ax
|
||||
mov al, [bp+@@entrance_cel]
|
||||
mov ah, 0
|
||||
push ax
|
||||
call sub_DF36
|
||||
call tiles_bb_put_raw pascal, ax
|
||||
leave
|
||||
retn
|
||||
; ---------------------------------------------------------------------------
|
||||
|
@ -3424,7 +3418,7 @@ mai_yuki_bg_render endp
|
|||
public YUMEKO_BG_RENDER
|
||||
yumeko_bg_render proc near
|
||||
|
||||
var_1 = byte ptr -1
|
||||
@@entrance_cel = byte ptr -1
|
||||
|
||||
enter 2, 0
|
||||
cmp _boss_phase, 0
|
||||
|
@ -3435,8 +3429,8 @@ var_1 = byte ptr -1
|
|||
mov bx, 4
|
||||
cwd
|
||||
idiv bx
|
||||
mov [bp+var_1], al
|
||||
cmp [bp+var_1], 8
|
||||
mov [bp+@@entrance_cel], al
|
||||
cmp [bp+@@entrance_cel], 8
|
||||
jnb short loc_D2C7
|
||||
call tiles_render_all
|
||||
jmp short loc_D2E5
|
||||
|
@ -3451,13 +3445,12 @@ loc_D2C7:
|
|||
call cdg_put_noalpha_8 pascal, large (32 shl 16) or 16, 16
|
||||
|
||||
loc_D2E5:
|
||||
mov byte_24498, 0Fh
|
||||
mov _tiles_bb_col, 15
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2449C, ax
|
||||
mov al, [bp+var_1]
|
||||
mov _tiles_bb_seg, ax
|
||||
mov al, [bp+@@entrance_cel]
|
||||
mov ah, 0
|
||||
push ax
|
||||
call sub_DF36
|
||||
call tiles_bb_put_raw pascal, ax
|
||||
leave
|
||||
retn
|
||||
; ---------------------------------------------------------------------------
|
||||
|
@ -3504,7 +3497,7 @@ main_0_TEXT segment word public 'CODE' use16
|
|||
public SHINKI_BG_RENDER
|
||||
shinki_bg_render proc near
|
||||
|
||||
var_1 = byte ptr -1
|
||||
@@entrance_cel = byte ptr -1
|
||||
|
||||
enter 2, 0
|
||||
cmp _boss_phase, 0
|
||||
|
@ -3521,8 +3514,8 @@ loc_DA9E:
|
|||
mov bx, 4
|
||||
cwd
|
||||
idiv bx
|
||||
mov [bp+var_1], al
|
||||
cmp [bp+var_1], 8
|
||||
mov [bp+@@entrance_cel], al
|
||||
cmp [bp+@@entrance_cel], 8
|
||||
jnb short loc_DAC4
|
||||
call boss_backdrop_render pascal, (32 shl 16) or 120, 1
|
||||
jmp short loc_DAC7
|
||||
|
@ -3532,13 +3525,12 @@ loc_DAC4:
|
|||
call sub_E92E
|
||||
|
||||
loc_DAC7:
|
||||
mov byte_24498, 0Fh
|
||||
mov _tiles_bb_col, 15
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2449C, ax
|
||||
mov al, [bp+var_1]
|
||||
mov _tiles_bb_seg, ax
|
||||
mov al, [bp+@@entrance_cel]
|
||||
mov ah, 0
|
||||
push ax
|
||||
call sub_DF36
|
||||
call tiles_bb_put_raw pascal, ax
|
||||
leave
|
||||
retn
|
||||
; ---------------------------------------------------------------------------
|
||||
|
@ -3754,7 +3746,7 @@ sub_DBFF endp
|
|||
public EXALICE_BG_RENDER
|
||||
exalice_bg_render proc near
|
||||
|
||||
var_1 = byte ptr -1
|
||||
@@entrance_cel = byte ptr -1
|
||||
|
||||
enter 2, 0
|
||||
cmp _boss_phase, 0
|
||||
|
@ -3771,15 +3763,14 @@ loc_DCEF:
|
|||
mov bx, 4
|
||||
cwd
|
||||
idiv bx
|
||||
mov [bp+var_1], al
|
||||
mov [bp+@@entrance_cel], al
|
||||
call sub_E92E
|
||||
mov byte_24498, 0Fh
|
||||
mov _tiles_bb_col, 15
|
||||
mov ax, _bb_stage_seg
|
||||
mov word_2449C, ax
|
||||
mov al, [bp+var_1]
|
||||
mov _tiles_bb_seg, ax
|
||||
mov al, [bp+@@entrance_cel]
|
||||
mov ah, 0
|
||||
push ax
|
||||
call sub_DF36
|
||||
call tiles_bb_put_raw pascal, ax
|
||||
leave
|
||||
retn
|
||||
; ---------------------------------------------------------------------------
|
||||
|
@ -3869,79 +3860,7 @@ playfield_fillm_0_205_384_163 endp
|
|||
|
||||
include th04/hardware/fillm64-56_256-256.asm
|
||||
include th05/formats/bb_load.asm
|
||||
|
||||
; =============== S U B R O U T I N E =======================================
|
||||
|
||||
; Attributes: bp-based frame
|
||||
|
||||
sub_DF36 proc near
|
||||
|
||||
@@top = word ptr -6
|
||||
@@left = word ptr -4
|
||||
var_2 = byte ptr -2
|
||||
var_1 = byte ptr -1
|
||||
arg_0 = word ptr 4
|
||||
|
||||
enter 6, 0
|
||||
push di
|
||||
push GC_TDW
|
||||
mov al, byte_24498
|
||||
mov ah, 0
|
||||
push ax
|
||||
call grcg_setcolor
|
||||
mov ax, word_2449C
|
||||
mov fs, ax
|
||||
mov di, [bp+arg_0]
|
||||
shl di, 7
|
||||
mov [bp+@@top], PLAYFIELD_TOP
|
||||
|
||||
loc_DF59:
|
||||
mov [bp+@@left], PLAYFIELD_LEFT
|
||||
mov [bp+var_2], TILES_X
|
||||
|
||||
loc_DF62:
|
||||
mov al, fs:[di]
|
||||
mov [bp+var_1], al
|
||||
|
||||
loc_DF68:
|
||||
test [bp+var_1], 80h
|
||||
jz short loc_DF8C
|
||||
mov ax, [bp+@@left]
|
||||
mov dx, [bp+@@top]
|
||||
cmp _scroll_active, 0
|
||||
jz short loc_DF7F
|
||||
add dx, _scroll_line
|
||||
|
||||
loc_DF7F:
|
||||
cmp dx, RES_Y
|
||||
jl short loc_DF89
|
||||
sub dx, RES_Y
|
||||
|
||||
loc_DF89:
|
||||
call @grcg_tile_bb_put_8
|
||||
|
||||
loc_DF8C:
|
||||
shl [bp+var_1], 1
|
||||
add [bp+@@left], TILE_W
|
||||
dec [bp+var_2]
|
||||
jz short loc_DFA1
|
||||
test [bp+var_2], 7
|
||||
jnz short loc_DF68
|
||||
inc di
|
||||
jmp short loc_DF62
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
loc_DFA1:
|
||||
add di, 2
|
||||
add [bp+@@top], TILE_H
|
||||
cmp [bp+@@top], PLAYFIELD_BOTTOM
|
||||
jb short loc_DF59
|
||||
GRCG_OFF_CLOBBERING dx
|
||||
pop di
|
||||
leave
|
||||
retn 2
|
||||
sub_DF36 endp
|
||||
|
||||
include th04/main/tile/bb_put_a.asm
|
||||
|
||||
; =============== S U B R O U T I N E =======================================
|
||||
|
||||
|
@ -26891,10 +26810,7 @@ include th04/formats/bb_playchar[bss].asm
|
|||
include th05/main/player/bombanim[bss].asm
|
||||
point_24490 Point <?>
|
||||
point_24494 Point <?>
|
||||
byte_24498 db ?
|
||||
db ?
|
||||
include th04/main/boss/backdrop[bss].asm
|
||||
word_2449C dw ?
|
||||
include th04/main/boss/bg[bss].asm
|
||||
dw ?
|
||||
include th05/main/boss/render[bss].asm
|
||||
include th05/formats/bb_curvebullet[bss].asm
|
||||
|
|
Loading…
Reference in New Issue