📄 psxpaddriver.cpp
字号:
////////////////////////////////////
// PSX Pad data structure
//
// File : psxPadDriver.cpp
//
// Author : L. Saint-Marcel
// lstmarcel@yahoo.fr
//
// Date : 12/12/01
////////////////////////////////////
#include "stdafx.h"
#include <assert.h>
#include "psxPadDriver.h"
// ---------------------------------------------------------------------------------------
// updatePsxPadData
// ---------------------------------------------------------------------------------------
void updatePsxPadData(psxPad *pad, unsigned char data[7])
{
assert(pad != NULL);
switch(data[PAD_DIGITAL]){
case 0x41:
pad->type=PAD_DIGITAL;
break;
case 0x23:
pad->type=PAD_NEGCON;
break;
case 0x73:
pad->type=PAD_ANA_RED;
break;
case 0x53:
pad->type=PAD_ANALOG;
break;
default:
pad->type=PAD_UNCKNOWN;
break;
}
if(pad->type==PAD_UNCKNOWN)
return;
switch(pad->type){
case PAD_DIGITAL:
pad->btnCircle = (data[2] & 0x20)!=0x20;
pad->btnCross = (data[2] & 0x40)!=0x40;
pad->btnSquare = (data[2] & 0x80)!=0x80;
pad->btnTriangle= (data[2] & 0x10)!=0x10;
pad->btnDown = (data[1] & 0x40)!=0x40;
pad->btnLeft = (data[1] & 0x80)!=0x80;
pad->btnRight= (data[1] & 0x20)!=0x20;
pad->btnUp = (data[1] & 0x10)!=0x10;
pad->btnL1 = (data[2] & 0x04)!=0x04;
pad->btnL2 = (data[2] & 0x01)!=0x01;
pad->btnR1 = (data[2] & 0x08)!=0x08;
pad->btnR2 = (data[2] & 0x02)!=0x02;
pad->btnSelect= (data[1] & 0x01)!=0x01;
pad->btnStart = (data[1] & 0x08)!=0x08;
pad->joyLeftDown = 0.5;
pad->joyLeftRight = 0.5;
pad->joyRightDown = 0.5;
pad->joyRightRight= 0.5;
break;
case PAD_ANA_RED:
case PAD_ANALOG:
pad->btnCircle = (data[2] & 0x20)!=0x20;
pad->btnCross = (data[2] & 0x40)!=0x40;
pad->btnSquare = (data[2] & 0x80)!=0x80;
pad->btnTriangle= (data[2] & 0x10)!=0x10;
pad->btnDown = (data[1] & 0x40)!=0x40;
pad->btnLeft = (data[1] & 0x80)!=0x80;
pad->btnRight= (data[1] & 0x20)!=0x20;
pad->btnUp = (data[1] & 0x10)!=0x10;
pad->btnL1 = (data[2] & 0x04)!=0x04;
pad->btnL2 = (data[2] & 0x01)!=0x01;
pad->btnR1 = (data[2] & 0x08)!=0x08;
pad->btnR2 = (data[2] & 0x02)!=0x02;
pad->btnSelect= (data[1] & 0x01)!=0x01;
pad->btnStart = (data[1] & 0x08)!=0x08;
pad->joyLeftDown = data[6]/255.;
pad->joyLeftRight = data[5]/255.;
pad->joyRightDown = data[4]/255.;
pad->joyRightRight= data[3]/255.;
break;
}
} // updatePsxPadData
// ---------------------------------------------------------------------------------------
// psxPrint
// ---------------------------------------------------------------------------------------
void psxPrint(psxPad *pad)
{
assert(pad!=NULL);
printf("Pad Type %d Start %d Select %d\n", pad->type, pad->btnStart,pad->btnSelect);
printf("Up %d Down %d Right %d Left %d\n", pad->btnUp, pad->btnDown,pad->btnRight,pad->btnLeft);
printf("L1 %d L2 %d R1 %d R2 %d\n", pad->btnL1, pad->btnL2,pad->btnR1,pad->btnR2);
printf("[] %d <] %d O %d X %d\n", pad->btnSquare, pad->btnTriangle,pad->btnCircle,pad->btnCross);
printf("Analog : Right V %.2lf Right H %.2lf Left V %.2lf Left H %.2lf\n", pad->joyRightDown, pad->joyRightRight,pad->joyLeftDown,pad->joyLeftRight);
} // psxPrint
// ---------------------------------------------------------------------------------------
// psxPrintOneLine
// ---------------------------------------------------------------------------------------
void psxPrintOneLine(psxPad *pad)
{
assert(pad!=NULL);
printf("T%d S%d S%d ", pad->type, pad->btnStart,pad->btnSelect);
printf("U%d D%d R%d L%d ", pad->btnUp, pad->btnDown,pad->btnRight,pad->btnLeft);
printf("L%d L%d R%d R%d ", pad->btnL1, pad->btnL2,pad->btnR1,pad->btnR2);
printf("%d %d %d %d ", pad->btnSquare, pad->btnTriangle,pad->btnCircle,pad->btnCross);
printf("%.2lf %.2lf %.2lf %.2lf ", pad->joyRightDown, pad->joyRightRight,pad->joyLeftDown,pad->joyLeftRight);
printf("%c",13);
} // psxPrintOneLine
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -