summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2017-06-07 15:50:55 -0400
committer GitHub <noreply@github.com>2017-06-07 15:50:55 -0400
commit6d9225730b7ec105a3e42f65e798348d1cae110f (patch)
tree3ca9083a58815658cd5fc367483b291d6a2024ff
parentdccc40c01707a3cf1ab99c9f7ae0504b881bd1a9 (diff)
parentcee62a71f3ee27c0c415b834e4f602aec99f905c (diff)
Merge pull request #2368 from DavidHaywood/060617
New WORKING machine - Victory (Comsoft) [Andrew Welburn, ArcadeHacker, David Haywood]
-rw-r--r--src/mame/drivers/galaxian.cpp121
-rw-r--r--src/mame/includes/galaxian.h3
-rw-r--r--src/mame/mame.lst2
3 files changed, 125 insertions, 1 deletions
diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp
index 564e10ec973..3664df57cbb 100644
--- a/src/mame/drivers/galaxian.cpp
+++ b/src/mame/drivers/galaxian.cpp
@@ -5446,6 +5446,47 @@ static INPUT_PORTS_START( superbon )
INPUT_PORTS_END
+static INPUT_PORTS_START( victoryc )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
+
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x00, "A: 2C/1C B: 1C/3C" )
+ PORT_DIPSETTING( 0x40, "A: 1C/1C B: 1C/6C" )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("IN2")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x04, "2" )
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
+ PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
/*************************************
*
@@ -6470,6 +6511,24 @@ void galaxian_state::decode_superbon()
}
+void galaxian_state::decode_victoryc()
+{
+ uint8_t *src = memregion("maincpu")->base();
+ size_t length = memregion("maincpu")->bytes();
+
+ for (int i = 0;i < length;i++)
+ {
+ if (i & 0x80) src[i] ^= 0x80;
+ if (i & 0x20) src[i] ^= 0x04;
+ if (i & 0x04) src[i] ^= 0x40;
+ if (i & 0x01) src[i] ^= 0x08;
+
+ src[i] = BITSWAP8(src[i], 6, 3, 5, 4, 2, 7, 1, 0);
+ }
+}
+
+
+
/*************************************
*
* Driver configuration
@@ -6597,7 +6656,25 @@ DRIVER_INIT_MEMBER(galaxian_state,frogg)
space.install_ram(0x4000, 0x47ff);
}
+DRIVER_INIT_MEMBER(galaxian_state, victoryc)
+{
+ DRIVER_INIT_CALL(victorycb);
+
+ decode_victoryc();
+}
+
+DRIVER_INIT_MEMBER(galaxian_state, victorycb)
+{
+ DRIVER_INIT_CALL(galaxian);
+
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ /* needs a full 2k of RAM */
+ space.install_ram(0x8000, 0x87ff);
+
+ /* disable the stars */
+ space.unmap_write(0x7004, 0x7004, 0x7f8);
+}
/*************************************
*
@@ -11714,6 +11791,44 @@ ROM_START( jungsub )
ROM_LOAD( "PROM.6E", 0x0000, 0x0020, CRC(2430f47c) SHA1(f7725f4768cb57717feb18891766642f6d7cbcde) )
ROM_END
+ROM_START( victoryc )
+ ROM_REGION( 0x4000, "maincpu", ROMREGION_ERASEFF )
+ ROM_LOAD( "1.1", 0x0000, 0x0800, CRC(8a590687) SHA1(71558a9eb8020f3769f07089d5704317f6018d9a) )
+ ROM_LOAD( "2.2", 0x0800, 0x0800, CRC(575ac583) SHA1(352cb6c5cdc898ef2935aaae582455dc0237ac49) )
+ ROM_LOAD( "3.3", 0x1000, 0x0800, CRC(cbe67cfb) SHA1(80b42e2443ba36f2a4b2b27f22be7292d6bc9689) )
+ ROM_LOAD( "4.4", 0x1800, 0x0800, CRC(025b6626) SHA1(b6b80c2a9aa991cd0c5ff7127f4495dcd8c2fbe5) )
+ // ROM_LOAD( "5.5", 0x2000, 0x0800, NO_DUMP ) // wasn't populated, not used?
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "DF.1K", 0x0000, 0x0800, CRC(15e98c93) SHA1(af273ec2df93b78b439d4aff649eb4b6c6d05ee3) )
+ ROM_LOAD( "A4.1H", 0x0800, 0x0800, CRC(cd35a7e2) SHA1(deeb853f924dd964a254bcdb6924cd2fd71aabdc) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "PROM.6L", 0x0000, 0x0020, CRC(25329e5a) SHA1(aff60d02aa4d1d5f16e2d32155c315deee8b4089) )
+ROM_END
+
+/* The bootleg is just a decrypted version of the above, although there was an additional rom '5' on the bootleg PCB
+ The extra rom contains a repeating pattern and looks like it might be a bad dump, but doesn't even seem to be used
+ by the game. It is not the result of applying the decryption process to blank data either.
+
+ The PCB had a Laboratorios F.A.R. sticker on it, this might have been a distributor rather than the manufacturer tho.
+*/
+ROM_START( victorycb )
+ ROM_REGION( 0x4000, "maincpu", ROMREGION_ERASEFF )
+ ROM_LOAD( "v1.bin", 0x0000, 0x0800, CRC(de985696) SHA1(20f5cb7b9efd9f1a2896eb65fe5c54e0ffb1f61f) )
+ ROM_LOAD( "v2.bin", 0x0800, 0x0800, CRC(59042c1e) SHA1(94498ca14f66c8f5ae9a08b0d7c057f033ccfb3b) )
+ ROM_LOAD( "v3.bin", 0x1000, 0x0800, CRC(ca3a6965) SHA1(36ba8659a1fb616f2247eb1b50c67c2c45723a68) )
+ ROM_LOAD( "v4.bin", 0x1800, 0x0800, CRC(16b47fad) SHA1(8af840f3fd523283a605005f6a91ad2ea10be04b) )
+ ROM_LOAD( "v5.bin", 0x2000, 0x0800, BAD_DUMP CRC(f60be3be) SHA1(ef45bec22db10c485ae2ddf5723c5cf241edb823) ) // unused? there was no rom5 on the original
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "v6.bin", 0x0000, 0x0800, CRC(15e98c93) SHA1(af273ec2df93b78b439d4aff649eb4b6c6d05ee3) )
+ ROM_LOAD( "v7.bin", 0x0800, 0x0800, CRC(cd35a7e2) SHA1(deeb853f924dd964a254bcdb6924cd2fd71aabdc) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "PROM.6L", 0x0000, 0x0020, CRC(25329e5a) SHA1(aff60d02aa4d1d5f16e2d32155c315deee8b4089) )
+ROM_END
+
/*************************************
*
@@ -11763,12 +11878,16 @@ GAME( 19??, tst_galx, galaxian, galaxian, galaxian, galaxian_state, galax
/* other games on basic galaxian hardware */
GAME( 1981, blkhole, 0, galaxian, blkhole, galaxian_state, galaxian, ROT90, "TDS & MINTS", "Black Hole", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, orbitron, 0, galaxian, orbitron, galaxian_state, galaxian, ROT270, "Signatron USA", "Orbitron", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, orbitron, 0, galaxian, orbitron, galaxian_state, galaxian, ROT270, "Comsoft (Signatron USA license)", "Orbitron", MACHINE_SUPPORTS_SAVE ) // there's a Comsoft copyright in one of the roms, and the gameplay is the same as Victory below
GAME( 1980, luctoday, 0, galaxian, luctoday, galaxian_state, galaxian, ROT270, "Sigma", "Lucky Today",MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
GAME( 19??, chewing, luctoday, galaxian, luctoday, galaxian_state, galaxian, ROT90, "<unknown>", "Chewing Gum", MACHINE_SUPPORTS_SAVE )
GAME( 1982, catacomb, 0, galaxian, catacomb, galaxian_state, galaxian, ROT90, "MTM Games", "Catacomb", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
GAME( 19??, omegab, theend, galaxian, omegab, galaxian_state, galaxian, ROT270, "bootleg?", "Omega (bootleg?)", MACHINE_SUPPORTS_SAVE )
+/* basic hardware + extra RAM */
+GAME( 1982, victoryc, 0, galaxian, victoryc, galaxian_state, victoryc, ROT270, "Comsoft", "Victory (Comsoft)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, victorycb, victoryc, galaxian, victoryc, galaxian_state, victorycb, ROT270, "bootleg", "Victory (Comsoft) (bootleg)", MACHINE_SUPPORTS_SAVE )
+
/* these games require the coin lockout mechanism to be disabled */
GAME( 1981, warofbug, 0, galaxian, warofbug, galaxian_state, nolock, ROT90, "Armenia / Food and Fun Corp", "War of the Bugs or Monsterous Manouvers in a Mushroom Maze", MACHINE_SUPPORTS_SAVE )
GAME( 1981, warofbugu, warofbug, galaxian, warofbug, galaxian_state, nolock, ROT90, "Armenia / Super Video Games", "War of the Bugs or Monsterous Manouvers in a Mushroom Maze (US)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/galaxian.h b/src/mame/includes/galaxian.h
index b4363089ff4..89c5a43b995 100644
--- a/src/mame/includes/galaxian.h
+++ b/src/mame/includes/galaxian.h
@@ -270,6 +270,8 @@ public:
DECLARE_DRIVER_INIT(froggrs);
DECLARE_DRIVER_INIT(warofbugg);
DECLARE_DRIVER_INIT(jungsub);
+ DECLARE_DRIVER_INIT(victoryc);
+ DECLARE_DRIVER_INIT(victorycb);
TILE_GET_INFO_MEMBER(bg_get_tile_info);
virtual void video_start() override;
DECLARE_PALETTE_INIT(galaxian);
@@ -329,6 +331,7 @@ public:
void decode_anteater_gfx();
void decode_losttomb_gfx();
void decode_superbon();
+ void decode_victoryc();
void mshuttle_decode(const uint8_t convtable[8][16]);
void common_init(galaxian_draw_bullet_func draw_bullet,galaxian_draw_background_func draw_background,
galaxian_extend_tile_info_func extend_tile_info,galaxian_extend_sprite_info_func extend_sprite_info);
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index f47f531a836..f68505495f3 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -13085,6 +13085,8 @@ turpins // (c) 1981 bootleg
turtles // (c) 1981 Stern
uniwars // (c) Irem
uniwarsa // (c) Karateco
+victoryc // (c) Comsoft
+victorycb // (c) Comsoft (bootleg)
warofbug // (c) 1981 Armenia
warofbugg // German Version
warofbugu // (c) 1981 Armenia