Previous 199869 Revisions Next

r37091 Friday 10th April, 2015 at 17:06:23 UTC by Osso
rotaryf.c, roul.c, sauro.c: added save state support (nw)
[src/mame/drivers]rotaryf.c roul.c sauro.c
[src/mame/includes]sauro.h
[src/mame/video]sauro.c

trunk/src/mame/drivers/rotaryf.c
r245602r245603
2323   rotaryf_state(const machine_config &mconfig, device_type type, const char *tag)
2424      : driver_device(mconfig, type, tag),
2525      m_maincpu(*this,"maincpu"),
26      m_videoram(*this, "videoram"),
2726      m_samples(*this, "samples"),
28      m_sn(*this, "snsnd")
27      m_sn(*this, "snsnd"),
28      m_videoram(*this, "videoram")
2929   { }
3030
31   required_device<cpu_device> m_maincpu;
32   required_device<samples_device> m_samples;
33   required_device<sn76477_device> m_sn;
34
35   required_shared_ptr<UINT8> m_videoram;
36
3137   DECLARE_READ8_MEMBER(port29_r);
3238   DECLARE_WRITE8_MEMBER(port28_w);
3339   DECLARE_WRITE8_MEMBER(port30_w);
40
3441   bool m_flipscreen;
3542   UINT8 m_last;
36   required_device<cpu_device> m_maincpu;
37   required_shared_ptr<UINT8> m_videoram;
38   required_device<samples_device> m_samples;
39   required_device<sn76477_device> m_sn;
40   UINT32 screen_update_rotaryf(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
43   
44   virtual void machine_start();
45
46   UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
47   
4148   TIMER_DEVICE_CALLBACK_MEMBER(rotaryf_interrupt);
4249};
4350
r245602r245603
5865};
5966
6067
68void rotaryf_state::machine_start()
69{
70   save_item(NAME(m_flipscreen));
71   save_item(NAME(m_last));
72}
73
6174READ8_MEMBER( rotaryf_state::port29_r )
6275{
6376   UINT8 data = ioport("INPUTS")->read();
r245602r245603
126139 *
127140 *************************************/
128141
129UINT32 rotaryf_state::screen_update_rotaryf(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
142UINT32 rotaryf_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
130143{
131144   offs_t offs;
132145   pen_t pens[2];
r245602r245603
238251   MCFG_SCREEN_SIZE(32*8, 262)     /* vert size is a guess, taken from mw8080bw */
239252   MCFG_SCREEN_VISIBLE_AREA(1*8, 30*8-1, 0*8, 32*8-1)
240253   MCFG_SCREEN_REFRESH_RATE(60)
241   MCFG_SCREEN_UPDATE_DRIVER(rotaryf_state, screen_update_rotaryf)
254   MCFG_SCREEN_UPDATE_DRIVER(rotaryf_state, screen_update)
242255
243256   MCFG_SPEAKER_STANDARD_MONO("mono")
244257
r245602r245603
276289ROM_END
277290
278291
279GAME( 1979, rotaryf, 0, rotaryf, rotaryf, driver_device, 0, ROT270, "Kasco", "Rotary Fighter", GAME_IMPERFECT_SOUND )
292GAME( 1979, rotaryf, 0, rotaryf, rotaryf, driver_device, 0, ROT270, "Kasco", "Rotary Fighter", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/roul.c
r245602r245603
2222Z80 x2
2323Altera Ep1810LC-45
242420.000 MHz crystal
25video 464p10 x4 (board silcksreeend 4416)
25video 464p10 x4 (board silkscreened 4416)
2626AY-3-8912A
2727
2828ROM text showed SUPER LUCKY ROULETTE LEISURE ENT
r245602r245603
7777      m_maincpu(*this, "maincpu"),
7878      m_soundcpu(*this, "soundcpu") { }
7979
80   required_device<cpu_device> m_maincpu;
81   required_device<cpu_device> m_soundcpu;
82   
8083   UINT8 m_reg[0x10];
8184   UINT8 *m_videobuf;
8285   UINT8 m_lamp_old;
86   
8387   DECLARE_READ8_MEMBER(blitter_status_r);
8488   DECLARE_WRITE8_MEMBER(blitter_cmd_w);
8589   DECLARE_WRITE8_MEMBER(sound_latch_w);
8690   DECLARE_WRITE8_MEMBER(ball_w);
91   
8792   virtual void video_start();
8893   DECLARE_PALETTE_INIT(roul);
89   UINT32 screen_update_roul(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
90   required_device<cpu_device> m_maincpu;
91   required_device<cpu_device> m_soundcpu;
94   
95   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
9296};
9397
9498
r245602r245603
219223void roul_state::video_start()
220224{
221225   m_videobuf = auto_alloc_array_clear(machine(), UINT8, VIDEOBUF_SIZE);
226   
227   save_item(NAME(m_reg));
228   save_pointer(NAME(m_videobuf), VIDEOBUF_SIZE);
229   save_item(NAME(m_lamp_old));
222230}
223231
224UINT32 roul_state::screen_update_roul(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
232UINT32 roul_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
225233{
226234   int i,j;
227235   for (i = 0; i < 256; i++)
r245602r245603
300308   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
301309   MCFG_SCREEN_SIZE(32*8, 32*8)
302310   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
303   MCFG_SCREEN_UPDATE_DRIVER(roul_state, screen_update_roul)
311   MCFG_SCREEN_UPDATE_DRIVER(roul_state, screen_update)
304312   MCFG_SCREEN_PALETTE("palette")
305313
306314   MCFG_PALETTE_ADD("palette", 0x100)
r245602r245603
324332   ROM_LOAD( "roul.u38",   0x0020, 0x0020, CRC(23ae22c1) SHA1(bf0383462976ec6341ffa8a173264ce820bc654a) )
325333ROM_END
326334
327GAMEL( 1990, roul,  0,   roul, roul, driver_device, 0, ROT0, "bootleg", "Super Lucky Roulette", GAME_IMPERFECT_GRAPHICS, layout_roul )
335GAMEL( 1990, roul,  0,   roul, roul, driver_device, 0, ROT0, "bootleg", "Super Lucky Roulette", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE, layout_roul )
trunk/src/mame/drivers/sauro.c
r245602r245603
123123#include "emu.h"
124124#include "cpu/z80/z80.h"
125125#include "sound/3812intf.h"
126#include "sound/sp0256.h"
127126#include "includes/sauro.h"
128127#include "machine/nvram.h"
129128
r245602r245603
141140   return ret;
142141}
143142
144WRITE8_MEMBER(sauro_state::sauro_coin1_w)
143WRITE8_MEMBER(sauro_state::coin1_w)
145144{
146145   coin_counter_w(machine(), 0, data);
147146   coin_counter_w(machine(), 0, 0); // to get the coin counter working in sauro, as it doesn't write 0
148147}
149148
150WRITE8_MEMBER(sauro_state::sauro_coin2_w)
149WRITE8_MEMBER(sauro_state::coin2_w)
151150{
152151   coin_counter_w(machine(), 1, data);
153152   coin_counter_w(machine(), 1, 0); // to get the coin counter working in sauro, as it doesn't write 0
r245602r245603
167166   AM_RANGE(0x0000, 0xdfff) AM_ROM
168167   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
169168   AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram")
170   AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(tecfri_videoram_w) AM_SHARE("videoram")
171   AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(tecfri_colorram_w) AM_SHARE("colorram")
172   AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(tecfri_videoram2_w) AM_SHARE("videoram2")
173   AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(tecfri_colorram2_w) AM_SHARE("colorram2")
169   AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
170   AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
171   AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(sauro_videoram2_w) AM_SHARE("videoram2")
172   AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(sauro_colorram2_w) AM_SHARE("colorram2")
174173ADDRESS_MAP_END
175174
176175static ADDRESS_MAP_START( sauro_io_map, AS_IO, 8, sauro_state )
r245602r245603
180179   AM_RANGE(0x40, 0x40) AM_READ_PORT("P1")
181180   AM_RANGE(0x60, 0x60) AM_READ_PORT("P2")
182181   AM_RANGE(0x80, 0x80) AM_WRITE(sauro_sound_command_w)
183   AM_RANGE(0xa0, 0xa0) AM_WRITE(tecfri_scroll_bg_w)
182   AM_RANGE(0xa0, 0xa0) AM_WRITE(scroll_bg_w)
184183   AM_RANGE(0xa1, 0xa1) AM_WRITE(sauro_scroll_fg_w)
185184   AM_RANGE(0xc0, 0xc0) AM_WRITE(flip_screen_w)
186185   AM_RANGE(0xc2, 0xc2) AM_WRITENOP        /* coin reset */
187   AM_RANGE(0xc3, 0xc3) AM_WRITE(sauro_coin1_w)
186   AM_RANGE(0xc3, 0xc3) AM_WRITE(coin1_w)
188187   AM_RANGE(0xc4, 0xc4) AM_WRITENOP        /* coin reset */
189   AM_RANGE(0xc5, 0xc5) AM_WRITE(sauro_coin2_w)
188   AM_RANGE(0xc5, 0xc5) AM_WRITE(coin2_w)
190189   AM_RANGE(0xc6, 0xc7) AM_WRITENOP        /* same as 0x80 - verified with debugger */
191190   AM_RANGE(0xc8, 0xc8) AM_WRITENOP        /* written every int: 0 written at end   of isr */
192191   AM_RANGE(0xc9, 0xc9) AM_WRITENOP        /* written every int: 1 written at start of isr */
r245602r245603
213212   AM_RANGE(0x0000, 0xdfff) AM_ROM
214213   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
215214   AM_RANGE(0xe800, 0xebff) AM_RAM AM_MIRROR(0x400) AM_SHARE("spriteram")
216   AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(tecfri_videoram_w) AM_SHARE("videoram")
217   AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(tecfri_colorram_w) AM_SHARE("colorram")
215   AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
216   AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
218217   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW1")
219218   AM_RANGE(0xf808, 0xf808) AM_READ_PORT("DSW2")
220219   AM_RANGE(0xf810, 0xf810) AM_READ_PORT("P1")
221220   AM_RANGE(0xf818, 0xf818) AM_READ_PORT("P2")
222221   AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ymsnd", ym3812_device, write)
223222   AM_RANGE(0xf828, 0xf828) AM_READ(watchdog_reset_r)
224   AM_RANGE(0xf830, 0xf830) AM_WRITE(tecfri_scroll_bg_w)
223   AM_RANGE(0xf830, 0xf830) AM_WRITE(scroll_bg_w)
225224   AM_RANGE(0xf838, 0xf838) AM_WRITENOP                /* only written at startup */
226225   AM_RANGE(0xf839, 0xf839) AM_WRITE(flip_screen_w)
227   AM_RANGE(0xf83a, 0xf83a) AM_WRITE(sauro_coin1_w)
228   AM_RANGE(0xf83b, 0xf83b) AM_WRITE(sauro_coin2_w)
226   AM_RANGE(0xf83a, 0xf83a) AM_WRITE(coin1_w)
227   AM_RANGE(0xf83b, 0xf83b) AM_WRITE(coin2_w)
229228   AM_RANGE(0xf83c, 0xf83c) AM_WRITE(watchdog_reset_w)
230229   AM_RANGE(0xf83f, 0xf83f) AM_WRITENOP                /* only written at startup */
231230ADDRESS_MAP_END
r245602r245603
583582   RAM[0xe000] = 1;
584583}
585584
586GAME( 1987, sauro,    0,        sauro,    tecfri, sauro_state,    tecfri, ROT0, "Tecfri",                                "Sauro", 0 )
587GAME( 1987, saurop,   sauro,    sauro,    tecfri, sauro_state,    tecfri, ROT0, "Tecfri (Philko license)",               "Sauro (Philko license)", 0 )
588GAME( 1987, saurorr,  sauro,    sauro,    tecfri, sauro_state,    tecfri, ROT0, "Tecfri (Recreativos Real S.A. license)","Sauro (Recreativos Real S.A. license)", 0 )
585GAME( 1987, sauro,    0,        sauro,    tecfri, sauro_state,    tecfri, ROT0, "Tecfri",                                "Sauro", GAME_SUPPORTS_SAVE )
586GAME( 1987, saurop,   sauro,    sauro,    tecfri, sauro_state,    tecfri, ROT0, "Tecfri (Philko license)",               "Sauro (Philko license)", GAME_SUPPORTS_SAVE )
587GAME( 1987, saurorr,  sauro,    sauro,    tecfri, sauro_state,    tecfri, ROT0, "Tecfri (Recreativos Real S.A. license)","Sauro (Recreativos Real S.A. license)", GAME_SUPPORTS_SAVE )
589588
590GAME( 1987, trckydoc, 0,        trckydoc, tecfri, sauro_state,    tecfri, ROT0, "Tecfri", "Tricky Doc (set 1)", 0 )
591GAME( 1987, trckydoca,trckydoc, trckydoc, trckydoca, sauro_state, tecfri, ROT0, "Tecfri", "Tricky Doc (set 2)", 0 )
589GAME( 1987, trckydoc, 0,        trckydoc, tecfri, sauro_state,    tecfri, ROT0, "Tecfri", "Tricky Doc (set 1)", GAME_SUPPORTS_SAVE )
590GAME( 1987, trckydoca,trckydoc, trckydoc, trckydoca, sauro_state, tecfri, ROT0, "Tecfri", "Tricky Doc (set 2)", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/sauro.h
r245602r245603
77public:
88   sauro_state(const machine_config &mconfig, device_type type, const char *tag)
99      : driver_device(mconfig, type, tag),
10      m_maincpu(*this, "maincpu"),
11      m_gfxdecode(*this, "gfxdecode"),
12      m_palette(*this, "palette"),
1013      m_sp0256(*this, "speech"),
1114      m_spriteram(*this, "spriteram"),
1215      m_videoram(*this, "videoram"),
1316      m_colorram(*this, "colorram"),
1417      m_videoram2(*this, "videoram2"),
15      m_colorram2(*this, "colorram2"),
16      m_maincpu(*this, "maincpu"),
17      m_gfxdecode(*this, "gfxdecode"),
18      m_palette(*this, "palette") { }
18      m_colorram2(*this, "colorram2") { }
1919
20   required_device<cpu_device> m_maincpu;
21   required_device<gfxdecode_device> m_gfxdecode;
22   required_device<palette_device> m_palette;
2023   optional_device<sp0256_device> m_sp0256;
24
2125   required_shared_ptr<UINT8> m_spriteram;
2226   required_shared_ptr<UINT8> m_videoram;
2327   required_shared_ptr<UINT8> m_colorram;
r245602r245603
2731   tilemap_t *m_bg_tilemap;
2832   tilemap_t *m_fg_tilemap;
2933   UINT8 m_palette_bank;
34
35   // common
36   DECLARE_WRITE8_MEMBER(coin1_w);
37   DECLARE_WRITE8_MEMBER(coin2_w);
38   DECLARE_WRITE8_MEMBER(flip_screen_w);
39   DECLARE_WRITE8_MEMBER(videoram_w);
40   DECLARE_WRITE8_MEMBER(colorram_w);
41   DECLARE_WRITE8_MEMBER(scroll_bg_w);
42
43   // sauro specific
3044   DECLARE_WRITE8_MEMBER(sauro_sound_command_w);
3145   DECLARE_READ8_MEMBER(sauro_sound_command_r);
32   DECLARE_WRITE8_MEMBER(sauro_coin1_w);
33   DECLARE_WRITE8_MEMBER(sauro_coin2_w);
34   DECLARE_WRITE8_MEMBER(flip_screen_w);
35   DECLARE_WRITE8_MEMBER(tecfri_videoram_w);
36   DECLARE_WRITE8_MEMBER(tecfri_colorram_w);
37   DECLARE_WRITE8_MEMBER(tecfri_videoram2_w);
38   DECLARE_WRITE8_MEMBER(tecfri_colorram2_w);
39   DECLARE_WRITE8_MEMBER(tecfri_scroll_bg_w);
4046   DECLARE_WRITE8_MEMBER(sauro_palette_bank_w);
4147   DECLARE_WRITE8_MEMBER(sauro_scroll_fg_w);
48   DECLARE_WRITE8_MEMBER(sauro_videoram2_w);
49   DECLARE_WRITE8_MEMBER(sauro_colorram2_w);
4250   DECLARE_WRITE8_MEMBER(adpcm_w);
43   DECLARE_DRIVER_INIT(tecfri);
51
4452   TILE_GET_INFO_MEMBER(get_tile_info_bg);
4553   TILE_GET_INFO_MEMBER(get_tile_info_fg);
54
55   DECLARE_DRIVER_INIT(tecfri);
4656   DECLARE_VIDEO_START(trckydoc);
4757   DECLARE_VIDEO_START(sauro);
58
4859   UINT32 screen_update_trckydoc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4960   UINT32 screen_update_sauro(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5061   void sauro_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
5162   void trckydoc_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
52   required_device<cpu_device> m_maincpu;
53   required_device<gfxdecode_device> m_gfxdecode;
54   required_device<palette_device> m_palette;
5563};
trunk/src/mame/video/sauro.c
r245602r245603
11/***************************************************************************
22
3  video.c
3  sauro.c
44
55  Functions to emulate the video hardware of the machine.
66
r245602r245603
1111
1212/* General */
1313
14WRITE8_MEMBER(sauro_state::tecfri_videoram_w)
14WRITE8_MEMBER(sauro_state::videoram_w)
1515{
1616   m_videoram[offset] = data;
1717   m_bg_tilemap->mark_tile_dirty(offset);
1818}
1919
20WRITE8_MEMBER(sauro_state::tecfri_colorram_w)
20WRITE8_MEMBER(sauro_state::colorram_w)
2121{
2222   m_colorram[offset] = data;
2323   m_bg_tilemap->mark_tile_dirty(offset);
2424}
2525
26WRITE8_MEMBER(sauro_state::tecfri_videoram2_w)
26WRITE8_MEMBER(sauro_state::sauro_videoram2_w)
2727{
2828   m_videoram2[offset] = data;
2929   m_fg_tilemap->mark_tile_dirty(offset);
3030}
3131
32WRITE8_MEMBER(sauro_state::tecfri_colorram2_w)
32WRITE8_MEMBER(sauro_state::sauro_colorram2_w)
3333{
3434   m_colorram2[offset] = data;
3535   m_fg_tilemap->mark_tile_dirty(offset);
3636}
3737
38WRITE8_MEMBER(sauro_state::tecfri_scroll_bg_w)
38WRITE8_MEMBER(sauro_state::scroll_bg_w)
3939{
4040   m_bg_tilemap->set_scrollx(0, data);
4141}
r245602r245603
8787
8888   m_fg_tilemap->set_transparent_pen(0);
8989   m_palette_bank = 0;
90   
91   save_item(NAME(m_palette_bank));
9092}
9193
9294void sauro_state::sauro_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)


Previous 199869 Revisions Next


© 1997-2024 The MAME Team