summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2015-04-25 09:53:52 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2015-04-25 09:53:52 +0200
commit371096e892c443750f51a5886592abf1e1278aa8 (patch)
treeb0c93656a7a59effd69ce68c285be60db2efce1d
parent8a0e4926fb9d669ee4c1bd9edb745958d66886e5 (diff)
aztarac.c: added save state support (nw)
-rw-r--r--src/mame/audio/aztarac.c12
-rw-r--r--src/mame/drivers/aztarac.c19
-rw-r--r--src/mame/includes/aztarac.h29
-rw-r--r--src/mame/video/aztarac.c11
4 files changed, 38 insertions, 33 deletions
diff --git a/src/mame/audio/aztarac.c b/src/mame/audio/aztarac.c
index 058d9ca5165..1e9ec5f293e 100644
--- a/src/mame/audio/aztarac.c
+++ b/src/mame/audio/aztarac.c
@@ -9,12 +9,12 @@
#include "includes/aztarac.h"
-READ16_MEMBER(aztarac_state::aztarac_sound_r)
+READ16_MEMBER(aztarac_state::sound_r)
{
return m_sound_status & 0x01;
}
-WRITE16_MEMBER(aztarac_state::aztarac_sound_w)
+WRITE16_MEMBER(aztarac_state::sound_w)
{
if (ACCESSING_BITS_0_7)
{
@@ -26,24 +26,24 @@ WRITE16_MEMBER(aztarac_state::aztarac_sound_w)
}
}
-READ8_MEMBER(aztarac_state::aztarac_snd_command_r)
+READ8_MEMBER(aztarac_state::snd_command_r)
{
m_sound_status |= 0x01;
m_sound_status &= ~0x20;
return soundlatch_byte_r(space,offset);
}
-READ8_MEMBER(aztarac_state::aztarac_snd_status_r)
+READ8_MEMBER(aztarac_state::snd_status_r)
{
return m_sound_status & ~0x01;
}
-WRITE8_MEMBER(aztarac_state::aztarac_snd_status_w)
+WRITE8_MEMBER(aztarac_state::snd_status_w)
{
m_sound_status &= ~0x10;
}
-INTERRUPT_GEN_MEMBER(aztarac_state::aztarac_snd_timed_irq)
+INTERRUPT_GEN_MEMBER(aztarac_state::snd_timed_irq)
{
m_sound_status ^= 0x10;
diff --git a/src/mame/drivers/aztarac.c b/src/mame/drivers/aztarac.c
index 9919dd4e92e..574170a8a0d 100644
--- a/src/mame/drivers/aztarac.c
+++ b/src/mame/drivers/aztarac.c
@@ -28,14 +28,15 @@
*
*************************************/
-IRQ_CALLBACK_MEMBER(aztarac_state::aztarac_irq_callback)
+IRQ_CALLBACK_MEMBER(aztarac_state::irq_callback)
{
return 0xc;
}
-void aztarac_state::machine_reset()
+void aztarac_state::machine_start()
{
+ save_item(NAME(m_sound_status));
}
@@ -78,11 +79,11 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, aztarac_state )
AM_RANGE(0x022000, 0x0220ff) AM_READ(nvram_r) AM_WRITEONLY AM_SHARE("nvram")
AM_RANGE(0x027000, 0x027001) AM_READ(joystick_r)
AM_RANGE(0x027004, 0x027005) AM_READ_PORT("INPUTS")
- AM_RANGE(0x027008, 0x027009) AM_READWRITE(aztarac_sound_r, aztarac_sound_w)
+ AM_RANGE(0x027008, 0x027009) AM_READWRITE(sound_r, sound_w)
AM_RANGE(0x02700c, 0x02700d) AM_READ_PORT("DIAL")
AM_RANGE(0x02700e, 0x02700f) AM_READ(watchdog_reset16_r)
AM_RANGE(0xff8000, 0xffafff) AM_RAM AM_SHARE("vectorram")
- AM_RANGE(0xffb000, 0xffb001) AM_WRITE(aztarac_ubr_w)
+ AM_RANGE(0xffb000, 0xffb001) AM_WRITE(ubr_w)
AM_RANGE(0xffe000, 0xffffff) AM_RAM
ADDRESS_MAP_END
@@ -97,12 +98,12 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, aztarac_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8800) AM_READ(aztarac_snd_command_r)
+ AM_RANGE(0x8800, 0x8800) AM_READ(snd_command_r)
AM_RANGE(0x8c00, 0x8c01) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_address_w)
AM_RANGE(0x8c02, 0x8c03) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_address_w)
AM_RANGE(0x8c04, 0x8c05) AM_DEVREADWRITE("ay3", ay8910_device, data_r, data_address_w)
AM_RANGE(0x8c06, 0x8c07) AM_DEVREADWRITE("ay4", ay8910_device, data_r, data_address_w)
- AM_RANGE(0x9000, 0x9000) AM_READWRITE(aztarac_snd_status_r, aztarac_snd_status_w)
+ AM_RANGE(0x9000, 0x9000) AM_READWRITE(snd_status_r, snd_status_w)
ADDRESS_MAP_END
@@ -148,11 +149,11 @@ static MACHINE_CONFIG_START( aztarac, aztarac_state )
MCFG_CPU_ADD("maincpu", M68000, 8000000)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", aztarac_state, irq4_line_hold)
- MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(aztarac_state,aztarac_irq_callback)
+ MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(aztarac_state, irq_callback)
MCFG_CPU_ADD("audiocpu", Z80, 2000000)
MCFG_CPU_PROGRAM_MAP(sound_map)
- MCFG_CPU_PERIODIC_INT_DRIVER(aztarac_state, aztarac_snd_timed_irq, 100)
+ MCFG_CPU_PERIODIC_INT_DRIVER(aztarac_state, snd_timed_irq, 100)
MCFG_NVRAM_ADD_1FILL("nvram")
@@ -217,4 +218,4 @@ ROM_END
*
*************************************/
-GAME( 1983, aztarac, 0, aztarac, aztarac, driver_device, 0, ROT0, "Centuri", "Aztarac", 0 )
+GAME( 1983, aztarac, 0, aztarac, aztarac, driver_device, 0, ROT0, "Centuri", "Aztarac", GAME_SUPPORTS_SAVE )
diff --git a/src/mame/includes/aztarac.h b/src/mame/includes/aztarac.h
index 0636d55bed1..7590b9ffaf4 100644
--- a/src/mame/includes/aztarac.h
+++ b/src/mame/includes/aztarac.h
@@ -14,31 +14,36 @@ public:
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_vector(*this, "vector"),
+ m_screen(*this, "screen"),
m_nvram(*this, "nvram") ,
- m_vectorram(*this, "vectorram"),
- m_screen(*this, "screen") { }
+ m_vectorram(*this, "vectorram") { }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<vector_device> m_vector;
+ required_device<screen_device> m_screen;
+
required_shared_ptr<UINT16> m_nvram;
required_shared_ptr<UINT16> m_vectorram;
- required_device<screen_device> m_screen;
int m_sound_status;
int m_xcenter;
int m_ycenter;
+
DECLARE_READ16_MEMBER(nvram_r);
DECLARE_READ16_MEMBER(joystick_r);
- DECLARE_WRITE16_MEMBER(aztarac_ubr_w);
- DECLARE_READ16_MEMBER(aztarac_sound_r);
- DECLARE_WRITE16_MEMBER(aztarac_sound_w);
- DECLARE_READ8_MEMBER(aztarac_snd_command_r);
- DECLARE_READ8_MEMBER(aztarac_snd_status_r);
- DECLARE_WRITE8_MEMBER(aztarac_snd_status_w);
- virtual void machine_reset();
+ DECLARE_WRITE16_MEMBER(ubr_w);
+ DECLARE_READ16_MEMBER(sound_r);
+ DECLARE_WRITE16_MEMBER(sound_w);
+ DECLARE_READ8_MEMBER(snd_command_r);
+ DECLARE_READ8_MEMBER(snd_status_r);
+ DECLARE_WRITE8_MEMBER(snd_status_w);
+
+ virtual void machine_start();
virtual void video_start();
- INTERRUPT_GEN_MEMBER(aztarac_snd_timed_irq);
- IRQ_CALLBACK_MEMBER(aztarac_irq_callback);
+
+ INTERRUPT_GEN_MEMBER(snd_timed_irq);
+ IRQ_CALLBACK_MEMBER(irq_callback);
+
inline void read_vectorram(UINT16 *vectorram, int addr, int *x, int *y, int *c);
};
diff --git a/src/mame/video/aztarac.c b/src/mame/video/aztarac.c
index 239def668c8..df99f492f45 100644
--- a/src/mame/video/aztarac.c
+++ b/src/mame/video/aztarac.c
@@ -21,9 +21,8 @@ inline void aztarac_state::read_vectorram(UINT16 *vectorram, int addr, int *x, i
if (*y & 0x200) *y |= 0xfffffc00;
}
-WRITE16_MEMBER(aztarac_state::aztarac_ubr_w)
+WRITE16_MEMBER(aztarac_state::ubr_w)
{
- UINT16 *vectorram = m_vectorram;
int x, y, c, intensity, xoffset, yoffset, color;
int defaddr, objaddr=0, ndefs;
@@ -33,7 +32,7 @@ WRITE16_MEMBER(aztarac_state::aztarac_ubr_w)
while (1)
{
- read_vectorram(vectorram, objaddr, &xoffset, &yoffset, &c);
+ read_vectorram(m_vectorram, objaddr, &xoffset, &yoffset, &c);
objaddr++;
if (c & 0x4000)
@@ -44,7 +43,7 @@ WRITE16_MEMBER(aztarac_state::aztarac_ubr_w)
defaddr = (c >> 1) & 0x7ff;
AVECTOR (xoffset, yoffset, 0, 0);
- read_vectorram(vectorram, defaddr, &x, &ndefs, &c);
+ read_vectorram(m_vectorram, defaddr, &x, &ndefs, &c);
ndefs++;
if (c & 0xff00)
@@ -55,7 +54,7 @@ WRITE16_MEMBER(aztarac_state::aztarac_ubr_w)
while (ndefs--)
{
defaddr++;
- read_vectorram(vectorram, defaddr, &x, &y, &c);
+ read_vectorram(m_vectorram, defaddr, &x, &y, &c);
if ((c & 0xff00) == 0)
AVECTOR (x + xoffset, y + yoffset, 0, 0);
else
@@ -68,7 +67,7 @@ WRITE16_MEMBER(aztarac_state::aztarac_ubr_w)
while (ndefs--)
{
defaddr++;
- read_vectorram(vectorram, defaddr, &x, &y, &c);
+ read_vectorram(m_vectorram, defaddr, &x, &y, &c);
color = VECTOR_COLOR222(c & 0x3f);
AVECTOR (x + xoffset, y + yoffset, color, c >> 8);
}