Previous 15994 Revisions Next

r1963 Wednesday 12th March, 2008 at 14:21:27 UTC by Dirk Best
[ASTROCDE] Simplified videoram access
[src/mess/drivers]astrocde.c
[src/mess/includes]astrocde.h
[src/mess/video]astrocde.c

src/mess/includes/astrocde.h
r1962r1963
1919
2020/*----------- defined in video/astrocde.c -----------*/
2121
22extern unsigned char *astrocade_videoram;
22PALETTE_INIT( astrocade );
23READ8_HANDLER( astrocade_intercept_r );
24WRITE8_HANDLER( astrocade_magic_expand_color_w );
25WRITE8_HANDLER( astrocade_magic_control_w );
26WRITE8_HANDLER( astrocade_magicram_w );
2327
24extern PALETTE_INIT( astrocade );
25extern  READ8_HANDLER( astrocade_intercept_r );
26extern WRITE8_HANDLER( astrocade_videoram_w );
27extern WRITE8_HANDLER( astrocade_magic_expand_color_w );
28extern WRITE8_HANDLER( astrocade_magic_control_w );
29extern WRITE8_HANDLER( astrocade_magicram_w );
28READ8_HANDLER( astrocade_video_retrace_r );
29WRITE8_HANDLER( astrocade_vertical_blank_w );
3030
31extern  READ8_HANDLER( astrocade_video_retrace_r );
32extern WRITE8_HANDLER( astrocade_vertical_blank_w );
31WRITE8_HANDLER( astrocade_mode_w );
3332
34WRITE8_HANDLER ( astrocade_mode_w );
33WRITE8_HANDLER( astrocade_colour_register_w );
34WRITE8_HANDLER( astrocade_colour_block_w );
35WRITE8_HANDLER( astrocade_colour_split_w );
3536
36WRITE8_HANDLER ( astrocade_colour_register_w );
37WRITE8_HANDLER ( astrocade_colour_block_w );
38WRITE8_HANDLER ( astrocade_colour_split_w );
39
4037VIDEO_UPDATE( astrocde );
4138
4239
src/mess/video/astrocde.c
r1962r1963
1919#define VERBOSE 0
2020#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
2121
22unsigned char *astrocade_videoram;
2322static int magic_expand_color, magic_control, magic_expand_flipflop, collision;
2423
2524static int ColourSplit=0;                        /* Colour System vars */
r1962r1963
191190
192191}
193192
194WRITE8_HANDLER ( astrocade_videoram_w )
195{
196   if ((offset < 0x1000) && (astrocade_videoram[offset] != data))
197   {
198      astrocade_videoram[offset] = data;
199    }
200}
201193
202
203194WRITE8_HANDLER ( astrocade_magic_expand_color_w )
204195{
205196   //LOG(("%04x: magic_expand_color = %02x\n",cpu_getpc(),data));
r1962r1963
312303
313304   if (magic_control & 0x30)
314305   {
315      old_data = astrocade_videoram[offset];
306      old_data = videoram[offset];
316307      collision &= 0x0f;
317308
318309      if (data | old_data)
r1962r1963
329320   }
330321
331322   if (magic_control & XOR_MASK)
332      data ^= astrocade_videoram[offset];       /* draw in XOR mode */
323      data ^= videoram[offset];       /* draw in XOR mode */
333324   else if (magic_control & OR_MASK)
334      data |= astrocade_videoram[offset];      /* draw in OR mode */
325      data |= videoram[offset];      /* draw in OR mode */
335326
336327   /* else draw in copy mode */
328   videoram[offset] = data;
337329
338   astrocade_videoram_w(machine, offset,data);
339
340330   magic_expand_flipflop ^= 1;
341331}
342332
r1962r1963
366356   for(i=0;i<num_bytes;i++,memloc++)
367357   {
368358      if (line < VerticalBlank)
369         data = astrocade_videoram[memloc];
359         data = videoram[memloc];
370360      else
371361         data = BackgroundData;
372362
src/mess/drivers/astrocde.c
r1962r1963
6363static ADDRESS_MAP_START( astrocade_mem, ADDRESS_SPACE_PROGRAM, 8 )
6464   AM_RANGE(0x0000, 0x0fff) AM_READWRITE(MRA8_ROM, astrocade_magicram_w)
6565   AM_RANGE(0x1000, 0x3fff) AM_ROM /* Star Fortress writes in here?? */
66   AM_RANGE(0x4000, 0x4fff) AM_READWRITE(MRA8_RAM, astrocade_videoram_w) AM_BASE(&astrocade_videoram) AM_SIZE(&videoram_size) /* ASG */
66   AM_RANGE(0x4000, 0x4fff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size) /* ASG */
6767ADDRESS_MAP_END
6868
6969

Previous 15994 Revisions Next


© 1998-2018 The MESS Team