trunk/src/mame/video/vsystem_spr2.c
| r18513 | r18514 | |
| 69 | 69 | |
| 70 | 70 | |
| 71 | 71 | template<class _BitmapClass> |
| 72 | | void vsystem_spr2_device::turbofrc_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, UINT16* spriteram2, int spriteram2_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri ) |
| 72 | void vsystem_spr2_device::turbofrc_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip_disabled_pri ) |
| 73 | 73 | { |
| 74 | 74 | int attr_start, base, first; |
| 75 | | base = chip * 0x0200; |
| 75 | base = 0;//chip * 0x0200; |
| 76 | 76 | first = 4 * spriteram3[0x1fe + base]; |
| 77 | 77 | |
| 78 | 78 | for (attr_start = base + 0x0200 - 8; attr_start >= first + base; attr_start -= 4) |
| r18513 | r18514 | |
| 121 | 121 | else |
| 122 | 122 | sx = ((curr_sprite.ox + curr_sprite.zoomx * x / 2 + 16) & 0x1ff) - 16; |
| 123 | 123 | |
| 124 | | if (chip == 0) |
| 125 | | curr = spriteram1[curr_sprite.map % (spriteram1_bytes/2)]; |
| 126 | | else |
| 127 | | curr = spriteram2[curr_sprite.map % (spriteram2_bytes/2)]; |
| 128 | | |
| 129 | | pdrawgfxzoom_transpen(bitmap,cliprect,machine.gfx[sprite_gfx + chip], |
| 124 | curr = spriteram1[curr_sprite.map % (spriteram1_bytes/2)]; |
| 125 | |
| 126 | pdrawgfxzoom_transpen(bitmap,cliprect,machine.gfx[sprite_gfx], |
| 130 | 127 | curr, |
| 131 | 128 | curr_sprite.color, |
| 132 | 129 | curr_sprite.flipx,curr_sprite.flipy, |
| r18513 | r18514 | |
| 144 | 141 | } |
| 145 | 142 | } |
| 146 | 143 | |
| 147 | | void vsystem_spr2_device::turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, UINT16* spriteram2, int spriteram2_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri ) |
| 148 | | { turbofrc_draw_sprites_common( spriteram3, spriteram3_bytes, spriteram1, spriteram1_bytes, spriteram2, spriteram2_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip, chip_disabled_pri ); } |
| 144 | void vsystem_spr2_device::turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip_disabled_pri ) |
| 145 | { turbofrc_draw_sprites_common( spriteram3, spriteram3_bytes, spriteram1, spriteram1_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip_disabled_pri ); } |
| 149 | 146 | |
| 150 | | void vsystem_spr2_device::turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, UINT16* spriteram2, int spriteram2_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri ) |
| 151 | | { turbofrc_draw_sprites_common( spriteram3, spriteram3_bytes, spriteram1, spriteram1_bytes, spriteram2, spriteram2_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip, chip_disabled_pri ); } |
| 147 | void vsystem_spr2_device::turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip_disabled_pri ) |
| 148 | { turbofrc_draw_sprites_common( spriteram3, spriteram3_bytes, spriteram1, spriteram1_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip_disabled_pri ); } |
| 152 | 149 | |
| 153 | 150 | |
| 154 | 151 | template<class _BitmapClass> |
| 155 | | void vsystem_spr2_device::spinlbrk_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, UINT16* spriteram2, int spriteram2_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri ) |
| 152 | void vsystem_spr2_device::spinlbrk_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip_disabled_pri ) |
| 156 | 153 | { |
| 157 | 154 | int attr_start, base, first; |
| 158 | | base = chip * 0x0200; |
| 155 | base = 0;//chip * 0x0200; |
| 159 | 156 | first = 4 * spriteram3[0x1fe + base]; |
| 160 | 157 | |
| 161 | 158 | for (attr_start = base + 0x0200-8; attr_start >= first + base; attr_start -= 4) |
| r18513 | r18514 | |
| 202 | 199 | else |
| 203 | 200 | sx = ((curr_sprite.ox + curr_sprite.zoomx * x / 2 + 16) & 0x1ff) - 16; |
| 204 | 201 | |
| 205 | | if (chip == 0) |
| 206 | | curr = spriteram1[curr_sprite.map % (spriteram1_bytes/2)]; |
| 207 | | else |
| 208 | | curr = spriteram2[curr_sprite.map % (spriteram2_bytes/2)]; |
| 209 | | |
| 210 | | pdrawgfxzoom_transpen(bitmap,cliprect,machine.gfx[sprite_gfx + chip], |
| 202 | curr = spriteram1[curr_sprite.map % (spriteram1_bytes/2)]; |
| 203 | |
| 204 | pdrawgfxzoom_transpen(bitmap,cliprect,machine.gfx[sprite_gfx], |
| 211 | 205 | curr, |
| 212 | 206 | curr_sprite.color, |
| 213 | 207 | curr_sprite.flipx,curr_sprite.flipy, |
| r18513 | r18514 | |
| 225 | 219 | } |
| 226 | 220 | } |
| 227 | 221 | |
| 228 | | void vsystem_spr2_device::spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, UINT16* spriteram2, int spriteram2_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri ) |
| 229 | | { spinlbrk_draw_sprites_common( spriteram3, spriteram3_bytes, spriteram1, spriteram1_bytes, spriteram2, spriteram2_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip, chip_disabled_pri ); } |
| 222 | void vsystem_spr2_device::spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip_disabled_pri ) |
| 223 | { spinlbrk_draw_sprites_common( spriteram3, spriteram3_bytes, spriteram1, spriteram1_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip_disabled_pri ); } |
| 230 | 224 | |
| 231 | | void vsystem_spr2_device::spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, UINT16* spriteram2, int spriteram2_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri ) |
| 232 | | { spinlbrk_draw_sprites_common( spriteram3, spriteram3_bytes, spriteram1, spriteram1_bytes, spriteram2, spriteram2_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip, chip_disabled_pri ); } |
| 225 | void vsystem_spr2_device::spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip_disabled_pri ) |
| 226 | { spinlbrk_draw_sprites_common( spriteram3, spriteram3_bytes, spriteram1, spriteram1_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip_disabled_pri ); } |
| 233 | 227 | |
| 234 | 228 | |
| 235 | 229 | |
| r18513 | r18514 | |
| 343 | 337 | |
| 344 | 338 | |
| 345 | 339 | |
| 346 | | void vsystem_spr2_device::f1gp_draw_sprites( UINT16* spr1vram, UINT16* spr2vram, UINT16* spr1cgram, int spr1cgram_bytes, UINT16* spr2cgram, int spr2cgram_bytes, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, int primask ) |
| 340 | void vsystem_spr2_device::f1gp_draw_sprites( int gfxrgn, UINT16* sprvram, UINT16* sprcgram, int sprcgram_bytes, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int primask ) |
| 347 | 341 | { |
| 348 | 342 | int attr_start, first; |
| 349 | | UINT16 *spram = chip ? spr2vram : spr1vram; |
| 343 | UINT16 *spram = sprvram; |
| 350 | 344 | |
| 351 | 345 | first = 4 * spram[0x1fe]; |
| 352 | 346 | |
| r18513 | r18514 | |
| 378 | 372 | if (curr_sprite.flipx) sx = ((curr_sprite.ox + curr_sprite.zoomx * (curr_sprite.xsize - x) + 16) & 0x1ff) - 16; |
| 379 | 373 | else sx = ((curr_sprite.ox + curr_sprite.zoomx * x + 16) & 0x1ff) - 16; |
| 380 | 374 | |
| 381 | | if (chip == 0) |
| 382 | | curr = spr1cgram[curr_sprite.map % (spr1cgram_bytes / 2)]; |
| 383 | | else |
| 384 | | curr = spr2cgram[curr_sprite.map % (spr2cgram_bytes / 2)]; |
| 375 | curr = sprcgram[curr_sprite.map % (sprcgram_bytes / 2)]; |
| 385 | 376 | |
| 386 | | pdrawgfxzoom_transpen(bitmap,cliprect,machine.gfx[1 + chip], |
| 377 | pdrawgfxzoom_transpen(bitmap,cliprect,machine.gfx[gfxrgn], |
| 387 | 378 | curr, |
| 388 | 379 | curr_sprite.color, |
| 389 | 380 | curr_sprite.flipx,curr_sprite.flipy, |
trunk/src/mame/video/vsystem_spr2.h
| r18513 | r18514 | |
| 25 | 25 | |
| 26 | 26 | |
| 27 | 27 | template<class _BitmapClass> |
| 28 | | void turbofrc_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, UINT16* spriteram2, int spriteram2_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri ); |
| 28 | void turbofrc_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip_disabled_pri ); |
| 29 | 29 | |
| 30 | | void turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, UINT16* spriteram2, int spriteram2_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri ); |
| 31 | | void turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, UINT16* spriteram2, int spriteram2_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri ); |
| 30 | void turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip_disabled_pri ); |
| 31 | void turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip_disabled_pri ); |
| 32 | 32 | |
| 33 | 33 | template<class _BitmapClass> |
| 34 | | void spinlbrk_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, UINT16* spriteram2, int spriteram2_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri ); |
| 34 | void spinlbrk_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip_disabled_pri ); |
| 35 | 35 | |
| 36 | | void spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, UINT16* spriteram2, int spriteram2_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri ); |
| 37 | | void spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, UINT16* spriteram2, int spriteram2_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri ); |
| 36 | void spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip_disabled_pri ); |
| 37 | void spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip_disabled_pri ); |
| 38 | 38 | |
| 39 | 39 | |
| 40 | 40 | void welltris_draw_sprites( UINT16* spriteram, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect); |
| 41 | | void f1gp_draw_sprites( UINT16* spr1vram, UINT16* spr2vram, UINT16* spr1cgram, int spr1cgram_bytes, UINT16* spr2cgram, int spr2cgram_bytes, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, int primask ); |
| 41 | void f1gp_draw_sprites( int gfxrgn, UINT16* sprvram, UINT16* sprcgram, int sprcgram_bytes, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int primask ); |
| 42 | 42 | void draw_sprites_pipedrm( UINT8* spriteram, int spriteram_bytes, int flipscreen, screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int draw_priority ); |
| 43 | 43 | |
| 44 | 44 | protected: |
trunk/src/mame/video/vsystem_spr.c
| r18513 | r18514 | |
| 109 | 109 | vsystem_spr_device::vsystem_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 110 | 110 | : device_t(mconfig, VSYSTEM_SPR, "vsystem_spr_device", tag, owner, clock) |
| 111 | 111 | { |
| 112 | | m_CG10103.transpen = 15; |
| 113 | | m_CG10103.pal_base = 0; |
| 112 | m_transpen = 15; |
| 113 | m_pal_base = 0; |
| 114 | m_xoffs = 0; |
| 115 | m_yoffs = 0; |
| 116 | m_pdraw = false; |
| 117 | } |
| 114 | 118 | |
| 119 | // static |
| 120 | void vsystem_spr_device::set_offsets(device_t &device, int xoffs, int yoffs) |
| 121 | { |
| 122 | vsystem_spr_device &dev = downcast<vsystem_spr_device &>(device); |
| 123 | dev.m_xoffs = xoffs; |
| 124 | dev.m_yoffs = yoffs; |
| 115 | 125 | } |
| 116 | 126 | |
| 127 | // static |
| 128 | void vsystem_spr_device::set_pdraw(device_t &device, bool pdraw) |
| 129 | { |
| 130 | vsystem_spr_device &dev = downcast<vsystem_spr_device &>(device); |
| 131 | dev.m_pdraw = pdraw; |
| 132 | } |
| 117 | 133 | |
| 118 | | |
| 119 | 134 | void vsystem_spr_device::device_start() |
| 120 | 135 | { |
| 121 | 136 | |
| r18513 | r18514 | |
| 171 | 186 | void vsystem_spr_device::common_sprite_drawgfx(int gfxrgn, UINT16* spriteram2, UINT16* spriteram3, vsystem_spr_tile_indirection_callback tilecb, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 172 | 187 | { |
| 173 | 188 | gfx_element *gfx = machine.gfx[gfxrgn]; |
| 189 | int priority_mask = 0x00; |
| 174 | 190 | |
| 175 | | curr_sprite.zoomx = 32 - curr_sprite.zoomx; |
| 176 | | curr_sprite.zoomy = 32 - curr_sprite.zoomy; |
| 191 | curr_sprite.oy += m_yoffs; |
| 192 | curr_sprite.ox += m_xoffs; |
| 177 | 193 | |
| 178 | | int ystart, yend, yinc; |
| 179 | | |
| 180 | | if (!curr_sprite.flipy) { ystart = 0; yend = curr_sprite.ysize+1; yinc = 1; } |
| 181 | | else { ystart = curr_sprite.ysize; yend = -1; yinc = -1; } |
| 182 | | |
| 183 | | int ycnt = ystart; |
| 184 | | while (ycnt != yend) |
| 194 | if (m_pdraw) |
| 185 | 195 | { |
| 186 | | int xstart, xend, xinc; |
| 187 | | |
| 188 | | if (!curr_sprite.flipx) { xstart = 0; xend = curr_sprite.xsize+1; xinc = 1; } |
| 189 | | else { xstart = curr_sprite.xsize; xend = -1; xinc = -1; } |
| 190 | | |
| 191 | | int xcnt = xstart; |
| 192 | | while (xcnt != xend) |
| 196 | switch (curr_sprite.pri) |
| 193 | 197 | { |
| 194 | | int startno = tilecb(curr_sprite.map++, spriteram2, spriteram3); |
| 195 | | drawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_CG10103.pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_CG10103.transpen); |
| 196 | | drawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_CG10103.pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_CG10103.transpen); |
| 197 | | drawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_CG10103.pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_CG10103.transpen); |
| 198 | | drawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_CG10103.pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_CG10103.transpen); |
| 199 | | xcnt+=xinc; |
| 198 | default: |
| 199 | case 0: priority_mask = 0x00; break; |
| 200 | case 3: priority_mask = 0xfe; break; |
| 201 | case 2: priority_mask = 0xfc; break; |
| 202 | case 1: priority_mask = 0xf0; break; |
| 200 | 203 | } |
| 201 | | ycnt+=yinc; |
| 202 | 204 | } |
| 203 | | |
| 204 | | } |
| 205 | 205 | |
| 206 | | // same as above but for pdrawgfx implementations |
| 207 | | void vsystem_spr_device::common_sprite_pdrawgfx(int gfxrgn, UINT16* spriteram2, UINT16* spriteram3, vsystem_spr_tile_indirection_callback tilecb, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 208 | | { |
| 209 | | gfx_element *gfx = machine.gfx[gfxrgn]; |
| 210 | | int priority_mask; |
| 211 | | |
| 212 | | switch (curr_sprite.pri) |
| 213 | | { |
| 214 | | default: |
| 215 | | case 0: priority_mask = 0x00; break; |
| 216 | | case 3: priority_mask = 0xfe; break; |
| 217 | | case 2: priority_mask = 0xfc; break; |
| 218 | | case 1: priority_mask = 0xf0; break; |
| 219 | | } |
| 220 | | |
| 221 | | |
| 222 | 206 | curr_sprite.zoomx = 32 - curr_sprite.zoomx; |
| 223 | 207 | curr_sprite.zoomy = 32 - curr_sprite.zoomy; |
| 224 | 208 | |
| r18513 | r18514 | |
| 238 | 222 | int xcnt = xstart; |
| 239 | 223 | while (xcnt != xend) |
| 240 | 224 | { |
| 241 | | int startno = tilecb(curr_sprite.map++, spriteram2, spriteram3); |
| 242 | | pdrawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_CG10103.pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, machine.priority_bitmap,priority_mask, m_CG10103.transpen); |
| 243 | | pdrawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_CG10103.pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, machine.priority_bitmap,priority_mask, m_CG10103.transpen); |
| 244 | | pdrawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_CG10103.pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, machine.priority_bitmap,priority_mask, m_CG10103.transpen); |
| 245 | | pdrawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_CG10103.pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, machine.priority_bitmap,priority_mask, m_CG10103.transpen); |
| 225 | int startno = tilecb(curr_sprite.map++, spriteram2, spriteram3); |
| 226 | if (m_pdraw) |
| 227 | { |
| 228 | pdrawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, machine.priority_bitmap,priority_mask, m_transpen); |
| 229 | pdrawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, machine.priority_bitmap,priority_mask, m_transpen); |
| 230 | pdrawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, machine.priority_bitmap,priority_mask, m_transpen); |
| 231 | pdrawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, machine.priority_bitmap,priority_mask, m_transpen); |
| 232 | } |
| 233 | else |
| 234 | { |
| 235 | drawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_transpen); |
| 236 | drawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_transpen); |
| 237 | drawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_transpen); |
| 238 | drawgfxzoom_transpen(bitmap, cliprect, gfx, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_transpen); |
| 239 | } |
| 246 | 240 | xcnt+=xinc; |
| 247 | 241 | } |
| 248 | 242 | ycnt+=yinc; |
| 249 | 243 | } |
| 244 | |
| 250 | 245 | } |
| 251 | 246 | |
| 252 | 247 | |
| 248 | |
| 253 | 249 | void vsystem_spr_device::draw_sprites_inufuku( UINT16* spriteram, int spriteram_bytes, UINT16* spriteram2, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect ) |
| 254 | 250 | { |
| 255 | 251 | int offs; |
| r18513 | r18514 | |
| 271 | 267 | |
| 272 | 268 | get_sprite_attributes(&spriteram[attr_start]); |
| 273 | 269 | |
| 274 | | // curr_sprite.oy += 1; |
| 275 | 270 | curr_sprite.map &= 0x7fff; |
| 276 | 271 | |
| 277 | | common_sprite_pdrawgfx(2, spriteram2, NULL, inufuku_tile_callback, machine, bitmap, cliprect); |
| 272 | common_sprite_drawgfx(2, spriteram2, NULL, inufuku_tile_callback, machine, bitmap, cliprect); |
| 278 | 273 | } |
| 279 | 274 | } |
| 280 | 275 | } |
| r18513 | r18514 | |
| 412 | 407 | if (curr_sprite.pri != drawpri) |
| 413 | 408 | return; |
| 414 | 409 | |
| 415 | | common_sprite_drawgfx(m_CG10103.gfx_region, NULL, NULL, gstriker_tile_callback, machine, bitmap, cliprect); |
| 410 | common_sprite_drawgfx(m_gfx_region, NULL, NULL, gstriker_tile_callback, machine, bitmap, cliprect); |
| 416 | 411 | } |
| 417 | 412 | |
| 418 | 413 | |
| r18513 | r18514 | |
| 421 | 416 | UINT16* splist; |
| 422 | 417 | int i; |
| 423 | 418 | |
| 424 | | splist = m_CG10103.vram; |
| 419 | splist = m_vram; |
| 425 | 420 | |
| 426 | 421 | // Parse the sorting list |
| 427 | 422 | for (i=0;i<0x400;i++) |
| r18513 | r18514 | |
| 438 | 433 | int num = cmd & 0x3FF; |
| 439 | 434 | |
| 440 | 435 | // Draw the sprite |
| 441 | | CG10103_draw_sprite(machine, screen, cliprect, m_CG10103.vram + num*4, pri); |
| 436 | CG10103_draw_sprite(machine, screen, cliprect, m_vram + num*4, pri); |
| 442 | 437 | } |
| 443 | 438 | } |
| 444 | 439 | } |
| r18513 | r18514 | |
| 447 | 442 | |
| 448 | 443 | void vsystem_spr_device::CG10103_set_pal_base(int pal_base) |
| 449 | 444 | { |
| 450 | | m_CG10103.pal_base = pal_base; |
| 445 | m_pal_base = pal_base; |
| 451 | 446 | } |
| 452 | 447 | |
| 453 | 448 | void vsystem_spr_device::CG10103_set_gfx_region(int gfx_region) |
| 454 | 449 | { |
| 455 | | m_CG10103.gfx_region = gfx_region; |
| 450 | m_gfx_region = gfx_region; |
| 456 | 451 | } |
| 457 | 452 | |
| 458 | 453 | void vsystem_spr_device::CG10103_set_transpen(int transpen) |
| 459 | 454 | { |
| 460 | | m_CG10103.transpen = transpen; |
| 455 | m_transpen = transpen; |
| 461 | 456 | } |
| 462 | 457 | |
| 463 | 458 | void vsystem_spr_device::CG10103_set_ram(UINT16* vram) |
| 464 | 459 | { |
| 465 | | m_CG10103.vram = vram; |
| 460 | m_vram = vram; |
| 466 | 461 | } |
trunk/src/mame/video/aerofgt.c
| r18513 | r18514 | |
| 290 | 290 | machine().priority_bitmap.fill(0, cliprect); |
| 291 | 291 | |
| 292 | 292 | m_bg1_tilemap->draw(bitmap, cliprect, 0, 0); |
| 293 | | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0, -1); |
| 294 | | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0, 0); |
| 293 | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, -1); |
| 294 | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0); |
| 295 | 295 | return 0; |
| 296 | 296 | } |
| 297 | 297 | |
| r18513 | r18514 | |
| 309 | 309 | m_bg2_tilemap->draw(bitmap, cliprect, 0, 0); |
| 310 | 310 | |
| 311 | 311 | /* we use the priority buffer so sprites are drawn front to back */ |
| 312 | | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 1, -1); |
| 313 | | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 1, 0); |
| 314 | | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0, -1); |
| 315 | | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0, 0); |
| 312 | m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, -1); |
| 313 | m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, 0); |
| 314 | |
| 315 | m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, -1); |
| 316 | m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, 0); |
| 316 | 317 | return 0; |
| 317 | 318 | } |
| 318 | 319 | |
| r18513 | r18514 | |
| 334 | 335 | m_bg2_tilemap->draw(bitmap, cliprect, 0, 1); |
| 335 | 336 | |
| 336 | 337 | /* we use the priority buffer so sprites are drawn front to back */ |
| 337 | | m_spr_old->spinlbrk_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0, 0); |
| 338 | | m_spr_old->spinlbrk_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0, -1); |
| 339 | | m_spr_old->spinlbrk_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 1, 0); |
| 340 | | m_spr_old->spinlbrk_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 1, -1); |
| 338 | m_spr_old->spinlbrk_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, 0); |
| 339 | m_spr_old->spinlbrk_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, -1); |
| 340 | |
| 341 | m_spr_old2->spinlbrk_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, 0); |
| 342 | m_spr_old2->spinlbrk_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, -1); |
| 341 | 343 | return 0; |
| 342 | 344 | } |
| 343 | 345 | |
| r18513 | r18514 | |
| 360 | 362 | m_bg2_tilemap->draw(bitmap, cliprect, 0, 1); |
| 361 | 363 | |
| 362 | 364 | /* we use the priority buffer so sprites are drawn front to back */ |
| 363 | | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 1, -1); //ship |
| 364 | | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 1, 0); //intro |
| 365 | | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0, -1); //enemy |
| 366 | | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0, 0); //enemy |
| 365 | m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, -1); //enemy |
| 366 | m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, 0); //enemy |
| 367 | |
| 368 | m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, -1); //ship |
| 369 | m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, 0); //intro |
| 367 | 370 | return 0; |
| 368 | 371 | } |
| 369 | 372 | |
| r18513 | r18514 | |
| 830 | 833 | m_bg1_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); |
| 831 | 834 | } |
| 832 | 835 | |
| 833 | | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0, -1); |
| 834 | | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0, 0); |
| 836 | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, -1); |
| 837 | m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0); |
| 835 | 838 | return 0; |
| 836 | 839 | } |
trunk/src/mame/drivers/inufuku.c
| r18513 | r18514 | |
| 153 | 153 | |
| 154 | 154 | AM_RANGE(0x780000, 0x780013) AM_WRITE(inufuku_palettereg_w) // bg & text palettebank register |
| 155 | 155 | AM_RANGE(0x7a0000, 0x7a0023) AM_WRITE(inufuku_scrollreg_w) // bg & text scroll register |
| 156 | | AM_RANGE(0x7e0000, 0x7e0001) AM_WRITENOP // ? |
| 156 | // AM_RANGE(0x7e0000, 0x7e0001) AM_WRITENOP // ? |
| 157 | 157 | |
| 158 | 158 | AM_RANGE(0x800000, 0xbfffff) AM_ROM // data rom |
| 159 | 159 | AM_RANGE(0xfd0000, 0xfdffff) AM_RAM // work ram |
| r18513 | r18514 | |
| 390 | 390 | MCFG_SCREEN_REFRESH_RATE(60) |
| 391 | 391 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2300)) |
| 392 | 392 | MCFG_SCREEN_SIZE(2048, 256) |
| 393 | | MCFG_SCREEN_VISIBLE_AREA(0, 319-1, 1, 224-1) |
| 393 | MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 223) |
| 394 | 394 | MCFG_SCREEN_UPDATE_DRIVER(inufuku_state, screen_update_inufuku) |
| 395 | 395 | MCFG_SCREEN_VBLANK_DRIVER(inufuku_state, screen_eof_inufuku) |
| 396 | 396 | |
| 397 | 397 | MCFG_DEVICE_ADD("vsystem_spr", VSYSTEM_SPR, 0) |
| 398 | vsystem_spr_device::set_offsets(*device, 0,1); // reference videos confirm at least the +1 against tilemaps in 3on3dunk (the highscore header text and black box are meant to be 1 pixel misaligned, although there is currently a priority bug there too) |
| 399 | vsystem_spr_device::set_pdraw(*device, true); |
| 398 | 400 | |
| 399 | 401 | MCFG_GFXDECODE(inufuku) |
| 400 | 402 | MCFG_PALETTE_LENGTH(4096) |
| r18513 | r18514 | |
| 488 | 490 | ******************************************************************************/ |
| 489 | 491 | |
| 490 | 492 | GAME( 1998, inufuku, 0, inufuku, inufuku, driver_device, 0, ROT0, "Video System Co.", "Quiz & Variety Sukusuku Inufuku (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 491 | | GAME( 1996, 3on3dunk, 0, _3on3dunk, inufuku, driver_device, 0, ROT0, "Video System Co.", "3 On 3 Dunk Madness (US, prototype? 1997/02/04)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 493 | GAME( 1996, 3on3dunk, 0, _3on3dunk, inufuku, driver_device, 0, ROT0, "Video System Co.", "3 On 3 Dunk Madness (US, prototype? 1997/02/04)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS ) // tilemap priority is wrong in places (basketball before explosion in attract, highscores) |