summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2021-07-11 09:23:59 +0200
committerNikolay Korolev <nickvnuk@gmail.com>2021-07-11 09:23:59 +0200
commit776d46aacbc9317cb05c0d45949b4e4a2d45d848 (patch)
tree5ef3bfb77974917b7bbe47d50045f6b0f4768362 /src
parentMerge remote-tracking branch 'upstream/lcs' into lcs (diff)
parentMerge remote-tracking branch 'origin/miami' into lcs (diff)
downloadre3-776d46aacbc9317cb05c0d45949b4e4a2d45d848.tar
re3-776d46aacbc9317cb05c0d45949b4e4a2d45d848.tar.gz
re3-776d46aacbc9317cb05c0d45949b4e4a2d45d848.tar.bz2
re3-776d46aacbc9317cb05c0d45949b4e4a2d45d848.tar.lz
re3-776d46aacbc9317cb05c0d45949b4e4a2d45d848.tar.xz
re3-776d46aacbc9317cb05c0d45949b4e4a2d45d848.tar.zst
re3-776d46aacbc9317cb05c0d45949b4e4a2d45d848.zip
Diffstat (limited to 'src')
-rw-r--r--src/audio/AudioLogic.cpp61
-rw-r--r--src/audio/AudioManager.cpp10
-rw-r--r--src/audio/AudioSamples.h2
-rw-r--r--src/audio/sampman_miles.cpp1
-rw-r--r--src/audio/sampman_null.cpp12
-rw-r--r--src/control/Script.cpp14
-rw-r--r--src/core/CdStreamPosix.cpp1
-rw-r--r--src/core/Frontend.cpp10
-rw-r--r--src/core/config.h5
-rw-r--r--src/core/main.cpp2
-rw-r--r--src/skel/crossplatform.h1
-rw-r--r--src/vehicles/Vehicle.cpp7
12 files changed, 57 insertions, 69 deletions
diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp
index 31036adc..2d8cebc2 100644
--- a/src/audio/AudioLogic.cpp
+++ b/src/audio/AudioLogic.cpp
@@ -9447,7 +9447,7 @@ const MissionAudioData MissionAudioNameSfxAssoc[] = {
{"lanamu1", SFX_SFX_LANAMU1},
{"lanamu2", SFX_SFX_LANAMU2},
{"airhrnl", SFX_SFX_AIRHORN_LEFT},
- {"airhrnr", SFX_SFX_AIRHORN_RIGH},
+ {"airhrnr", SFX_SFX_AIRHORN_RIGHT},
{"sniper", SFX_SFX_SNIPER_SHOT_1},
{"snipsh", SFX_SFX_SNIPER_SHOT_2},
{"bloroof", SFX_SFX_BLOW_ROOF},
@@ -11293,9 +11293,8 @@ cAudioManager::PreloadMissionAudio(uint8 slot, Const char *name)
m_sMissionAudio.m_nLoadingStatus[slot] = LOADING_STATUS_NOT_LOADED;
m_sMissionAudio.m_nPlayStatus[slot] = PLAY_STATUS_STOPPED;
m_sMissionAudio.m_bIsPlaying[slot] = FALSE;
- //m_sMissionAudio.m_nMissionAudioCounter[slot] = m_nTimeSpent * SampleManager.GetStreamedFileLength(missionAudioSfx) / 1000;
m_sMissionAudio.m_nMissionAudioCounter[slot] = m_nTimeSpent * SampleManager.GetSampleLength(missionAudioSfx) / SampleManager.GetSampleBaseFrequency(missionAudioSfx);
- m_sMissionAudio.m_nMissionAudioCounter[slot] *= 4;
+ m_sMissionAudio.m_nMissionAudioCounter[slot] = 11 * m_sMissionAudio.m_nMissionAudioCounter[slot] / 10;
m_sMissionAudio.m_bIsPlayed[slot] = FALSE;
m_sMissionAudio.m_bPredefinedProperties[slot] = TRUE;
g_bMissionAudioLoadFailed[slot] = FALSE;
@@ -11379,7 +11378,6 @@ cAudioManager::ClearMissionAudio(uint8 slot)
m_sMissionAudio.m_bPredefinedProperties[slot] = TRUE;
m_sMissionAudio.m_nMissionAudioCounter[slot] = 0;
m_sMissionAudio.m_bIsMobile[slot] = FALSE;
- //SampleManager.StopStreamedFile(slot + 1);
SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
}
}
@@ -11401,9 +11399,8 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
switch (m_sMissionAudio.m_nLoadingStatus[slot]) {
case LOADING_STATUS_NOT_LOADED:
- //SampleManager.PreloadStreamedFile(m_sMissionAudio.m_nSampleIndex[slot], slot + 1);
+ // TODO: LoadMissionAudio
SampleManager.LoadPedComment(m_sMissionAudio.m_nSampleIndex[slot]);
- SampleManager.InitialiseChannel(slot + CHANNEL_MISSION_AUDIO_1, m_sMissionAudio.m_nSampleIndex[slot], SFX_BANK_PED_COMMENTS);
SampleManager.SetChannelFrequency(slot + CHANNEL_MISSION_AUDIO_1, SampleManager.GetSampleBaseFrequency(m_sMissionAudio.m_nSampleIndex[slot]));
m_sMissionAudio.m_nLoadingStatus[slot] = LOADING_STATUS_LOADED;
nFramesUntilFailedLoad[slot] = 0;
@@ -11414,8 +11411,8 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
if (g_bMissionAudioLoadFailed[slot]) {
if (m_bTimerJustReset) {
ClearMissionAudio(slot);
+ SampleManager.StopChannel(CHANNEL_POLICE_RADIO);
SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
- //SampleManager.StopStreamedFile(slot + 1);
nFramesForPretendPlaying[slot] = 0;
nCheckPlayingDelay[slot] = 0;
nFramesUntilFailedLoad[slot] = 0;
@@ -11434,18 +11431,20 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
if (MissionScriptAudioUsesPoliceChannel(m_sMissionAudio.m_nSampleIndex[slot])) {
SetMissionScriptPoliceAudio(m_sMissionAudio.m_nSampleIndex[slot]);
} else {
+ SampleManager.InitialiseChannel(slot + CHANNEL_MISSION_AUDIO_1, m_sMissionAudio.m_nSampleIndex[slot], SFX_BANK_PED_COMMENTS);
if(m_nUserPause)
- // SampleManager.PauseStream(TRUE, slot + 1);
- SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
+ SampleManager.SetChannelFrequency(slot + CHANNEL_MISSION_AUDIO_1, 0);
+ else
+ SampleManager.SetChannelFrequency(slot + CHANNEL_MISSION_AUDIO_1, SampleManager.GetSampleBaseFrequency(m_sMissionAudio.m_nSampleIndex[slot]));
if (m_sMissionAudio.m_bPredefinedProperties[slot]) {
- //if (m_sMissionAudio.m_nSampleIndex[slot] == STREAMED_SOUND_MISSION_CAMERAL)
- // SampleManager.SetStreamedVolumeAndPan(80, 0, TRUE, slot + 1);
- //else if (m_sMissionAudio.m_nSampleIndex[slot] == STREAMED_SOUND_MISSION_CAMERAR)
- // SampleManager.SetStreamedVolumeAndPan(80, 127, TRUE, slot + 1);
- //else
- SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, 63);
SampleManager.SetChannelVolume(slot + CHANNEL_MISSION_AUDIO_1, 127);
- //SampleManager.SetStreamedVolumeAndPan(80, 63, 1, slot + 1);
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, 63);
+ if (m_sMissionAudio.m_nSampleIndex[slot] == SFX_SFX_CAMERA_LEFT || m_sMissionAudio.m_nSampleIndex[slot] == SFX_SFX_AIRHORN_LEFT)
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, 0);
+ else if (m_sMissionAudio.m_nSampleIndex[slot] == SFX_SFX_CAMERA_RIGHT || m_sMissionAudio.m_nSampleIndex[slot] == SFX_SFX_AIRHORN_RIGHT)
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, 127);
+ else
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, 63);
} else {
distSquared = GetDistanceSquared(m_sMissionAudio.m_vecPos[slot]);
if (distSquared >= SQR(80.0f)) {
@@ -11460,22 +11459,18 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
TranslateEntity(&m_sMissionAudio.m_vecPos[slot], &vec);
pan = ComputePan(80.f, &vec);
}
- SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, pan);
SampleManager.SetChannelVolume(slot + CHANNEL_MISSION_AUDIO_1, emittingVol);
- //SampleManager.SetStreamedVolumeAndPan(emittingVol, pan, 1, slot + 1);
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, pan);
}
- //SampleManager.StartPreloadedStreamedFile(slot + 1);
SampleManager.StartChannel(slot + CHANNEL_MISSION_AUDIO_1);
}
m_sMissionAudio.m_nPlayStatus[slot] = PLAY_STATUS_PLAYING;
nCheckPlayingDelay[slot] = 30;
- //if (m_sMissionAudio.m_nSampleIndex[slot] >= STREAMED_SOUND_MISSION_MOB_01A && m_sMissionAudio.m_nSampleIndex[slot] <= STREAMED_SOUND_MISSION_MOB_99A)
- // m_sMissionAudio.m_bIsMobile[slot] = TRUE;
break;
case PLAY_STATUS_PLAYING:
if (m_bTimerJustReset) {
ClearMissionAudio(slot);
- //SampleManager.StopStreamedFile(slot + 1);
+ SampleManager.StopChannel(CHANNEL_POLICE_RADIO);
SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
break;
}
@@ -11484,25 +11479,20 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
if (nCheckPlayingDelay[slot]) {
--nCheckPlayingDelay[slot];
} else if ((g_bMissionAudioLoadFailed[slot] && m_sMissionAudio.m_nMissionAudioCounter[slot]-- == 0) || GetMissionScriptPoliceAudioPlayingStatus() == PLAY_STATUS_FINISHED) {
+ debug("FINISHED PLAYINGXXXXXXXXXXXXX");
m_sMissionAudio.m_nPlayStatus[slot] = PLAY_STATUS_FINISHED;
- //if (m_sMissionAudio.m_nSampleIndex[slot] >= STREAMED_SOUND_MISSION_MOB_01A && m_sMissionAudio.m_nSampleIndex[slot] <= STREAMED_SOUND_MISSION_MOB_99A)
- // m_sMissionAudio.m_bIsMobile[slot] = FALSE;
m_sMissionAudio.m_nSampleIndex[slot] = NO_SAMPLE;
- //SampleManager.StopStreamedFile(slot + 1);
- SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
+ SampleManager.StopChannel(CHANNEL_POLICE_RADIO);
m_sMissionAudio.m_nMissionAudioCounter[slot] = 0;
}
}
} else if (m_sMissionAudio.m_bIsPlaying[slot]) {
- //if (SampleManager.IsStreamPlaying(slot + 1) || m_nUserPause || m_nPreviousUserPause) {
if(SampleManager.GetChannelUsedFlag(slot + CHANNEL_MISSION_AUDIO_1) || m_nUserPause || m_nPreviousUserPause) {
if(m_nUserPause)
- //SampleManager.PauseStream(TRUE, slot + 1);
- SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
+ SampleManager.SetChannelFrequency(slot + CHANNEL_MISSION_AUDIO_1, 0);
else
{
- //SampleManager.PauseStream(FALSE, slot + 1);
- //SampleManager.StartChannel(slot + CHANNEL_MISSION_AUDIO_1);
+ SampleManager.SetChannelFrequency(slot + CHANNEL_MISSION_AUDIO_1, SampleManager.GetSampleBaseFrequency(m_sMissionAudio.m_nSampleIndex[slot]));
if (!m_sMissionAudio.m_bPredefinedProperties[slot]) {
distSquared = GetDistanceSquared(m_sMissionAudio.m_vecPos[slot]);
if (distSquared >= SQR(80.0f)) {
@@ -11517,19 +11507,13 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
TranslateEntity(&m_sMissionAudio.m_vecPos[slot], &vec);
pan = ComputePan(80.f, &vec);
}
- SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, pan);
SampleManager.SetChannelVolume(slot + CHANNEL_MISSION_AUDIO_1, emittingVol);
- //SampleManager.SetStreamedVolumeAndPan(emittingVol, pan, 1, slot + 1);
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, pan);
}
}
- //} else if (m_sMissionAudio.m_nSampleIndex[slot] == STREAMED_SOUND_MISSION_ROK2_01) {
- // m_sMissionAudio.m_nPlayStatus[slot] = PLAY_STATUS_STOPPED;
} else {
m_sMissionAudio.m_nPlayStatus[slot] = PLAY_STATUS_FINISHED;
- //if (m_sMissionAudio.m_nSampleIndex[slot] >= STREAMED_SOUND_MISSION_MOB_01A && m_sMissionAudio.m_nSampleIndex[slot] <= STREAMED_SOUND_MISSION_MOB_99A)
- // m_sMissionAudio.m_bIsMobile[slot] = FALSE;
m_sMissionAudio.m_nSampleIndex[slot] = NO_SAMPLE;
- //SampleManager.StopStreamedFile(slot + 1);
SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
m_sMissionAudio.m_nMissionAudioCounter[slot] = 0;
}
@@ -11537,7 +11521,6 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
if (m_nUserPause)
break;
if (nCheckPlayingDelay[slot]--) {
- //if (!SampleManager.IsStreamPlaying(slot + 1))
if (!SampleManager.GetChannelUsedFlag(slot + CHANNEL_MISSION_AUDIO_1))
break;
nCheckPlayingDelay[slot] = 0;
diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp
index 4ecdff25..f8fc5ff1 100644
--- a/src/audio/AudioManager.cpp
+++ b/src/audio/AudioManager.cpp
@@ -447,9 +447,17 @@ cAudioManager::ServiceSoundEffects()
#endif
m_bFifthFrameFlag = (m_FrameCounter++ % 5) == 0;
if (m_nUserPause && !m_nPreviousUserPause) {
- for (int32 i = 0; i < NUM_CHANNELS; i++)
+ for (int32 i = 0; i < NUM_CHANNELS_GENERIC; i++)
SampleManager.StopChannel(i);
+ SampleManager.SetChannelFrequency(CHANNEL_POLICE_RADIO, 0);
+ SampleManager.SetChannelFrequency(CHANNEL_MISSION_AUDIO_1, 0);
+ SampleManager.SetChannelFrequency(CHANNEL_MISSION_AUDIO_2, 0);
+
+ // ps2 code just stops the sound here for some reason
+ //SampleManager.StopChannel(CHANNEL_MISSION_AUDIO_1);
+ //SampleManager.StopChannel(CHANNEL_MISSION_AUDIO_2);
+
ClearRequestedQueue();
if (m_nActiveSampleQueue) {
m_nActiveSampleQueue = 0;
diff --git a/src/audio/AudioSamples.h b/src/audio/AudioSamples.h
index 15840dd3..41c2e3d4 100644
--- a/src/audio/AudioSamples.h
+++ b/src/audio/AudioSamples.h
@@ -4017,7 +4017,7 @@ enum eSfxSample
SFX_SCUM_WOM_GUN_THREATENED_2,
SFX_SCUM_WOM_SHOCKED_1,
SFX_SFX_AIRHORN_LEFT,
- SFX_SFX_AIRHORN_RIGH,
+ SFX_SFX_AIRHORN_RIGHT,
SFX_SFX_ANG1_AA,
SFX_SFX_ANG1_AB,
SFX_SFX_ANG1_AC,
diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp
index 88eceecf..73d4406d 100644
--- a/src/audio/sampman_miles.cpp
+++ b/src/audio/sampman_miles.cpp
@@ -1,3 +1,4 @@
+#define WITHWINDOWS
#include "common.h"
#ifdef AUDIO_MSS
diff --git a/src/audio/sampman_null.cpp b/src/audio/sampman_null.cpp
index a5ed2889..af4c54ad 100644
--- a/src/audio/sampman_null.cpp
+++ b/src/audio/sampman_null.cpp
@@ -114,7 +114,7 @@ cSampleManager::SetMusicMasterVolume(uint8 nVolume)
}
void
-cSampleManager::SetMusicMasterVolume(uint8 nVolume)
+cSampleManager::SetMP3BoostVolume(uint8 nVolume)
{
}
@@ -231,35 +231,35 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
void
cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume)
{
- ASSERT( nChannel != CHANNEL2D );
+ ASSERT( nChannel < MAXCHANNELS );
ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
}
void
cSampleManager::SetChannel3DPosition(uint32 nChannel, float fX, float fY, float fZ)
{
- ASSERT( nChannel != CHANNEL2D );
+ ASSERT( nChannel < MAXCHANNELS );
ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
}
void
cSampleManager::SetChannel3DDistances(uint32 nChannel, float fMax, float fMin)
{
- ASSERT( nChannel != CHANNEL2D );
+ ASSERT( nChannel < MAXCHANNELS );
ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
}
void
cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume)
{
- ASSERT( nChannel == CHANNEL2D );
+ ASSERT( nChannel >= MAXCHANNELS );
ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
}
void
cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan)
{
- ASSERT(nChannel == CHANNEL2D);
+ ASSERT( nChannel >= MAXCHANNELS );
ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
}
diff --git a/src/control/Script.cpp b/src/control/Script.cpp
index 89877452..fbb7024c 100644
--- a/src/control/Script.cpp
+++ b/src/control/Script.cpp
@@ -2573,20 +2573,16 @@ void CTheScripts::Shutdown()
int scriptToLoad = 0;
const char *scriptfile = "main.scm";
-#ifdef _WIN32
-#include <Windows.h>
-#endif
int open_script()
{
- // glfwGetKey doesn't work because of CGame::Initialise is blocking
-#ifdef _WIN32
- if (GetAsyncKeyState('G') & 0x8000)
+ // glfwGetKey doesn't work because of CGame::Initialise is blocking
+ CPad::UpdatePads();
+ if (CPad::GetPad(0)->GetChar('G'))
scriptToLoad = 0;
- if (GetAsyncKeyState('R') & 0x8000)
+ if (CPad::GetPad(0)->GetChar('R'))
scriptToLoad = 1;
- if (GetAsyncKeyState('D') & 0x8000)
+ if (CPad::GetPad(0)->GetChar('D'))
scriptToLoad = 2;
-#endif
switch (scriptToLoad) {
case 0: scriptfile = "main.scm"; break;
case 1: scriptfile = "freeroam_lcs.scm"; break;
diff --git a/src/core/CdStreamPosix.cpp b/src/core/CdStreamPosix.cpp
index 30fe06a0..bc9129eb 100644
--- a/src/core/CdStreamPosix.cpp
+++ b/src/core/CdStreamPosix.cpp
@@ -13,6 +13,7 @@
#include <fcntl.h>
#include <sys/resource.h>
#include <stdarg.h>
+#include <limits.h>
#ifdef __linux__
#include <sys/syscall.h>
diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp
index bbc79d4e..975cc7da 100644
--- a/src/core/Frontend.cpp
+++ b/src/core/Frontend.cpp
@@ -4575,19 +4575,11 @@ CMenuManager::ProcessUserInput(uint8 goDown, uint8 goUp, uint8 optionSelected, u
#ifdef USE_DEBUG_SCRIPT_LOADER
if (m_nCurrScreen == MENUPAGE_START_MENU || m_nCurrScreen == MENUPAGE_NEW_GAME || m_nCurrScreen == MENUPAGE_NEW_GAME_RELOAD) {
-#ifdef RW_GL3
- if (glfwGetKey(PSGLOBAL(window), GLFW_KEY_R) == GLFW_PRESS) {
+ if (CPad::GetPad(0)->GetChar('R')) {
scriptToLoad = 1;
DoSettingsBeforeStartingAGame();
return;
}
-#elif defined _WIN32
- if (GetAsyncKeyState('R') & 0x8000) {
- scriptToLoad = 1;
- DoSettingsBeforeStartingAGame();
- return;
- }
-#endif
}
#endif
diff --git a/src/core/config.h b/src/core/config.h
index 1f042e08..69775a62 100644
--- a/src/core/config.h
+++ b/src/core/config.h
@@ -470,6 +470,11 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
#undef DISABLE_LOADING_SCREEN
#undef DISABLE_VSYNC_ON_TEXTURE_CONVERSION
+#undef EXTENDED_COLOURFILTER
+#undef EXTENDED_PIPELINES
+#undef SCREEN_DROPLETS
+#undef NEW_RENDERER
+
#undef FIX_SPRITES
#define PC_WATER
diff --git a/src/core/main.cpp b/src/core/main.cpp
index 8e53901f..4a61267d 100644
--- a/src/core/main.cpp
+++ b/src/core/main.cpp
@@ -387,7 +387,7 @@ DoRWStuffEndOfFrame(void)
}
#else
if (CPad::GetPad(1)->GetLeftShockJustDown() || CPad::GetPad(0)->GetFJustDown(11)) {
- sprintf(s, "screen_0%11lld.png", time(nil));
+ sprintf(s, "screen_%011lld.png", time(nil));
RwGrabScreen(Scene.camera, s);
}
#endif
diff --git a/src/skel/crossplatform.h b/src/skel/crossplatform.h
index 24c3fb4d..a073f854 100644
--- a/src/skel/crossplatform.h
+++ b/src/skel/crossplatform.h
@@ -1,4 +1,5 @@
#include <time.h>
+#include <limits.h>
// This is the common include for platform/renderer specific skeletons(glfw.cpp, win.cpp etc.) and using cross platform things (like Windows directories wrapper, platform specific global arrays etc.)
// Functions that's different on glfw and win but have same signature, should be located on platform.h.
diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp
index e684aad7..49427476 100644
--- a/src/vehicles/Vehicle.cpp
+++ b/src/vehicles/Vehicle.cpp
@@ -817,11 +817,12 @@ CVehicle::ProcessWheel(CVector &wheelFwd, CVector &wheelRight, CVector &wheelCon
if(contactSpeedRight != 0.0f){
// exert opposing force
right = -contactSpeedRight/wheelsOnGround;
-#ifdef FIX_BUGS
+ // BUG?
// contactSpeedRight is independent of framerate but right has timestep as a factor
// so we probably have to fix this
- right *= CTimer::GetTimeStepFix();
-#endif
+ // fixing this causes jittery cars at 15fps, and causes the car to move backwards slowly at 18fps
+ // at 19fps, the effects are gone ...
+ //right *= CTimer::GetTimeStepFix();
if(wheelStatus == WHEEL_STATUS_BURST){
float fwdspeed = Min(contactSpeedFwd, fBurstSpeedMax);