Previous 199869 Revisions Next

r34762 Saturday 31st January, 2015 at 10:35:27 UTC by Osso
rollrace.c: added save state support, removed unneeded prefixes (nw)
[src/mame/drivers]rollrace.c
[src/mame/includes]rollrace.h
[src/mame/video]rollrace.c

trunk/src/mame/drivers/rollrace.c
r243273r243274
1212#include "sound/ay8910.h"
1313#include "includes/rollrace.h"
1414
15READ8_MEMBER(rollrace_state::ra_fake_d800_r)
15
16void rollrace_state::machine_start()
1617{
18   save_item(NAME(m_charbank));
19   save_item(NAME(m_bkgpage));
20   save_item(NAME(m_bkgflip));
21   save_item(NAME(m_chrbank));
22   save_item(NAME(m_bkgpen));
23   save_item(NAME(m_bkgcol));
24   save_item(NAME(m_flipy));
25   save_item(NAME(m_flipx));
26   save_item(NAME(m_spritebank));
27   save_item(NAME(m_nmi_mask));
28   save_item(NAME(m_sound_nmi_mask));
29}
30
31READ8_MEMBER(rollrace_state::fake_d800_r)
32{
1733   return 0x51;
1834}
1935
20WRITE8_MEMBER(rollrace_state::ra_fake_d800_w)
36WRITE8_MEMBER(rollrace_state::fake_d800_w)
2137{
2238/*  logerror("d900: %02X\n",data);*/
2339}
r243273r243274
3854   AM_RANGE(0x8000, 0x9fff) AM_ROM          /* only rollace2 */
3955   AM_RANGE(0xc000, 0xcfff) AM_RAM
4056   AM_RANGE(0xd806, 0xd806) AM_READNOP /* looks like a watchdog, bit4 checked*/
41   AM_RANGE(0xd900, 0xd900) AM_READWRITE(ra_fake_d800_r,ra_fake_d800_w) /* protection ??*/
57   AM_RANGE(0xd900, 0xd900) AM_READWRITE(fake_d800_r,fake_d800_w) /* protection ??*/
4258   AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("videoram")
4359   AM_RANGE(0xe400, 0xe47f) AM_RAM AM_SHARE("colorram")
4460   AM_RANGE(0xe800, 0xe800) AM_WRITE(soundlatch_byte_w)
4561   AM_RANGE(0xec00, 0xec0f) AM_NOP /* Analog sound effects ?? ec00 sound enable ?*/
4662   AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("spriteram")
47   AM_RANGE(0xf400, 0xf400) AM_WRITE(rollrace_backgroundcolor_w)
63   AM_RANGE(0xf400, 0xf400) AM_WRITE(backgroundcolor_w)
4864   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1")
49   AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(rollrace_bkgpen_w)
50   AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(rollrace_backgroundpage_w)
51   AM_RANGE(0xf803, 0xf803) AM_WRITE(rollrace_flipy_w)
65   AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bkgpen_w)
66   AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(backgroundpage_w)
67   AM_RANGE(0xf803, 0xf803) AM_WRITE(flipy_w)
5268   AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
5369   AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
54   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(rollrace_flipx_w)
70   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(flipx_w)
5571   AM_RANGE(0xfc01, 0xfc01) AM_WRITE(nmi_mask_w)
5672   AM_RANGE(0xfc02, 0xfc03) AM_WRITENOP /* coin counters */
57   AM_RANGE(0xfc04, 0xfc05) AM_WRITE(rollrace_charbank_w)
58   AM_RANGE(0xfc06, 0xfc06) AM_WRITE(rollrace_spritebank_w)
73   AM_RANGE(0xfc04, 0xfc05) AM_WRITE(charbank_w)
74   AM_RANGE(0xfc06, 0xfc06) AM_WRITE(spritebank_w)
5975ADDRESS_MAP_END
6076
6177
r243273r243274
235251   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
236252   MCFG_SCREEN_SIZE(256, 256)
237253   MCFG_SCREEN_VISIBLE_AREA(16,255,16, 255-16)
238   MCFG_SCREEN_UPDATE_DRIVER(rollrace_state, screen_update_rollrace)
254   MCFG_SCREEN_UPDATE_DRIVER(rollrace_state, screen_update)
239255   MCFG_SCREEN_PALETTE("palette")
240256
241257   MCFG_GFXDECODE_ADD("gfxdecode", "palette", rollrace)
r243273r243274
413429ROM_END
414430
415431
416GAME( 1983, fightrol, 0,        rollrace, rollrace, driver_device, 0, ROT270, "Kaneko (Taito license)", "Fighting Roller", GAME_IMPERFECT_SOUND )
417GAME( 1983, rollace,  fightrol, rollrace, rollrace, driver_device, 0, ROT270, "Kaneko (Williams license)", "Roller Aces (set 1)", GAME_IMPERFECT_SOUND )
418GAME( 1983, rollace2, fightrol, rollace2, rollrace, driver_device, 0, ROT90,  "Kaneko (Williams license)", "Roller Aces (set 2)", GAME_IMPERFECT_SOUND )
432GAME( 1983, fightrol, 0,        rollrace, rollrace, driver_device, 0, ROT270, "Kaneko (Taito license)", "Fighting Roller", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
433GAME( 1983, rollace,  fightrol, rollrace, rollrace, driver_device, 0, ROT270, "Kaneko (Williams license)", "Roller Aces (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
434GAME( 1983, rollace2, fightrol, rollace2, rollrace, driver_device, 0, ROT90,  "Kaneko (Williams license)", "Roller Aces (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/rollrace.h
r243273r243274
33public:
44   rollrace_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_videoram(*this, "videoram"),
710      m_colorram(*this, "colorram"),
8      m_spriteram(*this, "spriteram"),
9      m_maincpu(*this, "maincpu"),
10      m_gfxdecode(*this, "gfxdecode"),
11      m_palette(*this, "palette") { }
11      m_spriteram(*this, "spriteram") { }
1212
13   required_device<cpu_device> m_maincpu;
14   required_device<gfxdecode_device> m_gfxdecode;
15   required_device<palette_device> m_palette;
1316   required_shared_ptr<UINT8> m_videoram;
1417   required_shared_ptr<UINT8> m_colorram;
15   int m_ra_charbank[2];
16   int m_ra_bkgpage;
17   int m_ra_bkgflip;
18   int m_ra_chrbank;
19   int m_ra_bkgpen;
20   int m_ra_bkgcol;
21   int m_ra_flipy;
22   int m_ra_flipx;
23   int m_ra_spritebank;
2418   required_shared_ptr<UINT8> m_spriteram;
19   
20   int m_charbank[2];
21   int m_bkgpage;
22   int m_bkgflip;
23   int m_chrbank;
24   int m_bkgpen;
25   int m_bkgcol;
26   int m_flipy;
27   int m_flipx;
28   int m_spritebank;
2529
2630   UINT8 m_nmi_mask;
2731   UINT8 m_sound_nmi_mask;
28   DECLARE_READ8_MEMBER(ra_fake_d800_r);
29   DECLARE_WRITE8_MEMBER(ra_fake_d800_w);
32   
33   DECLARE_READ8_MEMBER(fake_d800_r);
34   DECLARE_WRITE8_MEMBER(fake_d800_w);
3035   DECLARE_WRITE8_MEMBER(nmi_mask_w);
3136   DECLARE_WRITE8_MEMBER(sound_nmi_mask_w);
32   DECLARE_WRITE8_MEMBER(rollrace_charbank_w);
33   DECLARE_WRITE8_MEMBER(rollrace_bkgpen_w);
34   DECLARE_WRITE8_MEMBER(rollrace_spritebank_w);
35   DECLARE_WRITE8_MEMBER(rollrace_backgroundpage_w);
36   DECLARE_WRITE8_MEMBER(rollrace_backgroundcolor_w);
37   DECLARE_WRITE8_MEMBER(rollrace_flipy_w);
38   DECLARE_WRITE8_MEMBER(rollrace_flipx_w);
37   DECLARE_WRITE8_MEMBER(charbank_w);
38   DECLARE_WRITE8_MEMBER(bkgpen_w);
39   DECLARE_WRITE8_MEMBER(spritebank_w);
40   DECLARE_WRITE8_MEMBER(backgroundpage_w);
41   DECLARE_WRITE8_MEMBER(backgroundcolor_w);
42   DECLARE_WRITE8_MEMBER(flipy_w);
43   DECLARE_WRITE8_MEMBER(flipx_w);
44   
3945   DECLARE_PALETTE_INIT(rollrace);
40   UINT32 screen_update_rollrace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
46   virtual void machine_start();
47   
48   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
49   
4150   INTERRUPT_GEN_MEMBER(vblank_irq);
4251   INTERRUPT_GEN_MEMBER(sound_timer_irq);
43   required_device<cpu_device> m_maincpu;
44   required_device<gfxdecode_device> m_gfxdecode;
45   required_device<palette_device> m_palette;
4652};
trunk/src/mame/video/rollrace.c
r243273r243274
5353   }
5454}
5555
56WRITE8_MEMBER(rollrace_state::rollrace_charbank_w)
56WRITE8_MEMBER(rollrace_state::charbank_w)
5757{
58   m_ra_charbank[offset&1] = data;
59   m_ra_chrbank = m_ra_charbank[0] | (m_ra_charbank[1] << 1) ;
58   m_charbank[offset&1] = data;
59   m_chrbank = m_charbank[0] | (m_charbank[1] << 1) ;
6060}
6161
6262
63WRITE8_MEMBER(rollrace_state::rollrace_bkgpen_w)
63WRITE8_MEMBER(rollrace_state::bkgpen_w)
6464{
65   m_ra_bkgpen = data;
65   m_bkgpen = data;
6666}
6767
68WRITE8_MEMBER(rollrace_state::rollrace_spritebank_w)
68WRITE8_MEMBER(rollrace_state::spritebank_w)
6969{
70   m_ra_spritebank = data;
70   m_spritebank = data;
7171}
7272
73WRITE8_MEMBER(rollrace_state::rollrace_backgroundpage_w)
73WRITE8_MEMBER(rollrace_state::backgroundpage_w)
7474{
75   m_ra_bkgpage = data & 0x1f;
76   m_ra_bkgflip = ( data & 0x80 ) >> 7;
75   m_bkgpage = data & 0x1f;
76   m_bkgflip = ( data & 0x80 ) >> 7;
7777
7878   /* 0x80 flip vertical */
7979}
8080
81WRITE8_MEMBER(rollrace_state::rollrace_backgroundcolor_w)
81WRITE8_MEMBER(rollrace_state::backgroundcolor_w)
8282{
83   m_ra_bkgcol = data;
83   m_bkgcol = data;
8484}
8585
86WRITE8_MEMBER(rollrace_state::rollrace_flipy_w)
86WRITE8_MEMBER(rollrace_state::flipy_w)
8787{
88   m_ra_flipy = data & 0x01;
88   m_flipy = data & 0x01;
8989}
9090
91WRITE8_MEMBER(rollrace_state::rollrace_flipx_w)
91WRITE8_MEMBER(rollrace_state::flipx_w)
9292{
93   m_ra_flipx = data & 0x01;
93   m_flipx = data & 0x01;
9494}
9595
96UINT32 rollrace_state::screen_update_rollrace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
96UINT32 rollrace_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
9797{
9898   UINT8 *spriteram = m_spriteram;
9999   int offs;
r243273r243274
103103   const UINT8 *mem = memregion("user1")->base();
104104
105105   /* fill in background colour*/
106   bitmap.fill(m_ra_bkgpen, cliprect);
106   bitmap.fill(m_bkgpen, cliprect);
107107
108108   /* draw road */
109109   for (offs = 0x3ff; offs >= 0; offs--)
110110      {
111         if(!(m_ra_bkgflip))
111         if(!(m_bkgflip))
112112            {
113113            sy = ( 31 - offs / 32 ) ;
114114            }
r243273r243274
117117
118118         sx = ( offs%32 ) ;
119119
120         if(m_ra_flipx)
120         if(m_flipx)
121121            sx = 31-sx ;
122122
123         if(m_ra_flipy)
123         if(m_flipy)
124124            sy = 31-sy ;
125125
126126         m_gfxdecode->gfx(RA_BGCHAR_BASE)->transpen(bitmap,
127127            cliprect,
128            mem[offs + ( m_ra_bkgpage * 1024 )]
129            + ((( mem[offs + 0x4000 + ( m_ra_bkgpage * 1024 )] & 0xc0 ) >> 6 ) * 256 ) ,
130            m_ra_bkgcol,
131            m_ra_flipx,(m_ra_bkgflip^m_ra_flipy),
128            mem[offs + ( m_bkgpage * 1024 )]
129            + ((( mem[offs + 0x4000 + ( m_bkgpage * 1024 )] & 0xc0 ) >> 6 ) * 256 ) ,
130            m_bkgcol,
131            m_flipx,(m_bkgflip^m_flipy),
132132            sx*8,sy*8,0);
133133
134134
r243273r243274
148148
149149      if(sx && sy)
150150      {
151      if(m_ra_flipx)
151      if(m_flipx)
152152         sx = 224 - sx;
153      if(m_ra_flipy)
153      if(m_flipy)
154154         sy = 224 - sy;
155155
156156      if(spriteram[offs+1] & 0x80)
r243273r243274
159159      bank = (( spriteram[offs+1] & 0x40 ) >> 6 ) ;
160160
161161      if(bank)
162         bank += m_ra_spritebank;
162         bank += m_spritebank;
163163
164164      m_gfxdecode->gfx( RA_SP_BASE + bank )->transpen(bitmap,cliprect,
165165         spriteram[offs+1] & 0x3f ,
166166         spriteram[offs+2] & 0x1f,
167         m_ra_flipx,!(s_flipy^m_ra_flipy),
167         m_flipx,!(s_flipy^m_flipy),
168168         sx,sy,0);
169169      }
170170   }
r243273r243274
181181      scroll = ( 8 * sy + m_colorram[2 * sx] ) % 256;
182182      col = m_colorram[ sx * 2 + 1 ]&0x1f;
183183
184      if (!m_ra_flipy)
184      if (!m_flipy)
185185      {
186186         scroll = (248 - scroll) % 256;
187187      }
188188
189      if (m_ra_flipx) sx = 31 - sx;
189      if (m_flipx) sx = 31 - sx;
190190
191      m_gfxdecode->gfx(RA_FGCHAR_BASE + m_ra_chrbank)  ->transpen(bitmap,cliprect,
191      m_gfxdecode->gfx(RA_FGCHAR_BASE + m_chrbank)  ->transpen(bitmap,cliprect,
192192         m_videoram[ offs ]  ,
193193         col,
194         m_ra_flipx,m_ra_flipy,
194         m_flipx,m_flipy,
195195         8*sx,scroll,0);
196196
197197   }


Previous 199869 Revisions Next


© 1997-2024 The MAME Team