zba/src/core/apu/device/Length.zig

19 lines
419 B
Zig

const Self = @This();
timer: u9,
pub fn create() Self {
return .{ .timer = 0 };
}
pub fn tick(self: *Self, enabled: bool, ch_enable: *bool) void {
if (enabled) {
if (self.timer == 0) return;
self.timer -= 1;
// By returning early if timer == 0, this is only
// true if timer == 0 because of the decrement we just did
if (self.timer == 0) ch_enable.* = false;
}
}