mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
aztarac.c: added save state support (nw)
This commit is contained in:
parent
8a0e4926fb
commit
371096e892
@ -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;
|
||||
|
||||
|
@ -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 )
|
||||
|
@ -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);
|
||||
};
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user