senjyo.c: added save state support, removed unneeded include, member variables and suffixes (nw)

This commit is contained in:
Osso 2015-01-06 09:08:52 +01:00
parent 8f484ca9b9
commit 7727ba546a
4 changed files with 101 additions and 110 deletions

View File

@ -26,7 +26,7 @@ WRITE_LINE_MEMBER(senjyo_state::sound_line_clock)
}
}
WRITE8_MEMBER(senjyo_state::senjyo_volume_w)
WRITE8_MEMBER(senjyo_state::volume_w)
{
m_single_volume = data & 0x0f;
}

View File

@ -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 )

View File

@ -8,7 +8,11 @@ class senjyo_state : public driver_device
public:
senjyo_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_pio(*this, "z80pio"),
m_dac(*this, "dac"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_spriteram(*this, "spriteram"),
m_fgscroll(*this, "fgscroll"),
m_scrollx1(*this, "scrollx1"),
@ -24,19 +28,16 @@ public:
m_bg3videoram(*this, "bg3videoram"),
m_radarram(*this, "radarram"),
m_bgstripesram(*this, "bgstripesram"),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_generic_paletteram_8(*this, "paletteram") { }
UINT8 m_sound_cmd;
INT16 *m_single_data;
int m_single_rate;
int m_single_volume;
int m_sound_state;
/* devices */
required_device<cpu_device> m_maincpu;
required_device<z80pio_device> m_pio;
required_device<dac_device> m_dac;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
/* memory pointers */
required_shared_ptr<UINT8> m_spriteram;
required_shared_ptr<UINT8> m_fgscroll;
required_shared_ptr<UINT8> m_scrollx1;
@ -52,50 +53,54 @@ public:
required_shared_ptr<UINT8> m_bg3videoram;
required_shared_ptr<UINT8> m_radarram;
required_shared_ptr<UINT8> m_bgstripesram;
required_shared_ptr<UINT8> m_generic_paletteram_8;
// game specific initialization
int m_is_senjyo;
int m_scrollhack;
UINT8 m_sound_cmd;
int m_single_volume;
int m_sound_state;
int m_bgstripes;
tilemap_t *m_fg_tilemap;
tilemap_t *m_bg1_tilemap;
tilemap_t *m_bg2_tilemap;
tilemap_t *m_bg3_tilemap;
int m_bgstripes;
DECLARE_WRITE8_MEMBER(flip_screen_w);
DECLARE_WRITE8_MEMBER(senjyo_paletteram_w);
DECLARE_WRITE8_MEMBER(paletteram_w);
DECLARE_WRITE8_MEMBER(starforb_scrolly2);
DECLARE_WRITE8_MEMBER(starforb_scrollx2);
DECLARE_WRITE8_MEMBER(senjyo_fgvideoram_w);
DECLARE_WRITE8_MEMBER(senjyo_fgcolorram_w);
DECLARE_WRITE8_MEMBER(senjyo_bg1videoram_w);
DECLARE_WRITE8_MEMBER(senjyo_bg2videoram_w);
DECLARE_WRITE8_MEMBER(senjyo_bg3videoram_w);
DECLARE_WRITE8_MEMBER(senjyo_bgstripes_w);
DECLARE_WRITE8_MEMBER(senjyo_volume_w);
DECLARE_WRITE8_MEMBER(fgvideoram_w);
DECLARE_WRITE8_MEMBER(fgcolorram_w);
DECLARE_WRITE8_MEMBER(bg1videoram_w);
DECLARE_WRITE8_MEMBER(bg2videoram_w);
DECLARE_WRITE8_MEMBER(bg3videoram_w);
DECLARE_WRITE8_MEMBER(volume_w);
DECLARE_WRITE_LINE_MEMBER(sound_line_clock);
DECLARE_WRITE8_MEMBER(sound_cmd_w);
DECLARE_WRITE8_MEMBER(irq_ack_w);
DECLARE_WRITE8_MEMBER(irq_ctrl_w);
DECLARE_READ8_MEMBER(pio_pa_r);
DECLARE_DRIVER_INIT(starfora);
DECLARE_DRIVER_INIT(senjyo);
DECLARE_DRIVER_INIT(starfore);
DECLARE_DRIVER_INIT(starforc);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
TILE_GET_INFO_MEMBER(senjyo_bg1_tile_info);
TILE_GET_INFO_MEMBER(starforc_bg1_tile_info);
TILE_GET_INFO_MEMBER(get_bg2_tile_info);
TILE_GET_INFO_MEMBER(get_bg3_tile_info);
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
UINT32 screen_update_senjyo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(senjyo_interrupt);
DECLARE_WRITE8_MEMBER(irq_ctrl_w);
DECLARE_READ8_MEMBER(pio_pa_r);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_bgbitmap(bitmap_ind16 &bitmap,const rectangle &cliprect);
void draw_radar(bitmap_ind16 &bitmap,const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int priority);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_shared_ptr<UINT8> m_generic_paletteram_8;
};
/*----------- defined in audio/senjyo.c -----------*/

View File

@ -114,37 +114,32 @@ void senjyo_state::video_start()
***************************************************************************/
WRITE8_MEMBER(senjyo_state::senjyo_fgvideoram_w)
WRITE8_MEMBER(senjyo_state::fgvideoram_w)
{
m_fgvideoram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(senjyo_state::senjyo_fgcolorram_w)
WRITE8_MEMBER(senjyo_state::fgcolorram_w)
{
m_fgcolorram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(senjyo_state::senjyo_bg1videoram_w)
WRITE8_MEMBER(senjyo_state::bg1videoram_w)
{
m_bg1videoram[offset] = data;
m_bg1_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(senjyo_state::senjyo_bg2videoram_w)
WRITE8_MEMBER(senjyo_state::bg2videoram_w)
{
m_bg2videoram[offset] = data;
m_bg2_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(senjyo_state::senjyo_bg3videoram_w)
WRITE8_MEMBER(senjyo_state::bg3videoram_w)
{
m_bg3videoram[offset] = data;
m_bg3_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(senjyo_state::senjyo_bgstripes_w)
{
*m_bgstripesram = data;
}
/***************************************************************************
Display refresh
@ -153,28 +148,25 @@ WRITE8_MEMBER(senjyo_state::senjyo_bgstripes_w)
void senjyo_state::draw_bgbitmap(bitmap_ind16 &bitmap,const rectangle &cliprect)
{
int x,y,pen,strwid,count;
if (m_bgstripes == 0xff) /* off */
bitmap.fill(0, cliprect);
else
{
int flip = flip_screen();
pen = 0;
count = 0;
strwid = m_bgstripes;
int pen = 0;
int count = 0;
int strwid = m_bgstripes;
if (strwid == 0) strwid = 0x100;
if (flip) strwid ^= 0xff;
for (x = 0;x < 256;x++)
for (int x = 0;x < 256;x++)
{
if (flip)
for (y = 0;y < 256;y++)
for (int y = 0;y < 256;y++)
bitmap.pix16(y, 255 - x) = 384 + pen;
else
for (y = 0;y < 256;y++)
for (int y = 0;y < 256;y++)
bitmap.pix16(y, x) = 384 + pen;
count += 0x10;
@ -189,10 +181,8 @@ void senjyo_state::draw_bgbitmap(bitmap_ind16 &bitmap,const rectangle &cliprect)
void senjyo_state::draw_radar(bitmap_ind16 &bitmap,const rectangle &cliprect)
{
int offs,x;
for (offs = 0;offs < 0x400;offs++)
for (x = 0;x < 8;x++)
for (int offs = 0;offs < 0x400;offs++)
for (int x = 0;x < 8;x++)
if (m_radarram[offs] & (1 << x))
{
int sx, sy;
@ -213,26 +203,23 @@ void senjyo_state::draw_radar(bitmap_ind16 &bitmap,const rectangle &cliprect)
void senjyo_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int priority)
{
UINT8 *spriteram = m_spriteram;
int offs;
for (offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4)
for (int offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4)
{
int big,sx,sy,flipx,flipy;
if (((spriteram[offs+1] & 0x30) >> 4) == priority)
if (((m_spriteram[offs+1] & 0x30) >> 4) == priority)
{
if (m_is_senjyo) /* Senjyo */
big = (spriteram[offs] & 0x80);
big = (m_spriteram[offs] & 0x80);
else /* Star Force */
big = ((spriteram[offs] & 0xc0) == 0xc0);
sx = spriteram[offs+3];
big = ((m_spriteram[offs] & 0xc0) == 0xc0);
sx = m_spriteram[offs+3];
if (big)
sy = 224-spriteram[offs+2];
sy = 224-m_spriteram[offs+2];
else
sy = 240-spriteram[offs+2];
flipx = spriteram[offs+1] & 0x40;
flipy = spriteram[offs+1] & 0x80;
sy = 240-m_spriteram[offs+2];
flipx = m_spriteram[offs+1] & 0x40;
flipy = m_spriteram[offs+1] & 0x80;
if (flip_screen())
{
@ -253,32 +240,28 @@ void senjyo_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,i
m_gfxdecode->gfx(big ? 5 : 4)->transpen(bitmap,cliprect,
spriteram[offs],
spriteram[offs + 1] & 0x07,
m_spriteram[offs],
m_spriteram[offs + 1] & 0x07,
flipx,flipy,
sx,sy,0);
}
}
}
UINT32 senjyo_state::screen_update_senjyo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
UINT32 senjyo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int i;
/* two colors for the radar dots (verified on the real board) */
m_palette->set_pen_color(512,rgb_t(0xff,0x00,0x00)); /* red for enemies */
m_palette->set_pen_color(513,rgb_t(0xff,0xff,0x00)); /* yellow for player */
{
int flip = flip_screen();
int scrollx,scrolly;
for (i = 0;i < 32;i++)
for (int i = 0;i < 32;i++)
m_fg_tilemap->set_scrolly(i, m_fgscroll[i]);
scrollx = m_scrollx1[0];
scrolly = m_scrolly1[0] + 256 * m_scrolly1[1];
int scrollx = m_scrollx1[0];
int scrolly = m_scrolly1[0] + 256 * m_scrolly1[1];
if (flip)
scrollx = -scrollx;
m_bg1_tilemap->set_scrollx(0, scrollx);