pc/ps2/custom limits

This commit is contained in:
withmorten 2021-02-16 16:45:05 +01:00
parent 3233ffe1c4
commit ed9d5b4b94
8 changed files with 450 additions and 177 deletions

View file

@ -5,147 +5,20 @@
#define VANILLA_DEFINES #define VANILLA_DEFINES
#endif #endif
enum Config {
NUMPLAYERS = 1, // 4 on PS2
NUMCDIMAGES = 12, // gta3.img duplicates (not used on PC)
MAX_CDIMAGES = 8, // additional cdimages
MAX_CDCHANNELS = 5,
MODELINFOSIZE = 5500, // 3150 on PS2
#ifdef VANILLA_DEFINES
TXDSTORESIZE = 850,
#else
TXDSTORESIZE = 1024, // for Xbox map
#endif
EXTRADIRSIZE = 128,
CUTSCENEDIRSIZE = 512,
SIMPLEMODELSIZE = 5000, // 2910 on PS2
MLOMODELSIZE = 1,
MLOINSTANCESIZE = 1,
TIMEMODELSIZE = 30,
CLUMPMODELSIZE = 5,
PEDMODELSIZE = 90,
VEHICLEMODELSIZE = 120, // 70 on PS2
XTRACOMPSMODELSIZE = 2,
TWODFXSIZE = 2000, // 1210 on PS2
MAXVEHICLESLOADED = 50, // 70 on mobile
NUMOBJECTINFO = 168, // object.dat
// Pool sizes
NUMPTRNODES = 30000, // 26000 on PS2
NUMENTRYINFOS = 5400, // 3200 on PS2
NUMPEDS = 140, // 90 on PS2
NUMVEHICLES = 110, // 70 on PS2
NUMBUILDINGS = 5500, // 4915 on PS2
NUMTREADABLES = 1214,
NUMOBJECTS = 450,
NUMDUMMIES = 2802, // 2368 on PS2
NUMAUDIOSCRIPTOBJECTS = 256,
NUMCUTSCENEOBJECTS = 50,
NUMANIMBLOCKS = 2,
NUMANIMATIONS = 250,
NUMTEMPOBJECTS = 30,
// Path data
NUM_PATHNODES = 4930,
NUM_CARPATHLINKS = 2076,
NUM_MAPOBJECTS = 1250,
NUM_PATHCONNECTIONS = 10260,
// Link list lengths
NUMALPHALIST = 20,
NUMALPHAENTITYLIST = 150,
NUMCOLCACHELINKS = 200,
NUMREFERENCES = 800,
// Zones
NUMAUDIOZONES = 36,
NUMZONES = 50,
NUMMAPZONES = 25,
// Cull zones
NUMCULLZONES = 512,
NUMATTRIBZONES = 288,
NUMZONEINDICES = 55000,
PATHNODESIZE = 4500,
NUMWEATHERS = 4,
NUMHOURS = 24,
NUMEXTRADIRECTIONALS = 4,
NUMANTENNAS = 8,
NUMCORONAS = 56,
NUMPOINTLIGHTS = 32,
NUM3DMARKERS = 32,
NUMBRIGHTLIGHTS = 32,
NUMSHINYTEXTS = 32,
NUMMONEYMESSAGES = 16,
NUMPICKUPMESSAGES = 16,
NUMBULLETTRACES = 16,
NUMMBLURSTREAKS = 4,
NUMSKIDMARKS = 32,
NUMONSCREENTIMERENTRIES = 1,
NUMRADARBLIPS = 32,
NUMGENERALPICKUPS = 320,
NUMSCRIPTEDPICKUPS = 16,
NUMPICKUPS = NUMGENERALPICKUPS + NUMSCRIPTEDPICKUPS,
NUMCOLLECTEDPICKUPS = 20,
NUMPACMANPICKUPS = 256,
NUMEVENTS = 64,
NUM_CARGENS = 160,
NUM_PATH_NODES_IN_AUTOPILOT = 8,
NUM_ACCIDENTS = 20,
NUM_FIRES = 40,
NUM_GARAGES = 32,
NUM_PROJECTILES = 32,
NUM_GLASSPANES = 45,
NUM_GLASSENTITIES = 32,
NUM_WATERCANNONS = 3,
NUMPEDROUTES = 200,
NUMPHONES = 50,
NUMPEDGROUPS = 31,
NUMMODELSPERPEDGROUP = 8,
NUMSHOTINFOS = 100,
NUMROADBLOCKS = 600,
NUMVISIBLEENTITIES = 2000,
NUMINVISIBLEENTITIES = 150,
NUM_AUDIOENTITY_EVENTS = 4,
NUM_PED_COMMENTS_SLOTS = 20,
NUM_SOUND_QUEUES = 2,
NUM_AUDIOENTITIES = 200,
NUM_SCRIPT_MAX_ENTITIES = 40,
NUM_GARAGE_STORED_CARS = 6,
NUM_CRANES = 8,
NUM_EXPLOSIONS = 48,
};
// We don't expect to compile for PS2 or Xbox // We don't expect to compile for PS2 or Xbox
// but it might be interesting for documentation purposes // but it might be interesting for documentation purposes
#define GTA_PC #define GTA_PC
//#define GTA_PS2 //#define GTA_PS2
//#define GTA_XBOX //#define GTA_XBOX
#ifdef GTA_PS2
#include "limits_ps2.h"
#elif defined VANILLA_DEFINES
#include "limits_pc.h"
#else
#include "limits_custom.h" // some nice enhanced limits
#endif
// Version defines // Version defines
#define GTA3_PS2_140 300 #define GTA3_PS2_140 300
#define GTA3_PS2_160 301 #define GTA3_PS2_160 301

