rotaryf.c, roul.c, sauro.c: added save state support (nw)

This commit is contained in:
Ivan Vangelista 2015-04-10 19:06:23 +02:00
parent abb24174ff
commit dd7e9196e0
5 changed files with 89 additions and 59 deletions

View File

@ -23,21 +23,28 @@ public:
rotaryf_state(const machine_config &mconfig, device_type type, const char *tag) rotaryf_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this,"maincpu"), m_maincpu(*this,"maincpu"),
m_videoram(*this, "videoram"),
m_samples(*this, "samples"), m_samples(*this, "samples"),
m_sn(*this, "snsnd") m_sn(*this, "snsnd"),
m_videoram(*this, "videoram")
{ } { }
required_device<cpu_device> m_maincpu;
required_device<samples_device> m_samples;
required_device<sn76477_device> m_sn;
required_shared_ptr<UINT8> m_videoram;
DECLARE_READ8_MEMBER(port29_r); DECLARE_READ8_MEMBER(port29_r);
DECLARE_WRITE8_MEMBER(port28_w); DECLARE_WRITE8_MEMBER(port28_w);
DECLARE_WRITE8_MEMBER(port30_w); DECLARE_WRITE8_MEMBER(port30_w);
bool m_flipscreen; bool m_flipscreen;
UINT8 m_last; UINT8 m_last;
required_device<cpu_device> m_maincpu;
required_shared_ptr<UINT8> m_videoram; virtual void machine_start();
required_device<samples_device> m_samples;
required_device<sn76477_device> m_sn; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
UINT32 screen_update_rotaryf(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(rotaryf_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(rotaryf_interrupt);
}; };
@ -58,6 +65,12 @@ static const char *const rotaryf_sample_names[] =
}; };
void rotaryf_state::machine_start()
{
save_item(NAME(m_flipscreen));
save_item(NAME(m_last));
}
READ8_MEMBER( rotaryf_state::port29_r ) READ8_MEMBER( rotaryf_state::port29_r )
{ {
UINT8 data = ioport("INPUTS")->read(); UINT8 data = ioport("INPUTS")->read();
@ -126,7 +139,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(rotaryf_state::rotaryf_interrupt)
* *
*************************************/ *************************************/
UINT32 rotaryf_state::screen_update_rotaryf(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) UINT32 rotaryf_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{ {
offs_t offs; offs_t offs;
pen_t pens[2]; pen_t pens[2];
@ -238,7 +251,7 @@ static MACHINE_CONFIG_START( rotaryf, rotaryf_state )
MCFG_SCREEN_SIZE(32*8, 262) /* vert size is a guess, taken from mw8080bw */ MCFG_SCREEN_SIZE(32*8, 262) /* vert size is a guess, taken from mw8080bw */
MCFG_SCREEN_VISIBLE_AREA(1*8, 30*8-1, 0*8, 32*8-1) MCFG_SCREEN_VISIBLE_AREA(1*8, 30*8-1, 0*8, 32*8-1)
MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_UPDATE_DRIVER(rotaryf_state, screen_update_rotaryf) MCFG_SCREEN_UPDATE_DRIVER(rotaryf_state, screen_update)
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
@ -276,4 +289,4 @@ ROM_START( rotaryf )
ROM_END ROM_END
GAME( 1979, rotaryf, 0, rotaryf, rotaryf, driver_device, 0, ROT270, "Kasco", "Rotary Fighter", GAME_IMPERFECT_SOUND ) GAME( 1979, rotaryf, 0, rotaryf, rotaryf, driver_device, 0, ROT270, "Kasco", "Rotary Fighter", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )

View File

@ -22,7 +22,7 @@ Has 36 pin Cherry master looking edge connector
Z80 x2 Z80 x2
Altera Ep1810LC-45 Altera Ep1810LC-45
20.000 MHz crystal 20.000 MHz crystal
video 464p10 x4 (board silcksreeend 4416) video 464p10 x4 (board silkscreened 4416)
AY-3-8912A AY-3-8912A
ROM text showed SUPER LUCKY ROULETTE LEISURE ENT ROM text showed SUPER LUCKY ROULETTE LEISURE ENT
@ -77,18 +77,22 @@ public:
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu") { } m_soundcpu(*this, "soundcpu") { }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
UINT8 m_reg[0x10]; UINT8 m_reg[0x10];
UINT8 *m_videobuf; UINT8 *m_videobuf;
UINT8 m_lamp_old; UINT8 m_lamp_old;
DECLARE_READ8_MEMBER(blitter_status_r); DECLARE_READ8_MEMBER(blitter_status_r);
DECLARE_WRITE8_MEMBER(blitter_cmd_w); DECLARE_WRITE8_MEMBER(blitter_cmd_w);
DECLARE_WRITE8_MEMBER(sound_latch_w); DECLARE_WRITE8_MEMBER(sound_latch_w);
DECLARE_WRITE8_MEMBER(ball_w); DECLARE_WRITE8_MEMBER(ball_w);
virtual void video_start(); virtual void video_start();
DECLARE_PALETTE_INIT(roul); DECLARE_PALETTE_INIT(roul);
UINT32 screen_update_roul(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu; UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_soundcpu;
}; };
@ -219,9 +223,13 @@ ADDRESS_MAP_END
void roul_state::video_start() void roul_state::video_start()
{ {
m_videobuf = auto_alloc_array_clear(machine(), UINT8, VIDEOBUF_SIZE); m_videobuf = auto_alloc_array_clear(machine(), UINT8, VIDEOBUF_SIZE);
save_item(NAME(m_reg));
save_pointer(NAME(m_videobuf), VIDEOBUF_SIZE);
save_item(NAME(m_lamp_old));
} }
UINT32 roul_state::screen_update_roul(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) UINT32 roul_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
int i,j; int i,j;
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
@ -300,7 +308,7 @@ static MACHINE_CONFIG_START( roul, roul_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(roul_state, screen_update_roul) MCFG_SCREEN_UPDATE_DRIVER(roul_state, screen_update)
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 0x100) MCFG_PALETTE_ADD("palette", 0x100)
@ -324,4 +332,4 @@ ROM_START(roul)
ROM_LOAD( "roul.u38", 0x0020, 0x0020, CRC(23ae22c1) SHA1(bf0383462976ec6341ffa8a173264ce820bc654a) ) ROM_LOAD( "roul.u38", 0x0020, 0x0020, CRC(23ae22c1) SHA1(bf0383462976ec6341ffa8a173264ce820bc654a) )
ROM_END ROM_END
GAMEL( 1990, roul, 0, roul, roul, driver_device, 0, ROT0, "bootleg", "Super Lucky Roulette", GAME_IMPERFECT_GRAPHICS, layout_roul ) GAMEL( 1990, roul, 0, roul, roul, driver_device, 0, ROT0, "bootleg", "Super Lucky Roulette", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE, layout_roul )

View File

@ -123,7 +123,6 @@ Stephh's notes (based on the games Z80 code and some tests) :
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "sound/3812intf.h" #include "sound/3812intf.h"
#include "sound/sp0256.h"
#include "includes/sauro.h" #include "includes/sauro.h"
#include "machine/nvram.h" #include "machine/nvram.h"
@ -141,13 +140,13 @@ READ8_MEMBER(sauro_state::sauro_sound_command_r)
return ret; return ret;
} }
WRITE8_MEMBER(sauro_state::sauro_coin1_w) WRITE8_MEMBER(sauro_state::coin1_w)
{ {
coin_counter_w(machine(), 0, data); coin_counter_w(machine(), 0, data);
coin_counter_w(machine(), 0, 0); // to get the coin counter working in sauro, as it doesn't write 0 coin_counter_w(machine(), 0, 0); // to get the coin counter working in sauro, as it doesn't write 0
} }
WRITE8_MEMBER(sauro_state::sauro_coin2_w) WRITE8_MEMBER(sauro_state::coin2_w)
{ {
coin_counter_w(machine(), 1, data); coin_counter_w(machine(), 1, data);
coin_counter_w(machine(), 1, 0); // to get the coin counter working in sauro, as it doesn't write 0 coin_counter_w(machine(), 1, 0); // to get the coin counter working in sauro, as it doesn't write 0
@ -167,10 +166,10 @@ static ADDRESS_MAP_START( sauro_map, AS_PROGRAM, 8, sauro_state )
AM_RANGE(0x0000, 0xdfff) AM_ROM AM_RANGE(0x0000, 0xdfff) AM_ROM
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(tecfri_videoram_w) AM_SHARE("videoram") AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(tecfri_colorram_w) AM_SHARE("colorram") AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(tecfri_videoram2_w) AM_SHARE("videoram2") AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(sauro_videoram2_w) AM_SHARE("videoram2")
AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(tecfri_colorram2_w) AM_SHARE("colorram2") AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(sauro_colorram2_w) AM_SHARE("colorram2")
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( sauro_io_map, AS_IO, 8, sauro_state ) static ADDRESS_MAP_START( sauro_io_map, AS_IO, 8, sauro_state )
@ -180,13 +179,13 @@ static ADDRESS_MAP_START( sauro_io_map, AS_IO, 8, sauro_state )
AM_RANGE(0x40, 0x40) AM_READ_PORT("P1") AM_RANGE(0x40, 0x40) AM_READ_PORT("P1")
AM_RANGE(0x60, 0x60) AM_READ_PORT("P2") AM_RANGE(0x60, 0x60) AM_READ_PORT("P2")
AM_RANGE(0x80, 0x80) AM_WRITE(sauro_sound_command_w) AM_RANGE(0x80, 0x80) AM_WRITE(sauro_sound_command_w)
AM_RANGE(0xa0, 0xa0) AM_WRITE(tecfri_scroll_bg_w) AM_RANGE(0xa0, 0xa0) AM_WRITE(scroll_bg_w)
AM_RANGE(0xa1, 0xa1) AM_WRITE(sauro_scroll_fg_w) AM_RANGE(0xa1, 0xa1) AM_WRITE(sauro_scroll_fg_w)
AM_RANGE(0xc0, 0xc0) AM_WRITE(flip_screen_w) AM_RANGE(0xc0, 0xc0) AM_WRITE(flip_screen_w)
AM_RANGE(0xc2, 0xc2) AM_WRITENOP /* coin reset */ AM_RANGE(0xc2, 0xc2) AM_WRITENOP /* coin reset */
AM_RANGE(0xc3, 0xc3) AM_WRITE(sauro_coin1_w) AM_RANGE(0xc3, 0xc3) AM_WRITE(coin1_w)
AM_RANGE(0xc4, 0xc4) AM_WRITENOP /* coin reset */ AM_RANGE(0xc4, 0xc4) AM_WRITENOP /* coin reset */
AM_RANGE(0xc5, 0xc5) AM_WRITE(sauro_coin2_w) AM_RANGE(0xc5, 0xc5) AM_WRITE(coin2_w)
AM_RANGE(0xc6, 0xc7) AM_WRITENOP /* same as 0x80 - verified with debugger */ AM_RANGE(0xc6, 0xc7) AM_WRITENOP /* same as 0x80 - verified with debugger */
AM_RANGE(0xc8, 0xc8) AM_WRITENOP /* written every int: 0 written at end of isr */ AM_RANGE(0xc8, 0xc8) AM_WRITENOP /* written every int: 0 written at end of isr */
AM_RANGE(0xc9, 0xc9) AM_WRITENOP /* written every int: 1 written at start of isr */ AM_RANGE(0xc9, 0xc9) AM_WRITENOP /* written every int: 1 written at start of isr */
@ -213,19 +212,19 @@ static ADDRESS_MAP_START( trckydoc_map, AS_PROGRAM, 8, sauro_state )
AM_RANGE(0x0000, 0xdfff) AM_ROM AM_RANGE(0x0000, 0xdfff) AM_ROM
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe800, 0xebff) AM_RAM AM_MIRROR(0x400) AM_SHARE("spriteram") AM_RANGE(0xe800, 0xebff) AM_RAM AM_MIRROR(0x400) AM_SHARE("spriteram")
AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(tecfri_videoram_w) AM_SHARE("videoram") AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(tecfri_colorram_w) AM_SHARE("colorram") AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW1") AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW1")
AM_RANGE(0xf808, 0xf808) AM_READ_PORT("DSW2") AM_RANGE(0xf808, 0xf808) AM_READ_PORT("DSW2")
AM_RANGE(0xf810, 0xf810) AM_READ_PORT("P1") AM_RANGE(0xf810, 0xf810) AM_READ_PORT("P1")
AM_RANGE(0xf818, 0xf818) AM_READ_PORT("P2") AM_RANGE(0xf818, 0xf818) AM_READ_PORT("P2")
AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ymsnd", ym3812_device, write) AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ymsnd", ym3812_device, write)
AM_RANGE(0xf828, 0xf828) AM_READ(watchdog_reset_r) AM_RANGE(0xf828, 0xf828) AM_READ(watchdog_reset_r)
AM_RANGE(0xf830, 0xf830) AM_WRITE(tecfri_scroll_bg_w) AM_RANGE(0xf830, 0xf830) AM_WRITE(scroll_bg_w)
AM_RANGE(0xf838, 0xf838) AM_WRITENOP /* only written at startup */ AM_RANGE(0xf838, 0xf838) AM_WRITENOP /* only written at startup */
AM_RANGE(0xf839, 0xf839) AM_WRITE(flip_screen_w) AM_RANGE(0xf839, 0xf839) AM_WRITE(flip_screen_w)
AM_RANGE(0xf83a, 0xf83a) AM_WRITE(sauro_coin1_w) AM_RANGE(0xf83a, 0xf83a) AM_WRITE(coin1_w)
AM_RANGE(0xf83b, 0xf83b) AM_WRITE(sauro_coin2_w) AM_RANGE(0xf83b, 0xf83b) AM_WRITE(coin2_w)
AM_RANGE(0xf83c, 0xf83c) AM_WRITE(watchdog_reset_w) AM_RANGE(0xf83c, 0xf83c) AM_WRITE(watchdog_reset_w)
AM_RANGE(0xf83f, 0xf83f) AM_WRITENOP /* only written at startup */ AM_RANGE(0xf83f, 0xf83f) AM_WRITENOP /* only written at startup */
ADDRESS_MAP_END ADDRESS_MAP_END
@ -583,9 +582,9 @@ DRIVER_INIT_MEMBER(sauro_state,tecfri)
RAM[0xe000] = 1; RAM[0xe000] = 1;
} }
GAME( 1987, sauro, 0, sauro, tecfri, sauro_state, tecfri, ROT0, "Tecfri", "Sauro", 0 ) GAME( 1987, sauro, 0, sauro, tecfri, sauro_state, tecfri, ROT0, "Tecfri", "Sauro", GAME_SUPPORTS_SAVE )
GAME( 1987, saurop, sauro, sauro, tecfri, sauro_state, tecfri, ROT0, "Tecfri (Philko license)", "Sauro (Philko license)", 0 ) GAME( 1987, saurop, sauro, sauro, tecfri, sauro_state, tecfri, ROT0, "Tecfri (Philko license)", "Sauro (Philko license)", GAME_SUPPORTS_SAVE )
GAME( 1987, saurorr, sauro, sauro, tecfri, sauro_state, tecfri, ROT0, "Tecfri (Recreativos Real S.A. license)","Sauro (Recreativos Real S.A. license)", 0 ) GAME( 1987, saurorr, sauro, sauro, tecfri, sauro_state, tecfri, ROT0, "Tecfri (Recreativos Real S.A. license)","Sauro (Recreativos Real S.A. license)", GAME_SUPPORTS_SAVE )
GAME( 1987, trckydoc, 0, trckydoc, tecfri, sauro_state, tecfri, ROT0, "Tecfri", "Tricky Doc (set 1)", 0 ) GAME( 1987, trckydoc, 0, trckydoc, tecfri, sauro_state, tecfri, ROT0, "Tecfri", "Tricky Doc (set 1)", GAME_SUPPORTS_SAVE )
GAME( 1987, trckydoca,trckydoc, trckydoc, trckydoca, sauro_state, tecfri, ROT0, "Tecfri", "Tricky Doc (set 2)", 0 ) GAME( 1987, trckydoca,trckydoc, trckydoc, trckydoca, sauro_state, tecfri, ROT0, "Tecfri", "Tricky Doc (set 2)", GAME_SUPPORTS_SAVE )

