From c093bd1d5f941d9934daaf74b3e770131c74e0dc Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Fri, 23 May 2025 19:13:31 +0200 Subject: [PATCH] New systems marked not working ------------------------------ Mahjong Jongoh (Japan, TTL800-03-04) [buffi] New working clones ------------------ Mahjong Gal no Kokuhaku (Japan, set 2) [buffi] Mahjong Reach Ippatsu (Japan, NM526-01) [buffi] --- src/mame/dynax/ddenlovr.cpp | 250 ++++++++++++++----------------- src/mame/mame.lst | 3 + src/mame/nichibutsu/nbmj8991.cpp | 31 +++- 3 files changed, 146 insertions(+), 138 deletions(-) diff --git a/src/mame/dynax/ddenlovr.cpp b/src/mame/dynax/ddenlovr.cpp index e9e1f6266b1..647611a6875 100644 --- a/src/mame/dynax/ddenlovr.cpp +++ b/src/mame/dynax/ddenlovr.cpp @@ -115,6 +115,9 @@ TODO: - mjmysterr: background while playing seems of wrong color +- jongoh: a lightning effect during transitions in attract mode doesn't seem to be rendered correctly + (hw reference: https://www.youtube.com/watch?v=ytJiqOvHKgM) + Notes: - all games using black as default palette is trusted from a real rongrong PCB; @@ -134,16 +137,26 @@ Notes: #include "cpu/z80/kl5c80a12.h" #include "cpu/z80/tmpz84c015.h" #include "cpu/z80/z80.h" -#include "sound/ay8910.h" -#include "sound/ymopl.h" #include "machine/74259.h" #include "machine/gen_latch.h" #include "machine/msm6242.h" #include "machine/nvram.h" +#include "sound/ay8910.h" +#include "sound/ymopl.h" #include "speaker.h" +// configurable logging +#define LOG_BLIT (1U << 1) + +//#define VERBOSE (LOG_GENERAL | LOG_BLIT) + +#include "logmacro.h" + +#define LOGBLIT(...) LOGMASKED(LOG_BLIT, __VA_ARGS__) + + namespace { /*************************************************************************** @@ -204,6 +217,7 @@ public: void dtoyoken(machine_config &config) ATTR_COLD; void hgokou(machine_config &config) ATTR_COLD; void seljan2(machine_config &config) ATTR_COLD; + void jongoh(machine_config &config) ATTR_COLD; void janshinp(machine_config &config) ATTR_COLD; void ultrchmp(machine_config &config) ATTR_COLD; void rongrong(machine_config &config) ATTR_COLD; @@ -298,8 +312,9 @@ private: void rongrong_select_w(uint8_t data); protected: uint8_t hanakanz_rand_r(); + void protection_w(uint8_t data); + template uint8_t technotop_protection_r(); private: - void mjschuka_protection_w(uint8_t data); uint8_t mjschuka_protection_r(); protected: void mjmyster_rambank_w(uint8_t data); @@ -395,6 +410,7 @@ private: void hparadis_portmap(address_map &map) ATTR_COLD; void janshinp_map(address_map &map) ATTR_COLD; void janshinp_portmap(address_map &map) ATTR_COLD; + void jongoh_portmap(address_map &map) ATTR_COLD; void mjflove_portmap(address_map &map) ATTR_COLD; void mjmyorntr_portmap(address_map &map) ATTR_COLD; void mjmyster_map(address_map &map) ATTR_COLD; @@ -594,12 +610,11 @@ public: void mjchuuka(machine_config &config) ATTR_COLD; void mjreach1(machine_config &config) ATTR_COLD; void daimyojn(machine_config &config) ATTR_COLD; + void momotaro(machine_config &config) ATTR_COLD; void kotbinyo(machine_config &config) ATTR_COLD; void daireach(machine_config &config) ATTR_COLD; void hnrose(machine_config &config) ATTR_COLD; - void init_momotaro() ATTR_COLD; - private: DECLARE_MACHINE_START(hanakanz); DECLARE_VIDEO_START(hanakanz); @@ -617,8 +632,6 @@ private: void hanakanz_coincounter_w(uint8_t data); void hanakanz_palette_w(uint8_t data); //uint8_t hanakanz_rand_r(); - void mjreach1_protection_w(uint8_t data); - uint8_t mjreach1_protection_r(); uint8_t mjchuuka_keyb_r(offs_t offset); void mjchuuka_blitter_w(offs_t offset, uint8_t data); uint8_t mjchuuka_gfxrom_0_r(); @@ -628,16 +641,9 @@ private: void jongtei_dsw_keyb_w(uint8_t data); uint8_t jongtei_busy_r(); uint8_t mjgnight_protection_r(); - void mjgnight_protection_w(uint8_t data); void mjgnight_coincounter_w(uint8_t data); //uint8_t daimyojn_keyb1_r(); //uint8_t daimyojn_keyb2_r(); - void daimyojn_protection_w(uint8_t data); - uint8_t daimyojn_protection_r(); - uint8_t momotaro_protection_r(); - uint8_t jongteia_protection_r(); - uint8_t daireach_protection_r(); - uint8_t hnrose_protection_r(); void daimyojn_palette_sel_w(uint8_t data); void daimyojn_blitter_data_palette_w(uint8_t data); uint8_t daimyojn_year_hack_r(offs_t offset); @@ -661,6 +667,7 @@ private: void mjchuuka_portmap(address_map &map) ATTR_COLD; void mjgnight_portmap(address_map &map) ATTR_COLD; void mjreach1_portmap(address_map &map) ATTR_COLD; + void momotaro_portmap(address_map &map) ATTR_COLD; memory_share_creator m_banked_nvram; required_memory_bank m_bank1; @@ -1177,16 +1184,13 @@ void ddenlovr_state::blit_vert_line() -inline void ddenlovr_state::log_blit( int data ) +inline void ddenlovr_state::log_blit(int data) { -#if 0 - - logerror("%s: blit src %06x x %03x y %03x flags %02x layer %02x pen %02x penmode %02x w %03x h %03x linelen %03x flip %02x clip: ctrl %x xy %03x %03x wh %03x %03x\n", + LOGBLIT("%s: blit src %06x x %03x y %03x flags %02x layer %02x pen %02x penmode %02x w %03x h %03x linelen %03x flip %02x clip: ctrl %x xy %03x %03x wh %03x %03x\n", machine().describe_context(), m_ddenlovr_blit_address, m_ddenlovr_blit_x, m_ddenlovr_blit_y, data, m_ddenlovr_dest_layer, m_ddenlovr_blit_pen, m_ddenlovr_blit_pen_mode, m_ddenlovr_rect_width, m_ddenlovr_rect_height, m_ddenlovr_line_length, m_ddenlovr_blit_flip, m_ddenlovr_clip_ctrl, m_ddenlovr_clip_x, m_ddenlovr_clip_y, m_ddenlovr_clip_width, m_ddenlovr_clip_height); -#endif } void ddenlovr_state::blitter_w(int blitter, offs_t offset, uint8_t data) @@ -1978,6 +1982,22 @@ uint8_t ddenlovr_state::unk_r() return 0x78; } +void ddenlovr_state::protection_w(uint8_t data) +{ + m_prot_val = data; +} + +// Most Techno Top games have a slight protection. +// They always have 5 bytes, they are 0xd4, 0xed, 0x76, 0xc9, 0xcb, in the program ROM. +// They get written to a port and the game immediately expects them back from a read +// port, XORed. The expected bytes are found in the program ROM immediately after the +// 5 bytes above. Therefore, determining the expected XOR is trivial. +template +uint8_t ddenlovr_state::technotop_protection_r() +{ + return m_prot_val ^ Xor; +} + void ddenlovr_state::ddenlovr_select_w(uint8_t data) { @@ -2960,16 +2980,6 @@ void hanakanz_state::kotbinsp_portmap(address_map &map) } -void hanakanz_state::mjreach1_protection_w(uint8_t data) -{ - m_prot_val = data; -} - -uint8_t hanakanz_state::mjreach1_protection_r() -{ - return m_prot_val; -} - void hanakanz_state::mjreach1_portmap(address_map &map) { map.global_mask(0xff); @@ -2978,7 +2988,7 @@ void hanakanz_state::mjreach1_portmap(address_map &map) map(0x83, 0x84).r(FUNC(hanakanz_state::hanakanz_gfxrom_r)); map(0x90, 0x90).w(FUNC(hanakanz_state::hanamai_keyboard_w)); map(0x92, 0x92).r(FUNC(hanakanz_state::hanakanz_rand_r)); - map(0x93, 0x93).rw(FUNC(hanakanz_state::mjreach1_protection_r), FUNC(hanakanz_state::mjreach1_protection_w)); + map(0x93, 0x93).rw(FUNC(hanakanz_state::technotop_protection_r<0x00>), FUNC(hanakanz_state::protection_w)); map(0x94, 0x94).portr("SYSTEM"); map(0x95, 0x96).r(FUNC(hanakanz_state::hanakanz_keyb_r)); map(0x97, 0x97).w(FUNC(hanakanz_state::hanakanz_coincounter_w)); @@ -3115,11 +3125,6 @@ void hanakanz_state::mjchuuka_portmap(address_map &map) // 255F: 13 34 7A 96 A8 // 2564: 13 34 7A 96 13 -void ddenlovr_state::mjschuka_protection_w(uint8_t data) -{ - m_prot_val = data; -} - uint8_t ddenlovr_state::mjschuka_protection_r() { switch (m_prot_val) @@ -3148,7 +3153,7 @@ void ddenlovr_state::mjschuka_portmap(address_map &map) map(0x43, 0x43).r(FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); map(0x50, 0x50).w(FUNC(ddenlovr_state::mjflove_okibank_w)); - map(0x54, 0x54).rw(FUNC(ddenlovr_state::mjschuka_protection_r), FUNC(ddenlovr_state::mjschuka_protection_w)); + map(0x54, 0x54).rw(FUNC(ddenlovr_state::mjschuka_protection_r), FUNC(ddenlovr_state::protection_w)); // 58 writes ? (0/1) map(0x5c, 0x5c).r(FUNC(ddenlovr_state::hanakanz_rand_r)); @@ -4016,7 +4021,7 @@ void hanakanz_state::jongteia_portmap(address_map &map) map(0x7e, 0x7e).w(FUNC(hanakanz_state::hanakanz_coincounter_w)); map(0x80, 0x8f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); map(0xa0, 0xa0).r(FUNC(hanakanz_state::hanakanz_rand_r)); - map(0xb0, 0xb0).rw(FUNC(hanakanz_state::jongteia_protection_r), FUNC(hanakanz_state::daimyojn_protection_w)); + map(0xb0, 0xb0).rw(FUNC(hanakanz_state::technotop_protection_r<0x18>), FUNC(hanakanz_state::protection_w)); } @@ -4041,11 +4046,6 @@ void hanakanz_state::mjgnight_coincounter_w(uint8_t data) #endif } -void hanakanz_state::mjgnight_protection_w(uint8_t data) -{ - m_prot_val = data; -} - uint8_t hanakanz_state::mjgnight_protection_r() { switch (m_prot_val) @@ -4063,7 +4063,7 @@ void hanakanz_state::mjgnight_portmap(address_map &map) map(0x41, 0x42).r(FUNC(hanakanz_state::hanakanz_keyb_r)); map(0x46, 0x46).w(FUNC(hanakanz_state::mjgnight_coincounter_w)); map(0x46, 0x46).r(FUNC(hanakanz_state::hanakanz_rand_r)); - map(0x47, 0x47).rw(FUNC(hanakanz_state::mjgnight_protection_r), FUNC(hanakanz_state::mjgnight_protection_w)); + map(0x47, 0x47).rw(FUNC(hanakanz_state::mjgnight_protection_r), FUNC(hanakanz_state::protection_w)); map(0x60, 0x60).w(FUNC(hanakanz_state::hanakanz_blitter_data_w)); map(0x61, 0x61).w(FUNC(hanakanz_state::hanakanz_palette_w)); map(0x63, 0x64).r(FUNC(hanakanz_state::hanakanz_gfxrom_r)); @@ -4292,6 +4292,18 @@ void ddenlovr_state::seljan2_portmap(address_map &map) } +void ddenlovr_state::jongoh_portmap(address_map &map) +{ + seljan2_portmap(map); + + map(0x60, 0x60).w(FUNC(ddenlovr_state::seljan2_rombank_w)); + map(0x70, 0x70).nopr().w(FUNC(ddenlovr_state::sryudens_rambank_w)); // ? ack on RTC int + map(0x80, 0x80).unmapw(); + map(0xb0, 0xb0).r(FUNC(ddenlovr_state::technotop_protection_r<0x06>)); + map(0xe4, 0xe4).w(FUNC(hanakanz_state::seljan2_palette_enab_w)); + map(0xe8, 0xe8).w(FUNC(ddenlovr_state::protection_w)); +} + /*************************************************************************** Hanafuda Hana Tengoku ***************************************************************************/ @@ -4554,60 +4566,6 @@ uint8_t ddenlovr_state::daimyojn_keyb2_r() return val; } -// 1B18: D4 ED 76 C9 CB -// 1B1D: 96 AF 34 8B 89 - -void hanakanz_state::daimyojn_protection_w(uint8_t data) -{ - m_prot_val = data; -} - -uint8_t hanakanz_state::daimyojn_protection_r() -{ - switch (m_prot_val) - { - case 0xd4: return 0x96; - case 0xed: return 0xaf; - case 0x76: return 0x34; - case 0xc9: return 0x8b; - case 0xcb: return 0x89; - } - return 0xff; -} - -// 1ADD: D4 ED 76 C9 CB -// 1AE2: D9 E0 7B C4 C6 - -uint8_t hanakanz_state::momotaro_protection_r() -{ - switch (m_prot_val) - { - case 0xd4: return 0xd9; - case 0xed: return 0xe0; - case 0x76: return 0x7b; - case 0xc9: return 0xc4; - case 0xcb: return 0xc6; - } - - return 0xff; -} - -// 1ED0: D4 ED 76 C9 CB -// 1ED5: CC F5 6E D1 D3 - -uint8_t hanakanz_state::jongteia_protection_r() -{ - switch (m_prot_val) - { - case 0xd4: return 0xcc; - case 0xed: return 0xf5; - case 0x76: return 0x6e; - case 0xc9: return 0xd1; - case 0xcb: return 0xd3; - } - return 0xff; -} - void hanakanz_state::daimyojn_okibank_w(uint8_t data) { m_oki->set_rom_bank((data >> 4) & 0x01); @@ -4648,7 +4606,14 @@ void hanakanz_state::daimyojn_portmap(address_map &map) map(0xb0, 0xb0).w(FUNC(hanakanz_state::mjmyster_rambank_w)); map(0xc0, 0xc0).w(FUNC(hanakanz_state::mjflove_rombank_w)); map(0xd0, 0xd0).r(FUNC(hanakanz_state::hanakanz_rand_r)); - map(0xe0, 0xe0).rw(FUNC(hanakanz_state::daimyojn_protection_r), FUNC(hanakanz_state::daimyojn_protection_w)); + map(0xe0, 0xe0).rw(FUNC(hanakanz_state::technotop_protection_r<0x42>), FUNC(hanakanz_state::protection_w)); +} + +void hanakanz_state::momotaro_portmap(address_map &map) +{ + daimyojn_portmap(map); + + map(0xe0, 0xe0).r(FUNC(hanakanz_state::technotop_protection_r<0x0d>)); } @@ -4656,22 +4621,6 @@ void hanakanz_state::daimyojn_portmap(address_map &map) Mahjong Dai-Reach ***************************************************************************/ -// 1B40: D4 ED 76 C9 CB -// 1B45: C3 FA 61 DE DC - -uint8_t hanakanz_state::daireach_protection_r() -{ - switch (m_prot_val) - { - case 0xd4: return 0xc3; - case 0xed: return 0xfa; - case 0x76: return 0x61; - case 0xc9: return 0xde; - case 0xcb: return 0xdc; - } - return 0xff; -} - void hanakanz_state::daireach_portmap(address_map &map) { @@ -4694,7 +4643,7 @@ void hanakanz_state::daireach_portmap(address_map &map) map(0x68, 0x68).w(FUNC(hanakanz_state::mjflove_rombank_w)); map(0x6a, 0x6a).nopr().w(FUNC(hanakanz_state::sryudens_rambank_w)); map(0x6c, 0x6c).r(FUNC(hanakanz_state::hanakanz_rand_r)); - map(0x6e, 0x6e).rw(FUNC(hanakanz_state::daireach_protection_r), FUNC(hanakanz_state::daimyojn_protection_w)); + map(0x6e, 0x6e).rw(FUNC(hanakanz_state::technotop_protection_r<0x17>), FUNC(hanakanz_state::protection_w)); map(0x70, 0x70).portr("SYSTEM"); map(0x72, 0x72).r(FUNC(hanakanz_state::daimyojn_keyb1_r)); map(0x74, 0x74).r(FUNC(hanakanz_state::daimyojn_keyb2_r)); @@ -4709,20 +4658,6 @@ void hanakanz_state::daireach_portmap(address_map &map) // 29EE: D4 ED 76 C9 CB // 29F3: 4D 74 EF 50 52 -uint8_t hanakanz_state::hnrose_protection_r() -{ - switch (m_prot_val) - { - case 0xd4: return 0x4d; - case 0xed: return 0x74; - case 0x76: return 0xef; - case 0xc9: return 0x50; - case 0xcb: return 0x52; - } - return 0xff; -} - - void hanakanz_state::hnrose_portmap(address_map &map) { map.global_mask(0xff); @@ -4737,7 +4672,7 @@ void hanakanz_state::hnrose_portmap(address_map &map) map(0x80, 0x8f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); map(0x8a, 0x8b).r(FUNC(hanakanz_state::daimyojn_year_hack_r)); // ? map(0xa0, 0xa0).r(FUNC(hanakanz_state::hanakanz_rand_r)); - map(0xb0, 0xb0).rw(FUNC(hanakanz_state::hnrose_protection_r), FUNC(hanakanz_state::daimyojn_protection_w)); + map(0xb0, 0xb0).rw(FUNC(hanakanz_state::technotop_protection_r<0x99>), FUNC(hanakanz_state::protection_w)); map(0xc0, 0xc0).w(FUNC(hanakanz_state::mjflove_rombank_w)); } @@ -8273,7 +8208,7 @@ static INPUT_PORTS_START( seljan2 ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) // used PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) // used + PORT_DIPNAME( 0x10, 0x00, "More Revealing Attract Mode" ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // 3 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) // used @@ -10078,6 +10013,13 @@ void ddenlovr_state::seljan2(machine_config &config) MSM6242(config, "rtc", XTAL(32'768)).out_int_handler().set(m_maincpu, FUNC(tmpz84c015_device::trg1)); } +void ddenlovr_state::jongoh(machine_config &config) +{ + seljan2(config); + + subdevice("maincpu")->set_addrmap(AS_IO, &hanakanz_state::jongoh_portmap); +} + void hanakanz_state::daireach(machine_config &config) { seljan2(config); @@ -10136,6 +10078,13 @@ void hanakanz_state::daimyojn(machine_config &config) MSM6242(config, "rtc", XTAL(32'768)).out_int_handler().set("maincpu:kp69", FUNC(kp69_device::ir_w<1>)); } +void hanakanz_state::momotaro(machine_config &config) +{ + daimyojn(config); + + m_maincpu->set_addrmap(AS_IO, &hanakanz_state::momotaro_portmap); +} + void hanakanz_state::hnrose(machine_config &config) { daimyojn(config); @@ -11175,6 +11124,21 @@ ROM_START( mjreach1 ) ROM_LOAD( "52601.1c", 0x00000, 0x80000, CRC(52666107) SHA1(1e1c17b1da7ded5fc52422c7e569ef02af1ee11d) ) // 2 banks ROM_END +ROM_START( mjreach1a ) + ROM_REGION( 0x80000, "maincpu", 0 ) // ! KL5C80 Code ! + ROM_LOAD( "52602-1.5b", 0x00000, 0x80000, CRC(493cb0ff) SHA1(e133a7eba736c0b8b1b52c7ee0200d1284faab7b) ) + + ROM_REGION( 0x500000, "blitter", 0 ) + ROM_LOAD16_BYTE( "52604.8b", 0x000000, 0x100000, CRC(6ce01bb4) SHA1(800043d8203ab5560ed0b24e0a4e01c14b6a3ac0) ) + ROM_LOAD16_BYTE( "52603.8c", 0x000001, 0x100000, CRC(16d2c169) SHA1(3e50b1109c86d0e8f931ce5a3abf20d807ebabba) ) + ROM_LOAD16_BYTE( "52606.10b", 0x200000, 0x100000, CRC(07fe5dae) SHA1(221ec21c2d84497af5b769d7409f8775be933783) ) + ROM_LOAD16_BYTE( "52605.10c", 0x200001, 0x100000, CRC(b5d57163) SHA1(d6480904bd72d298d48fbcb251b902b0b994cab1) ) + ROM_LOAD16_BYTE( "52608.12b", 0x400000, 0x080000, CRC(2f93dde4) SHA1(8efaa920e485f50ef7f4396cc8c47dfbfc97bd01) ) + ROM_LOAD16_BYTE( "52607.12c", 0x400001, 0x080000, CRC(5e685c4d) SHA1(57c99fb791429d0edb7416cffb4d1d1eb34a2813) ) + + ROM_REGION( 0x80000, "oki", 0 ) // samples + ROM_LOAD( "52601.1c", 0x00000, 0x80000, CRC(52666107) SHA1(1e1c17b1da7ded5fc52422c7e569ef02af1ee11d) ) // 2 banks +ROM_END /*************************************************************************** 麻雀中華兒女 (Máquè zhōnghuá érnǚ) @@ -12576,10 +12540,19 @@ ROM_START( seljan2 ) ROM_LOAD( "5571.1c", 0x000000, 0x80000, CRC(5a8cd45c) SHA1(25ca573b8ba226fb3f2de48c57b5ced6884eaa63) ) // = 50201.1c (sryudens) ROM_END -void hanakanz_state::init_momotaro() -{ - m_maincpu->space(AS_IO).install_read_handler(0xe0, 0xe0, read8smo_delegate(*this, FUNC(hanakanz_state::momotaro_protection_r))); -} +ROM_START( jongoh ) + ROM_REGION( 0x90000+0x8000+16*0x1000, "maincpu", 0 ) // Z80 Code + ROM_LOAD( "t80324.4c", 0x00000, 0x80000, CRC(31c5864b) SHA1(7a89c4023868a51e3bb9b3eeffa17602d285e0d0) ) + ROM_RELOAD( 0x10000, 0x80000 ) + + ROM_REGION( 0x500000, "blitter", 0 ) + ROM_LOAD( "t80334.11c", 0x000000, 0x200000, CRC(530aeea8) SHA1(605c14db86fde1cab91d223a21a89d571d5555ef) ) + // 200000-3fffff empty + ROM_LOAD( "t8034.13c", 0x400000, 0x100000, CRC(260fb823) SHA1(0b63172e95d9d3fa99d34097f728427076281174) ) + + ROM_REGION( 0x80000, "oki", 0 ) // Samples + ROM_LOAD( "t8031.1c", 0x000000, 0x80000, CRC(5a8cd45c) SHA1(25ca573b8ba226fb3f2de48c57b5ced6884eaa63) ) // same as sryudens, seljan2 +ROM_END /*************************************************************************** @@ -12783,7 +12756,8 @@ GAME( 1997, hkagerou, 0, hkagerou, hkagerou, hanakanz_state, empty_ GAME( 1998, mjchuuka, 0, mjchuuka, mjchuuka, hanakanz_state, empty_init, ROT0, "Dynax", "Maque Zhonghua Ernu (Taiwan)", MACHINE_NO_COCKTAIL ) -GAME( 1998, mjreach1, 0, mjreach1, mjreach1, hanakanz_state, empty_init, ROT0, "Nihon System", "Mahjong Reach Ippatsu (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1998, mjreach1, 0, mjreach1, mjreach1, hanakanz_state, empty_init, ROT0, "Nihon System", "Mahjong Reach Ippatsu (Japan, NM526-NSI)", MACHINE_NO_COCKTAIL ) +GAME( 1998, mjreach1a, mjreach1, mjreach1, mjreach1, hanakanz_state, empty_init, ROT0, "Nihon System", "Mahjong Reach Ippatsu (Japan, NM526-01)", MACHINE_NO_COCKTAIL ) GAME( 1999, jongtei, 0, jongtei, jongtei, hanakanz_state, empty_init, ROT0, "Dynax", "Mahjong Jong-Tei (Japan, NM532-01)", MACHINE_NO_COCKTAIL ) GAME( 2000, jongteia, jongtei, jongteia, jongtei, hanakanz_state, empty_init, ROT0, "Dynax (Techno-Top license)", "Mahjong Jong-Tei (Japan, Techno-Top license)", MACHINE_NO_COCKTAIL ) @@ -12792,10 +12766,12 @@ GAME( 2000, mjgnight, 0, mjgnight, mjgnight, hanakanz_state, empty_ GAME( 2000, hnrose, 0, hnrose, hnrose, hanakanz_state, empty_init, ROT0, "Techno-Top", "Hanafuda Night Rose (Japan, TSM008-04)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL ) +GAME( 2000, jongoh, 0, jongoh, seljan2, ddenlovr_state, empty_init, ROT0, "Techno-Top", "Mahjong Jongoh (Japan, TTL800-03-04)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL ) // needs verifying of inputs, outputs + GAME( 2001, daireach, 0, daireach, seljan2, hanakanz_state, empty_init, ROT0, "Techno-Top", "Mahjong Dai-Reach (Japan, TSM012-C01)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL ) GAME( 2002, daimyojn, 0, daimyojn, daimyojn, hanakanz_state, empty_init, ROT0, "Dynax / Techno-Top / Techno-Planning", "Mahjong Daimyojin (Japan, T017-PB-00)", MACHINE_NO_COCKTAIL ) GAME( 2002, mjtenho, 0, daimyojn, daimyojn, hanakanz_state, empty_init, ROT0, "Techno-Top", "Mahjong Tenho (Japan, P016B-000)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL ) -GAME( 2004, momotaro, 0, daimyojn, daimyojn, hanakanz_state, init_momotaro, ROT0, "Techno-Top", "Mahjong Momotarou (Japan, T027-RB-01)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 2004, momotaro, 0, momotaro, daimyojn, hanakanz_state, empty_init, ROT0, "Techno-Top", "Mahjong Momotarou (Japan, T027-RB-01)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 62d0101acef..2d941b22eb6 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -17655,6 +17655,7 @@ hnrose hparadis htengoku janshinp +jongoh jongtei jongteia kotbinsp @@ -17674,6 +17675,7 @@ mjmyunivh mjmywrld mjmywrldt mjreach1 +mjreach1a mjschuka mjtenho mmpanic @@ -34889,6 +34891,7 @@ av2mj2rg finalbny galkaika galkoku +galkokua hyouban ladymakr mcontest diff --git a/src/mame/nichibutsu/nbmj8991.cpp b/src/mame/nichibutsu/nbmj8991.cpp index 59d643ccfbf..d43d9b24c7b 100644 --- a/src/mame/nichibutsu/nbmj8991.cpp +++ b/src/mame/nichibutsu/nbmj8991.cpp @@ -1866,6 +1866,34 @@ ROM_START( galkoku ) ROM_LOAD( "gkok_20.bin", 0x100000, 0x10000, CRC(36107e6f) SHA1(0872d0ae2add129bdd036754fd5d751627bc142e) ) ROM_END +ROM_START( galkokua ) + ROM_REGION( 0x10000, "maincpu", 0 ) /* program */ + ROM_LOAD( "gkok_01.bin", 0x00000, 0x10000, CRC(16899efa) SHA1(3078b80fb4b173320f5563b15fe79e4ae6a4dab5) ) + + ROM_REGION( 0x20000, "voice", 0 ) /* voice */ + ROM_LOAD( "gkok_02.bin", 0x00000, 0x10000, CRC(3dec7469) SHA1(e464899e7f2e1a6bf88260c6bc746df94623ef0e) ) + ROM_LOAD( "gkok_03.bin", 0x10000, 0x10000, CRC(66f51b21) SHA1(bac5f9e20bd2eac63e5bbd72178e39b4892b0ba4) ) + + ROM_REGION( 0x110000, "gfx1", 0 ) /* gfx */ + ROM_LOAD( "gkok_04.bin", 0x000000, 0x10000, CRC(741815a5) SHA1(5ddb61d88738d15e1f68df2deaa0b1612803a23e) ) + ROM_LOAD( "gkok_05.bin", 0x010000, 0x10000, CRC(28a17cd8) SHA1(dfb4066898bd66b8306252695e9f801c8e44f25e) ) + ROM_LOAD( "gkok_06.bin", 0x020000, 0x10000, CRC(8eac2143) SHA1(75cd75de761144b31dec387083f5a11846e6809f) ) + ROM_LOAD( "gkok_07.bin", 0x030000, 0x10000, CRC(de5f3f20) SHA1(dd0eab9e3a7422638836859c7d7317855d7dc62e) ) + ROM_LOAD( "gkok_08.bin", 0x040000, 0x10000, CRC(f3348126) SHA1(b2633e4ed2395f8978d88959632166d66bd29e0b) ) + ROM_LOAD( "gkok_09.bin", 0x050000, 0x10000, CRC(691f2521) SHA1(79eb7b8dab160f30af7cb81a565d5ecdce341930) ) + ROM_LOAD( "gkok_10.bin", 0x060000, 0x10000, CRC(f1b0b411) SHA1(b77b6026dd3daa42e00820c2a473ede3b7733c3e) ) + ROM_LOAD( "gkok_11.bin", 0x070000, 0x10000, CRC(ef42af9e) SHA1(c1972aa92ffdcb5f462256cee2a3e38df8922d64) ) + ROM_LOAD( "gkok_12.bin", 0x080000, 0x10000, CRC(e2b32195) SHA1(208ff04f951ba1cd5f96a484820e12005ed66e5f) ) + ROM_LOAD( "gkok_13.bin", 0x090000, 0x10000, CRC(83d913a1) SHA1(831dc254e1300b98c236dc934bbe3c91e42dea60) ) + ROM_LOAD( "gkok_14.bin", 0x0a0000, 0x10000, CRC(04c97de9) SHA1(03d5be851107e0e736c2ae3bb8cec0be0783174b) ) + ROM_LOAD( "gkok_15.bin", 0x0b0000, 0x10000, CRC(3845280d) SHA1(1b86a396c9f2affb9431bc878405d87cb30b4ac0) ) + ROM_LOAD( "gkok_16.bin", 0x0c0000, 0x10000, CRC(7472a7ce) SHA1(321ee7caeb76e6963f33ebed3db1d81bdff4de30) ) + ROM_LOAD( "gkok_17.bin", 0x0d0000, 0x10000, CRC(92b605a2) SHA1(3f84579a855a89361ae0449c4dd4cbfe9cbae06e) ) + ROM_LOAD( "gkok_18.bin", 0x0e0000, 0x10000, CRC(8bb7bdcc) SHA1(0d025f9b96a606fa777d11602863c118862450d5) ) + ROM_LOAD( "gkok_19.bin", 0x0f0000, 0x10000, CRC(b1b4643a) SHA1(d4b7f1cad1b544d2800d7358ff90b7fa19ff0ca2) ) + ROM_LOAD( "gkok_20.bin", 0x100000, 0x10000, CRC(36107e6f) SHA1(0872d0ae2add129bdd036754fd5d751627bc142e) ) +ROM_END + ROM_START( hyouban ) // Medal Series No. 124N, according to dip sheet ROM_REGION( 0x10000, "maincpu", 0 ) /* program */ ROM_LOAD( "1.3d", 0x00000, 0x10000, CRC(307b4f7e) SHA1(303e1818cb12ede15dadec165f18a6a33d564d5e) ) @@ -2103,7 +2131,8 @@ ROM_START( av2mj2rg ) ROM_END -GAME( 1989, galkoku, 0, galkoku, galkoku, nbmj8991_state, empty_init, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Gal no Kokuhaku (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, galkoku, 0, galkoku, galkoku, nbmj8991_state, empty_init, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Gal no Kokuhaku (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, galkokua, galkoku, galkoku, galkoku, nbmj8991_state, empty_init, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Gal no Kokuhaku (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, hyouban, galkoku, hyouban, hyouban, nbmj8991_state, empty_init, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Hyouban Musume (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, galkaika, 0, galkaika, galkaika, nbmj8991_state, init_galkaika, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Gal no Kaika (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, tokyogal, 0, tokyogal, tokyogal, nbmj8991_state, init_tokyogal, ROT180, "Nichibutsu", "Tokyo Gal Zukan (Japan)", MACHINE_SUPPORTS_SAVE )