Refactor chronometer functions
This commit is contained in:
parent
cab54d1b31
commit
4429cb2095
@ -36,6 +36,10 @@
|
|||||||
|
|
||||||
static void startChrono(void)
|
static void startChrono(void)
|
||||||
{
|
{
|
||||||
|
bool isChronoStarted = false;
|
||||||
|
|
||||||
|
if(isChronoStarted) return;
|
||||||
|
|
||||||
REG_TIMER_CNT(0) = 0; //67MHz
|
REG_TIMER_CNT(0) = 0; //67MHz
|
||||||
for(u32 i = 1; i < 4; i++) REG_TIMER_CNT(i) = 4; //Count-up
|
for(u32 i = 1; i < 4; i++) REG_TIMER_CNT(i) = 4; //Count-up
|
||||||
|
|
||||||
@ -43,6 +47,8 @@ static void startChrono(void)
|
|||||||
|
|
||||||
REG_TIMER_CNT(0) = 0x80; //67MHz; enabled
|
REG_TIMER_CNT(0) = 0x80; //67MHz; enabled
|
||||||
for(u32 i = 1; i < 4; i++) REG_TIMER_CNT(i) = 0x84; //Count-up; enabled
|
for(u32 i = 1; i < 4; i++) REG_TIMER_CNT(i) = 0x84; //Count-up; enabled
|
||||||
|
|
||||||
|
isChronoStarted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u64 chrono(void)
|
static u64 chrono(void)
|
||||||
@ -58,6 +64,7 @@ static u64 chrono(void)
|
|||||||
u32 waitInput(bool isMenu)
|
u32 waitInput(bool isMenu)
|
||||||
{
|
{
|
||||||
static u64 dPadDelay = 0ULL;
|
static u64 dPadDelay = 0ULL;
|
||||||
|
u64 initialValue = 0ULL;
|
||||||
u32 key,
|
u32 key,
|
||||||
oldKey = HID_PAD;
|
oldKey = HID_PAD;
|
||||||
|
|
||||||
@ -65,6 +72,7 @@ u32 waitInput(bool isMenu)
|
|||||||
{
|
{
|
||||||
dPadDelay = dPadDelay > 0ULL ? 87ULL : 143ULL;
|
dPadDelay = dPadDelay > 0ULL ? 87ULL : 143ULL;
|
||||||
startChrono();
|
startChrono();
|
||||||
|
initialValue = chrono();
|
||||||
}
|
}
|
||||||
|
|
||||||
while(true)
|
while(true)
|
||||||
@ -79,7 +87,7 @@ u32 waitInput(bool isMenu)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(key == oldKey && (!isMenu || (!(key & DPAD_BUTTONS) || chrono() < dPadDelay))) continue;
|
if(key == oldKey && (!isMenu || (!(key & DPAD_BUTTONS) || chrono() - initialValue < dPadDelay))) continue;
|
||||||
|
|
||||||
//Make sure the key is pressed
|
//Make sure the key is pressed
|
||||||
u32 i;
|
u32 i;
|
||||||
@ -104,7 +112,10 @@ void mcuPowerOff(void)
|
|||||||
void wait(u64 amount)
|
void wait(u64 amount)
|
||||||
{
|
{
|
||||||
startChrono();
|
startChrono();
|
||||||
while(chrono() < amount);
|
|
||||||
|
u64 initialValue = chrono();
|
||||||
|
|
||||||
|
while(chrono() - initialValue < amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
void error(const char *fmt, ...)
|
void error(const char *fmt, ...)
|
||||||
|
Reference in New Issue
Block a user