diff options
Diffstat (limited to 'src/mame/drivers/nes_vt.cpp')
-rw-r--r-- | src/mame/drivers/nes_vt.cpp | 86 |
1 files changed, 80 insertions, 6 deletions
diff --git a/src/mame/drivers/nes_vt.cpp b/src/mame/drivers/nes_vt.cpp index c172b778d1a..7ab17fab4ea 100644 --- a/src/mame/drivers/nes_vt.cpp +++ b/src/mame/drivers/nes_vt.cpp @@ -90,6 +90,7 @@ public: m_exin2(*this, "EXTRAIN2"), m_exin3(*this, "EXTRAIN3"), m_prg(*this, "prg"), + m_initial_e000_bank(0xff), m_ntram(nullptr), m_chrram(nullptr), m_prgbank0(*this, "prg_bank0"), @@ -165,6 +166,10 @@ protected: void nes_vt_xx_map(address_map& map); + /* Misc */ + DECLARE_READ8_MEMBER(rs232flags_region_r); + + uint8_t m_initial_e000_bank; private: /* APU handling */ DECLARE_WRITE_LINE_MEMBER(apu_irq); @@ -177,8 +182,6 @@ private: DECLARE_WRITE8_MEMBER(extraout_01_w); DECLARE_WRITE8_MEMBER(extraout_23_w); - /* Misc */ - DECLARE_READ8_MEMBER(rs232flags_region_r); DECLARE_WRITE8_MEMBER(chr_w); @@ -212,7 +215,7 @@ private: int calculate_real_video_address(int addr, int extended, int readtype); - + required_memory_bank m_prgbank0; required_memory_bank m_prgbank1; required_memory_bank m_prgbank2; @@ -238,6 +241,22 @@ protected: private: }; +class nes_vt_ts_state : public nes_vt_state +{ +public: + nes_vt_ts_state(const machine_config& mconfig, device_type type, const char* tag) : + nes_vt_state(mconfig, type, tag) + { + m_initial_e000_bank = 0x03; // or the banking is just different / ROM is scrambled + } + + void nes_vt_ts(machine_config& config); + +protected: + void nes_vt_ts_map(address_map& map); + +private: +}; class nes_vt_pjoy_state : public nes_vt_state @@ -350,10 +369,12 @@ public: void nes_vt_hh(machine_config& config); void nes_vt_vg(machine_config& config); + void nes_vt_vg_baddma(machine_config& config); void nes_vt_fp(machine_config& config); private: void nes_vt_hh_map(address_map& map); + void nes_vt_hh_baddma_map(address_map& map); void nes_vt_fp_map(address_map& map); DECLARE_WRITE8_MEMBER(vtfp_411e_w); @@ -458,7 +479,7 @@ void nes_vt_state::update_banks() m_prgbank2->set_entry((amod | get_banks(bank)) & (m_numbanks-1)); // e000 - ffff - bank = 0xff; + bank = m_initial_e000_bank; m_prgbank3->set_entry((amod | get_banks(bank)) & (m_numbanks-1)); } @@ -1580,12 +1601,20 @@ void nes_vt_hh_state::nes_vt_hh_map(address_map &map) map(0x4034, 0x4034).w(FUNC(nes_vt_hh_state::vt03_4034_w)); map(0x4014, 0x4014).r(FUNC(nes_vt_hh_state::psg1_4014_r)).w(FUNC(nes_vt_hh_state::vt_fixed_dma_w)); - map(0x414A, 0x414A).r(FUNC(nes_vt_hh_state::vthh_414a_r)); + map(0x4119, 0x4119).r(FUNC(nes_vt_hh_state::rs232flags_region_r)); + map(0x414a, 0x414a).r(FUNC(nes_vt_hh_state::vthh_414a_r)); map(0x411d, 0x411d).w(FUNC(nes_vt_hh_state::vtfp_411d_w)); map(0x6000, 0x7fff).ram(); } +void nes_vt_hh_state::nes_vt_hh_baddma_map(address_map &map) +{ + nes_vt_hh_map(map); + map(0x4014, 0x4014).w(FUNC(nes_vt_hh_state::vt_dma_w)); +} + + READ8_MEMBER(nes_vt_hh_state::vtfp_4119_r) { // would be PAL/NTSC etc. in base system, maybe different here? @@ -1635,6 +1664,16 @@ void nes_vt_dg_state::nes_vt_fa_map(address_map &map) map(0x4242, 0x4242).w(FUNC(nes_vt_dg_state::vtfp_4242_w)); } +void nes_vt_ts_state::nes_vt_ts_map(address_map& map) +{ + nes_vt_map(map); + map(0x0800, 0x1fff).ram(); // how much RAM? + + map(0x5000, 0x57ff).ram(); // plays music if you map this as RAM + + map(0x2040, 0x207f).ram(); // strange regs in vdp area +} + void nes_vt_state::prg_map(address_map &map) { map(0x0000, 0x1fff).bankr("prg_bank0"); @@ -1833,6 +1872,14 @@ void nes_vt_hh_state::nes_vt_vg(machine_config &config) m_ppu->set_palette_mode(PAL_MODE_NEW_VG); } +void nes_vt_hh_state::nes_vt_vg_baddma(machine_config &config) +{ + nes_vt_dg(config); + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_hh_state::nes_vt_hh_baddma_map); + + m_ppu->set_palette_mode(PAL_MODE_NEW_VG); +} + // New mystery handheld architecture, VTxx derived void nes_vt_hh_state::nes_vt_hh(machine_config &config) { @@ -1877,6 +1924,12 @@ void nes_vt_vh2009_state::nes_vt_vh2009(machine_config &config) //m_ppu->set_palette_mode(PAL_MODE_NEW_VG); // gives better title screens, but worse ingame, must be able to switch } +void nes_vt_ts_state::nes_vt_ts(machine_config &config) +{ + nes_vt(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_ts_state::nes_vt_ts_map); +} static INPUT_PORTS_START( nes_vt_fp ) PORT_START("CARTSEL") @@ -2132,11 +2185,18 @@ ROM_START( ddrstraw ) ROM_LOAD( "straws-ddr.bin", 0x00000, 0x200000, CRC(ce94e53a) SHA1(10c6970205a4df28086029c0a348225f57bf0cc5) ) // 26LV160 Flash ROM_END +ROM_START( majkon ) + ROM_REGION( 0x200000, "mainrom", ROMREGION_ERASEFF ) + ROM_LOAD( "konamicollectorsseries.bin", 0x00000, 0x100000, CRC(47505e51) SHA1(3bfb05d7cfa2bb4c115335f0383fa4aa59db0b28) ) +ROM_END + ROM_START( ablping ) ROM_REGION( 0x200000, "mainrom", 0 ) ROM_LOAD( "abl_pingpong.bin", 0x00000, 0x200000, CRC(b31de1fb) SHA1(94e8afb2315ba1fa0892191c8e1832391e401c70) ) ROM_END + + #if 0 ROM_START( mc_15kin1 ) ROM_REGION( 0x200000, "mainrom", 0 ) @@ -2218,6 +2278,12 @@ ROM_START( zdog ) ROM_LOAD( "zdog.bin", 0x00000, 0x400000, CRC(5ed3485b) SHA1(5ab0e9370d4ed1535205deb0456878c4e400dd81) ) ROM_END +ROM_START( ts_handy11 ) + ROM_REGION( 0x100000, "mainrom", 0 ) + ROM_LOAD( "tvplaypowercontroller.bin", 0x00000, 0x100000, CRC(9c7fe9ff) SHA1(c872e91ca835b66c9dd3b380e8374b51f12bcae0) ) // 29LV008B +ROM_END + + // earlier version of vdogdemo CONS( 200?, vdogdeme, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_init, "VRT", "V-Dog (prototype, earlier)", MACHINE_NOT_WORKING ) @@ -2247,8 +2313,10 @@ CONS( 200?, mc_dgear, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_init, "dre // all software in this runs in the VT03 enhanced mode, it also includes an actual licensed VT03 port of Frogger. // all games work OK except Frogger which has serious graphical issues -CONS( 2006, vgtablet, 0, 0, nes_vt_vg, nes_vt, nes_vt_hh_state, empty_init, "Performance Designed Products (licensed by Konami)", "VG Pocket Tablet (VG-4000)", MACHINE_NOT_WORKING ) +CONS( 2006, vgtablet, 0, 0, nes_vt_vg, nes_vt, nes_vt_hh_state, empty_init, "Performance Designed Products (licensed by Konami)", "VG Pocket Tablet (VG-4000)", MACHINE_NOT_WORKING ) // raster timing is broken for Frogger // There is a 2004 Majesco Frogger "TV game" that appears to contain the same version of Frogger as above but with no other games, so probably fits here. +CONS( 2004, majkon, 0, 0, nes_vt_vg_baddma, nes_vt, nes_vt_hh_state, empty_init, "Majesco (licensed from Konami)", "Konami Collector's Series Arcade Advanced", MACHINE_NOT_WORKING ) // raster timing is broken for Frogger, palette issues + // this is VT09 based // it boots, most games correct, but palette issues in some games still (usually they appear greyscale) @@ -2257,6 +2325,7 @@ CONS( 2009, cybar120, 0, 0, nes_vt_vg, nes_vt, nes_vt_hh_state, empty_init, " CONS( 2005, vgpocket, 0, 0, nes_vt_vg, nes_vt, nes_vt_hh_state, empty_init, "Performance Designed Products", "VG Pocket (VG-2000)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) CONS( 200?, vgpmini, 0, 0, nes_vt_vg, nes_vt, nes_vt_hh_state, empty_init, "Performance Designed Products", "VG Pocket Mini (VG-1500)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) + // Runs fine, non-sport 121 in 1 games perfect, but minor graphical issues in // sport games, also no sound in menu or sport games due to missing PCM // emulation @@ -2314,6 +2383,8 @@ CONS( 200?, gprnrs16, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_ini CONS( 2006, ddrdismx, 0, 0, nes_vt_ddr, nes_vt, nes_vt_state, empty_init, "Majesco (licensed from Konami, Disney)", "Dance Dance Revolution Disney Mix", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // shows (c)2001 Disney onscreen, but that's recycled art from the Playstation release, actual release was 2006 CONS( 2006, ddrstraw, 0, 0, nes_vt_ddr, nes_vt, nes_vt_state, empty_init, "Majesco (licensed from Konami)", "Dance Dance Revolution Strawberry Shortcake", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + + // unsorted, these were all in nes.xml listed as ONE BUS systems CONS( 200?, mc_dg101, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_init, "dreamGEAR", "dreamGEAR 101 in 1", MACHINE_IMPERFECT_GRAPHICS ) // dreamGear, but no enhanced games? CONS( 200?, mc_aa2, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_init, "<unknown>", "100 in 1 Arcade Action II (AT-103)", MACHINE_IMPERFECT_GRAPHICS ) @@ -2356,3 +2427,6 @@ CONS( 2017, fapocket, 0, 0, nes_vt_fa, nes_vt_fa, nes_vt_dg_state, emp // Plays intro music but then crashes. same hardware as SY-88x but uses more features CONS( 2016, mog_m320, 0, 0, nes_vt_hh, nes_vt, nes_vt_hh_state, empty_init, "MOGIS", "MOGIS M320 246 in 1 Handheld", MACHINE_NOT_WORKING ) + +// uncertain VT type, odd accesses above PPU space, non-standard first bank (or scrambling) possibly newer than 2001 but most games have a 2001 copyright. Most games are higher colour versions of NES games, so it's an enhanced NES chipset at least but maybe not VT? +CONS( 2001, ts_handy11, 0, 0, nes_vt_ts, nes_vt, nes_vt_ts_state, empty_init, "Techno Source", "Handy Boy 11-in-1 (TV Play Power)", MACHINE_NOT_WORKING ) |