namcofl.cpp: killed anonymous timers, moved to configured banking, added save state support. Also moved some remaining functions inside the class (nw)

This commit is contained in:
Ivan Vangelista 2017-04-12 18:46:31 +02:00
parent f7af97c497
commit 89b5f23499
10 changed files with 156 additions and 164 deletions

View File

@ -2112,6 +2112,7 @@ void i960_cpu_device::device_start()
save_item(NAME(m_immediate_irq)); save_item(NAME(m_immediate_irq));
save_item(NAME(m_immediate_vector)); save_item(NAME(m_immediate_vector));
save_item(NAME(m_immediate_pri)); save_item(NAME(m_immediate_pri));
save_item(NAME(m_bursting));
state_add( I960_SAT, "sat", m_SAT).formatstr("%08X"); state_add( I960_SAT, "sat", m_SAT).formatstr("%08X");
state_add( I960_PRCB, "prcb", m_PRCB).formatstr("%08X"); state_add( I960_PRCB, "prcb", m_PRCB).formatstr("%08X");

View File

@ -191,13 +191,13 @@ WRITE32_MEMBER(namcofl_state::namcofl_sysreg_w)
{ {
if (data == 0) // RAM at 00000000, ROM at 10000000 if (data == 0) // RAM at 00000000, ROM at 10000000
{ {
membank("bank1")->set_base(m_workram.get()); membank("bank1")->set_entry(1);
membank("bank2")->set_base(memregion("maincpu")->base() ); membank("bank2")->set_entry(1);
} }
else // ROM at 00000000, RAM at 10000000 else // ROM at 00000000, RAM at 10000000
{ {
membank("bank1")->set_base(memregion("maincpu")->base() ); membank("bank1")->set_entry(0);
membank("bank2")->set_base(m_workram.get()); membank("bank2")->set_entry(0);
} }
} }
} }
@ -214,26 +214,13 @@ WRITE8_MEMBER(namcofl_state::namcofl_c116_w)
} }
} }
READ32_MEMBER(namcofl_state::namcofl_share_r)
{
return (m_shareram[offset*2+1] << 16) | m_shareram[offset*2];
}
WRITE32_MEMBER(namcofl_state::namcofl_share_w)
{
COMBINE_DATA(m_shareram+offset*2);
data >>= 16;
mem_mask >>= 16;
COMBINE_DATA(m_shareram+offset*2+1);
}
static ADDRESS_MAP_START( namcofl_mem, AS_PROGRAM, 32, namcofl_state ) static ADDRESS_MAP_START( namcofl_mem, AS_PROGRAM, 32, namcofl_state )
AM_RANGE(0x00000000, 0x000fffff) AM_RAMBANK("bank1") AM_RANGE(0x00000000, 0x000fffff) AM_RAMBANK("bank1")
AM_RANGE(0x10000000, 0x100fffff) AM_RAMBANK("bank2") AM_RANGE(0x10000000, 0x100fffff) AM_RAMBANK("bank2")
AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_REGION("data", 0) AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_REGION("data", 0)
AM_RANGE(0x30000000, 0x30001fff) AM_RAM AM_SHARE("nvram") /* nvram */ AM_RANGE(0x30000000, 0x30001fff) AM_RAM AM_SHARE("nvram") /* nvram */
AM_RANGE(0x30100000, 0x30100003) AM_WRITE(namcofl_spritebank_w) AM_RANGE(0x30100000, 0x30100003) AM_WRITE(namcofl_spritebank_w)
AM_RANGE(0x30284000, 0x3028bfff) AM_READWRITE(namcofl_share_r, namcofl_share_w) AM_RANGE(0x30284000, 0x3028bfff) AM_RAM AM_SHARE("shareram")
AM_RANGE(0x30300000, 0x30303fff) AM_RAM /* COMRAM */ AM_RANGE(0x30300000, 0x30303fff) AM_RAM /* COMRAM */
AM_RANGE(0x30380000, 0x303800ff) AM_READ(fl_network_r ) /* network registers */ AM_RANGE(0x30380000, 0x303800ff) AM_READ(fl_network_r ) /* network registers */
AM_RANGE(0x30400000, 0x30407fff) AM_DEVREAD8("c116", namco_c116_device,read,0xffffffff) AM_WRITE8(namcofl_c116_w,0xffffffff) AM_RANGE(0x30400000, 0x30407fff) AM_DEVREAD8("c116", namco_c116_device,read,0xffffffff) AM_WRITE8(namcofl_c116_w,0xffffffff)
@ -528,14 +515,14 @@ GFXDECODE_END
TIMER_CALLBACK_MEMBER(namcofl_state::network_interrupt_callback) TIMER_CALLBACK_MEMBER(namcofl_state::network_interrupt_callback)
{ {
m_maincpu->set_input_line(I960_IRQ0, ASSERT_LINE); m_maincpu->set_input_line(I960_IRQ0, ASSERT_LINE);
machine().scheduler().timer_set(m_screen->frame_period(), timer_expired_delegate(FUNC(namcofl_state::network_interrupt_callback),this)); m_network_interrupt_timer->adjust(m_screen->frame_period());
} }
TIMER_CALLBACK_MEMBER(namcofl_state::vblank_interrupt_callback) TIMER_CALLBACK_MEMBER(namcofl_state::vblank_interrupt_callback)
{ {
m_maincpu->set_input_line(I960_IRQ2, ASSERT_LINE); m_maincpu->set_input_line(I960_IRQ2, ASSERT_LINE);
machine().scheduler().timer_set(m_screen->frame_period(), timer_expired_delegate(FUNC(namcofl_state::vblank_interrupt_callback),this)); m_vblank_interrupt_timer->adjust(m_screen->frame_period());
} }
@ -565,18 +552,28 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcofl_state::mcu_adc_cb)
MACHINE_START_MEMBER(namcofl_state,namcofl) MACHINE_START_MEMBER(namcofl_state,namcofl)
{ {
m_raster_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcofl_state::raster_interrupt_callback),this)); m_raster_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcofl_state::raster_interrupt_callback),this));
m_network_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcofl_state::network_interrupt_callback),this));
m_vblank_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcofl_state::vblank_interrupt_callback),this));
membank("bank1")->configure_entry(0, memregion("maincpu")->base());
membank("bank1")->configure_entry(1, m_workram.get());
membank("bank1")->set_entry(0);
membank("bank2")->configure_entry(0, m_workram.get());
membank("bank2")->configure_entry(1, memregion("maincpu")->base());
membank("bank2")->set_entry(0);
} }
MACHINE_RESET_MEMBER(namcofl_state,namcofl) MACHINE_RESET_MEMBER(namcofl_state,namcofl)
{ {
machine().scheduler().timer_set(m_screen->time_until_pos(m_screen->visible_area().max_y + 3), timer_expired_delegate(FUNC(namcofl_state::network_interrupt_callback),this)); m_network_interrupt_timer->adjust(m_screen->time_until_pos(m_screen->visible_area().max_y + 3));
machine().scheduler().timer_set(m_screen->time_until_pos(m_screen->visible_area().max_y + 1), timer_expired_delegate(FUNC(namcofl_state::vblank_interrupt_callback),this)); m_vblank_interrupt_timer->adjust(m_screen->time_until_pos(m_screen->visible_area().max_y + 1));
membank("bank1")->set_base(memregion("maincpu")->base() );
membank("bank2")->set_base(m_workram.get() );
memset(m_workram.get(), 0x00, 0x100000); memset(m_workram.get(), 0x00, 0x100000);
membank("bank1")->set_entry(0);
membank("bank2")->set_entry(0);
} }
@ -794,9 +791,10 @@ ROM_END
void namcofl_state::common_init() void namcofl_state::common_init()
{ {
m_workram = std::make_unique<uint32_t[]>(0x100000/4); m_workram = std::make_unique<uint32_t[]>(0x100000/4);
save_pointer(NAME(m_workram.get()), 0x100000/4),
membank("bank1")->set_base(memregion("maincpu")->base() ); save_item(NAME(m_mcu_port6));
membank("bank2")->set_base(m_workram.get()); save_item(NAME(m_sprbank));
} }
DRIVER_INIT_MEMBER(namcofl_state,speedrcr) DRIVER_INIT_MEMBER(namcofl_state,speedrcr)
@ -811,7 +809,7 @@ DRIVER_INIT_MEMBER(namcofl_state,finalapr)
m_gametype = NAMCOFL_FINAL_LAP_R; m_gametype = NAMCOFL_FINAL_LAP_R;
} }
GAME ( 1995, speedrcr, 0, namcofl, speedrcr, namcofl_state, speedrcr, ROT0, "Namco", "Speed Racer", MACHINE_IMPERFECT_GRAPHICS ) GAME ( 1995, speedrcr, 0, namcofl, speedrcr, namcofl_state, speedrcr, ROT0, "Namco", "Speed Racer", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAMEL( 1995, finalapr, 0, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Rev. B)", 0, layout_namcofl ) GAMEL( 1995, finalapr, 0, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Rev. B)", MACHINE_SUPPORTS_SAVE, layout_namcofl )
GAMEL( 1995, finalapro, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R", 0, layout_namcofl ) GAMEL( 1995, finalapro, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R", MACHINE_SUPPORTS_SAVE, layout_namcofl )
GAMEL( 1995, finalaprj, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Japan Rev. C)", 0, layout_namcofl ) GAMEL( 1995, finalaprj, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Japan Rev. C)", MACHINE_SUPPORTS_SAVE, layout_namcofl )