View File

@ -7,17 +7,21 @@ class sauro_state : public driver_device
public: public:
sauro_state(const machine_config &mconfig, device_type type, const char *tag) sauro_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_sp0256(*this, "speech"), m_sp0256(*this, "speech"),
m_spriteram(*this, "spriteram"), m_spriteram(*this, "spriteram"),
m_videoram(*this, "videoram"), m_videoram(*this, "videoram"),
m_colorram(*this, "colorram"), m_colorram(*this, "colorram"),
m_videoram2(*this, "videoram2"), m_videoram2(*this, "videoram2"),
m_colorram2(*this, "colorram2"), m_colorram2(*this, "colorram2") { }
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
optional_device<sp0256_device> m_sp0256; optional_device<sp0256_device> m_sp0256;
required_shared_ptr<UINT8> m_spriteram; required_shared_ptr<UINT8> m_spriteram;
required_shared_ptr<UINT8> m_videoram; required_shared_ptr<UINT8> m_videoram;
required_shared_ptr<UINT8> m_colorram; required_shared_ptr<UINT8> m_colorram;
@ -27,29 +31,33 @@ public:
tilemap_t *m_bg_tilemap; tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap; tilemap_t *m_fg_tilemap;
UINT8 m_palette_bank; UINT8 m_palette_bank;
// common
DECLARE_WRITE8_MEMBER(coin1_w);
DECLARE_WRITE8_MEMBER(coin2_w);
DECLARE_WRITE8_MEMBER(flip_screen_w);
DECLARE_WRITE8_MEMBER(videoram_w);
DECLARE_WRITE8_MEMBER(colorram_w);
DECLARE_WRITE8_MEMBER(scroll_bg_w);
// sauro specific
DECLARE_WRITE8_MEMBER(sauro_sound_command_w); DECLARE_WRITE8_MEMBER(sauro_sound_command_w);
DECLARE_READ8_MEMBER(sauro_sound_command_r); DECLARE_READ8_MEMBER(sauro_sound_command_r);
DECLARE_WRITE8_MEMBER(sauro_coin1_w);
DECLARE_WRITE8_MEMBER(sauro_coin2_w);
DECLARE_WRITE8_MEMBER(flip_screen_w);
DECLARE_WRITE8_MEMBER(tecfri_videoram_w);
DECLARE_WRITE8_MEMBER(tecfri_colorram_w);
DECLARE_WRITE8_MEMBER(tecfri_videoram2_w);
DECLARE_WRITE8_MEMBER(tecfri_colorram2_w);
DECLARE_WRITE8_MEMBER(tecfri_scroll_bg_w);
DECLARE_WRITE8_MEMBER(sauro_palette_bank_w); DECLARE_WRITE8_MEMBER(sauro_palette_bank_w);
DECLARE_WRITE8_MEMBER(sauro_scroll_fg_w); DECLARE_WRITE8_MEMBER(sauro_scroll_fg_w);
DECLARE_WRITE8_MEMBER(sauro_videoram2_w);
DECLARE_WRITE8_MEMBER(sauro_colorram2_w);
DECLARE_WRITE8_MEMBER(adpcm_w); DECLARE_WRITE8_MEMBER(adpcm_w);
DECLARE_DRIVER_INIT(tecfri);
TILE_GET_INFO_MEMBER(get_tile_info_bg); TILE_GET_INFO_MEMBER(get_tile_info_bg);
TILE_GET_INFO_MEMBER(get_tile_info_fg); TILE_GET_INFO_MEMBER(get_tile_info_fg);
DECLARE_DRIVER_INIT(tecfri);
DECLARE_VIDEO_START(trckydoc); DECLARE_VIDEO_START(trckydoc);
DECLARE_VIDEO_START(sauro); DECLARE_VIDEO_START(sauro);
UINT32 screen_update_trckydoc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_trckydoc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_sauro(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_sauro(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void sauro_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); void sauro_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
void trckydoc_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); void trckydoc_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
}; };

