summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/topspeed.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/topspeed.cpp')
-rw-r--r--src/mame/drivers/topspeed.cpp113
1 files changed, 51 insertions, 62 deletions
diff --git a/src/mame/drivers/topspeed.cpp b/src/mame/drivers/topspeed.cpp
index 9288b234e1e..0c4098fc03b 100644
--- a/src/mame/drivers/topspeed.cpp
+++ b/src/mame/drivers/topspeed.cpp
@@ -177,7 +177,7 @@ From JP manual
CPU CONTROL
**********************************************************/
-WRITE16_MEMBER(topspeed_state::cpua_ctrl_w)
+void topspeed_state::cpua_ctrl_w(u16 data)
{
// Written only twice; once on startup at 0x00 then 0xc3 after init
m_cpua_ctrl = data;
@@ -188,11 +188,11 @@ WRITE16_MEMBER(topspeed_state::cpua_ctrl_w)
GAME INPUTS
**********************************************************/
-READ8_MEMBER(topspeed_state::input_bypass_r)
+u8 topspeed_state::input_bypass_r()
{
// Read port number
- uint8_t port = m_tc0040ioc->port_r();
- uint16_t steer = 0xff80 + m_steer.read_safe(0);
+ const u8 port = m_tc0040ioc->port_r();
+ const u16 steer = 0xff80 + m_steer.read_safe(0);
switch (port)
{
@@ -209,14 +209,14 @@ READ8_MEMBER(topspeed_state::input_bypass_r)
CUSTOM_INPUT_MEMBER(topspeed_state::pedal_r)
{
- static const uint8_t retval[8] = { 0,1,3,2,6,7,5,4 };
+ static const u8 retval[8] = { 0,1,3,2,6,7,5,4 };
ioport_port *port = ioport((const char *)param);
return retval[port != nullptr ? port->read() & 7 : 0];
}
// TODO: proper motorcpu hook-up
-READ16_MEMBER(topspeed_state::motor_r)
+u16 topspeed_state::motor_r(offs_t offset)
{
switch (offset)
{
@@ -244,13 +244,13 @@ READ16_MEMBER(topspeed_state::motor_r)
}
}
-WRITE16_MEMBER(topspeed_state::motor_w)
+void topspeed_state::motor_w(offs_t offset, u16 data)
{
// Writes $900000-25 and $900200-219
logerror("CPU #0 PC %06x: warning - write %04x to motor cpu %03x\n", m_subcpu->pc(), data, offset);
}
-WRITE8_MEMBER(topspeed_state::coins_w)
+void topspeed_state::coins_w(u8 data)
{
machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
@@ -268,7 +268,7 @@ void topspeed_state::msm5205_update(int chip)
if (m_msm_reset[chip])
return;
- uint8_t data = m_msm_rom[chip][m_msm_pos[chip]];
+ const u8 data = m_msm_rom[chip][m_msm_pos[chip]];
m_msm[chip]->write_data((m_msm_nibble[chip] ? data : data >> 4) & 0xf);
@@ -283,7 +283,7 @@ WRITE_LINE_MEMBER(topspeed_state::msm5205_1_vck)
msm5205_update(0);
}
-WRITE8_MEMBER(topspeed_state::msm5205_command_w)
+void topspeed_state::msm5205_command_w(offs_t offset, u8 data)
{
int chip = (offset >> 12) & 1;
@@ -317,7 +317,7 @@ WRITE8_MEMBER(topspeed_state::msm5205_command_w)
}
}
-WRITE8_MEMBER(topspeed_state::volume_w)
+void topspeed_state::volume_w(offs_t offset, u8 data)
{
// The volume is controlled by two Taito TC0060DCA hybrid volume modules
filter_volume_device *filter = nullptr;
@@ -345,7 +345,7 @@ WRITE_LINE_MEMBER(topspeed_state::z80ctc_to0)
else
{
// Update on falling edge of /VCK
- uint16_t oldpos = m_msm_pos[1];
+ u16 oldpos = m_msm_pos[1];
msm5205_update(1);
@@ -511,26 +511,15 @@ static const gfx_layout tile16x8_layout =
16,8, // 16*8 sprites
RGN_FRAC(1,1),
4, // 4 bits per pixel
- { STEP4(0,8) },
- { STEP8(8*4,1), STEP8(0,1) },
- { STEP8(0,8*4*2) },
+ { STEP4(0,16) },
+ { STEP16(0,1) },
+ { STEP8(0,16*4) },
16*8*4 // every sprite takes 64 consecutive bytes
};
-static const gfx_layout charlayout =
-{
- 8,8, // 8*8 characters
- RGN_FRAC(1,1),
- 4, // 4 bits per pixel
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,4*8) },
- 8*8*4 // every sprite takes 32 consecutive bytes
-};
-
static GFXDECODE_START( gfx_topspeed )
- GFXDECODE_ENTRY( "gfx2", 0x0, tile16x8_layout, 0, 256 ) // Sprite parts
- GFXDECODE_ENTRY( "gfx1", 0x0, charlayout, 0, 512 ) // Sprites & playfield
+ GFXDECODE_ENTRY( "sprites", 0x0, tile16x8_layout, 0, 256 ) // Sprite parts
+ GFXDECODE_ENTRY( "pc080sn", 0x0, gfx_8x8x4_packed_msb, 0, 512 ) // Playfield
// Road Lines gfxdecodable ?
GFXDECODE_END
@@ -541,8 +530,8 @@ GFXDECODE_END
void topspeed_state::machine_start()
{
- membank("sndbank")->configure_entry(0, memregion("audiocpu")->base() + 0x10000);
- membank("sndbank")->configure_entries(1, 3, memregion("audiocpu")->base() + 0x4000, 0x4000);
+ m_sndbank->configure_entry(0, memregion("audiocpu")->base() + 0x10000);
+ m_sndbank->configure_entries(1, 3, memregion("audiocpu")->base() + 0x4000, 0x4000);
save_item(NAME(m_cpua_ctrl));
save_item(NAME(m_ioc220_port));
@@ -613,7 +602,7 @@ void topspeed_state::topspeed(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(topspeed_state::screen_update_topspeed));
+ screen.set_screen_update(FUNC(topspeed_state::screen_update));
screen.set_palette("palette");
GFXDECODE(config, m_gfxdecode, "palette", gfx_topspeed);
@@ -625,7 +614,7 @@ void topspeed_state::topspeed(machine_config &config)
ym2151_device &ymsnd(YM2151(config, "ymsnd", 16_MHz_XTAL / 4));
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
- ymsnd.port_write_handler().set_membank("sndbank").mask(0x03);
+ ymsnd.port_write_handler().set_membank(m_sndbank).mask(0x03);
ymsnd.add_route(0, "filter1l", 1.0);
ymsnd.add_route(1, "filter1r", 1.0);
@@ -673,30 +662,30 @@ ROM_START( topspeed )
ROM_REGION( 0x8000, "motorcpu", 0 )
ROM_LOAD( "27c256.ic17", 0x0000, 0x8000, CRC(e52dfee1) SHA1(6e58e18eb2de3c899b950a4307ea21cd23683657) )
- ROM_REGION( 0x40000, "gfx1", 0 ) // SCR tiles
+ ROM_REGION( 0x40000, "pc080sn", 0 ) // SCR tiles
ROM_LOAD16_BYTE( "b14-06.52", 0x000000, 0x20000, CRC(b4e2536e) SHA1(c1960ee25b37b1444ec99082521c4858edcf3484) )
ROM_LOAD16_BYTE( "b14-07.54", 0x000001, 0x20000, CRC(c6025fff) SHA1(439ed85b0160bfd6c06fd42990124a292b2e3c14) )
- ROM_REGION( 0x200000, "gfx2", 0 )
- ROM_LOAD64_BYTE( "b14-48.16", 0x000003, 0x20000, CRC(30c7f265) SHA1(3e52e2aabf2c456d0b57d9414f99bd942bafc887) ) // OBJ, bitplane 3
- ROM_LOAD64_BYTE( "b14-49.12", 0x100003, 0x20000, CRC(32ba4265) SHA1(f468243d923726b7eff78d9bc55a3a092f211a24) )
- ROM_LOAD64_BYTE( "b14-50.8", 0x000007, 0x20000, CRC(ec1ef311) SHA1(4cfa06aec9535f2044b763b071f73d23ca8ba354) )
- ROM_LOAD64_BYTE( "b14-51.4", 0x100007, 0x20000, CRC(35041c5f) SHA1(71602267736396516366a8abf535db82acaa1c23) )
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD64_BYTE( "b14-48.16", 0x000007, 0x20000, CRC(30c7f265) SHA1(3e52e2aabf2c456d0b57d9414f99bd942bafc887) ) // OBJ, bitplane 3
+ ROM_LOAD64_BYTE( "b14-49.12", 0x100007, 0x20000, CRC(32ba4265) SHA1(f468243d923726b7eff78d9bc55a3a092f211a24) )
+ ROM_LOAD64_BYTE( "b14-50.8", 0x000006, 0x20000, CRC(ec1ef311) SHA1(4cfa06aec9535f2044b763b071f73d23ca8ba354) )
+ ROM_LOAD64_BYTE( "b14-51.4", 0x100006, 0x20000, CRC(35041c5f) SHA1(71602267736396516366a8abf535db82acaa1c23) )
- ROM_LOAD64_BYTE( "b14-44.15", 0x000002, 0x20000, CRC(9f6c030e) SHA1(bb278fdcc29530685aa2e76da0712195f6ab0f5f) ) // OBJ, bitplane 2
- ROM_LOAD64_BYTE( "b14-45.11", 0x100002, 0x20000, CRC(63e4ce03) SHA1(92e3f45754676dd15691e48c0d37490c1a3ec328) )
- ROM_LOAD64_BYTE( "b14-46.7", 0x000006, 0x20000, CRC(d489adf2) SHA1(9f77916594d5ed05b79d7e8d8f534eb39f65edae) )
- ROM_LOAD64_BYTE( "b14-47.3", 0x100006, 0x20000, CRC(b3a1f75b) SHA1(050dd3313b5392d131c5a62c544260b83af0b8ab) )
+ ROM_LOAD64_BYTE( "b14-44.15", 0x000005, 0x20000, CRC(9f6c030e) SHA1(bb278fdcc29530685aa2e76da0712195f6ab0f5f) ) // OBJ, bitplane 2
+ ROM_LOAD64_BYTE( "b14-45.11", 0x100005, 0x20000, CRC(63e4ce03) SHA1(92e3f45754676dd15691e48c0d37490c1a3ec328) )
+ ROM_LOAD64_BYTE( "b14-46.7", 0x000004, 0x20000, CRC(d489adf2) SHA1(9f77916594d5ed05b79d7e8d8f534eb39f65edae) )
+ ROM_LOAD64_BYTE( "b14-47.3", 0x100004, 0x20000, CRC(b3a1f75b) SHA1(050dd3313b5392d131c5a62c544260b83af0b8ab) )
- ROM_LOAD64_BYTE( "b14-40.14", 0x000001, 0x20000, CRC(fa2a3cb3) SHA1(1e102ae6e916fda046a154b89056a18b724d51a3) ) // OBJ, bitplane 1
- ROM_LOAD64_BYTE( "b14-41.10", 0x100001, 0x20000, CRC(09455a14) SHA1(dc703e1f9c4f16e330796e9945799e1038ce503b) )
- ROM_LOAD64_BYTE( "b14-42.6", 0x000005, 0x20000, CRC(ab51f53c) SHA1(0ed9a2e607b0bd2b43b47e3ed29b00a8d8a09f25) )
- ROM_LOAD64_BYTE( "b14-43.2", 0x100005, 0x20000, CRC(1e6d2b38) SHA1(453cd818a6cd8b238c72cc880c811227609767b8) )
+ ROM_LOAD64_BYTE( "b14-40.14", 0x000003, 0x20000, CRC(fa2a3cb3) SHA1(1e102ae6e916fda046a154b89056a18b724d51a3) ) // OBJ, bitplane 1
+ ROM_LOAD64_BYTE( "b14-41.10", 0x100003, 0x20000, CRC(09455a14) SHA1(dc703e1f9c4f16e330796e9945799e1038ce503b) )
+ ROM_LOAD64_BYTE( "b14-42.6", 0x000002, 0x20000, CRC(ab51f53c) SHA1(0ed9a2e607b0bd2b43b47e3ed29b00a8d8a09f25) )
+ ROM_LOAD64_BYTE( "b14-43.2", 0x100002, 0x20000, CRC(1e6d2b38) SHA1(453cd818a6cd8b238c72cc880c811227609767b8) )
- ROM_LOAD64_BYTE( "b14-36.13", 0x000000, 0x20000, CRC(20a7c1b8) SHA1(053c6b733a5c33b9259dfc754ce30a880905bb11) ) // OBJ, bitplane 0
- ROM_LOAD64_BYTE( "b14-37.9", 0x100000, 0x20000, CRC(801b703b) SHA1(dfbe276bd484815a7e69589eb56d54bc6e12e301) )
- ROM_LOAD64_BYTE( "b14-38.5", 0x000004, 0x20000, CRC(de0c213e) SHA1(1313b2051e906d22edb55f4d45d3a424b31ca2a2) )
- ROM_LOAD64_BYTE( "b14-39.1", 0x100004, 0x20000, CRC(798c28c5) SHA1(d2a8b9f84b3760f3800c5760ecee7ddcbafa6d6e) )
+ ROM_LOAD64_BYTE( "b14-36.13", 0x000001, 0x20000, CRC(20a7c1b8) SHA1(053c6b733a5c33b9259dfc754ce30a880905bb11) ) // OBJ, bitplane 0
+ ROM_LOAD64_BYTE( "b14-37.9", 0x100001, 0x20000, CRC(801b703b) SHA1(dfbe276bd484815a7e69589eb56d54bc6e12e301) )
+ ROM_LOAD64_BYTE( "b14-38.5", 0x000000, 0x20000, CRC(de0c213e) SHA1(1313b2051e906d22edb55f4d45d3a424b31ca2a2) )
+ ROM_LOAD64_BYTE( "b14-39.1", 0x100000, 0x20000, CRC(798c28c5) SHA1(d2a8b9f84b3760f3800c5760ecee7ddcbafa6d6e) )
ROM_REGION( 0x10000, "user1", 0 ) // Zoom tables for zoom sprite h/w
ROM_LOAD( "b14-30.88", 0x000000, 0x10000, CRC(dccb0c7f) SHA1(42f0af72f559133b74912a4478e1323062be4b77) )
@@ -727,15 +716,15 @@ ROM_START( topspeedu )
ROM_REGION( 0x8000, "motorcpu", 0 )
ROM_LOAD( "27c256.ic17", 0x0000, 0x8000, CRC(e52dfee1) SHA1(6e58e18eb2de3c899b950a4307ea21cd23683657) )
- ROM_REGION( 0x40000, "gfx1", 0 ) // SCR tiles
+ ROM_REGION( 0x40000, "pc080sn", 0 ) // SCR tiles
ROM_LOAD16_BYTE( "b14-06.52", 0x00000, 0x20000, CRC(b4e2536e) SHA1(c1960ee25b37b1444ec99082521c4858edcf3484) )
ROM_LOAD16_BYTE( "b14-07.54", 0x00001, 0x20000, CRC(c6025fff) SHA1(439ed85b0160bfd6c06fd42990124a292b2e3c14) )
- ROM_REGION( 0x200000, "gfx2", 0 ) // OBJ: each rom has 1 bitplane, forming 16x8 tiles
- ROM_LOAD32_BYTE( "b14-01", 0x00000, 0x80000, CRC(84a56f37) SHA1(926bcae5bd75a4172de2a2078718b2940c5c1966) )
- ROM_LOAD32_BYTE( "b14-02", 0x00001, 0x80000, CRC(6889186b) SHA1(3c38e281e8bf416a401c76ebb2d8ca95d09974b6) )
- ROM_LOAD32_BYTE( "b14-03", 0x00002, 0x80000, CRC(d1ed9e71) SHA1(26a6b2ca5bf6d70ad87f5c40c8e94ec542a2ec04) )
- ROM_LOAD32_BYTE( "b14-04", 0x00003, 0x80000, CRC(b63f0519) SHA1(e9a6b49effba0cae1ae3536a8584d3efa34ca8c3) )
+ ROM_REGION( 0x200000, "sprites", 0 ) // OBJ: each rom has 1 bitplane, forming 16x8 tiles
+ ROM_LOAD64_WORD_SWAP( "b14-01", 0x00000, 0x80000, CRC(84a56f37) SHA1(926bcae5bd75a4172de2a2078718b2940c5c1966) )
+ ROM_LOAD64_WORD_SWAP( "b14-02", 0x00002, 0x80000, CRC(6889186b) SHA1(3c38e281e8bf416a401c76ebb2d8ca95d09974b6) )
+ ROM_LOAD64_WORD_SWAP( "b14-03", 0x00004, 0x80000, CRC(d1ed9e71) SHA1(26a6b2ca5bf6d70ad87f5c40c8e94ec542a2ec04) )
+ ROM_LOAD64_WORD_SWAP( "b14-04", 0x00006, 0x80000, CRC(b63f0519) SHA1(e9a6b49effba0cae1ae3536a8584d3efa34ca8c3) )
ROM_REGION( 0x10000, "user1", 0 ) // Zoom tables for zoom sprite h/w
ROM_LOAD( "b14-30.88", 0x00000, 0x10000, CRC(dccb0c7f) SHA1(42f0af72f559133b74912a4478e1323062be4b77) )
@@ -766,15 +755,15 @@ ROM_START( fullthrl )
ROM_REGION( 0x8000, "motorcpu", 0 )
ROM_LOAD( "27c256.ic17", 0x0000, 0x8000, CRC(e52dfee1) SHA1(6e58e18eb2de3c899b950a4307ea21cd23683657) )
- ROM_REGION( 0x40000, "gfx1", 0 ) // SCR tiles
+ ROM_REGION( 0x40000, "pc080sn", 0 ) // SCR tiles
ROM_LOAD16_BYTE( "b14-06.52", 0x00000, 0x20000, CRC(b4e2536e) SHA1(c1960ee25b37b1444ec99082521c4858edcf3484) )
ROM_LOAD16_BYTE( "b14-07.54", 0x00001, 0x20000, CRC(c6025fff) SHA1(439ed85b0160bfd6c06fd42990124a292b2e3c14) )
- ROM_REGION( 0x200000, "gfx2", 0 ) // OBJ: each rom has 1 bitplane, forming 16x8 tiles
- ROM_LOAD32_BYTE( "b14-01", 0x00000, 0x80000, CRC(84a56f37) SHA1(926bcae5bd75a4172de2a2078718b2940c5c1966) )
- ROM_LOAD32_BYTE( "b14-02", 0x00001, 0x80000, CRC(6889186b) SHA1(3c38e281e8bf416a401c76ebb2d8ca95d09974b6) )
- ROM_LOAD32_BYTE( "b14-03", 0x00002, 0x80000, CRC(d1ed9e71) SHA1(26a6b2ca5bf6d70ad87f5c40c8e94ec542a2ec04) )
- ROM_LOAD32_BYTE( "b14-04", 0x00003, 0x80000, CRC(b63f0519) SHA1(e9a6b49effba0cae1ae3536a8584d3efa34ca8c3) )
+ ROM_REGION( 0x200000, "sprites", 0 ) // OBJ: each rom has 1 bitplane, forming 16x8 tiles
+ ROM_LOAD64_WORD_SWAP( "b14-01", 0x00000, 0x80000, CRC(84a56f37) SHA1(926bcae5bd75a4172de2a2078718b2940c5c1966) )
+ ROM_LOAD64_WORD_SWAP( "b14-02", 0x00002, 0x80000, CRC(6889186b) SHA1(3c38e281e8bf416a401c76ebb2d8ca95d09974b6) )
+ ROM_LOAD64_WORD_SWAP( "b14-03", 0x00004, 0x80000, CRC(d1ed9e71) SHA1(26a6b2ca5bf6d70ad87f5c40c8e94ec542a2ec04) )
+ ROM_LOAD64_WORD_SWAP( "b14-04", 0x00006, 0x80000, CRC(b63f0519) SHA1(e9a6b49effba0cae1ae3536a8584d3efa34ca8c3) )
ROM_REGION( 0x10000, "user1", 0 ) // Zoom tables for zoom sprite h/w
ROM_LOAD( "b14-30.88", 0x00000, 0x10000, CRC(dccb0c7f) SHA1(42f0af72f559133b74912a4478e1323062be4b77) )