diff options
author | cam900 <dbtlrchl@naver.com> | 2018-06-20 18:58:52 +0900 |
---|---|---|
committer | Vas Crabb <cuavas@users.noreply.github.com> | 2018-06-24 20:16:41 +1000 |
commit | ab20ec3cee2c23eb0569a1f3971cc3da737a1696 (patch) | |
tree | 0c65d17006b47cf32021d27e30d577d118e14571 | |
parent | 5157c33ced1a1f10d1a3f0af6bdc98b0d0e3b6d8 (diff) |
snk.cpp : Cleanup unused, Reduce runtime tag lookup, Split countryc machine config & address map
-rw-r--r-- | src/mame/drivers/snk.cpp | 123 | ||||
-rw-r--r-- | src/mame/includes/snk.h | 24 |
2 files changed, 58 insertions, 89 deletions
diff --git a/src/mame/drivers/snk.cpp b/src/mame/drivers/snk.cpp index c3e162d92a2..e46fc7ed140 100644 --- a/src/mame/drivers/snk.cpp +++ b/src/mame/drivers/snk.cpp @@ -327,22 +327,9 @@ enum /*********************************************************************/ -WRITE8_MEMBER(snk_state::marvins_soundlatch_w) -{ - m_marvins_sound_busy_flag = 1; - m_soundlatch->write(space, offset, data); - m_audiocpu->set_input_line(0, HOLD_LINE); -} - -READ8_MEMBER(snk_state::marvins_soundlatch_r) -{ - m_marvins_sound_busy_flag = 0; - return m_soundlatch->read(space, 0); -} - CUSTOM_INPUT_MEMBER(snk_state::marvins_sound_busy) { - return m_marvins_sound_busy_flag; + return m_soundlatch->pending_r() ? 1 : 0; } READ8_MEMBER(snk_state::marvins_sound_nmi_ack_r) @@ -459,7 +446,6 @@ TIMER_CALLBACK_MEMBER(snk_state::sndirq_update_callback) } - WRITE_LINE_MEMBER(snk_state::ymirq_callback_1 ) { if (state) @@ -473,7 +459,6 @@ WRITE_LINE_MEMBER(snk_state::ymirq_callback_2) } - WRITE8_MEMBER(snk_state::snk_soundlatch_w) { m_soundlatch->write(space, offset, data); @@ -486,7 +471,6 @@ CUSTOM_INPUT_MEMBER(snk_state::snk_sound_busy) } - READ8_MEMBER(snk_state::snk_sound_status_r) { return m_sound_status; @@ -508,7 +492,6 @@ WRITE8_MEMBER(snk_state::snk_sound_status_w) } - READ8_MEMBER(snk_state::tnk3_cmdirq_ack_r) { machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sndirq_update_callback),this), CMDIRQ_CLEAR); @@ -530,7 +513,6 @@ READ8_MEMBER(snk_state::tnk3_busy_clear_r) } - /***************************************************************************** "Hard Flags" simulation @@ -720,9 +702,8 @@ hand, always returning 0xf inbetween valid values confuses the game. CUSTOM_INPUT_MEMBER(snk_state::gwar_rotary) { - static const char *const ports[] = { "P1ROT", "P2ROT" }; int which = (int)(uintptr_t)param; - int value = ioport(ports[which])->read(); + int value = m_rot_io[which]->read(); if ((m_last_value[which] == 0x5 && value == 0x6) || (m_last_value[which] == 0x6 && value == 0x5)) { @@ -737,7 +718,7 @@ CUSTOM_INPUT_MEMBER(snk_state::gwar_rotary) CUSTOM_INPUT_MEMBER(snk_state::gwarb_rotary) { - if (ioport("JOYSTICK_MODE")->read() == 1) + if (m_joymode_io->read() == 1) { return gwar_rotary(field, param); } @@ -784,12 +765,12 @@ WRITE8_MEMBER(snk_state::countryc_trackball_w) CUSTOM_INPUT_MEMBER(snk_state::countryc_trackball_x) { - return ioport(m_countryc_trackball ? "TRACKBALLX2" : "TRACKBALLX1")->read(); + return m_trackball_x_io[m_countryc_trackball]->read(); } CUSTOM_INPUT_MEMBER(snk_state::countryc_trackball_y) { - return ioport(m_countryc_trackball ? "TRACKBALLY2" : "TRACKBALLY1")->read(); + return m_trackball_y_io[m_countryc_trackball]->read(); } @@ -802,14 +783,14 @@ CUSTOM_INPUT_MEMBER(snk_state::snk_bonus_r) switch (bit_mask) { case 0x01: /* older games : "Occurrence" Dip Switch (DSW2:1) */ - return ((ioport("BONUS")->read() & bit_mask) >> 0); + return ((m_bonus_io->read() & bit_mask) >> 0); case 0xc0: /* older games : "Bonus Life" Dip Switches (DSW1:7,8) */ - return ((ioport("BONUS")->read() & bit_mask) >> 6); + return ((m_bonus_io->read() & bit_mask) >> 6); case 0x04: /* later games : "Occurrence" Dip Switch (DSW1:3) */ - return ((ioport("BONUS")->read() & bit_mask) >> 2); + return ((m_bonus_io->read() & bit_mask) >> 2); case 0x30: /* later games : "Bonus Life" Dip Switches (DSW2:5,6) */ - return ((ioport("BONUS")->read() & bit_mask) >> 4); + return ((m_bonus_io->read() & bit_mask) >> 4); default: logerror("snk_bonus_r : invalid %02X bit_mask\n",bit_mask); @@ -826,7 +807,7 @@ void snk_state::marvins_cpuA_map(address_map &map) map(0x8000, 0x8000).portr("IN0"); map(0x8100, 0x8100).portr("IN1"); map(0x8200, 0x8200).portr("IN2"); - map(0x8300, 0x8300).w(FUNC(snk_state::marvins_soundlatch_w)); + map(0x8300, 0x8300).w(m_soundlatch, FUNC(generic_latch_8_device::write)); map(0x8400, 0x8400).portr("DSW1"); map(0x8500, 0x8500).portr("DSW2"); map(0x8600, 0x8600).w(FUNC(snk_state::marvins_flipscreen_w)); @@ -875,7 +856,7 @@ void snk_state::madcrash_cpuA_map(address_map &map) map(0x8000, 0x8000).portr("IN0"); map(0x8100, 0x8100).portr("IN1"); map(0x8200, 0x8200).portr("IN2"); - map(0x8300, 0x8300).w(FUNC(snk_state::marvins_soundlatch_w)); + map(0x8300, 0x8300).w(m_soundlatch, FUNC(generic_latch_8_device::write)); map(0x8400, 0x8400).portr("DSW1"); map(0x8500, 0x8500).portr("DSW2"); map(0x8600, 0x8600).mirror(0xff).w(FUNC(snk_state::marvins_flipscreen_w)); @@ -924,7 +905,7 @@ void snk_state::madcrush_cpuA_map(address_map &map) map(0x8000, 0x8000).portr("IN0"); map(0x8100, 0x8100).portr("IN1"); map(0x8200, 0x8200).portr("IN2"); - map(0x8300, 0x8300).w(FUNC(snk_state::marvins_soundlatch_w)); + map(0x8300, 0x8300).w(m_soundlatch, FUNC(generic_latch_8_device::write)); map(0x8400, 0x8400).portr("DSW1"); map(0x8500, 0x8500).portr("DSW2"); map(0x8600, 0x8600).mirror(0xff).w(FUNC(snk_state::marvins_flipscreen_w)); @@ -1129,6 +1110,13 @@ void snk_state::tnk3_cpuA_map(address_map &map) map(0xf800, 0xffff).ram().w(FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM } +// replace coin counter with trackball select +void snk_state::countryc_cpuA_map(address_map &map) +{ + tnk3_cpuA_map(map); + map(0xc300, 0xc300).portr("IN3").w(FUNC(snk_state::countryc_trackball_w)); +} + void snk_state::tnk3_cpuB_map(address_map &map) { map(0x0000, 0xbfff).rom(); @@ -1390,7 +1378,7 @@ void snk_state::tdfever_cpuB_map(address_map &map) void snk_state::marvins_sound_map(address_map &map) { map(0x0000, 0x3fff).rom(); - map(0x4000, 0x4000).r(FUNC(snk_state::marvins_soundlatch_r)); + map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w)); map(0x8002, 0x8007).w("wave", FUNC(snkwave_device::snkwave_w)); map(0x8008, 0x8009).w("ay2", FUNC(ay8910_device::address_data_w)); @@ -3514,9 +3502,9 @@ static const gfx_layout charlayout_4bpp = 8,8, RGN_FRAC(1,1), 4, - { 0, 1, 2, 3 }, + { STEP4(0,1) }, { 4*1, 4*0, 4*3, 4*2, 4*5, 4*4, 4*7, 4*6 }, - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, + { STEP8(0,4*8) }, 32*8 }; @@ -3525,11 +3513,10 @@ static const gfx_layout tilelayout_4bpp = 16,16, RGN_FRAC(1,1), 4, - { 0, 1, 2, 3 }, + { STEP4(0,1) }, { 4*1, 4*0, 4*3, 4*2, 4*5, 4*4, 4*7, 4*6, 32+4*1, 32+4*0, 32+4*3, 32+4*2, 32+4*5, 32+4*4, 32+4*7, 32+4*6 }, - { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, - 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 }, + { STEP16(0,4*16) }, 64*16 }; @@ -3539,9 +3526,8 @@ static const gfx_layout spritelayout_3bpp = RGN_FRAC(1,3), 3, { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) }, - { 7,6,5,4,3,2,1,0, 15,14,13,12,11,10,9,8 }, - { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16, - 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 }, + { STEP8(8*0+7,-1), STEP8(8*1+7,-1) }, + { STEP16(0,16) }, 16*16 }; @@ -3551,12 +3537,8 @@ static const gfx_layout spritelayout_4bpp = RGN_FRAC(1,4), 4, { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) }, - { - 8,9,10,11,12,13,14,15, - 0,1,2,3,4,5,6,7 - }, - { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16, - 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 }, + { STEP8(8*1,1), STEP8(8*0,1) }, + { STEP16(0,16) }, 16*16 }; @@ -3566,20 +3548,8 @@ static const gfx_layout bigspritelayout_3bpp = RGN_FRAC(1,3), 3, { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) }, - { - 7,6,5,4,3,2,1,0, - 15,14,13,12,11,10,9,8, - 23,22,21,20,19,18,17,16, - 31,30,29,28,27,26,25,24 - }, - { - 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, - 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32, - 16*32+0*32, 16*32+1*32, 16*32+2*32, 16*32+3*32, - 16*32+4*32, 16*32+5*32, 16*32+6*32, 16*32+7*32, - 16*32+8*32, 16*32+9*32, 16*32+10*32, 16*32+11*32, - 16*32+12*32, 16*32+13*32, 16*32+14*32, 16*32+15*32, - }, + { STEP8(8*0+7,-1), STEP8(8*1+7,-1), STEP8(8*2+7,-1), STEP8(8*3+7,-1) }, + { STEP32(0,32) }, 16*32*2 }; @@ -3589,20 +3559,8 @@ static const gfx_layout bigspritelayout_4bpp = RGN_FRAC(1,4), 4, { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) }, - { - 24,25,26,27,28,29,30,31, - 16,17,18,19,20,21,22,23, - 8,9,10,11,12,13,14,15, - 0,1,2,3,4,5,6,7 - }, - { - 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, - 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32, - 16*32+0*32, 16*32+1*32, 16*32+2*32, 16*32+3*32, - 16*32+4*32, 16*32+5*32, 16*32+6*32, 16*32+7*32, - 16*32+8*32, 16*32+9*32, 16*32+10*32, 16*32+11*32, - 16*32+12*32, 16*32+13*32, 16*32+14*32, 16*32+15*32, - }, + { STEP8(8*3,1), STEP8(8*2,1), STEP8(8*1,1), STEP8(8*0,1) }, + { STEP32(0,32) }, 16*32*2 }; @@ -3685,6 +3643,7 @@ MACHINE_CONFIG_START(snk_state::marvins) SPEAKER(config, "mono").front_center(); MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_DATA_PENDING_CB(HOLDLINE("audiocpu", 0)) MCFG_DEVICE_ADD("ay1", AY8910, 2000000) /* verified on schematics */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) @@ -3901,6 +3860,13 @@ MACHINE_CONFIG_START(snk_state::fitegolf2) MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_fitegolf2) MACHINE_CONFIG_END +MACHINE_CONFIG_START(snk_state::countryc) + fitegolf(config); + /* basic machine hardware */ + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(countryc_cpuA_map) +MACHINE_CONFIG_END + MACHINE_CONFIG_START(snk_state::ikari) @@ -6574,13 +6540,6 @@ ROM_END /***********************************************************************/ -void snk_state::init_countryc() -{ - // replace coin counter with trackball select - m_maincpu->space(AS_PROGRAM).install_write_handler(0xc300, 0xc300, write8_delegate(FUNC(snk_state::countryc_trackball_w),this)); -} - - GAME( 1983, marvins, 0, marvins, marvins, snk_state, empty_init, ROT270, "SNK", "Marvin's Maze", 0 ) GAME( 1984, vangrd2, 0, vangrd2, vangrd2, snk_state, empty_init, ROT270, "SNK", "Vanguard II", 0 ) @@ -6604,7 +6563,7 @@ GAME( 1987, sathena, athena, athena, athena, snk_state, empty_init, RO GAME( 1988, fitegolf, 0, fitegolf, fitegolf, snk_state, empty_init, ROT0, "SNK", "Lee Trevino's Fighting Golf (World?)", 0 ) GAME( 1988, fitegolfu, fitegolf, fitegolf, fitegolfu, snk_state, empty_init, ROT0, "SNK", "Lee Trevino's Fighting Golf (US)", 0 ) GAME( 1988, fitegolf2, fitegolf, fitegolf2, fitegolfu, snk_state, empty_init, ROT0, "SNK", "Lee Trevino's Fighting Golf (US, Ver 2)", 0 ) -GAME( 1988, countryc, 0, fitegolf, countryc, snk_state, init_countryc,ROT0, "SNK", "Country Club", 0 ) +GAME( 1988, countryc, 0, countryc, countryc, snk_state, empty_init, ROT0, "SNK", "Country Club", 0 ) GAME( 1986, ikari, 0, ikari, ikari, snk_state, empty_init, ROT270, "SNK", "Ikari Warriors (US JAMMA)", 0 ) // distributed by Tradewest(?) GAME( 1986, ikaria, ikari, ikari, ikaria, snk_state, empty_init, ROT270, "SNK", "Ikari Warriors (US)", 0 ) // distributed by Tradewest(?) diff --git a/src/mame/includes/snk.h b/src/mame/includes/snk.h index e885ba1d566..cc25e97241a 100644 --- a/src/mame/includes/snk.h +++ b/src/mame/includes/snk.h @@ -15,8 +15,8 @@ class snk_state : public driver_device { public: - snk_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + snk_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_subcpu(*this, "sub"), @@ -27,7 +27,13 @@ public: m_spriteram(*this, "spriteram"), m_fg_videoram(*this, "fg_videoram"), m_bg_videoram(*this, "bg_videoram"), - m_tx_videoram(*this, "tx_videoram") { } + m_tx_videoram(*this, "tx_videoram"), + m_rot_io(*this, "P%uROT", 1U), + m_trackball_x_io(*this, "TRACKBALLX%u", 1U), + m_trackball_y_io(*this, "TRACKBALLY%u", 1U), + m_joymode_io(*this, "JOYSTICK_MODE"), + m_bonus_io(*this, "BONUS") + { } required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; @@ -42,11 +48,16 @@ public: required_shared_ptr<uint8_t> m_bg_videoram; required_shared_ptr<uint8_t> m_tx_videoram; + optional_ioport_array<2> m_rot_io; + optional_ioport_array<2> m_trackball_x_io; + optional_ioport_array<2> m_trackball_y_io; + optional_ioport m_joymode_io; + optional_ioport m_bonus_io; + int m_countryc_trackball; int m_last_value[2]; int m_cp_count[2]; - int m_marvins_sound_busy_flag; // FIXME this should be initialised on machine reset int m_sound_status; @@ -80,8 +91,6 @@ public: DECLARE_WRITE8_MEMBER(snk_cpuA_nmi_ack_w); DECLARE_READ8_MEMBER(snk_cpuB_nmi_trigger_r); DECLARE_WRITE8_MEMBER(snk_cpuB_nmi_ack_w); - DECLARE_WRITE8_MEMBER(marvins_soundlatch_w); - DECLARE_READ8_MEMBER(marvins_soundlatch_r); DECLARE_READ8_MEMBER(marvins_sound_nmi_ack_r); DECLARE_WRITE8_MEMBER(sgladiat_soundlatch_w); DECLARE_READ8_MEMBER(sgladiat_soundlatch_r); @@ -163,7 +172,6 @@ public: DECLARE_CUSTOM_INPUT_MEMBER(countryc_trackball_x); DECLARE_CUSTOM_INPUT_MEMBER(countryc_trackball_y); DECLARE_CUSTOM_INPUT_MEMBER(snk_bonus_r); - void init_countryc(); TILEMAP_MAPPER_MEMBER(marvins_tx_scan_cols); TILE_GET_INFO_MEMBER(marvins_get_tx_tile_info); TILE_GET_INFO_MEMBER(ikari_get_tx_tile_info); @@ -208,6 +216,7 @@ public: void gwar(machine_config &config); void psychos(machine_config &config); void fitegolf(machine_config &config); + void countryc(machine_config &config); void tdfever2(machine_config &config); void aso(machine_config &config); void gwara(machine_config &config); @@ -236,6 +245,7 @@ public: void aso_cpuB_map(address_map &map); void bermudat_cpuA_map(address_map &map); void bermudat_cpuB_map(address_map &map); + void countryc_cpuA_map(address_map &map); void gwar_cpuA_map(address_map &map); void gwar_cpuB_map(address_map &map); void gwara_cpuA_map(address_map &map); |