diff options
author | David Haywood <mamehaze@users.noreply.github.com> | 2016-09-25 15:15:17 +0100 |
---|---|---|
committer | David Haywood <mamehaze@users.noreply.github.com> | 2016-09-25 15:15:17 +0100 |
commit | 086c14d1b615b861e9595a637f5cab033295dbb9 (patch) | |
tree | 4fb623677405daa4242abd8e1de3afe45691015a | |
parent | c66cc4cff92e8d9aa3823660ec5456ae83f695d2 (diff) |
new clones - Popeye (Japan, Sky Skipper hardware) [ShouTime]
-rw-r--r-- | src/mame/drivers/popeye.cpp | 105 | ||||
-rw-r--r-- | src/mame/includes/popeye.h | 6 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 | ||||
-rw-r--r-- | src/mame/video/popeye.cpp | 52 |
4 files changed, 121 insertions, 43 deletions
diff --git a/src/mame/drivers/popeye.cpp b/src/mame/drivers/popeye.cpp index a702cb7648f..8521c68dc28 100644 --- a/src/mame/drivers/popeye.cpp +++ b/src/mame/drivers/popeye.cpp @@ -191,7 +191,7 @@ static ADDRESS_MAP_START( popeyebl_map, AS_PROGRAM, 8, popeye_state ) AM_RANGE(0xa000, 0xa3ff) AM_WRITE(popeye_videoram_w) AM_SHARE("videoram") AM_RANGE(0xa400, 0xa7ff) AM_WRITE(popeye_colorram_w) AM_SHARE("colorram") AM_RANGE(0xc000, 0xcfff) AM_WRITE(skyskipr_bitmap_w) - AM_RANGE(0xe000, 0xe01f) AM_ROM AM_REGION("proms", 0x0240) + AM_RANGE(0xe000, 0xe01f) AM_ROM AM_REGION("blprot", 0x00) ADDRESS_MAP_END static ADDRESS_MAP_START( popeye_io_map, AS_IO, 8, popeye_state ) @@ -467,7 +467,7 @@ static MACHINE_CONFIG_START( skyskipr, popeye_state ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", popeye) MCFG_PALETTE_ADD("palette", 16+16*2+64*4) - MCFG_PALETTE_INIT_OWNER(popeye_state, popeye) + MCFG_PALETTE_INIT_OWNER(popeye_state, skyskipr) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -478,6 +478,10 @@ static MACHINE_CONFIG_START( skyskipr, popeye_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( popeyej, skyskipr ) + MCFG_PALETTE_MODIFY("palette") + MCFG_PALETTE_INIT_OWNER(popeye_state,popeye) +MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( popeye, skyskipr ) MCFG_CPU_MODIFY("maincpu") @@ -546,12 +550,16 @@ ROM_START( skyskipr ) ROM_LOAD( "tnx1-t.3e", 0x2000, 0x1000, CRC(92b6a0e8) SHA1(d11ff39932cec9b5408dc957bf825dcf1d00c027) ) ROM_LOAD( "tnx1-t.5e", 0x3000, 0x1000, CRC(cc5f0ac3) SHA1(3374b1c387df3a3eba6c523f7c13711260074a89) ) - ROM_REGION( 0x0340, "proms", 0 ) + ROM_REGION( 0x40, "proms", 0 ) ROM_LOAD( "tnx1-t.4a", 0x0000, 0x0020, CRC(98846924) SHA1(89688d05c4c2d6f389da4e9c0c13e0f022f2d376) ) /* background palette */ ROM_LOAD( "tnx1-t.1a", 0x0020, 0x0020, CRC(c2bca435) SHA1(e7d3e68d153d646eaf12b263d58b07da2615399c) ) /* char palette */ - ROM_LOAD( "tnx1-t.3a", 0x0040, 0x0100, CRC(8abf9de4) SHA1(6e5500639a2dca3c288619fb8bdd120eb49bf8e0) ) /* sprite palette - low 4 bits */ - ROM_LOAD( "tnx1-t.2a", 0x0140, 0x0100, CRC(aa7ff322) SHA1(522d21854aa11e24f3679163354ae4fb35619eff) ) /* sprite palette - high 4 bits */ - ROM_LOAD( "tnx1-t.3j", 0x0240, 0x0100, CRC(1c5c8dea) SHA1(5738303b2a9c79b7d06bcf20fdb4d9b29f6e2d96) ) /* timing for the protection ALU */ + + ROM_REGION( 0x0200, "sprpal", 0 ) + ROM_LOAD( "tnx1-t.3a", 0x0000, 0x0100, CRC(8abf9de4) SHA1(6e5500639a2dca3c288619fb8bdd120eb49bf8e0) ) /* sprite palette - low 4 bits */ + ROM_LOAD( "tnx1-t.2a", 0x0100, 0x0100, CRC(aa7ff322) SHA1(522d21854aa11e24f3679163354ae4fb35619eff) ) /* sprite palette - high 4 bits */ + + ROM_REGION( 0x0100, "prot", 0 ) + ROM_LOAD( "tnx1-t.3j", 0x0000, 0x0100, CRC(1c5c8dea) SHA1(5738303b2a9c79b7d06bcf20fdb4d9b29f6e2d96) ) /* timing for the protection ALU */ ROM_END /* @@ -578,12 +586,16 @@ ROM_START( popeye ) ROM_LOAD( "tpp2-v.1j", 0x4000, 0x2000, CRC(7e864668) SHA1(8e275dbb1c586f4ebca7548db05246ef0f56d7b1) ) ROM_LOAD( "tpp2-v.1k", 0x6000, 0x2000, CRC(49e1d170) SHA1(bd51a4e34ce8109f26954760156e3cf05fb9db57) ) - ROM_REGION( 0x0340, "proms", 0 ) + ROM_REGION( 0x40, "proms", 0 ) ROM_LOAD( "tpp2-c.4a", 0x0000, 0x0020, CRC(375e1602) SHA1(d84159a0af5db577821c43712bc733329a43af80) ) /* background palette */ ROM_LOAD( "tpp2-c.3a", 0x0020, 0x0020, CRC(e950bea1) SHA1(0b48082fe79d9fcdca7e80caff1725713d0c3163) ) /* char palette */ - ROM_LOAD( "tpp2-c.5b", 0x0040, 0x0100, CRC(c5826883) SHA1(f2c4d3473b3bfa55bffad003dc1fd79540e7e0d1) ) /* sprite palette - low 4 bits */ - ROM_LOAD( "tpp2-c.5a", 0x0140, 0x0100, CRC(c576afba) SHA1(013c8e8db08a03c7ba156cfefa671d26155fe835) ) /* sprite palette - high 4 bits */ - ROM_LOAD( "tpp2-v.7j", 0x0240, 0x0100, CRC(a4655e2e) SHA1(2a620932fccb763c6c667278c0914f31b9f00ddf) ) /* timing for the protection ALU */ + + ROM_REGION( 0x0200, "sprpal", 0 ) + ROM_LOAD( "tpp2-c.5b", 0x0000, 0x0100, CRC(c5826883) SHA1(f2c4d3473b3bfa55bffad003dc1fd79540e7e0d1) ) /* sprite palette - low 4 bits */ + ROM_LOAD( "tpp2-c.5a", 0x0100, 0x0100, CRC(c576afba) SHA1(013c8e8db08a03c7ba156cfefa671d26155fe835) ) /* sprite palette - high 4 bits */ + + ROM_REGION( 0x0100, "prot", 0 ) + ROM_LOAD( "tpp2-v.7j", 0x0000, 0x0100, CRC(a4655e2e) SHA1(2a620932fccb763c6c667278c0914f31b9f00ddf) ) /* timing for the protection ALU */ ROM_END ROM_START( popeyeu ) @@ -603,12 +615,16 @@ ROM_START( popeyeu ) ROM_LOAD( "tpp2-v.1j", 0x4000, 0x2000, CRC(7e864668) SHA1(8e275dbb1c586f4ebca7548db05246ef0f56d7b1) ) ROM_LOAD( "tpp2-v.1k", 0x6000, 0x2000, CRC(49e1d170) SHA1(bd51a4e34ce8109f26954760156e3cf05fb9db57) ) - ROM_REGION( 0x0340, "proms", 0 ) + ROM_REGION( 0x40, "proms", 0 ) ROM_LOAD( "tpp2-c.4a", 0x0000, 0x0020, CRC(375e1602) SHA1(d84159a0af5db577821c43712bc733329a43af80) ) /* background palette */ ROM_LOAD( "tpp2-c.3a", 0x0020, 0x0020, CRC(e950bea1) SHA1(0b48082fe79d9fcdca7e80caff1725713d0c3163) ) /* char palette */ - ROM_LOAD( "tpp2-c.5b", 0x0040, 0x0100, CRC(c5826883) SHA1(f2c4d3473b3bfa55bffad003dc1fd79540e7e0d1) ) /* sprite palette - low 4 bits */ - ROM_LOAD( "tpp2-c.5a", 0x0140, 0x0100, CRC(c576afba) SHA1(013c8e8db08a03c7ba156cfefa671d26155fe835) ) /* sprite palette - high 4 bits */ - ROM_LOAD( "tpp2-v.7j", 0x0240, 0x0100, CRC(a4655e2e) SHA1(2a620932fccb763c6c667278c0914f31b9f00ddf) ) /* timing for the protection ALU */ + + ROM_REGION( 0x0200, "sprpal", 0 ) + ROM_LOAD( "tpp2-c.5b", 0x0000, 0x0100, CRC(c5826883) SHA1(f2c4d3473b3bfa55bffad003dc1fd79540e7e0d1) ) /* sprite palette - low 4 bits */ + ROM_LOAD( "tpp2-c.5a", 0x0100, 0x0100, CRC(c576afba) SHA1(013c8e8db08a03c7ba156cfefa671d26155fe835) ) /* sprite palette - high 4 bits */ + + ROM_REGION( 0x0100, "prot", 0 ) + ROM_LOAD( "tpp2-v.7j", 0x0000, 0x0100, CRC(a4655e2e) SHA1(2a620932fccb763c6c667278c0914f31b9f00ddf) ) /* timing for the protection ALU */ ROM_END ROM_START( popeyef ) @@ -628,12 +644,16 @@ ROM_START( popeyef ) ROM_LOAD( "tpp2-v.1j", 0x4000, 0x2000, CRC(7e864668) SHA1(8e275dbb1c586f4ebca7548db05246ef0f56d7b1) ) ROM_LOAD( "tpp2-v.1k", 0x6000, 0x2000, CRC(49e1d170) SHA1(bd51a4e34ce8109f26954760156e3cf05fb9db57) ) - ROM_REGION( 0x0340, "proms", 0 ) + ROM_REGION( 0x40, "proms", 0 ) ROM_LOAD( "tpp2-c.4a", 0x0000, 0x0020, CRC(375e1602) SHA1(d84159a0af5db577821c43712bc733329a43af80) ) /* background palette */ ROM_LOAD( "tpp2-c.3a", 0x0020, 0x0020, CRC(e950bea1) SHA1(0b48082fe79d9fcdca7e80caff1725713d0c3163) ) /* char palette */ - ROM_LOAD( "tpp2-c.5b", 0x0040, 0x0100, CRC(c5826883) SHA1(f2c4d3473b3bfa55bffad003dc1fd79540e7e0d1) ) /* sprite palette - low 4 bits */ - ROM_LOAD( "tpp2-c.5a", 0x0140, 0x0100, CRC(c576afba) SHA1(013c8e8db08a03c7ba156cfefa671d26155fe835) ) /* sprite palette - high 4 bits */ - ROM_LOAD( "tpp2-v.7j", 0x0240, 0x0100, CRC(a4655e2e) SHA1(2a620932fccb763c6c667278c0914f31b9f00ddf) ) /* timing for the protection ALU */ + + ROM_REGION( 0x0200, "sprpal", 0 ) + ROM_LOAD( "tpp2-c.5b", 0x0000, 0x0100, CRC(c5826883) SHA1(f2c4d3473b3bfa55bffad003dc1fd79540e7e0d1) ) /* sprite palette - low 4 bits */ + ROM_LOAD( "tpp2-c.5a", 0x0100, 0x0100, CRC(c576afba) SHA1(013c8e8db08a03c7ba156cfefa671d26155fe835) ) /* sprite palette - high 4 bits */ + + ROM_REGION( 0x0100, "prot", 0 ) + ROM_LOAD( "tpp2-v.7j", 0x0000, 0x0100, CRC(a4655e2e) SHA1(2a620932fccb763c6c667278c0914f31b9f00ddf) ) /* timing for the protection ALU */ ROM_END ROM_START( popeyebl ) @@ -653,14 +673,49 @@ ROM_START( popeyebl ) ROM_LOAD( "v-1j", 0x4000, 0x2000, CRC(7e864668) SHA1(8e275dbb1c586f4ebca7548db05246ef0f56d7b1) ) ROM_LOAD( "v-1k", 0x6000, 0x2000, CRC(49e1d170) SHA1(bd51a4e34ce8109f26954760156e3cf05fb9db57) ) - ROM_REGION( 0x0260, "proms", 0 ) + ROM_REGION( 0x40, "proms", 0 ) ROM_LOAD( "popeye.pr1", 0x0000, 0x0020, CRC(d138e8a4) SHA1(eba7f870ccab72105593007f5cd7e0b863912402) ) /* background palette */ ROM_LOAD( "popeye.pr2", 0x0020, 0x0020, CRC(0f364007) SHA1(b77d71df391a9ac9e778e84475627e72de2b8507) ) /* char palette */ - ROM_LOAD( "popeye.pr3", 0x0040, 0x0100, CRC(ca4d7b6a) SHA1(ec979fffea9db5a327a5270241e376c21516e343) ) /* sprite palette - low 4 bits */ - ROM_LOAD( "popeye.pr4", 0x0140, 0x0100, CRC(cab9bc53) SHA1(e63ba8856190187996e405f6fcee254c8ca6e81f) ) /* sprite palette - high 4 bits */ - ROM_LOAD( "po_d1-e1.bin", 0x0240, 0x0020, CRC(8de22998) SHA1(e3a232ff85fb207afbe23049a65e828420589342) ) /* protection PROM */ + + ROM_REGION( 0x0200, "sprpal", 0 ) + ROM_LOAD( "popeye.pr3", 0x0000, 0x0100, CRC(ca4d7b6a) SHA1(ec979fffea9db5a327a5270241e376c21516e343) ) /* sprite palette - low 4 bits */ + ROM_LOAD( "popeye.pr4", 0x0100, 0x0100, CRC(cab9bc53) SHA1(e63ba8856190187996e405f6fcee254c8ca6e81f) ) /* sprite palette - high 4 bits */ + + ROM_REGION( 0x0020, "blprot", 0 ) + ROM_LOAD( "po_d1-e1.bin", 0x0000, 0x0020, CRC(8de22998) SHA1(e3a232ff85fb207afbe23049a65e828420589342) ) /* protection PROM */ ROM_END +ROM_START( popeyej ) + ROM_REGION( 0x8000, "maincpu", 0 ) + ROM_LOAD( "TPP1-C.2A.2732", 0x0000, 0x1000, CRC(4176761e) SHA1(6977da294e88bb2d08ce02901f35c99df69dd6a5) ) + ROM_LOAD( "TPP1-C.2B.2732", 0x1000, 0x1000, CRC(4e0b7f06) SHA1(02667e297ef2112cf4150c0c18e5715c9010e4ac) ) + ROM_LOAD( "TPP1-C.2C.2732", 0x2000, 0x1000, CRC(b1c18b7e) SHA1(12a067e2914a9d2051b2507de0673ac4a5198329) ) + ROM_LOAD( "TPP1-C.2D.2732", 0x3000, 0x1000, CRC(79d0e988) SHA1(7c8ee46918996dab39b417e4361edef259935dbf) ) + ROM_LOAD( "TPP1-C.2E.2732", 0x4000, 0x1000, CRC(74854ca1) SHA1(9b9e5112e32105a9726fff23162be38b5b9e3f7b) ) + ROM_LOAD( "TPP1-C.2F.2732", 0x5000, 0x1000, CRC(e2b08891) SHA1(e73b1d355f543772c79e1970426e3e9696b2b23c) ) + ROM_LOAD( "TPP1-C.2G.2732", 0x6000, 0x1000, CRC(b74a1a97) SHA1(3a51b08f80d378403b1e0df8446057b69157ea9b) ) + ROM_LOAD( "TPP1-C.2H.2732", 0x7000, 0x1000, CRC(30e84104) SHA1(c781cb47d940e8e5d4f3cb799222db634d99e054) ) + + ROM_REGION( 0x0800, "gfx1", 0 ) + ROM_LOAD( "TPP1-V.3H.2716", 0x0000, 0x0800, CRC(fa52a752) SHA1(45b8f52e4c15f9fe761d7c7f7109b4a70ada0cda) ) + + ROM_REGION( 0x8000, "gfx2", 0 ) + ROM_LOAD( "TPP1-E.1E.2763", 0x0000, 0x2000, CRC(0f2cd853) SHA1(426c9b4f6579bfcebe72b976bfe4f05147d53f96) ) + ROM_LOAD( "TPP1-E.2E.2763", 0x2000, 0x2000, CRC(888f3474) SHA1(ddee56b2b49bd50aaf9c98d8ef6e905e3f6ab859) ) + ROM_LOAD( "TPP1-E.3E.2763", 0x4000, 0x2000, CRC(7e864668) SHA1(8e275dbb1c586f4ebca7548db05246ef0f56d7b1) ) + ROM_LOAD( "TPP1-E.5E.2763", 0x6000, 0x2000, CRC(49e1d170) SHA1(bd51a4e34ce8109f26954760156e3cf05fb9db57) ) + + ROM_REGION( 0x40, "proms", 0 ) + ROM_LOAD( "TPP1-T.4A.82S123", 0x0000, 0x0020, CRC(375e1602) SHA1(d84159a0af5db577821c43712bc733329a43af80) ) /* background palette */ + ROM_LOAD( "TPP1-T.1A.82S123", 0x0020, 0x0020, CRC(e950bea1) SHA1(0b48082fe79d9fcdca7e80caff1725713d0c3163) ) /* char palette */ + + ROM_REGION( 0x0200, "sprpal", 0 ) + ROM_LOAD( "TPP1-T.3A.82S129", 0x0000, 0x0100, CRC(c5826883) SHA1(f2c4d3473b3bfa55bffad003dc1fd79540e7e0d1) ) /* sprite palette - low 4 bits */ + ROM_LOAD( "TPP1-T.2A.82S129", 0x0100, 0x0100, CRC(c576afba) SHA1(013c8e8db08a03c7ba156cfefa671d26155fe835) ) /* sprite palette - high 4 bits */ + + ROM_REGION( 0x0100, "prot", 0 ) + ROM_LOAD( "TPP1-T.3J.82S129", 0x0000, 0x0100, CRC(a4655e2e) SHA1(2a620932fccb763c6c667278c0914f31b9f00ddf) ) /* timing for the protection ALU */ +ROM_END DRIVER_INIT_MEMBER(popeye_state,skyskipr) @@ -707,3 +762,9 @@ GAME( 1982, popeye, 0, popeye, popeye, popeye_state, popeye, ROT0, GAME( 1982, popeyeu, popeye, popeye, popeye, popeye_state, popeye, ROT0, "Nintendo", "Popeye (revision D not protected)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, popeyef, popeye, popeye, popeyef, popeye_state, popeye, ROT0, "Nintendo", "Popeye (revision F)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, popeyebl, popeye, popeyebl, popeye, driver_device, 0, ROT0, "bootleg", "Popeye (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, popeyej, popeye, popeyej, popeye, popeye_state, skyskipr, ROT0, "Nintendo", "Popeye (Japan, Sky Skipper hardware)", MACHINE_SUPPORTS_SAVE ) // this is the original Japanese release on the same hardware as Sky Skipper + + + + + diff --git a/src/mame/includes/popeye.h b/src/mame/includes/popeye.h index f24304dbe3b..e0a9bb310d8 100644 --- a/src/mame/includes/popeye.h +++ b/src/mame/includes/popeye.h @@ -11,6 +11,8 @@ public: m_spriteram(*this, "spriteram"), m_videoram(*this, "videoram"), m_colorram(*this, "colorram"), + m_color_prom(*this, "proms"), + m_color_prom_spr(*this, "sprpal"), m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette") { } @@ -24,6 +26,9 @@ public: required_shared_ptr<UINT8> m_spriteram; required_shared_ptr<UINT8> m_videoram; required_shared_ptr<UINT8> m_colorram; + required_region_ptr<UINT8> m_color_prom; + required_region_ptr<UINT8> m_color_prom_spr; + std::unique_ptr<UINT8[]> m_bitmapram; std::unique_ptr<bitmap_ind16> m_tmpbitmap2; UINT8 m_invertmask; @@ -47,6 +52,7 @@ public: DECLARE_PALETTE_INIT(popeye); DECLARE_VIDEO_START(popeye); DECLARE_PALETTE_INIT(popeyebl); + DECLARE_PALETTE_INIT(skyskipr); UINT32 screen_update_popeye(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(popeye_interrupt); DECLARE_CUSTOM_INPUT_MEMBER( pop_field_r ); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 988ddfd17f8..f1abf3cfc3f 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -30798,6 +30798,7 @@ popeye // (c) 1982 popeyebl // bootleg popeyef // (c) 1982 popeyeu // (c) 1982 +popeyej // skyskipr // (c) 1981 @source:popobear.cpp diff --git a/src/mame/video/popeye.cpp b/src/mame/video/popeye.cpp index 7b28b8d776a..0b913f32e9e 100644 --- a/src/mame/video/popeye.cpp +++ b/src/mame/video/popeye.cpp @@ -159,7 +159,6 @@ void popeye_state::convert_color_prom(const UINT8 *color_prom) m_palette->set_pen_color(16 + (2 * i) + 1,rgb_t(r,g,b)); } #endif - color_prom += 32; #if USE_NEW_COLOR /* sprites */ @@ -167,7 +166,7 @@ void popeye_state::convert_color_prom(const UINT8 *color_prom) UINT8 cpi[512]; for (i=0; i<512; i++) - cpi[i] = color_prom[i] ^ m_invertmask; + cpi[i] = m_color_prom_spr[i] ^ m_invertmask; compute_res_net_all(rgb, &cpi[0], popeye_7052_decode_info, popeye_7052_obj_net_info); m_palette->set_pen_colors(48, rgb); @@ -178,48 +177,64 @@ void popeye_state::convert_color_prom(const UINT8 *color_prom) /* red component */ - bit0 = ((color_prom[0] ^ m_invertmask) >> 0) & 0x01; - bit1 = ((color_prom[0] ^ m_invertmask) >> 1) & 0x01; - bit2 = ((color_prom[0] ^ m_invertmask) >> 2) & 0x01; + bit0 = ((m_color_prom_spr[0] ^ m_invertmask) >> 0) & 0x01; + bit1 = ((m_color_prom_spr[0] ^ m_invertmask) >> 1) & 0x01; + bit2 = ((m_color_prom_spr[0] ^ m_invertmask) >> 2) & 0x01; r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; /* green component */ - bit0 = ((color_prom[0] ^ m_invertmask) >> 3) & 0x01; - bit1 = ((color_prom[256] ^ m_invertmask) >> 0) & 0x01; - bit2 = ((color_prom[256] ^ m_invertmask) >> 1) & 0x01; + bit0 = ((m_color_prom_spr[0] ^ m_invertmask) >> 3) & 0x01; + bit1 = ((m_color_prom_spr[256] ^ m_invertmask) >> 0) & 0x01; + bit2 = ((m_color_prom_spr[256] ^ m_invertmask) >> 1) & 0x01; g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; /* blue component */ bit0 = 0; - bit1 = ((color_prom[256] ^ m_invertmask) >> 2) & 0x01; - bit2 = ((color_prom[256] ^ m_invertmask) >> 3) & 0x01; + bit1 = ((m_color_prom_spr[256] ^ m_invertmask) >> 2) & 0x01; + bit2 = ((m_color_prom_spr[256] ^ m_invertmask) >> 3) & 0x01; b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; m_palette->set_pen_color(48+i,rgb_t(r,g,b)); - color_prom++; + m_color_prom_spr++; } #endif } PALETTE_INIT_MEMBER(popeye_state, popeye) { - const UINT8 *color_prom = memregion("proms")->base(); m_invertmask = (USE_NEW_COLOR) ? 0x00 : 0xff; - convert_color_prom(color_prom); + convert_color_prom(m_color_prom); } PALETTE_INIT_MEMBER(popeye_state,popeyebl) { - const UINT8 *color_prom = memregion("proms")->base(); m_invertmask = (USE_NEW_COLOR) ? 0xff : 0x00; - convert_color_prom(color_prom); + convert_color_prom(m_color_prom); } +PALETTE_INIT_MEMBER(popeye_state, skyskipr) +{ + /* Two of the PROM address pins are tied together and one is not connected... */ + for (int i = 0;i < 0x100;i++) + { + int color = (i & 0x3f) | ((i & 0x20) << 1); + m_color_prom_spr[i] = m_color_prom_spr[color]; + m_color_prom_spr[i+0x100] = m_color_prom_spr[color+0x100]; + } + + m_invertmask = (USE_NEW_COLOR) ? 0x00 : 0xff; + + convert_color_prom(m_color_prom); +} + + + + void popeye_state::set_background_palette(int bank) { int i; - UINT8 *color_prom = memregion("proms")->base() + 16 * bank; + UINT8 *color_prom = m_color_prom + 16 * bank; #if USE_NEW_COLOR UINT8 cpi[16]; @@ -440,11 +455,6 @@ void popeye_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) + ((spriteram[offs + 3] & 0x04) << 6); color += (*m_palettebank & 0x07) << 3; - if (m_bitmap_type == TYPE_SKYSKIPR) - { - /* Two of the PROM address pins are tied together and one is not connected... */ - color = (color & 0x0f) | ((color & 0x08) << 1); - } flipx = spriteram[offs + 2] & 0x80; flipy = spriteram[offs + 3] & 0x08; |