//----------------------------------------------------------------------------- // pad.c // matt verran 06/1999 (elements by TOM) //----------------------------------------------------------------------------- #include "pad.h" #include "main.h" volatile u_char *bb0, *bb1; int CorrectStick(int val); void InitPad(void) { GetPadBuf(&bb0, &bb1); } void ReadPad(PadInfo *pad) { pad->button = ~(*(bb0+3) | *(bb0+2)<<8 | *(bb1+3)<<16 | *(bb1+2)<<24); pad->LrightStickH = CorrectStick(*(bb0+4)); pad->LrightStickV = CorrectStick(*(bb0+5)); pad->LleftStickH = CorrectStick(*(bb0+6)); pad->LleftStickV = CorrectStick(*(bb0+7)); pad->RrightStickH = CorrectStick(*(bb1+4)); pad->RrightStickV = CorrectStick(*(bb1+5)); pad->RleftStickH = CorrectStick(*(bb1+6)); pad->RleftStickV = CorrectStick(*(bb1+7)); pad->mode = ((*(bb0+1)) & 0x10)>>1 | ((*(bb1+1)) & 0x10)>>2 | ((*(bb0)) & 0x02) | (*(bb1))>>7; } int CorrectStick(int val) { val -= 128; if (Abs(val) < 20) { val = 0; } else { if (val < 0) { val += 20; } else { val -= 20; } } return val; }