src/mess/includes/astrocde.h
| r1962 | r1963 | |
| 19 | 19 | |
| 20 | 20 | /*----------- defined in video/astrocde.c -----------*/ |
| 21 | 21 | |
| 22 | | extern unsigned char *astrocade_videoram; |
| 22 | PALETTE_INIT( astrocade ); |
| 23 | READ8_HANDLER( astrocade_intercept_r ); |
| 24 | WRITE8_HANDLER( astrocade_magic_expand_color_w ); |
| 25 | WRITE8_HANDLER( astrocade_magic_control_w ); |
| 26 | WRITE8_HANDLER( astrocade_magicram_w ); |
| 23 | 27 | |
| 24 | | extern PALETTE_INIT( astrocade ); |
| 25 | | extern READ8_HANDLER( astrocade_intercept_r ); |
| 26 | | extern WRITE8_HANDLER( astrocade_videoram_w ); |
| 27 | | extern WRITE8_HANDLER( astrocade_magic_expand_color_w ); |
| 28 | | extern WRITE8_HANDLER( astrocade_magic_control_w ); |
| 29 | | extern WRITE8_HANDLER( astrocade_magicram_w ); |
| 28 | READ8_HANDLER( astrocade_video_retrace_r ); |
| 29 | WRITE8_HANDLER( astrocade_vertical_blank_w ); |
| 30 | 30 | |
| 31 | | extern READ8_HANDLER( astrocade_video_retrace_r ); |
| 32 | | extern WRITE8_HANDLER( astrocade_vertical_blank_w ); |
| 31 | WRITE8_HANDLER( astrocade_mode_w ); |
| 33 | 32 | |
| 34 | | WRITE8_HANDLER ( astrocade_mode_w ); |
| 33 | WRITE8_HANDLER( astrocade_colour_register_w ); |
| 34 | WRITE8_HANDLER( astrocade_colour_block_w ); |
| 35 | WRITE8_HANDLER( astrocade_colour_split_w ); |
| 35 | 36 | |
| 36 | | WRITE8_HANDLER ( astrocade_colour_register_w ); |
| 37 | | WRITE8_HANDLER ( astrocade_colour_block_w ); |
| 38 | | WRITE8_HANDLER ( astrocade_colour_split_w ); |
| 39 | | |
| 40 | 37 | VIDEO_UPDATE( astrocde ); |
| 41 | 38 | |
| 42 | 39 | |
src/mess/video/astrocde.c
| r1962 | r1963 | |
| 19 | 19 | #define VERBOSE 0 |
| 20 | 20 | #define LOG(x) do { if (VERBOSE) logerror x; } while (0) |
| 21 | 21 | |
| 22 | | unsigned char *astrocade_videoram; |
| 23 | 22 | static int magic_expand_color, magic_control, magic_expand_flipflop, collision; |
| 24 | 23 | |
| 25 | 24 | static int ColourSplit=0; /* Colour System vars */ |
| r1962 | r1963 | |
| 191 | 190 | |
| 192 | 191 | } |
| 193 | 192 | |
| 194 | | WRITE8_HANDLER ( astrocade_videoram_w ) |
| 195 | | { |
| 196 | | if ((offset < 0x1000) && (astrocade_videoram[offset] != data)) |
| 197 | | { |
| 198 | | astrocade_videoram[offset] = data; |
| 199 | | } |
| 200 | | } |
| 201 | 193 | |
| 202 | | |
| 203 | 194 | WRITE8_HANDLER ( astrocade_magic_expand_color_w ) |
| 204 | 195 | { |
| 205 | 196 | //LOG(("%04x: magic_expand_color = %02x\n",cpu_getpc(),data)); |
| r1962 | r1963 | |
| 312 | 303 | |
| 313 | 304 | if (magic_control & 0x30) |
| 314 | 305 | { |
| 315 | | old_data = astrocade_videoram[offset]; |
| 306 | old_data = videoram[offset]; |
| 316 | 307 | collision &= 0x0f; |
| 317 | 308 | |
| 318 | 309 | if (data | old_data) |
| r1962 | r1963 | |
| 329 | 320 | } |
| 330 | 321 | |
| 331 | 322 | if (magic_control & XOR_MASK) |
| 332 | | data ^= astrocade_videoram[offset]; /* draw in XOR mode */ |
| 323 | data ^= videoram[offset]; /* draw in XOR mode */ |
| 333 | 324 | else if (magic_control & OR_MASK) |
| 334 | | data |= astrocade_videoram[offset]; /* draw in OR mode */ |
| 325 | data |= videoram[offset]; /* draw in OR mode */ |
| 335 | 326 | |
| 336 | 327 | /* else draw in copy mode */ |
| 328 | videoram[offset] = data; |
| 337 | 329 | |
| 338 | | astrocade_videoram_w(machine, offset,data); |
| 339 | | |
| 340 | 330 | magic_expand_flipflop ^= 1; |
| 341 | 331 | } |
| 342 | 332 | |
| r1962 | r1963 | |
| 366 | 356 | for(i=0;i<num_bytes;i++,memloc++) |
| 367 | 357 | { |
| 368 | 358 | if (line < VerticalBlank) |
| 369 | | data = astrocade_videoram[memloc]; |
| 359 | data = videoram[memloc]; |
| 370 | 360 | else |
| 371 | 361 | data = BackgroundData; |
| 372 | 362 | |
src/mess/drivers/astrocde.c
| r1962 | r1963 | |
| 63 | 63 | static ADDRESS_MAP_START( astrocade_mem, ADDRESS_SPACE_PROGRAM, 8 ) |
| 64 | 64 | AM_RANGE(0x0000, 0x0fff) AM_READWRITE(MRA8_ROM, astrocade_magicram_w) |
| 65 | 65 | 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 */ |
| 67 | 67 | ADDRESS_MAP_END |
| 68 | 68 | |
| 69 | 69 | |