This commit is contained in:
parent
cf5d20c297
commit
9a655b7b82
3 changed files with 67 additions and 12 deletions
|
@ -67,6 +67,7 @@ sPadData PadData[2];
|
|||
u8 PadBuffer[2][34];
|
||||
u8 PadAlign[6]={0,1,0xFF,0xFF,0xFF,0xFF};
|
||||
u8 PadMotor[2][2];
|
||||
int PadRepeatTimers[2][16];
|
||||
|
||||
/*****************************************************************************/
|
||||
// 701
|
||||
|
@ -157,6 +158,9 @@ void PadsInit()
|
|||
PadInitShock(0);
|
||||
PadInitShock(1);
|
||||
|
||||
for(int i=0;i<2;i++)
|
||||
for(int j=0;j<16;j++)
|
||||
PadRepeatTimers[i][j]=0;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -335,6 +339,12 @@ u16 PadGetHeld(int Port)
|
|||
return(PadData[Port].Held);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
u16 PadGetRepeat(int Port)
|
||||
{
|
||||
return(PadData[Port].Repeat);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void PadClear(int Port)
|
||||
{
|
||||
|
@ -345,6 +355,47 @@ void PadClear(int Port)
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
void UpdateRepeats(int _port)
|
||||
{
|
||||
int frames,pad,i,mask,*repeatTimers;
|
||||
u16 *repeatFlags;
|
||||
|
||||
|
||||
frames=GameState::getFramesSinceLast();
|
||||
pad=PadGetHeld(_port);
|
||||
mask=1;
|
||||
repeatTimers=PadRepeatTimers[_port];
|
||||
repeatFlags=&PadData[_port].Repeat;
|
||||
*repeatFlags=0;
|
||||
for(i=0;i<16;i++)
|
||||
{
|
||||
if(pad&mask)
|
||||
{
|
||||
if(*repeatTimers)
|
||||
{
|
||||
*repeatTimers-=frames;
|
||||
if(*repeatTimers<=0)
|
||||
{
|
||||
*repeatFlags|=mask;
|
||||
*repeatTimers=TYPOMATIC_RATE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*repeatFlags|=mask;
|
||||
*repeatTimers=TYPOMATIC_DELAY;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*repeatTimers=0;
|
||||
}
|
||||
mask<<=1;
|
||||
repeatTimers++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PadUpdate()
|
||||
{
|
||||
PadData[0].Dx= PadData[1].Dx=0;
|
||||
|
@ -355,6 +406,8 @@ void PadUpdate()
|
|||
ReadController(0);
|
||||
ReadController(1);
|
||||
|
||||
UpdateRepeats(0);
|
||||
UpdateRepeats(1);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue