Commit 49ffb75

Nick committed on
Fixing bug where sound volume always updates, even when register hasn't changed
commit 49ffb75cc210126a0778193283b9a310984cbf0a parent 80f7037
1 changed files +8−3
ModifiedSound/sound.pas +8−3
@@ -267,35 +267,40 @@ begin
267 end; 267 end;
268 snd[4].Freq := (8192 * 1024) div snd[4].Freq; 268 snd[4].Freq := (8192 * 1024) div snd[4].Freq;
269 snd[3].Enable := m_iram[$FF1a] and $80 > 0; 269 snd[3].Enable := m_iram[$FF1a] and $80 > 0;
270 snd[1].Vol := m_iram[$FF12] shr 4; 270
271 if m_iram[$FF14] and $80 > 0 then 271 if m_iram[$FF14] and $80 > 0 then
272 begin 272 begin
273 snd[1].Vol := m_iram[$FF12] shr 4;
273 snd[1].Len := 64 - (m_iram[$FF11] and 63); 274 snd[1].Len := 64 - (m_iram[$FF11] and 63);
274 snd[1].Cnt := 0; 275 snd[1].Cnt := 0;
275 m_iram[$FF14] := m_iram[$FF14] and $7f; 276 m_iram[$FF14] := m_iram[$FF14] and $7f;
276 snd[1].Enable := True; 277 snd[1].Enable := True;
277 end; 278 end;
278 snd[2].Vol := m_iram[$FF17] shr 4; 279
279 if m_iram[$FF19] and $80 > 0 then 280 if m_iram[$FF19] and $80 > 0 then
280 begin 281 begin
282 snd[2].Vol := m_iram[$FF17] shr 4;
281 snd[2].Len := 64 - (m_iram[$FF16] and 63); 283 snd[2].Len := 64 - (m_iram[$FF16] and 63);
282 snd[2].Cnt := 0; 284 snd[2].Cnt := 0;
283 m_iram[$FF19] := m_iram[$FF19] and $7f; 285 m_iram[$FF19] := m_iram[$FF19] and $7f;
284 snd[2].Enable := True; 286 snd[2].Enable := True;
285 end; 287 end;
288
286 if m_iram[$FF1e] and $80 > 0 then 289 if m_iram[$FF1e] and $80 > 0 then
287 begin 290 begin
288 snd[3].Len := (256 - byte(m_iram[$FF1b])) shl 7; 291 snd[3].Len := (256 - byte(m_iram[$FF1b])) shl 7;
289 snd[3].Cnt := 0; 292 snd[3].Cnt := 0;
290 m_iram[$FF1e] := m_iram[$FF1e] and $7f; 293 m_iram[$FF1e] := m_iram[$FF1e] and $7f;
291 end; 294 end;
292 snd[4].Vol := m_iram[$FF21] shr 4; 295
293 if m_iram[$FF23] and $80 > 0 then 296 if m_iram[$FF23] and $80 > 0 then
294 begin 297 begin
298 snd[4].Vol := m_iram[$FF21] shr 4;
295 snd[4].Len := 64 - (m_iram[$FF20] and 63); 299 snd[4].Len := 64 - (m_iram[$FF20] and 63);
296 m_iram[$FF23] := m_iram[$FF23] and $7f; 300 m_iram[$FF23] := m_iram[$FF23] and $7f;
297 snd[4].Enable := True; 301 snd[4].Enable := True;
298 end; 302 end;
303
299 sndRegChange := False; 304 sndRegChange := False;
300 end; 305 end;
301 if (snd[1].Enable) and (m_iram[$FF10] and $70 > 0) then 306 if (snd[1].Enable) and (m_iram[$FF10] and $70 > 0) then