This commit is contained in:
Paul 2000-11-23 19:55:33 +00:00
parent 8a43e1a060
commit c88ba38b4d
5 changed files with 277 additions and 98 deletions

View file

@ -18,39 +18,6 @@
/*****************************************************************************/
static sPadConfigTable PadConfigDefault=
{
{
0, // PAD_CFG_NONE
PAD_LEFT, // PAD_CFG_LEFT
PAD_RIGHT, // PAD_CFG_RIGHT
PAD_UP, // PAD_CFG_UP
PAD_DOWN, // PAD_CFG_DOWN
PAD_START, // PAD_CFG_PAUSE,
PAD_CIRCLE, // PAD_CFG_ACTION,
PAD_CROSS, // PAD_CFG_JUMP,
}
};
static sPadConfigTable PadConfigAlternative=
{
{
0, // PAD_CFG_NONE
PAD_LEFT, // PAD_CFG_LEFT
PAD_RIGHT, // PAD_CFG_RIGHT
PAD_UP, // PAD_CFG_UP
PAD_DOWN, // PAD_CFG_DOWN
PAD_START, // PAD_CFG_PAUSE,
PAD_CROSS, // PAD_CFG_ACTION,
PAD_SQUARE, // PAD_CFG_JUMP,
}
};
/*****************************************************************************/
sPadData PadData[2];
u8 PadBuffer[2][34];
@ -150,6 +117,8 @@ void PadsInit()
for(int i=0;i<2;i++)
for(int j=0;j<16;j++)
PadRepeatTimers[i][j]=0;
CPadConfig::setConfig(0);
}
/*****************************************************************************/
@ -416,36 +385,73 @@ bool PadIsConnected(int port)
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
sPadConfigTable *getPadConfigTable(int _padConfig)
{
if(_padConfig==0)return &PadConfigDefault;
if(_padConfig==1)return &PadConfigAlternative;
ASSERT(0);
return &PadConfigDefault;
}
/*****************************************************************************/
CPadConfig::CPadConfig()
int CPadConfig::s_configNumber=-1;
CPadConfig::sPadConfigTable *CPadConfig::s_cfg=NULL;
CPadConfig::sPadConfigTable CPadConfig::s_padConfigs[NUM_PAD_CONFIGS]=
{
Cfg=&PadConfigDefault;
// Config A
{{
0, // PAD_CFG_NONE
PAD_LEFT, // PAD_CFG_LEFT
PAD_RIGHT, // PAD_CFG_RIGHT
PAD_UP, // PAD_CFG_UP
PAD_DOWN, // PAD_CFG_DOWN
PAD_CROSS, // PAD_CFG_ACTION
PAD_SQUARE, // PAD_CFG_JUMP
}},
// Config B
{{
0, // PAD_CFG_NONE
PAD_LEFT, // PAD_CFG_LEFT
PAD_RIGHT, // PAD_CFG_RIGHT
PAD_UP, // PAD_CFG_UP
PAD_DOWN, // PAD_CFG_DOWN
PAD_SQUARE, // PAD_CFG_ACTION
PAD_CROSS, // PAD_CFG_JUMP
}},
// Config C
{{
0, // PAD_CFG_NONE
PAD_LEFT, // PAD_CFG_LEFT
PAD_RIGHT, // PAD_CFG_RIGHT
PAD_UP, // PAD_CFG_UP
PAD_DOWN, // PAD_CFG_DOWN
PAD_CIRCLE, // PAD_CFG_ACTION
PAD_TRIANGLE, // PAD_CFG_JUMP
}},
// Config D
{{
0, // PAD_CFG_NONE
PAD_SQUARE, // PAD_CFG_LEFT
PAD_CIRCLE, // PAD_CFG_RIGHT
PAD_TRIANGLE, // PAD_CFG_UP
PAD_CROSS, // PAD_CFG_DOWN
PAD_LEFT, // PAD_CFG_ACTION
PAD_DOWN, // PAD_CFG_JUMP
}},
};
void CPadConfig::setConfig(int _config)
{
ASSERT(_config<NUM_PAD_CONFIGS);
s_configNumber=_config;
s_cfg=&s_padConfigs[_config];
}
void CPadConfig::SetConfig(sPadConfigTable *NewCfg)
int CPadConfig::getConfig()
{
Cfg=NewCfg;
return s_configNumber;
}
int CPadConfig::GetButton(PAD_CFG But)
int CPadConfig::getButton(PAD_CFG _but)
{
return(Cfg->Buttons[But]);
return(s_cfg->m_buttons[_but]);
}

View file

@ -98,49 +98,46 @@ void PAD_SetVibrationEnvelope( int Port, int count, const VIBE_DATA * data, int
/*****************************************************************************/
#define PAD_ACCEPT PAD_CROSS
#define PAD_CANCEL PAD_TRIANGLE
#define PAD_UI_LEFT PAD_LEFT
#define PAD_UI_RIGHT PAD_RIGHT
#define PAD_UI_UP PAD_UP
#define PAD_UI_DOWN PAD_DOWN
enum PAD_CFG
{
PAD_CFG_NONE=0,
PAD_CFG_LEFT,
PAD_CFG_RIGHT,
PAD_CFG_UP,
PAD_CFG_DOWN,
PAD_CFG_PAUSE,
PAD_CFG_ACTION,
PAD_CFG_JUMP,
PAD_CFG_MAX
};
struct sPadConfigTable
{
u16 Buttons[PAD_CFG_MAX];
};
class CPadConfig
{
public:
CPadConfig();
void SetConfig(sPadConfigTable *NewCfg);
int GetButton(PAD_CFG But);
enum
{
NUM_PAD_CONFIGS=4,
};
enum PAD_CFG
{
PAD_CFG_NONE=0,
PAD_CFG_LEFT,
PAD_CFG_RIGHT,
PAD_CFG_UP,
PAD_CFG_DOWN,
PAD_CFG_ACTION,
PAD_CFG_JUMP,
PAD_CFG_MAX
};
static void setConfig(int _config);
static int getConfig();
static int getButton(PAD_CFG _but);
private:
sPadConfigTable *Cfg;
struct sPadConfigTable
{
u16 m_buttons[PAD_CFG_MAX];
};
static int s_configNumber;
static sPadConfigTable *s_cfg;
static sPadConfigTable s_padConfigs[NUM_PAD_CONFIGS];
};
extern sPadConfigTable *getPadConfigTable(int _padConfig);
/*****************************************************************************/