1
0
Fork 0

Opengl output support in SDL

Removed threading support in SDL
Rewrite of VGA Drawing to work line for line
Rewrite of VGA Text drawing using lookup tables
Rewrite of render function to handle the new line for line drawing.
Changed CGA/TANDY/Hercules to be more like their original hardware.


Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1611
This commit is contained in:
Sjoerd van der Berg 2004-01-28 14:39:05 +00:00
parent 2cfb92f5c6
commit 9bf1cd50f5
11 changed files with 714 additions and 610 deletions

View file

@ -31,10 +31,14 @@ VGA_Type vga;
Bit32u CGA_2_Table[16];
Bit32u CGA_4_Table[256];
Bit32u CGA_16_Table[256];
Bit32u TXT_Font_Table[16];
Bit32u TXT_FG_Table[16];
Bit32u TXT_BG_Table[16];
Bit32u ExpandTable[256];
Bit32u Expand16Table[4][16];
Bit32u Expand16BigTable[0x10000];
Bit32u FillTable[16];
Bit32u ColorTable[16];
void VGA_SetMode(VGAModes mode) {
@ -107,18 +111,34 @@ void VGA_Init(Section* sec) {
#endif
}
for (i=0;i<16;i++) {
TXT_FG_Table[i]=i | (i << 8)| (i <<16) | (i << 24);
TXT_BG_Table[i]=i | (i << 8)| (i <<16) | (i << 24);
#ifdef WORDS_BIGENDIAN
CGA_2_Table[i]=((i>>0)&1) | (((i>>1)&1) << 8)| (((i>>1)&1) <<16) | (((i>>3)&1) << 24);
FillTable[i]= ((i & 1) ? 0xff000000 : 0) |
FillTable[i]=
((i & 1) ? 0xff000000 : 0) |
((i & 2) ? 0x00ff0000 : 0) |
((i & 4) ? 0x0000ff00 : 0) |
((i & 8) ? 0x000000ff : 0) ;
((i & 4) ? 0x0000ff00 : 0) |
((i & 8) ? 0x000000ff : 0) ;
TXT_Font_Table[i]=
((i & 1) ? 0x000000ff : 0) |
((i & 2) ? 0x0000ff00 : 0) |
((i & 4) ? 0x00ff0000 : 0) |
((i & 8) ? 0xff000000 : 0) ;
#else
CGA_2_Table[i]=((i>>3)&1) | (((i>>2)&1) << 8)| (((i>>1)&1) <<16) | (((i>>0)&1) << 24);
FillTable[i]= ((i & 1) ? 0x000000ff : 0) |
((i & 2) ? 0x0000ff00 : 0) |
((i & 4) ? 0x00ff0000 : 0) |
((i & 8) ? 0xff000000 : 0) ;
FillTable[i]=
((i & 1) ? 0x000000ff : 0) |
((i & 2) ? 0x0000ff00 : 0) |
((i & 4) ? 0x00ff0000 : 0) |
((i & 8) ? 0xff000000 : 0) ;
TXT_Font_Table[i]=
((i & 1) ? 0xff000000 : 0) |
((i & 2) ? 0x00ff0000 : 0) |
((i & 4) ? 0x0000ff00 : 0) |
((i & 8) ? 0x000000ff : 0) ;
#endif
}
for (j=0;j<4;j++) {
@ -138,28 +158,5 @@ void VGA_Init(Section* sec) {
#endif
}
}
for (i=0;i<0x10000;i++) {
Bit32u val=0;
if (i & 0x1) val|=0x1 << 24;
if (i & 0x2) val|=0x1 << 16;
if (i & 0x4) val|=0x1 << 8;
if (i & 0x8) val|=0x1 << 0;
if (i & 0x10) val|=0x4 << 24;
if (i & 0x20) val|=0x4 << 16;
if (i & 0x40) val|=0x4 << 8;
if (i & 0x80) val|=0x4 << 0;
if (i & 0x100) val|=0x2 << 24;
if (i & 0x200) val|=0x2 << 16;
if (i & 0x400) val|=0x2 << 8;
if (i & 0x800) val|=0x2 << 0;
if (i & 0x1000) val|=0x8 << 24;
if (i & 0x2000) val|=0x8 << 16;
if (i & 0x4000) val|=0x8 << 8;
if (i & 0x8000) val|=0x8 << 0;
Expand16BigTable[i]=val;
}
}