138
src/core/limits_custom.h Normal file
View file

@ -0,0 +1,138 @@
#pragma once
enum Config {
NUMPLAYERS = 1,
NUMCDIMAGES = 12, // gta3.img duplicates (not used on PC)
MAX_CDIMAGES = 8, // additional cdimages
MAX_CDCHANNELS = 5,
MODELINFOSIZE = 5500,
TXDSTORESIZE = 1024, // 1024 for Xbox map
EXTRADIRSIZE = 128,
CUTSCENEDIRSIZE = 512,
SIMPLEMODELSIZE = 5000,
MLOMODELSIZE = 1,
MLOINSTANCESIZE = 1,
TIMEMODELSIZE = 1500,
CLUMPMODELSIZE = 5,
PEDMODELSIZE = 90,
VEHICLEMODELSIZE = 120,
XTRACOMPSMODELSIZE = 2,
TWODFXSIZE = 2000,
MAXVEHICLESLOADED = 70, // 70 on mobile
NUMOBJECTINFO = 168, // object.dat
// Pool sizes
NUMPTRNODES = 90000,
NUMENTRYINFOS = 25400,
NUMPEDS = 140,
NUMVEHICLES = 110,
NUMBUILDINGS = 35500,
NUMTREADABLES = 1214,
NUMOBJECTS = 9500,
NUMDUMMIES = 22802,
NUMAUDIOSCRIPTOBJECTS = 256,
NUMCUTSCENEOBJECTS = 50,
NUMANIMBLOCKS = 2,
NUMANIMATIONS = 250,
NUMTEMPOBJECTS = 30,
// Path data
NUM_PATHNODES = 4930,
NUM_CARPATHLINKS = 2076,
NUM_MAPOBJECTS = 1250,
NUM_PATHCONNECTIONS = 10260,
// Link list lengths
NUMALPHALIST = 20,
NUMALPHAENTITYLIST = 1250, // default 150 is not enough for bigger FOVs
NUMCOLCACHELINKS = 200,
NUMREFERENCES = 800,
// Zones
NUMAUDIOZONES = 36,
NUMZONES = 50,
NUMMAPZONES = 25,
// Cull zones
NUMCULLZONES = 512,
NUMATTRIBZONES = 288,
NUMZONEINDICES = 55000,
PATHNODESIZE = 4500,
NUMWEATHERS = 4,
NUMHOURS = 24,
NUMEXTRADIRECTIONALS = 4,
NUMANTENNAS = 8,
NUMCORONAS = 2000,
NUMPOINTLIGHTS = 32,
NUM3DMARKERS = 32,
NUMBRIGHTLIGHTS = 32,
NUMSHINYTEXTS = 32,
NUMMONEYMESSAGES = 16,
NUMPICKUPMESSAGES = 16,
NUMBULLETTRACES = 16,
NUMMBLURSTREAKS = 4,
NUMSKIDMARKS = 32,
NUMONSCREENTIMERENTRIES = 1,
NUMRADARBLIPS = 32,
NUMGENERALPICKUPS = 320,
NUMSCRIPTEDPICKUPS = 16,
NUMPICKUPS = NUMGENERALPICKUPS + NUMSCRIPTEDPICKUPS,
NUMCOLLECTEDPICKUPS = 20,
NUMPACMANPICKUPS = 256,
NUMEVENTS = 64,
NUM_CARGENS = 160,
NUM_PATH_NODES_IN_AUTOPILOT = 8,
NUM_ACCIDENTS = 20,
NUM_FIRES = 40,
NUM_GARAGES = 32,
NUM_PROJECTILES = 32,
NUM_GLASSPANES = 45,
NUM_GLASSENTITIES = 32,
NUM_WATERCANNONS = 3,
NUM_PARTICLES = 1000,
NUM_STOREDSHADOWS = 48,
NUM_POLYBUNCHES = 300,
NUM_STATICSHADOWS = 64,
NUM_PERMAMENTSHADOWS = 48,
NUMPEDROUTES = 200,
NUMPHONES = 50,
NUMPEDGROUPS = 31,
NUMMODELSPERPEDGROUP = 8,
NUMSHOTINFOS = 100,
NUMROADBLOCKS = 600,
NUMVISIBLEENTITIES = 5000,
NUMINVISIBLEENTITIES = 5000,
NUM_AUDIOENTITY_EVENTS = 4,
NUM_PED_COMMENTS_SLOTS = 20,
NUM_SOUND_QUEUES = 2,
NUM_AUDIOENTITIES = 200,
NUM_SCRIPT_MAX_ENTITIES = 40,
NUM_GARAGE_STORED_CARS = 6,
NUM_CRANES = 8,
NUM_EXPLOSIONS = 48,
};

