20pacgal, 8080bw: switched to configured banking, removed the now unneeded postload (nw)

This commit is contained in:
Ivan Vangelista 2016-01-21 18:49:35 +01:00
parent 5a2c73dea6
commit f012385904
4 changed files with 21 additions and 49 deletions

View File

@ -140,21 +140,10 @@ WRITE8_MEMBER(_20pacgal_state::_20pacgal_coin_counter_w)
*
*************************************/
void _20pacgal_state::set_bankptr()
{
if (m_game_selected == 0)
{
UINT8 *rom = memregion("maincpu")->base();
membank("bank1")->set_base(rom + 0x08000);
}
else
membank("bank1")->set_base(m_ram_48000);
}
WRITE8_MEMBER(_20pacgal_state::ram_bank_select_w)
{
m_game_selected = data & 1;
set_bankptr();
membank("bank1")->set_entry(m_game_selected);
}
WRITE8_MEMBER(_20pacgal_state::ram_48000_w)
@ -374,7 +363,10 @@ void _20pacgal_state::common_save_state()
void _20pacgal_state::machine_start()
{
common_save_state();
machine().save().register_postload(save_prepost_delegate(FUNC(_20pacgal_state::set_bankptr), this)); //currently not used by 25pacman
// membank currently used only by 20pacgal
membank("bank1")->configure_entry(0, memregion("maincpu")->base() + 0x08000);
membank("bank1")->configure_entry(1, m_ram_48000);
}
void _25pacman_state::machine_start()
@ -442,7 +434,7 @@ MACHINE_CONFIG_END
*/
ROM_START( 25pacmano ) /* Revision 2.00 */
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "pacman_25th_rev2.0.u13", 0x00000, 0x40000, CRC(99a52784) SHA1(6222c2eb686e65ba23ca376ff4392be1bc826a03) ) /* Label printed Rev 2.0, program says Rev 2.00 */
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
@ -455,7 +447,7 @@ ROM_END
ROM_START( 25pacman ) /* Revision 3.00 */
ROM_REGION( 0x40000, "flash", 0 )
ROM_LOAD( "pacman25ver3.u1", 0x00000, 0x40000, CRC(55b0076e) SHA1(4544cc193bdd22bfc88d096083ccc4069cac4607) ) /* program says Rev 3.00 */
ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASE00 )
ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASE00 )
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
// shouldn't be loading this! must be uploaded somewhere
@ -467,7 +459,7 @@ ROM_END
*/
ROM_START( 20pacgal ) /* Version 1.08 */
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "ms_pac-galaga_v1.08.u13", 0x00000, 0x40000, CRC(2ea16809) SHA1(27f041bdbb590917e9dcb70c21aa6b6d6c9f04fb) ) /* Also found labeled as "V1.08 HO" */
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
@ -475,7 +467,7 @@ ROM_START( 20pacgal ) /* Version 1.08 */
ROM_END
ROM_START( 20pacgalr4 ) /* Version 1.04 */
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "ms_pac-galaga_v1.04.u13", 0x00000, 0x40000, CRC(6c474d2d) SHA1(5a150fc9d2ed0e908385b9f9d532aa33cf80dba4) )
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
@ -483,7 +475,7 @@ ROM_START( 20pacgalr4 ) /* Version 1.04 */
ROM_END
ROM_START( 20pacgalr3 ) /* Version 1.03 */
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "ms_pac-galaga_v1.03.u13", 0x00000, 0x40000, CRC(e13dce63) SHA1(c8943f082883c423210fc3c97323222afb00f0a2) )
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
@ -491,7 +483,7 @@ ROM_START( 20pacgalr3 ) /* Version 1.03 */
ROM_END
ROM_START( 20pacgalr2 ) /* Version 1.02 */
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "ms_pac-galaga_v1.02.u13", 0x00000, 0x40000, CRC(b939f805) SHA1(5fe9470601156dfc2d339c94fd8f0aa4db197760) )
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
@ -499,7 +491,7 @@ ROM_START( 20pacgalr2 ) /* Version 1.02 */
ROM_END
ROM_START( 20pacgalr1 ) /* Version 1.01 */
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "ms_pac-galaga_v1.01.u13", 0x00000, 0x40000, CRC(77159582) SHA1(c05e005a941cbdc806dcd76b315069362c792a72) )
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
@ -507,7 +499,7 @@ ROM_START( 20pacgalr1 ) /* Version 1.01 */
ROM_END
ROM_START( 20pacgalr0 ) /* Version 1.00 */
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "ms_pac-galaga_v1.0.u13", 0x00000, 0x40000, CRC(3c92a269) SHA1(a616d912393f4e49b95231d72eec48567f46fc00) ) /* Label printed V1.0, program says v1.00 */
ROM_REGION( 0x8000, "proms", 0 ) /* palette */

