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]
This commit is contained in:
Ivan Vangelista 2025-05-23 19:13:31 +02:00
parent c6054f59e2
commit c093bd1d5f
3 changed files with 146 additions and 138 deletions

View File

@ -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 Xor> 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<uint8_t> 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 Xor>
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<tmpz84c015_device>("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 )

View File

@ -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

View File

@ -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 )