summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2020-06-27 06:07:45 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2020-06-27 06:07:45 +0200
commit7b667dd042e5783cb4126ee4d7a0844227cdef86 (patch)
tree8023489dd73e18dbf228f98137c5531501f774dc
parentb67fe63c0a136df17d79b57dbe37aa97deb63d33 (diff)
crshrace.cpp: very minor cleanups (nw)
-rw-r--r--src/mame/drivers/crshrace.cpp117
-rw-r--r--src/mame/includes/crshrace.h62
-rw-r--r--src/mame/video/crshrace.cpp63
3 files changed, 112 insertions, 130 deletions
diff --git a/src/mame/drivers/crshrace.cpp b/src/mame/drivers/crshrace.cpp
index 2281f0749fc..250efe14715 100644
--- a/src/mame/drivers/crshrace.cpp
+++ b/src/mame/drivers/crshrace.cpp
@@ -7,7 +7,7 @@ Crash Race (c) 1993 Video System Co.
driver by Nicola Salmoria
Notes:
-- Keep player1 button1&2 pressed while entering service mode to get an
+- Keep player1 button 1 & 2 pressed while entering service mode to get an
extended menu
@@ -17,7 +17,7 @@ Stephh's notes (based on the games M68000 code and some tests) :
- There seems to be preliminary support for 3 simultaneous players, but the
game resets before the race starts if the 3 players don't play against each
- other ! I can't tell however if it's an ingame or an emulation bug.
+ other! I can't tell however if it's an ingame or an emulation bug.
To test this, change CRSHRACE_3P_HACK to 1, set the "Reset on P.O.S.T. Error"
Dip Switch to "No" (because of the ROMS patch), and set the "Maximum Players"
Dip Switch to "3".
@@ -140,25 +140,26 @@ Dip locations verified with Service Mode.
#define CRSHRACE_3P_HACK 0
-void crshrace_state::crshrace_sh_bankswitch_w(uint8_t data)
+void crshrace_state::sh_bankswitch_w(uint8_t data)
{
m_z80bank->set_entry(data & 0x03);
}
-void crshrace_state::crshrace_map(address_map &map)
+void crshrace_state::main_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
map(0x300000, 0x3fffff).rom().region("user1", 0);
map(0x400000, 0x4fffff).rom().region("user2", 0).mirror(0x100000);
- map(0xa00000, 0xa0ffff).ram().share("spriteram2");
- map(0xd00000, 0xd01fff).ram().w(FUNC(crshrace_state::crshrace_videoram1_w)).share("videoram1");
- map(0xe00000, 0xe01fff).ram().share("spriteram");
+ map(0xa00000, 0xa0ffff).ram().share("spriteram.1");
+ map(0xd00000, 0xd01fff).ram().w(FUNC(crshrace_state::videoram_w<0>)).share(m_videoram[0]);
+ map(0xe00000, 0xe01fff).ram().share("spriteram.0");
map(0xfe0000, 0xfeffff).ram();
- map(0xffc000, 0xffc001).w(FUNC(crshrace_state::crshrace_roz_bank_w));
- map(0xffd000, 0xffdfff).ram().w(FUNC(crshrace_state::crshrace_videoram2_w)).share("videoram2");
+ map(0xffc001, 0xffc001).w(FUNC(crshrace_state::roz_bank_w));
+ map(0xffd000, 0xffdfff).ram().w(FUNC(crshrace_state::videoram_w<1>)).share(m_videoram[1]);
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- map(0xfff000, 0xfff001).portr("P1").w(FUNC(crshrace_state::crshrace_gfxctrl_w));
+ map(0xfff001, 0xfff001).w(FUNC(crshrace_state::gfxctrl_w));
+ map(0xfff000, 0xfff001).portr("P1");
map(0xfff002, 0xfff003).portr("P2");
map(0xfff004, 0xfff005).portr("DSW0");
map(0xfff006, 0xfff007).portr("DSW2");
@@ -173,13 +174,13 @@ void crshrace_state::sound_map(address_map &map)
{
map(0x0000, 0x77ff).rom();
map(0x7800, 0x7fff).ram();
- map(0x8000, 0xffff).bankr("bank1");
+ map(0x8000, 0xffff).bankr(m_z80bank);
}
void crshrace_state::sound_io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).w(FUNC(crshrace_state::crshrace_sh_bankswitch_w));
+ map(0x00, 0x00).w(FUNC(crshrace_state::sh_bankswitch_w));
map(0x04, 0x04).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
map(0x08, 0x0b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
}
@@ -215,7 +216,7 @@ static INPUT_PORTS_START( crshrace )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW0")
- /* DSW2 : 0xfe1c84 = !(0xfff005) */
+ // DSW2 : 0xfe1c84 = !(0xfff005)
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
@@ -233,7 +234,7 @@ static INPUT_PORTS_START( crshrace )
PORT_DIPSETTING( 0x00c0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0040, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
- /* DSW1 : 0xfe1c83 = !(0xfff004) */
+ // DSW1 : 0xfe1c83 = !(0xfff004)
PORT_DIPNAME( 0x0100, 0x0100, "Coin Slot" ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x0100, "Same" )
PORT_DIPSETTING( 0x0000, "Individual" )
@@ -270,7 +271,7 @@ static INPUT_PORTS_START( crshrace )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_START("DSW1")
- /* DSW3 : 0xfe1c85 = !(0xfff00b) */
+ // DSW3 : 0xfe1c85 = !(0xfff00b)
#if CRSHRACE_3P_HACK
PORT_DIPNAME( 0x0001, 0x0001, "Maximum Players" ) PORT_DIPLOCATION("SW3:1")
PORT_DIPSETTING( 0x0001, "2" )
@@ -329,10 +330,10 @@ static INPUT_PORTS_START( crshrace )
PORT_DIPSETTING( 0x0e00, "5" )
PORT_DIPSETTING( 0x0f00, "5" )
*/
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("soundlatch", generic_latch_8_device, pending_r) /* pending sound command */
+ PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("soundlatch", generic_latch_8_device, pending_r) // pending sound command
INPUT_PORTS_END
-/* Same as 'crshrace', but additional "unknown" Dip Switch (see notes) */
+// Same as 'crshrace', but additional "unknown" Dip Switch (see notes)
static INPUT_PORTS_START( crshrace2 )
PORT_INCLUDE( crshrace )
@@ -380,15 +381,15 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_crshrace )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 )
- GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 256, 16 )
- GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 512, 32 )
+ GFXDECODE_ENTRY( "chars", 0, charlayout, 0, 1 )
+ GFXDECODE_ENTRY( "tiles", 0, tilelayout, 256, 16 )
+ GFXDECODE_ENTRY( "sprites", 0, spritelayout, 512, 32 )
GFXDECODE_END
void crshrace_state::machine_start()
{
- m_z80bank->configure_entries(0, 4, memregion("audiocpu")->base() + 0x10000, 0x8000);
+ m_z80bank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x8000);
save_item(NAME(m_roz_bank));
save_item(NAME(m_gfxctrl));
@@ -404,41 +405,41 @@ void crshrace_state::machine_reset()
void crshrace_state::crshrace(machine_config &config)
{
- /* basic machine hardware */
- M68000(config, m_maincpu, 16000000); /* 16 MHz ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &crshrace_state::crshrace_map);
+ // basic machine hardware
+ M68000(config, m_maincpu, 16000000); // 16 MHz ???
+ m_maincpu->set_addrmap(AS_PROGRAM, &crshrace_state::main_map);
m_maincpu->set_vblank_int("screen", FUNC(crshrace_state::irq1_line_hold));
- Z80(config, m_audiocpu, 4000000); /* 4 MHz ??? */
+ Z80(config, m_audiocpu, 4000000); // 4 MHz ???
m_audiocpu->set_addrmap(AS_PROGRAM, &crshrace_state::sound_map);
m_audiocpu->set_addrmap(AS_IO, &crshrace_state::sound_io_map);
- /* video hardware */
+ // video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_size(64*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
- screen.set_screen_update(FUNC(crshrace_state::screen_update_crshrace));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
- screen.screen_vblank().append(m_spriteram2, FUNC(buffered_spriteram16_device::vblank_copy_rising));
+ screen.set_screen_update(FUNC(crshrace_state::screen_update));
+ screen.screen_vblank().set(m_spriteram[0], FUNC(buffered_spriteram16_device::vblank_copy_rising));
+ screen.screen_vblank().append(m_spriteram[1], FUNC(buffered_spriteram16_device::vblank_copy_rising));
screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_crshrace);
PALETTE(config, m_palette).set_format(palette_device::xGBR_555, 2048);
VSYSTEM_SPR(config, m_spr, 0);
- m_spr->set_tile_indirect_cb(FUNC(crshrace_state::crshrace_tile_callback));
+ m_spr->set_tile_indirect_cb(FUNC(crshrace_state::tile_callback));
m_spr->set_gfx_region(2);
m_spr->set_gfxdecode_tag(m_gfxdecode);
- BUFFERED_SPRITERAM16(config, m_spriteram);
- BUFFERED_SPRITERAM16(config, m_spriteram2);
+ BUFFERED_SPRITERAM16(config, m_spriteram[0]);
+ BUFFERED_SPRITERAM16(config, m_spriteram[1]);
K053936(config, m_k053936, 0);
m_k053936->set_wrap(1);
m_k053936->set_offsets(-48, -21);
- /* sound hardware */
+ // sound hardware
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@@ -456,78 +457,76 @@ void crshrace_state::crshrace(machine_config &config)
ROM_START( crshrace )
- ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
+ ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
ROM_LOAD16_WORD_SWAP( "1", 0x000000, 0x80000, CRC(21e34fb7) SHA1(be47b4a9bce2d6ce0a127dffe032c61547b2a3c0) )
- ROM_REGION16_BE( 0x100000, "user1", 0 ) /* extra ROM */
+ ROM_REGION16_BE( 0x100000, "user1", 0 ) // extra ROM
ROM_LOAD16_WORD_SWAP( "w21", 0x000000, 0x100000, CRC(a5df7325) SHA1(614095a086164af5b5e73245744411187d81deec) )
- ROM_REGION16_BE( 0x100000, "user2", 0 ) /* extra ROM */
+ ROM_REGION16_BE( 0x100000, "user2", 0 ) // extra ROM
ROM_LOAD16_WORD_SWAP( "w22", 0x000000, 0x100000, CRC(fc9d666d) SHA1(45aafcce82b668f93e51b5e4d092b1d0077e5192) )
- ROM_REGION( 0x30000, "audiocpu", 0 ) /* 64k for the audio CPU + banks */
+ ROM_REGION( 0x20000, "audiocpu", 0 ) // 64k for the audio CPU + banks
ROM_LOAD( "2", 0x00000, 0x20000, CRC(e70a900f) SHA1(edfe5df2dab5a7dccebe1a6f978144bcd516ab03) )
- ROM_RELOAD( 0x10000, 0x20000 )
- ROM_REGION( 0x100000, "gfx1", 0 )
+ ROM_REGION( 0x100000, "chars", 0 )
ROM_LOAD( "h895", 0x000000, 0x100000, CRC(36ad93c3) SHA1(f68f229dd1a1f8bfd3b8f73b6627f5f00f809d34) )
- ROM_REGION( 0x400000, "gfx2", 0 )
+ ROM_REGION( 0x400000, "tiles", 0 )
ROM_LOAD( "w18", 0x000000, 0x100000, CRC(b15df90d) SHA1(56e38e6c40a02553b6b8c5282aa8f16b20779ebf) )
ROM_LOAD( "w19", 0x100000, 0x100000, CRC(28326b93) SHA1(997e9b250b984b012ce1d165add59c741fb18171) )
ROM_LOAD( "w20", 0x200000, 0x100000, CRC(d4056ad1) SHA1(4b45b14aa0766d7aef72f060e1cd28d67690d5fe) )
- /* 300000-3fffff empty */
+ // 300000-3fffff empty
- ROM_REGION( 0x400000, "gfx3", 0 )
+ ROM_REGION( 0x400000, "sprites", 0 )
ROM_LOAD( "h897", 0x000000, 0x200000, CRC(e3230128) SHA1(758c65f113481cf25bf0359deecd6736a7c9ee7e) )
ROM_LOAD( "h896", 0x200000, 0x200000, CRC(fff60233) SHA1(56b4b708883a80761dc5f9184780477d72b80351) )
- ROM_REGION( 0x100000, "ymsnd.deltat", 0 ) /* sound samples */
+ ROM_REGION( 0x100000, "ymsnd.deltat", 0 ) // sound samples
ROM_LOAD( "h894", 0x000000, 0x100000, CRC(d53300c1) SHA1(4c3ff7d3156791cb960c28845a5f1906605bce55) )
- ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
+ ROM_REGION( 0x100000, "ymsnd", 0 ) // sound samples
ROM_LOAD( "h893", 0x000000, 0x100000, CRC(32513b63) SHA1(c4ede4aaa2611cedb53d47448422a1926acf3052) )
ROM_END
ROM_START( crshrace2 )
- ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
+ ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
ROM_LOAD16_WORD_SWAP( "01-ic10.bin", 0x000000, 0x80000, CRC(b284aacd) SHA1(f0ef279cdec30eb32e8aa8cdd51e289b70f2d6f5) )
- ROM_REGION16_BE( 0x100000, "user1", 0 ) /* extra ROM */
+ ROM_REGION16_BE( 0x100000, "user1", 0 ) // extra ROM
ROM_LOAD16_WORD_SWAP( "w21", 0x000000, 0x100000, CRC(a5df7325) SHA1(614095a086164af5b5e73245744411187d81deec) ) // IC14.BIN
- ROM_REGION16_BE( 0x100000, "user2", 0 ) /* extra ROM */
+ ROM_REGION16_BE( 0x100000, "user2", 0 ) // extra ROM
ROM_LOAD16_WORD_SWAP( "w22", 0x000000, 0x100000, CRC(fc9d666d) SHA1(45aafcce82b668f93e51b5e4d092b1d0077e5192) ) // IC13.BIN
- ROM_REGION( 0x30000, "audiocpu", 0 ) /* 64k for the audio CPU + banks */
+ ROM_REGION( 0x20000, "audiocpu", 0 ) // 64k for the audio CPU + banks
ROM_LOAD( "2", 0x00000, 0x20000, CRC(e70a900f) SHA1(edfe5df2dab5a7dccebe1a6f978144bcd516ab03) ) // 02-IC58.BIN
- ROM_RELOAD( 0x10000, 0x20000 )
- ROM_REGION( 0x100000, "gfx1", 0 )
+ ROM_REGION( 0x100000, "chars", 0 )
ROM_LOAD( "h895", 0x000000, 0x100000, CRC(36ad93c3) SHA1(f68f229dd1a1f8bfd3b8f73b6627f5f00f809d34) ) // IC50.BIN
- ROM_REGION( 0x400000, "gfx2", 0 )
+ ROM_REGION( 0x400000, "tiles", 0 )
ROM_LOAD( "w18", 0x000000, 0x100000, CRC(b15df90d) SHA1(56e38e6c40a02553b6b8c5282aa8f16b20779ebf) ) // ROM-A.BIN
ROM_LOAD( "w19", 0x100000, 0x100000, CRC(28326b93) SHA1(997e9b250b984b012ce1d165add59c741fb18171) ) // ROM-B.BIN
ROM_LOAD( "w20", 0x200000, 0x100000, CRC(d4056ad1) SHA1(4b45b14aa0766d7aef72f060e1cd28d67690d5fe) ) // ROM-C.BIN
- /* 300000-3fffff empty */
+ // 300000-3fffff empty
- ROM_REGION( 0x400000, "gfx3", 0 )
+ ROM_REGION( 0x400000, "sprites", 0 )
ROM_LOAD( "h897", 0x000000, 0x200000, CRC(e3230128) SHA1(758c65f113481cf25bf0359deecd6736a7c9ee7e) ) // IC29.BIN
ROM_LOAD( "h896", 0x200000, 0x200000, CRC(fff60233) SHA1(56b4b708883a80761dc5f9184780477d72b80351) ) // IC75.BIN
- ROM_REGION( 0x100000, "ymsnd.deltat", 0 ) /* sound samples */
+ ROM_REGION( 0x100000, "ymsnd.deltat", 0 ) // sound samples
ROM_LOAD( "h894", 0x000000, 0x100000, CRC(d53300c1) SHA1(4c3ff7d3156791cb960c28845a5f1906605bce55) ) // IC73.BIN
- ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
+ ROM_REGION( 0x100000, "ymsnd", 0 ) // sound samples
ROM_LOAD( "h893", 0x000000, 0x100000, CRC(32513b63) SHA1(c4ede4aaa2611cedb53d47448422a1926acf3052) ) // IC69.BIN
ROM_END
#ifdef UNUSED_FUNCTION
-void crshrace_state::crshrace_patch_code( uint16_t offset )
+void crshrace_state::patch_code(uint16_t offset)
{
- /* A hack which shows 3 player mode in code which is disabled */
+ // A hack which shows 3 player mode in code which is disabled
uint16_t *RAM = (uint16_t *)memregion("maincpu")->base();
RAM[(offset + 0)/2] = 0x4e71;
RAM[(offset + 2)/2] = 0x4e71;
@@ -539,14 +538,14 @@ void crshrace_state::crshrace_patch_code( uint16_t offset )
void crshrace_state::init_crshrace()
{
#if CRSHRACE_3P_HACK
- crshrace_patch_code(0x003778);
+ patch_code(0x003778);
#endif
}
void crshrace_state::init_crshrace2()
{
#if CRSHRACE_3P_HACK
- crshrace_patch_code(0x003796);
+ patch_code(0x003796);
#endif
}
diff --git a/src/mame/includes/crshrace.h b/src/mame/includes/crshrace.h
index 0f89130b31f..4f5f1a880de 100644
--- a/src/mame/includes/crshrace.h
+++ b/src/mame/includes/crshrace.h
@@ -18,62 +18,62 @@ class crshrace_state : public driver_device
public:
crshrace_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
- m_videoram1(*this, "videoram1"),
- m_videoram2(*this, "videoram2"),
+ m_videoram(*this, "videoram.%u", 0U),
m_z80bank(*this, "bank1"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_spr(*this, "vsystem_spr"),
m_k053936(*this, "k053936"),
- m_spriteram(*this, "spriteram"),
- m_spriteram2(*this, "spriteram2"),
+ m_spriteram(*this, "spriteram.%u", 0U),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch")
{ }
- /* memory pointers */
- required_shared_ptr<uint16_t> m_videoram1;
- required_shared_ptr<uint16_t> m_videoram2;
+ void crshrace(machine_config &config);
+
+ void init_crshrace2();
+ void init_crshrace();
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+ virtual void video_start() override;
+
+private:
+ // memory pointers
+ required_shared_ptr_array<uint16_t, 2> m_videoram;
required_memory_bank m_z80bank;
+ // devices
required_device<cpu_device> m_maincpu;
required_device<z80_device> m_audiocpu;
required_device<vsystem_spr_device> m_spr;
required_device<k053936_device> m_k053936;
- required_device<buffered_spriteram16_device> m_spriteram;
- required_device<buffered_spriteram16_device> m_spriteram2;
+ required_device_array<buffered_spriteram16_device, 2> m_spriteram;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
- /* video-related */
- tilemap_t *m_tilemap1;
- tilemap_t *m_tilemap2;
- int m_roz_bank;
- int m_gfxctrl;
- int m_flipscreen;
- uint32_t crshrace_tile_callback( uint32_t code );
+ // video-related
+ tilemap_t *m_tilemap[2];
+ uint8_t m_roz_bank;
+ uint8_t m_gfxctrl;
+ uint8_t m_flipscreen;
- /* devices */
- void crshrace_sh_bankswitch_w(uint8_t data);
- void crshrace_videoram1_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void crshrace_videoram2_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void crshrace_roz_bank_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void crshrace_gfxctrl_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void init_crshrace2();
- void init_crshrace();
+ uint32_t tile_callback(uint32_t code);
+ void sh_bankswitch_w(uint8_t data);
+ template<uint8_t Which> void videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0) { COMBINE_DATA(&m_videoram[Which][offset]); m_tilemap[Which]->mark_tile_dirty(offset); }
+ void roz_bank_w(offs_t offset, uint8_t data);
+ void gfxctrl_w(offs_t offset, uint8_t data);
TILE_GET_INFO_MEMBER(get_tile_info1);
TILE_GET_INFO_MEMBER(get_tile_info2);
- virtual void machine_start() override;
- virtual void machine_reset() override;
- virtual void video_start() override;
- uint32_t screen_update_crshrace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void draw_bg( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect );
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void draw_bg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_fg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void crshrace(machine_config &config);
- void crshrace_map(address_map &map);
+
+ void main_map(address_map &map);
void sound_io_map(address_map &map);
void sound_map(address_map &map);
};
diff --git a/src/mame/video/crshrace.cpp b/src/mame/video/crshrace.cpp
index 91afcfa9058..5cb37beee11 100644
--- a/src/mame/video/crshrace.cpp
+++ b/src/mame/video/crshrace.cpp
@@ -13,14 +13,14 @@
TILE_GET_INFO_MEMBER(crshrace_state::get_tile_info1)
{
- int code = m_videoram1[tile_index];
+ int code = m_videoram[0][tile_index];
tileinfo.set(1, (code & 0xfff) + (m_roz_bank << 12), code >> 12, 0);
}
TILE_GET_INFO_MEMBER(crshrace_state::get_tile_info2)
{
- int code = m_videoram2[tile_index];
+ int code = m_videoram[1][tile_index];
tileinfo.set(0, code, 0, 0);
}
@@ -33,19 +33,19 @@ TILE_GET_INFO_MEMBER(crshrace_state::get_tile_info2)
***************************************************************************/
-uint32_t crshrace_state::crshrace_tile_callback( uint32_t code )
+uint32_t crshrace_state::tile_callback(uint32_t code)
{
- return m_spriteram2->buffer()[code&0x7fff];
+ return m_spriteram[1]->buffer()[code&0x7fff];
}
void crshrace_state::video_start()
{
- m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(crshrace_state::get_tile_info1)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
- m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(crshrace_state::get_tile_info2)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
+ m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(crshrace_state::get_tile_info1)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
+ m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(crshrace_state::get_tile_info2)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
- m_tilemap1->set_transparent_pen(0x0f);
- m_tilemap2->set_transparent_pen(0xff);
+ m_tilemap[0]->set_transparent_pen(0x0f);
+ m_tilemap[1]->set_transparent_pen(0xff);
}
@@ -56,38 +56,21 @@ void crshrace_state::video_start()
***************************************************************************/
-void crshrace_state::crshrace_videoram1_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- COMBINE_DATA(&m_videoram1[offset]);
- m_tilemap1->mark_tile_dirty(offset);
-}
-void crshrace_state::crshrace_videoram2_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+void crshrace_state::roz_bank_w(offs_t offset, uint8_t data)
{
- COMBINE_DATA(&m_videoram2[offset]);
- m_tilemap2->mark_tile_dirty(offset);
-}
-
-void crshrace_state::crshrace_roz_bank_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- if (ACCESSING_BITS_0_7)
+ if (m_roz_bank != data)
{
- if (m_roz_bank != (data & 0xff))
- {
- m_roz_bank = data & 0xff;
- m_tilemap1->mark_all_dirty();
- }
+ m_roz_bank = data;
+ m_tilemap[0]->mark_all_dirty();
}
}
-void crshrace_state::crshrace_gfxctrl_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+void crshrace_state::gfxctrl_w(offs_t offset, uint8_t data)
{
- if (ACCESSING_BITS_0_7)
- {
- m_gfxctrl = data & 0xdf;
- m_flipscreen = data & 0x20;
- }
+ m_gfxctrl = data;
+ m_flipscreen = data & 0x20;
}
@@ -97,21 +80,21 @@ void crshrace_state::crshrace_gfxctrl_w(offs_t offset, uint16_t data, uint16_t m
***************************************************************************/
-void crshrace_state::draw_bg( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
+void crshrace_state::draw_bg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m_tilemap2->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
}
void crshrace_state::draw_fg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m_k053936->zoom_draw(screen, bitmap, cliprect, m_tilemap1, 0, 0, 1);
+ m_k053936->zoom_draw(screen, bitmap, cliprect, m_tilemap[0], 0, 0, 1);
}
-uint32_t crshrace_state::screen_update_crshrace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t crshrace_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- if (m_gfxctrl & 0x04) /* display disable? */
+ if (m_gfxctrl & 0x04) // display disable?
{
bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
@@ -123,8 +106,8 @@ uint32_t crshrace_state::screen_update_crshrace(screen_device &screen, bitmap_in
switch (m_gfxctrl & 0xfb)
{
- case 0x00: /* high score screen */
- m_spr->draw_sprites(m_spriteram->buffer(), 0x2000, screen, bitmap, cliprect);
+ case 0x00: // high score screen
+ m_spr->draw_sprites(m_spriteram[0]->buffer(), 0x2000, screen, bitmap, cliprect);
draw_bg(screen, bitmap, cliprect);
draw_fg(screen, bitmap, cliprect);
break;
@@ -132,7 +115,7 @@ uint32_t crshrace_state::screen_update_crshrace(screen_device &screen, bitmap_in
case 0x02:
draw_bg(screen, bitmap, cliprect);
draw_fg(screen, bitmap, cliprect);
- m_spr->draw_sprites(m_spriteram->buffer(), 0x2000, screen, bitmap, cliprect);
+ m_spr->draw_sprites(m_spriteram[0]->buffer(), 0x2000, screen, bitmap, cliprect);
break;
default:
popmessage("gfxctrl = %02x", m_gfxctrl);