Keys now map correctly

This commit is contained in:
theoddone33
2001-04-14 16:45:08 +00:00
parent 593b32498c
commit d5edeac915

View File

@@ -136,10 +136,10 @@ _int64 start, end, freq, update_ticks_pc, start2, end2, update_ticks_pc2;
extern unsigned char pressed[];
void drawscreenwin(void);
void Init_2xSaI(UINT32 BitFormat);
DWORD LastUsedPos=0;
DWORD CurMode=-1;
void drawscreenwin(void);
void Init_2xSaI(UINT32 BitFormat);
DWORD LastUsedPos=0;
DWORD CurMode=-1;
DWORD InputEn=0;
BOOL InputAcquire(void)
@@ -207,17 +207,14 @@ int Main_Proc(void)
switch(event.type)
{
case SDL_KEYDOWN:
if(event.key.keysym.sym == SDLK_ESCAPE)
{
SDL_Quit();
exit(0);
} else {
if (pressed[event.key.keysym.sym]!=2)
pressed[event.key.keysym.sym]=1;
}
if (event.key.keysym.scancode-8 > 0) {
if (pressed[event.key.keysym.scancode-8]!=2)
pressed[event.key.keysym.scancode-8]=1;
}
break;
case SDL_KEYUP:
pressed[event.key.keysym.sym]=0;
if (event.key.keysym.scancode-8 > 0)
pressed[event.key.keysym.scancode-8]=0;
break;
}
}
@@ -1775,19 +1772,19 @@ void clearwin()
DWORD i,j,color32;
DWORD *SURFDW;
#ifdef __LINUX__
Temp1=LockSurface();
if(Temp1==0) { return; }
STUB_FUNCTION;
SurfBufD=(DWORD) &SurfBuf[0];
SURFDW=(DWORD *) &SurfBuf[0];
switch(BitDepth)
{
case 16:
/*
// TODO - This code crashes zsnes - DDOI
STUB_FUNCTION;
/*
__asm__ __volatile__ ("
pushl %%es
pushw %%es
movw %%ds, %%ax
movw %%ax, %%es
xorl %%eax, %%eax
@@ -1796,17 +1793,21 @@ void clearwin()
Blank2:
xorl %%eax, %%eax
movl SurfaceX, %%ecx
rep stosw
rep
stosw
addl Temp1, %%edi
subl SurfaceX, %%edi
subl SurfaceX, %%edi
addl $1, %%ebx
cmpl SurfaceX, %%ebx
jne Blank2
popw %%es
" : : : "cc", "memory", "eax", "ebx", "ecx","edi", "esi");
*/
break;
*/
case 32:
// TODO - intel2gas this - DDOI
STUB_FUNCTION;
/*
_asm {
push es
@@ -1832,60 +1833,6 @@ void clearwin()
break;
}
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)
@@ -1900,8 +1847,6 @@ void drawscreenwin(void)
// the value of newengen is equal to 1.
// (see ProcessTransparencies in newgfx16.asm
// for ZSNES' current transparency code)
#ifdef __LINUX__
//STUB_FUNCTION;
UpdateVFrame();
if(curblank!=0) return;
@@ -2050,10 +1995,113 @@ void drawscreenwin(void)
switch(BitDepth)
{
case 16:
// TODO - convert this assembly - DDOI
if (FPUCopy) {
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 {
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;
case 32:
@@ -2159,392 +2207,6 @@ void drawscreenwin(void)
}
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
}