Merge branch 'master' into Radar2

This commit is contained in:
erorcun
2020-03-17 20:46:37 +03:00
committed by GitHub
22 changed files with 1771 additions and 1430 deletions

View File

@ -2,6 +2,7 @@
class CClock
{
public:
static uint8 &ms_nGameClockHours;
static uint8 &ms_nGameClockMinutes;
static uint16 &ms_nGameClockSeconds;
@ -11,7 +12,6 @@ class CClock
static uint32 &ms_nMillisecondsPerGameMinute;
static uint32 &ms_nLastClockTick;
static bool &ms_bClockHasBeenStored;
public:
static void Initialise(uint32 scale);
static void Update(void);

View File

@ -14,6 +14,13 @@ CObjectPool *&CPools::ms_pObjectPool = *(CObjectPool**)0x880E28;
CDummyPool *&CPools::ms_pDummyPool = *(CDummyPool**)0x8F2C18;
CAudioScriptObjectPool *&CPools::ms_pAudioScriptObjectPool = *(CAudioScriptObjectPool**)0x8F1B6C;
WRAPPER void CPools::LoadObjectPool(uint8* buf, uint32 size) { EAXJMP(0x4a2550); }
WRAPPER void CPools::LoadPedPool(uint8* buf, uint32 size) { EAXJMP(0x4a2b50); }
WRAPPER void CPools::LoadVehiclePool(uint8* buf, uint32 size) { EAXJMP(0x4a1b40); }
WRAPPER void CPools::SaveObjectPool(uint8* buf, uint32 *size) { EAXJMP(0x4a22d0); }
WRAPPER void CPools::SavePedPool(uint8* buf, uint32 *size) { EAXJMP(0x4a29b0); }
WRAPPER void CPools::SaveVehiclePool(uint8* buf, uint32 *size) { EAXJMP(0x4a2080); }
void
CPools::Initialise(void)
{
@ -30,16 +37,16 @@ CPools::Initialise(void)
void
CPools::ShutDown(void)
{
debug("PtrNodes left %d\n", ms_pPtrNodePool->GetNoOfUsedSpaces());
debug("EntryInfoNodes left %d\n", ms_pEntryInfoNodePool->GetNoOfUsedSpaces());
debug("Peds left %d\n", ms_pPedPool->GetNoOfUsedSpaces());
debug("Vehicles left %d\n", ms_pVehiclePool->GetNoOfUsedSpaces());
debug("Buildings left %d\n", ms_pBuildingPool->GetNoOfUsedSpaces());
debug("Treadables left %d\n", ms_pTreadablePool->GetNoOfUsedSpaces());
debug("Objects left %d\n", ms_pObjectPool->GetNoOfUsedSpaces());
debug("Dummys left %d\n", ms_pDummyPool->GetNoOfUsedSpaces());
debug("AudioScriptObjects left %d\n", ms_pAudioScriptObjectPool->GetNoOfUsedSpaces());
{
debug("PtrNodes left %d\n", ms_pPtrNodePool->GetNoOfUsedSpaces());
debug("EntryInfoNodes left %d\n", ms_pEntryInfoNodePool->GetNoOfUsedSpaces());
debug("Peds left %d\n", ms_pPedPool->GetNoOfUsedSpaces());
debug("Vehicles left %d\n", ms_pVehiclePool->GetNoOfUsedSpaces());
debug("Buildings left %d\n", ms_pBuildingPool->GetNoOfUsedSpaces());
debug("Treadables left %d\n", ms_pTreadablePool->GetNoOfUsedSpaces());
debug("Objects left %d\n", ms_pObjectPool->GetNoOfUsedSpaces());
debug("Dummys left %d\n", ms_pDummyPool->GetNoOfUsedSpaces());
debug("AudioScriptObjects left %d\n", ms_pAudioScriptObjectPool->GetNoOfUsedSpaces());
printf("Shutdown pool started\n");
delete ms_pPtrNodePool;
@ -62,12 +69,12 @@ CVehicle *CPools::GetVehicle(int32 handle) { return ms_pVehiclePool->GetAt(handl
int32 CPools::GetObjectRef(CObject *object) { return ms_pObjectPool->GetIndex(object); }
CObject *CPools::GetObject(int32 handle) { return ms_pObjectPool->GetAt(handle); }
void
CPools::CheckPoolsEmpty()
{
assert(ms_pPedPool->GetNoOfUsedSpaces() == 0);
assert(ms_pVehiclePool->GetNoOfUsedSpaces() == 0);
printf("pools have beem cleared \n");
void
CPools::CheckPoolsEmpty()
{
assert(ms_pPedPool->GetNoOfUsedSpaces() == 0);
assert(ms_pVehiclePool->GetNoOfUsedSpaces() == 0);
printf("pools have been cleared\n");
}

View File

@ -52,4 +52,10 @@ public:
static CObject *GetObject(int32 handle);
static void CheckPoolsEmpty();
static void MakeSureSlotInObjectPoolIsEmpty(int32 slot);
static void LoadObjectPool(uint8 *buf, uint32 size);
static void LoadPedPool(uint8 *buf, uint32 size);
static void LoadVehiclePool(uint8 *buf, uint32 size);
static void SaveObjectPool(uint8 *buf, uint32 *size);
static void SavePedPool(uint8 *buf, uint32 *size);
static void SaveVehiclePool(uint8 *buf, uint32 *size);
};

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,9 @@
#include "common.h"
#include "patcher.h"
#include "Stats.h"
WRAPPER void CStats::SaveStats(uint8 *buf, uint32 *size) { EAXJMP(0x4ab3e0); }
int32 &CStats::DaysPassed = *(int32*)0x8F2BB8;
int32 &CStats::HeadsPopped = *(int32*)0x8F647C;
bool& CStats::CommercialPassed = *(bool*)0x8F4334;

View File

@ -73,4 +73,5 @@ public:
static void CheckPointReachedUnsuccessfully() { KillsSinceLastCheckpoint = 0; };
static void CheckPointReachedSuccessfully() { TotalLegitimateKills += KillsSinceLastCheckpoint; KillsSinceLastCheckpoint = 0; };
static void RegisterElBurroTime(int32);
};
static void SaveStats(uint8 *buf, uint32 *size);
};

5
src/core/TimeStep.cpp Normal file
View File

@ -0,0 +1,5 @@
#include "TimeStep.h"
float &CTimeStep::ms_fTimeScale = *(float*)0x5F76C8;
float &CTimeStep::ms_fFramesPerUpdate = *(float*)0x5F76CC;
float &CTimeStep::ms_fTimeStep = *(float*)0x5F76D0;

10
src/core/TimeStep.h Normal file
View File

@ -0,0 +1,10 @@
#pragma once
// Pretty sure this class is not used by the game
class CTimeStep
{
public:
static float &ms_fTimeScale;
static float &ms_fFramesPerUpdate;
static float &ms_fTimeStep;
};

View File

@ -2,6 +2,7 @@
class CTimer
{
public:
static uint32 &m_snTimeInMilliseconds;
static uint32 &m_snTimeInMillisecondsPauseMode;
static uint32 &m_snTimeInMillisecondsNonClipped;
@ -12,7 +13,7 @@ class CTimer
static float &ms_fTimeStepNonClipped;
static bool &m_UserPause;
static bool &m_CodePause;
public:
static float GetTimeStep(void) { return ms_fTimeStep; }
static void SetTimeStep(float ts) { ms_fTimeStep = ts; }
static float GetTimeStepInSeconds() { return ms_fTimeStep / 50.0f; }

View File

@ -321,9 +321,9 @@ _TWEEKCLASS(CTweakFloat, float);
#undef _TWEEKCLASS
#ifdef VALIDATE_SAVE_SIZE
extern int32 _bufBytesRead;
#define INITSAVEBUF _bufBytesRead = 0;
#define VALIDATESAVEBUF(b) assert(_bufBytesRead == b);
extern int32 _saveBufCount;
#define INITSAVEBUF _saveBufCount = 0;
#define VALIDATESAVEBUF(b) assert(_saveBufCount == b);
#else
#define INITSAVEBUF
#define VALIDATESAVEBUF(b)
@ -333,7 +333,7 @@ inline void SkipSaveBuf(uint8 *&buf, int32 skip)
{
buf += skip;
#ifdef VALIDATE_SAVE_SIZE
_bufBytesRead += skip;
_saveBufCount += skip;
#endif
}

View File

@ -168,6 +168,10 @@ enum Config {
#define USE_MEASUREMENTS_IN_METERS // makes game use meters instead of feet in script
#define USE_PRECISE_MEASUREMENT_CONVERTION // makes game convert feet to meeters more precisely
// Replay
//#define DONT_FIX_REPLAY_BUGS // keeps various bugs in CReplay, some of which are fairly cool!
//#define USE_BETA_REPLAY_MODE // adds another replay mode, a few seconds slomo (caution: buggy!)
// Vehicles
#define EXPLODING_AIRTRAIN // can blow up jumbo jet with rocket launcher
//#define REMOVE_TREADABLE_PATHFIND

View File

@ -449,7 +449,7 @@ void re3_trace(const char *filename, unsigned int lineno, const char *func, cons
}
#ifdef VALIDATE_SAVE_SIZE
int32 _bufBytesRead;
int32 _saveBufCount;
#endif
void