#include #include "pad.h" void Init_Pad() { int i,z; GetPadBuf(&bb0, &bb1); C_Padd = C_oPadd = 0; for( i = 0; i < PAD_MAX; i++ ) { for( z = 0; z < 14; z++ ) { DownButton[i][z] = 0; } } for( i = 0; i < PAD_MAX; i++ ) { for( z = 0; z < 4; z++ ) { anab[i][z] = 0; } } } u_long GetPadStat( int Pad ) { u_long act,stat; u_long ret = 0; switch( Pad ) { case PAD1: act = *bb0; stat = (*(bb0+1)) & 0xF0; break; case PAD2: act = *bb1; stat = (*(bb1+1)) & 0x00F0; break; } if( act == 0 ) { ret = stat; } return ret; } void PadRead() { int i; C_oPadd = C_Padd; C_Padd = (~(*(bb0+3) | *(bb0+2) << 8 | *(bb1+3) << 16 | *(bb1+2) << 24)); anab[PAD1][ANA_RG] = *(bb0+4); anab[PAD1][ANA_B1] = *(bb0+5); anab[PAD1][ANA_B2] = *(bb0+6); anab[PAD1][ANA_BL] = *(bb0+7); if( GetPadStat(PAD1) == PADANALOG ) { if( anab[PAD1][ANA_B1] != 0 ) C_Padd |= ANAI; if( anab[PAD1][ANA_B2] != 0 ) C_Padd |= ANAII; if( anab[PAD1][ANA_BL] != 0 ) C_Padd |= ANAL; } anab[PAD2][ANA_RG] = *(bb1+4); anab[PAD2][ANA_B1] = *(bb1+5); anab[PAD2][ANA_B2] = *(bb1+6); anab[PAD2][ANA_BL] = *(bb1+7); if( GetPadStat(PAD2) == PADANALOG ) { if( anab[PAD2][ANA_B1] != 0 ) C_Padd |= (ANAI<<16); if( anab[PAD2][ANA_B2] != 0 ) C_Padd |= (ANA2II<<16); if( anab[PAD2][ANA_BL] != 0 ) C_Padd |= (ANA2L<<16); } } u_long GetPadInfo( int Pad ) { u_long ret = 0; switch( Pad ) { case PAD1: ret = ((C_Padd & 0x0000FFFF) | ((C_oPadd << 16) & 0xFFFF0000) ); break; case PAD2: ret = (((C_Padd >> 16) & 0x0000FFFF) | (C_oPadd & 0xFFFF0000) ); break; } return ret; } u_long GetAnaPadButton( int Pad, int Button ) { return anab[Pad][Button]; } void ButtonDownOn( int Pad, int Button ) { DownButton[Pad][Button]++; } void ButtonDownOff( int Pad, int Button ) { DownButton[Pad][Button] = 0; } int GetButtonDown( int Pad, int Button ) { return DownButton[Pad][Button]; }