mirror of
https://github.com/holub/mame
synced 2025-07-01 16:19:38 +03:00
bwing.c: fix save state issue with RAM-based gfxdecode (nw)
This commit is contained in:
parent
6e273a53b5
commit
6bc5c35b87
@ -60,18 +60,6 @@ WRITE8_MEMBER(bwing_state::bwp3_nmiack_w)
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(bwing_state::bwp1_io_r)
|
||||
{
|
||||
if (offset == 0) return(ioport("DSW0")->read());
|
||||
if (offset == 1) return(ioport("DSW1")->read());
|
||||
if (offset == 2) return(ioport("IN0")->read());
|
||||
if (offset == 3) return(ioport("IN1")->read());
|
||||
if (offset == 4) return(ioport("IN2")->read());
|
||||
|
||||
return((m_bwp123_membase[0])[0x1b00 + offset]);
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(bwing_state::bwp1_ctrl_w)
|
||||
{
|
||||
switch (offset)
|
||||
@ -130,14 +118,18 @@ WRITE8_MEMBER(bwing_state::bwp2_ctrl_w)
|
||||
|
||||
// Main CPU
|
||||
static ADDRESS_MAP_START( bwp1_map, AS_PROGRAM, 8, bwing_state )
|
||||
AM_RANGE(0x1b00, 0x1b07) AM_READ(bwp1_io_r)
|
||||
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("sharedram")
|
||||
AM_RANGE(0x0800, 0x0fff) AM_RAM
|
||||
AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x1400, 0x17ff) AM_RAM
|
||||
AM_RANGE(0x1800, 0x19ff) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0x1a00, 0x1aff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0x1b00, 0x1b07) AM_RAM_WRITE(scrollreg_w)
|
||||
AM_RANGE(0x1b00, 0x1b00) AM_READ_PORT("DSW0")
|
||||
AM_RANGE(0x1b01, 0x1b01) AM_READ_PORT("DSW1")
|
||||
AM_RANGE(0x1b02, 0x1b02) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x1b03, 0x1b03) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x1b04, 0x1b04) AM_READ_PORT("IN2")
|
||||
AM_RANGE(0x1b00, 0x1b07) AM_WRITE(scrollreg_w)
|
||||
AM_RANGE(0x1c00, 0x1c07) AM_RAM_WRITE(bwp1_ctrl_w)
|
||||
AM_RANGE(0x2000, 0x3fff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
|
||||
AM_RANGE(0x4000, 0xffff) AM_ROM // "B-Wings US" writes to 9631-9632(debug?)
|
||||
@ -342,6 +334,8 @@ void bwing_state::machine_start()
|
||||
save_item(NAME(m_bwp3_u8F_d));
|
||||
|
||||
save_item(NAME(m_sreg));
|
||||
|
||||
machine().save().register_postload(save_prepost_delegate(FUNC(bwing_state::bwing_postload), this));
|
||||
}
|
||||
|
||||
void bwing_state::machine_reset()
|
||||
@ -353,6 +347,13 @@ void bwing_state::machine_reset()
|
||||
m_bwp3_u8F_d = 0;
|
||||
}
|
||||
|
||||
void bwing_state::bwing_postload()
|
||||
{
|
||||
m_gfxdecode->gfx(2)->mark_all_dirty();
|
||||
m_gfxdecode->gfx(3)->mark_all_dirty();
|
||||
}
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( bwing, bwing_state )
|
||||
|
||||
// basic machine hardware
|
||||
@ -543,7 +544,7 @@ ROM_END
|
||||
//****************************************************************************
|
||||
// Initializations
|
||||
|
||||
void bwing_state::fix_bwp3( )
|
||||
DRIVER_INIT_MEMBER(bwing_state,bwing)
|
||||
{
|
||||
UINT8 *rom = memregion("audiocpu")->base();
|
||||
int j = memregion("audiocpu")->bytes();
|
||||
@ -557,16 +558,6 @@ void bwing_state::fix_bwp3( )
|
||||
rom[j - (0x10 - 0x5)] = rom[j - (0x10 - 0xa)] = rom[j - (0x10 - 0x7)];
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(bwing_state,bwing)
|
||||
{
|
||||
m_bwp123_membase[0] = memregion("maincpu")->base();
|
||||
m_bwp123_membase[1] = memregion("sub")->base();
|
||||
m_bwp123_membase[2] = memregion("audiocpu")->base();
|
||||
|
||||
fix_bwp3();
|
||||
}
|
||||
|
||||
//****************************************************************************
|
||||
// Game Entries
|
||||
|
||||
|
@ -56,13 +56,9 @@ public:
|
||||
int m_bwp3_nmimask;
|
||||
int m_bwp3_u8F_d;
|
||||
|
||||
/* misc */
|
||||
UINT8 *m_bwp123_membase[3];
|
||||
|
||||
DECLARE_WRITE8_MEMBER(bwp3_u8F_w);
|
||||
DECLARE_WRITE8_MEMBER(bwp3_nmimask_w);
|
||||
DECLARE_WRITE8_MEMBER(bwp3_nmiack_w);
|
||||
DECLARE_READ8_MEMBER(bwp1_io_r);
|
||||
DECLARE_WRITE8_MEMBER(bwp1_ctrl_w);
|
||||
DECLARE_WRITE8_MEMBER(bwp2_ctrl_w);
|
||||
DECLARE_WRITE8_MEMBER(spriteram_w);
|
||||
@ -85,11 +81,10 @@ public:
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
virtual void video_start();
|
||||
void bwing_postload();
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites( bitmap_ind16 &bmp, const rectangle &clip, UINT8 *ram, int pri );
|
||||
|
||||
INTERRUPT_GEN_MEMBER(bwp3_interrupt);
|
||||
|
||||
void fix_bwp3( );
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user