mirror of
https://github.com/d0k3/GodMode9.git
synced 2025-06-26 13:42:47 +00:00
Revised timer functions
This commit is contained in:
parent
093438413b
commit
17502ff5a1
@ -7,8 +7,8 @@ u32 InputWait() {
|
||||
u32 pad_state_old = HID_STATE;
|
||||
u32 cart_state_old = CART_STATE;
|
||||
u32 sd_state_old = SD_STATE;
|
||||
u64 timer = timer_start();
|
||||
delay = (delay) ? 72 : 128;
|
||||
timer_start();
|
||||
while (true) {
|
||||
u32 pad_state = HID_STATE;
|
||||
if (!(pad_state & BUTTON_ANY)) { // no buttons pressed
|
||||
@ -29,7 +29,7 @@ u32 InputWait() {
|
||||
}
|
||||
if ((pad_state == pad_state_old) &&
|
||||
(!(pad_state & BUTTON_ARROW) ||
|
||||
(delay && (timer_msec() < delay))))
|
||||
(delay && (timer_msec(timer) < delay))))
|
||||
continue;
|
||||
// make sure the key is pressed
|
||||
u32 t_pressed = 0;
|
||||
|
@ -1,6 +1,8 @@
|
||||
#include "timer.h"
|
||||
|
||||
void timer_start( void ) {
|
||||
u64 timer_start( void ) {
|
||||
static bool timer_init = true;
|
||||
if (timer_init) {
|
||||
// reset / deactivate timers
|
||||
*TIMER_CNT0 = 0;
|
||||
*TIMER_CNT1 = *TIMER_CNT2 = *TIMER_CNT3 = TIMER_COUNT_UP;
|
||||
@ -9,28 +11,38 @@ void timer_start( void ) {
|
||||
// start timers
|
||||
*TIMER_CNT0 = TIMER_ACTIVE;
|
||||
*TIMER_CNT1 = *TIMER_CNT2 = *TIMER_CNT3 = TIMER_ACTIVE | TIMER_COUNT_UP;
|
||||
|
||||
// timer initialized (no need to do this more than once)
|
||||
timer_init = false;
|
||||
}
|
||||
return timer_ticks( 0 );
|
||||
}
|
||||
|
||||
void timer_stop( void ) {
|
||||
/*void timer_stop( void ) {
|
||||
*TIMER_CNT0 &= ~TIMER_ACTIVE;
|
||||
*TIMER_CNT1 &= ~TIMER_ACTIVE;
|
||||
*TIMER_CNT2 &= ~TIMER_ACTIVE;
|
||||
*TIMER_CNT3 &= ~TIMER_ACTIVE;
|
||||
}
|
||||
}*/
|
||||
|
||||
u64 timer_ticks( void ) {
|
||||
u64 timer_ticks( u64 start_time ) {
|
||||
u64 ticks = 0;
|
||||
ticks |= (u64) *TIMER_VAL0 << 0;
|
||||
ticks |= (u64) *TIMER_VAL1 << 16;
|
||||
ticks |= (u64) *TIMER_VAL2 << 32;
|
||||
ticks |= (u64) *TIMER_VAL3 << 48;
|
||||
return ticks;
|
||||
return ticks - start_time;
|
||||
}
|
||||
|
||||
u64 timer_msec( void ) {
|
||||
return (timer_ticks() * 1000) / TICKS_PER_SEC;
|
||||
u64 timer_msec( u64 start_time ) {
|
||||
return timer_ticks( start_time ) / (TICKS_PER_SEC/1000);
|
||||
}
|
||||
|
||||
u64 timer_sec( void ) {
|
||||
return timer_ticks() / TICKS_PER_SEC;
|
||||
u64 timer_sec( u64 start_time ) {
|
||||
return timer_ticks( start_time ) / TICKS_PER_SEC;
|
||||
}
|
||||
|
||||
void wait_msec( u64 msec ) {
|
||||
u64 timer = timer_start();
|
||||
while (timer_msec( timer ) < msec );
|
||||
}
|
||||
|
@ -16,8 +16,8 @@
|
||||
#define TIMER_ACTIVE 0x0080
|
||||
#define TICKS_PER_SEC 67027964ULL
|
||||
|
||||
void timer_start( void );
|
||||
void timer_stop( void );
|
||||
u64 timer_ticks( void );
|
||||
u64 timer_msec( void );
|
||||
u64 timer_sec( void );
|
||||
u64 timer_start( void );
|
||||
u64 timer_ticks( u64 start_time );
|
||||
u64 timer_msec( u64 start_time );
|
||||
u64 timer_sec( u64 start_time );
|
||||
void wait_msec( u64 msec );
|
||||
|
@ -608,13 +608,14 @@ bool ShowProgress(u64 current, u64 total, const char* opstr)
|
||||
u32 prog_percent = ((total > 0) && (current <= total)) ? (current * 100) / total : 0;
|
||||
char tempstr[64];
|
||||
char progstr[64];
|
||||
u64 timer = 0;
|
||||
|
||||
static u64 last_sec_remain = 0;
|
||||
if (!current) {
|
||||
timer_start();
|
||||
timer = timer_start();
|
||||
last_sec_remain = 0;
|
||||
}
|
||||
u64 sec_elapsed = (total > 0) ? timer_sec() : 0;
|
||||
u64 sec_elapsed = (total > 0) ? timer_sec( timer ) : 0;
|
||||
u64 sec_total = (current > 0) ? (sec_elapsed * total) / current : 0;
|
||||
u64 sec_remain = (!last_sec_remain) ? (sec_total - sec_elapsed) : ((last_sec_remain + (sec_total - sec_elapsed) + 1) / 2);
|
||||
if (sec_remain >= 60 * 60) sec_remain = 60 * 60 - 1;
|
||||
|
@ -1373,7 +1373,7 @@ u32 GodMode() {
|
||||
}
|
||||
|
||||
SplashInit();
|
||||
timer_start(); // show splash for at least 1 sec
|
||||
u64 timer = timer_start(); // show splash for at least 1 sec
|
||||
|
||||
InitSDCardFS();
|
||||
AutoEmuNandBase(true);
|
||||
@ -1396,7 +1396,7 @@ u32 GodMode() {
|
||||
clipboard->n_entries = 0;
|
||||
memset(panedata, 0x00, 0x10000);
|
||||
|
||||
while(timer_sec() < 1); // show splash for at least 1 sec
|
||||
while(timer_sec( timer ) < 1); // show splash for at least 1 sec
|
||||
ClearScreenF(true, true, COLOR_STD_BG); // clear splash
|
||||
|
||||
while (true) { // this is the main loop
|
||||
|
Loading…
x
Reference in New Issue
Block a user