Skip to content

Commit 402d073

Browse files
committed
2026-05-15 15:14:24
1 parent 04ef202 commit 402d073

1 file changed

Lines changed: 12 additions & 15 deletions

File tree

src/apu.rs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -255,44 +255,41 @@ impl Swp {
255255
self.e = p != 0 || r.swp_sh() != 0;
256256
self.n = false;
257257
if r.swp_sh() != 0 {
258-
let (_, ov) = self.calc(r);
259-
return ov;
258+
return self.calc(r) >= 2048;
260259
}
261260
false
262261
}
263262

264-
fn calc(&mut self, r: &Reg) -> (u16, bool) {
263+
fn calc(&mut self, r: &Reg) -> u16 {
265264
let d = self.s >> r.swp_sh();
266-
let f = if r.swp_neg() {
265+
if r.swp_neg() {
267266
self.n = true;
268267
self.s.wrapping_sub(d)
269268
} else {
270269
self.s.wrapping_add(d)
271-
};
272-
(f, f >= 2048)
270+
}
273271
}
274272

275-
fn clock(&mut self, r: &mut Reg) -> bool {
273+
fn step(&mut self, r: &mut Reg) -> bool {
276274
let fired = self.t.step(1) != 0;
277275
if fired {
278-
// Reload period from the current register on every fire so writes to
279-
// NR10 between fires take effect immediately. Period 0 8.
276+
// Reload period from the current register on every fire so writes to NR10 between fires take effect
277+
// immediately. Period 0 -> 8.
280278
let p = r.swp_p();
281279
self.t.p = if p == 0 { 8 } else { u32::from(p) };
282280
self.t.n = 0;
283281
}
284282
if !fired || !self.e || r.swp_p() == 0 {
285283
return false;
286284
}
287-
let (f, ov) = self.calc(r);
288-
if ov {
285+
let f = self.calc(r);
286+
if f >= 2048 {
289287
return true;
290288
}
291-
if f < 2048 && r.swp_sh() != 0 {
289+
if r.swp_sh() != 0 {
292290
self.s = f;
293291
r.freq_update(f);
294-
let (_, ov2) = self.calc(r);
295-
if ov2 {
292+
if self.calc(r) >= 2048 {
296293
return true;
297294
}
298295
}
@@ -1198,7 +1195,7 @@ impl Ticker for Apu {
11981195
}
11991196
}
12001197
if Fseq::swp(s) && self.ch1.on {
1201-
if self.ch1.swp.clock(&mut self.ch1.r) {
1198+
if self.ch1.swp.step(&mut self.ch1.r) {
12021199
self.ch1.on = false;
12031200
}
12041201
self.ch1.tmr.p = self.ch1.r.per_sq();

0 commit comments

Comments
 (0)