Added sprite template to main cshooter set too

This commit is contained in:
Angelo Salese 2013-07-17 21:55:16 +00:00
parent c614a29886
commit 072521f2e3
3 changed files with 54 additions and 2 deletions

View File

@ -220,6 +220,8 @@ conventional RAM. See the memory map for sprite data format.
TODO:
- MCU is identical between Empire City and Cross Shooter, I guess it's coinage
related.
- Cross Shooter has serious issues with firing rate, especially noticeable
when some bosses appears. irq related?
- palette is incorporated - fix!!!
- handle transparency in text layer properly (how?)
- second bank of sf02 is this used? (probably NOT)
@ -574,6 +576,9 @@ static MACHINE_CONFIG_DERIVED( cshooter, stfight )
MCFG_CPU_ADD("mcu", M68705, 3000000) /* 3 MHz */
MCFG_CPU_PROGRAM_MAP(cshooter_mcu_map)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(stfight_state, screen_update_cshooter)
MCFG_GFXDECODE(cshooter)
MCFG_VIDEO_START_OVERRIDE(stfight_state,cshooter)
MACHINE_CONFIG_END
@ -985,8 +990,8 @@ ROM_START( cshooter )
ROM_REGION( 0x820, "proms", 0 )
ROM_LOAD( "63s281.16a", 0x0000, 0x0100, CRC(0b8b914b) SHA1(8cf4910b846de79661cc187887171ed8ebfd6719) ) // clut
ROM_LOAD( "82s129.9s", 0x0100, 0x0100, CRC(cf14ba30) SHA1(3284b6809075756b3c8e07d9705fc7eacb7556f1) ) // timing? (not used)
ROM_LOAD( "82s129.4e", 0x0200, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // timing? (not used)
ROM_LOAD( "82s129.9s", 0x0500, 0x0100, CRC(cf14ba30) SHA1(3284b6809075756b3c8e07d9705fc7eacb7556f1) ) // timing? (not used)
ROM_LOAD( "82s129.4e", 0x0600, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // timing? (not used)
ROM_LOAD( "82s123.7a", 0x0800, 0x0020, CRC(93e2d292) SHA1(af8edd0cfe85f28ede9604cfaf4516d54e5277c9) ) // sprite color related? (not used)
ROM_END

View File

@ -66,10 +66,12 @@ public:
virtual void machine_reset();
virtual void palette_init();
UINT32 screen_update_stfight(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_cshooter(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(stfight_vb_interrupt);
DECLARE_WRITE8_MEMBER(stfight_adpcm_control_w);
void set_pens();
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
void cshooter_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(stfight_adpcm_int);
/*

View File

@ -335,3 +335,48 @@ UINT32 stfight_state::screen_update_stfight(screen_device &screen, bitmap_ind16
m_tx_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
void stfight_state::cshooter_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
for (int i = m_sprite_ram.bytes() - 4; i >= 0 ; i -= 4)
{
if (m_sprite_ram[i+1]&0x80)
continue;
int attr = m_sprite_ram[i+1];
int flipx = attr & 0x10;
int color = attr & 0x0f;
int pri = (attr & 0x20) >> 5;
/* BCD debug code, to be removed in the end */
UINT8 tile_low = (m_sprite_ram[i]&0x0f);
UINT8 tile_high = ((m_sprite_ram[i]&0xf0)>>4);
tile_low += (tile_low > 0x9) ? 0x37 : 0x30;
tile_high += (tile_high > 0x9) ? 0x37 : 0x30;
pdrawgfx_transpen(bitmap,cliprect,machine().gfx[0], tile_high << 1, color, flipx, 0, m_sprite_ram[i+3],m_sprite_ram[i+2],machine().priority_bitmap,pri ? 0x02 : 0,0x00);
pdrawgfx_transpen(bitmap,cliprect,machine().gfx[0], tile_high << 1, color, flipx, 0, m_sprite_ram[i+3]+8,m_sprite_ram[i+2],machine().priority_bitmap,pri ? 0x02 : 0,0x00);
pdrawgfx_transpen(bitmap,cliprect,machine().gfx[0], tile_low << 1, color, flipx, 0, m_sprite_ram[i+3]+8,m_sprite_ram[i+2]+8,machine().priority_bitmap,pri ? 0x02 : 0,0x00);
pdrawgfx_transpen(bitmap,cliprect,machine().gfx[0], tile_low << 1, color, flipx, 0, m_sprite_ram[i+3],m_sprite_ram[i+2]+8,machine().priority_bitmap,pri ? 0x02 : 0,0x00);
}
}
UINT32 stfight_state::screen_update_cshooter(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
set_pens();
machine().priority_bitmap.fill(0, cliprect);
bitmap.fill(0, cliprect); /* in case m_bg_tilemap is disabled */
m_bg_tilemap->draw(bitmap, cliprect, 0,0);
m_fg_tilemap->draw(bitmap, cliprect, 0,1);
/* Draw sprites (may be obscured by foreground layer) */
// if (m_vh_latch_ram[0x07] & 0x40)
cshooter_draw_sprites(bitmap,cliprect);
m_tx_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}