summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/nes_vt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/nes_vt.cpp')
-rw-r--r--src/mame/drivers/nes_vt.cpp86
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 )