From 8dd917457a7eaf593ec7c89e4dc50d0bc2f28e4b Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 21 Feb 2023 16:19:10 +0100 Subject: New systems marked not working ------------------------------ Shimura Ken no Bakatono-sama Ooedomatsuri [hammy] Sweetheart [Recreativos Piscis] --- src/mame/mame.lst | 2 + src/mame/nmk/nmk16.cpp | 10 +-- src/mame/nmk/nmkmedal.cpp | 155 ++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 152 insertions(+), 15 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 113e8bb3766..e96687b3eda 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -34193,6 +34193,8 @@ vandykejal2 // UPL-90064 (c) Jaleco @source:nmk/nmkmedal.cpp drail // NTC / NMK hpierrot // NTC / NMK +omatsuri // NMK +sweethrt // NMK trocana // NTC / NMK @source:nmk/powerins.cpp diff --git a/src/mame/nmk/nmk16.cpp b/src/mame/nmk/nmk16.cpp index 62fa8cfa75b..a1b26cf42ce 100644 --- a/src/mame/nmk/nmk16.cpp +++ b/src/mame/nmk/nmk16.cpp @@ -7098,8 +7098,9 @@ ROM_START( hachamf ) ROM_LOAD16_BYTE( "7.93", 0x00000, 0x20000, CRC(9d847c31) SHA1(1d370d8db9cadadb9c2cb213e32f681947d81b7f) ) // internally reports as 19th Sep. 1991 ROM_LOAD16_BYTE( "6.94", 0x00001, 0x20000, CRC(de6408a0) SHA1(2df77fecd44d2d8b0444abd4545923213ed76b2d) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // unknown - sound CPU ?????? - ROM_LOAD( "1.70", 0x00000, 0x10000, CRC(9e6f48fc) SHA1(aeb5bfecc025b5478f6de874792fc0f7f54932be) ) + ROM_REGION( 0x10000, "audiocpu", 0 ) // for the NMK-113 custom (a TMP90C041 MCU in disguise with internal program ROM) + ROM_LOAD( "1.70", 0x00000, 0x10000, CRC(9e6f48fc) SHA1(aeb5bfecc025b5478f6de874792fc0f7f54932be) ) + ROM_LOAD( "nmk-113", 0x00000, 0x04000, NO_DUMP ) // internal ROM, maps over the first 0x4000 of the above external ROM ROM_REGION( 0x020000, "fgtile", 0 ) ROM_LOAD( "5.95", 0x000000, 0x020000, CRC(29fb04a2) SHA1(9654b90a66d0e2a0f9cd369cab29cdd0c6f77869) ) // 8x8 tiles @@ -7124,8 +7125,9 @@ ROM_START( hachamfa) // reportedly a Korean PCB / version ROM_LOAD16_BYTE( "7.ic93", 0x00000, 0x20000, CRC(f437e52b) SHA1(061a75a7a9734034d1c499fc0bc2d8a61bb26da4) ) // internally reports as 19th Sep. 1991 ROM_LOAD16_BYTE( "6.ic94", 0x00001, 0x20000, CRC(60d340d0) SHA1(3c6f862901b403d6ddf58823af7d6e3f67573788) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // unknown - sound CPU ?????? - ROM_LOAD( "1.70", 0x00000, 0x10000, CRC(9e6f48fc) SHA1(aeb5bfecc025b5478f6de874792fc0f7f54932be) ) + ROM_REGION( 0x10000, "audiocpu", 0 ) // for the NMK-113 custom (a TMP90C041 MCU in disguise with internal program ROM) + ROM_LOAD( "1.70", 0x00000, 0x10000, CRC(9e6f48fc) SHA1(aeb5bfecc025b5478f6de874792fc0f7f54932be) ) + ROM_LOAD( "nmk-113", 0x00000, 0x04000, NO_DUMP ) // internal ROM, maps over the first 0x4000 of the above external ROM ROM_REGION( 0x020000, "fgtile", 0 ) // Smaller NMK logo plus alternate Distributed by UPL Company Limited starting at tile 0xF80 ROM_LOAD( "5.ic95", 0x000000, 0x020000, CRC(a2c1e25d) SHA1(cf09cbfd9afc7e3907fef6b26fb269b743f2e036) ) // 8x8 tiles diff --git a/src/mame/nmk/nmkmedal.cpp b/src/mame/nmk/nmkmedal.cpp index 6a14220c802..39b8f5ef249 100644 --- a/src/mame/nmk/nmkmedal.cpp +++ b/src/mame/nmk/nmkmedal.cpp @@ -9,6 +9,7 @@ #include "machine/nmk112.h" #include "sound/okim6295.h" #include "sound/okim6376.h" +#include "sound/ymz280b.h" #include "speaker.h" @@ -69,6 +70,51 @@ NMK MAC94104 - main CPU board, stickered 957G. 0144 - 2 x 8-dip banks - 5 x connectors +Other PCBs unknown + +------- +Sweetheart by NMK + +PCBs: + +NMK MAC96114 - main CPU board, stickered 9607 M. M. +- NMK-113 2321 9140EBI - A TMP90C041 MCU with internal program ROM, possibly grafted to a NMK-112? Seen also on Hacha Mecha Fighter PCBs +- 16.0000 MHz XTAL +- MCU external ROM. In this case, internal ROM is not used, as the /EA pin (External Access) is asserted, so all the program code is located in the external EPROM. +- 2 x Oki M6295 +- 4 x Oki ROMs (identical pairs) +- 2 x 8-dip banks (don't seem to be on PCB) +- 9 x connectors + +NMK MAC96115 - lamp / leds board +- 7 x connectors +- lamp +- 8 x LEDs + +NMK MAC96116 +- 4 x connectors +- TTLs + +NMK MAC96117 +- 5 x connectors +- TTLs + +------- +Shimura Ken no Bakatono-sama Ooedomatsuri by NMK + +Video of the game: https://www.youtube.com/watch?v=9HGdS2ydZDo + +NMK MAC98205-1 - main CPU board, stickered 99040048 +- Toshiba TMP90C041AN +- 16.0000 MHz XTAL +- main CPU ROM +- YMZ280B-F +- 2 x YMZ ROMs +- NMK001 custom +- NMK003 custom +- 2 x 8-dip banks +- 9 x connectors + Other PCBs unknown */ @@ -110,17 +156,29 @@ class hpierrot_state : public nmkmedal_state public: hpierrot_state(const machine_config &mconfig, device_type type, const char *tag) : nmkmedal_state(mconfig, type, tag) - , m_oki(*this, "oki") { } void drail(machine_config &config); void hpierrot(machine_config &config); + void sweethrt(machine_config &config); private: void drail_mem_map(address_map &map); void mem_map(address_map &map); + void sweethrt_mem_map(address_map &map); +}; - required_device m_oki; +class omatsuri_state : public nmkmedal_state +{ +public: + omatsuri_state(const machine_config &mconfig, device_type type, const char *tag) + : nmkmedal_state(mconfig, type, tag) + { } + + void omatsuri(machine_config &config); + +private: + void mem_map(address_map &map); }; @@ -166,6 +224,29 @@ void hpierrot_state::drail_mem_map(address_map &map) map(0xc000, 0xc7ff).ram(); } +void hpierrot_state::sweethrt_mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); + map(0x8000, 0x8000).portr("IN0"); + map(0x8001, 0x8001).portr("IN1"); + map(0x8002, 0x8002).portr("IN2"); + map(0x8003, 0x8003).portr("IN3"); + map(0x8004, 0x8004).portr("IN4"); + map(0x8005, 0x8005).portr("IN5"); + map(0x9000, 0x9007).w("nmk112", FUNC(nmk112_device::okibank_w)); + //map(0xa000, 0xa00f).w() // to the mechanical parts?? or leds / lamps? + map(0xb000, 0xb000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xb800, 0xb800).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc000, 0xdfff).ram(); +} + +void omatsuri_state::mem_map(address_map &map) +{ + map(0x0000, 0x9fff).rom().region("maincpu", 0); + map(0xd000, 0xefff).ram(); +} + + static INPUT_PORTS_START( trocana ) PORT_START("IN0") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("0.0") PORT_CODE(KEYCODE_1) @@ -238,7 +319,7 @@ void hpierrot_state::hpierrot(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &hpierrot_state::mem_map); SPEAKER(config, "mono").front_center(); - OKIM6295(config, m_oki, 16_MHz_XTAL / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // divider and pin not verified + OKIM6295(config, "oki", 16_MHz_XTAL / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // divider and pin not verified } void hpierrot_state::drail(machine_config &config) @@ -250,7 +331,35 @@ void hpierrot_state::drail(machine_config &config) nmk112.set_rom0_tag("oki"); SPEAKER(config, "mono").front_center(); - OKIM6295(config, m_oki, 16_MHz_XTAL / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // divider and pin not verified + OKIM6295(config, "oki", 16_MHz_XTAL / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // divider and pin not verified +} + +void hpierrot_state::sweethrt(machine_config &config) +{ + TMP90841(config, m_maincpu, 16_MHz_XTAL / 2); // actually a NMK-113 custom + m_maincpu->set_addrmap(AS_PROGRAM, &hpierrot_state::sweethrt_mem_map); + + nmk112_device &nmk112(NMK112(config, "nmk112", 0)); // actually thought to be included in the NMK-113 custom + nmk112.set_rom0_tag("oki"); + nmk112.set_rom1_tag("oki2"); + + SPEAKER(config, "mono").front_center(); + OKIM6295(config, "oki", 16_MHz_XTAL / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // divider and pin not verified + + OKIM6295(config, "oki2", 16_MHz_XTAL / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // divider and pin not verified +} + +void omatsuri_state::omatsuri(machine_config &config) +{ + TMP90841(config, m_maincpu, 16_MHz_XTAL / 2); + m_maincpu->set_addrmap(AS_PROGRAM, &omatsuri_state::mem_map); + + SPEAKER(config, "lspeaker").front_left(); + SPEAKER(config, "rspeaker").front_right(); + + ymz280b_device &ymz(YMZ280B(config, "ymz", 16_MHz_XTAL)); + ymz.add_route(0, "lspeaker", 1.0); + ymz.add_route(1, "rspeaker", 1.0); } @@ -268,20 +377,44 @@ ROM_START( trocana ) ROM_LOAD( "tro1e.u12", 0x00000, 0x10000, CRC(f285043f) SHA1(6691091c1ecdab10c390db1d82c9d1d1dd0ded1f) ) // 1xxxxxxxxxxxxxxx = 0xFF ROM_REGION(0x80000, "oki", 0) - ROM_LOAD( "tro2.u16", 0x00000, 0x80000, CRC(c801d8ca) SHA1(f57026f5386467c054299556dd8665e62557aa91) ) + ROM_LOAD( "tro2.u16", 0x00000, 0x80000, CRC(c801d8ca) SHA1(f57026f5386467c054299556dd8665e62557aa91) ) ROM_END ROM_START( hpierrot ) ROM_REGION(0x10000, "maincpu", 0) - ROM_LOAD( "v8210.u44", 0x00000, 0x10000, CRC(313d5d07) SHA1(2802c88a21a311d552e8f2bd9e588ca7450f695d) ) // 1xxxxxxxxxxxxxxx = 0xFF + ROM_LOAD( "v8210.u44", 0x00000, 0x10000, CRC(313d5d07) SHA1(2802c88a21a311d552e8f2bd9e588ca7450f695d) ) // 1xxxxxxxxxxxxxxx = 0xFF ROM_REGION(0x80000, "oki", 0) - ROM_LOAD( "sound.u27", 0x00000, 0x80000, CRC(fb6b4361) SHA1(7aaecf55efe219cb0b5eb93fee329b8e6ce0b307) ) + ROM_LOAD( "sound.u27", 0x00000, 0x80000, CRC(fb6b4361) SHA1(7aaecf55efe219cb0b5eb93fee329b8e6ce0b307) ) +ROM_END + +ROM_START( sweethrt ) + ROM_REGION(0x10000, "maincpu", 0) + ROM_LOAD( "sweethart-typeb-v96b290.u55", 0x00000, 0x10000, CRC(d5ccce6d) SHA1(ef4c1a19df0bcf7961dc8df0ebc7a1654f4a86ca) ) // 1xxxxxxxxxxxxxxx = 0xFF + + ROM_REGION(0x140000, "oki", 0) // NMK112 device expects the first 0x40000 bytes to be left empty. + ROM_LOAD( "sweethart-typeb-sound-2.u37", 0x40000, 0x80000, CRC(19caa092) SHA1(0a12e8524abdd09259e8f8c00f26807f2f2ef525) ) + ROM_LOAD( "sweethart-typeb-sound-3.u38", 0xc0000, 0x80000, CRC(03255848) SHA1(dfecc863e6b9dec7aa0b2430b43a3d6d9b15bbea) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF + + ROM_REGION(0x140000, "oki2", 0) // identical to the above + ROM_LOAD( "sweethart-typeb-sound-4.u18", 0x40000, 0x80000, CRC(19caa092) SHA1(0a12e8524abdd09259e8f8c00f26807f2f2ef525) ) + ROM_LOAD( "sweethart-typeb-sound-5.u19", 0xc0000, 0x80000, CRC(03255848) SHA1(dfecc863e6b9dec7aa0b2430b43a3d6d9b15bbea) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF +ROM_END + +ROM_START( omatsuri ) // seems to hit some unimplemented CPU regs + ROM_REGION(0x10000, "maincpu", 0) + ROM_LOAD( "1bv994220.1", 0x00000, 0x10000, CRC(c67907f5) SHA1(9e3a8eddc4dd315bcd9e577808e4f913fc30bba0) ) + + ROM_REGION(0x100000, "ymz", 0) + ROM_LOAD( "2", 0x00000, 0x80000, CRC(39c9d3a8) SHA1(9ea7e1ab51d68f014e15b09ac421d51441712a47) ) + ROM_LOAD( "3", 0x80000, 0x80000, CRC(0e6afb1f) SHA1(e016a684fb41acb55057797b22a07dab72ff9e9d) ) ROM_END -} // Anonymous namespace +} // anonymous namespace -GAME( 1995, drail, 0, drail, trocana, hpierrot_state, empty_init, ROT0, "NTC / NMK", "Dream Rail", MACHINE_IS_SKELETON_MECHANICAL ) // NMK LTD, N.T.C., H07051, V39, TEST2, V07 strings -GAME( 1996, trocana, 0, trocana, trocana, trocana_state, empty_init, ROT0, "NTC / NMK", "Trocana", MACHINE_IS_SKELETON_MECHANICAL ) // NMK LTD, NTC LTD, V96313 strings -GAME( 1996, hpierrot, 0, hpierrot, trocana, hpierrot_state, empty_init, ROT0, "NTC / NMK", "Happy Pierrot", MACHINE_IS_SKELETON_MECHANICAL ) // NTC LTD, NMK LTD, V96821 strings +GAME( 1995, drail, 0, drail, trocana, hpierrot_state, empty_init, ROT0, "NTC / NMK", "Dream Rail", MACHINE_IS_SKELETON_MECHANICAL ) // NMK LTD, N.T.C., H07051, V39, TEST2, V07 strings +GAME( 1996, trocana, 0, trocana, trocana, trocana_state, empty_init, ROT0, "NTC / NMK", "Trocana", MACHINE_IS_SKELETON_MECHANICAL ) // NMK LTD, NTC LTD, V96313 strings +GAME( 1996, hpierrot, 0, hpierrot, trocana, hpierrot_state, empty_init, ROT0, "NTC / NMK", "Happy Pierrot", MACHINE_IS_SKELETON_MECHANICAL ) // NTC LTD, NMK LTD, V96821 strings +GAME( 1996, sweethrt, 0, sweethrt, trocana, hpierrot_state, empty_init, ROT0, "NMK", "Sweetheart", MACHINE_IS_SKELETON_MECHANICAL ) // NMK LTD, V96B29° strings +GAME( 1999, omatsuri, 0, omatsuri, trocana, omatsuri_state, empty_init, ROT0, "NMK / Sega", "Shimura Ken no Bakatono-sama Ooedomatsuri", MACHINE_IS_SKELETON_MECHANICAL ) // NMK LTD, V99422 strings. Cabinet has NMK logo, manual has Sega logo -- cgit v1.2.3