diff --git a/src/mame/mame.lst b/src/mame/mame.lst index d80ad44d654bf..6a5db6ec27ef3 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -35836,6 +35836,7 @@ lxcmcyspn lxcmcysw lxcyber lxcypkdp +lxcypkfz lxcypkpp lxcypksp matet10 @@ -47136,6 +47137,7 @@ wrlshunt @source:tvgames/generalplus_gpl16250_spi.cpp anpanbd +anpaneng anpanm15 bk139in1 bkrankp @@ -47158,6 +47160,7 @@ bftetris bubltea dsgnpal pokebala +pokeissh pokgoget punifrnd punij1m @@ -47189,6 +47192,7 @@ anpanm19 arcadege ardancem bananlap +banaquap bandolap bandplap bandslap @@ -47210,6 +47214,7 @@ pocketmr pokepeac rotom2 saikyopc +segcarsh segdis16 smatomo spicanot @@ -47241,6 +47246,7 @@ rs70_648 @source:tvgames/myaatari.cpp kuniotv myaatari +pachdmi @source:tvgames/pubint_storyreader.cpp pi_stry @@ -47449,6 +47455,7 @@ tvtchsb @source:tvgames/spg2xx_lexibook.cpp arcade3d +cybrtvbb cybrtvfe lexizeus lexiseal diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index 247c1d5ac03f1..efe47f7ccbd34 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -832,6 +832,14 @@ ROM_START( lxcypkpp ) // all games selectable VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END +ROM_START( lxcypkfz ) // all games selectable + ROM_REGION( 0x4000000, "mainrom", 0 ) + ROM_LOAD( "jl1895fz.u2", 0x00000, 0x4000000, CRC(6346a6cb) SHA1(a8172119fa49c90813f9a2b4341abbb4bd86f8ab) ) + + VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing +ROM_END + + ROM_START( lxcmc250 ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) // sub-board was marked for 2GB capacity (A0-A26 address lines), but only address lines A0-A24 are connected to the chip @@ -1279,6 +1287,7 @@ CONS( 200?, lxcmcyfzb, lxcmcyfz, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_s CONS( 201?, lxcypkdp, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Cyber Arcade Pocket - Disney Princess (JL1895DP)", MACHINE_NOT_WORKING ) CONS( 201?, lxcypksp, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Cyber Arcade Pocket - Spider-Man (JL1895SP-2)", MACHINE_NOT_WORKING ) CONS( 201?, lxcypkpp, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Cyber Arcade Pocket - Paw Patrol (JL1895PA)", MACHINE_NOT_WORKING ) +CONS( 201?, lxcypkfz, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Cyber Arcade Pocket - Frozen (JL1895FZ)", MACHINE_NOT_WORKING ) CONS( 200?, lxccminn, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Console Colour - Minnie Mouse (JL2800MN)", MACHINE_NOT_WORKING ) CONS( 200?, lxccplan, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Console Colour - Disney's Planes (JL2800PL)", MACHINE_NOT_WORKING ) diff --git a/src/mame/tvgames/generalplus_gpl16250_spi.cpp b/src/mame/tvgames/generalplus_gpl16250_spi.cpp index b9046b7d03d73..2e4bf1aabd2a2 100644 --- a/src/mame/tvgames/generalplus_gpl16250_spi.cpp +++ b/src/mame/tvgames/generalplus_gpl16250_spi.cpp @@ -155,6 +155,14 @@ ROM_START( anpanm15 ) ROM_LOAD16_WORD_SWAP( "mx25l12835f.ic3", 0x0000, 0x1000000, CRC(47c36cbd) SHA1(f1cae506e21c1795401004d79f6bb1b1d982d657) ) ROM_END +ROM_START( anpaneng ) + ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) + //ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only (if it exists at all) + + ROM_REGION(0x1000000, "maincpu", ROMREGION_ERASE00) + ROM_LOAD16_WORD_SWAP( "w25q128fv.u11", 0x0000, 0x1000000, CRC(d204d646) SHA1(0b2f9f2d91a078b5fba687d73079b2b5665b33d4) ) +ROM_END + ROM_START( pokegach ) ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) //ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only (if it exists at all) @@ -275,6 +283,8 @@ CONS(2014, anpanbd, 0, 0, generalplus_gpspispi, gcm394, generalplus_gps // それいけ!アンパンマン」みんなで!育脳マット CONS(2015, anpanm15, 0, 0, generalplus_gpspispi, gcm394, generalplus_gpspispi_game_state, init_spi, "JoyPalette", "Anpanman: Minnade! Ikunou Mat (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +CONS(2013, anpaneng, 0, 0, generalplus_gpspispi, gcm394, generalplus_gpspispi_game_state, init_spi, "Sega Toys", "Anpanman: Touch de English (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) + CONS(2015, 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) CONS(2015, pokegach, 0, 0, generalplus_gpspispi_bkrankp, gcm394, generalplus_gpspispi_bkrankp_game_state, init_spi, "Tomy", "Pokegacha (20150902, Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/tvgames/generalplus_gpl32612.cpp b/src/mame/tvgames/generalplus_gpl32612.cpp index 2c4ded760e366..ba6dda7f56533 100644 --- a/src/mame/tvgames/generalplus_gpl32612.cpp +++ b/src/mame/tvgames/generalplus_gpl32612.cpp @@ -347,6 +347,11 @@ ROM_START( tmydistb ) ROM_LOAD( "gpr25l64.u5", 0x0000, 0x800000, CRC(01e5a892) SHA1(b9164173e707eb69cd7d50ce69f3368de7e7390f) ) ROM_END +ROM_START( banaquap ) + ROM_REGION( 0x800000, "spi", ROMREGION_ERASE00 ) + ROM_LOAD( "gpr25l64.u8", 0x0000, 0x800000, CRC(3a434fe0) SHA1(34c55bebe7451d9046311b6c704e0e66347f5a39) ) +ROM_END + ROM_START( intrtvg ) ROM_REGION( 0x100000, "spi", ROMREGION_ERASE00 ) ROM_LOAD( "25q08.u6", 0x0000, 0x100000, CRC(5aa91972) SHA1(296108e8683063c16951ff326e6ff3d63d9ed5b8) ) @@ -447,6 +452,11 @@ ROM_START( segdis16 ) DISK_IMAGE( "segdis16", 0, SHA1(63cf1290c8ed78355b96b4e23885d11d7e2bd25d) ) ROM_END +ROM_START( segcarsh ) + ROM_REGION( 0x1000000, "spi", ROMREGION_ERASE00 ) + ROM_LOAD( "mx25l12833.sfrom1", 0x0000, 0x1000000, CRC(46a350fc) SHA1(1efa026abce3f2bd8a7e32519c4705dbdcfc5919) ) +ROM_END + ROM_START( dinopc ) ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) @@ -546,6 +556,9 @@ CONS( 2014, bananlap, 0, 0, gpl32612, gpl32612, generalplus_g // ドラえもんステップアップパソコン CONS( 2014, bandolap, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, empty_init, "Bandai", "Doraemon Step Up PC (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +// uses GPL32630A has GPspispi header マーメイドアクアポット +CONS( 2021, banaquap, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, empty_init, "Bandai", "Tropical Rouge PreCure Mermaid Aqua Pot (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) + // company is called 深圳市飞讯互动科技有限公司 // surface details erased on SoC for both of these // very generic packaging, boots from SPI, has game data on SD card (mostly NES games) @@ -607,6 +620,9 @@ CONS( 2021, sumipc21, 0, 0, gpl32612, gpl32612, generalpl // ディズニーキャラクターズ マジカルパッド ~ガールズレッスン~ CONS( 2016, segdis16, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, empty_init, "Sega Toys", "Disney Characters Magical Pad -Girls Lesson- (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +// uses GPL32611 +CONS( 201?, segcarsh, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, empty_init, "Sega Toys", "Disney Cars Shake It! (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) + // uses GPL32600A // マウスでバトル!! 恐竜図鑑パソコン CONS( 2020, dinopc, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, empty_init, "Sega Toys", "Mouse de Battle!! Kyouryuu Zukan PC (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) diff --git a/src/mame/tvgames/generalplus_gpl951xx.cpp b/src/mame/tvgames/generalplus_gpl951xx.cpp index 0d72f1f6b2f87..656402fe0a88f 100644 --- a/src/mame/tvgames/generalplus_gpl951xx.cpp +++ b/src/mame/tvgames/generalplus_gpl951xx.cpp @@ -256,6 +256,11 @@ ROM_START( pokebala ) ROM_LOAD16_WORD_SWAP( "mx25l25645g.u4", 0x0000, 0x2000000, CRC(e35d434a) SHA1(74061831b25476ec8aa7dec5f9d64ff79b0db88e) ) ROM_END +ROM_START( pokeissh ) + ROM_REGION16_BE(0x2000000, "maincpu:spidirect", ROMREGION_ERASE00) + ROM_LOAD16_WORD_SWAP( "mx25l25645g.u1", 0x0000, 0x2000000, CRC(1eaf3457) SHA1(a7f16ad7abfc13c67d8e50f462882a771b6777ab) ) +ROM_END + ROM_START( smkcatch ) ROM_REGION16_BE(0x800000, "maincpu:spidirect", ROMREGION_ERASE00 ) ROM_LOAD16_WORD_SWAP( "gpr25l64.u2", 0x0000, 0x800000, CRC(e2f52c4a) SHA1(f79862d27152cff8f96151c672d9762a3897a593) ) @@ -367,6 +372,8 @@ CONS(2021, pokgoget, 0, 0, generalplus_gpspi_direct, bfspyhnt, generalplu // ガチッとゲットだぜ! モンスターボール CONS(2021, pokebala, 0, 0, generalplus_gpspi_direct, bfspyhnt, generalplus_gpspi_direct_game_state, empty_init, "Takara Tomy", "Gachitto Get da ze! Monster Ball (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +CONS(2021, pokeissh, 0, 0, generalplus_gpspi_direct, bfspyhnt, generalplus_gpspi_direct_game_state, empty_init, "Takara Tomy", "Pokemon to Issho! Pokeball (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) + // 2020 (device) / 2021 (box) version of Sumikko Gurashi a cloud shaped device // Sumikko Gurashi - Sumikko Catch (すみっコぐらし すみっコキャッチ) CONS( 2021, smkcatch, 0, 0, generalplus_gpspi_direct, bfmpac, generalplus_gpspi_direct_game_state, empty_init, "San-X / Tomy", "Sumikko Gurashi - Sumikko Catch (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) diff --git a/src/mame/tvgames/myaatari.cpp b/src/mame/tvgames/myaatari.cpp index 2df81b58508a2..7ba9dfe686b79 100644 --- a/src/mame/tvgames/myaatari.cpp +++ b/src/mame/tvgames/myaatari.cpp @@ -89,9 +89,17 @@ ROM_START( kuniotv ) ROM_IGNORE(0x100) ROM_END +ROM_START( pachdmi ) + ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "mx29lb160db.u2", 0x000000, 0x200000, CRC(b7d361b5) SHA1(92c20c58db24cc16f8c393334055a34cd35c720e) ) +ROM_END + } // anonymous namespace CONS( 2021, myaatari, 0, 0, myaatari, myaatari, myaatari_state, empty_init, "dreamGEAR", "My Arcade Atari (DGUNL-7013, Micro Player Pro)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // HDMI stick, runs the Famicom titles using an emulator CONS( 2021, kuniotv, 0, 0, myaatari, myaatari, myaatari_state, empty_init, "Lithon", "Kunio-kun TV (5-in-1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) + +// unbranded box, generic looking Pac-Man logo, runs arcade version with copyrights stripped out +CONS( 2021, pachdmi, 0, 0, myaatari, myaatari, myaatari_state, empty_init, "", "Pac-Man HDMI TV Plug & Play", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/tvgames/spg2xx.cpp b/src/mame/tvgames/spg2xx.cpp index cf12b5b93998e..5e2ca5b472318 100644 --- a/src/mame/tvgames/spg2xx.cpp +++ b/src/mame/tvgames/spg2xx.cpp @@ -3131,20 +3131,24 @@ ROM_START( pdcj ) ROM_LOAD16_WORD_SWAP( "chip2.u3", 0x800000, 0x400000, CRC(4fb335ac) SHA1(d6499816acb3da5c4f6a582bd3104c707422eb34) ) ROM_END -void spg2xx_game_state::init_crc() +void spg2xx_game_state::init_crc(int blocks, int crclocation) { // several games have a byte sum checksum listed at the start of ROM, this little helper function logs what it should match. - const int length = memregion("maincpu")->bytes(); + const int length = memregion("maincpu")->bytes() / blocks; const uint8_t* rom = memregion("maincpu")->base(); - uint32_t checksum = 0x00000000; - // the first 0x10 bytes are where the "chksum:xxxxxxxx " string is listed, so skip over them - for (int i = 0x10; i < length; i++) + for (int block = 0; block < blocks; block++) { - checksum += rom[i]; - } + const uint8_t* rom2 = rom + block * 0x800000; + uint32_t checksum = 0x00000000; + // the first 0x10 bytes are where the "chksum:xxxxxxxx " string is listed, so skip over them + for (int i = 0x10 + crclocation; i < length; i++) + { + checksum += rom2[i]; + } - logerror("Calculated Byte Sum of bytes from 0x10 to 0x%08x is %08x)\n", length - 1, checksum); + logerror("Block %d Calculated Byte Sum of bytes from 0x%08x to 0x%08x is %08x, in header %c%c%c%c%c%c%c%c\n", block, (block * 0x800000) + 0x10 + crclocation, (block * 0x800000) + length - 1, checksum, rom2[crclocation+7], rom2[crclocation+8], rom2[crclocation+9], rom2[crclocation+10], rom2[crclocation+11], rom2[crclocation+12], rom2[crclocation+13], rom2[crclocation+14]); + } } diff --git a/src/mame/tvgames/spg2xx.h b/src/mame/tvgames/spg2xx.h index 88809071c5aa0..95b30dc86d14d 100644 --- a/src/mame/tvgames/spg2xx.h +++ b/src/mame/tvgames/spg2xx.h @@ -51,7 +51,7 @@ class spg2xx_game_state : public driver_device void tmntmutm(machine_config &config); - void init_crc(); + void init_crc(int blocks = 1, int crclocation = 0); void init_tvsprt10(); void init_itvphone(); diff --git a/src/mame/tvgames/spg2xx_lexibook.cpp b/src/mame/tvgames/spg2xx_lexibook.cpp index d0659ac6b34ea..bf22c290f5423 100644 --- a/src/mame/tvgames/spg2xx_lexibook.cpp +++ b/src/mame/tvgames/spg2xx_lexibook.cpp @@ -21,6 +21,7 @@ class spg2xx_lexizeus_game_state : public spg2xx_game_state void lexizeus(machine_config &config); void init_zeus(); + void init_cybrtvfe(); protected: //virtual void machine_start() override ATTR_COLD; @@ -55,6 +56,18 @@ class spg2xx_cybrtvfe_game_state : public spg2xx_lexiseal_game_state virtual void portb_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0) override; }; +class spg2xx_cybrtvbb_game_state : public spg2xx_cybrtvfe_game_state +{ +public: + spg2xx_cybrtvbb_game_state(const machine_config &mconfig, device_type type, const char *tag) : + spg2xx_cybrtvfe_game_state(mconfig, type, tag) + { } + + void cybrtvbb(machine_config& config); + +protected: + virtual void portc_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0) override; +}; class spg2xx_vsplus_game_state : public spg2xx_lexizeus_game_state { @@ -233,6 +246,13 @@ static INPUT_PORTS_START( lexiseal ) PORT_BIT( 0xfffc, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END +static INPUT_PORTS_START( cybrtvbb ) + PORT_INCLUDE( lexiseal ) + + PORT_MODIFY("P3") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("i2cmem", FUNC(i2cmem_device::read_sda)) +INPUT_PORTS_END + static INPUT_PORTS_START( vsplus ) PORT_START("P1") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) @@ -288,6 +308,15 @@ void spg2xx_vsplus_game_state::portb_w(offs_t offset, uint16_t data, uint16_t me } } +void spg2xx_cybrtvbb_game_state::portc_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + logerror("%s: portc_w %04x %04x masked %04x\n", machine().describe_context(), data, mem_mask, data & mem_mask); + + m_i2cmem->write_sda(BIT(mem_mask, 7) ? BIT(data, 7) : 1); + m_i2cmem->write_scl(BIT(mem_mask, 8) ? BIT(data, 8) : 0); +} + + void spg2xx_lexiseal_game_state::lexiseal(machine_config &config) { non_spg_base(config); @@ -297,6 +326,15 @@ void spg2xx_lexiseal_game_state::lexiseal(machine_config &config) m_maincpu->portc_in().set_ioport("P3"); } +void spg2xx_cybrtvbb_game_state::cybrtvbb(machine_config &config) +{ + lexiseal(config); + m_maincpu->portc_out().set(FUNC(spg2xx_cybrtvbb_game_state::portc_w)); + + // cybrtvfe has a position for this too, but it's unpopulated + I2C_24C02(config, "i2cmem", 0); +} + void spg2xx_lexizeus_game_state::lexizeus(machine_config &config) { non_spg_base(config); @@ -348,6 +386,13 @@ void spg2xx_lexizeus_game_state::init_zeus() } } +void spg2xx_lexizeus_game_state::init_cybrtvfe() +{ + init_zeus(); + int size = memregion("maincpu")->bytes(); + init_crc(size / 0x800000, 0xc00); +} + void spg2xx_vsplus_game_state::init_vsplus() { uint16_t *ROM = (uint16_t*)memregion("maincpu")->base(); @@ -388,9 +433,27 @@ ROM_END ROM_START( cybrtvfe ) ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASE00 ) + // Block 0 Calculated Byte Sum of bytes from 0x00000c10 to 0x007fffff is 3482e6f7, in header 3482E6F7 + // Block 1 Calculated Byte Sum of bytes from 0x00800c10 to 0x00ffffff is 2f5fab76, in header 2F5FAB76 + // Block 2 Calculated Byte Sum of bytes from 0x01000c10 to 0x017fffff is 29dcb774, in header 29DCB774 + // Block 3 Calculated Byte Sum of bytes from 0x01800c10 to 0x01ffffff is 2ac8e204, in header 2AC8E204 + // Block 4 Calculated Byte Sum of bytes from 0x02000c10 to 0x027fffff is 2eb7963d, in header 2EB7963D + // Block 5 Calculated Byte Sum of bytes from 0x02800c10 to 0x02ffffff is 372ddefe, in header 372DDEFE + // Block 6 Calculated Byte Sum of bytes from 0x03000c10 to 0x037fffff is 129dee7c, in header 129DEE7C + // Block 7 Calculated Byte Sum of bytes from 0x03800c10 to 0x03ffffff is 129dee7c, in header 129DEE7C ROM_LOAD16_WORD_SWAP( "jl2500fe.u6", 0x0000, 0x4000000, CRC(2fce6685) SHA1(6fc329204fdb401c72884349f29201fb783fe2ea) ) ROM_END +ROM_START( cybrtvbb ) + ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASE00 ) + // Block 0 Calculated Byte Sum of bytes from 0x00000c10 to 0x007fffff is 2bd64edb, in header 2BD64EDB + // Block 1 Calculated Byte Sum of bytes from 0x00800c10 to 0x00ffffff is 30f4f3f0, in header 30F4F3F0 + // Block 2 Calculated Byte Sum of bytes from 0x01000c10 to 0x017fffff is 2c24e8d5, in header 2C24E8D5 + // Block 3 Calculated Byte Sum of bytes from 0x01800c10 to 0x01ffffff is 320d1f5a, in header 320D1F5A + ROM_LOAD16_WORD_SWAP( "jl2500bb.u6", 0x0000, 0x2000000, CRC(8d6e0c99) SHA1(e54660381ff20ecf9b023da7703802f256f7fba5) ) + ROM_RELOAD(0x2000000,0x2000000) +ROM_END + /* VG Caplet ROM pinout from Sean Riddle (2 ROMs in single package) @@ -461,7 +524,9 @@ CONS( 200?, arcade3d, 0, 0, lexizeus, lexiseal, spg2xx_lexizeu CONS( 200?, vsplus, 0, 0, vsplus, vsplus, spg2xx_vsplus_game_state, init_vsplus, " / JungleTac", "Vs Power Plus 30-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // marked as SPG260 -CONS( 2010, cybrtvfe, 0, 0, lexiseal, lexiseal, spg2xx_cybrtvfe_game_state, init_zeus, "Lexibook", "Cyber Arcade TV - Ferrari (JL2500FE)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +CONS( 2010, cybrtvfe, 0, 0, lexiseal, lexiseal, spg2xx_cybrtvfe_game_state, init_cybrtvfe, "Lexibook", "Cyber Arcade TV - Ferrari 105-in-1 (JL2500FE)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +// need to hook up seeprom +CONS( 2010, cybrtvbb, 0, 0, cybrtvbb, cybrtvbb, spg2xx_cybrtvbb_game_state, init_cybrtvfe, "Lexibook", "Cyber Arcade TV - Barbie 75-in-1 (JL2500BB)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) CONS( 200?, lexiseal, 0, 0, lexiseal, lexiseal, spg2xx_lexiseal_game_state, init_zeus, "Lexibook / Sit Up Limited / JungleTac", "Seal 50-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // also has bad sound in Tiger Rescue, but no corrupt tilemap // There are versions of the Seal 50-in-1 that actually show Lexibook on the boot screen rather than it just being on the unit. The Seal name was also used for some VT systems