From 716c9f4c863ca150ff519429b24168df9890f1b1 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 5 Oct 2021 18:12:57 +0200 Subject: New working clones ------------------ Pengo (set 6, encrypted) [philmurr] --- src/mame/drivers/balsente.cpp | 4 +- src/mame/drivers/pengo.cpp | 297 ++++++++++++++++++++++-------------------- src/mame/mame.lst | 1 + 3 files changed, 162 insertions(+), 140 deletions(-) diff --git a/src/mame/drivers/balsente.cpp b/src/mame/drivers/balsente.cpp index 87785565ce4..7d1d0f54e45 100644 --- a/src/mame/drivers/balsente.cpp +++ b/src/mame/drivers/balsente.cpp @@ -2484,8 +2484,8 @@ GAME( 1985, gimeabrk, 0, balsente, gimeabrk, balsente_state, init_gimeab GAME( 1985, minigolf, 0, balsente, minigolf, balsente_state, init_minigolf, ROT0, "Bally/Sente", "Mini Golf (11/25/85)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, minigolf2, minigolf, balsente, minigolf2,balsente_state, init_minigolf2, ROT0, "Bally/Sente", "Mini Golf (10/8/85)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, triviabb, 0, balsente, triviag1, balsente_state, init_triviag2, ROT0, "Bally/Sente", "Trivial Pursuit (Baby Boomer Edition) (3/20/85)", MACHINE_SUPPORTS_SAVE ) -GAME( 198?, grudge, 0, grudge, grudge, balsente_state, init_grudge, ROT0, "Bally Midway", "Grudge Match (v00.90, Italy, location test?)", MACHINE_SUPPORTS_SAVE ) // newer than set below, had a complete cabinet + art -GAME( 198?, grudgep, grudge, grudge, grudgep, balsente_state, init_grudge, ROT0, "Bally Midway", "Grudge Match (v00.80, prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, grudge, 0, grudge, grudge, balsente_state, init_grudge, ROT0, "Bally Midway", "Grudge Match (v00.90, Italy, location test?)", MACHINE_SUPPORTS_SAVE ) // newer than set below, had a complete cabinet + art +GAME( 1987, grudgep, grudge, grudge, grudgep, balsente_state, init_grudge, ROT0, "Bally Midway", "Grudge Match (v00.80, prototype)", MACHINE_SUPPORTS_SAVE ) /* Board: Unknown */ GAME( 1984, triviag1, 0, balsente, triviag1, balsente_state, init_triviag1, ROT0, "Bally/Sente", "Trivial Pursuit (Think Tank - Genus Edition) (set 1)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pengo.cpp b/src/mame/drivers/pengo.cpp index eca5e682710..3ef49d771d9 100644 --- a/src/mame/drivers/pengo.cpp +++ b/src/mame/drivers/pengo.cpp @@ -75,6 +75,8 @@ #include "speaker.h" +namespace { + class pengo_state : public pacman_state { public: @@ -92,13 +94,12 @@ public: void init_penta(); private: - DECLARE_WRITE_LINE_MEMBER(coin_counter_1_w); - DECLARE_WRITE_LINE_MEMBER(coin_counter_2_w); + template DECLARE_WRITE_LINE_MEMBER(coin_counter_w); void decode_penta(int end, int nodecend); optional_shared_ptr m_decrypted_opcodes; - optional_device m_latch; + required_device m_latch; void decrypted_opcodes_map(address_map &map); void jrpacmbl_map(address_map &map); void pengo_map(address_map &map); @@ -117,7 +118,7 @@ private: #define PIXEL_CLOCK (MASTER_CLOCK/3) -/* H counts from 128->511, HBLANK starts at 128+16=144 and ends at 128+64+32+16=240 */ +// H counts from 128->511, HBLANK starts at 128+16=144 and ends at 128+64+32+16=240 #define HTOTAL (384) #define HBEND (0) /*(96+16)*/ #define HBSTART (288) /*(16)*/ @@ -134,20 +135,16 @@ private: * *************************************/ -WRITE_LINE_MEMBER(pengo_state::coin_counter_1_w) -{ - machine().bookkeeping().coin_counter_w(0, state); -} - -WRITE_LINE_MEMBER(pengo_state::coin_counter_2_w) +template +WRITE_LINE_MEMBER(pengo_state::coin_counter_w) { - machine().bookkeeping().coin_counter_w(1, state); + machine().bookkeeping().coin_counter_w(Which, state); } void pengo_state::pengo_map(address_map &map) { map(0x0000, 0x7fff).rom(); - map(0x8000, 0x83ff).ram().w(FUNC(pengo_state::pacman_videoram_w)).share("videoram"); /* video and color RAM, scratchpad RAM, sprite codes */ + map(0x8000, 0x83ff).ram().w(FUNC(pengo_state::pacman_videoram_w)).share("videoram"); // video and color RAM, scratchpad RAM, sprite codes map(0x8400, 0x87ff).ram().w(FUNC(pengo_state::pacman_colorram_w)).share("colorram"); map(0x8800, 0x8fef).ram().share("mainram"); map(0x8ff0, 0x8fff).ram().share("spriteram"); @@ -164,7 +161,7 @@ void pengo_state::pengo_map(address_map &map) void pengo_state::decrypted_opcodes_map(address_map &map) { - map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x0000, 0x7fff).rom().share(m_decrypted_opcodes); map(0x8800, 0x8fef).ram().share("mainram"); map(0x8ff0, 0x8fff).ram().share("spriteram"); } @@ -199,14 +196,14 @@ static INPUT_PORTS_START( pengo ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY - /* the coin input must stay low for no less than 2 frames and no more */ - /* than 9 frames to pass the self test check. */ - /* Moreover, this way we avoid the game freezing until the user releases */ - /* the "coin" key. */ + /* the coin input must stay low for no less than 2 frames and no more + than 9 frames to pass the self test check. + Moreover, this way we avoid the game freezing until the user releases + the "coin" key. */ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) - /* Coin Aux doesn't need IMPULSE to pass the test, but it still needs it */ - /* to avoid the freeze. */ + /* Coin Aux doesn't need IMPULSE to pass the test, but it still needs it + to avoid the freeze. */ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) @@ -338,27 +335,27 @@ INPUT_PORTS_END static const gfx_layout tilelayout = { - 8,8, /* 8*8 characters */ - RGN_FRAC(1,2), /* 256 characters */ - 2, /* 2 bits per pixel */ - { 0, 4 }, /* the two bitplanes for 4 pixels are packed into one byte */ - { 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 }, /* bits are packed in groups of four */ + 8,8, // 8*8 characters + RGN_FRAC(1,2), // 256 characters + 2, // 2 bits per pixel + { 0, 4 }, // the two bitplanes for 4 pixels are packed into one byte + { 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 }, // bits are packed in groups of four { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 16*8 /* every char takes 16 bytes */ + 16*8 // every char takes 16 bytes }; static const gfx_layout spritelayout = { - 16,16, /* 16*16 sprites */ - RGN_FRAC(1,2), /* 64 sprites */ - 2, /* 2 bits per pixel */ - { 0, 4 }, /* the two bitplanes for 4 pixels are packed into one byte */ + 16,16, // 16*16 sprites + RGN_FRAC(1,2), // 64 sprites + 2, // 2 bits per pixel + { 0, 4 }, // the two bitplanes for 4 pixels are packed into one byte { 8*8, 8*8+1, 8*8+2, 8*8+3, 16*8+0, 16*8+1, 16*8+2, 16*8+3, 24*8+0, 24*8+1, 24*8+2, 24*8+3, 0, 1, 2, 3 }, { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 }, - 64*8 /* every sprite takes 64 bytes */ + 64*8 // every sprite takes 64 bytes }; @@ -376,7 +373,7 @@ GFXDECODE_END void pengo_state::pengo(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware Z80(config, m_maincpu, MASTER_CLOCK/6); m_maincpu->set_addrmap(AS_PROGRAM, &pengo_state::pengo_map); m_maincpu->set_addrmap(AS_OPCODES, &pengo_state::decrypted_opcodes_map); @@ -386,14 +383,14 @@ void pengo_state::pengo(machine_config &config) m_latch->q_out_cb<1>().set("namco", FUNC(namco_device::sound_enable_w)); m_latch->q_out_cb<2>().set(FUNC(pengo_state::pengo_palettebank_w)); m_latch->q_out_cb<3>().set(FUNC(pengo_state::flipscreen_w)); - m_latch->q_out_cb<4>().set(FUNC(pengo_state::coin_counter_1_w)); - m_latch->q_out_cb<5>().set(FUNC(pengo_state::coin_counter_2_w)); + m_latch->q_out_cb<4>().set(FUNC(pengo_state::coin_counter_w<0>)); + m_latch->q_out_cb<5>().set(FUNC(pengo_state::coin_counter_w<1>)); m_latch->q_out_cb<6>().set(FUNC(pengo_state::pengo_colortablebank_w)); m_latch->q_out_cb<7>().set(FUNC(pengo_state::pengo_gfxbank_w)); WATCHDOG_TIMER(config, m_watchdog); - /* video hardware */ + // video hardware GFXDECODE(config, m_gfxdecode, m_palette, gfx_pengo); PALETTE(config, m_palette, FUNC(pengo_state::pacman_palette), 128 * 4, 32); @@ -405,7 +402,7 @@ void pengo_state::pengo(machine_config &config) MCFG_VIDEO_START_OVERRIDE(pengo_state,pengo) - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32); @@ -432,7 +429,7 @@ void pengo_state::jrpacmbl(machine_config &config) { pengo(config); - /* basic machine hardware */ + // basic machine hardware m_maincpu->set_addrmap(AS_PROGRAM, &pengo_state::jrpacmbl_map); m_maincpu->set_addrmap(AS_OPCODES, address_map_constructor()); @@ -450,11 +447,6 @@ void pengo_state::jrpacmbl(machine_config &config) * *************************************/ -/* -Known to exist but not dumped: - Pengo using SEGA 315-5007 CPU, EPROMs numbers EPR-1701 through EPR-1708 (with EPR-1701 & EPR-1708 as A rev) - Sega game ID# 834-5078 PENGO -*/ ROM_START( pengo ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -468,18 +460,18 @@ ROM_START( pengo ) ROM_LOAD( "epr-5119c.ic31", 0x7000, 0x1000, CRC(933950fe) SHA1(fec7236b3dee2ea6e39c68440a6d2d9e3f72675a) ) ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "epr-1640.ic92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) /* tiles (bank 1) */ - ROM_CONTINUE( 0x2000, 0x1000 ) /* sprites (bank 1) */ - ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) /* tiles (bank 2) */ - ROM_CONTINUE( 0x3000, 0x1000 ) /* sprites (bank 2) */ + ROM_LOAD( "epr-1640.ic92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) // tiles (bank 1) + ROM_CONTINUE( 0x2000, 0x1000 ) // sprites (bank 1) + ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) // tiles (bank 2) + ROM_CONTINUE( 0x3000, 0x1000 ) // sprites (bank 2) ROM_REGION( 0x0420, "proms", 0 ) - ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) /* color palette */ - ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) /* color lookup */ + ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) // color palette + ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) // color lookup ROM_REGION( 0x0200, "namco", 0 ) - ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) /* waveform */ - ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ + ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) // waveform + ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) // timing - not used ROM_END @@ -495,49 +487,49 @@ ROM_START( pengo2 ) ROM_LOAD( "ic31.2", 0x7000, 0x1000, CRC(669555c1) SHA1(50d5cf8022af6d6bd022235ab06015cb5c8aa433) ) ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "epr-1640.ic92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) /* tiles (bank 1) */ - ROM_CONTINUE( 0x2000, 0x1000 ) /* sprites (bank 1) */ - ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) /* tiles (bank 2) */ - ROM_CONTINUE( 0x3000, 0x1000 ) /* sprites (bank 2) */ + ROM_LOAD( "epr-1640.ic92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) // tiles (bank 1) + ROM_CONTINUE( 0x2000, 0x1000 ) // sprites (bank 1) + ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) // tiles (bank 2) + ROM_CONTINUE( 0x3000, 0x1000 ) // sprites (bank 2) ROM_REGION( 0x0420, "proms", 0 ) - ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) /* color palette */ - ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) /* color lookup */ + ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) // color palette + ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) // color lookup ROM_REGION( 0x0200, "namco", 0 ) - ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) /* waveform */ - ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ + ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) // waveform + ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) // timing - not used ROM_END -ROM_START( pengo2u ) /* Sega game ID# 834-5092 PENGO REV.A */ +ROM_START( pengo2u ) // Sega game ID# 834-5092 PENGO REV.A ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "epr-5128.ic8", 0x0000, 0x1000, CRC(3dfeb20e) SHA1(a387b72501da77bf38b58619d2099083a0463e1f) ) ROM_LOAD( "epr-5129.ic7", 0x1000, 0x1000, CRC(1db341bd) SHA1(d1c66bb9cf479e6960dbcd35c820097a81eaa555) ) ROM_LOAD( "epr-5130.ic15", 0x2000, 0x1000, CRC(7c2842d5) SHA1(a8a568da68babd0ccb9f2cee4182fc01c3138494) ) ROM_LOAD( "epr-5131a.ic14", 0x3000, 0x1000, CRC(6e3c1f2f) SHA1(2ee821b0f6e0f3cfeae7f5ff25a6e9bd977efce0) ) - ROM_LOAD( "epr-5132.ic21", 0x4000, 0x1000, CRC(95f354ff) SHA1(fdebc68a6d87f8ecdf52a57a34ae5ae844a13510) ) /* == epr-5124.ic21 */ + ROM_LOAD( "epr-5132.ic21", 0x4000, 0x1000, CRC(95f354ff) SHA1(fdebc68a6d87f8ecdf52a57a34ae5ae844a13510) ) // == epr-5124.ic21 ROM_LOAD( "epr-5133.ic20", 0x5000, 0x1000, CRC(0fdb04b8) SHA1(ed814d58318c1055e475ff678609d189727bf9b4) ) - ROM_LOAD( "epr-5134.ic32", 0x6000, 0x1000, CRC(e5920728) SHA1(0ac5ffdad7bdcb32e630b9582e1b1aaece5198c9) ) /* == epr-5126.ic32 */ + ROM_LOAD( "epr-5134.ic32", 0x6000, 0x1000, CRC(e5920728) SHA1(0ac5ffdad7bdcb32e630b9582e1b1aaece5198c9) ) // == epr-5126.ic32 ROM_LOAD( "epr-5135a.ic31", 0x7000, 0x1000, CRC(13de47ed) SHA1(332b484d47c9921ed93432755bb2d7a9d4628939) ) ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "epr-1640.ic92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) /* tiles (bank 1) */ - ROM_CONTINUE( 0x2000, 0x1000 ) /* sprites (bank 1) */ - ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) /* tiles (bank 2) */ - ROM_CONTINUE( 0x3000, 0x1000 ) /* sprites (bank 2) */ + ROM_LOAD( "epr-1640.ic92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) // tiles (bank 1) + ROM_CONTINUE( 0x2000, 0x1000 ) // sprites (bank 1) + ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) // tiles (bank 2) + ROM_CONTINUE( 0x3000, 0x1000 ) // sprites (bank 2) ROM_REGION( 0x0420, "proms", 0 ) - ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) /* color palette */ - ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) /* color lookup */ + ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) // color palette + ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) // color lookup ROM_REGION( 0x0200, "namco", 0 ) - ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) /* waveform */ - ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ + ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) // waveform + ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) // timing - not used ROM_END -ROM_START( pengo3u ) /* Sega game ID# 834-5091 PENGO */ +ROM_START( pengo3u ) // Sega game ID# 834-5091 PENGO ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "epr-5120.ic8", 0x0000, 0x1000, CRC(f01afb60) SHA1(1db732a17a9f79f8f1751f80c77889142928e41b) ) ROM_LOAD( "epr-5121.ic7", 0x1000, 0x1000, CRC(2eb38353) SHA1(d351347f93a3ed01c8b5274ec19352dd611a8dd4) ) @@ -549,22 +541,22 @@ ROM_START( pengo3u ) /* Sega game ID# 834-5091 PENGO */ ROM_LOAD( "epr-5127.ic31", 0x7000, 0x1000, CRC(a7d3d1d6) SHA1(20e4353208c3803d8879b25f821ea617e9a19cc4) ) ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "epr-1640.ic92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) /* tiles (bank 1) */ - ROM_CONTINUE( 0x2000, 0x1000 ) /* sprites (bank 1) */ - ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) /* tiles (bank 2) */ - ROM_CONTINUE( 0x3000, 0x1000 ) /* sprites (bank 2) */ + ROM_LOAD( "epr-1640.ic92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) // tiles (bank 1) + ROM_CONTINUE( 0x2000, 0x1000 ) // sprites (bank 1) + ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) // tiles (bank 2) + ROM_CONTINUE( 0x3000, 0x1000 ) // sprites (bank 2) ROM_REGION( 0x0420, "proms", 0 ) - ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) /* color palette */ - ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) /* color lookup */ + ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) // color palette + ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) // color lookup ROM_REGION( 0x0200, "namco", 0 ) - ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) /* waveform */ - ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ + ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) // waveform + ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) // timing - not used ROM_END -ROM_START( pengo4 ) /* Sega game ID# 834-5081 PENGO (REV.A of this set known to exist, but not currently dumped) */ +ROM_START( pengo4 ) // Sega game ID# 834-5081 PENGO (REV.A of this set known to exist, but not currently dumped) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "epr-1738.ic8", 0x0000, 0x1000, CRC(68ba25ea) SHA1(ce937831b7b210b4a625514bd4e6b3a7a36d008e) ) ROM_LOAD( "epr-1739.ic7", 0x1000, 0x1000, CRC(41e7b5b3) SHA1(d512d41ee3f5716070250e7ab63342e4fbf92875) ) @@ -576,18 +568,18 @@ ROM_START( pengo4 ) /* Sega game ID# 834-5081 PENGO (REV.A of this set known to ROM_LOAD( "epr-1745.ic31", 0x7000, 0x1000, CRC(507e18b9) SHA1(e169e4c9c6350fb5e4020222dbcaa6f5ce41849c) ) ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "epr-1640.ic92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) /* tiles (bank 1) */ - ROM_CONTINUE( 0x2000, 0x1000 ) /* sprites (bank 1) */ - ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) /* tiles (bank 2) */ - ROM_CONTINUE( 0x3000, 0x1000 ) /* sprites (bank 2) */ + ROM_LOAD( "epr-1640.ic92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) // tiles (bank 1) + ROM_CONTINUE( 0x2000, 0x1000 ) // sprites (bank 1) + ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) // tiles (bank 2) + ROM_CONTINUE( 0x3000, 0x1000 ) // sprites (bank 2) ROM_REGION( 0x0420, "proms", 0 ) - ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) /* color palette */ - ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) /* color lookup */ + ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) // color palette + ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) // color lookup ROM_REGION( 0x0200, "namco", 0 ) - ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) /* waveform */ - ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ + ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) // waveform + ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) // timing - not used ROM_END /* @@ -609,24 +601,50 @@ ROM_START( pengo5 ) // Sega game ID# 834-5081 PENGO - PCB has an additional labe ROM_LOAD( "1_oct11-82.ic7", 0x1000, 0x1000, CRC(30a52a90) SHA1(e5ff7e16f40b42e56847d63ecbf4a0793f510c42) ) ROM_LOAD( "2_oct11-82.ic15", 0x2000, 0x1000, CRC(09783cc2) SHA1(793559c86c690837041e611107589b94ed5831ed) ) ROM_LOAD( "3_oct6-82.ic14", 0x3000, 0x1000, CRC(452c80c9) SHA1(2432930b88b9b5e7acc19cdcac7262199545ac2a) ) - ROM_LOAD( "4_oct6-82.ic21", 0x4000, 0x1000, CRC(b72084ec) SHA1(c0508951c2ad8dc31481be8b3bfee2063e3fb0d7) ) /* == epr-1742.ic21 */ - ROM_LOAD( "5_oct11-82.ic20", 0x5000, 0x1000, CRC(770570cf) SHA1(43ead8236f53d39041ffc21bdeef10b3a77ce7f2) ) /* == epr-1743.ic20 */ - ROM_LOAD( "6_oct11-82.ic32", 0x6000, 0x1000, CRC(af7b12c4) SHA1(207ed466546f40ca60a38031b83aef61446902e2) ) /* == epr-1744.ic32 */ + ROM_LOAD( "4_oct6-82.ic21", 0x4000, 0x1000, CRC(b72084ec) SHA1(c0508951c2ad8dc31481be8b3bfee2063e3fb0d7) ) // == epr-1742.ic21 + ROM_LOAD( "5_oct11-82.ic20", 0x5000, 0x1000, CRC(770570cf) SHA1(43ead8236f53d39041ffc21bdeef10b3a77ce7f2) ) // == epr-1743.ic20 + ROM_LOAD( "6_oct11-82.ic32", 0x6000, 0x1000, CRC(af7b12c4) SHA1(207ed466546f40ca60a38031b83aef61446902e2) ) // == epr-1744.ic32 ROM_LOAD( "7_oct11-82.ic31", 0x7000, 0x1000, CRC(1350ca0e) SHA1(40619973d69176b05fa160372306ad50693db021) ) ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "epr-1640.ic92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) /* tiles (bank 1), not dumped for this set but same label */ - ROM_CONTINUE( 0x2000, 0x1000 ) /* sprites (bank 1)*/ - ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) /* tiles (bank 2), not dumped for this set but same label */ - ROM_CONTINUE( 0x3000, 0x1000 ) /* sprites (bank 2) */ + ROM_LOAD( "epr-1640.ic92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) // tiles (bank 1), not dumped for this set but same label + ROM_CONTINUE( 0x2000, 0x1000 ) // sprites (bank 1) + ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) // tiles (bank 2), not dumped for this set but same label + ROM_CONTINUE( 0x3000, 0x1000 ) // sprites (bank 2) + + ROM_REGION( 0x0420, "proms", 0 ) + ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) // color palette + ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) // color lookup + + ROM_REGION( 0x0200, "namco", 0 ) + ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) // waveform + ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) // timing - not used +ROM_END + +ROM_START( pengo6 ) // Sega game ID# 834-5078 PENGO REV.A - Uses Sega 315-5007 encrypted Z80 CPU. Same encryption as bootlegs pengob and penta and not one of the standard Sega ones. Why? + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "epr-1701a.ic8", 0x0000, 0x1000, CRC(6ad6b227) SHA1(818f061009597d467af0156aa7e6e367369c421b) ) + ROM_LOAD( "epr-1702.ic7", 0x1000, 0x1000, CRC(cea1e8d1) SHA1(ac04d55c8cf20db9edc80788424b5c0c3b4ff446) ) + ROM_LOAD( "epr-1703.ic15", 0x2000, 0x1000, CRC(bc1cd590) SHA1(324160537b8aaaf3d5c0b0587c99b440f38dcb74) ) + ROM_LOAD( "epr-1704.ic14", 0x3000, 0x1000, CRC(160f3836) SHA1(ff90c82d52ed0c2c17a7aeabc9401ee9d8cf4d2d) ) + ROM_LOAD( "epr-1705.ic21", 0x4000, 0x1000, CRC(7824e3ef) SHA1(3395bb537614de8da763d05f0d2e312145017e8f) ) + ROM_LOAD( "epr-1706.ic20", 0x5000, 0x1000, CRC(377b9663) SHA1(35327dc0f0c19fa5a863aaf8d8f3bfcd2a5717a9) ) + ROM_LOAD( "epr-1707.ic32", 0x6000, 0x1000, CRC(bfde44c1) SHA1(97e8a360ce09faa36d864d7020b1669a349867c6) ) + ROM_LOAD( "epr-1708a.ic31", 0x7000, 0x1000, CRC(64e8c30d) SHA1(aa50c21db2ac8361fc575f0785e2aae57f338564) ) + + ROM_REGION( 0x4000, "gfx1", 0 ) + ROM_LOAD( "epr-1640.ic92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) // tiles (bank 1) + ROM_CONTINUE( 0x2000, 0x1000 ) // sprites (bank 1) + ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) // tiles (bank 2) + ROM_CONTINUE( 0x3000, 0x1000 ) // sprites (bank 2) ROM_REGION( 0x0420, "proms", 0 ) - ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) /* color palette */ - ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) /* color lookup */ + ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) // color palette + ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) // color lookup ROM_REGION( 0x0200, "namco", 0 ) - ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) /* waveform */ - ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ + ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) // waveform + ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) // timing - not used ROM_END ROM_START( pengob ) @@ -639,18 +657,18 @@ ROM_START( pengob ) ROM_LOAD( "031_pn08.bin", 0x7000, 0x1000, CRC(64e8c30d) SHA1(aa50c21db2ac8361fc575f0785e2aae57f338564) ) // 4 (2/2) ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "5", 0x0000, 0x1000, CRC(1232437b) SHA1(7ec410a2a802514449ccb05684762c25f29556b0) ) /* tiles (bank 1) */ - ROM_CONTINUE( 0x2000, 0x1000 ) /* sprites (bank 1) */ - ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) /* tiles (bank 2) */ - ROM_CONTINUE( 0x3000, 0x1000 ) /* sprites (bank 2) */ + ROM_LOAD( "5", 0x0000, 0x1000, CRC(1232437b) SHA1(7ec410a2a802514449ccb05684762c25f29556b0) ) // tiles (bank 1) + ROM_CONTINUE( 0x2000, 0x1000 ) // sprites (bank 1) + ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) // tiles (bank 2) + ROM_CONTINUE( 0x3000, 0x1000 ) // sprites (bank 2) ROM_REGION( 0x0420, "proms", 0 ) - ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) /* color palette */ - ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) /* color lookup */ + ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) // color palette + ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) // color lookup ROM_REGION( 0x0200, "namco", 0 ) - ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) /* waveform */ - ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ + ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) // waveform + ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) // timing - not used ROM_END @@ -666,18 +684,18 @@ ROM_START( penta ) ROM_LOAD( "031_pn08.bin", 0x7000, 0x1000, CRC(64e8c30d) SHA1(aa50c21db2ac8361fc575f0785e2aae57f338564) ) ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "092_pn09.bin", 0x0000, 0x1000, CRC(6afeba9d) SHA1(cd723fb94aa90dbaac9a6fe085c0f4786d2fa092) ) /* tiles (bank 1) */ - ROM_CONTINUE( 0x2000, 0x1000 ) /* sprites (bank 1) */ - ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) /* tiles (bank 2) */ - ROM_CONTINUE( 0x3000, 0x1000 ) /* sprites (bank 2) */ + ROM_LOAD( "092_pn09.bin", 0x0000, 0x1000, CRC(6afeba9d) SHA1(cd723fb94aa90dbaac9a6fe085c0f4786d2fa092) ) // tiles (bank 1) + ROM_CONTINUE( 0x2000, 0x1000 ) // sprites (bank 1) + ROM_LOAD( "epr-1695.ic105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) // tiles (bank 2) + ROM_CONTINUE( 0x3000, 0x1000 ) // sprites (bank 2) ROM_REGION( 0x0420, "proms", 0 ) - ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) /* color palette */ - ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) /* color lookup */ + ROM_LOAD( "pr1633.ic78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) // color palette + ROM_LOAD( "pr1634.ic88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) // color lookup ROM_REGION( 0x0200, "namco", 0 ) - ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) /* waveform */ - ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ + ROM_LOAD( "pr1635.ic51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) // waveform + ROM_LOAD( "pr1636.ic70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) // timing - not used ROM_END @@ -694,17 +712,17 @@ ROM_START( jrpacmbl ) ROM_LOAD( "jrpacpe-04.ic1", 0x7000, 0x1000, CRC(d3a8448c) SHA1(f58aed6ebdb45ed38613b336a517b87745831e24) ) ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "jrpacpe-09.ic92", 0x0000, 0x2000, CRC(2128d9b4) SHA1(b6f64423ae6ee3765050f7b85b4490b5eed95215) ) /* tiles bank 1 & 2 */ - ROM_LOAD( "jrpacpe-10.ic105", 0x2000, 0x2000, CRC(73477193) SHA1(f00a488958ea0438642d345693787bdf771219ad) ) /* sprites (bank 1) & 2 */ + ROM_LOAD( "jrpacpe-09.ic92", 0x0000, 0x2000, CRC(2128d9b4) SHA1(b6f64423ae6ee3765050f7b85b4490b5eed95215) ) // tiles bank 1 & 2 + ROM_LOAD( "jrpacpe-10.ic105", 0x2000, 0x2000, CRC(73477193) SHA1(f00a488958ea0438642d345693787bdf771219ad) ) // sprites (bank 1) & 2 ROM_REGION( 0x0120, "proms", 0 ) - ROM_LOAD_NIB_LOW ( "jrprom.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */ - ROM_LOAD_NIB_HIGH( "jrprom.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */ - ROM_LOAD( "jrprom.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */ + ROM_LOAD_NIB_LOW ( "jrprom.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) // color palette (low bits) + ROM_LOAD_NIB_HIGH( "jrprom.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) // color palette (high bits) + ROM_LOAD( "jrprom.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) // color lookup table - ROM_REGION( 0x0200, "namco", 0 ) /* waveform */ - ROM_LOAD( "jrprom.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */ - ROM_LOAD( "jrprom.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ + ROM_REGION( 0x0200, "namco", 0 ) // waveform + ROM_LOAD( "jrprom.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) // waveform + ROM_LOAD( "jrprom.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) // timing - not used ROM_END @@ -745,40 +763,40 @@ void pengo_state::decode_penta(int end, int nodecend) */ static const uint8_t data_xortable[2][8] = { - { 0xa0,0x82,0x28,0x0a,0x82,0xa0,0x0a,0x28 }, /* ...............0 */ - { 0x88,0x0a,0x82,0x00,0x88,0x0a,0x82,0x00 } /* ...............1 */ + { 0xa0,0x82,0x28,0x0a,0x82,0xa0,0x0a,0x28 }, // ...............0 + { 0x88,0x0a,0x82,0x00,0x88,0x0a,0x82,0x00 } // ...............1 }; static const uint8_t opcode_xortable[8][8] = { - { 0x02,0x08,0x2a,0x20,0x20,0x2a,0x08,0x02 }, /* ...0...0...0.... */ - { 0x88,0x88,0x00,0x00,0x88,0x88,0x00,0x00 }, /* ...0...0...1.... */ - { 0x88,0x0a,0x82,0x00,0xa0,0x22,0xaa,0x28 }, /* ...0...1...0.... */ - { 0x88,0x0a,0x82,0x00,0xa0,0x22,0xaa,0x28 }, /* ...0...1...1.... */ - { 0x2a,0x08,0x2a,0x08,0x8a,0xa8,0x8a,0xa8 }, /* ...1...0...0.... */ - { 0x2a,0x08,0x2a,0x08,0x8a,0xa8,0x8a,0xa8 }, /* ...1...0...1.... */ - { 0x88,0x0a,0x82,0x00,0xa0,0x22,0xaa,0x28 }, /* ...1...1...0.... */ - { 0x88,0x0a,0x82,0x00,0xa0,0x22,0xaa,0x28 } /* ...1...1...1.... */ + { 0x02,0x08,0x2a,0x20,0x20,0x2a,0x08,0x02 }, // ...0...0...0.... + { 0x88,0x88,0x00,0x00,0x88,0x88,0x00,0x00 }, // ...0...0...1.... + { 0x88,0x0a,0x82,0x00,0xa0,0x22,0xaa,0x28 }, // ...0...1...0.... + { 0x88,0x0a,0x82,0x00,0xa0,0x22,0xaa,0x28 }, // ...0...1...1.... + { 0x2a,0x08,0x2a,0x08,0x8a,0xa8,0x8a,0xa8 }, // ...1...0...0.... + { 0x2a,0x08,0x2a,0x08,0x8a,0xa8,0x8a,0xa8 }, // ...1...0...1.... + { 0x88,0x0a,0x82,0x00,0xa0,0x22,0xaa,0x28 }, // ...1...1...0.... + { 0x88,0x0a,0x82,0x00,0xa0,0x22,0xaa,0x28 } // ...1...1...1.... }; uint8_t *rom = memregion("maincpu")->base(); - for (int A = 0x0000;A < end;A++) + for (int A = 0x0000; A < end; A++) { uint8_t src = rom[A]; - /* pick the translation table from bit 0 of the address */ + // pick the translation table from bit 0 of the address int i = A & 1; - /* pick the offset in the table from bits 1, 3 and 5 of the source data */ + // pick the offset in the table from bits 1, 3 and 5 of the source data int j = ((src >> 1) & 1) + (((src >> 3) & 1) << 1) + (((src >> 5) & 1) << 2); - /* the bottom half of the translation table is the mirror image of the top */ + // the bottom half of the translation table is the mirror image of the top if (src & 0x80) j = 7 - j; - /* decode the ROM data */ + // decode the ROM data rom[A] = src ^ data_xortable[i][j]; - /* now decode the opcodes */ - /* pick the translation table from bits 4, 8 and 12 of the address */ + // now decode the opcodes + // pick the translation table from bits 4, 8 and 12 of the address i = ((A >> 4) & 1) + (((A >> 8) & 1) << 1) + (((A >> 12) & 1) << 2); m_decrypted_opcodes[A] = src ^ opcode_xortable[i][j]; } @@ -794,6 +812,8 @@ void pengo_state::init_penta() decode_penta(0x8000, 0x8000); } +} // Anonymous namespace + /************************************* * @@ -807,6 +827,7 @@ GAME( 1982, pengo2u, pengo, pengou, pengo, pengo_state, empty_init, RO GAME( 1982, pengo3u, pengo, pengou, pengo, pengo_state, empty_init, ROT90, "Sega", "Pengo (set 3, not encrypted)", MACHINE_SUPPORTS_SAVE ) /* Sega game ID# 834-5091 PENGO */ GAME( 1982, pengo4, pengo, pengoe, pengo, pengo_state, empty_init, ROT90, "Sega", "Pengo (set 4, encrypted)", MACHINE_SUPPORTS_SAVE ) /* Sega game ID# 834-5081 PENGO */ GAME( 1982, pengo5, pengo, pengoe, pengo, pengo_state, empty_init, ROT90, "Sega", "Pengo (set 5, encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, pengo6, pengo, pengo, pengo, pengo_state, init_penta, ROT90, "Sega", "Pengo (set 6, encrypted)", MACHINE_SUPPORTS_SAVE ) /* Sega game ID# 834-5078 PENGO REV.A */ GAME( 1982, pengob, pengo, pengo, pengo, pengo_state, init_penta, ROT90, "bootleg", "Pengo (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, penta, pengo, pengo, pengo, pengo_state, init_penta, ROT90, "bootleg (Grinbee Shouji)", "Penta", MACHINE_SUPPORTS_SAVE ) // Grinbee Shouji was a subsidiary of Orca GAME( 1983, jrpacmbl, jrpacman, jrpacmbl, jrpacmbl, pengo_state, empty_init, ROT90, "bootleg", "Jr. Pac-Man (Pengo hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index baa8e102e5e..dd63dbdf6ce 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -34021,6 +34021,7 @@ pengo2u // 834-0386 (c) 1982 Sega pengo3u // 834-0386 (c) 1982 Sega pengo4 // 834-0386 (c) 1982 Sega pengo5 // 834-0386 (c) 1982 Sega +pengo6 // 834-0386 (c) 1982 Sega pengob // bootleg penta // bootleg -- cgit v1.2.3