diff --git a/th04/formats/bb.h b/th04/formats/bb.h index 9643b388..1954c38e 100644 --- a/th04/formats/bb.h +++ b/th04/formats/bb.h @@ -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 diff --git a/th04/formats/bb_stage.c b/th04/formats/bb_stage.c index f3d4382e..e93f499c 100644 --- a/th04/formats/bb_stage.c +++ b/th04/formats/bb_stage.c @@ -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::allocbyte(BB_SIZE); + bb_stage_seg = HMem::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::free(bb_stage_seg); + HMem::free(bb_stage_seg); bb_stage_seg = 0; } } diff --git a/th04/main/boss/backdrop[bss].asm b/th04/main/boss/bg[bss].asm similarity index 66% rename from th04/main/boss/backdrop[bss].asm rename to th04/main/boss/bg[bss].asm index d8eecf4e..6b0e411a 100644 --- a/th04/main/boss/backdrop[bss].asm +++ b/th04/main/boss/bg[bss].asm @@ -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 ? diff --git a/th04/main/tile/bb.hpp b/th04/main/tile/bb.hpp index e5ef7ae5..2ccf91b5 100644 --- a/th04/main/tile/bb.hpp +++ b/th04/main/tile/bb.hpp @@ -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); +} diff --git a/th04/main/tile/bb_put_a.asm b/th04/main/tile/bb_put_a.asm new file mode 100644 index 00000000..e4452f9e --- /dev/null +++ b/th04/main/tile/bb_put_a.asm @@ -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 +@@bb_off equ + + 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 diff --git a/th04_main.asm b/th04_main.asm index 68d1c495..ce488b09 100644 --- a/th04_main.asm +++ b/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(?) diff --git a/th05/formats/bb_load.asm b/th05/formats/bb_load.asm index 63a9e92a..42f7de33 100644 --- a/th05/formats/bb_load.asm +++ b/th05/formats/bb_load.asm @@ -1,4 +1,3 @@ -; void* pascal near bb_load(const char far *fn); public BB_LOAD bb_load proc near push si diff --git a/th05/th05.hpp b/th05/th05.hpp index 8ff9f671..ee921e7e 100644 --- a/th05/th05.hpp +++ b/th05/th05.hpp @@ -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 diff --git a/th05_main.asm b/th05_main.asm index a898f499..ff952710 100644 --- a/th05_main.asm +++ b/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