Keys now map correctly
This commit is contained in:
@@ -136,10 +136,10 @@ _int64 start, end, freq, update_ticks_pc, start2, end2, update_ticks_pc2;
|
|||||||
|
|
||||||
extern unsigned char pressed[];
|
extern unsigned char pressed[];
|
||||||
|
|
||||||
void drawscreenwin(void);
|
void drawscreenwin(void);
|
||||||
void Init_2xSaI(UINT32 BitFormat);
|
void Init_2xSaI(UINT32 BitFormat);
|
||||||
DWORD LastUsedPos=0;
|
DWORD LastUsedPos=0;
|
||||||
DWORD CurMode=-1;
|
DWORD CurMode=-1;
|
||||||
|
|
||||||
DWORD InputEn=0;
|
DWORD InputEn=0;
|
||||||
BOOL InputAcquire(void)
|
BOOL InputAcquire(void)
|
||||||
@@ -207,17 +207,14 @@ int Main_Proc(void)
|
|||||||
switch(event.type)
|
switch(event.type)
|
||||||
{
|
{
|
||||||
case SDL_KEYDOWN:
|
case SDL_KEYDOWN:
|
||||||
if(event.key.keysym.sym == SDLK_ESCAPE)
|
if (event.key.keysym.scancode-8 > 0) {
|
||||||
{
|
if (pressed[event.key.keysym.scancode-8]!=2)
|
||||||
SDL_Quit();
|
pressed[event.key.keysym.scancode-8]=1;
|
||||||
exit(0);
|
}
|
||||||
} else {
|
|
||||||
if (pressed[event.key.keysym.sym]!=2)
|
|
||||||
pressed[event.key.keysym.sym]=1;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case SDL_KEYUP:
|
case SDL_KEYUP:
|
||||||
pressed[event.key.keysym.sym]=0;
|
if (event.key.keysym.scancode-8 > 0)
|
||||||
|
pressed[event.key.keysym.scancode-8]=0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1775,19 +1772,19 @@ void clearwin()
|
|||||||
DWORD i,j,color32;
|
DWORD i,j,color32;
|
||||||
DWORD *SURFDW;
|
DWORD *SURFDW;
|
||||||
|
|
||||||
#ifdef __LINUX__
|
|
||||||
Temp1=LockSurface();
|
Temp1=LockSurface();
|
||||||
if(Temp1==0) { return; }
|
if(Temp1==0) { return; }
|
||||||
STUB_FUNCTION;
|
|
||||||
|
|
||||||
SurfBufD=(DWORD) &SurfBuf[0];
|
SurfBufD=(DWORD) &SurfBuf[0];
|
||||||
SURFDW=(DWORD *) &SurfBuf[0];
|
SURFDW=(DWORD *) &SurfBuf[0];
|
||||||
switch(BitDepth)
|
switch(BitDepth)
|
||||||
{
|
{
|
||||||
case 16:
|
case 16:
|
||||||
/*
|
// TODO - This code crashes zsnes - DDOI
|
||||||
|
STUB_FUNCTION;
|
||||||
|
/*
|
||||||
__asm__ __volatile__ ("
|
__asm__ __volatile__ ("
|
||||||
pushl %%es
|
pushw %%es
|
||||||
movw %%ds, %%ax
|
movw %%ds, %%ax
|
||||||
movw %%ax, %%es
|
movw %%ax, %%es
|
||||||
xorl %%eax, %%eax
|
xorl %%eax, %%eax
|
||||||
@@ -1796,17 +1793,21 @@ void clearwin()
|
|||||||
Blank2:
|
Blank2:
|
||||||
xorl %%eax, %%eax
|
xorl %%eax, %%eax
|
||||||
movl SurfaceX, %%ecx
|
movl SurfaceX, %%ecx
|
||||||
rep stosw
|
rep
|
||||||
|
stosw
|
||||||
addl Temp1, %%edi
|
addl Temp1, %%edi
|
||||||
subl SurfaceX, %%edi
|
subl SurfaceX, %%edi
|
||||||
subl SurfaceX, %%edi
|
subl SurfaceX, %%edi
|
||||||
addl $1, %%ebx
|
addl $1, %%ebx
|
||||||
cmpl SurfaceX, %%ebx
|
cmpl SurfaceX, %%ebx
|
||||||
jne Blank2
|
jne Blank2
|
||||||
|
popw %%es
|
||||||
" : : : "cc", "memory", "eax", "ebx", "ecx","edi", "esi");
|
" : : : "cc", "memory", "eax", "ebx", "ecx","edi", "esi");
|
||||||
|
*/
|
||||||
break;
|
break;
|
||||||
*/
|
|
||||||
case 32:
|
case 32:
|
||||||
|
// TODO - intel2gas this - DDOI
|
||||||
|
STUB_FUNCTION;
|
||||||
/*
|
/*
|
||||||
_asm {
|
_asm {
|
||||||
push es
|
push es
|
||||||
@@ -1832,60 +1833,6 @@ void clearwin()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
UnlockSurface();
|
UnlockSurface();
|
||||||
#else
|
|
||||||
Temp1=LockSurface();
|
|
||||||
if(Temp1==0) { return; }
|
|
||||||
|
|
||||||
SurfBufD=(DWORD) &SurfBuf[0];
|
|
||||||
SURFDW=(DWORD *) &SurfBuf[0];
|
|
||||||
|
|
||||||
switch(BitDepth)
|
|
||||||
{
|
|
||||||
case 16:
|
|
||||||
_asm {
|
|
||||||
push es
|
|
||||||
mov ax,ds
|
|
||||||
mov es,ax
|
|
||||||
xor eax,eax
|
|
||||||
mov edi,SurfBufD
|
|
||||||
xor ebx,ebx
|
|
||||||
Blank2:
|
|
||||||
xor eax,eax
|
|
||||||
mov ecx,SurfaceX
|
|
||||||
rep stosw
|
|
||||||
add edi,Temp1
|
|
||||||
sub edi,SurfaceX
|
|
||||||
sub edi,SurfaceX
|
|
||||||
add ebx,1
|
|
||||||
cmp ebx,SurfaceY
|
|
||||||
jne Blank2
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
_asm {
|
|
||||||
push es
|
|
||||||
mov ax,ds
|
|
||||||
mov es,ax
|
|
||||||
xor eax,eax
|
|
||||||
mov edi,SurfBufD
|
|
||||||
xor ebx,ebx
|
|
||||||
Blank3:
|
|
||||||
xor eax,eax
|
|
||||||
mov ecx,SurfaceX
|
|
||||||
rep stosd
|
|
||||||
add edi,Temp1
|
|
||||||
sub edi,SurfaceX
|
|
||||||
sub edi,SurfaceX
|
|
||||||
sub edi,SurfaceX
|
|
||||||
sub edi,SurfaceX
|
|
||||||
add ebx,1
|
|
||||||
cmp ebx,SurfaceY
|
|
||||||
jne Blank3
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UnlockSurface();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawscreenwin(void)
|
void drawscreenwin(void)
|
||||||
@@ -1900,8 +1847,6 @@ void drawscreenwin(void)
|
|||||||
// the value of newengen is equal to 1.
|
// the value of newengen is equal to 1.
|
||||||
// (see ProcessTransparencies in newgfx16.asm
|
// (see ProcessTransparencies in newgfx16.asm
|
||||||
// for ZSNES' current transparency code)
|
// for ZSNES' current transparency code)
|
||||||
#ifdef __LINUX__
|
|
||||||
//STUB_FUNCTION;
|
|
||||||
UpdateVFrame();
|
UpdateVFrame();
|
||||||
if(curblank!=0) return;
|
if(curblank!=0) return;
|
||||||
|
|
||||||
@@ -2050,10 +1995,113 @@ void drawscreenwin(void)
|
|||||||
switch(BitDepth)
|
switch(BitDepth)
|
||||||
{
|
{
|
||||||
case 16:
|
case 16:
|
||||||
|
// TODO - convert this assembly - DDOI
|
||||||
if (FPUCopy) {
|
if (FPUCopy) {
|
||||||
STUB_FUNCTION;
|
STUB_FUNCTION;
|
||||||
|
/*
|
||||||
|
_asm {
|
||||||
|
push es
|
||||||
|
mov ax,ds
|
||||||
|
mov es,ax
|
||||||
|
xor eax,eax
|
||||||
|
xor ebx,ebx
|
||||||
|
mov esi,ScreenPtr
|
||||||
|
mov edi,SurfBufD
|
||||||
|
Blank1MMX:
|
||||||
|
xor eax,eax
|
||||||
|
mov ecx,160
|
||||||
|
rep stosd
|
||||||
|
sub edi,640
|
||||||
|
add edi,Temp1
|
||||||
|
add ebx,1
|
||||||
|
cmp ebx,8
|
||||||
|
jne Blank1MMX
|
||||||
|
xor ebx,ebx
|
||||||
|
pxor mm0,mm0
|
||||||
|
Copying2MMX:
|
||||||
|
mov ecx,4
|
||||||
|
MMXLoopA:
|
||||||
|
movq [edi],mm0
|
||||||
|
movq [edi+8],mm0
|
||||||
|
add edi,16
|
||||||
|
dec ecx
|
||||||
|
jnz MMXLoopA
|
||||||
|
mov ecx,32
|
||||||
|
MMXLoopB:
|
||||||
|
movq mm1,[esi]
|
||||||
|
movq mm2,[esi+8]
|
||||||
|
movq [edi],mm1
|
||||||
|
movq [edi+8],mm2
|
||||||
|
add esi,16
|
||||||
|
add edi,16
|
||||||
|
dec ecx
|
||||||
|
jnz MMXLoopB
|
||||||
|
mov ecx,4
|
||||||
|
MMXLoopC:
|
||||||
|
movq [edi],mm0
|
||||||
|
movq [edi+8],mm0
|
||||||
|
add edi,16
|
||||||
|
dec ecx
|
||||||
|
jnz MMXLoopC
|
||||||
|
inc ebx
|
||||||
|
add edi,Temp1
|
||||||
|
sub edi,640
|
||||||
|
sub esi,512
|
||||||
|
add esi,576
|
||||||
|
cmp ebx,223
|
||||||
|
jne Copying2MMX
|
||||||
|
|
||||||
|
xor eax,eax
|
||||||
|
mov ecx,128
|
||||||
|
rep stosd
|
||||||
|
pop es
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
*/
|
||||||
} else {
|
} else {
|
||||||
STUB_FUNCTION;
|
STUB_FUNCTION;
|
||||||
|
/*
|
||||||
|
_asm {
|
||||||
|
push es
|
||||||
|
mov ax,ds
|
||||||
|
mov es,ax
|
||||||
|
xor eax,eax
|
||||||
|
xor ebx,ebx
|
||||||
|
mov esi,ScreenPtr
|
||||||
|
mov edi,SurfBufD
|
||||||
|
Blank1:
|
||||||
|
xor eax,eax
|
||||||
|
mov ecx,160
|
||||||
|
rep stosd
|
||||||
|
sub edi,640
|
||||||
|
add edi,Temp1
|
||||||
|
add ebx,1
|
||||||
|
cmp ebx,8
|
||||||
|
jne Blank1
|
||||||
|
xor ebx,ebx
|
||||||
|
Copying2:
|
||||||
|
xor eax,eax
|
||||||
|
mov ecx,16
|
||||||
|
rep stosd
|
||||||
|
mov ecx,128
|
||||||
|
rep movsd
|
||||||
|
xor eax,eax
|
||||||
|
mov ecx,16
|
||||||
|
rep stosd
|
||||||
|
inc ebx
|
||||||
|
add edi,Temp1
|
||||||
|
sub edi,640
|
||||||
|
sub esi,512
|
||||||
|
add esi,576
|
||||||
|
cmp ebx,223
|
||||||
|
jne Copying2
|
||||||
|
|
||||||
|
xor eax,eax
|
||||||
|
mov ecx,128
|
||||||
|
rep stosd
|
||||||
|
pop es
|
||||||
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 32:
|
||||||
@@ -2159,392 +2207,6 @@ void drawscreenwin(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
UnlockSurface();
|
UnlockSurface();
|
||||||
#else
|
|
||||||
UpdateVFrame();
|
|
||||||
if(curblank!=0) return;
|
|
||||||
|
|
||||||
Temp1=LockSurface();
|
|
||||||
if(Temp1==0) { return; }
|
|
||||||
|
|
||||||
ScreenPtr=vidbuffer;
|
|
||||||
ScreenPtr+=16*2+32*2+256*2;
|
|
||||||
SurfBufD=(DWORD) &SurfBuf[0];
|
|
||||||
SURFDW=(DWORD *) &SurfBuf[0];
|
|
||||||
if(SurfaceX==256&&SurfaceY==224)
|
|
||||||
{
|
|
||||||
switch(BitDepth)
|
|
||||||
{
|
|
||||||
case 16:
|
|
||||||
if (FPUCopy){
|
|
||||||
_asm {
|
|
||||||
push es
|
|
||||||
mov ax,ds
|
|
||||||
mov es,ax
|
|
||||||
xor eax,eax
|
|
||||||
mov esi,ScreenPtr
|
|
||||||
mov edi,SurfBufD
|
|
||||||
Copying3:
|
|
||||||
mov ecx,32
|
|
||||||
CopyLoop:
|
|
||||||
movq mm0,[esi]
|
|
||||||
movq mm1,[esi+8]
|
|
||||||
movq [edi],mm0
|
|
||||||
movq [edi+8],mm1
|
|
||||||
add esi,16
|
|
||||||
add edi,16
|
|
||||||
dec ecx
|
|
||||||
jnz CopyLoop
|
|
||||||
inc eax
|
|
||||||
add edi,Temp1
|
|
||||||
sub edi,512
|
|
||||||
sub esi,512
|
|
||||||
add esi,576
|
|
||||||
cmp eax,223
|
|
||||||
jne Copying3
|
|
||||||
|
|
||||||
xor eax,eax
|
|
||||||
mov ecx,128
|
|
||||||
rep stosd
|
|
||||||
pop es
|
|
||||||
emms
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
_asm {
|
|
||||||
push es
|
|
||||||
mov ax,ds
|
|
||||||
mov es,ax
|
|
||||||
xor eax,eax
|
|
||||||
mov esi,ScreenPtr
|
|
||||||
mov edi,SurfBufD
|
|
||||||
Copying:
|
|
||||||
mov ecx,128
|
|
||||||
rep movsd
|
|
||||||
inc eax
|
|
||||||
add edi,Temp1
|
|
||||||
sub edi,512
|
|
||||||
sub esi,512
|
|
||||||
add esi,576
|
|
||||||
cmp eax,223
|
|
||||||
jne Copying
|
|
||||||
|
|
||||||
xor eax,eax
|
|
||||||
mov ecx,128
|
|
||||||
rep stosd
|
|
||||||
pop es
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
_asm {
|
|
||||||
push es
|
|
||||||
mov ax,ds
|
|
||||||
mov es,ax
|
|
||||||
xor eax,eax
|
|
||||||
mov ebx,BitConv32Ptr
|
|
||||||
mov esi,ScreenPtr
|
|
||||||
mov edi,SurfBufD
|
|
||||||
Copying32b:
|
|
||||||
mov ecx,256
|
|
||||||
push eax
|
|
||||||
xor eax,eax
|
|
||||||
CopyLoop32b:
|
|
||||||
mov ax,[esi]
|
|
||||||
add esi,2
|
|
||||||
mov edx,[ebx+eax*4]
|
|
||||||
mov [edi],edx
|
|
||||||
add edi,4
|
|
||||||
loop CopyLoop32b
|
|
||||||
pop eax
|
|
||||||
inc eax
|
|
||||||
add edi,Temp1
|
|
||||||
sub edi,1024
|
|
||||||
sub esi,512
|
|
||||||
add esi,576
|
|
||||||
cmp eax,223
|
|
||||||
jne Copying32b
|
|
||||||
pop es
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* for(j=0;j<223;j++)
|
|
||||||
{
|
|
||||||
for(i=0;i<256;i++)
|
|
||||||
{
|
|
||||||
color32=(((*(WORD *)(ScreenPtr))&0xF800)<<8)+
|
|
||||||
(((*(WORD *)(ScreenPtr))&0x07E0)<<5)+
|
|
||||||
(((*(WORD *)(ScreenPtr))&0x001F)<<3)+0x7F000000;
|
|
||||||
SURFDW[i]=color32;
|
|
||||||
ScreenPtr+=2;
|
|
||||||
}
|
|
||||||
ScreenPtr=ScreenPtr+576-512;
|
|
||||||
SURFDW=(DWORD *) &SurfBuf[j*Temp1];
|
|
||||||
} */
|
|
||||||
|
|
||||||
SURFDW=(DWORD *) &SurfBuf[222*Temp1];
|
|
||||||
color32=0x7F000000;
|
|
||||||
|
|
||||||
for(i=0;i<256;i++)
|
|
||||||
{
|
|
||||||
SURFDW[i]=color32;
|
|
||||||
}
|
|
||||||
|
|
||||||
SURFDW=(DWORD *) &SurfBuf[223*Temp1];
|
|
||||||
color32=0x7F000000;
|
|
||||||
|
|
||||||
for(i=0;i<256;i++)
|
|
||||||
{
|
|
||||||
SURFDW[i]=color32;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
MessageBox (NULL, "Sorry. ZSNESw does not work in windowed 24 bit
|
|
||||||
color modes. \nClick 'OK' to switch to a full screen mode.", "DDRAW Error" ,
|
|
||||||
MB_ICONERROR );
|
|
||||||
cvidmode=3;
|
|
||||||
initwinvideo();
|
|
||||||
Sleep(1000);
|
|
||||||
drawscreenwin();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
UnlockSurface();
|
|
||||||
MessageBox (NULL, "Mode only available in 16 and 32 bit color",
|
|
||||||
"DDRAW Error" , MB_ICONERROR );
|
|
||||||
cvidmode=2;
|
|
||||||
initwinvideo();
|
|
||||||
Sleep(1000);
|
|
||||||
drawscreenwin();
|
|
||||||
// exit(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(SurfaceX==320&&SurfaceY==240)
|
|
||||||
{
|
|
||||||
switch(BitDepth)
|
|
||||||
{
|
|
||||||
case 16:
|
|
||||||
if (FPUCopy){
|
|
||||||
_asm {
|
|
||||||
push es
|
|
||||||
mov ax,ds
|
|
||||||
mov es,ax
|
|
||||||
xor eax,eax
|
|
||||||
xor ebx,ebx
|
|
||||||
mov esi,ScreenPtr
|
|
||||||
mov edi,SurfBufD
|
|
||||||
Blank1MMX:
|
|
||||||
xor eax,eax
|
|
||||||
mov ecx,160
|
|
||||||
rep stosd
|
|
||||||
sub edi,640
|
|
||||||
add edi,Temp1
|
|
||||||
add ebx,1
|
|
||||||
cmp ebx,8
|
|
||||||
jne Blank1MMX
|
|
||||||
xor ebx,ebx
|
|
||||||
pxor mm0,mm0
|
|
||||||
Copying2MMX:
|
|
||||||
mov ecx,4
|
|
||||||
MMXLoopA:
|
|
||||||
movq [edi],mm0
|
|
||||||
movq [edi+8],mm0
|
|
||||||
add edi,16
|
|
||||||
dec ecx
|
|
||||||
jnz MMXLoopA
|
|
||||||
mov ecx,32
|
|
||||||
MMXLoopB:
|
|
||||||
movq mm1,[esi]
|
|
||||||
movq mm2,[esi+8]
|
|
||||||
movq [edi],mm1
|
|
||||||
movq [edi+8],mm2
|
|
||||||
add esi,16
|
|
||||||
add edi,16
|
|
||||||
dec ecx
|
|
||||||
jnz MMXLoopB
|
|
||||||
mov ecx,4
|
|
||||||
MMXLoopC:
|
|
||||||
movq [edi],mm0
|
|
||||||
movq [edi+8],mm0
|
|
||||||
add edi,16
|
|
||||||
dec ecx
|
|
||||||
jnz MMXLoopC
|
|
||||||
inc ebx
|
|
||||||
add edi,Temp1
|
|
||||||
sub edi,640
|
|
||||||
sub esi,512
|
|
||||||
add esi,576
|
|
||||||
cmp ebx,223
|
|
||||||
jne Copying2MMX
|
|
||||||
|
|
||||||
xor eax,eax
|
|
||||||
mov ecx,128
|
|
||||||
rep stosd
|
|
||||||
pop es
|
|
||||||
emms
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
_asm {
|
|
||||||
push es
|
|
||||||
mov ax,ds
|
|
||||||
mov es,ax
|
|
||||||
xor eax,eax
|
|
||||||
xor ebx,ebx
|
|
||||||
mov esi,ScreenPtr
|
|
||||||
mov edi,SurfBufD
|
|
||||||
Blank1:
|
|
||||||
xor eax,eax
|
|
||||||
mov ecx,160
|
|
||||||
rep stosd
|
|
||||||
sub edi,640
|
|
||||||
add edi,Temp1
|
|
||||||
add ebx,1
|
|
||||||
cmp ebx,8
|
|
||||||
jne Blank1
|
|
||||||
xor ebx,ebx
|
|
||||||
Copying2:
|
|
||||||
xor eax,eax
|
|
||||||
mov ecx,16
|
|
||||||
rep stosd
|
|
||||||
mov ecx,128
|
|
||||||
rep movsd
|
|
||||||
xor eax,eax
|
|
||||||
mov ecx,16
|
|
||||||
rep stosd
|
|
||||||
inc ebx
|
|
||||||
add edi,Temp1
|
|
||||||
sub edi,640
|
|
||||||
sub esi,512
|
|
||||||
add esi,576
|
|
||||||
cmp ebx,223
|
|
||||||
jne Copying2
|
|
||||||
|
|
||||||
xor eax,eax
|
|
||||||
mov ecx,128
|
|
||||||
rep stosd
|
|
||||||
pop es
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
for(j=0;j<8;j++)
|
|
||||||
{
|
|
||||||
SURFDW=(DWORD *) &SurfBuf[j*Temp1];
|
|
||||||
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 *) &SurfBuf[(j)*Temp1];
|
|
||||||
}
|
|
||||||
|
|
||||||
for(j=(223+8);j<240;j++)
|
|
||||||
{
|
|
||||||
SURFDW=(DWORD *) &SurfBuf[j*Temp1];
|
|
||||||
|
|
||||||
color32=0x7F000000;
|
|
||||||
for(i=0;i<320;i++)
|
|
||||||
{
|
|
||||||
SURFDW[i]=color32;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
UnlockSurface();
|
|
||||||
MessageBox (NULL, "Mode only available in 16 and 32 bit color",
|
|
||||||
"DDRAW Error" , MB_ICONERROR );
|
|
||||||
cvidmode=2;
|
|
||||||
initwinvideo();
|
|
||||||
Sleep(1000);
|
|
||||||
drawscreenwin();
|
|
||||||
// exit(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(SurfaceX==512&&SurfaceY==448)
|
|
||||||
{
|
|
||||||
switch(BitDepth)
|
|
||||||
{
|
|
||||||
case 16:
|
|
||||||
AddEndBytes=Temp1-1024;
|
|
||||||
NumBytesPerLine=Temp1;
|
|
||||||
WinVidMemStart=&SurfBuf[0];
|
|
||||||
_asm
|
|
||||||
{
|
|
||||||
pushad
|
|
||||||
call copy640x480x16bwin
|
|
||||||
popad
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
UnlockSurface();
|
|
||||||
MessageBox (NULL, "Mode only available in 16 bit color", "DDRAW
|
|
||||||
Error" , MB_ICONERROR );
|
|
||||||
cvidmode=2;
|
|
||||||
initwinvideo();
|
|
||||||
Sleep(1000);
|
|
||||||
drawscreenwin();
|
|
||||||
// exit(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(SurfaceX==640&&SurfaceY==480)
|
|
||||||
{
|
|
||||||
switch(BitDepth)
|
|
||||||
{
|
|
||||||
case 16:
|
|
||||||
AddEndBytes=Temp1-1024;
|
|
||||||
NumBytesPerLine=Temp1;
|
|
||||||
WinVidMemStart=&SurfBuf[16*640*2+64*2];
|
|
||||||
_asm
|
|
||||||
{
|
|
||||||
pushad
|
|
||||||
call copy640x480x16bwin
|
|
||||||
popad
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
UnlockSurface();
|
|
||||||
MessageBox (NULL, "Mode only available in 16 bit color", "DDRAW
|
|
||||||
Error" , MB_ICONERROR );
|
|
||||||
cvidmode=2;
|
|
||||||
initwinvideo();
|
|
||||||
Sleep(1000);
|
|
||||||
drawscreenwin();
|
|
||||||
// exit(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
UnlockSurface();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user