Skip to content

Commit

Permalink
Match MarkClockTick (thanks to mono21400)
Browse files Browse the repository at this point in the history
  • Loading branch information
TheOnlyZac authored Jul 2, 2024
1 parent aeeae85 commit 28315c5
Showing 1 changed file with 46 additions and 2 deletions.
48 changes: 46 additions & 2 deletions src/P2/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,56 @@ float g_rtClockPowerUp = 1.0f;
struct CLOCK g_clock;
TICK s_tickLastRaw;*/

static const int CLOCK_FRAMERATE = 60; // 60 FPS
static const float CLOCK_FRAMETIME = 1.f / CLOCK_FRAMERATE; // 1/60th of a second

static const int CLOCK_EE_TICK_RATE = 294912000; // 294.912 MHz
static const float CLOCK_EE_TICK_DURATION = 1.f / CLOCK_EE_TICK_RATE; // 1/294.912 MHz

void SetClockRate(float rt) {
g_rtClock = rt;
SetClockEnabled(&g_clock, rt > 0.0f);
}

INCLUDE_ASM(const s32, "P2/clock", MarkClockTick);
void MarkClockTick(CLOCK* pclock)
{
float dt;
float t1;

const TICK tickFrame = TickNow();
const TICK deltaTick = tickFrame - pclock->tickFrame;

dt = deltaTick * CLOCK_EE_TICK_DURATION;

t1 = CLOCK_FRAMETIME * 2;

if (dt < CLOCK_FRAMETIME) {
dt = CLOCK_FRAMETIME;
}
else if (t1 < dt) {
dt = t1;
}

pclock->dtReal = dt;

float dtFinal = 0.0f;

if (pclock->fEnabled) {
dtFinal = dt;
}

dtFinal *= g_rtClockPowerUp * g_rtClock;

if (CLOCK_FRAMETIME <= dtFinal) {
pclock->dtReal = dtFinal;
}

pclock->t += dtFinal;
pclock->dtPrev = pclock->dt;
pclock->dt = dtFinal;
pclock->tReal += pclock->dtReal;
pclock->tickFrame = tickFrame;
}

INCLUDE_ASM(const s32, "P2/clock", MarkClockTickRealOnly);

Expand All @@ -26,5 +70,5 @@ void SetClockEnabled(CLOCK *pclock, int fEnabled)

INCLUDE_ASM(const s32, "P2/clock", StartupClock);

INCLUDE_ASM(const s32, "P2/clock", TickNow);
INCLUDE_ASM(const s32, "P2/clock", TickNow__Fv);
INCLUDE_ASM(const s32, "P2/clock", func_00143140); // empty, not really a function

0 comments on commit 28315c5

Please sign in to comment.