Previous 199869 Revisions Next

r35135 Thursday 19th February, 2015 at 17:27:23 UTC by Osso
skyarmy.c, skydiver.c: added save state support (nw)
[src/mame/audio]skydiver.c
[src/mame/drivers]skyarmy.c skydiver.c
[src/mame/includes]skydiver.h
[src/mame/video]skydiver.c

trunk/src/mame/audio/skydiver.c
r243646r243647
4343
4444DISCRETE_SOUND_START(skydiver)
4545   /************************************************/
46   /* skydiver  Effects Relataive Gain Table       */
46   /* skydiver  Effects Relative Gain Table        */
4747   /*                                              */
4848   /* Effect  V-ampIn  Gain ratio        Relative  */
4949   /* Note     3.8     3.8/260.5          1000.0   */
trunk/src/mame/drivers/skyarmy.c
r243646r243647
3434public:
3535   skyarmy_state(const machine_config &mconfig, device_type type, const char *tag)
3636      : driver_device(mconfig, type, tag),
37      m_maincpu(*this, "maincpu"),
38      m_gfxdecode(*this, "gfxdecode"),
39      m_palette(*this, "palette"),
3740      m_videoram(*this, "videoram"),
3841      m_colorram(*this, "colorram"),
3942      m_spriteram(*this, "spriteram"),
40      m_scrollram(*this, "scrollram"),
41      m_maincpu(*this, "maincpu"),
42      m_gfxdecode(*this, "gfxdecode"),
43      m_palette(*this, "palette")  { }
43      m_scrollram(*this, "scrollram") { }
4444
45   required_device<cpu_device> m_maincpu;
46   required_device<gfxdecode_device> m_gfxdecode;
47   required_device<palette_device> m_palette;
48
4549   required_shared_ptr<UINT8> m_videoram;
4650   required_shared_ptr<UINT8> m_colorram;
4751   required_shared_ptr<UINT8> m_spriteram;
4852   required_shared_ptr<UINT8> m_scrollram;
53   
4954   tilemap_t* m_tilemap;
5055   int m_nmi;
51   DECLARE_WRITE8_MEMBER(skyarmy_flip_screen_x_w);
52   DECLARE_WRITE8_MEMBER(skyarmy_flip_screen_y_w);
53   DECLARE_WRITE8_MEMBER(skyarmy_videoram_w);
54   DECLARE_WRITE8_MEMBER(skyarmy_colorram_w);
56   
57   DECLARE_WRITE8_MEMBER(flip_screen_x_w);
58   DECLARE_WRITE8_MEMBER(flip_screen_y_w);
59   DECLARE_WRITE8_MEMBER(videoram_w);
60   DECLARE_WRITE8_MEMBER(colorram_w);
5561   DECLARE_WRITE8_MEMBER(nmi_enable_w);
56   TILE_GET_INFO_MEMBER(get_skyarmy_tile_info);
62   
63   TILE_GET_INFO_MEMBER(get_tile_info);
64   
65   virtual void machine_start();
5766   virtual void video_start();
5867   DECLARE_PALETTE_INIT(skyarmy);
59   UINT32 screen_update_skyarmy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
60   INTERRUPT_GEN_MEMBER(skyarmy_nmi_source);
61   required_device<cpu_device> m_maincpu;
62   required_device<gfxdecode_device> m_gfxdecode;
63   required_device<palette_device> m_palette;
68   
69   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
70   
71   INTERRUPT_GEN_MEMBER(nmi_source);
6472};
6573
66WRITE8_MEMBER(skyarmy_state::skyarmy_flip_screen_x_w)
74void skyarmy_state::machine_start()
6775{
76   save_item(NAME(m_nmi));
77}
78
79WRITE8_MEMBER(skyarmy_state::flip_screen_x_w)
80{
6881   flip_screen_x_set(data & 0x01);
6982}
7083
71WRITE8_MEMBER(skyarmy_state::skyarmy_flip_screen_y_w)
84WRITE8_MEMBER(skyarmy_state::flip_screen_y_w)
7285{
7386   flip_screen_y_set(data & 0x01);
7487}
7588
76TILE_GET_INFO_MEMBER(skyarmy_state::get_skyarmy_tile_info)
89TILE_GET_INFO_MEMBER(skyarmy_state::get_tile_info)
7790{
7891   int code = m_videoram[tile_index];
7992   int attr = BITSWAP8(m_colorram[tile_index], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
r243646r243647
8194   SET_TILE_INFO_MEMBER(0, code, attr, 0);
8295}
8396
84WRITE8_MEMBER(skyarmy_state::skyarmy_videoram_w)
97WRITE8_MEMBER(skyarmy_state::videoram_w)
8598{
8699   m_videoram[offset] = data;
87100   m_tilemap->mark_tile_dirty(offset);
88101}
89102
90WRITE8_MEMBER(skyarmy_state::skyarmy_colorram_w)
103WRITE8_MEMBER(skyarmy_state::colorram_w)
91104{
92105   m_colorram[offset] = data;
93106   m_tilemap->mark_tile_dirty(offset);
r243646r243647
124137
125138void skyarmy_state::video_start()
126139{
127   m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(skyarmy_state::get_skyarmy_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
140   m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(skyarmy_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
128141   m_tilemap->set_scroll_cols(32);
129142}
130143
131144
132UINT32 skyarmy_state::screen_update_skyarmy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
145UINT32 skyarmy_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
133146{
134   UINT8 *spriteram = m_spriteram;
135147   int sx, sy, flipx, flipy, offs,pal;
136148   int i;
137149
r243646r243647
142154
143155   for (offs = 0 ; offs < 0x40; offs+=4)
144156   {
145      pal = BITSWAP8(spriteram[offs+2], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
157      pal = BITSWAP8(m_spriteram[offs+2], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
146158
147      sx = spriteram[offs+3];
148      sy = 240-(spriteram[offs]+1);
149      flipy = (spriteram[offs+1]&0x80)>>7;
150      flipx = (spriteram[offs+1]&0x40)>>6;
159      sx = m_spriteram[offs+3];
160      sy = 240-(m_spriteram[offs]+1);
161      flipy = (m_spriteram[offs+1]&0x80)>>7;
162      flipx = (m_spriteram[offs+1]&0x40)>>6;
151163
152164      m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
153         spriteram[offs+1]&0x3f,
165         m_spriteram[offs+1]&0x3f,
154166         pal,
155167         flipx,flipy,
156168         sx,sy,0);
r243646r243647
159171   return 0;
160172}
161173
162INTERRUPT_GEN_MEMBER(skyarmy_state::skyarmy_nmi_source)
174INTERRUPT_GEN_MEMBER(skyarmy_state::nmi_source)
163175{
164176   if(m_nmi) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
165177}
r243646r243647
174186static ADDRESS_MAP_START( skyarmy_map, AS_PROGRAM, 8, skyarmy_state )
175187   AM_RANGE(0x0000, 0x7fff) AM_ROM
176188   AM_RANGE(0x8000, 0x87ff) AM_RAM
177   AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(skyarmy_videoram_w) AM_SHARE("videoram") /* Video RAM */
178   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(skyarmy_colorram_w) AM_SHARE("colorram") /* Color RAM */
189   AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* Video RAM */
190   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") /* Color RAM */
179191   AM_RANGE(0x9800, 0x983f) AM_RAM AM_SHARE("spriteram") /* Sprites */
180192   AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("scrollram")  /* Scroll RAM */
181193   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW")
r243646r243647
183195   AM_RANGE(0xa002, 0xa002) AM_READ_PORT("P2")
184196   AM_RANGE(0xa003, 0xa003) AM_READ_PORT("SYSTEM")
185197   AM_RANGE(0xa004, 0xa004) AM_WRITE(nmi_enable_w) // ???
186   AM_RANGE(0xa005, 0xa005) AM_WRITE(skyarmy_flip_screen_x_w)
187   AM_RANGE(0xa006, 0xa006) AM_WRITE(skyarmy_flip_screen_y_w)
198   AM_RANGE(0xa005, 0xa005) AM_WRITE(flip_screen_x_w)
199   AM_RANGE(0xa006, 0xa006) AM_WRITE(flip_screen_y_w)
188200   AM_RANGE(0xa007, 0xa007) AM_WRITENOP
189201ADDRESS_MAP_END
190202
r243646r243647
286298   MCFG_CPU_PROGRAM_MAP(skyarmy_map)
287299   MCFG_CPU_IO_MAP(skyarmy_io_map)
288300   MCFG_CPU_VBLANK_INT_DRIVER("screen", skyarmy_state,  irq0_line_hold)
289   MCFG_CPU_PERIODIC_INT_DRIVER(skyarmy_state, skyarmy_nmi_source, 650)    /* Hz */
301   MCFG_CPU_PERIODIC_INT_DRIVER(skyarmy_state, nmi_source, 650)    /* Hz */
290302
291303   /* video hardware */
292304   MCFG_SCREEN_ADD("screen", RASTER)
r243646r243647
294306   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
295307   MCFG_SCREEN_SIZE(32*8,32*8)
296308   MCFG_SCREEN_VISIBLE_AREA(0*8,32*8-1,1*8,31*8-1)
297   MCFG_SCREEN_UPDATE_DRIVER(skyarmy_state, screen_update_skyarmy)
309   MCFG_SCREEN_UPDATE_DRIVER(skyarmy_state, screen_update)
298310   MCFG_SCREEN_PALETTE("palette")
299311
300312   MCFG_GFXDECODE_ADD("gfxdecode", "palette", skyarmy)
r243646r243647
327339   ROM_LOAD( "a6.bin",  0x0000, 0x0020, CRC(c721220b) SHA1(61b3320fb616c0600d56840cb6438616c7e0c6eb) )
328340ROM_END
329341
330GAME( 1982, skyarmy, 0, skyarmy, skyarmy, driver_device, 0, ROT90, "Shoei", "Sky Army", GAME_NO_COCKTAIL )
342GAME( 1982, skyarmy, 0, skyarmy, skyarmy, driver_device, 0, ROT90, "Shoei", "Sky Army", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/skydiver.c
r243646r243647
1111        * There is a problem with coin input not starting when in demo mode.
1212        * The NMI interrupt needs to be more accurate, to do 32V, adjusted
1313          to VBLANK.  This also affects sound.
14        * The cuurent value of 5 interrupts per frame, works pretty good,
14        * The current value of 5 interrupts per frame, works pretty good,
1515          but is not 100% accurate timing wise.
1616
1717****************************************************************************
r243646r243647
139139 *
140140 *************************************/
141141
142WRITE8_MEMBER(skydiver_state::skydiver_nmion_w)
142WRITE8_MEMBER(skydiver_state::nmion_w)
143143{
144144   m_nmion = offset;
145145}
146146
147147
148INTERRUPT_GEN_MEMBER(skydiver_state::skydiver_interrupt)
148INTERRUPT_GEN_MEMBER(skydiver_state::interrupt)
149149{
150150   /* Convert range data to divide value and write to sound */
151151   address_space &space = m_maincpu->space(AS_PROGRAM);
r243646r243647
167167 *
168168 *************************************/
169169
170WRITE8_MEMBER(skydiver_state::skydiver_sound_enable_w)
170WRITE8_MEMBER(skydiver_state::sound_enable_w)
171171{
172172   m_discrete->write(space, SKYDIVER_SOUND_EN, offset);
173173}
174174
175WRITE8_MEMBER(skydiver_state::skydiver_whistle_w)
175WRITE8_MEMBER(skydiver_state::whistle_w)
176176{
177177   m_discrete->write(space, NODE_RELATIVE(SKYDIVER_WHISTLE1_EN, (offset >> 1)), offset & 0x01);
178178}
r243646r243647
187187
188188static ADDRESS_MAP_START( skydiver_map, AS_PROGRAM, 8, skydiver_state )
189189   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
190   AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x4300) AM_READWRITE(skydiver_wram_r, skydiver_wram_w)
190   AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x4300) AM_READWRITE(wram_r, wram_w)
191191   AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x4000) AM_RAM       /* RAM B1 */
192   AM_RANGE(0x0400, 0x07ff) AM_MIRROR(0x4000) AM_RAM_WRITE(skydiver_videoram_w) AM_SHARE("videoram")       /* RAMs K1,M1,P1,J1,N1,K/L1,L1,H/J1 */
193   AM_RANGE(0x0800, 0x0801) AM_MIRROR(0x47f0) AM_WRITE(skydiver_lamp_s_w)
194   AM_RANGE(0x0802, 0x0803) AM_MIRROR(0x47f0) AM_WRITE(skydiver_lamp_k_w)
195   AM_RANGE(0x0804, 0x0805) AM_MIRROR(0x47f0) AM_WRITE(skydiver_start_lamp_1_w)
196   AM_RANGE(0x0806, 0x0807) AM_MIRROR(0x47f0) AM_WRITE(skydiver_start_lamp_2_w)
197   AM_RANGE(0x0808, 0x0809) AM_MIRROR(0x47f0) AM_WRITE(skydiver_lamp_y_w)
198   AM_RANGE(0x080a, 0x080b) AM_MIRROR(0x47f0) AM_WRITE(skydiver_lamp_d_w)
199   AM_RANGE(0x080c, 0x080d) AM_MIRROR(0x47f0) AM_WRITE(skydiver_sound_enable_w)
200   // AM_RANGE(0x1000, 0x1001) AM_MIRROR(0x47f0) AM_WRITE(skydiver_jump1_lamps_w)
201   AM_RANGE(0x1002, 0x1003) AM_MIRROR(0x47f0) AM_WRITE(skydiver_coin_lockout_w)
202   // AM_RANGE(0x1006, 0x1007) AM_MIRROR(0x47f0) AM_WRITE(skydiver_jump2_lamps_w)
203   AM_RANGE(0x1008, 0x100b) AM_MIRROR(0x47f0) AM_WRITE(skydiver_whistle_w)
204   AM_RANGE(0x100c, 0x100d) AM_MIRROR(0x47f0) AM_WRITE(skydiver_nmion_w)
205   AM_RANGE(0x100e, 0x100f) AM_MIRROR(0x47f0) AM_WRITE(skydiver_width_w)
192   AM_RANGE(0x0400, 0x07ff) AM_MIRROR(0x4000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")       /* RAMs K1,M1,P1,J1,N1,K/L1,L1,H/J1 */
193   AM_RANGE(0x0800, 0x0801) AM_MIRROR(0x47f0) AM_WRITE(lamp_s_w)
194   AM_RANGE(0x0802, 0x0803) AM_MIRROR(0x47f0) AM_WRITE(lamp_k_w)
195   AM_RANGE(0x0804, 0x0805) AM_MIRROR(0x47f0) AM_WRITE(start_lamp_1_w)
196   AM_RANGE(0x0806, 0x0807) AM_MIRROR(0x47f0) AM_WRITE(start_lamp_2_w)
197   AM_RANGE(0x0808, 0x0809) AM_MIRROR(0x47f0) AM_WRITE(lamp_y_w)
198   AM_RANGE(0x080a, 0x080b) AM_MIRROR(0x47f0) AM_WRITE(lamp_d_w)
199   AM_RANGE(0x080c, 0x080d) AM_MIRROR(0x47f0) AM_WRITE(sound_enable_w)
200   // AM_RANGE(0x1000, 0x1001) AM_MIRROR(0x47f0) AM_WRITE(jump1_lamps_w)
201   AM_RANGE(0x1002, 0x1003) AM_MIRROR(0x47f0) AM_WRITE(coin_lockout_w)
202   // AM_RANGE(0x1006, 0x1007) AM_MIRROR(0x47f0) AM_WRITE(jump2_lamps_w)
203   AM_RANGE(0x1008, 0x100b) AM_MIRROR(0x47f0) AM_WRITE(whistle_w)
204   AM_RANGE(0x100c, 0x100d) AM_MIRROR(0x47f0) AM_WRITE(nmion_w)
205   AM_RANGE(0x100e, 0x100f) AM_MIRROR(0x47f0) AM_WRITE(width_w)
206206   AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x47e0) AM_READ_PORT("IN0")
207207   AM_RANGE(0x1801, 0x1801) AM_MIRROR(0x47e0) AM_READ_PORT("IN1")
208208   AM_RANGE(0x1802, 0x1802) AM_MIRROR(0x47e0) AM_READ_PORT("IN2")
r243646r243647
217217   AM_RANGE(0x180b, 0x180b) AM_MIRROR(0x47e4) AM_READ_PORT("IN11")
218218   AM_RANGE(0x1810, 0x1810) AM_MIRROR(0x47e4) AM_READ_PORT("IN12")
219219   AM_RANGE(0x1811, 0x1811) AM_MIRROR(0x47e4) AM_READ_PORT("IN13")
220   AM_RANGE(0x2000, 0x201f) AM_MIRROR(0x47e0) AM_READ(watchdog_reset_r) AM_WRITE(skydiver_2000_201F_w)
220   AM_RANGE(0x2000, 0x201f) AM_MIRROR(0x47e0) AM_READ(watchdog_reset_r) AM_WRITE(_2000_201F_w)
221221   AM_RANGE(0x2800, 0x2fff) AM_MIRROR(0x4000) AM_ROM
222222   AM_RANGE(0x3000, 0x37ff) AM_MIRROR(0x4000) AM_ROM
223223   AM_RANGE(0x3800, 0x3fff) AM_ROM
r243646r243647
375375   /* basic machine hardware */
376376   MCFG_CPU_ADD("maincpu", M6800,MASTER_CLOCK/16)     /* ???? */
377377   MCFG_CPU_PROGRAM_MAP(skydiver_map)
378   MCFG_CPU_PERIODIC_INT_DRIVER(skydiver_state, skydiver_interrupt,  5*60)
378   MCFG_CPU_PERIODIC_INT_DRIVER(skydiver_state, interrupt,  5*60)
379379   MCFG_WATCHDOG_VBLANK_INIT(8)    // 128V clocks the same as VBLANK
380380
381381
r243646r243647
385385   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
386386   MCFG_SCREEN_SIZE(32*8, 32*8)
387387   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
388   MCFG_SCREEN_UPDATE_DRIVER(skydiver_state, screen_update_skydiver)
388   MCFG_SCREEN_UPDATE_DRIVER(skydiver_state, screen_update)
389389   MCFG_SCREEN_PALETTE("palette")
390390
391391   MCFG_GFXDECODE_ADD("gfxdecode", "palette", skydiver)
r243646r243647
432432 *
433433 *************************************/
434434
435GAMEL(1978, skydiver, 0, skydiver, skydiver, driver_device, 0, ROT0, "Atari", "Sky Diver", 0, layout_skydiver )
435GAMEL(1978, skydiver, 0, skydiver, skydiver, driver_device, 0, ROT0, "Atari", "Sky Diver", GAME_SUPPORTS_SAVE, layout_skydiver )
trunk/src/mame/includes/skydiver.h
r243646r243647
2424public:
2525   skydiver_state(const machine_config &mconfig, device_type type, const char *tag)
2626      : driver_device(mconfig, type, tag),
27      m_videoram(*this, "videoram") ,
2827      m_maincpu(*this, "maincpu"),
2928      m_discrete(*this, "discrete"),
3029      m_gfxdecode(*this, "gfxdecode"),
31      m_palette(*this, "palette") { }
30      m_palette(*this, "palette"),
31      m_videoram(*this, "videoram") { }
3232
33   required_device<cpu_device> m_maincpu;
34   required_device<discrete_device> m_discrete;
35   required_device<gfxdecode_device> m_gfxdecode;
36   required_device<palette_device> m_palette;
37
3338   required_shared_ptr<UINT8> m_videoram;
39   
3440   int m_nmion;
3541   tilemap_t *m_bg_tilemap;
3642   int m_width;
3743
38   DECLARE_WRITE8_MEMBER(skydiver_nmion_w);
39   DECLARE_WRITE8_MEMBER(skydiver_videoram_w);
40   DECLARE_READ8_MEMBER(skydiver_wram_r);
41   DECLARE_WRITE8_MEMBER(skydiver_wram_w);
42   DECLARE_WRITE8_MEMBER(skydiver_width_w);
43   DECLARE_WRITE8_MEMBER(skydiver_coin_lockout_w);
44   DECLARE_WRITE8_MEMBER(skydiver_start_lamp_1_w);
45   DECLARE_WRITE8_MEMBER(skydiver_start_lamp_2_w);
46   DECLARE_WRITE8_MEMBER(skydiver_lamp_s_w);
47   DECLARE_WRITE8_MEMBER(skydiver_lamp_k_w);
48   DECLARE_WRITE8_MEMBER(skydiver_lamp_y_w);
49   DECLARE_WRITE8_MEMBER(skydiver_lamp_d_w);
50   DECLARE_WRITE8_MEMBER(skydiver_2000_201F_w);
51   DECLARE_WRITE8_MEMBER(skydiver_sound_enable_w);
52   DECLARE_WRITE8_MEMBER(skydiver_whistle_w);
44   DECLARE_WRITE8_MEMBER(nmion_w);
45   DECLARE_WRITE8_MEMBER(videoram_w);
46   DECLARE_READ8_MEMBER(wram_r);
47   DECLARE_WRITE8_MEMBER(wram_w);
48   DECLARE_WRITE8_MEMBER(width_w);
49   DECLARE_WRITE8_MEMBER(coin_lockout_w);
50   DECLARE_WRITE8_MEMBER(start_lamp_1_w);
51   DECLARE_WRITE8_MEMBER(start_lamp_2_w);
52   DECLARE_WRITE8_MEMBER(lamp_s_w);
53   DECLARE_WRITE8_MEMBER(lamp_k_w);
54   DECLARE_WRITE8_MEMBER(lamp_y_w);
55   DECLARE_WRITE8_MEMBER(lamp_d_w);
56   DECLARE_WRITE8_MEMBER(_2000_201F_w);
57   DECLARE_WRITE8_MEMBER(sound_enable_w);
58   DECLARE_WRITE8_MEMBER(whistle_w);
59   
5360   TILE_GET_INFO_MEMBER(get_tile_info);
61   
5462   virtual void machine_reset();
5563   virtual void video_start();
5664   DECLARE_PALETTE_INIT(skydiver);
57   UINT32 screen_update_skydiver(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
58   INTERRUPT_GEN_MEMBER(skydiver_interrupt);
65   
66   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5967   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
60   required_device<cpu_device> m_maincpu;
61   required_device<discrete_device> m_discrete;
62   required_device<gfxdecode_device> m_gfxdecode;
63   required_device<palette_device> m_palette;
68   
69   INTERRUPT_GEN_MEMBER(interrupt);
6470};
6571
6672/*----------- defined in audio/skydiver.c -----------*/
trunk/src/mame/video/skydiver.c
r243646r243647
1414   address_space &space = m_maincpu->space(AS_PROGRAM);
1515
1616   /* reset all latches */
17   skydiver_start_lamp_1_w(space, 0, 0);
18   skydiver_start_lamp_2_w(space, 0, 0);
19   skydiver_lamp_s_w(space, 0, 0);
20   skydiver_lamp_k_w(space, 0, 0);
21   skydiver_lamp_y_w(space, 0, 0);
22   skydiver_lamp_d_w(space, 0, 0);
17   start_lamp_1_w(space, 0, 0);
18   start_lamp_2_w(space, 0, 0);
19   lamp_s_w(space, 0, 0);
20   lamp_k_w(space, 0, 0);
21   lamp_y_w(space, 0, 0);
22   lamp_d_w(space, 0, 0);
2323   output_set_value("lampi", 0);
2424   output_set_value("lampv", 0);
2525   output_set_value("lampe", 0);
2626   output_set_value("lampr", 0);
27   skydiver_width_w(space, 0, 0);
28   skydiver_coin_lockout_w(space, 0, 0);
27   width_w(space, 0, 0);
28   coin_lockout_w(space, 0, 0);
2929}
3030
3131
r243646r243647
5252void skydiver_state::video_start()
5353{
5454   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(skydiver_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
55   
56   save_item(NAME(m_nmion));
57   save_item(NAME(m_width));
5558}
5659
5760
r243646r243647
6164 *
6265 *************************************/
6366
64WRITE8_MEMBER(skydiver_state::skydiver_videoram_w)
67WRITE8_MEMBER(skydiver_state::videoram_w)
6568{
6669   m_videoram[offset] = data;
6770   m_bg_tilemap->mark_tile_dirty(offset);
6871}
6972
7073
71READ8_MEMBER(skydiver_state::skydiver_wram_r)
74READ8_MEMBER(skydiver_state::wram_r)
7275{
7376   return m_videoram[offset | 0x380];
7477}
7578
76WRITE8_MEMBER(skydiver_state::skydiver_wram_w)
79WRITE8_MEMBER(skydiver_state::wram_w)
7780{
7881   m_videoram[offset | 0x0380] = data;
7982}
8083
8184
82WRITE8_MEMBER(skydiver_state::skydiver_width_w)
85WRITE8_MEMBER(skydiver_state::width_w)
8386{
8487   m_width = offset;
8588}
8689
8790
88WRITE8_MEMBER(skydiver_state::skydiver_coin_lockout_w)
91WRITE8_MEMBER(skydiver_state::coin_lockout_w)
8992{
9093   coin_lockout_global_w(machine(), !offset);
9194}
9295
9396
94WRITE8_MEMBER(skydiver_state::skydiver_start_lamp_1_w)
97WRITE8_MEMBER(skydiver_state::start_lamp_1_w)
9598{
9699   set_led_status(machine(), 0, offset);
97100}
98101
99WRITE8_MEMBER(skydiver_state::skydiver_start_lamp_2_w)
102WRITE8_MEMBER(skydiver_state::start_lamp_2_w)
100103{
101104   set_led_status(machine(), 1, offset);
102105}
103106
104107
105WRITE8_MEMBER(skydiver_state::skydiver_lamp_s_w)
108WRITE8_MEMBER(skydiver_state::lamp_s_w)
106109{
107110   output_set_value("lamps", offset);
108111}
109112
110WRITE8_MEMBER(skydiver_state::skydiver_lamp_k_w)
113WRITE8_MEMBER(skydiver_state::lamp_k_w)
111114{
112115   output_set_value("lampk", offset);
113116}
114117
115WRITE8_MEMBER(skydiver_state::skydiver_lamp_y_w)
118WRITE8_MEMBER(skydiver_state::lamp_y_w)
116119{
117120   output_set_value("lampy", offset);
118121}
119122
120WRITE8_MEMBER(skydiver_state::skydiver_lamp_d_w)
123WRITE8_MEMBER(skydiver_state::lamp_d_w)
121124{
122125   output_set_value("lampd", offset);
123126}
124127
125WRITE8_MEMBER(skydiver_state::skydiver_2000_201F_w)
128WRITE8_MEMBER(skydiver_state::_2000_201F_w)
126129{
127130   int bit = offset & 0x01;
128131
r243646r243647
198201}
199202
200203
201UINT32 skydiver_state::screen_update_skydiver(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
204UINT32 skydiver_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
202205{
203206   m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
204207


Previous 199869 Revisions Next


© 1997-2024 The MAME Team