Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

109 lines
3.0 KiB
C++

//===========================================================================//
// File: GlobalPointerManager.cpp
// Project: Adept
// Contents: GlobalPointers
//---------------------------------------------------------------------------//
// Date Who Modification
// -------- --- -----------------------------------------------------------//
// 07/08/00 JSE Initial Coding
//---------------------------------------------------------------------------//
// Copyright (C) 2000, Microsoft Corp.
// All Rights reserved worldwide
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL
//===========================================================================//
#include "AdeptHeaders.hpp"
#include "GlobalPointerManager.hpp"
GlobalPointers
*GlobalPointers::globalPointer = NULL;
int
*GlobalPointers::globalKey = NULL;
void Adept::AdeptGlobalPointerSecurityCheckStart()
{
_asm
{
nop
}
}
void GlobalPointers::InitializeClass()
{
globalKey = new int;
*globalKey = Random::GetInt();
globalPointer = new GlobalPointers;
for (int i = 0; i < 30; ++i)
{
globalPointer->m_pointerArray[i] = Cast_Pointer(GlobalPointers *, (0 ^ 0x85739531));
}
//globalPointer ^= *globalKey;
globalPointer = reinterpret_cast<GlobalPointers *>( ((int)globalPointer ^ *globalKey));
}
void GlobalPointers::TerminateClass()
{
//globalPointer ^= *globalKey;
globalPointer = reinterpret_cast<GlobalPointers *>( ((int)globalPointer ^ *globalKey));
delete globalPointer;
delete globalKey;
}
void GlobalPointers::ClearPointer(int pointer_index)
{
GlobalPointers *pointer = reinterpret_cast<GlobalPointers *>( ((int)globalPointer ^ *globalKey));
pointer->m_pointerArray[pointer_index] = reinterpret_cast<GlobalPointers *>( (0 ^ 0x85739531));
}
void GlobalPointers::AddGlobalPointer(void *add_pointer, int pointer_index)
{
Verify(pointer_index < 30);
//GlobalPointers *pointer = globalPointer ^ *globalKey;
GlobalPointers *pointer = reinterpret_cast<GlobalPointers *>( ((int)globalPointer ^ *globalKey));
pointer->m_pointerArray[pointer_index] = reinterpret_cast<void*>(((int)add_pointer ^ 0x85739531));
}
void GlobalPointers::MoveGlobals()
{
GLOBAL_POINTER("Move");
GlobalPointers *new_pointer = new GlobalPointers;
//globalPointer ^= *globalKey;
globalPointer = reinterpret_cast<GlobalPointers *>( ((int)globalPointer ^ *globalKey));
for (int i = 0; i < 30; ++i)
{
new_pointer->m_pointerArray[i] = globalPointer->m_pointerArray[i];
}
delete globalPointer;
delete globalKey;
globalKey = new int;
*globalKey = Random::GetInt();
globalPointer = new_pointer;
//globalPointer ^= *globalKey;
globalPointer = reinterpret_cast<GlobalPointers *>( ((int)globalPointer ^ *globalKey));
}
void Adept::AdeptGlobalPointerSecurityCheckStop()
{
_asm
{
nop
}
}