diff options
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 |
commit | 7b667dd042e5783cb4126ee4d7a0844227cdef86 (patch) | |
tree | 8023489dd73e18dbf228f98137c5531501f774dc | |
parent | b67fe63c0a136df17d79b57dbe37aa97deb63d33 (diff) |
crshrace.cpp: very minor cleanups (nw)
-rw-r--r-- | src/mame/drivers/crshrace.cpp | 117 | ||||
-rw-r--r-- | src/mame/includes/crshrace.h | 62 | ||||
-rw-r--r-- | src/mame/video/crshrace.cpp | 63 |
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); |