mirror of
https://github.com/bryanthaboi/gen1recomp
synced 2026-09-26 13:33:27 -04:00
38 lines
1.8 KiB
Lua
38 lines
1.8 KiB
Lua
package.path = "./?.lua;./?/init.lua;" .. package.path
|
|
|
|
local T = require("tests.modkit")
|
|
local FixedStep = require("src.core.FixedStep")
|
|
local LogicClock = require("src.core.LogicClock")
|
|
|
|
T.same(LogicClock.MODES, { "60", "gb" }, "two modes, in row order")
|
|
T.eq(LogicClock.normalize(nil), "60", "a save with no key is 60")
|
|
T.eq(LogicClock.normalize("junk"), "60", "and so is garbage")
|
|
T.eq(LogicClock.label("60"), "60HZ", "60 prints as 60HZ")
|
|
T.eq(LogicClock.label("gb"), "59.73HZ", "gb prints the cart's vblank rate")
|
|
T.eq(LogicClock.cycle("60", 1), "gb", "60 cycles to gb")
|
|
T.eq(LogicClock.cycle("gb", 1), "60", "gb wraps to 60")
|
|
T.eq(LogicClock.cycle(nil, -1), "gb", "a missing key normalizes before it steps")
|
|
|
|
T.check(math.abs(FixedStep.GB_HZ - 59.7275) < 1e-4, "GB_HZ is 4194304 / 70224")
|
|
|
|
T.eq(LogicClock.apply("gb"), "gb", "apply answers with what it stored")
|
|
T.check(math.abs(FixedStep.STEP - 1 / FixedStep.GB_HZ) < 1e-12, "and the fixed step is the cart period")
|
|
|
|
local steps = 0
|
|
FixedStep:init(function() steps = steps + 1 end)
|
|
FixedStep.maxAccum = FixedStep.MAX_ACCUM
|
|
for _ = 1, 6000 do FixedStep:update(1 / 600, 1) end
|
|
T.check(steps >= 597 and steps <= 598, ("ten seconds of wall clock buy %d steps at 59.73Hz"):format(steps))
|
|
|
|
T.eq(LogicClock.applyOptions({}), "60", "an options table with no key falls back to 60")
|
|
T.check(math.abs(FixedStep.STEP - 1 / 60) < 1e-12, "and the step is 1/60 again")
|
|
steps = 0
|
|
FixedStep:init(function() steps = steps + 1 end)
|
|
FixedStep.maxAccum = FixedStep.MAX_ACCUM
|
|
for _ = 1, 6000 do FixedStep:update(1 / 600, 1) end
|
|
T.check(steps >= 599 and steps <= 600, ("ten seconds buy %d steps at 60Hz"):format(steps))
|
|
|
|
LogicClock.applyOptions({ logicClock = "gb" })
|
|
T.eq(LogicClock.current, "gb", "applyOptions reads options.logicClock")
|
|
LogicClock.apply("60")
|