From fe79aa057c73535eeacd0eb378cff6fa81ace926 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Wed, 9 Jul 2025 15:40:10 +0100 Subject: [PATCH 1/2] current plug and play changes squashed --- hash/duelmast_cart.xml | 28 +++++ src/devices/video/ppu2c0x_sh6578.cpp | 2 - src/mame/mame.lst | 38 +++++-- src/mame/nintendo/nes_sh6578.cpp | 81 +++++++++++--- src/mame/nintendo/nes_vt32.cpp | 7 +- src/mame/nintendo/vt1682.cpp | 2 + src/mame/sega/mdconsole.cpp | 95 ----------------- src/mame/sega/mdconsole.h | 5 - src/mame/sega/megadriv_rad.cpp | 101 +++++++++++++++++- src/mame/tvgames/elan_eu3a05.cpp | 124 +++++++++++++++------- src/mame/tvgames/elan_eu3a05commonsys.cpp | 6 +- src/mame/tvgames/spg2xx.cpp | 108 +++++++++++++++++-- src/mame/tvgames/spg2xx.h | 5 + src/mame/tvgames/spg2xx_jakks_gkr.cpp | 4 +- src/mame/tvgames/trkfldch.cpp | 14 ++- src/mame/tvgames/xavix.cpp | 20 ++-- src/mame/tvgames/xavix.h | 42 +++++--- src/mame/tvgames/xavix2.cpp | 56 ++++++++-- src/mame/tvgames/xavix_2000.cpp | 25 ++++- src/mame/tvgames/xavix_2002.cpp | 57 +++++++++- src/mame/tvgames/xavix_2002.h | 15 +++ 21 files changed, 610 insertions(+), 225 deletions(-) create mode 100644 hash/duelmast_cart.xml diff --git a/hash/duelmast_cart.xml b/hash/duelmast_cart.xml new file mode 100644 index 0000000000000..e275d907dcdb3 --- /dev/null +++ b/hash/duelmast_cart.xml @@ -0,0 +1,28 @@ + + + + + + + + + + Duel Masters: Duel Station Ver.1 + 2003 + Takara + + + + + + + + + + diff --git a/src/devices/video/ppu2c0x_sh6578.cpp b/src/devices/video/ppu2c0x_sh6578.cpp index 8e5a375f7070a..ae427272613d3 100644 --- a/src/devices/video/ppu2c0x_sh6578.cpp +++ b/src/devices/video/ppu2c0x_sh6578.cpp @@ -45,8 +45,6 @@ void ppu_sh6578_device::ppu_internal_map(address_map& map) map(0x0000, 0x1fff).ram(); map(0x2000, 0x27ff).ram(); map(0x2800, 0x7fff).nopr(); - - map(0x8000, 0xffff).ram(); // machine specific? } void ppu_sh6578_device::device_start() diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 46d96bcf7dc18..bf50b23c56732 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -35330,20 +35330,22 @@ m82 @source:nintendo/nes_sh6578.cpp 6578cjz1 6578cjz2 +ablwikid bancook -bandgpad bandggcn +bandgpad bb6578 cpatrolm dancmix3 -ts_handy11 -ablwikid +dgun806 +max10in1 maxx5in1 maxx6in1 -max10in1 -vsmaxx25 +mousekid +soulbird +ts_handy11 vsmaxx15 -dgun806 +vsmaxx25 @source:nintendo/nes_vt02_vt03.cpp 88in1joy @@ -35449,6 +35451,7 @@ fcpocket g5_500 g9_666 gbox2019 +goretrop gprnrs1 gprnrs16 hhgc319 @@ -40213,14 +40216,11 @@ vtennis3 32xj aiwamcd cdx -dcat16 gen_nomd genesis genesis_tmss laseract laseractj -mahg156 -mdhh100 megacd megacd2 megacd2j @@ -40256,15 +40256,21 @@ twinktmb @source:sega/megadriv_rad.cpp atgame40 banmrid +dcat16 dgunl3227 dgunl3227a matet +mahg156 +mdhh100 mdtvp1j mdtvp2j mdtvp3j msi_sf2 +mygalag +mygalaga mympac mypac +mysinv ra145 rad_gen1 rad_gen2 @@ -46556,6 +46562,7 @@ carlecfg pvmil8 pvmilfin pvwwcas +rad_ftet rad_sinv rad_tetr sudelan @@ -46791,6 +46798,8 @@ lpetshop lxairjet lxspidaj mattelcs +mpntball +mpntbalt mylpony ordentv pballpup @@ -47039,6 +47048,7 @@ shtscore teleshi teleship trkfldch +trkfldchj @source:tvgames/tvgame.cpp tvgame @@ -47128,6 +47138,7 @@ taikodp taitons1 taitons2 tak_beyb +tak_beyu tak_comt tak_daig tak_gin @@ -47149,12 +47160,17 @@ tvpc_tom @source:tvgames/xavix2.cpp ban_db2j -ltv_naru +ban_dbz +ban_bldj +ban_naru domfitad dombikec epo_dabj +epo_dab2j epo_dtcj +epo_pabj epo_sskj +epo_ssk2 @source:tvgames/xavix_2000.cpp ban_omt @@ -47184,6 +47200,7 @@ ban_dn1j ban_gkrj ban_kksj ban_ordj +ban_pr2j ban_ult ban_utmj ban_um2j @@ -47199,6 +47216,7 @@ epo_tfit maxheart mrangbat ndpbj +ndpmj suprtvpc suprtvpcdo suprtvpchk diff --git a/src/mame/nintendo/nes_sh6578.cpp b/src/mame/nintendo/nes_sh6578.cpp index c1e9dac59fce0..939357cc3c75b 100644 --- a/src/mame/nintendo/nes_sh6578.cpp +++ b/src/mame/nintendo/nes_sh6578.cpp @@ -20,6 +20,7 @@ #include "screen.h" #include "speaker.h" #include "machine/bankdev.h" +#include "machine/nvram.h" #include "machine/timer.h" #define LOG_DMA (1U << 1) @@ -45,7 +46,8 @@ class nes_sh6578_state : public driver_device m_screen(*this, "screen"), m_apu(*this, "nesapu"), m_timer(*this, "timer"), - m_in(*this, "IN%u", 0U) + m_in(*this, "IN%u", 0U), + m_ext(*this, "EXT") { } void nes_sh6578(machine_config& config); @@ -53,6 +55,14 @@ class nes_sh6578_state : public driver_device void init_nes_sh6578(); + int unknown_random_r() + { + if (!machine().side_effects_disabled()) + return machine().rand(); + else + return 0; + } + protected: virtual void machine_start() override ATTR_COLD; virtual void machine_reset() override ATTR_COLD; @@ -128,6 +138,7 @@ class nes_sh6578_state : public driver_device void rom_map(address_map &map) ATTR_COLD; void nes_sh6578_map(address_map &map) ATTR_COLD; + void ppu_map(address_map &map); //uint16_t get_tileaddress(uint8_t x, uint8_t y, bool ishigh); @@ -140,6 +151,7 @@ class nes_sh6578_state : public driver_device uint8_t m_previo; uint8_t m_iolatch[2]; required_ioport_array<2> m_in; + required_ioport m_ext; }; class nes_sh6578_abl_wikid_state : public nes_sh6578_state @@ -165,18 +177,6 @@ class nes_sh6578_max10in1_state : public nes_sh6578_state 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; @@ -444,7 +444,7 @@ 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; + return m_ext->read(); } void nes_sh6578_state::extio_w(uint8_t data) @@ -535,6 +535,9 @@ static INPUT_PORTS_START(nes_sh6578) PORT_START("IN1") PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("EXT") + PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END static INPUT_PORTS_START(bancook) @@ -543,6 +546,23 @@ static INPUT_PORTS_START(bancook) PORT_START("IN1") PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("EXT") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(nes_sh6578_state::unknown_random_r)) +INPUT_PORTS_END + +static INPUT_PORTS_START(soulbird) + PORT_START("IN0") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN1") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("EXT") + PORT_BIT( 0x1f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) INPUT_PORTS_END @@ -614,6 +634,12 @@ uint32_t nes_sh6578_state::screen_update(screen_device& screen, bitmap_rgb32& bi return m_ppu->screen_update(screen, bitmap, cliprect); } +void nes_sh6578_state::ppu_map(address_map &map) +{ + map(0x8000, 0xffff).ram().share("nvram"); // machine specific? soulbird seems to expect fc00-fc7f to save at least +} + + void nes_sh6578_state::nes_sh6578(machine_config& config) { /* basic machine hardware */ @@ -625,6 +651,7 @@ void nes_sh6578_state::nes_sh6578(machine_config& config) PPU_SH6578(config, m_ppu, RP2A03_NTSC_XTAL); m_ppu->set_cpu_tag(m_maincpu); m_ppu->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); + m_ppu->set_addrmap(AS_PROGRAM, &nes_sh6578_state::ppu_map); /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); @@ -637,6 +664,8 @@ void nes_sh6578_state::nes_sh6578(machine_config& config) TIMER(config, m_timer).configure_generic(FUNC(nes_sh6578_state::timer_expired)); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); + /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -657,6 +686,7 @@ void nes_sh6578_state::nes_sh6578_pal(machine_config& config) PPU_SH6578PAL(config.replace(), m_ppu, RP2A03_PAL_XTAL); m_ppu->set_cpu_tag(m_maincpu); m_ppu->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); + m_ppu->set_addrmap(AS_PROGRAM, &nes_sh6578_state::ppu_map); m_screen->set_refresh_hz(50.0070); m_screen->set_vblank_time(ATTOSECONDS_IN_USEC((113.66 / (PALC_APU_CLOCK.dvalue() / 1000000)) * @@ -687,6 +717,11 @@ ROM_START( bancook ) ROM_LOAD( "mx27c8000.ic2", 0x00000, 0x100000, CRC(865bef26) SHA1(82820eac162a2b4b4b5da894df4bfc5521d4f89b) ) ROM_END +ROM_START( soulbird ) + ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "soulbird.ic1", 0x00000, 0x100000, CRC(307c7f95) SHA1(488ed8de5c22122581e89219889fe4f7e5d5bc96) ) +ROM_END + ROM_START( ts_handy11 ) ROM_REGION( 0x100000, "maincpu", 0 ) ROM_LOAD( "tvplaypowercontroller.bin", 0x00000, 0x100000, CRC(9c7fe9ff) SHA1(c872e91ca835b66c9dd3b380e8374b51f12bcae0) ) // 29LV008B @@ -752,6 +787,11 @@ ROM_START( dancmix3 ) ROM_LOAD( "e28f008sa.u5", 0x00000, 0x100000, CRC(faf6480c) SHA1(68bf79910e091443aecc7bf256cd5378a04c550e) ) ROM_END +ROM_START( mousekid ) + ROM_REGION( 0x100000, "maincpu", 0 ) + ROM_LOAD( "mousekid.ic2", 0x00000, 0x100000, CRC(465d5b5a) SHA1(a27f01ccc7b741b51ea4a9e4455dc4cee4420a89) ) +ROM_END + } // anonymous namespace @@ -786,8 +826,15 @@ CONS( 1997, bandgpad, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, i CONS( 1997, bandggcn, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "Bandai", "Go! Go! Connie-chan! Asobou Mouse", MACHINE_NOT_WORKING ) +// uses a mouse and buttons (no keyboard) +// テレビであそぼう! ミッキー&ミニー マウスキッズ +CONS( 1997, mousekid, 0, 0, nes_sh6578, bancook, nes_sh6578_state, init_nes_sh6578, "Tomy", "Terebi de Asobou! Mickey & Minnie Mouse Kids (Japan)", MACHINE_NOT_WORKING ) + // おジャ魔女どれみのTVでマジカルクッキング -CONS( 2001, bancook, 0, 0, nes_sh6578, bancook, nes_sh6578_cjz_state, init_nes_sh6578, "Bandai", "Ojamajo Doremi no TV de Magical Cooking (Japan)", MACHINE_NOT_WORKING ) +CONS( 2001, bancook, 0, 0, nes_sh6578, bancook, nes_sh6578_state, init_nes_sh6578, "Bandai", "Ojamajo Doremi no TV de Magical Cooking (Japan)", MACHINE_NOT_WORKING ) + +// there's no SEEPROM, it uses a CR2032 to keep some RAM data alive +CONS( 2001, soulbird, 0, 0, nes_sh6578, soulbird, nes_sh6578_state, init_nes_sh6578, "Bandai", "Hyakujuu Sentai Gaoranger: DX Soul Bird (Japan)", 0 ) CONS( 200?, cpatrolm, 0, 0, nes_sh6578_pal, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "TimeTop", "City Patrolman", MACHINE_NOT_WORKING ) @@ -795,8 +842,8 @@ CONS( 200?, bb6578, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, i // these don't boot much further than the timetop logo and a splash screen // 超级知识大富翁 (Chāojí Zhīshì Dà Fùwēng) -CONS( 200?, 6578cjz1, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_cjz_state, init_nes_sh6578, "TimeTop", "Chaoji Zhishi Da Fuweng 1", MACHINE_NOT_WORKING ) -CONS( 200?, 6578cjz2, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_cjz_state, init_nes_sh6578, "TimeTop", "Chaoji Zhishi Da Fuweng 2", MACHINE_NOT_WORKING ) +CONS( 200?, 6578cjz1, 0, 0, nes_sh6578, bancook, nes_sh6578_state, init_nes_sh6578, "TimeTop", "Chaoji Zhishi Da Fuweng 1", MACHINE_NOT_WORKING ) +CONS( 200?, 6578cjz2, 0, 0, nes_sh6578, bancook, nes_sh6578_state, init_nes_sh6578, "TimeTop", "Chaoji Zhishi Da Fuweng 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 diff --git a/src/mame/nintendo/nes_vt32.cpp b/src/mame/nintendo/nes_vt32.cpp index 1e4525c27d966..69c65651dc06f 100644 --- a/src/mame/nintendo/nes_vt32.cpp +++ b/src/mame/nintendo/nes_vt32.cpp @@ -548,7 +548,10 @@ ROM_START( myaasa ) ROM_LOAD( "mx29gl256el.u2", 0x00000, 0x2000000, CRC(1882264c) SHA1(e594b5cea634fadc4aac217b6d651be72a3024c0) ) ROM_END - +ROM_START( goretrop ) + ROM_REGION( 0x2000000, "mainrom", 0 ) + ROM_LOAD( "goretroportable.bin", 0x00000, 0x2000000, CRC(e7279dd3) SHA1(5f096ce22e46f112c2cc6588cb1c527f4f0430b5) ) +ROM_END ROM_START( fcpocket ) ROM_REGION( 0x8000000, "mainrom", 0 ) @@ -763,6 +766,8 @@ CONS( 200?, mc_9x6sa, mc_9x6ss, 0, nes_vt32_2mb, nes_vt32, nes_vt32_unk_state, e CONS( 200?, mc_7x6ss, 0, 0, nes_vt32_1mb, nes_vt32, nes_vt32_unk_state, empty_init, "", "777777 in 1 (8 bit Slim Station, NEWPXP-DVT22-A PCB)", MACHINE_IMPERFECT_GRAPHICS ) CONS( 200?, mc_8x6ss, 0, 0, nes_vt32_1mb, nes_vt32, nes_vt32_unk_state, empty_init, "", "888888 in 1 (8 bit Slim Station, NEWPXP-DVT22-A PCB)", MACHINE_IMPERFECT_GRAPHICS ) +// there's also a 250+ version of the unit below at least +CONS( 2018, goretrop, 0, 0, nes_vt32_32mb, nes_vt32, nes_vt32_unk_state, empty_init, "Retro-Bit", "Go Retro Portable 260+ Games", MACHINE_NOT_WORKING ) // Some games (eg F22) are scrambled like in myaass // These use a 16x16x8bpp packed tile mode for the main menu which seems more like a VT3xx feature, but VT3xx extended video regs not written? diff --git a/src/mame/nintendo/vt1682.cpp b/src/mame/nintendo/vt1682.cpp index fa74a2cc59fbe..ec4a4d1ccb955 100644 --- a/src/mame/nintendo/vt1682.cpp +++ b/src/mame/nintendo/vt1682.cpp @@ -6252,6 +6252,8 @@ void vt1682_anpncpc_state::anpncpc(machine_config& config) m_io->portf_in().set(FUNC(vt1682_anpncpc_state::iof_i2c_r)); m_io->portf_out().set(FUNC(vt1682_anpncpc_state::iof_i2c_w)); + // has a GPBA02A-HL011 I/O extender on the keyboard PCB + I2C_24C64(config, m_seeprom); } diff --git a/src/mame/sega/mdconsole.cpp b/src/mame/sega/mdconsole.cpp index 2adcf741bc7c6..57b90a7a18ca4 100644 --- a/src/mame/sega/mdconsole.cpp +++ b/src/mame/sega/mdconsole.cpp @@ -117,15 +117,6 @@ void md_cons_state::tmss_swap_w(uint16_t data) } } - -void md_cons_state::dcat16_megadriv_map(address_map &map) -{ - megadriv_68k_base_map(map); - - map(0x000000, 0x7fffff).rom(); -} - - void md_cons_state::install_tmss() { m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x000000, 0x7fffff); @@ -196,13 +187,6 @@ void md_cons_state::screen_vblank_console(int state) } } -void md_cons_state::dcat16_megadriv_base(machine_config &config) -{ - md_ntsc(config); - - m_maincpu->set_addrmap(AS_PROGRAM, &md_cons_state::dcat16_megadriv_map); -} - void md_cons_slot_state::ms_megadriv(machine_config &config) { md_ntsc(config); @@ -271,19 +255,6 @@ void md_cons_slot_state::genesis_tmss(machine_config &config) subdevice("cart_list")->set_filter("NTSC-U,TMSS"); } -void md_cons_state::dcat16_megadriv(machine_config &config) -{ - dcat16_megadriv_base(config); - - m_screen->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console)); - - md_ctrl_ports(config); - -// has SD card slot instead? -// MD_CART_SLOT(config, m_cart, md_cart, nullptr).set_must_be_loaded(true); -// SOFTWARE_LIST(config, "cart_list").set_original("megadriv"); -} - /************************************* * * ROM definition(s) @@ -316,63 +287,6 @@ ROM_START(genesis_tmss) ROM_LOAD( "tmss_usa.bin", 0x0000, 0x4000, CRC(5f5e64eb) SHA1(453fca4e1db6fae4a10657c4451bccbb71955628) ) ROM_END -ROM_START(dcat16) - ROM_REGION(0x800000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD16_WORD_SWAP( "mg6025.u1", 0x0000, 0x800000, CRC(5453d673) SHA1(b9f8d849cbed81fe73525229f4897ccaeeb7a833) ) - - ROM_REGION( 0x10000, "soundcpu", ROMREGION_ERASEFF) -ROM_END - - -ROM_START(mahg156) - ROM_REGION(0x8000000, "mainrom", ROMREGION_ERASEFF) - ROM_LOAD16_WORD_SWAP( "md156.u3", 0x0000, 0x8000000, CRC(665fc68c) SHA1(6b765f96716c4a0abf3d27252ec82be6b0d9a985) ) - - ROM_REGION(0x8000000, "maincpu", ROMREGION_ERASEFF) -// the Megadrive ROMs for the most part appear to be hacked versions of the games / old scene dumps -// some are region locked to differing regions (not all games present in ROM appear on the menu) -// ROM_COPY( "mainrom", 0x0000000, 0, 0x080000) // FORGOTTEN WORLDS -// ROM_COPY( "mainrom", 0x0080000, 0, 0x080000) // FIRE PRO WRESTLING -// ROM_COPY( "mainrom", 0x0100000, 0, 0x080000) // GHOST BUSTERS -// ROM_COPY( "mainrom", 0x0180000, 0, 0x080000) // DICK TRACY -// ROM_COPY( "mainrom", 0x0200000, 0, 0x080000) // DEVIL CRASH -// ROM_COPY( "mainrom", 0x0280000, 0, 0x080000) // DECAP ATTACK -// ROM_COPY( "mainrom", 0x0300000, 0, 0x080000) // DARWIN 4081 -// ROM_COPY( "mainrom", 0x0380000, 0, 0x080000) // CRACK DOWN -// ROM_COPY( "mainrom", 0x0400000, 0, 0x080000) // CAPTAIN PLANET -// ROM_COPY( "mainrom", 0x0480000, 0, 0x080000) // CALIFORNIA GAMES -// ROM_COPY( "mainrom", 0x0500000, 0, 0x080000) // CADASH -// ROM_COPY( "mainrom", 0x0580000, 0, 0x080000) // BOOGIE WOOGIE BOWLING -// ROM_COPY( "mainrom", 0x0600000, 0, 0x080000) // BIMINI RUN -// ROM_COPY( "mainrom", 0x0700000, 0, 0x080000) // BATTLE TOADS -// ROM_COPY( "mainrom", 0x0780000, 0, 0x080000) // TROUBLE SHOOTER -// ROM_COPY( "mainrom", 0x0800000, 0, 0x080000) // BURNING FORCE -// ROM_COPY( "mainrom", 0x0880000, 0, 0x080000) // FAERY TALE ADVENTURE -// ROM_COPY( "mainrom", 0x0900000, 0, 0x080000) // E-SWAT -// ROM_COPY( "mainrom", 0x0980000, 0, 0x080000) // ELEMENTAL MASTER -// ROM_COPY( "mainrom", 0x0a00000, 0, 0x080000) // EA HOCKEY -// ROM_COPY( "mainrom", 0x0a80000, 0, 0x080000) // DARK CASTLE -// ROM_COPY( "mainrom", 0x0b00000, 0, 0x080000) // CYBORG JUSTICE (CENSOR) -// ROM_COPY( "mainrom", 0x0b80000, 0, 0x080000) // LITTLE MERMAID -// ROM_COPY( "mainrom", 0x0c00000, 0, 0x080000) // DORAEMON -// ROM_COPY( "mainrom", 0x0c80000, 0, 0x080000) // SONIC -// ROM_COPY( "mainrom", 0x0d00000, 0, 0x080000) // WANI WANI WORLD -// ROM_COPY( "mainrom", 0x0d80000, 0, 0x080000) // GOLDEN AXE 2 -// etc. - ROM_COPY( "mainrom", 0x7800000, 0x00000, 0x200000) // DMC RedKid (Menu, requires unusual rendering mode?) - - ROM_REGION( 0x10000, "soundcpu", ROMREGION_ERASEFF) -ROM_END - -ROM_START(mdhh100) - ROM_REGION(0x8000000, "mainrom", ROMREGION_ERASEFF) - ROM_LOAD16_WORD_SWAP( "s29gl01gp11tfir1.u13", 0x0000, 0x8000000, CRC(564ab33a) SHA1(e455aaa9ed6f302d1ebe55b5202f983af612c415) ) - - ROM_REGION(0x8000000, "maincpu", ROMREGION_ERASEFF) - ROM_COPY( "mainrom", 0x7800000, 0x00000, 0x200000) // DMC RedKid (Menu, requires unusual rendering mode?) - - ROM_REGION( 0x10000, "soundcpu", ROMREGION_ERASEFF) -ROM_END ROM_START(megajet) ROM_REGION(MD_CPU_REGION_SIZE, "maincpu", ROMREGION_ERASEFF) @@ -1091,12 +1005,3 @@ CONS( 1993, megajet, gen_nomd, 0, ms_megajet, md, md_cons_s CONS( 1993, laseract, 0, 0, genesis_scd, md, md_cons_cd_state, init_genesis, "Pioneer / Sega","LaserActive with Genesis Pack PAC-S10 (USA, NTSC)", MACHINE_NOT_WORKING ) CONS( 1993, laseractj, laseract, 0, mdj_scd, md, md_cons_cd_state, init_md_jpn, "Pioneer / Sega","LaserActive with Mega Drive Pack PAC-S1 (Japan, NTSC)", MACHINE_NOT_WORKING ) //TODO: it has also PC Engine Pack(PAC-N1)/TG16 Pack(PAC-N10) for plays PC Engine/TG16 Cartridge, (Super/Arcade) CD-ROM2/TurboGrafx-CD, LD-ROM2 stuffs, but not emulated. - -// these might be better placed in megadriv_rad.cpp (which contains some other clone hardware) - -/* clone hardware - not sure if this hardware is running some kind of emulator, or enhanced MD clone, or just custom banking */ -CONS( 200?, dcat16, 0, 0, dcat16_megadriv, md, md_cons_slot_state, init_genesis, "Firecore", "D-CAT16 (Mega Drive handheld)", MACHINE_NOT_WORKING ) -// seems to be based on the AT games units, requires custom mode for menu? -CONS( 201?, mahg156, 0, 0, dcat16_megadriv, md, md_cons_slot_state, init_genesis, "", "Mini Arcade Handheld Game Console 2.8 Inch Screen Built in 156 Retro Games (Mega Drive handheld)", MACHINE_NOT_WORKING ) -// game-boy like handheld, pink in colour, 6 button controller (+ home select, start, vol buttons) -CONS( 201?, mdhh100, 0, 0, dcat16_megadriv, md, md_cons_slot_state, init_genesis, "", "unknown 100-in-1 handheld (Mega Drive based)", MACHINE_NOT_WORKING ) diff --git a/src/mame/sega/mdconsole.h b/src/mame/sega/mdconsole.h index e7f4060c831d1..7e260ae414f52 100644 --- a/src/mame/sega/mdconsole.h +++ b/src/mame/sega/mdconsole.h @@ -35,7 +35,6 @@ class md_cons_state : public md_base_state void md_32x(machine_config &config); void genesis_32x(machine_config &config); void mdj_32x(machine_config &config); - void dcat16_megadriv(machine_config &config); protected: virtual void machine_start() override ATTR_COLD; @@ -64,10 +63,6 @@ class md_cons_state : public md_base_state uint16_t tmss_r(offs_t offset); void tmss_swap_w(uint16_t data); - - void dcat16_megadriv_base(machine_config &config); - - void dcat16_megadriv_map(address_map &map) ATTR_COLD; }; diff --git a/src/mame/sega/megadriv_rad.cpp b/src/mame/sega/megadriv_rad.cpp index 056a089029362..4ffa7e0b3e960 100644 --- a/src/mame/sega/megadriv_rad.cpp +++ b/src/mame/sega/megadriv_rad.cpp @@ -31,6 +31,7 @@ class megadriv_radica_state_base : public md_ctrl_state megadriv_radica_state_base(const machine_config &mconfig, device_type type, const char *tag) : md_ctrl_state(mconfig, type, tag), m_bank(0), + m_externalbank(0), m_romsize(0x400000), m_rom(*this, "maincpu") { } @@ -44,6 +45,7 @@ class megadriv_radica_state_base : public md_ctrl_state void radica_base_map(address_map &map) ATTR_COLD; int m_bank; + int m_externalbank; int m_romsize; required_region_ptr m_rom; @@ -75,7 +77,10 @@ class megadriv_b010xx_select_state : public megadriv_radica_state megadriv_b010xx_select_state(const machine_config& mconfig, device_type type, const char* tag) : megadriv_radica_state(mconfig, type, tag) { } + void init_atgame40(); + void init_dcat(); + void init_mdhh100(); private: virtual void machine_reset() override ATTR_COLD; @@ -357,7 +362,7 @@ void megadriv_ra145_state::write_a1630a(offs_t offset, uint16_t data, uint16_t m uint16_t megadriv_b010xx_select_state::read(offs_t offset) { - return m_rom[((m_bank >> 1) + offset) & (m_romsize - 1)]; + return m_rom[(((m_externalbank | m_bank) >> 1) + offset) & (m_romsize - 1)]; } void megadriv_b010xx_select_state::bank_high_w(offs_t offset, uint16_t data, uint16_t mem_mask) @@ -722,6 +727,23 @@ ROM_START( mympac ) ROM_LOAD16_WORD_SWAP( "m29w640ft.bin", 0x000000, 0x800000, CRC(d6ceda9e) SHA1(c897f8d5661fea0c030daf9c5e92524eb4e71d52) ) ROM_END +ROM_START( mygalag ) + ROM_REGION( 0x200000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "galaga_standup_s29al016d70tfi02_00012249.bin", 0x000000, 0x200000, CRC(8f3d2e05) SHA1(8f6a54e5a8ee55e7a6cae3e72b8e70c4eee2c1ef) ) +ROM_END + +ROM_START( mygalaga ) + ROM_REGION( 0x400000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "galaga_s29jl032h70tfi01_0001227e.bin", 0x000000, 0x400000, CRC(e775089a) SHA1(0938afa8e92a8c77b4fb86e0ec044fbb2b572570) ) +ROM_END + +ROM_START( mysinv ) + ROM_REGION( 0x800000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "spaceinvaders_s29gl0640n90tfi04_0001227e.bin", 0x000000, 0x800000, CRC(55e001d1) SHA1(1eaa377bf78a0f1f492565a9f38b2f7d60d0e440) ) + ROM_IGNORE(0x100) +ROM_END + + /* @@ -779,6 +801,53 @@ ROM_START( atgame40 ) ROM_END +ROM_START(dcat16) + ROM_REGION(0x1000000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "mg6025.u1", 0x0000, 0x800000, CRC(5453d673) SHA1(b9f8d849cbed81fe73525229f4897ccaeeb7a833) ) + ROM_RELOAD(0x800000,0x800000) +ROM_END + + +ROM_START(mahg156) + ROM_REGION(0x8000000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "md156.u3", 0x0000, 0x8000000, CRC(665fc68c) SHA1(6b765f96716c4a0abf3d27252ec82be6b0d9a985) ) +// the Megadrive ROMs for the most part appear to be hacked versions of the games / old scene dumps +// some are region locked to differing regions (not all games present in ROM appear on the menu) +// ROM_COPY( "maincpu", 0x0000000, 0, 0x080000) // FORGOTTEN WORLDS +// ROM_COPY( "maincpu", 0x0080000, 0, 0x080000) // FIRE PRO WRESTLING +// ROM_COPY( "maincpu", 0x0100000, 0, 0x080000) // GHOST BUSTERS +// ROM_COPY( "maincpu", 0x0180000, 0, 0x080000) // DICK TRACY +// ROM_COPY( "maincpu", 0x0200000, 0, 0x080000) // DEVIL CRASH +// ROM_COPY( "maincpu", 0x0280000, 0, 0x080000) // DECAP ATTACK +// ROM_COPY( "maincpu", 0x0300000, 0, 0x080000) // DARWIN 4081 +// ROM_COPY( "maincpu", 0x0380000, 0, 0x080000) // CRACK DOWN +// ROM_COPY( "maincpu", 0x0400000, 0, 0x080000) // CAPTAIN PLANET +// ROM_COPY( "maincpu", 0x0480000, 0, 0x080000) // CALIFORNIA GAMES +// ROM_COPY( "maincpu", 0x0500000, 0, 0x080000) // CADASH +// ROM_COPY( "maincpu", 0x0580000, 0, 0x080000) // BOOGIE WOOGIE BOWLING +// ROM_COPY( "maincpu", 0x0600000, 0, 0x080000) // BIMINI RUN +// ROM_COPY( "maincpu", 0x0700000, 0, 0x080000) // BATTLE TOADS +// ROM_COPY( "maincpu", 0x0780000, 0, 0x080000) // TROUBLE SHOOTER +// ROM_COPY( "maincpu", 0x0800000, 0, 0x080000) // BURNING FORCE +// ROM_COPY( "maincpu", 0x0880000, 0, 0x080000) // FAERY TALE ADVENTURE +// ROM_COPY( "maincpu", 0x0900000, 0, 0x080000) // E-SWAT +// ROM_COPY( "maincpu", 0x0980000, 0, 0x080000) // ELEMENTAL MASTER +// ROM_COPY( "maincpu", 0x0a00000, 0, 0x080000) // EA HOCKEY +// ROM_COPY( "maincpu", 0x0a80000, 0, 0x080000) // DARK CASTLE +// ROM_COPY( "maincpu", 0x0b00000, 0, 0x080000) // CYBORG JUSTICE (CENSOR) +// ROM_COPY( "maincpu", 0x0b80000, 0, 0x080000) // LITTLE MERMAID +// ROM_COPY( "maincpu", 0x0c00000, 0, 0x080000) // DORAEMON +// ROM_COPY( "maincpu", 0x0c80000, 0, 0x080000) // SONIC +// ROM_COPY( "maincpu", 0x0d00000, 0, 0x080000) // WANI WANI WORLD +// ROM_COPY( "maincpu", 0x0d80000, 0, 0x080000) // GOLDEN AXE 2 +// etc. +ROM_END + +ROM_START(mdhh100) + ROM_REGION(0x8000000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "s29gl01gp11tfir1.u13", 0x0000, 0x8000000, CRC(564ab33a) SHA1(e455aaa9ed6f302d1ebe55b5202f983af612c415) ) +ROM_END + ROM_START( ra145 ) /* Data for the following games is corrupt (ranges approximate, based on areas of inconsistent readout) @@ -808,10 +877,23 @@ ROM_END void megadriv_b010xx_select_state::init_atgame40() { - m_romsize = 0x1000000; + m_romsize = memregion("maincpu")->bytes(); init_megadrie(); } +void megadriv_b010xx_select_state::init_dcat() +{ + m_romsize = memregion("maincpu")->bytes(); + init_megadriv(); +} + +void megadriv_b010xx_select_state::init_mdhh100() +{ + m_romsize = memregion("maincpu")->bytes(); + m_externalbank = 0x7800000; + init_megadriv(); +} + void megadriv_dgunl_state::init_dgunl3227() { uint8_t* rom = memregion("rom")->base(); @@ -892,7 +974,7 @@ void megadriv_dgunl_state::init_dgunl3227() void megadriv_ra145_state::init_ra145() { - m_romsize = 0x8000000; + m_romsize = memregion("maincpu")->bytes(); init_megadriv(); } @@ -973,6 +1055,19 @@ CONS( 2021, mypac, 0, 0, megadriv_radica_3button_ntsc, mympac, megad CONS( 2021, mympac, 0, 0, megadriv_radica_3button_ntsc, mympac, megadriv_b010xx_select_state, init_megadriv, "dreamGEAR", "My Arcade Ms. Pac-Man (DGUNL-7010, Pocket Player Pro)", MACHINE_NOT_WORKING | ROT270 ) +// menu uses unsupported extended mode +CONS( 2021, mygalag, 0, 0, megadriv_radica_3button_ntsc, mympac, megadriv_b010xx_select_state, init_megadriv, "dreamGEAR", "My Arcade Galaga (DGUNL-4195, Micro Player Pro)", MACHINE_NOT_WORKING | ROT270 ) +CONS( 2021, mygalaga, mygalag, 0, megadriv_radica_3button_ntsc, mympac, megadriv_b010xx_select_state, init_megadriv, "dreamGEAR", "My Arcade Galaga (DGUNL-4199, Pocket Player Pro)", MACHINE_NOT_WORKING | ROT270 ) + +CONS( 2021, mysinv, 0, 0, megadriv_radica_3button_ntsc, mympac, megadriv_b010xx_select_state, init_megadriv, "dreamGEAR", "My Arcade Space Invaders (DGUNL-7006, Pocket Player Pro)", MACHINE_NOT_WORKING | ROT90 ) + 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) + +// has an SD card slot? +CONS( 200?, dcat16, 0, 0, megadriv_radica_3button_ntsc, radica_3button, megadriv_b010xx_select_state, init_dcat, "Firecore", "D-CAT16 (Mega Drive handheld)", MACHINE_NOT_WORKING ) +// seems to be based on the AT games units, requires custom mode for menu? +CONS( 201?, mahg156, 0, 0, megadriv_radica_3button_ntsc, radica_3button, megadriv_b010xx_select_state, init_mdhh100, "", "Mini Arcade Handheld Game Console 2.8 Inch Screen Built in 156 Retro Games (Mega Drive handheld)", MACHINE_NOT_WORKING ) +// game-boy like handheld, pink in colour, 6 button controller (+ home select, start, vol buttons) +CONS( 201?, mdhh100, 0, 0, megadriv_radica_3button_ntsc, radica_3button, megadriv_b010xx_select_state, init_mdhh100, "", "unknown 100-in-1 handheld (Mega Drive based)", MACHINE_NOT_WORKING ) diff --git a/src/mame/tvgames/elan_eu3a05.cpp b/src/mame/tvgames/elan_eu3a05.cpp index 5b4d42d4042d1..f2a8ff25ac7d0 100644 --- a/src/mame/tvgames/elan_eu3a05.cpp +++ b/src/mame/tvgames/elan_eu3a05.cpp @@ -245,14 +245,7 @@ class elan_eu3a05_state : public driver_device { } void elan_eu3a05(machine_config &config); - void airblsjs(machine_config& config); - - void elan_sudoku(machine_config &config); - void elan_sudoku_pal(machine_config &config); - void elan_pvmilfin(machine_config &config); - - void init_sudelan(); - void init_sudelan3(); + void elan_eu3a05_pal(machine_config& config); protected: // driver_device overrides @@ -265,7 +258,6 @@ class elan_eu3a05_state : public driver_device required_device m_maincpu; required_device m_screen; -private: // screen updates uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -276,8 +268,6 @@ class elan_eu3a05_state : public driver_device void elan_eu3a05_bank_map(address_map &map) ATTR_COLD; void elan_eu3a05_map(address_map &map) ATTR_COLD; - void elan_sudoku_map(address_map &map) ATTR_COLD; - virtual void video_start() override ATTR_COLD; @@ -341,6 +331,25 @@ class elan_eu3a05_pvwwcas_state : public elan_eu3a05_state uint8_t m_prevport_c; }; +class elan_eu3a13_state : public elan_eu3a05_state +{ +public: + elan_eu3a13_state(const machine_config &mconfig, device_type type, const char *tag) + : elan_eu3a05_state(mconfig, type, tag) + {} + + void elan_eu3a13(machine_config &config); + void elan_eu3a13_pal(machine_config &config); + void elan_eu3a13_pvmil8(machine_config &config); + + void init_sudelan(); + void init_sudelan3(); + +private: + void elan_eu3a13_map(address_map &map) ATTR_COLD; +}; + + void elan_eu3a05_buzztime_state::machine_start() { elan_eu3a05_state::machine_start(); @@ -453,8 +462,8 @@ void elan_eu3a05_state::elan_eu3a05_map(address_map &map) //map(0xfffe, 0xffff).r(m_sys, FUNC(elan_eu3a05commonsys_device::irq_vector_r)); // allow normal IRQ for brk } -// default e000 mapping is the same as eu3a14, other registers seem closer to eua05, probably a different chip type -void elan_eu3a05_state::elan_sudoku_map(address_map& map) +// default e000 mapping is the same as eu3a14, other registers seem closer to eua05 +void elan_eu3a13_state::elan_eu3a13_map(address_map& map) { elan_eu3a05_map(map); map(0xe000, 0xffff).rom().region("maincpu", 0x0000); @@ -640,6 +649,31 @@ static INPUT_PORTS_START( sudoku2p ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END +static INPUT_PORTS_START( rad_ftet ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 Pause") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Hold") + + PORT_START("IN1") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 Pause") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Hold") +INPUT_PORTS_END + static INPUT_PORTS_START( carlecfg ) PORT_START("IN0") PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -820,39 +854,40 @@ void elan_eu3a05_state::elan_eu3a05(machine_config &config) */ } -void elan_eu3a05_state::elan_sudoku(machine_config& config) +void elan_eu3a05_state::elan_eu3a05_pal(machine_config& config) { elan_eu3a05(config); - m_maincpu->set_addrmap(AS_PROGRAM, &elan_eu3a05_state::elan_sudoku_map); + m_screen->set_refresh_hz(50); + m_sys->set_pal(); // TODO: also set PAL clocks +} + + +void elan_eu3a13_state::elan_eu3a13(machine_config& config) +{ + elan_eu3a05(config); + m_maincpu->set_addrmap(AS_PROGRAM, &elan_eu3a13_state::elan_eu3a13_map); m_vid->set_is_sudoku(); m_vid->set_use_spritepages(); m_sys->set_alt_timer(); // for Carl Edwards' } -void elan_eu3a05_state::elan_sudoku_pal(machine_config& config) +void elan_eu3a13_state::elan_eu3a13_pal(machine_config& config) { - elan_sudoku(config); + elan_eu3a13(config); m_sys->set_pal(); // TODO: also set PAL clocks m_screen->set_refresh_hz(50); } -void elan_eu3a05_state::elan_pvmilfin(machine_config& config) +void elan_eu3a13_state::elan_eu3a13_pvmil8(machine_config& config) { elan_eu3a05(config); - m_maincpu->set_addrmap(AS_PROGRAM, &elan_eu3a05_state::elan_sudoku_map); + m_maincpu->set_addrmap(AS_PROGRAM, &elan_eu3a13_state::elan_eu3a13_map); m_vid->set_is_pvmilfin(); m_sys->set_alt_timer(); m_sys->set_pal(); // TODO: also set PAL clocks m_screen->set_refresh_hz(50); } -void elan_eu3a05_state::airblsjs(machine_config& config) -{ - elan_eu3a05(config); - m_screen->set_refresh_hz(50); - m_sys->set_pal(); // TODO: also set PAL clocks -} - uint8_t elan_eu3a05_pvwwcas_state::pvwwc_portc_r() { @@ -946,7 +981,13 @@ ROM_START( sudoku2p ) ROM_RELOAD(0x300000,0x100000) ROM_END - +ROM_START( rad_ftet ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "familytetris.u2", 0x00000, 0x100000, CRC(2b65a70d) SHA1(1c9a960ebb4c2c51177b8596c017a04bf816b020) ) + ROM_RELOAD(0x100000,0x100000) + ROM_RELOAD(0x200000,0x100000) + ROM_RELOAD(0x300000,0x100000) +ROM_END ROM_START( carlecfg ) ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 ) @@ -985,7 +1026,7 @@ ROM_START( pvwwcas ) ROM_RELOAD(0x200000, 0x200000) ROM_END -void elan_eu3a05_state::init_sudelan3() +void elan_eu3a13_state::init_sudelan3() { // skip infinite loop (why is this needed? does it think we've soft shutdown?) uint8_t* ROM = memregion("maincpu")->base(); @@ -994,7 +1035,7 @@ void elan_eu3a05_state::init_sudelan3() ROM[0x0fce] = 0xea; } -void elan_eu3a05_state::init_sudelan() +void elan_eu3a13_state::init_sudelan() { // avoid jump to infinite loop (why is this needed? does it think we've soft shutdown?) uint8_t* ROM = memregion("maincpu")->base(); @@ -1020,25 +1061,28 @@ CONS( 2004, rad_sinv, 0, 0, elan_eu3a05, rad_sinv, elan_eu3a05_state, empty_init CONS( 2004, rad_tetr, 0, 0, elan_eu3a05, rad_tetr, elan_eu3a05_state, empty_init, "Radica (licensed from Elorg / The Tetris Company)", "Tetris (Radica, Arcade Legends TV Game)", MACHINE_NOT_WORKING ) // "5 Tetris games in 1" // ROM contains the string "Credit:XiAn Hummer Software Studio(CHINA) Tel:86-29-84270600 Email:HummerSoft@126.com" PCB has datecode of "050423" (23rd April 2005) -CONS( 2005, airblsjs, 0, 0, airblsjs, airblsjs, elan_eu3a05_state, empty_init, "Advance Bright Ltd", "Air-Blaster Joystick (AB1500, PAL)", MACHINE_NOT_WORKING ) +CONS( 2005, airblsjs, 0, 0, elan_eu3a05_pal, airblsjs, elan_eu3a05_state, empty_init, "Advance Bright Ltd", "Air-Blaster Joystick (AB1500, PAL)", MACHINE_NOT_WORKING ) CONS( 2004, buzztime, 0, 0, elan_buzztime, sudoku, elan_eu3a05_buzztime_state, empty_init, "Cadaco", "Buzztime Home Trivia System", MACHINE_NOT_WORKING ) -// Below are probably not EU3A05 but use similar modes (possibly EU3A13?) +CONS( 2005, pvwwcas, 0, 0, pvwwcas, sudoku, elan_eu3a05_pvwwcas_state, init_pvwwcas, "Play Vision / Taikee / V-Tac", "Worldwide Casino Tour 12-in-1", MACHINE_NOT_WORKING ) + + +// Below seem to be EU3A13, as that was confirmed for the Family Tetris die. They're like EU3A05, but with a different memory map -CONS( 2006, sudelan3, 0, 0, elan_sudoku, sudoku, elan_eu3a05_state, init_sudelan3, "All in 1 Products Ltd / Senario", "Ultimate Sudoku TV Edition 3-in-1 (All in 1 / Senario)", MACHINE_NOT_WORKING ) +CONS( 2006, sudelan3, 0, 0, elan_eu3a13, sudoku, elan_eu3a13_state, init_sudelan3, "All in 1 Products Ltd / Senario", "Ultimate Sudoku TV Edition 3-in-1 (All in 1 / Senario)", MACHINE_NOT_WORKING ) // Senario also distributed this version in the US without the '3 in 1' text on the box, ROM has not been verified to match -CONS( 2005, sudelan, 0, 0, elan_sudoku_pal, sudoku, elan_eu3a05_state, init_sudelan, "All in 1 Products Ltd / Play Vision", "Carol Vorderman's Sudoku Plug & Play TV Game (All in 1 / Play Vision)", MACHINE_NOT_WORKING ) +CONS( 2005, sudelan, 0, 0, elan_eu3a13_pal, sudoku, elan_eu3a13_state, init_sudelan, "All in 1 Products Ltd / Play Vision", "Carol Vorderman's Sudoku Plug & Play TV Game (All in 1 / Play Vision)", MACHINE_NOT_WORKING ) + +CONS( 2005, sudoku2p, 0, 0, elan_eu3a13_pal, sudoku2p, elan_eu3a13_state, empty_init, "", "Sudoku TV Game (PAL, 2 players)", MACHINE_NOT_WORKING ) // a pair of yellow controllers with 'TV Sudoku Awesome Puzzles' on their label -CONS( 2005, sudoku2p, 0, 0, elan_sudoku_pal, sudoku2p, elan_eu3a05_state, empty_init, "", "Sudoku TV Game (PAL, 2 players)", MACHINE_NOT_WORKING ) // a pair of yellow controllers with 'TV Sudoku Awesome Puzzles' on their label +CONS( 2006, rad_ftet, 0, 0, elan_eu3a13, rad_ftet, elan_eu3a13_state, empty_init, "Radica", "Family Tetris", MACHINE_NOT_WORKING ) +// rad_ftet shows UK logo if set to PAL -CONS( 200?, carlecfg, 0, 0, elan_sudoku, carlecfg, elan_eu3a05_state, empty_init, "Excalibur Electronics", "Carl Edwards' Chase For Glory", MACHINE_NOT_WORKING ) +CONS( 200?, carlecfg, 0, 0, elan_eu3a13, carlecfg, elan_eu3a13_state, empty_init, "Excalibur Electronics", "Carl Edwards' Chase For Glory", MACHINE_NOT_WORKING ) // this is in very similar packaging to the 'pvmil' game in tvgames/spg2xx_playvision.cpp, and the casing is identical // however this is from a year earlier, and there is a subtle difference in the otherwise identical text on the back of the box, mentioning that it uses an 8-bit processor, where the other box states 16-bit -CONS( 2005, pvmil8, 0, 0, elan_pvmilfin, sudoku, elan_eu3a05_state, empty_init, "Play Vision", "Who Wants to Be a Millionaire? (Play Vision, Plug and Play, UK, 8-bit version)", MACHINE_NOT_WORKING ) +CONS( 2005, pvmil8, 0, 0, elan_eu3a13_pvmil8, sudoku, elan_eu3a13_state, empty_init, "Play Vision", "Who Wants to Be a Millionaire? (Play Vision, Plug and Play, UK, 8-bit version)", MACHINE_NOT_WORKING ) // see https://millionaire.fandom.com/wiki/Haluatko_miljon%C3%A4%C3%A4riksi%3F_(Play_Vision_game) -CONS( 2005, pvmilfin, pvmil8, 0, elan_pvmilfin, sudoku, elan_eu3a05_state, empty_init, "Play Vision", u8"Haluatko miljonääriksi? (Finland)", MACHINE_NOT_WORKING ) - -CONS( 2005, pvwwcas, 0, 0, pvwwcas, sudoku, elan_eu3a05_pvwwcas_state, init_pvwwcas, "Play Vision / Taikee / V-Tac", "Worldwide Casino Tour 12-in-1", MACHINE_NOT_WORKING ) - +CONS( 2005, pvmilfin, pvmil8, 0, elan_eu3a13_pvmil8, sudoku, elan_eu3a13_state, empty_init, "Play Vision", u8"Haluatko miljonääriksi? (Finland)", MACHINE_NOT_WORKING ) diff --git a/src/mame/tvgames/elan_eu3a05commonsys.cpp b/src/mame/tvgames/elan_eu3a05commonsys.cpp index 9cc729fadd584..ce4346a286ada 100644 --- a/src/mame/tvgames/elan_eu3a05commonsys.cpp +++ b/src/mame/tvgames/elan_eu3a05commonsys.cpp @@ -353,17 +353,17 @@ void elan_eu3a05commonsys_device::elan_eu3a05_rombank_w(offs_t offset, uint8_t d { if (offset == 0x00) { - // written with the banking? //logerror("%s: elan_eu3a05_rombank_hi_w (set ROM bank) %02x\n", machine().describe_context(), data); m_rombank_hi = data; - - m_bank->set_bank(m_rombank_lo | (m_rombank_hi << 8)); } else { //logerror("%s: elan_eu3a05_rombank_lo_w (select ROM bank) %02x\n", machine().describe_context(), data); m_rombank_lo = data; } + + // rad_ftet writes only the low and expects bank to change + m_bank->set_bank(m_rombank_lo | (m_rombank_hi << 8)); } uint8_t elan_eu3a05commonsys_device::elan_eu3a05_rombank_r(offs_t offset) diff --git a/src/mame/tvgames/spg2xx.cpp b/src/mame/tvgames/spg2xx.cpp index 0c032986bca5e..8a8e69c6f25bd 100644 --- a/src/mame/tvgames/spg2xx.cpp +++ b/src/mame/tvgames/spg2xx.cpp @@ -558,10 +558,10 @@ static INPUT_PORTS_START( carled99 ) PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_NAME("Steer Right") PORT_MODIFY("P2") - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) // directional buttons, not a real joystick! - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) - PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) - PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Menu Select") PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Menu Back") PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("Accelerate") @@ -1191,6 +1191,50 @@ static INPUT_PORTS_START( pballpup ) PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END +static INPUT_PORTS_START( mpntball ) + PORT_START("GUNY") // not verified + PORT_BIT(0x0ff, 0x80, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 256.0f / 240.0f, 0.0, 0) PORT_MINMAX(0x000, 0x0ff) PORT_SENSITIVITY(40) PORT_KEYDELTA(10) PORT_PLAYER(1) + + PORT_START("GUNX") // not verified + PORT_BIT(0x1ff, 0x100, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 512.0f / 320.0f, -0.06f, 0) PORT_MINMAX(0x000, 0x1ff) PORT_SENSITIVITY(40) PORT_KEYDELTA(10) PORT_PLAYER(1) + + PORT_START("P1") + PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("P2") + PORT_BIT( 0x000f, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Reload") // beeps if you hold on startup + PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Pause") + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Trigger") + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Hide") + PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("P3") + PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED ) +INPUT_PORTS_END + +static INPUT_PORTS_START( mpntbalt ) + PORT_START("GUNY") // not verified + PORT_BIT(0x0ff, 0x80, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 256.0f / 240.0f, 0.0, 0) PORT_MINMAX(0x000, 0x0ff) PORT_SENSITIVITY(40) PORT_KEYDELTA(10) PORT_PLAYER(1) + + PORT_START("GUNX") // not verified + PORT_BIT(0x1ff, 0x100, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 512.0f / 320.0f, -0.06f, 0) PORT_MINMAX(0x000, 0x1ff) PORT_SENSITIVITY(40) PORT_KEYDELTA(10) PORT_PLAYER(1) + + PORT_START("P1") + PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("P2") + PORT_BIT( 0x000f, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Menu") + PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Trigger") + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Hide") + PORT_BIT( 0xff80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("P3") + PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED ) +INPUT_PORTS_END + + static INPUT_PORTS_START( swclone ) PORT_START("GUNY") PORT_BIT(0x0ff, 0x80, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0f, 0.0, 0) PORT_MINMAX(0x000, 0x0ff) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1) @@ -1977,14 +2021,21 @@ uint16_t spg2xx_game_pballpup_state::porta_r() void spg2xx_game_pballpup_state::porta_w(offs_t offset, uint16_t data, uint16_t mem_mask) { logerror("%s: spg2xx_game_pballpup_state::porta_w (%04x)\n", machine().describe_context(), data); - m_eeprom->di_write(BIT(data, 2)); - m_eeprom->cs_write(BIT(data, 0) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->clk_write(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE); + + porta_nobank_w(offset, data, mem_mask); // this can actually change bank from running code, because the code part in each bank is almost identical, just the data changes switch_bank((data & 0x1000) ? 1 : 0); } +void spg2xx_game_pballpup_state::porta_nobank_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + logerror("%s: spg2xx_game_pballpup_state::porta_nobank_w (%04x)\n", machine().describe_context(), data); + m_eeprom->di_write(BIT(data, 2)); + m_eeprom->cs_write(BIT(data, 0) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE); +} + void spg2xx_game_pballpup_state::pballpup(machine_config &config) { @@ -2007,6 +2058,27 @@ void spg2xx_game_pballpup_state::pballpup(machine_config &config) EEPROM_93C66_16BIT(config, m_eeprom); // type? } +TIMER_DEVICE_CALLBACK_MEMBER(spg2xx_game_pballpup_state::gun_irq) +{ + m_maincpu->extint_w(0, 1); +} + + +void spg2xx_game_pballpup_state::mpntball(machine_config &config) +{ + pballpup(config); + m_maincpu->porta_out().set(FUNC(spg2xx_game_pballpup_state::porta_nobank_w)); + + // the gun can track (even without the screen flash) so this must be tied to movement, or periodic + TIMER(config, "guntimer").configure_periodic(FUNC(spg2xx_game_pballpup_state::gun_irq), attotime::from_hz(1000)); +} + +void spg2xx_game_pballpup_state::mpntbalt(machine_config &config) +{ + mpntball(config); + m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_pballpup_state::mem_map_2m); +} + uint16_t spg2xx_game_swclone_state::porta_r() { uint16_t ret = m_io_p1->read() & 0xfffe; @@ -2069,8 +2141,6 @@ void spg2xx_game_dreamlss_state::porta_w(offs_t offset, uint16_t data, uint16_t switch_bank((data & 0x1000) ? 1 : 0); } - -// TODO: how does the SEEPROM hook up? (will need hack removing in init_dreamlss ) uint16_t spg2xx_game_dreamlss_state::portb_r() { uint16_t ret = m_portb_data & 0xfffe; @@ -2895,6 +2965,22 @@ ROM_START( whacmole ) ROM_LOAD16_WORD_SWAP( "whacamole.u1a", 0x000000, 0x400000, CRC(5841ba80) SHA1(b3ec922e1899a1f2e34069a50e36721e925afb9f) ) ROM_END +ROM_START( mpntbalt ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "paintball.u1", 0x000000, 0x400000, CRC(888e140e) SHA1(2406cfe7d9e40f112b6f161aba4886472524157e) ) + + //ROM_REGION16_BE( 0x200, "eeprom", ROMREGION_ERASE00 ) // dumped, but just contains user profiles / settings + //ROM_LOAD16_WORD_SWAP( "93c66.u2", 0x000, 0x200, CRC(3b5cf033) SHA1(5ac730141d2f44da6a18ab1ccb540543bace7553) ) +ROM_END + +ROM_START( mpntball ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "missionpaintball.u1", 0x000000, 0x800000, CRC(3962731a) SHA1(f33e69c681fb69204cf04174f725ebae30da6a43) ) + + //ROM_REGION16_BE( 0x200, "eeprom", ROMREGION_ERASE00 ) // dumped, but just contains user profiles / settings + //ROM_LOAD16_WORD_SWAP( "93c66.u4", 0x000, 0x200, CRC(cb6b9c9f) SHA1(78f485ee9a1f724428d08e4e2e152e95485777bb) ) +ROM_END + ROM_START( backybbs ) ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD16_WORD_SWAP( "backyardbs.bin", 0x000000, 0x400000, CRC(9c378f27) SHA1(ca0c212482d0743db10046f550fee511a13e1ddb) ) @@ -3096,6 +3182,10 @@ CONS( 2005, tmntmutm, 0, 0, tmntmutm, tmntmutm, spg2xx_game_tmntmutm_ CONS( 2006, pballpup, 0, 0, pballpup, pballpup, spg2xx_game_pballpup_state, empty_init, "Hasbro / Tiger Electronics", "Mission: Paintball Powered Up", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +CONS( 2005, mpntbalt, 0, 0, mpntbalt, mpntbalt, spg2xx_game_pballpup_state, empty_init, "Hasbro / Tiger Electronics", "Mission: Paintball Trainer", MACHINE_IMPERFECT_SOUND ) + +CONS( 2004, mpntball, 0, 0, mpntball, mpntball, spg2xx_game_pballpup_state, empty_init, "Hasbro / Tiger Electronics", "Mission: Paintball", MACHINE_IMPERFECT_SOUND ) + CONS( 2007, dreamlss, 0, 0, dreamlss, dreamlss, spg2xx_game_dreamlss_state, empty_init, "Hasbro / Tiger Electronics", "Dream Life Superstar (Version 0.3, Mar 16 2007)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // Needs a hack to not show garbage sprite on startup diff --git a/src/mame/tvgames/spg2xx.h b/src/mame/tvgames/spg2xx.h index ba05d0fa3a1d9..191392c39c6a5 100644 --- a/src/mame/tvgames/spg2xx.h +++ b/src/mame/tvgames/spg2xx.h @@ -11,6 +11,7 @@ #include "machine/eepromser.h" #include "machine/i2cmem.h" #include "machine/spg2xx.h" +#include "machine/timer.h" #include "screen.h" #include "softlist.h" @@ -104,10 +105,14 @@ class spg2xx_game_pballpup_state : public spg2xx_game_state { } void pballpup(machine_config &config); + void mpntbalt(machine_config &config); + void mpntball(machine_config &config); private: uint16_t porta_r(); virtual void porta_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0) override; + void porta_nobank_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + TIMER_DEVICE_CALLBACK_MEMBER(gun_irq); required_device m_eeprom; }; diff --git a/src/mame/tvgames/spg2xx_jakks_gkr.cpp b/src/mame/tvgames/spg2xx_jakks_gkr.cpp index 0a0e1f002844e..0ff7bbbb8b25a 100644 --- a/src/mame/tvgames/spg2xx_jakks_gkr.cpp +++ b/src/mame/tvgames/spg2xx_jakks_gkr.cpp @@ -353,7 +353,7 @@ static INPUT_PORTS_START( jak_sdoo_i2c ) // GameKeyReady units had 2 main button PORT_BIT( 0x001f, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("P3") - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(jakks_gkr_state::i2c_gkr_r)) // is this correct? doesn't seem to work + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(jakks_gkr_state::i2c_gkr_r)) PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) @@ -702,7 +702,7 @@ CONS( 2005, jak_dora, 0, 0, jakks_gkr_nk, jak_gkr, jakks_gkr_st CONS( 2005, jak_dorr, 0, 0, jakks_gkr_nk_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Handheld Games", "Dora the Explorer - Race to Play Park (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses NK keys (same as Nicktoons & Spongebob) (3 released) - The upper part of this one is blue CONS( 2004, jak_nick, 0, 0, jakks_gkr_nk_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Handheld Games", "Nicktoons (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses NK keys CONS( 2005, jak_sbfc, 0, 0, jakks_gkr_nk_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "SpongeBob SquarePants - The Fry Cook Games (JAKKS Pacific TV Game, Game-Key Ready) (AUG 18 2005 21:31:56)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses NK keys -CONS( 2005, jak_sdoo, 0, 0, jakks_gkr_2m_i2c, jak_sdoo_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Jolliford Management", "Scooby-Doo! and the Mystery of the Castle (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // SD (no game-keys released) (was dumped from a later unit with GameKey port missing, but internal PCB still supported it, code likely the same) +CONS( 2005, jak_sdoo, 0, 0, jakks_gkr_2m_i2c, jak_sdoo_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Jolliford Management", "Scooby-Doo! and the Mystery of the Castle (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // SD (no game-keys released) (was dumped from a later unit with GameKey port missing, but internal PCB still supported it, code likely the same) CONS( 2005, jak_disn, 0, 0, jakks_gkr_dy, jak_gkr, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "Disney (JAKKS Pacific TV Game, Game-Key Ready) (08 FEB 2005 A)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses DY keys (3 released) CONS( 2005, jak_disf, 0, 0, jakks_gkr_dy_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "Disney Friends (JAKKS Pacific TV Game, Game-Key Ready) (17 MAY 2005 A)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses DY keys (3 released) CONS( 2005, jak_dpr, 0, 0, jakks_gkr_dp_i2c, jak_dpr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / 5000ft, Inc", "Disney Princess (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses DP keys (1 key released) diff --git a/src/mame/tvgames/trkfldch.cpp b/src/mame/tvgames/trkfldch.cpp index 054917627c208..1d9cb2485ef38 100644 --- a/src/mame/tvgames/trkfldch.cpp +++ b/src/mame/tvgames/trkfldch.cpp @@ -1622,6 +1622,12 @@ ROM_START( trkfldch ) ROM_LOAD( "trackandfield.bin", 0x000000, 0x400000, CRC(f4f1959d) SHA1(344dbfe8df1897adf77da6e5ca0435c4d47d6842) ) ROM_END +ROM_START( trkfldchj ) + ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "trackandfieldjap.u2", 0x000000, 0x400000, CRC(2badbbae) SHA1(8102a6166bda3de2b13a984c391ad05e15fbf7ce) ) +ROM_END + + ROM_START( my1stddr ) ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "myfirstddr.bin", 0x000000, 0x400000, CRC(2ef57bfc) SHA1(9feea5adb9de8fe17e915f3a037e8ddd70e58ae7) ) @@ -1737,14 +1743,20 @@ The following were also available (via the Download service?) CONS( 2007, trkfldch, 0, 0, trkfldch, trkfldch,trkfldch_state, empty_init, "Konami", "Track & Field Challenge", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// 走れ!とべ!投げろ! ハイパースポーツチャレンジ +CONS( 2007, trkfldchj, trkfldch, 0, trkfldch, trkfldch,trkfldch_state, empty_init, "Konami", "Hashire! Tobe! Nagero! Hyper Sports Challenge (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) + CONS( 2006, my1stddr, 0, 0, trkfldch, my1stddr,trkfldch_state, empty_init, "Konami", "My First Dance Dance Revolution (US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Japan version has different songs + CONS( 200?, abl4play, 0, 0, trkfldch, abl4play,trkfldch_state, empty_init, "Advance Bright Ltd", "4 Player System - 10 in 1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) + CONS( 200?, shtscore, 0, 0, trkfldch, shtscore,trkfldch_state, empty_init, "Halsall / time4toys.com / Electronic Games", "Shoot n' Score", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) + CONS( 200?, lexitvsprt,0, 0, trkfldch, lexi, trkfldch_lexi_state, empty_init, "Lexibook", "TV Sports Plug & Play 5-in-1 (JG7000)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) + // don't have a picture of the box, title screen doesn't give a more complete title, I/O seems closer lexitvsprt CONS( 2007, senspid, 0, 0, trkfldch, trkfldch,trkfldch_state, empty_init, "Senario", "The Amazing Spider-Man (Senario, floor mat)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) - // additional online content could be downloaded onto these if they were connected to a PC via USB CONS( 2008, teleshi, 0, 0, trkfldch, konsb, trkfldch_state, empty_init, "Konami", "Teleshibai (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // テレしばい - this one is orange CONS( 2008, teleship, 0, 0, trkfldch, konsb, trkfldch_state, empty_init, "Konami", "Teleshibai - Purple Version (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // テレしばい (パープルバージョン) - this has Purple Version as part of the name on the box diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index 96c6cee49ad0e..893a96fc0ea17 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -43,14 +43,9 @@ Baseball Korean version /SONOKONG/Korea - - - - - - - 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 - - not dumped: xavix2.cpp 2008 究極! 筋肉スタジアム! サスケ完全制覇 Kyuukyoku! Kinniku Stadium! Sasuke Kanzen Seiha /EPOCH/Japan - - - - - - - - 2005 Let's!TVプレイ ドラゴンボ-ルZ バトル体感かめはめ波~ おめぇとフュージョン / バンダイ / 日本 Let's! TV Play Dragon Ball Z Battle Taikan Kamehameha~ Omee to Fusion / Bandai / Japan dumped: either here, xavix_2000.cpp, or xavix_2002.cpp スーパーテレビパソコンLink / エポック社 / 日本 Super TV PC Link / Epoch / Japan @@ -76,7 +71,8 @@ TV hockey /TOMY/Japan - - - - - - - Zuba-Zuba Blade /TAKARA/Japan - - - - - - - テレビで遊び隊 韋駄天翔 激走 韋駄天バトル / トミー / 日本 Playing with TV Idaten Sho Gekisou Idaten Battle / Tommy / Japan - Beyblade Ultimate shooter /TAKARA/Japan - - - - - - - + Beyblade Arcade Challenge 5-in-1 /Hasbro/USA - - - - - - have + Beyblade Ultimate shooter /TAKARA/Japan - - - - - - - 東京フレンドパーク2スペシャル / エポック社 / 日本 Tokyo Friend Park 2 Special / Epochsha / Japan Let's!TVプレイ ケロロ軍曹 ケロロ小隊大パニック!ドタバタ大決戦であります / バンダイ / 日本 Let's! TV Play Keroro Gunsou Keroro Shoutai Dai Panic! Dotabata Daikessen de Arimasu / Bandai / Japan スーパーテレビパソコン別売カートリッジ ペットケータイLink / エポック社 / 日本 Super TV PC Optional Cartridge - Pet Keitai Link / Epochsha / Japan @@ -199,7 +195,8 @@ 2006 Let's!TVプレイ NARUTO-ナルト- 忍者体感~だってばよ~ / バンダイ / 日本 Let's!TV Play NARUTO Ninja Experience ~Dattebayo~ / Bandai / Japan 2006 テレビであそぼう!まなぼう!超能力あいうえお図鑑 / エポック社 / 日本 Let's play on TV! Learn! Superpower Aiueo Illustrated Book / Epochsha / Japan 2006 Let's!TVプレイ ドラゴンボールZ バトル体感かめはめ波2~オッスおめぇ悟空 天下一武道会~ / バンダイ / 日本 Let's!TV Play Dragon Ball Z Battle Experience Kamehameha 2 ~Ossu Ome Goku Tenkaichi Budokai~ / Bandai / Japan - 2006 ドラえもん 体感タケコプター! 空とぶ大冒険 / エポック社 / 日本 Doraemon Experience Take-copter! Sora Tobu Daibouken / Epoch Publishing / Japan + 2005 Let's!TVプレイ ドラゴンボ-ルZ バトル体感かめはめ波~ おめぇとフュージョン / バンダイ / 日本 Let's! TV Play Dragon Ball Z Battle Taikan Kamehameha~ Omee to Fusion / Bandai / Japan + 2006 ドラえもん 体感タケコプター! 空とぶ大冒険 / エポック社 / 日本 Doraemon Experience Take-copter! Sora Tobu Daibouken / Epoch Publishing / Japan @@ -2794,6 +2791,11 @@ ROM_START( tak_beyb ) ROM_LOAD( "beyblade.u2", 0x000000, 0x200000, CRC(bcf6b3a7) SHA1(1c80f1241138b9d7816f1e5285ff8f3c61739c95) ) ROM_END +ROM_START( tak_beyu ) + ROM_REGION( 0x200000, "bios", ROMREGION_ERASE00 ) + ROM_LOAD( "beybladeus.u2", 0x000000, 0x200000, CRC(f72eb949) SHA1(20ef0411610d490d07a0924ba111ddfadcbaf407) ) +ROM_END + ROM_START( hippofr ) ROM_REGION( 0x200000, "bios", ROMREGION_ERASE00 ) ROM_LOAD( "54-6447-010.u3", 0x000000, 0x200000, CRC(1fb15364) SHA1(ff2bb54f7d6ccd3c83e722599c6f2b213bf35df8) ) @@ -2974,8 +2976,10 @@ CONS( 2001, tak_gin, 0, 0, xavix_2mb, tak_gin, xavix_state, // ぽこぽこハンマーズ CONS( 2002, tak_hamr, 0, 0, xavix_i2c_24c02_4mb, tak_hamr, xavix_i2c_state, init_xavix, "Takara / SSD Company LTD", "Poko Poko Hammers (Japan)", MACHINE_IMPERFECT_SOUND ) +CONS( 2003, tak_beyu, 0, 0, xavix_2mb, xavix, xavix_state, init_xavix, "Takara / Hasbro / SSD Company LTD", "Beyblade Arcade Challenge 5-in-1 (US)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + //ベイブレード アルティメットシューター -CONS( 2002, tak_beyb, 0, 0, xavix_2mb, xavix, xavix_state, init_xavix, "Takara / SSD Company LTD", "Beyblade Ultimate Shooter (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +CONS( 2002, tak_beyb, tak_beyu, 0, xavix_2mb, xavix, xavix_state, init_xavix, "Takara / SSD Company LTD", "Beyblade Ultimate Shooter (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // was also distributed by Atlus as an arcade cabinet in 2005, ROM almost certainly different (this one will auto-power off after inactivity, an arcade wouldn't do that) // ジャラジャランド diff --git a/src/mame/tvgames/xavix.h b/src/mame/tvgames/xavix.h index b2fef325b6e46..e98cb00189977 100644 --- a/src/mame/tvgames/xavix.h +++ b/src/mame/tvgames/xavix.h @@ -679,6 +679,14 @@ class superxavix_state : public xavix_state bool m_allow_superxavix_extra_rom_sprites; // config does not need saving + uint8_t superxavix_read_extended_io0(offs_t offset, uint8_t mem_mask) { logerror("%s: superxavix_read_extended_io0 (mask %02x)\n", machine().describe_context(), mem_mask); return m_exio[0]->read(); } + uint8_t superxavix_read_extended_io1(offs_t offset, uint8_t mem_mask) { logerror("%s: superxavix_read_extended_io1 (mask %02x)\n", machine().describe_context(), mem_mask); return m_exio[1]->read(); } + uint8_t superxavix_read_extended_io2(offs_t offset, uint8_t mem_mask) { logerror("%s: superxavix_read_extended_io2 (mask %02x)\n", machine().describe_context(), mem_mask); return m_exio[2]->read(); } + + void superxavix_write_extended_io0(offs_t offset, uint8_t data, uint8_t mem_mask) { logerror("%s: superxavix_write_extended_io0 %02x (mask %02x)\n", machine().describe_context(), data, mem_mask); } + void superxavix_write_extended_io1(offs_t offset, uint8_t data, uint8_t mem_mask) { logerror("%s: superxavix_write_extended_io1 %02x (mask %02x)\n", machine().describe_context(), data, mem_mask); } + void superxavix_write_extended_io2(offs_t offset, uint8_t data, uint8_t mem_mask) { logerror("%s: superxavix_write_extended_io2 %02x (mask %02x)\n", machine().describe_context(), data, mem_mask); } + private: void ext_segment_regs_w(offs_t offset, uint8_t data); void superxavix_plt_flush_w(uint8_t data); @@ -725,14 +733,6 @@ class superxavix_state : public xavix_state void extended_extbus_reg1_w(uint8_t data); void extended_extbus_reg2_w(uint8_t data); - uint8_t superxavix_read_extended_io0(offs_t offset, uint8_t mem_mask) { logerror("%s: superxavix_read_extended_io0 (mask %02x)\n", machine().describe_context(), mem_mask); return m_exio[0]->read(); } - uint8_t superxavix_read_extended_io1(offs_t offset, uint8_t mem_mask) { logerror("%s: superxavix_read_extended_io1 (mask %02x)\n", machine().describe_context(), mem_mask); return m_exio[1]->read(); } - uint8_t superxavix_read_extended_io2(offs_t offset, uint8_t mem_mask) { logerror("%s: superxavix_read_extended_io2 (mask %02x)\n", machine().describe_context(), mem_mask); return m_exio[2]->read(); } - - void superxavix_write_extended_io0(offs_t offset, uint8_t data, uint8_t mem_mask) { logerror("%s: superxavix_write_extended_io0 %02x (mask %02x)\n", machine().describe_context(), data, mem_mask); } - void superxavix_write_extended_io1(offs_t offset, uint8_t data, uint8_t mem_mask) { logerror("%s: superxavix_write_extended_io1 %02x (mask %02x)\n", machine().describe_context(), data, mem_mask); } - void superxavix_write_extended_io2(offs_t offset, uint8_t data, uint8_t mem_mask) { logerror("%s: superxavix_write_extended_io2 %02x (mask %02x)\n", machine().describe_context(), data, mem_mask); } - void draw_bitmap_layer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint8_t get_next_bit_sx(); @@ -862,16 +862,7 @@ class xavix_i2c_lotr_state : public xavix_i2c_state //virtual void write_io1(uint8_t data, uint8_t direction) override; }; -class xavix_duelmast_state : public xavix_i2c_state -{ -public: - xavix_duelmast_state(const machine_config &mconfig, device_type type, const char *tag) - : xavix_i2c_state(mconfig, type, tag) - { } -protected: - virtual uint8_t read_io1(uint8_t direction) override; -}; class xavix_i2c_tomshoot_state : public xavix_i2c_state { @@ -1161,6 +1152,23 @@ class xavix_i2c_cart_state : public xavix_cart_state required_device m_i2cmem; }; +class xavix_duelmast_state : public xavix_i2c_cart_state +{ +public: + xavix_duelmast_state(const machine_config &mconfig, device_type type, const char *tag) + : xavix_i2c_cart_state(mconfig, type, tag) + { + m_cartlimit = 0x800000; + } + + void duelmast(machine_config &config); + +protected: + virtual uint8_t read_io1(uint8_t direction) override; + + virtual void xavix_extbus_map(address_map &map) override ATTR_COLD; +}; + class xavix_popira2_cart_state : public xavix_cart_state { public: diff --git a/src/mame/tvgames/xavix2.cpp b/src/mame/tvgames/xavix2.cpp index efbc74aa31129..bb2496b1b1546 100644 --- a/src/mame/tvgames/xavix2.cpp +++ b/src/mame/tvgames/xavix2.cpp @@ -749,11 +749,26 @@ void domyos_state::config(machine_config& config) I2C_24C64(config, m_i2cmem); } -ROM_START( ltv_naru ) +ROM_START( ban_naru ) ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "naruto.bin", 0x000000, 0x800000, CRC(e3465ad2) SHA1(13e3d2de5d5a084635cab158f3639a1ea73265dc) ) ROM_END +ROM_START( ban_bldj ) + ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "bldj.u2", 0x000000, 0x800000, CRC(aa865fe3) SHA1(2f5f4809a07a2f5671f81aa22e379c11c43943a0) ) + + // 24c04 at u3 +ROM_END + + +ROM_START( ban_dbz ) + ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "dbz.u2a", 0x000000, 0x800000, CRC(7e535ea2) SHA1(6c746af763273bd9e47929c3ba857c7af563bf79) ) + + // also has a 24c02 at u3 +ROM_END + ROM_START( ban_db2j ) ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "db2j.u3", 0x000000, 0x800000, CRC(7362ac0d) SHA1(f1880470f0db56135d9bc88d7193d037ac49b996) ) @@ -766,6 +781,12 @@ ROM_START( epo_dabj ) ROM_LOAD( "dabj.u3", 0x000000, 0x800000, CRC(9ebc1384) SHA1(38abaebd05bc9ab300ee5fbf37bd88ce9cbd20e1) ) ROM_END +ROM_START( epo_dab2j ) + ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "dab2j.u4", 0x000000, 0x800000, CRC(e3d12ee6) SHA1(a2f930f4ffe778e02556b5e1a1836f88888e7c82) ) +ROM_END + + ROM_START( epo_dtcj ) ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "dtcj.u2", 0x000000, 0x800000, CRC(64c2aabb) SHA1(14f02eb01f1c6e76202f7a70818c300ba23fd879) ) @@ -780,6 +801,18 @@ ROM_START( epo_sskj ) // SEEPROM is a AT24C04 at u4 ROM_END +ROM_START( epo_ssk2 ) + ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "ssk2.u2", 0x000000, 0x800000, CRC(d5902e48) SHA1(010bc2417814ded24a474d9165f6b9523af7d1ef) ) + + // SEEPROM is a 24CS04 +ROM_END + +ROM_START( epo_pabj ) + ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "pabj.u3", 0x000000, 0x800000, CRC(ac46991c) SHA1(06c2b493824085502e96a7c1e46e9e89433e7301) ) +ROM_END + ROM_START( domfitad ) ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "xpfitnessadventure.bin", 0x000000, 0x1000000, CRC(a7917081) SHA1(95ae5dc6e64a78ae060cb0e61d8b0af34a93c4ce) ) @@ -793,26 +826,35 @@ ROM_END } // anonymous namespace // Let's!TVプレイ NARUTO-ナルト- 忍者体感~だってばよ~ / バンダイ / 日本 -CONS( 2006, ltv_naru, 0, 0, config, naruto, naruto_state, empty_init, "Bandai / SSD Company LTD", "Let's TV Play Naruto (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +CONS( 2006, ban_naru, 0, 0, config, naruto, naruto_state, empty_init, "Bandai / SSD Company LTD", "Let's! TV Play Naruto (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +// Let's!TVプレイ 影発動体感! ブルードラゴン -極めろ!ファイヤークライシス!- +CONS( 2006, ban_bldj, 0, 0, config, naruto, naruto_state, empty_init, "Bandai / SSD Company LTD", "Let's! TV Play Kage Hatsudou Taikan! Blue Dragon - Kiwamero! Fire Crisis! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +CONS( 2005, ban_dbz, 0, 0, config, naruto, naruto_state, empty_init, "Bandai / SSD Company LTD", "Let's TV Play Dragon Ball Z Battle Experience Kamehameha (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // Let's!TVプレイ ドラゴンボールZ バトル体感かめはめ波2~オッスおめぇ悟空 天下一武道会~ -CONS( 2006, ban_db2j, 0, 0, config, naruto, naruto_state, empty_init, "Bandai / SSD Company LTD", "Let's TV Play Dragon Ball Z Battle Experience Kamehameha 2 ~Ossu Ome Goku Tenkaichi Budokai~ (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +CONS( 2006, ban_db2j, 0, 0, config, naruto, naruto_state, empty_init, "Bandai / SSD Company LTD", "Let's! TV Play Dragon Ball Z Battle Experience Kamehameha 2 ~Ossu Ome Goku Tenkaichi Budokai~ (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // テレビであそぼう!まなぼう! 超脳力あいうえお図鑑 CONS( 2006, epo_dabj, 0, 0, config, dabj, xavix2_state, empty_init, "Epoch / SSD Company LTD", "TV de Asobou! Manabou! Chou Nouryoku AIUEO Zukan (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +// ドラえもん 太鼓あいうえお図鑑 +CONS( 200?, epo_dab2j, 0, 0, config, dabj, xavix2_state, empty_init, "Epoch / SSD Company LTD", "Doraemon Taiko AIUEO Zukan (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + // ドラえもん 体感タケコプター! 空とぶ大冒険 CONS( 2006, epo_dtcj, 0, 0, config, dabj, xavix2_state, empty_init, "Epoch / SSD Company LTD", "Doraemon Taikan Take-copter! Sora Tobu Daibouken (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // SASUKE サスケ&筋肉バトル!!スポーツマンNO.1決定戦 CONS( 2006, epo_sskj, 0, 0, config, dabj, xavix2_state, empty_init, "Epoch / SSD Company LTD", "Sasuke & Kinniku Battle!! Sportsman No. 1 Ketteisen (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +// 究極! 筋肉(マッスル)スタジアム! サスケ完全制覇 +CONS( 2008, epo_ssk2, 0, 0, config, dabj, xavix2_state, empty_init, "Epoch / SSD Company LTD", "Kyuukyoku! Muscle Stadium! Sasuke Kanzen Seiha (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +CONS( 2007, epo_pabj, 0, 0, config, dabj, xavix2_state, empty_init, "Epoch / SSD Company LTD", "TV de Asobou! Manabou! Pooh-san to Issho: ABC AIUEO Zukan (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + // These are for the 'Domyos Interactive System' other Domyos Interactive System games can be found in xavix.cpp (the SoC is inside the cartridge, base acts as a 'TV adapter' only) // Has SEEPROM and an RTC. Adventure has the string DOMYSSDCOLTD a couple of times. CONS( 2008, domfitad, 0, 0, config, domyos, domyos_state, empty_init, "Decathlon / SSD Company LTD", "Domyos Fitness Adventure (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) CONS( 2008, dombikec, 0, 0, config, domyos, domyos_state, empty_init, "Decathlon / SSD Company LTD", "Domyos Bike Concept (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - - - - diff --git a/src/mame/tvgames/xavix_2000.cpp b/src/mame/tvgames/xavix_2000.cpp index 48fb1ad82bf6c..f9cada79f5aa2 100644 --- a/src/mame/tvgames/xavix_2000.cpp +++ b/src/mame/tvgames/xavix_2000.cpp @@ -154,6 +154,8 @@ static INPUT_PORTS_START( duelmast ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_MODIFY("IN1") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(xavix_duelmast_state::unknown_random_r)) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(xavix_duelmast_state::unknown_random_r)) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("i2cmem", FUNC(i2cmem_device::read_sda)) INPUT_PORTS_END @@ -289,7 +291,21 @@ void xavix_i2c_state::xavix2000_i2c_24c02(machine_config &config) I2C_24C02(config, "i2cmem", 0); } +void xavix_duelmast_state::xavix_extbus_map(address_map &map) +{ + map(0x000000, 0x7fffff).rw(FUNC(xavix_duelmast_state::cart_r), FUNC(xavix_duelmast_state::cart_w)); + map(0x408000, 0x40ffff).ram(); // seems to expect RAM here (at least when cart is enabled) +} +void xavix_duelmast_state::duelmast(machine_config &config) +{ + xavix2000(config); + + I2C_24C04(config, "i2cmem", 0); + + EKARA_CART_SLOT(config, m_cartslot, 0, ekara_cart, nullptr); + SOFTWARE_LIST(config, "cart_list_duelmast").set_original("duelmast_cart"); +} ROM_START( epo_sdb ) @@ -370,8 +386,11 @@ ROM_START( ban_onep ) ROM_END ROM_START( duelmast ) - ROM_REGION(0x200000, "bios", ROMREGION_ERASE00) + ROM_REGION(0x800000, "bios", ROMREGION_ERASE00) ROM_LOAD("duelmasters.u4", 0x000000, 0x200000, CRC(2f11fcd7) SHA1(d8849c74833e77b8b309e845523f2cdc7ac68054) ) + ROM_RELOAD(0x200000,0x200000) + ROM_RELOAD(0x400000,0x200000) + ROM_RELOAD(0x600000,0x200000) ROM_END ROM_START( tom_dpgm ) @@ -411,9 +430,7 @@ CONS( 2006, epo_es2j, 0, 0, xavix2000_4mb, xavix, xavix_state, // takes a long time to boot to a card scanner error // This is a product in the Duel Masters line called Duel Station; the boot up screen calls it Duel Station, title logo is Duel Masters -// It also has a cartridge slot in addition to the card scanner and at least 1 ROM cartridge was produced "デュエルマスターズ デュエルステーション専用カートリッジ Ver.1" -// デュエルステーション -CONS( 2003, duelmast, 0, 0, xavix2000_i2c_24c04_2mb, duelmast, xavix_duelmast_state, init_xavix, "Takara / SSD Company LTD", "Duel Masters: Duel Station (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +CONS( 2003, duelmast, 0, 0, duelmast, duelmast, xavix_duelmast_state, init_xavix, "Takara / SSD Company LTD", "Duel Masters: Duel Station (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // スーパーダッシュボール CONS( 2004, epo_sdb, 0, 0, xavix2000_nv_sdb, epo_sdb, xavix_2000_nv_sdb_state, init_xavix, "Epoch / SSD Company LTD", "Super Dash Ball (Japan)", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/tvgames/xavix_2002.cpp b/src/mame/tvgames/xavix_2002.cpp index 86aa6058e845d..70ef7676f1744 100644 --- a/src/mame/tvgames/xavix_2002.cpp +++ b/src/mame/tvgames/xavix_2002.cpp @@ -660,6 +660,41 @@ void superxavix_i2c_state::superxavix_i2c_mrangbat(machine_config &config) m_xavix2002io->read_2_callback().set_ioport("EX2"); } +// TODO, this hookup doesn't work, is this really the SEEPROM or the RTC? +uint8_t superxavix_i2c_ndpmj_state::read_extended_io1(offs_t offset, uint8_t mem_mask) +{ + logerror("%s: read_extended_io1 (SEEPROM?) mask %02x\n", machine().describe_context(), mem_mask); + uint8_t ret = 0x00; + + if (!(mem_mask & 0x80)) + ret |= m_i2cmem->read_sda() << 7; + + return ret; +} + +void superxavix_i2c_ndpmj_state::write_extended_io1(offs_t offset, uint8_t data, uint8_t mem_mask) +{ + logerror("%s: write_extended_io1 (SEEPROM?) mask %02x data %02x\n", machine().describe_context(), mem_mask, data); + + m_i2cmem->write_sda(BIT(data | ~mem_mask, 7)); + m_i2cmem->write_scl(BIT(data | ~mem_mask, 6)); +} + +void superxavix_i2c_ndpmj_state::superxavix_i2c_ndpmj(machine_config &config) +{ + superxavix_i2c_24c16(config); + + // S35390A at u6 + + m_xavix2002io->read_0_callback().set(FUNC(superxavix_i2c_ndpmj_state::superxavix_read_extended_io0)); + m_xavix2002io->write_0_callback().set(FUNC(superxavix_i2c_ndpmj_state::superxavix_write_extended_io0)); + m_xavix2002io->read_1_callback().set(FUNC(superxavix_i2c_ndpmj_state::read_extended_io1)); + m_xavix2002io->write_1_callback().set(FUNC(superxavix_i2c_ndpmj_state::write_extended_io1)); + m_xavix2002io->read_2_callback().set(FUNC(superxavix_i2c_ndpmj_state::superxavix_read_extended_io2)); + m_xavix2002io->write_2_callback().set(FUNC(superxavix_i2c_ndpmj_state::superxavix_write_extended_io2)); +} + + // XaviXPORT ROM_START( xavtenni ) @@ -864,6 +899,12 @@ ROM_START( ban_gkrj ) ROM_LOAD("gkrj.u2", 0x000000, 0x400000, CRC(d9ffe41a) SHA1(18583e1b5d9eb89e0364bd84b14f89bbe9640b19) ) ROM_END +ROM_START( ban_pr2j ) + ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00) + ROM_LOAD("pr2j.u2", 0x000000, 0x800000, CRC(e46bf811) SHA1(4b88a7a7001e99be526e889d0b81a43be0b1e464) ) +ROM_END + + ROM_START( ban_bkgj ) ROM_REGION( 0x400000, "bios", ROMREGION_ERASE00) ROM_LOAD("bkgj.u2", 0x000000, 0x400000, CRC(a59ce23c) SHA1(d2a6be9e46f3cfc3cf798bf1f76732eee909c93b) ) @@ -942,6 +983,14 @@ ROM_START( ndpbj ) ROM_LOAD("s-24cs08a.u6", 0x000, 0x400, CRC(a22db408) SHA1(f8d925c75054a961930af12869e3002bb9c4600b) ) ROM_END +ROM_START( ndpmj ) + ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00) + ROM_LOAD("ndpmj.u3", 0x000000, 0x800000, CRC(a8132d93) SHA1(2bcbf497e3fa7c7f44569f337cb8babff80c9338) ) + + ROM_REGION( 0x800, "i2cmem", ROMREGION_ERASE00) + ROM_LOAD("s-24cs16a.u5", 0x000, 0x800, CRC(5d2dd322) SHA1(c0af08a382c4dbefe290fef34cfd8345e904bd74) ) +ROM_END + void superxavix_super_tv_pc_state::init_stvpc() { @@ -1037,11 +1086,14 @@ CONS( 2006, ban_utmj, 0, 0, superxavix_i2c_24c02, xavix_i2c, superxavix_i2c_ CONS( 2006, ban_ult, 0, 0, superxavix_i2c_24c02, ban_ult, superxavix_i2c_bowl_state, init_no_timer, "Bandai / SSD Company LTD", "Let's! TV Play Narikiri Fight Ultraman - Ute! Hissatsu Kousen!! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // Let's!TVプレイ 体感大怪獣バトル あやつれ!ウルトラ大怪獣! -CONS( 2007, ban_um2j, 0, 0, superxavix_i2c_24c04, ban_gkr, superxavix_i2c_state, init_no_timer, "Bandai / SSD Company LTD", "Let's! TV Play Taikan Daikaijuu Battle: Ayatsure! Ultra Daikaijuu! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +CONS( 2007, ban_um2j, 0, 0, superxavix_i2c_24c04, ban_gkr, superxavix_i2c_bowl_state, init_no_timer, "Bandai / SSD Company LTD", "Let's! TV Play Taikan Daikaijuu Battle: Ayatsure! Ultra Daikaijuu! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // Let’s!TVプレイ ゲキワザ習得 ゲキレンジャー スーパーゲキレンジャーへの道 CONS( 2007, ban_gkrj, 0, 0, superxavix_i2c_24c02_4mb, ban_gkr, superxavix_i2c_bowl_state, init_no_timer, "Bandai / SSD Company LTD", "Let's! TV Play Gekiwaza Shuutoku Gekiranger - Super Gekiranger-e no Michi (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +// Yes!プリキュア5 いっしょに変身!メタモルフォーゼ! +CONS( 2007, ban_pr2j, 0, 0, superxavix_i2c_24c04, ban_gkr, superxavix_i2c_bowl_state, init_no_timer, "Bandai / SSD Company LTD", "Yes! Precure 5: Issho to Henshin! Metamorphose! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + // それいけトーマス ソドー島のなかまたち CONS( 2005, tmy_thom, 0, 0, superxavix_i2c_24c04, xavix_i2c, superxavix_i2c_state, init_xavix, "Tomy / SSD Company LTD", "Soreike Thomas - Sodor Tou no Nakamatachi / Thomas & Friends on the Island of Sodor (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) @@ -1081,3 +1133,6 @@ CONS( 2007, doradraw, 0, 0, superxavix_doradraw, xavix, superxavix_dora // どんトレだ兵衛~どん兵衛くんとトレーニング // doesn't boot, has a camera with a large number of connections going to it, probably wants comms to work with it? CONS( 2007, ndpbj, 0, 0, superxavix_i2c_24c08, xavix_i2c, superxavix_i2c_state, init_xavix, "Nissin / SSD Company LTD", "Dontore da bei - Donbei-kun to Training (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +// どんトレだ兵衛2~おうちで、みんなでフィットネス!~ +CONS( 2008, ndpmj, 0, 0, superxavix_i2c_ndpmj, xavix, superxavix_i2c_ndpmj_state, init_xavix, "Nissin / SSD Company LTD", "Dontore da bei 2 - Ouchi de, Minna de Fitness! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/tvgames/xavix_2002.h b/src/mame/tvgames/xavix_2002.h index 7cab734b0659c..57c8e09c09295 100644 --- a/src/mame/tvgames/xavix_2002.h +++ b/src/mame/tvgames/xavix_2002.h @@ -31,6 +31,21 @@ class superxavix_i2c_jmat_state : public superxavix_i2c_state void write_extended_io2(offs_t offset, uint8_t data, uint8_t mem_mask); }; + +class superxavix_i2c_ndpmj_state : public superxavix_i2c_state +{ +public: + superxavix_i2c_ndpmj_state(const machine_config &mconfig, device_type type, const char *tag) + : superxavix_i2c_state(mconfig, type, tag) + { } + + void superxavix_i2c_ndpmj(machine_config &config); + +private: + uint8_t read_extended_io1(offs_t offset, uint8_t mem_mask); + void write_extended_io1(offs_t offset, uint8_t data, uint8_t mem_mask); +}; + class superxavix_super_tv_pc_state : public superxavix_state { public: From 9dbd27cc7b64e67481ef9975771db9c7ce42fcee Mon Sep 17 00:00:00 2001 From: David Haywood Date: Wed, 9 Jul 2025 16:37:44 +0100 Subject: [PATCH 2/2] title corrections --- src/mame/nintendo/nes_sh6578.cpp | 3 ++- src/mame/tvgames/xavix_2002.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mame/nintendo/nes_sh6578.cpp b/src/mame/nintendo/nes_sh6578.cpp index 939357cc3c75b..98fce144cbc6e 100644 --- a/src/mame/nintendo/nes_sh6578.cpp +++ b/src/mame/nintendo/nes_sh6578.cpp @@ -834,7 +834,8 @@ CONS( 1997, mousekid, 0, 0, nes_sh6578, bancook, nes_sh6578_state, init CONS( 2001, bancook, 0, 0, nes_sh6578, bancook, nes_sh6578_state, init_nes_sh6578, "Bandai", "Ojamajo Doremi no TV de Magical Cooking (Japan)", MACHINE_NOT_WORKING ) // there's no SEEPROM, it uses a CR2032 to keep some RAM data alive -CONS( 2001, soulbird, 0, 0, nes_sh6578, soulbird, nes_sh6578_state, init_nes_sh6578, "Bandai", "Hyakujuu Sentai Gaoranger: DX Soul Bird (Japan)", 0 ) +// 百獣戦隊ガオレンジャー ソウルバード アニマル救出大作戦 (aka DX Soul Bird) +CONS( 2001, soulbird, 0, 0, nes_sh6578, soulbird, nes_sh6578_state, init_nes_sh6578, "Bandai", "Hyakujuu Sentai Gaoranger Soul Bird: Animal Kyuushutsu Daisakusen (Japan)", 0 ) CONS( 200?, cpatrolm, 0, 0, nes_sh6578_pal, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "TimeTop", "City Patrolman", MACHINE_NOT_WORKING ) diff --git a/src/mame/tvgames/xavix_2002.cpp b/src/mame/tvgames/xavix_2002.cpp index 70ef7676f1744..5fb6b7d37fc1a 100644 --- a/src/mame/tvgames/xavix_2002.cpp +++ b/src/mame/tvgames/xavix_2002.cpp @@ -1089,7 +1089,7 @@ CONS( 2006, ban_ult, 0, 0, superxavix_i2c_24c02, ban_ult, superxavix_i2c_bow CONS( 2007, ban_um2j, 0, 0, superxavix_i2c_24c04, ban_gkr, superxavix_i2c_bowl_state, init_no_timer, "Bandai / SSD Company LTD", "Let's! TV Play Taikan Daikaijuu Battle: Ayatsure! Ultra Daikaijuu! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // Let’s!TVプレイ ゲキワザ習得 ゲキレンジャー スーパーゲキレンジャーへの道 -CONS( 2007, ban_gkrj, 0, 0, superxavix_i2c_24c02_4mb, ban_gkr, superxavix_i2c_bowl_state, init_no_timer, "Bandai / SSD Company LTD", "Let's! TV Play Gekiwaza Shuutoku Gekiranger - Super Gekiranger-e no Michi (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +CONS( 2007, ban_gkrj, 0, 0, superxavix_i2c_24c02_4mb, ban_gkr, superxavix_i2c_bowl_state, init_no_timer, "Bandai / SSD Company LTD", "Let's! TV Play Gekiwaza Shuutoku Gekiranger - Super Gekiranger e no Michi (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // Yes!プリキュア5 いっしょに変身!メタモルフォーゼ! CONS( 2007, ban_pr2j, 0, 0, superxavix_i2c_24c04, ban_gkr, superxavix_i2c_bowl_state, init_no_timer, "Bandai / SSD Company LTD", "Yes! Precure 5: Issho to Henshin! Metamorphose! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )