trunk/src/emu/video/pc_vga.c
| r18169 | r18170 | |
| 326 | 326 | #define LOG_ACCESSES 0 |
| 327 | 327 | #define LOG_REGISTERS 0 |
| 328 | 328 | |
| 329 | #define LOG_8514 0 |
| 330 | |
| 329 | 331 | static VIDEO_RESET( vga ); |
| 330 | 332 | |
| 331 | 333 | /*************************************************************************** |
| r18169 | r18170 | |
| 3018 | 3020 | fatalerror("TODO: s3 bank selects above 1M\n"); |
| 3019 | 3021 | break; |
| 3020 | 3022 | default: |
| 3021 | | logerror("S3: 3D4 index %02x write %02x\n",index,data); |
| 3023 | if(LOG_8514) logerror("S3: 3D4 index %02x write %02x\n",index,data); |
| 3022 | 3024 | break; |
| 3023 | 3025 | } |
| 3024 | 3026 | } |
| r18169 | r18170 | |
| 3377 | 3379 | WRITE16_HANDLER(s3_line_error_w) |
| 3378 | 3380 | { |
| 3379 | 3381 | s3.line_errorterm = data; |
| 3380 | | logerror("S3: Line Parameter/Error Term write %04x\n",data); |
| 3382 | if(LOG_8514) logerror("S3: Line Parameter/Error Term write %04x\n",data); |
| 3381 | 3383 | } |
| 3382 | 3384 | |
| 3383 | 3385 | /* |
| r18169 | r18170 | |
| 3405 | 3407 | { |
| 3406 | 3408 | UINT16 ret = 0x0000; |
| 3407 | 3409 | |
| 3408 | | //logerror("S3: 9AE8 read\n"); |
| 3410 | //if(LOG_8514) logerror("S3: 9AE8 read\n"); |
| 3409 | 3411 | if(ibm8514.gpbusy == true) |
| 3410 | 3412 | ret |= 0x0200; |
| 3411 | 3413 | if(ibm8514.data_avail == true) |
| r18169 | r18170 | |
| 3462 | 3464 | { |
| 3463 | 3465 | UINT16 ret = 0x0000; |
| 3464 | 3466 | |
| 3465 | | //logerror("S3: 9AE8 read\n"); |
| 3467 | //if(LOG_8514) logerror("S3: 9AE8 read\n"); |
| 3466 | 3468 | if(s3.enable_8514 != 0) |
| 3467 | 3469 | { |
| 3468 | 3470 | if(ibm8514.gpbusy == true) |
| r18169 | r18170 | |
| 3573 | 3575 | case 0x0000: // NOP (for "Short Stroke Vectors") |
| 3574 | 3576 | ibm8514.state = IBM8514_IDLE; |
| 3575 | 3577 | ibm8514.gpbusy = false; |
| 3576 | | logerror("S3: Command (%04x) - NOP (Short Stroke Vector)\n",s3.current_cmd); |
| 3578 | if(LOG_8514) logerror("S3: Command (%04x) - NOP (Short Stroke Vector)\n",s3.current_cmd); |
| 3577 | 3579 | break; |
| 3578 | 3580 | case 0x2000: // Line |
| 3579 | 3581 | ibm8514.state = IBM8514_IDLE; |
| r18169 | r18170 | |
| 3584 | 3586 | { |
| 3585 | 3587 | ibm8514.state = IBM8514_DRAWING_LINE; |
| 3586 | 3588 | ibm8514.data_avail = true; |
| 3587 | | logerror("S3: Command (%04x) - Vector Line (WAIT) %i,%i \n",s3.current_cmd,s3.curr_x,s3.curr_y); |
| 3589 | if(LOG_8514) logerror("S3: Command (%04x) - Vector Line (WAIT) %i,%i \n",s3.current_cmd,s3.curr_x,s3.curr_y); |
| 3588 | 3590 | } |
| 3589 | 3591 | else |
| 3590 | 3592 | { |
| 3591 | 3593 | ibm8514_draw_vector(s3.rect_width,(data & 0x00e0) >> 5,(data & 0010) ? true : false); |
| 3592 | | logerror("S3: Command (%04x) - Vector Line - %i,%i \n",s3.current_cmd,s3.curr_x,s3.curr_y); |
| 3594 | if(LOG_8514) logerror("S3: Command (%04x) - Vector Line - %i,%i \n",s3.current_cmd,s3.curr_x,s3.curr_y); |
| 3593 | 3595 | } |
| 3594 | 3596 | } |
| 3595 | 3597 | else |
| r18169 | r18170 | |
| 3603 | 3605 | int count = 0; |
| 3604 | 3606 | INT16 temp; |
| 3605 | 3607 | |
| 3606 | | logerror("S3: Command (%04x) - Line (Bresenham) - %i,%i Axial %i, Diagonal %i, Error %i, Major Axis %i, Minor Axis %i\n",s3.current_cmd, |
| 3608 | if(LOG_8514) logerror("S3: Command (%04x) - Line (Bresenham) - %i,%i Axial %i, Diagonal %i, Error %i, Major Axis %i, Minor Axis %i\n",s3.current_cmd, |
| 3607 | 3609 | s3.curr_x,s3.curr_y,s3.line_axial_step,s3.line_diagonal_step,s3.line_errorterm,s3.rect_width,s3.rect_height); |
| 3608 | 3610 | |
| 3609 | 3611 | if((data & 0x0040)) |
| r18169 | r18170 | |
| 3635 | 3637 | //ibm8514.gpbusy = true; // DirectX 5 keeps waiting for the busy bit to be clear... |
| 3636 | 3638 | s3.bus_size = (data & 0x0600) >> 9; |
| 3637 | 3639 | ibm8514.data_avail = true; |
| 3638 | | logerror("S3: Command (%04x) - Rectangle Fill (WAIT) %i,%i Width: %i Height: %i Colour: %08x\n",s3.current_cmd,s3.curr_x, |
| 3640 | if(LOG_8514) logerror("S3: Command (%04x) - Rectangle Fill (WAIT) %i,%i Width: %i Height: %i Colour: %08x\n",s3.current_cmd,s3.curr_x, |
| 3639 | 3641 | s3.curr_y,s3.rect_width,s3.rect_height,s3.fgcolour); |
| 3640 | 3642 | break; |
| 3641 | 3643 | } |
| 3642 | | logerror("S3: Command (%04x) - Rectangle Fill %i,%i Width: %i Height: %i Colour: %08x\n",s3.current_cmd,s3.curr_x, |
| 3644 | if(LOG_8514) logerror("S3: Command (%04x) - Rectangle Fill %i,%i Width: %i Height: %i Colour: %08x\n",s3.current_cmd,s3.curr_x, |
| 3643 | 3645 | s3.curr_y,s3.rect_width,s3.rect_height,s3.fgcolour); |
| 3644 | 3646 | off = 0; |
| 3645 | 3647 | off += (VGA_LINE_LENGTH * s3.curr_y); |
| r18169 | r18170 | |
| 3688 | 3690 | ibm8514.gpbusy = false; |
| 3689 | 3691 | break; |
| 3690 | 3692 | case 0xc000: // BitBLT |
| 3691 | | logerror("S3: Command (%04x) - BitBLT from %i,%i to %i,%i Width: %i Height: %i\n",s3.current_cmd, |
| 3693 | if(LOG_8514) logerror("S3: Command (%04x) - BitBLT from %i,%i to %i,%i Width: %i Height: %i\n",s3.current_cmd, |
| 3692 | 3694 | s3.curr_x,s3.curr_y,s3.dest_x,s3.dest_y,s3.rect_width,s3.rect_height); |
| 3693 | 3695 | off = 0; |
| 3694 | 3696 | off += (VGA_LINE_LENGTH * s3.dest_y); |
| r18169 | r18170 | |
| 3746 | 3748 | ibm8514.gpbusy = false; |
| 3747 | 3749 | break; |
| 3748 | 3750 | case 0xe000: // Pattern Fill |
| 3749 | | logerror("S3: Command (%04x) - Pattern Fill - source %i,%i dest %i,%i Width: %i Height: %i\n",s3.current_cmd, |
| 3751 | if(LOG_8514) logerror("S3: Command (%04x) - Pattern Fill - source %i,%i dest %i,%i Width: %i Height: %i\n",s3.current_cmd, |
| 3750 | 3752 | s3.curr_x,s3.curr_y,s3.dest_x,s3.dest_y,s3.rect_width,s3.rect_height); |
| 3751 | 3753 | off = 0; |
| 3752 | 3754 | off += (VGA_LINE_LENGTH * s3.dest_y); |
| r18169 | r18170 | |
| 3817 | 3819 | default: |
| 3818 | 3820 | ibm8514.state = IBM8514_IDLE; |
| 3819 | 3821 | ibm8514.gpbusy = false; |
| 3820 | | logerror("S3: Unknown command: %04x\n",data); |
| 3822 | if(LOG_8514) logerror("S3: Unknown command: %04x\n",data); |
| 3821 | 3823 | } |
| 3822 | 3824 | } |
| 3823 | 3825 | |
| r18169 | r18170 | |
| 3847 | 3849 | { |
| 3848 | 3850 | s3.line_axial_step = data; |
| 3849 | 3851 | s3.dest_y = data; |
| 3850 | | logerror("S3: Line Axial Step / Destination Y write %04x\n",data); |
| 3852 | if(LOG_8514) logerror("S3: Line Axial Step / Destination Y write %04x\n",data); |
| 3851 | 3853 | } |
| 3852 | 3854 | |
| 3853 | 3855 | /* |
| r18169 | r18170 | |
| 3872 | 3874 | { |
| 3873 | 3875 | s3.line_diagonal_step = data; |
| 3874 | 3876 | s3.dest_x = data; |
| 3875 | | logerror("S3: Line Diagonal Step / Destination X write %04x\n",data); |
| 3877 | if(LOG_8514) logerror("S3: Line Diagonal Step / Destination X write %04x\n",data); |
| 3876 | 3878 | } |
| 3877 | 3879 | |
| 3878 | 3880 | /* |
| r18169 | r18170 | |
| 4024 | 4026 | ibm8514_draw_ssv(data >> 8); |
| 4025 | 4027 | ibm8514_draw_ssv(data & 0xff); |
| 4026 | 4028 | } |
| 4027 | | logerror("8514/A: Short Stroke Vector write %04x\n",data); |
| 4029 | if(LOG_8514) logerror("8514/A: Short Stroke Vector write %04x\n",data); |
| 4028 | 4030 | } |
| 4029 | 4031 | |
| 4030 | 4032 | static void ibm8514_wait_draw_vector() |
| r18169 | r18170 | |
| 4114 | 4116 | WRITE16_HANDLER( s3_width_w ) |
| 4115 | 4117 | { |
| 4116 | 4118 | s3.rect_width = data & 0x1fff; |
| 4117 | | logerror("S3: Major Axis Pixel Count / Rectangle Width write %04x\n",data); |
| 4119 | if(LOG_8514) logerror("S3: Major Axis Pixel Count / Rectangle Width write %04x\n",data); |
| 4118 | 4120 | } |
| 4119 | 4121 | |
| 4120 | 4122 | READ16_HANDLER(s3_currentx_r) |
| r18169 | r18170 | |
| 4126 | 4128 | { |
| 4127 | 4129 | s3.curr_x = data; |
| 4128 | 4130 | s3.prev_x = data; |
| 4129 | | logerror("S3: Current X set to %04x (%i)\n",data,s3.curr_x); |
| 4131 | if(LOG_8514) logerror("S3: Current X set to %04x (%i)\n",data,s3.curr_x); |
| 4130 | 4132 | } |
| 4131 | 4133 | |
| 4132 | 4134 | READ16_HANDLER(s3_currenty_r) |
| r18169 | r18170 | |
| 4138 | 4140 | { |
| 4139 | 4141 | s3.curr_y = data; |
| 4140 | 4142 | s3.prev_y = data; |
| 4141 | | logerror("S3: Current Y set to %04x (%i)\n",data,s3.curr_y); |
| 4143 | if(LOG_8514) logerror("S3: Current Y set to %04x (%i)\n",data,s3.curr_y); |
| 4142 | 4144 | } |
| 4143 | 4145 | |
| 4144 | 4146 | READ16_HANDLER(s3_fgcolour_r) |
| r18169 | r18170 | |
| 4149 | 4151 | WRITE16_HANDLER(s3_fgcolour_w) |
| 4150 | 4152 | { |
| 4151 | 4153 | s3.fgcolour = data; |
| 4152 | | logerror("S3: Foreground Colour write %04x\n",data); |
| 4154 | if(LOG_8514) logerror("S3: Foreground Colour write %04x\n",data); |
| 4153 | 4155 | } |
| 4154 | 4156 | |
| 4155 | 4157 | READ16_HANDLER(s3_bgcolour_r) |
| r18169 | r18170 | |
| 4160 | 4162 | WRITE16_HANDLER(s3_bgcolour_w) |
| 4161 | 4163 | { |
| 4162 | 4164 | s3.bgcolour = data; |
| 4163 | | logerror("S3: Background Colour write %04x\n",data); |
| 4165 | if(LOG_8514) logerror("S3: Background Colour write %04x\n",data); |
| 4164 | 4166 | } |
| 4165 | 4167 | |
| 4166 | 4168 | READ16_HANDLER( s3_multifunc_r ) |
| r18169 | r18170 | |
| 4179 | 4181 | return s3.scissors_right; |
| 4180 | 4182 | // TODO: remaining functions |
| 4181 | 4183 | default: |
| 4182 | | logerror("S3: Unimplemented multifunction register %i selected\n",s3.multifunc_sel); |
| 4184 | if(LOG_8514) logerror("S3: Unimplemented multifunction register %i selected\n",s3.multifunc_sel); |
| 4183 | 4185 | return 0xff; |
| 4184 | 4186 | } |
| 4185 | 4187 | } |
| r18169 | r18170 | |
| 4196 | 4198 | */ |
| 4197 | 4199 | case 0x0000: |
| 4198 | 4200 | s3.rect_height = data & 0x0fff; |
| 4199 | | logerror("S3: Minor Axis Pixel Count / Rectangle Height write %04x\n",data); |
| 4201 | if(LOG_8514) logerror("S3: Minor Axis Pixel Count / Rectangle Height write %04x\n",data); |
| 4200 | 4202 | break; |
| 4201 | 4203 | /* |
| 4202 | 4204 | BEE8h index 01h W(R/W): Top Scissors Register (SCISSORS_T). |
| r18169 | r18170 | |
| 4221 | 4223 | */ |
| 4222 | 4224 | case 0x1000: |
| 4223 | 4225 | s3.scissors_top = data & 0x0fff; |
| 4224 | | logerror("S3: Scissors Top write %04x\n",data); |
| 4226 | if(LOG_8514) logerror("S3: Scissors Top write %04x\n",data); |
| 4225 | 4227 | break; |
| 4226 | 4228 | case 0x2000: |
| 4227 | 4229 | s3.scissors_left = data & 0x0fff; |
| 4228 | | logerror("S3: Scissors Left write %04x\n",data); |
| 4230 | if(LOG_8514) logerror("S3: Scissors Left write %04x\n",data); |
| 4229 | 4231 | break; |
| 4230 | 4232 | case 0x3000: |
| 4231 | 4233 | s3.scissors_bottom = data & 0x0fff; |
| 4232 | | logerror("S3: Scissors Bottom write %04x\n",data); |
| 4234 | if(LOG_8514) logerror("S3: Scissors Bottom write %04x\n",data); |
| 4233 | 4235 | break; |
| 4234 | 4236 | case 0x4000: |
| 4235 | 4237 | s3.scissors_right = data & 0x0fff; |
| 4236 | | logerror("S3: Scissors Right write %04x\n",data); |
| 4238 | if(LOG_8514) logerror("S3: Scissors Right write %04x\n",data); |
| 4237 | 4239 | break; |
| 4238 | 4240 | /* |
| 4239 | 4241 | BEE8h index 0Ah W(R/W): Pixel Control Register (PIX_CNTL). |
| r18169 | r18170 | |
| 4247 | 4249 | */ |
| 4248 | 4250 | case 0xa000: |
| 4249 | 4251 | s3.pixel_control = data; |
| 4250 | | logerror("S3: Pixel control write %04x\n",data); |
| 4252 | if(LOG_8514) logerror("S3: Pixel control write %04x\n",data); |
| 4251 | 4253 | break; |
| 4252 | 4254 | /* |
| 4253 | 4255 | BEE8h index 0Fh W(W): Read Register Select Register (READ_SEL) (801/5,928) |
| r18169 | r18170 | |
| 4269 | 4271 | */ |
| 4270 | 4272 | case 0xf000: |
| 4271 | 4273 | s3.multifunc_sel = data & 0x000f; |
| 4272 | | logerror("S3: Multifunction select write %04x\n",data); |
| 4274 | if(LOG_8514) logerror("S3: Multifunction select write %04x\n",data); |
| 4273 | 4275 | default: |
| 4274 | | logerror("S3: Unimplemented multifunction register %i write %03x\n",data >> 12,data & 0x0fff); |
| 4276 | if(LOG_8514) logerror("S3: Unimplemented multifunction register %i write %03x\n",data >> 12,data & 0x0fff); |
| 4275 | 4277 | } |
| 4276 | 4278 | } |
| 4277 | 4279 | |
| r18169 | r18170 | |
| 4467 | 4469 | WRITE16_HANDLER(s3_backmix_w) |
| 4468 | 4470 | { |
| 4469 | 4471 | s3.bgmix = data; |
| 4470 | | logerror("S3: BG Mix write %04x\n",data); |
| 4472 | if(LOG_8514) logerror("S3: BG Mix write %04x\n",data); |
| 4471 | 4473 | } |
| 4472 | 4474 | |
| 4473 | 4475 | READ16_HANDLER(s3_foremix_r) |
| r18169 | r18170 | |
| 4478 | 4480 | WRITE16_HANDLER(s3_foremix_w) |
| 4479 | 4481 | { |
| 4480 | 4482 | s3.fgmix = data; |
| 4481 | | logerror("S3: FG Mix write %04x\n",data); |
| 4483 | if(LOG_8514) logerror("S3: FG Mix write %04x\n",data); |
| 4482 | 4484 | } |
| 4483 | 4485 | |
| 4484 | 4486 | READ16_HANDLER(s3_pixel_xfer_r) |
| r18169 | r18170 | |
| 4505 | 4507 | if(ibm8514.state == IBM8514_DRAWING_LINE) |
| 4506 | 4508 | ibm8514_wait_draw_vector(); |
| 4507 | 4509 | |
| 4508 | | logerror("S3: Pixel Transfer = %08x\n",s3.pixel_xfer); |
| 4510 | if(LOG_8514) logerror("S3: Pixel Transfer = %08x\n",s3.pixel_xfer); |
| 4509 | 4511 | } |
| 4510 | 4512 | |
| 4511 | 4513 | READ8_HANDLER( s3_mem_r ) |
| r18169 | r18170 | |
| 4739 | 4741 | s3_multifunc_w(space,0,s3.mmio_bee8,0xffff); |
| 4740 | 4742 | break; |
| 4741 | 4743 | default: |
| 4742 | | logerror("S3: MMIO offset %05x write %02x\n",offset+0xa0000,data); |
| 4744 | if(LOG_8514) logerror("S3: MMIO offset %05x write %02x\n",offset+0xa0000,data); |
| 4743 | 4745 | } |
| 4744 | 4746 | return; |
| 4745 | 4747 | } |
| r18169 | r18170 | |
| 5106 | 5108 | { |
| 5107 | 5109 | ibm8514.htotal = data & 0x01ff; |
| 5108 | 5110 | //vga.crtc.horz_total = data & 0x01ff; |
| 5109 | | logerror("8514/A: Horizontal total write %04x\n",data); |
| 5111 | if(LOG_8514) logerror("8514/A: Horizontal total write %04x\n",data); |
| 5110 | 5112 | } |
| 5111 | 5113 | |
| 5112 | 5114 | /* |
| r18169 | r18170 | |
| 5158 | 5160 | { |
| 5159 | 5161 | ibm8514.subctrl = data; |
| 5160 | 5162 | ibm8514.substatus &= ~(data & 0x0f); // reset interrupts |
| 5161 | | // logerror("8514/A: Subsystem control write %04x\n",data); |
| 5163 | // if(LOG_8514) logerror("8514/A: Subsystem control write %04x\n",data); |
| 5162 | 5164 | } |
| 5163 | 5165 | |
| 5164 | 5166 | READ16_HANDLER(ibm8514_subcontrol_r) |
| r18169 | r18170 | |
| 5180 | 5182 | { |
| 5181 | 5183 | ibm8514.vtotal = data; |
| 5182 | 5184 | // vga.crtc.vert_total = data; |
| 5183 | | logerror("8514/A: Vertical total write %04x\n",data); |
| 5185 | if(LOG_8514) logerror("8514/A: Vertical total write %04x\n",data); |
| 5184 | 5186 | } |
| 5185 | 5187 | |
| 5186 | 5188 | READ16_HANDLER(ibm8514_vdisp_r) |
| r18169 | r18170 | |
| 5192 | 5194 | { |
| 5193 | 5195 | ibm8514.vdisp = data; |
| 5194 | 5196 | // vga.crtc.vert_disp_end = data >> 3; |
| 5195 | | logerror("8514/A: Vertical Displayed write %04x\n",data); |
| 5197 | if(LOG_8514) logerror("8514/A: Vertical Displayed write %04x\n",data); |
| 5196 | 5198 | } |
| 5197 | 5199 | |
| 5198 | 5200 | READ16_HANDLER(ibm8514_vsync_r) |
| r18169 | r18170 | |
| 5203 | 5205 | WRITE16_HANDLER(ibm8514_vsync_w) |
| 5204 | 5206 | { |
| 5205 | 5207 | ibm8514.vsync = data; |
| 5206 | | logerror("8514/A: Vertical Sync write %04x\n",data); |
| 5208 | if(LOG_8514) logerror("8514/A: Vertical Sync write %04x\n",data); |
| 5207 | 5209 | } |
| 5208 | 5210 | |
| 5209 | 5211 | READ16_HANDLER(mach8_ec0_r) |
| r18169 | r18170 | |
| 5214 | 5216 | WRITE16_HANDLER(mach8_ec0_w) |
| 5215 | 5217 | { |
| 5216 | 5218 | ibm8514.ec0 = data; |
| 5217 | | logerror("8514/A: Extended configuration 0 write %04x\n",data); |
| 5219 | if(LOG_8514) logerror("8514/A: Extended configuration 0 write %04x\n",data); |
| 5218 | 5220 | } |
| 5219 | 5221 | |
| 5220 | 5222 | READ16_HANDLER(mach8_ec1_r) |
| r18169 | r18170 | |
| 5225 | 5227 | WRITE16_HANDLER(mach8_ec1_w) |
| 5226 | 5228 | { |
| 5227 | 5229 | ibm8514.ec1 = data; |
| 5228 | | logerror("8514/A: Extended configuration 1 write %04x\n",data); |
| 5230 | if(LOG_8514) logerror("8514/A: Extended configuration 1 write %04x\n",data); |
| 5229 | 5231 | } |
| 5230 | 5232 | |
| 5231 | 5233 | READ16_HANDLER(mach8_ec2_r) |
| r18169 | r18170 | |
| 5236 | 5238 | WRITE16_HANDLER(mach8_ec2_w) |
| 5237 | 5239 | { |
| 5238 | 5240 | ibm8514.ec2 = data; |
| 5239 | | logerror("8514/A: Extended configuration 2 write %04x\n",data); |
| 5241 | if(LOG_8514) logerror("8514/A: Extended configuration 2 write %04x\n",data); |
| 5240 | 5242 | } |
| 5241 | 5243 | |
| 5242 | 5244 | READ16_HANDLER(mach8_ec3_r) |
| r18169 | r18170 | |
| 5247 | 5249 | WRITE16_HANDLER(mach8_ec3_w) |
| 5248 | 5250 | { |
| 5249 | 5251 | ibm8514.ec3 = data; |
| 5250 | | logerror("8514/A: Extended configuration 3 write %04x\n",data); |
| 5252 | if(LOG_8514) logerror("8514/A: Extended configuration 3 write %04x\n",data); |
| 5251 | 5253 | } |
| 5252 | 5254 | |
| 5253 | 5255 | READ16_HANDLER(mach8_ext_fifo_r) |
| r18169 | r18170 | |
| 5258 | 5260 | WRITE16_HANDLER(mach8_linedraw_index_w) |
| 5259 | 5261 | { |
| 5260 | 5262 | ati.linedraw = data & 0x07; |
| 5261 | | logerror("Mach8: Line Draw Index write %04x\n",data); |
| 5263 | if(LOG_8514) logerror("Mach8: Line Draw Index write %04x\n",data); |
| 5262 | 5264 | } |
| 5263 | 5265 | |
| 5264 | 5266 | READ16_HANDLER(mach8_bresenham_count_r) |
| r18169 | r18170 | |
| 5269 | 5271 | WRITE16_HANDLER(mach8_bresenham_count_w) |
| 5270 | 5272 | { |
| 5271 | 5273 | s3.rect_width = data & 0x1fff; |
| 5272 | | logerror("Mach8: Bresenham count write %04x\n",data); |
| 5274 | if(LOG_8514) logerror("Mach8: Bresenham count write %04x\n",data); |
| 5273 | 5275 | } |
| 5274 | 5276 | |
| 5275 | 5277 | WRITE16_HANDLER(mach8_linedraw_w) |
| r18169 | r18170 | |
| 5313 | 5315 | WRITE16_HANDLER(mach8_scratch0_w) |
| 5314 | 5316 | { |
| 5315 | 5317 | ati.scratch0 = data; |
| 5316 | | logerror("Mach8: Scratch Pad 0 write %04x\n",data); |
| 5318 | if(LOG_8514) logerror("Mach8: Scratch Pad 0 write %04x\n",data); |
| 5317 | 5319 | } |
| 5318 | 5320 | |
| 5319 | 5321 | READ16_HANDLER(mach8_scratch1_r) |
| r18169 | r18170 | |
| 5324 | 5326 | WRITE16_HANDLER(mach8_scratch1_w) |
| 5325 | 5327 | { |
| 5326 | 5328 | ati.scratch1 = data; |
| 5327 | | logerror("Mach8: Scratch Pad 1 write %04x\n",data); |
| 5329 | if(LOG_8514) logerror("Mach8: Scratch Pad 1 write %04x\n",data); |
| 5328 | 5330 | } |
| 5329 | 5331 | |
| 5330 | 5332 | /* |