diff --git a/hash/tvgogo.xml b/hash/tvgogo.xml index 952da5aefe6..2243ac9ba07 100644 --- a/hash/tvgogo.xml +++ b/hash/tvgogo.xml @@ -7,14 +7,15 @@ license:CC0-1.0 Dumped | Dumped | Name |Notes _(EU)__|__(US)__|____________|_____________________________________ - Y* | Y | 4 in 1 |No controller - Y | Y | Whac-A-Mole|Hammer-shaped IR motion controller - Y | Y | Basketball |Ball-shaped motion controller - Y | | Tennis |Racquet-shaped IR motion controller - | Y | Dodgeball |Motion controller - | Y | Baseball |Baseball Bat shaped motion controller - | | Paintball |Gun controller - | | Skateboard |Skateboard-shaped motion controller + Y* | Y | 4 in 1 |No controller + Y | Y | Whac-A-Mole |Hammer-shaped IR motion controller + Y | Y | Basketball |Ball-shaped motion controller + Y | | Tennis |Racquet-shaped IR motion controller + | Y | Dodgeball |Motion controller + | Y | Baseball |Baseball Bat shaped motion controller + Y | | Paintball |Gun controller + Y | | Snowboarding |Snowboard-shaped motion controller + | | Skateboard |Skateboard-shaped motion controller The US carts do not appear to have a language selection screen @@ -127,4 +128,26 @@ _(EU)__|__(US)__|____________|_____________________________________ + + Snowboarding (Europe) + 2005 + Toyquest + + + + + + + + + Paintball (Europe) + 2005 + Toyquest + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index e823052d558..c33b96ab4e4 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -34994,8 +34994,11 @@ nesm8b m82 @source:nintendo/nes_sh6578.cpp +6578cjz1 +6578cjz2 bandgpad bandggcn +bb6578 cpatrolm dancmix3 ts_handy11 @@ -35090,6 +35093,7 @@ cybar120 dturbogt jl2050 joypad65 +matetsl msiwwe msiwwea msidd @@ -35115,7 +35119,9 @@ dgun2573a dgunl3201 dgunl3202 fcpocket +matet220 matet300 +myaass rminitv @source:nintendo/nes_vt369_vtunknown.cpp @@ -35151,6 +35157,7 @@ lxcmcysp lxcmcysw lxcyber matet10 +matet100 mc_cb280 mc_hh210 mog_m320 @@ -46386,6 +46393,7 @@ tvtchspd tvtchsb @source:tvgames/spg2xx_lexibook.cpp +arcade3d lexizeus lexiseal discpal @@ -46557,6 +46565,7 @@ gungunad gungunrv has_wamg hikara +hippofr isinger jarajal jpopira diff --git a/src/mame/nintendo/nes_sh6578.cpp b/src/mame/nintendo/nes_sh6578.cpp index 386068cc6d5..8ae9c2c874a 100644 --- a/src/mame/nintendo/nes_sh6578.cpp +++ b/src/mame/nintendo/nes_sh6578.cpp @@ -59,6 +59,7 @@ protected: virtual void video_start() override ATTR_COLD; virtual void io_w(uint8_t data); + virtual uint8_t extio_r(); virtual void extio_w(uint8_t data); bool m_isbanked; required_memory_bank m_bank; @@ -164,6 +165,18 @@ protected: virtual void machine_reset() override ATTR_COLD; }; +class nes_sh6578_cjz_state : public nes_sh6578_state +{ +public: + nes_sh6578_cjz_state(const machine_config& mconfig, device_type type, const char* tag) : + nes_sh6578_state(mconfig, type, tag) + { } + +protected: + // TODO, work out the I/O and anything else specific to this machine + virtual uint8_t extio_r() override { return machine().rand(); } +}; + uint8_t nes_sh6578_state::bank_r(int bank, uint16_t offset) { uint32_t address; @@ -428,6 +441,12 @@ void nes_sh6578_abl_wikid_state::io_w(uint8_t data) } } +uint8_t nes_sh6578_state::extio_r() +{ + logerror("%s: extio_r\n", machine().describe_context()); + return 0x00; +} + void nes_sh6578_state::extio_w(uint8_t data) { logerror("%s: extio_w : %02x\n", machine().describe_context(), data); @@ -476,7 +495,7 @@ void nes_sh6578_state::nes_sh6578_map(address_map& map) //4023 read/write joystick,mouse control //4024 read - mouse port / write - mouse baud //4025 write - Printer Port - map(0x4026, 0x4026).w(FUNC(nes_sh6578_state::extio_w)); + map(0x4026, 0x4026).rw(FUNC(nes_sh6578_state::extio_r), FUNC(nes_sh6578_state::extio_w)); //4027 read/write - DAC data register map(0x4031, 0x4031).w(FUNC(nes_sh6578_state::initial_startup_w)); @@ -666,6 +685,21 @@ ROM_START( cpatrolm ) ROM_LOAD( "citypatrolman.bin", 0x00000, 0x100000, CRC(4b139c67) SHA1(a5b03f472a94ee879f58bbff201b671fbf4f1ea1) ) ROM_END +ROM_START( bb6578 ) + ROM_REGION( 0x80000, "maincpu", 0 ) + ROM_LOAD( "tv game baseball.bin", 0x00000, 0x80000, CRC(dec862b2) SHA1(fb3d97ccde17ab6ead8eafb4e0aafb72fbb6674c) ) +ROM_END + +ROM_START( 6578cjz1 ) + ROM_REGION( 0x100000, "maincpu", 0 ) + ROM_LOAD( "tv game1.bin", 0x00000, 0x100000, CRC(161c4119) SHA1(b2ce91b070bcaba73c8a23e7067fe8ba41151a40) ) +ROM_END + +ROM_START( 6578cjz2 ) + ROM_REGION( 0x100000, "maincpu", 0 ) + ROM_LOAD( "tv game2.bin", 0x00000, 0x100000, CRC(cda1395c) SHA1(b0fdf1d3ebd9b7138ec907a0acdf0ea2d275c990) ) +ROM_END + ROM_START( ablwikid ) ROM_REGION( 0x200000, "maincpu", 0 ) ROM_LOAD( "mx29f1610atc.u2", 0x00000, 0x200000, CRC(f16abf79) SHA1(aeccbb40d7fdd451ba8e5cca20464da2cf116461) ) @@ -744,6 +778,13 @@ CONS( 1997, bandggcn, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, i CONS( 200?, cpatrolm, 0, 0, nes_sh6578_pal, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "TimeTop", "City Patrolman", MACHINE_NOT_WORKING ) +CONS( 200?, bb6578, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "DaiDaiXing Electronics", "TV Games Baseball (SH6578 hardware)", MACHINE_NOT_WORKING ) + +// these don't boot much further than the timetop logo and a splash screen +// "Super Knowledge Monopoly" is an English translation of the title +CONS( 200?, 6578cjz1, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_cjz_state, init_nes_sh6578, "TimeTop", u8"Chāo Jí Zhī Shi Dà Fù Wēng (vol. 1)", MACHINE_NOT_WORKING ) +CONS( 200?, 6578cjz2, 6578cjz1, 0, nes_sh6578, nes_sh6578, nes_sh6578_cjz_state, init_nes_sh6578, "TimeTop", u8"Chāo Jí Zhī Shi Dà Fù Wēng (vol. 2)", MACHINE_NOT_WORKING ) + // Super Moto 3 https://youtu.be/DR5Y_r6C_qk - has JungleTac copyrights intact, and appears to have the SH6578 versions of the games // Handy Max 15-in-1 https://youtu.be/jQTUHj1cP-k - has JungleTac copyrights intact, and appears to have the SH6578 versions of the games diff --git a/src/mame/nintendo/nes_vt09.cpp b/src/mame/nintendo/nes_vt09.cpp index 93009cd91cd..4d31e3b884c 100644 --- a/src/mame/nintendo/nes_vt09.cpp +++ b/src/mame/nintendo/nes_vt09.cpp @@ -542,6 +542,10 @@ ROM_START( wfmotor ) ROM_LOAD( "motorcycle.bin", 0x00000, 0x400000, CRC(978f12f0) SHA1(a0230cfe4398d3971d487ff5d4b7107341799424) ) ROM_END +ROM_START( matetsl ) + ROM_REGION( 0x100000, "mainrom", 0 ) + ROM_LOAD( "slurpeetetris_p25q40sh_856013.bin", 0x00000, 0x80300, CRC(d3b68de8) SHA1(97bcdfcd31bc536b626f9a369afe18de60a399da) ) +ROM_END } // anonymous namespace @@ -589,6 +593,8 @@ CONS( 2006, vgtablet, 0, 0, nes_vt09_4mb_rasterhack, nes_vt09, nes_vt09_state CONS( 200?, jl2050, 0, 0, nes_vt09_16mb,nes_vt09, nes_vt09_state, empty_init, "LexiBook / JungleTac / NiceCode", "Cyber Console Center 200-in-1 (JL2050)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // might be VT369 based, if so, move -CONS( 2018, rbbrite, 0, 0, nes_vt09_1mb, nes_vt09, nes_vt09_state, empty_init, "Coleco", "Rainbow Brite (mini-arcade)", MACHINE_NOT_WORKING ) +CONS( 2018, rbbrite, 0, 0, nes_vt09_1mb, nes_vt09, nes_vt09_state, empty_init, "Coleco", "Rainbow Brite (mini-arcade)", MACHINE_NOT_WORKING ) -CONS( 200?, timetp25, 0, 0, nes_vt09_cart, nes_vt09, nes_vt09_cart_state, empty_init, "Timetop", "Super Game 25-in-1 (GM-228)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +CONS( 200?, timetp25, 0, 0, nes_vt09_cart, nes_vt09, nes_vt09_cart_state, empty_init, "Timetop", "Super Game 25-in-1 (GM-228)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +CONS( 2021, matetsl, 0, 0, nes_vt09_1mb, nes_vt09, nes_vt09_state, empty_init, "dreamGEAR", "My Arcade Tetris (Slurpee)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) // no bonus games on this model diff --git a/src/mame/nintendo/nes_vt32.cpp b/src/mame/nintendo/nes_vt32.cpp index ce3066d0002..2ba38ae5169 100644 --- a/src/mame/nintendo/nes_vt32.cpp +++ b/src/mame/nintendo/nes_vt32.cpp @@ -361,6 +361,12 @@ ROM_START( dgunl3202 ) ROM_IGNORE(0x100) ROM_END +ROM_START( myaass ) + ROM_REGION( 0x2000000, "mainrom", 0 ) + ROM_LOAD( "s29gl256.u2", 0x00000, 0x2000000, CRC(71a3298d) SHA1(5a2441ae5a8bf3e5efe9f22843ad2b8ef2df0f40) ) +ROM_END + + ROM_START( fcpocket ) ROM_REGION( 0x8000000, "mainrom", 0 ) ROM_LOAD( "s29gl01gp.bin", 0x00000, 0x8000000, CRC(8703b18a) SHA1(07943443294e80ca93f83181c8bdbf950b87c52f) ) // 2nd half = 0x00 (so 64MByte of content) @@ -371,6 +377,12 @@ ROM_START( matet300 ) ROM_LOAD( "tetris.bin", 0x00000, 0x2000000, CRC(73cbd40a) SHA1(5996c97cebd6cec42a0ba1fba9517adf1af00098) ) ROM_END +ROM_START( matet220 ) + ROM_REGION( 0x2000000, "mainrom", 0 ) + ROM_LOAD( "gamervtetris_s29gl128n10tfi01_0001227e.bin", 0x00000, 0x1000000, CRC(ac244e56) SHA1(89897f5f65f55a46bf0d6b5ca534ca31c79a0658) ) + ROM_IGNORE(0x100) +ROM_END + } // anonymous namespace @@ -387,7 +399,13 @@ CONS( 201?, dgunl3201, 0, 0, nes_vt32_32mb, nes_vt32, nes_vt32_unk_state, empt CONS( 201?, dgunl3202, 0, 0, nes_vt32_32mb, nes_vt32, nes_vt32_unk_state, empty_init, "dreamGEAR", "My Arcade Data East Classics - Pixel Player (308-in-1) (DGUNL-3202)", MACHINE_NOT_WORKING ) // from a US unit single 32Mbyte bank! // There was also a 34-in-1 version of the Data East Classics in a mini-cabinet, NOT running on VT hardware, but using proper arcade ROMs, that one is reportedly running an old MAME build on an ARM SoC (although some sources say FBA) +// many of the games don't work or have scrambled graphics, it writes 0xc0 to vtfp_411e_encryption_state_w in such cases +CONS( 201?, myaass, 0, 0, nes_vt32_32mb, nes_vt32, nes_vt32_unk_state, empty_init, "dreamGEAR", "My Arcade All Star Stadium - Pocket Player (307-in-1)", MACHINE_NOT_WORKING ) + CONS( 2021, matet300, 0, 0, nes_vt32_32mb, nes_vt32, nes_vt32_unk_state, empty_init, "dreamGEAR", "My Arcade Tetris (DGUNL-7029, Go Gamer, with 300 bonus games)", MACHINE_NOT_WORKING ) +// some games (eg F22) are scrambled like in myaass +CONS( 2021, matet220, 0, 0, nes_vt32_32mb, nes_vt32, nes_vt32_unk_state, empty_init, "dreamGEAR", "My Arcade Tetris (DGUNL-7030, Gamer V, with 220 bonus games)", MACHINE_NOT_WORKING ) + // Use DIP switch to select console or cartridge, as cartridge is fake and just toggles a GPIO CONS( 2016, fcpocket, 0, 0, nes_vt32_4x16mb, nes_vt32_fp, nes_vt32_unk_state, empty_init, "", "FC Pocket 600 in 1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // has external banking (2x 32mbyte banks) diff --git a/src/mame/nintendo/nes_vt32_soc.cpp b/src/mame/nintendo/nes_vt32_soc.cpp index 5bcab4b1c0b..e76effb2b7f 100644 --- a/src/mame/nintendo/nes_vt32_soc.cpp +++ b/src/mame/nintendo/nes_vt32_soc.cpp @@ -46,13 +46,39 @@ uint8_t nes_vt32_soc_device::vtfp_4119_r() return 0x00; } -void nes_vt32_soc_device::vtfp_411e_w(uint8_t data) +void nes_vt32_soc_device::vtfp_411e_encryption_state_w(uint8_t data) { - logerror("411e_w %02x\n", data); + logerror("%s: vtfp_411e_encryption_state_w %02x\n", machine().describe_context(), data); if (data == 0x05) - downcast(*m_maincpu).set_next_scramble(true); + { + downcast(*m_maincpu).set_next_scramble(true); + } else if (data == 0x00) - downcast(*m_maincpu).set_next_scramble(false); + { + downcast(*m_maincpu).set_next_scramble(false); + } + else if (data == 0xc0) + { + /* this seems to turn off the code encryption + but turns on some kind of PPU data bitswap? myaass uses it on several games + + in VRAM -> should be in VRAM + 80 -> 08 + 40 -> 20 + 20- > 40 + 10 -> 01 + 08 -> 80 + 04 -> 02 + 02 -> 04 + 01 -> 10 + + it is unclear if this affects reads from ROM, or directly alters reads or + writes involving the VRAM + + */ + + downcast(*m_maincpu).set_next_scramble(false); + } } void nes_vt32_soc_device::vtfp_4a00_w(uint8_t data) @@ -103,7 +129,7 @@ void nes_vt32_soc_device::nes_vt_fp_map(address_map &map) map(0x411d, 0x411d).w(FUNC(nes_vt32_soc_device::vtfp_411d_w)); map(0x4119, 0x4119).r(FUNC(nes_vt32_soc_device::vtfp_4119_r)); - map(0x411e, 0x411e).w(FUNC(nes_vt32_soc_device::vtfp_411e_w)); // encryption toggle + map(0x411e, 0x411e).w(FUNC(nes_vt32_soc_device::vtfp_411e_encryption_state_w)); // encryption toggle map(0x412c, 0x412c).w(FUNC(nes_vt32_soc_device::vtfp_412c_extbank_w)); // GPIO map(0x412d, 0x412d).r(FUNC(nes_vt32_soc_device::vtfp_412d_r)); // GPIO diff --git a/src/mame/nintendo/nes_vt32_soc.h b/src/mame/nintendo/nes_vt32_soc.h index e2180767521..18bf25b272c 100644 --- a/src/mame/nintendo/nes_vt32_soc.h +++ b/src/mame/nintendo/nes_vt32_soc.h @@ -30,7 +30,7 @@ protected: void nes_vt_fp_map(address_map &map) ATTR_COLD; uint8_t vtfp_4119_r(); - void vtfp_411e_w(uint8_t data); + void vtfp_411e_encryption_state_w(uint8_t data); void vtfp_412c_extbank_w(uint8_t data); uint8_t vtfp_412d_r(); void vtfp_4242_w(uint8_t data); diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index 5405f6217bf..265ef113607 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -938,6 +938,12 @@ ROM_START( matet10 ) ROM_IGNORE(0x300) ROM_END +ROM_START( matet100 ) + ROM_REGION( 0x2000000, "mainrom", 0 ) + ROM_LOAD( "picotetris_s29gl064n90tfi04_0001227e.bin", 0x00000, 0x800000, CRC(7d9296f2) SHA1(0db5883028d14783d0abff1f7672e59534b0e513) ) + ROM_IGNORE(0x100) +ROM_END + void nes_vt369_vtunknown_state::init_lxcmcypp() { int size = memregion("mainrom")->bytes()/2; @@ -1129,3 +1135,6 @@ CONS( 2021, unk128vt, 0, 0, nes_vt369_vtunknown_unk_4mb, nes_vt369_vtu // uses a low res display like the above CONS( 2021, matet10, 0, 0, nes_vt369_vtunknown_unk_2mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "dreamGEAR", "My Arcade Tetris (DGUNL-7083, Pixel Pocket, with 10 bonus games)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) + +// unknown tech level, scrambled opcodes +CONS( 2021, matet100, 0, 0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "dreamGEAR", "My Arcade Tetris (DGUNL-7027, Pico Player, with 100+ bonus games)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) // box says 100+ bonus games diff --git a/src/mame/sega/megadriv_rad.cpp b/src/mame/sega/megadriv_rad.cpp index 5f3990726d5..493b04c5a27 100644 --- a/src/mame/sega/megadriv_rad.cpp +++ b/src/mame/sega/megadriv_rad.cpp @@ -36,21 +36,21 @@ public: { } protected: - uint16_t read(offs_t offset); + virtual uint16_t read(offs_t offset); uint16_t read_a13(offs_t offset); - void megadriv_radica_map(address_map &map) ATTR_COLD; + virtual void megadriv_radica_map(address_map &map) ATTR_COLD; void radica_base_map(address_map &map) ATTR_COLD; int m_bank; int m_romsize; -private: required_region_ptr m_rom; }; + class megadriv_radica_state : public megadriv_radica_state_base { public: @@ -69,6 +69,28 @@ protected: virtual void machine_reset() override ATTR_COLD; }; +class megadriv_b010xx_select_state : public megadriv_radica_state +{ +public: + megadriv_b010xx_select_state(const machine_config& mconfig, device_type type, const char* tag) : + megadriv_radica_state(mconfig, type, tag) + { } + void init_atgame40(); + +private: + virtual void machine_reset() override ATTR_COLD; + + virtual uint16_t read(offs_t offset) override; + + virtual void megadriv_radica_map(address_map &map) override ATTR_COLD; + + void bank_high_w(offs_t offset, uint16_t data, uint16_t mem_mask); + void bank_low_w(offs_t offset, uint16_t data, uint16_t mem_mask); + void bank_upper_w(offs_t offset, uint16_t data, uint16_t mem_mask); + + void b01036_w(offs_t offset, uint16_t data, uint16_t mem_mask); +}; + class megadriv_dgunl_state : public megadriv_radica_state { @@ -91,7 +113,7 @@ private: uint16_t read_a16302(offs_t offset, uint16_t mem_mask); virtual void write_a1630a(offs_t offset, uint16_t data, uint16_t mem_mask); - void megadriv_dgunl_map(address_map &map) ATTR_COLD; + virtual void megadriv_radica_map(address_map &map) override ATTR_COLD; }; @@ -333,8 +355,55 @@ void megadriv_ra145_state::write_a1630a(offs_t offset, uint16_t data, uint16_t m m_bank = m_bank / 0x10000; } +uint16_t megadriv_b010xx_select_state::read(offs_t offset) +{ + return m_rom[((m_bank >> 1) + offset) & (m_romsize - 1)]; +} -void megadriv_dgunl_state::megadriv_dgunl_map(address_map &map) +void megadriv_b010xx_select_state::bank_high_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + data &= 0x7f; + mem_mask &= 0x7f; + + m_bank = (m_bank & 0xff80ffff) | (data & mem_mask) << 16; + logerror("%s: bank_high_w bank is now %08x\n", machine().describe_context(), m_bank); +} + +void megadriv_b010xx_select_state::bank_low_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + m_bank = (m_bank & 0xffff0000) | (data & mem_mask); + logerror("%s: bank_low_w bank is now %08x\n", machine().describe_context(), m_bank); +} + +void megadriv_b010xx_select_state::bank_upper_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + // this is handled differently to the other writes, probably some external logic + // rather than the same banking + // written before bank_high and bank_low + m_bank |= 0x800000; + logerror("%s: bank_upper_w (%04x %04x) bank is now %08x\n", machine().describe_context(), data, mem_mask, m_bank); +} + +void megadriv_b010xx_select_state::b01036_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + // all games in atgame40 that fail to display anything write 0x0001 here + // could be coincidence, but could also be enabling the alt display mode? + logerror("%s: b01036_w %04x %04x (for games with no display?)\n", machine().describe_context(), data, mem_mask); +} + +void megadriv_b010xx_select_state::megadriv_radica_map(address_map &map) +{ + radica_base_map(map); + + map(0xa10104, 0xa10105).w(FUNC(megadriv_b010xx_select_state::bank_upper_w)); // read and written + + map(0xb01028, 0xb01029).w(FUNC(megadriv_b010xx_select_state::bank_low_w)); + map(0xb0102a, 0xb0102b).w(FUNC(megadriv_b010xx_select_state::bank_high_w)); + + map(0xb01036, 0xb01037).w(FUNC(megadriv_b010xx_select_state::b01036_w)); +} + +void megadriv_dgunl_state::megadriv_radica_map(address_map &map) { radica_base_map(map); @@ -458,6 +527,11 @@ void megadriv_radica_state::machine_reset() megadriv_radica_state_base::machine_reset(); } +void megadriv_b010xx_select_state::machine_reset() +{ + m_bank = 0; + megadriv_radica_state_base::machine_reset(); +} void megadriv_radica_state::megadriv_radica_3button_ntsc(machine_config &config) { @@ -502,7 +576,7 @@ void megadriv_dgunl_state::megadriv_dgunl_ntsc(machine_config &config) ctrl1_3button(config); ctrl2_3button(config); - m_maincpu->set_addrmap(AS_PROGRAM, &megadriv_dgunl_state::megadriv_dgunl_map); + m_maincpu->set_addrmap(AS_PROGRAM, &megadriv_dgunl_state::megadriv_radica_map); } void megadriv_ra145_state::megadriv_ra145_ntsc(machine_config &config) @@ -623,13 +697,59 @@ ROM_START( matet ) ROM_IGNORE(0x100) ROM_END +/* + +As the atgame40 is not running on standard MegaDrive hardware quite a few of these games rely +on an unsupported video mode (they still play sounds and resond to inputs / do colour fades) + +00 Menu located at 00800000 WORKS +-- +01 Air Hockey located at 0000c800 WORKS +02 Black Sheep located at 0002935a BOOTS - NO DISPLAY +03 Bomber located at 000b6f5a WORKS +04 Bottle Taps Race located at 000d6f5a WORKS +05 Brain Switch located at 000ec760 BOOTS - NO DISPLAY +06 Bulls and Cows located at 00800000 BOOTS - NO DISPLAY +07 Cannon located at 0013e360 WORKS +08 Checker located at 0016301e WORKS +09 Chess located at 001aa232 WORKS +10 Colour Puzzle located at 001f0a32 BOOTS - NO DISPLAY +11 Cross The Road located at 008a2800 BOOTS - NO DISPLAY +12 Curling 2010 located at 00953486 BOOTS - NO DISPLAY +13 Fight or Lose located at 009f002e WORKS +14 Fire Fly Glow located at 00a09ede BOOTS - NO DISPLAY +15 Fish Story located at 00aa2ede BOOTS - NO DISPLAY +16 Flash Memory located at 00285632 BOOTS - NO DISPLAY +17 Formula Challenge located at 00310232 BOOTS - NO DISPLAY +18 Hexagons located at 00394a32 WORKS +19 Jacks Pea located at 003b4a32 BOOTS - NO DISPLAY +20 Jewel Magic located at 00b4a874 BOOTS - NO DISPLAY +21 Logic Dial located at 0040b4ac BOOTS - NO DISPLAY +22 Table Magic located at 00be8f8c BOOTS - NO DISPLAY +23 Mahjong located at 0049e8ac WORKS +24 Match Eleven located at 004ae8ac BOOTS - NO DISPLAY +25 Mega Brain Switch located at 005390ac BOOTS - NO DISPLAY +26 Memory located at 0058a0ac WORKS +27 Memory Match located at 00c8538c BOOTS - NO DISPLAY +28 Mirror Mirror located at 00d2178c BOOTS - NO DISPLAY +29 Mr Balls located at 0059a0ac WORKS +30 Navel Power located at 005c0a08 WORKS +31 Panic Lift located at 00d86f8c BOOTS - NO DISPLAY +32 Reaction Match located at 00e2038c BOOTS - NO DISPLAY +33 Snake located at 005dbbd4 WORKS +34 Space Hunter located at 005ebbd4 BOOTS - NO DISPLAY +35 Spider located at 006817d4 WORKS +36 Sudoku Quiz located at 0069efb4 BOOTS - NO DISPLAY +37 Treasure Hunt located at 00eb9b8c BOOTS - NO DISPLAY +38 UFO Sighting located at 00f5938c BOOTS - NO DISPLAY +39 Warehouse Keeper located at 00730fb4 WORKS +40 Whack a Wolf located at 00740fb4 BOOTS - NO DISPLAY +*/ ROM_START( atgame40 ) - ROM_REGION( 0x1000000, "rom", 0 ) - ROM_LOAD16_WORD_SWAP( "40bonusgamesin1.bin", 0x000000, 0x1000000, CRC(4eba6e83) SHA1(b8edf1b6ecb70a136b551f1454ba8afa45bd8bc1) ) - - ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 ) - ROM_COPY( "rom", 0x800000, 0, 0x400000 ) + ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "40bonusgamesin1.bin", 0x800000, 0x800000, CRC(4eba6e83) SHA1(b8edf1b6ecb70a136b551f1454ba8afa45bd8bc1) ) + ROM_CONTINUE(0x000000, 0x800000) ROM_END @@ -655,7 +775,11 @@ ROM_START( ra145 ) ROM_LOAD16_WORD_SWAP( "ra145.bin", 0x000000, 0x8000000, BAD_DUMP CRC(30583950) SHA1(855eae232e3830a505f9bc1a26edb3a7d15ce4d1) ) ROM_END - +void megadriv_b010xx_select_state::init_atgame40() +{ + m_romsize = 0x1000000; + init_megadrie(); +} void megadriv_dgunl_state::init_dgunl3227() { @@ -795,14 +919,19 @@ CONS( 2018, msi_sf2, 0, 0, megadriv_radica_6button_ntsc, msi_6button, CONS( 2018, dgunl3227, 0, 0, megadriv_dgunl_ntsc, dgunl_1player, megadriv_dgunl_state, init_dgunl3227, "dreamGEAR", "My Arcade Pac-Man Pocket Player (DGUNL-3227)", 0 ) CONS( 2018, dgunl3227a, dgunl3227,0, megadriv_dgunl_ntsc, dgunl_1player, megadriv_dgunl_state, init_dgunl3227, "dreamGEAR", "My Arcade Pac-Man Pocket Player (DGUNL-3227, older)", 0 ) -CONS( 2021, matet, 0, 0, megadriv_radica_3button_ntsc, radica_3button, megadriv_radica_state, init_megadriv, "dreamGEAR", "My Arcade Tetris (DGUNL-7028, Pocket Player Pro)", MACHINE_NOT_WORKING) CONS( 2018, ra145, 0, 0, megadriv_ra145_ntsc, msi_6button, megadriv_ra145_state, init_ra145, "", "Retro Arcade 16 Bits Classic Edition Mini TV Game Console - 145 Classic Games - TV Arcade Plug and Play (Mega Drive bootlegs)", MACHINE_NOT_WORKING ) + +// Games below have a device at b0102x which appears to either be able to select ROM base on a byte boundary +// OR maybe are running from RAM instead of ROM (with an auto-copy at the start?) with that being a DMA operation. + // Technically this is a MD type cartridge, but it doesn't seem to be designed for use with a standard MD as it contains // nothing but the 16Mbyte ROM and a 5v to 3.3v converter yet the code clearly requires some extensive banking logic. // Testing it on a real MD shows nothing, not even the menu. // // We don't seem to emulate the system it's designed for, so for now just treat it as its own thing (which may become // the basis of a driver for that console) -CONS( 2012, atgame40, 0, 0, megadriv_radica_3button_pal, radica_3button, megadriv_radica_state, init_megadrie, "AtGames", "40 Bonus Games in 1 (AtGames)", MACHINE_NOT_WORKING) +CONS( 2012, atgame40, 0, 0, megadriv_radica_3button_pal, radica_3button, megadriv_b010xx_select_state, init_atgame40, "AtGames", "40 Bonus Games in 1 (AtGames)", MACHINE_NOT_WORKING) + +CONS( 2021, matet, 0, 0, megadriv_radica_3button_ntsc, radica_3button, megadriv_b010xx_select_state, init_megadriv, "dreamGEAR", "My Arcade Tetris (DGUNL-7028, Pocket Player Pro)", MACHINE_NOT_WORKING) diff --git a/src/mame/tvgames/spg2xx_lexibook.cpp b/src/mame/tvgames/spg2xx_lexibook.cpp index 22e95d05116..f8cdf5bfafb 100644 --- a/src/mame/tvgames/spg2xx_lexibook.cpp +++ b/src/mame/tvgames/spg2xx_lexibook.cpp @@ -343,6 +343,11 @@ ROM_START( lexizeus ) ROM_LOAD16_WORD_SWAP( "lexibook1g900us.bin", 0x0000, 0x800000, CRC(c2370806) SHA1(cbb599c29c09b62b6a9951c724cd9fc496309cf9)) ROM_END +ROM_START( arcade3d ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "arcade3d.u3", 0x0000, 0x800000, CRC(130843a5) SHA1(f6494a34d162e702121cf71d384a4e57e0113498) ) +ROM_END + ROM_START( vsplus ) ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD16_WORD_SWAP( "vsplus.bin", 0x0000, 0x1000000, CRC(2b13d2cc) SHA1(accae7606d83a313b8ec0232d2d67b63c9c617af) ) @@ -423,6 +428,8 @@ ROM_END CONS( 200?, lexizeus, 0, 0, lexizeus, lexizeus, spg2xx_lexizeus_game_state, init_zeus, "Lexibook / JungleTac", "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?, arcade3d, 0, 0, lexizeus, lexiseal, spg2xx_lexizeus_game_state, init_zeus, "Millennium 2000 GmbH / JungleTac", "Millennium Arcade 3D 15-in-1", 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?, vsplus, 0, 0, vsplus, vsplus, spg2xx_vsplus_game_state, init_vsplus, " / JungleTac", "Vs Power Plus 30-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index 9b36b28177f..ca291e82eff 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -42,7 +42,7 @@ Wildest computer robot "Daigander" (Korean version) /TAKARA/Korea - - - - - - - 2001 Ping-pong(Chinese version) /Tenpon/China - - - - - - - Baseball Korean version /SONOKONG/Korea - - - - - - - - 1999 ABC Jungle Fun Hippo /VTech/HK, USA, France - - - - - - - + 1999 ABC Jungle Fun Hippo VTech/HK (USA and UK versions only, FR is dumped) - - - - - - - not dumped: no TSOP pads 2003 Beyblade Arcade Challenge 5-in-1 /Hasbro/USA - - - - - - have @@ -2795,6 +2795,10 @@ ROM_START( tak_beyb ) ROM_LOAD( "beyblade.u2", 0x000000, 0x200000, CRC(bcf6b3a7) SHA1(1c80f1241138b9d7816f1e5285ff8f3c61739c95) ) ROM_END +ROM_START( hippofr ) + ROM_REGION( 0x200000, "bios", ROMREGION_ERASE00 ) + ROM_LOAD( "54-6447-010.u3", 0x000000, 0x200000, CRC(1fb15364) SHA1(ff2bb54f7d6ccd3c83e722599c6f2b213bf35df8) ) +ROM_END /* XaviX hardware titles (1st Generation) @@ -2808,6 +2812,13 @@ ROM_END */ +// product code 80-32705. +// Some sites say 1997, but 1999 is what SSD had listed, and seems more fitting. +// Also exists as +// 80-32703 Hippo's Alphabet Adventure (UK) +// 80-32700 ABC Jungle Fun (US?) +CONS( 1999, hippofr, 0, 0, xavix_2mb, xavix,xavix_state, init_xavix, "VTech", "Hippo: et la formidable aventure des lettres (France)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // needs keyboard emulating + // Let's!TVプレイCLASSIC タイトーノスタルジア1 CONS( 2006, taitons1, 0, 0, xavix_i2c_24lc04_2mb, nostalgia,xavix_i2c_state, init_xavix, "Bandai / SSD Company LTD / Taito", "Let's! TV Play Classic - Taito Nostalgia 1 (Japan)", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/tvgames/xavix_2002.cpp b/src/mame/tvgames/xavix_2002.cpp index b0983129dd4..2d18a12f554 100644 --- a/src/mame/tvgames/xavix_2002.cpp +++ b/src/mame/tvgames/xavix_2002.cpp @@ -192,6 +192,17 @@ static INPUT_PORTS_START( xavix_i2c ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("i2cmem", FUNC(i2cmem_device::read_sda)) INPUT_PORTS_END +static INPUT_PORTS_START( maxheart ) + PORT_INCLUDE(xavix_i2c) + + PORT_MODIFY("IN0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_16WAY + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_16WAY + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_16WAY + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_16WAY +INPUT_PORTS_END static INPUT_PORTS_START( epo_tfit ) PORT_INCLUDE(xavix) @@ -912,7 +923,7 @@ CONS( 2004, epo_tfit, 0, 0, superxavix_i2c_24c04_4mb, epo_tfit, superxavix_ CONS( 2010, epo_rgfj, 0, 0, superxavix_i2c_24c08, xavix_i2c, superxavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Ishikawa Ryou Excite Golf (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // Let's!TVプレイ ふたりはプリキュアMaxHeart マットでダンス MaxHeartにおどっちゃおう -CONS( 2004, maxheart, 0, 0, superxavix_i2c_24c04_4mb, xavix_i2c, superxavix_i2c_state, init_xavix, "Bandai / SSD Company LTD", "Let's! TV Play Futari wa PreCure MaxHeart Mat de Dance MaxHeart ni Odotchaou (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +CONS( 2004, maxheart, 0, 0, superxavix_i2c_24c04_4mb, maxheart, superxavix_i2c_state, init_xavix, "Bandai / SSD Company LTD", "Let's! TV Play Futari wa PreCure MaxHeart Mat de Dance MaxHeart ni Odotchaou (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // どこでもドラえもん 日本旅行ゲームDX体感!どこドラグランプリ! CONS( 2004, epo_doka, 0, 0, xavix2002_4mb, xavix, superxavix_state, init_epo_doka, "Epoch / SSD Company LTD", "Doko Demo Doraemon Nihon Ryokou Game DX Taikan! Doko Dora Grand Prix! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )