ref: 4c510b80e7330e4cb77b1b564483f1b5c3a2dd0f
parent: 61d6c987e9f4c792d403175f955a6878f772b1c8
author: unknown <fabien@fabien-PC.(none)>
date: Sat Dec 15 15:05:04 EST 2012
Added engine SlowDown tool
--- a/Engine/src/a.c
+++ b/Engine/src/a.c
@@ -7,7 +7,9 @@
#include "platform.h"
#include "build.h"
+#include "a.h"
+int pixelsAllowed;
#define shrd(a,b,c) (((b)<<(32-(c))) | ((a)>>(c)))
#define shld(a,b,c) (((b)>>(32-(c))) | ((a)<<(c)))
@@ -28,7 +30,7 @@
}
static uint8_t* pal_eax;
-void setuphlineasm4(int32_t i1, int32_t i2) { }
+
void setpalookupaddress(uint8_t *i1) { pal_eax = i1; }
//FCS: Draw ceiling/floors
@@ -52,6 +54,12 @@
return;
while (count) {
+
+ if (pixelsAllowed <= 0)
+ return;
+
+ pixelsAllowed--;
+
source = i5 >> shifter;
source = shld(source,i4,bits);
source = lookup[source];
@@ -60,6 +68,7 @@
i5 -= _asm1;
i4 -= _asm2;
count--;
+
}
}
@@ -87,6 +96,12 @@
numPixels = i1;
do {
+
+ if (pixelsAllowed <= 0)
+ return;
+
+ pixelsAllowed--;
+
i3 = ((i3&0xffffff00)|(*((uint8_t *)i2)));
i4 -= rmach_eax;
ebp = (((i4+rmach_eax) < i4) ? -1 : 0);
@@ -126,6 +141,12 @@
numPixels = i1;
do {
+
+ if (pixelsAllowed <= 0)
+ return;
+
+ pixelsAllowed--;
+
i3 = ((i3&0xffffff00)|(*((uint8_t *)i2)));
i4 -= rmmach_eax;
ebp = (((i4+rmmach_eax) < i4) ? -1 : 0);
@@ -157,9 +178,6 @@
tmach = i1;
}
-int32_t vlineasm1(int32_t i1, int32_t i2, int32_t i3, int32_t i4, int32_t i5, int32_t i6);
-
-
static uint8_t mach3_al;
//FCS: RENDER TOP AND BOTTOM COLUMN
@@ -175,6 +193,11 @@
if (!RENDER_DRAW_TOP_AND_BOTTOM_COLUMN)
return 0;
+ if (pixelsAllowed <= 0)
+ return;
+
+ pixelsAllowed--;
+
i1 += i4;
//FCS
//((uint32_t)i4) >>= mach3_al;
@@ -200,6 +223,12 @@
numPixels++;
while (numPixels)
{
+ if (pixelsAllowed <= 0)
+ return vplce;
+
+ pixelsAllowed--;
+
+
temp = ((unsigned)vplce) >> mach3_al;
temp = ((uint8_t *)bufplce)[temp];
@@ -232,6 +261,15 @@
uint32_t temp = i4;
temp >>= transmach3_al;
temp = source[temp];
+
+
+ if (pixelsAllowed <= 0)
+ return i4;
+
+ pixelsAllowed--;
+
+
+
if (temp != 255)
{
unsigned short val;
@@ -272,6 +310,11 @@
i6 -= asm2;
do {
+ if (pixelsAllowed <= 0)
+ return;
+
+ pixelsAllowed--;
+
i1 = i5 >> tran2shr;
i2 = ebp >> tran2shr;
i5 += tran2inca;
@@ -325,9 +368,19 @@
// FIX_00087: 1024x768 mode being slow. Undone FIX_00070 and fixed font issue again
for(;i3>=0;i3--)
{
+ if (pixelsAllowed <= 0)
+ return vplce;
+
+ pixelsAllowed--;
+
temp = ((unsigned)vplce) >> machmv;
temp = ((uint8_t *)bufplce)[temp];
- if (temp != 255) *dest = ((uint8_t *)palookupoffse)[temp];
+
+ if (temp != 255)
+ {
+ *dest = ((uint8_t *)palookupoffse)[temp];
+ pixelsAllowed--;
+ }
vplce += vince;
dest += fixchain;
}
@@ -342,52 +395,8 @@
extern int32_t vplce[4], vince[4], palookupoffse[4], bufplce[4];
-#if HAVE_POWERPC
-/* About 25% faster than the scalar version on my 12" Powerbook. --ryan. */
-static void vlineasm4_altivec(int32_t i1, int32_t i2)
-{
- uint32_t mach_array[4] = { (uint32_t) mach3_al,
- (uint32_t) mach3_al,
- (uint32_t) mach3_al,
- (uint32_t) mach3_al };
- uint32_t temp[4];
- uint32_t index = (i2 + ylookup[i1]);
- uint8_t *dest = (uint8_t *)(-ylookup[i1]);
- uint32_t vec_temp;
- int32_t vec_vplce;
- int32_t vec_vince;
- int32_t vec_bufplce;
- uint32_t vec_shifter;
-
- uint8_t *pal0 = (uint8_t *) palookupoffse[0];
- uint8_t *pal1 = (uint8_t *) palookupoffse[1];
- uint8_t *pal2 = (uint8_t *) palookupoffse[2];
- uint8_t *pal3 = (uint8_t *) palookupoffse[3];
-
- vec_shifter = vec_ld(0, mach_array);
- vec_vplce = vec_ld(0, vplce);
- vec_vince = vec_ld(0, vince);
- vec_bufplce = vec_ld(0, bufplce);
-
- do {
- vec_temp = ( uint32_t) vec_sr(vec_vplce, vec_shifter);
- vec_temp = ( uint32_t) vec_add(vec_bufplce, (vector signed int) vec_temp);
- vec_st(vec_temp, 0x00, temp);
- vec_vplce = vec_add(vec_vplce, vec_vince);
- dest[index] = pal0[*((uint8_t *) temp[0])];
- dest[index+1] = pal1[*((uint8_t *) temp[1])];
- dest[index+2] = pal2[*((uint8_t *) temp[2])];
- dest[index+3] = pal3[*((uint8_t *) temp[3])];
- dest += fixchain;
- } while (((unsigned)dest - fixchain) < ((unsigned)dest));
-
- vec_st(vec_vplce, 0, vplce);
-}
-#endif
-
-
//FCS This is used to fill the inside of a wall
void vlineasm4(int32_t i1, int32_t i2)
{
@@ -395,11 +404,6 @@
if (!RENDER_DRAW_WALL_INSIDE)
return ;
-#if HAVE_POWERPC
- if (has_altivec)
- vlineasm4_altivec(i1, i2);
- else
-#endif
{
int i;
uint32_t temp;
@@ -408,6 +412,11 @@
do {
for (i = 0; i < 4; i++)
{
+ if (pixelsAllowed <= 0)
+ return;
+
+ pixelsAllowed--;
+
temp = ((unsigned)vplce[i]) >> mach3_al;
temp = (((uint8_t *)(bufplce[i]))[temp]);
dest[index+i] = ((uint8_t *)(palookupoffse[i]))[temp];
@@ -416,13 +425,13 @@
dest += fixchain;
} while (((unsigned)dest - fixchain) < ((unsigned)dest));
}
-} /* vlineasm4 */
+}
void setupmvlineasm(int32_t i1)
{
machmv = (i1&0x1f);
-} /* setupmvlineasm */
+}
void mvlineasm4(int32_t i1, int32_t i2)
@@ -433,15 +442,25 @@
uint8_t *dest = (uint8_t *)(-ylookup[i1]);
do {
+
+ if (pixelsAllowed <= 0)
+ return;
+
for (i = 0; i < 4; i++)
{
- temp = ((unsigned)vplce[i]) >> machmv;
- temp = (((uint8_t *)(bufplce[i]))[temp]);
- if (temp != 255)
- dest[index+i] = ((uint8_t *)(palookupoffse[i]))[temp];
- vplce[i] += vince[i];
+ if (pixelsAllowed == 0)
+ continue;
+
+ pixelsAllowed--;
+
+ temp = ((unsigned)vplce[i]) >> machmv;
+ temp = (((uint8_t *)(bufplce[i]))[temp]);
+ if (temp != 255)
+ dest[index+i] = ((uint8_t *)(palookupoffse[i]))[temp];
+ vplce[i] += vince[i];
}
dest += fixchain;
+
} while (((unsigned)dest - fixchain) < ((unsigned)dest));
} /* mvlineasm4 */
@@ -470,23 +489,35 @@
i2 += smach_eax;
i1 = (i1&0xffffff00) | (*source&0xff);
- if ((i2 - smach_eax) > i2) source += smach2_eax + 1;
- else source += smach2_eax;
+ if ((i2 - smach_eax) > i2)
+ source += smach2_eax + 1;
+ else
+ source += smach2_eax;
draw:
i1 = (i1&0xffffff00) | (((uint8_t *)spal_eax)[i1]&0xff);
*dest = i1;
+
+ if (pixelsAllowed <= 0) return;
+ pixelsAllowed--;
+
dest += fixchain;
i4 += smach_ecx;
i4--;
+
if (!((i4 - smach_ecx) > i4) && i4 != 0)
goto setup;
+
if (i4 == 0) return;
i2 += smach_eax;
i1 = (i1&0xffffff00) | (*source&0xff);
- if ((i2 - smach_eax) > i2) source += smach5_eax + 1;
- else source += smach5_eax;
+
+ if ((i2 - smach_eax) > i2)
+ source += smach5_eax + 1;
+ else
+ source += smach5_eax;
+
goto draw;
} /* spritevline */
@@ -522,6 +553,11 @@
{
i1 = (i1&0xffffff00) | (((uint8_t *)spal_eax)[i1]&0xff);
*dest = i1;
+
+ if (pixelsAllowed <= 0)
+ return;
+
+ pixelsAllowed--;
}
dest += fixchain;
@@ -573,12 +609,20 @@
unsigned short val;
val = ((uint8_t *)tspal)[i1];
val |= ((*((uint8_t *)i6))<<8);
- if (transrev) val = ((val>>8)|(val<<8));
+
+ if (transrev)
+ val = ((val>>8)|(val<<8));
+
i1 = ((uint8_t *)tmach)[val];
*((uint8_t *)i6) = (i1&0xff);
}
i6 += fixchain;
}
+
+ if (pixelsAllowed <= 0)
+ return;
+
+ pixelsAllowed--;
}
}
@@ -587,7 +631,7 @@
static int32_t mmach_asm3;
static int32_t mmach_asm1;
static int32_t mmach_asm2;
-void mhlineskipmodify(int32_t i1, uint32_t i2, uint32_t i3, int32_t i4, int32_t i5, int32_t i6);
+
void mhline(int32_t i1, int32_t i2, int32_t i3, int32_t i4, int32_t i5, int32_t i6)
{
mmach_eax = i1;
@@ -616,6 +660,11 @@
i5 += mmach_asm2;
i6++;
counter--;
+
+ if (pixelsAllowed <= 0)
+ return;
+
+ pixelsAllowed--;
}
}
@@ -632,7 +681,7 @@
static int32_t tmach_asm3;
static int32_t tmach_asm1;
static int32_t tmach_asm2;
-void thlineskipmodify(int32_t i1, uint32_t i2, uint32_t i3, int32_t i4, int32_t i5, int32_t i6);
+
void thline(int32_t i1, int32_t i2, int32_t i3, int32_t i4, int32_t i5, int32_t i6)
{
tmach_eax = i1;
@@ -665,6 +714,11 @@
i5 += tmach_asm2;
i6++;
counter--;
+
+ if (pixelsAllowed <= 0)
+ return;
+
+ pixelsAllowed--;
}
}
@@ -705,9 +759,6 @@
#define low32(a) ((a&0xffffffff))
#define high32(a) ((int)(((__int64)a&(__int64)0xffffffff00000000)>>32))
-
-
-/* #pragma aux slopevlin parm [eax][ebx][ecx][edx][esi][edi] */
//FCS: Render RENDER_SLOPPED_CEILING_AND_FLOOR
void slopevlin(int32_t i1, uint32_t i2, int32_t i3, int32_t i4, int32_t i5, int32_t i6)
{
@@ -765,9 +816,17 @@
*((uint8_t *)i1) = (eax&0xff);
edx = edi;
ecx = ((ecx&0xffffff00)|((ecx-1)&0xff));
+
+ if (pixelsAllowed <= 0)
+ return;
+
+ pixelsAllowed--;
}
ebx = asm4;
ebx -= 8; // BITSOFPRECISIONPOW
+
+
+
} while ((int32_t)ebx > 0);
}
--- a/Engine/src/a.h
+++ b/Engine/src/a.h
@@ -19,29 +19,29 @@
#endif
-int32_t sethlinesizes(int32_t,int32_t,int32_t);
-int32_t setpalookupaddress(uint8_t *);
-int32_t setuphlineasm4(int32_t,int32_t);
-int32_t hlineasm4(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-int32_t setuprhlineasm4(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-int32_t rhlineasm4(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-int32_t setuprmhlineasm4(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-int32_t rmhlineasm4(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
+void sethlinesizes(int32_t,int32_t,int32_t);
+void setpalookupaddress(uint8_t *);
+void hlineasm4(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
+void setuprhlineasm4(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
+void rhlineasm4(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
+void setuprmhlineasm4(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
+void rmhlineasm4(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-int32_t setvlinebpl(int32_t);
-int32_t fixtransluscence(int32_t);
+
+void setvlinebpl(int32_t);
+void fixtransluscence(int32_t);
int32_t prevlineasm1(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
int32_t vlineasm1(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-int32_t setuptvlineasm(int32_t);
+void setuptvlineasm(int32_t);
int32_t tvlineasm1(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-int32_t setuptvlineasm2(int32_t,int32_t,int32_t);
-int32_t tvlineasm2(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
+void setuptvlineasm2(int32_t,int32_t,int32_t);
+void tvlineasm2(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
int32_t mvlineasm1(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-int32_t setupvlineasm(int32_t);
-int32_t vlineasm4(int32_t,int32_t);
-int32_t setupmvlineasm(int32_t);
-int32_t mvlineasm4(int32_t,int32_t);
+void setupvlineasm(int32_t);
+void vlineasm4(int32_t,int32_t);
+void setupmvlineasm(int32_t);
+void mvlineasm4(int32_t,int32_t);
void setupspritevline(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
void spritevline(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
void msetupspritevline(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
@@ -48,17 +48,17 @@
void mspritevline(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
void tsetupspritevline(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
void tspritevline(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-int32_t mhline(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-int32_t mhlineskipmodify(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-int32_t msethlineshift(int32_t,int32_t);
-int32_t thline(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-int32_t thlineskipmodify(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-int32_t tsethlineshift(int32_t,int32_t);
-int32_t setupslopevlin(int32_t,int32_t,int32_t);
-int32_t slopevlin(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
+void mhline(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
+void mhlineskipmodify(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
+void msethlineshift(int32_t,int32_t);
+void thline(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
+void thlineskipmodify(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
+void tsethlineshift(int32_t,int32_t);
+void setupslopevlin(int32_t,int32_t,int32_t);
+void slopevlin(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
#define TRANS_NORMAL 0
#define TRANS_REVERSE 1
-int32_t settrans(int32_t type);
+void settrans(int32_t type);
@@ -68,6 +68,25 @@
#ifdef __cplusplus
}
#endif
+
+//FCS: In order to see how the engine renders different part of the screen you can set the following macros
+//VISUALIZE RENDERER
+
+#define MAX_PIXEL_RENDERERED (800*600)
+extern int pixelsAllowed;
+
+#define RENDER_DRAW_WALL_BORDERS 1
+#define RENDER_DRAW_WALL_INSIDE 1
+#define RENDER_DRAW_CEILING_AND_FLOOR 1
+#define RENDER_DRAW_TOP_AND_BOTTOM_COLUMN 1
+#define RENDER_SLOPPED_CEILING_AND_FLOOR 1
+
+#if RENDER_DRAW_WALL_BORDERS && RENDER_DRAW_WALL_INSIDE && RENDER_DRAW_CEILING_AND_FLOOR && RENDER_DRAW_TOP_AND_BOTTOM_COLUMN && RENDER_SLOPPED_CEILING_AND_FLOOR && MAX_PIXEL_RENDERERED!=0
+ #define CLEAR_FRAMEBUFFER 1
+#else
+ #define CLEAR_FRAMEBUFFER 1
+#endif
+//END VISUALIZE RENDERER
#endif /* include-once-blocker. */
--- a/Engine/src/build.h
+++ b/Engine/src/build.h
@@ -313,22 +313,6 @@
#define PORTSIG "Port by Ryan C. Gordon, Andrew Henderson, Dan Olson, Fabien Sanglard and a cast of thousands."
-
-//FCS: In order to see how the engine renders different part of the screen you can set the following macros
-//VISUALIZE RENDERER
-#define RENDER_DRAW_WALL_BORDERS 1
-#define RENDER_DRAW_WALL_INSIDE 1
-#define RENDER_DRAW_CEILING_AND_FLOOR 1
-#define RENDER_DRAW_TOP_AND_BOTTOM_COLUMN 1
-#define RENDER_SLOPPED_CEILING_AND_FLOOR 1
-
-#if RENDER_DRAW_WALL_BORDERS && RENDER_DRAW_WALL_INSIDE && RENDER_DRAW_CEILING_AND_FLOOR && RENDER_DRAW_TOP_AND_BOTTOM_COLUMN && RENDER_SLOPPED_CEILING_AND_FLOOR
- #define CLEAR_FRAMEBUFFER 0
-#else
- #define CLEAR_FRAMEBUFFER 1
-#endif
-//END VISUALIZE RENDERER
-
//Global.c
void Error (int errorType, char *error, ...);
int FindDistance2D(int ix, int iy);
--- a/Engine/src/engine.c
+++ b/Engine/src/engine.c
@@ -150,7 +150,12 @@
static int32_t spritesz[MAXSPRITESONSCREEN];
static spritetype *tspriteptr[MAXSPRITESONSCREEN];
-short umost[MAXXDIM+1], dmost[MAXXDIM+1];
+//FCS: (up-most pixel on column x that can still be drawn to)
+short umost[MAXXDIM+1];
+
+//FCS: (down-most pixel +1 on column x that can still be drawn to)
+short dmost[MAXXDIM+1];
+
static short bakumost[MAXXDIM+1], bakdmost[MAXXDIM+1];
short uplc[MAXXDIM+1], dplc[MAXXDIM+1];
static short uwall[MAXXDIM+1], dwall[MAXXDIM+1];
@@ -2029,7 +2034,8 @@
andwstat2 &= wallmost(dplc,z,sectnum,(uint8_t )1);
}
- if ((andwstat1&3) != 3) /* draw ceilings */
+ /* draw ceilings */
+ if ((andwstat1&3) != 3)
{
if ((sec->ceilingstat&3) == 2)
grouscan(xb1[bunchfirst[bunch]],xb2[bunchlast[bunch]],sectnum,0);
@@ -2038,7 +2044,9 @@
else
parascan(xb1[bunchfirst[bunch]],xb2[bunchlast[bunch]],sectnum,0,bunch);
}
- if ((andwstat2&12) != 12) /* draw floors */
+
+ /* draw floors */
+ if ((andwstat2&12) != 12)
{
if ((sec->floorstat&3) == 2)
grouscan(xb1[bunchfirst[bunch]],xb2[bunchlast[bunch]],sectnum,1);
@@ -2048,6 +2056,8 @@
parascan(xb1[bunchfirst[bunch]],xb2[bunchlast[bunch]],sectnum,1,bunch);
}
+ //return;
+
/* DRAW WALLS SECTION! */
for(z=bunchfirst[bunch]; z>=0; z=p2[z])
{
@@ -2055,8 +2065,11 @@
x2 = xb2[z];
if (umost[x2] >= dmost[x2])
{
+
for(x=x1; x<x2; x++)
- if (umost[x] < dmost[x]) break;
+ if (umost[x] < dmost[x])
+ break;
+
if (x >= x2)
{
smostwall[smostwallcnt] = z;
@@ -2436,7 +2449,7 @@
}
}
-//FCS: Geez one more horrible algorithm to decipher :/ :( cry smiley.....
+//FCS: Geez one more horrible algorithm to decipher :| :/ :( cry smiley.....
int wallfront(int32_t l1, int32_t l2)
{
walltype *wal;
@@ -2459,10 +2472,13 @@
dy = y21-y11;
t1 = dmulscale2(x12-x11,dy,-dx,y12-y11); /* p1(l2) vs. l1 */
t2 = dmulscale2(x22-x11,dy,-dx,y22-y11); /* p2(l2) vs. l1 */
+
if (t1 == 0) {
t1 = t2;
- if (t1 == 0) return(-1);
+ if (t1 == 0)
+ return(-1);
}
+
if (t2 == 0) t2 = t1;
if ((t1^t2) >= 0)
{
@@ -2515,7 +2531,7 @@
return(wallfront(i,b2f));
}
-
+int pixelRenderable = 100000000;
void drawrooms(int32_t daposx, int32_t daposy, int32_t daposz,
short daang, int32_t dahoriz, short dacursectnum)
{
@@ -2522,6 +2538,14 @@
int32_t i, j, z, cz, fz, closest;
short *shortptr1, *shortptr2;
+ pixelRenderable+=10;
+ if (pixelRenderable >= MAX_PIXEL_RENDERERED)
+ pixelRenderable = 0 ;
+
+ //pixelsAllowed = pixelRenderable;
+ pixelsAllowed = 100000000;
+ printf("%d\n",pixelsAllowed);
+
beforedrawrooms = 0;
totalarea += (windowx2+1-windowx1)*(windowy2+1-windowy1);
@@ -8096,7 +8120,7 @@
globalposx += oy*globalx1;
globalposy += oy*globaly2;
- setuphlineasm4(asm1,asm2);
+
ptr = smost;
for(y=miny; y<=maxy; y++)
--- a/Game/src/gamedefs.h
+++ b/Game/src/gamedefs.h
@@ -124,61 +124,6 @@
#define BASECONTROLSCALEVALUE (1<<16)
-enum
- {
- gametype_network=3,
- gametype_serial=1,
- gametype_modem=2
- };
-
-enum
- {
- connecttype_dialing=0,
- connecttype_answer=1,
- connecttype_alreadyconnected=2
- };
-
-enum
- {
- screenbuffer_320x200,
- screenbuffer_640x400,
- screenbuffer_640x480,
- screenbuffer_800x600,
- screenbuffer_1024x768,
- screenbuffer_1280x1024,
- screenbuffer_1600x1200
- };
-
-enum
- {
- vesa_320x200,
- vesa_360x200,
- vesa_320x240,
- vesa_360x240,
- vesa_320x400,
- vesa_360x400,
- vesa_640x350,
- vesa_640x400,
- vesa_640x480,
- vesa_800x600,
- vesa_1024x768,
- vesa_1280x1024,
- vesa_1600x1200
- };
-
-enum
- {
- screenmode_chained,
- screenmode_vesa,
- screenmode_buffered,
- screenmode_tseng,
- screenmode_paradise,
- screenmode_s3,
- screenmode_crystal,
- screenmode_redblue,
- };
-
-
#ifdef __cplusplus
};
#endif