Eliminate custom_port_read and use ioport finders instead (nw)

This commit is contained in:
AJR 2018-12-26 18:25:03 -05:00
parent 61a555c347
commit cdf1993d1e
16 changed files with 73 additions and 113 deletions

View File

@ -391,21 +391,3 @@ void driver_device::flip_screen_y_set(u32 on)
updateflip();
}
}
/***************************************************************************
PORT READING HELPERS
***************************************************************************/
/*-------------------------------------------------
custom_port_read - act like input_port_read
but it is a custom port, it is useful for
e.g. input ports which expect the same port
repeated both in the upper and lower half
-------------------------------------------------*/
CUSTOM_INPUT_MEMBER(driver_device::custom_port_read)
{
const char *tag = (const char *)param;
return ioport(tag)->read();
}

View File

@ -157,10 +157,6 @@ public:
void irq7_line_hold(device_t &device);
void irq7_line_assert(device_t &device);
// generic input port helpers
DECLARE_CUSTOM_INPUT_MEMBER( custom_port_read );
virtual void driver_init();
protected:

View File

@ -95,7 +95,8 @@ public:
m_cram(*this, "cram"),
m_obj1_ram(*this, "obj1_ram"),
m_obj2_ram(*this, "obj2_ram"),
m_obj3_ram(*this, "obj3_ram")
m_obj3_ram(*this, "obj3_ram"),
m_pad(*this, "PAD_P%u", 1U)
{ }
required_device<cpu_device> m_maincpu;
@ -110,6 +111,8 @@ public:
required_shared_ptr<uint8_t> m_obj2_ram;
required_shared_ptr<uint8_t> m_obj3_ram;
optional_ioport_array<2> m_pad;
struct
{
uint8_t rxd;
@ -131,6 +134,8 @@ public:
DECLARE_WRITE8_MEMBER(skydest_i8741_1_w);
// DECLARE_WRITE_LINE_MEMBER(ym_irq);
template <int P> DECLARE_CUSTOM_INPUT_MEMBER(pad_r);
void init_skydest();
void init_cyclemb();
virtual void machine_start() override;
@ -662,6 +667,12 @@ void cyclemb_state::machine_reset()
skydest_i8741_reset();
}
template <int P>
CUSTOM_INPUT_MEMBER(cyclemb_state::pad_r)
{
return m_pad[P]->read();
}
static INPUT_PORTS_START( cyclemb )
PORT_START("SYSTEM")
@ -696,7 +707,7 @@ static INPUT_PORTS_START( cyclemb )
PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("P1_1")
PORT_BIT( 0x9f, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "PAD_P1")
PORT_BIT( 0x9f, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cyclemb_state, pad_r<0>, nullptr)
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("PAD_P1")
@ -719,7 +730,7 @@ static INPUT_PORTS_START( cyclemb )
PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("P2_1")
PORT_BIT( 0x9f, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "PAD_P2")
PORT_BIT( 0x9f, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cyclemb_state, pad_r<1>, nullptr)
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("PAD_P2")

View File

@ -125,7 +125,7 @@ void dbz_state::dbz_map(address_map &map)
map(0x4d4000, 0x4d401f).w(m_k053936_2, FUNC(k053936_device::ctrl_w));
map(0x4e0000, 0x4e0001).portr("P1_P2");
map(0x4e0002, 0x4e0003).portr("SYSTEM_DSW1");
map(0x4e4000, 0x4e4001).portr("DSW2");
map(0x4e4000, 0x4e4001).lr8("4e4000", [this]() { return uint8_t(m_dsw2->read()); });
map(0x4e8000, 0x4e8001).nopw();
map(0x4ec000, 0x4ec001).w(FUNC(dbz_state::dbzcontrol_w));
map(0x4f0000, 0x4f0001).w(FUNC(dbz_state::dbz_sound_command_w));
@ -213,10 +213,6 @@ static INPUT_PORTS_START( dbz )
PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
PORT_START("DSW2")
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "FAKE")
PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "FAKE")
PORT_START("FAKE")
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3,4")
PORT_DIPSETTING( 0x02, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) )

View File

@ -118,6 +118,7 @@ public:
, m_prot(*this, "prot")
, m_spritelut(*this, "spritelut")
, m_okibank(*this, "oki%ubank", 1)
, m_dsw(*this, "DSW")
, m_maincpu(*this, "maincpu")
, m_gfxdecode(*this, "gfxdecode")
, m_palette(*this, "palette")
@ -138,6 +139,7 @@ private:
optional_memory_region m_prot;
required_memory_region m_spritelut;
optional_memory_bank_array<2> m_okibank;
required_ioport m_dsw;
std::unique_ptr<uint16_t[]> m_lineram16;
@ -154,6 +156,11 @@ private:
/* misc */
int m_protindex;
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
template<int Layer> DECLARE_WRITE32_MEMBER(vram_w);
DECLARE_READ32_MEMBER(protdata_r);
template<int Chip> DECLARE_WRITE32_MEMBER(okibank_w);
@ -164,9 +171,6 @@ private:
uint32_t screen_update_dreamwld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(screen_vblank_dreamwld);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
void baryon_map(address_map &map);
void dreamwld_map(address_map &map);
void oki1_map(address_map &map);
@ -428,7 +432,7 @@ void dreamwld_state::baryon_map(address_map &map)
map(0x804400, 0x805fff).ram().share("vregs");
map(0xc00000, 0xc00003).portr("INPUTS");
map(0xc00004, 0xc00007).portr("c00004");
map(0xc00004, 0xc00007).lr16("c00004", [this]() { return uint16_t(m_dsw->read()); });
map(0xc0000c, 0xc0000f).w(FUNC(dreamwld_state::okibank_w<0>)); // sfx
map(0xc00018, 0xc00018).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // sfx
@ -469,10 +473,6 @@ static INPUT_PORTS_START( dreamwld )
PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_START("c00004")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW")
PORT_START("DSW")
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x0002, "2" )
@ -539,10 +539,6 @@ static INPUT_PORTS_START( rolcrush )
PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_START("c00004")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW")
PORT_START("DSW")
PORT_DIPUNUSED_DIPLOC( 0x0001, IP_ACTIVE_LOW, "SW2:1" ) /* As listed in service mode, but tested */
PORT_DIPUNUSED_DIPLOC( 0x0002, IP_ACTIVE_LOW, "SW2:2" ) /* These might have some use, requires investigation of code */
@ -601,10 +597,6 @@ static INPUT_PORTS_START( cutefght )
PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_START("c00004")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW")
PORT_START("DSW")
PORT_DIPUNUSED_DIPLOC( 0x0001, IP_ACTIVE_LOW, "SW2:1" ) /* As listed in service mode, but tested */
PORT_DIPUNUSED_DIPLOC( 0x0002, IP_ACTIVE_LOW, "SW2:2" ) /* These might have some use, requires investigation of code */
@ -666,10 +658,6 @@ static INPUT_PORTS_START( gaialast )
PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_START("c00004")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW")
PORT_START("DSW")
PORT_DIPNAME( 0x0003, 0x0001, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x0002, "1" )

View File

