src/mess/video/odyssey2.c
| r2000 | r2001 | |
| 4 | 4 | |
| 5 | 5 | ***************************************************************************/ |
| 6 | 6 | |
| 7 | | #include <assert.h> |
| 8 | 7 | #include "driver.h" |
| 9 | 8 | #include "deprecat.h" |
| 10 | 9 | #include "cpu/i8039/i8039.h" |
| r2000 | r2001 | |
| 192 | 191 | iff = 0; |
| 193 | 192 | cpunum_set_input_line(machine, 0, 0, CLEAR_LINE); |
| 194 | 193 | control_status &= ~ 0x08; |
| 195 | | if ( video_screen_get_hpos( 0 ) < I824X_START_ACTIVE_SCAN || video_screen_get_hpos( 0 ) > I824X_END_ACTIVE_SCAN ) { |
| 194 | if ( video_screen_get_hpos( machine->primary_screen ) < I824X_START_ACTIVE_SCAN || video_screen_get_hpos( machine->primary_screen ) > I824X_END_ACTIVE_SCAN ) { |
| 196 | 195 | data |= 1; |
| 197 | 196 | } |
| 198 | 197 | |
| r2000 | r2001 | |
| 207 | 206 | case 0xa4: |
| 208 | 207 | |
| 209 | 208 | if ((o2_vdc.s.control & VDC_CONTROL_REG_STROBE_XY)) |
| 210 | | y_beam_pos = video_screen_get_vpos( 0 ) - start_vpos; |
| 209 | y_beam_pos = video_screen_get_vpos( machine->primary_screen ) - start_vpos; |
| 211 | 210 | |
| 212 | 211 | data = y_beam_pos; |
| 213 | 212 | |
| r2000 | r2001 | |
| 217 | 216 | case 0xa5: |
| 218 | 217 | |
| 219 | 218 | if ((o2_vdc.s.control & VDC_CONTROL_REG_STROBE_XY)) { |
| 220 | | x_beam_pos = video_screen_get_hpos( 0 ); |
| 219 | x_beam_pos = video_screen_get_hpos( machine->primary_screen ); |
| 221 | 220 | if ( x_beam_pos < I824X_START_ACTIVE_SCAN ) { |
| 222 | 221 | x_beam_pos = x_beam_pos - I824X_START_ACTIVE_SCAN + I824X_LINE_CLOCKS; |
| 223 | 222 | } else { |
| r2000 | r2001 | |
| 248 | 247 | && !(data & VDC_CONTROL_REG_STROBE_XY)) |
| 249 | 248 | { |
| 250 | 249 | /* Toggling strobe bit, tuck away values */ |
| 251 | | x_beam_pos = video_screen_get_hpos( 0 ); |
| 250 | x_beam_pos = video_screen_get_hpos( machine->primary_screen ); |
| 252 | 251 | if ( x_beam_pos < I824X_START_ACTIVE_SCAN ) { |
| 253 | 252 | x_beam_pos = x_beam_pos - I824X_START_ACTIVE_SCAN + 228; |
| 254 | 253 | } else { |
| 255 | 254 | x_beam_pos = x_beam_pos - I824X_START_ACTIVE_SCAN; |
| 256 | 255 | } |
| 257 | 256 | |
| 258 | | y_beam_pos = video_screen_get_vpos( 0 ) - start_vpos; |
| 257 | y_beam_pos = video_screen_get_vpos( machine->primary_screen ) - start_vpos; |
| 259 | 258 | |
| 260 | 259 | /* This is wrong but more games work with it, TODO: Figure |
| 261 | 260 | * out correct change. Maybe update the screen here?? |
| r2000 | r2001 | |
| 276 | 275 | |
| 277 | 276 | READ8_HANDLER( odyssey2_t1_r ) |
| 278 | 277 | { |
| 279 | | if ( video_screen_get_vpos( 0 ) > start_vpos && video_screen_get_vpos( 0 ) < start_vblank ) { |
| 280 | | if ( video_screen_get_hpos( 0 ) >= I824X_START_ACTIVE_SCAN && video_screen_get_hpos( 0 ) < I824X_END_ACTIVE_SCAN ) { |
| 278 | if ( video_screen_get_vpos( machine->primary_screen ) > start_vpos && video_screen_get_vpos( machine->primary_screen ) < start_vblank ) { |
| 279 | if ( video_screen_get_hpos( machine->primary_screen ) >= I824X_START_ACTIVE_SCAN && video_screen_get_hpos( machine->primary_screen ) < I824X_END_ACTIVE_SCAN ) { |
| 281 | 280 | return 1; |
| 282 | 281 | } |
| 283 | 282 | } |
| r2000 | r2001 | |
| 286 | 285 | |
| 287 | 286 | static TIMER_CALLBACK( i824x_scanline_callback ) { |
| 288 | 287 | UINT8 collision_map[160]; |
| 289 | | int vpos = video_screen_get_vpos( 0 ); |
| 288 | int vpos = video_screen_get_vpos( machine->primary_screen ); |
| 290 | 289 | |
| 291 | 290 | if ( vpos < start_vpos ) |
| 292 | 291 | return; |
| r2000 | r2001 | |
| 516 | 515 | } |
| 517 | 516 | |
| 518 | 517 | static TIMER_CALLBACK( i824x_hblank_callback ) { |
| 519 | | int vpos = video_screen_get_vpos( 0 ); |
| 518 | int vpos = video_screen_get_vpos( machine->primary_screen ); |
| 520 | 519 | |
| 521 | 520 | if ( vpos < start_vpos - 1 ) |
| 522 | 521 | return; |
| r2000 | r2001 | |
| 549 | 548 | tmp_bitmap = auto_bitmap_alloc( width, height, video_screen_get_format(screen) ); |
| 550 | 549 | |
| 551 | 550 | i824x_line_timer = timer_alloc( i824x_scanline_callback, NULL ); |
| 552 | | timer_adjust_periodic( i824x_line_timer, video_screen_get_time_until_pos(machine->primary_screen, 1, I824X_START_ACTIVE_SCAN ), 0, video_screen_get_scan_period( 0 ) ); |
| 551 | timer_adjust_periodic( i824x_line_timer, video_screen_get_time_until_pos(machine->primary_screen, 1, I824X_START_ACTIVE_SCAN ), 0, video_screen_get_scan_period( machine->primary_screen ) ); |
| 553 | 552 | |
| 554 | 553 | i824x_hblank_timer = timer_alloc( i824x_hblank_callback, NULL ); |
| 555 | | timer_adjust_periodic( i824x_hblank_timer, video_screen_get_time_until_pos(machine->primary_screen, 1, I824X_END_ACTIVE_SCAN + 18 ), 0, video_screen_get_scan_period( 0 ) ); |
| 554 | timer_adjust_periodic( i824x_hblank_timer, video_screen_get_time_until_pos(machine->primary_screen, 1, I824X_END_ACTIVE_SCAN + 18 ), 0, video_screen_get_scan_period( machine->primary_screen ) ); |
| 556 | 555 | } |
| 557 | 556 | |
| 558 | 557 | /*************************************************************************** |
src/mess/machine/wswan.c
| r2000 | r2001 | |
| 1417 | 1417 | if ( vdp.display_vertical != vdp.new_display_vertical ) { |
| 1418 | 1418 | vdp.display_vertical = vdp.new_display_vertical; |
| 1419 | 1419 | if ( vdp.display_vertical ) { |
| 1420 | | video_screen_set_visarea( 0, 5*8, 5*8 + WSWAN_Y_PIXELS - 1, 0, WSWAN_X_PIXELS - 1 ); |
| 1420 | video_screen_set_visarea( machine->primary_screen, 5*8, 5*8 + WSWAN_Y_PIXELS - 1, 0, WSWAN_X_PIXELS - 1 ); |
| 1421 | 1421 | } else { |
| 1422 | | video_screen_set_visarea( 0, 0, WSWAN_X_PIXELS - 1, 5*8, 5*8 + WSWAN_Y_PIXELS - 1 ); |
| 1422 | video_screen_set_visarea( machine->primary_screen, 0, WSWAN_X_PIXELS - 1, 5*8, 5*8 + WSWAN_Y_PIXELS - 1 ); |
| 1423 | 1423 | } |
| 1424 | 1424 | } |
| 1425 | 1425 | } |
src/mess/machine/amigakbd.c
| r2000 | r2001 | |
| 50 | 50 | /* if we still have more data, schedule another update */ |
| 51 | 51 | if ( key_buf_pos != key_cur_pos ) |
| 52 | 52 | { |
| 53 | | timer_adjust_oneshot(kbd_timer, attotime_div(video_screen_get_frame_period(0),4), 0); |
| 53 | timer_adjust_oneshot(kbd_timer, attotime_div(video_screen_get_frame_period(machine->primary_screen),4), 0); |
| 54 | 54 | } |
| 55 | 55 | } |
| 56 | 56 | |
| r2000 | r2001 | |
| 90 | 90 | /* if the buffer was empty and we have new data, start a timer to send the keystrokes */ |
| 91 | 91 | if ( key_buf_was_empty && ( key_buf_pos != key_cur_pos ) ) |
| 92 | 92 | { |
| 93 | | timer_adjust_oneshot(kbd_timer, attotime_div(video_screen_get_frame_period(0),4), 0); |
| 93 | timer_adjust_oneshot(kbd_timer, attotime_div(video_screen_get_frame_period(machine->primary_screen),4), 0); |
| 94 | 94 | } |
| 95 | 95 | } |
| 96 | 96 | } |
src/mess/machine/genesis.c
| r2000 | r2001 | |
| 2223 | 2223 | switch (genesis_vdp.genesis_vdp_regs[0x0c]&0x81) |
| 2224 | 2224 | { |
| 2225 | 2225 | case 0x00: // 32 cell |
| 2226 | | video_screen_set_visarea(0, 0, 32*8-1, 0, 224-1); |
| 2226 | video_screen_set_visarea(machine->primary_screen, 0, 32*8-1, 0, 224-1); |
| 2227 | 2227 | break; |
| 2228 | 2228 | case 0x01: // 40 cell corrupted |
| 2229 | 2229 | case 0x80: // illegal! |
| 2230 | 2230 | case 0x81: // 40 cell |
| 2231 | | video_screen_set_visarea(0, 0, 40*8-1, 0, 224-1); |
| 2231 | video_screen_set_visarea(machine->primary_screen, 0, 40*8-1, 0, 224-1); |
| 2232 | 2232 | break; |
| 2233 | 2233 | } |
| 2234 | 2234 | } |
src/mess/drivers/lynx.c
| r2000 | r2001 | |
| 6 | 6 | |
| 7 | 7 | ******************************************************************************/ |
| 8 | 8 | |
| 9 | | #include <zlib.h> |
| 10 | | |
| 11 | 9 | #include "driver.h" |
| 12 | 10 | #include "cpu/m6502/m6502.h" |
| 13 | 11 | #include "devices/snapquik.h" |
| r2000 | r2001 | |
| 83 | 81 | ; B1 1 EQU flip screen |
| 84 | 82 | ; B0 1 EQU video DMA enabled |
| 85 | 83 | */ |
| 86 | | void lynx_draw_lines(int newline) |
| 84 | void lynx_draw_lines(running_machine *machine, int newline) |
| 87 | 85 | { |
| 88 | 86 | static int height=-1, width=-1; |
| 89 | 87 | int h,w; |
| r2000 | r2001 | |
| 182 | 180 | { |
| 183 | 181 | width=w; |
| 184 | 182 | height=h; |
| 185 | | video_screen_set_visarea(0, 0, width-1, 0, height-1); |
| 183 | video_screen_set_visarea(machine->primary_screen, 0, width-1, 0, height-1); |
| 186 | 184 | } |
| 187 | 185 | } |
| 188 | 186 | } |
src/mess/drivers/x68k.c
| r2000 | r2001 | |
| 898 | 898 | { |
| 899 | 899 | case 0x00: |
| 900 | 900 | sys.sysport.contrast = data & 0x0f; // often used for screen fades / blanking |
| 901 | | container = render_container_get_screen(0); |
| 901 | container = render_container_get_screen(machine->primary_screen); |
| 902 | 902 | render_container_set_brightness(container,(float)(sys.sysport.contrast) / 14.0); |
| 903 | 903 | break; |
| 904 | 904 | case 0x01: |
| r2000 | r2001 | |
| 1450 | 1450 | // mfp_trigger_irq(MFP_IRQ_GPIP4); |
| 1451 | 1451 | // } |
| 1452 | 1452 | // if(sys.crtc.height == 256) |
| 1453 | | // video_screen_update_partial(0,256);//sys.crtc.reg[4]/2); |
| 1453 | // video_screen_update_partial(machine->primary_screen,256);//sys.crtc.reg[4]/2); |
| 1454 | 1454 | // else |
| 1455 | | // video_screen_update_partial(0,512);//sys.crtc.reg[4]); |
| 1455 | // video_screen_update_partial(machine->primary_screen,512);//sys.crtc.reg[4]); |
| 1456 | 1456 | } |
| 1457 | 1457 | |
| 1458 | 1458 | static int x68k_int_ack(int line) |
src/mess/drivers/a2600.c
| r2000 | r2001 | |
| 1371 | 1371 | if ( data >= supported_screen_heights[i] - 3 && data <= supported_screen_heights[i] + 3 ) { |
| 1372 | 1372 | if ( supported_screen_heights[i] != current_screen_height ) { |
| 1373 | 1373 | current_screen_height = supported_screen_heights[i]; |
| 1374 | | // video_screen_configure( 0, 228, current_screen_height, &visarea[i], HZ_TO_ATTOSECONDS( MASTER_CLOCK_NTSC ) * 228 * current_screen_height ); |
| 1374 | // video_screen_configure( machine->primary_screen, 228, current_screen_height, &visarea[i], HZ_TO_ATTOSECONDS( MASTER_CLOCK_NTSC ) * 228 * current_screen_height ); |
| 1375 | 1375 | } |
| 1376 | 1376 | } |
| 1377 | 1377 | } |
| r2000 | r2001 | |
| 1384 | 1384 | if ( data >= supported_screen_heights[i] - 3 && data <= supported_screen_heights[i] + 3 ) { |
| 1385 | 1385 | if ( supported_screen_heights[i] != current_screen_height ) { |
| 1386 | 1386 | current_screen_height = supported_screen_heights[i]; |
| 1387 | | // video_screen_configure( 0, 228, current_screen_height, &visarea[i], HZ_TO_ATTOSECONDS( MASTER_CLOCK_PAL ) * 228 * current_screen_height ); |
| 1387 | // video_screen_configure( machine->primary_screen, 228, current_screen_height, &visarea[i], HZ_TO_ATTOSECONDS( MASTER_CLOCK_PAL ) * 228 * current_screen_height ); |
| 1388 | 1388 | } |
| 1389 | 1389 | } |
| 1390 | 1390 | } |