From 30f8b80f5774ebf6094f7b06d1461abb3c5536fc Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Fri, 19 Apr 2024 19:09:48 +0200 Subject: New working clones ------------------ Mahjong Reach Part II (Ver. D88) [Sergio Galiano] --- src/mame/dynax/dynax.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++-- src/mame/dynax/dynax.h | 6 +++++- src/mame/mame.lst | 1 + 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/src/mame/dynax/dynax.cpp b/src/mame/dynax/dynax.cpp index 2e19d10a33e..99b62d91ca4 100644 --- a/src/mame/dynax/dynax.cpp +++ b/src/mame/dynax/dynax.cpp @@ -44,6 +44,7 @@ Year + Game Main Board Sub Board CPU Sound 94 Castle Of Dracula Z80 M6295 PROM Blitter is an FPGA 94 Mj Reach CS166P002 TLCS YM2149F YM2413 M6242 PROM Battery 94 Mj Reach (bootleg) bootleg TLCS AY8910 YM2413 M6242 PROM Battery +94 Mj Reach Part II D8810138L1 TLCS YM2149F YM2413 M6242 PROM Battery 94 Maya Z80 YM2203 PROM Blitter is an FPGA 9? Inca Z80 YM2203 PROM --------------------------------------------------------------------------------------------------------------------- @@ -1259,6 +1260,13 @@ void dynax_state::tenkai_banked_map(address_map &map) map(0x90000, 0x97fff).rw(FUNC(dynax_state::tenkai_palette_r), FUNC(dynax_state::tenkai_palette_w)); } +void dynax_state::mjreachp2_map(address_map &map) +{ + tenkai_map(map); + + map(0x10058, 0x10058).w(FUNC(dynax_state::dynax_blit_romregion_w)); +} + void dynax_state::ougonhai_map(address_map &map) // TODO: verify once the protection is beaten { map(0x00000, 0x05fff).rom(); @@ -5048,6 +5056,26 @@ void dynax_state::gekisha(machine_config &config) YM2413(config, "ym2413", XTAL(24'000'000) / 8).add_route(ALL_OUTPUTS, "mono", 1.0); // ? } +/*************************************************************************** + Mahjong Reach Part II +***************************************************************************/ + +void dynax_state::mjreachp2_p8_w(uint8_t data) +{ + m_rombank = (data & 0x08) ? (m_rombank & 0x0f) : (m_rombank & 0x0f) | 0x10; + tenkai_update_rombank(); +} + + +void dynax_state::mjreachp2(machine_config &config) +{ + mjreach(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::mjreachp2_map); + + tmp91640_device &tmp = downcast(*m_maincpu); + tmp.port_write<8>().set(FUNC(dynax_state::mjreachp2_p8_w)); +} /*************************************************************************** @@ -6716,6 +6744,20 @@ ROM_START( mjreachbl ) ROM_RELOAD( 0x180000, 0x80000 ) ROM_END +ROM_START( mjreachp2 ) // BTANB: typo on title screen shows 'Mahjong Reach Rart II' (verified with reference pics) + ROM_REGION( 0x50000, "maincpu", 0 ) + ROM_LOAD( "880q.wc", 0x00000, 0x40000, CRC(a92954bc) SHA1(473778eabd0ecc7b66c7e66ab7eb3d8b40554434) ) + ROM_RELOAD( 0x10000, 0x40000 ) + ROM_LOAD( "mjreach2-mcu.5b", 0x00000, 0x02000, CRC(091a85dc) SHA1(964ccbc13466464c2feee10f807078ec517bed5c) ) // MCU has pins 9 to 12 & 15 to 16 stripped out + + ROM_REGION( 0x200000, "blitter", 0 ) // blitter data + ROM_LOAD( "8802.13b", 0x000000, 0x80000, CRC(90f6036f) SHA1(f92aafd0316dc235e58d615825f3110806bc2cf9) ) + ROM_LOAD( "8803.15b", 0x080000, 0x40000, CRC(ce1fb102) SHA1(ad7da2054b860277fac23da72d261f880224541e) ) + ROM_RELOAD( 0x0c0000, 0x40000 ) + ROM_LOAD( "8802.13b", 0x100000, 0x80000, CRC(90f6036f) SHA1(f92aafd0316dc235e58d615825f3110806bc2cf9) ) + ROM_RELOAD( 0x180000, 0x80000 ) +ROM_END + /*************************************************************************** Mahjong Tenkaigen @@ -7405,8 +7447,9 @@ GAME( 1991, ougonhai, 0, ougonhai, tenkai, dynax_state, empty GAME( 1991, ougonhaib1, ougonhai, ougonhaib1, tenkai, dynax_state, empty_init, ROT0, "bootleg", "Mahjong Ougon no Hai (Japan bootleg set 1, medal)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, ougonhaib2, ougonhai, ougonhaib1, tenkai, dynax_state, empty_init, ROT0, "bootleg", "Mahjong Ougon no Hai (Japan bootleg set 2, medal)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, ougonhaib3, ougonhai, ougonhaib1, tenkai, dynax_state, empty_init, ROT0, "bootleg", "Mahjong Ougon no Hai (Japan bootleg set 3, medal)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1994, mjreach, 0, mjreach, mjreach, dynax_state, empty_init, ROT0, "Dynax", "Mahjong Reach", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, mjreachbl, mjreach, mjreach, mjreach, dynax_state, empty_init, ROT0, "bootleg", "Mahjong Reach (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, mjreach, 0, mjreach, mjreach, dynax_state, empty_init, ROT0, "Dynax", "Mahjong Reach (Ver. 1.00)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, mjreachbl, mjreach, mjreach, mjreach, dynax_state, empty_init, ROT0, "bootleg", "Mahjong Reach (Ver 1.00, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, mjreachp2, mjreach, mjreachp2, mjreach, dynax_state, empty_init, ROT0, "Dynax", "Mahjong Reach Part II (Ver. D88)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, cdracula, 0, cdracula, cdracula, cdracula_state, empty_init, ROT0, "Yun Sung (Escape license)", "Castle Of Dracula", MACHINE_SUPPORTS_SAVE ) // not a Dynax board GAME( 1995, shpeng, 0, sprtmtch, drgpunch, dynax_state, empty_init, ROT0, "WSAC Systems?", "Sea Hunter Penguin", MACHINE_NO_COCKTAIL | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // not a Dynax board. PROMs? GAME( 1995, intrgirl, 0, sprtmtch, drgpunch, dynax_state, empty_init, ROT0, "Barko", "Intergirl", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // not a Dynax board. diff --git a/src/mame/dynax/dynax.h b/src/mame/dynax/dynax.h index 1505131d443..c6dacb0c371 100644 --- a/src/mame/dynax/dynax.h +++ b/src/mame/dynax/dynax.h @@ -12,12 +12,12 @@ #include "dynax_blitter_rev2.h" +#include "machine/74259.h" #include "machine/bankdev.h" #include "machine/gen_latch.h" #include "machine/rstbuf.h" #include "sound/msm5205.h" #include "sound/okim6295.h" -#include "machine/74259.h" #include "emupal.h" #include "screen.h" @@ -45,6 +45,7 @@ public: void ougonhai(machine_config &config); void ougonhaib1(machine_config &config); void mjreach(machine_config &config); + void mjreachp2(machine_config &config); void mjdialq2(machine_config &config); void sprtmtch(machine_config &config); @@ -163,6 +164,7 @@ private: void tenkai_p8_w(uint8_t data); uint8_t tenkai_p8_r(); void ougonhai_p7_w(uint8_t data); + void mjreachp2_p8_w(uint8_t data); void tenkai_6c_w(int state); void tenkai_70_w(int state); void tenkai_blit_romregion_w(uint8_t data); @@ -216,6 +218,8 @@ private: void gekisha_map(address_map &map) ATTR_COLD; void gekisha_banked_map(address_map &map) ATTR_COLD; + void mjreachp2_map(address_map &map) ATTR_COLD; + // misc int m_rombank = 0; uint8_t m_tenkai_p5_val = 0U; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 1450b1108e3..f7079f0d663 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -17461,6 +17461,7 @@ mjembase // "38" Mahjong Electromagnetic Base 1989 Dynax mjfriday // "26" (c) 1989 Dynax mjreach // (c) 1994 Dynax mjreachbl // (c) 1994 bootleg +mjreachp2 // (c) 1994 Dynax neruton // "45" Mahjong Neruton Haikujiradan 1990 Dynax nerutona // "45" Mahjong Neruton Haikujiradan 1990 Dynax ougonhai // "62" (c) 1991 Dynax -- cgit v1.2.3