Previous 199869 Revisions Next

r36588 Monday 23rd March, 2015 at 18:17:48 UTC by Osso
re900.c, ssrj.c, sstrangr.c: added save state support (nw)
[src/mame/drivers]re900.c ssrj.c sstrangr.c
[src/mame/includes]ssrj.h
[src/mame/video]ssrj.c

trunk/src/mame/drivers/re900.c
r245099r245100
8787public:
8888   re900_state(const machine_config &mconfig, device_type type, const char *tag)
8989      : driver_device(mconfig, type, tag),
90      m_rom(*this, "rom"),
91      m_maincpu(*this, "maincpu") { }
90      m_maincpu(*this, "maincpu"),
91      m_rom(*this, "rom") { }
9292
93   required_device<cpu_device> m_maincpu;
94
9395   required_shared_ptr<UINT8> m_rom;
96
97   // re900 specific
9498   UINT8 m_psg_pa;
9599   UINT8 m_psg_pb;
96100   UINT8 m_mux_data;
97101   UINT8 m_ledant;
98102   UINT8 m_player;
99103   UINT8 m_stat_a;
104   
105   // common
100106   DECLARE_READ8_MEMBER(rom_r);
101107   DECLARE_WRITE8_MEMBER(cpu_port_0_w);
102   DECLARE_WRITE8_MEMBER(re900_watchdog_reset_w);
108   DECLARE_WRITE8_MEMBER(watchdog_reset_w);
109   
110   // re900 specific
103111   DECLARE_READ8_MEMBER(re_psg_portA_r);
104112   DECLARE_READ8_MEMBER(re_psg_portB_r);
105113   DECLARE_WRITE8_MEMBER(re_mux_port_A_w);
106114   DECLARE_WRITE8_MEMBER(re_mux_port_B_w);
107   DECLARE_WRITE_LINE_MEMBER(vdp_interrupt);
115   
108116   DECLARE_DRIVER_INIT(re900);
109   required_device<cpu_device> m_maincpu;
110117};
111118
112119
r245099r245100
219226//  output_set_lamp_value(8,1 ^ ( (data >> 5) & 1)); /* Cont. Ent */
220227}
221228
222WRITE8_MEMBER(re900_state::re900_watchdog_reset_w)
229WRITE8_MEMBER(re900_state::watchdog_reset_w)
223230{
224231   //watchdog_reset_w(space,0,0); /* To do! */
225232}
r245099r245100
240247   AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("tms9128", tms9928a_device, register_write)
241248   AM_RANGE(0xe800, 0xe801) AM_DEVWRITE("ay_re900", ay8910_device, address_data_w)
242249   AM_RANGE(0xe802, 0xe802) AM_DEVREAD("ay_re900", ay8910_device, data_r)
243   AM_RANGE(0xe000, 0xefff) AM_WRITE(re900_watchdog_reset_w)
250   AM_RANGE(0xe000, 0xefff) AM_WRITE(watchdog_reset_w)
244251   AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P0) AM_WRITE(cpu_port_0_w)
245252   AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_NOP
246253   AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_NOP
247254ADDRESS_MAP_END
248255
249256
250WRITE_LINE_MEMBER(re900_state::vdp_interrupt)
251{
252   m_maincpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE );
253}
254
255
256257/************************
257258*      Input ports      *
258259************************/
r245099r245100
380381   /* video hardware */
381382   MCFG_DEVICE_ADD( "tms9128", TMS9128, XTAL_10_738635MHz / 2 )   /* TMS9128NL on the board */
382383   MCFG_TMS9928A_VRAM_SIZE(0x4000)
383   MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(re900_state, vdp_interrupt))
384   MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
384385   MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" )
385386   MCFG_SCREEN_UPDATE_DEVICE( "tms9128", tms9128_device, screen_update )
386387
r245099r245100
431432   m_player = 1;
432433   m_stat_a = 1;
433434   m_psg_pa = m_psg_pb = m_mux_data = m_ledant = 0;
435   
436   save_item(NAME(m_psg_pa));
437   save_item(NAME(m_psg_pb));
438   save_item(NAME(m_mux_data));
439   save_item(NAME(m_ledant));
440   save_item(NAME(m_player));
441   save_item(NAME(m_stat_a));
434442}
435443
436444
r245099r245100
439447*************************/
440448
441449/*     YEAR  NAME   PARENT MACHINE INPUT  INIT   ROT     COMPANY                    FULLNAME            FLAGS LAYOUT */
442GAMEL( 1993, re900, 0,     re900,  re900, re900_state, re900, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-900",    0,    layout_re900)
443GAME ( 1994, bs94 , 0,     bs94,   bs94 , re900_state, re900, ROT0,  "Entretenimientos GEMINIS", "Buena Suerte '94", 0)
450GAMEL( 1993, re900, 0,     re900,  re900, re900_state,   re900, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-900",    GAME_SUPPORTS_SAVE,    layout_re900)
451GAME ( 1994, bs94 , 0,     bs94,   bs94 , driver_device, 0,     ROT0,  "Entretenimientos GEMINIS", "Buena Suerte '94", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/ssrj.c
r245099r245100
2121  f800      ??
2222
2323 Scroll RAM contains x and y offsets for each tileline,
24 as well as other data (priroities ? additional flags ?)
25 All moving obejcts (cars, etc) are displayed on tilemap 3.
24 as well as other data (priorities ? additional flags ?)
25 All moving objects (cars, etc) are displayed on tilemap 3.
2626
2727 ------------------------------------
2828 Cheat :  $e210 - timer
r245099r245100
3434#include "sound/ay8910.h"
3535#include "includes/ssrj.h"
3636
37void ssrj_state::machine_start()
38{
39   save_item(NAME(m_oldport));
40}
41
3742void ssrj_state::machine_reset()
3843{
3944   UINT8 *rom = memregion("maincpu")->base();
r245099r245100
4247   m_oldport = 0x80;
4348}
4449
45READ8_MEMBER(ssrj_state::ssrj_wheel_r)
50READ8_MEMBER(ssrj_state::wheel_r)
4651{
4752   int port = ioport("IN1")->read() - 0x80;
4853   int retval = port - m_oldport;
r245099r245100
5358
5459static ADDRESS_MAP_START( ssrj_map, AS_PROGRAM, 8, ssrj_state )
5560   AM_RANGE(0x0000, 0x7fff) AM_ROM
56   AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(ssrj_vram1_w) AM_SHARE("vram1")
57   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(ssrj_vram2_w) AM_SHARE("vram2")
61   AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(vram1_w) AM_SHARE("vram1")
62   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(vram2_w) AM_SHARE("vram2")
5863   AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("vram3")
59   AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(ssrj_vram4_w) AM_SHARE("vram4")
64   AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(vram4_w) AM_SHARE("vram4")
6065   AM_RANGE(0xe000, 0xe7ff) AM_RAM
6166   AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("scrollram")
6267   AM_RANGE(0xf000, 0xf000) AM_READ_PORT("IN0")
63   AM_RANGE(0xf001, 0xf001) AM_READ(ssrj_wheel_r)
68   AM_RANGE(0xf001, 0xf001) AM_READ(wheel_r)
6469   AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN2")
6570   AM_RANGE(0xf003, 0xf003) AM_WRITENOP /* unknown */
6671   AM_RANGE(0xf401, 0xf401) AM_DEVREAD("aysnd", ay8910_device, data_r)
r245099r245100
141146   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
142147   MCFG_SCREEN_SIZE(40*8, 32*8)
143148   MCFG_SCREEN_VISIBLE_AREA(0*8, 34*8-1, 1*8, 31*8-1) // unknown res
144   MCFG_SCREEN_UPDATE_DRIVER(ssrj_state, screen_update_ssrj)
145   MCFG_SCREEN_VBLANK_DRIVER(ssrj_state, screen_eof_ssrj)
149   MCFG_SCREEN_UPDATE_DRIVER(ssrj_state, screen_update)
150   MCFG_SCREEN_VBLANK_DRIVER(ssrj_state, screen_eof)
146151   MCFG_SCREEN_PALETTE("palette")
147152
148153   MCFG_GFXDECODE_ADD("gfxdecode", "palette", ssrj)
r245099r245100
179184
180185ROM_END
181186
182GAME( 1985, ssrj,  0,       ssrj,  ssrj, driver_device,  0, ROT90, "Taito Corporation", "Super Speed Race Junior (Japan)",GAME_WRONG_COLORS|GAME_IMPERFECT_GRAPHICS )
187GAME( 1985, ssrj,  0,       ssrj,  ssrj, driver_device,  0, ROT90, "Taito Corporation", "Super Speed Race Junior (Japan)", GAME_WRONG_COLORS | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/sstrangr.c
r245099r245100
1818public:
1919   sstrangr_state(const machine_config &mconfig, device_type type, const char *tag)
2020      : driver_device(mconfig, type, tag),
21      m_ram(*this, "ram"),
22      m_maincpu(*this, "maincpu") { }
21      m_maincpu(*this, "maincpu"),
22      m_ram(*this, "ram") { }
2323
24   required_device<cpu_device> m_maincpu;
25
2426   required_shared_ptr<UINT8> m_ram;
27   
2528   UINT8 m_flip_screen;
26   UINT8 *m_proms;
29   
2730   DECLARE_WRITE8_MEMBER(port_w);
31   
32   virtual void video_start();
33   
2834   UINT32 screen_update_sstrangr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
2935   UINT32 screen_update_sstrngr2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
30   required_device<cpu_device> m_maincpu;
3136};
3237
3338
r245099r245100
3843 *
3944 *************************************/
4045
46void sstrangr_state::video_start()
47{
48   save_item(NAME(m_flip_screen));
49}
50
4151UINT32 sstrangr_state::screen_update_sstrangr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
4252{
4353   offs_t offs;
r245099r245100
296306ROM_END
297307
298308
299GAMEL( 1978, sstrangr, 0,        sstrangr, sstrangr, driver_device, 0, ROT270, "Yachiyo Electronics, Ltd.", "Space Stranger", GAME_NO_SOUND, layout_sstrangr )
300GAME( 1979, sstrangr2,sstrangr, sstrngr2, sstrngr2, driver_device, 0, ROT270, "Yachiyo Electronics, Ltd.", "Space Stranger 2", GAME_NO_SOUND )
309GAMEL( 1978, sstrangr, 0,        sstrangr, sstrangr, driver_device, 0, ROT270, "Yachiyo Electronics, Ltd.", "Space Stranger", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_sstrangr )
310GAME( 1979, sstrangr2,sstrangr, sstrngr2, sstrngr2, driver_device, 0, ROT270, "Yachiyo Electronics, Ltd.", "Space Stranger 2", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/ssrj.h
r245099r245100
33public:
44   ssrj_state(const machine_config &mconfig, device_type type, const char *tag)
55      : driver_device(mconfig, type, tag),
6      m_maincpu(*this, "maincpu"),
7      m_gfxdecode(*this, "gfxdecode"),
8      m_palette(*this, "palette"),
69      m_vram1(*this, "vram1"),
710      m_vram2(*this, "vram2"),
811      m_vram3(*this, "vram3"),
912      m_vram4(*this, "vram4"),
10      m_scrollram(*this, "scrollram"),
11      m_maincpu(*this, "maincpu"),
12      m_gfxdecode(*this, "gfxdecode"),
13      m_palette(*this, "palette") { }
13      m_scrollram(*this, "scrollram") { }
1414
15   int m_oldport;
16   tilemap_t *m_tilemap1;
17   tilemap_t *m_tilemap2;
18   tilemap_t *m_tilemap4;
15   required_device<cpu_device> m_maincpu;
16   required_device<gfxdecode_device> m_gfxdecode;
17   required_device<palette_device> m_palette;
18
1919   required_shared_ptr<UINT8> m_vram1;
2020   required_shared_ptr<UINT8> m_vram2;
2121   required_shared_ptr<UINT8> m_vram3;
2222   required_shared_ptr<UINT8> m_vram4;
2323   required_shared_ptr<UINT8> m_scrollram;
24
25   int m_oldport;
26   tilemap_t *m_tilemap1;
27   tilemap_t *m_tilemap2;
28   tilemap_t *m_tilemap4;
2429   UINT8 *m_buffer_spriteram;
25   DECLARE_READ8_MEMBER(ssrj_wheel_r);
26   DECLARE_WRITE8_MEMBER(ssrj_vram1_w);
27   DECLARE_WRITE8_MEMBER(ssrj_vram2_w);
28   DECLARE_WRITE8_MEMBER(ssrj_vram4_w);
30   
31   DECLARE_READ8_MEMBER(wheel_r);
32   DECLARE_WRITE8_MEMBER(vram1_w);
33   DECLARE_WRITE8_MEMBER(vram2_w);
34   DECLARE_WRITE8_MEMBER(vram4_w);
35   
2936   TILE_GET_INFO_MEMBER(get_tile_info1);
3037   TILE_GET_INFO_MEMBER(get_tile_info2);
3138   TILE_GET_INFO_MEMBER(get_tile_info4);
39   
40   virtual void machine_start();
3241   virtual void machine_reset();
3342   virtual void video_start();
3443   DECLARE_PALETTE_INIT(ssrj);
35   UINT32 screen_update_ssrj(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
36   void screen_eof_ssrj(screen_device &screen, bool state);
44   
45   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
46   void screen_eof(screen_device &screen, bool state);
3747   void draw_objects(bitmap_ind16 &bitmap, const rectangle &cliprect );
38   required_device<cpu_device> m_maincpu;
39   required_device<gfxdecode_device> m_gfxdecode;
40   required_device<palette_device> m_palette;
4148};
trunk/src/mame/video/ssrj.c
r245099r245100
33
44/* tilemap 1 */
55
6WRITE8_MEMBER(ssrj_state::ssrj_vram1_w)
6WRITE8_MEMBER(ssrj_state::vram1_w)
77{
88   m_vram1[offset] = data;
99   m_tilemap1->mark_tile_dirty(offset>>1);
r245099r245100
2121
2222/* tilemap 2 */
2323
24WRITE8_MEMBER(ssrj_state::ssrj_vram2_w)
24WRITE8_MEMBER(ssrj_state::vram2_w)
2525{
2626   m_vram2[offset] = data;
2727   m_tilemap2->mark_tile_dirty(offset>>1);
r245099r245100
3939
4040/* tilemap 4 */
4141
42WRITE8_MEMBER(ssrj_state::ssrj_vram4_w)
42WRITE8_MEMBER(ssrj_state::vram4_w)
4343{
4444   m_vram4[offset] = data;
4545   m_tilemap4->mark_tile_dirty(offset>>1);
r245099r245100
6060TODO: This table is nowhere near as accurate. If you bother, here's how colors should be:
6161-"START" sign is red with dark blue background.
6262-Sidewalk is yellow-ish.
63-first opponents have swapped colors (blue/yellow ?nstead of yellow/blue)
63-first opponents have swapped colors (blue/yellow instead of yellow/blue)
6464-after the first stage, houses have red/white colors.
6565*/
6666
r245099r245100
270270         palette.set_pen_color(i*8+j, fakecols[i][j][0], fakecols[i][j][1], fakecols[i][j][2]);
271271}
272272
273UINT32 ssrj_state::screen_update_ssrj(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
273UINT32 ssrj_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
274274{
275275   m_tilemap1->set_scrollx(0, 0xff-m_scrollram[2] );
276276   m_tilemap1->set_scrolly(0, m_scrollram[0] );
r245099r245100
282282   return 0;
283283}
284284
285void ssrj_state::screen_eof_ssrj(screen_device &screen, bool state)
285void ssrj_state::screen_eof(screen_device &screen, bool state)
286286{
287287   // rising edge
288288   if (state)


Previous 199869 Revisions Next


© 1997-2024 The MAME Team