@@ -209,6 +209,8 @@ chips_69000_read_flat_panel(chips_69000_t* chips)
209
209
return 0 ;
210
210
case 1 :
211
211
return 1 ;
212
+ case 0x10 :
213
+ return 1 ;
212
214
default :
213
215
return chips -> flat_panel_regs [chips -> flat_panel_index ];
214
216
}
@@ -1425,7 +1427,7 @@ chips_69000_read_ext_reg(chips_69000_t* chips)
1425
1427
val = 0x3 ;
1426
1428
break ;
1427
1429
case 0x71 :
1428
- val = 0x0 ;
1430
+ val = 0b01101000 ;
1429
1431
break ;
1430
1432
case 0xD0 :
1431
1433
val |= 1 ;
@@ -2186,29 +2188,26 @@ chips_69000_hwcursor_draw(svga_t *svga, int displine)
2186
2188
uint64_t dat [2 ];
2187
2189
int offset = svga -> hwcursor_latch .x - svga -> hwcursor_latch .xoff ;
2188
2190
2189
- #if 0
2190
- if ((chips -> ext_regs [0xA0 ] & 7 ) == 1 ) {
2191
- uint32_t evenline = svga -> hwcursor_latch .cur_ysize - ((svga -> hwcursor_on ) & ~1 ) >> 1 ;
2192
- uint32_t dat_32 [2 ];
2193
-
2194
- dat_32 [1 ] = bswap32 (* (uint32_t * ) (& svga -> vram [svga -> hwcursor_latch .addr + (((displine - svga -> hwcursor_latch .y ) & 1 ) ? 4 : 0 )]));
2195
- dat_32 [0 ] = bswap32 (* (uint32_t * ) (& svga -> vram [svga -> hwcursor_latch .addr + 8 + (((displine - svga -> hwcursor_latch .y ) & 1 ) ? 4 : 0 )]));
2196
- svga -> hwcursor_latch .addr = svga -> hwcursor .addr + (evenline * 16 );
2197
-
2191
+ if (svga -> interlace && (chips -> ext_regs [0xa0 ] & 7 ) == 0b1 ) {
2192
+ dat [1 ] = bswap64 (* (uint64_t * ) (& svga -> vram [svga -> hwcursor_latch .addr ]));
2193
+ dat [0 ] = bswap64 (* (uint64_t * ) (& svga -> vram [svga -> hwcursor_latch .addr + 8 ]));
2194
+ svga -> hwcursor_latch .addr += 16 ;
2195
+ if (svga -> hwcursor_oddeven ) {
2196
+ dat [1 ] <<= 32ULL ;
2197
+ dat [0 ] <<= 32ULL ;
2198
+ }
2198
2199
for (uint8_t x = 0 ; x < 32 ; x ++ ) {
2199
- if (!(dat_32 [1 ] & (1ULL << 31 )))
2200
- svga -> monitor -> target_buffer -> line [displine ][ offset + svga -> x_add ] = (dat_32 [0 ] & (1ULL << 31 )) ? svga_lookup_lut_ram (svga , chips -> cursor_pallook [4 ]) : svga_lookup_lut_ram (svga , chips -> cursor_pallook [5 ]);
2201
- else if (dat_32 [0 ] & (1ULL << 31 ))
2202
- svga -> monitor -> target_buffer -> line [displine ][ offset + svga -> x_add ] ^= 0xffffff ;
2200
+ if (!(dat [1 ] & (1ULL << 63 )))
2201
+ svga -> monitor -> target_buffer -> line [displine & 2047 ][( offset + svga -> x_add ) & 2047 ] = (dat [0 ] & (1ULL << 63 )) ? svga_lookup_lut_ram (svga , chips -> cursor_pallook [5 ]) : svga_lookup_lut_ram (svga , chips -> cursor_pallook [4 ]);
2202
+ else if (dat [0 ] & (1ULL << 63 ))
2203
+ svga -> monitor -> target_buffer -> line [displine & 2047 ][( offset + svga -> x_add ) & 2047 ] ^= 0xffffff ;
2203
2204
2204
2205
offset ++ ;
2205
- dat_32 [0 ] <<= 1 ;
2206
- dat_32 [1 ] <<= 1 ;
2206
+ dat [0 ] <<= 1 ;
2207
+ dat [1 ] <<= 1 ;
2207
2208
}
2208
-
2209
2209
return ;
2210
2210
}
2211
- #endif
2212
2211
2213
2212
if (svga -> interlace && svga -> hwcursor_oddeven )
2214
2213
svga -> hwcursor_latch .addr += 16 ;
@@ -2339,8 +2338,6 @@ chips_69000_init(const device_t *info)
2339
2338
2340
2339
chips -> flat_panel_regs [0x01 ] = 1 ;
2341
2340
2342
- sizeof (struct chips_69000_bitblt_t );
2343
-
2344
2341
return chips ;
2345
2342
}
2346
2343
0 commit comments