mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-27 22:42:57 +00:00
- Fixed a copy-and-paste error in win32/i_main.cpp for 64-bit mode.
- Tweaked OPL centering a little. SVN r950 (trunk)
This commit is contained in:
parent
de85314234
commit
8040cdd4ff
3 changed files with 21 additions and 10 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
April 29, 2008
|
||||||
|
- Fixed a copy-and-paste error in win32/i_main.cpp for 64-bit mode.
|
||||||
|
- Tweaked OPL centering a little.
|
||||||
|
|
||||||
April 28, 2008
|
April 28, 2008
|
||||||
- Added dynamic recentering for the OPL synth. The chip has four basic
|
- Added dynamic recentering for the OPL synth. The chip has four basic
|
||||||
waveforms, and three of them are non-negative. This can cause a tendency
|
waveforms, and three of them are non-negative. This can cause a tendency
|
||||||
|
|
|
@ -270,7 +270,7 @@ void OPLmusicBlock::OffsetSamples(float *buff, int count)
|
||||||
// data back to around the [-1.0, 1.0] range.
|
// data back to around the [-1.0, 1.0] range.
|
||||||
|
|
||||||
double max = -1e10, min = 1e10, offset, step;
|
double max = -1e10, min = 1e10, offset, step;
|
||||||
int i, ramp;
|
int i, ramp, largest_at = 0;
|
||||||
|
|
||||||
// Find max and min values for this segment of the waveform.
|
// Find max and min values for this segment of the waveform.
|
||||||
for (i = 0; i < count; ++i)
|
for (i = 0; i < count; ++i)
|
||||||
|
@ -278,19 +278,18 @@ void OPLmusicBlock::OffsetSamples(float *buff, int count)
|
||||||
if (buff[i] > max)
|
if (buff[i] > max)
|
||||||
{
|
{
|
||||||
max = buff[i];
|
max = buff[i];
|
||||||
|
largest_at = i;
|
||||||
}
|
}
|
||||||
if (buff[i] < min)
|
if (buff[i] < min)
|
||||||
{
|
{
|
||||||
min = buff[i];
|
min = buff[i];
|
||||||
|
largest_at = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Don't slide if we don't have to, because doing so introduces noise.
|
// Prefer to keep the offset at 0, even if it means a little clipping.
|
||||||
// However, if the amplitude is low, we do want to slide so that when
|
if (LastOffset == 0 && min >= -1.1 && max <= 1.1)
|
||||||
// the song ends, the wave will be around 0 and not click when the song
|
|
||||||
// starts over.
|
|
||||||
if (min - LastOffset > -0.5 && max - LastOffset < 0.5 && max - min > 0.5)
|
|
||||||
{
|
{
|
||||||
offset = LastOffset;
|
offset = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -305,8 +304,16 @@ void OPLmusicBlock::OffsetSamples(float *buff, int count)
|
||||||
// Ramp the offset change so there aren't any abrupt clicks in the output.
|
// Ramp the offset change so there aren't any abrupt clicks in the output.
|
||||||
// If the ramp is too short, it can sound scratchy. cblood2.mid is
|
// If the ramp is too short, it can sound scratchy. cblood2.mid is
|
||||||
// particularly unforgiving of short ramps.
|
// particularly unforgiving of short ramps.
|
||||||
ramp = MIN(512, count);
|
if (count >= 512)
|
||||||
step = (offset - LastOffset) / 512;
|
{
|
||||||
|
ramp = 512;
|
||||||
|
step = (offset - LastOffset) / 512;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ramp = MIN(count, MAX(196, largest_at));
|
||||||
|
step = (offset - LastOffset) / ramp;
|
||||||
|
}
|
||||||
offset = LastOffset;
|
offset = LastOffset;
|
||||||
i = 0;
|
i = 0;
|
||||||
if (step != 0)
|
if (step != 0)
|
||||||
|
|
|
@ -1111,7 +1111,7 @@ LONG WINAPI CatchAllExceptions (LPEXCEPTION_POINTERS info)
|
||||||
#ifndef _M_X64
|
#ifndef _M_X64
|
||||||
info->ContextRecord->Eip = (DWORD_PTR)SleepForever;
|
info->ContextRecord->Eip = (DWORD_PTR)SleepForever;
|
||||||
#else
|
#else
|
||||||
info->ContextRecord->Rip = (DWORD_PTR)ExitFatally;
|
info->ContextRecord->Rip = (DWORD_PTR)SleepForever;
|
||||||
#endif
|
#endif
|
||||||
QueueUserAPC (ExitFatally, MainThread, 0);
|
QueueUserAPC (ExitFatally, MainThread, 0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue