shadfrce.c: added save state support (nw)

This commit is contained in:
Ivan Vangelista 2015-02-22 08:52:05 +01:00
parent 70d7ea601c
commit ae15cc2745
3 changed files with 97 additions and 86 deletions

View File

@ -8,7 +8,7 @@ Stephh's notes :
- As for some other M68000 Technos games (or games running on similar hardware - As for some other M68000 Technos games (or games running on similar hardware
such as 'mugsmash'), the Inputs and the Dip Switches are mangled, so you need such as 'mugsmash'), the Inputs and the Dip Switches are mangled, so you need
a specific read handler so end-uers can see them in a "standard" order. a specific read handler so end-users can see them in a "standard" order.
01-Sept-2008 - Pierpaolo Prazzoli 01-Sept-2008 - Pierpaolo Prazzoli
- Added irqs ack - Added irqs ack
@ -141,7 +141,6 @@ lev 7 : 0x7c : 0000 11d0 - just rte
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "sound/2151intf.h" #include "sound/2151intf.h"
#include "sound/okim6295.h"
#include "includes/shadfrce.h" #include "includes/shadfrce.h"
@ -149,7 +148,7 @@ lev 7 : 0x7c : 0000 11d0 - just rte
#define CPU_CLOCK MASTER_CLOCK / 2 #define CPU_CLOCK MASTER_CLOCK / 2
#define PIXEL_CLOCK MASTER_CLOCK / 4 #define PIXEL_CLOCK MASTER_CLOCK / 4
WRITE16_MEMBER(shadfrce_state::shadfrce_flip_screen) WRITE16_MEMBER(shadfrce_state::flip_screen)
{ {
flip_screen_set(data & 0x01); flip_screen_set(data & 0x01);
} }
@ -234,7 +233,7 @@ WRITE16_MEMBER(shadfrce_state::shadfrce_flip_screen)
*/ */
READ16_MEMBER(shadfrce_state::shadfrce_input_ports_r) READ16_MEMBER(shadfrce_state::input_ports_r)
{ {
UINT16 data = 0xffff; UINT16 data = 0xffff;
@ -258,7 +257,7 @@ READ16_MEMBER(shadfrce_state::shadfrce_input_ports_r)
} }
WRITE16_MEMBER(shadfrce_state::shadfrce_sound_brt_w) WRITE16_MEMBER(shadfrce_state::sound_brt_w)
{ {
if (ACCESSING_BITS_8_15) if (ACCESSING_BITS_8_15)
{ {
@ -275,12 +274,12 @@ WRITE16_MEMBER(shadfrce_state::shadfrce_sound_brt_w)
} }
} }
WRITE16_MEMBER(shadfrce_state::shadfrce_irq_ack_w) WRITE16_MEMBER(shadfrce_state::irq_ack_w)
{ {
m_maincpu->set_input_line(offset ^ 3, CLEAR_LINE); m_maincpu->set_input_line(offset ^ 3, CLEAR_LINE);
} }
WRITE16_MEMBER(shadfrce_state::shadfrce_irq_w) WRITE16_MEMBER(shadfrce_state::irq_w)
{ {
m_irqs_enable = data & 1; /* maybe, it's set/unset inside every trap instruction which is executed */ m_irqs_enable = data & 1; /* maybe, it's set/unset inside every trap instruction which is executed */
m_video_enable = data & 8; /* probably */ m_video_enable = data & 8; /* probably */
@ -300,12 +299,12 @@ WRITE16_MEMBER(shadfrce_state::shadfrce_irq_w)
m_prev_value = data; m_prev_value = data;
} }
WRITE16_MEMBER(shadfrce_state::shadfrce_scanline_w) WRITE16_MEMBER(shadfrce_state::scanline_w)
{ {
m_raster_scanline = data; /* guess, 0 is always written */ m_raster_scanline = data; /* guess, 0 is always written */
} }
TIMER_DEVICE_CALLBACK_MEMBER(shadfrce_state::shadfrce_scanline) TIMER_DEVICE_CALLBACK_MEMBER(shadfrce_state::scanline)
{ {
int scanline = param; int scanline = param;
@ -360,29 +359,29 @@ TIMER_DEVICE_CALLBACK_MEMBER(shadfrce_state::shadfrce_scanline)
static ADDRESS_MAP_START( shadfrce_map, AS_PROGRAM, 16, shadfrce_state ) static ADDRESS_MAP_START( shadfrce_map, AS_PROGRAM, 16, shadfrce_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(shadfrce_bg0videoram_w) AM_SHARE("bg0videoram") /* video */ AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(bg0videoram_w) AM_SHARE("bg0videoram") /* video */
AM_RANGE(0x101000, 0x101fff) AM_RAM AM_RANGE(0x101000, 0x101fff) AM_RAM
AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(shadfrce_bg1videoram_w) AM_SHARE("bg1videoram") /* bg 2 */ AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram") /* bg 2 */
AM_RANGE(0x102800, 0x103fff) AM_RAM AM_RANGE(0x102800, 0x103fff) AM_RAM
AM_RANGE(0x140000, 0x141fff) AM_RAM_WRITE(shadfrce_fgvideoram_w) AM_SHARE("fgvideoram") AM_RANGE(0x140000, 0x141fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0x142000, 0x143fff) AM_RAM AM_SHARE("spvideoram") /* sprites */ AM_RANGE(0x142000, 0x143fff) AM_RAM AM_SHARE("spvideoram") /* sprites */
AM_RANGE(0x180000, 0x187fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x180000, 0x187fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(shadfrce_bg0scrollx_w) /* SCROLL X */ AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(bg0scrollx_w) /* SCROLL X */
AM_RANGE(0x1c0002, 0x1c0003) AM_WRITE(shadfrce_bg0scrolly_w) /* SCROLL Y */ AM_RANGE(0x1c0002, 0x1c0003) AM_WRITE(bg0scrolly_w) /* SCROLL Y */
AM_RANGE(0x1c0004, 0x1c0005) AM_WRITE(shadfrce_bg1scrollx_w) /* SCROLL X */ AM_RANGE(0x1c0004, 0x1c0005) AM_WRITE(bg1scrollx_w) /* SCROLL X */
AM_RANGE(0x1c0006, 0x1c0007) AM_WRITE(shadfrce_bg1scrolly_w) /* SCROLL Y */ AM_RANGE(0x1c0006, 0x1c0007) AM_WRITE(bg1scrolly_w) /* SCROLL Y */
AM_RANGE(0x1c0008, 0x1c0009) AM_WRITENOP /* ?? */ AM_RANGE(0x1c0008, 0x1c0009) AM_WRITENOP /* ?? */
AM_RANGE(0x1c000a, 0x1c000b) AM_READNOP AM_WRITE(shadfrce_flip_screen) AM_RANGE(0x1c000a, 0x1c000b) AM_READNOP AM_WRITE(flip_screen)
AM_RANGE(0x1c000c, 0x1c000d) AM_WRITENOP /* ?? */ AM_RANGE(0x1c000c, 0x1c000d) AM_WRITENOP /* ?? */
AM_RANGE(0x1d0000, 0x1d0005) AM_WRITE(shadfrce_irq_ack_w) AM_RANGE(0x1d0000, 0x1d0005) AM_WRITE(irq_ack_w)
AM_RANGE(0x1d0006, 0x1d0007) AM_WRITE(shadfrce_irq_w) AM_RANGE(0x1d0006, 0x1d0007) AM_WRITE(irq_w)
AM_RANGE(0x1d0008, 0x1d0009) AM_WRITE(shadfrce_scanline_w) AM_RANGE(0x1d0008, 0x1d0009) AM_WRITE(scanline_w)
AM_RANGE(0x1d000c, 0x1d000d) AM_READNOP AM_WRITE(shadfrce_sound_brt_w) /* sound command + screen brightness */ AM_RANGE(0x1d000c, 0x1d000d) AM_READNOP AM_WRITE(sound_brt_w) /* sound command + screen brightness */
AM_RANGE(0x1d0010, 0x1d0011) AM_WRITENOP /* ?? */ AM_RANGE(0x1d0010, 0x1d0011) AM_WRITENOP /* ?? */
AM_RANGE(0x1d0012, 0x1d0013) AM_WRITENOP /* ?? */ AM_RANGE(0x1d0012, 0x1d0013) AM_WRITENOP /* ?? */
AM_RANGE(0x1d0014, 0x1d0015) AM_WRITENOP /* ?? */ AM_RANGE(0x1d0014, 0x1d0015) AM_WRITENOP /* ?? */
AM_RANGE(0x1d0016, 0x1d0017) AM_WRITE(watchdog_reset16_w) AM_RANGE(0x1d0016, 0x1d0017) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x1d0020, 0x1d0027) AM_READ(shadfrce_input_ports_r) AM_RANGE(0x1d0020, 0x1d0027) AM_READ(input_ports_r)
AM_RANGE(0x1f0000, 0x1fffff) AM_RAM AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -544,15 +543,15 @@ static MACHINE_CONFIG_START( shadfrce, shadfrce_state )
MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK) /* verified on pcb */ MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(shadfrce_map) MCFG_CPU_PROGRAM_MAP(shadfrce_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", shadfrce_state, shadfrce_scanline, "screen", 0, 1) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", shadfrce_state, scanline, "screen", 0, 1)
MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */ MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(shadfrce_sound_map) MCFG_CPU_PROGRAM_MAP(shadfrce_sound_map)
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 432, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 432, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
MCFG_SCREEN_UPDATE_DRIVER(shadfrce_state, screen_update_shadfrce) MCFG_SCREEN_UPDATE_DRIVER(shadfrce_state, screen_update)
MCFG_SCREEN_VBLANK_DRIVER(shadfrce_state, screen_eof_shadfrce) MCFG_SCREEN_VBLANK_DRIVER(shadfrce_state, screen_eof)
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", shadfrce) MCFG_GFXDECODE_ADD("gfxdecode", "palette", shadfrce)
@ -662,6 +661,6 @@ ROM_START( shadfrcejv2 )
ROM_END ROM_END
GAME( 1993, shadfrce, 0, shadfrce, shadfrce, driver_device, 0, ROT0, "Technos Japan", "Shadow Force (US Version 2)", GAME_NO_COCKTAIL ) GAME( 1993, shadfrce, 0, shadfrce, shadfrce, driver_device, 0, ROT0, "Technos Japan", "Shadow Force (US Version 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1993, shadfrcej, shadfrce, shadfrce, shadfrce, driver_device, 0, ROT0, "Technos Japan", "Shadow Force (Japan Version 3)", GAME_NO_COCKTAIL ) GAME( 1993, shadfrcej, shadfrce, shadfrce, shadfrce, driver_device, 0, ROT0, "Technos Japan", "Shadow Force (Japan Version 3)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1993, shadfrcejv2, shadfrce, shadfrce, shadfrce, driver_device, 0, ROT0, "Technos Japan", "Shadow Force (Japan Version 2)", GAME_NO_COCKTAIL ) GAME( 1993, shadfrcejv2, shadfrce, shadfrce, shadfrce, driver_device, 0, ROT0, "Technos Japan", "Shadow Force (Japan Version 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )

View File

@ -5,59 +5,64 @@ class shadfrce_state : public driver_device
public: public:
shadfrce_state(const machine_config &mconfig, device_type type, const char *tag) shadfrce_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_fgvideoram(*this, "fgvideoram"),
m_bg0videoram(*this, "bg0videoram"),
m_bg1videoram(*this, "bg1videoram"),
m_spvideoram(*this, "spvideoram"),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_oki(*this, "oki"), m_oki(*this, "oki"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"), m_screen(*this, "screen"),
m_palette(*this, "palette") { } m_palette(*this, "palette"),
m_fgvideoram(*this, "fgvideoram"),
m_bg0videoram(*this, "bg0videoram"),
m_bg1videoram(*this, "bg1videoram"),
m_spvideoram(*this, "spvideoram") { }
tilemap_t *m_fgtilemap;
tilemap_t *m_bg0tilemap;
tilemap_t *m_bg1tilemap;
required_shared_ptr<UINT16> m_fgvideoram;
required_shared_ptr<UINT16> m_bg0videoram;
required_shared_ptr<UINT16> m_bg1videoram;
required_shared_ptr<UINT16> m_spvideoram;
UINT16 *m_spvideoram_old;
int m_video_enable;
int m_irqs_enable;
int m_raster_scanline;
int m_raster_irq_enable;
int m_vblank;
int m_prev_value;
DECLARE_WRITE16_MEMBER(shadfrce_flip_screen);
DECLARE_READ16_MEMBER(shadfrce_input_ports_r);
DECLARE_WRITE16_MEMBER(shadfrce_sound_brt_w);
DECLARE_WRITE16_MEMBER(shadfrce_irq_ack_w);
DECLARE_WRITE16_MEMBER(shadfrce_irq_w);
DECLARE_WRITE16_MEMBER(shadfrce_scanline_w);
DECLARE_WRITE16_MEMBER(shadfrce_fgvideoram_w);
DECLARE_WRITE16_MEMBER(shadfrce_bg0videoram_w);
DECLARE_WRITE16_MEMBER(shadfrce_bg1videoram_w);
DECLARE_WRITE16_MEMBER(shadfrce_bg0scrollx_w);
DECLARE_WRITE16_MEMBER(shadfrce_bg0scrolly_w);
DECLARE_WRITE16_MEMBER(shadfrce_bg1scrollx_w);
DECLARE_WRITE16_MEMBER(shadfrce_bg1scrolly_w);
DECLARE_WRITE8_MEMBER(oki_bankswitch_w);
TILE_GET_INFO_MEMBER(get_shadfrce_fgtile_info);
TILE_GET_INFO_MEMBER(get_shadfrce_bg0tile_info);
TILE_GET_INFO_MEMBER(get_shadfrce_bg1tile_info);
virtual void video_start();
UINT32 screen_update_shadfrce(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_shadfrce(screen_device &screen, bool state);
TIMER_DEVICE_CALLBACK_MEMBER(shadfrce_scanline);
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_audiocpu;
required_device<okim6295_device> m_oki; required_device<okim6295_device> m_oki;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen; required_device<screen_device> m_screen;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_shared_ptr<UINT16> m_fgvideoram;
required_shared_ptr<UINT16> m_bg0videoram;
required_shared_ptr<UINT16> m_bg1videoram;
required_shared_ptr<UINT16> m_spvideoram;
UINT16 *m_spvideoram_old;
tilemap_t *m_fgtilemap;
tilemap_t *m_bg0tilemap;
tilemap_t *m_bg1tilemap;
int m_video_enable;
int m_irqs_enable;
int m_raster_scanline;
int m_raster_irq_enable;
int m_vblank;
int m_prev_value;
DECLARE_WRITE16_MEMBER(flip_screen);
DECLARE_READ16_MEMBER(input_ports_r);
DECLARE_WRITE16_MEMBER(sound_brt_w);
DECLARE_WRITE16_MEMBER(irq_ack_w);
DECLARE_WRITE16_MEMBER(irq_w);
DECLARE_WRITE16_MEMBER(scanline_w);
DECLARE_WRITE16_MEMBER(fgvideoram_w);
DECLARE_WRITE16_MEMBER(bg0videoram_w);
DECLARE_WRITE16_MEMBER(bg1videoram_w);
DECLARE_WRITE16_MEMBER(bg0scrollx_w);
DECLARE_WRITE16_MEMBER(bg0scrolly_w);
DECLARE_WRITE16_MEMBER(bg1scrollx_w);
DECLARE_WRITE16_MEMBER(bg1scrolly_w);
DECLARE_WRITE8_MEMBER(oki_bankswitch_w);
TILE_GET_INFO_MEMBER(get_fgtile_info);
TILE_GET_INFO_MEMBER(get_bg0tile_info);
TILE_GET_INFO_MEMBER(get_bg1tile_info);
virtual void video_start();
TIMER_DEVICE_CALLBACK_MEMBER(scanline);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof(screen_device &screen, bool state);
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect );
}; };

View File

@ -1,7 +1,7 @@
#include "emu.h" #include "emu.h"
#include "includes/shadfrce.h" #include "includes/shadfrce.h"
TILE_GET_INFO_MEMBER(shadfrce_state::get_shadfrce_fgtile_info) TILE_GET_INFO_MEMBER(shadfrce_state::get_fgtile_info)
{ {
/* ---- ---- tttt tttt ---- ---- pppp TTTT */ /* ---- ---- tttt tttt ---- ---- pppp TTTT */
int tileno, colour; int tileno, colour;
@ -12,13 +12,13 @@ TILE_GET_INFO_MEMBER(shadfrce_state::get_shadfrce_fgtile_info)
SET_TILE_INFO_MEMBER(0,tileno,colour*4,0); SET_TILE_INFO_MEMBER(0,tileno,colour*4,0);
} }
WRITE16_MEMBER(shadfrce_state::shadfrce_fgvideoram_w) WRITE16_MEMBER(shadfrce_state::fgvideoram_w)
{ {
m_fgvideoram[offset] = data; m_fgvideoram[offset] = data;
m_fgtilemap->mark_tile_dirty(offset/2); m_fgtilemap->mark_tile_dirty(offset/2);
} }
TILE_GET_INFO_MEMBER(shadfrce_state::get_shadfrce_bg0tile_info) TILE_GET_INFO_MEMBER(shadfrce_state::get_bg0tile_info)
{ {
/* ---- ---- ---- cccc --TT TTTT TTTT TTTT */ /* ---- ---- ---- cccc --TT TTTT TTTT TTTT */
int tileno, colour,fyx; int tileno, colour,fyx;
@ -31,13 +31,13 @@ TILE_GET_INFO_MEMBER(shadfrce_state::get_shadfrce_bg0tile_info)
SET_TILE_INFO_MEMBER(2,tileno,colour,TILE_FLIPYX(fyx)); SET_TILE_INFO_MEMBER(2,tileno,colour,TILE_FLIPYX(fyx));
} }
WRITE16_MEMBER(shadfrce_state::shadfrce_bg0videoram_w) WRITE16_MEMBER(shadfrce_state::bg0videoram_w)
{ {
m_bg0videoram[offset] = data; m_bg0videoram[offset] = data;
m_bg0tilemap->mark_tile_dirty(offset/2); m_bg0tilemap->mark_tile_dirty(offset/2);
} }
TILE_GET_INFO_MEMBER(shadfrce_state::get_shadfrce_bg1tile_info) TILE_GET_INFO_MEMBER(shadfrce_state::get_bg1tile_info)
{ {
int tileno, colour; int tileno, colour;
@ -47,7 +47,7 @@ TILE_GET_INFO_MEMBER(shadfrce_state::get_shadfrce_bg1tile_info)
SET_TILE_INFO_MEMBER(2,tileno,colour+64,0); SET_TILE_INFO_MEMBER(2,tileno,colour+64,0);
} }
WRITE16_MEMBER(shadfrce_state::shadfrce_bg1videoram_w) WRITE16_MEMBER(shadfrce_state::bg1videoram_w)
{ {
m_bg1videoram[offset] = data; m_bg1videoram[offset] = data;
m_bg1tilemap->mark_tile_dirty(offset); m_bg1tilemap->mark_tile_dirty(offset);
@ -58,33 +58,40 @@ WRITE16_MEMBER(shadfrce_state::shadfrce_bg1videoram_w)
void shadfrce_state::video_start() void shadfrce_state::video_start()
{ {
m_fgtilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(shadfrce_state::get_shadfrce_fgtile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32); m_fgtilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(shadfrce_state::get_fgtile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32);
m_fgtilemap->set_transparent_pen(0); m_fgtilemap->set_transparent_pen(0);
m_bg0tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(shadfrce_state::get_shadfrce_bg0tile_info),this),TILEMAP_SCAN_ROWS, 16, 16,32,32); m_bg0tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(shadfrce_state::get_bg0tile_info),this),TILEMAP_SCAN_ROWS, 16, 16,32,32);
m_bg0tilemap->set_transparent_pen(0); m_bg0tilemap->set_transparent_pen(0);
m_bg1tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(shadfrce_state::get_shadfrce_bg1tile_info),this),TILEMAP_SCAN_ROWS, 16, 16,32,32); m_bg1tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(shadfrce_state::get_bg1tile_info),this),TILEMAP_SCAN_ROWS, 16, 16,32,32);
m_spvideoram_old = auto_alloc_array(machine(), UINT16, m_spvideoram.bytes()/2); m_spvideoram_old = auto_alloc_array(machine(), UINT16, m_spvideoram.bytes()/2);
save_item(NAME(m_video_enable));
save_item(NAME(m_irqs_enable));
save_item(NAME(m_raster_scanline));
save_item(NAME(m_raster_irq_enable));
save_item(NAME(m_vblank));
save_item(NAME(m_prev_value));
} }
WRITE16_MEMBER(shadfrce_state::shadfrce_bg0scrollx_w) WRITE16_MEMBER(shadfrce_state::bg0scrollx_w)
{ {
m_bg0tilemap->set_scrollx(0, data & 0x1ff ); m_bg0tilemap->set_scrollx(0, data & 0x1ff );
} }
WRITE16_MEMBER(shadfrce_state::shadfrce_bg0scrolly_w) WRITE16_MEMBER(shadfrce_state::bg0scrolly_w)
{ {
m_bg0tilemap->set_scrolly(0, data & 0x1ff ); m_bg0tilemap->set_scrolly(0, data & 0x1ff );
} }
WRITE16_MEMBER(shadfrce_state::shadfrce_bg1scrollx_w) WRITE16_MEMBER(shadfrce_state::bg1scrollx_w)
{ {
m_bg1tilemap->set_scrollx(0, data & 0x1ff ); m_bg1tilemap->set_scrollx(0, data & 0x1ff );
} }
WRITE16_MEMBER(shadfrce_state::shadfrce_bg1scrolly_w) WRITE16_MEMBER(shadfrce_state::bg1scrolly_w)
{ {
m_bg1tilemap->set_scrolly(0, data & 0x1ff ); m_bg1tilemap->set_scrolly(0, data & 0x1ff );
} }
@ -139,7 +146,7 @@ void shadfrce_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
} }
} }
UINT32 shadfrce_state::screen_update_shadfrce(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) UINT32 shadfrce_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
screen.priority().fill(0, cliprect); screen.priority().fill(0, cliprect);
@ -158,7 +165,7 @@ UINT32 shadfrce_state::screen_update_shadfrce(screen_device &screen, bitmap_ind1
return 0; return 0;
} }
void shadfrce_state::screen_eof_shadfrce(screen_device &screen, bool state) void shadfrce_state::screen_eof(screen_device &screen, bool state)
{ {
// rising edge // rising edge
if (state) if (state)