mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
6ee5a3beb9
16
hash/pi_storyreader_cart.xml
Normal file
16
hash/pi_storyreader_cart.xml
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
<softwarelist name="pi_storyreader_cart" description="Publications International Ltd Story Reader cartridges">
|
||||
|
||||
<software name="ts2" supported="no">
|
||||
<description>Toy Story 2</description>
|
||||
<year>200?</year>
|
||||
<publisher>Publications International Ltd / Disney</publisher>
|
||||
<part name="cart" interface="pi_storyreader_cart">
|
||||
<dataarea name="rom" size="0x100000">
|
||||
<rom name="storyreaderv1_toystory2.bin" size="0x100000" crc="496fe7b5" sha1="4a66e1e7ec0fdcfe578d60437fcbaaa19f7ac2d3" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</softwarelist>
|
16
hash/pi_storyreader_v2_cart.xml
Normal file
16
hash/pi_storyreader_v2_cart.xml
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
<softwarelist name="pi_storyreader_v2_cart" description="Publications International Ltd Story Reader 2.0 cartridges">
|
||||
|
||||
<software name="ts2" supported="no">
|
||||
<description>Toy Story 2</description>
|
||||
<year>200?</year>
|
||||
<publisher>Publications International Ltd / Disney</publisher>
|
||||
<part name="cart" interface="pi_storyreader_v2_cart">
|
||||
<dataarea name="rom" size="0x100000">
|
||||
<rom name="storyreaderv2_toystory2.bin" size="0x100000" crc="b3b4b613" sha1="0e0bd3a9865ac35a0c8c0dae9cfaac15f5b30a89" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</softwarelist>
|
@ -3835,6 +3835,7 @@ files {
|
||||
MAME_DIR .. "src/mame/drivers/unkmandd.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/bbl380.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/actions_atj2279b.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/pubint_storyreader.cpp",
|
||||
}
|
||||
|
||||
createMESSProjects(_target, _subtarget, "ultimachine")
|
||||
|
@ -126,6 +126,9 @@ public:
|
||||
void elan_eu3a05(machine_config &config);
|
||||
void airblsjs(machine_config& config);
|
||||
|
||||
void elan_sudoku(machine_config &config);
|
||||
|
||||
|
||||
private:
|
||||
// screen updates
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
@ -137,6 +140,7 @@ private:
|
||||
|
||||
void elan_eu3a05_bank_map(address_map &map);
|
||||
void elan_eu3a05_map(address_map &map);
|
||||
void elan_sudoku_map(address_map &map);
|
||||
|
||||
// driver_device overrides
|
||||
virtual void machine_start() override;
|
||||
@ -214,6 +218,16 @@ void elan_eu3a05_state::elan_eu3a05_map(address_map &map)
|
||||
//map(0xfffe, 0xffff).r(m_sys, FUNC(elan_eu3a05commonsys_device::irq_vector_r)); // allow normal IRQ for brk
|
||||
}
|
||||
|
||||
// default e000 mapping is the same as eu3a14, other registers seem closer to eua05, probably a different chip type
|
||||
void elan_eu3a05_state::elan_sudoku_map(address_map& map)
|
||||
{
|
||||
elan_eu3a05_map(map);
|
||||
map(0xe000, 0xffff).rom().region("maincpu", 0x0000);
|
||||
// not sure how these work, might be a modified 6502 core instead.
|
||||
map(0xfffa, 0xfffb).r(m_sys, FUNC(elan_eu3a05commonsys_device::nmi_vector_r)); // custom vectors handled with NMI for now
|
||||
//map(0xfffe, 0xffff).r(m_sys, FUNC(elan_eu3a05commonsys_device::irq_vector_r)); // allow normal IRQ for brk
|
||||
}
|
||||
|
||||
|
||||
void elan_eu3a05_state::elan_eu3a05_bank_map(address_map &map)
|
||||
{
|
||||
@ -286,6 +300,86 @@ static INPUT_PORTS_START( airblsjs )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( sudoku )
|
||||
PORT_START("IN0")
|
||||
PORT_DIPNAME( 0x01, 0x01, "IN0" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_DIPNAME( 0x01, 0x01, "IN1" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_DIPNAME( 0x01, 0x01, "IN2" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
void elan_eu3a05_state::machine_start()
|
||||
{
|
||||
@ -447,6 +541,13 @@ void elan_eu3a05_state::elan_eu3a05(machine_config &config)
|
||||
*/
|
||||
}
|
||||
|
||||
void elan_eu3a05_state::elan_sudoku(machine_config& config)
|
||||
{
|
||||
elan_eu3a05(config);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &elan_eu3a05_state::elan_sudoku_map);
|
||||
}
|
||||
|
||||
|
||||
void elan_eu3a05_state::airblsjs(machine_config& config)
|
||||
{
|
||||
elan_eu3a05(config);
|
||||
@ -476,6 +577,14 @@ ROM_START( airblsjs )
|
||||
ROM_LOAD( "airblsjs.bin", 0x000000, 0x400000, BAD_DUMP CRC(d10a6a84) SHA1(fa65f06e7da229006ddaffb245eef2cc4f90a66d) ) // ROM probably ok, but needs verification pass
|
||||
ROM_END
|
||||
|
||||
ROM_START( sudoelan )
|
||||
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "sudoku.bin", 0x00000, 0x100000, CRC(c2596173) SHA1(cc74932648b577b735151014e8c04ed778e11704) )
|
||||
ROM_RELOAD(0x100000,0x100000)
|
||||
ROM_RELOAD(0x200000,0x100000)
|
||||
ROM_RELOAD(0x300000,0x100000)
|
||||
ROM_END
|
||||
|
||||
|
||||
CONS( 2004, rad_sinv, 0, 0, elan_eu3a05, rad_sinv, elan_eu3a05_state, empty_init, "Radica (licensed from Taito)", "Space Invaders [Lunar Rescue, Colony 7, Qix, Phoenix] (Radica, Arcade Legends TV Game)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // "5 Taito games in 1"
|
||||
|
||||
@ -483,3 +592,5 @@ CONS( 2004, rad_tetr, 0, 0, elan_eu3a05, rad_tetr, elan_eu3a05_state, empty_init
|
||||
|
||||
// ROM contains the string "Credit:XiAn Hummer Software Studio(CHINA) Tel:86-29-84270600 Email:HummerSoft@126.com" PCB has datecode of "050423" (23rd April 2005)
|
||||
CONS( 2005, airblsjs, 0, 0, airblsjs, airblsjs, elan_eu3a05_state, empty_init, "Advance Bright Ltd", "Air-Blaster Joystick (AB1500, PAL)", MACHINE_NOT_WORKING )
|
||||
|
||||
CONS( 2006, sudoelan, 0, 0, elan_sudoku, sudoku, elan_eu3a05_state, empty_init, "Senario / All in 1 Products Ltd", "Ultimate Sudoku TV Edition 3-in-1", MACHINE_NOT_WORKING )
|
||||
|
@ -421,6 +421,34 @@ private:
|
||||
required_ioport m_plunger;
|
||||
};
|
||||
|
||||
class nes_vt_sudoku_state : public nes_vt_state
|
||||
{
|
||||
public:
|
||||
nes_vt_sudoku_state(const machine_config& mconfig, device_type type, const char* tag) :
|
||||
nes_vt_state(mconfig, type, tag),
|
||||
m_io0(*this,"IO0"),
|
||||
m_io1(*this,"IO1")
|
||||
{ }
|
||||
|
||||
void init_sudoku();
|
||||
|
||||
void nes_vt_sudoku(machine_config& config);
|
||||
|
||||
protected:
|
||||
//virtual void machine_start() override;
|
||||
//virtual void machine_reset() override;
|
||||
|
||||
private:
|
||||
DECLARE_READ8_MEMBER(in0_r);
|
||||
DECLARE_READ8_MEMBER(in1_r);
|
||||
DECLARE_WRITE8_MEMBER(in0_w);
|
||||
|
||||
void nes_vt_sudoku_map(address_map& map);
|
||||
|
||||
required_ioport m_io0;
|
||||
required_ioport m_io1;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1510,6 +1538,19 @@ WRITE8_MEMBER(nes_vt_ablpinb_state::ablpinb_in0_w)
|
||||
logerror("ablpinb_in0_w %02x\n", data);
|
||||
}
|
||||
|
||||
READ8_MEMBER(nes_vt_sudoku_state::in0_r)
|
||||
{
|
||||
return machine().rand();
|
||||
}
|
||||
|
||||
READ8_MEMBER(nes_vt_sudoku_state::in1_r)
|
||||
{
|
||||
return machine().rand();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nes_vt_sudoku_state::in0_w)
|
||||
{
|
||||
}
|
||||
|
||||
void nes_vt_state::nes_vt_map(address_map &map)
|
||||
{
|
||||
@ -1552,6 +1593,15 @@ void nes_vt_ablpinb_state::nes_vt_ablpinb_map(address_map& map)
|
||||
map(0x4017, 0x4017).r(FUNC(nes_vt_ablpinb_state::ablpinb_in1_r));
|
||||
}
|
||||
|
||||
void nes_vt_sudoku_state::nes_vt_sudoku_map(address_map& map)
|
||||
{
|
||||
nes_vt_map(map);
|
||||
|
||||
// override the inputs as specific non-standard 'controller' behavior is needed here and adding it to the generic NES controller bus wouldn't make sense.
|
||||
map(0x4016, 0x4016).rw(FUNC(nes_vt_sudoku_state::in0_r),FUNC(nes_vt_sudoku_state::in0_w));
|
||||
map(0x4017, 0x4017).r(FUNC(nes_vt_sudoku_state::in1_r));
|
||||
}
|
||||
|
||||
/* Some later VT models have more RAM */
|
||||
void nes_vt_state::nes_vt_xx_map(address_map &map)
|
||||
{
|
||||
@ -1783,6 +1833,14 @@ void nes_vt_ablpinb_state::nes_vt_ablpinb(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_ablpinb_state::nes_vt_ablpinb_map);
|
||||
}
|
||||
|
||||
void nes_vt_sudoku_state::nes_vt_sudoku(machine_config &config)
|
||||
{
|
||||
nes_vt_base(config);
|
||||
|
||||
// override for controllers
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_sudoku_state::nes_vt_sudoku_map);
|
||||
}
|
||||
|
||||
void nes_vt_state::nes_vt(machine_config &config)
|
||||
{
|
||||
nes_vt_base(config);
|
||||
@ -1968,6 +2026,48 @@ static INPUT_PORTS_START( ablpinb )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("NUDGE" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( sudoku )
|
||||
PORT_START("IO0")
|
||||
PORT_START("IO1")
|
||||
INPUT_PORTS_END
|
||||
|
||||
void nes_vt_sudoku_state::init_sudoku()
|
||||
{
|
||||
u8 *src = memregion("mainrom")->base();
|
||||
int len = memregion("mainrom")->bytes();
|
||||
|
||||
std::vector<u8> buffer(len);
|
||||
{
|
||||
for (int i = 0; i < len; i += 8)
|
||||
{
|
||||
buffer[i+0] = src[i+5];
|
||||
buffer[i+1] = src[i+4];
|
||||
buffer[i+2] = src[i+7];
|
||||
buffer[i+3] = src[i+6];
|
||||
buffer[i+4] = src[i+1];
|
||||
buffer[i+5] = src[i+0];
|
||||
buffer[i+6] = src[i+3];
|
||||
buffer[i+7] = src[i+2];
|
||||
}
|
||||
|
||||
std::copy(buffer.begin(), buffer.end(), &src[0]);
|
||||
}
|
||||
|
||||
if (0)
|
||||
{
|
||||
FILE *fp;
|
||||
char filename[256];
|
||||
sprintf(filename,"decrypted_%s", machine().system().name);
|
||||
fp=fopen(filename, "w+b");
|
||||
if (fp)
|
||||
{
|
||||
fwrite(src, len, 1, fp);
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
ROM_START( vdogdeme )
|
||||
ROM_REGION( 0x100000, "mainrom", 0 )
|
||||
@ -1979,6 +2079,7 @@ ROM_START( vdogdemo )
|
||||
ROM_LOAD( "rom.bin", 0x00000, 0x80000, CRC(054af705) SHA1(e730aeaa94b9cc28aa8b512a5bf411ec45226831) )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( pinkjelly )
|
||||
ROM_REGION( 0x200000, "mainrom", 0 )
|
||||
ROM_LOAD( "seesaw.bin", 0x00000, 0x200000, CRC(67b5a079) SHA1(36ebfd64809af072b73acfa3a426b57017851bf4) )
|
||||
@ -2004,6 +2105,11 @@ ROM_START( vtboxing )
|
||||
ROM_LOAD( "rom.bin", 0x00000, 0x80000, CRC(c115b1af) SHA1(82106e1c11c3279c5d8731c112f713fa3f290125) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( sudokuv )
|
||||
ROM_REGION( 0x80000, "mainrom", 0 )
|
||||
ROM_LOAD( "sudoku2.bin", 0x00000, 0x80000, CRC(d1ffcc1e) SHA1(2010e60933a08d0b9271ef37f338758aacba6d2d) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( mc_dgear )
|
||||
ROM_REGION( 0x400000, "mainrom", 0 )
|
||||
ROM_LOAD( "dreamgear 75-in-1.prg", 0x00000, 0x400000, CRC(9aabcb8f) SHA1(aa9446b7777fa64503871225fcaf2a17aafd9af1) )
|
||||
@ -2032,6 +2138,20 @@ ROM_START( lxcmcysw )
|
||||
ROM_LOAD( "jl2365swr-1.u2", 0x00000, 0x4000000, CRC(60ece391) SHA1(655de6b36ba596d873de2839522b948ccf45e006) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( lxcmcyfz )
|
||||
ROM_REGION( 0x4000000, "mainrom", 0 )
|
||||
// sub-board was marked for 2GB capacity (A0-A26 address lines), but only address lines A0-A24 are connected to the chip
|
||||
ROM_LOAD( "jl2365_frozen.u1", 0x00000, 0x4000000, CRC(64d4c708) SHA1(1bc2d161326ce3039ab9ba46ad62695060cfb2e1) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( lxcmc250 )
|
||||
ROM_REGION( 0x4000000, "mainrom", 0 )
|
||||
// sub-board was marked for 2GB capacity (A0-A26 address lines), but only address lines A0-A24 are connected to the chip
|
||||
ROM_LOAD( "cca250in1.u1", 0x00000, 0x4000000, CRC(6ccd6ad6) SHA1(fafed339097c3d1538faa306021a8373c1b799b3) )
|
||||
ROM_END
|
||||
|
||||
|
||||
|
||||
ROM_START( cybar120 )
|
||||
ROM_REGION( 0x2000000, "mainrom", 0 )
|
||||
ROM_LOAD( "m2500p-vt09-epson,20091222ver05,_30r-sx1067-01_pcb,_12r0cob128m_12001-3d05_fw.bin", 0x00000, 0x1000000, CRC(f7138980) SHA1(de31264ee3a5a5c77a86733b2e2d6845fee91ea5) )
|
||||
@ -2329,6 +2449,11 @@ CONS( 200?, vtboxing, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_init, "VRT
|
||||
// 050329 (29th March 2005) date on PCB
|
||||
CONS( 2005, ablpinb, 0, 0, nes_vt_ablpinb, ablpinb, nes_vt_ablpinb_state, empty_init, "Advance Bright Ltd", "Pinball (P8002, ABL TV Game)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
|
||||
|
||||
// Black pad marked 'SUDOKU' with tails on the S and U characters looping over the logo
|
||||
// Has 2 sets of 4 buttons in circular 'direction pad' layouts (on the left for directions, on the right for functions) and 9 red numbered buttons with red power LED on left of them, and reset button on right
|
||||
CONS( 200?, sudokuv, 0, 0, nes_vt_sudoku, sudoku, nes_vt_sudoku_state, init_sudoku, "<unknown>", "Plug and Play Sudoku (VT based)", MACHINE_NOT_WORKING )
|
||||
|
||||
|
||||
// should be VT03 based
|
||||
// for testing 'Shark', 'Octopus', 'Harbor', and 'Earth Fighter' use the extended colour modes, other games just seem to use standard NES modes
|
||||
@ -2360,10 +2485,11 @@ CONS( 200?, dgun2500, 0, 0, nes_vt_dg, nes_vt, nes_vt_dg_state, empty_init, "
|
||||
// don't even get to menu. very enhanced chipset, VT368/9?
|
||||
CONS( 2012, dgun2561, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "dreamGEAR", "dreamGEAR My Arcade Portable Gaming System (DGUN-2561)", MACHINE_NOT_WORKING )
|
||||
CONS( 200?, lxcmcy, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade", MACHINE_NOT_WORKING )
|
||||
CONS( 200?, lxcmc250, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - 250-in-1 (JL2375)", MACHINE_NOT_WORKING )
|
||||
CONS( 200?, lxcmcysw, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - Star Wars Rebels", MACHINE_NOT_WORKING )
|
||||
CONS( 200?, lxcmcyfz, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - Frozen", MACHINE_NOT_WORKING )
|
||||
// Also Lexibook Compact Cyber Arcade - Disney Princesses
|
||||
// Lexibook Compact Cyber Arcade - Cars
|
||||
// Lexibook Compact Cyber Arcade - Frozen
|
||||
// Lexibook Compact Cyber Arcade - Paw Patrol
|
||||
// Lexibook Compact Cyber Arcade - Barbie
|
||||
// Lexibook Compact Cyber Arcade - Finding Dory
|
||||
@ -2372,6 +2498,7 @@ CONS( 200?, lxcmcysw, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "
|
||||
// more?
|
||||
|
||||
|
||||
|
||||
// boots, same platform with scrambled opcodes as FC pocket
|
||||
// palette issues in some games because they actually use the old VT style palette
|
||||
// but no way to switch?
|
||||
@ -2384,6 +2511,8 @@ CONS( 2015, dgun2573, 0, 0, nes_vt_fp, nes_vt, nes_vt_hh_state, empty_init, "
|
||||
CONS( 200?, polmega, 0, 0, nes_vt_vh2009, nes_vt, nes_vt_vh2009_state, empty_init, "Polaroid", "Megamax GPD001SDG", MACHINE_NOT_WORKING )
|
||||
CONS( 200?, silv35, 0, 0, nes_vt_vh2009, nes_vt, nes_vt_vh2009_state, empty_init, "SilverLit", "35 in 1 Super Twins", MACHINE_NOT_WORKING )
|
||||
|
||||
|
||||
|
||||
// same encryption as above, but seems like newer hardware (or the above aren't using most of the features)
|
||||
CONS( 200?, lpgm240, 0, 0, nes_vt_vh2009, nes_vt, nes_vt_vh2009_state, empty_init, "<unknown>", "Let's Play! Game Machine 240 in 1", MACHINE_NOT_WORKING ) // mini 'retro-arcade' style cabinet
|
||||
|
||||
|
171
src/mame/drivers/pubint_storyreader.cpp
Normal file
171
src/mame/drivers/pubint_storyreader.cpp
Normal file
@ -0,0 +1,171 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:David Haywood
|
||||
/******************************************************************************
|
||||
|
||||
Non-video 'electronic book' reader that takes cartridges
|
||||
|
||||
Cartridges are accessed using serial read methods, contain data, not code
|
||||
so must be internal ROMs on the systems.
|
||||
|
||||
|
||||
---
|
||||
|
||||
V1 - rectangular cart
|
||||
glob up, pins toward you, pins 1-10, left to right
|
||||
|
||||
1 tied high
|
||||
2 CE1 left glob
|
||||
3 CE2 right glob
|
||||
4 pin 5
|
||||
5 pin 4
|
||||
6 data
|
||||
7 ground
|
||||
8 clock
|
||||
9 3.3 volts
|
||||
10 tied high
|
||||
|
||||
----
|
||||
|
||||
V2 - rounded top cart
|
||||
|
||||
1 CE1 left glob
|
||||
2 CE2 right glob
|
||||
3 tied high
|
||||
4 ground
|
||||
5 clock
|
||||
6 data
|
||||
7 ground
|
||||
8 ground
|
||||
9 3.3 volts
|
||||
10 tied high
|
||||
|
||||
V2 PCB silkscreened with GPR23L822A - 8Mbit serial ROM
|
||||
|
||||
----
|
||||
|
||||
To dump:
|
||||
set data and clock high, CE1 low for 1 mS
|
||||
set CE1 high for 3 uS
|
||||
set data low for 2 uS
|
||||
set clock low for 2 uS
|
||||
set data high for 2 uS
|
||||
set clock high for 2 uS
|
||||
set clock low for 2 uS
|
||||
set data low for 2 uS
|
||||
loop 24 times:
|
||||
set clock high for 1 uS
|
||||
set clock low for 1 uS
|
||||
make data high Z
|
||||
loop 8M tims:
|
||||
set clock high for 1 uS
|
||||
sample data
|
||||
set clock low for 1 uS
|
||||
set CE1 low
|
||||
|
||||
if 2 globs, repeat with CE2
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
#include "bus/generic/slot.h"
|
||||
#include "bus/generic/carts.h"
|
||||
|
||||
#include "screen.h"
|
||||
#include "softlist.h"
|
||||
#include "speaker.h"
|
||||
|
||||
class pi_storyreader_state : public driver_device
|
||||
{
|
||||
public:
|
||||
pi_storyreader_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_cart(*this, "cartslot"),
|
||||
m_cart_region(nullptr)
|
||||
{ }
|
||||
|
||||
void pi_storyreader(machine_config &config);
|
||||
void pi_storyreader_v2(machine_config &config);
|
||||
|
||||
private:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
|
||||
|
||||
required_device<generic_slot_device> m_cart;
|
||||
memory_region *m_cart_region;
|
||||
};
|
||||
|
||||
|
||||
|
||||
void pi_storyreader_state::machine_start()
|
||||
{
|
||||
// if there's a cart, override the standard mapping
|
||||
if (m_cart && m_cart->exists())
|
||||
{
|
||||
std::string region_tag;
|
||||
m_cart_region = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
|
||||
}
|
||||
}
|
||||
|
||||
void pi_storyreader_state::machine_reset()
|
||||
{
|
||||
}
|
||||
|
||||
DEVICE_IMAGE_LOAD_MEMBER(pi_storyreader_state::cart_load)
|
||||
{
|
||||
uint32_t size = m_cart->common_get_size("rom");
|
||||
|
||||
m_cart->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE);
|
||||
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
|
||||
|
||||
return image_init_result::PASS;
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( pi_storyreader )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
void pi_storyreader_state::pi_storyreader(machine_config &config)
|
||||
{
|
||||
// unknown CPU / MCU type
|
||||
|
||||
// screenless
|
||||
|
||||
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "pi_storyreader_cart");
|
||||
m_cart->set_width(GENERIC_ROM16_WIDTH);
|
||||
m_cart->set_device_load(FUNC(pi_storyreader_state::cart_load));
|
||||
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("pi_storyreader_cart");
|
||||
}
|
||||
|
||||
void pi_storyreader_state::pi_storyreader_v2(machine_config &config)
|
||||
{
|
||||
// unknown CPU / MCU type
|
||||
|
||||
// screenless
|
||||
|
||||
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "pi_storyreader_v2_cart");
|
||||
m_cart->set_width(GENERIC_ROM16_WIDTH);
|
||||
m_cart->set_device_load(FUNC(pi_storyreader_state::cart_load));
|
||||
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("pi_storyreader_v2_cart");
|
||||
}
|
||||
|
||||
|
||||
ROM_START( pi_stry )
|
||||
ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "internal.mcu.rom", 0x0000, 0x1000, NO_DUMP ) // unknown type / size
|
||||
ROM_END
|
||||
|
||||
ROM_START( pi_stry2 )
|
||||
ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "internal.mcu.rom", 0x0000, 0x1000, NO_DUMP ) // unknown type / size
|
||||
ROM_END
|
||||
|
||||
// year, name, parent, compat, machine, input, class, init, company, fullname, flags
|
||||
|
||||
// These are said to not be compatible with each other
|
||||
CONS( 200?, pi_stry, 0, 0, pi_storyreader, pi_storyreader, pi_storyreader_state, empty_init, "Publications International Ltd", "Story Reader", MACHINE_IS_SKELETON )
|
||||
CONS( 200?, pi_stry2, 0, 0, pi_storyreader_v2, pi_storyreader, pi_storyreader_state, empty_init, "Publications International Ltd", "Story Reader 2.0", MACHINE_IS_SKELETON )
|
@ -196,21 +196,21 @@ READ8_MEMBER(spg2xx_game_state::i2c_r)
|
||||
READ16_MEMBER(spg2xx_game_state::rad_porta_r)
|
||||
{
|
||||
uint16_t data = m_io_p1->read();
|
||||
logerror("Port A Read: %04x\n", data);
|
||||
logerror("%s: Port A Read: %04x\n", machine().describe_context(), data);
|
||||
return data;
|
||||
}
|
||||
|
||||
READ16_MEMBER(spg2xx_game_state::rad_portb_r)
|
||||
{
|
||||
uint16_t data = m_io_p2->read();
|
||||
logerror("Port B Read: %04x\n", data);
|
||||
logerror("%s: Port B Read: %04x\n", machine().describe_context(), data);
|
||||
return data;
|
||||
}
|
||||
|
||||
READ16_MEMBER(spg2xx_game_state::rad_portc_r)
|
||||
{
|
||||
uint16_t data = m_io_p3->read();
|
||||
logerror("Port C Read: %04x\n", data);
|
||||
logerror("%s: Port C Read: %04x\n", machine().describe_context(), data);
|
||||
return data;
|
||||
}
|
||||
|
||||
@ -463,6 +463,29 @@ static INPUT_PORTS_START( wiwi18 )
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_CUSTOM ) // NTSC (1) / PAL (0) flag
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
|
||||
static INPUT_PORTS_START( tvsprt10 )
|
||||
PORT_START("P1")
|
||||
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x0180, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON1 ) // Start
|
||||
PORT_BIT( 0xfc00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("P2")
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("P3")
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( mattelcs ) // there is a 'secret test mode' that previously got activated before inputs were mapped, might need unused inputs to active?
|
||||
PORT_START("P1")
|
||||
PORT_BIT( 0x0007, IP_ACTIVE_LOW, IPT_UNUSED ) // must be IP_ACTIVE_LOW or you can't switch to Football properly?
|
||||
@ -712,6 +735,20 @@ void spg2xx_game_state::abltenni(machine_config &config)
|
||||
m_maincpu->set_rowscroll_offset(8);
|
||||
}
|
||||
|
||||
void spg2xx_game_state::tvsprt10(machine_config &config)
|
||||
{
|
||||
SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_state::mem_map_2m);
|
||||
m_maincpu->set_force_no_drc(true); // uses JVS opcode, not implemented in recompiler
|
||||
|
||||
spg2xx_base(config);
|
||||
|
||||
m_maincpu->porta_in().set(FUNC(spg2xx_game_state::rad_porta_r));
|
||||
m_maincpu->portb_in().set(FUNC(spg2xx_game_state::rad_portb_r));
|
||||
m_maincpu->portc_in().set(FUNC(spg2xx_game_state::rad_portc_r));
|
||||
}
|
||||
|
||||
|
||||
void spg2xx_game_state::rad_skatp(machine_config &config)
|
||||
{
|
||||
rad_skat(config);
|
||||
@ -789,6 +826,11 @@ ROM_START( abltenni )
|
||||
ROM_LOAD16_WORD_SWAP( "ablpnpwirelesstennis.bin", 0x000000, 0x400000, CRC(66bd8ef1) SHA1(a83640d5d9e84e10d29a065a61e0d7bbec16c6e4) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( tvsprt10 )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "tvsports10in1.bin", 0x000000, 0x400000, CRC(98b79889) SHA1(b0ba534d59b794bb38c071c70ab5bcf711364e06) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( wiwi18 )
|
||||
ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "26gl128.bin", 0x000000, 0x1000000, CRC(0b103ac9) SHA1(14434908f429942096fb8db5b5630603fd54fb2c) )
|
||||
@ -816,6 +858,23 @@ void spg2xx_game_state::init_wiwi18()
|
||||
rom[0x1ca259] = 0xf165;
|
||||
}
|
||||
|
||||
void spg2xx_game_state::init_tvsprt10()
|
||||
{
|
||||
uint16_t* rom = (uint16_t*)memregion("maincpu")->base();
|
||||
// hack 'MASK' check (some kind of EEPROM maybe?)
|
||||
// this hack means the ROM CRC fails, but without it the CRC is OK, so dump is good.
|
||||
/*
|
||||
port b 0010 = chip select? / always set when accessing?
|
||||
0008 = write enable (set when writing, not when reading)
|
||||
0004 = chip select? / always set when accessing?
|
||||
0002 = clock? (toggles)
|
||||
0001 = data in / out
|
||||
*/
|
||||
rom[0x18c55d] ^= 0x0001;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// year, name, parent, compat, machine, input, class, init, company, fullname, flags
|
||||
|
||||
// Radica TV games
|
||||
@ -826,7 +885,10 @@ CONS( 2007, rad_sktv, 0, 0, rad_sktv, rad_sktv, spg2xx_game_state, ini
|
||||
CONS( 2007, rad_fb2, 0, 0, rad_skat, rad_fb2, spg2xx_game_state, init_crc, "Radica", "Play TV Football 2", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // offers a 2 player option in menus, but seems to have only been programmed for, and released as, a single player unit, P2 controls appear unfinished.
|
||||
|
||||
// ABL TV Games
|
||||
CONS( 2006, abltenni, 0, 0, abltenni, abltenni, spg2xx_game_state, empty_init, "Advance Bright Ltd", "Wireless Tennis (WT2000, ABL TV Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||
CONS( 2006, abltenni, 0, 0, abltenni, abltenni, spg2xx_game_state, empty_init, "Advance Bright Ltd / V-Tac Technology Co Ltd.", "Wireless Tennis (WT2000, ABL TV Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
// same as Excalibur Decathlon? not the same as the ABL game
|
||||
CONS( 2006, tvsprt10, 0, 0, tvsprt10, tvsprt10, spg2xx_game_state, init_tvsprt10, "Simba / V-Tac Technology Co Ltd.", "TV Sports 10-in-1 / Decathlon Atlhetic Sport Games", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
// Mattel games
|
||||
CONS( 2005, mattelcs, 0, 0, rad_skat, mattelcs, spg2xx_game_state, empty_init, "Mattel", "Mattel Classic Sports", MACHINE_IMPERFECT_SOUND )
|
||||
|
@ -264,6 +264,12 @@ void spg2xx_senario_cosmo_state::sencosmo(machine_config& config)
|
||||
{
|
||||
senbbs(config);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_senario_cosmo_state::mem_map_flash_bypass);
|
||||
/* the game crashes if you get no matches after the 2nd spin on the 'Fashion Disaster' slot machine mini-game.
|
||||
this could be a real game bug (as to trigger it you'd have to make a poor choice not to hold any matches after the first spin)
|
||||
however with the recompiler execution of bad data causes MAME to immediately drop to commandline with no error message
|
||||
without recompiler the game just hangs */
|
||||
m_maincpu->set_force_no_drc(true);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,7 +1,12 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ryan Holtz, David Haywood
|
||||
|
||||
/* 'Zone' systems */
|
||||
/* Senario 6 Player Poker systems
|
||||
|
||||
TODO:
|
||||
improve controller hookup / simulation and remove PC-based hacks!
|
||||
|
||||
*/
|
||||
|
||||
#include "includes/spg2xx.h"
|
||||
#include "sentx6p.lh"
|
||||
@ -35,6 +40,10 @@ public:
|
||||
|
||||
void sentx6p(machine_config &config);
|
||||
|
||||
void init_sentx6p();
|
||||
void init_sentx6puk();
|
||||
void init_sentx6pd();
|
||||
|
||||
void mem_map_2m_texas(address_map &map);
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(ok_latch)
|
||||
@ -108,12 +117,17 @@ private:
|
||||
output_finder<6> m_option_allin;
|
||||
|
||||
output_finder<6> m_led;
|
||||
|
||||
// for I/O hacks
|
||||
uint32_t m_pchackaddress1;
|
||||
uint32_t m_pchackaddress2;
|
||||
uint16_t m_controller_sense_addr;
|
||||
};
|
||||
|
||||
|
||||
void sentx6p_state::mem_map_2m_texas(address_map &map)
|
||||
{
|
||||
map(0x000000, 0x1fffff).bankr("cartbank");
|
||||
map(0x000000, 0x3fffff).bankr("cartbank");
|
||||
map(0x3f0000, 0x3f7fff).ram();
|
||||
}
|
||||
|
||||
@ -342,7 +356,7 @@ void sentx6p_state::machine_reset()
|
||||
following addresses are for the other controllers, and get set based on Port B
|
||||
status flags */
|
||||
address_space &mem = m_maincpu->space(AS_PROGRAM);
|
||||
mem.write_word(0x1e08,0x0001);
|
||||
mem.write_word(m_controller_sense_addr,0x0001);
|
||||
}
|
||||
|
||||
void sentx6p_state::controller_send_data(int which)
|
||||
@ -365,7 +379,7 @@ void sentx6p_state::controller_send_data(int which)
|
||||
READ16_MEMBER(sentx6p_state::sentx_porta_r)
|
||||
{
|
||||
int select_bits = (m_porta_data >> 8) & 0x3f;
|
||||
logerror("%s: sentx_porta_r (with controller select bits %02x)\n", machine().describe_context(), select_bits);
|
||||
//logerror("%s: sentx_porta_r (with controller select bits %02x)\n", machine().describe_context(), select_bits);
|
||||
|
||||
/* 0000 = no controller? (system buttons only?)
|
||||
0100 = controller 1?
|
||||
@ -392,14 +406,14 @@ READ16_MEMBER(sentx6p_state::sentx_porta_r)
|
||||
// hacks needed for reading from the UART to work
|
||||
|
||||
// the select bit must be high here to read from the controller?
|
||||
if (m_maincpu->pc() == 0x2981e)
|
||||
if (m_maincpu->pc() == m_pchackaddress1)
|
||||
{
|
||||
ret ^= 0x3f;
|
||||
}
|
||||
|
||||
// but must be low again here after writing the select bits in order to not
|
||||
// get stuck in a timeout loop
|
||||
if (m_maincpu->pc() == 0x29834)
|
||||
if (m_maincpu->pc() == m_pchackaddress2)
|
||||
{
|
||||
ret &= ~0x3f;
|
||||
|
||||
@ -667,14 +681,46 @@ void sentx6p_state::sentx6p(machine_config &config)
|
||||
}
|
||||
|
||||
ROM_START( sentx6p )
|
||||
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "vsmaxxtexasholdem.bin", 0x000000, 0x400000, CRC(00180abb) SHA1(c2af28f64bfdfc9d671bb84561f8a916bc907176) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( sentx6puk )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||
// chksum:05B58350 is @ 0x3000.
|
||||
// This is the correct sum of 0x3010 - 0x1fffff (the first half of the ROM area after the checksum string)
|
||||
// The 2nd half is not summed (and not used by the game?) but definitely exists in ROM (same data on 2 units)
|
||||
ROM_LOAD16_WORD_SWAP( "senario texas holdem.bin", 0x000000, 0x400000, CRC(7c7d2d33) SHA1(71631074ba66e3b0cdeb86ebca3931599f3a911c) )
|
||||
ROM_END
|
||||
|
||||
// "go 02d1d0" "do r1 = ff" to get past initial screen (currently bypassed by setting controller sense in RAM earlier, see hack in machine_reset)
|
||||
// a 'deluxe' version of this also exists with extra game modes
|
||||
CONS( 2004, sentx6p, 0, 0, sentx6p, sentx6p, sentx6p_state, empty_init, "Senario / Play Vision", "Vs Maxx Texas Hold'em TV Poker - 6 Player Edition (UK)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // from a UK Play Vision branded box, values in GBP
|
||||
ROM_START( sentx6pd )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "senariodeluxetvpoker.bin", 0x000000, 0x800000, CRC(e2b6844e) SHA1(2413195dfe7a08d16ca870c070a19034c9fe8c30) )
|
||||
ROM_END
|
||||
|
||||
void sentx6p_state::init_sentx6puk()
|
||||
{
|
||||
m_pchackaddress1 = 0x2981e;
|
||||
m_pchackaddress2 = 0x29834;
|
||||
m_controller_sense_addr = 0x1e08;
|
||||
}
|
||||
|
||||
void sentx6p_state::init_sentx6p()
|
||||
{
|
||||
m_pchackaddress1 = 0x29754;
|
||||
m_pchackaddress2 = 0x2976a;
|
||||
m_controller_sense_addr = 0x0804;
|
||||
}
|
||||
|
||||
void sentx6p_state::init_sentx6pd()
|
||||
{
|
||||
m_pchackaddress1 = 0xca20;
|
||||
m_pchackaddress2 = 0xca36;
|
||||
m_controller_sense_addr = 0x1e3a;
|
||||
}
|
||||
|
||||
CONS( 2004, sentx6p, 0, 0, sentx6p, sentx6p, sentx6p_state, init_sentx6p, "Senario", "Vs Maxx Texas Hold'em TV Poker - 6 Player Edition (US)", MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // from a US version, values in USD
|
||||
CONS( 2004, sentx6puk, sentx6p, 0, sentx6p, sentx6p, sentx6p_state, init_sentx6puk, "Senario / Play Vision", "Vs Maxx Texas Hold'em TV Poker - 6 Player Edition (UK)", MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // from a UK Play Vision branded box, values in GBP
|
||||
|
||||
CONS( 2004, sentx6pd, 0, 0, sentx6p, sentx6p, sentx6p_state, init_sentx6pd, "Senario", "Deluxe TV Poker - Texas Hold'em, Blackjack & Video Poker (US)", MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||
// Deluxe version wasn't released outside of US?
|
@ -111,13 +111,13 @@ public:
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_fullrom(*this, "fullrom"),
|
||||
m_bank(*this, "cartbank"),
|
||||
m_screen(*this, "screen"),
|
||||
m_soundcpu(*this, "soundcpu"),
|
||||
m_maincpu_alu(*this, "mainalu"),
|
||||
m_soundcpu_alu(*this, "soundalu"),
|
||||
m_soundcpu_timer_a_dev(*this, "snd_timera_dev"),
|
||||
m_soundcpu_timer_b_dev(*this, "snd_timerb_dev"),
|
||||
m_system_timer_dev(*this, "sys_timer_dev"),
|
||||
m_screen(*this, "screen"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_vram(*this, "vram"),
|
||||
m_sound_share(*this, "sound_share"),
|
||||
@ -144,6 +144,8 @@ protected:
|
||||
|
||||
required_device<address_map_bank_device> m_fullrom;
|
||||
required_memory_bank m_bank;
|
||||
required_device<screen_device> m_screen;
|
||||
|
||||
private:
|
||||
required_device<cpu_device> m_soundcpu;
|
||||
required_device<vrt_vt1682_alu_device> m_maincpu_alu;
|
||||
@ -153,7 +155,6 @@ private:
|
||||
required_device<vrt_vt1682_timer_device> m_soundcpu_timer_b_dev;
|
||||
required_device<vrt_vt1682_timer_device> m_system_timer_dev;
|
||||
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<address_map_bank_device> m_spriteram;
|
||||
required_device<address_map_bank_device> m_vram;
|
||||
required_shared_ptr<uint8_t> m_sound_share;
|
||||
@ -664,6 +665,7 @@ public:
|
||||
{ }
|
||||
|
||||
void vt1682_exsport(machine_config& config);
|
||||
void vt1682_exsportp(machine_config& config);
|
||||
|
||||
virtual DECLARE_READ8_MEMBER(uiob_r);
|
||||
DECLARE_WRITE8_MEMBER(uiob_w);
|
||||
@ -5768,6 +5770,14 @@ void vt1682_exsport_state::vt1682_exsport(machine_config& config)
|
||||
m_uio->portb_out().set(FUNC(vt1682_exsport_state::uiob_w));
|
||||
}
|
||||
|
||||
void vt1682_exsport_state::vt1682_exsportp(machine_config& config)
|
||||
{
|
||||
vt_vt1682_state::vt_vt1682(config);
|
||||
// TODO, different clocks, timings etc.!
|
||||
m_screen->set_refresh_hz(50);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void vt1682_wow_state::vt1682_wow(machine_config& config)
|
||||
{
|
||||
@ -5840,6 +5850,12 @@ ROM_START( exsprt48 )
|
||||
ROM_LOAD( "excitesportgames_48.bin", 0x00000, 0x2000000, CRC(1bf239a0) SHA1(d69c16bac5fb15c62abb5a0c0920405647205539) ) // original dump had upper 2 address lines swapped, unmarked chip, so lines were guessed when dumping
|
||||
ROM_END
|
||||
|
||||
// differs by 2 bytes from above, the rasters glitch in MotorStorm in a different way, so it's likely an NTSC/PAL difference?
|
||||
ROM_START( exsprt48a )
|
||||
ROM_REGION( 0x2000000, "mainrom", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "48in1sports.bin", 0x00000, 0x2000000, CRC(8e490541) SHA1(aeb01b3d7229fc888b36aaa924fe6b10597a7783) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( wowwg )
|
||||
ROM_REGION( 0x2000000, "mainrom", 0 )
|
||||
ROM_LOAD( "msp55lv128.bin", 0x00000, 0x1000000, CRC(f607c40c) SHA1(66d3960c3b8fbab06a88cf039419c79a6c8633f0) )
|
||||
@ -5885,8 +5901,11 @@ CONS( 200?, intg5410, 0, 0, intech_interact_bank, miwi2, intec_interact_state
|
||||
|
||||
// Other standalone Mi Kara units should fit here as well
|
||||
|
||||
// European versions not verified as the same yet
|
||||
CONS( 200?, exsprt48, 0, 0, vt1682_exsport, exsprt48, vt1682_exsport_state, regular_init, "Excite", "Excite Sports Wireless Interactive TV Game - 48-in-1 (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // "32 Arcade, 8 Sports, 8 Stadium"
|
||||
|
||||
// the timing code for MotorStorm differs between these sets (although fails wiht our emulation in both cases, even if the game runs fine in other collections)
|
||||
CONS( 200?, exsprt48, 0, 0, vt1682_exsport, exsprt48, vt1682_exsport_state, regular_init, "Excite", "Excite Sports Wireless Interactive TV Game - 48-in-1 (set 1, NTSC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // "32 Arcade, 8 Sports, 8 Stadium"
|
||||
CONS( 200?, exsprt48a, exsprt48, 0, vt1682_exsportp, exsprt48, vt1682_exsport_state, regular_init, "Excite", "Excite Sports Wireless Interactive TV Game - 48-in-1 (set 2, PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // ^
|
||||
|
||||
/*
|
||||
There is at least one alt US version of this also on VT1682
|
||||
|
||||
|
@ -39,9 +39,11 @@ public:
|
||||
void rad_crik(machine_config &config);
|
||||
void non_spg_base(machine_config &config);
|
||||
void abltenni(machine_config &config);
|
||||
void tvsprt10(machine_config &config);
|
||||
|
||||
void init_crc();
|
||||
void init_wiwi18();
|
||||
void init_tvsprt10();
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
|
@ -12886,6 +12886,7 @@ rad_baskp
|
||||
rad_sinv
|
||||
rad_tetr
|
||||
airblsjs
|
||||
sudoelan
|
||||
|
||||
@source:electra.cpp
|
||||
avenger // (c) 1975 Electra
|
||||
@ -31271,11 +31272,14 @@ vtpinball // From V.R. Technology VT SDK
|
||||
vtsndtest // From V.R. Technology VT SDK
|
||||
vtboxing // From V.R. Technology VT SDK
|
||||
ablpinb
|
||||
sudokuv
|
||||
mc_dgear
|
||||
dgun2500
|
||||
dgun2561
|
||||
lxcmcy
|
||||
lxcmc250
|
||||
lxcmcysw
|
||||
lxcmcyfz
|
||||
cybar120
|
||||
mc_dg101
|
||||
mc_aa2
|
||||
@ -31336,6 +31340,7 @@ miwi2_7
|
||||
intact89
|
||||
intg5410
|
||||
exsprt48
|
||||
exsprt48a
|
||||
wowwg
|
||||
|
||||
@source:newbrain.cpp
|
||||
@ -33938,6 +33943,10 @@ sol20 //
|
||||
@source:pturn.cpp
|
||||
pturn // (c) 1984 Jaleco
|
||||
|
||||
@source:pubint_storyreader.cpp
|
||||
pi_stry
|
||||
pi_stry2
|
||||
|
||||
@source:pubtimed.cpp
|
||||
pubtimed //
|
||||
|
||||
@ -39836,6 +39845,7 @@ rad_crik //
|
||||
rad_fb2 //
|
||||
mattelcs //
|
||||
abltenni //
|
||||
tvsprt10 //
|
||||
wiwi18 //
|
||||
|
||||
@source:spg2xx_jakks.cpp
|
||||
@ -39882,6 +39892,8 @@ sencosmo
|
||||
|
||||
@source:spg2xx_senario_poker.cpp
|
||||
sentx6p //
|
||||
sentx6puk
|
||||
sentx6pd
|
||||
|
||||
@source:spg2xx_vii.cpp
|
||||
vii // KenSingTon / Jungle Soft / Siatronics Vii
|
||||
|
Loading…
Reference in New Issue
Block a user