View File

@ -33,7 +33,7 @@ public:
m_accel(*this, "ACCEL"), m_accel(*this, "ACCEL"),
m_brake(*this, "BRAKE"), m_brake(*this, "BRAKE"),
m_wheel(*this, "WHEEL"), m_wheel(*this, "WHEEL"),
m_shareram(*this, "shareram") { } m_shareram(*this, "shareram", 32) { }
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_mcu; required_device<cpu_device> m_mcu;
@ -46,6 +46,8 @@ public:
optional_ioport m_brake; optional_ioport m_brake;
optional_ioport m_wheel; optional_ioport m_wheel;
emu_timer *m_raster_interrupt_timer; emu_timer *m_raster_interrupt_timer;
emu_timer *m_vblank_interrupt_timer;
emu_timer *m_network_interrupt_timer;
std::unique_ptr<uint32_t[]> m_workram; std::unique_ptr<uint32_t[]> m_workram;
required_shared_ptr<uint16_t> m_shareram; required_shared_ptr<uint16_t> m_shareram;
uint8_t m_mcu_port6; uint8_t m_mcu_port6;
@ -56,8 +58,6 @@ public:
DECLARE_READ32_MEMBER(namcofl_sysreg_r); DECLARE_READ32_MEMBER(namcofl_sysreg_r);
DECLARE_WRITE32_MEMBER(namcofl_sysreg_w); DECLARE_WRITE32_MEMBER(namcofl_sysreg_w);
DECLARE_WRITE8_MEMBER(namcofl_c116_w); DECLARE_WRITE8_MEMBER(namcofl_c116_w);
DECLARE_READ32_MEMBER(namcofl_share_r);
DECLARE_WRITE32_MEMBER(namcofl_share_w);
DECLARE_WRITE16_MEMBER(mcu_shared_w); DECLARE_WRITE16_MEMBER(mcu_shared_w);
DECLARE_READ8_MEMBER(port6_r); DECLARE_READ8_MEMBER(port6_r);
DECLARE_WRITE8_MEMBER(port6_w); DECLARE_WRITE8_MEMBER(port6_w);
@ -84,4 +84,6 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(mcu_irq2_cb); TIMER_DEVICE_CALLBACK_MEMBER(mcu_irq2_cb);
TIMER_DEVICE_CALLBACK_MEMBER(mcu_adc_cb); TIMER_DEVICE_CALLBACK_MEMBER(mcu_adc_cb);
void common_init(); void common_init();
int FLobjcode2tile(int code);
void TilemapCB(uint16_t code, int *tile, int *mask);
}; };

