Previous 199869 Revisions Next

r34214 Tuesday 6th January, 2015 at 08:08:52 UTC by Osso
senjyo.c: added save state support, removed unneeded include, member variables and suffixes (nw)
[src/mame/audio]senjyo.c
[src/mame/drivers]senjyo.c
[src/mame/includes]senjyo.h
[src/mame/video]senjyo.c

trunk/src/mame/audio/senjyo.c
r242725r242726
2626   }
2727}
2828
29WRITE8_MEMBER(senjyo_state::senjyo_volume_w)
29WRITE8_MEMBER(senjyo_state::volume_w)
3030{
3131   m_single_volume = data & 0x0f;
3232}
trunk/src/mame/drivers/senjyo.c
r242725r242726
7878#include "emu.h"
7979#include "cpu/z80/z80.h"
8080#include "sound/sn76496.h"
81#include "sound/samples.h"
8281#include "machine/segacrpt.h"
8382#include "includes/senjyo.h"
8483
85void senjyo_state::machine_reset()
84void senjyo_state::machine_start()
8685{
87   // ...
86   save_item(NAME(m_sound_cmd));
87   save_item(NAME(m_single_volume));
88   save_item(NAME(m_sound_state));
89   save_item(NAME(m_bgstripes));
8890}
8991
90INTERRUPT_GEN_MEMBER(senjyo_state::senjyo_interrupt)
92void senjyo_state::machine_reset()
9193{
92   device.execute().set_input_line(0, ASSERT_LINE);
94   m_sound_cmd = 0;
95   m_single_volume = 0;
96   m_sound_state = 0;
97   m_bgstripes = 0;
9398}
9499
95100WRITE8_MEMBER(senjyo_state::irq_ctrl_w)
r242725r242726
105110
106111WRITE8_MEMBER(senjyo_state::sound_cmd_w)
107112{
108   z80pio_device *device = machine().device<z80pio_device>("z80pio");
109
110113   m_sound_cmd = data;
111114
112   device->strobe_a(0);
113   device->strobe_a(1);
115   m_pio->strobe_a(0);
116   m_pio->strobe_a(1);
114117}
115118
116WRITE8_MEMBER(senjyo_state::senjyo_paletteram_w)
119WRITE8_MEMBER(senjyo_state::paletteram_w)
117120{
118121   int r = (data << 2) & 0xC;
119122   int g = (data     ) & 0xC;
r242725r242726
131134static ADDRESS_MAP_START( senjyo_map, AS_PROGRAM, 8, senjyo_state )
132135   AM_RANGE(0x0000, 0x7fff) AM_ROM
133136   AM_RANGE(0x8000, 0x8fff) AM_RAM
134   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(senjyo_fgvideoram_w) AM_SHARE("fgvideoram")
135   AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(senjyo_fgcolorram_w) AM_SHARE("fgcolorram")
137   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
138   AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(fgcolorram_w) AM_SHARE("fgcolorram")
136139   AM_RANGE(0x9800, 0x987f) AM_RAM AM_SHARE("spriteram")
137   AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(senjyo_paletteram_w) AM_SHARE("paletteram")
140   AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
138141   AM_RANGE(0x9e00, 0x9e1f) AM_RAM AM_SHARE("fgscroll")
139142   AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_SHARE("scrolly3")
140143/*  AM_RANGE(0x9e22, 0x9e23) height of the layer (Senjyo only, fixed at 0x380) */
141144   AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_SHARE("scrollx3")
142   AM_RANGE(0x9e27, 0x9e27) AM_RAM_WRITE(senjyo_bgstripes_w) AM_SHARE("bgstripesram")  /* controls width of background stripes */
145   AM_RANGE(0x9e27, 0x9e27) AM_RAM AM_SHARE("bgstripesram")  /* controls width of background stripes */
143146   AM_RANGE(0x9e28, 0x9e29) AM_RAM AM_SHARE("scrolly2")
144147/*  AM_RANGE(0x9e2a, 0x9e2b) height of the layer (Senjyo only, fixed at 0x200) */
145148   AM_RANGE(0x9e2d, 0x9e2d) AM_RAM AM_SHARE("scrollx2")
r242725r242726
149152/*  AM_RANGE(0x9e38, 0x9e38) probably radar y position (Senjyo only, fixed at 0x61) */
150153/*  AM_RANGE(0x9e3d, 0x9e3d) probably radar x position (Senjyo only, 0x00/0xc0 depending on screen flip) */
151154   AM_RANGE(0x9e00, 0x9e3f) AM_RAM
152   AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(senjyo_bg3videoram_w) AM_SHARE("bg3videoram")
153   AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(senjyo_bg2videoram_w) AM_SHARE("bg2videoram")
154   AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(senjyo_bg1videoram_w) AM_SHARE("bg1videoram")
155   AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg3videoram_w) AM_SHARE("bg3videoram")
156   AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram")
157   AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram")
155158   AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("radarram")
156159   AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w)
157160   AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2")
r242725r242726
167170   AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_device, write)
168171   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_device, write)
169172   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_device, write)
170   AM_RANGE(0xd000, 0xd000) AM_WRITE(senjyo_volume_w)
173   AM_RANGE(0xd000, 0xd000) AM_WRITE(volume_w)
171174#if 0
172175   AM_RANGE(0xe000, 0xe000) AM_WRITE(unknown)
173176   AM_RANGE(0xf000, 0xf000) AM_WRITE(unknown)
r242725r242726
198201static ADDRESS_MAP_START( starforb_map, AS_PROGRAM, 8, senjyo_state )
199202   AM_RANGE(0x0000, 0x7fff) AM_ROM
200203   AM_RANGE(0x8000, 0x8fff) AM_RAM
201   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(senjyo_fgvideoram_w) AM_SHARE("fgvideoram")
202   AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(senjyo_fgcolorram_w) AM_SHARE("fgcolorram")
204   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
205   AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(fgcolorram_w) AM_SHARE("fgcolorram")
203206   AM_RANGE(0x9800, 0x987f) AM_RAM AM_SHARE("spriteram")
204   AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(senjyo_paletteram_w) AM_SHARE("paletteram")
207   AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
205208   /* The format / use of the ram here is different on the bootleg */
206209   AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_SHARE("scrolly3")
207210   AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_SHARE("scrollx3")
r242725r242726
209212   AM_RANGE(0x9e35, 0x9e35) AM_RAM_WRITE(starforb_scrollx2) AM_SHARE("scrollx2") // ok
210213   AM_RANGE(0x9e00, 0x9e3f) AM_RAM
211214
212   AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(senjyo_bg3videoram_w) AM_SHARE("bg3videoram")
213   AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(senjyo_bg2videoram_w) AM_SHARE("bg2videoram")
214   AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(senjyo_bg1videoram_w) AM_SHARE("bg1videoram")
215   AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg3videoram_w) AM_SHARE("bg3videoram")
216   AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram")
217   AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram")
215218   AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("radarram")
216219   AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w)
217220   AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2")
r242725r242726
221224
222225   /* these aren't used / written, left here to make sure memory is allocated */
223226   AM_RANGE(0xfe00, 0xfe1f) AM_RAM AM_SHARE("fgscroll")
224   AM_RANGE(0xfe27, 0xfe27) AM_RAM_WRITE(senjyo_bgstripes_w) AM_SHARE("bgstripesram")  /* controls width of background stripes */
227   AM_RANGE(0xfe27, 0xfe27) AM_RAM AM_SHARE("bgstripesram")  /* controls width of background stripes */
225228   AM_RANGE(0xfe28, 0xfe29) AM_RAM AM_SHARE("scrolly1")
226229   AM_RANGE(0xfe2d, 0xfe2d) AM_RAM AM_SHARE("scrollx1")
227230ADDRESS_MAP_END
r242725r242726
233236   AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_device, write)
234237   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_device, write)
235238   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_device, write)
236   AM_RANGE(0xd000, 0xd000) AM_WRITE(senjyo_volume_w)
239   AM_RANGE(0xd000, 0xd000) AM_WRITE(volume_w)
237240#if 0
238241   AM_RANGE(0xe000, 0xe000) AM_WRITE(unknown)
239242   AM_RANGE(0xf000, 0xf000) AM_WRITE(unknown)
r242725r242726
556559   /* basic machine hardware */
557560   MCFG_CPU_ADD("maincpu", Z80, 4000000)   /* 4 MHz? */
558561   MCFG_CPU_PROGRAM_MAP(senjyo_map)
559   MCFG_CPU_VBLANK_INT_DRIVER("screen", senjyo_state, senjyo_interrupt)
562   MCFG_CPU_VBLANK_INT_DRIVER("screen", senjyo_state, irq0_line_assert)
560563
561564   MCFG_CPU_ADD("sub", Z80, 2000000)   /* 2 MHz? */
562565   MCFG_CPU_CONFIG(senjyo_daisy_chain)
r242725r242726
578581   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
579582   MCFG_SCREEN_SIZE(32*8, 32*8)
580583   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
581   MCFG_SCREEN_UPDATE_DRIVER(senjyo_state, screen_update_senjyo)
584   MCFG_SCREEN_UPDATE_DRIVER(senjyo_state, screen_update)
582585   MCFG_SCREEN_PALETTE("palette")
583586
584587   MCFG_GFXDECODE_ADD("gfxdecode", "palette", senjyo)
r242725r242726
925928}
926929
927930
928GAME( 1983, senjyo,   0,        senjyo,  senjyo, senjyo_state,   senjyo,   ROT90, "Tehkan", "Senjyo", 0 )
929GAME( 1984, starforc, 0,        senjyo,  starforc, senjyo_state, starforc, ROT90, "Tehkan", "Star Force", 0 )
930GAME( 1984, starforce,starforc, senjyo,  starforc, senjyo_state, starfore, ROT90, "Tehkan", "Star Force (encrypted, set 1)", 0 )
931GAME( 1984, starforcb,starforc, starforb,starforc, senjyo_state, starfore, ROT90, "bootleg", "Star Force (encrypted, bootleg)", 0 )
932GAME( 1984, starforca,starforc, senjyo,  starforc, senjyo_state, starfora, ROT90, "Tehkan", "Star Force (encrypted, set 2)", 0 )
933GAME( 1985, megaforc, starforc, senjyo,  starforc, senjyo_state, starforc, ROT90, "Tehkan (Video Ware license)", "Mega Force", 0 )
934GAME( 1986, baluba,   0,        senjyo,  baluba, senjyo_state,   starforc, ROT90, "Able Corp, Ltd.", "Baluba-louk no Densetsu (Japan)", 0 )
931GAME( 1983, senjyo,   0,        senjyo,  senjyo, senjyo_state,   senjyo,   ROT90, "Tehkan", "Senjyo", GAME_SUPPORTS_SAVE )
932GAME( 1984, starforc, 0,        senjyo,  starforc, senjyo_state, starforc, ROT90, "Tehkan", "Star Force", GAME_SUPPORTS_SAVE )
933GAME( 1984, starforce,starforc, senjyo,  starforc, senjyo_state, starfore, ROT90, "Tehkan", "Star Force (encrypted, set 1)", GAME_SUPPORTS_SAVE )
934GAME( 1984, starforcb,starforc, starforb,starforc, senjyo_state, starfore, ROT90, "bootleg", "Star Force (encrypted, bootleg)", GAME_SUPPORTS_SAVE )
935GAME( 1984, starforca,starforc, senjyo,  starforc, senjyo_state, starfora, ROT90, "Tehkan", "Star Force (encrypted, set 2)", GAME_SUPPORTS_SAVE )
936GAME( 1985, megaforc, starforc, senjyo,  starforc, senjyo_state, starforc, ROT90, "Tehkan (Video Ware license)", "Mega Force", GAME_SUPPORTS_SAVE )
937GAME( 1986, baluba,   0,        senjyo,  baluba, senjyo_state,   starforc, ROT90, "Able Corp, Ltd.", "Baluba-louk no Densetsu (Japan)", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/senjyo.h
r242725r242726
88public:
99   senjyo_state(const machine_config &mconfig, device_type type, const char *tag)
1010      : driver_device(mconfig, type, tag),
11      m_maincpu(*this, "maincpu"),
12      m_pio(*this, "z80pio"),
1113      m_dac(*this, "dac"),
14      m_gfxdecode(*this, "gfxdecode"),
15      m_palette(*this, "palette"),
1216      m_spriteram(*this, "spriteram"),
1317      m_fgscroll(*this, "fgscroll"),
1418      m_scrollx1(*this, "scrollx1"),
r242725r242726
2428      m_bg3videoram(*this, "bg3videoram"),
2529      m_radarram(*this, "radarram"),
2630      m_bgstripesram(*this, "bgstripesram"),
27      m_maincpu(*this, "maincpu"),
28      m_gfxdecode(*this, "gfxdecode"),
29      m_palette(*this, "palette"),
3031      m_generic_paletteram_8(*this, "paletteram") { }
3132
32   UINT8 m_sound_cmd;
33   INT16 *m_single_data;
34   int m_single_rate;
35   int m_single_volume;
36   int m_sound_state;
37
33   /* devices */
34   required_device<cpu_device> m_maincpu;
35   required_device<z80pio_device> m_pio;
3836   required_device<dac_device> m_dac;
39
37   required_device<gfxdecode_device> m_gfxdecode;
38   required_device<palette_device> m_palette;
39   
40   /* memory pointers */
4041   required_shared_ptr<UINT8> m_spriteram;
4142   required_shared_ptr<UINT8> m_fgscroll;
4243   required_shared_ptr<UINT8> m_scrollx1;
r242725r242726
5253   required_shared_ptr<UINT8> m_bg3videoram;
5354   required_shared_ptr<UINT8> m_radarram;
5455   required_shared_ptr<UINT8> m_bgstripesram;
56   required_shared_ptr<UINT8> m_generic_paletteram_8;
57
58   // game specific initialization
5559   int m_is_senjyo;
5660   int m_scrollhack;
61   
62   UINT8 m_sound_cmd;
63   int m_single_volume;
64   int m_sound_state;
65   int m_bgstripes;
5766   tilemap_t *m_fg_tilemap;
5867   tilemap_t *m_bg1_tilemap;
5968   tilemap_t *m_bg2_tilemap;
6069   tilemap_t *m_bg3_tilemap;
61
62   int m_bgstripes;
70   
6371   DECLARE_WRITE8_MEMBER(flip_screen_w);
64   DECLARE_WRITE8_MEMBER(senjyo_paletteram_w);
72   DECLARE_WRITE8_MEMBER(paletteram_w);
6573   DECLARE_WRITE8_MEMBER(starforb_scrolly2);
6674   DECLARE_WRITE8_MEMBER(starforb_scrollx2);
67   DECLARE_WRITE8_MEMBER(senjyo_fgvideoram_w);
68   DECLARE_WRITE8_MEMBER(senjyo_fgcolorram_w);
69   DECLARE_WRITE8_MEMBER(senjyo_bg1videoram_w);
70   DECLARE_WRITE8_MEMBER(senjyo_bg2videoram_w);
71   DECLARE_WRITE8_MEMBER(senjyo_bg3videoram_w);
72   DECLARE_WRITE8_MEMBER(senjyo_bgstripes_w);
73   DECLARE_WRITE8_MEMBER(senjyo_volume_w);
75   DECLARE_WRITE8_MEMBER(fgvideoram_w);
76   DECLARE_WRITE8_MEMBER(fgcolorram_w);
77   DECLARE_WRITE8_MEMBER(bg1videoram_w);
78   DECLARE_WRITE8_MEMBER(bg2videoram_w);
79   DECLARE_WRITE8_MEMBER(bg3videoram_w);
80   DECLARE_WRITE8_MEMBER(volume_w);
7481   DECLARE_WRITE_LINE_MEMBER(sound_line_clock);
7582   DECLARE_WRITE8_MEMBER(sound_cmd_w);
76   DECLARE_WRITE8_MEMBER(irq_ack_w);
83   DECLARE_WRITE8_MEMBER(irq_ctrl_w);
84   DECLARE_READ8_MEMBER(pio_pa_r);
85   
7786   DECLARE_DRIVER_INIT(starfora);
7887   DECLARE_DRIVER_INIT(senjyo);
7988   DECLARE_DRIVER_INIT(starfore);
8089   DECLARE_DRIVER_INIT(starforc);
90   
8191   TILE_GET_INFO_MEMBER(get_fg_tile_info);
8292   TILE_GET_INFO_MEMBER(senjyo_bg1_tile_info);
8393   TILE_GET_INFO_MEMBER(starforc_bg1_tile_info);
8494   TILE_GET_INFO_MEMBER(get_bg2_tile_info);
8595   TILE_GET_INFO_MEMBER(get_bg3_tile_info);
96   
97   virtual void machine_start();
8698   virtual void machine_reset();
8799   virtual void video_start();
88   UINT32 screen_update_senjyo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
89   INTERRUPT_GEN_MEMBER(senjyo_interrupt);
90   DECLARE_WRITE8_MEMBER(irq_ctrl_w);
91   DECLARE_READ8_MEMBER(pio_pa_r);
100   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
92101   void draw_bgbitmap(bitmap_ind16 &bitmap,const rectangle &cliprect);
93102   void draw_radar(bitmap_ind16 &bitmap,const rectangle &cliprect);
94103   void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int priority);
95   required_device<cpu_device> m_maincpu;
96   required_device<gfxdecode_device> m_gfxdecode;
97   required_device<palette_device> m_palette;
98   required_shared_ptr<UINT8> m_generic_paletteram_8;
99104};
100105
101106/*----------- defined in audio/senjyo.c -----------*/
trunk/src/mame/video/senjyo.c
r242725r242726
114114
115115***************************************************************************/
116116
117WRITE8_MEMBER(senjyo_state::senjyo_fgvideoram_w)
117WRITE8_MEMBER(senjyo_state::fgvideoram_w)
118118{
119119   m_fgvideoram[offset] = data;
120120   m_fg_tilemap->mark_tile_dirty(offset);
121121}
122WRITE8_MEMBER(senjyo_state::senjyo_fgcolorram_w)
122WRITE8_MEMBER(senjyo_state::fgcolorram_w)
123123{
124124   m_fgcolorram[offset] = data;
125125   m_fg_tilemap->mark_tile_dirty(offset);
126126}
127WRITE8_MEMBER(senjyo_state::senjyo_bg1videoram_w)
127WRITE8_MEMBER(senjyo_state::bg1videoram_w)
128128{
129129   m_bg1videoram[offset] = data;
130130   m_bg1_tilemap->mark_tile_dirty(offset);
131131}
132WRITE8_MEMBER(senjyo_state::senjyo_bg2videoram_w)
132WRITE8_MEMBER(senjyo_state::bg2videoram_w)
133133{
134134   m_bg2videoram[offset] = data;
135135   m_bg2_tilemap->mark_tile_dirty(offset);
136136}
137WRITE8_MEMBER(senjyo_state::senjyo_bg3videoram_w)
137WRITE8_MEMBER(senjyo_state::bg3videoram_w)
138138{
139139   m_bg3videoram[offset] = data;
140140   m_bg3_tilemap->mark_tile_dirty(offset);
141141}
142142
143WRITE8_MEMBER(senjyo_state::senjyo_bgstripes_w)
144{
145   *m_bgstripesram = data;
146}
147
148143/***************************************************************************
149144
150145  Display refresh
r242725r242726
153148
154149void senjyo_state::draw_bgbitmap(bitmap_ind16 &bitmap,const rectangle &cliprect)
155150{
156   int x,y,pen,strwid,count;
157
158
159151   if (m_bgstripes == 0xff) /* off */
160152      bitmap.fill(0, cliprect);
161153   else
162154   {
163155      int flip = flip_screen();
164156
165      pen = 0;
166      count = 0;
167      strwid = m_bgstripes;
157      int pen = 0;
158      int count = 0;
159      int strwid = m_bgstripes;
168160      if (strwid == 0) strwid = 0x100;
169161      if (flip) strwid ^= 0xff;
170162
171      for (x = 0;x < 256;x++)
163      for (int x = 0;x < 256;x++)
172164      {
173165         if (flip)
174            for (y = 0;y < 256;y++)
166            for (int y = 0;y < 256;y++)
175167               bitmap.pix16(y, 255 - x) = 384 + pen;
176168         else
177            for (y = 0;y < 256;y++)
169            for (int y = 0;y < 256;y++)
178170               bitmap.pix16(y, x) = 384 + pen;
179171
180172         count += 0x10;
r242725r242726
189181
190182void senjyo_state::draw_radar(bitmap_ind16 &bitmap,const rectangle &cliprect)
191183{
192   int offs,x;
193
194   for (offs = 0;offs < 0x400;offs++)
195      for (x = 0;x < 8;x++)
184   for (int offs = 0;offs < 0x400;offs++)
185      for (int x = 0;x < 8;x++)
196186         if (m_radarram[offs] & (1 << x))
197187         {
198188            int sx, sy;
r242725r242726
213203
214204void senjyo_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int priority)
215205{
216   UINT8 *spriteram = m_spriteram;
217   int offs;
218
219   for (offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4)
206   for (int offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4)
220207   {
221208      int big,sx,sy,flipx,flipy;
222209
223      if (((spriteram[offs+1] & 0x30) >> 4) == priority)
210      if (((m_spriteram[offs+1] & 0x30) >> 4) == priority)
224211      {
225212         if (m_is_senjyo) /* Senjyo */
226            big = (spriteram[offs] & 0x80);
213            big = (m_spriteram[offs] & 0x80);
227214         else    /* Star Force */
228            big = ((spriteram[offs] & 0xc0) == 0xc0);
229         sx = spriteram[offs+3];
215            big = ((m_spriteram[offs] & 0xc0) == 0xc0);
216         sx = m_spriteram[offs+3];
230217         if (big)
231            sy = 224-spriteram[offs+2];
218            sy = 224-m_spriteram[offs+2];
232219         else
233            sy = 240-spriteram[offs+2];
234         flipx = spriteram[offs+1] & 0x40;
235         flipy = spriteram[offs+1] & 0x80;
220            sy = 240-m_spriteram[offs+2];
221         flipx = m_spriteram[offs+1] & 0x40;
222         flipy = m_spriteram[offs+1] & 0x80;
236223
237224         if (flip_screen())
238225         {
r242725r242726
253240
254241
255242         m_gfxdecode->gfx(big ? 5 : 4)->transpen(bitmap,cliprect,
256               spriteram[offs],
257               spriteram[offs + 1] & 0x07,
243               m_spriteram[offs],
244               m_spriteram[offs + 1] & 0x07,
258245               flipx,flipy,
259246               sx,sy,0);
260247      }
261248   }
262249}
263250
264UINT32 senjyo_state::screen_update_senjyo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
251UINT32 senjyo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
265252{
266   int i;
267
268
269253   /* two colors for the radar dots (verified on the real board) */
270254   m_palette->set_pen_color(512,rgb_t(0xff,0x00,0x00));  /* red for enemies */
271255   m_palette->set_pen_color(513,rgb_t(0xff,0xff,0x00));  /* yellow for player */
272256
273257   {
274258      int flip = flip_screen();
275      int scrollx,scrolly;
276259
277      for (i = 0;i < 32;i++)
260      for (int i = 0;i < 32;i++)
278261         m_fg_tilemap->set_scrolly(i, m_fgscroll[i]);
279262
280      scrollx = m_scrollx1[0];
281      scrolly = m_scrolly1[0] + 256 * m_scrolly1[1];
263      int scrollx = m_scrollx1[0];
264      int scrolly = m_scrolly1[0] + 256 * m_scrolly1[1];
282265      if (flip)
283266         scrollx = -scrollx;
284267      m_bg1_tilemap->set_scrollx(0, scrollx);


Previous 199869 Revisions Next


© 1997-2024 The MAME Team