138
src/core/limits_pc.h Normal file
View file

@ -0,0 +1,138 @@
#pragma once
enum Config {
NUMPLAYERS = 1, // 4 on PS2
NUMCDIMAGES = 12, // gta3.img duplicates (not used on PC)
MAX_CDIMAGES = 8, // additional cdimages
MAX_CDCHANNELS = 5,
MODELINFOSIZE = 5500, // 3150 on PS2
TXDSTORESIZE = 850,
EXTRADIRSIZE = 128,
CUTSCENEDIRSIZE = 512,
SIMPLEMODELSIZE = 5000, // 2910 on PS2
MLOMODELSIZE = 1,
MLOINSTANCESIZE = 1,
TIMEMODELSIZE = 30,
CLUMPMODELSIZE = 5,
PEDMODELSIZE = 90,
VEHICLEMODELSIZE = 120, // 70 on PS2
XTRACOMPSMODELSIZE = 2,
TWODFXSIZE = 2000, // 1210 on PS2
MAXVEHICLESLOADED = 50, // 70 on mobile
NUMOBJECTINFO = 168, // object.dat
// Pool sizes
NUMPTRNODES = 30000, // 26000 on PS2
NUMENTRYINFOS = 5400, // 3200 on PS2
NUMPEDS = 140, // 90 on PS2
NUMVEHICLES = 110, // 70 on PS2
NUMBUILDINGS = 5500, // 4915 on PS2
NUMTREADABLES = 1214,
NUMOBJECTS = 450,
NUMDUMMIES = 2802, // 2368 on PS2
NUMAUDIOSCRIPTOBJECTS = 256,
NUMCUTSCENEOBJECTS = 50,
NUMANIMBLOCKS = 2,
NUMANIMATIONS = 250,
NUMTEMPOBJECTS = 30,
// Path data
NUM_PATHNODES = 4930,
NUM_CARPATHLINKS = 2076,
NUM_MAPOBJECTS = 1250,
NUM_PATHCONNECTIONS = 10260,
// Link list lengths
NUMALPHALIST = 20,
NUMALPHAENTITYLIST = 150,
NUMCOLCACHELINKS = 200,
NUMREFERENCES = 800,
// Zones
NUMAUDIOZONES = 36,
NUMZONES = 50,
NUMMAPZONES = 25,
// Cull zones
NUMCULLZONES = 512,
NUMATTRIBZONES = 288,
NUMZONEINDICES = 55000,
PATHNODESIZE = 4500,
NUMWEATHERS = 4,
NUMHOURS = 24,
NUMEXTRADIRECTIONALS = 4,
NUMANTENNAS = 8,
NUMCORONAS = 56,
NUMPOINTLIGHTS = 32,
NUM3DMARKERS = 32,
NUMBRIGHTLIGHTS = 32,
NUMSHINYTEXTS = 32,
NUMMONEYMESSAGES = 16,
NUMPICKUPMESSAGES = 16,
NUMBULLETTRACES = 16,
NUMMBLURSTREAKS = 4,
NUMSKIDMARKS = 32,
NUMONSCREENTIMERENTRIES = 1,
NUMRADARBLIPS = 32,
NUMGENERALPICKUPS = 320,
NUMSCRIPTEDPICKUPS = 16,
NUMPICKUPS = NUMGENERALPICKUPS + NUMSCRIPTEDPICKUPS,
NUMCOLLECTEDPICKUPS = 20,
NUMPACMANPICKUPS = 256,
NUMEVENTS = 64,
NUM_CARGENS = 160,
NUM_PATH_NODES_IN_AUTOPILOT = 8,
NUM_ACCIDENTS = 20,
NUM_FIRES = 40,
NUM_GARAGES = 32,
NUM_PROJECTILES = 32,
NUM_GLASSPANES = 45,
NUM_GLASSENTITIES = 32,
NUM_WATERCANNONS = 3,
NUM_PARTICLES = 1000,
NUM_STOREDSHADOWS = 48,
NUM_POLYBUNCHES = 300,
NUM_STATICSHADOWS = 64,
NUM_PERMAMENTSHADOWS = 48,
NUMPEDROUTES = 200,
NUMPHONES = 50,
NUMPEDGROUPS = 31,
NUMMODELSPERPEDGROUP = 8,
NUMSHOTINFOS = 100,
NUMROADBLOCKS = 600,
NUMVISIBLEENTITIES = 2000,
NUMINVISIBLEENTITIES = 150,
NUM_AUDIOENTITY_EVENTS = 4,
NUM_PED_COMMENTS_SLOTS = 20,
NUM_SOUND_QUEUES = 2,
NUM_AUDIOENTITIES = 200,
NUM_SCRIPT_MAX_ENTITIES = 40,
NUM_GARAGE_STORED_CARS = 6,
NUM_CRANES = 8,
NUM_EXPLOSIONS = 48,
};

