diff options
author | 2015-04-25 09:53:52 +0200 | |
---|---|---|
committer | 2015-04-25 09:53:52 +0200 | |
commit | 371096e892c443750f51a5886592abf1e1278aa8 (patch) | |
tree | b0c93656a7a59effd69ce68c285be60db2efce1d | |
parent | 8a0e4926fb9d669ee4c1bd9edb745958d66886e5 (diff) |
aztarac.c: added save state support (nw)
-rw-r--r-- | src/mame/audio/aztarac.c | 12 | ||||
-rw-r--r-- | src/mame/drivers/aztarac.c | 19 | ||||
-rw-r--r-- | src/mame/includes/aztarac.h | 29 | ||||
-rw-r--r-- | src/mame/video/aztarac.c | 11 |
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); } |