summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2017-04-12 18:46:31 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2017-04-12 18:46:31 +0200
commit89b5f23499b53c81a7e7948e26a01c4a74ac5463 (patch)
tree3294d87339b83b81e7123c76227ee3ba085fff40
parentf7af97c49774b795848324f484eade541f790ee3 (diff)
namcofl.cpp: killed anonymous timers, moved to configured banking, added save state support. Also moved some remaining functions inside the class (nw)
-rw-r--r--src/devices/cpu/i960/i960.cpp1
-rw-r--r--src/mame/drivers/namcofl.cpp60
-rw-r--r--src/mame/includes/namcofl.h8
-rw-r--r--src/mame/includes/namcoic.h4
-rw-r--r--src/mame/includes/namconb1.h2
-rw-r--r--src/mame/includes/namcos2.h33
-rw-r--r--src/mame/machine/namcoic.cpp151
-rw-r--r--src/mame/video/namcofl.cpp15
-rw-r--r--src/mame/video/namconb1.cpp21
-rw-r--r--src/mame/video/namcos2.cpp27
10 files changed, 157 insertions, 165 deletions
diff --git a/src/devices/cpu/i960/i960.cpp b/src/devices/cpu/i960/i960.cpp
index 1aec8b3b115..73b722c98ef 100644
--- a/src/devices/cpu/i960/i960.cpp
+++ b/src/devices/cpu/i960/i960.cpp
@@ -2112,6 +2112,7 @@ void i960_cpu_device::device_start()
save_item(NAME(m_immediate_irq));
save_item(NAME(m_immediate_vector));
save_item(NAME(m_immediate_pri));
+ save_item(NAME(m_bursting));
state_add( I960_SAT, "sat", m_SAT).formatstr("%08X");
state_add( I960_PRCB, "prcb", m_PRCB).formatstr("%08X");
diff --git a/src/mame/drivers/namcofl.cpp b/src/mame/drivers/namcofl.cpp
index c42cae2be32..4e8a0598383 100644
--- a/src/mame/drivers/namcofl.cpp
+++ b/src/mame/drivers/namcofl.cpp
@@ -191,13 +191,13 @@ WRITE32_MEMBER(namcofl_state::namcofl_sysreg_w)
{
if (data == 0) // RAM at 00000000, ROM at 10000000
{
- membank("bank1")->set_base(m_workram.get());
- membank("bank2")->set_base(memregion("maincpu")->base() );
+ membank("bank1")->set_entry(1);
+ membank("bank2")->set_entry(1);
}
else // ROM at 00000000, RAM at 10000000
{
- membank("bank1")->set_base(memregion("maincpu")->base() );
- membank("bank2")->set_base(m_workram.get());
+ membank("bank1")->set_entry(0);
+ 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 )
AM_RANGE(0x00000000, 0x000fffff) AM_RAMBANK("bank1")
AM_RANGE(0x10000000, 0x100fffff) AM_RAMBANK("bank2")
AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_REGION("data", 0)
AM_RANGE(0x30000000, 0x30001fff) AM_RAM AM_SHARE("nvram") /* nvram */
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(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)
@@ -528,14 +515,14 @@ GFXDECODE_END
TIMER_CALLBACK_MEMBER(namcofl_state::network_interrupt_callback)
{
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)
{
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)
{
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().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));
- 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));
-
- membank("bank1")->set_base(memregion("maincpu")->base() );
- membank("bank2")->set_base(m_workram.get() );
+ m_network_interrupt_timer->adjust(m_screen->time_until_pos(m_screen->visible_area().max_y + 3));
+ m_vblank_interrupt_timer->adjust(m_screen->time_until_pos(m_screen->visible_area().max_y + 1));
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()
{
m_workram = std::make_unique<uint32_t[]>(0x100000/4);
+ save_pointer(NAME(m_workram.get()), 0x100000/4),
- membank("bank1")->set_base(memregion("maincpu")->base() );
- membank("bank2")->set_base(m_workram.get());
+ save_item(NAME(m_mcu_port6));
+ save_item(NAME(m_sprbank));
}
DRIVER_INIT_MEMBER(namcofl_state,speedrcr)
@@ -811,7 +809,7 @@ DRIVER_INIT_MEMBER(namcofl_state,finalapr)
m_gametype = NAMCOFL_FINAL_LAP_R;
}
-GAME ( 1995, speedrcr, 0, namcofl, speedrcr, namcofl_state, speedrcr, ROT0, "Namco", "Speed Racer", MACHINE_IMPERFECT_GRAPHICS )
-GAMEL( 1995, finalapr, 0, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Rev. B)", 0, layout_namcofl )
-GAMEL( 1995, finalapro, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R", 0, layout_namcofl )
-GAMEL( 1995, finalaprj, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Japan Rev. C)", 0, layout_namcofl )
+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)", MACHINE_SUPPORTS_SAVE, 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)", MACHINE_SUPPORTS_SAVE, layout_namcofl )
diff --git a/src/mame/includes/namcofl.h b/src/mame/includes/namcofl.h
index acf2f54cefc..ad11303c9b3 100644
--- a/src/mame/includes/namcofl.h
+++ b/src/mame/includes/namcofl.h
@@ -33,7 +33,7 @@ public:
m_accel(*this, "ACCEL"),
m_brake(*this, "BRAKE"),
m_wheel(*this, "WHEEL"),
- m_shareram(*this, "shareram") { }
+ m_shareram(*this, "shareram", 32) { }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_mcu;
@@ -46,6 +46,8 @@ public:
optional_ioport m_brake;
optional_ioport m_wheel;
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;
required_shared_ptr<uint16_t> m_shareram;
uint8_t m_mcu_port6;
@@ -56,8 +58,6 @@ public:
DECLARE_READ32_MEMBER(namcofl_sysreg_r);
DECLARE_WRITE32_MEMBER(namcofl_sysreg_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_READ8_MEMBER(port6_r);
DECLARE_WRITE8_MEMBER(port6_w);
@@ -84,4 +84,6 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(mcu_irq2_cb);
TIMER_DEVICE_CALLBACK_MEMBER(mcu_adc_cb);
void common_init();
+ int FLobjcode2tile(int code);
+ void TilemapCB(uint16_t code, int *tile, int *mask);
};
diff --git a/src/mame/includes/namcoic.h b/src/mame/includes/namcoic.h
index c4695444785..7a74112b3b1 100644
--- a/src/mame/includes/namcoic.h
+++ b/src/mame/includes/namcoic.h
@@ -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 );
/***********************************************************************************/
diff --git a/src/mame/includes/namconb1.h b/src/mame/includes/namconb1.h
index e484888e9fe..7834741df7f 100644
--- a/src/mame/includes/namconb1.h
+++ b/src/mame/includes/namconb1.h
@@ -119,4 +119,6 @@ public:
int NB1objcode2tile(int code);
int NB2objcode2tile(int code);
+ void NB1TilemapCB(uint16_t code, int *tile, int *mask);
+ void NB2TilemapCB(uint16_t code, int *tile, int *mask);
};
diff --git a/src/mame/includes/namcos2.h b/src/mame/includes/namcos2.h
index 13393afe5f7..2d694fa5a36 100644
--- a/src/mame/includes/namcos2.h
+++ b/src/mame/includes/namcos2.h
@@ -94,7 +94,6 @@ enum
NAMCOFL_FINAL_LAP_R
};
-
// fix me -- most of this should be devices eventually
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_info4 );
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
public:
@@ -357,6 +385,7 @@ public:
void GollyGhostUpdateLED_c8( int data );
void GollyGhostUpdateLED_ca( int data );
void GollyGhostUpdateDiorama_c0( int data );
+ void TilemapCB(uint16_t code, int *tile, int *mask);
};
diff --git a/src/mame/machine/namcoic.cpp b/src/mame/machine/namcoic.cpp
index 663e918902c..89edb72d9bd 100644
--- a/src/mame/machine/namcoic.cpp
+++ b/src/mame/machine/namcoic.cpp
@@ -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( i=0; i<6; i++ )
+ for( int i = 0; i < 6; i++ )
{
- mTilemapInfo.tmap[i]->mark_all_dirty();
+ m_c123_TilemapInfo.tmap[i]->mark_all_dirty();
}
} /* namco_tilemap_invalidate */
inline void namcos2_shared_state::namcoic_get_tile_info(tile_data &tileinfo,int tile_index,uint16_t *vram)
{
int tile, mask;
- mTilemapInfo.cb( machine(), vram[tile_index], &tile, &mask );
- tileinfo.mask_data = mTilemapInfo.maskBaseAddr+mask*8;
- SET_TILE_INFO_MEMBER(mTilemapInfo.gfxbank,tile,0,0);
+ m_c123_TilemapInfo.cb( vram[tile_index], &tile, &mask );
+ tileinfo.mask_data = m_c123_TilemapInfo.maskBaseAddr+mask*8;
+ SET_TILE_INFO_MEMBER(m_c123_TilemapInfo.gfxbank,tile,0,0);
} /* 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_info1 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.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_info3 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.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_info5 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.videoram[0x4408]); }
+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,&m_c123_TilemapInfo.videoram[0x1000]); }
+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,&m_c123_TilemapInfo.videoram[0x3000]); }
+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,&m_c123_TilemapInfo.videoram[0x4408]); }
-void namcos2_shared_state::namco_tilemap_init( int gfxbank, void *maskBaseAddr,
- void (*cb)( running_machine &machine, uint16_t code, int *gfx, int *mask) )
+void namcos2_shared_state::c123_tilemap_init( int gfxbank, void *maskBaseAddr, c123_tilemap_delegate tilemap_cb )
{
- int i;
- mTilemapInfo.gfxbank = gfxbank;
- mTilemapInfo.maskBaseAddr = (uint8_t *)maskBaseAddr;
- mTilemapInfo.cb = cb;
- mTilemapInfo.videoram = std::make_unique<uint16_t[]>( 0x10000 );
+ m_c123_TilemapInfo.gfxbank = gfxbank;
+ m_c123_TilemapInfo.maskBaseAddr = (uint8_t *)maskBaseAddr;
+ m_c123_TilemapInfo.cb = tilemap_cb;
+ m_c123_TilemapInfo.videoram = std::make_unique<uint16_t[]>( 0x10000 );
/* 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);
- 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);
- 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);
- 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[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[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[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[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 */
- 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);
- 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[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[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 */
- for( i=0; i<4; i++ )
+ for( int i = 0; i < 4; i++ )
{
static const int adj[4] = { 4,2,1,0 };
int dx = 44+adj[i];
- mTilemapInfo.tmap[i]->set_scrolldx( -dx, 288+dx );
- mTilemapInfo.tmap[i]->set_scrolldy( -24, 224+24 );
+ m_c123_TilemapInfo.tmap[i]->set_scrolldx( -dx, 288+dx );
+ m_c123_TilemapInfo.tmap[i]->set_scrolldy( -24, 224+24 );
}
- save_item(NAME(mTilemapInfo.control));
- save_pointer(NAME(mTilemapInfo.videoram.get()), 0x10000);
-} /* namco_tilemap_init */
+ save_item(NAME(m_c123_TilemapInfo.control));
+ save_pointer(NAME(m_c123_TilemapInfo.videoram.get()), 0x10000);
+}
-void
-namco_tilemap_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
+void namcos2_shared_state::c123_tilemap_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
- int i;
- for( i=0; i<6; i++ )
+ for( int i = 0; i < 6; i++ )
{
/* 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;
- mTilemapInfo.tmap[i]->set_palette_offset( color*256 );
- mTilemapInfo.tmap[i]->draw(screen, bitmap,cliprect,0,0);
+ int color = m_c123_TilemapInfo.control[0x30/2+i] & 0x07;
+ m_c123_TilemapInfo.tmap[i]->set_palette_offset( color*256 );
+ m_c123_TilemapInfo.tmap[i]->draw(screen, bitmap,cliprect,0,0);
}
}
-} /* namco_tilemap_draw */
+} /* c123_tilemap_draw */
-static void
-SetTilemapVideoram( int offset, uint16_t newword )
+void namcos2_shared_state::c123_SetTilemapVideoram(int offset, uint16_t newword)
{
- mTilemapInfo.videoram[offset] = newword;
+ m_c123_TilemapInfo.videoram[offset] = newword;
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 )
{ /* fixed plane#1 */
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 )
{ /* fixed plane#2 */
offset-=0x8810/2;
- mTilemapInfo.tmap[5]->mark_tile_dirty( offset );
+ m_c123_TilemapInfo.tmap[5]->mark_tile_dirty( offset );
}
} /* SetTilemapVideoram */
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 );
- SetTilemapVideoram( offset, newword );
+ c123_SetTilemapVideoram( offset, newword );
}
READ16_MEMBER( namcos2_shared_state::c123_tilemap_videoram_r )
{
- return mTilemapInfo.videoram[offset];
+ return m_c123_TilemapInfo.videoram[offset];
}
-static void
-SetTilemapControl( int offset, uint16_t newword )
+void namcos2_shared_state::c123_SetTilemapControl(int offset, uint16_t newword)
{
- mTilemapInfo.control[offset] = newword;
+ m_c123_TilemapInfo.control[offset] = newword;
if( offset<0x20/2 )
{
if( offset == 0x02/2 )
@@ -145,54 +117,54 @@ SetTilemapControl( int offset, uint16_t newword )
int i;
for( i=0; i<=5; i++ )
{
- mTilemapInfo.tmap[i]->set_flip(attrs);
+ m_c123_TilemapInfo.tmap[i]->set_flip(attrs);
}
}
}
newword &= 0x1ff;
- if( mTilemapInfo.control[0x02/2]&0x8000 )
+ if( m_c123_TilemapInfo.control[0x02/2]&0x8000 )
{
newword = -newword;
}
switch( offset )
{
case 0x02/2:
- mTilemapInfo.tmap[0]->set_scrollx( 0, newword );
+ m_c123_TilemapInfo.tmap[0]->set_scrollx( 0, newword );
break;
case 0x06/2:
- mTilemapInfo.tmap[0]->set_scrolly( 0, newword );
+ m_c123_TilemapInfo.tmap[0]->set_scrolly( 0, newword );
break;
case 0x0a/2:
- mTilemapInfo.tmap[1]->set_scrollx( 0, newword );
+ m_c123_TilemapInfo.tmap[1]->set_scrollx( 0, newword );
break;
case 0x0e/2:
- mTilemapInfo.tmap[1]->set_scrolly( 0, newword );
+ m_c123_TilemapInfo.tmap[1]->set_scrolly( 0, newword );
break;
case 0x12/2:
- mTilemapInfo.tmap[2]->set_scrollx( 0, newword );
+ m_c123_TilemapInfo.tmap[2]->set_scrollx( 0, newword );
break;
case 0x16/2:
- mTilemapInfo.tmap[2]->set_scrolly( 0, newword );
+ m_c123_TilemapInfo.tmap[2]->set_scrolly( 0, newword );
break;
case 0x1a/2:
- mTilemapInfo.tmap[3]->set_scrollx( 0, newword );
+ m_c123_TilemapInfo.tmap[3]->set_scrollx( 0, newword );
break;
case 0x1e/2:
- mTilemapInfo.tmap[3]->set_scrolly( 0, newword );
+ m_c123_TilemapInfo.tmap[3]->set_scrolly( 0, newword );
break;
}
} /* SetTilemapControl */
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 );
- SetTilemapControl( offset, newword );
+ c123_SetTilemapControl( offset, newword );
}
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 */
}
-void
-namcos2_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int control )
+void namcos2_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int control )
{
int offset = (control & 0x000f) * (128*4);
int loop;
diff --git a/src/mame/video/namcofl.cpp b/src/mame/video/namcofl.cpp
index 4f9267c0a77..8aebd020598 100644
--- a/src/mame/video/namcofl.cpp
+++ b/src/mame/video/namcofl.cpp
@@ -1,6 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont, ElSemi
-/* video/namcofl.c */
+/* video/namcofl.cpp */
#include "emu.h"
#include "includes/namcoic.h"
@@ -47,7 +47,7 @@ nth_byte32( const uint32_t *pSource, int which )
} /* nth_byte32 */
#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;
*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);
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 );
}
@@ -80,17 +80,16 @@ WRITE32_MEMBER(namcofl_state::namcofl_spritebank_w)
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) && (state->m_sprbank & 2)) { code += 0x4000; }
+ if ((code & 0x2000) && (m_sprbank & 2)) { code += 0x4000; }
return code;
}
VIDEO_START_MEMBER(namcofl_state,namcofl)
{
- namco_tilemap_init(NAMCOFL_TILEGFX, memregion(NAMCOFL_TILEMASKREGION)->base(), TilemapCB );
- c355_obj_init(NAMCOFL_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(&FLobjcode2tile, &machine()));
+ 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(&namcofl_state::FLobjcode2tile, this));
c169_roz_init(NAMCOFL_ROTGFX,NAMCOFL_ROTMASKREGION);
}
diff --git a/src/mame/video/namconb1.cpp b/src/mame/video/namconb1.cpp
index a51794ad84e..6c52af6bb61 100644
--- a/src/mame/video/namconb1.cpp
+++ b/src/mame/video/namconb1.cpp
@@ -40,24 +40,21 @@ nth_byte32( const uint32_t *pSource, int which )
}
} /* nth_byte32 */
-static void
-NB1TilemapCB(running_machine &machine, uint16_t code, int *tile, int *mask )
+void namconb1_state::NB1TilemapCB(uint16_t code, int *tile, int *mask)
{
*tile = code;
*mask = code;
} /* NB1TilemapCB */
-static void
-NB2TilemapCB(running_machine &machine, uint16_t code, int *tile, int *mask )
+void namconb1_state::NB2TilemapCB(uint16_t code, int *tile, int *mask )
{
- namconb1_state *state = machine.driver_data<namconb1_state>();
int mangle;
- if( state->m_gametype == NAMCONB2_MACH_BREAKERS )
+ if( m_gametype == NAMCONB2_MACH_BREAKERS )
{
/* 00010203 04050607 00010203 04050607 (normal) */
/* 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;
*tile = 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);
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 );
}
@@ -93,7 +90,7 @@ void namconb1_state::video_update_common(screen_device &screen, bitmap_ind16 &bi
{
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 );
}
}
@@ -128,7 +125,7 @@ int namconb1_state::NB1objcode2tile( int code )
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));
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 )
{
- namco_tilemap_invalidate();
+ c123_tilemap_invalidate();
memcpy(m_tilemap_tile_bank,m_tilebank32,sizeof(m_tilemap_tile_bank));
}
video_update_common( screen, bitmap, clip, 1 );
@@ -186,7 +183,7 @@ int namconb1_state::NB2objcode2tile( int code )
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));
c169_roz_init(NAMCONB1_ROTGFX,NAMCONB1_ROTMASKREGION);
diff --git a/src/mame/video/namcos2.cpp b/src/mame/video/namcos2.cpp
index ea036dd33d8..409c4e43dc4 100644
--- a/src/mame/video/namcos2.cpp
+++ b/src/mame/video/namcos2.cpp
@@ -7,14 +7,11 @@
#include "includes/namcos2.h"
#include "includes/namcoic.h"
-static void
-TilemapCB( running_machine &machine, uint16_t code, int *tile, int *mask )
-//void namcos2_shared_state::tilemap_cb(uint16_t code, int *tile, int *mask)
+void namcos2_state::TilemapCB(uint16_t code, int *tile, int *mask)
{
*mask = code;
- namcos2_shared_state *state = machine.driver_data<namcos2_shared_state>();
- switch( state->m_gametype )
+ switch( m_gametype )
{
case NAMCOS2_FINAL_LAP_2:
case NAMCOS2_FINAL_LAP_3:
@@ -401,7 +398,7 @@ void namcos2_state::draw_sprite_init()
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->set_transparent_pen(0xff);
draw_sprite_init();
@@ -433,7 +430,7 @@ uint32_t namcos2_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
{
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 )
{
@@ -449,7 +446,7 @@ uint32_t namcos2_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
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();
}
@@ -466,7 +463,7 @@ uint32_t namcos2_state::screen_update_finallap(screen_device &screen, bitmap_ind
{
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);
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()
{
- 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() );
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 )
{
- namco_tilemap_draw( screen, bitmap, clip, pri/2 );
+ c123_tilemap_draw( screen, bitmap, clip, pri/2 );
}
m_c45_road->draw(bitmap,clip,pri);
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()
{
- 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() );
}
@@ -530,7 +527,7 @@ uint32_t namcos2_state::screen_update_sgunner(screen_device &screen, bitmap_ind1
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 );
}
return 0;
@@ -541,7 +538,7 @@ uint32_t namcos2_state::screen_update_sgunner(screen_device &screen, bitmap_ind1
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");
}
@@ -558,7 +555,7 @@ uint32_t namcos2_state::screen_update_metlhawk(screen_device &screen, bitmap_ind
{
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);
draw_sprites_metalhawk(screen,bitmap,clip,pri );