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.
199 lines
5.7 KiB
C++
199 lines
5.7 KiB
C++
#include "StuffHeaders.hpp"
|
|
#include "eh.h"
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Stuff::Flood_Memory_With_NAN(
|
|
void *where,
|
|
size_t how_much
|
|
)
|
|
{
|
|
Verify(!(reinterpret_cast<int>(where)&3));
|
|
Check_Pointer(where);
|
|
long *filler = Cast_Pointer(long *, where);
|
|
for (int i = how_much >> 2; i; --i)
|
|
{
|
|
*filler++ = SNAN_NEGATIVE_LONG;
|
|
}
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
__cdecl Terminate_Handler()
|
|
{
|
|
STOP(("Unhandled exception"));
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
static bool __stdcall Check_0() {return ArmorLevel == 0;}
|
|
static bool __stdcall Check_1() {return ArmorLevel == 1;}
|
|
static bool __stdcall Check_2() {return ArmorLevel == 2;}
|
|
static bool __stdcall Check_3() {return ArmorLevel == 3;}
|
|
static bool __stdcall Check_4() {return ArmorLevel == 4;}
|
|
|
|
static void __stdcall Activate_0() {ArmorLevel = 0;}
|
|
static void __stdcall Activate_1() {ArmorLevel = 1;}
|
|
static void __stdcall Activate_2() {ArmorLevel = 2;}
|
|
static void __stdcall Activate_3() {ArmorLevel = 3;}
|
|
static void __stdcall Activate_4() {ArmorLevel = 4;}
|
|
|
|
static bool
|
|
__stdcall Greyed()
|
|
{
|
|
#if defined(_ARMOR)
|
|
return false;
|
|
#else
|
|
return true;
|
|
#endif
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
static bool __stdcall Check_4hz() {return Environment.MaxTimeDelta == 0.25f;}
|
|
static bool __stdcall Check_40hz() {return Environment.MaxTimeDelta == 0.025f;}
|
|
static bool __stdcall Check_400hz() {return Environment.MaxTimeDelta == 0.0025f;}
|
|
|
|
static void __stdcall Activate_4hz() {Environment.MaxTimeDelta = Environment.MinimumTimeDelta = 0.25f;}
|
|
static void __stdcall Activate_40hz() {Environment.MaxTimeDelta = Environment.MinimumTimeDelta = 0.025f;}
|
|
static void __stdcall Activate_400hz() {Environment.MaxTimeDelta = Environment.MinimumTimeDelta = 0.0025f;}
|
|
|
|
HGOSHEAP
|
|
Stuff::g_Heap = NULL,
|
|
Stuff::g_LibraryHeap = NULL;
|
|
|
|
bool Stuff::g_StuffInitizlized = true;
|
|
extern bool(__cdecl *NoCDMessageFunction)();
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Stuff::InitializeClasses(
|
|
unsigned slot_link_count,
|
|
unsigned chain_link_count,
|
|
unsigned safe_chain_link_count,
|
|
unsigned class_id_count
|
|
)
|
|
{
|
|
set_terminate(Terminate_Handler);
|
|
|
|
Verify(!g_LibraryHeap);
|
|
g_LibraryHeap = gos_CreateMemoryHeap("Stuff(All)");
|
|
Check_Pointer(g_LibraryHeap);
|
|
|
|
Verify(!g_Heap);
|
|
g_Heap = gos_CreateMemoryHeap("Stuff", 0, g_LibraryHeap);
|
|
Check_Pointer(g_Heap);
|
|
gos_PushCurrentHeap(g_Heap);
|
|
|
|
#if !defined(NO_STATS)
|
|
StatisticFormat("");
|
|
StatisticFormat("Stuff");
|
|
StatisticFormat("=====");
|
|
StatisticFormat("");
|
|
#endif
|
|
|
|
|
|
//
|
|
//-------------------------------------------------
|
|
// First, Initialize all the non registered classes
|
|
//-------------------------------------------------
|
|
//
|
|
Verify(FirstFreeStuffClassID <= LastStuffClassID);
|
|
MString::InitializeClass();
|
|
RegisteredClass::InitializeClass(class_id_count);
|
|
Plug::InitializeClass();
|
|
|
|
SlotLink::InitializeClass(slot_link_count);
|
|
ChainLink::InitializeClass(chain_link_count);
|
|
SafeChainLink::InitializeClass(safe_chain_link_count);
|
|
|
|
Verify(!FileStreamManager::Instance);
|
|
FileStreamManager::Instance = new FileStreamManager;
|
|
|
|
Random::InitializeClass();
|
|
|
|
//
|
|
//----------------------------------------------
|
|
// Now, initialize all of the registered classes
|
|
//----------------------------------------------
|
|
//
|
|
MemoryStream::InitializeClass();
|
|
FileStream::InitializeClass();
|
|
|
|
//
|
|
//------------------------------------
|
|
// Build the quatenion fast lerp table
|
|
//------------------------------------
|
|
//
|
|
|
|
|
|
UnitQuaternion::InitializeClass();
|
|
|
|
//
|
|
//-------------------
|
|
// Add the armor menu
|
|
//-------------------
|
|
//
|
|
AddDebuggerMenuItem("Libraries\\Stuff\\Armor Level 0", Check_0, Activate_0, Greyed );
|
|
AddDebuggerMenuItem("Libraries\\Stuff\\Armor Level 1", Check_1, Activate_1, Greyed );
|
|
AddDebuggerMenuItem("Libraries\\Stuff\\Armor Level 2", Check_2, Activate_2, Greyed );
|
|
AddDebuggerMenuItem("Libraries\\Stuff\\Armor Level 3", Check_3, Activate_3, Greyed );
|
|
AddDebuggerMenuItem("Libraries\\Stuff\\Armor Level 4", Check_4, Activate_4, Greyed );
|
|
|
|
AddDebuggerMenuItem("Libraries\\Stuff\\4hz min", Check_4hz, Activate_4hz, NULL );
|
|
AddDebuggerMenuItem("Libraries\\Stuff\\40hz min", Check_40hz, Activate_40hz, NULL );
|
|
AddDebuggerMenuItem("Libraries\\Stuff\\400hz min", Check_400hz, Activate_400hz, NULL );
|
|
|
|
gos_PopCurrentHeap();
|
|
|
|
g_StuffInitizlized = true;
|
|
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Stuff::TerminateClasses()
|
|
{
|
|
//
|
|
//-----------------------------------------------
|
|
// First, terminate all of the registered classes
|
|
//-----------------------------------------------
|
|
//
|
|
UnitQuaternion::TerminateClass();
|
|
|
|
|
|
FileStream::TerminateClass();
|
|
MemoryStream::TerminateClass();
|
|
|
|
//
|
|
//-----------------------------------------------
|
|
// Then, terminate all the non registered classes
|
|
//-----------------------------------------------
|
|
//
|
|
Random::TerminateClass();
|
|
|
|
Check_Pointer(FileStreamManager::Instance);
|
|
delete FileStreamManager::Instance;
|
|
FileStreamManager::Instance = NULL;
|
|
|
|
SafeChainLink::TerminateClass();
|
|
ChainLink::TerminateClass();
|
|
SlotLink::TerminateClass();
|
|
|
|
Plug::TerminateClass();
|
|
RegisteredClass::TerminateClass();
|
|
MString::TerminateClass();
|
|
|
|
Check_Pointer(g_Heap);
|
|
gos_DestroyMemoryHeap(g_Heap);
|
|
g_Heap = NULL;
|
|
|
|
Check_Pointer(g_LibraryHeap);
|
|
gos_DestroyMemoryHeap(g_LibraryHeap);
|
|
g_LibraryHeap = NULL;
|
|
}
|