Remove non-16bpp functionality from Linux port, SDL handles this all.
Note the 16->32bpp conversion tables are left in because I believe other stuff uses them.
This commit is contained in:
@@ -114,7 +114,6 @@ extern void copy640x480x16bwin(void);
|
|||||||
/* FIXME: Figure out how to make these locals */
|
/* FIXME: Figure out how to make these locals */
|
||||||
static DWORD ScreenPtr;
|
static DWORD ScreenPtr;
|
||||||
static DWORD SurfBufD;
|
static DWORD SurfBufD;
|
||||||
static DWORD *SURFDW;
|
|
||||||
static DWORD pitch;
|
static DWORD pitch;
|
||||||
|
|
||||||
void sw_clearwin()
|
void sw_clearwin()
|
||||||
@@ -123,8 +122,6 @@ void sw_clearwin()
|
|||||||
SurfBufD = (DWORD) surface->pixels;
|
SurfBufD = (DWORD) surface->pixels;
|
||||||
|
|
||||||
LockSurface();
|
LockSurface();
|
||||||
switch (BitDepth) {
|
|
||||||
case 16:
|
|
||||||
__asm__ __volatile__ (
|
__asm__ __volatile__ (
|
||||||
" xorl %%eax, %%eax\n" \
|
" xorl %%eax, %%eax\n" \
|
||||||
" xorl %%ebx, %%ebx\n" \
|
" xorl %%ebx, %%ebx\n" \
|
||||||
@@ -139,34 +136,13 @@ void sw_clearwin()
|
|||||||
" subl %%edx, %%edi\n" \
|
" subl %%edx, %%edi\n" \
|
||||||
" cmpl %2, %%ebx\n" \
|
" cmpl %2, %%ebx\n" \
|
||||||
" jne Blank2\n" \
|
" jne Blank2\n" \
|
||||||
: : "g" (pitch), "g" (SurfaceX), "g" (SurfaceY), "D" (SurfBufD) : "cc", "memory", "eax", "ebx", "edx", "ecx");
|
: : "g" (pitch), "g" (SurfaceX), "g" (SurfaceY), "D" (SurfBufD)
|
||||||
break;
|
: "cc", "memory", "eax", "ebx", "edx", "ecx");
|
||||||
case 32:
|
|
||||||
__asm__ __volatile__ (
|
|
||||||
" xorl %%eax, %%eax\n" \
|
|
||||||
" xorl %%ebx, %%ebx\n" \
|
|
||||||
"Blank3:\n" \
|
|
||||||
" movl %1, %%ecx\n" \
|
|
||||||
" rep\n" \
|
|
||||||
" stosl\n" \
|
|
||||||
" addl %0, %%edi\n" \
|
|
||||||
" subl %1, %%edi\n" \
|
|
||||||
" subl %1, %%edi\n" \
|
|
||||||
" subl %1, %%edi\n" \
|
|
||||||
" subl %1, %%edi\n" \
|
|
||||||
" addl $1, %%ebx\n" \
|
|
||||||
" cmpl %2, %%ebx\n" \
|
|
||||||
" jne Blank3\n" \
|
|
||||||
: : "g" (pitch), "g" (SurfaceX), "g" (SurfaceY), "D" (SurfBufD) : "cc", "memory", "eax", "ebx", "ecx");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UnlockSurface();
|
UnlockSurface();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sw_drawwin()
|
void sw_drawwin()
|
||||||
{
|
{
|
||||||
DWORD i,j,color32;
|
|
||||||
|
|
||||||
NGNoTransp = 0; // Set this value to 1 within the appropriate
|
NGNoTransp = 0; // Set this value to 1 within the appropriate
|
||||||
// video mode if you want to add a custom
|
// video mode if you want to add a custom
|
||||||
// transparency routine or hardware
|
// transparency routine or hardware
|
||||||
@@ -175,8 +151,7 @@ void sw_drawwin()
|
|||||||
// (see ProcessTransparencies in newgfx16.asm
|
// (see ProcessTransparencies in newgfx16.asm
|
||||||
// for ZSNES' current transparency code)
|
// for ZSNES' current transparency code)
|
||||||
UpdateVFrame();
|
UpdateVFrame();
|
||||||
if (curblank != 0)
|
if (curblank != 0) return;
|
||||||
return;
|
|
||||||
|
|
||||||
LockSurface();
|
LockSurface();
|
||||||
|
|
||||||
@@ -187,7 +162,6 @@ void sw_drawwin()
|
|||||||
|
|
||||||
pitch = surface->pitch;
|
pitch = surface->pitch;
|
||||||
SurfBufD = (DWORD) surface->pixels;
|
SurfBufD = (DWORD) surface->pixels;
|
||||||
SURFDW = (DWORD *) surface->pixels;
|
|
||||||
|
|
||||||
if (SurfBufD == 0) {
|
if (SurfBufD == 0) {
|
||||||
UnlockSurface();
|
UnlockSurface();
|
||||||
@@ -195,8 +169,6 @@ void sw_drawwin()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (SurfaceX == 256 && SurfaceY == 224) {
|
if (SurfaceX == 256 && SurfaceY == 224) {
|
||||||
switch(BitDepth) {
|
|
||||||
case 16:
|
|
||||||
if (MMXSupport){
|
if (MMXSupport){
|
||||||
__asm__ __volatile__ (
|
__asm__ __volatile__ (
|
||||||
" xorl %%eax, %%eax\n" \
|
" xorl %%eax, %%eax\n" \
|
||||||
@@ -225,7 +197,6 @@ void sw_drawwin()
|
|||||||
" emms\n" \
|
" emms\n" \
|
||||||
: : "g" (pitch), "S" (ScreenPtr), "D" (SurfBufD) : "cc", "memory", "eax", "ecx");
|
: : "g" (pitch), "S" (ScreenPtr), "D" (SurfBufD) : "cc", "memory", "eax", "ecx");
|
||||||
} else {
|
} else {
|
||||||
// Doesn't seem to work - DDOI
|
|
||||||
__asm__ __volatile__ (
|
__asm__ __volatile__ (
|
||||||
" xorl %%eax, %%eax\n" \
|
" xorl %%eax, %%eax\n" \
|
||||||
"Copying:\n" \
|
"Copying:\n" \
|
||||||
@@ -242,75 +213,10 @@ void sw_drawwin()
|
|||||||
" movl $128, %%ecx\n" \
|
" movl $128, %%ecx\n" \
|
||||||
" rep\n" \
|
" rep\n" \
|
||||||
" stosl\n" \
|
" stosl\n" \
|
||||||
: : "g" (pitch), "S" (ScreenPtr), "D" (SurfBufD) : "cc", "memory", "eax", "ecx");
|
: : "g" (pitch), "S" (ScreenPtr), "D" (SurfBufD)
|
||||||
|
: "cc", "memory", "eax", "ecx");
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
|
||||||
case 32:
|
|
||||||
__asm__ __volatile__ (
|
|
||||||
" xorl %%eax, %%eax\n" \
|
|
||||||
"Copying32b:\n" \
|
|
||||||
" movl $256, %%ecx\n" \
|
|
||||||
" pushl %%eax\n" \
|
|
||||||
" xorl %%eax, %%eax\n" \
|
|
||||||
"CopyLoop32b:\n" \
|
|
||||||
" movw (%%esi), %%ax\n" \
|
|
||||||
" addl $2, %%esi\n" \
|
|
||||||
" movl (%%ebx, %%eax, 4), %%edx\n" \
|
|
||||||
" movl %%edx, (%%edi)\n" \
|
|
||||||
" addl $4, %%edi\n" \
|
|
||||||
" decl %%ecx\n" \
|
|
||||||
" jnz CopyLoop32b\n" \
|
|
||||||
" popl %%eax\n" \
|
|
||||||
" incl %%eax\n" \
|
|
||||||
" addl %0, %%edi\n" \
|
|
||||||
" subl $1024, %%edi\n" \
|
|
||||||
" addl $64, %%esi\n" \
|
|
||||||
" cmpl $223, %%eax\n" \
|
|
||||||
" jne Copying32b\n" \
|
|
||||||
: : "g" (pitch), "b" (BitConv32Ptr), "S" (ScreenPtr), "D" (SurfBufD) : "cc", "memory", "eax", "ecx","edx");
|
|
||||||
SURFDW = (DWORD *) SurfBufD + 222*pitch;
|
|
||||||
color32 = 0x7F000000;
|
|
||||||
|
|
||||||
for(i=0; i<256; i++)
|
|
||||||
{
|
|
||||||
SURFDW[i] = color32;
|
|
||||||
}
|
|
||||||
|
|
||||||
SURFDW=(DWORD *) SurfBufD + 223*pitch;
|
|
||||||
color32=0x7F000000;
|
|
||||||
|
|
||||||
for(i=0; i<256; i++)
|
|
||||||
{
|
|
||||||
SURFDW[i] = color32;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 24:
|
|
||||||
fprintf (stderr, "Sorry, this mode does not work in 24 bit color\n");
|
|
||||||
LinuxExit();
|
|
||||||
/*
|
|
||||||
cvidmode=3;
|
|
||||||
initwinvideo();
|
|
||||||
sleep(1);
|
|
||||||
drawscreenwin();
|
|
||||||
*/
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
UnlockSurface();
|
|
||||||
fprintf(stderr, "Mode only available in 16 and 32 bit color.\n");
|
|
||||||
LinuxExit();
|
|
||||||
/*
|
|
||||||
cvidmode=2;
|
|
||||||
initwinvideo();
|
|
||||||
sleep(1);
|
|
||||||
drawscreenwin();
|
|
||||||
*/
|
|
||||||
break;
|
|
||||||
} // switch (BitDepth)
|
|
||||||
} else if (SurfaceX == 320 && SurfaceY == 240) {
|
} else if (SurfaceX == 320 && SurfaceY == 240) {
|
||||||
switch(BitDepth) {
|
|
||||||
case 16:
|
|
||||||
if (MMXSupport) {
|
if (MMXSupport) {
|
||||||
__asm__ __volatile__ (
|
__asm__ __volatile__ (
|
||||||
" xor %%eax, %%eax\n" \
|
" xor %%eax, %%eax\n" \
|
||||||
@@ -362,8 +268,8 @@ void sw_drawwin()
|
|||||||
" rep\n" \
|
" rep\n" \
|
||||||
" stosl\n" \
|
" stosl\n" \
|
||||||
" emms\n" \
|
" emms\n" \
|
||||||
: : "g" (pitch), "S" (ScreenPtr), "D" (SurfBufD) : "cc", "memory", "eax", "ebx", "ecx");
|
: : "g" (pitch), "S" (ScreenPtr), "D" (SurfBufD)
|
||||||
|
: "cc", "memory", "eax", "ebx", "ecx");
|
||||||
} else {
|
} else {
|
||||||
__asm__ __volatile__ (
|
__asm__ __volatile__ (
|
||||||
" xorl %%eax, %%eax\n" \
|
" xorl %%eax, %%eax\n" \
|
||||||
@@ -398,186 +304,19 @@ void sw_drawwin()
|
|||||||
" movl $128, %%ecx\n" \
|
" movl $128, %%ecx\n" \
|
||||||
" rep\n" \
|
" rep\n" \
|
||||||
" stosl\n" \
|
" stosl\n" \
|
||||||
: : "g" (pitch), "S" (ScreenPtr), "D" (SurfBufD) : "cc", "memory", "eax", "ebx", "ecx");
|
: : "g" (pitch), "S" (ScreenPtr), "D" (SurfBufD)
|
||||||
|
: "cc", "memory", "eax", "ebx", "ecx");
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
|
||||||
case 32:
|
|
||||||
for(j=0; j<8; j++)
|
|
||||||
{
|
|
||||||
SURFDW = (DWORD *) SurfBufD + j*pitch;
|
|
||||||
color32 = 0x7F000000;
|
|
||||||
|
|
||||||
for(i=0; i<320; i++)
|
|
||||||
{
|
|
||||||
SURFDW[i] = color32;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(j=8; j<223+8; j++)
|
|
||||||
{
|
|
||||||
color32 = 0x7F000000;
|
|
||||||
for(i=0; i<32; i++)
|
|
||||||
{
|
|
||||||
SURFDW[i]=color32;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(i=32; i<(256+32); i++)
|
|
||||||
{
|
|
||||||
color32 = (((*(WORD *)(ScreenPtr))&0xF800)<<8)+
|
|
||||||
(((*(WORD *)(ScreenPtr))&0x07E0)<<5)+
|
|
||||||
(((*(WORD *)(ScreenPtr))&0x001F)<<3)+0x7F000000;
|
|
||||||
SURFDW[i] = color32;
|
|
||||||
ScreenPtr += 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
color32 = 0x7F000000;
|
|
||||||
for(i=(256+32); i<320; i++)
|
|
||||||
{
|
|
||||||
SURFDW[i] = color32;
|
|
||||||
}
|
|
||||||
|
|
||||||
ScreenPtr = ScreenPtr+576-512;
|
|
||||||
SURFDW=(DWORD *) SurfBufD + j*pitch;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(j=(223+8);j<240;j++)
|
|
||||||
{
|
|
||||||
SURFDW=(DWORD *) SurfBufD + j*pitch;
|
|
||||||
|
|
||||||
color32 = 0x7F000000;
|
|
||||||
for(i=0; i<320; i++)
|
|
||||||
{
|
|
||||||
SURFDW[i] = color32;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
UnlockSurface();
|
|
||||||
fprintf(stderr, "Mode only available in 16 and 32 bit color.\n");
|
|
||||||
LinuxExit();
|
|
||||||
/*
|
|
||||||
cvidmode=2;
|
|
||||||
initwinvideo();
|
|
||||||
sleep(1);
|
|
||||||
drawscreenwin();
|
|
||||||
*/
|
|
||||||
break;
|
|
||||||
} // switch
|
|
||||||
} else if(SurfaceX == 512 && SurfaceY == 448) {
|
} else if(SurfaceX == 512 && SurfaceY == 448) {
|
||||||
switch(BitDepth) {
|
|
||||||
case 16:
|
|
||||||
AddEndBytes = pitch-1024;
|
AddEndBytes = pitch-1024;
|
||||||
NumBytesPerLine = pitch;
|
NumBytesPerLine = pitch;
|
||||||
WinVidMemStart = (void*)SurfBufD;
|
WinVidMemStart = (void*)SurfBufD;
|
||||||
copy640x480x16bwin();
|
copy640x480x16bwin();
|
||||||
break;
|
|
||||||
|
|
||||||
case 32:
|
|
||||||
__asm__ __volatile__ (
|
|
||||||
" xorl %%eax, %%eax\n" \
|
|
||||||
"Copying32c:\n" \
|
|
||||||
" movl $256, %%ecx\n" \
|
|
||||||
" pushl %%eax\n" \
|
|
||||||
" xorl %%eax, %%eax\n" \
|
|
||||||
"CopyLoop32c:\n" \
|
|
||||||
" movw (%%esi), %%ax\n" \
|
|
||||||
" addl $2, %%esi\n" \
|
|
||||||
" movl (%%ebx, %%eax, 4), %%edx\n" \
|
|
||||||
" movl %%edx, (%%edi)\n" \
|
|
||||||
" movl %%edx, 4(%%edi)\n" \
|
|
||||||
" addl $8, %%edi\n" \
|
|
||||||
" loop CopyLoop32c\n" \
|
|
||||||
" pushl %%esi\n" \
|
|
||||||
" movl %%edi, %%esi\n" \
|
|
||||||
" subl %0, %%esi\n" \
|
|
||||||
" movl $512, %%ecx\n" \
|
|
||||||
" rep\n" \
|
|
||||||
" movsl\n" \
|
|
||||||
" popl %%esi\n" \
|
|
||||||
" popl %%eax\n" \
|
|
||||||
" incl %%eax\n" \
|
|
||||||
" addl $64, %%esi\n" \
|
|
||||||
" cmpl $223, %%eax\n" \
|
|
||||||
" jne Copying32c\n" \
|
|
||||||
: : "g" (pitch), "S" (ScreenPtr), "D" (SurfBufD), "b" (BitConv32Ptr) : "cc", "memory","eax","ecx","edx");
|
|
||||||
break;
|
|
||||||
/*
|
|
||||||
addl pitch, %%edi
|
|
||||||
subl $2048, %%edi
|
|
||||||
*/
|
|
||||||
default:
|
|
||||||
UnlockSurface();
|
|
||||||
fprintf(stderr, "Mode only available in 16 or 32 bit color.\n");
|
|
||||||
LinuxExit();
|
|
||||||
/*
|
|
||||||
cvidmode=2;
|
|
||||||
initwinvideo();
|
|
||||||
sleep(1);
|
|
||||||
drawscreenwin();
|
|
||||||
*/
|
|
||||||
break;
|
|
||||||
} // switch
|
|
||||||
} else if (SurfaceX == 640 && SurfaceY == 480) {
|
} else if (SurfaceX == 640 && SurfaceY == 480) {
|
||||||
switch(BitDepth)
|
|
||||||
{
|
|
||||||
case 16:
|
|
||||||
AddEndBytes = pitch-1024;
|
AddEndBytes = pitch-1024;
|
||||||
NumBytesPerLine = pitch;
|
NumBytesPerLine = pitch;
|
||||||
WinVidMemStart = (void*) (SurfBufD + 16*640*2 + 64*2);
|
WinVidMemStart = (void*) (SurfBufD + 16*640*2 + 64*2);
|
||||||
copy640x480x16bwin();
|
copy640x480x16bwin();
|
||||||
break;
|
|
||||||
|
|
||||||
case 32:
|
|
||||||
__asm__ __volatile__ (
|
|
||||||
" xorl %%eax, %%eax\n" \
|
|
||||||
" addl $20608, %%edi\n" \
|
|
||||||
"Copying32d:\n" \
|
|
||||||
" movl $256, %%ecx\n" \
|
|
||||||
" pushl %%eax\n" \
|
|
||||||
" xorl %%eax, %%eax\n" \
|
|
||||||
"CopyLoop32d:\n" \
|
|
||||||
" movw (%%esi), %%ax\n" \
|
|
||||||
" addl $2, %%esi\n" \
|
|
||||||
" movl (%%ebx, %%eax, 4), %%edx\n" \
|
|
||||||
" movl %%edx, (%%edi)\n" \
|
|
||||||
" movl %%edx, 4(%%edi)\n" \
|
|
||||||
" addl $8, %%edi\n" \
|
|
||||||
" loop CopyLoop32d\n" \
|
|
||||||
" addl $512, %%edi\n" \
|
|
||||||
" pushl %%esi\n" \
|
|
||||||
" movl %%edi, %%esi\n" \
|
|
||||||
" subl %0, %%esi\n" \
|
|
||||||
" movl $512, %%ecx\n" \
|
|
||||||
" rep\n" \
|
|
||||||
" movsl\n" \
|
|
||||||
" popl %%esi\n" \
|
|
||||||
" popl %%eax\n" \
|
|
||||||
" incl %%eax\n" \
|
|
||||||
" addl $512, %%edi\n" \
|
|
||||||
" addl $64, %%esi\n" \
|
|
||||||
" cmpl $223, %%eax\n" \
|
|
||||||
" jne Copying32d\n" \
|
|
||||||
: : "g" (pitch), "S" (ScreenPtr), "D" (SurfBufD), "b" (BitConv32Ptr) : "cc", "memory","eax","ecx","edx");
|
|
||||||
break;
|
|
||||||
/*
|
|
||||||
addl pitch, %%edi
|
|
||||||
subl $2048, %%edi
|
|
||||||
*/
|
|
||||||
|
|
||||||
default:
|
|
||||||
UnlockSurface();
|
|
||||||
fprintf(stderr, "Mode only available in 16 or 32 bit color.\n");
|
|
||||||
LinuxExit();
|
|
||||||
/*
|
|
||||||
cvidmode=2;
|
|
||||||
initwinvideo();
|
|
||||||
sleep(1);
|
|
||||||
drawscreenwin();
|
|
||||||
*/
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
UnlockSurface();
|
UnlockSurface();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user