summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/attckufo.c
diff options
context:
space:
mode:
author Fabio Priuli <etabeta78@users.noreply.github.com>2010-02-20 12:09:42 +0000
committer Fabio Priuli <etabeta78@users.noreply.github.com>2010-02-20 12:09:42 +0000
commit9ec77c765da4d256a2911b59c4220eb43b42126b (patch)
tree848e722afdb26dc35194295ed26670cadcb06529 /src/mame/drivers/attckufo.c
parent912d6eaf740a7ce4076b4c61c8f90e9da490090a (diff)
es5506.c: added save state to both ES5505 and ES5506 [Fabio Priuli]
added driver_data struct and save states to the following drivers: attckufo.c, m79amb.c, macrossp.c, marinedt.c, markham.c, mayumi.c and mcatadv.c
Diffstat (limited to 'src/mame/drivers/attckufo.c')
-rw-r--r--src/mame/drivers/attckufo.c51
1 files changed, 40 insertions, 11 deletions
diff --git a/src/mame/drivers/attckufo.c b/src/mame/drivers/attckufo.c
index 0aa5be82a4f..7053b677681 100644
--- a/src/mame/drivers/attckufo.c
+++ b/src/mame/drivers/attckufo.c
@@ -46,8 +46,19 @@ LOIPOIO-B
#include "sound/mos6560.h"
-static UINT8 *mainram;
-static UINT8 *tileram;
+typedef struct _attckufo_state attckufo_state;
+struct _attckufo_state
+{
+ /* memory pointers */
+ UINT8 * mainram;
+ UINT8 * tileram;
+
+ /* devices */
+ running_device *maincpu;
+ running_device *mos6560;
+};
+
+
static const rgb_t attckufo_palette[] =
{
@@ -103,10 +114,10 @@ static WRITE8_HANDLER(attckufo_io_w)
static ADDRESS_MAP_START( cpu_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_BASE(&mainram)
+ AM_RANGE(0x0000, 0x0fff) AM_RAM AM_BASE_MEMBER(attckufo_state, mainram)
AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("mos6560", mos6560_port_r, mos6560_port_w)
AM_RANGE(0x1400, 0x1403) AM_READWRITE(attckufo_io_r, attckufo_io_w)
- AM_RANGE(0x1c00, 0x1fff) AM_RAM AM_BASE(&tileram)
+ AM_RANGE(0x1c00, 0x1fff) AM_RAM AM_BASE_MEMBER(attckufo_state, tileram)
AM_RANGE(0x2000, 0x3fff) AM_ROM
ADDRESS_MAP_END
@@ -140,26 +151,28 @@ INPUT_PORTS_END
INTERRUPT_GEN( attckufo_raster_interrupt )
{
- running_device *mos6560 = devtag_get_device(device->machine, "mos6560");
- mos6560_raster_interrupt_gen(mos6560);
+ attckufo_state *state = (attckufo_state *)device->machine->driver_data;
+ mos6560_raster_interrupt_gen(state->mos6560);
}
VIDEO_UPDATE( attckufo )
{
- running_device *mos6560 = devtag_get_device(screen->machine, "mos6560");
- mos6560_video_update(mos6560, bitmap, cliprect);
+ attckufo_state *state = (attckufo_state *)screen->machine->driver_data;
+ mos6560_video_update(state->mos6560, bitmap, cliprect);
return 0;
}
static int attckufo_dma_read( running_machine *machine, int offset )
{
- const address_space *program = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
+ attckufo_state *state = (attckufo_state *)machine->driver_data;
+ const address_space *program = cpu_get_address_space(state->maincpu, ADDRESS_SPACE_PROGRAM);
return memory_read_byte(program, offset);
}
static int attckufo_dma_read_color( running_machine *machine, int offset )
{
- const address_space *program = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
+ attckufo_state *state = (attckufo_state *)machine->driver_data;
+ const address_space *program = cpu_get_address_space(state->maincpu, ADDRESS_SPACE_PROGRAM);
return memory_read_byte(program, offset + 0x400);
}
@@ -172,11 +185,27 @@ static const mos6560_interface attckufo_6560_intf =
attckufo_dma_read, attckufo_dma_read_color /* DMA */
};
+
+static MACHINE_START( attckufo )
+{
+ attckufo_state *state = (attckufo_state *)machine->driver_data;
+
+ state->maincpu = devtag_get_device(machine, "maincpu");
+ state->mos6560 = devtag_get_device(machine, "mos6560");
+}
+
static MACHINE_DRIVER_START( attckufo )
+
+ /* driver data */
+ MDRV_DRIVER_DATA(attckufo_state)
+
+ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M6502, 14318181/14)
MDRV_CPU_PROGRAM_MAP(cpu_map)
MDRV_CPU_PERIODIC_INT(attckufo_raster_interrupt, MOS656X_HRETRACERATE)
+ MDRV_MACHINE_START(attckufo)
+
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(MOS6560_VRETRACERATE)
@@ -211,4 +240,4 @@ ROM_START( attckufo )
ROM_COPY( "maincpu", 0x02000, 0x00000, 0x400)
ROM_END
-GAME( 1980, attckufo, 0, attckufo, attckufo, 0, ROT270, "Ryoto Electric Co.", "Attack Ufo", 0 )
+GAME( 1980, attckufo, 0, attckufo, attckufo, 0, ROT270, "Ryoto Electric Co.", "Attack Ufo", GAME_SUPPORTS_SAVE )