From c462de6dbf98be90146e3e3373258311075a36a0 Mon Sep 17 00:00:00 2001 From: theoddone33 <> Date: Thu, 3 May 2001 03:27:11 +0000 Subject: [PATCH] Fix l/r keys in GUI --- zsnes/src/gui/guikeys.inc | 9 + zsnes/src/linux/sdlintrf.asm | 350 +++++++++++++++++------------------ zsnes/src/linux/sdllink.c | 12 +- 3 files changed, 183 insertions(+), 188 deletions(-) diff --git a/zsnes/src/gui/guikeys.inc b/zsnes/src/gui/guikeys.inc index 9b63c284..854f258a 100644 --- a/zsnes/src/gui/guikeys.inc +++ b/zsnes/src/gui/guikeys.inc @@ -214,8 +214,13 @@ GUIgetcurrentinput: jne near .notwinport2 ; GUIgetprkeys 0C8h,72 ; GUIgetprkeys 0D0h,80 +%ifdef __LINUX__ + GUIgetprkeys 05Ch,75 + GUIgetprkeys 05Eh,77 +%else GUIgetprkeys 0CBh,75 GUIgetprkeys 0CDh,77 +%endif GUIgetprkeys 0C9h,73 GUIgetprkeys 0D1h,81 GUIgetprkeys 0C7h,71 @@ -1770,7 +1775,11 @@ GUILoadKeys: .nextl cmp byte[ebx],':' je .donel +%ifdef __LINUX__ + cmp byte[ebx],'/' +%else cmp byte[ebx],'\' +%endif je .donel inc ebx cmp byte[ebx],0 diff --git a/zsnes/src/linux/sdlintrf.asm b/zsnes/src/linux/sdlintrf.asm index f449e798..85e06fb0 100644 --- a/zsnes/src/linux/sdlintrf.asm +++ b/zsnes/src/linux/sdlintrf.asm @@ -618,7 +618,6 @@ NEWSYM Get_File_Date ;int 21h ret - RefreshKeybBuffer: call JoyRead mov ebx,[HoldKey] @@ -673,15 +672,12 @@ RefreshKeybBuffer: cmp al,[Keybhead] je .none mov al,[Keybtail] - mov cl,[KeyConvTable+ebx] - cmp byte[pressed+2Ah],0 - jne .shift - cmp byte[pressed+36h],0 - je .noshift -.shift - mov cl,[KeyConvTableS+ebx] -.noshift - mov [HoldKeyBuf+eax],cl +; mov cl,[KeyConvTable+ebx] +; cmp byte[shiftptr],0 +; je .noshift +; mov cl,[KeyConvTableS+ebx] +;.noshift +; mov [HoldKeyBuf+eax],cl inc al and al,0Fh mov [Keybtail],al @@ -712,17 +708,17 @@ NEWSYM Check_Key ; xor eax,eax ; mov byte [keyboardhit],al ; pop eax - pushad +; pushad ; call kbhit - call RefreshKeybBuffer - mov byte[wfkey],0 - mov al,[Keybhead] - cmp al,[Keybtail] - je .nokeys - mov byte[wfkey],0FFh -.nokeys - popad - mov al,[wfkey] +; call RefreshKeybBuffer +; mov byte[wfkey],0 +; mov al,[Keybhead] +; cmp al,[Keybtail] +; je .nokeys +; mov byte[wfkey],0FFh +;.nokeys +; popad +; mov al,[wfkey] ; mov ah,0Bh ; int 21h ret @@ -749,57 +745,57 @@ NEWSYM Get_Key xor al,al ret - pushad -.nonewkey - call RefreshKeybBuffer - xor eax,eax - mov al,[Keybhead] - cmp al,[Keybtail] - je .nonewkey - mov bl,[HoldKeyBuf+eax] - test bl,80h - jz .notupperkey - xor bl,bl - sub byte[HoldKeyBuf+eax],80h - jmp .yesupperkey -.notupperkey - inc al - and al,0Fh - mov [Keybhead],al -.yesupperkey -; call getch - mov [wfkey],bl - popad - mov al,[wfkey] - ;mov ah,7 - ;int 21h - ; return key in al - ret +; pushad +;.nonewkey +; call RefreshKeybBuffer +; xor eax,eax +; mov al,[Keybhead] +; cmp al,[Keybtail] +; je .nonewkey +; mov bl,[HoldKeyBuf+eax] +; test bl,80h +; jz .notupperkey +; xor bl,bl +; sub byte[HoldKeyBuf+eax],80h +; jmp .yesupperkey +;.notupperkey +; inc al +; and al,0Fh +; mov [Keybhead],al +;.yesupperkey +;; call getch +; mov [wfkey],bl +; popad +; mov al,[wfkey] +; ;mov ah,7 +; ;int 21h +; ; return key in al +; ret -KeyConvTable - db 255,27 ,'1','2','3','4','5','6' ; 00h - db '7','8','9','0','-','=',8 ,9 - db 'Q','W','E','R','T','Y','U','I' ; 10h - db 'O','P','[',']',13 ,255,'A','S' - db 'D','F','G','H','J','K','L',';' ; 20h - db 39 ,'`',255,'\','Z','X','C','V' - db 'B','N','M',',','.','/',255,'*' ; 30h - db 255,32 ,255,255,255,255,255,255 - db 255,255,255,255,255,255,255,255 ; 40h - db 200,201,202,203,204,205,206,207 - db 208,209,210,211,255,255,255,255 ; 50h -KeyConvTableS - db 255,27 ,'!','@','#','$','%','^' ; 00h - db '&','*','(',')','_','+',8 ,9 - db 'Q','W','E','R','T','Y','U','I' ; 10h - db 'O','P','{','}',13 ,255,'A','S' - db 'D','F','G','H','J','K','L',':' ; 20h - db '"','~',255,'|','Z','X','C','V' - db 'B','N','M','<','>','?',255,'*' ; 30h - db 255,32 ,255,255,255,255,255,255 - db 255,255,255,255,255,255,255,255 ; 40h - db 200,201,202,203,204,205,206,207 - db 208,209,210,211,255,255,255,255 ; 50h +;KeyConvTable +; db 255,27 ,'1','2','3','4','5','6' ; 00h +; db '7','8','9','0','-','=',8 ,9 +; db 'Q','W','E','R','T','Y','U','I' ; 10h +; db 'O','P','[',']',13 ,255,'A','S' +; db 'D','F','G','H','J','K','L',';' ; 20h +; db 39 ,'`',255,'\','Z','X','C','V' +; db 'B','N','M',',','.','/',255,'*' ; 30h +; db 255,32 ,255,255,255,255,255,255 +; db 255,255,255,255,255,255,255,255 ; 40h +; db 200,201,202,203,204,205,206,207 +; db 208,209,210,211,255,255,255,255 ; 50h +;KeyConvTableS +; db 255,27 ,'!','@','#','$','%','^' ; 00h +; db '&','*','(',')','_','+',8 ,9 +; db 'Q','W','E','R','T','Y','U','I' ; 10h +; db 'O','P','{','}',13 ,255,'A','S' +; db 'D','F','G','H','J','K','L',':' ; 20h +; db '"','~',255,'|','Z','X','C','V' +; db 'B','N','M','<','>','?',255,'*' ; 30h +; db 255,32 ,255,255,255,255,255,255 +; db 255,255,255,255,255,255,255,255 ; 40h +; db 200,201,202,203,204,205,206,207 +; db 208,209,210,211,255,255,255,255 ; 50h ; mov dl,[SRAMDrive] ; mov ebx,SRAMDir @@ -908,20 +904,20 @@ NEWSYM Change_Dir ret ; dl = drive, ebx = dir - push ebx - mov ah,0Eh - int 21h - mov ah,3Bh - mov edx,gotoroot - int 21h - pop ebx - mov edx,ebx - cmp byte[edx],0 - je .nodir - mov ah,3Bh - int 21h -.nodir - ret +; push ebx +; mov ah,0Eh +; int 21h +; mov ah,3Bh +; mov edx,gotoroot +; int 21h +; pop ebx +; mov edx,ebx +; cmp byte[edx],0 +; je .nodir +; mov ah,3Bh +; int 21h +;.nodir +; ret ; mov ebx,LoadDir ; mov edx,LoadDrive @@ -952,16 +948,16 @@ NEWSYM Get_Dir ; mov [edx],al ret - push edx - mov ah,47h - mov dl,0 - mov esi,ebx - int 21h - mov ah,19h - int 21h - pop edx - mov [edx],al - ret +; push edx +; mov ah,47h +; mov dl,0 +; mov esi,ebx +; int 21h +; mov ah,19h +; int 21h +; pop edx +; mov [edx],al +; ret NEWSYM Get_First_Entry ; cx = attributes, edx = pointer to wildcard @@ -982,10 +978,10 @@ NEWSYM Get_First_Entry popad stc ret - mov ah,4Eh - mov al,0 - int 21h - ret +; mov ah,4Eh +; mov al,0 +; int 21h +; ret NEWSYM Get_Next_Entry mov dword[DTALocPos],DTALoc @@ -1000,9 +996,9 @@ NEWSYM Get_Next_Entry popad stc ret - mov ah,04Fh - int 21h - ret +; mov ah,04Fh +; int 21h +; ret NEWSYM Set_DTA_Address ; Only needed for dos stuff @@ -1072,7 +1068,7 @@ NEWSYM InitPreGame ; Executes before starting/continuing a game ; set up interrupt handler ; get old handler pmode mode address ; Process stuff such as sound init, interrupt initialization - ret +; ret NEWSYM SetupPreGame ; Executes after pre-game init, can execute multiple ; times after a single InitPreGame @@ -1100,88 +1096,88 @@ NEWSYM changepal ; 8-bit palette set (changes only) NEWSYM displayfpspal ret - mov al,128 - mov dx,03C8h - out dx,al - inc dx - mov al,63 - out dx,al - out dx,al - out dx,al - mov al,128+64 - mov dx,03C8h - out dx,al - inc dx - mov al,0 - out dx,al - out dx,al - out dx,al - ret +; mov al,128 +; mov dx,03C8h +; out dx,al +; inc dx +; mov al,63 +; out dx,al +; out dx,al +; out dx,al +; mov al,128+64 +; mov dx,03C8h +; out dx,al +; inc dx +; mov al,0 +; out dx,al +; out dx,al +; out dx,al +; ret NEWSYM superscopepal ret - mov al,128+16 - mov dx,03C8h - out dx,al - inc dx - mov al,63 - out dx,al - xor al,al - out dx,al - out dx,al - ret +; mov al,128+16 +; mov dx,03C8h +; out dx,al +; inc dx +; mov al,63 +; out dx,al +; xor al,al +; out dx,al +; out dx,al +; ret NEWSYM saveselectpal ret ; set palette of colors 128,144, and 160 to white, blue, and red - mov al,128 - mov dx,03C8h - out dx,al - inc dx - mov al,63 - out dx,al - out dx,al - out dx,al - mov al,144 - mov dx,03C8h - out dx,al - inc dx - xor al,al - out dx,al - out dx,al - mov al,50 - out dx,al - mov al,160 - mov dx,03C8h - out dx,al - inc dx - mov al,45 - out dx,al - xor al,al - out dx,al - out dx,al - mov al,176 - mov dx,03C8h - out dx,al - inc dx - mov al,47 - out dx,al - xor al,al - out dx,al - out dx,al - mov al,208 - mov dx,03C8h - out dx,al - inc dx - mov al,50 - out dx,al - mov al,25 - out dx,al - xor al,al - out dx,al - ret +; mov al,128 +; mov dx,03C8h +; out dx,al +; inc dx +; mov al,63 +; out dx,al +; out dx,al +; out dx,al +; mov al,144 +; mov dx,03C8h +; out dx,al +; inc dx +; xor al,al +; out dx,al +; out dx,al +; mov al,50 +; out dx,al +; mov al,160 +; mov dx,03C8h +; out dx,al +; inc dx +; mov al,45 +; out dx,al +; xor al,al +; out dx,al +; out dx,al +; mov al,176 +; mov dx,03C8h +; out dx,al +; inc dx +; mov al,47 +; out dx,al +; xor al,al +; out dx,al +; out dx,al +; mov al,208 +; mov dx,03C8h +; out dx,al +; inc dx +; mov al,50 +; out dx,al +; mov al,25 +; out dx,al +; xor al,al +; out dx,al +; ret ; ** init video mode functions ** NEWSYM firstvideo, dd 1 @@ -1504,9 +1500,6 @@ NEWSYM WMouseMoveX, dd 0 NEWSYM WMouseMoveY, dd 0 NEWSYM WMouseButton, dd 0 - - - NEWSYM Get_MouseData ; Returns both pressed and coordinates ; bx : bit 0 = left button, bit 1 = right button ; cx = Mouse X Position, dx = Mouse Y Position @@ -1758,7 +1751,6 @@ InitializeGfxStuff: call Init_2xSaIMMXW pop eax - ret diff --git a/zsnes/src/linux/sdllink.c b/zsnes/src/linux/sdllink.c index 50db57f4..033503b5 100644 --- a/zsnes/src/linux/sdllink.c +++ b/zsnes/src/linux/sdllink.c @@ -298,12 +298,6 @@ void ProcessKeyBuf(int scancode) if ((scancode>=SDLK_KP0) && (scancode<=SDLK_KP9)) { accept=true; vkeyval=scancode-SDLK_KP0+'0'; } - if (scancode==SDLK_KP2) { - accept=true; vkeyval=256+80; - } - if (scancode==SDLK_KP8) { - accept=true; vkeyval=256+72; - } if (!shiftptr){ switch (scancode) { case SDLK_MINUS: vkeyval='-'; accept=true; break; @@ -339,9 +333,9 @@ void ProcessKeyBuf(int scancode) case SDLK_PAGEUP: vkeyval=256+73; accept=true; break; case SDLK_UP: vkeyval=256+72; accept=true; break; case SDLK_HOME: vkeyval=256+71; accept=true; break; - case SDLK_RIGHT: vkeyval=SDLK_KP6-SDLK_KP0+'0';; accept=true; break; + case SDLK_RIGHT: vkeyval=256+77; accept=true; break; //case 12: vkeyval=256+76; accept=true; break; - case SDLK_LEFT: vkeyval=SDLK_KP4-SDLK_KP0+'0'; accept=true; break; + case SDLK_LEFT: vkeyval=256+75; accept=true; break; case SDLK_PAGEDOWN: vkeyval=256+81; accept=true; break; case SDLK_DOWN: vkeyval=256+80; accept=true; break; case SDLK_END: vkeyval=256+79; accept=true; break; @@ -351,7 +345,7 @@ void ProcessKeyBuf(int scancode) case SDLK_KP_DIVIDE: vkeyval='/'; accept=true; break; case SDLK_KP_PERIOD: vkeyval='.'; accept=true; break; } - // printf("vkeyval : %i\n", vkeyval); + if (accept){ KeyBuffer[CurKeyPos]=vkeyval; CurKeyPos++;