From b973a74df6818d44eea90e126767ae8d0f901dae Mon Sep 17 00:00:00 2001 From: David Haywood <28625134+DavidHaywood@users.noreply.github.com> Date: Sun, 1 Mar 2020 12:44:27 +0000 Subject: Plug and Play work (#6363) * set discpal to correct machine type (nw) * moew skannerz tv to its own driver and add notes from Tahg [Tahg] * buzztime IO notes from Tahg [Tahg] * new NOT WORKING ---- Pac-Man Connect & Play (Feb 14 2012 10:46:23) [Sean Riddle, David Haywood] boots and you can select things from the menu but this is the newer SP SoC and needs a LOT of work on the graphics. --- scripts/target/mame/mess.lua | 1 + src/mame/drivers/elan_eu3a05.cpp | 113 +++++++++ src/mame/drivers/spg2xx.cpp | 123 ---------- src/mame/drivers/spg2xx_lexibook.cpp | 5 +- src/mame/drivers/spg2xx_skannerztv.cpp | 432 +++++++++++++++++++++++++++++++++ src/mame/drivers/sunplus_unsp20soc.cpp | 90 ++++++- src/mame/mame.lst | 5 +- src/mame/mess.flt | 1 + 8 files changed, 643 insertions(+), 127 deletions(-) create mode 100644 src/mame/drivers/spg2xx_skannerztv.cpp diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index e6a0df3eb59..229925d50fb 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -3823,6 +3823,7 @@ files { MAME_DIR .. "src/mame/drivers/tvgame.cpp", MAME_DIR .. "src/mame/drivers/spg110.cpp", MAME_DIR .. "src/mame/drivers/spg2xx.cpp", + MAME_DIR .. "src/mame/drivers/spg2xx_skannerztv.cpp", MAME_DIR .. "src/mame/drivers/spg2xx_jakks.cpp", MAME_DIR .. "src/mame/drivers/spg2xx_jakks_gkr.cpp", MAME_DIR .. "src/mame/drivers/spg2xx_jakks_tvtouch.cpp", diff --git a/src/mame/drivers/elan_eu3a05.cpp b/src/mame/drivers/elan_eu3a05.cpp index 43205a2f2a2..123872cb35e 100644 --- a/src/mame/drivers/elan_eu3a05.cpp +++ b/src/mame/drivers/elan_eu3a05.cpp @@ -93,6 +93,119 @@ */ +/* + +Buzztime Trivia notes from Tahg (addresses based on base ROM, not cartridges) + +300 Cursor Left +301 Cursor Top +302 Cursor Right +303 Cursor Bottom + +3E5 Sent Command +3E6 Watchdog Counter +3E9 Active Player +3EA Sent Player Id/Incoming Byte +3EB Sent Player Button/Loop Counter + +0-A Name +E-F Score +44x Player 1 Data +... +4Fx Player 12 Data + +509 Cursor index +515 Name on Enter name screen + +These read a byte, (aaabbbcc) MSB first on IO 5041. In general: +Set 5043 bit 0 high. +Repeat 8 times + Wait for 5041 bit 0 to go high + Read 5041 bit 1 +Set 5043 bit 0 low + +6B29 ReadCommandA Exit on c=2 or c=1,b=7,a=7 Watchdog resets counters and reads port again +6BE8 ReadCommandB Exit on c=2 or c=1,b=7,a=7 Watchdog exits with b=FF if 3E7 nonzero +6CB4 ReadCommandC Exit on c=2 Watchdog exits with b=FF + + Address Publics by Value + + 00000000:00000000 byte_0 + 00000000:0000050A index + 00000000:00006011 LoadTileSet + 00000000:0000605B LoadPalette + 00000000:00006090 SetTileBase + 00000000:000060D7 DisableSprites + 00000000:000060F0 SetSpriteBase + 00000000:0000648F Play0 + 00000000:00006494 Play1 + 00000000:00006499 Play2 + 00000000:0000649E Play3 + 00000000:000064A3 Play4 + 00000000:000064A8 Play5 + 00000000:000064AD Play6 + 00000000:000064B2 Play7 + 00000000:000064B7 Play8 + 00000000:000064BC Play9 + 00000000:000064C1 PlayA + 00000000:000064C6 PlayB + 00000000:000064CB DisableSoundCh0 + 00000000:000064EA DisableSoundCh1 + 00000000:00006509 DisableSoundCh2 + 00000000:00006528 DisableSoundCh3 + 00000000:00006547 DisableSoundCh4 + 00000000:00006566 DisableSoundCh5 + 00000000:00006585 DisableSoundChAll + 00000000:000065AC WaitForVBIAndSetSpriteBase + 00000000:000065B5 WaitForVBIAndSetTileBase + 00000000:000065BE WaitForVBIAndLoadTileSet + 00000000:000065C7 JJLoadTileSet + 00000000:00006933 DrawBackground + 00000000:00006B29 ReadCommandA + 00000000:00006BE8 ReadCommandB + 00000000:00006CB4 ReadCommandC + 00000000:00006D66 DrawText + 00000000:00007E80 WaitXTimesForInput + 00000000:000099B4 NameScreenLoop + 00000000:00009EB0 NameScreenSetChar + 00000000:00009F43 NameScreenDeleteChar + 00000000:00009FC8 NameScreenCalcCharacter + 00000000:0000A02F NameScreenCalculateCursor + 00000000:0000A051 NameScreenUpdateCursor + 00000000:0000A112 SelectPlayersLoop + 00000000:0000A290 SelectPlayer + 00000000:0000A31E CreatePlayer + 00000000:0000A769 ReadAAndWaitForSelect + 00000000:0000A821 DrawRoundTitles + 00000000:0000AD8A ReadAAndSetPlayer + 00000000:0000ADDF ReadAAndCheckPlayer + 00000000:0000AF1F ShowQuestion + 00000000:0000AF65 ShowChoices + 00000000:0000AFC5 ShowHint1 + 00000000:0000B004 ShowHint2 + 00000000:0000B033 ShowHint3 + 00000000:0000B061 ShowAnswer + 00000000:0000B0BF ShowReason + 00000000:0000B1C0 ShowScore + 00000000:0000C848 MenuUpdate + 00000000:0000D10D WinScreen + 00000000:0000D1F1 DoFireworks + 00000000:0000E9AE JLoadTileSet + 00000000:0000E9B6 JLoadPalette + 00000000:0000E9C2 JSetTileBase + 00000000:0000E9C8 JSetSpriteBase + 00000000:0000E9CE JDisableSprites + 00000000:0000E9D4 SetGamePage + 00000000:0000E9DF MemoryTest + 00000000:0000EA36 SRAMTest + 00000000:0000EBA9 nullsub_1 + 00000000:0000EBAA WaitForVBI + 00000000:0000EBCA RomTest + 00000000:0000EC24 WaitForTimer + 00000000:0000ECE9 nullsub_2 + +*/ + #include "emu.h" #include "cpu/m6502/m6502.h" //#include "cpu/m6502/m65c02.h" diff --git a/src/mame/drivers/spg2xx.cpp b/src/mame/drivers/spg2xx.cpp index 76dc4b33a6e..77104819b89 100644 --- a/src/mame/drivers/spg2xx.cpp +++ b/src/mame/drivers/spg2xx.cpp @@ -322,104 +322,6 @@ static INPUT_PORTS_START( rad_skatp ) PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) // NTSC (1) / PAL (0) flag INPUT_PORTS_END -static INPUT_PORTS_START( rad_sktv ) - /* how does the Scanner connect? probably some serial port with comms protocol, not IO ports? - internal test mode shows 'uart' ports (which currently fail) - - To access internal test hold DOWN and BUTTON1 together on startup until a coloured screen appears. - To cycle through the tests again hold DOWN and press BUTTON1 */ - - PORT_START("P1") - PORT_DIPNAME( 0x0001, 0x0001, "IN0" ) - 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_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) - 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_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) - PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON2 ) - 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("P2") - PORT_DIPNAME( 0x0001, 0x0001, "IN1" ) - 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_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED ) -INPUT_PORTS_END static INPUT_PORTS_START( wiwi18 ) PORT_START("P1") @@ -1187,19 +1089,6 @@ void spg2xx_game_state::rad_skatp(machine_config &config) // m_screen->set_size(320, 312); } -void spg2xx_game_state::rad_sktv(machine_config &config) -{ - SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen); - m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_state::mem_map_4m); - - spg2xx_base(config); - - m_maincpu->porta_in().set(FUNC(spg2xx_game_state::base_porta_r)); - m_maincpu->portb_in().set(FUNC(spg2xx_game_state::base_portb_r)); - m_maincpu->portc_in().set(FUNC(spg2xx_game_state::base_portc_r)); - m_maincpu->i2c_w().set(FUNC(spg2xx_game_state::i2c_w)); - m_maincpu->i2c_r().set(FUNC(spg2xx_game_state::i2c_r)); -} void spg2xx_game_state::rad_crik(machine_config &config) { @@ -1225,17 +1114,6 @@ ROM_START( rad_skatp ) // rom was dumped from the NTSC version, but region comes ROM_LOAD16_WORD_SWAP( "skateboarder.bin", 0x000000, 0x400000, CRC(08b9ab91) SHA1(6665edc4740804956136c68065890925a144626b) ) ROM_END -ROM_START( rad_sktv ) - ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) - ROM_LOAD16_WORD_SWAP( "skannerztv.bin", 0x000000, 0x200000, CRC(e92278e3) SHA1(eb6bee5e661128d83784960dfff50379c36bfaeb) ) - - /* The external scanner MCU is a Winbond from 2000: SA5641 - the scanner plays sound effects when scanning, without being connected to the main unit, so a way to dump / emulate - this MCU is also needed for complete emulation - - TODO: find details on MCU so that we know capacity etc. */ -ROM_END - ROM_START( rad_fb2 ) ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD16_WORD_SWAP( "football2.bin", 0x000000, 0x400000, CRC(96b4f0d2) SHA1(e91f2ac679fb0c026ffe216eb4ab58802f361a17) ) @@ -1366,7 +1244,6 @@ void spg2xx_game_swclone_state::init_swclone() CONS( 2006, rad_skat, 0, 0, rad_skat, rad_skat, spg2xx_game_state, init_crc, "Radica", "Play TV Skateboarder (NTSC)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) CONS( 2006, rad_skatp, rad_skat, 0, rad_skatp,rad_skatp, spg2xx_game_state, init_crc, "Radica", "Connectv Skateboarder (PAL)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) CONS( 2006, rad_crik, 0, 0, rad_crik, rad_crik, spg2xx_game_state, init_crc, "Radica", "Connectv Cricket (PAL)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // Version 3.00 20/03/06 is listed in INTERNAL TEST -CONS( 2007, rad_sktv, 0, 0, rad_sktv, rad_sktv, spg2xx_game_state, init_crc, "Radica", "Skannerz TV", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) 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 diff --git a/src/mame/drivers/spg2xx_lexibook.cpp b/src/mame/drivers/spg2xx_lexibook.cpp index 978e2fe0596..194c2617d58 100644 --- a/src/mame/drivers/spg2xx_lexibook.cpp +++ b/src/mame/drivers/spg2xx_lexibook.cpp @@ -331,8 +331,11 @@ ROM_END // these all have the same ROM scrambling CONS( 200?, lexizeus, 0, 0, lexizeus, lexizeus, spg2xx_lexizeus_game_state, init_zeus, "Lexibook", "Zeus IG900 20-in-1 (US?)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // bad sound and some corrupt bg tilemap entries in Tiger Rescue, verify ROM data (same game runs in Zone 60 without issue) + CONS( 200?, lexiseal, 0, 0, lexiseal, lexiseal, spg2xx_lexiseal_game_state, init_zeus, "Lexibook / Sit Up Limited", "Seal 50-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // also has bad sound in Tiger Rescue, but no corrupt tilemap -CONS( 200?, discpal, 0, 0, lexiseal, lexiseal, spg2xx_lexiseal_game_state, init_zeus, "Performance Designed Products / Disney / Jungle Soft", "Disney Game It! Classic Pals", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +// there are versions of the Seal that actually show Lexibook on the boot screen rather than just the unit + +CONS( 200?, discpal, 0, 0, lexizeus, lexiseal, spg2xx_lexizeus_game_state, init_zeus, "Performance Designed Products / Disney / Jungle Soft", "Disney Game It! Classic Pals", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // there was also a Game It! Princess Pals CONS( 200?, vgcaplet, 0, 0, lexiseal, lexiseal, spg2xx_lexiseal_game_state, init_zeus, "Performance Designed Products (licensed by Taito / Data East)", "VG Pocket Caplet Fast Acting 50-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/spg2xx_skannerztv.cpp b/src/mame/drivers/spg2xx_skannerztv.cpp new file mode 100644 index 00000000000..8ab794d8bc8 --- /dev/null +++ b/src/mame/drivers/spg2xx_skannerztv.cpp @@ -0,0 +1,432 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz, David Haywood + +// Skannerz TV + +/* I/O related notes from Tahg + +Summary: +SEND(from console) RECEIVE (to console) +--- Load monsters / items +1 2 +128 + 0 M/I[0] HIBYTE, LOBYTE +... ... +128 + 99 M/I[99] HIBYTE, LOBYTE +--- Save monsters / items +4 5 +128 + 0, M/I[0] HIBYTE, LOBYTE 6 +... ... +128 + 99, M/I[99] HIBYTE, LOBYTE 6 +--- Buttons +3 BHI, BLO + +Buttons +BLO: +Bit 0 Up +Bit 1 Down +Bit 2 2/B +Bit 3 1/A +Bit 4 Left +Bit 5 Right +Bit 6 Unused +Bit 7 Unused +BHI: Unused + +Port A +Bit 0 Enable "Left" Controller +Bit 1 Enable "Right" Controller + +Player +0: +8: +B: +D: +E: +65: monsters +B5: items + +doPlayer(player) + var_3 = player - 1 + pData = Player[var_3] + switch(PlayerState[var_3]) + case 0: // Request controller -> console state + r1 = 79 + while(--r1 >= 0) + PlayerState[var_3] = 1 + P_UART_Ctrl |= TxEn + P_UART_Ctrl |= TxIntEn + while(P_UART_Status & TXBUSY) + P_UART_Ctrl &= ~RxEn + P_UART_TxBuf = 1 + WaitCycle[var_3] = 6 + CurMI[var_3] = 0 + break + case 1: // Receive controller -> console state (expects 2) + if(Uartp != Uartg) + byte_1241 = UARTBuffer[Uartg] + if(byte_1241 == 2) + PlayerState[var_3] = 2 + InitPlayer(var_3) + Uartg = Uartg == 7 ? 0 : Uartg + 1 + break + case 2: // Sync monster / item + if(CurMI[var_3] != 100) + var_6 = CurMI[var_3] | 80h + while(P_UART_Status & TXBUSY) + P_UART_Ctrl &= ~RxEn + P_UART_TxBuf = var_6 + PlayerState[var_3] = 3 + WaitCycle[var_3] = 6 + Retries[var_3] = 3 + CurRecByte[var_3] = 0 + else if(player == 1 && byte_1238 & 100h) + PlayerState[var_3] = 6 + byte_1238 &= ~100h + else if(player == 2 && byte_1238 & 200h) + PlayerState[var_3] = 6 + byte_1238 &= ~200h + else + PlayerState[var_3] = 4 + if(player == 1) + P_IOA_Buffer |= 1 + byte_1238 |= 11 + else if(player == 2) + P_IOA_Buffer |= 2 + byte_1238 |= 22 + break + case 3: // Receive monster / item + if(Uartp != Uartg) + r4 = CurMI[var_3] + var_A = UARTBuffer[Uartg] + if(CurRecByte[var_3] == 0) + if(r4 > 79) + pData.items[r4-80] = var_A << 8 + else pData.monsters[r4] = var_A << 8 + CurRecByte[var_3] += 1 + else if(CurRecByte[var_3] == 1) + if(r4 > 79) + pData.items[r4-80] |= var_A + else pData.monsters[r4] |= var_A + PlayerState[var_3] = 2 + CurMI[var_3] += 1 + Uartg = Uartg == 7 ? 0 : Uartg + 1 + break + case 4: + if(player == 1) + if((byte_1238 & 4) == 0) + byte_1238 |= 4 + r1 = 79 + while(--r1 >= 0) + while(P_UART_Status & TXBUSY) + else break + else if(player == 2) + if((byte_1238 & 8) == 0) + byte_1238 |= 8 + r1 = 79 + while(--r1 >= 0) + while(P_UART_Status & TXBUSY) + break + else break + else break + P_UART_Ctrl &= ~RxEn + P_UART_TxBuf = 3 + PlayerState[var_3] = 5 + WaitCycle[var_3] = 6 + Retries[var_3] = 3 + CurRecByte[var_3] = 0 + break + case 5: + if(Uartp != Uartg) + var_4 = CurRecByte[var_3] + if(var_4 == 0) + byte_1242[var_3] = UARTBuffer[Uartg] & 3fh + CurRecByte[var_3] += 1 + else if(var_4 == 1) + byte_1234[var_3] = UARTBuffer[Uartg] & 3fh + PlayerState = 2 + WaitCycle[var_3] = 0 + if(player == 1) + P_IOA_Buffer |= 1 + byte_1238 &= ~4 + else if(player == 2) + P_IOA_Buffer |= 2 + byte_1238 &= ~8 + Uartg = Uartg == 7 ? 0 : Uartg + 1 + break: + case 6: // Request console -> controller state + r1 = 79 + while(--r1 >= 0) + while(P_UART_Status & TXBUSY) + P_UART_Ctrl &= ~RxEn + P_UART_TxBuf = 4 + PlayerState[var_3] = 7 + WaitCycle[var_3] = 6 + CurMI[var_3] = 0 + Retries[var_3] = 3 + case 7: // Receive console -> controller state (expects 5) + if(Uartp != Uartg) + if(UARTBuffer[Uartg] == 5) + PlayerState = 8 + WaitCycle[var_3] = 6 + CurSendByte[var_3] = 0 + Retries[var_3] = 3 + Uartg = Uartg == 7 ? 0 : Uartg + 1 + break + case 8: // Send monster / item + r4 = CurMI[var_3] + if( r4 <= 99) + var_9 = CurSendByte[var_3] + var_8 = 0 + if((P_UART_Status & TXBUSY) == 0) + var_8 = 1 + if(var_8) + if(var_9 == 0) + var_1 = r4 | 80h + while(P_UART_Status & TXBUSY) + P_UART_Ctrl &= ~RxEn + P_UART_TxBuf = var_1 + WaitCycle[var_3] = 6 + CurSendByte[var_3] += 1 + else if(var_9 == 1) + if (r4 <= 79) + var_1 = (pData.monsters[r4] & 0xFF00) >> 8 + while(P_UART_Status & TXBUSY) + P_UART_Ctrl &= ~RxEn + P_UART_TxBuf = var_1 + else + var_1 = (pData.monsters[r4-80] & 0xFF00) >> 8 + while(P_UART_Status & TXBUSY) + P_UART_Ctrl &= ~RxEn + P_UART_TxBuf = var_1 + WaitCycle[var_3] = 6 + CurSendByte[var_3] += 1 + else if(var_9 == 2) + if (r4 <= 79) + var_1 = pData.monsters[r4] & 0xFF + while(P_UART_Status & TXBUSY) + P_UART_Ctrl &= ~RxEn + P_UART_TxBuf = var_1 + else + var_1 = pData.monsters[r4-80] & 0xFF + while(P_UART_Status & TXBUSY) + P_UART_Ctrl &= ~RxEn + P_UART_TxBuf = var_1 + WaitCycle[var_3] = 6 + CurSendByte[var_3] += 1 + PlayerState[var_3] = 9 + else + PlayerState = 4 + if(player == 1) + P_IOA_Buffer |= 1 + byte_1238 |= 4 + else if(player == 2) + P_IOA_Buffer |= 2 + byte_1238 |= 8 + break + case 9: // Receive monster / item sent state (expects 6) + if(Uartp != Uartg) + if(UARTBuffer[Uartg] == 6) + PlayerState[var_3] = 8 + WaitCycle[var_3] = 0 + CurSendByte[var_3] = 0 + CurMI[var_3] += 1 + Retries[var_3] = 3 + break + doPlayerMore(player) + +doPlayerMore(player) + var_2 = WaitCycle[player-1] + if(var_2 == 0) return + var_2-- + WaitCycle[player-1] = var_2 + if(var_2 != 0) return + switch(PlayerState[player-1]) + case 3: + if(Retries[player-1]--) + var_3 = CurMI[player-1] | 80h + while(P_UART_Status & TXBUSY) + P_UART_Ctrl = var_1 = P_UART_Ctrl & ~RxEn + P_UART_TxBuf = var_3 + WaitCycle[player-1] = 6 + CurRecByte[player-1] = 0 + return + break + case 5: + if(Retries[player-1]--) + while(P_UART_Status & TXBUSY) + P_UART_Ctrl = var_1 = P_UART_Ctrl & ~RxEn + P_UART_TxBuf = 3 + WaitCycle[player-1] = 6 + CurRecByte[player-1] = 0 + return + break + case 7: + if(Retries[player-1]--) + while(P_UART_Status & TXBUSY) + P_UART_Ctrl = var_1 = P_UART_Ctrl & ~RxEn + P_UART_TxBuf = 4 + WaitCycle[player-1] = 6 + return + break + case 9: + if(Retries[player-1]--) + PlayerState = 8 + CurSendByte[player] = 0 + else + ClearPlayer(player) + return + case 1: + ClearPlayer(player) + return + ClearPlayer(player) + if(player == 1) + byte_1238 |= 40h + byte_1238 &= ~10h + else if(player == 2) + byte_1238 |= 80h + byte_1238 &= ~20h + +*/ + +#include "emu.h" +#include "includes/spg2xx.h" +#include "machine/nvram.h" + +class skannerztv_state : public spg2xx_game_state +{ +public: + skannerztv_state(const machine_config &mconfig, device_type type, const char *tag) : + spg2xx_game_state(mconfig, type, tag) + { } + + void rad_sktv(machine_config& config); + +private: +}; + +static INPUT_PORTS_START( rad_sktv ) + /* how does the Scanner connect? probably some serial port with comms protocol, not IO ports? + internal test mode shows 'uart' ports (which currently fail) + + To access internal test hold DOWN and BUTTON1 together on startup until a coloured screen appears. + To cycle through the tests again hold DOWN and press BUTTON1 */ + + PORT_START("P1") + PORT_DIPNAME( 0x0001, 0x0001, "IN0" ) + 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_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) + 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_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON2 ) + 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("P2") + PORT_DIPNAME( 0x0001, 0x0001, "IN1" ) + 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_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED ) +INPUT_PORTS_END + +void skannerztv_state::rad_sktv(machine_config &config) +{ + SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen); + m_maincpu->set_addrmap(AS_PROGRAM, &skannerztv_state::mem_map_4m); + + spg2xx_base(config); + + m_maincpu->porta_in().set(FUNC(skannerztv_state::base_porta_r)); + m_maincpu->portb_in().set(FUNC(skannerztv_state::base_portb_r)); + m_maincpu->portc_in().set(FUNC(skannerztv_state::base_portc_r)); + //m_maincpu->i2c_w().set(FUNC(skannerztv_state::i2c_w)); + //m_maincpu->i2c_r().set(FUNC(skannerztv_state::i2c_r)); +} + + +ROM_START( rad_sktv ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "skannerztv.bin", 0x000000, 0x200000, CRC(e92278e3) SHA1(eb6bee5e661128d83784960dfff50379c36bfaeb) ) + + /* The external scanner MCU is a Winbond from 2000: SA5641 + the scanner plays sound effects when scanning, without being connected to the main unit, so a way to dump / emulate + this MCU is also needed for complete emulation + + TODO: find details on MCU so that we know capacity etc. */ +ROM_END + +CONS( 2007, rad_sktv, 0, 0, rad_sktv, rad_sktv, skannerztv_state, init_crc, "Radica", "Skannerz TV", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/sunplus_unsp20soc.cpp b/src/mame/drivers/sunplus_unsp20soc.cpp index c7e4b3fcf4e..269f06a558d 100644 --- a/src/mame/drivers/sunplus_unsp20soc.cpp +++ b/src/mame/drivers/sunplus_unsp20soc.cpp @@ -3,7 +3,7 @@ /* (unSP 2.0 based System on a Chip) - JAKKS call this GPAC800, other sources call it GPL16250 + JAKKS call this GPAC800, other sources (including Pac-Man Connect and Play test mode) call it GPL16250 die markings GCM394 - Smart Fit Park @@ -1049,7 +1049,80 @@ static INPUT_PORTS_START( jak_s500 ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) INPUT_PORTS_END -ROM_START(smartfp) +static INPUT_PORTS_START( paccon ) // for Test Mode hold buttons 1+2 until the screen starts changing colours (happens after the copyright display) + PORT_START("IN0") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNUSED ) // PAL/NTSC flag + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNUSED ) // '***' + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED ) // '***' + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) // 'A' + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON3 ) // '*C* (doesn't exist?) (cheat) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) // 'B' + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) // '***' + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) // '*MENU*' (doesn't exist?) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED ) // '***' + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED ) // '***' + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED ) // '***' + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED ) // '***' + + PORT_START("IN1") + PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN2") + PORT_DIPNAME( 0x0001, 0x0001, "IN2" ) + 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 + +ROM_START( smartfp ) //ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) // not on this model? (or at least not this size, as CS base is different) //ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) @@ -1057,6 +1130,15 @@ ROM_START(smartfp) ROM_LOAD16_WORD_SWAP("smartfitpark.bin", 0x000000, 0x800000, CRC(ada84507) SHA1(a3a80bf71fae62ebcbf939166a51d29c24504428)) ROM_END +ROM_START( paccon ) + //ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) // not on this model? (or at least not this size, as CS base is different) + //ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) + + ROM_REGION(0x800000, "maincpu", ROMREGION_ERASE00) + ROM_LOAD16_WORD_SWAP("pacmanconnect.bin", 0x000000, 0x400000, CRC(8567cdc7) SHA1(cef4e003142e479169e4438ab33558436ee9ee68) ) +ROM_END + + ROM_START( tkmag220 ) //ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) // not on this model? (or at least not this size, as CS base is different) //ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) @@ -1286,6 +1368,10 @@ CONS(200?, tkmag220, 0, 0, tkmag220, tkmag220, tkmag220_game_state, empty_init // Fun 2 Learn 3-in-1 SMART SPORTS ? +// also sold as "Pac-Man Connect & Play 35th Anniversary" (same ROM?) +CONS(2012, paccon, 0, 0, wrlshunt, 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(2009, jak_s500, 0, 0, wrlshunt, jak_s500, jak_s500_game_state, init_wrlshunt, "JAKKS Pacific Inc", "SpongeBob SquarePants Bikini Bottom 500 (JAKKS Pacific TV Motion Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) CONS(200?, jak_totm, 0, 0, wrlshunt, jak_s500, jak_s500_game_state, init_wrlshunt, "JAKKS Pacific Inc", "Toy Story - Toys on the Move (JAKKS Pacific TV Motion Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) // Toys on the Move has ISSI 404A diff --git a/src/mame/mame.lst b/src/mame/mame.lst index f3605f1ec88..083040025d0 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -37083,7 +37083,6 @@ lx_jg7425 @source:spg2xx.cpp rad_skat // rad_skatp // -rad_sktv // rad_crik // rad_fb2 // mattelcs // @@ -37157,6 +37156,9 @@ tmntpdc @source:spg2xx_playvision.cpp pvmil // +@source:spg2xx_skannerztv.cpp +rad_sktv // + @source:spg2xx_senario.cpp senmil senbbs @@ -37773,6 +37775,7 @@ srangerw // (c) 1988 SunA (WDK License) starfigh // (c) 1990 SunA @source:sunplus_unsp20soc.cpp +paccon jak_s500 jak_totm smartfp // Smart Fit Park diff --git a/src/mame/mess.flt b/src/mame/mess.flt index 71ddd2fb310..39cd8eb36f7 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -825,6 +825,7 @@ spg2xx_lexibook.cpp spg2xx_mysprtch.cpp spg2xx_pdc.cpp spg2xx_playvision.cpp +spg2xx_skannerztv.cpp spg2xx_senario.cpp spg2xx_senario_poker.cpp spg2xx_shredmjr.cpp -- cgit v1.2.3