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 PadBuffer[2][34];
|
||||||
u8 PadAlign[6]={0,1,0xFF,0xFF,0xFF,0xFF};
|
u8 PadAlign[6]={0,1,0xFF,0xFF,0xFF,0xFF};
|
||||||
u8 PadMotor[2][2];
|
u8 PadMotor[2][2];
|
||||||
|
int PadRepeatTimers[2][16];
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// 701
|
// 701
|
||||||
|
@ -157,6 +158,9 @@ void PadsInit()
|
||||||
PadInitShock(0);
|
PadInitShock(0);
|
||||||
PadInitShock(1);
|
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);
|
return(PadData[Port].Held);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
u16 PadGetRepeat(int Port)
|
||||||
|
{
|
||||||
|
return(PadData[Port].Repeat);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void PadClear(int Port)
|
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()
|
void PadUpdate()
|
||||||
{
|
{
|
||||||
PadData[0].Dx= PadData[1].Dx=0;
|
PadData[0].Dx= PadData[1].Dx=0;
|
||||||
|
@ -355,6 +406,8 @@ void PadUpdate()
|
||||||
ReadController(0);
|
ReadController(0);
|
||||||
ReadController(1);
|
ReadController(1);
|
||||||
|
|
||||||
|
UpdateRepeats(0);
|
||||||
|
UpdateRepeats(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -40,11 +40,14 @@
|
||||||
#define BUTTON_SELECT PAD_CROSS
|
#define BUTTON_SELECT PAD_CROSS
|
||||||
#define BUTTON_BACK PAD_TRIANGLE
|
#define BUTTON_BACK PAD_TRIANGLE
|
||||||
|
|
||||||
|
#define TYPOMATIC_DELAY 75
|
||||||
|
#define TYPOMATIC_RATE 50
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
u16 Up,Held,Down,Old;
|
u16 Up,Held,Down,Old,Repeat;
|
||||||
int XPos, YPos, XPos1, YPos1; // For analog
|
int XPos, YPos, XPos1, YPos1; // For analog
|
||||||
int Dx,Dy, Dx1,Dy1;
|
int Dx,Dy, Dx1,Dy1;
|
||||||
u8 Status; // These 8 values are obtained
|
u8 Status; // These 8 values are obtained
|
||||||
|
@ -79,7 +82,8 @@ sPadData *PadGet(int Port);
|
||||||
u16 PadGetUp(int Port);
|
u16 PadGetUp(int Port);
|
||||||
u16 PadGetDown(int Port);
|
u16 PadGetDown(int Port);
|
||||||
u16 PadGetHeld(int Port);
|
u16 PadGetHeld(int Port);
|
||||||
u16 PadGetTick(int Port);
|
u16 PadGetRepeat(int Port);
|
||||||
|
|
||||||
|
|
||||||
int PadIsDualShock(int Port);
|
int PadIsDualShock(int Port);
|
||||||
|
|
||||||
|
|
|
@ -161,6 +161,7 @@ int psp=0;
|
||||||
|
|
||||||
void CPaulScene::think(int _frames)
|
void CPaulScene::think(int _frames)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
int pad;
|
int pad;
|
||||||
int sfxId=-1;
|
int sfxId=-1;
|
||||||
int setSfxVolume=false;
|
int setSfxVolume=false;
|
||||||
|
@ -246,21 +247,18 @@ void CPaulScene::think(int _frames)
|
||||||
{
|
{
|
||||||
PAUL_DBGMSG("speech:%d sfx:%d",mvol,svol);
|
PAUL_DBGMSG("speech:%d sfx:%d",mvol,svol);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//CXAStream::ControlXA();
|
|
||||||
|
|
||||||
pad=PadGetHeld(1);
|
|
||||||
if(pad&PAD_L1)
|
|
||||||
{
|
{
|
||||||
}
|
int pad=PadGetRepeat(0);
|
||||||
else
|
int i;
|
||||||
|
for(i=0;i<16;i++)
|
||||||
{
|
{
|
||||||
|
if(pad&(1<<i))
|
||||||
|
s_fontBank.print(40+(i*10),120,"+");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue