Exemplo n.º 1
0
int StartMenu(void)
{
	int state = 1;
	//int x = 0;

	scr_printf("	CN-Cheat Shell Menu.\n	Press (X) to boot, Press SELECT for credits,	SQUARE to load cheats, Press UP to go into server mode\n");
	while (1)
	{

	
   if (padRead(0, 0, &buttons));
		{

		checkPadConnected();
		//read pad 1
		buttonStatts(0, 0);

			if (new_pad & PAD_SELECT)
			{
				state = 2;
				scr_clear();
				scr_printf("\n\n	CREDITS:\n");
				scr_printf("\n		Gtlcpimp: Basic Hook Concept (From His Sources), Code Designer (Tool Used For MIPS)");
				scr_printf("\n		Pyriel: Help On All The Troubleshooting With The Hook");
				scr_printf("\n		Badger41: Teaching Me MIPS Assembly");
				scr_printf("\n		cYs Driver: Source code For Cora Dumper (Initializing The Pad)\n");
				scr_printf("\n	END OF CREDITS\n 	Press (X) To Return To Menu\n");
			}

			if (state == 2)
			{
					if (new_pad & PAD_CROSS)
					{
						scr_clear();
						state = 1;
						StartMenu();
					}					

			}

			if (new_pad & PAD_SQUARE)
			{

			WriteCheats();

			}
			if (new_pad & PAD_CROSS)
			{
			
			ExecGame();
			
			}
			
		}
	}

   return 0;

}
Exemplo n.º 2
0
/////////////////////////////////////////////////////////////////////
//buttonStatts
/////////////////////////////////////////////////////////////////////
static void buttonStatts(int port, int slot)
{
	int ret;
		ret = padRead(port, slot, &buttons);

        if (ret != 0) {
            paddata = 0xffff ^ buttons.btns;

            new_pad = paddata & ~old_pad;
            old_pad = paddata;
		}
}
Exemplo n.º 3
0
int ReadPadStatus(int port, int slot){
	struct padButtonStatus buttons;
	u32 new_pad, paddata;

	new_pad=0;
	if (padRead(port, slot, &buttons) != 0) {
		paddata = 0xffff ^ buttons.btns;

		new_pad = paddata & ~old_pad[port];
		old_pad[port] = paddata;
	}

	return new_pad;
}
Exemplo n.º 4
0
void Ps2Pad::readPad(uint16 *pbuttons, int16 *joyh, int16 *joyv) {
	if (padAlive()) {
		struct padButtonStatus buttons;
		padRead(_port, _slot, &buttons);
		*pbuttons = ~buttons.btns;
		if (_isDualShock) {
			*joyh = (int16)buttons.ljoy_h - 128;
			*joyv = (int16)buttons.ljoy_v - 128;
		} else
			*joyh = *joyv = 0;
	} else {
		*joyh = *joyv = 0;
		*pbuttons = 0;
	}
}
Exemplo n.º 5
0
static int readPad(struct pad_data_t* pad)
{
	int rcode = 0;

	int ret = padRead(pad->port, pad->slot, &pad->buttons); // port, slot, buttons
            
        if (ret != 0)
	{
		u32 newpdata = 0xffff ^ pad->buttons.btns; 
		
		if (newpdata != 0x0) // something
			rcode = 1;
		else
			rcode = 0;

		pad->oldpaddata = pad->paddata;
		pad->paddata = newpdata;
		
		// merge into the global vars
		paddata |= pad->paddata;
	}

	return rcode;
}
Exemplo n.º 6
0
int menu_input(int port, int center_screen)
{
    int ret[2];
    u32 paddata[2];
    u32 new_pad[2];
    u16 slot = 0;

    int change = 0;

    //check to see if pads are disconnected
    ret[port]=padGetState(0, slot);
    if((ret[port] != PAD_STATE_STABLE) && (ret[port] != PAD_STATE_FINDCTP1)) {
        if(ret[port]==PAD_STATE_DISCONN) {
            printf("Pad(%d, %d) is disconnected\n", 0, slot);
        }
        ret[port]=padGetState(0, slot);
    }
    ret[port] = padRead(0, slot, &buttons[port]); // port, slot, buttons
    if (ret[port] != 0) {
        paddata[port]= 0xffff ^ buttons[port].btns;
        new_pad[port] = paddata[port] & ~old_pad[port]; // buttons pressed AND NOT buttons previously pressed
        old_pad[port] = paddata[port];

        if(paddata[port] & PAD_LEFT && center_screen) {
            Settings.offset_x--;
            change = 1;
        }
        if(new_pad[port] & PAD_DOWN && !center_screen) {
            change = 1;
        }
        if(paddata[port] & PAD_DOWN && center_screen) {
            Settings.offset_y++;
            change = 1;
        }
        if(paddata[port] & PAD_RIGHT && center_screen) {
            Settings.offset_x++;
            change = 1;
        }
        if(new_pad[port] & PAD_UP && !center_screen) {
            change = -1;
        }
        if(paddata[port] & PAD_UP && center_screen) {
            Settings.offset_y--;
            change = 1;
        }
        if(new_pad[port] & PAD_START && center_screen) {
            change = 2;
        }
        if(new_pad[port] & PAD_SELECT && center_screen) {
            Settings.offset_x = 0;
            Settings.offset_y = 0;
            change = 1;
        }
        if(new_pad[port] & PAD_CIRCLE) {
            selected = 1;
        }
        if(new_pad[port] & PAD_CROSS) {
        }
        if((new_pad[port] == Settings.PlayerInput[port][0]) && !center_screen) {
            selected = 2;
        }
    }
    if((center_screen && change) || (center_screen == 2)) {
        gsGlobal->StartX = defaultx + Settings.offset_x;
        gsGlobal->StartY = defaulty + Settings.offset_y;

        normalize_screen();

        gsKit_clear(gsGlobal,GS_SETREG_RGBAQ(0x00,0x00,0x00,0x00,0x00));

        menu_primitive("Centering", &BG_TEX, 0, 0, gsGlobal->Width, gsGlobal->Height);

        DrawScreen(gsGlobal);

        center_screen = 1;
    }
  return change;
}
Exemplo n.º 7
0
void SDL_SYS_JoystickUpdate(SDL_Joystick *joystick)
{
	int i, ret;
	int port, slot;
	int rjoy_h, rjoy_v;
	int ljoy_h, ljoy_v;
	struct padButtonStatus buttons;
	u32 paddata;
	u32 old_pad;
	u32 new_pad;

	port = joystick->hwdata->port;
	slot = joystick->hwdata->slot;

	if (wait_pad(port, slot, 10) < 0)
	{
		/* no pad information available */
		return;
	}

	if (joystick->hwdata->deviceid < 0)
	{
		int id;

		/* see if we can probe the MODECURID now */
		id = padInfoMode(port, slot, PAD_MODECURID, 0);
		if (id != 0)
		{
			int ext;

        		ext = padInfoMode(port, slot, PAD_MODECUREXID, 0);
			if (ext != 0)
			{
				id = ext;
			}

			if (id == PAD_TYPE_DIGITAL)
			{
				printf("SDL_Joystick: digital pad detected\n");
			}
			else if (id == PAD_TYPE_DUALSHOCK)
			{
				printf("SDL_Joystick: dualshock detected\n");
			}
			else 
			{
				printf("SDL_Joystick: unknown identifier %d detected\n", id);
			}

			if (id == PAD_TYPE_DIGITAL || id == PAD_TYPE_DUALSHOCK)
			{
				ret = padSetMainMode(port, slot, PAD_MMODE_DUALSHOCK, PAD_MMODE_LOCK);
				if (ret == 1) 
				{ 
					printf("JoystickInit: Request received\n"); 
				} 
				else
				{ 
					printf("JoystickInit: padSetMainMode failed\n"); 
				}
			}

			joystick->hwdata->deviceid = id;
			if (wait_pad(port, slot, 10) < 0)
			{
				/* no pad information available */
				return;
			}
		}
	}

        ret = padRead(port, slot, &buttons); 
	if (ret != 0)
	{
		int changed, hat;

		old_pad = joystick->hwdata->prev_buttons;
		paddata = 0xffff ^ buttons.btns;
		new_pad = paddata; 
		changed = paddata ^ old_pad;
		joystick->hwdata->prev_buttons = paddata;

		hat = SDL_HAT_CENTERED;
		if (new_pad & PAD_LEFT)
		{
			hat = hat | SDL_HAT_LEFT;
		}

		if (new_pad & PAD_RIGHT)
		{
			hat = hat | SDL_HAT_RIGHT;
		}

		if (new_pad & PAD_DOWN)
		{
			hat = hat | SDL_HAT_DOWN;
		}

		if (new_pad & PAD_UP)
		{
			hat = hat | SDL_HAT_UP;
		}

		for (i=0; i<MAX_BUTTONS; i++)
		{
			if (changed & sdl_buttons[i])
			{
				int status = (new_pad & sdl_buttons[i]) ? SDL_PRESSED : SDL_RELEASED;

				SDL_PrivateJoystickButton(joystick, i, status);
			}
		}

		if (changed & (PAD_LEFT|PAD_RIGHT|PAD_UP|PAD_DOWN))
		{
			SDL_PrivateJoystickHat(joystick, 0, hat);
		}

		/* now do axis */
		ljoy_h = buttons.ljoy_h - 128;
		ljoy_v = buttons.ljoy_v - 128;
		rjoy_h = buttons.rjoy_h - 128;
		rjoy_v = buttons.rjoy_v - 128;

		/*
		printf("rjoy_h %d rjoy_v %d ljoy_h %d ljoy_v %d (%d, %d, %d, %d)\n",
		rjoy_h, rjoy_v,
		ljoy_h, ljoy_v,
		joystick->hwdata->prev_rjoy_h, joystick->hwdata->prev_rjoy_v,
		joystick->hwdata->prev_ljoy_h, joystick->hwdata->prev_ljoy_v);
		*/

		/* left analog stick */
		if (abs(joystick->hwdata->prev_ljoy_h - ljoy_h) > AXIS_THRESHOLD)
		{
			SDL_PrivateJoystickAxis(joystick, 0, ljoy_h * 127);
			joystick->hwdata->prev_ljoy_h = ljoy_h;
		}

		if (abs(joystick->hwdata->prev_ljoy_v - ljoy_v) > AXIS_THRESHOLD)
		{
			SDL_PrivateJoystickAxis(joystick, 1, ljoy_v * 127);
			joystick->hwdata->prev_ljoy_v = ljoy_v;
		}

		/* right analog stick */
		if (abs(joystick->hwdata->prev_rjoy_h - rjoy_h) > AXIS_THRESHOLD)
		{
			SDL_PrivateJoystickAxis(joystick, 2, rjoy_h  * 127);
			joystick->hwdata->prev_rjoy_h = rjoy_h;
		}

		if (abs(joystick->hwdata->prev_rjoy_v - rjoy_v) > AXIS_THRESHOLD)
		{
			SDL_PrivateJoystickAxis(joystick, 3, rjoy_v * 127);
			joystick->hwdata->prev_rjoy_v = rjoy_v;
		}
	} 
}
Exemplo n.º 8
0
void Pad::update()
{
	int ret = padGetState(m_port, m_slot );

	while ((ret != PAD_STATE_STABLE) && (ret != PAD_STATE_FINDCTP1))
	{
		if (ret == PAD_STATE_DISCONN)
		{
			//printf("Pad(%d, %d) is disconnected\n", m_port, m_slot);
		}
		ret = padGetState(m_port, m_slot);
	}

	ret = padRead(m_port, m_slot, (padButtonStatus*)&m_buttonStatus); // port, slot, buttons

	if (ret != 0)
	{
		m_padData = 0xffff ^ m_buttonStatus.btns;

		m_newPad = m_padData & ~m_oldPad;
		m_oldPad = m_padData;

		memset(&m_buttons, 0, sizeof(Buttons));

		if (m_newPad & PAD_LEFT) 
			m_buttons.left = true;

		if (m_newPad & PAD_DOWN) 
			m_buttons.down = true;

		if (m_newPad & PAD_RIGHT) 
			m_buttons.rigth = true;

		if (m_newPad & PAD_UP) 
			m_buttons.up = true;

		if (m_newPad & PAD_START) 
			m_buttons.start = true;
		if (m_newPad & PAD_SELECT) 
			m_buttons.select = true;

		if (m_newPad & PAD_SQUARE) 
			m_buttons.square = true;

		if (m_newPad & PAD_CROSS) 
			m_buttons.cross = true;

		if (m_newPad & PAD_CIRCLE) 
			m_buttons.circle = true;

		if (m_newPad & PAD_TRIANGLE) 
			m_buttons.triangle = true;

		if (m_newPad & PAD_R1) 
			m_buttons.r1 = true;

		if (m_newPad & PAD_L1) 
			m_buttons.l1 = true;

		if (m_newPad & PAD_R2) 
			m_buttons.r2 = true;

		if (m_newPad & PAD_L2) 
			m_buttons.l2 = true;

		const int deadRange = 30;
		const int deadMin = 127 - deadRange;
		const int deadMax = 128 + deadRange;

		int test = 0;

		if (m_buttonStatus.rjoy_h < deadMin)
		{
			m_rStickH = (m_buttonStatus.rjoy_h - 127) / 127.0f; 
		}
		else if (m_buttonStatus.rjoy_h > deadMax)
		{
			m_rStickH = (m_buttonStatus.rjoy_h - 127) / 127.0f; 
		}
		else
		{
			m_buttonStatus.rjoy_h = 0;
			m_rStickH = 0.0f;
		}

		if (m_buttonStatus.rjoy_v < deadMin)
		{
			m_rStickV = (m_buttonStatus.rjoy_v - 127) / 127.0f; 
		}
		else if (m_buttonStatus.rjoy_v > deadMax)
		{
			test = m_buttonStatus.rjoy_v - 127;
			m_rStickV = (m_buttonStatus.rjoy_v - 127) / 127.0f; 
		}
		else
		{
			m_buttonStatus.rjoy_v = 0;
			m_rStickV = 0.0f;
		}

		if (m_buttonStatus.ljoy_h < deadMin)
		{
			m_lStickH = (m_buttonStatus.ljoy_h - 127) / 127.0f; 
		}
		else if (m_buttonStatus.ljoy_h > deadMax)
		{
			m_lStickH = (m_buttonStatus.ljoy_h - 127) / 127.0f; 
		}
		else
		{
			m_buttonStatus.ljoy_h = 0;
			m_lStickH = 0.0f;
		}

		if (m_buttonStatus.ljoy_v < deadMin)
		{
			m_lStickV = (m_buttonStatus.ljoy_v - 127) / 127.0f; 
		}
		else if (m_buttonStatus.ljoy_v > deadMax)
		{
			test = m_buttonStatus.ljoy_v - 127;
			m_lStickV = (m_buttonStatus.ljoy_v - 127) / 127.0f; 
		}
		else
		{
			m_buttonStatus.ljoy_v = 0;
			m_lStickV = 0.0f;
		}
	}
}
Exemplo n.º 9
0
Arquivo: padx.c Projeto: jur/ps2sdk
int main(int argc, char **argv)
{
	u32 port;
	struct padButtonStatus buttons;
	int dualshock[2];
	int acts[2];

	SifInitRpc(0);
 
	printf("libpadx sample");
	
	if((argc == 2) && (strncmp(argv[1], "free", 4) == 0))
	{
		printf(" - Using PS2SDK freesio2.irx and freepad.irx modules.\n");
		loadmodules(1);	
	}
	else
	{
		printf(" - Using ROM XSIO2MAN and XPADMAN modules.\n");
		printf("Start this sample with 'free' as an argument to load freesio2.irx and freepad.irx\n");
		printf("Example: ps2client execee host:padx_sample.elf free\n");
		loadmodules(0);
	}


	

	padInit(0);
	
	padBuf[0] = memalign(64, 256);
	padBuf[1] = memalign(64, 256);

	old_pad[0] = 0;
	old_pad[1] = 0;	

	portConnected[0] = 0;
	portConnected[1] = 0;

	dualshock[0] = 0;
	dualshock[1] = 0;

	acts[0] = 0;
	acts[1] = 0;

	padPortOpen(0, 0, padBuf[0]);
	padPortOpen(1, 0, padBuf[1]);

	while(1)
	{	
		for(port=0; port < 2; port++)
		{
			s32 state = padGetState(port, 0);

			if((state == PAD_STATE_STABLE) && (portConnected[port] == 0)) 
			{
				u32 i;
				u8 mTable[8];
				u32 ModeCurId;
				u32 ModeCurOffs;
				u32 ModeCurExId;
				u32 ModeTableNum = padInfoMode(port, 0, PAD_MODETABLE, -1);
				
				printf("Controller (%i) connected\n", port);

				/* Check if dualshock and if so, activate analog mode */
				for(i = 0; i < ModeTableNum; i++)
					mTable[i] = padInfoMode(port, 0, PAD_MODETABLE, i);
				
				/* Works for dualshock2 */
				if((mTable[0] == 4) && (mTable[1] == 7) && (ModeTableNum == 2))
					dualshock[port] = 1;

				/* Active and lock analog mode */
				if(dualshock[port] == 1)
				{
					padSetMainMode(port, 0, PAD_MMODE_DUALSHOCK, PAD_MMODE_LOCK);
					padWait(port);
				}
				
				ModeCurId = padInfoMode(port, 0, PAD_MODECURID, 0);
				ModeCurOffs = padInfoMode(port, 0, PAD_MODECUROFFS, 0);
				ModeCurExId = padInfoMode(port, 0, PAD_MODECUREXID, 0);
				ModeTableNum = padInfoMode(port, 0, PAD_MODETABLE, -1);
				acts[port] = padInfoAct(port, 0, -1, 0);		

				printf("  ModeCurId      : %i (%s)\n", (int)ModeCurId, padTypeStr[ModeCurId]);
				printf("  ModeCurExId    : %i\n", (int)ModeCurExId);
				printf("  ModeTable      : ");
		
				for(i = 0; i < ModeTableNum; i++)
				{
					mTable[i] = padInfoMode(port, 0, PAD_MODETABLE, i);
					printf("%i ", (int)mTable[i]);
				}	

				printf("\n");
				printf("  ModeTableNum   : %i\n", (int)ModeTableNum);
				printf("  ModeCurOffs    : %i\n", (int)ModeCurOffs);
				printf("  NumOfAct       : %i\n", (int)acts[port]);
				printf("  PressMode      : %i\n", (int)padInfoPressMode(port, 0));

	
				if(acts[port] > 0)
				{
					u8 actAlign[6] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
					u32 i;

					/* Set offsets for motor parameters for SetActDirect. */
					for(i=0; i < acts[port]; i++)
						actAlign[i] = i;

					padSetActAlign(port, 0, actAlign);
					padWait(port);
				}

				printf("  EnterPressMode : %i\n", (int)padEnterPressMode(port, 0));
				padWait(port);

				printf("Ready\n");

				portConnected[port] = 1;
			}

			if((state == PAD_STATE_DISCONN) && (portConnected[port] == 1))
			{ 
				printf("Controller (%i) disconnected\n", port);
				portConnected[port] = 0;
			}

			if(portConnected[port] == 1)
			{
				s32 ret = padRead(port, 0, &buttons);

				if(ret != 0)
				{
					paddata[port] = 0xffff ^ buttons.btns;
	
					new_pad[port] = paddata[port] & ~old_pad[port];
					old_pad[port] = paddata[port];

					// Values 50 and 200 used because my controllers are worn out :-)
					if((buttons.ljoy_h <= 50) || (buttons.ljoy_h >= 200)) printf("Left Analog  X: %i\n", (int)buttons.ljoy_h);
					if((buttons.ljoy_v <= 50) || (buttons.ljoy_v >= 200)) printf("Left Analog  Y: %i\n", (int)buttons.ljoy_v);
					if((buttons.rjoy_h <= 50) || (buttons.rjoy_h >= 200)) printf("Right Analog X: %i\n", (int)buttons.rjoy_h);
					if((buttons.rjoy_v <= 50) || (buttons.rjoy_v >= 200)) printf("Right Analog Y: %i\n", (int)buttons.rjoy_v);

				
					if(new_pad[port]) printf("Controller (%i) button(s) pressed: ", (int)port);
	            	if(new_pad[port] & PAD_LEFT)		printf("LEFT ");
					if(new_pad[port] & PAD_RIGHT) 		printf("RIGHT ");
					if(new_pad[port] & PAD_UP) 			printf("UP ");		
					if(new_pad[port] & PAD_DOWN) 		printf("DOWN ");
					if(new_pad[port] & PAD_START) 		printf("START ");
					if(new_pad[port] & PAD_SELECT) 		printf("SELECT ");
					if(new_pad[port] & PAD_SQUARE) 		printf("SQUARE (Pressure: %i) ", (int)buttons.square_p);
					if(new_pad[port] & PAD_TRIANGLE)	printf("TRIANGLE (Pressure: %i) ", (int)buttons.triangle_p);
					if(new_pad[port] & PAD_CIRCLE)		printf("CIRCLE (Pressure: %i) ", (int)buttons.circle_p);
					if(new_pad[port] & PAD_CROSS)		printf("CROSS (Pressure: %i) ", (int)buttons.cross_p);
					if(new_pad[port] & PAD_L1)			
					{	
						printf("L1 (Start Little Motor) ");	
						padStartAct(port, 0, 1); 
					}
					if(new_pad[port] & PAD_L2)			
					{	
						printf("L2 (Stop Little Motor) ");	
						padStartAct(port, 0, 0); 
					}
					if(new_pad[port] & PAD_L3)			printf("L3 ");
					if(new_pad[port] & PAD_R1)
					{
						printf("R1 (Start Big Motor) ");
						padStartAct(port, 1, 255);
					}
					if(new_pad[port] & PAD_R2)			
					{
						printf("R2 (Stop Big Motor) ");
						padStopAct(port, 1);
					}
					if(new_pad[port] & PAD_R3)			printf("R3 ");

					if(new_pad[port]) printf("\n");
				}	
	
			}
		}
		wait_vsync();
	}

	return 0;
}