From 0a017cb5b0581abf5b236374fbbc37a790531fcf Mon Sep 17 00:00:00 2001
From: David Haywood <28625134+DavidHaywood@users.noreply.github.com>
Date: Thu, 6 Feb 2020 18:37:49 +0000
Subject: Plug and Play work (#6261)
* new WORKING machine
---
Magic Ranger Battle (Japan) [Sean Riddle, Peter Wilhelmsen, David Haywood, ShouTime]
(at least I think it works, might end up demoted if I discover more issues, as it's a SuperXaviX but only appears to be using the basic IO features and bitmap mode on the XaviX splash screen)
* correct title (nw)
* new NOT WORKING
---
Gamepad (Bandai) [Sean Riddle, GameHistory.org]
* new NOT WORKING
---
Tour around Japan. I'm a Plarail Conductor (Japan) [Sean Riddle, Peter Wilhemsen, David Haywood, ShouTime]
SmarTV Adventures / Funtastic TV Adventures [Sean Riddle, David Haywood]
* new NOT WORKING
---
Super Roller (v7.0) [Hammy]
* inputs are the same (nw)
* document boot password (nw)
* another password (nw)
* new NOT WORKING
----
Fitness Konsole (NC1470) [TeamEurope]
* (nw)
* new NOT WORKING
---
Mega Duck Lerncomputer (Germany) [Sean Riddle]
---
hash/smarttv_cart.xml | 17 +++
scripts/target/mame/mess.lua | 1 +
src/mame/drivers/gaelco2.cpp | 129 ++++++++++++++++++
src/mame/drivers/gb.cpp | 41 +++++-
src/mame/drivers/nes_vt.cpp | 12 +-
src/mame/drivers/spg2xx_smarttv.cpp | 252 ++++++++++++++++++++++++++++++++++++
src/mame/drivers/sunplus_gcm394.cpp | 24 +++-
src/mame/drivers/xavix.cpp | 175 +++++++++++++++++++++++--
src/mame/includes/gaelco2.h | 6 +
src/mame/includes/xavix.h | 1 +
src/mame/mame.lst | 9 ++
11 files changed, 647 insertions(+), 20 deletions(-)
create mode 100644 hash/smarttv_cart.xml
create mode 100644 src/mame/drivers/spg2xx_smarttv.cpp
diff --git a/hash/smarttv_cart.xml b/hash/smarttv_cart.xml
new file mode 100644
index 00000000000..11c2b678c9c
--- /dev/null
+++ b/hash/smarttv_cart.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ Amusement Park
+ 200?
+ WinFun
+
+
+
+
+
+
+
+
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index e2a7894d6d4..99c9e9870a2 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -3812,6 +3812,7 @@ files {
MAME_DIR .. "src/mame/drivers/spg2xx_pdc.cpp",
MAME_DIR .. "src/mame/drivers/spg2xx_dreamlife.cpp",
MAME_DIR .. "src/mame/drivers/spg2xx_lexibook.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_smarttv.cpp",
MAME_DIR .. "src/mame/includes/spg2xx.h",
MAME_DIR .. "src/mame/drivers/sunplus_gcm394.cpp",
MAME_DIR .. "src/mame/drivers/generalplus_gpl32612.cpp",
diff --git a/src/mame/drivers/gaelco2.cpp b/src/mame/drivers/gaelco2.cpp
index b7d317d7c1b..f05769434e7 100644
--- a/src/mame/drivers/gaelco2.cpp
+++ b/src/mame/drivers/gaelco2.cpp
@@ -692,6 +692,72 @@ void gaelco2_state::play2000_map(address_map &map)
map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM */
}
+READ16_MEMBER(gaelco2_state::srollnd_share_sim_r)
+{
+ uint16_t ret = m_shareram[offset];
+
+ if (m_maincpu->pc() == 0x0083d0)
+ ret = 0x0000;
+
+ if (m_maincpu->pc() == 0x0085B0)
+ ret = 0x0000;
+
+ if (m_maincpu->pc() == 0x00839e)
+ ret = 0x0000;
+
+ if (m_maincpu->pc() == 0x0035a6)
+ ret = 0x0000;
+
+ if (m_maincpu->pc() == 0x00857e) // after restoring default values (write back to nvram)
+ ret = 0x0000;
+
+
+ // reads a bunch of data (game specific? backup ram? default backup ram?) from device (0x180 words - copied to start of RAM)
+ if (m_maincpu->pc() == 0x83da)
+ {
+ ret = 0x0000;
+
+ if (offset == 0x274 / 2)
+ {
+ // ret = 0x3112; // checked after copy, otherwise you get password? prompt
+
+ // the 'password' for bootup (reset to default values) is stored at 13454 in ROM
+ // sequence value: 0800 0800 1000 4000 2000
+ // default key: x x c b v
+
+ // the 'password' in service mode checks the following (stored after above) (anything related to countability or where changing it might clear things)
+ // sequence value: 0800 1000 0400 0800 4000
+ // default key: x c z x b
+
+ // 0400 0800 1000 2000 4000 (just a default unused sequence?)
+ // z x c v b
+
+ // 0400 0400 1000 0800 4000 for advanced internal options in service mode
+ // z z c x b
+ }
+ }
+
+
+ logerror("%s: srollnd_share_sim_r %04x: %04x (%04x)\n", machine().describe_context(), offset, ret, mem_mask);
+
+ return ret;
+}
+
+WRITE16_MEMBER(gaelco2_state::srollnd_share_sim_w)
+{
+ if (m_maincpu->pc() != 0x552)
+ logerror("%s: srollnd_share_sim_w %04x: %04x (%04x)\n", machine().describe_context(), offset, data, mem_mask);
+ COMBINE_DATA(&m_shareram[offset]);
+}
+
+void gaelco2_state::srollnd_map(address_map& map)
+{
+ play2000_map(map);
+
+ map(0xfe8000, 0xfeffff).ram().rw(FUNC(gaelco2_state::srollnd_share_sim_r), FUNC(gaelco2_state::srollnd_share_sim_w)).share("shareram");
+}
+
+
static INPUT_PORTS_START( play2000 )
PORT_START("IN0")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) // Coin1
@@ -834,6 +900,27 @@ ROM_START( play2000_50i )
ROM_LOAD( "palce16v8h.u29", 0x0000, 0x0117, BAD_DUMP CRC(4a0a6f39) SHA1(57351e471649391c9abf110828fe2f128fe84eee) )
ROM_END
+
+ROM_START( srollnd )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "nd2.u44", 0x000001, 0x010000, CRC(ee3ec213) SHA1(80a08839327bf8215abfad1fececac64da6fbcb2) )
+ ROM_LOAD16_BYTE( "nd1.u45", 0x000000, 0x010000, CRC(4bf20c7b) SHA1(b483f74fed25139e92359b178f6548b867c999e4) )
+
+ ROM_REGION( 0x8000, "gaelco_ds5002fp:sram", 0 ) /* DS5002FP code */
+ ROM_LOAD( "srollnd.ds5002fp", 0x00000, 0x8000, NO_DUMP )
+
+ ROM_REGION( 0x100, "gaelco_ds5002fp:mcu:internal", ROMREGION_ERASE00 )
+ DS5002FP_SET_MON( 0x19 )
+ DS5002FP_SET_RPCTL( 0x00 )
+ DS5002FP_SET_CRCR( 0x80 )
+
+ ROM_REGION( 0x0a00000, "gfx1", ROMREGION_ERASE00 ) /* GFX + Sound */
+ ROM_LOAD( "nd5.u49", 0x0000000, 0x080000, CRC(5ec78408) SHA1(1a5b3a0bdbd36bf6607e47dedf31f4b9a7b89667) )
+ ROM_LOAD( "nd3.u51", 0x0200000, 0x020000, CRC(e19ac5b8) SHA1(980a3b339f6958e5e04ea624f26dabd2e06f0c68) )
+ ROM_LOAD( "nd6.u48", 0x0400000, 0x020000, CRC(81cd4097) SHA1(94c7f0d3c21070039dbef9fc43d0f5f2619dad5a) )
+ ROM_LOAD( "nd4.u58", 0x0600000, 0x020000, CRC(8c66cd09) SHA1(5cf0a001bfd46c1e955f7952f8a42a001beaf43c) )
+ROM_END
+
void gaelco2_state::play2000(machine_config &config)
{
/* basic machine hardware */
@@ -872,6 +959,45 @@ void gaelco2_state::play2000(machine_config &config)
gaelco.add_route(1, "rspeaker", 1.0);
}
+void gaelco2_state::srollnd(machine_config& config)
+{
+ /* basic machine hardware */
+ M68000(config, m_maincpu, XTAL(20'000'000 / 2));
+ m_maincpu->set_addrmap(AS_PROGRAM, &gaelco2_state::srollnd_map);
+ m_maincpu->set_vblank_int("screen", FUNC(gaelco2_state::irq6_line_hold));
+
+ // not dumped
+ //GAELCO_DS5002FP(config, "gaelco_ds5002fp", XTAL(32'000'000) / 2).set_addrmap(0, &gaelco2_state::mcu_hostmem_map); /* ? MHz */
+ //config.set_perfect_quantum("gaelco_ds5002fp:mcu");
+
+ /* video hardware */
+ BUFFERED_SPRITERAM16(config, m_spriteram);
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(59.1);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ screen.set_size(64*16, 32*16);
+ screen.set_visarea(0, 384-1, 16, 256-1);
+ screen.set_screen_update(FUNC(gaelco2_state::screen_update));
+ screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram16_device::vblank_copy_rising));
+ screen.set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_gaelco2);
+ PALETTE(config, m_palette).set_entries(4096*16 - 16); /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
+
+ MCFG_VIDEO_START_OVERRIDE(gaelco2_state,gaelco2)
+
+ /* sound hardware */
+ SPEAKER(config, "lspeaker").front_left();
+ SPEAKER(config, "rspeaker").front_right();
+
+ gaelco_gae1_device &gaelco(GAELCO_GAE1(config, "gaelco", XTAL(34'000'000) / 34));
+ gaelco.set_device_rom_tag("gfx1");
+ gaelco.set_bank_offsets(0 * 0x080000, 0 * 0x080000, 0 * 0x080000, 0 * 0x080000);
+ gaelco.add_route(0, "lspeaker", 1.0);
+ gaelco.add_route(1, "rspeaker", 1.0);
+}
+
/*============================================================================
BANG
@@ -1263,6 +1389,7 @@ REF: 940411
the byte at 0x1ff in the rom at u44 controls the language / region settings
and even allows for an alt. title of Lizard Hunt
+ Bits Usage
Bits Usage
---------------------------------------------------------------------------------
0000 1000 Title (0x00 = LIZARD HUNT, 0x08 = ALLIGATOR HUNT)
@@ -2495,6 +2622,8 @@ GAME( 1999, play2000, 0, play2000, play2000, gaelco2_state, i
GAME( 1999, play2000_50i,play2000, play2000, play2000, gaelco2_state, empty_init, ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v5.0i) (Italy)", MACHINE_NOT_WORKING ) // bad dump
GAME( 1999, play2000_40i,play2000, play2000, play2000, gaelco2_state, init_play2000, ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v4.0i) (Italy)", 0 )
+GAME( 1998, srollnd, 0, srollnd, play2000, gaelco2_state, init_play2000, ROT0, "Nova Desitec", "Super Roller (v7.0)", MACHINE_NOT_WORKING ) // missing ds5002fp dump
+
// Gym equipment
GAME( 1997, sltpcycl, 0, saltcrdi, saltcrdi, gaelco2_state, init_play2000, ROT0, "Salter Fitness / Gaelco", "Pro Cycle Tele Cardioline (Salter Fitness Bike V.1.0, Checksum 02AB)", 0 ) // Same board and ROM as Pro Reclimber
GAME( 1997, sltpstep, 0, saltcrdi, saltcrdi, gaelco2_state, init_play2000, ROT0, "Salter Fitness / Gaelco", "Pro Stepper Tele Cardioline (Salter Fitness Stepper V.1.0, Checksum F208)", 0 )
diff --git a/src/mame/drivers/gb.cpp b/src/mame/drivers/gb.cpp
index ec88044b7e9..addbbf8ce5e 100644
--- a/src/mame/drivers/gb.cpp
+++ b/src/mame/drivers/gb.cpp
@@ -823,7 +823,6 @@ ROM_START(gbcolor)
ROM_LOAD("gbc_boot.2", 0x0100, 0x0700, CRC(f741807d) SHA1(f943b1e0b640cf1d371e1d8f0ada69af03ebb396)) /* Bootstrap code part 2 */
ROM_END
-
ROM_START(megaduck)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_END
@@ -833,6 +832,43 @@ ROM_START(gamefgtr)
ROM_LOAD("gamefgtr.bin", 0x0000, 0x0100, CRC(908ba8de) SHA1(a4a36f71bf1b3b587df620d48ae940af93a982a5))
ROM_END
+/*
+
+Notes from Sean:
+
+The bottom of the ROM PCB says
+EW-012 4M Mask ROM
+German Version
+BB35-E012-0A12
+REV.0
+
+The bottom of the 7-pin glob-on-a-board says
+EW-012
+VOICE CHIP PCB
+HT-81300 /
+HT-81400
+BB35-E012-0A09
+REV.1
+
+I couldn't find a data sheet, but I did see
+
+"81300 is described as PCM speech synthesizer 5.6s" and
+"81400 as PCM speech synthesizer 8.4s" (which is 50% larger)
+
+I assume it that means it has (undumped) internal ROM.
+
+*/
+
+ROM_START(mducklrn)
+ ROM_REGION(0x80000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("megaduck.bin", 0x0000, 0x80000, CRC(debd33fd) SHA1(fbf86dffa82f6e469da46623541f6f58f6c8a0d8) )
+
+ ROM_REGION(0x10000, "81x00", ROMREGION_ERASEFF) // unknown size / capacity
+ ROM_LOAD("81x00.bin", 0x0000, 0x10000, NO_DUMP )
+ROM_END
+
+
+
/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */
CONS(1990, gameboy, 0, 0, gameboy, gameboy, gb_state, empty_init, "Nintendo", "Game Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
CONS(1994, supergb, gameboy, 0, supergb, gameboy, gb_state, empty_init, "Nintendo", "Super Game Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
@@ -843,5 +879,8 @@ CONS(1998, gbcolor, 0, 0, gbcolor, gameboy, gb_state, empty_
// Sound is not 100% yet, it generates some sounds which could be ok. Since we're lacking a real system there's no way to verify.
CONS(1993, megaduck, 0, 0, megaduck, gameboy, megaduck_state, empty_init, "Welback Holdings (Timlex International) / Creatronic / Videojet / Cougar USA", "Mega Duck / Cougar Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+CONS(199?, mducklrn, 0, 0, megaduck, gameboy, megaduck_state, empty_init, "Hartung", "Mega Duck Lerncomputer (Germany)", MACHINE_NOT_WORKING ) // versions for other regions exist too
+
+
// http://blog.gg8.se/wordpress/2012/11/11/gameboy-clone-game-fighter-teardown/
CONS(1993, gamefgtr, gameboy, 0, gameboy, gameboy, gb_state, empty_init, "bootleg", "Game Fighter (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
diff --git a/src/mame/drivers/nes_vt.cpp b/src/mame/drivers/nes_vt.cpp
index 812d2610aa9..da3d3046cf8 100644
--- a/src/mame/drivers/nes_vt.cpp
+++ b/src/mame/drivers/nes_vt.cpp
@@ -2643,6 +2643,13 @@ ROM_START( zdog )
ROM_LOAD( "zdog.bin", 0x00000, 0x400000, CRC(5ed3485b) SHA1(5ab0e9370d4ed1535205deb0456878c4e400dd81) )
ROM_END
+
+
+ROM_START( bandgpad )
+ ROM_REGION( 0x100000, "mainrom", 0 )
+ ROM_LOAD( "gamepad.bin", 0x00000, 0x100000, CRC(e2fbb532) SHA1(e9170a7739a8355acbf263fe2b1d291951dc07f0) )
+ROM_END
+
ROM_START( ts_handy11 )
ROM_REGION( 0x100000, "mainrom", 0 )
ROM_LOAD( "tvplaypowercontroller.bin", 0x00000, 0x100000, CRC(9c7fe9ff) SHA1(c872e91ca835b66c9dd3b380e8374b51f12bcae0) ) // 29LV008B
@@ -2829,5 +2836,8 @@ CONS( 2017, fapocket, 0, 0, nes_vt_fa, nes_vt_fa, nes_vt_dg_state, emp
// Plays intro music but then crashes. same hardware as SY-88x but uses more features
CONS( 2016, mog_m320, 0, 0, nes_vt_hh, nes_vt, nes_vt_hh_state, empty_init, "MOGIS", "MOGIS M320 246 in 1 Handheld", MACHINE_NOT_WORKING )
-// uncertain VT type, odd accesses above PPU space, non-standard first bank (or scrambling) possibly newer than 2001 but most games have a 2001 copyright. Most games are higher colour versions of NES games, so it's an enhanced NES chipset at least but maybe not VT?
+// UMC 6578 based - NOT VT
+CONS( 1997, bandgpad, 0, 0, nes_vt_ts, nes_vt, nes_vt_ts_state, empty_init, "Bandai", "Gamppad (Bandai)", MACHINE_NOT_WORKING )
+// possibly newer than 2001 but most games have a 2001 copyright. Most games are higher colour versions of NES games, so it's an enhanced NES chipset at least but maybe not VT?
CONS( 2001, ts_handy11, 0, 0, nes_vt_ts, nes_vt, nes_vt_ts_state, empty_init, "Techno Source", "Handy Boy 11-in-1 (TV Play Power)", MACHINE_NOT_WORKING )
+
diff --git a/src/mame/drivers/spg2xx_smarttv.cpp b/src/mame/drivers/spg2xx_smarttv.cpp
new file mode 100644
index 00000000000..c0117c96126
--- /dev/null
+++ b/src/mame/drivers/spg2xx_smarttv.cpp
@@ -0,0 +1,252 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz, David Haywood
+
+// Sold in the US by Walmart under the KidConnection brand as SmarTV Adventures (only 2 US carts made?)
+// Sold in Italy by Clementoni as Sapientino Smart TV (many different base units and carts)
+
+// it's possible some of the base units have ROM, although the US version does not.
+
+#include "emu.h"
+#include "includes/spg2xx.h"
+
+#include "bus/generic/slot.h"
+#include "bus/generic/carts.h"
+
+
+class smarttv_state : public spg2xx_game_state
+{
+public:
+ smarttv_state(const machine_config &mconfig, device_type type, const char *tag) :
+ spg2xx_game_state(mconfig, type, tag),
+ m_cart(*this, "cartslot"),
+ m_cart_region(nullptr)
+ { }
+
+ void smarttv(machine_config &config);
+
+private:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+ DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load_smarttv);
+
+ required_device m_cart;
+ memory_region *m_cart_region;
+};
+
+
+static INPUT_PORTS_START( smarttv )
+ PORT_START("P1")
+ PORT_DIPNAME( 0x0001, 0x0001, "P1" )
+ PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ 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_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) // important
+ PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+
+ PORT_START("P2")
+ PORT_DIPNAME( 0x0001, 0x0001, "P2" )
+ PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ 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_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+
+ PORT_START("P3")
+ PORT_DIPNAME( 0x0001, 0x0001, "P3" )
+ PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ 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_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
+void smarttv_state::machine_start()
+{
+ spg2xx_game_state::machine_start();
+
+ // if there's a cart, override the standard banking
+ 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());
+ m_bank->configure_entries(0, (m_cart_region->bytes() + 0x7fffff) / 0x800000, m_cart_region->base(), 0x800000);
+ m_bank->set_entry(0);
+ }
+}
+
+void smarttv_state::machine_reset()
+{
+ spg2xx_game_state::machine_reset();
+}
+
+DEVICE_IMAGE_LOAD_MEMBER(smarttv_state::cart_load_smarttv)
+{
+ uint32_t size = m_cart->common_get_size("rom");
+
+ if (size > 0x800000)
+ {
+ image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size");
+ return image_init_result::FAIL;
+ }
+
+ m_cart->rom_alloc(0x800000, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE);
+ m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
+
+ return image_init_result::PASS;
+}
+
+void smarttv_state::smarttv(machine_config &config)
+{
+ SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
+ m_maincpu->set_addrmap(AS_PROGRAM, &smarttv_state::mem_map_4m);
+
+ spg2xx_base(config);
+
+ m_maincpu->porta_in().set_ioport("P1");
+ m_maincpu->portb_in().set_ioport("P2");
+ m_maincpu->portc_in().set_ioport("P3");
+
+ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "smarttv_cart");
+ m_cart->set_width(GENERIC_ROM16_WIDTH);
+ m_cart->set_device_load(FUNC(smarttv_state::cart_load_smarttv));
+ m_cart->set_must_be_loaded(true);
+
+ SOFTWARE_LIST(config, "smarttv_cart").set_original("smarttv_cart");
+}
+
+ROM_START( smartvad )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ // no internal ROM (just the single SunPlus SoC glob)
+ROM_END
+
+
+// Toyquest games
+CONS( 2005, smartvad, 0, 0, smarttv, smarttv, smarttv_state, empty_init, "WinFun / KidConnection", "", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
\ No newline at end of file
diff --git a/src/mame/drivers/sunplus_gcm394.cpp b/src/mame/drivers/sunplus_gcm394.cpp
index 6f8f1ec9575..3374a9497bf 100644
--- a/src/mame/drivers/sunplus_gcm394.cpp
+++ b/src/mame/drivers/sunplus_gcm394.cpp
@@ -1497,6 +1497,14 @@ ROM_START( vbaby )
ROM_LOAD( "vbaby.bin", 0x0000, 0x8400000, CRC(d904441b) SHA1(3742bc4e1e403f061ce2813ecfafc6f30a44d287) )
ROM_END
+ROM_START( mgtfit )
+ ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
+ ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
+
+ ROM_REGION( 0x8400000, "nandrom", ROMREGION_ERASE00 ) // Samsung 937 K9F1G08U0D Ident: 0xEC 0xF1 Full Ident: 0xECF1001540
+ ROM_LOAD( "k9f1g08u0d.bin", 0x0000, 0x8400000, CRC(1ca5ac09) SHA1(c2e123085d2198999c2c0edb1df4895361c00a99) )
+ROM_END
+
ROM_START( beambox )
ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
@@ -1682,13 +1690,13 @@ void generalplus_gpac800_game_state::nand_beambox()
// NAND dumps w/ internal bootstrap (and u'nSP 2.0 extended opcodes) (have gpnandnand strings)
// the JAKKS ones seem to be known as 'Generalplus GPAC800' hardware
-CONS(2010, wlsair60, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_wlsair60, "Jungle Soft / Kids Station Toys Inc", "Wireless Air 60", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-CONS(200?, jak_gtg, 0, 0, generalplus_gpac800, jak_gtg, generalplus_gpac800_game_state, nand_init210, "JAKKS Pacific Inc", "Golden Tee Golf (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-CONS(200?, jak_car2, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210, "JAKKS Pacific Inc", "Cars 2 (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-CONS(200?, jak_tsm , 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_tsm, "JAKKS Pacific Inc", "Toy Story Mania (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-CONS(200?, beambox, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_beambox, "Hasbro", "Playskool Heroes Transformers Rescue Bots Beam Box (Spain)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-
-CONS(200?, vbaby, 0, 0, generalplus_gpac800_vbaby, jak_car2, generalplus_gpac800_vbaby_game_state, nand_vbaby, "VTech", "V.Baby", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+CONS(2010, wlsair60, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_wlsair60, "Jungle Soft / Kids Station Toys Inc", "Wireless Air 60", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+CONS(200?, jak_gtg, 0, 0, generalplus_gpac800, jak_gtg, generalplus_gpac800_game_state, nand_init210, "JAKKS Pacific Inc", "Golden Tee Golf (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+CONS(200?, jak_car2, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210, "JAKKS Pacific Inc", "Cars 2 (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+CONS(200?, jak_tsm , 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_tsm, "JAKKS Pacific Inc", "Toy Story Mania (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+CONS(200?, beambox, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_beambox, "Hasbro", "Playskool Heroes Transformers Rescue Bots Beam Box (Spain)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+CONS(200?, mgtfit, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_wlsair60, "MGT", "Fitness Konsole (NC1470)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // probably has other names in English too? menus don't appear to be in German
+CONS(200?, vbaby, 0, 0, generalplus_gpac800_vbaby, jak_car2, generalplus_gpac800_vbaby_game_state, nand_vbaby, "VTech", "V.Baby", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
ROM_START( bkrankp )
@@ -1748,3 +1756,5 @@ void generalplus_gpspispi_game_state::init_spi()
CONS(200?, bkrankp, 0, 0, generalplus_gpspispi_bkrankp, gcm394, generalplus_gpspispi_bkrankp_game_state , init_spi, "Bandai", "Karaoke Ranking Party (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
+
+
diff --git a/src/mame/drivers/xavix.cpp b/src/mame/drivers/xavix.cpp
index 8f3191d6d6b..5f1656fd0e0 100644
--- a/src/mame/drivers/xavix.cpp
+++ b/src/mame/drivers/xavix.cpp
@@ -55,12 +55,12 @@
3 Idaten Jump /TOMY/Japan - - - - - - -
4 Tokyo Friend Park 2 Special /EPOCH/Japan - - - - - - -
5 Masked Rider HIBIKI /BANDAI/Japan - - - - - - -
- 6 Magic Ranger Battle /BANDAI/Japan - - - - - - -
+ 6 Magic Ranger Battle /BANDAI/Japan - - - - - - dumped
7 Accessory cartridge for Super TV computer "ECC Junior"/EPOCH/Japan - - - - - - -
8 Wild Adventure Mini Golf Game /Hasbro/USA MGFA x8 48 4M 24C04 SSD 98 PL7351-181 dumped
9 MX DIRT REBEL Game /Hasbro/USA MTXA x8 48 8M 24C04 SSD 2000 NEC 85605-621 dumped
10 Dokodemo Doraemon Japan Travel Game DX /EPOCH/Japan - - - - - - -
- 11 Tomas Plarail /TOMY/Japan - - - - - - -
+ 11 Tomas Plarail /TOMY/Japan - - - - - - - dumped?
12 Thomas TV Personal Computer /EPOCH/Japan - - - - - - -
13 STAR WARS Light Saber Battle /TOMY/Japan - - - - - - -
14 Jala Jaland /atlus/Japan - - - - - - - (is this the arcade release of Jara-Ja Land /TAKARA/Japan below?, Atlas are an arcade distributor and arcade version is confirmed)
@@ -82,7 +82,7 @@
13 All star Festival Quize /EPOCH/Japan - - - - - - -
14 e-kara mix /TAKARA/Japan - - - - - - -
15 Jumping Popira /TAKARA/Japan - - - - - - -
- 16 Tour around Japan. I'm a Prarail motorman /TOMY/Japan - - - - - - -
+ 16 Tour around Japan. I'm a Prarail motorman /TOMY/Japan - - - - - - dumped
17 TV mail PC "Mercot /EPOCH/Japan - - - - - - -
18 Play TV Monster Truck /RADICA/USA 74026 x8 48 4M none SSD 98 PL7351-181 dumped
19 Play TV Madden Football /RADICA/USA 74021 x8 48 4M none SSD 98 PL7351-181 dumped
@@ -115,7 +115,7 @@
22 Dual Station /TAKARA/Japan - - - - - - -
23 Gei-Geki GoGo! Shooting /TAKARA/Japan - - - - - - dumped
24 Let's fish a big one. Exciting fishing! /EPOCH/Japan - - - - - - -
- 25 Champion Pinball /TOMY/Japan - - - - - - -
+ 25 Champion Pinball /TOMY/Japan - - - - - - dumped
26 Excite Fishing DX EF2J x8 48 4M 24C08 SSD 98 PL7351-181 dumped
2002 1 Accessory cartridge for Slot machine "Gin-gin maru TV" /TAKARA/Japan - - - - - - dumped
2 Wildest computer robot "Daigander" (Korean version) /TAKARA/Korea - - - - - - -
@@ -564,6 +564,123 @@ static INPUT_PORTS_START( tomcpin )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
INPUT_PORTS_END
+static INPUT_PORTS_START( mrangbat )
+ PORT_INCLUDE(xavix_i2c)
+
+ PORT_MODIFY("IN0")
+ PORT_DIPNAME( 0x01, 0x00, "IN0" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+
+ PORT_MODIFY("IN1")
+ PORT_DIPNAME( 0x01, 0x00, "IN1" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("i2cmem", i2cmem_device, read_sda)
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+
+ PORT_START("EX0") // NOT A JOYSTICK!!
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_16WAY // Red/Up 1
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_16WAY // Red/Up 2
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_16WAY // Green / Circle / Right 2
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_16WAY // Pink / Star / Left 2
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_16WAY // Blue / Square / Right 1
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_16WAY // Yellow / Triangle / Left 1
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON7 )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON8 )
+
+
+ PORT_START("EX1")
+ PORT_DIPNAME( 0x01, 0x00, "EX1" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+
+ PORT_START("EX2")
+ PORT_DIPNAME( 0x01, 0x00, "EX2" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+INPUT_PORTS_END
+
static INPUT_PORTS_START( epo_bowl )
PORT_INCLUDE(xavix)
@@ -1726,6 +1843,22 @@ void xavix_i2c_state::xavix2002_i2c_24c04(machine_config &config)
I2CMEM(config, "i2cmem", 0).set_page_size(16).set_data_size(0x200); // 24C04
}
+void xavix_i2c_state::xavix2002_i2c_mrangbat(machine_config &config)
+{
+ xavix2002(config);
+
+ I2CMEM(config, "i2cmem", 0).set_page_size(16).set_data_size(0x100); // 24C02?
+
+ m_xavix2002io->read_0_callback().set_ioport("EX0");
+ //m_xavix2002io->write_0_callback().set(FUNC(xavix_i2c_jmat_state::write_extended_io0));
+ m_xavix2002io->read_1_callback().set_ioport("EX1");
+ //m_xavix2002io->write_1_callback().set(FUNC(xavix_i2c_jmat_state::write_extended_io1));
+ m_xavix2002io->read_2_callback().set_ioport("EX2");
+ //m_xavix2002io->write_2_callback().set(FUNC(xavix_i2c_jmat_state::write_extended_io2));
+
+}
+
+
void xavix_state::init_xavix()
{
m_rgnlen = memregion("bios")->bytes();
@@ -1957,6 +2090,13 @@ ROM_START( tomcpin )
ROM_LOAD("championpinball.bin", 0x000000, 0x400000, CRC(24f6d753) SHA1(3d3b39692bef8156da9e350b456c4e2f0af74484) )
ROM_END
+ROM_START( tomplc )
+ ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
+ ROM_LOAD("imaplayrailconductor.bin", 0x000000, 0x400000, CRC(b775d0ed) SHA1(33142509b11bbe45b0b9222232033dd64ef01ff2) )
+ROM_END
+
+
+
/*
The e-kara cartridges require the BIOS rom to map into 2nd external bus space as they fetch palette data from
it etc.
@@ -2153,6 +2293,9 @@ CONS( 2003, tcarnavi, 0, 0, xavix_nv, jarajal, xavix_state,
CONS( 2003, tomcpin, 0, 0, xavix_i2c_24c02, tomcpin, xavix_i2c_state, init_xavix, "Tomy / SSD Company LTD", "Champiyon Pinball (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+CONS( 2004, tomplc, 0, 0, xavix_i2c_24c02, tomcpin, xavix_i2c_state, init_xavix, "Tomy / SSD Company LTD", "Nihon Isshuu - Boku wa Plarail Untenshi (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+
/* Music titles: Emulation note:
SEEPROM write appears to work (save NVRAM file looks valid) but game fails to read it back properly, fails backup data checksum, and blanks it again.
Timers might not be 100%, PAL stuff uses different ways to do timing.
@@ -2266,11 +2409,6 @@ CONS( 2004, ban_onep, 0, 0, xavix2000_i2c_24c04, ttv_lotr, xavix_i2c_lotr_sta
The 'Domyos Interactive System (DiS)' released in France by Decathlon appears to be identical to XaviXPORT (but for PAL regions, and with an entirely different software range)
*/
-ROM_START( tmy_thom )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "thomastank.bin", 0x000000, 0x800000, CRC(a52a23be) SHA1(e5b3500239d9e56eb5405f7585982959e5a162da) )
-ROM_END
-
// XaviXPORT
ROM_START( xavtenni )
ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
@@ -2337,8 +2475,18 @@ ROM_START( domdance )
ROM_LOAD( "xpfitnessdance.bin", 0x000000, 0x1000000, CRC(3170dd41) SHA1(9c9b4f1d8e7c5097271bb8712463ad93c8d55d97) )
ROM_END
-// TODO: does it have an SEEPROM? why does it hang? full title?
-CONS( 2005, tmy_thom, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "Tomy / SSD Company LTD", "Thomas and Friends (Tomy)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+
+ROM_START( mrangbat )
+ ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
+ ROM_LOAD("powerrangerspad.bin", 0x000000, 0x400000, CRC(d3a98775) SHA1(485c66242dd0ee436a278d23005aece48d606431) )
+ROM_END
+
+ROM_START( tmy_thom )
+ ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
+ ROM_LOAD( "thomastank.bin", 0x000000, 0x800000, CRC(a52a23be) SHA1(e5b3500239d9e56eb5405f7585982959e5a162da) )
+ROM_END
+
CONS( 2004, xavtenni, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "SSD Company LTD", "XaviX Tennis (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
CONS( 2004, xavbaseb, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "SSD Company LTD", "XaviX Baseball (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
@@ -2369,3 +2517,8 @@ CONS( 2008, domfitch, 0, 0, xavix2002_i2c_jmat, xavixp, xavix_i2c_jmat_state, in
CONS( 2007, domdance, 0, 0, xavix2002_i2c_jmat, xavixp, xavix_i2c_jmat_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Fitness Dance (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
// some DIS games run on XaviX 2 instead, see xavix2.cpp for Domyos Fitness Adventure and Domyos Bike Concept
+
+CONS( 2005, mrangbat, 0, 0, xavix2002_i2c_mrangbat, mrangbat, xavix_i2c_state, init_xavix, "Bandai / SSD Company LTD", "Mahou Taiketsu Magiranger - Magimat de Dance & Battle (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+// TODO: does it have an SEEPROM? why does it hang? full title?
+CONS( 2005, tmy_thom, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "Tomy / SSD Company LTD", "Thomas and Friends (Tomy)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/includes/gaelco2.h b/src/mame/includes/gaelco2.h
index e33d05831c3..025e6d56797 100644
--- a/src/mame/includes/gaelco2.h
+++ b/src/mame/includes/gaelco2.h
@@ -28,6 +28,7 @@ public:
void maniacsq_d5002fp(machine_config &config);
void play2000(machine_config &config);
+ void srollnd(machine_config &config);
void alighunt(machine_config &config);
void touchgo(machine_config &config);
void alighunt_d5002fp(machine_config &config);
@@ -90,6 +91,11 @@ private:
void snowboar_map(address_map &map);
void touchgo_map(address_map &map);
void saltcrdi_map(address_map &map);
+ void srollnd_map(address_map &map);
+
+ // simulation
+ DECLARE_READ16_MEMBER(srollnd_share_sim_r);
+ DECLARE_WRITE16_MEMBER(srollnd_share_sim_w);
u32 m_snowboard_latch;
diff --git a/src/mame/includes/xavix.h b/src/mame/includes/xavix.h
index cc7559c5ea2..e5ebcb0f865 100644
--- a/src/mame/includes/xavix.h
+++ b/src/mame/includes/xavix.h
@@ -635,6 +635,7 @@ public:
void xavix2000_i2c_24c02(machine_config &config);
void xavix2002_i2c_24c04(machine_config &config);
+ void xavix2002_i2c_mrangbat(machine_config& config);
void init_epo_efdx()
{
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index cf4ea1803e0..e41b9a43a28 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -13813,6 +13813,7 @@ bangj // (c) 1999 - Ref ???
play2000 // (c) 1999 - Ref ???
play2000_40i // (c) 1999 - Ref ???
play2000_50i // (c) 1999 - Ref ???
+srollnd
maniacsq // (c) 1996 - Ref 940411
maniacsqa // (c) 1996 - Ref 940411
maniacsqu // (c) 1996 - Ref 940411 - (unprotected)
@@ -14509,6 +14510,7 @@ gbpocket // Nintendo Game Boy Pocket Handheld
megaduck // Megaduck
supergb // Nintendo Super Game Boy SNES Cartridge
supergb2 //
+mducklrn
@source:gba.cpp
gba // Nintendo Game Boy Advance Handheld
@@ -31368,6 +31370,7 @@ fcpocket
mog_m320
fapocket
zdog
+bandgpad
ts_handy11
@source:vt1682.cpp
@@ -37036,6 +37039,9 @@ sentx6pd
taikeegr //
shredmjr //
+@source:spg2xx_smarttv.cpp
+smartvad
+
@source:spg2xx_telestory.cpp
telestry //
@@ -37640,6 +37646,7 @@ jak_car2
jak_gtg
jak_tsm
vbaby
+mgtfit
beambox
bkrankp
@@ -41169,6 +41176,8 @@ tak_geig //
jarajal //
tcarnavi //
tomcpin
+tomplc
+mrangbat
ban_onep //
ekara //
ekaraa //
--
cgit v1.2.3