diff options
| author | 2026-05-15 16:36:35 +0200 | |
|---|---|---|
| committer | 2026-05-15 16:36:35 +0200 | |
| commit | 483cc38e72ccac426d2cc22d288e1570298573d6 (patch) | |
| tree | ec6188cc2ca4e3a83a8452853d2dbaa538469dcf | |
| parent | bc6ef4e1ac6229bd8ac8ab96fa622bdac02a25be (diff) | |
New systems marked not working
------------------------------
Liang Jian [SongJi]
Liang Zhi Hudie [SongJi]
Magical Tonic [Hammy]
| -rw-r--r-- | src/mame/dynax/dynax.cpp | 18 | ||||
| -rw-r--r-- | src/mame/dynax/dynax.h | 1 | ||||
| -rw-r--r-- | src/mame/igs/goldstar.cpp | 99 | ||||
| -rw-r--r-- | src/mame/mame.lst | 3 | ||||
| -rw-r--r-- | src/mame/skeleton/lanmao.cpp | 25 |
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 ) |