View File

@ -97,10 +97,6 @@ C102 - Controls CPU access to ROZ Memory Area.
/*----------- defined in drivers/namcoic.c -----------*/
void namco_tilemap_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri );
void namco_tilemap_invalidate( void );
/***********************************************************************************/ /***********************************************************************************/

View File

@ -119,4 +119,6 @@ public:
int NB1objcode2tile(int code); int NB1objcode2tile(int code);
int NB2objcode2tile(int code); int NB2objcode2tile(int code);
void NB1TilemapCB(uint16_t code, int *tile, int *mask);
void NB2TilemapCB(uint16_t code, int *tile, int *mask);
}; };

View File

@ -94,7 +94,6 @@ enum
NAMCOFL_FINAL_LAP_R NAMCOFL_FINAL_LAP_R
}; };
// fix me -- most of this should be devices eventually // fix me -- most of this should be devices eventually
class namcos2_shared_state : public driver_device class namcos2_shared_state : public driver_device
{ {
@ -158,7 +157,36 @@ public:
TILE_GET_INFO_MEMBER( get_tile_info3 ); TILE_GET_INFO_MEMBER( get_tile_info3 );
TILE_GET_INFO_MEMBER( get_tile_info4 ); TILE_GET_INFO_MEMBER( get_tile_info4 );
TILE_GET_INFO_MEMBER( get_tile_info5 ); TILE_GET_INFO_MEMBER( get_tile_info5 );
void namco_tilemap_init(int gfxbank, void *pMaskROM, void (*cb)( running_machine &machine, uint16_t code, int *gfx, int *mask) ); typedef delegate<void (uint16_t, int*, int*)> c123_tilemap_delegate;
void c123_tilemap_init(int gfxbank, void *pMaskROM, c123_tilemap_delegate tilemap_cb);
void c123_tilemap_invalidate(void);
void c123_tilemap_draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri);
void c123_SetTilemapVideoram(int offset, uint16_t newword);
void c123_SetTilemapControl(int offset, uint16_t newword);
struct c123_mTilemapInfo
{
uint16_t control[0x40/2];
/**
* [0x1] 0x02/2 tilemap#0.scrollx
* [0x3] 0x06/2 tilemap#0.scrolly
* [0x5] 0x0a/2 tilemap#1.scrollx
* [0x7] 0x0e/2 tilemap#1.scrolly
* [0x9] 0x12/2 tilemap#2.scrollx
* [0xb] 0x16/2 tilemap#2.scrolly
* [0xd] 0x1a/2 tilemap#3.scrollx
* [0xf] 0x1e/2 tilemap#3.scrolly
* 0x20/2 priority
* 0x30/2 color
*/
tilemap_t *tmap[6];
std::unique_ptr<uint16_t[]> videoram;
int gfxbank;
uint8_t *maskBaseAddr;
c123_tilemap_delegate cb;
};
c123_mTilemapInfo m_c123_TilemapInfo;
// C169 ROZ Layer Emulation // C169 ROZ Layer Emulation
public: public:
@ -357,6 +385,7 @@ public:
void GollyGhostUpdateLED_c8( int data ); void GollyGhostUpdateLED_c8( int data );
void GollyGhostUpdateLED_ca( int data ); void GollyGhostUpdateLED_ca( int data );
void GollyGhostUpdateDiorama_c0( int data ); void GollyGhostUpdateDiorama_c0( int data );
void TilemapCB(uint16_t code, int *tile, int *mask);
}; };

View File

