2021-06-14 07:32:13 +00:00
|
|
|
|
// 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.
|
|
|
|
|
|
2022-04-03 23:07:44 +00:00
|
|
|
|
// Why store ((TILES_X / 8) * TILES_Y) = 69 bytes, when you can store 128? :P
|
|
|
|
|
static const pixel_t TILES_BB_CEL_W = 512;
|
|
|
|
|
static const pixel_t TILES_BB_CEL_H = 512;
|
|
|
|
|
static const unsigned int TILES_BB_CEL_SIZE = (
|
|
|
|
|
((TILES_BB_CEL_W / TILE_W) / 8) * (TILES_BB_CEL_H / TILE_H)
|
|
|
|
|
);
|
|
|
|
|
static const int TILES_BB_CELS = (BB_SIZE / TILES_BB_CEL_SIZE);
|
2021-06-19 13:15:24 +00:00
|
|
|
|
|
2021-06-14 07:32:13 +00:00
|
|
|
|
extern unsigned char tiles_bb_col;
|
|
|
|
|
|
|
|
|
|
extern bb_tiles8_t __seg *tiles_bb_seg;
|
|
|
|
|
|
2021-06-12 09:24:35 +00:00
|
|
|
|
// Fills the playfield tile starting at (⌊left/8⌋*8, top) with the current
|
|
|
|
|
// GRCG tile. Assumes that the GRCG is set to TDW mode.
|
2021-06-14 07:32:13 +00:00
|
|
|
|
void __fastcall near grcg_tile_bb_put_8(screen_x_t left, vram_y_t top);
|
|
|
|
|
|
2022-04-03 23:07:44 +00:00
|
|
|
|
// Renders the given animation [cel] in [seg] to the playfield area in VRAM.
|
|
|
|
|
// All tiles with a corresponding 1 bit are filled with the [tiles_bb_col].
|
2022-04-02 18:38:00 +00:00
|
|
|
|
#define tiles_bb_put(seg, cel) { \
|
|
|
|
|
void pascal near tiles_bb_put_raw(int); \
|
|
|
|
|
\
|
|
|
|
|
tiles_bb_seg = seg; \
|
|
|
|
|
tiles_bb_put_raw(cel); \
|
2021-06-14 07:32:13 +00:00
|
|
|
|
}
|
2022-04-03 02:54:46 +00:00
|
|
|
|
|
|
|
|
|
// Interprets the given animation [cel] in [seg] as a mask, and marks all stage
|
|
|
|
|
// background tiles with a corresponding 1 bit for redrawing.
|
|
|
|
|
#define tiles_bb_invalidate(seg, cel) { \
|
|
|
|
|
void pascal near tiles_bb_invalidate_raw(int); \
|
|
|
|
|
\
|
|
|
|
|
tiles_bb_seg = seg; \
|
|
|
|
|
tiles_bb_invalidate_raw(cel); \
|
|
|
|
|
}
|