diff options
author | 2015-08-14 11:49:04 +0200 | |
---|---|---|
committer | 2015-08-14 11:49:04 +0200 | |
commit | 6666b78c9489d99fa1d461ca7292e23f894d45b1 (patch) | |
tree | 9746a653ef27d40d5753a7cd00fe5123559b66c3 /src | |
parent | 792a6c3b1197b153cc44711d89c40bb1f80269a1 (diff) |
astrocde.c: reduce tagmap lookups (nw)
Diffstat (limited to 'src')
-rw-r--r-- | src/mame/drivers/astrocde.c | 31 | ||||
-rw-r--r-- | src/mame/includes/astrocde.h | 41 | ||||
-rw-r--r-- | src/mame/video/astrocde.c | 26 |
3 files changed, 74 insertions, 24 deletions
diff --git a/src/mame/drivers/astrocde.c b/src/mame/drivers/astrocde.c index 3b5544c8785..64a0f4ec61f 100644 --- a/src/mame/drivers/astrocde.c +++ b/src/mame/drivers/astrocde.c @@ -231,10 +231,11 @@ WRITE8_MEMBER(astrocde_state::seawolf2_sound_2_w)// Port 41 * *************************************/ +IOPORT_ARRAY_MEMBER(astrocde_state::trackball_inputs) { "TRACKX2", "TRACKY2", "TRACKX1", "TRACKY1" }; + CUSTOM_INPUT_MEMBER(astrocde_state::ebases_trackball_r) { - static const char *const names[] = { "TRACKX2", "TRACKY2", "TRACKX1", "TRACKY1" }; - return ioport(names[m_input_select])->read(); + return m_trackball[m_input_select]->read(); } @@ -261,7 +262,7 @@ READ8_MEMBER(astrocde_state::spacezap_io_r) { coin_counter_w(machine(), 0, (offset >> 8) & 1); coin_counter_w(machine(), 1, (offset >> 9) & 1); - return ioport("P3HANDLE")->read_safe(0xff); + return m_p3handle ? m_p3handle->read() : 0xff; } @@ -405,15 +406,15 @@ WRITE8_MEMBER(astrocde_state::profpac_banksw_w) m_profpac_bank = data; /* set the main banking */ - prog_space.install_read_bank(0x4000, 0xbfff, "bank1"); - membank("bank1")->set_base(memregion("user1")->base() + 0x8000 * bank); + prog_space.install_read_bank(0x4000, 0xbfff, m_bank1); + m_bank1->set_base(m_user1->base() + 0x8000 * bank); /* bank 0 reads video RAM in the 4000-7FFF range */ if (bank == 0) prog_space.install_read_handler(0x4000, 0x7fff, read8_delegate(FUNC(astrocde_state::profpac_videoram_r), this)); /* if we have a 640k EPROM board, map that on top of the 4000-7FFF range if specified */ - if ((data & 0x80) && memregion("user2")->base() != NULL) + if ((data & 0x80) && m_user2->base() != NULL) { /* Note: There is a jumper which could change the base offset to 0xa8 instead */ bank = data - 0x80; @@ -421,8 +422,16 @@ WRITE8_MEMBER(astrocde_state::profpac_banksw_w) /* if the bank is in range, map the appropriate bank */ if (bank < 0x28) { - prog_space.install_read_bank(0x4000, 0x7fff, "bank2"); - membank("bank2")->set_base(memregion("user2")->base() + 0x4000 * bank); + if (m_bank2) + { + prog_space.install_read_bank(0x4000, 0x7fff, m_bank2); + } + else + { + prog_space.install_read_bank(0x4000, 0x7fff, "bank2"); + m_bank2.findit(); + } + m_bank2->set_base(m_user2->base() + 0x4000 * bank); } else prog_space.unmap_read(0x4000, 0x7fff); @@ -456,10 +465,12 @@ READ8_MEMBER(astrocde_state::demndrgn_io_r) } +IOPORT_ARRAY_MEMBER(astrocde_state::joystick_inputs) { "MOVEX", "MOVEY" }; + + CUSTOM_INPUT_MEMBER(astrocde_state::demndragn_joystick_r) { - static const char *const names[] = { "MOVEX", "MOVEY" }; - return ioport(names[m_input_select])->read(); + return m_joystick[m_input_select]->read(); } diff --git a/src/mame/includes/astrocde.h b/src/mame/includes/astrocde.h index fe2c249de99..2b3abf7ff78 100644 --- a/src/mame/includes/astrocde.h +++ b/src/mame/includes/astrocde.h @@ -37,7 +37,26 @@ public: m_astrocade_sound1(*this, "astrocade1"), m_videoram(*this, "videoram"), m_protected_ram(*this, "protected_ram"), - m_screen(*this, "screen") { } + m_screen(*this, "screen"), + m_bank1(*this, "bank1"), + m_bank2(*this, "bank2"), + m_user1(*this, "user1"), + m_user2(*this, "user2"), + m_p1handle(*this, "P1HANDLE"), + m_p2handle(*this, "P2HANDLE"), + m_p3handle(*this, "P3HANDLE"), + m_p4handle(*this, "P4HANDLE"), + m_keypad0(*this, "KEYPAD0"), + m_keypad1(*this, "KEYPAD1"), + m_keypad2(*this, "KEYPAD2"), + m_keypad3(*this, "KEYPAD3"), + m_p1_knob(*this, "P1_KNOB"), + m_p2_knob(*this, "P2_KNOB"), + m_p3_knob(*this, "P3_KNOB"), + m_p4_knob(*this, "P4_KNOB"), + m_trackball(*this, trackball_inputs), + m_joystick(*this, joystick_inputs) + { } required_device<cpu_device> m_maincpu; optional_device<cpu_device> m_subcpu; @@ -47,6 +66,26 @@ public: optional_shared_ptr<UINT8> m_videoram; optional_shared_ptr<UINT8> m_protected_ram; required_device<screen_device> m_screen; + optional_memory_bank m_bank1; + optional_memory_bank m_bank2; + optional_memory_region m_user1; + optional_memory_region m_user2; + optional_ioport m_p1handle; + optional_ioport m_p2handle; + optional_ioport m_p3handle; + optional_ioport m_p4handle; + optional_ioport m_keypad0; + optional_ioport m_keypad1; + optional_ioport m_keypad2; + optional_ioport m_keypad3; + optional_ioport m_p1_knob; + optional_ioport m_p2_knob; + optional_ioport m_p3_knob; + optional_ioport m_p4_knob; + DECLARE_IOPORT_ARRAY(trackball_inputs); + optional_ioport_array<4> m_trackball; + DECLARE_IOPORT_ARRAY(joystick_inputs); + optional_ioport_array<2> m_joystick; UINT8 m_video_config; UINT8 m_sparkle[4]; diff --git a/src/mame/video/astrocde.c b/src/mame/video/astrocde.c index 962de8e7e2c..f2eac703d42 100644 --- a/src/mame/video/astrocde.c +++ b/src/mame/video/astrocde.c @@ -491,51 +491,51 @@ READ8_MEMBER(astrocde_state::astrocade_data_chip_register_r) break; case 0x10: /* player 1 handle */ - result = ioport("P1HANDLE")->read_safe(0xff); + result = m_p1handle? m_p1handle->read() : 0xff; break; case 0x11: /* player 2 handle */ - result = ioport("P2HANDLE")->read_safe(0xff); + result = m_p2handle? m_p2handle->read() : 0xff; break; case 0x12: /* player 3 handle */ - result = ioport("P3HANDLE")->read_safe(0xff); + result = m_p3handle? m_p3handle->read() : 0xff; break; case 0x13: /* player 4 handle */ - result = ioport("P4HANDLE")->read_safe(0xff); + result = m_p4handle? m_p4handle->read() : 0xff; break; case 0x14: /* keypad column 0 */ - result = ioport("KEYPAD0")->read_safe(0xff); + result = m_keypad0 ? m_keypad0->read() : 0xff; break; case 0x15: /* keypad column 1 */ - result = ioport("KEYPAD1")->read_safe(0xff); + result = m_keypad1 ? m_keypad1->read() : 0xff; break; case 0x16: /* keypad column 2 */ - result = ioport("KEYPAD2")->read_safe(0xff); + result = m_keypad2 ? m_keypad2->read() : 0xff; break; case 0x17: /* keypad column 3 */ - result = ioport("KEYPAD3")->read_safe(0xff); + result = m_keypad3 ? m_keypad3->read() : 0xff; break; case 0x1c: /* player 1 knob */ - result = ioport("P1_KNOB")->read_safe(0xff); + result = m_p1_knob ? m_p1_knob->read() : 0xff; break; case 0x1d: /* player 2 knob */ - result = ioport("P2_KNOB")->read_safe(0xff); + result = m_p2_knob ? m_p2_knob->read() : 0xff; break; case 0x1e: /* player 3 knob */ - result = ioport("P3_KNOB")->read_safe(0xff); + result = m_p3_knob ? m_p3_knob->read() : 0xff; break; case 0x1f: /* player 4 knob */ - result = ioport("P4_KNOB")->read_safe(0xff); + result = m_p4_knob ? m_p4_knob->read() : 0xff; break; } @@ -605,7 +605,7 @@ WRITE8_MEMBER(astrocde_state::astrocade_data_chip_register_w) case 0x17: /* noise volume register */ case 0x18: /* sound block transfer */ if (m_video_config & AC_SOUND_PRESENT) - machine().device<astrocade_device>("astrocade1")->astrocade_sound_w(space, offset, data); + m_astrocade_sound1->astrocade_sound_w(space, offset, data); break; case 0x19: /* expand register */ |