From 0460594109287482a36318bc0f685f4470d9352a Mon Sep 17 00:00:00 2001 From: David Haywood <28625134+DavidHaywood@users.noreply.github.com> Date: Sat, 7 Nov 2020 17:50:42 +0000 Subject: [PATCH] Plug and Play work (some working VT additions) + some non-working + 2 IQuest cartridges (#7450) new NOT WORKING software list entries -------------------- leapfrog_iquest_cart.xml: start40 IQuest 4.0 Starter Pack [David Haywood, Sean Riddle, Kamaal Brown] scig5 Science Grade 5 [David Haywood, Sean Riddle, Kamaal Brown] new WORKING machines -------------------- Joystick 30 [David Haywood, Sean Riddle, Kamaal Brown] Joypad 65 [David Haywood, Sean Riddle, Kamaal Brown] new NOT WORKING machines -------------------- Virtual TV Soccer [David Haywood, Sean Riddle] Cyber Arcade Pocket (JL1895) [Tim Schuerewegen] new NOT WORKING clones -------------------- Seal 30-in-1 (VT based, Model FN098134) [David Haywood, Team Europe] --- hash/leapfrog_iquest_cart.xml | 30 ++++++ src/mame/drivers/leapfrog_iquest.cpp | 9 +- src/mame/drivers/nes_clone.cpp | 129 ++++++++++++++++++----- src/mame/drivers/nes_vt02_vt03.cpp | 8 +- src/mame/drivers/nes_vt09.cpp | 6 ++ src/mame/drivers/nes_vt369_vtunknown.cpp | 61 ++++++++--- src/mame/mame.lst | 5 + 7 files changed, 205 insertions(+), 43 deletions(-) create mode 100644 hash/leapfrog_iquest_cart.xml diff --git a/hash/leapfrog_iquest_cart.xml b/hash/leapfrog_iquest_cart.xml new file mode 100644 index 00000000000..4e42919bd5d --- /dev/null +++ b/hash/leapfrog_iquest_cart.xml @@ -0,0 +1,30 @@ + + + + + + + IQuest 4.0 Starter Pack + 200? + LeapFrog + + + + + + + + + Science Grade 5 + 200? + LeapFrog + + + + + + + + diff --git a/src/mame/drivers/leapfrog_iquest.cpp b/src/mame/drivers/leapfrog_iquest.cpp index 7d6fcdfb1bf..5ca1195d730 100644 --- a/src/mame/drivers/leapfrog_iquest.cpp +++ b/src/mame/drivers/leapfrog_iquest.cpp @@ -4,7 +4,7 @@ Leapfrog IQuest - has LCD display, resolution unknown + has LCD display *******************************************************************************/ @@ -102,8 +102,8 @@ void leapfrog_iquest_state::leapfrog_iquest(machine_config &config) SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(60); m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(10)); - m_screen->set_size(160, 160); - m_screen->set_visarea(0, 160-1, 0, 160-1); + m_screen->set_size(90, 64); + m_screen->set_visarea(0, 90-1, 0, 64-1); m_screen->set_screen_update(FUNC(leapfrog_iquest_state::screen_update)); //m_screen->screen_vblank().set(FUNC(leapfrog_iquest_state::screen_vblank)); @@ -120,4 +120,5 @@ ROM_START( iquest ) ROM_END // year, name, parent, compat, machine, input, class, init, company, fullname, flags -CONS( 200?, iquest, 0, 0, leapfrog_iquest, leapfrog_iquest, leapfrog_iquest_state, empty_init, "LeapFrog", "IQuest (US)", MACHINE_IS_SKELETON ) +// it is unknown if the versions of IQuest without 4.0 on the case have different system ROM +CONS( 200?, iquest, 0, 0, leapfrog_iquest, leapfrog_iquest, leapfrog_iquest_state, empty_init, "LeapFrog", "IQuest 4.0 (US)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/nes_clone.cpp b/src/mame/drivers/nes_clone.cpp index bff4aa2cd20..bc9403546e4 100644 --- a/src/mame/drivers/nes_clone.cpp +++ b/src/mame/drivers/nes_clone.cpp @@ -52,6 +52,7 @@ protected: optional_ioport m_io1; uint8_t m_latch0; uint8_t m_latch1; + uint8_t m_previous_port0; required_device m_ppu; @@ -74,7 +75,7 @@ private: virtual void machine_reset() override; uint8_t rom_r(offs_t offset); void bank_w(uint8_t data); - int m_rombase; + uint8_t m_rombase; }; class nes_clone_vtvppong_state : public nes_clone_state @@ -91,26 +92,45 @@ private: void nes_clone_vtvppong_map(address_map& map); }; -class nes_clone_suduko_state : public nes_clone_state +class nes_clone_sudoku_state : public nes_clone_state { public: - nes_clone_suduko_state(const machine_config& mconfig, device_type type, const char* tag) : + nes_clone_sudoku_state(const machine_config& mconfig, device_type type, const char* tag) : nes_clone_state(mconfig, type, tag) { } void init_sudoku(); - void nes_clone_suduko(machine_config& config); + void nes_clone_sudoku(machine_config& config); private: - void nes_clone_suduko_map(address_map& map); + void nes_clone_sudoku_map(address_map& map); virtual void machine_start() override; virtual void machine_reset() override; uint8_t rom_r(offs_t offset); void bank_w(uint8_t data); - int m_rombase; + uint8_t m_rombase; }; +class nes_clone_vtvsocr_state : public nes_clone_state +{ +public: + nes_clone_vtvsocr_state(const machine_config& mconfig, device_type type, const char* tag) : + nes_clone_state(mconfig, type, tag) + { } + + void nes_clone_vtvsocr(machine_config& config); + +private: + void nes_clone_vtvsocr_map(address_map& map); + virtual void machine_start() override; + virtual void machine_reset() override; + uint8_t rom_r(offs_t offset); + void bank_w(offs_t offset, uint8_t data); + uint8_t m_bankregs[4]; +}; + + class nes_clone_afbm7800_state : public nes_clone_state { @@ -218,11 +238,16 @@ uint8_t nes_clone_state::in1_r() void nes_clone_state::in0_w(uint8_t data) { //logerror("%s: in0_w %02x\n", machine().describe_context(), data); - if (data & 0x01) - return; + if ((data & 0x01) != (m_previous_port0 & 0x01)) + { + if (data & 0x01) + { + m_latch0 = m_io0->read(); + m_latch1 = m_io1->read(); + } + } - m_latch0 = m_io0->read(); - m_latch1 = m_io1->read(); + m_previous_port0 = data; } @@ -312,6 +337,7 @@ void nes_clone_state::machine_reset() { m_latch0 = 0; m_latch1 = 0; + m_previous_port0 = 0; } @@ -864,43 +890,42 @@ void nes_clone_afbm7800_state::machine_start() Sudoku Specifics **************************************************/ -void nes_clone_suduko_state::machine_reset() +void nes_clone_sudoku_state::machine_reset() { nes_clone_state::machine_reset(); m_rombase = 0; } -void nes_clone_suduko_state::machine_start() +void nes_clone_sudoku_state::machine_start() { nes_clone_state::machine_start(); save_item(NAME(m_rombase)); } -void nes_clone_suduko_state::nes_clone_suduko(machine_config& config) +void nes_clone_sudoku_state::nes_clone_sudoku(machine_config& config) { nes_clone(config); - m_maincpu->set_addrmap(AS_PROGRAM, &nes_clone_suduko_state::nes_clone_suduko_map); + m_maincpu->set_addrmap(AS_PROGRAM, &nes_clone_sudoku_state::nes_clone_sudoku_map); } -void nes_clone_suduko_state::nes_clone_suduko_map(address_map& map) +void nes_clone_sudoku_state::nes_clone_sudoku_map(address_map& map) { nes_clone_basemap(map); - map(0x8000, 0xffff).rw(FUNC(nes_clone_suduko_state::rom_r), FUNC(nes_clone_suduko_state::bank_w)); + map(0x8000, 0xffff).rw(FUNC(nes_clone_sudoku_state::rom_r), FUNC(nes_clone_sudoku_state::bank_w)); } -uint8_t nes_clone_suduko_state::rom_r(offs_t offset) +uint8_t nes_clone_sudoku_state::rom_r(offs_t offset) { return m_mainrom[(offset + (m_rombase * 0x8000)) & (m_mainromsize - 1)]; } -void nes_clone_suduko_state::bank_w(uint8_t data) +void nes_clone_sudoku_state::bank_w(uint8_t data) { logerror("%04x: bank_w %02x\n", machine().describe_context(), data); m_rombase = data; } - -void nes_clone_suduko_state::init_sudoku() +void nes_clone_sudoku_state::init_sudoku() { u8 *src = memregion("maincpu")->base(); int len = memregion("maincpu")->bytes(); @@ -921,10 +946,58 @@ void nes_clone_suduko_state::init_sudoku() std::copy(buffer.begin(), buffer.end(), &src[0]); } - - } +/************************************************** + Soccer Specifics + INES Mapper 178 / NES 2.0 Mapper 551 clone or similar? +**************************************************/ + +void nes_clone_vtvsocr_state::machine_reset() +{ + nes_clone_state::machine_reset(); + m_bankregs[0] = 0; + m_bankregs[1] = 0; + m_bankregs[2] = 0; + m_bankregs[3] = 0; +} + +void nes_clone_vtvsocr_state::machine_start() +{ + nes_clone_state::machine_start(); + save_item(NAME(m_bankregs)); +} + +void nes_clone_vtvsocr_state::nes_clone_vtvsocr(machine_config& config) +{ + nes_clone(config); + m_maincpu->set_addrmap(AS_PROGRAM, &nes_clone_vtvsocr_state::nes_clone_vtvsocr_map); +} + +void nes_clone_vtvsocr_state::nes_clone_vtvsocr_map(address_map& map) +{ + nes_clone_basemap(map); + map(0x4800, 0x4803).w(FUNC(nes_clone_vtvsocr_state::bank_w)); + map(0x8000, 0xffff).r(FUNC(nes_clone_vtvsocr_state::rom_r)); +} + +uint8_t nes_clone_vtvsocr_state::rom_r(offs_t offset) +{ + int bank = m_bankregs[1] >> 1; + return m_mainrom[(offset + (bank * 0x8000)) & (m_mainromsize - 1)]; +} + +void nes_clone_vtvsocr_state::bank_w(offs_t offset, uint8_t data) +{ + logerror("%04x: bank_w %02x %02x\n", machine().describe_context(), offset, data); + m_bankregs[offset] = data; +} + +/************************************************** + Ping Pong Specifics +**************************************************/ + + void nes_clone_vtvppong_state::init_vtvppong() { u8 *src = memregion("maincpu")->base(); @@ -995,6 +1068,12 @@ ROM_START( vtvppong ) ROM_LOAD( "vtvpongppu.bin", 0x00000, 0x20000, CRC(474dfc0c) SHA1(4d0afab111e40172ae0b31e94f1b74b73a18385f) ) ROM_END +ROM_START( vtvsocr ) + ROM_REGION( 0x40000, "maincpu", 0 ) + // 8-bit ROM, but byteswapped for encryption? + ROM_LOAD16_WORD_SWAP( "virtualtvsoccer.bin", 0x00000, 0x40000, CRC(2cfe42aa) SHA1(c2cafdbd5cc6491c94efd3f1be4b70c9de737b46) ) +ROM_END + void nes_clone_state::init_nes_clone() { } @@ -1009,10 +1088,12 @@ CONS( 200?, dnce2000, 0, 0, nes_clone_dnce2000, dnce2000, nes_clone_dnce2000_sta // Black pad marked 'SUDOKU' with tails on the S and U characters looping over the logo. Box says "Plug and Play Sudoku" // Has 2 sets of 4 buttons in circular 'direction pad' layouts (on the left for directions, on the right for functions) and 9 red numbered buttons with red power LED on left of them, and reset button on right // Alt. version was released with 'New York Times' titlescreen -CONS( 200?, papsudok, 0, 0, nes_clone_suduko, papsudok, nes_clone_suduko_state, init_sudoku, "Nice Code", "Plug and Play Sudoku Game (NES based)", 0 ) // plays, but unclear how 'save' feature is meant to work, is it meant to save after shutdown or not? no obvious writes +CONS( 200?, papsudok, 0, 0, nes_clone_sudoku, papsudok, nes_clone_sudoku_state, init_sudoku, "Nice Code", "Plug and Play Sudoku Game (NES based)", 0 ) // plays, but unclear how 'save' feature is meant to work, is it meant to save after shutdown or not? no obvious writes -CONS( 200?, nytsudo, 0, 0, nes_clone_suduko, papsudok, nes_clone_suduko_state, init_sudoku, "Excalibur / Nice Code", "The New York Times Sudoku", 0 ) // based on the above +CONS( 200?, nytsudo, 0, 0, nes_clone_sudoku, papsudok, nes_clone_sudoku_state, init_sudoku, "Excalibur / Nice Code", "The New York Times Sudoku", 0 ) // based on the above CONS( 200?, vtvppong, 0, 0, nes_clone_vtvppong, nes_clone, nes_clone_vtvppong_state, init_vtvppong, "", "Virtual TV Ping Pong", MACHINE_NOT_WORKING ) CONS( 200?, pjoypj001, 0, 0, nes_clone, nes_clone, nes_clone_state, init_nes_clone, "Trump Grand", "PowerJoy (PJ001, NES based plug & play)", MACHINE_NOT_WORKING ) + +CONS( 200?, vtvsocr, 0, 0, nes_clone_vtvsocr, nes_clone, nes_clone_vtvsocr_state, init_nes_clone, "", "Virtual TV Soccer", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/nes_vt02_vt03.cpp b/src/mame/drivers/nes_vt02_vt03.cpp index d4c7f2e5f8e..f07cf78fd0a 100644 --- a/src/mame/drivers/nes_vt02_vt03.cpp +++ b/src/mame/drivers/nes_vt02_vt03.cpp @@ -1099,7 +1099,10 @@ ROM_START( pjoys60 ) ROM_LOAD( "power joy supermax 60-in-1.prg", 0x00000, 0x400000, CRC(1ab45228) SHA1(d148924afc39fc588235331a1a30df6e0d8e1e18) ) ROM_END - +ROM_START( joysti30 ) + ROM_REGION( 0x400000, "mainrom", 0 ) + ROM_LOAD( "joystick30.bin", 0x00000, 0x400000, CRC(b3f089af) SHA1(478d53d38eeffdbc4a1271d0e060aeb29e919502) ) +ROM_END // CoolBoy AEF-390 8bit Console, B8VPCBVer03 20130703 0401E2015897A ROM_START( mc_8x6cb ) @@ -1363,6 +1366,9 @@ CONS( 200?, dgun853, 0, 0, nes_vt_vh2009_8mb, nes_vt, nes_vt_swap_op_ CONS( 200?, silv35, 0, 0, nes_vt_vh2009_4mb, nes_vt, nes_vt_swap_op_d5_d6_state, empty_init, "SilverLit / JungleTac", "35 in 1 Super Twins", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) CONS( 2004, vsmaxxvd, 0, 0, nes_vt_vh2009_8mb, nes_vt, nes_vt_swap_op_d5_d6_state, empty_init, "Senario / JungleTac", "Vs Maxx Video Extreme 50-in-1 (with Speed Racer and Snood)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) CONS( 200?, vsmaxx77, 0, 0, nes_vt_vh2009_8mb, nes_vt, nes_vt_swap_op_d5_d6_state, empty_init, "Senario / JungleTac", "Vs Maxx Wireless 77-in-1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +CONS( 200?, joysti30, 0, 0, nes_vt_vh2009_4mb, nes_vt, nes_vt_swap_op_d5_d6_state, empty_init, "WinFun / JungleTac", "Joystick 30", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // doesn't show WinFun onscreen, but packaging does + + // die is marked as VH2009, as above, but no scrambled opcodes here CONS( 201?, techni4, 0, 0, nes_vt_pal_2mb, nes_vt, nes_vt_state, empty_init, "Technigame", "Technigame Super 4-in-1 Sports (PAL)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/nes_vt09.cpp b/src/mame/drivers/nes_vt09.cpp index 21ab4710208..b02e9669c8f 100644 --- a/src/mame/drivers/nes_vt09.cpp +++ b/src/mame/drivers/nes_vt09.cpp @@ -433,6 +433,11 @@ ROM_START( vgpmini ) // there was a dump of a 'secure' area with this, but it was just the bottom 0x10000 bytes of the existing rom. ROM_END +ROM_START( joypad65 ) + ROM_REGION( 0x800000, "mainrom", 0 ) + ROM_LOAD( "joypad65.bin", 0x00000, 0x800000, CRC(b7f81c5f) SHA1(8579d9bc866415e0049979b7c3427d8dd0a60813) ) +ROM_END + // MSI Entertainment games (MSI previously operated as Majesco Entertainment) // There are meant to be multiple revisions of this software, some with theme tunes for the new wrestlers, some without. This one appears to lack them. @@ -462,6 +467,7 @@ CONS( 200?, senario25, 0, 0, nes_vt09_2mb, nes_vt09, nes_vt09_state, empty_ini CONS( 200?, rcapnp, 0, 0, nes_vt09_2mb, nes_vt09, nes_vt09_state, empty_init, "RCA / JungleTac", "RCA NS-500 30-in-1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) CONS( 200?, dturbogt, 0, 0, nes_vt09_8mb, nes_vt09, nes_vt09_state, empty_init, "dreamGEAR / JungleTac", "Turbo GT 50-in-1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) CONS( 200?, ventur25, 0, 0, nes_vt09_4mb, nes_vt09, nes_vt09_state, empty_init, " / JungleTac", "Venturer '25 Games' 25-in-1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +CONS( 200?, joypad65, 0, 0, nes_vt09_8mb, nes_vt09, nes_vt09_state, empty_init, "WinFun / JungleTac", "Joypad 65", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) CONS( 2005, vgpocket, 0, 0, nes_vt09_4mb, nes_vt09, nes_vt09_state, empty_init, "Performance Designed Products / JungleTac", "VG Pocket (VG-2000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) CONS( 200?, vgpmini, 0, 0, nes_vt09_4mb, nes_vt09, nes_vt09_state, empty_init, "Performance Designed Products / JungleTac", "VG Pocket Mini (VG-1500)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // VG Pocket Max (VG-2500) (blue case, 75 games) diff --git a/src/mame/drivers/nes_vt369_vtunknown.cpp b/src/mame/drivers/nes_vt369_vtunknown.cpp index a9a3890159f..29d13db5216 100644 --- a/src/mame/drivers/nes_vt369_vtunknown.cpp +++ b/src/mame/drivers/nes_vt369_vtunknown.cpp @@ -158,6 +158,7 @@ public: { } void nes_vt369_vtunknown_hh(machine_config& config); + void nes_vt369_vtunknown_hh_1mb(machine_config& config); void nes_vt369_vtunknown_hh_4mb(machine_config& config); void nes_vt369_vtunknown_hh_8mb(machine_config& config); void nes_vt369_vtunknown_hh_16mb(machine_config& config); @@ -472,6 +473,17 @@ void nes_vt369_vtunknown_unk_state::nes_vt369_vtunknown_hh_swap_8mb(machine_conf m_soc->set_addrmap(AS_PROGRAM, &nes_vt369_vtunknown_unk_state::vt_external_space_map_8mbyte); } +void nes_vt369_vtunknown_unk_state::nes_vt369_vtunknown_hh_1mb(machine_config& config) +{ + nes_vt369_vtunknown_hh(config); + m_soc->set_addrmap(AS_PROGRAM, &nes_vt369_vtunknown_unk_state::vt_external_space_map_1mbyte); +} + +void nes_vt369_vtunknown_unk_state::nes_vt369_vtunknown_hh_4mb(machine_config& config) +{ + nes_vt369_vtunknown_hh(config); + m_soc->set_addrmap(AS_PROGRAM, &nes_vt369_vtunknown_unk_state::vt_external_space_map_4mbyte); +} void nes_vt369_vtunknown_unk_state::nes_vt369_vtunknown_hh_8mb(machine_config& config) { @@ -485,11 +497,7 @@ void nes_vt369_vtunknown_unk_state::nes_vt369_vtunknown_hh_16mb(machine_config& m_soc->set_addrmap(AS_PROGRAM, &nes_vt369_vtunknown_unk_state::vt_external_space_map_16mbyte); } -void nes_vt369_vtunknown_unk_state::nes_vt369_vtunknown_hh_4mb(machine_config& config) -{ - nes_vt369_vtunknown_hh(config); - m_soc->set_addrmap(AS_PROGRAM, &nes_vt369_vtunknown_unk_state::vt_external_space_map_4mbyte); -} + static INPUT_PORTS_START( nes_vt369_vtunknown ) @@ -698,6 +706,11 @@ ROM_START( zonefusn ) ROM_LOAD( "fusion.bin", 0x00000, 0x1000000, CRC(240bf970) SHA1(1b82d95a252c08e52fb8da6320276574a30b60db) ) ROM_END +ROM_START( sealvt ) + ROM_REGION( 0x1000000, "mainrom", 0 ) + ROM_LOAD( "l157-44 v02.u1", 0x00000, 0x1000000, CRC(0fabced0) SHA1(3f8cd85b12b125b01c831c9f2f2937e29c1b6205) ) +ROM_END + ROM_START( gcs2mgp ) ROM_REGION( 0x2000000, "mainrom", 0 ) ROM_LOAD( "gcs2_v4.u3", 0x00000, 0x1000000, CRC(3b5be765) SHA1(c54f1a732d638b0ee582ca822715c9d3a3af5ef3) ) @@ -756,7 +769,7 @@ ROM_START( gtct885 ) ROM_REGION( 0x800000, "mainrom", 0 ) ROM_LOAD( "ct-885 g25q64c.bin", 0x00000, 0x800000, CRC(a5b2b568) SHA1(79de79364fa731e421627ec68e3bfa9d311aa7fc) ) - ROM_REGION( 0x100, "extra", 0 ) // additional 8-pin chip (maybe SEEPROM? or PROM?) + ROM_REGION( 0x100, "extra", 0 ) // data from additional 8-pin chip for protection ROM_LOAD( "mystery chip.bin", 0x00000, 0x100, CRC(8173c1c2) SHA1(7521a4676166a81a79209638491026b2d8e32895) ) ROM_END @@ -764,7 +777,7 @@ ROM_START( rd5_240 ) ROM_REGION( 0x800000, "mainrom", 0 ) ROM_LOAD( "red5.bin", 0x00000, 0x800000, CRC(0e564e73) SHA1(c29a927c830ab3876e9b63e2d41bef962c05518f) ) - ROM_REGION( 0x100, "extra", 0 ) // additional 8-pin chip (maybe SEEPROM? or PROM?) + ROM_REGION( 0x100, "extra", 0 ) // data from additional 8-pin chip for protection ROM_LOAD( "mystery chip.bin", 0x00000, 0x100, NO_DUMP ) ROM_END @@ -792,6 +805,17 @@ ROM_START( hkb502a ) ROM_LOAD( "internal.bin", 0x0000, 0x1000, CRC(da5850f0) SHA1(39d674d965818922aad5993e9499170d3ebc43bf) ) ROM_END +ROM_START( lxcap ) + ROM_REGION( 0x800000, "mainrom", 0 ) + ROM_LOAD( "lexibook_cyber_arcade_pocket.bin", 0x00000, 0x800000, CRC(245d0cd3) SHA1(d91cca2d0f99a6ca202fa9ba6d03587ea8af0cd9) ) + + ROM_REGION( 0x1000, "internal", 0 ) // maps at 1000-1fff on main CPU, and it boots using vectors in 1ffx area + ROM_LOAD( "internal.bin", 0x0000, 0x1000, CRC(da5850f0) SHA1(39d674d965818922aad5993e9499170d3ebc43bf) ) + + ROM_REGION( 0x100, "extra", 0 ) // data from additional 8-pin chip for protection + ROM_LOAD( "mystery chip.bin", 0x00000, 0x100, CRC(491d206b) SHA1(a5411a7afe3b4df93b1b22e5533f5010bd3aaa93) ) +ROM_END + ROM_START( denv150 ) ROM_REGION( 0x1000000, "mainrom", 0 ) ROM_LOAD( "denver150in1.bin", 0x00000, 0x1000000, CRC(6b3819d7) SHA1(b0039945ce44a52ea224ab736d5f3c6980409b5d) ) // 2nd half is blank @@ -799,7 +823,7 @@ ROM_END ROM_START( egame150 ) ROM_REGION( 0x800000, "mainrom", 0 ) - ROM_LOAD( "rom.bin", 0x00000, 0x800000, CRC(113819d7) SHA1(b0039945ce44a52ea224ab736d5f3c6980409b5d) ) + ROM_LOAD( "rom.bin", 0x00000, 0x800000, CRC(a19644ea) SHA1(01c004d126edf792f71c1e9ed98b3c96d9278a69) ) ROM_END ROM_START( retro400 ) @@ -911,6 +935,8 @@ CONS( 2017, rtvgc300fz,0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknow // uncertain, NOT SPI ROM CONS( 200?, zonefusn, 0, 0, nes_vt369_vtunknown_fp_16mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "Ultimate Products / Jungle's Soft", "Zone Fusion", MACHINE_NOT_WORKING ) +// same as above but without Jungle's Soft boot logo? model number taken from cover of manual +CONS( 200?, sealvt, zonefusn, 0, nes_vt369_vtunknown_fp_16mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "Lexibook / Sit Up Limited / Jungle's Soft", "Seal 30-in-1 (VT based, Model FN098134)", MACHINE_NOT_WORKING ) // NOT SPI roms, start with '6a' @@ -921,7 +947,12 @@ CONS( 2016, dgun2593, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknow // similar, starts with a '6a' ror a opcode which is presumably encrypted / extended, then normal looking code, then unknown instructions CONS( 200?, gcs2mgp, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Jungle's Soft", "Mini Game Player 48-in-1", MACHINE_NOT_WORKING ) +/***************************************************************************** +* below are VT369 games that use BGA on sub +*****************************************************************************/ +// doesn't use most features, M705-128A6 sub-board with BGA +CONS( 201?, retro400, 0, 0, nes_vt369_vtunknown_hh_16mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "", "Retro FC 400-in-1", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) /***************************************************************************** * below are VT369 games that use SQI / SPI ROM @@ -950,19 +981,21 @@ CONS( 201?, gtct885, mc_tv200, 0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtun // similar to above, but with 40 extra games, menu is protected with code from extra ROM (although RTS opcodes seem to work) CONS( 201?, rd5_240, 0, 0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "Red5", "Mini Arcade Machine 240-in-1 (Red5)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) -CONS( 201?, hkb502, 0, 0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "", "HKB-502 268-in-1 (set 1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) -CONS( 201?, hkb502a, hkb502, 0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "", "HKB-502 268-in-1 (set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) +CONS( 201?, hkb502, 0, 0, nes_vt369_vtunknown_hh_4mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "", "HKB-502 268-in-1 (set 1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) +CONS( 201?, hkb502a, hkb502, 0, nes_vt369_vtunknown_hh_4mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "", "HKB-502 268-in-1 (set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) + +// uses a LCD with resolution of 160x128 (image scaled to fit for some games, others run natively at 160x128) +// contains a protection chip, command 80 XX returns a byte +CONS( 201?, lxcap, 0, 0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "Lexibook", "Cyber Arcade Pocket (JL1895)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) + // VT369, but doesn't use most features -CONS( 201?, myarccn, 0, 0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "DreamGear", "My Arcade Caveman Ninja", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) +CONS( 201?, myarccn, 0, 0, nes_vt369_vtunknown_hh_1mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "DreamGear", "My Arcade Caveman Ninja", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) // confirmed VT369, uses more features (including sound CPU) CONS( 201?, denv150, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Denver", "Denver Game Console GMP-240C 150-in-1", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) CONS( 201?, egame150, denv150, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "", "E-Game! 150-in-1", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) -// doesn't use most features -CONS( 201?, retro400, 0, 0, nes_vt369_vtunknown_hh_16mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "", "Retro FC 400-in-1", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) - // uncertain, uses SPI ROM so probably VT369 CONS( 2017, otrail, 0, 0, nes_vt369_vtunknown_unk_1mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "Basic Fun", "The Oregon Trail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 4b00be75036..dd7f0d2ef07 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -32235,6 +32235,7 @@ dnce2000 vtvppong papsudok nytsudo +vtvsocr @source:nes_sh6578.cpp bandgpad @@ -32280,6 +32281,7 @@ dgun853 silv35 vsmaxxvd vsmaxx77 +joysti30 techni4 senwld protpp @@ -32332,6 +32334,7 @@ ventur25 vgpocket vgpmini vgtablet +joypad65 @source:nes_vt32.cpp dgun2573 @@ -32351,6 +32354,7 @@ gtct885 rd5_240 hkb502 hkb502a +lxcap retro400 myarccn fapocket @@ -32379,6 +32383,7 @@ lpgm240 tup240 otrail zonefusn +sealvt gcs2mgp @source:newbrain.cpp