Time, timers & easing
Wall-clock functions use the 2000-01-01 epoch. Timers and easing functions live in c8b.timer and c8b.easingFunctions.
Conventions on every page: Availability says whether a symbol exists on the console BIOS, the emulator, or both. c8b and C8B are the same table.
Contents
- Clock and date
- Timers (c8b.timer)
c8b.timer.newc8b.timer.updateTimersc8b.timer.performAfterDelayc8b.timer.afterc8b.timer.keyRepeatTimerc8b.timer.keyRepeatTimerWithDelayc8b.timer.allTimersc8b.timer.clearAllTimer.newTimer:startTimer:pauseTimer:resetTimer:removeTimer:getTimeLeftTimer.updateCallbackTimer.timerEndedCallbackRealTimer.new
- Aliases
- Easing functions (c8b.easingFunctions)
c8b.easingFunctions.linearc8b.easingFunctions.inQuadc8b.easingFunctions.outQuadc8b.easingFunctions.inOutQuadc8b.easingFunctions.outInQuadc8b.easingFunctions.inCubicc8b.easingFunctions.outCubicc8b.easingFunctions.inOutCubicc8b.easingFunctions.outInCubicc8b.easingFunctions.inQuartc8b.easingFunctions.outQuartc8b.easingFunctions.inOutQuartc8b.easingFunctions.inSinec8b.easingFunctions.outSinec8b.easingFunctions.inOutSinec8b.easingFunctions.inExpoc8b.easingFunctions.outExpoc8b.easingFunctions.inOutExpoc8b.easingFunctions.inCircc8b.easingFunctions.outCircc8b.easingFunctions.inOutCircc8b.easingFunctions.inElasticc8b.easingFunctions.outElasticc8b.easingFunctions.inOutElasticc8b.easingFunctions.inBackc8b.easingFunctions.outBackc8b.easingFunctions.inOutBackc8b.easingFunctions.outBouncec8b.easingFunctions.inBouncec8b.easingFunctions.inOutBounce
- Low-level bindings (C8B.*)
Clock and date
c8b.getCurrentTimeMilliseconds
c8b.getCurrentTimeMilliseconds()
Milliseconds since local midnight.
- Returns: integer
- Availability: Console (BIOS) and emulator
- Note: Console without NTP returns milliseconds since boot instead.
c8b.resetElapsedTime
c8b.resetElapsedTime()
Resets the high-resolution timer.
- Availability: Console (BIOS) and emulator
c8b.getElapsedTime
c8b.getElapsedTime()
Seconds since resetElapsedTime.
- Returns: number
- Availability: Console (BIOS) and emulator
- Note: Console resolution is 1 ms.
c8b.getSecondsSinceEpoch
c8b.getSecondsSinceEpoch()
Seconds and milliseconds since 2000-01-01 00:00 UTC (Core8Bit epoch).
- Returns: seconds, milliseconds
- Availability: Console (BIOS) and emulator
- Note: On the console this needs network time (Wi-Fi); until the clock is set it returns zeros. The emulator uses the host clock.
c8b.getTime
c8b.getTime()
Local time as {year, month, day, weekday, hour, minute, second, millisecond}.
- Returns: table
- Availability: Console (BIOS) and emulator
- Note: On the console this needs network time (Wi-Fi); until the clock is set it returns zeros. The emulator uses the host clock.
local t = c8b.getTime()
print(t.hour .. ":" .. t.minute)
c8b.getGMTTime
c8b.getGMTTime()
UTC time table.
- Returns: table
- Availability: Console (BIOS) and emulator
- Note: On the console this needs network time (Wi-Fi); until the clock is set it returns zeros. The emulator uses the host clock.
c8b.epochFromTime
c8b.epochFromTime(timeTable)
Local time table to epoch-2000 seconds.
- Returns: seconds, milliseconds
- Availability: Console (BIOS) and emulator
c8b.epochFromGMTTime
c8b.epochFromGMTTime(timeTable)
UTC time table to epoch-2000 seconds.
- Returns: seconds, milliseconds
- Availability: Console (BIOS) and emulator
c8b.timeFromEpoch
c8b.timeFromEpoch(seconds, [milliseconds=0])
Epoch-2000 seconds to a local time table.
- Returns: table
- Availability: Console (BIOS) and emulator
c8b.GMTTimeFromEpoch
c8b.GMTTimeFromEpoch(seconds, [milliseconds=0])
Epoch-2000 seconds to a UTC time table.
- Returns: table
- Availability: Console (BIOS) and emulator
c8b.shouldDisplay24HourTime
c8b.shouldDisplay24HourTime()
Always true.
- Returns: true
- Availability: Console (BIOS) and emulator
Timers (c8b.timer)
c8b.timer.new
c8b.timer.new(duration, [callback, ...]) | (duration, startValue, endValue, [easing])
Creates a timer (milliseconds). With a function, it is called with the extra arguments when the timer ends; with numbers, timer.value interpolates. Fields: duration, value, repeats, reverses, discardOnCompletion, paused, updateCallback, timerEndedCallback.
- Returns: timer
- Availability: Console (BIOS) and emulator
- Note: Timers advance only when you call c8b.timer.updateTimers(), by a fixed 41.67 ms (1/24 s) per call. A new timer starts counting after 3 updates.
c8b.timer.new(500, function() print("done") end)
function c8b.update() c8b.timer.updateTimers() end
c8b.timer.updateTimers
c8b.timer.updateTimers()
Advances all timers; call once per frame.
- Availability: Console (BIOS) and emulator
- Note: Timers advance only when you call c8b.timer.updateTimers(), by a fixed 41.67 ms (1/24 s) per call.
c8b.timer.performAfterDelay
c8b.timer.performAfterDelay(delay, fn, ...)
Calls fn(...) after delay ms.
- Returns: timer
- Availability: Console (BIOS) and emulator
c8b.timer.after
c8b.timer.after(delay, fn, ...)
Same function as performAfterDelay.
- Returns: timer
- Availability: Console (BIOS) and emulator
c8b.timer.keyRepeatTimer
c8b.timer.keyRepeatTimer(fn)
Repeating timer: fires after 200 ms, then every 50 ms.
- Returns: timer
- Availability: Console (BIOS) and emulator
c8b.timer.keyRepeatTimerWithDelay
c8b.timer.keyRepeatTimerWithDelay(initialDelay, repeatDelay, fn)
Repeating timer with custom delays.
- Returns: timer
- Availability: Console (BIOS) and emulator
c8b.timer.allTimers
c8b.timer.allTimers()
Active timers.
- Returns: table
- Availability: Console (BIOS) and emulator
c8b.timer.clearAll
c8b.timer.clearAll()
Removes all timers (also run on game unload).
- Availability: Console (BIOS) and emulator
Timer.new
Timer.new(duration, ...)
Global Timer class constructor; same as c8b.timer.new.
- Availability: Console (BIOS) and emulator
Timer:start
timer:start()
Unpauses.
- Availability: Console (BIOS) and emulator
Timer:pause
timer:pause()
Pauses.
- Availability: Console (BIOS) and emulator
Timer:reset
timer:reset()
Restarts from 0.
- Availability: Console (BIOS) and emulator
Timer:remove
timer:remove()
Removes the timer and drops its callbacks.
- Availability: Console (BIOS) and emulator
Timer:getTimeLeft
timer:getTimeLeft()
Remaining ms.
- Returns: number
- Availability: Console (BIOS) and emulator
Timer.updateCallback
timer.updateCallback = function(timer) end
Callback field: called on every update while running.
- Availability: Console (BIOS) and emulator
Timer.timerEndedCallback
timer.timerEndedCallback = function(timer) end
Callback field: called when the timer ends (with the extra new() arguments if given, otherwise the timer).
- Availability: Console (BIOS) and emulator
RealTimer.new
RealTimer.new(duration, ...) | c8b.timer.RealTimer.new(...)
Timer that skips its first update so actions land on separate frames.
- Returns: timer
- Availability: Console (BIOS) and emulator
Aliases
RealTimer
RealTimer
Global alias of c8b.timer.RealTimer.
- Availability: Console (BIOS) and emulator
Timer
Timer
Global Timer class (metatable of timers).
- Availability: Console (BIOS) and emulator
Easing functions (c8b.easingFunctions)
c8b.easingFunctions.linear
c8b.easingFunctions.linear(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inQuad
c8b.easingFunctions.inQuad(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.outQuad
c8b.easingFunctions.outQuad(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inOutQuad
c8b.easingFunctions.inOutQuad(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.outInQuad
c8b.easingFunctions.outInQuad(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inCubic
c8b.easingFunctions.inCubic(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.outCubic
c8b.easingFunctions.outCubic(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inOutCubic
c8b.easingFunctions.inOutCubic(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.outInCubic
c8b.easingFunctions.outInCubic(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inQuart
c8b.easingFunctions.inQuart(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.outQuart
c8b.easingFunctions.outQuart(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inOutQuart
c8b.easingFunctions.inOutQuart(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inSine
c8b.easingFunctions.inSine(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.outSine
c8b.easingFunctions.outSine(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inOutSine
c8b.easingFunctions.inOutSine(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inExpo
c8b.easingFunctions.inExpo(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.outExpo
c8b.easingFunctions.outExpo(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inOutExpo
c8b.easingFunctions.inOutExpo(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inCirc
c8b.easingFunctions.inCirc(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.outCirc
c8b.easingFunctions.outCirc(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inOutCirc
c8b.easingFunctions.inOutCirc(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inElastic
c8b.easingFunctions.inElastic(t, b, c, d, [a], [p])
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.outElastic
c8b.easingFunctions.outElastic(t, b, c, d, [a], [p])
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inOutElastic
c8b.easingFunctions.inOutElastic(t, b, c, d, [a], [p])
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inBack
c8b.easingFunctions.inBack(t, b, c, d, [s])
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.outBack
c8b.easingFunctions.outBack(t, b, c, d, [s])
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inOutBack
c8b.easingFunctions.inOutBack(t, b, c, d, [s])
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.outBounce
c8b.easingFunctions.outBounce(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inBounce
c8b.easingFunctions.inBounce(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
c8b.easingFunctions.inOutBounce
c8b.easingFunctions.inOutBounce(t, b, c, d)
Penner easing: t elapsed, b start, c change, d duration.
- Returns: number
- Availability: Console (BIOS) and emulator
Low-level bindings (C8B.*)
C8B.System_getFPS
C8B.System_getFPS()
Measured FPS (console integer, emulator float).
- Returns: 1 value(s): number
- Availability: Console (BIOS) and emulator
C8B.System_getTime
C8B.System_getTime()
Emulator: monotonic ms (console uses c8b.system.getTime).
- Returns: 1 value(s): integer
- Availability: Emulator only