From a600964004f4cfab1c4e1c0a401c20c9cfa9b4db Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 13 Apr 2020 18:47:56 +0200 Subject: [PATCH] New clones marked as NOT_WORKING -------------------------------- Crazy Bonus 2002 (Ver. 1, set 3) [Ioannis Bampoulas] --- src/mame/drivers/goldstar.cpp | 88 +++++++++++++++++++++++++++++++---- src/mame/includes/goldstar.h | 2 + src/mame/mame.lst | 1 + 3 files changed, 83 insertions(+), 8 deletions(-) diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp index ac90eead2a5..50a9ffe1de9 100644 --- a/src/mame/drivers/goldstar.cpp +++ b/src/mame/drivers/goldstar.cpp @@ -9587,6 +9587,13 @@ void goldstar_state::crazybon(machine_config &config) m_maincpu->set_addrmap(AS_IO, &goldstar_state::crazybon_portmap); } +void goldstar_state::crazybonb(machine_config &config) +{ + pkrmast(config); + + m_maincpu->set_addrmap(AS_OPCODES, &goldstar_state::super972_decrypted_opcodes_map); +} + void unkch_state::megaline(machine_config &config) { /* basic machine hardware */ @@ -9862,6 +9869,27 @@ ROM_START( crazybona ) ROM_LOAD( "82s129.u46", 0x0000, 0x0100, CRC(50ec383b) SHA1(ae95b92bd3946b40134bcdc22708d5c6b0f4c23e) BAD_DUMP ) ROM_END +ROM_START( crazybonb ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "main sub-board 27c512.bin", 0x0000, 0x10000, CRC(1195f0b7) SHA1(bf5f502f5090246f7be605cb588ec889a8127df7) ) + + ROM_REGION( 0x20000, "gfx1", 0 ) // tiles + ROM_LOAD( "k-4 m27c10001 rom 2.bin", 0x00000, 0x20000, CRC(33f4230b) SHA1(26c5aa4f74b221c58390ae1e223a8e879cafa7ca) ) + + ROM_REGION( 0x20000, "gfx2", 0 ) // reels + girl? + ROM_LOAD( "i-4 m27c10001 rom 1.bin", 0x00000, 0x20000, CRC(e375cd4b) SHA1(68888126ff9743cd589f3426205231bc3a896588) ) + + ROM_REGION( 0x10000, "user1", ROMREGION_ERASE00 ) + + /* proms taken from cmv4, probably wrong */ + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "82s129.u84", 0x0000, 0x0100, CRC(0489b760) SHA1(78f8632b17a76335183c5c204cdec856988368b0) BAD_DUMP ) + ROM_LOAD( "82s129.u70", 0x0100, 0x0100, CRC(21eb5b19) SHA1(9b8425bdb97f11f4855c998c7792c3291fd07470) BAD_DUMP ) + + ROM_REGION( 0x100, "proms2", 0 ) + ROM_LOAD( "82s129.u46", 0x0000, 0x0100, CRC(50ec383b) SHA1(ae95b92bd3946b40134bcdc22708d5c6b0f4c23e) BAD_DUMP ) +ROM_END + /* Cherry Gold (Cherry 10) @@ -17615,6 +17643,49 @@ void goldstar_state::init_pkrmast() } } +void goldstar_state::init_crazybonb() +{ + uint8_t *rom = memregion("maincpu")->base(); + + for (int i = 0; i < 0x10000; i++) + { + uint8_t x = rom[i]; + + switch (i & 0x83) + { + case 0x00: x = bitswap<8>(x ^ 0x22, 3, 6, 1, 4, 7, 2, 5, 0); break; + case 0x01: x = bitswap<8>(x ^ 0x2a, 5, 6, 3, 4, 1, 2, 7, 0); break; + case 0x02: x = bitswap<8>(x ^ 0x82, 1, 6, 7, 4, 5, 2, 3, 0); break; + case 0x03: x = bitswap<8>(x ^ 0x2a, 3, 6, 1, 4, 7, 2, 5, 0); break; + case 0x80: x = bitswap<8>(x ^ 0xa8, 5, 6, 3, 4, 1, 2, 7, 0); break; + case 0x81: x = bitswap<8>(x ^ 0x88, 3, 6, 1, 4, 7, 2, 5, 0); break; + case 0x82: x = bitswap<8>(x ^ 0x22, 5, 6, 3, 4, 1, 2, 7, 0); break; + case 0x83: x = bitswap<8>(x ^ 0x88, 1, 6, 7, 4, 5, 2, 3, 0); break; + } + + m_decrypted_opcodes[i] = x; + } + + for (int i = 0; i < 0x10000; i++) + { + uint8_t x = rom[i]; + + switch (i & 0x83) + { + case 0x00: x = bitswap<8>(x ^ 0x80, 1, 6, 7, 4, 5, 2, 3, 0); break; + case 0x01: x = bitswap<8>(x ^ 0xa0, 5, 6, 3, 4, 1, 2, 7, 0); break; + case 0x02: x = bitswap<8>(x ^ 0x02, 5, 6, 3, 4, 1, 2, 7, 0); break; + case 0x03: x = bitswap<8>(x ^ 0xa0, 3, 6, 1, 4, 7, 2, 5, 0); break; + case 0x80: x = bitswap<8>(x ^ 0x82, 3, 6, 1, 4, 7, 2, 5, 0); break; + case 0x81: x = bitswap<8>(x ^ 0x02, 1, 6, 7, 4, 5, 2, 3, 0); break; + case 0x82: x = bitswap<8>(x ^ 0x08, 3, 6, 1, 4, 7, 2, 5, 0); break; + case 0x83: x = bitswap<8>(x ^ 0x80, 5, 6, 3, 4, 1, 2, 7, 0); break; + } + + rom[i] = x; + } +} + void goldstar_state::init_ladylinrb() { uint8_t *rom = memregion("maincpu")->base(); @@ -19252,14 +19323,15 @@ GAME( 200?, ss2001, 0, ss2001, cmaster, cmaster_state, empty_init /* Stealth sets. These have hidden games inside that can be switched to avoid inspections, police or whatever purposes)... */ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 198?, cmpacman, 0, cm, cmpacman, cmaster_state, init_cm, ROT0, "", "Super Pacman (v1.2) + Cherry Master (Corsica, v8.31, set 1)", 0, layout_cmpacman ) // need to press K to switch between games... -GAMEL( 198?, cmpacmana, cmpacman, cm, cmpacman, cmaster_state, init_cm, ROT0, "", "Super Pacman (v1.2) + Cherry Master (Corsica, v8.31, set 2)", 0, layout_cmpacman ) // need to press K to switch between games... -GAMEL( 198?, cmtetris, 0, cm, cmtetris, cmaster_state, init_cm, ROT0, "", "Tetris + Cherry Master (Corsica, v8.01, set 1)", 0, layout_cmpacman ) // need to press K/L to switch between games... -GAMEL( 198?, cmtetrsa, 0, cm, cmtetris, cmaster_state, init_cm, ROT0, "", "Tetris + Cherry Master (Corsica, v8.01, set 2)", MACHINE_NOT_WORKING, layout_cmpacman ) // seems banked... -GAMEL( 198?, cmtetrsb, 0, cm, cmtetris, cmaster_state, init_cm, ROT0, "", "Tetris + Cherry Master (+K, Canada Version, encrypted)", MACHINE_NOT_WORKING, layout_cmpacman ) // different Tetris game. press insert to throttle and see the attract running. -GAMEL( 1997, crazybon, 0, crazybon, crazybon, goldstar_state, empty_init, ROT0, "bootleg (Crazy Co.)", "Crazy Bonus 2002 (Ver. 1, set 1)", MACHINE_IMPERFECT_COLORS, layout_crazybon ) // Windows ME desktop... but not found the way to switch it. -GAMEL( 1997, crazybona, crazybon, crazybon, crazybon, goldstar_state, empty_init, ROT0, "bootleg (Crazy Co.)", "Crazy Bonus 2002 (Ver. 1, set 2)", MACHINE_IMPERFECT_COLORS, layout_crazybon ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ +GAMEL( 198?, cmpacman, 0, cm, cmpacman, cmaster_state, init_cm, ROT0, "", "Super Pacman (v1.2) + Cherry Master (Corsica, v8.31, set 1)", 0, layout_cmpacman ) // need to press K to switch between games... +GAMEL( 198?, cmpacmana, cmpacman, cm, cmpacman, cmaster_state, init_cm, ROT0, "", "Super Pacman (v1.2) + Cherry Master (Corsica, v8.31, set 2)", 0, layout_cmpacman ) // need to press K to switch between games... +GAMEL( 198?, cmtetris, 0, cm, cmtetris, cmaster_state, init_cm, ROT0, "", "Tetris + Cherry Master (Corsica, v8.01, set 1)", 0, layout_cmpacman ) // need to press K/L to switch between games... +GAMEL( 198?, cmtetrsa, 0, cm, cmtetris, cmaster_state, init_cm, ROT0, "", "Tetris + Cherry Master (Corsica, v8.01, set 2)", MACHINE_NOT_WORKING, layout_cmpacman ) // seems banked... +GAMEL( 198?, cmtetrsb, 0, cm, cmtetris, cmaster_state, init_cm, ROT0, "", "Tetris + Cherry Master (+K, Canada Version, encrypted)", MACHINE_NOT_WORKING, layout_cmpacman ) // different Tetris game. press insert to throttle and see the attract running. +GAMEL( 1997, crazybon, 0, crazybon, crazybon, goldstar_state, empty_init, ROT0, "bootleg (Crazy Co.)", "Crazy Bonus 2002 (Ver. 1, set 1)", MACHINE_IMPERFECT_COLORS, layout_crazybon ) // Windows ME desktop... but not found the way to switch it. +GAMEL( 1997, crazybona, crazybon, crazybon, crazybon, goldstar_state, empty_init, ROT0, "bootleg (Crazy Co.)", "Crazy Bonus 2002 (Ver. 1, set 2)", MACHINE_IMPERFECT_COLORS, layout_crazybon ) +GAMEL( 1997, crazybonb, crazybon, crazybonb, pkrmast, goldstar_state, init_crazybonb, ROT0, "bootleg (TV Games)", "Crazy Bonus 2002 (Ver. 1, set 3)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_COLORS, layout_crazybon ) // F.B. & POKER 94, VER.1 in NVRAM, decryption seems ok, possibly needs proper memory map /* other possible stealth sets: - cmv4a ---> see the 1fxx zone. put a bp in 1f9f to see the loop. diff --git a/src/mame/includes/goldstar.h b/src/mame/includes/goldstar.h index f406f31b0d8..e44e1512bb2 100644 --- a/src/mame/includes/goldstar.h +++ b/src/mame/includes/goldstar.h @@ -53,6 +53,7 @@ public: void init_goldstar(); void init_jkrmast(); void init_pkrmast(); + void init_crazybonb(); void init_cmast91(); void init_wcherry(); void init_super9(); @@ -73,6 +74,7 @@ public: void ladylinrb(machine_config &config); void wcherry(machine_config &config); void crazybon(machine_config &config); + void crazybonb(machine_config &config); void pkrmast(machine_config &config); void moonlght(machine_config &config); void kkotnoli(machine_config &config); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 26659be696c..6e1526981d7 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -15031,6 +15031,7 @@ cmv801 // (c) 198? Corsica cmwm // (c) 199? Dyna Electronics crazybon // (c) 199? Sang Ho crazybona // (c) 199? Sang Ho +crazybonb // (c) 199? unknown eldoradd // (c) 1991 Dyna Electronics fb2010 // (c) 2009 Amcoe fl7_3121 // (c) 199? Cyberdyne Systems, Inc.