@@ -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