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

📄 pad.c

📁 索尼公司著名游戏机PS2使用的引导工具文件源代码,这是爱好者自编的工具,可以使用它来引导自己的程序,达到跳过原光驱启动执行自己制作的程序的目的,在windows上可以安装使用ps2的专用开发包,搭建c
💻 C
字号:
#include "launchelf.h"

static char padBuf[256] __attribute__((aligned(64)));
struct padButtonStatus buttons;
u32 paddata;
u32 old_pad = 0;
u32 new_pad;

//////////////////////////////////////////////////////////////////////
// read PAD
int readpad(void)
{
	static int n=0, nn=0;
	int ret;
	
	ret = padRead(0, 0, &buttons);
	if (ret != 0){
		//paddata = 0xffff ^ ((buttons.btns[0] << 8) | buttons.btns[1]);
		paddata = 0xffff ^ buttons.btns;
		new_pad = paddata & ~old_pad;
		if(old_pad==paddata){
			n++;
			if(ITO_VMODE_AUTO==ITO_VMODE_NTSC){
				if(n>=25){
					new_pad=paddata;
					if(nn++ < 20)	n=20;
					else			n=23;
				}
			}else{
				if(n>=21){
					new_pad=paddata;
					if(nn++ < 20)	n=17;
					else			n=19;
				}
			}
		}else{
			n=0;
			nn=0;
			old_pad = paddata;
		}
		return 1;
	}
	return 0;
}

//////////////////////////////////////////////////////////////////////
// Wait PAD
void waitPadReady(int port, int slot)
{
	int state, lastState;
	char stateString[16];

	state = padGetState(port, slot);
	lastState = -1;
	while((state != PAD_STATE_STABLE) && (state != PAD_STATE_FINDCTP1)){
		if (state != lastState)
			padStateInt2String(state, stateString);
		lastState = state;
		state=padGetState(port, slot);
	}
}

//////////////////////////////////////////////////////////////////////
// setup PAD
int setupPad(void)
{
	int ret, i, modes;
	
	padInit(0);
	if((ret = padPortOpen(0, 0, padBuf)) == 0)
		return 0;
	waitPadReady(0, 0);
	modes = padInfoMode(0, 0, PAD_MODETABLE, -1);
	if (modes != 0){
		i = 0;
		do{
			if (padInfoMode(0, 0, PAD_MODETABLE, i) == PAD_TYPE_DUALSHOCK){
				padSetMainMode(0, 0, PAD_MMODE_DUALSHOCK, PAD_MMODE_LOCK);
				break;
			}
			i++;
		} while (i < modes);
	}
	return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -