⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 psxpaddriver.cpp

📁 ps1开发设计资料
💻 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 + -