fix(apu): resolve off-by-one error
This commit is contained in:
		| @@ -101,8 +101,6 @@ impl Apu { | ||||
|         if self.falling_edge(12, div) { | ||||
|             use FrameSequencerState::*; | ||||
|  | ||||
|             self.sequencer.next(); | ||||
|  | ||||
|             match self.sequencer.state() { | ||||
|                 Length => self.handle_length(), | ||||
|                 LengthAndSweep => { | ||||
| @@ -112,6 +110,8 @@ impl Apu { | ||||
|                 Envelope => self.handle_envelope(), | ||||
|                 Nothing => {} | ||||
|             } | ||||
|  | ||||
|             self.sequencer.next(); | ||||
|         } | ||||
|  | ||||
|         self.div_prev = Some(div); | ||||
|   | ||||
| @@ -531,13 +531,9 @@ pub(super) mod fs { | ||||
|  | ||||
|             self.step = (self.step + 1) % 8; | ||||
|             self.state = match self.step { | ||||
|                 0 => Length, | ||||
|                 1 => Nothing, | ||||
|                 2 => LengthAndSweep, | ||||
|                 3 => Nothing, | ||||
|                 4 => Length, | ||||
|                 5 => Nothing, | ||||
|                 6 => LengthAndSweep, | ||||
|                 1 | 3 | 5 => Nothing, | ||||
|                 0 | 4 => Length, | ||||
|                 2 | 6 => LengthAndSweep, | ||||
|                 7 => Envelope, | ||||
|                 _ => unreachable!("Step {} is invalid for the Frame Sequencer", self.step), | ||||
|             }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user