View File

@ -3274,26 +3274,10 @@ WRITE8_MEMBER(_8080bw_state::invmulti_eeprom_w)
WRITE8_MEMBER(_8080bw_state::invmulti_bank_w)
{
m_invmulti_bank = data; //needed to restore the bankswitch post load
// d0, d4, d6: bank
int bank = (data & 1) | (data >> 3 & 2) | (data >> 4 & 4);
membank("bank1")->set_base(memregion("maincpu")->base() + bank * 0x4000 + 0x0000);
membank("bank2")->set_base(memregion("maincpu")->base() + bank * 0x4000 + 0x2000);
}
void _8080bw_state::invmulti_bankswitch_restore()
{
invmulti_bank_w(m_maincpu->space(AS_PROGRAM), 0, m_invmulti_bank);
}
MACHINE_RESET_MEMBER(_8080bw_state,invmulti)
{
m_invmulti_bank = 0;
invmulti_bank_w(m_maincpu->space(AS_PROGRAM), 0, 0);
MACHINE_RESET_CALL_MEMBER(mw8080bw);
membank("bank1")->set_entry(bank);
membank("bank2")->set_entry(bank);
}
MACHINE_CONFIG_DERIVED_CLASS( invmulti, invaders, _8080bw_state )
@ -3304,7 +3288,7 @@ MACHINE_CONFIG_DERIVED_CLASS( invmulti, invaders, _8080bw_state )
MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state,invmulti)
MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state, mw8080bw)
MACHINE_CONFIG_END
DRIVER_INIT_MEMBER(_8080bw_state,invmulti)
@ -3316,9 +3300,11 @@ DRIVER_INIT_MEMBER(_8080bw_state,invmulti)
// decrypt rom
for (int i = 0; i < len; i++)
dest[i] = BITSWAP8(src[(i & 0x100ff) | (BITSWAP8(i >> 8 & 0xff, 7,3,4,5,0,6,1,2) << 8)],0,6,5,7,4,3,1,2);
save_item(NAME(m_invmulti_bank));
machine().save().register_postload(save_prepost_delegate(FUNC(_8080bw_state::invmulti_bankswitch_restore), this));
membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base(), 0x4000);
membank("bank1")->set_entry(0);
membank("bank2")->configure_entries(0, 8, memregion("maincpu")->base() + 0x2000, 0x4000);
membank("bank2")->set_entry(0);
}

View File

@ -62,7 +62,6 @@ public:
virtual void machine_reset() override;
UINT32 screen_update_20pacgal(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
void set_bankptr();
void get_pens(pen_t *pens);
void do_pen_lookup(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_rgb32 &bitmap);

View File

@ -56,9 +56,6 @@ public:
UINT8 m_schaser_background_select;
UINT16 m_claybust_gun_pos;
int m_invmulti_bank;
DECLARE_CUSTOM_INPUT_MEMBER(sflush_80_r);
DECLARE_INPUT_CHANGED_MEMBER(claybust_gun_trigger);
DECLARE_CUSTOM_INPUT_MEMBER(claybust_gun_on_r);
@ -120,7 +117,6 @@ public:
DECLARE_MACHINE_START(polaris);
DECLARE_MACHINE_START(darthvdr);
DECLARE_MACHINE_RESET(darthvdr);
DECLARE_MACHINE_RESET(invmulti);
DECLARE_MACHINE_START(extra_8080bw_sh);
DECLARE_MACHINE_START(extra_8080bw_vh);
DECLARE_MACHINE_START(schaser_sh);
@ -155,7 +151,6 @@ public:
inline void set_pixel( bitmap_rgb32 &bitmap, UINT8 y, UINT8 x, int color );
inline void set_8_pixels( bitmap_rgb32 &bitmap, UINT8 y, UINT8 x, UINT8 data, int fore_color, int back_color );
void clear_extra_columns( bitmap_rgb32 &bitmap, int color );
void invmulti_bankswitch_restore();
};