summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/senjyo.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/senjyo.c')
-rw-r--r--src/mame/drivers/senjyo.c73
1 files changed, 38 insertions, 35 deletions
diff --git a/src/mame/drivers/senjyo.c b/src/mame/drivers/senjyo.c
index f1632662c02..15bbb9074d5 100644
--- a/src/mame/drivers/senjyo.c
+++ b/src/mame/drivers/senjyo.c
@@ -78,18 +78,23 @@ I/O read/write
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/sn76496.h"
-#include "sound/samples.h"
#include "machine/segacrpt.h"
#include "includes/senjyo.h"
-void senjyo_state::machine_reset()
+void senjyo_state::machine_start()
{
- // ...
+ save_item(NAME(m_sound_cmd));
+ save_item(NAME(m_single_volume));
+ save_item(NAME(m_sound_state));
+ save_item(NAME(m_bgstripes));
}
-INTERRUPT_GEN_MEMBER(senjyo_state::senjyo_interrupt)
+void senjyo_state::machine_reset()
{
- device.execute().set_input_line(0, ASSERT_LINE);
+ m_sound_cmd = 0;
+ m_single_volume = 0;
+ m_sound_state = 0;
+ m_bgstripes = 0;
}
WRITE8_MEMBER(senjyo_state::irq_ctrl_w)
@@ -105,15 +110,13 @@ WRITE8_MEMBER(senjyo_state::flip_screen_w)
WRITE8_MEMBER(senjyo_state::sound_cmd_w)
{
- z80pio_device *device = machine().device<z80pio_device>("z80pio");
-
m_sound_cmd = data;
- device->strobe_a(0);
- device->strobe_a(1);
+ m_pio->strobe_a(0);
+ m_pio->strobe_a(1);
}
-WRITE8_MEMBER(senjyo_state::senjyo_paletteram_w)
+WRITE8_MEMBER(senjyo_state::paletteram_w)
{
int r = (data << 2) & 0xC;
int g = (data ) & 0xC;
@@ -131,15 +134,15 @@ WRITE8_MEMBER(senjyo_state::senjyo_paletteram_w)
static ADDRESS_MAP_START( senjyo_map, AS_PROGRAM, 8, senjyo_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(senjyo_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(senjyo_fgcolorram_w) AM_SHARE("fgcolorram")
+ AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
+ AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(fgcolorram_w) AM_SHARE("fgcolorram")
AM_RANGE(0x9800, 0x987f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(senjyo_paletteram_w) AM_SHARE("paletteram")
+ AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x9e00, 0x9e1f) AM_RAM AM_SHARE("fgscroll")
AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_SHARE("scrolly3")
/* AM_RANGE(0x9e22, 0x9e23) height of the layer (Senjyo only, fixed at 0x380) */
AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_SHARE("scrollx3")
- AM_RANGE(0x9e27, 0x9e27) AM_RAM_WRITE(senjyo_bgstripes_w) AM_SHARE("bgstripesram") /* controls width of background stripes */
+ AM_RANGE(0x9e27, 0x9e27) AM_RAM AM_SHARE("bgstripesram") /* controls width of background stripes */
AM_RANGE(0x9e28, 0x9e29) AM_RAM AM_SHARE("scrolly2")
/* AM_RANGE(0x9e2a, 0x9e2b) height of the layer (Senjyo only, fixed at 0x200) */
AM_RANGE(0x9e2d, 0x9e2d) AM_RAM AM_SHARE("scrollx2")
@@ -149,9 +152,9 @@ static ADDRESS_MAP_START( senjyo_map, AS_PROGRAM, 8, senjyo_state )
/* AM_RANGE(0x9e38, 0x9e38) probably radar y position (Senjyo only, fixed at 0x61) */
/* AM_RANGE(0x9e3d, 0x9e3d) probably radar x position (Senjyo only, 0x00/0xc0 depending on screen flip) */
AM_RANGE(0x9e00, 0x9e3f) AM_RAM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(senjyo_bg3videoram_w) AM_SHARE("bg3videoram")
- AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(senjyo_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(senjyo_bg1videoram_w) AM_SHARE("bg1videoram")
+ AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg3videoram_w) AM_SHARE("bg3videoram")
+ AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram")
+ AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram")
AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("radarram")
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w)
AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2")
@@ -167,7 +170,7 @@ static ADDRESS_MAP_START( senjyo_sound_map, AS_PROGRAM, 8, senjyo_state )
AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_device, write)
AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_device, write)
AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_device, write)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(senjyo_volume_w)
+ AM_RANGE(0xd000, 0xd000) AM_WRITE(volume_w)
#if 0
AM_RANGE(0xe000, 0xe000) AM_WRITE(unknown)
AM_RANGE(0xf000, 0xf000) AM_WRITE(unknown)
@@ -198,10 +201,10 @@ WRITE8_MEMBER(senjyo_state::starforb_scrollx2)
static ADDRESS_MAP_START( starforb_map, AS_PROGRAM, 8, senjyo_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(senjyo_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(senjyo_fgcolorram_w) AM_SHARE("fgcolorram")
+ AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
+ AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(fgcolorram_w) AM_SHARE("fgcolorram")
AM_RANGE(0x9800, 0x987f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(senjyo_paletteram_w) AM_SHARE("paletteram")
+ AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
/* The format / use of the ram here is different on the bootleg */
AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_SHARE("scrolly3")
AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_SHARE("scrollx3")
@@ -209,9 +212,9 @@ static ADDRESS_MAP_START( starforb_map, AS_PROGRAM, 8, senjyo_state )
AM_RANGE(0x9e35, 0x9e35) AM_RAM_WRITE(starforb_scrollx2) AM_SHARE("scrollx2") // ok
AM_RANGE(0x9e00, 0x9e3f) AM_RAM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(senjyo_bg3videoram_w) AM_SHARE("bg3videoram")
- AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(senjyo_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(senjyo_bg1videoram_w) AM_SHARE("bg1videoram")
+ AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg3videoram_w) AM_SHARE("bg3videoram")
+ AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram")
+ AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram")
AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("radarram")
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w)
AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2")
@@ -221,7 +224,7 @@ static ADDRESS_MAP_START( starforb_map, AS_PROGRAM, 8, senjyo_state )
/* these aren't used / written, left here to make sure memory is allocated */
AM_RANGE(0xfe00, 0xfe1f) AM_RAM AM_SHARE("fgscroll")
- AM_RANGE(0xfe27, 0xfe27) AM_RAM_WRITE(senjyo_bgstripes_w) AM_SHARE("bgstripesram") /* controls width of background stripes */
+ AM_RANGE(0xfe27, 0xfe27) AM_RAM AM_SHARE("bgstripesram") /* controls width of background stripes */
AM_RANGE(0xfe28, 0xfe29) AM_RAM AM_SHARE("scrolly1")
AM_RANGE(0xfe2d, 0xfe2d) AM_RAM AM_SHARE("scrollx1")
ADDRESS_MAP_END
@@ -233,7 +236,7 @@ static ADDRESS_MAP_START( starforb_sound_map, AS_PROGRAM, 8, senjyo_state )
AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_device, write)
AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_device, write)
AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_device, write)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(senjyo_volume_w)
+ AM_RANGE(0xd000, 0xd000) AM_WRITE(volume_w)
#if 0
AM_RANGE(0xe000, 0xe000) AM_WRITE(unknown)
AM_RANGE(0xf000, 0xf000) AM_WRITE(unknown)
@@ -556,7 +559,7 @@ static MACHINE_CONFIG_START( senjyo, senjyo_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz? */
MCFG_CPU_PROGRAM_MAP(senjyo_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", senjyo_state, senjyo_interrupt)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", senjyo_state, irq0_line_assert)
MCFG_CPU_ADD("sub", Z80, 2000000) /* 2 MHz? */
MCFG_CPU_CONFIG(senjyo_daisy_chain)
@@ -578,7 +581,7 @@ static MACHINE_CONFIG_START( senjyo, senjyo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(senjyo_state, screen_update_senjyo)
+ MCFG_SCREEN_UPDATE_DRIVER(senjyo_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", senjyo)
@@ -925,10 +928,10 @@ DRIVER_INIT_MEMBER(senjyo_state,senjyo)
}
-GAME( 1983, senjyo, 0, senjyo, senjyo, senjyo_state, senjyo, ROT90, "Tehkan", "Senjyo", 0 )
-GAME( 1984, starforc, 0, senjyo, starforc, senjyo_state, starforc, ROT90, "Tehkan", "Star Force", 0 )
-GAME( 1984, starforce,starforc, senjyo, starforc, senjyo_state, starfore, ROT90, "Tehkan", "Star Force (encrypted, set 1)", 0 )
-GAME( 1984, starforcb,starforc, starforb,starforc, senjyo_state, starfore, ROT90, "bootleg", "Star Force (encrypted, bootleg)", 0 )
-GAME( 1984, starforca,starforc, senjyo, starforc, senjyo_state, starfora, ROT90, "Tehkan", "Star Force (encrypted, set 2)", 0 )
-GAME( 1985, megaforc, starforc, senjyo, starforc, senjyo_state, starforc, ROT90, "Tehkan (Video Ware license)", "Mega Force", 0 )
-GAME( 1986, baluba, 0, senjyo, baluba, senjyo_state, starforc, ROT90, "Able Corp, Ltd.", "Baluba-louk no Densetsu (Japan)", 0 )
+GAME( 1983, senjyo, 0, senjyo, senjyo, senjyo_state, senjyo, ROT90, "Tehkan", "Senjyo", GAME_SUPPORTS_SAVE )
+GAME( 1984, starforc, 0, senjyo, starforc, senjyo_state, starforc, ROT90, "Tehkan", "Star Force", GAME_SUPPORTS_SAVE )
+GAME( 1984, starforce,starforc, senjyo, starforc, senjyo_state, starfore, ROT90, "Tehkan", "Star Force (encrypted, set 1)", GAME_SUPPORTS_SAVE )
+GAME( 1984, starforcb,starforc, starforb,starforc, senjyo_state, starfore, ROT90, "bootleg", "Star Force (encrypted, bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1984, starforca,starforc, senjyo, starforc, senjyo_state, starfora, ROT90, "Tehkan", "Star Force (encrypted, set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1985, megaforc, starforc, senjyo, starforc, senjyo_state, starforc, ROT90, "Tehkan (Video Ware license)", "Mega Force", GAME_SUPPORTS_SAVE )
+GAME( 1986, baluba, 0, senjyo, baluba, senjyo_state, starforc, ROT90, "Able Corp, Ltd.", "Baluba-louk no Densetsu (Japan)", GAME_SUPPORTS_SAVE )