6 static void particle(int x, int y, int sz);
8 #define SPRITE_BASE 0x8000
9 extern uint16_t cellspr_data[], cellspr_data_end[];
10 extern unsigned char cellspr_cmap[], cellspr_cmap_end[];
21 vdp_setcolor(0, i, i, i, i);
22 vdp_setcolor(1, i, cptr[0] >> 4, cptr[1] >> 4, cptr[2] >> 4);
26 /* upload sprite tiles */
28 vdp_setup_addr(VDP_VRAM, SPRITE_BASE);
29 while(src < cellspr_data_end) {
36 particle(160, 120, frameno & 0x1f);
39 static void particle(int x, int y, int sz)
43 sz >>= 3; /* pixels to levels */
45 tile = VDP_ADDR2TILE(SPRITE_BASE) + sz;
51 spr_add(x - 4, y - 4, VDP_TILENAME(tile, 1, VDP_TILE_FG), SPR_SIZE(1, 1));
55 spr_add(x - 8, y - 8, VDP_TILENAME(tile, 1, VDP_TILE_FG), SPR_SIZE(1, 1));
56 spr_add(x, y - 8, VDP_TILENAME(tile, 1, VDP_TILE_FG | VDP_TILE_HFLIP), SPR_SIZE(1, 1));
57 spr_add(x - 8, y, VDP_TILENAME(tile, 1, VDP_TILE_FG | VDP_TILE_VFLIP), SPR_SIZE(1, 1));
58 spr_add(x, y, VDP_TILENAME(tile, 1, VDP_TILE_FG | VDP_TILE_HVFLIP), SPR_SIZE(1, 1));
62 spr_add(x - 16, y - 16, VDP_TILENAME(tile, 1, VDP_TILE_FG), SPR_SIZE(2, 2));
63 spr_add(x, y - 16, VDP_TILENAME(tile, 1, VDP_TILE_FG | VDP_TILE_HFLIP), SPR_SIZE(2, 2));
64 spr_add(x - 16, y, VDP_TILENAME(tile, 1, VDP_TILE_FG | VDP_TILE_VFLIP), SPR_SIZE(2, 2));
65 spr_add(x, y, VDP_TILENAME(tile, 1, VDP_TILE_FG | VDP_TILE_HVFLIP), SPR_SIZE(2, 2));