summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2026-05-15 16:36:35 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2026-05-15 16:36:35 +0200
commit483cc38e72ccac426d2cc22d288e1570298573d6 (patch)
treeec6188cc2ca4e3a83a8452853d2dbaa538469dcf
parentbc6ef4e1ac6229bd8ac8ab96fa622bdac02a25be (diff)
New systems marked not working
------------------------------ Liang Jian [SongJi] Liang Zhi Hudie [SongJi] Magical Tonic [Hammy]
-rw-r--r--src/mame/dynax/dynax.cpp18
-rw-r--r--src/mame/dynax/dynax.h1
-rw-r--r--src/mame/igs/goldstar.cpp99
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/skeleton/lanmao.cpp25
5 files changed, 128 insertions, 18 deletions
diff --git a/src/mame/dynax/dynax.cpp b/src/mame/dynax/dynax.cpp
index 86142c85822..06dfa3417a6 100644
--- a/src/mame/dynax/dynax.cpp
+++ b/src/mame/dynax/dynax.cpp
@@ -1311,23 +1311,9 @@ void dynax_state::ougonhai_banked_map(address_map &map)
}
-void dynax_state::mjtkp2_dsw_w(uint8_t data)
-{
- m_dsw_sel = data;
-}
-
uint8_t dynax_state::mjtkp2_dsw_r()
{
- switch (m_dsw_sel)
- {
- case 0x00: return m_dsw[0]->read();
- case 0x01: return m_dsw[1]->read();
- case 0x02: return m_dsw[2]->read();
- case 0x03: return m_dsw[3]->read();
- case 0x04: return m_dsw[4]->read();
- }
-
- return 0xff;
+ return m_dsw[m_dsw_sel]->read();
}
void dynax_state::mjtkp2_map(address_map &map)
@@ -1340,7 +1326,7 @@ void dynax_state::mjtkp2_map(address_map &map)
map(0x14001, 0x14001).w(FUNC(dynax_state::tenkai_ip_w));
map(0x14002, 0x14003).r(FUNC(dynax_state::tenkai_ip_r));
map(0x14081, 0x14087).w(m_blitter, FUNC(dynax_blitter_rev2_device::regs_w)); // Blitter (inverted scroll values)
- map(0x14100, 0x14100).w(FUNC(dynax_state::mjtkp2_dsw_w));
+ map(0x14100, 0x14100).w(FUNC(dynax_state::tenkai_dswsel_w));
map(0x14180, 0x14180).r(FUNC(dynax_state::mjtkp2_dsw_r));
map(0x14200, 0x14200).w(m_blitter, FUNC(dynax_blitter_rev2_device::pen_w)); // maybe
map(0x14210, 0x14210).w(FUNC(dynax_state::dynax_blit_dest_w)); // maybe
diff --git a/src/mame/dynax/dynax.h b/src/mame/dynax/dynax.h
index 4482d72bfc9..a3391db8bf5 100644
--- a/src/mame/dynax/dynax.h
+++ b/src/mame/dynax/dynax.h
@@ -207,7 +207,6 @@ private:
void tenkai_blit_scrolly_w(uint8_t data);
void tenkai_priority_w(uint8_t data);
uint8_t mjtkp2_dsw_r();
- void mjtkp2_dsw_w(uint8_t data);
uint32_t screen_update_sprtmtch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_mjdialq2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/igs/goldstar.cpp b/src/mame/igs/goldstar.cpp
index ee40adefe62..69b43db669b 100644
--- a/src/mame/igs/goldstar.cpp
+++ b/src/mame/igs/goldstar.cpp
@@ -268,6 +268,7 @@
#include "sound/okim6295.h"
#include "sound/sn76496.h"
#include "sound/ymopl.h"
+#include "sound/ymopn.h"
#include "video/ramdac.h"
#include "emupal.h"
@@ -666,6 +667,7 @@ public:
void magodds(machine_config &config) ATTR_COLD;
void mbstar(machine_config &config) ATTR_COLD;
void megaline(machine_config &config) ATTR_COLD;
+ void mtonic2(machine_config &config) ATTR_COLD;
void nd8lines(machine_config &config) ATTR_COLD;
void super972(machine_config &config) ATTR_COLD;
void superdrg(machine_config &config) ATTR_COLD;
@@ -798,6 +800,8 @@ private:
void mbstar_map(address_map &map) ATTR_COLD;
void megaline_map(address_map &map) ATTR_COLD;
void megaline_portmap(address_map &map) ATTR_COLD;
+ void mtonic2_map(address_map &map) ATTR_COLD;
+ void mtonic2_portmap(address_map &map) ATTR_COLD;
void nd8lines_map(address_map &map) ATTR_COLD;
void superdrg_map(address_map &map) ATTR_COLD;
void superdrg_opcodes_map(address_map &map) ATTR_COLD;
@@ -4805,6 +4809,37 @@ void wingco_state::magodds_map(address_map &map)
map(0xc000, 0xffff).rom().region("maincpu", 0xc000);
}
+void wingco_state::mtonic2_map(address_map &map) // TODO: verify everything
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0x8800, 0x8fff).ram().w(FUNC(wingco_state::fg_vidram_w)).share(m_fg_vidram);
+ map(0x9000, 0x97ff).ram().w(FUNC(wingco_state::fg_atrram_w)).share(m_fg_atrram);
+ map(0x9800, 0x99ff).ram().w(FUNC(wingco_state::reel_ram_w<0>)).share(m_reel_ram[0]);
+ map(0x9a00, 0x9bff).ram().w(FUNC(wingco_state::reel_ram_w<1>)).share(m_reel_ram[1]);
+ map(0x9c00, 0x9dff).ram().w(FUNC(wingco_state::reel_ram_w<2>)).share(m_reel_ram[2]);
+ map(0x9e00, 0x9fff).ram(); // also used. 4th reel?
+ map(0xb000, 0xb03f).ram();
+ map(0xb040, 0xb07f).ram().share(m_reel_scroll[0]);
+ map(0xb080, 0xb0bf).ram().share(m_reel_scroll[1]);
+ map(0xb0c0, 0xb0ff).ram();
+ map(0xb100, 0xb17f).ram().share(m_reel_scroll[2]);
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); // Input Ports
+ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); // Input Ports
+ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); // Input/Output Ports
+ map(0xb830, 0xb831).rw("ym", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xb850, 0xb850).w(FUNC(wingco_state::magodds_outb850_w));
+ map(0xb860, 0xb860).w(FUNC(wingco_state::magodds_outb860_w));
+ map(0xc000, 0xffff).rom().region("maincpu", 0x8000); // banked somehow?
+}
+
+void wingco_state::mtonic2_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+
+ map(0x00, 0x00).lw8(NAME([this] (uint8_t data) { logerror("%s tonic communication write: %02x\n", machine().describe_context(), data); }));
+}
+
void goldstar_state::kkotnoli_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
@@ -16478,6 +16513,26 @@ void wingco_state::magodds(machine_config &config)
TICKET_DISPENSER(config, m_ticket_dispenser, attotime::from_msec(50));
}
+void wingco_state::mtonic2(machine_config &config)
+{
+ magodds(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &wingco_state::mtonic2_map);
+ m_maincpu->set_addrmap(AS_IO, &wingco_state::mtonic2_portmap);
+
+ // TODO: adapt GFX handling (bigger color PROMs, 4 reels, different banking)
+
+ config.device_remove("snsnd");
+ config.device_remove("aysnd");
+
+ ym2203_device &ym(YM2203(config, "ym", AY_CLOCK)); // TODO: clock not verified
+ ym.port_a_read_callback().set_ioport("DSW3");
+ ym.port_b_read_callback().set_ioport("DSW4");
+ ym.port_a_write_callback().set(FUNC(wingco_state::ay8910_outputa_w));
+ ym.port_b_write_callback().set(FUNC(wingco_state::ay8910_outputb_w));
+ ym.add_route(ALL_OUTPUTS, "mono", 1.0);
+}
+
void goldstar_state::kkotnoli(machine_config &config)
{
// basic machine hardware
@@ -24383,6 +24438,44 @@ ROM_END
4x DSW
*/
+
+ROM_START( mtonic ) // this is much more similar to magodds than to mtonic2
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "8_tonic.7e", 0x0000, 0x8000, CRC(ddcb8b1f) SHA1(ee4d01997a1e2263b0ff8af83b82df616228d4c5) ) // 1ST AND 2ND HALF IDENTICAL
+ ROM_IGNORE( 0x8000 )
+ ROM_LOAD( "9_tonic.8e", 0x8000, 0x8000, CRC(fa64562b) SHA1(bc9df5e4ffe5866fcadb036f544d6a53ebb266db) ) // 1ST AND 2ND HALF IDENTICAL
+ ROM_IGNORE( 0x8000 )
+
+ ROM_REGION( 0x30000, "gfx1", 0 )
+ ROM_LOAD( "5_tonic.10j", 0x00000, 0x10000, CRC(59acd42d) SHA1(2b0534cc50d8b2b0275e55f2a9f069124bb733d1) )
+ ROM_LOAD( "6_tonic.11j", 0x10000, 0x10000, CRC(d212790b) SHA1(16330fca735453f52f0435763d273974e653f0fd) )
+ ROM_LOAD( "7_tonic.13j", 0x20000, 0x10000, CRC(46ce72e5) SHA1(dbd64b6189c83442856a53d67dbf725fcb108564) )
+
+ ROM_REGION( 0x10000, "gfx2", 0 )
+ ROM_LOAD( "1_tonic.10l", 0x0000, 0x4000, CRC(746588db) SHA1(2a0af552011246d4cc0cd0b670907cf8685ce8ef) )
+ ROM_LOAD( "2_tonic.11l", 0x4000, 0x4000, CRC(8b7dd248) SHA1(a3ebde9fd0b6b1e42aa9b6d8e30c225abf2f80ce) )
+ ROM_LOAD( "3_tonic.13l", 0x8000, 0x4000, CRC(de05e678) SHA1(8b9fcb9f912075a20a9ae38100006b57d508e0e7) )
+ ROM_LOAD( "4_tonic.14l", 0xc000, 0x4000, CRC(8c542eee) SHA1(cb424e2a67c6d39302beca7cd5244bcad4a91189) )
+
+ // PROMs weren't dumped, taken from mtonic2. TODO: loading to be verified
+ ROM_REGION( 0xc00, "proms", 0 )
+ ROM_LOAD( "dm74s573n.14d", 0x000, 0x400, CRC(9cc0d144) SHA1(ce5de17a3f6da6d14657a4322c57891fa9804874) BAD_DUMP )
+ ROM_LOAD( "dm74s573n.12d", 0x400, 0x400, CRC(b6ba79ac) SHA1(c6415d80301346712c58730ab03079b7dc15e12e) BAD_DUMP )
+ ROM_LOAD( "dm74s573n.13d", 0x800, 0x400, CRC(ae27855a) SHA1(9b822c85d88f8ef8a503818cbf870aa9b0ff7c40) BAD_DUMP )
+
+ ROM_REGION( 0x100, "proms2", 0 )
+ ROM_LOAD( "n82s129an.2n", 0x000, 0x100, CRC(fc0652fd) SHA1(4326550edb3023017b564a84f94daff532608891) BAD_DUMP )
+
+ ROM_REGION( 0x240, "proms3", 0 )
+ ROM_LOAD( "n82s123an.14c", 0x000, 0x020, CRC(6a13320b) SHA1(6d7c663477f3fbc22fb716e15bfdd9c452eb686a) BAD_DUMP )
+ ROM_LOAD( "n82s123an.4f", 0x020, 0x020, CRC(1aa176f3) SHA1(fe777cba829046f850ab612b927bde4fe0d37811) BAD_DUMP )
+ ROM_LOAD( "n82s147an.13b", 0x040, 0x200, CRC(d01f10b3) SHA1(36b97831b26c899b8c5a1596bbbf54f58a32fae3) BAD_DUMP )
+
+ ROM_REGION( 0x400, "plds", ROMREGION_ERASE00 )
+ ROM_LOAD( "palce16v8h-25.9f", 0x000, 0x117, NO_DUMP )
+ ROM_LOAD( "palce16v8h-25.9h", 0x200, 0x117, NO_DUMP )
+ROM_END
+
ROM_START( mtonic2 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "8_tonic.7e", 0x0000, 0x8000, CRC(71df6972) SHA1(281c93184b611a0227a409a0bfe2d8c72d5da878) )
@@ -24399,6 +24492,9 @@ ROM_START( mtonic2 )
ROM_LOAD( "3_tonic.13l", 0x8000, 0x4000, CRC(de05e678) SHA1(8b9fcb9f912075a20a9ae38100006b57d508e0e7) )
ROM_LOAD( "4_tonic.14l", 0xc000, 0x4000, CRC(8c542eee) SHA1(cb424e2a67c6d39302beca7cd5244bcad4a91189) )
+ ROM_REGION( 0x800, "nvram", 0 ) // pre-initialized
+ ROM_LOAD( "nvram", 0x000, 0x800, CRC(5362d6f5) SHA1(41d191f54607afb682200018a71b39b1fc90d58c) )
+
// TODO: PROMs loading to be verified
ROM_REGION( 0xc00, "proms", 0 )
ROM_LOAD( "dm74s573n.14d", 0x000, 0x400, CRC(9cc0d144) SHA1(ce5de17a3f6da6d14657a4322c57891fa9804874) )
@@ -34060,7 +34156,8 @@ GAME( 1992, magoddsa, magodds, magodds, magodds, wingco_state, empty_ini
GAME( 1992, magoddsb, magodds, magodds, magodds, wingco_state, empty_init, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 3)", 0 )
GAME( 1991, magoddsc, magodds, magodds, magoddsc, wingco_state, init_magoddsc, ROT0, "Pal Company", "Magical Odds (set 4, custom encrypted CPU block)", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 1991, magoddsd, magodds, magodds, magoddsc, wingco_state, init_magoddsc, ROT0, "Pal Company", "Magical Odds (set 5, custom encrypted CPU block)", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 199?, mtonic2, 0, magodds, magoddsc, wingco_state, init_magoddsc, ROT0, "Pal Company", "Magical Tonic Part 2", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 199?, mtonic, 0, magodds, magodds, wingco_state, init_magoddsc, ROT0, "Pal Company", "Magical Tonic", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 199?, mtonic2, 0, mtonic2, magodds, wingco_state, init_magoddsc, ROT0, "Pal Company", "Magical Tonic Part 2 (ver 007)", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
// --- Amcoe games ---
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 363ca3fe9ca..cb2e0657c89 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -21030,6 +21030,7 @@ moonlght
moonlghta
moonlghtb
moonlghtc
+mtonic
mtonic2
nc96
nc96a
@@ -44337,6 +44338,8 @@ kron180
@source:skeleton/lanmao.cpp
gongfuxm
lanmao
+ljian
+lzhudie
msaiche
panda2
pkzw
diff --git a/src/mame/skeleton/lanmao.cpp b/src/mame/skeleton/lanmao.cpp
index 4a884be46f2..a2941031af1 100644
--- a/src/mame/skeleton/lanmao.cpp
+++ b/src/mame/skeleton/lanmao.cpp
@@ -595,6 +595,29 @@ ROM_START( gongfuxm )
ROM_LOAD( "24c02.bin", 0x000, 0x100, CRC(2365af83) SHA1(ea6a40939b0e08404b729edd000b01f0108e57df) )
ROM_END
+// 亮剑 (Liàng Jiàn) (Draw the Sword)
+// W78E065 + HM6116P-2 + 12 MHz XTAL + 2x JFC95101 + 2x TOP8279 + U6295 + 24C02. No bank of switches
+ROM_START( ljian )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "w78e065", 0x00000, 0x10000, CRC(2e50c3df) SHA1(65aef33ad0173c826d10e55c8f62c13c10e0aad2) ) // 1xxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION( 0x200000, "oki", 0 )
+ ROM_LOAD( "29f1615", 0x000000, 0x200000, CRC(ff2930c2) SHA1(6a260fba6cc73986477b8dc404a3a12ecb1306a3) ) // 1ST AND 2ND HALF IDENTICAL
+
+ ROM_REGION( 0x100, "i2cmem", 0 )
+ ROM_LOAD( "24c02.bin", 0x000, 0x100, CRC(cfffbd57) SHA1(22049c36c56272411d7d431e38a8bd1fc6257d42) )
+ROM_END
+
+// 两只蝴蝶 (Liǎng Zhī Húdié) (Two Butterflies)
+// SUPERR QQ5 PCB: 89E564R + HM6116P-2 + 12 MHz XTAL + JFC95101 + TMP82C255AN-2 + U6295 + 24C02. No bank of switches
+ROM_START( lzhudie )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "w78e065", 0x00000, 0x10000, CRC(f9389dc5) SHA1(4014dbbc2aa7b1661db53b74bfbc57126400b528) ) // 1xxxxxxxxxxxxxxx = 0x00
+
+ ROM_REGION( 0x200000, "oki", 0 )
+ ROM_LOAD( "29f1615", 0x000000, 0x200000, CRC(5e827bea) SHA1(94ace5fb8161a3004526a77767baa789fd1b8d5d) )
+ROM_END
+
} // anonymous namespace
@@ -609,3 +632,5 @@ GAME( 1991, whujiang, 0, panda2, panda2, panda2_state, empty_init, ROT0, "Hom I
GAME( 1998, whujijqb, 0, lanmao, lanmao, lanmao_state, empty_init, ROT0, "Hom Inn", "Wu Hujiang Jiaqiang Ban", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
GAME( 1997, xqingwa, 0, lanmao, lanmao, lanmao_state, empty_init, ROT0, "Jinlong Electronics", "Xiao Qingwa", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
GAME( 2005, gongfuxm, 0, lanmao, lanmao, lanmao_state, empty_init, ROT0, "Yuanfa Technology", "Gongfu Xiongmao", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
+GAME( 2001, ljian, 0, lanmao, lanmao, lanmao_state, empty_init, ROT0, "Changsheng Electric Company", "Liang Jian", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
+GAME( 1999, lzhudie, 0, lanmao, lanmao, lanmao_state, empty_init, ROT0, "Changsheng Electric Company", "Liang Zhi Hudie", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL )