summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/igs/igs_m036.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/igs/igs_m036.cpp')
-rw-r--r--src/mame/igs/igs_m036.cpp381
1 files changed, 343 insertions, 38 deletions
diff --git a/src/mame/igs/igs_m036.cpp b/src/mame/igs/igs_m036.cpp
index 7943d4d9414..81575003673 100644
--- a/src/mame/igs/igs_m036.cpp
+++ b/src/mame/igs/igs_m036.cpp
@@ -1,5 +1,6 @@
// license:BSD-3-Clause
-// copyright-holders:David Haywood
+// copyright-holders: David Haywood
+
/* IGS Gambling games using IGS036 CPU
pgm2.cpp also uses this CPU
@@ -58,11 +59,16 @@ check more info and photo from cjdh2.zip!!!
*/
#include "emu.h"
-#include "cpu/arm7/arm7.h"
-#include "cpu/arm7/arm7core.h"
+
#include "igs036crypt.h"
+
+#include "cpu/arm7/arm7.h"
+#include "sound/okim6295.h"
+#include "sound/tt5665.h"
+
#include "emupal.h"
#include "screen.h"
+#include "speaker.h"
namespace {
@@ -74,22 +80,22 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu") { }
- void igs_m036_tt(machine_config &config);
- void igs_m036(machine_config &config);
+ void igs_m036_tt(machine_config &config) ATTR_COLD;
+ void igs_m036(machine_config &config) ATTR_COLD;
- void init_igs_m036();
- void init_cjdh2();
- void init_cjddzsp();
- void init_igsm312();
+ void init_igs_m036() ATTR_COLD;
+ void init_cjdh2() ATTR_COLD;
+ void init_cjddzsp() ATTR_COLD;
+ void init_igsm312() ATTR_COLD;
private:
uint32_t screen_update_igs_m036(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
- void pgm_create_dummy_internal_arm_region(void);
+ void pgm_create_dummy_internal_arm_region() ATTR_COLD;
- void igs_m036_map(address_map &map);
+ void igs_m036_map(address_map &map) ATTR_COLD;
};
@@ -184,6 +190,24 @@ ROM_START( cjdh2c )
ROM_LOAD( "cjdh2_cg2.u24", 0x800100, 0x800100, CRC(f9c747c3) SHA1(c4ff67e9da1322536841b8a9e9d9cfea6d7ebc4a) )
ROM_END
+ROM_START( cjdh2d ) // PCB-0674-03-IK. IGS036 + M6295 compatible + Altera EPM3032ALC44-10N + 2 banks of 8 DIP switches
+ ROM_REGION( 0x04000, "maincpu", 0 )
+ // Internal ROM of IGS036 ARM based MCU
+ ROM_LOAD( "d7_igs036.u18", 0x00000, 0x4000, NO_DUMP )
+
+ ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "cjdh2_s311cn.u33", 0x000000, 0x200000, CRC(a6fb72f0) SHA1(1d9583eafaea21d5ec078b7f2e3dc426571a9550) )
+
+ ROM_REGION( 0x200000, "oki", 0 ) // samples
+ ROM_LOAD( "ik_sp_u20.u20", 0x000000, 0x200000, CRC(14a20112) SHA1(de49ecbc6ffd89e8d2e0a4cf1f4cba1a78810d42) )
+
+ ROM_REGION( 0x1400000, "gfx", 0 )
+ ROM_LOAD( "ik-cg_u5.u5", 0x0000000, 0x0800000, CRC(701b4197) SHA1(e84d9d79db5eb8641b196f95b260079abaf12572) )
+ ROM_LOAD( "ik-cg_u9.u9", 0x0800000, 0x0200000, CRC(ca402fa0) SHA1(058fc76dd712535e7c2f7851604b4c561cc5494b) )
+ ROM_LOAD( "ik-cg_u24.u24", 0x0a00000, 0x0800000, CRC(6699d712) SHA1(812a4aa43066a78c1691317005099ffc4526696b) )
+ ROM_LOAD( "ik-cg_u28.u28", 0x1200000, 0x0200000, CRC(53226179) SHA1(59cdb1762416c593dd00aa6ab9c3bbdbd80479f4) )
+ROM_END
+
ROM_START( cjddzsp )
ROM_REGION( 0x04000, "maincpu", 0 )
@@ -193,7 +217,7 @@ ROM_START( cjddzsp )
ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "cjddzsp_s122cn.u18", 0x000000, 0x200000, CRC(4a42aad6) SHA1(96805e5bfbd50686177fe50020229ea8787ade17) )
- ROM_REGION( 0x800100, "oki", 0 ) // TT5665 samples
+ ROM_REGION( 0x800100, "tt5665", 0 ) // samples
ROM_LOAD( "cjddzsp_s122cn.u27", 0x000000, 0x800100, CRC(797e5ba3) SHA1(784fae513ac8cfd1143f0d0ce0936f74e2e64e48))
ROM_REGION( 0x800100*2, "gfx", 0 )
@@ -202,6 +226,75 @@ ROM_START( cjddzsp )
ROM_END
+/*******************************************************************
+Long Hu Zheng Ba Te Bie Ban, IGS, 2009
+Que Huang Zheng Ba, IGS, 2007
+(Year not shown on title screens but date shown on error screen when program ROM removed)
+Hardware Info by Guru
+---------------------
+
+PCB-0701-01-IU (Que Huang Zheng Ba)
+PCB-0799-02-IU-1 (Long Hu Zheng Ba Te Bie Ban)
+|----| |-------------------------------| |------|
+| |--| JAMMA |--| |
+| ULN2004 TDA1519 |
+|-| 7407 ULN2004 VOL |
+ | LV245 LV245 4.952MHz |
+|-| LV245 LV245 EPM3032 |------| UPC844|
+| 20MHz |TT5665| U43|
+|1 |------| |------| QS3257 |
+|8 |IGS036| QS3257 |
+|W | | |
+|A |------| U27 CON3|
+|Y 7404 32.768kHz |
+| 7404 U28 |
+|-| HC132 U18 |
+ | SW4 16LV1024 U29 |
+ | LV245 JP8|
+|-| BATT U30 |
+| 1117-18 SW1 |
+|10 TYN408G SW2 U31 |
+|WAY 1084-33 SW3 |
+| JP7|
+|-------------------------------------------------|
+Notes:
+ IGS036 - Custom SOC in BGA package with internal ROM. SOC is possibly ARM-based. Clock input 20.000MHz
+ TT5665 - Tontek Design Technology TT5665 8-Channel (or 4-Channel L/R Stereo) ADPCM Voice Synthesis LSI
+ Clock input 4.952MHz, pin 25 (SS) high, S0 and S1 low. Game sound is very low quality.
+ EPM3032 - Altera EPM3032 CPLD in PLCC44 package
+ Sticker on Que Huang Zheng Ba: "IU U23"
+ Sticker on Long Hu Zheng Ba Te Bie Ban: "IU-1 U23"
+ TDA1519 - NXP TDA1519 6W Stereo Power Amplifier IC
+ UPC844 - NEC uPC844 Quad Operational Amplifier
+ QS3257 - IDT QS3257 Mux/Demux (=74LS257)
+ ULN2004 - Texas Instruments ULN2004 Darlington Array
+ LV245 - 74LV245A Octal Bus Transceiver
+ 7407 - 7407D Hex Buffer
+ 7404 - 7404D Hex Inverter
+ HC132 - 74HC132D Quadruple 2-Input Positive-NAND Schmitt Trigger
+ 16LV1024 - Chiplus CS16LV10243GCR70 64kBx16-bit SRAM
+ U43 - PS/2 Port (not populated on PCB-0799)
+ CON3 - DB9 Port (not populated on PCB-0799)
+ JP7 - 4-pin power connector
+ JP8 - 10-pin connector (not populated, might be for JTAG programming)
+ BATT - 3V Coin Battery
+ SW1-3 - 8-position DIP Switch
+ SW4 - SPDT Switch (clears high scores/NVRAM)
+ 1117-18 - 1.8V 800mA LDO Regulator
+ 1084-33 - 3.3V 5A LDO Regulator
+ TYN408G - ST TYN408G SCR
+ U18 - EV29LV160AB 2Mx8-bit/1Mx16-bit DIP42 3.3V Flash ROM. ROM data is 16-bit.
+ The ROM is not pin compatible with 27C160 and must be dumped using a custom adapter.
+ This ROM is the game-specific program code. There is common code inside the IGS036 SOC because
+ if the program ROM is removed and booted the screen shows 'PROGRAM ROM ERROR'
+ - Que Huang Zheng Ba: V100CN_U18.U18
+ - Long Hu Zheng Ba Te Bie Ban: S101CN_U18.U18
+ U27-U31 - EV29LV640MT 8Mx8-bit/4Mx16-bit DIP48 Flash ROM (U29 & U31 not populated). ROM data is 16-bit.
+ U27 - Audio Samples for TT5665
+ Other ROMs - Graphics
+
+*******************************************************************/
+
ROM_START( lhtb ) // PCB-0799-02-IU-1, every ROM label starts with 龍虎特別版
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS036 ARM based MCU
@@ -210,13 +303,31 @@ ROM_START( lhtb ) // PCB-0799-02-IU-1, every ROM label starts with 龍虎特別
ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "s-101cn.u18", 0x000000, 0x200000, CRC(1020f4b5) SHA1(953bb776a804738c624a1dca336e42beb10238f7) )
- ROM_REGION( 0x800100, "oki", 0 ) // TT5665 samples
- ROM_LOAD( "s101cn_u27.u27", 0x000000, 0x800100, CRC(1b114177) SHA1(acd9969806a49fd6696782fd629b24bbc22f43af) ) // 1xxxxxxxxxxxxxxxxxxxxxxx = 0x00
+ ROM_REGION( 0x800000, "tt5665", 0 ) // samples
+ ROM_LOAD( "s101cn_u27.u27", 0x000000, 0x800000, CRC(8db377ae) SHA1(769c146104d8577b337d5aa8b388b9c8b726dd21) )
- ROM_REGION( 0x800100*2, "gfx", 0 )
- ROM_LOAD( "s101cn_u28.u28", 0x000000, 0x800100, CRC(d823ccba) SHA1(b1c69536baab36331dc5ed9ea12dad4f53b7422e) ) // 1xxxxxxxxxxxxxxxxxxxxxxx = 0x00
+ ROM_REGION( 0x800000*2, "gfx", 0 )
+ ROM_LOAD( "s101cn_u28.u28", 0x000000, 0x800000, CRC(75029040) SHA1(d1d0fd696a6c2819034b089e5d2e97b6d5ccc5f9) )
+ // u29 not populated
+ ROM_LOAD( "s101cn_u30.u30", 0x800000, 0x800000, CRC(4024bd96) SHA1(c3f1c616c9783560a5ea0f8727e39c20c64d46f2) )
+ // u31 not populated, etched CG1-L on PCB
+ROM_END
+
+ROM_START( qhzb ) // PCB-0701-01-IU
+ ROM_REGION( 0x04000, "maincpu", 0 )
+ // Internal ROM of IGS036 ARM based MCU
+ ROM_LOAD( "qhzb_igs036", 0x00000, 0x4000, NO_DUMP )
+
+ ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "v100cn_u18.u18", 0x000000, 0x200000, CRC(8c2733b7) SHA1(226768eead8d7754b2468384e5e691812d0ac96d) )
+
+ ROM_REGION( 0x800000, "tt5665", 0 ) // samples
+ ROM_LOAD( "sp_u27.u27", 0x000000, 0x800000, CRC(624ff81a) SHA1(99f06f725b761418e88198493276982e367bd432) ) // 1xxxxxxxxxxxxxxxxxxxxxx = 0x00
+
+ ROM_REGION( 0x800000*2, "gfx", 0 )
+ ROM_LOAD( "cg_u28.u28", 0x000000, 0x800000, CRC(04105f6f) SHA1(e917825c2304bba3362aecbfab73d2e2b340478e) ) // FIXED BITS (xxxxxxxx0000xxxx)
// u29 not populated
- ROM_LOAD( "s101cn_u30.u30", 0x800100, 0x800100, CRC(3077bca5) SHA1(3850cd108f8704be549de82af20b385ccc7f999e) ) // 1xxxxxxxxxxxxxxxxxxxxxxx = 0x00
+ ROM_LOAD( "cg_u30.u30", 0x800000, 0x800000, CRC(37c7d442) SHA1(81682aa1ba6912919c85ee8f68c2e9821f4a3171) )
// u31 not populated, etched CG1-L on PCB
ROM_END
@@ -229,13 +340,13 @@ ROM_START( lhzb3in1 )
ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "lhzb3in1_v100cn.u17", 0x000000, 0x200000, CRC(03caaba4) SHA1(701b97d791e9329bad2ddc4d365748e65c430758) )
- ROM_REGION( 0x1000000, "oki", 0 ) // TT5665 samples
+ ROM_REGION( 0x1000000, "tt5665", 0 ) // samples
ROM_LOAD( "lhzb3in1_v100cn.u29", 0x000000, 0x800000, CRC(d8c160a9) SHA1(4b567571764db679a265ae075136128db495acdd) )
- ROM_LOAD( "lhzb3in1_v100cn.u28", 0x800000, 0x800000, CRC(68624630) SHA1(56e638d59c4533136f69db22f562b39120b516c1) )
+ ROM_LOAD( "lhzb3in1_v100cn.u28", 0x800000, 0x800000, CRC(68624630) SHA1(56e638d59c4533136f69db22f562b39120b516c1) ) // 11xxxxxxxxxxxxxxxxxxxxx = 0x00
ROM_REGION( 0x2000000, "gfx", 0 )
ROM_LOAD( "lhzb3in1_v100cn.u30", 0x0000000, 0x800000, CRC(fb4124d7) SHA1(324fe2ade17b0ee9833decf2cab9dd4654a04cec) )
- ROM_LOAD( "lhzb3in1_v100cn.u31", 0x0800000, 0x800000, CRC(4572ff90) SHA1(5d4a40ddec1505edc8a1e35130abd7f2c97b1094) )
+ ROM_LOAD( "lhzb3in1_v100cn.u31", 0x0800000, 0x800000, CRC(4572ff90) SHA1(5d4a40ddec1505edc8a1e35130abd7f2c97b1094) ) // FIXED BITS (xxxxxxxx0000xxxx)
ROM_LOAD( "lhzb3in1_v100cn.u32", 0x1000000, 0x800000, CRC(04fe8ca2) SHA1(039009dd535e1388236bd0fd699eeaf593ae5323) )
ROM_LOAD( "lhzb3in1_v100cn.u33", 0x1800000, 0x800000, CRC(9afa55d1) SHA1(0a19e1c54b271b21fb9931e7c81a9e7d9e77295a) )
ROM_END
@@ -249,10 +360,11 @@ ROM_START( igsm312 )
ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "m312cn.rom", 0x000000, 0x200000, CRC(5069c310) SHA1(d53a2e8acddfbb7afc27c68c0b3167419a3ec3e6) )
- ROM_REGION( 0x800100, "oki", ROMREGION_ERASE00 ) // TT5665 samples
- /* missing */
+ ROM_REGION( 0x800100, "tt5665", ROMREGION_ERASE00 ) // samples
+ // missing
+
ROM_REGION( 0x800100*2, "gfx", ROMREGION_ERASE00 )
- /* missing */
+ // missing
ROM_END
@@ -265,7 +377,7 @@ ROM_START( mghammer )
ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "v_100jp.u26", 0x000000, 0x200000, CRC(d78a4dbb) SHA1(149e68c1294b31f4b039d2cd36d36f17873c247e) )
- ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 ) // TT5665 samples
+ ROM_REGION( 0x1000000, "tt5665", ROMREGION_ERASE00 ) // samples
ROM_LOAD( "sp_u17.u17", 0x000000, 0x800000, CRC(dd9b43b6) SHA1(5fa3191a2ebb0ea7fb737e44b1f651987c6c1bbb) )
ROM_LOAD( "sp_u18.u18", 0x800000, 0x800000, CRC(0998e0c6) SHA1(bfa2b42248dc52f83682bbdec7bb7aaa53b4ac29) )
@@ -284,7 +396,177 @@ ROM_START( mghammer )
ROM_END
-void igs_m036_state::pgm_create_dummy_internal_arm_region(void)
+ROM_START( lhfy )
+ ROM_REGION( 0x04000, "maincpu", 0 )
+ // Internal ROM of IGS036 ARM based MCU
+ ROM_LOAD( "lhfy_igs036", 0x00000, 0x4000, NO_DUMP )
+
+ ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "v-206cn.u11", 0x000000, 0x200000, CRC(45bd9c9f) SHA1(3a9b06bf9c66520136522d67ed12f800569580f5) )
+
+ ROM_REGION( 0x800000, "tt5665", 0 ) // samples
+ ROM_LOAD( "v-206cn.u19", 0x000000, 0x800000, CRC(f7990ed4) SHA1(e8a72bc0926911ba5c079b02dd324ac060e8c768) ) // same as lhzbgqb
+
+ ROM_REGION( 0x10000000, "gfx", ROMREGION_ERASE00 )
+ // 4x 64MB flash ROMs (U1, U2, U3, U4) mounted onto a custom SODIMM at CN1 with a sticker "CG V206CN"
+ ROM_LOAD( "cg_v206cn.u1", 0x0000000, 0x4000000, NO_DUMP )
+ ROM_LOAD( "cg_v206cn.u2", 0x4000000, 0x4000000, NO_DUMP )
+ ROM_LOAD( "cg_v206cn.u3", 0x8000000, 0x4000000, NO_DUMP )
+ ROM_LOAD( "cg_v206cn.u4", 0xc000000, 0x4000000, NO_DUMP )
+ROM_END
+
+
+ROM_START( lhzbgqb )
+ ROM_REGION( 0x04000, "maincpu", 0 )
+ // Internal ROM of IGS036 ARM based MCU
+ ROM_LOAD( "lhzbgqb_igs036", 0x00000, 0x4000, NO_DUMP )
+
+ ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "v-105cn.u11", 0x000000, 0x200000, CRC(cecbb560) SHA1(262d7df19b57e57aa50cc241ddc25090411d6b74) )
+
+ ROM_REGION( 0x800000, "tt5665", 0 ) // samples
+ ROM_LOAD( "v105cn_u19.u19", 0x000000, 0x800000, CRC(f7990ed4) SHA1(e8a72bc0926911ba5c079b02dd324ac060e8c768) ) // same as lhfy
+
+ ROM_REGION( 0x10000000, "gfx", ROMREGION_ERASE00 )
+ // 4x 64MB flash ROMs (U1, U2, U3, U4) mounted onto a custom SODIMM at CN1 with a sticker "CG V105CN"
+ ROM_LOAD( "cg_v105cn.u1", 0x0000000, 0x4000000, NO_DUMP )
+ ROM_LOAD( "cg_v105cn.u2", 0x4000000, 0x4000000, NO_DUMP )
+ ROM_LOAD( "cg_v105cn.u3", 0x8000000, 0x4000000, NO_DUMP )
+ ROM_LOAD( "cg_v105cn.u4", 0xc000000, 0x4000000, NO_DUMP )
+ROM_END
+
+
+// this PCB has IGS036 MCU, R5F21256SN MCU, TT5665, ALTERA EPM3032ALC44-10N (stickered IS U15)
+// ROM labels actually are written "super 70's..."
+ROM_START( super70s )
+ ROM_REGION( 0x04000, "maincpu", 0 )
+ // Internal ROM of IGS036 ARM based MCU
+ ROM_LOAD( "f9_igs036.u28", 0x00000, 0x4000, NO_DUMP )
+
+ ROM_REGION( 0x8000, "mcu", 0 )
+ ROM_LOAD( "r5f21256sn.u32", 0x0000, 0x8000, NO_DUMP )
+
+ // this seems to be dumped half sized if compared to other dumps in the driver of this same kind of ROM
+ ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "super_70s_v-100us.u31", 0x000000, 0x100000, BAD_DUMP CRC(60020aa3) SHA1(f6be4f9588192ef1e57182e5a61228440e5cfa64) ) // EV29LV160, BADADDR xxxxxxxxxxxxxxxxxx-x
+
+ // this seems to be dumped half sized if compared to other dumps in the driver of this same kind of ROM
+ ROM_REGION( 0x400000, "tt5665", 0 ) // samples
+ ROM_LOAD( "super_70s_v100us_u27.u27", 0x000000, 0x400000, BAD_DUMP CRC(a57fbc1c) SHA1(c7b0c72e678cd4120f576283eca8d718c058994c) ) // EV29LV640, 11xxxxxxxxxxxxxxxxxxxx = 0x00
+
+ // these seem to be dumped half sized if compared to other dumps in the driver of this same kind of ROM
+ ROM_REGION( 0x800000, "gfx", 0 )
+ ROM_LOAD( "super_70s_v100us_u25.u25", 0x000000, 0x400000, BAD_DUMP CRC(41baefa5) SHA1(1817bf43b3f72df35d50ef1ceb151d77ecfb988b) ) // EV29LV640
+ ROM_LOAD( "super_70s_v100us_u26.u26", 0x400000, 0x400000, BAD_DUMP CRC(39bb6c75) SHA1(bc52e51f1ad3588253cb42eb61baa11d0720c5a5) ) // EV29LV640
+ROM_END
+
+
+// 金花争霸 (Jīn Huā Zhēngbà)
+ROM_START( jhzb )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ // Internal ROM of IGS036 ARM based MCU
+ ROM_LOAD( "jhzb_igs036", 0x0000, 0x4000, NO_DUMP ) // stickered K7
+
+ ROM_REGION( 0x10000, "xa:mcu", 0 ) // MX10EXAQC (80C51 XA based MCU)
+ ROM_LOAD( "xa", 0x00000, 0x10000, NO_DUMP )
+
+ ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "v113cn.u17", 0x000000, 0x200000, CRC(1c08099b) SHA1(125a5302935e8bef8d4a4d8a6db748110bcab692) ) // 11xxxxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION( 0x200000, "oki", 0 ) // samples
+ ROM_LOAD( "v113cn.u26", 0x000000, 0x200000, CRC(99fc5dcd) SHA1(e737299d770b0fc3606085a566ad9fbbaca15ff5) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROM_LOAD( "v113cn-cg0-h.u27", 0x000000, 0x800000, CRC(a8fb40e4) SHA1(074ab61158a0baa5811f7d33792bc71051faeb62) ) // FIXED BITS (xxxxxxxx0000xxxx)
+ ROM_LOAD( "v113cn-cg0-l.u29", 0x800000, 0x800000, CRC(a5f1952c) SHA1(3ae52eb604974414b6b97ff1e0156c39aa05a0cb) )
+ROM_END
+
+
+// 吉祥如意 (Jíxiáng Rúyì)
+ROM_START( jxry )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ // Internal ROM of IGS036 ARM based MCU
+ ROM_LOAD( "jhzb_igs036", 0x0000, 0x4000, NO_DUMP ) // stickered A3
+
+ ROM_REGION( 0x10000, "xa:mcu", 0 ) // MX10EXAQC (80C51 XA based MCU) stickered IL U14
+ ROM_LOAD( "xa", 0x00000, 0x10000, NO_DUMP )
+
+ ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "v-116cn.u20", 0x000000, 0x200000, CRC(a8cd3431) SHA1(b978b2e27fc106a02213b6aa42620fbf287a4d24) )
+
+ ROM_REGION( 0x200000, "oki", 0 ) // samples
+ ROM_LOAD( "sp.u18", 0x000000, 0x200000, CRC(725950e1) SHA1(7226d3e9c2cb149dae598479cddeb12446944a1e) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROM_LOAD( "cg1.u22", 0x000000, 0x800000, CRC(bfbedd8c) SHA1(f4d97e9633de6dd87f11eade5752881d61a28a38) ) // FIXED BITS (xxxxxxxx0000xxxx)
+ ROM_LOAD( "cg2.u24", 0x800000, 0x800000, CRC(c40627e5) SHA1(795217425533c569bad868b16e5b31ba29c587fb) )
+ROM_END
+
+
+// 双龙抢珠特别版 (Shuāng Lóng Qiǎng Zhū Tèbié Bǎn)
+ROM_START( slqzsp )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ // Internal ROM of IGS036 ARM based MCU
+ ROM_LOAD( "jhzb_igs036", 0x0000, 0x4000, NO_DUMP ) // stickered F8
+
+ ROM_REGION( 0x10000, "xa:mcu", 0 ) // MX10EXAQC (80C51 XA based MCU) stickered IU U23
+ ROM_LOAD( "xa", 0x00000, 0x10000, NO_DUMP )
+
+ ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "v104cn.u18", 0x000000, 0x200000, CRC(7819aa1a) SHA1(c63b375916d0009e065b6239bcc752a56d2ee127) )
+
+ ROM_REGION( 0x800000, "tt5665", 0 ) // samples
+ ROM_LOAD( "v104cn.u27", 0x000000, 0x800000, CRC(440617cc) SHA1(87019bde5f0cf2215b6e28434a0593d0b910cbed) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROM_LOAD( "v104cn.u28", 0x000000, 0x800000, CRC(e102b951) SHA1(619cf2aa77996e1831d6ff2116d6ae8045b9066c) )
+ ROM_LOAD( "v104cn.u30", 0x800000, 0x800000, CRC(eecf61c6) SHA1(59d330508482dcc0971c5255c6c70c83ba72323c) )
+ROM_END
+
+
+// 鲨鱼大亨 (Shāyú Dàhēng)
+ROM_START( sydh ) // PCB-0802-03-JL
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ // Internal ROM of IGS036 ARM based MCU
+ ROM_LOAD( "jhzb_igs036", 0x0000, 0x4000, NO_DUMP ) // stickered C3
+
+ ROM_REGION( 0x10000, "xa:mcu", 0 ) // MX10EXAQC (80C51 XA based MCU)
+ ROM_LOAD( "xa", 0x00000, 0x10000, NO_DUMP )
+
+ ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "v-104cn.u20", 0x000000, 0x200000, CRC(43219633) SHA1(0f709c700c661f20a3f47c6df5a35aff9eb05bc6) )
+
+ ROM_REGION( 0x800000, "tt5665", 0 ) // samples
+ ROM_LOAD( "v-104cn.u31", 0x000000, 0x800000, CRC(794a4ebf) SHA1(b6ea2228fc943dc65514d113c36a1e9d69564e9a) ) // 1xxxxxxxxxxxxxxxxxxxxxx = 0x00
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROM_LOAD( "v-104cn.u33", 0x000000, 0x800000, CRC(cd8a1633) SHA1(2f63167fe282fc648d9e22c6a32d593f41546ba3) )
+ ROM_LOAD( "v-104cn.u34", 0x800000, 0x800000, CRC(cb33469a) SHA1(cf2c52ccc688880574452bc806b80519eeff0298) )
+ROM_END
+
+
+// 逍遥斗地主 (Xiāoyáo Dòu Dìzhǔ)
+ROM_START( xyddz )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ // Internal ROM of IGS036 ARM based MCU
+ ROM_LOAD( "jhzb_igs036", 0x0000, 0x4000, NO_DUMP ) // stickered K8
+
+ ROM_REGION( 0x10000, "xa:mcu", 0 ) // MX10EXAQC (80C51 XA based MCU)
+ ROM_LOAD( "xa", 0x00000, 0x10000, NO_DUMP )
+
+ ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "xyddz.u18", 0x000000, 0x200000, CRC(5c569b88) SHA1(760bb48bb4739ae6f34921b8ed499174a8960001) )
+
+ ROM_REGION( 0x800000, "tt5665", 0 ) // samples
+ ROM_LOAD( "m2401.u27", 0x000000, 0x800000, CRC(cfaa177a) SHA1(b1ba246a51c6ec451bcd04392460f7a7ccb75cda) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROM_LOAD( "m2403-cg0-l.u30", 0x000000, 0x800000, CRC(3065ee91) SHA1(9bb1a0a739c244513f7785305aff13c9314a5d16) )
+ ROM_LOAD( "s2402-cg0-h.u28", 0x800000, 0x800000, CRC(b0f43dd4) SHA1(5d82fdf3bd5eef1791e7204a040ede06c6028187) )
+ROM_END
+
+
+void igs_m036_state::pgm_create_dummy_internal_arm_region()
{
uint16_t *temp16 = (uint16_t *)memregion("maincpu")->base();
for (int i = 0; i < 0x4000 / 2; i += 2)
@@ -321,7 +603,7 @@ void igs_m036_state::pgm_create_dummy_internal_arm_region(void)
void igs_m036_state::igs_m036(machine_config &config)
{
- IGS036(config, m_maincpu, 20'000'000);
+ IGS036(config, m_maincpu, 20_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &igs_m036_state::igs_m036_map);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -333,13 +615,15 @@ void igs_m036_state::igs_m036(machine_config &config)
screen.set_palette("palette");
PALETTE(config, "palette").set_entries(0x200);
- // sound hardware (OKI)
+
+ SPEAKER(config, "speaker").front_center();
+ OKIM6295(config, "oki", 1'000'000, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "speaker", 1.0); // clock and pin 7 not verified
}
void igs_m036_state::igs_m036_tt(machine_config &config)
{
- IGS036(config, m_maincpu, 20'000'000);
+ IGS036(config, m_maincpu, 20_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &igs_m036_state::igs_m036_map);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -351,7 +635,9 @@ void igs_m036_state::igs_m036_tt(machine_config &config)
screen.set_palette("palette");
PALETTE(config, "palette").set_entries(0x200);
- // sound hardware (TT5665)
+
+ SPEAKER(config, "speaker").front_center();
+ TT5665(config, "tt5665", 4.952_MHz_XTAL, tt5665_device::ss_state::SS_HIGH, 0).add_route(1, "speaker", 1.0);
}
@@ -394,17 +680,36 @@ void igs_m036_state::init_igsm312()
***************************************************************************/
-GAME( 200?, cjdh2, 0, igs_m036, igs_m036, igs_m036_state, init_cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CN)", MACHINE_IS_SKELETON )
-GAME( 200?, cjdh2a, cjdh2, igs_m036, igs_m036, igs_m036_state, init_cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CNA)", MACHINE_IS_SKELETON )
-GAME( 200?, cjdh2b, cjdh2, igs_m036, igs_m036, igs_m036_state, init_cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CNB)", MACHINE_IS_SKELETON )
-GAME( 200?, cjdh2c, cjdh2, igs_m036, igs_m036, igs_m036_state, init_cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V215CN)", MACHINE_IS_SKELETON )
+GAME( 200?, cjdh2, 0, igs_m036, igs_m036, igs_m036_state, init_cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 200?, cjdh2a, cjdh2, igs_m036, igs_m036, igs_m036_state, init_cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CNA)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 200?, cjdh2b, cjdh2, igs_m036, igs_m036, igs_m036_state, init_cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CNB)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 200?, cjdh2c, cjdh2, igs_m036, igs_m036, igs_m036_state, init_cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V215CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 200?, cjdh2d, cjdh2, igs_m036, igs_m036, igs_m036_state, init_cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CN, alternate GFX ROMs)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+
+GAME( 200?, cjddzsp, 0, igs_m036_tt, igs_m036, igs_m036_state, init_cjddzsp, ROT0, "IGS", "Super Dou Di Zhu Special (V122CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+
+GAME( 2007, qhzb, 0, igs_m036_tt, igs_m036, igs_m036_state, init_cjddzsp, ROT0, "IGS", "Que Huang Zheng Ba (V100CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+
+GAME( 2009, lhtb, 0, igs_m036_tt, igs_m036, igs_m036_state, init_cjddzsp, ROT0, "IGS", "Long Hu Tebie Ban (V101CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // 龍虎特別版 - Lónghǔ tèbié bǎn
+
+GAME( 200?, lhzb3in1, 0, igs_m036_tt, igs_m036, igs_m036_state, init_cjddzsp, ROT0, "IGS", "Long Hu Zhengba San He Yi (V100CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // 龙虎争霸三合一
+
+GAME( 200?, igsm312, 0, igs_m036_tt, igs_m036, igs_m036_state, init_igsm312, ROT0, "IGS", "unknown 'IGS 6POKER2' game (V312CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // there's very little code and no gfx ROMs, might be a 'set/clear' chip for a gambling game.
+
+GAME( 200?, super70s, 0, igs_m036_tt, igs_m036, igs_m036_state, init_igsm312, ROT0, "IGS", "Super 70's (V100US)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+
+GAME( 200?, jhzb, 0, igs_m036, igs_m036, igs_m036_state, init_igs_m036, ROT0, "IGS", "Jin Hua Zhengba (V113CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+
+GAME( 200?, jxry, 0, igs_m036, igs_m036, igs_m036_state, init_igs_m036, ROT0, "IGS", "Jixiang Ruyi (V116CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+
+GAME( 200?, slqzsp, 0, igs_m036_tt, igs_m036, igs_m036_state, init_igs_m036, ROT0, "IGS", "Shuang Long Qiang Zhu Tebie Ban (V104CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
-GAME( 200?, cjddzsp, 0, igs_m036_tt, igs_m036, igs_m036_state, init_cjddzsp, ROT0, "IGS", "Super Dou Di Zhu Special (V122CN)", MACHINE_IS_SKELETON )
+GAME( 200?, sydh, 0, igs_m036_tt, igs_m036, igs_m036_state, init_igs_m036, ROT0, "IGS", "Shayu Daheng (V104CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
-GAME( 200?, lhtb, 0, igs_m036_tt, igs_m036, igs_m036_state, init_cjddzsp, ROT0, "IGS", "Long Hu Tebie Ban (V101CN)", MACHINE_IS_SKELETON ) // 龍虎特別版 - Lónghǔ tèbié bǎn
+GAME( 200?, xyddz, 0, igs_m036_tt, igs_m036, igs_m036_state, init_igs_m036, ROT0, "IGS", "Xiaoyao Dou Dizhu", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
-GAME( 200?, lhzb3in1, 0, igs_m036_tt, igs_m036, igs_m036_state, init_cjddzsp, ROT0, "IGS", "Long Hu Zhengba San He Yi (V100CN)", MACHINE_IS_SKELETON ) // 龙虎争霸三合一
+GAME( 2010, lhfy, 0, igs_m036_tt, igs_m036, igs_m036_state, init_igsm312, ROT0, "IGS", "Long Hu Feng Yun Gao Qing Ban (V206CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
-GAME( 200?, igsm312, 0, igs_m036_tt, igs_m036, igs_m036_state, init_igsm312, ROT0, "IGS", "unknown 'IGS 6POKER2' game (V312CN)", MACHINE_IS_SKELETON ) // there's very little code and no gfx ROMs, might be a 'set/clear' chip for a gambling game.
+GAME( 2010, lhzbgqb, 0, igs_m036_tt, igs_m036, igs_m036_state, init_igsm312, ROT0, "IGS", "Long Hu Zheng Ba Gao Qing Ban (V105CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
-GAME( 2015, mghammer, 0, igs_m036_tt, igs_m036, igs_m036_state, init_igsm312, ROT0, "IGS / Enheart", "Medal Get Hammer (V100JP)", MACHINE_IS_SKELETON )
+GAME( 2015, mghammer, 0, igs_m036_tt, igs_m036, igs_m036_state, init_igsm312, ROT0, "IGS / Enheart", "Medal Get Hammer (V100JP)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )