summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Osso13 <mesgnet@yahoo.it>2015-01-13 20:14:13 +0100
committer Osso13 <mesgnet@yahoo.it>2015-01-13 20:14:13 +0100
commit554fda6d954faa1acad5d003b062903d60cb23fe (patch)
treeb8ba4a028cf8ae76e93464fe5e3a0c5b0960209f
parent02173bc23deb0b57d641d1a00084dfa40b162bee (diff)
dec0.c: added save state support (nw)
-rw-r--r--src/mame/drivers/dec0.c70
-rw-r--r--src/mame/includes/dec0.h72
-rw-r--r--src/mame/machine/dec0.c24
-rw-r--r--src/mame/video/dec0.c5
-rw-r--r--src/mame/video/decbac06.c6
5 files changed, 98 insertions, 79 deletions
diff --git a/src/mame/drivers/dec0.c b/src/mame/drivers/dec0.c
index 66d4ac2e44d..a5faa2a913a 100644
--- a/src/mame/drivers/dec0.c
+++ b/src/mame/drivers/dec0.c
@@ -526,7 +526,12 @@ ADDRESS_MAP_END
-
+void dec0_automat_state::machine_start()
+{
+ save_item(NAME(m_automat_adpcm_byte));
+ save_item(NAME(m_automat_msm5205_vclk_toggle));
+ save_item(NAME(m_automat_scroll_regs));
+}
/* swizzle the palette writes around so we can use the same gfx plane ordering as the originals */
@@ -3034,56 +3039,51 @@ READ16_MEMBER(dec0_state::ffantasybl_242024_r)
return 0xffff;
}
-READ16_MEMBER(dec0_state::ffantasybl_vblank_r)
-{
- return ioport("VBLANK")->read();
-}
-
DRIVER_INIT_MEMBER(dec0_state,ffantasybl)
{
m_maincpu->space(AS_PROGRAM).install_ram(0x24c880, 0x24cbff); // what is this? layer 3-related??
m_maincpu->space(AS_PROGRAM).install_read_handler(0x00242024, 0x00242025, read16_delegate(FUNC(dec0_state::ffantasybl_242024_r),this));
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x00ff87ee, 0x00ff87ef, read16_delegate(FUNC(dec0_state::ffantasybl_vblank_r),this));
+ m_maincpu->space(AS_PROGRAM).install_read_port(0x00ff87ee, 0x00ff87ef, "VBLANK");
}
/******************************************************************************/
// YEAR, NAME, PARENT, MACHINE, INPUT, STATE/DEVICE, INIT, MONITOR,COMPANY, FULLNAME, FLAGS
-GAME( 1987, hbarrel, 0, hbarrel, hbarrel, dec0_state, hbarrel, ROT270, "Data East USA", "Heavy Barrel (US)", 0 )
-GAME( 1987, hbarrelw, hbarrel, hbarrel, hbarrel, dec0_state, hbarrel, ROT270, "Data East Corporation", "Heavy Barrel (World)", 0 )
-GAME( 1988, baddudes, 0, baddudes, baddudes, dec0_state, baddudes, ROT0, "Data East USA", "Bad Dudes vs. Dragonninja (US)", 0 )
-GAME( 1988, drgninja, baddudes, baddudes, drgninja, dec0_state, baddudes, ROT0, "Data East Corporation", "Dragonninja (Japan)", 0 )
-GAME( 1988, birdtry, 0, birdtry, birdtry, dec0_state, birdtry, ROT270, "Data East Corporation", "Birdie Try (Japan)", GAME_UNEMULATED_PROTECTION )
-GAME( 1988, robocop, 0, robocop, robocop, dec0_state, robocop, ROT0, "Data East Corporation", "Robocop (World revision 4)", 0 )
-GAME( 1988, robocopw, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East Corporation", "Robocop (World revision 3)", 0 )
-GAME( 1988, robocopj, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East Corporation", "Robocop (Japan)", 0 )
-GAME( 1988, robocopu, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East USA", "Robocop (US revision 1)", 0 )
-GAME( 1988, robocopu0, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East USA", "Robocop (US revision 0)", 0 )
-GAME( 1989, hippodrm, 0, hippodrm, hippodrm, dec0_state, hippodrm, ROT0, "Data East USA", "Hippodrome (US)", 0 )
-GAME( 1989, ffantasy, hippodrm, hippodrm, ffantasy, dec0_state, hippodrm, ROT0, "Data East Corporation", "Fighting Fantasy (Japan revision 2)", 0 )
-GAME( 1989, ffantasya, hippodrm, hippodrm, ffantasy, dec0_state, hippodrm, ROT0, "Data East Corporation", "Fighting Fantasy (Japan)", 0 )
-GAME( 1989, secretag, 0, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East Corporation", "Secret Agent (World revision 3)", 0 )
-GAME( 1989, secretagj, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East Corporation", "Secret Agent (Japan revision 2)", 0 )
-GAME( 1989, slyspy, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 3)", 0 )
-GAME( 1989, slyspy2, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 2)", 0 )
-GAME( 1989, midres, 0, midres, midres, driver_device, 0, ROT0, "Data East Corporation", "Midnight Resistance (World)", 0 )
-GAME( 1989, midresu, midres, midres, midresu, driver_device, 0, ROT0, "Data East USA", "Midnight Resistance (US)", 0 )
-GAME( 1989, midresj, midres, midres, midresu, driver_device, 0, ROT0, "Data East Corporation", "Midnight Resistance (Japan)", 0 )
-GAME( 1990, bouldash, 0, slyspy, bouldash, dec0_state, slyspy, ROT0, "Data East Corporation (licensed from First Star)", "Boulder Dash / Boulder Dash Part 2 (World)", 0 )
-GAME( 1990, bouldashj, bouldash, slyspy, bouldash, dec0_state, slyspy, ROT0, "Data East Corporation (licensed from First Star)", "Boulder Dash / Boulder Dash Part 2 (Japan)", 0 )
+GAME( 1987, hbarrel, 0, hbarrel, hbarrel, dec0_state, hbarrel, ROT270, "Data East USA", "Heavy Barrel (US)", GAME_SUPPORTS_SAVE )
+GAME( 1987, hbarrelw, hbarrel, hbarrel, hbarrel, dec0_state, hbarrel, ROT270, "Data East Corporation", "Heavy Barrel (World)", GAME_SUPPORTS_SAVE )
+GAME( 1988, baddudes, 0, baddudes, baddudes, dec0_state, baddudes, ROT0, "Data East USA", "Bad Dudes vs. Dragonninja (US)", GAME_SUPPORTS_SAVE )
+GAME( 1988, drgninja, baddudes, baddudes, drgninja, dec0_state, baddudes, ROT0, "Data East Corporation", "Dragonninja (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1988, birdtry, 0, birdtry, birdtry, dec0_state, birdtry, ROT270, "Data East Corporation", "Birdie Try (Japan)", GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
+GAME( 1988, robocop, 0, robocop, robocop, dec0_state, robocop, ROT0, "Data East Corporation", "Robocop (World revision 4)", GAME_SUPPORTS_SAVE )
+GAME( 1988, robocopw, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East Corporation", "Robocop (World revision 3)", GAME_SUPPORTS_SAVE )
+GAME( 1988, robocopj, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East Corporation", "Robocop (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1988, robocopu, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East USA", "Robocop (US revision 1)", GAME_SUPPORTS_SAVE )
+GAME( 1988, robocopu0, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East USA", "Robocop (US revision 0)", GAME_SUPPORTS_SAVE )
+GAME( 1989, hippodrm, 0, hippodrm, hippodrm, dec0_state, hippodrm, ROT0, "Data East USA", "Hippodrome (US)", GAME_SUPPORTS_SAVE )
+GAME( 1989, ffantasy, hippodrm, hippodrm, ffantasy, dec0_state, hippodrm, ROT0, "Data East Corporation", "Fighting Fantasy (Japan revision 2)", GAME_SUPPORTS_SAVE )
+GAME( 1989, ffantasya, hippodrm, hippodrm, ffantasy, dec0_state, hippodrm, ROT0, "Data East Corporation", "Fighting Fantasy (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1989, secretag, 0, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East Corporation", "Secret Agent (World revision 3)", GAME_SUPPORTS_SAVE )
+GAME( 1989, secretagj, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East Corporation", "Secret Agent (Japan revision 2)", GAME_SUPPORTS_SAVE )
+GAME( 1989, slyspy, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 3)", GAME_SUPPORTS_SAVE )
+GAME( 1989, slyspy2, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 2)", GAME_SUPPORTS_SAVE )
+GAME( 1989, midres, 0, midres, midres, driver_device, 0, ROT0, "Data East Corporation", "Midnight Resistance (World)", GAME_SUPPORTS_SAVE )
+GAME( 1989, midresu, midres, midres, midresu, driver_device, 0, ROT0, "Data East USA", "Midnight Resistance (US)", GAME_SUPPORTS_SAVE )
+GAME( 1989, midresj, midres, midres, midresu, driver_device, 0, ROT0, "Data East Corporation", "Midnight Resistance (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1990, bouldash, 0, slyspy, bouldash, dec0_state, slyspy, ROT0, "Data East Corporation (licensed from First Star)", "Boulder Dash / Boulder Dash Part 2 (World)", GAME_SUPPORTS_SAVE )
+GAME( 1990, bouldashj, bouldash, slyspy, bouldash, dec0_state, slyspy, ROT0, "Data East Corporation (licensed from First Star)", "Boulder Dash / Boulder Dash Part 2 (Japan)", GAME_SUPPORTS_SAVE )
// bootlegs
// more or less just an unprotected versions of the game, everything intact
-GAME( 1988, robocopb, robocop, robocopb, robocop, dec0_state, robocop, ROT0, "bootleg", "Robocop (World bootleg)", 0)
-GAME( 1988, drgninjab, baddudes, baddudes, drgninja, dec0_state, baddudes, ROT0, "bootleg", "Dragonninja (bootleg)", 0 )
+GAME( 1988, robocopb, robocop, robocopb, robocop, dec0_state, robocop, ROT0, "bootleg", "Robocop (World bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1988, drgninjab, baddudes, baddudes, drgninja, dec0_state, baddudes, ROT0, "bootleg", "Dragonninja (bootleg)", GAME_SUPPORTS_SAVE )
// this is a common bootleg board
-GAME( 1989, midresb, midres, midresb, midresb, dec0_state, midresb, ROT0, "bootleg", "Midnight Resistance (bootleg with 68705)", 0 ) // need to hook up 68705?
-GAME( 1989, ffantasybl, hippodrm, ffantasybl, ffantasybl, dec0_state, ffantasybl, ROT0, "bootleg", "Fighting Fantasy (bootleg with 68705)", GAME_IMPERFECT_GRAPHICS ) // 68705 not dumped, might be the same as midresb
+GAME( 1989, midresb, midres, midresb, midresb, dec0_state, midresb, ROT0, "bootleg", "Midnight Resistance (bootleg with 68705)", GAME_SUPPORTS_SAVE ) // need to hook up 68705?
+GAME( 1989, ffantasybl, hippodrm, ffantasybl, ffantasybl, dec0_state, ffantasybl, ROT0, "bootleg", "Fighting Fantasy (bootleg with 68705)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 68705 not dumped, might be the same as midresb
/* A Bad Dudes bootleg with 68705 like the midres and ffantasy ones exists, but is not dumped */
// these are different to the above but quite similar to each other
-GAME( 1988, automat, robocop, automat, robocop, dec0_state, robocop, ROT0, "bootleg", "Automat (bootleg of Robocop)", GAME_NOT_WORKING ) // sound rom / music from section z with mods for ADPCM?
-GAME( 1989, secretab, secretag, secretab, slyspy, dec0_state, slyspy, ROT0, "bootleg", "Secret Agent (bootleg)", GAME_NOT_WORKING )
+GAME( 1988, automat, robocop, automat, robocop, dec0_state, robocop, ROT0, "bootleg", "Automat (bootleg of Robocop)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // sound rom / music from section z with mods for ADPCM?
+GAME( 1989, secretab, secretag, secretab, slyspy, dec0_state, slyspy, ROT0, "bootleg", "Secret Agent (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
diff --git a/src/mame/includes/dec0.h b/src/mame/includes/dec0.h
index 3385a050fb4..27dd1de8554 100644
--- a/src/mame/includes/dec0.h
+++ b/src/mame/includes/dec0.h
@@ -8,22 +8,34 @@ class dec0_state : public driver_device
public:
dec0_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_ram(*this, "ram"),
- m_spriteram(*this, "spriteram"),
- m_paletteram(*this, "palette"),
- m_robocop_shared_ram(*this, "robocop_shared"),
- m_hippodrm_shared_ram(*this, "hippodrm_shared"),
- m_tilegen1(*this, "tilegen1"),
- m_tilegen2(*this, "tilegen2"),
- m_tilegen3(*this, "tilegen3"),
- m_spritegen(*this, "spritegen"),
- m_pfprotect(*this, "pfprotect"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_subcpu(*this, "sub"),
m_mcu(*this, "mcu"),
m_msm(*this, "msm"),
- m_palette(*this, "palette") { }
+ m_palette(*this, "palette"),
+ m_tilegen1(*this, "tilegen1"),
+ m_tilegen2(*this, "tilegen2"),
+ m_tilegen3(*this, "tilegen3"),
+ m_spritegen(*this, "spritegen"),
+ m_pfprotect(*this, "pfprotect"),
+ m_ram(*this, "ram"),
+ m_spriteram(*this, "spriteram"),
+ m_paletteram(*this, "palette"),
+ m_robocop_shared_ram(*this, "robocop_shared"),
+ m_hippodrm_shared_ram(*this, "hippodrm_shared") { }
+
+ required_device<cpu_device> m_maincpu;
+ required_device<cpu_device> m_audiocpu;
+ optional_device<cpu_device> m_subcpu;
+ optional_device<cpu_device> m_mcu;
+ optional_device<msm5205_device> m_msm;
+ required_device<palette_device> m_palette;
+ optional_device<deco_bac06_device> m_tilegen1;
+ optional_device<deco_bac06_device> m_tilegen2;
+ optional_device<deco_bac06_device> m_tilegen3;
+ optional_device<deco_mxc06_device> m_spritegen;
+ optional_device<address_map_bank_device> m_pfprotect;
required_shared_ptr<UINT16> m_ram;
required_shared_ptr<UINT16> m_spriteram;
@@ -31,23 +43,16 @@ public:
optional_shared_ptr<UINT8> m_robocop_shared_ram;
optional_shared_ptr<UINT8> m_hippodrm_shared_ram;
- optional_device<deco_bac06_device> m_tilegen1;
- optional_device<deco_bac06_device> m_tilegen2;
- optional_device<deco_bac06_device> m_tilegen3;
- optional_device<deco_mxc06_device> m_spritegen;
-
- optional_device<address_map_bank_device> m_pfprotect;
-
- int m_GAME;
+ int m_game;
int m_i8751_return;
int m_i8751_command;
int m_slyspy_state;
int m_hippodrm_msb;
int m_hippodrm_lsb;
UINT8 m_i8751_ports[4];
-
UINT16 *m_buffered_spriteram;
UINT16 m_pri;
+
DECLARE_WRITE16_MEMBER(dec0_control_w);
DECLARE_WRITE16_MEMBER(slyspy_control_w);
DECLARE_WRITE16_MEMBER(midres_sound_w);
@@ -70,7 +75,9 @@ public:
DECLARE_WRITE16_MEMBER(dec0_update_sprites_w);
DECLARE_WRITE16_MEMBER(dec0_priority_w);
DECLARE_READ16_MEMBER(ffantasybl_242024_r);
- DECLARE_READ16_MEMBER(ffantasybl_vblank_r);
+ DECLARE_WRITE_LINE_MEMBER(sound_irq);
+ DECLARE_WRITE_LINE_MEMBER(sound_irq2);
+
DECLARE_DRIVER_INIT(robocop);
DECLARE_DRIVER_INIT(hippodrm);
DECLARE_DRIVER_INIT(hbarrel);
@@ -79,9 +86,12 @@ public:
DECLARE_DRIVER_INIT(baddudes);
DECLARE_DRIVER_INIT(midresb);
DECLARE_DRIVER_INIT(ffantasybl);
- DECLARE_VIDEO_START(dec0);
+
+ virtual void machine_start();
DECLARE_MACHINE_RESET(slyspy);
+ DECLARE_VIDEO_START(dec0);
DECLARE_VIDEO_START(dec0_nodma);
+
UINT32 screen_update_hbarrel(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_baddudes(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_birdtry(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -89,19 +99,12 @@ public:
UINT32 screen_update_hippodrm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_slyspy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_midres(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
void baddudes_i8751_write(int data);
void birdtry_i8751_write(int data);
void dec0_i8751_write(int data);
void dec0_i8751_reset();
void h6280_decrypt(const char *cputag);
- DECLARE_WRITE_LINE_MEMBER(sound_irq);
- DECLARE_WRITE_LINE_MEMBER(sound_irq2);
- required_device<cpu_device> m_maincpu;
- required_device<cpu_device> m_audiocpu;
- optional_device<cpu_device> m_subcpu;
- optional_device<cpu_device> m_mcu;
- optional_device<msm5205_device> m_msm;
- required_device<palette_device> m_palette;
};
@@ -114,6 +117,8 @@ public:
UINT8 m_automat_adpcm_byte;
int m_automat_msm5205_vclk_toggle;
+ UINT16 m_automat_scroll_regs[4];
+
DECLARE_WRITE16_MEMBER(automat_control_w);
DECLARE_WRITE8_MEMBER(automat_adpcm_w);
DECLARE_READ16_MEMBER( automat_palette_r );
@@ -122,9 +127,10 @@ public:
{
COMBINE_DATA(&m_automat_scroll_regs[offset]);
}
- UINT16 m_automat_scroll_regs[4];
-
+ DECLARE_WRITE_LINE_MEMBER(automat_vclk_cb);
+
+ virtual void machine_start();
+
UINT32 screen_update_automat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_secretab(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- DECLARE_WRITE_LINE_MEMBER(automat_vclk_cb);
};
diff --git a/src/mame/machine/dec0.c b/src/mame/machine/dec0.c
index 3a64d88be0d..0b5476453a0 100644
--- a/src/mame/machine/dec0.c
+++ b/src/mame/machine/dec0.c
@@ -14,6 +14,13 @@ Data East machine functions - Bryan McPhail, mish@tendril.co.uk
/******************************************************************************/
+void dec0_state::machine_start()
+{
+ save_item(NAME(m_i8751_return));
+ save_item(NAME(m_i8751_command));
+ save_item(NAME(m_i8751_ports));
+}
+
READ16_MEMBER(dec0_state::dec0_controls_r)
{
switch (offset<<1)
@@ -294,9 +301,9 @@ void dec0_state::dec0_i8751_write(int data)
m_i8751_command=data;
/* Writes to this address cause an IRQ to the i8751 microcontroller */
- if (m_GAME == 1) m_mcu->set_input_line(MCS51_INT1_LINE, ASSERT_LINE);
- if (m_GAME == 2) baddudes_i8751_write(data);
- if (m_GAME == 3) birdtry_i8751_write(data);
+ if (m_game == 1) m_mcu->set_input_line(MCS51_INT1_LINE, ASSERT_LINE);
+ if (m_game == 2) baddudes_i8751_write(data);
+ if (m_game == 3) birdtry_i8751_write(data);
//logerror("%s: warning - write %02x to i8751\n",machine().describe_context(),data);
}
@@ -357,6 +364,9 @@ DRIVER_INIT_MEMBER(dec0_state,hippodrm)
RAM[0x1af] = 0x60; /* RTS prot area */
RAM[0x1db] = 0x60; /* RTS prot area */
RAM[0x21a] = 0x60; /* RTS prot area */
+
+ save_item(NAME(m_hippodrm_msb));
+ save_item(NAME(m_hippodrm_lsb));
}
DRIVER_INIT_MEMBER(dec0_state,slyspy)
@@ -367,6 +377,8 @@ DRIVER_INIT_MEMBER(dec0_state,slyspy)
/* Slyspy sound cpu has some protection */
RAM[0xf2d] = 0xea;
RAM[0xf2e] = 0xea;
+
+ save_item(NAME(m_slyspy_state));
}
DRIVER_INIT_MEMBER(dec0_state,robocop)
@@ -376,15 +388,15 @@ DRIVER_INIT_MEMBER(dec0_state,robocop)
DRIVER_INIT_MEMBER(dec0_state,baddudes)
{
- m_GAME = 2;
+ m_game = 2;
}
DRIVER_INIT_MEMBER(dec0_state,hbarrel)
{
- m_GAME = 1;
+ m_game = 1;
}
DRIVER_INIT_MEMBER(dec0_state,birdtry)
{
- m_GAME=3;
+ m_game=3;
}
diff --git a/src/mame/video/dec0.c b/src/mame/video/dec0.c
index 6faa77133ea..31039803277 100644
--- a/src/mame/video/dec0.c
+++ b/src/mame/video/dec0.c
@@ -339,14 +339,15 @@ WRITE16_MEMBER(dec0_state::dec0_priority_w)
VIDEO_START_MEMBER(dec0_state,dec0_nodma)
{
save_item(NAME(m_pri));
-
m_buffered_spriteram = m_spriteram;
+ save_pointer(NAME(m_buffered_spriteram), 0x800/2);
}
VIDEO_START_MEMBER(dec0_state,dec0)
{
- VIDEO_START_CALL_MEMBER(dec0_nodma);
+ save_item(NAME(m_pri));
m_buffered_spriteram = auto_alloc_array(machine(), UINT16, 0x800/2);
+ save_pointer(NAME(m_buffered_spriteram), 0x800/2);
}
/******************************************************************************/
diff --git a/src/mame/video/decbac06.c b/src/mame/video/decbac06.c
index 3ac259a87b4..9d88d4145f4 100644
--- a/src/mame/video/decbac06.c
+++ b/src/mame/video/decbac06.c
@@ -116,9 +116,9 @@ void deco_bac06_device::device_start()
save_pointer(NAME(m_pf_data), 0x4000/2);
save_pointer(NAME(m_pf_rowscroll), 0x2000/2);
save_pointer(NAME(m_pf_colscroll), 0x2000/2);
- save_pointer(NAME(m_pf_control_0), 8);
- save_pointer(NAME(m_pf_control_1), 8);
-
+ save_item(NAME(m_pf_control_0));
+ save_item(NAME(m_pf_control_1));
+ save_item(NAME(m_gfxcolmask));
save_item(NAME(m_rambank));
}