@ -6,136 +6,108 @@
/**************************************************************************************/ /**************************************************************************************/
static struct
{
uint16_t control[0x40/2];
/**
* [0x1] 0x02/2 tilemap#0.scrollx
* [0x3] 0x06/2 tilemap#0.scrolly
* [0x5] 0x0a/2 tilemap#1.scrollx
* [0x7] 0x0e/2 tilemap#1.scrolly
* [0x9] 0x12/2 tilemap#2.scrollx
* [0xb] 0x16/2 tilemap#2.scrolly
* [0xd] 0x1a/2 tilemap#3.scrollx
* [0xf] 0x1e/2 tilemap#3.scrolly
* 0x20/2 priority
* 0x30/2 color
*/
tilemap_t *tmap[6];
std::unique_ptr<uint16_t[]> videoram;
int gfxbank;
uint8_t *maskBaseAddr;
void (*cb)( running_machine &machine, uint16_t code, int *gfx, int *mask);
} mTilemapInfo;
void namco_tilemap_invalidate( void ) void namcos2_shared_state::c123_tilemap_invalidate(void)
{ {
int i; for( int i = 0; i < 6; i++ )
for( i=0; i<6; i++ )
{ {
mTilemapInfo.tmap[i]->mark_all_dirty(); m_c123_TilemapInfo.tmap[i]->mark_all_dirty();
} }
} /* namco_tilemap_invalidate */ } /* namco_tilemap_invalidate */
inline void namcos2_shared_state::namcoic_get_tile_info(tile_data &tileinfo,int tile_index,uint16_t *vram) inline void namcos2_shared_state::namcoic_get_tile_info(tile_data &tileinfo,int tile_index,uint16_t *vram)
{ {
int tile, mask; int tile, mask;
mTilemapInfo.cb( machine(), vram[tile_index], &tile, &mask ); m_c123_TilemapInfo.cb( vram[tile_index], &tile, &mask );
tileinfo.mask_data = mTilemapInfo.maskBaseAddr+mask*8; tileinfo.mask_data = m_c123_TilemapInfo.maskBaseAddr+mask*8;
SET_TILE_INFO_MEMBER(mTilemapInfo.gfxbank,tile,0,0); SET_TILE_INFO_MEMBER(m_c123_TilemapInfo.gfxbank,tile,0,0);
} /* get_tile_info */ } /* get_tile_info */
TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info0 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.videoram[0x0000]); } TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info0 ) { namcoic_get_tile_info(tileinfo,tile_index,&m_c123_TilemapInfo.videoram[0x0000]); }
TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info1 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.videoram[0x1000]); } TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info1 ) { namcoic_get_tile_info(tileinfo,tile_index,&m_c123_TilemapInfo.videoram[0x1000]); }
TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info2 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.videoram[0x2000]); } TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info2 ) { namcoic_get_tile_info(tileinfo,tile_index,&m_c123_TilemapInfo.videoram[0x2000]); }
TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info3 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.videoram[0x3000]); } TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info3 ) { namcoic_get_tile_info(tileinfo,tile_index,&m_c123_TilemapInfo.videoram[0x3000]); }
TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info4 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.videoram[0x4008]); } TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info4 ) { namcoic_get_tile_info(tileinfo,tile_index,&m_c123_TilemapInfo.videoram[0x4008]); }
TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info5 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.videoram[0x4408]); } TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info5 ) { namcoic_get_tile_info(tileinfo,tile_index,&m_c123_TilemapInfo.videoram[0x4408]); }
void namcos2_shared_state::namco_tilemap_init( int gfxbank, void *maskBaseAddr, void namcos2_shared_state::c123_tilemap_init( int gfxbank, void *maskBaseAddr, c123_tilemap_delegate tilemap_cb )
void (*cb)( running_machine &machine, uint16_t code, int *gfx, int *mask) )
{ {
int i; m_c123_TilemapInfo.gfxbank = gfxbank;
mTilemapInfo.gfxbank = gfxbank; m_c123_TilemapInfo.maskBaseAddr = (uint8_t *)maskBaseAddr;
mTilemapInfo.maskBaseAddr = (uint8_t *)maskBaseAddr; m_c123_TilemapInfo.cb = tilemap_cb;
mTilemapInfo.cb = cb; m_c123_TilemapInfo.videoram = std::make_unique<uint16_t[]>( 0x10000 );
mTilemapInfo.videoram = std::make_unique<uint16_t[]>( 0x10000 );
/* four scrolling tilemaps */ /* four scrolling tilemaps */
mTilemapInfo.tmap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info0),this),TILEMAP_SCAN_ROWS,8,8,64,64); m_c123_TilemapInfo.tmap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info0),this),TILEMAP_SCAN_ROWS,8,8,64,64);
mTilemapInfo.tmap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info1),this),TILEMAP_SCAN_ROWS,8,8,64,64); m_c123_TilemapInfo.tmap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info1),this),TILEMAP_SCAN_ROWS,8,8,64,64);
mTilemapInfo.tmap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info2),this),TILEMAP_SCAN_ROWS,8,8,64,64); m_c123_TilemapInfo.tmap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info2),this),TILEMAP_SCAN_ROWS,8,8,64,64);
mTilemapInfo.tmap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info3),this),TILEMAP_SCAN_ROWS,8,8,64,64); m_c123_TilemapInfo.tmap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info3),this),TILEMAP_SCAN_ROWS,8,8,64,64);
/* two non-scrolling tilemaps */ /* two non-scrolling tilemaps */
mTilemapInfo.tmap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info4),this),TILEMAP_SCAN_ROWS,8,8,36,28); m_c123_TilemapInfo.tmap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info4),this),TILEMAP_SCAN_ROWS,8,8,36,28);
mTilemapInfo.tmap[5] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info5),this),TILEMAP_SCAN_ROWS,8,8,36,28); m_c123_TilemapInfo.tmap[5] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info5),this),TILEMAP_SCAN_ROWS,8,8,36,28);
/* define offsets for scrolling */ /* define offsets for scrolling */
for( i=0; i<4; i++ ) for( int i = 0; i < 4; i++ )
{ {
static const int adj[4] = { 4,2,1,0 }; static const int adj[4] = { 4,2,1,0 };
int dx = 44+adj[i]; int dx = 44+adj[i];
mTilemapInfo.tmap[i]->set_scrolldx( -dx, 288+dx ); m_c123_TilemapInfo.tmap[i]->set_scrolldx( -dx, 288+dx );
mTilemapInfo.tmap[i]->set_scrolldy( -24, 224+24 ); m_c123_TilemapInfo.tmap[i]->set_scrolldy( -24, 224+24 );
} }
save_item(NAME(mTilemapInfo.control)); save_item(NAME(m_c123_TilemapInfo.control));
save_pointer(NAME(mTilemapInfo.videoram.get()), 0x10000); save_pointer(NAME(m_c123_TilemapInfo.videoram.get()), 0x10000);
} /* namco_tilemap_init */ }
void void namcos2_shared_state::c123_tilemap_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
namco_tilemap_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{ {
int i; for( int i = 0; i < 6; i++ )
for( i=0; i<6; i++ )
{ {
/* note: priority is only in range 0..7, but Point Blank uses 0xf to hide a layer */ /* note: priority is only in range 0..7, but Point Blank uses 0xf to hide a layer */
if( (mTilemapInfo.control[0x20/2+i]&0xf) == pri ) if( (m_c123_TilemapInfo.control[0x20/2+i]&0xf) == pri )
{ {
int color = mTilemapInfo.control[0x30/2+i] & 0x07; int color = m_c123_TilemapInfo.control[0x30/2+i] & 0x07;
mTilemapInfo.tmap[i]->set_palette_offset( color*256 ); m_c123_TilemapInfo.tmap[i]->set_palette_offset( color*256 );
mTilemapInfo.tmap[i]->draw(screen, bitmap,cliprect,0,0); m_c123_TilemapInfo.tmap[i]->draw(screen, bitmap,cliprect,0,0);
} }
} }
} /* namco_tilemap_draw */ } /* c123_tilemap_draw */
static void void namcos2_shared_state::c123_SetTilemapVideoram(int offset, uint16_t newword)
SetTilemapVideoram( int offset, uint16_t newword )
{ {
mTilemapInfo.videoram[offset] = newword; m_c123_TilemapInfo.videoram[offset] = newword;
if( offset<0x4000 ) if( offset<0x4000 )
{ {
mTilemapInfo.tmap[offset>>12]->mark_tile_dirty(offset&0xfff); m_c123_TilemapInfo.tmap[offset>>12]->mark_tile_dirty(offset&0xfff);
} }
else if( offset>=0x8010/2 && offset<0x87f0/2 ) else if( offset>=0x8010/2 && offset<0x87f0/2 )
{ /* fixed plane#1 */ { /* fixed plane#1 */
offset-=0x8010/2; offset-=0x8010/2;
mTilemapInfo.tmap[4]->mark_tile_dirty( offset ); m_c123_TilemapInfo.tmap[4]->mark_tile_dirty( offset );
} }
else if( offset>=0x8810/2 && offset<0x8ff0/2 ) else if( offset>=0x8810/2 && offset<0x8ff0/2 )
{ /* fixed plane#2 */ { /* fixed plane#2 */
offset-=0x8810/2; offset-=0x8810/2;
mTilemapInfo.tmap[5]->mark_tile_dirty( offset ); m_c123_TilemapInfo.tmap[5]->mark_tile_dirty( offset );
} }
} /* SetTilemapVideoram */ } /* SetTilemapVideoram */
WRITE16_MEMBER( namcos2_shared_state::c123_tilemap_videoram_w ) WRITE16_MEMBER( namcos2_shared_state::c123_tilemap_videoram_w )
{ {
uint16_t newword = mTilemapInfo.videoram[offset]; uint16_t newword = m_c123_TilemapInfo.videoram[offset];
COMBINE_DATA( &newword ); COMBINE_DATA( &newword );
SetTilemapVideoram( offset, newword ); c123_SetTilemapVideoram( offset, newword );
} }
READ16_MEMBER( namcos2_shared_state::c123_tilemap_videoram_r ) READ16_MEMBER( namcos2_shared_state::c123_tilemap_videoram_r )
{ {
return mTilemapInfo.videoram[offset]; return m_c123_TilemapInfo.videoram[offset];
} }
static void void namcos2_shared_state::c123_SetTilemapControl(int offset, uint16_t newword)
SetTilemapControl( int offset, uint16_t newword )
{ {
mTilemapInfo.control[offset] = newword; m_c123_TilemapInfo.control[offset] = newword;
if( offset<0x20/2 ) if( offset<0x20/2 )
{ {
if( offset == 0x02/2 ) if( offset == 0x02/2 )
@ -145,54 +117,54 @@ SetTilemapControl( int offset, uint16_t newword )
int i; int i;
for( i=0; i<=5; i++ ) for( i=0; i<=5; i++ )
{ {
mTilemapInfo.tmap[i]->set_flip(attrs); m_c123_TilemapInfo.tmap[i]->set_flip(attrs);
} }
} }
} }
newword &= 0x1ff; newword &= 0x1ff;
if( mTilemapInfo.control[0x02/2]&0x8000 ) if( m_c123_TilemapInfo.control[0x02/2]&0x8000 )
{ {
newword = -newword; newword = -newword;
} }
switch( offset ) switch( offset )
{ {
case 0x02/2: case 0x02/2:
mTilemapInfo.tmap[0]->set_scrollx( 0, newword ); m_c123_TilemapInfo.tmap[0]->set_scrollx( 0, newword );
break; break;
case 0x06/2: case 0x06/2:
mTilemapInfo.tmap[0]->set_scrolly( 0, newword ); m_c123_TilemapInfo.tmap[0]->set_scrolly( 0, newword );
break; break;
case 0x0a/2: case 0x0a/2:
mTilemapInfo.tmap[1]->set_scrollx( 0, newword ); m_c123_TilemapInfo.tmap[1]->set_scrollx( 0, newword );
break; break;
case 0x0e/2: case 0x0e/2:
mTilemapInfo.tmap[1]->set_scrolly( 0, newword ); m_c123_TilemapInfo.tmap[1]->set_scrolly( 0, newword );
break; break;
case 0x12/2: case 0x12/2:
mTilemapInfo.tmap[2]->set_scrollx( 0, newword ); m_c123_TilemapInfo.tmap[2]->set_scrollx( 0, newword );
break; break;
case 0x16/2: case 0x16/2:
mTilemapInfo.tmap[2]->set_scrolly( 0, newword ); m_c123_TilemapInfo.tmap[2]->set_scrolly( 0, newword );
break; break;
case 0x1a/2: case 0x1a/2:
mTilemapInfo.tmap[3]->set_scrollx( 0, newword ); m_c123_TilemapInfo.tmap[3]->set_scrollx( 0, newword );
break; break;
case 0x1e/2: case 0x1e/2:
mTilemapInfo.tmap[3]->set_scrolly( 0, newword ); m_c123_TilemapInfo.tmap[3]->set_scrolly( 0, newword );
break; break;
} }
} /* SetTilemapControl */ } /* SetTilemapControl */
WRITE16_MEMBER( namcos2_shared_state::c123_tilemap_control_w ) WRITE16_MEMBER( namcos2_shared_state::c123_tilemap_control_w )
{ {
uint16_t newword = mTilemapInfo.control[offset]; uint16_t newword = m_c123_TilemapInfo.control[offset];
COMBINE_DATA( &newword ); COMBINE_DATA( &newword );
SetTilemapControl( offset, newword ); c123_SetTilemapControl( offset, newword );
} }
READ16_MEMBER( namcos2_shared_state::c123_tilemap_control_r ) READ16_MEMBER( namcos2_shared_state::c123_tilemap_control_r )
{ {
return mTilemapInfo.control[offset]; return m_c123_TilemapInfo.control[offset];
} }
@ -350,8 +322,7 @@ void namcos2_shared_state::zdrawgfxzoom(
/* nop */ /* nop */
} }
void void namcos2_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int control )
namcos2_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int control )
{ {
int offset = (control & 0x000f) * (128*4); int offset = (control & 0x000f) * (128*4);
int loop; int loop;

View File

@ -1,6 +1,6 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:R. Belmont, ElSemi // copyright-holders:R. Belmont, ElSemi
/* video/namcofl.c */ /* video/namcofl.cpp */
#include "emu.h" #include "emu.h"
#include "includes/namcoic.h" #include "includes/namcoic.h"
@ -47,7 +47,7 @@ nth_byte32( const uint32_t *pSource, int which )
} /* nth_byte32 */ } /* nth_byte32 */
#endif #endif
static void TilemapCB(running_machine &machine, uint16_t code, int *tile, int *mask ) void namcofl_state::TilemapCB(uint16_t code, int *tile, int *mask)
{ {
*tile = code; *tile = code;
*mask = code; *mask = code;
@ -64,7 +64,7 @@ uint32_t namcofl_state::screen_update_namcofl(screen_device &screen, bitmap_ind1
{ {
c169_roz_draw(screen, bitmap, cliprect, pri); c169_roz_draw(screen, bitmap, cliprect, pri);
if((pri&1)==0) if((pri&1)==0)
namco_tilemap_draw( screen, bitmap, cliprect, pri>>1 ); c123_tilemap_draw( screen, bitmap, cliprect, pri>>1 );
c355_obj_draw(screen, bitmap, cliprect, pri ); c355_obj_draw(screen, bitmap, cliprect, pri );
} }
@ -80,17 +80,16 @@ WRITE32_MEMBER(namcofl_state::namcofl_spritebank_w)
COMBINE_DATA(&m_sprbank); COMBINE_DATA(&m_sprbank);
} }
static int FLobjcode2tile( running_machine &machine, int code ) int namcofl_state::FLobjcode2tile(int code)
{ {
namcofl_state *state = machine.driver_data<namcofl_state>(); if ((code & 0x2000) && (m_sprbank & 2)) { code += 0x4000; }
if ((code & 0x2000) && (state->m_sprbank & 2)) { code += 0x4000; }
return code; return code;
} }
VIDEO_START_MEMBER(namcofl_state,namcofl) VIDEO_START_MEMBER(namcofl_state,namcofl)
{ {
namco_tilemap_init(NAMCOFL_TILEGFX, memregion(NAMCOFL_TILEMASKREGION)->base(), TilemapCB ); c123_tilemap_init(NAMCOFL_TILEGFX, memregion(NAMCOFL_TILEMASKREGION)->base(), namcos2_shared_state::c123_tilemap_delegate(&namcofl_state::TilemapCB, this));
c355_obj_init(NAMCOFL_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(&FLobjcode2tile, &machine())); c355_obj_init(NAMCOFL_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(&namcofl_state::FLobjcode2tile, this));
c169_roz_init(NAMCOFL_ROTGFX,NAMCOFL_ROTMASKREGION); c169_roz_init(NAMCOFL_ROTGFX,NAMCOFL_ROTMASKREGION);
} }

View File

@ -40,24 +40,21 @@ nth_byte32( const uint32_t *pSource, int which )
} }
} /* nth_byte32 */ } /* nth_byte32 */
static void void namconb1_state::NB1TilemapCB(uint16_t code, int *tile, int *mask)
NB1TilemapCB(running_machine &machine, uint16_t code, int *tile, int *mask )
{ {
*tile = code; *tile = code;
*mask = code; *mask = code;
} /* NB1TilemapCB */ } /* NB1TilemapCB */
static void void namconb1_state::NB2TilemapCB(uint16_t code, int *tile, int *mask )
NB2TilemapCB(running_machine &machine, uint16_t code, int *tile, int *mask )
{ {
namconb1_state *state = machine.driver_data<namconb1_state>();
int mangle; int mangle;
if( state->m_gametype == NAMCONB2_MACH_BREAKERS ) if( m_gametype == NAMCONB2_MACH_BREAKERS )
{ {
/* 00010203 04050607 00010203 04050607 (normal) */ /* 00010203 04050607 00010203 04050607 (normal) */
/* 00010718 191a1b07 00010708 090a0b07 (alt bank) */ /* 00010718 191a1b07 00010708 090a0b07 (alt bank) */
int bank = nth_byte32( state->m_tilebank32, (code>>13)+8 ); int bank = nth_byte32( m_tilebank32, (code>>13)+8 );
mangle = (code&0x1fff) + bank*0x2000; mangle = (code&0x1fff) + bank*0x2000;
*tile = mangle; *tile = mangle;
*mask = mangle; *mask = mangle;
@ -84,7 +81,7 @@ void namconb1_state::video_update_common(screen_device &screen, bitmap_ind16 &bi
c169_roz_draw(screen, bitmap, cliprect, pri); c169_roz_draw(screen, bitmap, cliprect, pri);
if( (pri&1)==0 ) if( (pri&1)==0 )
{ {
namco_tilemap_draw( screen, bitmap, cliprect, pri/2 ); c123_tilemap_draw( screen, bitmap, cliprect, pri/2 );
} }
c355_obj_draw(screen, bitmap, cliprect, pri ); c355_obj_draw(screen, bitmap, cliprect, pri );
} }
@ -93,7 +90,7 @@ void namconb1_state::video_update_common(screen_device &screen, bitmap_ind16 &bi
{ {
for( pri=0; pri<8; pri++ ) for( pri=0; pri<8; pri++ )
{ {
namco_tilemap_draw( screen, bitmap, cliprect, pri ); c123_tilemap_draw( screen, bitmap, cliprect, pri );
c355_obj_draw(screen, bitmap, cliprect, pri ); c355_obj_draw(screen, bitmap, cliprect, pri );
} }
} }
@ -128,7 +125,7 @@ int namconb1_state::NB1objcode2tile( int code )
VIDEO_START_MEMBER(namconb1_state,namconb1) VIDEO_START_MEMBER(namconb1_state,namconb1)
{ {
namco_tilemap_init(NAMCONB1_TILEGFX, memregion(NAMCONB1_TILEMASKREGION)->base(), NB1TilemapCB ); c123_tilemap_init(NAMCONB1_TILEGFX, memregion(NAMCONB1_TILEMASKREGION)->base(), namcos2_shared_state::c123_tilemap_delegate(&namconb1_state::NB1TilemapCB, this));
c355_obj_init(NAMCONB1_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(&namconb1_state::NB1objcode2tile, this)); c355_obj_init(NAMCONB1_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(&namconb1_state::NB1objcode2tile, this));
save_item(NAME(m_tilemap_tile_bank)); save_item(NAME(m_tilemap_tile_bank));
@ -152,7 +149,7 @@ uint32_t namconb1_state::screen_update_namconb2(screen_device &screen, bitmap_in
if( memcmp(m_tilemap_tile_bank,m_tilebank32,sizeof(m_tilemap_tile_bank))!=0 ) if( memcmp(m_tilemap_tile_bank,m_tilebank32,sizeof(m_tilemap_tile_bank))!=0 )
{ {
namco_tilemap_invalidate(); c123_tilemap_invalidate();
memcpy(m_tilemap_tile_bank,m_tilebank32,sizeof(m_tilemap_tile_bank)); memcpy(m_tilemap_tile_bank,m_tilebank32,sizeof(m_tilemap_tile_bank));
} }
video_update_common( screen, bitmap, clip, 1 ); video_update_common( screen, bitmap, clip, 1 );
@ -186,7 +183,7 @@ int namconb1_state::NB2objcode2tile( int code )
VIDEO_START_MEMBER(namconb1_state,namconb2) VIDEO_START_MEMBER(namconb1_state,namconb2)
{ {
namco_tilemap_init(NAMCONB1_TILEGFX, memregion(NAMCONB1_TILEMASKREGION)->base(), NB2TilemapCB ); c123_tilemap_init(NAMCONB1_TILEGFX, memregion(NAMCONB1_TILEMASKREGION)->base(), namcos2_shared_state::c123_tilemap_delegate(&namconb1_state::NB2TilemapCB, this));
c355_obj_init(NAMCONB1_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(&namconb1_state::NB2objcode2tile, this)); c355_obj_init(NAMCONB1_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(&namconb1_state::NB2objcode2tile, this));
c169_roz_init(NAMCONB1_ROTGFX,NAMCONB1_ROTMASKREGION); c169_roz_init(NAMCONB1_ROTGFX,NAMCONB1_ROTMASKREGION);

View File

@ -7,14 +7,11 @@
#include "includes/namcos2.h" #include "includes/namcos2.h"
#include "includes/namcoic.h" #include "includes/namcoic.h"
static void void namcos2_state::TilemapCB(uint16_t code, int *tile, int *mask)
TilemapCB( running_machine &machine, uint16_t code, int *tile, int *mask )
//void namcos2_shared_state::tilemap_cb(uint16_t code, int *tile, int *mask)
{ {
*mask = code; *mask = code;
namcos2_shared_state *state = machine.driver_data<namcos2_shared_state>(); switch( m_gametype )
switch( state->m_gametype )
{ {
case NAMCOS2_FINAL_LAP_2: case NAMCOS2_FINAL_LAP_2:
case NAMCOS2_FINAL_LAP_3: case NAMCOS2_FINAL_LAP_3:
@ -401,7 +398,7 @@ void namcos2_state::draw_sprite_init()
void namcos2_state::video_start() void namcos2_state::video_start()
{ {
namco_tilemap_init(2, memregion("gfx4")->base(), TilemapCB); c123_tilemap_init(2, memregion("gfx4")->base(), namcos2_shared_state::c123_tilemap_delegate(&namcos2_state::TilemapCB, this));
m_tilemap_roz = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_state::roz_tile_info), this), TILEMAP_SCAN_ROWS, 8,8,256,256); m_tilemap_roz = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_state::roz_tile_info), this), TILEMAP_SCAN_ROWS, 8,8,256,256);
m_tilemap_roz->set_transparent_pen(0xff); m_tilemap_roz->set_transparent_pen(0xff);
draw_sprite_init(); draw_sprite_init();
@ -433,7 +430,7 @@ uint32_t namcos2_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
{ {
if( (pri&1)==0 ) if( (pri&1)==0 )
{ {
namco_tilemap_draw( screen, bitmap, clip, pri/2 ); c123_tilemap_draw( screen, bitmap, clip, pri/2 );
if( ((m_gfx_ctrl & 0x7000) >> 12)==pri/2 ) if( ((m_gfx_ctrl & 0x7000) >> 12)==pri/2 )
{ {
@ -449,7 +446,7 @@ uint32_t namcos2_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
void namcos2_state::video_start_finallap() void namcos2_state::video_start_finallap()
{ {
namco_tilemap_init(2,memregion("gfx4")->base(),TilemapCB); c123_tilemap_init(2,memregion("gfx4")->base(),namcos2_shared_state::c123_tilemap_delegate(&namcos2_state::TilemapCB, this));
draw_sprite_init(); draw_sprite_init();
} }
@ -466,7 +463,7 @@ uint32_t namcos2_state::screen_update_finallap(screen_device &screen, bitmap_ind
{ {
if( (pri&1)==0 ) if( (pri&1)==0 )
{ {
namco_tilemap_draw( screen, bitmap, clip, pri/2 ); c123_tilemap_draw( screen, bitmap, clip, pri/2 );
} }
m_c45_road->draw(bitmap,clip,pri); m_c45_road->draw(bitmap,clip,pri);
draw_sprites(screen,bitmap,clip,pri,m_gfx_ctrl ); draw_sprites(screen,bitmap,clip,pri,m_gfx_ctrl );
@ -478,7 +475,7 @@ uint32_t namcos2_state::screen_update_finallap(screen_device &screen, bitmap_ind
void namcos2_state::video_start_luckywld() void namcos2_state::video_start_luckywld()
{ {
namco_tilemap_init(2,memregion("gfx4")->base(),TilemapCB); c123_tilemap_init(2,memregion("gfx4")->base(),namcos2_shared_state::c123_tilemap_delegate(&namcos2_state::TilemapCB, this));
c355_obj_init( 0, 0x0, namcos2_shared_state::c355_obj_code2tile_delegate() ); c355_obj_init( 0, 0x0, namcos2_shared_state::c355_obj_code2tile_delegate() );
if( m_gametype==NAMCOS2_LUCKY_AND_WILD ) if( m_gametype==NAMCOS2_LUCKY_AND_WILD )
{ {
@ -499,7 +496,7 @@ uint32_t namcos2_state::screen_update_luckywld(screen_device &screen, bitmap_ind
{ {
if( (pri&1)==0 ) if( (pri&1)==0 )
{ {
namco_tilemap_draw( screen, bitmap, clip, pri/2 ); c123_tilemap_draw( screen, bitmap, clip, pri/2 );
} }
m_c45_road->draw(bitmap,clip,pri); m_c45_road->draw(bitmap,clip,pri);
if( m_gametype==NAMCOS2_LUCKY_AND_WILD ) if( m_gametype==NAMCOS2_LUCKY_AND_WILD )
@ -515,7 +512,7 @@ uint32_t namcos2_state::screen_update_luckywld(screen_device &screen, bitmap_ind
void namcos2_state::video_start_sgunner() void namcos2_state::video_start_sgunner()
{ {
namco_tilemap_init(2,memregion("gfx4")->base(),TilemapCB); c123_tilemap_init(2,memregion("gfx4")->base(),namcos2_shared_state::c123_tilemap_delegate(&namcos2_state::TilemapCB, this));
c355_obj_init( 0, 0x0, namcos2_shared_state::c355_obj_code2tile_delegate() ); c355_obj_init( 0, 0x0, namcos2_shared_state::c355_obj_code2tile_delegate() );
} }
@ -530,7 +527,7 @@ uint32_t namcos2_state::screen_update_sgunner(screen_device &screen, bitmap_ind1
for( pri=0; pri<8; pri++ ) for( pri=0; pri<8; pri++ )
{ {
namco_tilemap_draw( screen, bitmap, clip, pri ); c123_tilemap_draw( screen, bitmap, clip, pri );
c355_obj_draw(screen, bitmap, clip, pri ); c355_obj_draw(screen, bitmap, clip, pri );
} }
return 0; return 0;
@ -541,7 +538,7 @@ uint32_t namcos2_state::screen_update_sgunner(screen_device &screen, bitmap_ind1
void namcos2_state::video_start_metlhawk() void namcos2_state::video_start_metlhawk()
{ {
namco_tilemap_init(2,memregion("gfx4")->base(),TilemapCB); c123_tilemap_init(2,memregion("gfx4")->base(),namcos2_shared_state::c123_tilemap_delegate(&namcos2_state::TilemapCB, this));
c169_roz_init(1, "gfx5"); c169_roz_init(1, "gfx5");
} }
@ -558,7 +555,7 @@ uint32_t namcos2_state::screen_update_metlhawk(screen_device &screen, bitmap_ind
{ {
if( (pri&1)==0 ) if( (pri&1)==0 )
{ {
namco_tilemap_draw( screen, bitmap, clip, pri/2 ); c123_tilemap_draw( screen, bitmap, clip, pri/2 );
} }
c169_roz_draw(screen, bitmap, clip, pri); c169_roz_draw(screen, bitmap, clip, pri);
draw_sprites_metalhawk(screen,bitmap,clip,pri ); draw_sprites_metalhawk(screen,bitmap,clip,pri );