PCem
changeset 79:6440ce9ca446
Fixed VGA character set selection (bad documentation). Fixes Impulse Tracker.
| author | TomW |
|---|---|
| date | Wed Mar 05 19:51:23 2014 +0000 |
| parents | 814b4fc0803f |
| children | bc749e3a164e |
| files | src/vid_ega.c src/vid_svga.c |
| diffstat | 2 files changed, 9 insertions(+), 5 deletions(-) [+] |
line diff
1.1 --- a/src/vid_ega.c Tue Mar 04 21:34:27 2014 +0000 1.2 +++ b/src/vid_ega.c Wed Mar 05 19:51:23 2014 +0000 1.3 @@ -73,8 +73,8 @@ 1.4 ega->writemask = val & 0xf; 1.5 break; 1.6 case 3: 1.7 - ega->charseta = (((val >> 2) & 3) * 0x10000) + 2; 1.8 - ega->charsetb = ((val & 3) * 0x10000) + 2; 1.9 + ega->charsetb = (((val >> 2) & 3) * 0x10000) + 2; 1.10 + ega->charseta = ((val & 3) * 0x10000) + 2; 1.11 break; 1.12 } 1.13 break;
2.1 --- a/src/vid_svga.c Tue Mar 04 21:34:27 2014 +0000 2.2 +++ b/src/vid_svga.c Wed Mar 05 19:51:23 2014 +0000 2.3 @@ -23,7 +23,7 @@ 2.4 svga_t *svga = (svga_t *)p; 2.5 int c; 2.6 uint8_t o; 2.7 -// printf("OUT SVGA %03X %02X %04X:%04X %i %08X\n",addr,val,CS,pc,TRIDENT,svgawbank); 2.8 +// printf("OUT SVGA %03X %02X %04X:%04X\n",addr,val,CS,pc); 2.9 switch (addr) 2.10 { 2.11 case 0x3C0: 2.12 @@ -88,8 +88,12 @@ 2.13 svga->writemask = val & 0xf; 2.14 break; 2.15 case 3: 2.16 - svga->charseta = (((val >> 2) & 3) * 0x10000) + 2; 2.17 - svga->charsetb = ((val & 3) * 0x10000) + 2; 2.18 + svga->charsetb = (((val >> 2) & 3) * 0x10000) + 2; 2.19 + svga->charseta = ((val & 3) * 0x10000) + 2; 2.20 + if (val & 0x10) 2.21 + svga->charseta += 0x8000; 2.22 + if (val & 0x20) 2.23 + svga->charsetb += 0x8000; 2.24 break; 2.25 case 4: 2.26 svga->chain4 = val & 8;
