aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/scumm/player_nes.cpp38
1 files changed, 18 insertions, 20 deletions
diff --git a/engines/scumm/player_nes.cpp b/engines/scumm/player_nes.cpp
index 5525a21e51..eaa59fb4f8 100644
--- a/engines/scumm/player_nes.cpp
+++ b/engines/scumm/player_nes.cpp
@@ -176,7 +176,8 @@ void Square::Write(int Reg, byte Val) {
break;
case 4:
- if (!(Enabled = Val ? true : false))
+ Enabled = Val;
+ if (!Enabled)
Timer = 0;
break;
}
@@ -293,7 +294,8 @@ void Triangle::Write(int Reg, byte Val) {
break;
case 4:
- if (!(Enabled = Val ? true : false))
+ Enabled = Val;
+ if (!Enabled)
Timer = 0;
break;
}
@@ -389,7 +391,8 @@ void Noise::Write(int Reg, byte Val) {
break;
case 4:
- if (!(Enabled = Val ? true : false))
+ Enabled = Val;
+ if (!Enabled)
Timer = 0;
break;
}
@@ -533,18 +536,14 @@ int step(T &obj, int sampcycles, uint frame_Cycles, int frame_Num) {
if (frame_Num < 4) {
obj.QuarterFrame();
- if (!(frame_Num & 1)) {
+ if (frame_Num & 1)
+ frame_Cycles++;
+ else
obj.HalfFrame();
- }
- }
-
- if (frame_Num & 1)
- frame_Cycles++;
-
- if (frame_Num == 4)
- frame_Num = 0;
- else
+
frame_Num++;
+ } else
+ frame_Num = 0;
}
if (!obj.Cycles)
@@ -571,14 +570,13 @@ int16 APU::GetSample(void) {
while (tmp >= Frame.Cycles) {
tmp -= Frame.Cycles;
Frame.Cycles = 7457;
-
- if (Frame.Num & 1)
- Frame.Cycles++;
-
- if (Frame.Num == 4)
- Frame.Num = 0;
- else
+
+ if (Frame.Num < 4) {
+ if (Frame.Num & 1)
+ Frame.Cycles++;
Frame.Num++;
+ } else
+ Frame.Num = 0;
}
Frame.Cycles -= tmp;