summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Michaël Banaan Ananas <happppp@users.noreply.github.com>2012-03-24 17:25:52 +0000
committer Michaël Banaan Ananas <happppp@users.noreply.github.com>2012-03-24 17:25:52 +0000
commite87282a2231aa66f51f0cef9196e65a035f31498 (patch)
treec117e52d36d1f7bde6719d35ffa3d543af1d64c5
parent54f9eb4dda86323ca419582401aa9e741fd5c437 (diff)
game promoted to working state
------- Galaxia [hap]
-rw-r--r--src/mame/drivers/galaxia.c363
-rw-r--r--src/mame/drivers/quasar.c4
-rw-r--r--src/mame/drivers/zac2650.c4
3 files changed, 240 insertions, 131 deletions
diff --git a/src/mame/drivers/galaxia.c b/src/mame/drivers/galaxia.c
index 3dcc062097b..a62be4181f2 100644
--- a/src/mame/drivers/galaxia.c
+++ b/src/mame/drivers/galaxia.c
@@ -23,9 +23,8 @@ using only one 2636 chip.
HW seems to have many similarities with quasar.c / cvs.c
TODO:
-- better collision detection
-- colors are probably wrong
-- astrowar I/O
+- colors are wrong
+- astrowar sprites (offset and collision detection) -- maybe similar hw to zac2650.c?
- starfield hardware?
- eventually merge/share with quasar.c or cvs.c?
@@ -43,22 +42,37 @@ public:
galaxia_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) { }
- UINT8 m_collision;
- UINT8 m_scroll;
UINT8 *m_video;
- UINT8 *m_bullet;
UINT8 *m_color;
+ UINT8 *m_bullet;
+
+ UINT8 *m_fo_state;
+
+ UINT8 m_collision;
+ UINT8 m_scroll;
};
+static INTERRUPT_GEN( galaxia_interrupt )
+{
+ device_set_input_line_and_vector(device, 0, HOLD_LINE, 0x03);
+}
+
+
+/***************************************************************************
+
+ Video
+
+***************************************************************************/
+
static SCREEN_UPDATE_IND16( galaxia )
{
galaxia_state *state = screen.machine().driver_data<galaxia_state>();
int x, y;
- device_t *s2636_0 = screen.machine().device("s2636_0");
- device_t *s2636_1 = screen.machine().device("s2636_1");
- device_t *s2636_2 = screen.machine().device("s2636_2");
+ bitmap_ind16 &s2636_0_bitmap = s2636_update(screen.machine().device("s2636_0"), cliprect);
+ bitmap_ind16 &s2636_1_bitmap = s2636_update(screen.machine().device("s2636_1"), cliprect);
+ bitmap_ind16 &s2636_2_bitmap = s2636_update(screen.machine().device("s2636_2"), cliprect);
bitmap.fill(0, cliprect);
@@ -78,35 +92,24 @@ static SCREEN_UPDATE_IND16( galaxia )
}
}
- // draw bullets (guesswork)
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
- if (state->m_bullet[y])
+ for (x = cliprect.min_x; x <= cliprect.max_x; x++)
{
- int pos = state->m_bullet[y] ^ 0xff;
- if (bitmap.pix16(y, pos))
+ // draw bullets (guesswork)
+ bool bullet = state->m_bullet[y] && x == (state->m_bullet[y] ^ 0xff);
+ bool background = bitmap.pix16(y, x) != 0;
+ if (bullet)
{
- // collision with background
- state->m_collision |= 0x80;
+ // background vs. bullet collision detection
+ if (background) state->m_collision |= 0x80;
+
+ // bullet size/color/priority is guessed
+ bitmap.pix16(y, x) = 7;
+ if (x) bitmap.pix16(y, x-1) = 7;
}
- else
- {
- // bullet size and color is guessed
- bitmap.pix16(y, pos) = 7;
- bitmap.pix16(y, pos + 1) = 7;
- }
- }
- }
-
- bitmap_ind16 &s2636_0_bitmap = s2636_update(s2636_0, cliprect);
- bitmap_ind16 &s2636_1_bitmap = s2636_update(s2636_1, cliprect);
- bitmap_ind16 &s2636_2_bitmap = s2636_update(s2636_2, cliprect);
-
- /* copy the S2636 images into the main bitmap and check collision */
- for (y = cliprect.min_y; y <= cliprect.max_y; y++)
- {
- for (x = cliprect.min_x; x <= cliprect.max_x; x++)
- {
+
+ // copy the S2636 images into the main bitmap and check collision
int pixel0 = s2636_0_bitmap.pix16(y, x);
int pixel1 = s2636_1_bitmap.pix16(y, x);
int pixel2 = s2636_2_bitmap.pix16(y, x);
@@ -115,15 +118,19 @@ static SCREEN_UPDATE_IND16( galaxia )
if (S2636_IS_PIXEL_DRAWN(pixel))
{
- /* S2636 vs. S2636 collision detection */
+ // S2636 vs. S2636 collision detection
if (S2636_IS_PIXEL_DRAWN(pixel0) && S2636_IS_PIXEL_DRAWN(pixel1)) state->m_collision |= 0x01;
if (S2636_IS_PIXEL_DRAWN(pixel1) && S2636_IS_PIXEL_DRAWN(pixel2)) state->m_collision |= 0x02;
if (S2636_IS_PIXEL_DRAWN(pixel2) && S2636_IS_PIXEL_DRAWN(pixel0)) state->m_collision |= 0x04;
+
+ // S2636 vs. bullet collision detection
+ if (bullet) state->m_collision |= 0x08;
- /* S2636 vs. background collision detection */
- if (bitmap.pix16(y, x))
+ // S2636 vs. background collision detection
+ if (background)
{
-// if (S2636_IS_PIXEL_DRAWN(pixel0)) state->m_collision |= 0x10; * problem in level 2
+ /* bit4 causes problems on 2nd level
+ if (S2636_IS_PIXEL_DRAWN(pixel0)) state->m_collision |= 0x10; */
if (S2636_IS_PIXEL_DRAWN(pixel1)) state->m_collision |= 0x20;
if (S2636_IS_PIXEL_DRAWN(pixel2)) state->m_collision |= 0x40;
}
@@ -136,24 +143,72 @@ static SCREEN_UPDATE_IND16( galaxia )
return 0;
}
-static WRITE8_HANDLER(galaxia_video_w)
+
+static SCREEN_UPDATE_IND16( astrowar )
{
- galaxia_state *state = space->machine().driver_data<galaxia_state>();
-// space->machine().primary_screen->update_partial(space->machine().primary_screen->vpos());
- if (cpu_get_reg(&space->device(), S2650_FO))
+ galaxia_state *state = screen.machine().driver_data<galaxia_state>();
+ int x, y;
+
+ bitmap_ind16 &s2636_0_bitmap = s2636_update(screen.machine().device("s2636_0"), cliprect);
+
+ bitmap.fill(0, cliprect);
+
+ // draw background (no scroll?)
+ for (x = 0; x < 32; x++)
{
- state->m_video[offset]=data;
+ for (y = 0; y < 32; y++)
+ {
+ int tile = state->m_video[y << 5 | x];
+ int color = state->m_color[y << 5 | x];
+ drawgfx_transpen(bitmap,cliprect,screen.machine().gfx[0], tile, color, 0, 0, x*8, y*8, 0);
+ }
}
- else
+
+ for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
- state->m_color[offset]=data;
+ for (x = cliprect.min_x; x <= cliprect.max_x; x++)
+ {
+ // copy the S2636 bitmap into the main bitmap and check collision
+ int pixel = s2636_0_bitmap.pix16(y, x);
+
+ if (S2636_IS_PIXEL_DRAWN(pixel))
+ {
+ // S2636 vs. background collision detection
+ if (bitmap.pix16(y, x))
+ state->m_collision |= 0x01;
+
+ bitmap.pix16(y, x) = S2636_PIXEL_COLOR(pixel);
+ }
+ }
}
+
+ return 0;
+}
+
+
+/***************************************************************************
+
+ I/O
+
+***************************************************************************/
+
+static WRITE8_HANDLER(galaxia_video_w)
+{
+ galaxia_state *state = space->machine().driver_data<galaxia_state>();
+// space->machine().primary_screen->update_partial(space->machine().primary_screen->vpos());
+ if (*state->m_fo_state)
+ state->m_video[offset] = data;
+ else
+ state->m_color[offset] = data;
}
static READ8_HANDLER(galaxia_video_r)
{
galaxia_state *state = space->machine().driver_data<galaxia_state>();
- return state->m_video[offset];
+ if (*state->m_fo_state)
+ return state->m_video[offset];
+ else
+ return state->m_color[offset];
}
static WRITE8_HANDLER(galaxia_scroll_w)
@@ -163,6 +218,17 @@ static WRITE8_HANDLER(galaxia_scroll_w)
state->m_scroll = data;
}
+static WRITE8_HANDLER(galaxia_ctrlport_w)
+{
+ // d0/d1: maybe coincounter
+ // other bits: unknown
+}
+
+static WRITE8_HANDLER(galaxia_dataport_w)
+{
+ // cvs-style video fx? or lamps?
+}
+
static READ8_HANDLER(galaxia_collision_r)
{
galaxia_state *state = space->machine().driver_data<galaxia_state>();
@@ -175,10 +241,10 @@ static READ8_HANDLER(galaxia_collision_clear)
galaxia_state *state = space->machine().driver_data<galaxia_state>();
space->machine().primary_screen->update_partial(space->machine().primary_screen->vpos());
state->m_collision = 0;
- return 0;
+ return 0xff;
}
-static ADDRESS_MAP_START( mem_map, AS_PROGRAM, 8 )
+static ADDRESS_MAP_START( galaxia_mem_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x13ff) AM_ROM
AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_RAM AM_BASE_MEMBER(galaxia_state, m_bullet)
AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_work_ram_r, s2636_work_ram_w)
@@ -190,69 +256,54 @@ static ADDRESS_MAP_START( mem_map, AS_PROGRAM, 8 )
AM_RANGE(0x7214, 0x7214) AM_READ_PORT("IN0")
ADDRESS_MAP_END
-static ADDRESS_MAP_START( io_map, AS_IO, 8 )
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x00) AM_WRITE(galaxia_scroll_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
- AM_RANGE(0x05, 0x05) AM_READNOP
- AM_RANGE(0x06, 0x06) AM_READ_PORT("IN6")
- AM_RANGE(0x07, 0x07) AM_READ_PORT("IN7")
- AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READ(galaxia_collision_r)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(galaxia_collision_clear)
- AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
-ADDRESS_MAP_END
-
-
-static ADDRESS_MAP_START( astrowar_mem, AS_PROGRAM, 8 )
+static ADDRESS_MAP_START( astrowar_mem_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x13ff) AM_ROM
- AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_RAM AM_BASE_MEMBER(galaxia_state, m_bullet)
+ AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_RAM AM_BASE_MEMBER(galaxia_state, m_bullet) // but no bullet hw?
AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_work_ram_r, s2636_work_ram_w)
- AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_work_ram_r, s2636_work_ram_w)
- AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_2", s2636_work_ram_r, s2636_work_ram_w)
AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READWRITE(galaxia_video_r, galaxia_video_w) AM_BASE_MEMBER(galaxia_state, m_video)
AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
AM_RANGE(0x2000, 0x33ff) AM_ROM
ADDRESS_MAP_END
-static ADDRESS_MAP_START( astrowar_io, AS_IO, 8 )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
- AM_RANGE(0x06, 0x06) AM_READ_PORT("IN6")
- AM_RANGE(0x07, 0x07) AM_READ_PORT("IN7")
+static ADDRESS_MAP_START( galaxia_io_map, AS_IO, 8 )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x00, 0x00) AM_WRITE(galaxia_scroll_w) AM_READ_PORT("IN0")
+ AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1")
+ AM_RANGE(0x05, 0x05) AM_READNOP
+ AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW0")
+ AM_RANGE(0x07, 0x07) AM_READ_PORT("DSW1")
+ AM_RANGE(0xac, 0xac) AM_READNOP
+ AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(galaxia_collision_r, galaxia_ctrlport_w)
+ AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(galaxia_collision_clear, galaxia_dataport_w)
+ AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
+ AM_RANGE(S2650_FO_PORT, S2650_FO_PORT) AM_RAM AM_BASE_MEMBER(galaxia_state, m_fo_state)
ADDRESS_MAP_END
+
+/***************************************************************************
+
+ Inputs
+
+***************************************************************************/
+
static INPUT_PORTS_START( galaxia )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("IN1")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("IN2")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
- PORT_DIPNAME( 0x80, 0x80, "Freeze" )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_BIT( 0x43, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("IN3")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0xc3, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_START("IN5")
- PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("IN6")
+ PORT_START("DSW0")
PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x00, "A 1C_1C B 2C_1C" )
PORT_DIPSETTING( 0x01, "A 1C_2C B 2C_1C" )
@@ -265,15 +316,58 @@ static INPUT_PORTS_START( galaxia )
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x08, "5" )
- PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_START("IN7")
- PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_DIPNAME( 0x10, 0x00, "UNK04" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, "UNK05" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, "UNK06" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, "UNK07" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x01, 0x00, "UNK10" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, "UNK11" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, "UNK12" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, "UNK13" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+
+ PORT_DIPNAME( 0x10, 0x00, "UNK14" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, "UNK15" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, "UNK16" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, "UNK17" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("SENSE")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
INPUT_PORTS_END
+
+/***************************************************************************
+
+ Machine Configs
+
+***************************************************************************/
+
static const gfx_layout tiles8x8x1_layout =
{
8,8,
@@ -305,41 +399,27 @@ static GFXDECODE_START( astrowar )
GFXDECODE_END
-static INTERRUPT_GEN( galaxia_interrupt )
-{
- device_set_input_line_and_vector(device, 0, HOLD_LINE, 0x03);
-}
-
-
-static const s2636_interface s2636_0_config =
+static const s2636_interface galaxia_s2636_config[3] =
{
- "screen",
- 0x100,
- 3, -27,
- "s2636snd_0"
+ { "screen", 0x100, 3, -27, "s2636snd_0" },
+ { "screen", 0x100, 3, -27, "s2636snd_1" },
+ { "screen", 0x100, 3, -27, "s2636snd_2" }
};
-static const s2636_interface s2636_1_config =
+static const s2636_interface astrowar_s2636_config =
{
"screen",
0x100,
- 3, -27,
- "s2636snd_1"
+ 3, 43,
+ "s2636snd_0"
};
-static const s2636_interface s2636_2_config =
-{
- "screen",
- 0x100,
- 3, -27,
- "s2636snd_2"
-};
static MACHINE_CONFIG_START( galaxia, galaxia_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", S2650,2000000) /* ? MHz */
- MCFG_CPU_PROGRAM_MAP(mem_map)
- MCFG_CPU_IO_MAP(io_map)
+ MCFG_CPU_ADD("maincpu", S2650, 2000000) /* ? MHz */
+ MCFG_CPU_PROGRAM_MAP(galaxia_mem_map)
+ MCFG_CPU_IO_MAP(galaxia_io_map)
MCFG_CPU_VBLANK_INT("screen", galaxia_interrupt)
/* video hardware */
@@ -354,10 +434,11 @@ static MACHINE_CONFIG_START( galaxia, galaxia_state )
MCFG_GFXDECODE(galaxia)
MCFG_PALETTE_LENGTH(0x100)
- MCFG_S2636_ADD("s2636_0", s2636_0_config)
- MCFG_S2636_ADD("s2636_1", s2636_1_config)
- MCFG_S2636_ADD("s2636_2", s2636_2_config)
+ MCFG_S2636_ADD("s2636_0", galaxia_s2636_config[0])
+ MCFG_S2636_ADD("s2636_1", galaxia_s2636_config[1])
+ MCFG_S2636_ADD("s2636_2", galaxia_s2636_config[2])
+ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("s2636snd_0", S2636_SOUND, 0)
@@ -370,13 +451,42 @@ static MACHINE_CONFIG_START( galaxia, galaxia_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( astrowar, galaxia )
- MCFG_CPU_MODIFY("maincpu")
- MCFG_CPU_PROGRAM_MAP(astrowar_mem)
- MCFG_CPU_IO_MAP(astrowar_io)
+
+static MACHINE_CONFIG_START( astrowar, galaxia_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", S2650, 2000000) /* ? MHz */
+ MCFG_CPU_PROGRAM_MAP(astrowar_mem_map)
+ MCFG_CPU_IO_MAP(galaxia_io_map)
+ MCFG_CPU_VBLANK_INT("screen", galaxia_interrupt)
+
+ /* video hardware */
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 30*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_STATIC(astrowar)
+
MCFG_GFXDECODE(astrowar)
+ MCFG_PALETTE_LENGTH(0x100)
+
+ MCFG_S2636_ADD("s2636_0", astrowar_s2636_config)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_SOUND_ADD("s2636snd_0", S2636_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
+
+/***************************************************************************
+
+ Game drivers
+
+***************************************************************************/
+
ROM_START( galaxia )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "08h.bin", 0x00000, 0x0400, CRC(f3b4ffde) SHA1(15b004e7821bfc145158b1e9435f061c524f6b86) )
@@ -394,11 +504,10 @@ ROM_START( galaxia )
ROM_LOAD( "01d.bin", 0x00000, 0x0400, CRC(2dd50aab) SHA1(758d7a5383c9a1ee134d99e3f7025819cfbe0e0f) )
ROM_LOAD( "03d.bin", 0x00400, 0x0400, CRC(1dc30185) SHA1(e3c75eecb80b376ece98f602e1b9587487841824) )
- ROM_REGION( 0x80000, "proms", 0 )
+ ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "11o", 0x00000, 0x0200, CRC(ae816417) SHA1(9497857d13c943a2735c3b85798199054e613b2c) )
ROM_END
-
ROM_START( astrowar )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "astro8h.rom", 0x00000, 0x0400, CRC(b0ec246c) SHA1(f9123b5e317938655f5e8b3f8a5810d0b2b7c7af) )
@@ -416,7 +525,7 @@ ROM_START( astrowar )
ROM_LOAD( "astro1d.rom", 0x00000, 0x0400, CRC(6053f834) SHA1(e0b76800c241b3c8010c09869cecbc109b25310a) )
ROM_LOAD( "astro3d.rom", 0x00400, 0x0400, CRC(822505aa) SHA1(f9d3465e14bb850a286f8b4f42aa0a4044413b67) )
- ROM_REGION( 0x80000, "proms", 0 )
+ ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "11o.rom", 0x00000, 0x0200, NO_DUMP ) /* a rom is missing */
ROM_END
@@ -427,5 +536,5 @@ static DRIVER_INIT(galaxia)
state->m_color=auto_alloc_array(machine, UINT8, 0x400);
}
-GAME( 1979, galaxia, 0, galaxia, galaxia, galaxia, ROT90, "Zaccaria", "Galaxia", GAME_NOT_WORKING )
-GAME( 1980, astrowar, 0, astrowar, galaxia, galaxia, ROT90, "Zaccaria", "Astro Wars", GAME_NOT_WORKING|GAME_WRONG_COLORS )
+GAME( 1979, galaxia, 0, galaxia, galaxia, galaxia, ROT90, "Zaccaria / Zelco", "Galaxia", GAME_WRONG_COLORS )
+GAME( 1980, astrowar, 0, astrowar, galaxia, galaxia, ROT90, "Zaccaria / Zelco", "Astro Wars", GAME_WRONG_COLORS|GAME_NOT_WORKING )
diff --git a/src/mame/drivers/quasar.c b/src/mame/drivers/quasar.c
index 3f8ac9141ef..35f0762fb83 100644
--- a/src/mame/drivers/quasar.c
+++ b/src/mame/drivers/quasar.c
@@ -432,5 +432,5 @@ ROM_START( quasara )
ROM_END
-GAME( 1980, quasar, 0, quasar, quasar, 0, ROT90, "Zelco / Zaccaria", "Quasar (set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, quasara, quasar, quasar, quasar, 0, ROT90, "Zelco / Zaccaria", "Quasar (set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1980, quasar, 0, quasar, quasar, 0, ROT90, "Zaccaria / Zelco", "Quasar (set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1980, quasara, quasar, quasar, quasar, 0, ROT90, "Zaccaria / Zelco", "Quasar (set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/zac2650.c b/src/mame/drivers/zac2650.c
index becd175b830..ee0d7742d45 100644
--- a/src/mame/drivers/zac2650.c
+++ b/src/mame/drivers/zac2650.c
@@ -311,6 +311,6 @@ ROM_START( dodgem )
ROM_END
-GAME( 1978, sia2650, 0, tinvader, sinvader, 0, ROT270, "Zelco / Zaccaria", "Super Invader Attack", 0 )
-GAMEL(1978, tinv2650, sia2650, tinvader, tinvader, 0, ROT270, "Zelco / Zaccaria", "The Invaders", 0, layout_tinv2650 )
+GAME( 1978, sia2650, 0, tinvader, sinvader, 0, ROT270, "Zaccaria / Zelco", "Super Invader Attack", 0 )
+GAMEL(1978, tinv2650, sia2650, tinvader, tinvader, 0, ROT270, "Zaccaria / Zelco", "The Invaders", 0, layout_tinv2650 )
GAME( 1979, dodgem, 0, tinvader, dodgem, 0, ROT0, "Zaccaria", "Dodgem", 0 )