From 19b8551131b5194141816d81e30a815b76f36303 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 25 Jan 2022 19:12:25 +0100 Subject: [PATCH] New working clones ------------------ Coco Louco [Jorge Silva] Dongfang Zhi Zhu (Hong Kong, V011H, set 2) [Jorge Silva] Puzzle & Action: Ichidant-R (World) (bootleg) [Jorge Silva] Clones promoted to working ---------------------------- Super Poker (v114IT) [Ivan Vangelista] Super Poker (v116IT-MX) [Ivan Vangelista] --- src/mame/drivers/4enraya.cpp | 26 +++++--- src/mame/drivers/igs011.cpp | 91 ++++++++++++++++------------ src/mame/drivers/segac2.cpp | 13 ++++ src/mame/drivers/spoker.cpp | 111 ++++++++++++++++++++++++++++++----- src/mame/mame.lst | 3 + 5 files changed, 184 insertions(+), 60 deletions(-) diff --git a/src/mame/drivers/4enraya.cpp b/src/mame/drivers/4enraya.cpp index d77ee43a6cc..fcd88aae270 100644 --- a/src/mame/drivers/4enraya.cpp +++ b/src/mame/drivers/4enraya.cpp @@ -48,7 +48,7 @@ Video : No scrolling , no sprites. - 32x32 Tilemap stored in VRAM (10 bits/tile (tile numebr 0-1023)) + 32x32 Tilemap stored in VRAM (10 bits/tile (tile number 0-1023)) 3 gfx ROMS ROM1 - R component (ROM ->(parallel in) shift register 74166 (serial out) -> jamma output @@ -87,7 +87,7 @@ around the center. (each ghost represent a number). Bet using START, and once done, press UP (deal), to allow the pacman eat all - ghosts, revealing the five numbers (like italian poker games without cards). + ghosts, revealing the five numbers (like Italian poker games without cards). Now you have an arrow as cursor. Place it under the each number you want to discard and press START to eliminate the number and place the representative @@ -102,7 +102,7 @@ If you're playing the Double-Up, choose left or right for Big and Small. If you win, you'll get the bet amount x2. If you lose, your pacman will die. - Coin with A or B to exit the gambling game and play the ultra-adictive + Coin with A or B to exit the gambling game and play the ultra-addictive pacman front game again!... *************************************************************************** @@ -142,7 +142,7 @@ 1x oscillator 18.432 MHz. 1x 8 DIP Switches bank (near ay8910). - 1x Volume Pot (betweeen the audio amp and ay8910). + 1x Volume Pot (between the audio amp and ay8910). 1x Motorola MCT1413 (High Current Darlington Transistor Array, same as ULN2003). 1x 2x28 Edge connector (pins 1-2-27-28 from component side are GND). @@ -764,6 +764,17 @@ ROM_START(unkpacgb) ROM_IGNORE(0x4000) ROM_END +ROM_START(unkpacgc) + ROM_REGION(0x10000, "maincpu", 0) + ROM_LOAD( "4", 0x0000, 0x2000, CRC(9f620694) SHA1(957d5c6636d40a74579d3f20be8f0b7e58516935) ) + ROM_LOAD( "5", 0x8000, 0x2000, CRC(b107ad7e) SHA1(33ab0a63f8a57dd7efd5c5efae7c6e8bda1a65cc) ) + + ROM_REGION( 0x6000, "gfx1", 0 ) + ROM_LOAD( "1", 0x2000, 0x2000, CRC(d00b04ea) SHA1(e65901d8586507257d74ab103001207e28fa28af) ) + ROM_LOAD( "2", 0x4000, 0x2000, CRC(4a123a3d) SHA1(26300b8af0d0df0023a153a212699727311d1b74) ) + ROM_LOAD( "3", 0x0000, 0x2000, CRC(f7cd9de0) SHA1(e0a6b316811ef7c3d3aeb853a9c50f9fdf1f2ff2) ) +ROM_END + /* Unknown 'Space Invaders' gambling game. All roms are 0x8000 but only the last 0x2000 of each is used. @@ -860,9 +871,10 @@ GAME( 1990, 4enrayaa, 4enraya, _4enraya, 4enraya, _4enraya_state, empty_init, R GAME( 1992?, tourpgum, 0, tourpgum, tourpgum, unk_gambl_state, empty_init, ROT0, u8"Paradise Automatique / TourVisión", u8"unknown Paradise Automatique / TourVisión bowling themed poker game with gum prizes (France)", MACHINE_SUPPORTS_SAVE ) GAME( 1992?, strker, 0, tourpgum, tourpgum, unk_gambl_state, empty_init, ROT0, "", "Striker", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 'RAM NO GOOD', if bypassed it resets after coining up -GAME( 199?, unkpacg, 0, unkpacg, unkpacg, unk_gambl_enc_state, empty_init, ROT0, "", "unknown 'Pac-Man' gambling game (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 199?, unkpacgb, unkpacg, unkpacg, unkpacg, unk_gambl_enc_state, empty_init, ROT0, "", "unknown 'Pac-Man' gambling game (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 199?, unkpacga, unkpacg, unkpacga, unkpacg, unk_gambl_enc_state, empty_init, ROT0, "IDI SRL", "Pucman", MACHINE_SUPPORTS_SAVE ) +GAME( 199?, unkpacg, 0, unkpacg, unkpacg, unk_gambl_enc_state, empty_init, ROT0, "", "unknown 'Pac-Man' gambling game (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 199?, unkpacgb, unkpacg, unkpacg, unkpacg, unk_gambl_enc_state, empty_init, ROT0, "", "unknown 'Pac-Man' gambling game (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, unkpacgc, unkpacg, unkpacg, unkpacg, unk_gambl_state, empty_init, ROT0, "", "Coco Louco", MACHINE_SUPPORTS_SAVE ) +GAME( 199?, unkpacga, unkpacg, unkpacga, unkpacg, unk_gambl_enc_state, empty_init, ROT0, "IDI SRL", "Pucman", MACHINE_SUPPORTS_SAVE ) GAME( 199?, unksig, 0, unkpacg, unkfr, unk_gambl_enc_state, empty_init, ROT0, "", "unknown 'Space Invaders' gambling game (set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 199?, unksiga, unksig, unkpacg, unkfr, unk_gambl_enc_state, empty_init, ROT0, "", "unknown 'Space Invaders' gambling game (set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/igs011.cpp b/src/mame/drivers/igs011.cpp index a7f879de1ae..d4586d2e3f8 100644 --- a/src/mame/drivers/igs011.cpp +++ b/src/mame/drivers/igs011.cpp @@ -16,27 +16,28 @@ Custom : IGS011 (blitter, protection) NVRAM : Battery for main RAM --------------------------------------------------------------------------- -Year + Game PCB Sound Chips +Year + Game PCB Sound Chips --------------------------------------------------------------------------- -95 Da Ban Cheng NO-T0084-1 M6295 IGS011 8255 -95 Long Hu Bang V033C NO-T0093 M6295 IGS011 8255 -95 Long Hu Bang V035C ? -95 Mj Ryukobou NO-T0094 M6295 IGS011 8255 -95 Dragon World V010C NO-0105-4 M6295 YM3812 IGS011 IGS003 -95 Dragon World V011H ? -95 Dragon World V020J ? M6295 YM3812 IGS011 IGS003 IGS012 -95 Dragon World V021J ? -95 Dragon World V021O NO-0105-1 M6295 YM3812 IGS011 IGS003 IGS012 -95 Dragon World V030O NO-0105-1 M6295 YM3812 IGS011 IGS003 -97 Dragon World V040O NO-0105-5 M6295 YM3812 IGS011 IGS003c -97 Dragon World V040K NO-0105-5 M6295 YM3812 IGS011 IGS003c IGS012 -96 Virtua Bowling V100JCM NO-0101-? ICS2115 IGS011 IGS003e IGS012 -96 Virtua Bowling V101XCM NO-0101-1 ICS2115 IGS011 IGS003e IGS012 -96 Virtua Bowling V101HJS NO-0101-? ICS2115 IGS011 IGS003e?IGS012 -96 Long Hu Bang II V185H NO-0115 M6295 YM2413 IGS011 8255 -96 Wanli Changcheng ? -96 Xingyun Man Guan ? -98 Mj Nenrikishu SP V250J NO-0115-5 M6295 YM2413 IGS011 8255 +95 Da Ban Cheng NO-T0084-1 M6295 IGS011 8255 +95 Long Hu Bang V033C NO-T0093 M6295 IGS011 8255 +95 Long Hu Bang V035C ? +95 Mj Ryukobou NO-T0094 M6295 IGS011 8255 +95 Dragon World V010C NO-0105-4 M6295 YM3812 IGS011 IGS003 +95 Dragon World V011H (set 1) ? +95 Dragon World V011H (set 2) NO-T0105 M6295 YM3812 IGS011 IGS003 IGS012 +95 Dragon World V020J ? M6295 YM3812 IGS011 IGS003 IGS012 +95 Dragon World V021J ? +95 Dragon World V021O NO-0105-1 M6295 YM3812 IGS011 IGS003 IGS012 +95 Dragon World V030O NO-0105-1 M6295 YM3812 IGS011 IGS003 +97 Dragon World V040O NO-0105-5 M6295 YM3812 IGS011 IGS003c +97 Dragon World V040K NO-0105-5 M6295 YM3812 IGS011 IGS003c IGS012 +96 Virtua Bowling V100JCM NO-0101-? ICS2115 IGS011 IGS003e IGS012 +96 Virtua Bowling V101XCM NO-0101-1 ICS2115 IGS011 IGS003e IGS012 +96 Virtua Bowling V101HJS NO-0101-? ICS2115 IGS011 IGS003e?IGS012 +96 Long Hu Bang II V185H NO-0115 M6295 YM2413 IGS011 8255 +96 Wanli Changcheng ? +96 Xingyun Man Guan ? +98 Mj Nenrikishu SP V250J NO-0115-5 M6295 YM2413 IGS011 8255 --------------------------------------------------------------------------- To do: @@ -4400,6 +4401,17 @@ ROM_START( drgnwrldv11h ) ROM_LOAD( "igs-s0302.u43", 0x00000, 0x40000, CRC(fde63ce1) SHA1(cc32d2cace319fe4d5d0aa96d7addb2d1def62f2) ) ROM_END +ROM_START( drgnwrldv11ha ) + ROM_REGION( 0x80000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "u3", 0x00000, 0x80000, CRC(b68113c4) SHA1(618fbf8ef71fcab5cd887e2d06f08169aec9e59f) ) // label not readable + + ROM_REGION( 0x400000, "blitter", 0 ) + ROM_LOAD( "igs-d0301.u39", 0x000000, 0x400000, CRC(78ab45d9) SHA1(c326ee9f150d766edd6886075c94dea3691b606d) ) + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "china-dr-sp.u43", 0x00000, 0x40000, CRC(fde63ce1) SHA1(cc32d2cace319fe4d5d0aa96d7addb2d1def62f2) ) +ROM_END + /*************************************************************************** 中國龍/Zhōngguó Lóng (China, V010C) @@ -4918,22 +4930,23 @@ ROM_END ***************************************************************************/ -GAME( 1997, drgnwrld, 0, drgnwrld, drgnwrld, igs011_state, init_drgnwrld, ROT0, "IGS", "Dragon World (World, V040O)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, drgnwrldv40k, drgnwrld, drgnwrld_igs012, drgnwrldc, igs011_state, init_drgnwrldv40k, ROT0, "IGS", "Dragon World (Korea, V040K)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, drgnwrldv30, drgnwrld, drgnwrld, drgnwrld, igs011_state, init_drgnwrldv30, ROT0, "IGS", "Dragon World (World, V030O)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, drgnwrldv21, drgnwrld, drgnwrld_igs012, drgnwrld, igs011_state, init_drgnwrldv21, ROT0, "IGS", "Dragon World (World, V021O)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, drgnwrldv21j, drgnwrld, drgnwrld_igs012, drgnwrldj, igs011_state, init_drgnwrldv21j, ROT0, "IGS / Alta", "Zhongguo Long (Japan, V021J)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, drgnwrldv20j, drgnwrld, drgnwrld_igs012, drgnwrldj, igs011_state, init_drgnwrldv20j, ROT0, "IGS / Alta", "Zhongguo Long (Japan, V020J)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, drgnwrldv11h, drgnwrld, drgnwrld, drgnwrldc, igs011_state, init_drgnwrldv11h, ROT0, "IGS", "Dongfang Zhi Zhu (Hong Kong, V011H)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, drgnwrldv10c, drgnwrld, drgnwrld, drgnwrldc, igs011_state, init_drgnwrldv10c, ROT0, "IGS", "Zhongguo Long (China, V010C)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, lhb, 0, lhb, lhb, igs011_state, init_lhb, ROT0, "IGS", "Long Hu Bang (China, V035C)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, lhbv33c, lhb, lhb, lhb, igs011_state, init_lhbv33c, ROT0, "IGS", "Long Hu Bang (China, V033C)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, dbc, lhb, lhb, lhb, igs011_state, init_dbc, ROT0, "IGS", "Da Ban Cheng (Hong Kong, V027H)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, ryukobou, lhb, lhb, lhb, igs011_state, init_ryukobou, ROT0, "IGS / Alta", "Mahjong Ryukobou (Japan, V030J)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, lhb2, 0, lhb2, lhb2, igs011_state, init_lhb2, ROT0, "IGS", "Long Hu Bang II (Hong Kong, V185H)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xymg, 0, xymg, xymg, igs011_state, init_xymg, ROT0, "IGS", "Xingyun Man Guan (China, V651C)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, wlcc, xymg, wlcc, wlcc, igs011_state, init_wlcc, ROT0, "IGS", "Wanli Changcheng (China, V638C)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, vbowl, 0, vbowl, vbowl, igs011_state, init_vbowl, ROT0, "IGS", "Virtua Bowling (World, V101XCM)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, vbowlj, vbowl, vbowl, vbowlj, igs011_state, init_vbowlj, ROT0, "IGS / Alta", "Virtua Bowling (Japan, V100JCM)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, vbowlhk, vbowl, vbowlhk, vbowlhk, igs011_state, init_vbowlhk, ROT0, "IGS / Tai Tin Amusement", "Virtua Bowling (Hong Kong, V101HJS)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, nkishusp, lhb2, nkishusp, nkishusp, igs011_state, init_nkishusp, ROT0, "IGS / Alta", "Mahjong Nenrikishu SP (Japan, V250J)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, drgnwrld, 0, drgnwrld, drgnwrld, igs011_state, init_drgnwrld, ROT0, "IGS", "Dragon World (World, V040O)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, drgnwrldv40k, drgnwrld, drgnwrld_igs012, drgnwrldc, igs011_state, init_drgnwrldv40k, ROT0, "IGS", "Dragon World (Korea, V040K)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, drgnwrldv30, drgnwrld, drgnwrld, drgnwrld, igs011_state, init_drgnwrldv30, ROT0, "IGS", "Dragon World (World, V030O)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, drgnwrldv21, drgnwrld, drgnwrld_igs012, drgnwrld, igs011_state, init_drgnwrldv21, ROT0, "IGS", "Dragon World (World, V021O)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, drgnwrldv21j, drgnwrld, drgnwrld_igs012, drgnwrldj, igs011_state, init_drgnwrldv21j, ROT0, "IGS / Alta", "Zhongguo Long (Japan, V021J)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, drgnwrldv20j, drgnwrld, drgnwrld_igs012, drgnwrldj, igs011_state, init_drgnwrldv20j, ROT0, "IGS / Alta", "Zhongguo Long (Japan, V020J)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, drgnwrldv11h, drgnwrld, drgnwrld, drgnwrldc, igs011_state, init_drgnwrldv11h, ROT0, "IGS", "Dongfang Zhi Zhu (Hong Kong, V011H, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, drgnwrldv11ha, drgnwrld, drgnwrld_igs012, drgnwrldc, igs011_state, init_drgnwrldv40k, ROT0, "IGS", "Dongfang Zhi Zhu (Hong Kong, V011H, set 2)", MACHINE_SUPPORTS_SAVE ) // different encryption and with IGS012 +GAME( 1995, drgnwrldv10c, drgnwrld, drgnwrld, drgnwrldc, igs011_state, init_drgnwrldv10c, ROT0, "IGS", "Zhongguo Long (China, V010C)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, lhb, 0, lhb, lhb, igs011_state, init_lhb, ROT0, "IGS", "Long Hu Bang (China, V035C)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, lhbv33c, lhb, lhb, lhb, igs011_state, init_lhbv33c, ROT0, "IGS", "Long Hu Bang (China, V033C)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, dbc, lhb, lhb, lhb, igs011_state, init_dbc, ROT0, "IGS", "Da Ban Cheng (Hong Kong, V027H)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, ryukobou, lhb, lhb, lhb, igs011_state, init_ryukobou, ROT0, "IGS / Alta", "Mahjong Ryukobou (Japan, V030J)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, lhb2, 0, lhb2, lhb2, igs011_state, init_lhb2, ROT0, "IGS", "Long Hu Bang II (Hong Kong, V185H)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xymg, 0, xymg, xymg, igs011_state, init_xymg, ROT0, "IGS", "Xingyun Man Guan (China, V651C)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, wlcc, xymg, wlcc, wlcc, igs011_state, init_wlcc, ROT0, "IGS", "Wanli Changcheng (China, V638C)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, vbowl, 0, vbowl, vbowl, igs011_state, init_vbowl, ROT0, "IGS", "Virtua Bowling (World, V101XCM)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, vbowlj, vbowl, vbowl, vbowlj, igs011_state, init_vbowlj, ROT0, "IGS / Alta", "Virtua Bowling (Japan, V100JCM)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, vbowlhk, vbowl, vbowlhk, vbowlhk, igs011_state, init_vbowlhk, ROT0, "IGS / Tai Tin Amusement", "Virtua Bowling (Hong Kong, V101HJS)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, nkishusp, lhb2, nkishusp, nkishusp, igs011_state, init_nkishusp, ROT0, "IGS / Alta", "Mahjong Nenrikishu SP (Japan, V250J)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/segac2.cpp b/src/mame/drivers/segac2.cpp index cf3d6307e40..9b404301090 100644 --- a/src/mame/drivers/segac2.cpp +++ b/src/mame/drivers/segac2.cpp @@ -2272,6 +2272,18 @@ ROM_START( ichir ) /* Ichidant-R (Puzzle & Action 2) (c)1994 Sega (World) */ ROM_END +ROM_START( ichirbl ) // bootleg of the World version, only difference is the protection checks are NOPed out + ROM_REGION( 0x200000, "maincpu", 0 ) + ROM_LOAD16_BYTE( "2.f11", 0x000000, 0x080000, CRC(b8201c2e) SHA1(95ac035ffd5948745324d855ecffdb7d2ff9f0fb) ) + ROM_LOAD16_BYTE( "1.f10", 0x000001, 0x080000, CRC(af0dd811) SHA1(75b1f51ad93f99933037ffff4106c92f9c2393e6) ) + ROM_LOAD16_BYTE( "4.f8", 0x100000, 0x080000, CRC(85d73722) SHA1(7ebe81b4d6c89f87f60200a3a8cddb07d581adef) ) + ROM_LOAD16_BYTE( "3.f9", 0x100001, 0x080000, CRC(bc3bbf25) SHA1(e760ad400bc183b38e9787d88c8ac084fbe2ae21) ) + + ROM_REGION( 0x080000, "upd", 0 ) + ROM_LOAD( "2.e3", 0x000000, 0x080000, CRC(fc7b0da5) SHA1(46770aa7e19b4f8a183be3f433c48ad677b552b1) ) +ROM_END + + ROM_START( ichirk ) /* Ichidant-R (Puzzle & Action 2) (c)1994 Sega (Korea) */ ROM_REGION( 0x200000, "maincpu", 0 ) /* Again the part numbers are quite strange for the Korean verison */ @@ -2897,6 +2909,7 @@ GAME( 1994, stkclmns, 0, segac2, stkclmns, segac2_state, init_st GAME( 1994, stkclmnsj, stkclmns, segac2, stkclmns, segac2_state, init_stkclmnj, ROT0, "Sega", "Stack Columns (Japan)", 0 ) GAME( 1994, ichir, 0, segac2, ichir, segac2_state, init_ichir, ROT0, "Sega", "Puzzle & Action: Ichidant-R (World)", 0 ) +GAME( 1994, ichirbl, ichir, segac2, ichir, segac2_state, init_noprot, ROT0, "Sega", "Puzzle & Action: Ichidant-R (World) (bootleg)", 0 ) GAME( 1994, ichirk, ichir, segac2, ichir, segac2_state, init_ichirk, ROT0, "Sega", "Puzzle & Action: Ichidant-R (Korea)", 0 ) GAME( 1994, ichirj, ichir, segac2, ichir, segac2_state, init_ichirj, ROT0, "Sega", "Puzzle & Action: Ichidant-R (Japan)", 0 ) GAME( 1994, ichirjbl, ichir, segac, ichir, segac2_state, init_ichirjbl, ROT0, "bootleg", "Puzzle & Action: Ichidant-R (Japan) (bootleg)", 0 ) // C board, no samples diff --git a/src/mame/drivers/spoker.cpp b/src/mame/drivers/spoker.cpp index 7b5f9443dfe..c29d04e6c9d 100644 --- a/src/mame/drivers/spoker.cpp +++ b/src/mame/drivers/spoker.cpp @@ -28,12 +28,14 @@ ***************************************************************************/ #include "emu.h" + #include "cpu/z180/z180.h" #include "cpu/z80/z80.h" #include "machine/i8255.h" +#include "machine/nvram.h" #include "sound/okim6295.h" #include "sound/ymopl.h" -#include "machine/nvram.h" + #include "emupal.h" #include "screen.h" #include "speaker.h" @@ -58,9 +60,11 @@ public: { } void spoker(machine_config &config); + void spokeru(machine_config &config); void _3super8(machine_config &config); void init_spkleftover(); + void init_spk114it(); void init_spk116it(); void init_3super8(); @@ -113,7 +117,9 @@ private: uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void _3super8_portmap(address_map &map); void spoker_map(address_map &map); + void spokeru_map(address_map &map); void spoker_portmap(address_map &map); + void spokeru_portmap(address_map &map); }; @@ -281,6 +287,12 @@ void spoker_state::spoker_map(address_map &map) map(0x0f400, 0x0ffff).ram().share("nvram"); } +void spoker_state::spokeru_map(address_map &map) // TODO: implement other differences +{ + map(0x00000, 0x0efff).rom(); + map(0x0f000, 0x0ffff).ram().share("nvram"); +} + void spoker_state::spoker_portmap(address_map &map) { map(0x0000, 0x003f).ram(); // Z180 internal regs @@ -297,6 +309,28 @@ void spoker_state::spoker_portmap(address_map &map) map(0x7000, 0x7fff).ram().w(FUNC(spoker_state::fg_color_w)).share(m_fg_color_ram); } +void spoker_state::spokeru_portmap(address_map &map) +{ + map(0x0000, 0x003f).ram(); // Z180 internal regs + map(0x2000, 0x23ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // should be good + map(0x2400, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); // should be good + map(0x3000, 0x33ff).ram().w(FUNC(spoker_state::bg_tile_w)).share(m_bg_tile_ram); // should be good + map(0x4000, 0x4000).portr("DSW1"); // should be good + map(0x4001, 0x4001).portr("DSW2"); // should be good + map(0x4002, 0x4002).portr("DSW3"); // should be good + map(0x5080, 0x5080).portr("BUTTONS2"); // should be good + map(0x5081, 0x5081).portr("SERVICE"); // should be good + map(0x5082, 0x5082).portr("COINS"); // should be good + //map(0x5083, 0x5083).portr(""); + map(0x5090, 0x5090).w(FUNC(spoker_state::nmi_and_coins_w)); // ? + map(0x5091, 0x5091).w(FUNC(spoker_state::leds_w)); // ? + map(0x5092, 0x5092).portr("BUTTONS1").w(FUNC(spoker_state::video_and_leds_w)); // ?? + map(0x50b0, 0x50b1).w("ymsnd", FUNC(ym2413_device::write)); // should be good + map(0x50c0, 0x50c0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // should be good + map(0x6000, 0x6fff).ram().w(FUNC(spoker_state::fg_color_w)).share(m_fg_color_ram); // ? + map(0x7000, 0x7fff).ram().w(FUNC(spoker_state::fg_tile_w)).share(m_fg_tile_ram); // should be good +} + void spoker_state::_3super8_portmap(address_map &map) { // map(0x1000, 0x1fff).nopw(); @@ -330,7 +364,7 @@ void spoker_state::_3super8_portmap(address_map &map) Input Ports ***************************************************************************/ -static INPUT_PORTS_START( spoker ) +static INPUT_PORTS_START( spoker ) // this has every hold key which also does another function (i. e. bet, take) PORT_START("DSW1") PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) @@ -441,6 +475,31 @@ static INPUT_PORTS_START( spoker ) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END +static INPUT_PORTS_START( spk114it ) // this has dedicated keys for every function + PORT_INCLUDE(spoker) + + PORT_MODIFY("SERVICE") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no payout here + + PORT_MODIFY("BUTTONS1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) + PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_MODIFY("BUTTONS2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) // Small + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) // Big +INPUT_PORTS_END + + + static INPUT_PORTS_START( 3super8 ) PORT_START("DSW1") PORT_DIPUNKNOWN( 0x01, 0x01 ) @@ -651,6 +710,18 @@ void spoker_state::spoker(machine_config &config) } +void spoker_state::spokeru(machine_config &config) +{ + spoker(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &spoker_state::spokeru_map); + m_maincpu->set_addrmap(AS_IO, &spoker_state::spokeru_portmap); + + config.device_remove("ppi8255_0"); + config.device_remove("ppi8255_1"); +} + + void spoker_state::_3super8(machine_config &config) { spoker(config); @@ -950,6 +1021,18 @@ void spoker_state::init_spk116it() } } +void spoker_state::init_spk114it() +{ + uint8_t *rom = memregion("maincpu")->base(); + for (int A = 0; A < 0x10000; A++) + { + rom[A] ^= 0x02; + if ((A & 0x0120) == 0x0020) rom[A] ^= 0x20; + if ((A & 0x04a0) == 0x04a0) rom[A] ^= 0x02; + if ((A & 0x1208) == 0x1208) rom[A] ^= 0x01; + } +} + void spoker_state::init_3super8() { uint8_t *ROM = memregion("maincpu")->base(); @@ -995,15 +1078,15 @@ void spoker_state::init_3super8() Game Drivers ***************************************************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1996, spk306us, 0, spoker, spoker, spoker_state, init_spkleftover, ROT0, "IGS", "Super Poker (v306US)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver -GAME( 1996, spk205us, spk306us, spoker, spoker, spoker_state, init_spkleftover, ROT0, "IGS", "Super Poker (v205US)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver -GAME( 1996, spk203us, spk306us, spoker, spoker, spoker_state, init_spkleftover, ROT0, "IGS", "Super Poker (v203US)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver -GAME( 1996, spk200ua, spk306us, spoker, spoker, spoker_state, init_spkleftover, ROT0, "IGS", "Super Poker (v200UA)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver -GAME( 1993?, spk116it, spk306us, spoker, spoker, spoker_state, init_spk116it, ROT0, "IGS", "Super Poker (v116IT)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993?, spk116itmx, spk306us, spoker, spoker, spoker_state, empty_init, ROT0, "IGS", "Super Poker (v116IT-MX)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver -GAME( 1993?, spk115it, spk306us, spoker, spoker, spoker_state, init_spk116it, ROT0, "IGS", "Super Poker (v115IT)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993?, spk114it, spk306us, spoker, spoker, spoker_state, empty_init, ROT0, "IGS", "Super Poker (v114IT)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver -GAME( 1996, spk102ua, spk306us, spoker, spoker, spoker_state, init_spkleftover, ROT0, "IGS", "Super Poker (v102UA)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver -GAME( 1996, spk102u, spk306us, spoker, spoker, spoker_state, empty_init, ROT0, "IGS", "Super Poker (v102U)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs decryption, proper machine driver -GAME( 1993?, 3super8, 0, _3super8,3super8, spoker_state, init_3super8, ROT0, "", "3 Super 8 (Italy)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) //roms are badly dumped +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 1996, spk306us, 0, spokeru, spoker, spoker_state, init_spkleftover, ROT0, "IGS", "Super Poker (v306US)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver +GAME( 1996, spk205us, spk306us, spokeru, spoker, spoker_state, init_spkleftover, ROT0, "IGS", "Super Poker (v205US)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver +GAME( 1996, spk203us, spk306us, spokeru, spoker, spoker_state, init_spkleftover, ROT0, "IGS", "Super Poker (v203US)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver +GAME( 1996, spk200ua, spk306us, spokeru, spoker, spoker_state, init_spkleftover, ROT0, "IGS", "Super Poker (v200UA)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver +GAME( 1993?, spk116it, spk306us, spoker, spoker, spoker_state, init_spk116it, ROT0, "IGS", "Super Poker (v116IT)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993?, spk116itmx, spk306us, spoker, spoker, spoker_state, init_spk114it, ROT0, "IGS", "Super Poker (v116IT-MX)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993?, spk115it, spk306us, spoker, spoker, spoker_state, init_spk116it, ROT0, "IGS", "Super Poker (v115IT)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993?, spk114it, spk306us, spoker, spk114it, spoker_state, init_spk114it, ROT0, "IGS", "Super Poker (v114IT)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, spk102ua, spk306us, spokeru, spoker, spoker_state, init_spkleftover, ROT0, "IGS", "Super Poker (v102UA)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver +GAME( 1996, spk102u, spk306us, spokeru, spoker, spoker_state, empty_init, ROT0, "IGS", "Super Poker (v102U)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs decryption, proper machine driver +GAME( 1993?, 3super8, 0, _3super8, 3super8, spoker_state, init_3super8, ROT0, "", "3 Super 8 (Italy)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) //roms are badly dumped diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 59550995d87..4ad0d412dac 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -115,6 +115,7 @@ tourpgum unkpacg // (c) 19?? ??? unkpacga // unkpacgb // +unkpacgc // unksig // 1998? unksiga // 1998? @@ -17160,6 +17161,7 @@ dbc // (c) 199? drgnwrld // (c) 1997 drgnwrldv10c // (c) 1995 drgnwrldv11h // (c) 1995 +drgnwrldv11ha // (c) 1995 drgnwrldv20j // (c) 1995 drgnwrldv21 // (c) 1995 drgnwrldv21j // (c) 1995 @@ -37517,6 +37519,7 @@ columnsj // (c) 1990 Sega columnsu // (c) 1990 Sega headonch // (c) 1994 Sega ichir // (c) 1994 Sega +ichirbl // bootleg ichirj // (c) 1994 Sega ichirjbl // bootleg ichirk // (c) 1994 Sega