mirror of
https://github.com/holub/mame
synced 2025-07-05 18:08:04 +03:00
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.
This commit is contained in:
parent
b48b0cb47c
commit
b973a74df6
@ -3823,6 +3823,7 @@ files {
|
|||||||
MAME_DIR .. "src/mame/drivers/tvgame.cpp",
|
MAME_DIR .. "src/mame/drivers/tvgame.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/spg110.cpp",
|
MAME_DIR .. "src/mame/drivers/spg110.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/spg2xx.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.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/spg2xx_jakks_gkr.cpp",
|
MAME_DIR .. "src/mame/drivers/spg2xx_jakks_gkr.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/spg2xx_jakks_tvtouch.cpp",
|
MAME_DIR .. "src/mame/drivers/spg2xx_jakks_tvtouch.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 "emu.h"
|
||||||
#include "cpu/m6502/m6502.h"
|
#include "cpu/m6502/m6502.h"
|
||||||
//#include "cpu/m6502/m65c02.h"
|
//#include "cpu/m6502/m65c02.h"
|
||||||
|
@ -322,104 +322,6 @@ static INPUT_PORTS_START( rad_skatp )
|
|||||||
PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) // NTSC (1) / PAL (0) flag
|
PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) // NTSC (1) / PAL (0) flag
|
||||||
INPUT_PORTS_END
|
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 )
|
static INPUT_PORTS_START( wiwi18 )
|
||||||
PORT_START("P1")
|
PORT_START("P1")
|
||||||
@ -1187,19 +1089,6 @@ void spg2xx_game_state::rad_skatp(machine_config &config)
|
|||||||
// m_screen->set_size(320, 312);
|
// 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)
|
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_LOAD16_WORD_SWAP( "skateboarder.bin", 0x000000, 0x400000, CRC(08b9ab91) SHA1(6665edc4740804956136c68065890925a144626b) )
|
||||||
ROM_END
|
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_START( rad_fb2 )
|
||||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||||
ROM_LOAD16_WORD_SWAP( "football2.bin", 0x000000, 0x400000, CRC(96b4f0d2) SHA1(e91f2ac679fb0c026ffe216eb4ab58802f361a17) )
|
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_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_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( 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.
|
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
|
// ABL TV Games
|
||||||
|
@ -331,8 +331,11 @@ ROM_END
|
|||||||
// these all have the same ROM scrambling
|
// 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?, 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?, 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
|
// 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 )
|
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 )
|
||||||
|
432
src/mame/drivers/spg2xx_skannerztv.cpp
Normal file
432
src/mame/drivers/spg2xx_skannerztv.cpp
Normal file
@ -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 )
|
@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
(unSP 2.0 based System on a Chip)
|
(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
|
die markings GCM394
|
||||||
- Smart Fit Park
|
- Smart Fit Park
|
||||||
@ -1049,7 +1049,80 @@ static INPUT_PORTS_START( jak_s500 )
|
|||||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
INPUT_PORTS_END
|
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_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_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_LOAD16_WORD_SWAP("smartfitpark.bin", 0x000000, 0x800000, CRC(ada84507) SHA1(a3a80bf71fae62ebcbf939166a51d29c24504428))
|
||||||
ROM_END
|
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_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_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_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 ?
|
// 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(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
|
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
|
||||||
|
|
||||||
|
@ -37083,7 +37083,6 @@ lx_jg7425
|
|||||||
@source:spg2xx.cpp
|
@source:spg2xx.cpp
|
||||||
rad_skat //
|
rad_skat //
|
||||||
rad_skatp //
|
rad_skatp //
|
||||||
rad_sktv //
|
|
||||||
rad_crik //
|
rad_crik //
|
||||||
rad_fb2 //
|
rad_fb2 //
|
||||||
mattelcs //
|
mattelcs //
|
||||||
@ -37157,6 +37156,9 @@ tmntpdc
|
|||||||
@source:spg2xx_playvision.cpp
|
@source:spg2xx_playvision.cpp
|
||||||
pvmil //
|
pvmil //
|
||||||
|
|
||||||
|
@source:spg2xx_skannerztv.cpp
|
||||||
|
rad_sktv //
|
||||||
|
|
||||||
@source:spg2xx_senario.cpp
|
@source:spg2xx_senario.cpp
|
||||||
senmil
|
senmil
|
||||||
senbbs
|
senbbs
|
||||||
@ -37773,6 +37775,7 @@ srangerw // (c) 1988 SunA (WDK License)
|
|||||||
starfigh // (c) 1990 SunA
|
starfigh // (c) 1990 SunA
|
||||||
|
|
||||||
@source:sunplus_unsp20soc.cpp
|
@source:sunplus_unsp20soc.cpp
|
||||||
|
paccon
|
||||||
jak_s500
|
jak_s500
|
||||||
jak_totm
|
jak_totm
|
||||||
smartfp // Smart Fit Park
|
smartfp // Smart Fit Park
|
||||||
|
@ -825,6 +825,7 @@ spg2xx_lexibook.cpp
|
|||||||
spg2xx_mysprtch.cpp
|
spg2xx_mysprtch.cpp
|
||||||
spg2xx_pdc.cpp
|
spg2xx_pdc.cpp
|
||||||
spg2xx_playvision.cpp
|
spg2xx_playvision.cpp
|
||||||
|
spg2xx_skannerztv.cpp
|
||||||
spg2xx_senario.cpp
|
spg2xx_senario.cpp
|
||||||
spg2xx_senario_poker.cpp
|
spg2xx_senario_poker.cpp
|
||||||
spg2xx_shredmjr.cpp
|
spg2xx_shredmjr.cpp
|
||||||
|
Loading…
Reference in New Issue
Block a user