mirror of
https://github.com/halpz/re3.git
synced 2025-07-13 11:48:12 +00:00
merge attempt
This commit is contained in:
@ -47,7 +47,7 @@ CEntity *CAnimViewer::pTarget = nil;
|
||||
void
|
||||
CAnimViewer::Render(void) {
|
||||
if (pTarget) {
|
||||
// pTarget->GetPosition() = CVector(0.0f, 0.0f, 0.0f);
|
||||
// pTarget->GetPosition() = CVector(0.0f, 0.0f, 0.0f); // Only on Mobile
|
||||
if (pTarget) {
|
||||
#ifdef FIX_BUGS
|
||||
if(pTarget->IsPed())
|
||||
@ -113,7 +113,7 @@ CAnimViewer::Initialise(void) {
|
||||
CTimeCycle::Initialise();
|
||||
CCarCtrl::Init();
|
||||
CPlayerPed *player = new CPlayerPed();
|
||||
player->SetPosition(0.0f, 0.0f, 0.0f);
|
||||
player->SetPosition(0.0f, 0.0f, 0.0f); // This is 1000.f for all axes on Xbox, but 0.f on mobile?
|
||||
CWorld::Players[0].m_pPed = player;
|
||||
CDraw::SetFOV(120.0f);
|
||||
CDraw::ms_fLODDistance = 500.0f;
|
||||
|
@ -2746,7 +2746,7 @@ CCam::Process_1rstPersonPedOnPC(const CVector&, float TargetOrientation, float,
|
||||
Source = HeadPos;
|
||||
|
||||
// unused:
|
||||
// ((CPed*)CamTargetEntity)->m_pedIK.GetComponentPosition(&MidPos, PED_MID);
|
||||
// ((CPed*)CamTargetEntity)->m_pedIK.GetComponentPosition(MidPos, PED_MID);
|
||||
// Source - MidPos;
|
||||
|
||||
// Look around
|
||||
@ -5053,9 +5053,9 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation,
|
||||
float stickX = -(pad->GetCarGunLeftRight());
|
||||
float stickY = pad->GetCarGunUpDown();
|
||||
|
||||
// In SA this checks for m_bUseMouse3rdPerson so num2/num8 do not move camera when Keyboard & Mouse controls are used.
|
||||
if (CCamera::m_bUseMouse3rdPerson)
|
||||
stickY = 0.0f;
|
||||
// In SA this is for not let num2/num8 move camera when Keyboard & Mouse controls are used.
|
||||
// if (CCamera::m_bUseMouse3rdPerson)
|
||||
// stickY = 0.0f;
|
||||
|
||||
float xMovement = Abs(stickX) * (FOV / 80.0f * 5.f / 70.f) * stickX * 0.007f * 0.007f;
|
||||
float yMovement = Abs(stickY) * (FOV / 80.0f * 3.f / 70.f) * stickY * 0.007f * 0.007f;
|
||||
|
@ -243,8 +243,15 @@ CdStreamRead(int32 channel, void *buffer, uint32 offset, uint32 size)
|
||||
else
|
||||
return STREAM_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
#ifdef BIG_IMG
|
||||
LARGE_INTEGER liDistanceToMove;
|
||||
liDistanceToMove.QuadPart = _GET_OFFSET(offset);
|
||||
liDistanceToMove.QuadPart *= CDSTREAM_SECTOR_SIZE;
|
||||
SetFilePointerEx(hImage, liDistanceToMove, nil, FILE_BEGIN);
|
||||
#else
|
||||
SetFilePointer(hImage, _GET_OFFSET(offset) * CDSTREAM_SECTOR_SIZE, nil, FILE_BEGIN);
|
||||
#endif
|
||||
|
||||
DWORD NumberOfBytesRead;
|
||||
|
||||
|
@ -429,7 +429,7 @@ void *CdStreamThread(void *param)
|
||||
ASSERT(pChannel->hFile >= 0);
|
||||
ASSERT(pChannel->pBuffer != nil );
|
||||
|
||||
lseek(pChannel->hFile, pChannel->nSectorOffset * CDSTREAM_SECTOR_SIZE, SEEK_SET);
|
||||
lseek(pChannel->hFile, (size_t)pChannel->nSectorOffset * (size_t)CDSTREAM_SECTOR_SIZE, SEEK_SET);
|
||||
if (read(pChannel->hFile, pChannel->pBuffer, pChannel->nSectorsToRead * CDSTREAM_SECTOR_SIZE) == -1) {
|
||||
// pChannel->nSectorsToRead == 0 at this point means we wanted to flush channel
|
||||
// STREAM_WAITING is a little hack to make CStreaming not process this data
|
||||
|
@ -2348,8 +2348,252 @@ int32 CControllerConfigManager::GetNumOfSettingsForAction(e_ControllerAction act
|
||||
return num;
|
||||
}
|
||||
|
||||
#ifdef BIND_VEHICLE_FIREWEAPON
|
||||
#define VFB(b) b,
|
||||
#else
|
||||
#define VFB(b)
|
||||
#endif
|
||||
|
||||
#define CONTROLLER_BUTTONS(T, O, X, Q, L1, L2, L3, R1, R2, R3, SELECT) \
|
||||
{{ \
|
||||
O, /* PED_FIREWEAPON */ \
|
||||
R2, /* PED_CYCLE_WEAPON_RIGHT */ \
|
||||
L2, /* PED_CYCLE_WEAPON_LEFT */ \
|
||||
nil, /* GO_FORWARD */ \
|
||||
nil, /* GO_BACK */ \
|
||||
nil, /* GO_LEFT */ \
|
||||
nil, /* GO_RIGHT */ \
|
||||
Q, /* PED_SNIPER_ZOOM_IN */ \
|
||||
X, /* PED_SNIPER_ZOOM_OUT */ \
|
||||
T, /* VEHICLE_ENTER_EXIT */ \
|
||||
SELECT, /* CAMERA_CHANGE_VIEW_ALL_SITUATIONS */ \
|
||||
Q, /* PED_JUMPING */ \
|
||||
X, /* PED_SPRINT */ \
|
||||
R3, /* PED_LOOKBEHIND */ \
|
||||
VFB(O) /* VEHICLE_FIREWEAPON */ \
|
||||
X, /* VEHICLE_ACCELERATE */ \
|
||||
Q, /* VEHICLE_BRAKE */ \
|
||||
L1, /* VEHICLE_CHANGE_RADIO_STATION */ \
|
||||
L3, /* VEHICLE_HORN */ \
|
||||
R3, /* TOGGLE_SUBMISSIONS */ \
|
||||
R1, /* VEHICLE_HANDBRAKE */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_LEFT */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_RIGHT */ \
|
||||
L2, /* VEHICLE_LOOKLEFT */ \
|
||||
R2, /* VEHICLE_LOOKRIGHT */ \
|
||||
nil, /* VEHICLE_LOOKBEHIND */ \
|
||||
nil, /* VEHICLE_TURRETLEFT */ \
|
||||
nil, /* VEHICLE_TURRETRIGHT */ \
|
||||
nil, /* VEHICLE_TURRETUP */ \
|
||||
nil, /* VEHICLE_TURRETDOWN */ \
|
||||
L2, /* PED_CYCLE_TARGET_LEFT */ \
|
||||
R2, /* PED_CYCLE_TARGET_RIGHT */ \
|
||||
L1, /* PED_CENTER_CAMERA_BEHIND_PLAYER */ \
|
||||
R1, /* PED_LOCK_TARGET */ \
|
||||
nil, /* NETWORK_TALK */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_UP */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_DOWN */ \
|
||||
nil, /* _CONTROLLERACTION_36 */ \
|
||||
nil, /* TOGGLE_DPAD */ \
|
||||
nil, /* SWITCH_DEBUG_CAM_ON */ \
|
||||
nil, /* TAKE_SCREEN_SHOT */ \
|
||||
nil, /* SHOW_MOUSE_POINTER_TOGGLE */ \
|
||||
}, \
|
||||
{ \
|
||||
O, /* PED_FIREWEAPON */ \
|
||||
R2, /* PED_CYCLE_WEAPON_RIGHT */ \
|
||||
L2, /* PED_CYCLE_WEAPON_LEFT */ \
|
||||
nil, /* GO_FORWARD */ \
|
||||
nil, /* GO_BACK */ \
|
||||
nil, /* GO_LEFT */ \
|
||||
nil, /* GO_RIGHT */ \
|
||||
Q, /* PED_SNIPER_ZOOM_IN */ \
|
||||
X, /* PED_SNIPER_ZOOM_OUT */ \
|
||||
T, /* VEHICLE_ENTER_EXIT */ \
|
||||
SELECT, /* CAMERA_CHANGE_VIEW_ALL_SITUATIONS */ \
|
||||
Q, /* PED_JUMPING */ \
|
||||
X, /* PED_SPRINT */ \
|
||||
R3, /* PED_LOOKBEHIND */ \
|
||||
VFB(O) /* VEHICLE_FIREWEAPON */ \
|
||||
X, /* VEHICLE_ACCELERATE */ \
|
||||
Q, /* VEHICLE_BRAKE */ \
|
||||
SELECT, /* VEHICLE_CHANGE_RADIO_STATION */ \
|
||||
L1, /* VEHICLE_HORN */ \
|
||||
R3, /* TOGGLE_SUBMISSIONS */ \
|
||||
R1, /* VEHICLE_HANDBRAKE */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_LEFT */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_RIGHT */ \
|
||||
L2, /* VEHICLE_LOOKLEFT */ \
|
||||
R2, /* VEHICLE_LOOKRIGHT */ \
|
||||
nil, /* VEHICLE_LOOKBEHIND */ \
|
||||
nil, /* VEHICLE_TURRETLEFT */ \
|
||||
nil, /* VEHICLE_TURRETRIGHT */ \
|
||||
nil, /* VEHICLE_TURRETUP */ \
|
||||
nil, /* VEHICLE_TURRETDOWN */ \
|
||||
L2, /* PED_CYCLE_TARGET_LEFT */ \
|
||||
R2, /* PED_CYCLE_TARGET_RIGHT */ \
|
||||
L1, /* PED_CENTER_CAMERA_BEHIND_PLAYER */ \
|
||||
R1, /* PED_LOCK_TARGET */ \
|
||||
nil, /* NETWORK_TALK */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_UP */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_DOWN */ \
|
||||
nil, /* _CONTROLLERACTION_36 */ \
|
||||
nil, /* TOGGLE_DPAD */ \
|
||||
nil, /* SWITCH_DEBUG_CAM_ON */ \
|
||||
nil, /* TAKE_SCREEN_SHOT */ \
|
||||
nil, /* SHOW_MOUSE_POINTER_TOGGLE */ \
|
||||
}, \
|
||||
{ \
|
||||
X, /* PED_FIREWEAPON */ \
|
||||
R2, /* PED_CYCLE_WEAPON_RIGHT */ \
|
||||
L2, /* PED_CYCLE_WEAPON_LEFT */ \
|
||||
nil, /* GO_FORWARD */ \
|
||||
nil, /* GO_BACK */ \
|
||||
nil, /* GO_LEFT */ \
|
||||
nil, /* GO_RIGHT */ \
|
||||
T, /* PED_SNIPER_ZOOM_IN */ \
|
||||
Q, /* PED_SNIPER_ZOOM_OUT */ \
|
||||
L1, /* VEHICLE_ENTER_EXIT */ \
|
||||
SELECT, /* CAMERA_CHANGE_VIEW_ALL_SITUATIONS */ \
|
||||
Q, /* PED_JUMPING */ \
|
||||
O, /* PED_SPRINT */ \
|
||||
R3, /* PED_LOOKBEHIND */ \
|
||||
VFB(O) /* VEHICLE_FIREWEAPON */ \
|
||||
X, /* VEHICLE_ACCELERATE */ \
|
||||
Q, /* VEHICLE_BRAKE */ \
|
||||
L3, /* VEHICLE_CHANGE_RADIO_STATION */ \
|
||||
R1, /* VEHICLE_HORN */ \
|
||||
R3, /* TOGGLE_SUBMISSIONS */ \
|
||||
T, /* VEHICLE_HANDBRAKE */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_LEFT */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_RIGHT */ \
|
||||
L2, /* VEHICLE_LOOKLEFT */ \
|
||||
R2, /* VEHICLE_LOOKRIGHT */ \
|
||||
nil, /* VEHICLE_LOOKBEHIND */ \
|
||||
nil, /* VEHICLE_TURRETLEFT */ \
|
||||
nil, /* VEHICLE_TURRETRIGHT */ \
|
||||
nil, /* VEHICLE_TURRETUP */ \
|
||||
nil, /* VEHICLE_TURRETDOWN */ \
|
||||
L2, /* PED_CYCLE_TARGET_LEFT */ \
|
||||
R2, /* PED_CYCLE_TARGET_RIGHT */ \
|
||||
T, /* PED_CENTER_CAMERA_BEHIND_PLAYER */ \
|
||||
R1, /* PED_LOCK_TARGET */ \
|
||||
nil, /* NETWORK_TALK */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_UP */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_DOWN */ \
|
||||
nil, /* _CONTROLLERACTION_36 */ \
|
||||
nil, /* TOGGLE_DPAD */ \
|
||||
nil, /* SWITCH_DEBUG_CAM_ON */ \
|
||||
nil, /* TAKE_SCREEN_SHOT */ \
|
||||
nil, /* SHOW_MOUSE_POINTER_TOGGLE */ \
|
||||
}, \
|
||||
{ \
|
||||
R1, /* PED_FIREWEAPON */ \
|
||||
R2, /* PED_CYCLE_WEAPON_RIGHT */ \
|
||||
L2, /* PED_CYCLE_WEAPON_LEFT */ \
|
||||
nil, /* GO_FORWARD */ \
|
||||
nil, /* GO_BACK */ \
|
||||
nil, /* GO_LEFT */ \
|
||||
nil, /* GO_RIGHT */ \
|
||||
Q, /* PED_SNIPER_ZOOM_IN */ \
|
||||
X, /* PED_SNIPER_ZOOM_OUT */ \
|
||||
T, /* VEHICLE_ENTER_EXIT */ \
|
||||
SELECT, /* CAMERA_CHANGE_VIEW_ALL_SITUATIONS */ \
|
||||
Q, /* PED_JUMPING */ \
|
||||
X, /* PED_SPRINT */ \
|
||||
R3, /* PED_LOOKBEHIND */ \
|
||||
VFB(R1) /* VEHICLE_FIREWEAPON */ \
|
||||
nil, /* VEHICLE_ACCELERATE */ \
|
||||
nil, /* VEHICLE_BRAKE */ \
|
||||
O, /* VEHICLE_CHANGE_RADIO_STATION */ \
|
||||
L3, /* VEHICLE_HORN */ \
|
||||
Q, /* TOGGLE_SUBMISSIONS */ \
|
||||
L1, /* VEHICLE_HANDBRAKE */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_LEFT */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_RIGHT */ \
|
||||
L2, /* VEHICLE_LOOKLEFT */ \
|
||||
R2, /* VEHICLE_LOOKRIGHT */ \
|
||||
nil, /* VEHICLE_LOOKBEHIND */ \
|
||||
nil, /* VEHICLE_TURRETLEFT */ \
|
||||
nil, /* VEHICLE_TURRETRIGHT */ \
|
||||
nil, /* VEHICLE_TURRETUP */ \
|
||||
nil, /* VEHICLE_TURRETDOWN */ \
|
||||
L2, /* PED_CYCLE_TARGET_LEFT */ \
|
||||
R2, /* PED_CYCLE_TARGET_RIGHT */ \
|
||||
O, /* PED_CENTER_CAMERA_BEHIND_PLAYER */ \
|
||||
L1, /* PED_LOCK_TARGET */ \
|
||||
nil, /* NETWORK_TALK */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_UP */ \
|
||||
nil, /* PED_1RST_PERSON_LOOK_DOWN */ \
|
||||
nil, /* _CONTROLLERACTION_36 */ \
|
||||
nil, /* TOGGLE_DPAD */ \
|
||||
nil, /* SWITCH_DEBUG_CAM_ON */ \
|
||||
nil, /* TAKE_SCREEN_SHOT */ \
|
||||
nil, /* SHOW_MOUSE_POINTER_TOGGLE */ \
|
||||
}}
|
||||
|
||||
|
||||
const char *XboxButtons_noIcons[][MAX_CONTROLLERACTIONS] = CONTROLLER_BUTTONS("Y", "B", "A", "X", "LB", "LT", "LS", "RB", "RT", "RS", "BACK");
|
||||
|
||||
#ifdef BUTTON_ICONS
|
||||
const char *XboxButtons[][MAX_CONTROLLERACTIONS] = CONTROLLER_BUTTONS("~T~", "~O~", "~X~", "~Q~", "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "BACK");
|
||||
#endif
|
||||
|
||||
|
||||
#if 0 // set 1 for ps2 fonts
|
||||
#define PS2_TRIANGLE "\""
|
||||
#define PS2_CIRCLE "|"
|
||||
#define PS2_CROSS "/"
|
||||
#define PS2_SQUARE "^"
|
||||
#elif defined(BUTTON_ICONS)
|
||||
#define PS2_TRIANGLE "~T~"
|
||||
#define PS2_CIRCLE "~O~"
|
||||
#define PS2_CROSS "~X~"
|
||||
#define PS2_SQUARE "~Q~"
|
||||
#else
|
||||
#define PS2_TRIANGLE "TRIANGLE"
|
||||
#define PS2_CIRCLE "CIRCLE"
|
||||
#define PS2_CROSS "CROSS"
|
||||
#define PS2_SQUARE "SQUARE"
|
||||
#endif
|
||||
|
||||
const char *PlayStationButtons_noIcons[][MAX_CONTROLLERACTIONS] =
|
||||
CONTROLLER_BUTTONS(PS2_TRIANGLE, PS2_CIRCLE, PS2_CROSS, PS2_SQUARE, "L1", "L2", "L3", "R1", "R2", "R3", "SELECT");
|
||||
|
||||
#ifdef BUTTON_ICONS
|
||||
const char *PlayStationButtons[][MAX_CONTROLLERACTIONS] =
|
||||
CONTROLLER_BUTTONS(PS2_TRIANGLE, PS2_CIRCLE, PS2_CROSS, PS2_SQUARE, "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "SELECT");
|
||||
#endif
|
||||
|
||||
#undef PS2_TRIANGLE
|
||||
#undef PS2_CIRCLE
|
||||
#undef PS2_CROSS
|
||||
#undef PS2_SQUARE
|
||||
|
||||
#undef CONTROLLER_BUTTONS
|
||||
#undef VFB
|
||||
|
||||
void CControllerConfigManager::GetWideStringOfCommandKeys(uint16 action, wchar *text, uint16 leight)
|
||||
{
|
||||
#ifdef DETECT_PAD_INPUT_SWITCH
|
||||
if (CPad::GetPad(0)->IsAffectedByController) {
|
||||
wchar wstr[16];
|
||||
|
||||
// TODO: INI and/or menu setting for Xbox/PS switch
|
||||
#ifdef BUTTON_ICONS
|
||||
const char *(*Buttons)[MAX_CONTROLLERACTIONS] = CFont::ButtonsSlot != -1 ? XboxButtons : XboxButtons_noIcons;
|
||||
#else
|
||||
const char *(*Buttons)[MAX_CONTROLLERACTIONS] = XboxButtons_noIcons;
|
||||
#endif
|
||||
|
||||
assert(Buttons[CPad::GetPad(0)->Mode][action] != nil); // we cannot use these
|
||||
AsciiToUnicode(Buttons[CPad::GetPad(0)->Mode][action], wstr);
|
||||
|
||||
CMessages::WideStringCopy(text, wstr, leight);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
int32 nums = GetNumOfSettingsForAction((e_ControllerAction)action);
|
||||
|
||||
int32 sets = 0;
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include <ctype.h>
|
||||
#include "main.h"
|
||||
|
||||
#include "General.h"
|
||||
#include "Quaternion.h"
|
||||
#include "ModelInfo.h"
|
||||
#include "ModelIndices.h"
|
||||
@ -24,6 +25,7 @@
|
||||
#include "ZoneCull.h"
|
||||
#include "CdStream.h"
|
||||
#include "FileLoader.h"
|
||||
#include "MemoryHeap.h"
|
||||
#include "Streaming.h"
|
||||
#include "ColStore.h"
|
||||
#include "Occlusion.h"
|
||||
@ -74,11 +76,13 @@ CFileLoader::LoadLevel(const char *filename)
|
||||
if(strncmp(line, "IMAGEPATH", 9) == 0){
|
||||
RwImageSetPath(line + 10);
|
||||
}else if(strncmp(line, "TEXDICTION", 10) == 0){
|
||||
PUSH_MEMID(MEMID_TEXTURES);
|
||||
strcpy(txdname, line+11);
|
||||
LoadingScreenLoadingFile(txdname);
|
||||
RwTexDictionary *txd = LoadTexDictionary(txdname);
|
||||
AddTexDictionaries(savedTxd, txd);
|
||||
RwTexDictionaryDestroy(txd);
|
||||
POP_MEMID();
|
||||
}else if(strncmp(line, "COLFILE", 7) == 0){
|
||||
LoadingScreenLoadingFile(line+10);
|
||||
LoadCollisionFile(line+10, 0);
|
||||
@ -94,6 +98,7 @@ CFileLoader::LoadLevel(const char *filename)
|
||||
}else if(strncmp(line, "IPL", 3) == 0){
|
||||
if(!objectsLoaded){
|
||||
LoadingScreenLoadingFile("Collision");
|
||||
POP_MEMID();
|
||||
CObjectData::Initialise("DATA\\OBJECT.DAT");
|
||||
CStreaming::Init();
|
||||
CColStore::LoadAllCollision();
|
||||
@ -102,6 +107,7 @@ CFileLoader::LoadLevel(const char *filename)
|
||||
CModelInfo::GetModelInfo(i)->ConvertAnimFileIndex();
|
||||
objectsLoaded = true;
|
||||
}
|
||||
PUSH_MEMID(MEMID_WORLD);
|
||||
LoadingScreenLoadingFile(line + 4);
|
||||
LoadScene(line + 4);
|
||||
}else if(strncmp(line, "SPLASH", 6) == 0){
|
||||
@ -172,6 +178,8 @@ CFileLoader::LoadCollisionFile(const char *filename, uint8 colSlot)
|
||||
CBaseModelInfo *mi;
|
||||
ColHeader header;
|
||||
|
||||
PUSH_MEMID(MEMID_COLLISION);
|
||||
|
||||
debug("Loading collision file %s\n", filename);
|
||||
fd = CFileMgr::OpenFile(filename, "rb");
|
||||
assert(fd > 0);
|
||||
@ -197,6 +205,8 @@ CFileLoader::LoadCollisionFile(const char *filename, uint8 colSlot)
|
||||
}
|
||||
|
||||
CFileMgr::CloseFile(fd);
|
||||
|
||||
POP_MEMID();
|
||||
}
|
||||
|
||||
|
||||
@ -291,6 +301,7 @@ CFileLoader::LoadCollisionModel(uint8 *buf, CColModel &model, char *modelname)
|
||||
buf += 44;
|
||||
if(model.numSpheres > 0){
|
||||
model.spheres = (CColSphere*)RwMalloc(model.numSpheres*sizeof(CColSphere));
|
||||
REGISTER_MEMPTR(&model.spheres);
|
||||
for(i = 0; i < model.numSpheres; i++){
|
||||
model.spheres[i].Set(*(float*)buf, *(CVector*)(buf+4), buf[16], buf[17]);
|
||||
buf += 20;
|
||||
@ -315,6 +326,7 @@ CFileLoader::LoadCollisionModel(uint8 *buf, CColModel &model, char *modelname)
|
||||
buf += 4;
|
||||
if(model.numBoxes > 0){
|
||||
model.boxes = (CColBox*)RwMalloc(model.numBoxes*sizeof(CColBox));
|
||||
REGISTER_MEMPTR(&model.boxes);
|
||||
for(i = 0; i < model.numBoxes; i++){
|
||||
model.boxes[i].Set(*(CVector*)buf, *(CVector*)(buf+12), buf[24], buf[25]);
|
||||
buf += 28;
|
||||
@ -326,6 +338,7 @@ CFileLoader::LoadCollisionModel(uint8 *buf, CColModel &model, char *modelname)
|
||||
buf += 4;
|
||||
if(numVertices > 0){
|
||||
model.vertices = (CompressedVector*)RwMalloc(numVertices*sizeof(CompressedVector));
|
||||
REGISTER_MEMPTR(&model.vertices);
|
||||
for(i = 0; i < numVertices; i++){
|
||||
model.vertices[i].Set(*(float*)buf, *(float*)(buf+4), *(float*)(buf+8));
|
||||
#if 0
|
||||
@ -343,6 +356,7 @@ CFileLoader::LoadCollisionModel(uint8 *buf, CColModel &model, char *modelname)
|
||||
buf += 4;
|
||||
if(model.numTriangles > 0){
|
||||
model.triangles = (CColTriangle*)RwMalloc(model.numTriangles*sizeof(CColTriangle));
|
||||
REGISTER_MEMPTR(&model.triangles);
|
||||
for(i = 0; i < model.numTriangles; i++){
|
||||
model.triangles[i].Set(*(int32*)buf, *(int32*)(buf+4), *(int32*)(buf+8), buf[12]);
|
||||
buf += 16;
|
||||
|
@ -53,6 +53,7 @@ const CRGBA DARKMENUOPTION_COLOR(195, 90, 165, 255);
|
||||
const CRGBA SLIDERON_COLOR(97, 194, 247, 255);
|
||||
const CRGBA SLIDEROFF_COLOR(27, 89, 130, 255);
|
||||
const CRGBA LIST_BACKGROUND_COLOR(49, 101, 148, 130);
|
||||
const CRGBA LIST_OPTION_COLOR(155, 155, 155, 255);
|
||||
const CRGBA RADIO_SELECTOR_COLOR = SLIDEROFF_COLOR;
|
||||
const CRGBA INACTIVE_RADIO_COLOR(100, 100, 255, 100);
|
||||
const CRGBA SCROLLBAR_COLOR = LABEL_COLOR;
|
||||
@ -969,6 +970,7 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
|
||||
uint8 section = 0; // 0: highlight trapezoid 1: texts
|
||||
|
||||
while (section < 2) {
|
||||
#endif
|
||||
|
||||
#ifdef SCROLLABLE_PAGES
|
||||
int firstOption = SCREEN_HAS_AUTO_SCROLLBAR ? m_nFirstVisibleRowOnList : 0;
|
||||
@ -2572,7 +2574,7 @@ CMenuManager::DrawPlayerSetupScreen(bool activeScreen)
|
||||
} else if (!strcmp(m_PrefsSkinFile, m_pSelectedSkin->skinNameOriginal)) {
|
||||
CFont::SetColor(CRGBA(255, 255, 155, FadeIn(255)));
|
||||
} else {
|
||||
CFont::SetColor(CRGBA(155, 155, 155, FadeIn(255)));
|
||||
CFont::SetColor(CRGBA(LIST_OPTION_COLOR.r, LIST_OPTION_COLOR.g, LIST_OPTION_COLOR.b, FadeIn(LIST_OPTION_COLOR.a)));
|
||||
}
|
||||
wchar unicodeTemp[80];
|
||||
AsciiToUnicode(m_pSelectedSkin->skinNameDisplayed, unicodeTemp);
|
||||
@ -2598,14 +2600,13 @@ CMenuManager::DrawPlayerSetupScreen(bool activeScreen)
|
||||
CSprite2d::DrawRect(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2), MENU_Y(PLAYERSETUP_LIST_TOP),
|
||||
MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2 - PLAYERSETUP_SCROLLBAR_WIDTH), SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM)), CRGBA(100, 100, 66, FadeIn(205)));
|
||||
|
||||
// Scrollbar
|
||||
float scrollbarHeight = SCROLLBAR_MAX_HEIGHT / m_nSkinsTotal * (float) MAX_VISIBLE_LIST_ROW;
|
||||
float scrollbarHeight = SCROLLBAR_MAX_HEIGHT / (m_nSkinsTotal / (float) MAX_VISIBLE_LIST_ROW);
|
||||
float scrollbarBottom, scrollbarTop;
|
||||
if (m_nSkinsTotal <= MAX_VISIBLE_LIST_ROW) {
|
||||
scrollbarBottom = SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM + PLAYERSETUP_SCROLLBUTTON_HEIGHT + 4.0f);
|
||||
scrollbarTop = MENU_Y(PLAYERSETUP_LIST_BODY_TOP);
|
||||
|
||||
// Shadow
|
||||
// Scrollbar shadow
|
||||
CSprite2d::DrawRect(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 4), scrollbarTop,
|
||||
MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 1 - PLAYERSETUP_SCROLLBAR_WIDTH), scrollbarBottom + MENU_Y(1.0f)), CRGBA(50, 50, 50, FadeIn(255)));
|
||||
} else {
|
||||
@ -2616,12 +2617,13 @@ CMenuManager::DrawPlayerSetupScreen(bool activeScreen)
|
||||
scrollbarBottom = MENU_Y(PLAYERSETUP_LIST_BODY_TOP - 4 + m_nScrollbarTopMargin + scrollbarHeight - SCROLLBAR_MAX_HEIGHT / m_nSkinsTotal);
|
||||
scrollbarTop = MENU_Y(SCROLLBAR_MAX_HEIGHT / m_nSkinsTotal + PLAYERSETUP_LIST_BODY_TOP - 3 + m_nScrollbarTopMargin);
|
||||
#endif
|
||||
// Shadow
|
||||
// Scrollbar shadow
|
||||
CSprite2d::DrawRect(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 4), scrollbarTop,
|
||||
MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 1 - PLAYERSETUP_SCROLLBAR_WIDTH), scrollbarBottom + MENU_Y(1.0f)),
|
||||
CRGBA(50, 50, 50, FadeIn(255)));
|
||||
|
||||
}
|
||||
// Scrollbar
|
||||
CSprite2d::DrawRect(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 4), scrollbarTop,
|
||||
MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - PLAYERSETUP_SCROLLBAR_WIDTH), scrollbarBottom),
|
||||
CRGBA(SCROLLBAR_COLOR.r, SCROLLBAR_COLOR.g, SCROLLBAR_COLOR.b, FadeIn(255)));
|
||||
@ -5690,5 +5692,3 @@ uint8 CMenuManager::GetNumberOfMenuOptions()
|
||||
|
||||
#undef GetBackJustUp
|
||||
#undef GetBackJustDown
|
||||
|
||||
#endif
|
||||
|
@ -22,7 +22,7 @@
|
||||
#include "Game.h"
|
||||
#include "World.h"
|
||||
#include "PlayerInfo.h"
|
||||
#include "FrontendControls.h"
|
||||
#include "FrontEndControls.h"
|
||||
#include "MemoryCard.h"
|
||||
|
||||
#define CRect_SZ(x, y, w, h) CRect(x, y, x+w, y+h)
|
||||
@ -3017,4 +3017,4 @@ CMenuManager::FilterOutColorMarkersFromString(wchar *string, CRGBA &color)
|
||||
*dst = '\0';
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include "MBlur.h"
|
||||
#include "Messages.h"
|
||||
#include "MemoryCard.h"
|
||||
#include "MemoryHeap.h"
|
||||
#include "Pad.h"
|
||||
#include "Particle.h"
|
||||
#include "ParticleObject.h"
|
||||
@ -186,10 +187,22 @@ CGame::InitialiseRenderWare(void)
|
||||
#ifdef USE_TEXTURE_POOL
|
||||
_TexturePoolsInitialise();
|
||||
#endif
|
||||
|
||||
|
||||
CTxdStore::Initialise();
|
||||
CVisibilityPlugins::Initialise();
|
||||
|
||||
|
||||
//InitialiseScene(Scene); // PS2 only, only clears Scene.camera
|
||||
|
||||
#ifdef GTA_PS2
|
||||
RpSkySelectTrueTSClipper(TRUE);
|
||||
RpSkySelectTrueTLClipper(TRUE);
|
||||
|
||||
// PS2ManagerApplyDirectionalLightingCB() uploads the GTA lights
|
||||
// directly without going through RpWorld and all that
|
||||
SetupPS2ManagerDefaultLightingCallback();
|
||||
PreAllocateRwObjects();
|
||||
#endif
|
||||
|
||||
/* Create camera */
|
||||
Scene.camera = CameraCreate(SCREEN_WIDTH, SCREEN_HEIGHT, TRUE);
|
||||
ASSERT(Scene.camera != nil);
|
||||
@ -198,7 +211,7 @@ CGame::InitialiseRenderWare(void)
|
||||
return (false);
|
||||
}
|
||||
|
||||
RwCameraSetFarClipPlane(Scene.camera, 2000.0f);
|
||||
RwCameraSetFarClipPlane(Scene.camera, 2000.0f); // 250.0f on PS2 but who cares
|
||||
RwCameraSetNearClipPlane(Scene.camera, 0.9f);
|
||||
|
||||
CameraSize(Scene.camera, nil, DEFAULT_VIEWWINDOW, DEFAULT_ASPECT_RATIO);
|
||||
@ -221,7 +234,7 @@ CGame::InitialiseRenderWare(void)
|
||||
/* Add the camera to the world */
|
||||
RpWorldAddCamera(Scene.world, Scene.camera);
|
||||
LightsCreate(Scene.world);
|
||||
|
||||
|
||||
CreateDebugFont();
|
||||
|
||||
#ifdef LIBRW
|
||||
@ -238,14 +251,18 @@ CGame::InitialiseRenderWare(void)
|
||||
ReplaceAtomicPipeCallback();
|
||||
#endif // PS2_ALPHA_TEST
|
||||
#endif // LIBRW
|
||||
|
||||
|
||||
PUSH_MEMID(MEMID_TEXTURES);
|
||||
CFont::Initialise();
|
||||
CHud::Initialise();
|
||||
POP_MEMID();
|
||||
|
||||
CPlayerSkin::Initialise();
|
||||
|
||||
return (true);
|
||||
}
|
||||
|
||||
// missing altogether on PS2
|
||||
void CGame::ShutdownRenderWare(void)
|
||||
{
|
||||
DestroySplashScreen();
|
||||
@ -254,7 +271,8 @@ void CGame::ShutdownRenderWare(void)
|
||||
|
||||
for ( int32 i = 0; i < NUMPLAYERS; i++ )
|
||||
CWorld::Players[i].DeletePlayerSkin();
|
||||
|
||||
|
||||
// TODO: define
|
||||
CPlayerSkin::Shutdown();
|
||||
|
||||
DestroyDebugFont();
|
||||
@ -277,6 +295,7 @@ void CGame::ShutdownRenderWare(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
// missing altogether on PS2
|
||||
bool CGame::InitialiseOnceAfterRW(void)
|
||||
{
|
||||
TheText.Load();
|
||||
@ -306,6 +325,7 @@ bool CGame::InitialiseOnceAfterRW(void)
|
||||
return true;
|
||||
}
|
||||
|
||||
// missing altogether on PS2
|
||||
void
|
||||
CGame::FinalShutdown(void)
|
||||
{
|
||||
@ -316,25 +336,41 @@ CGame::FinalShutdown(void)
|
||||
|
||||
bool CGame::Initialise(const char* datFile)
|
||||
{
|
||||
#ifdef GTA_PS2
|
||||
// TODO: upload VU0 collision code here
|
||||
#endif
|
||||
|
||||
ResetLoadingScreenBar();
|
||||
strcpy(aDatFile, datFile);
|
||||
CPools::Initialise();
|
||||
|
||||
#ifndef GTA_PS2
|
||||
CIniFile::LoadIniFile();
|
||||
#endif
|
||||
#ifdef USE_TEXTURE_POOL
|
||||
_TexturePoolsUnknown(false);
|
||||
#endif
|
||||
currLevel = LEVEL_BEACH;
|
||||
currArea = AREA_MAIN_MAP;
|
||||
|
||||
PUSH_MEMID(MEMID_TEXTURES);
|
||||
LoadingScreen("Loading the Game", "Loading generic textures", GetRandomSplashScreen());
|
||||
gameTxdSlot = CTxdStore::AddTxdSlot("generic");
|
||||
CTxdStore::Create(gameTxdSlot);
|
||||
CTxdStore::AddRef(gameTxdSlot);
|
||||
|
||||
LoadingScreen("Loading the Game", "Loading particles", nil);
|
||||
int particleTxdSlot = CTxdStore::AddTxdSlot("particle");
|
||||
CTxdStore::LoadTxd(particleTxdSlot, "MODELS/PARTICLE.TXD");
|
||||
CTxdStore::AddRef(particleTxdSlot);
|
||||
CTxdStore::SetCurrentTxd(gameTxdSlot);
|
||||
LoadingScreen("Loading the Game", "Setup game variables", nil);
|
||||
POP_MEMID();
|
||||
|
||||
#ifdef GTA_PS2
|
||||
CDma::SyncChannel(0, true);
|
||||
#endif
|
||||
|
||||
CGameLogic::InitAtStartOfGame();
|
||||
CReferences::Init();
|
||||
TheCamera.Init();
|
||||
@ -354,21 +390,35 @@ bool CGame::Initialise(const char* datFile)
|
||||
CMessages::ClearAllMessagesDisplayedByGame();
|
||||
CRecordDataForGame::Init();
|
||||
CRestart::Initialise();
|
||||
|
||||
PUSH_MEMID(MEMID_WORLD);
|
||||
CWorld::Initialise();
|
||||
POP_MEMID();
|
||||
|
||||
PUSH_MEMID(MEMID_TEXTURES);
|
||||
CParticle::Initialise();
|
||||
#ifdef PS2
|
||||
gStartX = -180.0f;
|
||||
gStartY = 180.0f;
|
||||
gStartZ = 14.0f;
|
||||
#endif
|
||||
POP_MEMID();
|
||||
|
||||
PUSH_MEMID(MEMID_ANIMATION);
|
||||
CAnimManager::Initialise();
|
||||
CCutsceneMgr::Initialise();
|
||||
POP_MEMID();
|
||||
|
||||
PUSH_MEMID(MEMID_CARS);
|
||||
CCarCtrl::Init();
|
||||
POP_MEMID();
|
||||
|
||||
InitModelIndices();
|
||||
|
||||
PUSH_MEMID(MEMID_DEF_MODELS);
|
||||
CModelInfo::Initialise();
|
||||
CPickups::Init();
|
||||
CTheCarGenerators::Init();
|
||||
|
||||
#ifndef GTA_PS2 // or GTA_VERSION?
|
||||
CdStreamAddImage("MODELS\\GTA3.IMG");
|
||||
#endif
|
||||
|
||||
CFileLoader::LoadLevel("DATA\\DEFAULT.DAT");
|
||||
CFileLoader::LoadLevel(datFile);
|
||||
#ifdef EXTENDED_PIPELINES
|
||||
@ -399,6 +449,8 @@ bool CGame::Initialise(const char* datFile)
|
||||
CStreaming::RemoveIslandsNotUsed(currLevel);
|
||||
printf("Streaming uses %zuK of its memory", CStreaming::ms_memoryUsed / 1024); // original modifier was %d
|
||||
LoadingScreen("Loading the Game", "Load animations", GetRandomSplashScreen());
|
||||
|
||||
PUSH_MEMID(MEMID_ANIMATION);
|
||||
CAnimManager::LoadAnimFiles();
|
||||
CStreaming::LoadInitialWeapons();
|
||||
CStreaming::LoadAllRequestedModels(0);
|
||||
@ -410,13 +462,16 @@ bool CGame::Initialise(const char* datFile)
|
||||
#endif
|
||||
LoadingScreen("Loading the Game", "Find big buildings", nil);
|
||||
CRenderer::Init();
|
||||
|
||||
LoadingScreen("Loading the Game", "Setup game variables", nil);
|
||||
CRadar::Initialise();
|
||||
CRadar::LoadTextures();
|
||||
CWeapon::InitialiseWeapons();
|
||||
|
||||
LoadingScreen("Loading the Game", "Setup traffic lights", nil);
|
||||
CTrafficLights::ScanForLightsOnMap();
|
||||
CRoadBlocks::Init();
|
||||
|
||||
LoadingScreen("Loading the Game", "Setup game variables", nil);
|
||||
CPopulation::Initialise();
|
||||
CWorld::PlayerInFocus = 0;
|
||||
@ -431,8 +486,11 @@ bool CGame::Initialise(const char* datFile)
|
||||
CSceneEdit::Initialise();
|
||||
#endif
|
||||
LoadingScreen("Loading the Game", "Load scripts", nil);
|
||||
PUSH_MEMID(MEMID_SCRIPT);
|
||||
CTheScripts::Init();
|
||||
CGangs::Initialise();
|
||||
POP_MEMID();
|
||||
|
||||
LoadingScreen("Loading the Game", "Setup game variables", nil);
|
||||
CClock::Initialise(1000);
|
||||
CHeli::InitHelis();
|
||||
@ -448,24 +506,26 @@ bool CGame::Initialise(const char* datFile)
|
||||
CWaterCannons::Init();
|
||||
CBridge::Init();
|
||||
CGarages::Init();
|
||||
|
||||
LoadingScreen("Loading the Game", "Position dynamic objects", nil);
|
||||
LoadingScreen("Loading the Game", "Initialise vehicle paths", nil);
|
||||
|
||||
CTrain::InitTrains();
|
||||
CPlane::InitPlanes();
|
||||
CCredits::Init();
|
||||
CRecordDataForChase::Init();
|
||||
CReplay::Init();
|
||||
|
||||
#ifdef PS2_MENU
|
||||
if ( !TheMemoryCard.m_bWantToLoad )
|
||||
#endif
|
||||
{
|
||||
#endif
|
||||
LoadingScreen("Loading the Game", "Start script", nil);
|
||||
CTheScripts::StartTestScript();
|
||||
CTheScripts::Process();
|
||||
TheCamera.Process();
|
||||
#ifdef PS2_MENU
|
||||
LoadingScreen("Loading the Game", "Start script", nil);
|
||||
CTheScripts::StartTestScript();
|
||||
CTheScripts::Process();
|
||||
TheCamera.Process();
|
||||
}
|
||||
#endif
|
||||
|
||||
LoadingScreen("Loading the Game", "Load scene", nil);
|
||||
CCollision::ms_collisionInMemory = currLevel;
|
||||
for (int i = 0; i < MAX_PADS; i++)
|
||||
@ -490,9 +550,7 @@ bool CGame::ShutDown(void)
|
||||
CScriptPaths::Shutdown();
|
||||
CWaterCreatures::RemoveAll();
|
||||
CSpecialFX::Shutdown();
|
||||
#ifndef PS2
|
||||
CGarages::Shutdown();
|
||||
#endif
|
||||
CMovingThings::Shutdown();
|
||||
gPhoneInfo.Shutdown();
|
||||
CWeapon::ShutdownWeapons();
|
||||
@ -546,13 +604,11 @@ void CGame::ReInitGameObjectVariables(void)
|
||||
CGameLogic::InitAtStartOfGame();
|
||||
#ifdef PS2_MENU
|
||||
if ( !TheMemoryCard.m_bWantToLoad )
|
||||
#endif
|
||||
{
|
||||
#endif
|
||||
TheCamera.Init();
|
||||
TheCamera.SetRwCamera(Scene.camera);
|
||||
#ifdef PS2_MENU
|
||||
TheCamera.Init();
|
||||
TheCamera.SetRwCamera(Scene.camera);
|
||||
}
|
||||
#endif
|
||||
CDebug::DebugInitTextBuffer();
|
||||
CWeather::Init();
|
||||
CUserDisplay::Init();
|
||||
@ -561,11 +617,6 @@ void CGame::ReInitGameObjectVariables(void)
|
||||
CWorld::bDoingCarCollisions = false;
|
||||
CHud::ReInitialise();
|
||||
CRadar::Initialise();
|
||||
#ifdef PS2
|
||||
gStartX = -180.0f;
|
||||
gStartY = 180.0f;
|
||||
gStartZ = 14.0f;
|
||||
#endif
|
||||
CCarCtrl::ReInit();
|
||||
CTimeCycle::Initialise();
|
||||
CDraw::SetFOV(120.0f);
|
||||
@ -587,15 +638,15 @@ void CGame::ReInitGameObjectVariables(void)
|
||||
CWorld::Players[i].Clear();
|
||||
|
||||
CWorld::PlayerInFocus = 0;
|
||||
#ifdef PS2
|
||||
CWeaponEffects::Init();
|
||||
CSkidmarks::Init();
|
||||
#endif
|
||||
CAntennas::Init();
|
||||
CGlass::Init();
|
||||
gPhoneInfo.Initialise();
|
||||
|
||||
PUSH_MEMID(MEMID_SCRIPT);
|
||||
CTheScripts::Init();
|
||||
CGangs::Initialise();
|
||||
POP_MEMID();
|
||||
|
||||
CTimer::Initialise();
|
||||
CClock::Initialise(1000);
|
||||
CTheCarGenerators::Init();
|
||||
@ -606,10 +657,6 @@ void CGame::ReInitGameObjectVariables(void)
|
||||
CPickups::Init();
|
||||
CPacManPickups::Init();
|
||||
CGarages::Init();
|
||||
#ifdef PS2
|
||||
CClouds::Init();
|
||||
CRemote::Init();
|
||||
#endif
|
||||
CSpecialFX::Init();
|
||||
CRopes::Init();
|
||||
CWaterCannons::Init();
|
||||
@ -748,13 +795,15 @@ void CGame::InitialiseWhenRestarting(void)
|
||||
void CGame::Process(void)
|
||||
{
|
||||
CPad::UpdatePads();
|
||||
#ifdef GTA_PS2
|
||||
#ifdef USE_CUSTOM_ALLOCATOR
|
||||
ProcessTidyUpMemory();
|
||||
#endif
|
||||
#ifdef DEBUGMENU
|
||||
DebugMenuProcess();
|
||||
#endif
|
||||
CCutsceneMgr::Update();
|
||||
|
||||
PUSH_MEMID(MEMID_FRONTEND);
|
||||
if (!CCutsceneMgr::IsCutsceneProcessing() && !CTimer::GetIsCodePaused())
|
||||
FrontEndMenuManager.Process();
|
||||
CTheZones::Update();
|
||||
@ -773,7 +822,11 @@ void CGame::Process(void)
|
||||
CPad::DoCheats();
|
||||
CClock::Update();
|
||||
CWeather::Update();
|
||||
|
||||
PUSH_MEMID(MEMID_SCRIPT);
|
||||
CTheScripts::Process();
|
||||
POP_MEMID();
|
||||
|
||||
CCollision::Update();
|
||||
CScriptPaths::Update();
|
||||
CTrain::UpdateTrains();
|
||||
@ -807,7 +860,11 @@ void CGame::Process(void)
|
||||
CWaterCannons::Update();
|
||||
CUserDisplay::Process();
|
||||
CReplay::Update();
|
||||
|
||||
PUSH_MEMID(MEMID_WORLD);
|
||||
CWorld::Process();
|
||||
POP_MEMID();
|
||||
|
||||
gAccidentManager.Update();
|
||||
CPacManPickups::Update();
|
||||
CPickups::Update();
|
||||
@ -836,6 +893,366 @@ void CGame::Process(void)
|
||||
CCarCtrl::RemoveCarsIfThePoolGetsFull();
|
||||
}
|
||||
}
|
||||
#ifdef GTA_PS2
|
||||
CMemCheck::DoTest();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef USE_CUSTOM_ALLOCATOR
|
||||
|
||||
int32 gNumMemMoved;
|
||||
|
||||
bool
|
||||
MoveMem(void** ptr)
|
||||
{
|
||||
if (*ptr) {
|
||||
gNumMemMoved++;
|
||||
void* newPtr = gMainHeap.MoveMemory(*ptr);
|
||||
if (*ptr != newPtr) {
|
||||
*ptr = newPtr;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Some convenience structs
|
||||
struct SkyDataPrefix
|
||||
{
|
||||
uint32 pktSize1;
|
||||
uint32 data; // pointer to data as read from TXD
|
||||
uint32 pktSize2;
|
||||
uint32 unused;
|
||||
};
|
||||
|
||||
struct DMAGIFUpload
|
||||
{
|
||||
uint32 tag1_qwc, tag1_addr; // dmaref
|
||||
uint32 nop1, vif_direct1;
|
||||
|
||||
uint32 giftag[4];
|
||||
uint32 gs_bitbltbuf[4];
|
||||
|
||||
uint32 tag2_qwc, tag2_addr; // dmaref
|
||||
uint32 nop2, vif_direct2;
|
||||
};
|
||||
|
||||
// This is very scary. it depends on the exact memory layout of the DMA chains and whatnot
|
||||
RwTexture*
|
||||
MoveTextureMemoryCB(RwTexture* texture, void* pData)
|
||||
{
|
||||
#ifdef GTA_PS2
|
||||
bool* pRet = (bool*)pData;
|
||||
RwRaster* raster = RwTextureGetRaster(texture);
|
||||
_SkyRasterExt* rasterExt = RASTEREXTFROMRASTER(raster);
|
||||
if (raster->originalPixels == nil || // the raw data
|
||||
raster->cpPixels == raster->originalPixels || // old format, can't handle it
|
||||
rasterExt->dmaRefCount != 0 && rasterExt->dmaClrCount != 0)
|
||||
return texture;
|
||||
|
||||
// this is the allocated pointer we will move
|
||||
SkyDataPrefix* prefix = (SkyDataPrefix*)raster->originalPixels;
|
||||
DMAGIFUpload* uploads = (DMAGIFUpload*)(prefix + 1);
|
||||
|
||||
// We have 4qw for each upload,
|
||||
// i.e. for each buffer width of mip levels,
|
||||
// and the palette if there is one.
|
||||
// NB: this code does NOT support mipmaps!
|
||||
// so we assume two uploads (pixels and palette)
|
||||
//
|
||||
// each upload looks like this:
|
||||
// (DMAcnt; NOP; VIF DIRECT(2))
|
||||
// giftag (1, A+D)
|
||||
// GS_BITBLTBUF
|
||||
// (DMAref->pixel data; NOP; VIF DIRECT(5))
|
||||
// the DMArefs are what we have to adjust
|
||||
uintptr dataDiff, upload1Diff, upload2Diff, pixelDiff, paletteDiff;
|
||||
dataDiff = prefix->data - (uintptr)raster->originalPixels;
|
||||
upload1Diff = uploads[0].tag2_addr - (uintptr)raster->originalPixels;
|
||||
if (raster->palette)
|
||||
upload2Diff = uploads[1].tag2_addr - (uintptr)raster->originalPixels;
|
||||
pixelDiff = (uintptr)raster->cpPixels - (uintptr)raster->originalPixels;
|
||||
if (raster->palette)
|
||||
paletteDiff = (uintptr)raster->palette - (uintptr)raster->originalPixels;
|
||||
uint8* newptr = (uint8*)gMainHeap.MoveMemory(raster->originalPixels);
|
||||
if (newptr != raster->originalPixels) {
|
||||
// adjust everything
|
||||
prefix->data = (uintptr)newptr + dataDiff;
|
||||
uploads[0].tag2_addr = (uintptr)newptr + upload1Diff;
|
||||
if (raster->palette)
|
||||
uploads[1].tag2_addr = (uintptr)newptr + upload2Diff;
|
||||
raster->originalPixels = newptr;
|
||||
raster->cpPixels = newptr + pixelDiff;
|
||||
if (raster->palette)
|
||||
raster->palette = newptr + paletteDiff;
|
||||
|
||||
if (pRet) {
|
||||
*pRet = true;
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
#else
|
||||
// nothing to do here really, everything should be in videomemory
|
||||
#endif
|
||||
return texture;
|
||||
}
|
||||
|
||||
bool
|
||||
MoveAtomicMemory(RpAtomic* atomic, bool onlyOne)
|
||||
{
|
||||
RpGeometry* geo = RpAtomicGetGeometry(atomic);
|
||||
|
||||
#if THIS_IS_COMPATIBLE_WITH_GTA3_RW31
|
||||
if (MoveMem((void**)&geo->triangles) && onlyOne)
|
||||
return true;
|
||||
if (MoveMem((void**)&geo->matList.materials) && onlyOne)
|
||||
return true;
|
||||
if (MoveMem((void**)&geo->preLitLum) && onlyOne)
|
||||
return true;
|
||||
if (MoveMem((void**)&geo->texCoords[0]) && onlyOne)
|
||||
return true;
|
||||
if (MoveMem((void**)&geo->texCoords[1]) && onlyOne)
|
||||
return true;
|
||||
|
||||
// verts and normals of morph target are allocated together
|
||||
int vertDiff;
|
||||
if (geo->morphTarget->normals)
|
||||
vertDiff = geo->morphTarget->normals - geo->morphTarget->verts;
|
||||
if (MoveMem((void**)&geo->morphTarget->verts)) {
|
||||
if (geo->morphTarget->normals)
|
||||
geo->morphTarget->normals = geo->morphTarget->verts + vertDiff;
|
||||
if (onlyOne)
|
||||
return true;
|
||||
}
|
||||
|
||||
RpMeshHeader* oldmesh = geo->mesh;
|
||||
if (MoveMem((void**)&geo->mesh)) {
|
||||
// index pointers are allocated together with meshes,
|
||||
// have to relocate those too
|
||||
RpMesh* mesh = (RpMesh*)(geo->mesh + 1);
|
||||
uintptr reloc = (uintptr)geo->mesh - (uintptr)oldmesh;
|
||||
for (int i = 0; i < geo->mesh->numMeshes; i++)
|
||||
mesh[i].indices = (RxVertexIndex*)((uintptr)mesh[i].indices + reloc);
|
||||
if (onlyOne)
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
// we could do something in librw here
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
MoveColModelMemory(CColModel& colModel, bool onlyOne)
|
||||
{
|
||||
#if GTA_VERSION >= GTA3_PS2_160
|
||||
// hm...should probably only do this if ownsCollisionVolumes
|
||||
// but it doesn't exist on PS2...
|
||||
if (!colModel.ownsCollisionVolumes)
|
||||
return false;
|
||||
#endif
|
||||
|
||||
if (MoveMem((void**)&colModel.spheres) && onlyOne)
|
||||
return true;
|
||||
if (MoveMem((void**)&colModel.lines) && onlyOne)
|
||||
return true;
|
||||
if (MoveMem((void**)&colModel.boxes) && onlyOne)
|
||||
return true;
|
||||
if (MoveMem((void**)&colModel.vertices) && onlyOne)
|
||||
return true;
|
||||
if (MoveMem((void**)&colModel.triangles) && onlyOne)
|
||||
return true;
|
||||
if (MoveMem((void**)&colModel.trianglePlanes) && onlyOne)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
RpAtomic*
|
||||
MoveAtomicMemoryCB(RpAtomic* atomic, void* pData)
|
||||
{
|
||||
bool* pRet = (bool*)pData;
|
||||
if (pRet == nil)
|
||||
MoveAtomicMemory(atomic, false);
|
||||
else if (MoveAtomicMemory(atomic, true)) {
|
||||
*pRet = true;
|
||||
return nil;
|
||||
}
|
||||
return atomic;
|
||||
}
|
||||
|
||||
bool
|
||||
TidyUpModelInfo(CBaseModelInfo* modelInfo, bool onlyone)
|
||||
{
|
||||
if (modelInfo->GetColModel() && modelInfo->DoesOwnColModel())
|
||||
if (MoveColModelMemory(*modelInfo->GetColModel(), onlyone))
|
||||
return true;
|
||||
|
||||
RwObject* rwobj = modelInfo->GetRwObject();
|
||||
if (RwObjectGetType(rwobj) == rpATOMIC)
|
||||
if (MoveAtomicMemory((RpAtomic*)rwobj, onlyone))
|
||||
return true;
|
||||
if (RwObjectGetType(rwobj) == rpCLUMP) {
|
||||
bool ret = false;
|
||||
if (onlyone)
|
||||
RpClumpForAllAtomics((RpClump*)rwobj, MoveAtomicMemoryCB, &ret);
|
||||
else
|
||||
RpClumpForAllAtomics((RpClump*)rwobj, MoveAtomicMemoryCB, nil);
|
||||
if (ret)
|
||||
return true;
|
||||
}
|
||||
|
||||
if (modelInfo->GetModelType() == MITYPE_PED && ((CPedModelInfo*)modelInfo)->m_hitColModel)
|
||||
if (MoveColModelMemory(*((CPedModelInfo*)modelInfo)->m_hitColModel, onlyone))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void CGame::DrasticTidyUpMemory(bool flushDraw)
|
||||
{
|
||||
#ifdef USE_CUSTOM_ALLOCATOR
|
||||
bool removedCol = false;
|
||||
|
||||
TidyUpMemory(true, flushDraw);
|
||||
|
||||
if (gMainHeap.GetLargestFreeBlock() < 200000 && !playingIntro) {
|
||||
CStreaming::RemoveIslandsNotUsed(LEVEL_INDUSTRIAL);
|
||||
CStreaming::RemoveIslandsNotUsed(LEVEL_COMMERCIAL);
|
||||
CStreaming::RemoveIslandsNotUsed(LEVEL_SUBURBAN);
|
||||
TidyUpMemory(true, flushDraw);
|
||||
}
|
||||
|
||||
if (gMainHeap.GetLargestFreeBlock() < 200000 && !playingIntro) {
|
||||
CModelInfo::RemoveColModelsFromOtherLevels(LEVEL_GENERIC);
|
||||
TidyUpMemory(true, flushDraw);
|
||||
removedCol = true;
|
||||
}
|
||||
|
||||
if (gMainHeap.GetLargestFreeBlock() < 200000 && !playingIntro) {
|
||||
CStreaming::RemoveBigBuildings(LEVEL_INDUSTRIAL);
|
||||
CStreaming::RemoveBigBuildings(LEVEL_COMMERCIAL);
|
||||
CStreaming::RemoveBigBuildings(LEVEL_SUBURBAN);
|
||||
TidyUpMemory(true, flushDraw);
|
||||
}
|
||||
|
||||
if (removedCol) {
|
||||
// different on PS2
|
||||
CFileLoader::LoadCollisionFromDatFile(CCollision::ms_collisionInMemory);
|
||||
}
|
||||
|
||||
if (!playingIntro)
|
||||
CStreaming::RequestBigBuildings(currLevel);
|
||||
|
||||
CStreaming::LoadAllRequestedModels(true);
|
||||
#endif
|
||||
}
|
||||
|
||||
void CGame::TidyUpMemory(bool moveTextures, bool flushDraw)
|
||||
{
|
||||
#ifdef USE_CUSTOM_ALLOCATOR
|
||||
printf("Largest free block before tidy %d\n", gMainHeap.GetLargestFreeBlock());
|
||||
|
||||
if (moveTextures) {
|
||||
if (flushDraw) {
|
||||
#ifdef GTA_PS2
|
||||
for (int i = 0; i < sweMaxFlips + 1; i++) {
|
||||
#else
|
||||
for (int i = 0; i < 5; i++) { // probably more than needed
|
||||
#endif
|
||||
RwCameraBeginUpdate(Scene.camera);
|
||||
RwCameraEndUpdate(Scene.camera);
|
||||
RwCameraShowRaster(Scene.camera, nil, 0);
|
||||
}
|
||||
}
|
||||
int fontSlot = CTxdStore::FindTxdSlot("fonts");
|
||||
|
||||
for (int i = 0; i < TXDSTORESIZE; i++) {
|
||||
if (i == fontSlot ||
|
||||
CTxdStore::GetSlot(i) == nil)
|
||||
continue;
|
||||
RwTexDictionary* txd = CTxdStore::GetSlot(i)->texDict;
|
||||
if (txd)
|
||||
RwTexDictionaryForAllTextures(txd, MoveTextureMemoryCB, nil);
|
||||
}
|
||||
}
|
||||
|
||||
// animations
|
||||
for (int i = 0; i < NUMANIMATIONS; i++) {
|
||||
CAnimBlendHierarchy* anim = CAnimManager::GetAnimation(i);
|
||||
if (anim == nil)
|
||||
continue; // cannot happen
|
||||
anim->MoveMemory();
|
||||
}
|
||||
|
||||
// model info
|
||||
for (int i = 0; i < MODELINFOSIZE; i++) {
|
||||
CBaseModelInfo* mi = CModelInfo::GetModelInfo(i);
|
||||
if (mi == nil)
|
||||
continue;
|
||||
TidyUpModelInfo(mi, false);
|
||||
}
|
||||
|
||||
printf("Largest free block after tidy %d\n", gMainHeap.GetLargestFreeBlock());
|
||||
#endif
|
||||
}
|
||||
|
||||
void CGame::ProcessTidyUpMemory(void)
|
||||
{
|
||||
#ifdef USE_CUSTOM_ALLOCATOR
|
||||
static int32 modelIndex = 0;
|
||||
static int32 animIndex = 0;
|
||||
static int32 txdIndex = 0;
|
||||
bool txdReturn = false;
|
||||
RwTexDictionary* txd = nil;
|
||||
gNumMemMoved = 0;
|
||||
|
||||
// model infos
|
||||
for (int numCleanedUp = 0; numCleanedUp < 10; numCleanedUp++) {
|
||||
CBaseModelInfo* mi;
|
||||
do {
|
||||
mi = CModelInfo::GetModelInfo(modelIndex);
|
||||
modelIndex++;
|
||||
if (modelIndex >= MODELINFOSIZE)
|
||||
modelIndex = 0;
|
||||
} while (mi == nil);
|
||||
|
||||
if (TidyUpModelInfo(mi, true))
|
||||
return;
|
||||
}
|
||||
|
||||
// tex dicts
|
||||
for (int numCleanedUp = 0; numCleanedUp < 3; numCleanedUp++) {
|
||||
if (gNumMemMoved > 80)
|
||||
break;
|
||||
|
||||
do {
|
||||
#ifdef FIX_BUGS
|
||||
txd = nil;
|
||||
#endif
|
||||
if (CTxdStore::GetSlot(txdIndex))
|
||||
txd = CTxdStore::GetSlot(txdIndex)->texDict;
|
||||
txdIndex++;
|
||||
if (txdIndex >= TXDSTORESIZE)
|
||||
txdIndex = 0;
|
||||
} while (txd == nil);
|
||||
|
||||
RwTexDictionaryForAllTextures(txd, MoveTextureMemoryCB, &txdReturn);
|
||||
if (txdReturn)
|
||||
return;
|
||||
}
|
||||
|
||||
// animations
|
||||
CAnimBlendHierarchy* anim;
|
||||
do {
|
||||
anim = CAnimManager::GetAnimation(animIndex);
|
||||
animIndex++;
|
||||
if (animIndex >= NUMANIMATIONS)
|
||||
animIndex = 0;
|
||||
} while (anim == nil); // always != nil
|
||||
anim->MoveMemory(true);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
@ -858,33 +1275,6 @@ CGame::CanSeeWaterFromCurrArea(void)
|
||||
bool
|
||||
CGame::CanSeeOutSideFromCurrArea(void)
|
||||
{
|
||||
return currArea == AREA_MAIN_MAP || currArea == AREA_MALL ||
|
||||
return currArea == AREA_MAIN_MAP || currArea == AREA_MALL ||
|
||||
currArea == AREA_MANSION || currArea == AREA_HOTEL;
|
||||
}
|
||||
|
||||
void CGame::DrasticTidyUpMemory(bool)
|
||||
{
|
||||
#ifdef USE_TEXTURE_POOL
|
||||
// TODO
|
||||
#endif
|
||||
#ifdef PS2
|
||||
// meow
|
||||
#endif
|
||||
}
|
||||
|
||||
void CGame::TidyUpMemory(bool unk1, bool unk2)
|
||||
{
|
||||
#ifdef PS2
|
||||
// meow
|
||||
#endif
|
||||
if (unk2) {
|
||||
DrasticTidyUpMemory(true); // parameter is unknown too
|
||||
}
|
||||
}
|
||||
|
||||
void CGame::ProcessTidyUpMemory(void)
|
||||
{
|
||||
#ifdef PS2
|
||||
// meow
|
||||
#endif
|
||||
}
|
||||
|
@ -575,7 +575,7 @@ CMenuScreenCustom aScreens[] = {
|
||||
INVERT_PAD_SELECTOR
|
||||
MENUACTION_RESTOREDEF, "FET_DEF", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC}, 320, 0, MENUALIGN_CENTER,
|
||||
MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, 0}, 320, 0, MENUALIGN_CENTER,
|
||||
},
|
||||
},
|
||||
|
||||
// MENUPAGE_OPTIONS = 27
|
||||
{ "FET_OPT", MENUPAGE_NONE, nil, nil,
|
||||
@ -588,25 +588,25 @@ CMenuScreenCustom aScreens[] = {
|
||||
MENUACTION_CHANGEMENU, "FEO_LAN", {nil, SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS}, 0, 0, MENUALIGN_CENTER,
|
||||
MENUACTION_PLAYERSETUP, "FET_PS", {nil, SAVESLOT_NONE, MENUPAGE_SKIN_SELECT}, 0, 0, MENUALIGN_CENTER,
|
||||
MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, 0}, 0, 0, MENUALIGN_CENTER,
|
||||
},
|
||||
},
|
||||
|
||||
// MENUPAGE_EXIT = 28
|
||||
{ "FET_QG", MENUPAGE_NONE, nil, nil,
|
||||
MENUACTION_LABEL, "FEQ_SRE", {nil, SAVESLOT_NONE, 0}, 0, 0, 0,
|
||||
MENUACTION_DONTCANCEL, "FEM_NO", {nil, SAVESLOT_NONE, MENUPAGE_NONE}, 320, 200, MENUALIGN_CENTER,
|
||||
MENUACTION_CANCELGAME, "FEM_YES", {nil, SAVESLOT_NONE, MENUPAGE_NONE}, 320, 225, MENUALIGN_CENTER,
|
||||
},
|
||||
},
|
||||
|
||||
// MENUPAGE_START_MENU = 29
|
||||
{ "FEM_MM", MENUPAGE_DISABLED, nil, nil,
|
||||
MENUACTION_CHANGEMENU, "FEP_STG", {nil, SAVESLOT_NONE, MENUPAGE_NEW_GAME}, 320, 170, MENUALIGN_CENTER,
|
||||
MENUACTION_CHANGEMENU, "FEP_OPT", {nil, SAVESLOT_NONE, MENUPAGE_OPTIONS}, 0, 0, MENUALIGN_CENTER,
|
||||
MENUACTION_CHANGEMENU, "FEP_QUI", {nil, SAVESLOT_NONE, MENUPAGE_EXIT}, 0, 0, MENUALIGN_CENTER,
|
||||
},
|
||||
|
||||
},
|
||||
|
||||
// MENUPAGE_KEYBOARD_CONTROLS = 30
|
||||
{ "FET_STI", MENUPAGE_CONTROLLER_PC, nil, nil,
|
||||
},
|
||||
},
|
||||
|
||||
// MENUPAGE_MOUSE_CONTROLS = 31
|
||||
{ "FEC_MOU", MENUPAGE_CONTROLLER_PC, nil, nil,
|
||||
@ -614,7 +614,7 @@ CMenuScreenCustom aScreens[] = {
|
||||
MENUACTION_INVVERT, "FEC_IVV", {nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS}, 0, 0, MENUALIGN_LEFT,
|
||||
MENUACTION_MOUSESTEER, "FET_MST", {nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS}, 0, 0, MENUALIGN_LEFT,
|
||||
MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, 0}, 320, 260, MENUALIGN_CENTER,
|
||||
},
|
||||
},
|
||||
|
||||
// MENUPAGE_PAUSE_MENU = 32
|
||||
{ "FET_PAU", MENUPAGE_DISABLED, nil, nil,
|
||||
@ -625,7 +625,7 @@ CMenuScreenCustom aScreens[] = {
|
||||
MENUACTION_CHANGEMENU, "FEH_BRI", {nil, SAVESLOT_NONE, MENUPAGE_BRIEFS}, 0, 0, MENUALIGN_CENTER,
|
||||
MENUACTION_CHANGEMENU, "FET_OPT", {nil, SAVESLOT_NONE, MENUPAGE_OPTIONS}, 0, 0, MENUALIGN_CENTER,
|
||||
MENUACTION_CHANGEMENU, "FEP_QUI", {nil, SAVESLOT_NONE, MENUPAGE_EXIT}, 0, 0, MENUALIGN_CENTER,
|
||||
},
|
||||
},
|
||||
|
||||
// MENUPAGE_NONE = 33
|
||||
{ "", 0, nil, nil, },
|
||||
@ -637,7 +637,7 @@ CMenuScreenCustom aScreens[] = {
|
||||
MENUACTION_CTRLCONFIG, "FEC_CCF", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS}, 0, 0, 0,
|
||||
MENUACTION_CTRLVIBRATION, "FEC_VIB", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS}, 0, 0, 0,
|
||||
MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, MENUPAGE_NONE}, 0, 0, 0,
|
||||
},
|
||||
},
|
||||
|
||||
// MENUPAGE_DEBUG_MENU = 18
|
||||
{ "FED_DBG", MENUPAGE_NONE, nil, nil,
|
||||
@ -646,8 +646,8 @@ CMenuScreenCustom aScreens[] = {
|
||||
MENUACTION_SWITCHBIGWHITEDEBUGLIGHT, "FED_DLS", {nil, SAVESLOT_NONE, MENUPAGE_NONE}, 0, 0, 0,
|
||||
MENUACTION_COLLISIONPOLYS, "FED_SCP", {nil, SAVESLOT_NONE, MENUPAGE_NONE}, 0, 0, 0,
|
||||
MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, MENUPAGE_NONE}, 0, 0, 0,
|
||||
},
|
||||
|
||||
},
|
||||
|
||||
// MENUPAGE_CONTROLLER_PC_OLD1 = 36
|
||||
{ "FET_CTL", MENUPAGE_CONTROLLER_PC, nil, nil,
|
||||
MENUACTION_GETKEY, "FEC_PLB", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC_OLD1}, 0, 0, 0,
|
||||
@ -660,7 +660,7 @@ CMenuScreenCustom aScreens[] = {
|
||||
MENUACTION_GETKEY, "FEC_TRG", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC_OLD1}, 0, 0, 0,
|
||||
MENUACTION_GETKEY, "FEC_CCM", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC_OLD1}, 0, 0, 0,
|
||||
MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, MENUPAGE_NONE}, 0, 0, 0,
|
||||
},
|
||||
},
|
||||
|
||||
// MENUPAGE_CONTROLLER_PC_OLD2 = 37
|
||||
{ "FET_CTL", MENUPAGE_CONTROLLER_PC, nil, nil,
|
||||
@ -674,7 +674,7 @@ CMenuScreenCustom aScreens[] = {
|
||||
MENUACTION_GETKEY, "FEC_SMS", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC_OLD3}, 0, 0, 0,
|
||||
MENUACTION_SHOWHEADBOB, "FEC_GSL", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC_OLD3}, 0, 0, 0,
|
||||
MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, MENUPAGE_NONE}, 0, 0, 0,
|
||||
},
|
||||
},
|
||||
|
||||
// MENUPAGE_CONTROLLER_PC_OLD4 = 39
|
||||
{ "FET_CTL", MENUPAGE_CONTROLLER_PC, nil, nil,
|
||||
@ -688,7 +688,7 @@ CMenuScreenCustom aScreens[] = {
|
||||
MENUACTION_GETKEY, "FEC_TSS", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_DEBUG}, 0, 0, 0,
|
||||
MENUACTION_GETKEY, "FEC_SMS", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_DEBUG}, 0, 0, 0,
|
||||
MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, MENUPAGE_NONE}, 0, 0, 0,
|
||||
},
|
||||
},
|
||||
#endif
|
||||
|
||||
#ifdef GRAPHICS_MENU_OPTIONS
|
||||
@ -731,4 +731,4 @@ CMenuScreenCustom aScreens[] = {
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
@ -405,13 +405,13 @@ CPlayerInfo::Process(void)
|
||||
uint32 timeWithoutRemoteCar = CTimer::GetTimeInMilliseconds() - m_nTimeLostRemoteCar;
|
||||
if (CTimer::GetPreviousTimeInMilliseconds() - m_nTimeLostRemoteCar < 1000 && timeWithoutRemoteCar >= 1000 && m_WBState == WBSTATE_PLAYING && field_D6) {
|
||||
TheCamera.SetFadeColour(0, 0, 0);
|
||||
TheCamera.Fade(1.0f, 0);
|
||||
TheCamera.Fade(1.0f, FADE_OUT);
|
||||
}
|
||||
if (timeWithoutRemoteCar > 2000) {
|
||||
if (m_WBState == WBSTATE_PLAYING && field_D6) {
|
||||
TheCamera.RestoreWithJumpCut();
|
||||
TheCamera.SetFadeColour(0, 0, 0);
|
||||
TheCamera.Fade(1.0f, 1);
|
||||
TheCamera.Fade(1.0f, FADE_IN);
|
||||
TheCamera.Process();
|
||||
CTimer::Stop();
|
||||
CCullZones::ForceCullZoneCoors(TheCamera.GetPosition());
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "Streaming.h"
|
||||
#include "Wanted.h"
|
||||
#include "World.h"
|
||||
#include "MemoryHeap.h"
|
||||
|
||||
//--MIAMI: file done
|
||||
|
||||
@ -27,19 +28,38 @@ CDummyPool *CPools::ms_pDummyPool;
|
||||
CAudioScriptObjectPool *CPools::ms_pAudioScriptObjectPool;
|
||||
CColModelPool *CPools::ms_pColModelPool;
|
||||
|
||||
#ifdef GTA_PS2 // or USE_CUSTOM_ALLOCATOR
|
||||
#define CHECKMEM(msg) CMemCheck::AllocateMemCheckBlock(msg)
|
||||
#else
|
||||
#define CHECKMEM(msg)
|
||||
#endif
|
||||
|
||||
void
|
||||
CPools::Initialise(void)
|
||||
{
|
||||
PUSH_MEMID(MEMID_POOLS);
|
||||
CHECKMEM("before pools");
|
||||
ms_pPtrNodePool = new CCPtrNodePool(NUMPTRNODES, "PtrNode");
|
||||
CHECKMEM("after CPtrNodePool");
|
||||
ms_pEntryInfoNodePool = new CEntryInfoNodePool(NUMENTRYINFOS, "EntryInfoNode");
|
||||
CHECKMEM("after CEntryInfoNodePool");
|
||||
ms_pPedPool = new CPedPool(NUMPEDS, "Peds");
|
||||
CHECKMEM("after CPedPool");
|
||||
ms_pVehiclePool = new CVehiclePool(NUMVEHICLES, "Vehicles");
|
||||
CHECKMEM("after CVehiclePool");
|
||||
ms_pBuildingPool = new CBuildingPool(NUMBUILDINGS, "Buildings");
|
||||
CHECKMEM("after CBuildingPool");
|
||||
ms_pTreadablePool = new CTreadablePool(NUMTREADABLES, "Treadables");
|
||||
CHECKMEM("after CTreadablePool");
|
||||
ms_pObjectPool = new CObjectPool(NUMOBJECTS, "Objects");
|
||||
CHECKMEM("after CObjectPool");
|
||||
ms_pDummyPool = new CDummyPool(NUMDUMMIES, "Dummys");
|
||||
CHECKMEM("after CDummyPool");
|
||||
ms_pAudioScriptObjectPool = new CAudioScriptObjectPool(NUMAUDIOSCRIPTOBJECTS, "AudioScriptObj");
|
||||
CHECKMEM("after cAudioScriptObjectPool");
|
||||
ms_pColModelPool = new CColModelPool(NUMCOLMODELS, "ColModel");
|
||||
CHECKMEM("after pools");
|
||||
POP_MEMID();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include "Script.h"
|
||||
#include "MemoryMgr.h"
|
||||
#include "MemoryHeap.h"
|
||||
#include "Font.h"
|
||||
|
||||
//--MIAMI: file done (possibly bugs)
|
||||
|
||||
@ -291,12 +292,22 @@ CStreaming::Shutdown(void)
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef MASTER
|
||||
uint64 timeProcessingTXD;
|
||||
uint64 timeProcessingDFF;
|
||||
#endif
|
||||
|
||||
void
|
||||
CStreaming::Update(void)
|
||||
{
|
||||
CStreamingInfo *si, *prev;
|
||||
bool requestedSubway = false;
|
||||
|
||||
#ifndef MASTER
|
||||
timeProcessingTXD = 0;
|
||||
timeProcessingDFF = 0;
|
||||
#endif
|
||||
|
||||
UpdateMemoryUsed();
|
||||
|
||||
if(ms_channelError != -1){
|
||||
@ -334,6 +345,10 @@ CStreaming::Update(void)
|
||||
CColStore::EnsureCollisionIsInMemory(FindPlayerCoors());
|
||||
}
|
||||
|
||||
// TODO: PrintRequestList
|
||||
//if (CPad::GetPad(1)->GetLeftShoulder2JustDown() && CPad::GetPad(1)->GetRightShoulder1() && CPad::GetPad(1)->GetRightShoulder2())
|
||||
// PrintRequestList();
|
||||
|
||||
for(si = ms_endRequestedList.m_prev; si != &ms_startRequestedList; si = prev){
|
||||
prev = si->m_prev;
|
||||
if((si->m_flags & (STREAMFLAGS_KEEP_IN_MEMORY|STREAMFLAGS_PRIORITY)) == 0)
|
||||
@ -503,6 +518,8 @@ CStreaming::ConvertBufferToObject(int8 *buf, int32 streamId)
|
||||
CAnimManager::AddAnimBlockRef(animId);
|
||||
CTxdStore::SetCurrentTxd(mi->GetTxdSlot());
|
||||
|
||||
PUSH_MEMID(MEMID_STREAM_MODELS);
|
||||
CTxdStore::SetCurrentTxd(mi->GetTxdSlot());
|
||||
if(mi->IsSimple()){
|
||||
success = CFileLoader::LoadAtomicFile(stream, streamId);
|
||||
// TODO(MIAMI)? complain if file is not pre-instanced. we hardly are interested in that
|
||||
@ -514,7 +531,12 @@ CStreaming::ConvertBufferToObject(int8 *buf, int32 streamId)
|
||||
ms_aInfoForModel[streamId].m_loadState = STREAMSTATE_STARTED;
|
||||
}else{
|
||||
success = CFileLoader::LoadClumpFile(stream, streamId);
|
||||
#ifdef USE_CUSTOM_ALLOCATOR
|
||||
if(success)
|
||||
RpClumpForAllAtomics((RpClump*)mi->GetRwObject(), RegisterAtomicMemPtrsCB, nil);
|
||||
#endif
|
||||
}
|
||||
POP_MEMID();
|
||||
UpdateMemoryUsed();
|
||||
|
||||
// Txd and anims no longer needed unless we only read part of the file
|
||||
@ -540,12 +562,14 @@ CStreaming::ConvertBufferToObject(int8 *buf, int32 streamId)
|
||||
return false;
|
||||
}
|
||||
|
||||
PUSH_MEMID(MEMID_STREAM_TEXUTRES);
|
||||
if(ms_bLoadingBigModel || cdsize > 200){
|
||||
success = CTxdStore::StartLoadTxd(streamId - STREAM_OFFSET_TXD, stream);
|
||||
if(success)
|
||||
ms_aInfoForModel[streamId].m_loadState = STREAMSTATE_STARTED;
|
||||
}else
|
||||
success = CTxdStore::LoadTxd(streamId - STREAM_OFFSET_TXD, stream);
|
||||
POP_MEMID();
|
||||
UpdateMemoryUsed();
|
||||
|
||||
if(!success){
|
||||
@ -605,7 +629,9 @@ CStreaming::ConvertBufferToObject(int8 *buf, int32 streamId)
|
||||
// Mark objects as loaded
|
||||
if(ms_aInfoForModel[streamId].m_loadState != STREAMSTATE_STARTED){
|
||||
ms_aInfoForModel[streamId].m_loadState = STREAMSTATE_LOADED;
|
||||
#ifndef USE_CUSTOM_ALLOCATOR
|
||||
ms_memoryUsed += ms_aInfoForModel[streamId].GetCdSize() * CDSTREAM_SECTOR_SIZE;
|
||||
#endif
|
||||
}
|
||||
|
||||
endTime = CTimer::GetCurrentTimeInCycles() / CTimer::GetCyclesPerMillisecond();
|
||||
@ -640,10 +666,16 @@ CStreaming::FinishLoadingLargeFile(int8 *buf, int32 streamId)
|
||||
if(streamId < STREAM_OFFSET_TXD){
|
||||
// Model
|
||||
mi = CModelInfo::GetModelInfo(streamId);
|
||||
PUSH_MEMID(MEMID_STREAM_MODELS);
|
||||
CTxdStore::SetCurrentTxd(mi->GetTxdSlot());
|
||||
success = CFileLoader::FinishLoadClumpFile(stream, streamId);
|
||||
if(success)
|
||||
if(success){
|
||||
#ifdef USE_CUSTOM_ALLOCATOR
|
||||
RpClumpForAllAtomics((RpClump*)mi->GetRwObject(), RegisterAtomicMemPtrsCB, nil);
|
||||
#endif
|
||||
success = AddToLoadedVehiclesList(streamId);
|
||||
}
|
||||
POP_MEMID();
|
||||
mi->RemoveRef();
|
||||
CTxdStore::RemoveRefWithoutDelete(mi->GetTxdSlot());
|
||||
if(mi->GetAnimFileIndex() != -1)
|
||||
@ -651,24 +683,29 @@ CStreaming::FinishLoadingLargeFile(int8 *buf, int32 streamId)
|
||||
}else if(streamId >= STREAM_OFFSET_TXD && streamId < STREAM_OFFSET_COL){
|
||||
// Txd
|
||||
CTxdStore::AddRef(streamId - STREAM_OFFSET_TXD);
|
||||
PUSH_MEMID(MEMID_STREAM_TEXUTRES);
|
||||
success = CTxdStore::FinishLoadTxd(streamId - STREAM_OFFSET_TXD, stream);
|
||||
POP_MEMID();
|
||||
CTxdStore::RemoveRefWithoutDelete(streamId - STREAM_OFFSET_TXD);
|
||||
}else{
|
||||
assert(0 && "invalid streamId");
|
||||
}
|
||||
|
||||
RwStreamClose(stream, &mem);
|
||||
ms_aInfoForModel[streamId].m_loadState = STREAMSTATE_LOADED;
|
||||
|
||||
ms_aInfoForModel[streamId].m_loadState = STREAMSTATE_LOADED; // only done if success on PS2
|
||||
#ifndef USE_CUSTOM_ALLOCATOR
|
||||
ms_memoryUsed += ms_aInfoForModel[streamId].GetCdSize() * CDSTREAM_SECTOR_SIZE;
|
||||
#endif
|
||||
|
||||
if(!success){
|
||||
RemoveModel(streamId);
|
||||
ReRequestModel(streamId);
|
||||
UpdateMemoryUsed();
|
||||
UpdateMemoryUsed(); // directly after pop on PS2
|
||||
return false;
|
||||
}
|
||||
|
||||
UpdateMemoryUsed();
|
||||
UpdateMemoryUsed(); // directly after pop on PS2
|
||||
|
||||
endTime = CTimer::GetCurrentTimeInCycles() / CTimer::GetCyclesPerMillisecond();
|
||||
timeDiff = endTime - startTime;
|
||||
@ -2417,19 +2454,25 @@ CStreaming::FlushRequestList(void)
|
||||
void
|
||||
CStreaming::ImGonnaUseStreamingMemory(void)
|
||||
{
|
||||
// empty
|
||||
PUSH_MEMID(MEMID_STREAM);
|
||||
}
|
||||
|
||||
void
|
||||
CStreaming::IHaveUsedStreamingMemory(void)
|
||||
{
|
||||
POP_MEMID();
|
||||
UpdateMemoryUsed();
|
||||
}
|
||||
|
||||
void
|
||||
CStreaming::UpdateMemoryUsed(void)
|
||||
{
|
||||
// empty
|
||||
#ifdef USE_CUSTOM_ALLOCATOR
|
||||
ms_memoryUsed =
|
||||
gMainHeap.GetMemoryUsed(MEMID_STREAM) +
|
||||
gMainHeap.GetMemoryUsed(MEMID_STREAM_MODELS) +
|
||||
gMainHeap.GetMemoryUsed(MEMID_STREAM_TEXUTRES);
|
||||
#endif
|
||||
}
|
||||
|
||||
#define STREAM_DIST 80.0f
|
||||
@ -3043,3 +3086,71 @@ CStreaming::UpdateForAnimViewer(void)
|
||||
CStreaming::RetryLoadFile(CStreaming::ms_channelError);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CStreaming::PrintStreamingBufferState()
|
||||
{
|
||||
char str[128];
|
||||
wchar wstr[128];
|
||||
uint32 offset, size;
|
||||
|
||||
CTimer::Stop();
|
||||
int i = 0;
|
||||
while (i < NUMSTREAMINFO) {
|
||||
while (true) {
|
||||
int j = 0;
|
||||
DoRWStuffStartOfFrame(50, 50, 50, 0, 0, 0, 255);
|
||||
CPad::UpdatePads();
|
||||
CSprite2d::InitPerFrame();
|
||||
CFont::InitPerFrame();
|
||||
DefinedState();
|
||||
|
||||
CRect unusedRect(0, 0, RsGlobal.maximumWidth, RsGlobal.maximumHeight);
|
||||
CRGBA unusedColor(255, 255, 255, 255);
|
||||
CFont::SetFontStyle(FONT_BANK);
|
||||
CFont::SetBackgroundOff();
|
||||
CFont::SetWrapx(DEFAULT_SCREEN_WIDTH);
|
||||
CFont::SetScale(0.5f, 0.75f);
|
||||
CFont::SetCentreOff();
|
||||
CFont::SetCentreSize(DEFAULT_SCREEN_WIDTH);
|
||||
CFont::SetJustifyOff();
|
||||
CFont::SetColor(CRGBA(200, 200, 200, 200));
|
||||
CFont::SetBackGroundOnlyTextOff();
|
||||
int modelIndex = i;
|
||||
if (modelIndex < NUMSTREAMINFO) {
|
||||
int y = 24;
|
||||
for ( ; j < 34 && modelIndex < NUMSTREAMINFO; modelIndex++) {
|
||||
CStreamingInfo *streamingInfo = &ms_aInfoForModel[modelIndex];
|
||||
CBaseModelInfo *modelInfo = CModelInfo::GetModelInfo(modelIndex);
|
||||
if (streamingInfo->m_loadState != STREAMSTATE_LOADED || !streamingInfo->GetCdPosnAndSize(offset, size))
|
||||
continue;
|
||||
|
||||
if (modelIndex >= STREAM_OFFSET_TXD)
|
||||
sprintf(str, "txd %s, refs %d, size %dK, flags 0x%x", CTxdStore::GetTxdName(modelIndex - STREAM_OFFSET_TXD),
|
||||
CTxdStore::GetNumRefs(modelIndex - STREAM_OFFSET_TXD), 2 * size, streamingInfo->m_flags);
|
||||
else
|
||||
sprintf(str, "model %d,%s, refs%d, size%dK, flags%x", modelIndex, modelInfo->GetName(), modelInfo->GetNumRefs(), 2 * size,
|
||||
streamingInfo->m_flags);
|
||||
AsciiToUnicode(str, wstr);
|
||||
CFont::PrintString(24.0f, y, wstr);
|
||||
y += 12;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
if (CPad::GetPad(1)->GetCrossJustDown())
|
||||
i = modelIndex;
|
||||
|
||||
if (!CPad::GetPad(1)->GetTriangleJustDown())
|
||||
break;
|
||||
|
||||
i = 0;
|
||||
CFont::DrawFonts();
|
||||
DoRWStuffEndOfFrame();
|
||||
}
|
||||
CFont::DrawFonts();
|
||||
DoRWStuffEndOfFrame();
|
||||
}
|
||||
CTimer::Update();
|
||||
}
|
@ -210,4 +210,6 @@ public:
|
||||
static void MemoryCardLoad(uint8 *buffer, uint32 length);
|
||||
|
||||
static void UpdateForAnimViewer(void);
|
||||
|
||||
static void PrintStreamingBufferState();
|
||||
};
|
||||
|
@ -195,6 +195,7 @@ enum Config {
|
||||
#if defined GTA_PS2
|
||||
# define GTA_PS2_STUFF
|
||||
# define RANDOMSPLASH
|
||||
//# define USE_CUSTOM_ALLOCATOR
|
||||
# define VU_COLLISION
|
||||
#elif defined GTA_PC
|
||||
# ifdef GTA_PS2_STUFF
|
||||
@ -208,7 +209,7 @@ enum Config {
|
||||
#endif
|
||||
|
||||
#ifdef VU_COLLISION
|
||||
#define COMPRESSED_COL_VECTORS // current need compressed vectors in this code
|
||||
#define COMPRESSED_COL_VECTORS // currently need compressed vectors in this code
|
||||
#endif
|
||||
|
||||
#ifdef MASTER
|
||||
@ -287,6 +288,7 @@ enum Config {
|
||||
#define WALLCLIMB_CHEAT
|
||||
#define REGISTER_START_BUTTON
|
||||
//#define BIND_VEHICLE_FIREWEAPON // Adds ability to rebind fire key for 'in vehicle' controls
|
||||
#define BUTTON_ICONS // use textures to show controller buttons
|
||||
|
||||
// Hud, frontend and radar
|
||||
#define PC_MENU
|
||||
@ -327,7 +329,7 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
|
||||
#endif
|
||||
//#define SIMPLIER_MISSIONS // apply simplifications from mobile
|
||||
#define USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
|
||||
#define SCRIPT_LOG_FILE_LEVEL 1 // 0 == no log, 1 == overwrite every frame, 2 == full log
|
||||
#define SCRIPT_LOG_FILE_LEVEL 0 // 0 == no log, 1 == overwrite every frame, 2 == full log
|
||||
|
||||
#ifndef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
|
||||
#define USE_BASIC_SCRIPT_DEBUG_OUTPUT
|
||||
@ -361,9 +363,15 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
|
||||
// these are not supported with librw yet
|
||||
# undef MULTISAMPLING
|
||||
#endif
|
||||
// IMG
|
||||
#define BIG_IMG // allows to read larger img files
|
||||
|
||||
//#define SQUEEZE_PERFORMANCE
|
||||
#ifdef SQUEEZE_PERFORMANCE
|
||||
#undef PS2_ALPHA_TEST
|
||||
#undef NO_ISLAND_LOADING
|
||||
#endif
|
||||
|
||||
#ifdef LIBRW
|
||||
// these are not supported with librw yet
|
||||
#endif
|
||||
|
@ -63,6 +63,7 @@
|
||||
#include "timebars.h"
|
||||
#include "GenericGameStorage.h"
|
||||
#include "MemoryCard.h"
|
||||
#include "MemoryHeap.h"
|
||||
#include "SceneEdit.h"
|
||||
#include "debugmenu.h"
|
||||
#include "Clock.h"
|
||||
@ -110,6 +111,18 @@ void TheGame(void);
|
||||
void DebugMenuPopulate(void);
|
||||
#endif
|
||||
|
||||
#ifndef FINAL
|
||||
bool gbPrintMemoryUsage;
|
||||
#endif
|
||||
|
||||
#ifdef GTA_PS2
|
||||
#define WANT_TO_LOAD TheMemoryCard.m_bWantToLoad
|
||||
#define FOUND_GAME_TO_LOAD TheMemoryCard.b_FoundRecentSavedGameWantToLoad
|
||||
#else
|
||||
#define WANT_TO_LOAD FrontEndMenuManager.m_bWantToLoad
|
||||
#define FOUND_GAME_TO_LOAD b_FoundRecentSavedGameWantToLoad
|
||||
#endif
|
||||
|
||||
#ifdef NEW_RENDERER
|
||||
bool gbNewRenderer;
|
||||
#define CLEARMODE (rwCAMERACLEARZ | rwCAMERACLEARSTENCIL)
|
||||
@ -392,6 +405,63 @@ PluginAttach(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#ifdef GTA_PS2
|
||||
#define NUM_PREALLOC_ATOMICS 3245
|
||||
#define NUM_PREALLOC_CLUMPS 101
|
||||
#define NUM_PREALLOC_FRAMES 2821
|
||||
#define NUM_PREALLOC_GEOMETRIES 1404
|
||||
#define NUM_PREALLOC_TEXDICTS 106
|
||||
#define NUM_PREALLOC_TEXTURES 1900
|
||||
#define NUM_PREALLOC_MATERIALS 3300
|
||||
bool preAlloc;
|
||||
|
||||
void
|
||||
PreAllocateRwObjects(void)
|
||||
{
|
||||
int i;
|
||||
void **tmp = new void*[0x8000];
|
||||
preAlloc = true;
|
||||
|
||||
for(i = 0; i < NUM_PREALLOC_ATOMICS; i++)
|
||||
tmp[i] = RpAtomicCreate();
|
||||
for(i = 0; i < NUM_PREALLOC_ATOMICS; i++)
|
||||
RpAtomicDestroy((RpAtomic*)tmp[i]);
|
||||
|
||||
for(i = 0; i < NUM_PREALLOC_CLUMPS; i++)
|
||||
tmp[i] = RpClumpCreate();
|
||||
for(i = 0; i < NUM_PREALLOC_CLUMPS; i++)
|
||||
RpClumpDestroy((RpClump*)tmp[i]);
|
||||
|
||||
for(i = 0; i < NUM_PREALLOC_FRAMES; i++)
|
||||
tmp[i] = RwFrameCreate();
|
||||
for(i = 0; i < NUM_PREALLOC_FRAMES; i++)
|
||||
RwFrameDestroy((RwFrame*)tmp[i]);
|
||||
|
||||
for(i = 0; i < NUM_PREALLOC_GEOMETRIES; i++)
|
||||
tmp[i] = RpGeometryCreate(0, 0, 0);
|
||||
for(i = 0; i < NUM_PREALLOC_GEOMETRIES; i++)
|
||||
RpGeometryDestroy((RpGeometry*)tmp[i]);
|
||||
|
||||
for(i = 0; i < NUM_PREALLOC_TEXDICTS; i++)
|
||||
tmp[i] = RwTexDictionaryCreate();
|
||||
for(i = 0; i < NUM_PREALLOC_TEXDICTS; i++)
|
||||
RwTexDictionaryDestroy((RwTexDictionary*)tmp[i]);
|
||||
|
||||
for(i = 0; i < NUM_PREALLOC_TEXTURES; i++)
|
||||
tmp[i] = RwTextureCreate(RwRasterCreate(0, 0, 0, 0));
|
||||
for(i = 0; i < NUM_PREALLOC_TEXDICTS; i++)
|
||||
RwTextureDestroy((RwTexture*)tmp[i]);
|
||||
|
||||
for(i = 0; i < NUM_PREALLOC_MATERIALS; i++)
|
||||
tmp[i] = RpMaterialCreate();
|
||||
for(i = 0; i < NUM_PREALLOC_MATERIALS; i++)
|
||||
RpMaterialDestroy((RpMaterial*)tmp[i]);
|
||||
|
||||
delete[] tmp;
|
||||
preAlloc = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
static RwBool
|
||||
Initialise3D(void *param)
|
||||
{
|
||||
@ -765,6 +835,170 @@ tZonePrint ZonePrint[] =
|
||||
};
|
||||
|
||||
#ifndef MASTER
|
||||
|
||||
void
|
||||
PrintMemoryUsage(void)
|
||||
{
|
||||
// little hack
|
||||
if(CPools::GetPtrNodePool() == nil)
|
||||
return;
|
||||
|
||||
// Style taken from LCS, modified for III
|
||||
// CFont::SetFontStyle(FONT_PAGER);
|
||||
CFont::SetFontStyle(FONT_BANK);
|
||||
CFont::SetBackgroundOff();
|
||||
CFont::SetWrapx(640.0f);
|
||||
// CFont::SetScale(0.5f, 0.75f);
|
||||
CFont::SetScale(0.4f, 0.75f);
|
||||
CFont::SetCentreOff();
|
||||
CFont::SetCentreSize(640.0f);
|
||||
CFont::SetJustifyOff();
|
||||
CFont::SetPropOn();
|
||||
CFont::SetColor(CRGBA(200, 200, 200, 200));
|
||||
CFont::SetBackGroundOnlyTextOff();
|
||||
CFont::SetDropShadowPosition(0);
|
||||
|
||||
float y;
|
||||
|
||||
#ifdef USE_CUSTOM_ALLOCATOR
|
||||
y = 24.0f;
|
||||
sprintf(gString, "Total: %d blocks, %d bytes", gMainHeap.m_totalBlocksUsed, gMainHeap.m_totalMemUsed);
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Game: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_GAME), gMainHeap.GetMemoryUsed(MEMID_GAME));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "World: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_WORLD), gMainHeap.GetMemoryUsed(MEMID_WORLD));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Render: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_RENDER), gMainHeap.GetMemoryUsed(MEMID_RENDER));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Render List: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_RENDERLIST), gMainHeap.GetMemoryUsed(MEMID_RENDERLIST));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Default Models: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_DEF_MODELS), gMainHeap.GetMemoryUsed(MEMID_DEF_MODELS));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Textures: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_TEXTURES), gMainHeap.GetMemoryUsed(MEMID_TEXTURES));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Streaming: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_STREAM), gMainHeap.GetMemoryUsed(MEMID_STREAM));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Streamed Models: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_STREAM_MODELS), gMainHeap.GetMemoryUsed(MEMID_STREAM_MODELS));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Streamed Textures: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_STREAM_TEXUTRES), gMainHeap.GetMemoryUsed(MEMID_STREAM_TEXUTRES));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Animation: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_ANIMATION), gMainHeap.GetMemoryUsed(MEMID_ANIMATION));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Pools: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_POOLS), gMainHeap.GetMemoryUsed(MEMID_POOLS));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Collision: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_COLLISION), gMainHeap.GetMemoryUsed(MEMID_COLLISION));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Game Process: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_GAME_PROCESS), gMainHeap.GetMemoryUsed(MEMID_GAME_PROCESS));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Script: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_SCRIPT), gMainHeap.GetMemoryUsed(MEMID_SCRIPT));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Cars: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_CARS), gMainHeap.GetMemoryUsed(MEMID_CARS));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Frontend: %d blocks, %d bytes", gMainHeap.GetBlocksUsed(MEMID_FRONTEND), gMainHeap.GetMemoryUsed(MEMID_FRONTEND));
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(24.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
#endif
|
||||
|
||||
y = 132.0f;
|
||||
AsciiToUnicode("Pools usage:", gUString);
|
||||
CFont::PrintString(400.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "PtrNode: %d/%d", CPools::GetPtrNodePool()->GetNoOfUsedSpaces(), CPools::GetPtrNodePool()->GetSize());
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(400.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "EntryInfoNode: %d/%d", CPools::GetEntryInfoNodePool()->GetNoOfUsedSpaces(), CPools::GetEntryInfoNodePool()->GetSize());
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(400.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Ped: %d/%d", CPools::GetPedPool()->GetNoOfUsedSpaces(), CPools::GetPedPool()->GetSize());
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(400.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Vehicle: %d/%d", CPools::GetVehiclePool()->GetNoOfUsedSpaces(), CPools::GetVehiclePool()->GetSize());
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(400.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Building: %d/%d", CPools::GetBuildingPool()->GetNoOfUsedSpaces(), CPools::GetBuildingPool()->GetSize());
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(400.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Treadable: %d/%d", CPools::GetTreadablePool()->GetNoOfUsedSpaces(), CPools::GetTreadablePool()->GetSize());
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(400.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Object: %d/%d", CPools::GetObjectPool()->GetNoOfUsedSpaces(), CPools::GetObjectPool()->GetSize());
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(400.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "Dummy: %d/%d", CPools::GetDummyPool()->GetNoOfUsedSpaces(), CPools::GetDummyPool()->GetSize());
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(400.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
|
||||
sprintf(gString, "AudioScriptObjects: %d/%d", CPools::GetAudioScriptObjectPool()->GetNoOfUsedSpaces(), CPools::GetAudioScriptObjectPool()->GetSize());
|
||||
AsciiToUnicode(gString, gUString);
|
||||
CFont::PrintString(400.0f, y, gUString);
|
||||
y += 12.0f;
|
||||
}
|
||||
|
||||
void
|
||||
DisplayGameDebugText()
|
||||
{
|
||||
@ -777,8 +1011,10 @@ DisplayGameDebugText()
|
||||
TWEAKBOOL(bDisplayPosn);
|
||||
TWEAKBOOL(bDisplayCheatStr);
|
||||
}
|
||||
#endif
|
||||
|
||||
if(gbPrintMemoryUsage)
|
||||
PrintMemoryUsage();
|
||||
#endif
|
||||
|
||||
char str[200];
|
||||
wchar ustr[200];
|
||||
@ -1136,13 +1372,9 @@ RenderMenus(void)
|
||||
{
|
||||
if (FrontEndMenuManager.m_bMenuActive)
|
||||
{
|
||||
#ifdef PS2
|
||||
gMainHeap.PushMemId(_TODOCONST(17));
|
||||
#endif
|
||||
PUSH_MEMID(MEMID_FRONTEND);
|
||||
FrontEndMenuManager.DrawFrontEnd();
|
||||
#ifdef PS2
|
||||
gMainHeap.PopMemId();
|
||||
#endif
|
||||
POP_MEMID();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1182,21 +1414,12 @@ Idle(void *arg)
|
||||
tbEndTimer("DMAudio.Service");
|
||||
|
||||
if(CGame::bDemoMode && CTimer::GetTimeInMilliseconds() > (3*60 + 30)*1000 && !CCutsceneMgr::IsCutsceneProcessing()){
|
||||
#ifdef PS2_MENU
|
||||
TheMemoryCard.m_bWantToLoad = false;
|
||||
WANT_TO_LOAD = false;
|
||||
FrontEndMenuManager.m_bWantToRestart = true;
|
||||
#else
|
||||
FrontEndMenuManager.m_bWantToRestart = true;
|
||||
FrontEndMenuManager.m_bWantToLoad = false;
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef PS2_MENU
|
||||
if ( FrontEndMenuManager.m_bWantToRestart || TheMemoryCard.b_FoundRecentSavedGameWantToLoad )
|
||||
#else
|
||||
if(FrontEndMenuManager.m_bWantToRestart || b_FoundRecentSavedGameWantToLoad)
|
||||
#endif
|
||||
if(FrontEndMenuManager.m_bWantToRestart || FOUND_GAME_TO_LOAD)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -1242,12 +1465,12 @@ Idle(void *arg)
|
||||
|
||||
if(CWeather::LightningFlash && !CCullZones::CamNoRain()){
|
||||
if(!DoRWStuffStartOfFrame_Horizon(255, 255, 255, 255, 255, 255, 255))
|
||||
return;
|
||||
goto popret;
|
||||
}else{
|
||||
if(!DoRWStuffStartOfFrame_Horizon(CTimeCycle::GetSkyTopRed(), CTimeCycle::GetSkyTopGreen(), CTimeCycle::GetSkyTopBlue(),
|
||||
CTimeCycle::GetSkyBottomRed(), CTimeCycle::GetSkyBottomGreen(), CTimeCycle::GetSkyBottomBlue(),
|
||||
255))
|
||||
return;
|
||||
goto popret;
|
||||
}
|
||||
|
||||
DefinedState();
|
||||
@ -1295,7 +1518,7 @@ Idle(void *arg)
|
||||
CVisibilityPlugins::SetRenderWareCamera(Scene.camera);
|
||||
RwCameraClear(Scene.camera, &gColourTop, CLEARMODE);
|
||||
if(!RsCameraBeginUpdate(Scene.camera))
|
||||
return;
|
||||
goto popret;
|
||||
}
|
||||
|
||||
tbStartTimer(0, "RenderMenus");
|
||||
@ -1304,7 +1527,7 @@ Idle(void *arg)
|
||||
|
||||
#ifdef PS2_MENU
|
||||
if ( TheMemoryCard.m_bWantToLoad )
|
||||
return;
|
||||
goto popret;
|
||||
#endif
|
||||
|
||||
tbStartTimer(0, "DoFade");
|
||||
@ -1324,8 +1547,13 @@ Idle(void *arg)
|
||||
|
||||
DoRWStuffEndOfFrame();
|
||||
|
||||
POP_MEMID(); // MEMID_RENDER
|
||||
|
||||
if(g_SlowMode)
|
||||
ProcessSlowMode();
|
||||
return;
|
||||
|
||||
popret: POP_MEMID(); // MEMID_RENDER
|
||||
}
|
||||
|
||||
void
|
||||
@ -1478,14 +1706,13 @@ TheModelViewer(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef PS2
|
||||
|
||||
#ifdef GTA_PS2
|
||||
void TheGame(void)
|
||||
{
|
||||
printf("Into TheGame!!!\n");
|
||||
|
||||
#ifdef GTA_PS2
|
||||
gMainHeap.PushMemId(_TODOCONST(1));
|
||||
#endif
|
||||
PUSH_MEMID(MEMID_GAME); // NB: not popped
|
||||
|
||||
CTimer::Initialise();
|
||||
|
||||
@ -1523,78 +1750,50 @@ void TheGame(void)
|
||||
|
||||
while (true)
|
||||
{
|
||||
#ifdef PS2
|
||||
if (TheMemoryCard.m_bWantToLoad)
|
||||
#else
|
||||
if (FrontEndMenuManager.m_bWantToLoad)
|
||||
#endif
|
||||
if (WANT_TO_LOAD)
|
||||
{
|
||||
Const char *splash1 = GetLevelSplashScreen(CGame::currLevel);
|
||||
LoadSplash(splash1);
|
||||
}
|
||||
|
||||
#ifdef PS2
|
||||
TheMemoryCard.m_bWantToLoad = false;
|
||||
#else
|
||||
FrontEndMenuManager.m_bWantToLoad = false;
|
||||
#endif
|
||||
WANT_TO_LOAD = false;
|
||||
|
||||
CTimer::Update();
|
||||
|
||||
#ifdef PS2
|
||||
while (!(FrontEndMenuManager.m_bWantToRestart || TheMemoryCard.b_FoundRecentSavedGameWantToLoad))
|
||||
#else
|
||||
while (!(FrontEndMenuManager.m_bWantToRestart || b_FoundRecentSavedGameWantToLoad))
|
||||
#endif
|
||||
while (!(FrontEndMenuManager.m_bWantToRestart || FOUND_GAME_TO_LOAD))
|
||||
{
|
||||
CSprite2d::InitPerFrame();
|
||||
CFont::InitPerFrame();
|
||||
|
||||
#ifdef GTA_PS2
|
||||
gMainHeap.PushMemId(_TODOCONST(12));
|
||||
#endif
|
||||
CPointLights::NumLights = 0;
|
||||
PUSH_MEMID(MEMID_GAME_PROCESS)
|
||||
CPointLights::InitPerFrame();
|
||||
CGame::Process();
|
||||
#ifdef GTA_PS2
|
||||
gMainHeap.PopMemId();
|
||||
#endif
|
||||
POP_MEMID();
|
||||
|
||||
DMAudio.Service();
|
||||
|
||||
if (CGame::bDemoMode && CTimer::GetTimeInMilliseconds() > (3*60 + 30)*1000 && !CCutsceneMgr::IsCutsceneProcessing())
|
||||
{
|
||||
#ifdef PS2
|
||||
TheMemoryCard.m_bWantToLoad = false;
|
||||
#else
|
||||
FrontEndMenuManager.m_bWantToLoad = false;
|
||||
#endif
|
||||
WANT_TO_LOAD = false;
|
||||
FrontEndMenuManager.m_bWantToRestart = true;
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef PS2
|
||||
if (FrontEndMenuManager.m_bWantToRestart || TheMemoryCard.b_FoundRecentSavedGameWantToLoad)
|
||||
#else
|
||||
if (FrontEndMenuManager.m_bWantToRestart || b_FoundRecentSavedGameWantToLoad)
|
||||
#endif
|
||||
if (FrontEndMenuManager.m_bWantToRestart || FOUND_GAME_TO_LOAD)
|
||||
break;
|
||||
|
||||
SetLightsWithTimeOfDayColour(Scene.world);
|
||||
#ifdef GTA_PS2
|
||||
gMainHeap.PushMemId(_TODOCONST(15));
|
||||
#endif
|
||||
|
||||
PUSH_MEMID(MEMID_RENDER);
|
||||
|
||||
// m_bRenderGameInMenu is there in III PS2 but I don't know about VC PS2.
|
||||
if (!FrontEndMenuManager.m_bMenuActive || /*FrontEndMenuManager.m_bRenderGameInMenu == true && */TheCamera.GetScreenFadeStatus() != FADE_2 )
|
||||
{
|
||||
#ifdef GTA_PS2
|
||||
gMainHeap.PushMemId(_TODOCONST(11));
|
||||
#endif
|
||||
|
||||
PUSH_MEMID(MEMID_RENDERLIST);
|
||||
CRenderer::ConstructRenderList();
|
||||
CRenderer::PreRender();
|
||||
#ifdef GTA_PS2
|
||||
gMainHeap.PopMemId();
|
||||
#endif
|
||||
POP_MEMID();
|
||||
|
||||
if (CWeather::LightningFlash && !CCullZones::CamNoRain())
|
||||
DoRWStuffStartOfFrame_Horizon(255, 255, 255, 255, 255, 255, 255);
|
||||
@ -1626,15 +1825,9 @@ void TheGame(void)
|
||||
|
||||
RenderMenus();
|
||||
|
||||
#ifdef PS2
|
||||
if (TheMemoryCard.m_bWantToLoad)
|
||||
#else
|
||||
if (FrontEndMenuManager.m_bWantToLoad)
|
||||
#endif
|
||||
if (WANT_TO_LOAD)
|
||||
{
|
||||
#ifdef GTA_PS2
|
||||
gMainHeap.PopMemId();
|
||||
#endif
|
||||
POP_MEMID(); // MEMID_RENDER
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1651,9 +1844,7 @@ void TheGame(void)
|
||||
|
||||
CTimer::Update();
|
||||
|
||||
#ifdef GTA_PS2
|
||||
gMainHeap.PopMemId();
|
||||
#endif
|
||||
POP_MEMID(): // MEMID_RENDER
|
||||
|
||||
if (g_SlowMode)
|
||||
ProcessSlowMode();
|
||||
@ -1665,24 +1856,12 @@ void TheGame(void)
|
||||
CGame::ShutDownForRestart();
|
||||
CTimer::Stop();
|
||||
|
||||
#ifdef PS2
|
||||
if (FrontEndMenuManager.m_bWantToRestart || TheMemoryCard.b_FoundRecentSavedGameWantToLoad)
|
||||
#else
|
||||
if (FrontEndMenuManager.m_bWantToRestart || b_FoundRecentSavedGameWantToLoad)
|
||||
#endif
|
||||
if (FrontEndMenuManager.m_bWantToRestart || FOUND_GAME_TO_LOAD)
|
||||
{
|
||||
#ifdef PS2
|
||||
if (TheMemoryCard.b_FoundRecentSavedGameWantToLoad)
|
||||
#else
|
||||
if (b_FoundRecentSavedGameWantToLoad)
|
||||
#endif
|
||||
if (FOUND_GAME_TO_LOAD)
|
||||
{
|
||||
FrontEndMenuManager.m_bWantToRestart = true;
|
||||
#ifdef PS2
|
||||
TheMemoryCard.m_bWantToLoad = true;
|
||||
#else
|
||||
FrontEndMenuManager.m_bWantToLoad = true;
|
||||
#endif
|
||||
WANT_TO_LOAD = true;
|
||||
}
|
||||
|
||||
CGame::InitialiseWhenRestarting();
|
||||
@ -1705,7 +1884,7 @@ void SystemInit()
|
||||
mwInit();
|
||||
#endif
|
||||
|
||||
#ifdef GTA_PS2
|
||||
#ifdef USE_CUSTOM_ALLOCATOR
|
||||
InitMemoryMgr();
|
||||
#endif
|
||||
|
||||
@ -1735,7 +1914,7 @@ void SystemInit()
|
||||
#ifdef GTA_PS2
|
||||
CFileMgr::InitCd();
|
||||
|
||||
Char modulepath[256];
|
||||
char modulepath[256];
|
||||
|
||||
strcpy(modulepath, "cdrom0:\\");
|
||||
strcat(modulepath, "SYSTEM\\");
|
||||
@ -1822,7 +2001,7 @@ void SystemInit()
|
||||
//
|
||||
#endif
|
||||
|
||||
#ifdef PS2
|
||||
#ifdef GTA_PS2
|
||||
TheMemoryCard.Init();
|
||||
#endif
|
||||
}
|
||||
@ -1851,7 +2030,7 @@ void GameInit()
|
||||
#endif
|
||||
CdStreamInit(MAX_CDCHANNELS);
|
||||
|
||||
#ifdef PS2
|
||||
#ifdef GTA_PS2
|
||||
Initialise3D(); //no params
|
||||
#else
|
||||
//TODO
|
||||
@ -1958,21 +2137,18 @@ void GameInit()
|
||||
CreateDebugFont();
|
||||
|
||||
#ifdef GTA_PS2
|
||||
AddIntcHandler(_TODOCONST(2), VBlankCounter, 0);
|
||||
AddIntcHandler(INTC_VBLANK_S, VBlankCounter, 0);
|
||||
#endif
|
||||
|
||||
CameraSize(Scene.camera, NULL, DEFAULT_VIEWWINDOW, DEFAULT_ASPECT_RATIO);
|
||||
|
||||
CSprite2d::SetRecipNearClip();
|
||||
CTxdStore::Initialise();
|
||||
#ifdef GTA_PS2
|
||||
gMainHeap.PushMemId(_TODOCONST(9));
|
||||
#endif
|
||||
|
||||
PUSH_MEMID(MEMID_TEXTURES);
|
||||
CFont::Initialise();
|
||||
CHud::Initialise();
|
||||
#ifdef GTA_PS2
|
||||
gMainHeap.PopMemId();
|
||||
#endif
|
||||
POP_MEMID();
|
||||
|
||||
ValidateVersion();
|
||||
|
||||
@ -2000,11 +2176,10 @@ main(int argc, char *argv[])
|
||||
|
||||
SystemInit();
|
||||
|
||||
#ifdef PS2
|
||||
#ifdef GTA_PS2
|
||||
int32 r = TheMemoryCard.CheckCardStateAtGameStartUp(CARD_ONE);
|
||||
|
||||
if ( r == CMemoryCard::ERR_DIRNOENTRY || r == CMemoryCard::ERR_NOFORMAT
|
||||
&& r != CMemoryCard::ERR_OPENNOENTRY && r != CMemoryCard::ERR_NONE )
|
||||
if ( r == CMemoryCard::ERR_DIRNOENTRY || r == CMemoryCard::ERR_NOFORMAT )
|
||||
{
|
||||
GameInit();
|
||||
|
||||
@ -2014,6 +2189,8 @@ main(int argc, char *argv[])
|
||||
CFont::Initialise();
|
||||
|
||||
FrontEndMenuManager.DrawMemoryCardStartUpMenus();
|
||||
}else if(r == CMemoryCard::ERR_OPENNOENTRY || r == CMemoryCard::ERR_NONE){
|
||||
// eh?
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -2024,12 +2201,18 @@ main(int argc, char *argv[])
|
||||
|
||||
InitMPEGPlayer();
|
||||
|
||||
#ifdef GTA_PAL
|
||||
PlayMPEG("cdrom0:\\MOVIES\\DMAPAL.PSS;1", false);
|
||||
|
||||
if (CGame::frenchGame || CGame::germanGame)
|
||||
PlayMPEG("cdrom0:\\MOVIES\\INTROPAF.PSS;1", true);
|
||||
else
|
||||
PlayMPEG("cdrom0:\\MOVIES\\INTROPAL.PSS;1", true);
|
||||
#else
|
||||
PlayMPEG("cdrom0:\\MOVIES\\DMANTSC.PSS;1", false);
|
||||
|
||||
PlayMPEG("cdrom0:\\MOVIES\\INTRNTSC.PSS;1", true);
|
||||
#endif
|
||||
|
||||
ShutdownMPEGPlayer();
|
||||
|
||||
|
@ -20,11 +20,16 @@ extern bool gbShowTimebars;
|
||||
#define gbShowTimebars false
|
||||
#endif
|
||||
|
||||
#ifndef FINAL
|
||||
extern bool gbPrintMemoryUsage;
|
||||
#endif
|
||||
|
||||
class CSprite2d;
|
||||
|
||||
bool DoRWStuffStartOfFrame(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomRed, int16 BottomGreen, int16 BottomBlue, int16 Alpha);
|
||||
bool DoRWStuffStartOfFrame_Horizon(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomRed, int16 BottomGreen, int16 BottomBlue, int16 Alpha);
|
||||
void DoRWStuffEndOfFrame(void);
|
||||
void PreAllocateRwObjects(void);
|
||||
void InitialiseGame(void);
|
||||
void LoadingScreen(const char *str1, const char *str2, const char *splashscreen);
|
||||
void LoadingIslandScreen(const char *levelName);
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include "MBlur.h"
|
||||
#include "postfx.h"
|
||||
#include "custompipes.h"
|
||||
#include "MemoryHeap.h"
|
||||
|
||||
#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
|
||||
#include "FileMgr.h"
|
||||
@ -648,6 +649,15 @@ extern bool gbRenderWorld2;
|
||||
DebugMenuAddVarBool8("Render", "Don't render Objects", &gbDontRenderObjects, nil);
|
||||
DebugMenuAddVarBool8("Render", "Don't Render Water", &gbDontRenderWater, nil);
|
||||
|
||||
#ifndef FINAL
|
||||
DebugMenuAddVarBool8("Debug", "Print Memory Usage", &gbPrintMemoryUsage, nil);
|
||||
#ifdef USE_CUSTOM_ALLOCATOR
|
||||
DebugMenuAddCmd("Debug", "Parse Heap", ParseHeap);
|
||||
#endif
|
||||
#endif
|
||||
DebugMenuAddVarBool8("Debug", "Show cullzone debug stuff", &gbShowCullZoneDebugStuff, nil);
|
||||
DebugMenuAddVarBool8("Debug", "Disable zone cull", &gbDisableZoneCull, nil);
|
||||
|
||||
DebugMenuAddVarBool8("Debug", "pad 1 -> pad 2", &CPad::m_bMapPadOneToPadTwo, nil);
|
||||
#ifdef GTA_SCENE_EDIT
|
||||
DebugMenuAddVarBool8("Debug", "Edit on", &CSceneEdit::m_bEditOn, nil);
|
||||
|
@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
template<typename T, int n>
|
||||
template<typename T, int32 n>
|
||||
class CStore
|
||||
{
|
||||
public:
|
||||
|
Reference in New Issue
Block a user