diff --git a/hash/nes_vt_cart.xml b/hash/nes_vt_cart.xml new file mode 100644 index 00000000000..0662a07eb91 --- /dev/null +++ b/hash/nes_vt_cart.xml @@ -0,0 +1,21 @@ + + + + + + + + + Color Screen Game World - 10 Types of Crazy Games / Wonders 163-in-1 + 200? + TimeTop + + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 68735a0f621..1a03406ef53 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -11648,6 +11648,9 @@ cswat // (c) 1984 @source:at/ct486.cpp ct486 // 1993? 486 with CS4031 +@source:skeleton/ct909e_segadvd.cpp +megatrix + @source:casio/ctk551.cpp ctk551 // @@ -33302,72 +33305,74 @@ vsmaxx15 dgun806 @source:nintendo/nes_vt02_vt03.cpp -vdogdeme -vdogdemo -pinkjelly -vtpinball -vtsndtest -vtboxing -ablpinb -sporzpp -sporzbx -sporztn -wldsoctv -mc_dgear -sudo6in1 -sudopptv -megapad ablmini -solargm -zudugo -timetp36 -timetp7 -majkon -majgnc -vsmaxx17 -polmega -vsmax25v +ablpinb +ablping +cbrs8 +dbdancem +ddrdismx +ddrstraw +dgun2500 +dgun2869 dgun851 dgun853 -silv35 -vsmaxxvd -vsmaxx77 +gprnrs1 +gprnrs16 joysti30 -techni4 -senwld -protpp -mc_sp69 -ablping +majgnc +majkon +mc_105te +mc_110cb +mc_138cb +mc_7x6ss +mc_89in1 +mc_8x6cb +mc_8x6ss +mc_9x6sa +mc_9x6ss +mc_aa2 +mc_dcat8 +mc_dcat8a +mc_dg101 +mc_dgear mc_sam60 -zdog +mc_sp69 +mc_tv200 +megapad +pinkjelly pjoyn50 pjoys30 pjoys60 -mc_110cb -mc_138cb -cbrs8 -rfcp168 -gprnrs1 -gprnrs16 -ddrdismx -ddrstraw -dbdancem -sen101 -mc_dg101 -mc_aa2 -mc_105te -mc_8x6cb -mc_9x6ss -mc_9x6sa -mc_7x6ss -mc_8x6ss -mc_dcat8 -mc_dcat8a -mc_89in1 -mc_tv200 -dgun2500 +polmega ppgc200g -dgun2869 +protpp +pumpactv +rfcp168 +sen101 +senwld +silv35 +solargm +sporzbx +sporzpp +sporztn +sudo6in1 +sudopptv +techni4 +timetp36 +timetp7 +vdogdeme +vdogdemo +vsmax25v +vsmaxx17 +vsmaxx77 +vsmaxxvd +vt25in1 +vtboxing +vtpinball +vtsndtest +wldsoctv +zdog +zudugo @source:nintendo/nes_vt09.cpp cybar120 @@ -33433,7 +33438,9 @@ mc_cb280 mc_hh210 mog_m320 myarccn +nubsupmf otrail +q5_500in1 rd5_240 red5mam retro400 @@ -33443,6 +33450,8 @@ sealvt sy888b sy889 tup240 +unk2019hh +unk2020hh unkra200 zonefusn diff --git a/src/mame/mess.flt b/src/mame/mess.flt index defa0c21e75..249f73535ba 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -797,6 +797,7 @@ skeleton/controlid.cpp skeleton/cortex.cpp skeleton/cosmicos.cpp skeleton/cp1.cpp +skeleton/ct909e_segadvd.cpp skeleton/cxhumax.cpp skeleton/d400.cpp skeleton/d6800.cpp diff --git a/src/mame/nintendo/nes_vt02_vt03.cpp b/src/mame/nintendo/nes_vt02_vt03.cpp index 3f230d07e8d..04fc724d9bf 100644 --- a/src/mame/nintendo/nes_vt02_vt03.cpp +++ b/src/mame/nintendo/nes_vt02_vt03.cpp @@ -1208,6 +1208,16 @@ ROM_START( majgnc ) ROM_LOAD( "majescogoldennuggetcasino_st29w800at_002000d7.bin", 0x00000, 0x100000, CRC(1a156a9d) SHA1(08be4079dd68c9cf05bb92e11a3da4f092d7cfea) ) ROM_END +ROM_START( vt25in1 ) + ROM_REGION( 0x100000, "mainrom", ROMREGION_ERASEFF ) + ROM_LOAD( "25in1.bin", 0x00000, 0x100000, CRC(1038b5ec) SHA1(e7d1ccafe0edcfa44c11412d2aa771f4ba96b5b8) ) +ROM_END + +ROM_START( pumpactv ) + ROM_REGION( 0x100000, "mainrom", ROMREGION_ERASEFF ) + ROM_LOAD( "pumpactive.bin", 0x00000, 0x100000, CRC(e3c07561) SHA1(2bfff426d72d481ba0647e9110f942d142a4625f) ) +ROM_END + ROM_START( zudugo ) ROM_REGION( 0x400000, "mainrom", ROMREGION_ERASEFF ) ROM_LOAD( "zudugo.bin", 0x00000, 0x400000, CRC(0fa9d9ad) SHA1(7533eaf51785d8fcced900ea0498281b0cf49dbf) ) @@ -1363,6 +1373,10 @@ CONS( 2004, majkon, 0, 0, nes_vt_1mb_majkon, nes_vt, nes_vt_state, empty_ini CONS( 200?, majgnc, 0, 0, nes_vt_1mb, majgnc, nes_vt_state, empty_init, "Majesco / JungleTac", "Golden Nugget Casino", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +CONS( 2004, vt25in1, 0, 0, nes_vt_1mb, nes_vt, nes_vt_state, empty_init, "", "unknown VT02 based 25-in-1 handheld", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +// might be a later VT type, 'pump' control is mapped on extra IO address that I don't think is present on 02/03 +CONS( 200?, pumpactv, 0, 0, nes_vt_1mb, nes_vt, nes_vt_state, empty_init, "Giggle", "TV Pump Active", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // CPU die is marked 'VH2009' There's also a 62256 RAM chip on the PCB, some scrambled opcodes CONS( 2004, vsmaxx17, 0, 0, nes_vt_vh2009_2mb, nes_vt, nes_vt_swap_op_d5_d6_state, empty_init, "Senario / JungleTac", "Vs Maxx 17-in-1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // from a Green unit, '17 Classic & Racing Game' diff --git a/src/mame/nintendo/nes_vt09.cpp b/src/mame/nintendo/nes_vt09.cpp index a0be3e78ee7..0cc7111e52c 100644 --- a/src/mame/nintendo/nes_vt09.cpp +++ b/src/mame/nintendo/nes_vt09.cpp @@ -20,6 +20,11 @@ #include "emu.h" #include "nes_vt09_soc.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" + +#include "softlist_dev.h" + class nes_vt09_common_base_state : public driver_device { public: @@ -105,6 +110,58 @@ public: private: }; +class nes_vt09_cart_state : public nes_vt09_state +{ +public: + nes_vt09_cart_state(const machine_config& mconfig, device_type type, const char* tag) : + nes_vt09_state(mconfig, type, tag), + m_bank(*this, "cartbank"), + m_cart(*this, "cartslot"), + m_cart_region(nullptr) + { } + + void nes_vt09_cart(machine_config& config); + +protected: + void machine_start() override; + +private: + void vt_external_space_map_cart(address_map& map); + + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load); + + required_memory_bank m_bank; + required_device m_cart; + memory_region *m_cart_region; +}; + +void nes_vt09_cart_state::machine_start() +{ + nes_vt09_state::machine_start(); + + m_bank->configure_entries(0, 1, memregion("mainrom")->base(), 0x200000); + m_bank->set_entry(0); + + // if there's a cart, override the standard banking + if (m_cart && m_cart->exists()) + { + m_cart_region = memregion(std::string(m_cart->tag()) + GENERIC_ROM_REGION_TAG); + m_bank->configure_entries(0, 1, m_cart_region->base(), 0x200000); + m_bank->set_entry(0); + } +} + +DEVICE_IMAGE_LOAD_MEMBER(nes_vt09_cart_state::cart_load) +{ + uint32_t size = m_cart->common_get_size("rom"); + + m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); + m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); + + return image_init_result::PASS; +} + + uint8_t nes_vt09_common_base_state::vt_rom_r(offs_t offset) { return m_prgrom[offset]; @@ -151,6 +208,12 @@ void nes_vt09_common_state::vt_external_space_map_512kbyte(address_map &map) map(0x0000000, 0x007ffff).mirror(0x1f80000).r(FUNC(nes_vt09_common_state::vt_rom_r)); } +void nes_vt09_cart_state::vt_external_space_map_cart(address_map &map) +{ + map(0x0000000, 0x01fffff).mirror(0x1e00000).bankr("cartbank"); +} + + template uint8_t nes_vt09_common_base_state::extrain_r() { if (m_exin[NUM]) @@ -296,7 +359,17 @@ void nes_vt09_state::nes_vt09_4mb_rasterhack(machine_config& config) m_soc->force_raster_timing_hack(); } +void nes_vt09_cart_state::nes_vt09_cart(machine_config& config) +{ + nes_vt09(config); + m_soc->set_addrmap(AS_PROGRAM, &nes_vt09_cart_state::vt_external_space_map_cart); + GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "nes_vt_cart"); + m_cart->set_width(GENERIC_ROM8_WIDTH); + m_cart->set_device_load(FUNC(nes_vt09_cart_state::cart_load)); + + SOFTWARE_LIST(config, "cart_list").set_original("nes_vt_cart"); +} static INPUT_PORTS_START( nes_vt09 ) PORT_START("IO0") @@ -505,4 +578,4 @@ CONS( 200?, jl2050, 0, 0, nes_vt09_16mb,nes_vt09, nes_vt09_state, empty_init, // 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( 200?, timetp25, 0, 0, nes_vt09_2mb, nes_vt09, nes_vt09_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 ) diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index 473e08996e9..5bec2f21c42 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -703,6 +703,27 @@ ROM_START( mc_hh210 ) ROM_LOAD( "msp55lv128t.u4", 0x00000, 0x1000000, CRC(9ba520d4) SHA1(627f811b24314197e289a2ade668ff4115421bed) ) ROM_END +ROM_START( q5_500in1 ) + ROM_REGION( 0x1000000, "mainrom", 0 ) + ROM_LOAD( "s29gl128.u1", 0x00000, 0x1000000, CRC(de779dd7) SHA1(ac6d3fa6f18ceb795532ba9e85edffc040d74347) ) +ROM_END + +ROM_START( nubsupmf ) + ROM_REGION( 0x400000, "mainrom", 0 ) + ROM_LOAD( "w25q32fv.bin", 0x00000, 0x400000, CRC(5ca234b2) SHA1(3eba3e690f68116fd3e5e914f8bd16b1dc2c0bc4) ) +ROM_END + +ROM_START( unk2019hh ) + ROM_REGION( 0x1000000, "mainrom", 0 ) + ROM_LOAD( "fgb2019.bin", 0x00000, 0x1000000, CRC(7ef130d5) SHA1(00f45974494707fdac78153b13d8cfb503716ad0) ) +ROM_END + +ROM_START( unk2020hh ) + ROM_REGION( 0x1000000, "mainrom", 0 ) + ROM_LOAD( "fgb2020.bin", 0x00000, 0x1000000, CRC(a685d943) SHA1(9b272daccd8fe244c910f031466a4fedd83d5236) ) +ROM_END + + ROM_START( dvnimbus ) ROM_REGION( 0x1000000, "mainrom", 0 ) ROM_LOAD( "2012-7-4-v1.bin", 0x00000, 0x1000000, CRC(a91d7aa6) SHA1(9421b70b281bb630752bc352c3715258044c0bbe) ) @@ -961,6 +982,16 @@ CONS( 200?, gcs2mgp, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknow // Several of the games contained in here are buggy / broken on real hardware (see https://www.youtube.com/watch?v=-mgGNaDQ1HE ) CONS( 201?, 240in1ar, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Thumbs Up", "Mini Arcade Machine (Thumbs Up, 240IN1ARC)", MACHINE_NOT_WORKING ) // 128Mbyte ROM, must be externally banked or different addressing scheme +// is one of these bad? where do they fit? the former boots, but banking is wrong (incorrect games selected, gfx corruption) the 2nd looks encrypted or bad +CONS( 2019, unk2019hh, 0, 0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "", "unknown VTxx based GameBoy style handheld (2019 PCB)", MACHINE_NOT_WORKING ) +CONS( 2020, unk2020hh, unk2019hh,0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "", "unknown VTxx based GameBoy style handheld (2020 PCB)", MACHINE_NOT_WORKING ) + +/***************************************************************************** +* below are VT369? games that use flash ROM +*****************************************************************************/ + +// portable fan + famiclone combo handheld +CONS( 2020, nubsupmf, 0, 0, nes_vt369_vtunknown_hh_4mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "", "NubSup Mini Game Fan", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) /***************************************************************************** * below are VT369 games that use BGA on sub @@ -973,6 +1004,9 @@ CONS( 201?, retro400, 0, 0, nes_vt369_vtunknown_hh_16mb, nes_vt369_vtun * below are VT369 games that use SQI / SPI ROM *****************************************************************************/ +// doesn't boot +CONS( 201?, q5_500in1, 0, 0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "", "Q5 500 in 1 Handheld", MACHINE_NOT_WORKING ) + // Runs well, minor GFX issues in intro CONS( 2017, sy889, 0, 0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "SY Corp", "SY-889 300 in 1 Handheld", MACHINE_IMPERFECT_GRAPHICS ) CONS( 2016, sy888b, 0, 0, nes_vt369_vtunknown_hh_4mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "SY Corp", "SY-888B 288 in 1 Handheld", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/skeleton/ct909e_segadvd.cpp b/src/mame/skeleton/ct909e_segadvd.cpp new file mode 100644 index 00000000000..3e477022075 --- /dev/null +++ b/src/mame/skeleton/ct909e_segadvd.cpp @@ -0,0 +1,91 @@ +// license:BSD-3-Clause +// copyright-holders:David Haywood + + +/***************************************************************************** + + Portable DVD Player with built in Sega Master System games + has AT Games strings in ROM + sold in Spain as MeGaTrix + + uses a Cheertek CT909E-LF System on a Chip ** unknown CPU core ** + +*****************************************************************************/ + + +#include "emu.h" + +#include "cpu/arm7/arm7.h" +#include "cpu/arm7/arm7core.h" + +#include "screen.h" +#include "speaker.h" + +class ct909e_megatrix_state : public driver_device +{ +public: + ct909e_megatrix_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_screen(*this, "screen") + { } + + void megatrix(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + + void arm_map(address_map &map); + + required_device m_maincpu; + required_device m_screen; + + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + +private: +}; + + +void ct909e_megatrix_state::arm_map(address_map &map) +{ + map(0x00000000, 0x003fffff).rom(); +} + +uint32_t ct909e_megatrix_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +void ct909e_megatrix_state::machine_start() +{ +} + +void ct909e_megatrix_state::machine_reset() +{ +} + +static INPUT_PORTS_START( megatrix ) +INPUT_PORTS_END + +void ct909e_megatrix_state::megatrix(machine_config &config) +{ + ARM9(config, m_maincpu, 100'000'000); // unknown core / frequency, maybe not ARM + m_maincpu->set_addrmap(AS_PROGRAM, &ct909e_megatrix_state::arm_map); + + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(320, 262); + m_screen->set_visarea(0, 320-1, 0, 240-1); + m_screen->set_screen_update(FUNC(ct909e_megatrix_state::screen_update)); + + SPEAKER(config, "lspeaker").front_left(); + SPEAKER(config, "rspeaker").front_right(); +} + +ROM_START( megatrix ) + ROM_REGION( 0x8400000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "segadvd_en29lv320b_007f22f9.bin", 0x000000, 0x400000, CRC(33fea2ff) SHA1(85295fd31a06149112295a9b6a8218a4a4c50893) ) +ROM_END + +CONS( 2007, megatrix, 0, 0, megatrix, megatrix, ct909e_megatrix_state, empty_init, "", "MeGaTrix (Spain)", MACHINE_IS_SKELETON )