View File

@ -1,6 +1,6 @@
/*************************************************************************** /***************************************************************************
video.c sauro.c
Functions to emulate the video hardware of the machine. Functions to emulate the video hardware of the machine.
@ -11,31 +11,31 @@
/* General */ /* General */
WRITE8_MEMBER(sauro_state::tecfri_videoram_w) WRITE8_MEMBER(sauro_state::videoram_w)
{ {
m_videoram[offset] = data; m_videoram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset); m_bg_tilemap->mark_tile_dirty(offset);
} }
WRITE8_MEMBER(sauro_state::tecfri_colorram_w) WRITE8_MEMBER(sauro_state::colorram_w)
{ {
m_colorram[offset] = data; m_colorram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset); m_bg_tilemap->mark_tile_dirty(offset);
} }
WRITE8_MEMBER(sauro_state::tecfri_videoram2_w) WRITE8_MEMBER(sauro_state::sauro_videoram2_w)
{ {
m_videoram2[offset] = data; m_videoram2[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset); m_fg_tilemap->mark_tile_dirty(offset);
} }
WRITE8_MEMBER(sauro_state::tecfri_colorram2_w) WRITE8_MEMBER(sauro_state::sauro_colorram2_w)
{ {
m_colorram2[offset] = data; m_colorram2[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset); m_fg_tilemap->mark_tile_dirty(offset);
} }
WRITE8_MEMBER(sauro_state::tecfri_scroll_bg_w) WRITE8_MEMBER(sauro_state::scroll_bg_w)
{ {
m_bg_tilemap->set_scrollx(0, data); m_bg_tilemap->set_scrollx(0, data);
} }
@ -87,6 +87,8 @@ VIDEO_START_MEMBER(sauro_state,sauro)
m_fg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0);
m_palette_bank = 0; m_palette_bank = 0;
save_item(NAME(m_palette_bank));
} }
void sauro_state::sauro_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) void sauro_state::sauro_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)