138
src/core/limits_ps2.h Normal file
View file

@ -0,0 +1,138 @@
#pragma once
enum Config {
NUMPLAYERS = 4,
NUMCDIMAGES = 12, // gta3.img duplicates
MAX_CDIMAGES = 8, // additional cdimages
MAX_CDCHANNELS = 5,
MODELINFOSIZE = 3150,
TXDSTORESIZE = 850,
EXTRADIRSIZE = 128,
CUTSCENEDIRSIZE = 512,
SIMPLEMODELSIZE = 2910,
MLOMODELSIZE = 1,
MLOINSTANCESIZE = 1,
TIMEMODELSIZE = 30,
CLUMPMODELSIZE = 5,
PEDMODELSIZE = 90,
VEHICLEMODELSIZE = 70,
XTRACOMPSMODELSIZE = 2,
TWODFXSIZE = 1210,
MAXVEHICLESLOADED = 50,
NUMOBJECTINFO = 168, // object.dat
// Pool sizes
NUMPTRNODES = 26000,
NUMENTRYINFOS = 3200,
NUMPEDS = 90,
NUMVEHICLES = 70,
NUMBUILDINGS = 4915,
NUMTREADABLES = 1214,
NUMOBJECTS = 450,
NUMDUMMIES = 2368,
NUMAUDIOSCRIPTOBJECTS = 256,
NUMCUTSCENEOBJECTS = 50,
NUMANIMBLOCKS = 2,
NUMANIMATIONS = 250,
NUMTEMPOBJECTS = 30,
// Path data
NUM_PATHNODES = 4930,
NUM_CARPATHLINKS = 2076,
NUM_MAPOBJECTS = 1250,
NUM_PATHCONNECTIONS = 10260,
// Link list lengths
NUMALPHALIST = 20,
NUMALPHAENTITYLIST = 150,
NUMCOLCACHELINKS = 200,
NUMREFERENCES = 800,
// Zones
NUMAUDIOZONES = 36,
NUMZONES = 50,
NUMMAPZONES = 25,
// Cull zones
NUMCULLZONES = 512,
NUMATTRIBZONES = 288,
NUMZONEINDICES = 55000,
PATHNODESIZE = 4500,
NUMWEATHERS = 4,
NUMHOURS = 24,
NUMEXTRADIRECTIONALS = 4,
NUMANTENNAS = 8,
NUMCORONAS = 56,
NUMPOINTLIGHTS = 32,
NUM3DMARKERS = 32,
NUMBRIGHTLIGHTS = 32,
NUMSHINYTEXTS = 32,
NUMMONEYMESSAGES = 16,
NUMPICKUPMESSAGES = 16,
NUMBULLETTRACES = 16,
NUMMBLURSTREAKS = 4,
NUMSKIDMARKS = 32,
NUMONSCREENTIMERENTRIES = 1,
NUMRADARBLIPS = 32,
NUMGENERALPICKUPS = 320,
NUMSCRIPTEDPICKUPS = 16,
NUMPICKUPS = NUMGENERALPICKUPS + NUMSCRIPTEDPICKUPS,
NUMCOLLECTEDPICKUPS = 20,
NUMPACMANPICKUPS = 256,
NUMEVENTS = 64,
NUM_CARGENS = 160,
NUM_PATH_NODES_IN_AUTOPILOT = 8,
NUM_ACCIDENTS = 20,
NUM_FIRES = 40,
NUM_GARAGES = 32,
NUM_PROJECTILES = 32,
NUM_GLASSPANES = 45,
NUM_GLASSENTITIES = 32,
NUM_WATERCANNONS = 3,
NUM_PARTICLES = 1000,
NUM_STOREDSHADOWS = 48,
NUM_POLYBUNCHES = 300,
NUM_STATICSHADOWS = 64,
NUM_PERMAMENTSHADOWS = 48,
NUMPEDROUTES = 200,
NUMPHONES = 50,
NUMPEDGROUPS = 31,
NUMMODELSPERPEDGROUP = 8,
NUMSHOTINFOS = 100,
NUMROADBLOCKS = 600,
NUMVISIBLEENTITIES = 2000,
NUMINVISIBLEENTITIES = 150,
NUM_AUDIOENTITY_EVENTS = 4,
NUM_PED_COMMENTS_SLOTS = 20,
NUM_SOUND_QUEUES = 2,
NUM_AUDIOENTITIES = 200,
NUM_SCRIPT_MAX_ENTITIES = 40,
NUM_GARAGE_STORED_CARS = 6,
NUM_CRANES = 8,
NUM_EXPLOSIONS = 48,
};

