identified tkmag220 as a bad dump, there's corrupt data in most banks and it fails test (nw) (#6745)

* tkmag220 notes (nw)

* hook up banking for tkmag220 (nw)

* unfortunately it also looks like a bad dump (nw)

* sprite flip behavior seems connected to resolution (nw)
This commit is contained in:
David Haywood 2020-05-26 16:22:41 +01:00 committed by GitHub
parent e12bbc8cec
commit a5c2908540
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 197 additions and 65 deletions

View File

@ -371,7 +371,8 @@ READ16_MEMBER(sunplus_gcm394_base_device::ioarea_7860_porta_r)
WRITE16_MEMBER(sunplus_gcm394_base_device::ioarea_7860_porta_w)
{
LOGMASKED(LOG_GCM394_IO, "%s:sunplus_gcm394_base_device::ioarea_7860_porta_w %04x\n", machine().describe_context(), data);
m_porta_out(data);
if (m_porta_out)
m_porta_out(data);
}
READ16_MEMBER(sunplus_gcm394_base_device::ioarea_7861_porta_buffer_r)
@ -431,7 +432,8 @@ WRITE16_MEMBER(sunplus_gcm394_base_device::ioarea_7869_portb_buffer_w)
WRITE16_MEMBER(sunplus_gcm394_base_device::ioarea_7868_portb_w)
{
LOGMASKED(LOG_GCM394_IO, "%s:sunplus_gcm394_base_device::ioarea_7868_portb_w %04x\n", machine().describe_context(), data);
//m_portb_out(data);
if (m_portb_out)
m_portb_out(data);
}
READ16_MEMBER(sunplus_gcm394_base_device::ioarea_786a_portb_direction_r)
@ -470,6 +472,8 @@ WRITE16_MEMBER(sunplus_gcm394_base_device::ioarea_7870_portc_w)
{
LOGMASKED(LOG_GCM394_IO, "%s:sunplus_gcm394_base_device::ioarea_7870_portc_w %04x\n", machine().describe_context(), data);
m_7870 = data;
if (m_portc_out)
m_portc_out(data);
}
READ16_MEMBER(sunplus_gcm394_base_device::ioarea_7871_portc_buffer_r)
@ -478,6 +482,12 @@ READ16_MEMBER(sunplus_gcm394_base_device::ioarea_7871_portc_buffer_r)
return 0xffff;// m_7871;
}
WRITE16_MEMBER(sunplus_gcm394_base_device::ioarea_7871_portc_buffer_w)
{
LOGMASKED(LOG_GCM394_IO, "%s:sunplus_gcm394_base_device::ioarea_7871_portc_buffer_w %04x\n", machine().describe_context(), data);
}
READ16_MEMBER(sunplus_gcm394_base_device::ioarea_7872_portc_direction_r)
{
LOGMASKED(LOG_GCM394_IO, "%s:sunplus_gcm394_base_device::ioarea_7872_portc_direction_r\n", machine().describe_context());
@ -502,7 +512,58 @@ WRITE16_MEMBER(sunplus_gcm394_base_device::ioarea_7873_portc_attribute_w)
m_7873_portc_attribute = data;
}
// Port D
READ16_MEMBER(sunplus_gcm394_base_device::ioarea_7878_portd_r)
{
LOGMASKED(LOG_GCM394_IO, "%s:sunplus_gcm394_base_device::ioarea_7878_portd_r\n", machine().describe_context());
return m_portd_in();
}
WRITE16_MEMBER(sunplus_gcm394_base_device::ioarea_7878_portd_w)
{
LOGMASKED(LOG_GCM394_IO, "%s:sunplus_gcm394_base_device::ioarea_7878_portd_w %04x\n", machine().describe_context(), data);
//m_7878 = data;
if (m_portd_out)
m_portd_out(data);
}
READ16_MEMBER(sunplus_gcm394_base_device::ioarea_7879_portd_buffer_r)
{
LOGMASKED(LOG_GCM394_IO, "%s:sunplus_gcm394_base_device::ioarea_7879_portd_buffer_r\n", machine().describe_context());
return 0xffff;// m_7871;
}
WRITE16_MEMBER(sunplus_gcm394_base_device::ioarea_7879_portd_buffer_w)
{
LOGMASKED(LOG_GCM394_IO, "%s:sunplus_gcm394_base_device::ioarea_7879_portd_buffer_w %04x\n", machine().describe_context(), data);
}
READ16_MEMBER(sunplus_gcm394_base_device::ioarea_787a_portd_direction_r)
{
LOGMASKED(LOG_GCM394_IO, "%s:sunplus_gcm394_base_device::ioarea_787a_portd_direction_r\n", machine().describe_context());
return m_787a_portd_direction;
}
WRITE16_MEMBER(sunplus_gcm394_base_device::ioarea_787a_portd_direction_w)
{
LOGMASKED(LOG_GCM394_IO, "%s:sunplus_gcm394_base_device::ioarea_787a_portd_direction_w %04x\n", machine().describe_context(), data);
m_787a_portd_direction = data;
}
READ16_MEMBER(sunplus_gcm394_base_device::ioarea_787b_portd_attribute_r)
{
LOGMASKED(LOG_GCM394_IO, "%s:sunplus_gcm394_base_device::ioarea_787b_portd_attribute_r\n", machine().describe_context());
return m_787b_portd_attribute;
}
WRITE16_MEMBER(sunplus_gcm394_base_device::ioarea_787b_portd_attribute_w)
{
LOGMASKED(LOG_GCM394_IO, "%s:sunplus_gcm394_base_device::ioarea_787b_portd_attribute_w %04x\n", machine().describe_context(), data);
m_787b_portd_attribute = data;
}
READ16_MEMBER(sunplus_gcm394_base_device::unkarea_7882_r) { LOGMASKED(LOG_GCM394, "%s:sunplus_gcm394_base_device::unkarea_7882_r\n", machine().describe_context()); return 0xffff;// m_7882;
}
@ -652,7 +713,7 @@ WRITE16_MEMBER(sunplus_gcm394_base_device::unk_w)
void sunplus_gcm394_base_device::base_internal_map(address_map &map)
{
map(0x000000, 0x006fff).ram();
map(0x000000, 0x006fff).ram().share("mainram");
map(0x007000, 0x007fff).rw(FUNC(sunplus_gcm394_base_device::unk_r), FUNC(sunplus_gcm394_base_device::unk_w)); // catch unhandled
// ######################################################################################################################################################################################
@ -781,7 +842,8 @@ void sunplus_gcm394_base_device::base_internal_map(address_map &map)
// 783d
// 783e
// 7841
// 7840 - accessed by code in RAM when changing bank in tkmag220
// 7841 - ^^
// ######################################################################################################################################################################################
// 786x - 787x - IO related?
@ -799,19 +861,20 @@ void sunplus_gcm394_base_device::base_internal_map(address_map &map)
// 786c I/O PortB Latch / Wakeup
map(0x007870, 0x007870).rw(FUNC(sunplus_gcm394_base_device::ioarea_7870_portc_r) ,FUNC(sunplus_gcm394_base_device::ioarea_7870_portc_w)); // 7870 I/O PortC Data Register
map(0x007871, 0x007871).r(FUNC(sunplus_gcm394_base_device::ioarea_7871_portc_buffer_r)); // 7871 I/O PortC Buffer Register
map(0x007871, 0x007871).rw(FUNC(sunplus_gcm394_base_device::ioarea_7871_portc_buffer_r), FUNC(sunplus_gcm394_base_device::ioarea_7871_portc_buffer_w)); // 7871 I/O PortC Buffer Register
map(0x007872, 0x007872).rw(FUNC(sunplus_gcm394_base_device::ioarea_7872_portc_direction_r), FUNC(sunplus_gcm394_base_device::ioarea_7872_portc_direction_w)); // 7872 I/O PortC Direction Register
map(0x007873, 0x007873).rw(FUNC(sunplus_gcm394_base_device::ioarea_7873_portc_attribute_r), FUNC(sunplus_gcm394_base_device::ioarea_7873_portc_attribute_w)); // 7873 I/O PortC Attribute Register
// 7874 (data 0x1249) (bkrankp data 0x36db)
map(0x007878, 0x007878).rw(FUNC(sunplus_gcm394_base_device::ioarea_7878_portd_r) ,FUNC(sunplus_gcm394_base_device::ioarea_7878_portd_w)); // 7878 I/O PortD Data Register
map(0x007879, 0x007879).rw(FUNC(sunplus_gcm394_base_device::ioarea_7879_portd_buffer_r), FUNC(sunplus_gcm394_base_device::ioarea_7879_portd_buffer_w)); // 7879 I/O PortD Buffer Register
map(0x00787a, 0x00787a).rw(FUNC(sunplus_gcm394_base_device::ioarea_787a_portd_direction_r), FUNC(sunplus_gcm394_base_device::ioarea_787a_portd_direction_w)); // 787a I/O PortD Direction Register
map(0x00787b, 0x00787b).rw(FUNC(sunplus_gcm394_base_device::ioarea_787b_portd_attribute_r), FUNC(sunplus_gcm394_base_device::ioarea_787b_portd_attribute_w)); // 787b I/O PortD Attribute Register
// 787c (data 0x1249) (bkrankp data 0x36db)
// 787e (data 0x1249) (bkrankp data 0x36db)
// 7878 I/O PortD Data Register
// 7879 I/O PortD Buffer Register
// 787a I/O PortD Direction Register
// 787b I/O PortD Attribute Register
// 7880
map(0x007882, 0x007882).rw(FUNC(sunplus_gcm394_base_device::unkarea_7882_r), FUNC(sunplus_gcm394_base_device::unkarea_7882_w));
@ -1311,9 +1374,12 @@ void sunplus_gcm394_base_device::device_start()
m_porta_in.resolve_safe(0);
m_portb_in.resolve_safe(0);
m_portc_in.resolve_safe(0);
m_portd_in.resolve_safe(0);
m_porta_out.resolve();
m_portb_out.resolve();
m_portc_out.resolve();
m_portd_out.resolve();
m_space_read_cb.resolve_safe(0);
@ -1559,6 +1625,9 @@ uint16_t sunplus_gcm394_base_device::read_space(uint32_t offset)
return val;
}
void sunplus_gcm394_base_device::write_space(uint32_t offset, uint16_t data)
{
address_space& space = this->space(AS_PROGRAM);
@ -1572,6 +1641,23 @@ void sunplus_gcm394_base_device::write_space(uint32_t offset, uint16_t data)
}
}
READ16_MEMBER(sunplus_gcm394_base_device::speedup_hack_r)
{
u32 const pc = this->pc();
if (pc == m_speedup_pc)
this->spin_until_time(this->cycles_to_attotime(2000));
return m_mainram[m_speedup_address];
}
void sunplus_gcm394_base_device::install_speedup_hack(int address, int pc)
{
this->space(AS_PROGRAM).install_read_handler(address, address, read16_delegate(*this, FUNC(sunplus_gcm394_base_device::speedup_hack_r)));
m_speedup_address = address;
m_speedup_pc = pc;
}
void sunplus_gcm394_base_device::device_add_mconfig(machine_config &config)

View File

@ -34,17 +34,23 @@ public:
m_spg_video(*this, "spgvideo"),
m_spg_audio(*this, "spgaudio"),
m_internalrom(*this, "internal"),
m_mainram(*this, "mainram"),
m_porta_in(*this),
m_portb_in(*this),
m_portc_in(*this),
m_portd_in(*this),
m_porta_out(*this),
m_portb_out(*this),
m_portc_out(*this),
m_portd_out(*this),
m_nand_read_cb(*this),
m_csbase(0x20000),
m_romtype(0),
m_space_read_cb(*this),
m_space_write_cb(*this),
m_boot_mode(0),
m_cs_callback(*this, DEVICE_SELF, FUNC(sunplus_gcm394_base_device::default_cs_callback))
m_cs_callback(*this, DEVICE_SELF, FUNC(sunplus_gcm394_base_device::default_cs_callback)),
m_speedup_address(-1)
{
}
@ -53,8 +59,12 @@ public:
auto porta_in() { return m_porta_in.bind(); }
auto portb_in() { return m_portb_in.bind(); }
auto portc_in() { return m_portc_in.bind(); }
auto portd_in() { return m_portd_in.bind(); }
auto porta_out() { return m_porta_out.bind(); }
auto portb_out() { return m_portb_out.bind(); }
auto portc_out() { return m_portc_out.bind(); }
auto portd_out() { return m_portd_out.bind(); }
auto space_read_callback() { return m_space_read_cb.bind(); }
auto space_write_callback() { return m_space_write_cb.bind(); }
@ -80,6 +90,8 @@ public:
void set_romtype(int romtype) { m_romtype = romtype; }
void install_speedup_hack(int address, int pc);
protected:
virtual void device_start() override;
@ -94,12 +106,17 @@ protected:
required_device<gcm394_video_device> m_spg_video;
required_device<sunplus_gcm394_audio_device> m_spg_audio;
optional_memory_region m_internalrom;
required_shared_ptr<u16> m_mainram;
devcb_read16 m_porta_in;
devcb_read16 m_portb_in;
devcb_read16 m_portc_in;
devcb_read16 m_portd_in;
devcb_write16 m_porta_out;
devcb_write16 m_portb_out;
devcb_write16 m_portc_out;
devcb_write16 m_portd_out;
uint16_t m_dma_params[8][4];
@ -132,12 +149,16 @@ protected:
uint16_t m_786a_portb_direction;
uint16_t m_786b_portb_attribute;
uint16_t m_7872_portc_direction;
uint16_t m_7873_portc_attribute;
uint16_t m_787a_portd_direction;
uint16_t m_787b_portd_attribute;
uint16_t m_7870;
//uint16_t m_7871;
uint16_t m_7872_portc_direction;
uint16_t m_7873_portc_attribute;
uint16_t m_7882;
uint16_t m_7883;
@ -230,6 +251,9 @@ private:
DECLARE_WRITE16_MEMBER(unkarea_7835_w);
DECLARE_READ16_MEMBER(unkarea_782d_r);
DECLARE_WRITE16_MEMBER(unkarea_782d_w);
// Port A
DECLARE_READ16_MEMBER(ioarea_7860_porta_r);
DECLARE_WRITE16_MEMBER(ioarea_7860_porta_w);
@ -250,21 +274,26 @@ private:
DECLARE_READ16_MEMBER(ioarea_786b_portb_attribute_r);
DECLARE_WRITE16_MEMBER(ioarea_786b_portb_attribute_w);
DECLARE_READ16_MEMBER(unkarea_782d_r);
DECLARE_WRITE16_MEMBER(unkarea_782d_w);
// Port C
DECLARE_READ16_MEMBER(ioarea_7870_portc_r);
DECLARE_WRITE16_MEMBER(ioarea_7870_portc_w);
DECLARE_READ16_MEMBER(ioarea_7871_portc_buffer_r);
DECLARE_WRITE16_MEMBER(ioarea_7871_portc_buffer_w);
DECLARE_READ16_MEMBER(ioarea_7872_portc_direction_r);
DECLARE_WRITE16_MEMBER(ioarea_7872_portc_direction_w);
DECLARE_READ16_MEMBER(ioarea_7873_portc_attribute_r);
DECLARE_WRITE16_MEMBER(ioarea_7873_portc_attribute_w);
// Port D
DECLARE_READ16_MEMBER(ioarea_7878_portd_r);
DECLARE_WRITE16_MEMBER(ioarea_7878_portd_w);
DECLARE_READ16_MEMBER(ioarea_7879_portd_buffer_r);
DECLARE_WRITE16_MEMBER(ioarea_7879_portd_buffer_w);
DECLARE_READ16_MEMBER(ioarea_787a_portd_direction_r);
DECLARE_WRITE16_MEMBER(ioarea_787a_portd_direction_w);
DECLARE_READ16_MEMBER(ioarea_787b_portd_attribute_r);
DECLARE_WRITE16_MEMBER(ioarea_787b_portd_attribute_w);
DECLARE_READ16_MEMBER(unkarea_7882_r);
DECLARE_WRITE16_MEMBER(unkarea_7882_w);
DECLARE_READ16_MEMBER(unkarea_7883_r);
@ -330,6 +359,10 @@ private:
// config registers (external pins)
int m_boot_mode; // 2 pins determine boot mode, likely only read at power-on
sunplus_gcm394_cs_callback_device m_cs_callback;
DECLARE_READ16_MEMBER(speedup_hack_r);
int m_speedup_address;
int m_speedup_pc;
};

View File

@ -870,7 +870,7 @@ void gcm394_base_video_device::draw_sprite(const rectangle& cliprect, uint32_t s
uint32_t palette_offset;
// different attribute use?
if (addressing_mode == 0) // smartfp, paccon
if (screenwidth == 320)
{
flip_x = (attr & TILE_X_FLIP);
bpp = attr & 0x0003;
@ -879,9 +879,9 @@ void gcm394_base_video_device::draw_sprite(const rectangle& cliprect, uint32_t s
}
else
{
flip_x = 0;// (attr & TILE_X_FLIP); // wrlshunt, jak_totm, jak_s550 do not want this to be flip bit, gormiti does. also configurable, or error in spriteram content?
flip_x = 0;// (attr & TILE_X_FLIP);
bpp = attr & 0x0003;
yflipmask = 0;// attr& TILE_Y_FLIP ? h - 1 : 0; // see flipx comment
yflipmask = 0;// attr& TILE_Y_FLIP ? h - 1 : 0;
palette_offset = (attr & 0x0f00) >> 4;
}

View File

@ -329,7 +329,7 @@ static INPUT_PORTS_START( tkmag220 )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_START("IN2")
PORT_DIPNAME( 0x0001, 0x0001, "IN2" )
PORT_DIPNAME( 0x0001, 0x0001, "IN2" ) // set 0x0001 and 0x0002 on to get a test mode (some of the ROM banks fail their test, but dumps were repeatable, should be verified on another unit)
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
@ -344,27 +344,13 @@ static INPUT_PORTS_START( tkmag220 )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Menu")
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
@ -410,7 +396,7 @@ ROM_START( tkmag220 )
//ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP )
ROM_REGION( 0x8000000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "u1g-2a.u2", 0x0000000, 0x8000000, CRC(0fd769a1) SHA1(df19402bcd20075483d63fb98fb3fa42bd33ccfd) )
ROM_LOAD16_WORD_SWAP( "u1g-2a.u2", 0x0000000, 0x8000000, BAD_DUMP CRC(0fd769a1) SHA1(df19402bcd20075483d63fb98fb3fa42bd33ccfd) ) // several sections of ROM appear to be erased, and fails ROM test, some games have missing graphics pulling from those areas, others crash due to missing code
ROM_END
@ -422,8 +408,28 @@ void tkmag220_game_state::tkmag220(machine_config &config)
m_maincpu->porta_in().set_ioport("IN0");
m_maincpu->portb_in().set_ioport("IN1");
m_maincpu->portc_in().set_ioport("IN2");
m_maincpu->portd_out().set(FUNC(tkmag220_game_state::tkmag220_portd_w));
}
void tkmag220_game_state::tkmag220_portd_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
if (m_maincpu->pc() < 0x10000)
{
logerror("%s: port write %04x\n", machine().describe_context().c_str(), data);
int newbank = 0;
if (data & 0x8000) newbank |= 1;
if (data & 0x0002) newbank |= 2;
if (data & 0x0004) newbank |= 4;
m_upperbase = newbank * (0x1000000 / 2);
}
}
READ16_MEMBER(tkmag220_game_state::cs0_r)
{
// [:] installing cs0 handler start_address 00000000 end_address 007fffff
@ -442,7 +448,6 @@ void tkmag220_game_state::machine_reset()
m_maincpu->set_pal_sprites_hack(0x000);
m_maincpu->set_pal_back_hack(0x000);
m_maincpu->set_alt_tile_addressing_hack(1);
}
void gormiti_game_state::machine_reset()
@ -451,6 +456,7 @@ void gormiti_game_state::machine_reset()
m_maincpu->set_alt_tile_addressing_hack(1);
}
// the JAKKS ones of these seem to be known as 'Generalplus GPAC500' hardware?
CONS(2009, smartfp, 0, 0, base, smartfp, gcm394_game_state, empty_init, "Fisher-Price", "Fun 2 Learn Smart Fit Park (UK)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
CONS(2009, smartfps, smartfp, 0, base, smartfp, gcm394_game_state, empty_init, "Fisher-Price", "Fun 2 Learn Smart Fit Park (Spain)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)

View File

@ -320,6 +320,11 @@ void lazertag_game_state::machine_reset()
m_maincpu->set_pal_sprites_hack(0x800);
}
void paccon_game_state::machine_reset()
{
jak_s500_game_state::machine_reset();
m_maincpu->install_speedup_hack(0x6593, 0x30033);
}
ROM_START( paccon )
@ -487,8 +492,10 @@ which is also found in the Wireless Air 60 ROM.
*/
// also sold as "Pac-Man Connect & Play 35th Anniversary" (same ROM?)
CONS(2012, paccon, 0, 0, paccon, paccon, jak_s500_game_state, init_wrlshunt, "Bandai", "Pac-Man Connect & Play (Feb 14 2012 10:46:23)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
CONS(2012, paccon, 0, 0, paccon, paccon, paccon_game_state, init_wrlshunt, "Bandai", "Pac-Man Connect & Play (Feb 14 2012 10:46:23)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
CONS(2008, lazertag, 0, 0, wrlshunt, jak_s500, lazertag_game_state, init_wrlshunt, "Tiger Electronics", "Lazer Tag Video Game Module", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)

View File

@ -88,27 +88,12 @@ protected:
virtual void machine_reset() override;
/*
virtual DECLARE_READ16_MEMBER(porta_r) override
{
return machine().rand();
}
virtual DECLARE_READ16_MEMBER(portb_r) override
{
return machine().rand();
}
virtual DECLARE_WRITE16_MEMBER(porta_w) override
{
}
*/
private:
int m_upperbase;
virtual DECLARE_READ16_MEMBER(cs0_r) override;
void tkmag220_portd_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
};

View File

@ -85,6 +85,21 @@ private:
};
class paccon_game_state : public jak_s500_game_state
{
public:
paccon_game_state(const machine_config& mconfig, device_type type, const char* tag) :
jak_s500_game_state(mconfig, type, tag)
{
}
protected:
//virtual void machine_start() override;
virtual void machine_reset() override;
private:
};
#endif // MAME_INCLUDES_GENERALPLUS_GPL16250_ROMRAM_H