diff --git a/include/arm11/hardware/timer.h b/include/arm11/hardware/timer.h index 9e5c07c..f6fa85f 100644 --- a/include/arm11/hardware/timer.h +++ b/include/arm11/hardware/timer.h @@ -21,7 +21,7 @@ #include "types.h" -#define TIMER_BASE_FREQ (268111856.0) +#define TIMER_BASE_FREQ (268111856.f) #define TIMER_ENABLE (1u) #define TIMER_SINGLE_SHOT (0u) @@ -75,5 +75,5 @@ // Sleeps ms milliseconds. ms can be up to 32000. static inline void TIMER_sleepMs(u32 ms) { - TIMER_sleepTicks(TIMER_FREQ(1, 1000.0) * ms); + TIMER_sleepTicks(TIMER_FREQ(1, 1000) * ms); } diff --git a/include/arm9/hardware/timer.h b/include/arm9/hardware/timer.h index fbb32ef..052524e 100644 --- a/include/arm9/hardware/timer.h +++ b/include/arm9/hardware/timer.h @@ -21,17 +21,17 @@ #include "types.h" -#define TIMER_BASE_FREQ (67027963.95) +#define TIMER_BASE_FREQ (67027964) #define TIMER_COUNT_UP (1u<<2) // For cascading at least 2 timers #define TIMER_IRQ_ENABLE (1u<<6) #define TIMER_ENABLE (1u<<7) // Convenience macros for calculating the ticks. Based on libnds -#define TIMER_FREQ(n) (0x10000u - (u16)(TIMER_BASE_FREQ / (n))) -#define TIMER_FREQ_64(n) (0x10000u - (u16)(TIMER_BASE_FREQ / 64.0 / (n))) -#define TIMER_FREQ_256(n) (0x10000u - (u16)(TIMER_BASE_FREQ / 256.0 / (n))) -#define TIMER_FREQ_1024(n) (0x10000u - (u16)(TIMER_BASE_FREQ / 1024.0 / (n))) +#define TIMER_FREQ(n) (-TIMER_BASE_FREQ / (n)) +#define TIMER_FREQ_64(n) (-(TIMER_BASE_FREQ / 64) / (n)) +#define TIMER_FREQ_256(n) (-(TIMER_BASE_FREQ / 256) / (n)) +#define TIMER_FREQ_1024(n) (-(TIMER_BASE_FREQ / 1024) / (n)) typedef enum diff --git a/source/arm9/hardware/timer.c b/source/arm9/hardware/timer.c index 1c9991c..27db804 100644 --- a/source/arm9/hardware/timer.c +++ b/source/arm9/hardware/timer.c @@ -77,7 +77,7 @@ void TIMER_sleep(u32 ms) { - REG_TIMER3_VAL = TIMER_FREQ_1024(1000.0); + REG_TIMER3_VAL = TIMER_FREQ_1024(1000); overflows = ms; REG_TIMER3_CNT = TIMER_ENABLE | TIMER_IRQ_ENABLE | TIMER_PRESCALER_1024;