@ -221,10 +221,10 @@ void fuuki32_state::fuuki32_map(address_map &map)
map(0x600000, 0x601fff).ram().rw(m_fuukivid, FUNC(fuukivid_device::fuuki_sprram_r), FUNC(fuukivid_device::fuuki_sprram_w)); // Sprites
map(0x700000, 0x703fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // Palette
map(0x800000, 0x800003).portr("800000").nopw(); // Coin
map(0x810000, 0x810003).portr("810000").nopw(); // Player Inputs
map(0x880000, 0x880003).portr("880000"); // Service + DIPS
map(0x890000, 0x890003).portr("890000"); // More DIPS
map(0x800000, 0x800003).lr16("800000", [this]() { return uint16_t(m_system->read()); }).nopw(); // Coin
map(0x810000, 0x810003).lr16("810000", [this]() { return uint16_t(m_inputs->read()); }).nopw(); // Player Inputs
map(0x880000, 0x880003).lr16("880000", [this]() { return uint16_t(m_dsw1->read()); }); // Service + DIPS
map(0x890000, 0x890003).lr16("890000", [this]() { return uint16_t(m_dsw2->read()); }); // More DIPS
map(0x8c0000, 0x8c001f).ram().w(FUNC(fuuki32_state::vregs_w)).share("vregs"); // Video Registers
map(0x8d0000, 0x8d0003).ram(); // Flipscreen Related
@ -270,22 +270,6 @@ void fuuki32_state::fuuki32_sound_io_map(address_map &map)
***************************************************************************/
static INPUT_PORTS_START( asurabld )
PORT_START("800000")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "SYSTEM")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "SYSTEM")
PORT_START("810000")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "INPUTS")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "INPUTS")
PORT_START("880000")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW1")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW1")
PORT_START("890000")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW2")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW2")
PORT_START("SYSTEM")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )

View File

@ -1349,7 +1349,7 @@ void jaguar_state::r3000_map(address_map &map)
map(0x04f03000, 0x04f03fff).mirror(0x00008000).ram().share("gpuram");
map(0x04f10000, 0x04f103ff).rw(FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w));
map(0x04f16000, 0x04f1600b).r(FUNC(jaguar_state::cojag_gun_input_r)); // GPI02
map(0x04f17000, 0x04f17003).portr("SYSTEM"); // GPI03
map(0x04f17000, 0x04f17003).lr16("4f17000", [this]() { return uint16_t(m_system->read()); }); // GPI03
map(0x04f17800, 0x04f17803).w(FUNC(jaguar_state::latch_w)); // GPI04
map(0x04f17c00, 0x04f17c03).portr("P1_P2"); // GPI05
map(0x04f1a100, 0x04f1a13f).rw(FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w));
@ -1539,7 +1539,7 @@ void jaguar_state::jagcd_dsp_map(address_map &map)
*
*************************************/
/* "FAKE0" is read at 0x04f17000
/* "SYSTEM" is read at 0x04f17000
D23-20 = /SER-4-1
D19-16 = COINR4-1
D7 = /VSYNCNEQ
@ -1559,10 +1559,6 @@ static INPUT_PORTS_START( area51 )
PORT_BIT( 0xfe000000, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("SYSTEM")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "FAKE0")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "FAKE0")
PORT_START("FAKE0")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )
@ -1617,10 +1613,6 @@ static INPUT_PORTS_START( freezeat )
PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_START("SYSTEM")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "FAKE0")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "FAKE0")
PORT_START("FAKE0")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )
@ -1661,10 +1653,6 @@ static INPUT_PORTS_START( fishfren )
PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_START("SYSTEM")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "FAKE0")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "FAKE0")
PORT_START("FAKE0")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )
@ -1711,10 +1699,6 @@ static INPUT_PORTS_START( vcircle )
PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_START("SYSTEM")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "FAKE0")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "FAKE0")
PORT_START("FAKE0")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )

View File

@ -280,8 +280,8 @@ WRITE32_MEMBER(midvunit_state::tms32031_control_w)
READ32_MEMBER(midvunit_state::crusnwld_serial_status_r)
{
int status = m_midway_serial_pic->status_r(space,0);
return (ioport("991030")->read() & 0x7fff7fff) | (status << 31) | (status << 15);
uint16_t in1 = (m_in1->read() & 0x7fff) | (m_midway_serial_pic->status_r(space,0) << 15);
return in1 | in1 << 16;
}
@ -342,8 +342,8 @@ WRITE32_MEMBER(midvunit_state::bit_reset_w)
READ32_MEMBER(midvunit_state::offroadc_serial_status_r)
{
int status = m_midway_serial_pic2->status_r(space,0);
return (ioport("991030")->read() & 0x7fff7fff) | (status << 31) | (status << 15);
uint16_t in1 = (m_in1->read() & 0x7fff) | (m_midway_serial_pic2->status_r(space,0) << 15);
return in1 | in1 << 16;
}
@ -599,10 +599,10 @@ void midvunit_state::midvunit_map(address_map &map)
map(0x980080, 0x980080).noprw();
map(0x980082, 0x980083).r(FUNC(midvunit_state::midvunit_dma_trigger_r));
map(0x990000, 0x990000).nopr(); // link PAL (low 4 bits must == 4)
map(0x991030, 0x991030).portr("991030");
map(0x991030, 0x991030).lr16("991030", [this]() { return uint16_t(m_in1->read()); });
// AM_RANGE(0x991050, 0x991050) AM_READONLY // seems to be another port
map(0x991060, 0x991060).r(FUNC(midvunit_state::port0_r));
map(0x992000, 0x992000).portr("992000");
map(0x992000, 0x992000).lr16("992000", [this]() { return uint16_t(m_dsw->read()); });
map(0x993000, 0x993000).rw(FUNC(midvunit_state::adc_r), FUNC(midvunit_state::adc_w));
map(0x994000, 0x994000).w(FUNC(midvunit_state::midvunit_control_w));
map(0x995000, 0x995000).rw(FUNC(midvunit_state::midvunit_wheel_board_r), FUNC(midvunit_state::midvunit_wheel_board_w));
@ -649,14 +649,6 @@ void midvunit_state::midvplus_map(address_map &map)
*************************************/
static INPUT_PORTS_START( midvunit )
PORT_START("991030")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1")
PORT_START("992000")
PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW")
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW")
PORT_START("IN0")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )

View File

@ -298,16 +298,21 @@ void psikyo4_state::ps4_ymf_map(address_map &map)
}
CUSTOM_INPUT_MEMBER(psikyo4_state::system_r)
{
return m_system->read();
}
static INPUT_PORTS_START( hotgmck )
PORT_START("P1_P2")
PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "SYSTEM")
PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, psikyo4_state, system_r, nullptr)
PORT_BIT( 0x00ffff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0xff000000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, psikyo4_state,mahjong_ctrl_r, (void *)0)
PORT_BIT( 0xff000000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, psikyo4_state, mahjong_ctrl_r, (void *)0)
PORT_START("P3_P4")
PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "SYSTEM")
PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, psikyo4_state, system_r, nullptr)
PORT_BIT( 0x00ffff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0xff000000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, psikyo4_state,mahjong_ctrl_r, (void *)4)
PORT_BIT( 0xff000000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, psikyo4_state, mahjong_ctrl_r, (void *)4)
PORT_START("JP4")/* jumper pads 'JP4' on the PCB */
/* EEPROM is read here */

View File

@ -54,7 +54,7 @@ void stadhero_state::main_map(address_map &map)
map(0x240010, 0x240017).w(m_tilegen, FUNC(deco_bac06_device::pf_control_1_w));
map(0x260000, 0x261fff).rw(m_tilegen, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
map(0x30c000, 0x30c001).portr("INPUTS");
map(0x30c002, 0x30c003).portr("COIN");
map(0x30c002, 0x30c003).lr8("30c002", [this]() { return uint8_t(m_coin->read()); });
map(0x30c004, 0x30c005).portr("DSW").w(FUNC(stadhero_state::int_ack_w));
map(0x30c007, 0x30c007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
map(0x310000, 0x3107ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
@ -133,10 +133,6 @@ static INPUT_PORTS_START( stadhero )
PORT_DIPUNUSED( 0x8000, IP_ACTIVE_LOW )
PORT_START("COIN") /* 0x30c002 & 0x30c003 */
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "FAKE")
PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "FAKE")
PORT_START("FAKE")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* related to music/sound */
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* related to music/sound */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* related to music/sound */

View File

@ -35,7 +35,8 @@ public:
m_k053936_1(*this, "k053936_1"),
m_k053936_2(*this, "k053936_2"),
m_gfxdecode(*this, "gfxdecode"),
m_soundlatch(*this, "soundlatch")
m_soundlatch(*this, "soundlatch"),
m_dsw2(*this, "DSW2")
{ }
void dbz(machine_config &config);
@ -71,6 +72,8 @@ private:
required_device<gfxdecode_device> m_gfxdecode;
required_device<generic_latch_8_device> m_soundlatch;
required_ioport m_dsw2;
DECLARE_WRITE16_MEMBER(dbzcontrol_w);
DECLARE_WRITE16_MEMBER(dbz_sound_command_w);
DECLARE_WRITE16_MEMBER(dbz_sound_cause_nmi);

View File

@ -34,6 +34,10 @@ public:
, m_tilebank(*this, "tilebank")
, m_shared_ram(*this, "shared_ram")
, m_soundbank(*this, "soundbank")
, m_system(*this, "SYSTEM")
, m_inputs(*this, "INPUTS")
, m_dsw1(*this, "DSW1")
, m_dsw2(*this, "DSW2")
{ }
void fuuki32(machine_config &config);
@ -64,6 +68,11 @@ private:
required_memory_bank m_soundbank;
required_ioport m_system;
required_ioport m_inputs;
required_ioport m_dsw1;
required_ioport m_dsw2;
/* video-related */
tilemap_t *m_tilemap[4];
uint32_t m_spr_buffered_tilebank[2];

View File

@ -54,6 +54,7 @@ public:
, m_config_io(*this, "CONFIG")
, m_joy(*this, "JOY%u", 0U)
, m_buttons(*this, "BUTTONS%u", 0U)
, m_system(*this, "SYSTEM")
, m_is_r3000(false)
, m_is_cojag(false)
, m_hacks_enabled(false)
@ -128,6 +129,7 @@ private:
optional_ioport m_config_io;
optional_ioport_array<8> m_joy;
optional_ioport_array<8> m_buttons;
optional_ioport m_system;
// configuration
bool m_is_r3000;

View File

@ -69,6 +69,8 @@ public:
m_dcs(*this, "dcs"),
m_generic_paletteram_32(*this, "paletteram"),
m_optional_drivers(*this, "lamp%u", 0U),
m_in1(*this, "IN1"),
m_dsw(*this, "DSW"),
m_motion(*this, "MOTION") { }
void midvcommon(machine_config &config);
@ -185,6 +187,8 @@ private:
required_device<dcs_audio_device> m_dcs;
required_shared_ptr<uint32_t> m_generic_paletteram_32;
output_finder<8> m_optional_drivers;
optional_ioport m_in1;
optional_ioport m_dsw;
optional_ioport m_motion;
void postload();

View File

@ -29,12 +29,14 @@ public:
m_palette(*this, {"lpalette", "rpalette"}),
m_lscreen(*this, "lscreen"),
m_rscreen(*this, "rscreen"),
m_system(*this, "SYSTEM"),
m_keys(*this, "KEY.%u", 0)
{ }
void ps4big(machine_config &config);
void ps4small(machine_config &config);
DECLARE_CUSTOM_INPUT_MEMBER(system_r);
DECLARE_CUSTOM_INPUT_MEMBER(mahjong_ctrl_r);
private:
@ -61,6 +63,7 @@ private:
required_device_array<palette_device, 2> m_palette;
required_device<screen_device> m_lscreen;
required_device<screen_device> m_rscreen;
optional_ioport m_system;
optional_ioport_array<8> m_keys;
DECLARE_WRITE32_MEMBER(paletteram_w);

View File

@ -17,7 +17,10 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_soundlatch(*this, "soundlatch"),
m_spriteram(*this, "spriteram"),
m_pf1_data(*this, "pf1_data") { }
m_pf1_data(*this, "pf1_data"),
m_coin(*this, "COIN")
{
}
void stadhero(machine_config &config);
@ -32,6 +35,8 @@ private:
required_shared_ptr<uint16_t> m_spriteram;
required_shared_ptr<uint16_t> m_pf1_data;
required_ioport m_coin;
tilemap_t *m_pf1_tilemap;
DECLARE_WRITE16_MEMBER(int_ack_w);