View file

@ -17,9 +17,6 @@
#include "debugmenu.h" #include "debugmenu.h"
#define MAX_PARTICLES_ON_SCREEN (1000)
//(5) //(5)
#define MAX_SMOKE_FILES ARRAY_SIZE(SmokeFiles) #define MAX_SMOKE_FILES ARRAY_SIZE(SmokeFiles)
@ -149,7 +146,7 @@ const char CarsplashFiles[][12+1] =
"carsplash_04" "carsplash_04"
}; };
CParticle gParticleArray[MAX_PARTICLES_ON_SCREEN]; CParticle gParticleArray[NUM_PARTICLES];
RwTexture *gpSmokeTex[MAX_SMOKE_FILES]; RwTexture *gpSmokeTex[MAX_SMOKE_FILES];
RwTexture *gpSmoke2Tex[MAX_SMOKE2_FILES]; RwTexture *gpSmoke2Tex[MAX_SMOKE2_FILES];
@ -243,9 +240,9 @@ void CParticle::ReloadConfig()
m_pUnusedListHead = gParticleArray; m_pUnusedListHead = gParticleArray;
for ( int32 i = 0; i < MAX_PARTICLES_ON_SCREEN; i++ ) for ( int32 i = 0; i < NUM_PARTICLES; i++ )
{ {
if ( i == MAX_PARTICLES_ON_SCREEN - 1 ) if ( i == NUM_PARTICLES - 1 )
gParticleArray[i].m_pNext = nil; gParticleArray[i].m_pNext = nil;
else else
gParticleArray[i].m_pNext = &gParticleArray[i + 1]; gParticleArray[i].m_pNext = &gParticleArray[i + 1];

View file

@ -44,11 +44,11 @@ RwTexture *gpPostShadowTex;
RwTexture *gpGoalTex; RwTexture *gpGoalTex;
int16 CShadows::ShadowsStoredToBeRendered; int16 CShadows::ShadowsStoredToBeRendered;
CStoredShadow CShadows::asShadowsStored [MAX_STOREDSHADOWS]; CStoredShadow CShadows::asShadowsStored [NUM_STOREDSHADOWS];
CPolyBunch CShadows::aPolyBunches [MAX_POLYBUNCHES]; CPolyBunch CShadows::aPolyBunches [NUM_POLYBUNCHES];
CStaticShadow CShadows::aStaticShadows [MAX_STATICSHADOWS]; CStaticShadow CShadows::aStaticShadows [NUM_STATICSHADOWS];
CPolyBunch *CShadows::pEmptyBunchList; CPolyBunch *CShadows::pEmptyBunchList;
CPermanentShadow CShadows::aPermanentShadows[MAX_PERMAMENTSHADOWS]; CPermanentShadow CShadows::aPermanentShadows[NUM_PERMAMENTSHADOWS];
void void
@ -125,7 +125,7 @@ CShadows::Init(void)
ShadowIndexList[23] = 8; ShadowIndexList[23] = 8;
for ( int32 i = 0; i < MAX_STATICSHADOWS; i++ ) for ( int32 i = 0; i < NUM_STATICSHADOWS; i++ )
{ {
aStaticShadows[i].m_nId = 0; aStaticShadows[i].m_nId = 0;
aStaticShadows[i].m_pPolyBunch = NULL; aStaticShadows[i].m_pPolyBunch = NULL;
@ -133,15 +133,15 @@ CShadows::Init(void)
pEmptyBunchList = &aPolyBunches[0]; pEmptyBunchList = &aPolyBunches[0];
for ( int32 i = 0; i < MAX_POLYBUNCHES; i++ ) for ( int32 i = 0; i < NUM_POLYBUNCHES; i++ )
{ {
if ( i == MAX_POLYBUNCHES - 1 ) if ( i == NUM_POLYBUNCHES - 1 )
aPolyBunches[i].m_pNext = NULL; aPolyBunches[i].m_pNext = NULL;
else else
aPolyBunches[i].m_pNext = &aPolyBunches[i + 1]; aPolyBunches[i].m_pNext = &aPolyBunches[i + 1];
} }
for ( int32 i = 0; i < MAX_PERMAMENTSHADOWS; i++ ) for ( int32 i = 0; i < NUM_PERMAMENTSHADOWS; i++ )
{ {
aPermanentShadows[i].m_nType = SHADOWTYPE_NONE; aPermanentShadows[i].m_nType = SHADOWTYPE_NONE;
} }
@ -193,10 +193,10 @@ CShadows::AddPermanentShadow(uint8 ShadowType, RwTexture *pTexture, CVector *pPo
// find free slot // find free slot
int32 nSlot = 0; int32 nSlot = 0;
while ( nSlot < MAX_PERMAMENTSHADOWS && aPermanentShadows[nSlot].m_nType != SHADOWTYPE_NONE ) while ( nSlot < NUM_PERMAMENTSHADOWS && aPermanentShadows[nSlot].m_nType != SHADOWTYPE_NONE )
nSlot++; nSlot++;
if ( nSlot < MAX_PERMAMENTSHADOWS ) if ( nSlot < NUM_PERMAMENTSHADOWS )
{ {
aPermanentShadows[nSlot].m_nType = ShadowType; aPermanentShadows[nSlot].m_nType = ShadowType;
aPermanentShadows[nSlot].m_pTexture = pTexture; aPermanentShadows[nSlot].m_pTexture = pTexture;
@ -244,10 +244,10 @@ CShadows::StoreStaticShadow(uint32 nID, uint8 ShadowType, RwTexture *pTexture, C
int32 nSlot; int32 nSlot;
nSlot = 0; nSlot = 0;
while ( nSlot < MAX_STATICSHADOWS && !(nID == aStaticShadows[nSlot].m_nId && aStaticShadows[nSlot].m_pPolyBunch != NULL) ) while ( nSlot < NUM_STATICSHADOWS && !(nID == aStaticShadows[nSlot].m_nId && aStaticShadows[nSlot].m_pPolyBunch != NULL) )
nSlot++; nSlot++;
if ( nSlot < MAX_STATICSHADOWS ) if ( nSlot < NUM_STATICSHADOWS )
{ {
if ( Abs(pPosn->x - aStaticShadows[nSlot].m_vecPosn.x) < fUpDistance if ( Abs(pPosn->x - aStaticShadows[nSlot].m_vecPosn.x) < fUpDistance
&& Abs(pPosn->y - aStaticShadows[nSlot].m_vecPosn.y) < fUpDistance ) && Abs(pPosn->y - aStaticShadows[nSlot].m_vecPosn.y) < fUpDistance )
@ -313,10 +313,10 @@ CShadows::StoreStaticShadow(uint32 nID, uint8 ShadowType, RwTexture *pTexture, C
else else
{ {
nSlot = 0; nSlot = 0;
while ( nSlot < MAX_STATICSHADOWS && aStaticShadows[nSlot].m_pPolyBunch != NULL ) while ( nSlot < NUM_STATICSHADOWS && aStaticShadows[nSlot].m_pPolyBunch != NULL )
nSlot++; nSlot++;
if ( nSlot != MAX_STATICSHADOWS ) if ( nSlot != NUM_STATICSHADOWS )
{ {
aStaticShadows[nSlot].m_nId = nID; aStaticShadows[nSlot].m_nId = nID;
aStaticShadows[nSlot].m_nType = ShadowType; aStaticShadows[nSlot].m_nType = ShadowType;
@ -429,7 +429,7 @@ CShadows::StoreShadowToBeRendered(uint8 ShadowType, RwTexture *pTexture, CVector
ASSERT(pTexture != NULL); ASSERT(pTexture != NULL);
ASSERT(pPosn != NULL); ASSERT(pPosn != NULL);
if ( ShadowsStoredToBeRendered < MAX_STOREDSHADOWS ) if ( ShadowsStoredToBeRendered < NUM_STOREDSHADOWS )
{ {
asShadowsStored[ShadowsStoredToBeRendered].m_ShadowType = ShadowType; asShadowsStored[ShadowsStoredToBeRendered].m_ShadowType = ShadowType;
asShadowsStored[ShadowsStoredToBeRendered].m_pTexture = pTexture; asShadowsStored[ShadowsStoredToBeRendered].m_pTexture = pTexture;
@ -804,10 +804,10 @@ CShadows::RenderStaticShadows(void)
SetAlphaTest(0); SetAlphaTest(0);
for ( int32 i = 0; i < MAX_STATICSHADOWS; i++ ) for ( int32 i = 0; i < NUM_STATICSHADOWS; i++ )
aStaticShadows[i].m_bRendered = false; aStaticShadows[i].m_bRendered = false;
for ( int32 i = 0; i < MAX_STATICSHADOWS; i++ ) for ( int32 i = 0; i < NUM_STATICSHADOWS; i++ )
{ {
if ( aStaticShadows[i].m_pPolyBunch && !aStaticShadows[i].m_bRendered ) if ( aStaticShadows[i].m_pPolyBunch && !aStaticShadows[i].m_bRendered )
{ {
@ -815,7 +815,7 @@ CShadows::RenderStaticShadows(void)
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(aStaticShadows[i].m_pTexture)); RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(aStaticShadows[i].m_pTexture));
// optimization trick, render all shadows with same renderstate and texture // optimization trick, render all shadows with same renderstate and texture
for ( int32 j = i; j < MAX_STATICSHADOWS; j++ ) for ( int32 j = i; j < NUM_STATICSHADOWS; j++ )
{ {
if ( aStaticShadows[j].m_pPolyBunch != NULL if ( aStaticShadows[j].m_pPolyBunch != NULL
&& aStaticShadows[i].m_nType == aStaticShadows[j].m_nType && aStaticShadows[i].m_nType == aStaticShadows[j].m_nType
@ -1498,7 +1498,7 @@ CShadows::CastShadowEntity(CEntity *pEntity, float fStartX, float fStartY, floa
void void
CShadows::UpdateStaticShadows(void) CShadows::UpdateStaticShadows(void)
{ {
for ( int32 i = 0; i < MAX_STATICSHADOWS; i++ ) for ( int32 i = 0; i < NUM_STATICSHADOWS; i++ )
{ {
if ( aStaticShadows[i].m_pPolyBunch != NULL && !aStaticShadows[i].m_bJustCreated if ( aStaticShadows[i].m_pPolyBunch != NULL && !aStaticShadows[i].m_bJustCreated
&& (!aStaticShadows[i].m_bTemp || CTimer::GetTimeInMilliseconds() > aStaticShadows[i].m_nTimeCreated + 5000) ) && (!aStaticShadows[i].m_bTemp || CTimer::GetTimeInMilliseconds() > aStaticShadows[i].m_nTimeCreated + 5000) )
@ -1513,7 +1513,7 @@ CShadows::UpdateStaticShadows(void)
void void
CShadows::UpdatePermanentShadows(void) CShadows::UpdatePermanentShadows(void)
{ {
for ( int32 i = 0; i < MAX_PERMAMENTSHADOWS; i++ ) for ( int32 i = 0; i < NUM_PERMAMENTSHADOWS; i++ )
{ {
if ( aPermanentShadows[i].m_nType != SHADOWTYPE_NONE ) if ( aPermanentShadows[i].m_nType != SHADOWTYPE_NONE )
{ {
@ -1768,7 +1768,7 @@ CShadows::RenderExtraPlayerShadows(void)
void void
CShadows::TidyUpShadows(void) CShadows::TidyUpShadows(void)
{ {
for ( int32 i = 0; i < MAX_PERMAMENTSHADOWS; i++ ) for ( int32 i = 0; i < NUM_PERMAMENTSHADOWS; i++ )
aPermanentShadows[i].m_nType = SHADOWTYPE_NONE; aPermanentShadows[i].m_nType = SHADOWTYPE_NONE;
} }

View file

@ -1,11 +1,5 @@
#pragma once #pragma once
#define MAX_STOREDSHADOWS 48
#define MAX_POLYBUNCHES 300
#define MAX_STATICSHADOWS 64
#define MAX_PERMAMENTSHADOWS 48
class CEntity; class CEntity;
enum eShadowType enum eShadowType
@ -129,11 +123,11 @@ class CShadows
{ {
public: public:
static int16 ShadowsStoredToBeRendered; static int16 ShadowsStoredToBeRendered;
static CStoredShadow asShadowsStored [MAX_STOREDSHADOWS]; static CStoredShadow asShadowsStored [NUM_STOREDSHADOWS];
static CPolyBunch aPolyBunches [MAX_POLYBUNCHES]; static CPolyBunch aPolyBunches [NUM_POLYBUNCHES];
static CStaticShadow aStaticShadows [MAX_STATICSHADOWS]; static CStaticShadow aStaticShadows [NUM_STATICSHADOWS];
static CPolyBunch *pEmptyBunchList; static CPolyBunch *pEmptyBunchList;
static CPermanentShadow aPermanentShadows[MAX_PERMAMENTSHADOWS]; static CPermanentShadow aPermanentShadows[NUM_PERMAMENTSHADOWS];
static void Init (void); static void Init (void);
static void Shutdown (void); static void Shutdown (void);

View file

@ -154,12 +154,7 @@ CVisibilityPlugins::Initialise(void)
m_alphaList.Init(NUMALPHALIST); m_alphaList.Init(NUMALPHALIST);
m_alphaList.head.item.sort = 0.0f; m_alphaList.head.item.sort = 0.0f;
m_alphaList.tail.item.sort = 100000000.0f; m_alphaList.tail.item.sort = 100000000.0f;
#ifdef ASPECT_RATIO_SCALE
// default 150 is not enough for bigger FOVs
m_alphaEntityList.Init(NUMALPHAENTITYLIST * 3);
#else
m_alphaEntityList.Init(NUMALPHAENTITYLIST); m_alphaEntityList.Init(NUMALPHAENTITYLIST);
#endif // ASPECT_RATIO_SCALE
m_alphaEntityList.head.item.sort = 0.0f; m_alphaEntityList.head.item.sort = 0.0f;
m_alphaEntityList.tail.item.sort = 100000000.0f; m_alphaEntityList.tail.item.sort = 100000000.0f;