From e19a963efc4ae0fea79e66ed1ddf56fcc18a741e Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 20 Jun 2022 04:00:15 +0200 Subject: New working clones ------------------ Treasure Island (American Alpha, v3.0N) [Ioannis Bampoulas] --- src/mame/drivers/subsino.cpp | 150 ++++++++++++++++++++++++++++++++++++------- src/mame/layout/tisubb.lay | 142 ++++++++++++++++++++++++++++++++++++++++ src/mame/machine/subsino.cpp | 13 ++++ src/mame/machine/subsino.h | 2 + src/mame/mame.lst | 1 + 5 files changed, 285 insertions(+), 23 deletions(-) create mode 100644 src/mame/layout/tisubb.lay diff --git a/src/mame/drivers/subsino.cpp b/src/mame/drivers/subsino.cpp index 238d3379110..2d577d42914 100644 --- a/src/mame/drivers/subsino.cpp +++ b/src/mame/drivers/subsino.cpp @@ -243,6 +243,7 @@ To Do: #include "sharkpye.lh" #include "smoto.lh" #include "tisub.lh" +#include "tisubb.lh" #include "stisub.lh" @@ -287,6 +288,7 @@ public: void init_victor21(); void init_victor5(); void init_tisuba(); + void init_tisubb(); void init_sharkpye(); void init_tisub(); void init_mtrainnv(); @@ -691,6 +693,19 @@ void subsino_state::out_b_w(uint8_t data) x--- ---- ???. + * Treasure Island (American Alpha). // TODO: Where's the third hold lamp? + + 7654 3210 + ---- ---x ???. + ---- --x- DOUBLE / INFO. + ---- -x-- START + ---- x--- BET / STOP ALL. + ---x ---- ???. + --x- ---- HOLD1 / TAKE. + -x-- ---- ???. + x--- ---- HOLD3 / SMALL (or HOLD2 /BIG). + + * Poker Carnival (crsbingo). 7654 3210 @@ -1498,6 +1513,48 @@ static INPUT_PORTS_START( tisub ) INPUT_PORTS_END +static INPUT_PORTS_START( tisubb ) + PORT_INCLUDE( tisub ) + + PORT_MODIFY( "SW2" ) + PORT_DIPNAME( 0x0c, 0x08, "Max Bet" ) + PORT_DIPSETTING( 0x00, "8" ) + PORT_DIPSETTING( 0x04, "16" ) + PORT_DIPSETTING( 0x08, "32" ) + PORT_DIPSETTING( 0x0c, "64" ) + PORT_DIPNAME( 0x20, 0x20, "Game Limit" ) PORT_DIPLOCATION("SW2:6") + PORT_DIPSETTING( 0x20, "5000" ) + PORT_DIPSETTING( 0x00, "10000" ) + + PORT_MODIFY( "SW3" ) + PORT_DIPNAME( 0x07, 0x07, "Main Game Rate" ) PORT_DIPLOCATION("SW3:1,2,3") + PORT_DIPSETTING( 0x00, "84%" ) + PORT_DIPSETTING( 0x01, "86%" ) + PORT_DIPSETTING( 0x02, "88%" ) + PORT_DIPSETTING( 0x03, "89%" ) + PORT_DIPSETTING( 0x04, "90%" ) + PORT_DIPSETTING( 0x07, "91%" ) + PORT_DIPSETTING( 0x05, "92%" ) + PORT_DIPSETTING( 0x06, "94%" ) + + PORT_MODIFY( "INA" ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_IMPULSE(3) PORT_NAME("Bet / Stop All") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) PORT_NAME("Double / Info") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_MODIFY( "INB" ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP1 ) PORT_NAME("Stop 1 / Take") + + PORT_MODIFY( "INC" ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SLOT_STOP3 ) PORT_NAME("Stop 3 / Small") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) PORT_NAME("Stop 2 / Big") +INPUT_PORTS_END + + static INPUT_PORTS_START( stbsub ) PORT_START("SW1") PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3") @@ -3087,7 +3144,7 @@ ROM_END /*************************************************************************** Treasure Island - -- this has an extra layer for the reels, exactly the same as goldstar.c + -- this has an extra layer for the reels, exactly the same as goldstar.cpp ***************************************************************************/ @@ -3155,6 +3212,29 @@ ROM_START( tisuba ) ROM_LOAD( "n82s129n.u41", 0x200, 0x100, CRC(db99f6da) SHA1(d281a2fa06f1890ef0b1c4d099e6828827db14fd) ) ROM_END +ROM_START( tisubb ) + ROM_REGION( 0x18000, "maincpu", 0 ) + ROM_LOAD( "ti alpha rom_1 ver3.0n.u6", 0x10000, 0x4000, CRC(7f0756cc) SHA1(e383b6abea136b79acabbffd9d247cc51c9aaa85) ) + ROM_CONTINUE(0x0000,0xc000) + ROM_COPY( "maincpu", 0x09000, 0x14000, 0x1000) + + ROM_REGION( 0x40000, "tilemap", 0 ) + ROM_LOAD( "ti alpha rom_6 ver1.1.u43", 0x00000, 0x10000, CRC(e7abd3b6) SHA1(bb22161b6c082d3ea0c80e0ff413bc43edd6e678) ) + ROM_LOAD( "ti alpha rom_4 ver1.1.u33", 0x10000, 0x10000, CRC(a4d13ea2) SHA1(e6366411c0f4b672e788a36a72a529449a5dd305) ) + ROM_LOAD( "ti alpha rom_5 ver1.1.u44", 0x20000, 0x10000, CRC(23f9eaca) SHA1(b130b4c2cadc63224d4d3dd2d957398c1338ae18) ) + ROM_LOAD( "ti alpha rom_7 ver1.1.u34", 0x30000, 0x10000, CRC(6f388cee) SHA1(bafdf44ae6e57d4114b6e008744628d2175ae023) ) + + ROM_REGION( 0x8000, "reels", 0 ) + ROM_LOAD( "ti alpha rom_2 ver1.1.u19", 0x0000, 0x4000, CRC(2b009e98) SHA1(f91e304006f37fbd25d9752297d59f62e5786251) ) + ROM_IGNORE(0x4000) + ROM_LOAD( "ti alpha rom_3 ver1.1.u20", 0x4000, 0x4000, CRC(52335a53) SHA1(d932fa755a8a98ee26ecf25594aca1d3d8af4f99) ) + ROM_IGNORE(0x4000) + + ROM_REGION( 0x300, "proms", 0 ) // not dumped for this set, but should be correct + ROM_LOAD( "n82s129n.u39", 0x000, 0x100, BAD_DUMP CRC(971843e5) SHA1(4cb5fc1085503dae2f2f02eb49cca051ac84b890) ) + ROM_LOAD( "n82s129n.u40", 0x100, 0x100, BAD_DUMP CRC(b4bd872c) SHA1(c0f9fe68186636d6d6bc6f81415459631cf38edd) ) + ROM_LOAD( "n82s129n.u41", 0x200, 0x100, BAD_DUMP CRC(db99f6da) SHA1(d281a2fa06f1890ef0b1c4d099e6828827db14fd) ) +ROM_END /*************************************************************************** @@ -3901,6 +3981,29 @@ void subsino_state::init_tisuba() rom[0x6498] = 0x00; } +void subsino_state::init_tisubb() +{ + subsino_decrypt(machine(), tisubb_bitswaps, tisubb_xors, 0xc000); + + uint8_t *rom = memregion( "maincpu" )->base(); + + /* this trips a z180 MMU core bug? It unmaps a region then the program code jumps to that region... */ + rom[0x60da] = 0x00; + rom[0x60db] = 0x00; + rom[0x60dc] = 0x00; + rom[0x60df] = 0x00; + rom[0x60e0] = 0x00; + rom[0x60e1] = 0x00; + + m_flash_packet = 0; + m_flash_packet_start = 0; + m_flash_val = 0; + + save_item(NAME(m_flash_packet)); + save_item(NAME(m_flash_packet_start)); + save_item(NAME(m_flash_val)); +} + void subsino_state::init_stbsub() { #if 1 @@ -3986,36 +4089,37 @@ void subsino_state::init_mtrainnv() * Game Drivers * ***************************************************************************/ -// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT -GAMEL( 1990, victor21, 0, victor21, victor21, subsino_state, init_victor21, ROT0, "Subsino / Buffy", "Victor 21", 0, layout_victor21 ) +// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAMEL( 1990, victor21, 0, victor21, victor21, subsino_state, init_victor21, ROT0, "Subsino / Buffy", "Victor 21", 0, layout_victor21 ) -GAMEL( 1991, victor5, 0, victor5, victor5, subsino_state, init_victor5, ROT0, "Subsino / Buffy", "Victor 5", 0, layout_victor5 ) // Original PCB and game from Subsino. -GAMEL( 1991, victor5a, victor5, victor5, victor5, subsino_state, init_victor5, ROT0, "Subsino", "G.E.A.", 0, layout_victor5 ) // PCB black-box was marked 'victor 5' - in-game says G.E.A with no manufacturer info? +GAMEL( 1991, victor5, 0, victor5, victor5, subsino_state, init_victor5, ROT0, "Subsino / Buffy", "Victor 5", 0, layout_victor5 ) // Original PCB and game from Subsino. +GAMEL( 1991, victor5a, victor5, victor5, victor5, subsino_state, init_victor5, ROT0, "Subsino", "G.E.A.", 0, layout_victor5 ) // PCB black-box was marked 'victor 5' - in-game says G.E.A with no manufacturer info? -GAMEL( 1992, tisub, 0, tisub, tisub, subsino_state, init_tisub, ROT0, "Subsino", "Treasure Island (Subsino, set 1)", 0, layout_tisub ) -GAMEL( 1992, tisuba, tisub, tisub, tisub, subsino_state, init_tisuba, ROT0, "Subsino", "Treasure Island (Subsino, set 2)", 0, layout_tisub ) +GAMEL( 1992, tisub, 0, tisub, tisub, subsino_state, init_tisub, ROT0, "Subsino", "Treasure Island (Subsino, set 1)", 0, layout_tisub ) +GAMEL( 1992, tisuba, tisub, tisub, tisub, subsino_state, init_tisuba, ROT0, "Subsino", "Treasure Island (Subsino, set 2)", 0, layout_tisub ) +GAMEL( 1992, tisubb, tisub, tisub, tisubb, subsino_state, init_tisubb, ROT0, "American Alpha", "Treasure Island (American Alpha, v3.0N)", 0, layout_tisubb ) -GAMEL( 1991, crsbingo, 0, crsbingo, crsbingo, subsino_state, init_crsbingo, ROT0, "Subsino", "Poker Carnival", 0, layout_crsbingo ) +GAMEL( 1991, crsbingo, 0, crsbingo, crsbingo, subsino_state, init_crsbingo, ROT0, "Subsino", "Poker Carnival", 0, layout_crsbingo ) GAMEL( 1994, dinofmly, 0, dinofmly, sharkpy, subsino_state, empty_init, ROT0, "Subsino", "Dino Family", MACHINE_NOT_WORKING, layout_sharkpy ) // stops with 'error password' message during boot GAMEL( 1995, dinofmlya, dinofmly,dinofmly, sharkpy, subsino_state, empty_init, ROT0, "Tangasoft", "Dino Family (Portuguese, Tangasoft license)", MACHINE_NOT_WORKING, layout_sharkpy ) // stops with 'error password' message during boot -GAMEL( 1995, stbsub, 0, stbsub, stbsub, subsino_state, init_stbsub, ROT0, "American Alpha", "Treasure Bonus (Subsino, v1.6)", 0, layout_stisub ) // board CPU module marked 'Super Treasure Island' (alt title?) -GAMEL( 1995, stisub, stbsub, stbsub, stbsub, subsino_state, init_stisub, ROT0, "Subsino", "Super Treasure Island (Italy, v1.6)", MACHINE_NOT_WORKING, layout_stisub ) // need proper patches -GAMEL( 1995, tesorone, stbsub, stbsub, tesorone, subsino_state, init_tesorone, ROT0, "Subsino", "Tesorone Dell'Isola (Italy, v2.41)", 0, layout_stisub ) -GAMEL( 1995, tesorone240, stbsub, stbsub, tesorone, subsino_state, init_tesorone, ROT0, "Subsino", "Tesorone Dell'Isola (Italy, v2.40)", 0, layout_stisub ) -GAMEL( 1995, tesorone230, stbsub, stbsub, tesorone, subsino_state, init_tesorone230, ROT0, "Subsino", "Tesorone Dell'Isola (Italy, v2.30)", 0, layout_stisub ) +GAMEL( 1995, stbsub, 0, stbsub, stbsub, subsino_state, init_stbsub, ROT0, "American Alpha", "Treasure Bonus (Subsino, v1.6)", 0, layout_stisub ) // board CPU module marked 'Super Treasure Island' (alt title?) +GAMEL( 1995, stisub, stbsub, stbsub, stbsub, subsino_state, init_stisub, ROT0, "Subsino", "Super Treasure Island (Italy, v1.6)", MACHINE_NOT_WORKING, layout_stisub ) // need proper patches +GAMEL( 1995, tesorone, stbsub, stbsub, tesorone, subsino_state, init_tesorone, ROT0, "Subsino", "Tesorone Dell'Isola (Italy, v2.41)", 0, layout_stisub ) +GAMEL( 1995, tesorone240, stbsub, stbsub, tesorone, subsino_state, init_tesorone, ROT0, "Subsino", "Tesorone Dell'Isola (Italy, v2.40)", 0, layout_stisub ) +GAMEL( 1995, tesorone230, stbsub, stbsub, tesorone, subsino_state, init_tesorone230, ROT0, "Subsino", "Tesorone Dell'Isola (Italy, v2.30)", 0, layout_stisub ) -GAMEL( 1996, sharkpy, 0, sharkpy, sharkpy, subsino_state, init_sharkpy, ROT0, "Subsino", "Shark Party (Italy, v1.3)", 0, layout_sharkpy ) // missing POST messages? -GAMEL( 1996, sharkpya, sharkpy, sharkpy, sharkpy, subsino_state, init_sharkpy, ROT0, "Subsino", "Shark Party (Italy, v1.6)", 0, layout_sharkpy ) // missing POST messages? -GAMEL( 1995, sharkpye, sharkpy, sharkpy, sharkpye, subsino_state, init_sharkpye, ROT0, "American Alpha", "Shark Party (English, Alpha license)", 0, layout_sharkpye ) // PCB black-box was marked 'victor 6' +GAMEL( 1996, sharkpy, 0, sharkpy, sharkpy, subsino_state, init_sharkpy, ROT0, "Subsino", "Shark Party (Italy, v1.3)", 0, layout_sharkpy ) // missing POST messages? +GAMEL( 1996, sharkpya, sharkpy, sharkpy, sharkpy, subsino_state, init_sharkpy, ROT0, "Subsino", "Shark Party (Italy, v1.6)", 0, layout_sharkpy ) // missing POST messages? +GAMEL( 1995, sharkpye, sharkpy, sharkpy, sharkpye, subsino_state, init_sharkpye, ROT0, "American Alpha", "Shark Party (English, Alpha license)", 0, layout_sharkpye ) // PCB black-box was marked 'victor 6' -GAMEL( 1995, victor6, 0, sharkpy, victor6, subsino_state, init_sharkpye, ROT0, "American Alpha", "Victor 6 (v2.3N)", 0, layout_sharkpye ) // ^^ -GAMEL( 1995, victor6a, victor6, sharkpy, victor6a, subsino_state, init_sharkpye, ROT0, "American Alpha", "Victor 6 (v2.3)", 0, layout_sharkpye ) // ^^ -GAMEL( 1995, victor6b, victor6, sharkpy, victor6b, subsino_state, init_sharkpye, ROT0, "American Alpha", "Victor 6 (v1.2)", 0, layout_sharkpye ) // ^^ Version # according to label, not displayed +GAMEL( 1995, victor6, 0, sharkpy, victor6, subsino_state, init_sharkpye, ROT0, "American Alpha", "Victor 6 (v2.3N)", 0, layout_sharkpye ) // ^^ +GAMEL( 1995, victor6a, victor6, sharkpy, victor6a, subsino_state, init_sharkpye, ROT0, "American Alpha", "Victor 6 (v2.3)", 0, layout_sharkpye ) // ^^ +GAMEL( 1995, victor6b, victor6, sharkpy, victor6b, subsino_state, init_sharkpye, ROT0, "American Alpha", "Victor 6 (v1.2)", 0, layout_sharkpye ) // ^^ Version # according to label, not displayed -GAMEL( 1996, smoto20, 0, srider, smoto20, subsino_state, init_smoto20, ROT0, "Subsino", "Super Rider (Italy, v2.0)", 0, layout_smoto ) -GAMEL( 1996, smoto16, smoto20, srider, smoto16, subsino_state, init_smoto16, ROT0, "Subsino", "Super Moto (Italy, v1.6)", 0, layout_smoto ) -GAMEL( 1996, smoto13, smoto20, srider, smoto16, subsino_state, init_smoto13, ROT0, "Subsino", "Super Rider (v1.3)", 0, layout_smoto ) +GAMEL( 1996, smoto20, 0, srider, smoto20, subsino_state, init_smoto20, ROT0, "Subsino", "Super Rider (Italy, v2.0)", 0, layout_smoto ) +GAMEL( 1996, smoto16, smoto20, srider, smoto16, subsino_state, init_smoto16, ROT0, "Subsino", "Super Moto (Italy, v1.6)", 0, layout_smoto ) +GAMEL( 1996, smoto13, smoto20, srider, smoto16, subsino_state, init_smoto13, ROT0, "Subsino", "Super Rider (v1.3)", 0, layout_smoto ) -GAME( 1996, mtrainnv, mtrain, mtrainnv, stbsub, subsino_state, init_mtrainnv, ROT0, "Subsino", "Magic Train (Clear NVRAM ROM?)", MACHINE_NOT_WORKING ) +GAME( 1996, mtrainnv, mtrain, mtrainnv, stbsub, subsino_state, init_mtrainnv, ROT0, "Subsino", "Magic Train (Clear NVRAM ROM?)", MACHINE_NOT_WORKING ) diff --git a/src/mame/layout/tisubb.lay b/src/mame/layout/tisubb.lay new file mode 100644 index 00000000000..873cb8c83c9 --- /dev/null +++ b/src/mame/layout/tisubb.lay @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/machine/subsino.cpp b/src/mame/machine/subsino.cpp index 507616ca7c1..03ccfc51c9a 100644 --- a/src/mame/machine/subsino.cpp +++ b/src/mame/machine/subsino.cpp @@ -13,6 +13,7 @@ by David Haywood extern const uint8_t crsbingo_xors[8] = { 0xbb, 0xcc, 0xcc, 0xdd, 0xaa, 0x11, 0x44, 0xee }; extern const uint8_t sharkpy_xors [8] = { 0xcc, 0xaa, 0x66, 0xaa, 0xee, 0x33, 0xff, 0xff }; +extern const uint8_t tisubb_xors [8] = { 0x44, 0x99, 0x55, 0x77, 0xaa, 0x77, 0x88, 0x55 }; extern const uint8_t victor5_xors [8] = { 0x99, 0x99, 0x33, 0x44, 0xbb, 0x88, 0x88, 0xbb }; extern const uint8_t victor21_xors[8] = { 0x44, 0xbb, 0x66, 0x44, 0xaa, 0x55, 0x88, 0x22 }; @@ -42,6 +43,18 @@ void sharkpy_bitswaps(uint8_t *decrypt, int i) if ((i&7) == 7) decrypt[i] = bitswap<8>(decrypt[i], 3,6,1,4,7,2,5,0 ); } +void tisubb_bitswaps(uint8_t *decrypt, int i) +{ + if ((i&7) == 0) decrypt[i] = bitswap<8>(decrypt[i], 7,2,1,0,3,6,5,4 ); + if ((i&7) == 1) decrypt[i] = bitswap<8>(decrypt[i], 7,6,1,4,3,2,5,0 ); + if ((i&7) == 2) decrypt[i] = bitswap<8>(decrypt[i], 3,6,5,0,7,2,1,4 ); + if ((i&7) == 3) decrypt[i] = bitswap<8>(decrypt[i], 7,2,5,4,3,6,1,0 ); + if ((i&7) == 4) decrypt[i] = bitswap<8>(decrypt[i], 3,2,5,4,7,6,1,0 ); + if ((i&7) == 5) decrypt[i] = bitswap<8>(decrypt[i], 3,6,1,0,7,2,5,4 ); + if ((i&7) == 6) decrypt[i] = bitswap<8>(decrypt[i], 3,6,1,0,7,2,5,4 ); + if ((i&7) == 7) decrypt[i] = bitswap<8>(decrypt[i], 3,2,1,0,7,6,5,4 ); +} + void victor5_bitswaps(uint8_t *decrypt, int i) { if ((i&7) == 0) decrypt[i] = bitswap<8>(decrypt[i], 7,2,5,4,3,6,1,0 ); diff --git a/src/mame/machine/subsino.h b/src/mame/machine/subsino.h index 2f4b227c4ef..414fcff74eb 100644 --- a/src/mame/machine/subsino.h +++ b/src/mame/machine/subsino.h @@ -8,11 +8,13 @@ extern const uint8_t crsbingo_xors[8]; extern const uint8_t sharkpy_xors [8]; +extern const uint8_t tisubb_xors [8]; extern const uint8_t victor5_xors [8]; extern const uint8_t victor21_xors[8]; void crsbingo_bitswaps(uint8_t *decrypt, int i); void sharkpy_bitswaps (uint8_t *decrypt, int i); +void tisubb_bitswaps (uint8_t *decrypt, int i); void victor5_bitswaps (uint8_t *decrypt, int i); void victor21_bitswaps(uint8_t *decrypt, int i); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index dc379caac5b..7d45abe9d01 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -40271,6 +40271,7 @@ tesorone230 // (c) 1995 Subsino tesorone240 // (c) 1995 Subsino tisub // (c) 1992 Subsino tisuba // (c) 1992 Subsino +tisubb // (c) 1992 Subsino (Alpha license) victor21 // (c) 1990 Subsino victor5 // (c) 1990 Subsino victor5a // (c) 1990 Subsino -- cgit v1.2.3