diff --git a/decompile/Makefile b/decompile/Makefile index 1337f62..5e468b5 100644 --- a/decompile/Makefile +++ b/decompile/Makefile @@ -2,7 +2,7 @@ # An NMAKE Makefile to compile the game with the Visual C++ 7.0 toolchain # All object files to link together -OBJ = src/JSRF/Jet2.obj src/JSRF/Core.obj src/JSRF/GameData.obj\ +OBJ = src/JSRF/Jet2.obj src/JSRF/Action.obj src/JSRF/SaveData.obj\ src/XDK/Xapi/xapi0.obj # Import library for the only thing we don't compile ourselves, the Xbox kernel @@ -38,12 +38,12 @@ src/JSRF/Jet2.exe: $(OBJ) $(LIB) # Header files used for each object -src/JSRF/Jet2.obj: src/JSRF/Core.hpp src/XDK/CRT/stddef.h src/XDK/D3D.h\ +src/JSRF/Jet2.obj: src/JSRF/Action.hpp src/XDK/CRT/stddef.h src/XDK/D3D.h\ src/XDK/Win32.h -src/JSRF/Core.obj: src/JSRF/Core.hpp src/MUSASHI/MMatrix.hpp\ - src/XDK/CRT/stddef.h src/XDK/D3D.h src/XDK/Win32.h +src/JSRF/Action.obj: src/JSRF/Action.hpp src/MUSASHI/MMatrix.hpp\ + src/XDK/CRT/stddef.h src/XDK/D3D.h src/XDK/Win32.h -src/JSRF/GameData.obj: src/JSRF/GameData.hpp +src/JSRF/SaveData.obj: src/JSRF/SaveData.hpp src/XDK/Xapi/xapi0.obj: src/XDK/Win32.h diff --git a/decompile/objdiff.json b/decompile/objdiff.json index 2464cb1..10bce88 100644 --- a/decompile/objdiff.json +++ b/decompile/objdiff.json @@ -24,21 +24,25 @@ } }, { - "name": "JSRF/Core", - "target_path": "target/JSRF/Core.obj", - "base_path": "src/JSRF/Core.obj", + "name": "JSRF/Action", + "target_path": "target/JSRF/Action.obj", + "base_path": "src/JSRF/Action.obj", "metadata": { "complete": false, - "source_path": "src/JSRF/Core.cpp" + "source_path": "src/JSRF/Action.cpp" + }, + "symbol_mappings": { + "?nopMethod0Arg@CActBase@@UAEXXZ": "?Exec0Default@CActBase@@UAEXXZ", + "?nopMethod1Arg@CActBase@@UAEXI@Z": "?DrawListDefault@CActBase@@UAEXI@Z" } }, { - "name": "JSRF/GameData", - "target_path": "target/JSRF/GameData.obj", - "base_path": "src/JSRF/GameData.obj", + "name": "JSRF/SaveData", + "target_path": "target/JSRF/SaveData.obj", + "base_path": "src/JSRF/SaveData.obj", "metadata": { "complete": false, - "source_path": "src/JSRF/GameData.cpp" + "source_path": "src/JSRF/SaveData.cpp" }, "symbol_mappings": { "?finalizeGameData@@YAXXZ": "_$E2", diff --git a/decompile/src/JSRF/Action.cpp b/decompile/src/JSRF/Action.cpp new file mode 100644 index 0000000..c47aa0d --- /dev/null +++ b/decompile/src/JSRF/Action.cpp @@ -0,0 +1,595 @@ +/* JSRF Decompilation: JSRF/Action.cpp +CActMan and CActBase classes that form the foundation of the JSRF game code. +*/ + +#pragma bss_seg(".data") + +#include "../XDK/CRT/stddef.h" +#include "Action.hpp" + +// Declarations for symbols not yet defined in their own source files +// Remove these once they've been delinked! +void readInput(); + +// Address: 0x00011000 +// Status: unimplemented +CActBase::~CActBase() { + g_lpActMan->m_dwActCount -= 1; +} + +// Address: 0x00011070 +// Status: unimplemented +void CActBase::recursiveExec0Default() { +} + +// Address: 0x000110A0 +// Status: unimplemented +void CActBase::drawManyDefault( + eACTFLAG flagFilterAny1, + int drawArg1, + int drawArg2, + eACTFLAG flagFilterAll, + unsigned otherBitfieldFilterAny, + eACTFLAG flagFilterNone, + eACTFLAG flagFilterAny2 +) { +} + +// Address: 0x00011220 +// Status: unimplemented +void CActBase::drawTreeDefault1() { +} + +// Address: 0x00011260 +// Status: unimplemented +void CActBase::drawTreeDefault2() { +} + +// Address: 0x000112A0 +// Status: unimplemented +void CActBase::recursiveExec0Event() { +} + +// Address: 0x000112D0 +// Status: unimplemented +void CActBase::drawManyEvent( + eACTFLAG flagFilterAny1, + int drawArg1, + int drawArg2, + eACTFLAG flagFilterAll, + unsigned otherBitfieldFilterAny, + eACTFLAG flagFilterNone, + eACTFLAG flagFilterAny2 +) { +} + +// Address: 0x00011450 +// Status: unimplemented +void CActBase::drawTreeEvent1() { +} + +// Address: 0x00011490 +// Status: unimplemented +void CActBase::drawTreeEvent2() { +} + +// Address: 0x000114D0 +// Status: unimplemented +void CActBase::recursiveExec0CoveredPause() { +} + +// Address: 0x00011500 +// Status: unimplemented +void CActBase::drawManyCoveredPause( + eACTFLAG flagFilterAny1, + int drawArg1, + int drawArg2, + eACTFLAG flagFilterAll, + unsigned otherBitfieldFilterAny, + eACTFLAG flagFilterNone, + eACTFLAG flagFilterAny2 +) { +} + +// Address: 0x00011680 +// Status: unimplemented +void CActBase::drawTreeCoveredPause1() { +} + +// Address: 0x000116C0 +// Status: unimplemented +void CActBase::drawTreeCoveredPause2() { +} + +// Address: 0x00011700 +// Status: unimplemented +void CActBase::recursiveExec0FreezeCam() { +} + +// Address: 0x00011730 +// Status: unimplemented +void CActBase::drawManyFreezeCam( + eACTFLAG flagFilterAny1, + int drawArg1, + int drawArg2, + eACTFLAG flagFilterAll, + unsigned otherBitfieldFilterAny, + eACTFLAG flagFilterNone, + eACTFLAG flagFilterAny2 +) { +} + +// Address: 0x000118B0 +// Status: unimplemented +void CActBase::drawTreeFreezeCam1() { +} + +// Address: 0x000118F0 +// Status: unimplemented +void CActBase::drawTreeFreezeCam2() { +} + +// Address: 0x00011930 +// Status: unimplemented +void CActBase::recursiveExec0UncoveredPause() { +} + +// Address: 0x00011960 +// Status: unimplemented +void CActBase::drawManyUncoveredPause( + eACTFLAG flagFilterAny1, + int drawArg1, + int drawArg2, + eACTFLAG flagFilterAll, + unsigned otherBitfieldFilterAny, + eACTFLAG flagFilterNone, + eACTFLAG flagFilterAny2 +) { +} + +// Address: 0x00011AE0 +// Status: unimplemented +void CActBase::drawTreeUncoveredPause1() { +} + +// Address: 0x00011B20 +// Status: unimplemented +void CActBase::drawTreeUncoveredPause2() { +} + +// Address: 0x00011B60 +// Status: unimplemented +void CActBase::insertActionTreeSub(CActBase * lpSibling, CActBase * lpParent) { +} + +// Address: 0x00011B90 +// Status: unimplemented +void CActBase::deleteActionChild(CActBase * lpChild) { +} + +// Address: 0x00011BD0 +// Status: matching +CActBase * CActBase::getParentAction() { + return this->m_lpParent; +} + +// Address: 0x00011BE0 +// Status: unimplemented +void CActBase::SetDelete(CActBase * lpAct) { + if (lpAct->m_ActFlag > -1) { + } +} + +// Address: 0x00011C20 +// Status: nonmatching +void CActBase::SetDeleteChild(CActBase * lpChild) { + if (lpChild != NULL) do { + if (lpChild->m_ActFlag > -1) { + lpChild->m_ActFlag = eACTFLAG(lpChild->m_ActFlag | eACTFLAG_DELETE); + g_lpActMan->DeleteDrawList(lpChild); + g_lpActMan->FreeActID(lpChild->m_ActID); + } + + this->SetDeleteChild(lpChild->m_lpChild); + lpChild = lpChild->m_lpSiblingNext; + } while (lpChild != NULL); +} + +// Address: 0x00011C80 +// Status: matching +void CActBase::DrawListDefault(unsigned unknown) {} + +// Address: 0x00011C90 +// Status: matching +void CActBase::Exec0Default() {} + +// Eliminated by link time code generation (aliased with 0x00011C90) +void CActBase::Exec1Default() {} + +// Eliminated by link time code generation (aliased with 0x00011C90) +void CActBase::Exec0Event() {} + +// Eliminated by link time code generation (aliased with 0x00011C90) +void CActBase::Exec1Event() {} + +// Eliminated by link time code generation (aliased with 0x00011C80) +void CActBase::DrawListEvent(unsigned unknown) {} + +// Eliminated by link time code generation (aliased with 0x00011C90) +void CActBase::Exec0CoveredPause() {} + +// Eliminated by link time code generation (aliased with 0x00011C90) +void CActBase::Exec1CoveredPause() {} + +// Eliminated by link time code generation (aliased with 0x00011C80) +void CActBase::DrawListCoveredPause(unsigned unknown) {} + +// Eliminated by link time code generation (aliased with 0x00011C90) +void CActBase::Exec0FreezeCam() {} + +// Eliminated by link time code generation (aliased with 0x00011C90) +void CActBase::Exec1FreezeCam() {} + +// Eliminated by link time code generation (aliased with 0x00011C80) +void CActBase::DrawListFreezeCam(unsigned unknown) {} + +// Eliminated by link time code generation (aliased with 0x00011C90) +void CActBase::Exec0UncoveredPause() {} + +// Eliminated by link time code generation (aliased with 0x00011C90) +void CActBase::Exec1UncoveredPause() {} + +// Eliminated by link time code generation (aliased with 0x00011C80) +void CActBase::DrawListUncoveredPause(unsigned unknown) {} + +// Address: 0x00011CA0 +// Status: unimplemented +void CDrawBase::copySomeVectors() { +} + +// Address: 0x00011D00 +// Status: unimplemented +void CActBase::recursiveExec1Default() { +} + +// Address: 0x00011D00 +// Status: unimplemented +void CActBase::recursiveExec1Event() { +} + +// Address: 0x00011E40 +// Status: unimplemented +void CActBase::recursiveExec1CoveredPause() { +} + +// Address: 0x00011EE0 +// Status: unimplemented +void CActBase::recursiveExec1FreezeCam() { +} + +// Address: 0x00011F80 +// Status: unimplemented +void CActBase::recursiveExec1UncoveredPause() { +} + +// Address: 0x00012020 +// Status: unimplemented +void CActBase::insertActionTree(CActBase * lpParent) { +} + +// Address: 0x00012100 +// Status: unimplemented +CActBase::CActBase(CActBase * lpParent, eACTID ActID, eACTFLAG ActFlag) { + g_lpActMan->InsertActionExecList(ActID, this); + + this->m_lpParent = NULL; + this->m_lpChild = NULL; + this->m_lpSiblingBefore = NULL; + this->m_lpSiblingNext = NULL; + this->m_ActID = ActID; + this->m_ActFlag = ActFlag; + + this->insertActionTree(lpParent); + + this->m_dwZSort = 0; + this->m_dwDrawChildMask = 1; + + g_lpActMan->m_dwActCount += 1; +} + +// Address: 0x00012170 +// Status: matching +CDrawBase::CDrawBase(CActBase * lpParent, eACTID ActID, eACTFLAG ActFlag) : + CActBase(lpParent, ActID, ActFlag) { + this->m_dwDrawChildMask = 7; + this->m_SomeActID = eACTID(0); +} + +// Address: 0x000121D0 +// Status: unimplemented +CDrawBase::~CDrawBase() {} + +// Address: 0x000121E0 +// Status: unimplemented +CPlayer::CPlayer(CActBase * lpParent, eACTID ActID, eACTFLAG ActFlag) : + CActBase(lpParent, ActID, ActFlag) { + this->unknown0x44 = 0; + this->unknown0x48 = 0; +} + +// Eliminated by link time code generation (aliased with 0x000121D0) +CPlayer::~CPlayer() {} + +// Address: 0x00012210 +// Status: unimplemented +CActMan::CActMan(unsigned * unknown1, unsigned unknown2) { +} + +// Address: 0x00012390 +// Status: unimplemented +CActMan::~CActMan() { +} + +// Address: 0x000123E0 +// Status: unimplemented +void CActMan::ActionExec() { +} + +// Address: 0x00012580 +// Status: unimplemented +void CActMan::drawOne(CActBase * lpAct, unsigned unknown) { +} + +// Address: 0x000125E0 +// Status: unimplemented +void CActMan::drawListSub( + eACTFLAG flagFilterAny1, + int drawArg1, + int drawArg2, + eACTFLAG flagFilterAll, + unsigned otherBitfieldFilterAny, + eACTFLAG flagFilterNone, + eACTFLAG flagFilterAny2 +) { +} + +// Address: 0x00012680 +// Status: unimplemented +void CActMan::drawTree1(CActBase * lpAct) { +} + +// Address: 0x000126D0 +// Status: unimplemented +void CActMan::setCoveredPauseNextFrame(BOOL bVal) { +} + +// Address: 0x000126F0 +// Status: unimplemented +void CActMan::setEventNextFrame(BOOL bVal) { +} + +// Address: 0x00012710 +// Status: unimplemented +void CActMan::setFreezeCamNextFrame(BOOL bVal) { +} + +// Address: 0x00012730 +// Status: unimplemented +void CActMan::setUncoveredPauseNextFrame(BOOL bVal) { +} + +// Address: 0x00012750 +// Status: matching +void CActMan::DrawChildren() { + this->m_bDrawChildren = TRUE; +} + +// Address: 0x00012760 +// Status: matching +void CActMan::DrawSkip() { + this->m_bSkipDraw = TRUE; +} + +// Address: 0x00012770 +// Status: unimplemented +void CActMan::Fatal() { +} + +// Address: 0x000127B0 +// Status: matching +void CActMan::SetDrawMode(eDRAWMODE Mode) { + this->m_DrawMode = Mode; +} + +// Address: 0x000127C0 +// Status: matching +void CActMan::SetGlobal(eGLOBAL Index, DWORD dwVal) { + this->m_Globals[Index] = dwVal; +} + +// Address: 0x000127E0 +// Status: matching +DWORD CActMan::GetGlobal(eGLOBAL Index) { + return this->m_Globals[Index]; +} + +// Address: 0x000127F0 +// Status: unimplemented +void CActMan::InsertDrawList(CActBase * lpAct) { +} + +// Address: 0x00012840 +// Status: unimplemented +void CActMan::DeleteDrawList(CActBase * lpAct) { +} + +// Address: 0x00012870 +// Status: matching +void CActMan::InsertActionExecList(eACTID ActID, CActBase * lpAct) { + if (0 <= ActID && ActID < eACTID_NUM) + this->m_lpActTbl[ActID] = lpAct; +} + +// Address: 0x00012890 +// Status: matching +void CActMan::FreeActID(eACTID ActID) { + if (0 <= ActID && this->m_lpActTbl[ActID] != NULL) + this->m_lpActTbl[ActID] = NULL; +} + +// Address: 0x000128C0 +// Status: matching +CActBase * CActMan::GetAction(eACTID ActID) { + return 0 <= ActID ? this->m_lpActTbl[ActID] : NULL; +} + +// Address: 0x000128E0 +// Status: matching +int CActMan::GetFreeActionID(eACTID Min, eACTID Max) { + if (Min <= Max) do + if (this->m_lpActTbl[Min] == NULL) return Min; + else Min = eACTID(Min + 1); + while (Min <= Max); + + return -1; +} + +// Address: 0x00012910 +// Status: matching +BOOL CActMan::ActionIDAvail(eACTID ActID) { + return this->m_lpActTbl[ActID] == NULL; +} + +// Address: 0x00012930 +// Status: matching +void CActMan::SwapActID(eACTID ActID1, eACTID ActID2) { + CActBase * tmp = this->m_lpActTbl[ActID1]; + this->m_lpActTbl[ActID1] = this->m_lpActTbl[ActID2]; + this->m_lpActTbl[ActID2] = tmp; + + if (this->m_lpActTbl[ActID1] != NULL) this->m_lpActTbl[ActID1]->m_ActID = ActID1; + if (this->m_lpActTbl[ActID2] != NULL) this->m_lpActTbl[ActID2]->m_ActID = ActID2; +} + +// Address: 0x00012980 +// Status: unimplemented +void CActMan::ClearScreen() { +} + +// Address: 0x000129B0 +// Status: matching +void CActMan::EnableSomeExtraDrawListCode() { + this->m_bRunSomeExtraDrawListCode = TRUE; +} + +// Address: 0x000129C0 +// Status: matching +void CActMan::SetLogosStarted(BOOL bVal) { + this->m_bLogosStarted = bVal; +} + +// Address: 0x000129D0 +// Status: matching +void CActMan::initSortDrawList() { + this->m_lpDrawSortRoot = NULL; + this->m_lplpDrawSortPtr = &g_lpActMan->m_lpDrawSortRoot; +} + +// Address: 0x000129F0 +// Status: matching +CActBase * CActMan::getSortList() { + return this->m_lpDrawSortRoot; +} + +// Address: 0x00012A00 +// Status: matching +void CActMan::InsertDrawSortList(CActBase * lpAct) { + lpAct->m_lpDrawNext = NULL; + *this->m_lplpDrawSortPtr = lpAct; + this->m_lplpDrawSortPtr = &lpAct->m_lpDrawNext; +} + +// Address: 0x00012A20 +// Status: unimplemented +void CActMan::SortListSub(unsigned char ucSortKeyBitOffset) { + for ( + unsigned i = 0; + i < sizeof this->m_lpDrawSortBinRoots/sizeof *this->m_lpDrawSortBinRoots; + i++ + ) this->m_lpDrawSortBinRoots[i] = NULL; +} + +// Address: 0x00012AC0 +// Status: matching +void CActMan::SetFallbackBgColor(D3DCOLOR Color, BOOL bUseFallback) { + this->m_bUseFallbackBgColor = bUseFallback; + this->m_BgColorFallback = Color; +} + +// Address: 0x00012AE0 +// Status: unimplemented +CActRoot::CActRoot(CActBase * lpParent, eACTID ActID, eACTFLAG ActFlag) : + CActBase(lpParent, ActID, ActFlag) { +} + +// Address: 0x00012BE0 +// Status: matching +CActRoot::~CActRoot() { +} + +// Address: 0x00012C10 +// Status: unimplemented +void CActMan::Init() { +} + +// Address: 0x00012C80 +// Status: unimplemented +void CActMan::drawMany(eACTFLAG flagFilterAll, BOOL unknown) { +} + +// Address: 0x000131A0 +// Status: nonmatching +void CActMan::sortDrawList() { + this->SortListSub(0x00); + this->SortListSub(0x08); + this->SortListSub(0x10); + this->SortListSub(0x18); +} + +// Address: 0x000131F0 +// Status: unimplemented +void CActMan::drawSub() { +} + +// Address: 0x00013930 +// Status: unimplemented +void CActMan::draw() { +} + +// Address: 0x00013A80 +// Status: unimplemented +void CActMan::IdleSub() { + readInput(); +} + +// Address: 0x00013F80 +// Status: matching +int CActMan::Idle() { + if (this->m_InitState >= 0) while (true) { + if (!this->m_bFatal) this->IdleSub(); + else { + readInput(); + Sleep(0x10); + } + } else return -1; +} + +// Address: 0x00013FC0 +// Status: nonmatching +void SetActionDelete(eACTID ActID) { + CActBase * lpAct = g_lpActMan->GetAction(ActID); + if (lpAct != NULL) { + lpAct->SetDelete(lpAct); + lpAct->SetDeleteChild(lpAct->m_lpChild); + } +} diff --git a/decompile/src/JSRF/Action.hpp b/decompile/src/JSRF/Action.hpp new file mode 100644 index 0000000..38050a5 --- /dev/null +++ b/decompile/src/JSRF/Action.hpp @@ -0,0 +1,550 @@ +/* JSRF Decompilation: JSRF/Action.hpp +CActMan and CActBase classes that form the foundation of the JSRF game code. +*/ + +#ifndef ACTION_HPP +#define ACTION_HPP + +#include "../MUSASHI/MMatrix.hpp" +#include "../XDK/CRT/stddef.h" +#include "../XDK/D3D.h" +#include "../XDK/Win32.h" + + +// TODO; move to header for Graphics COM object in Smilebit libraries +struct SGraphicsPerformanceCounters { + unsigned fps; + unsigned trianglesPerSecond; + unsigned frameTriangleCnt; + unsigned unknown0xC; + unsigned unknown0x10; + unsigned unknown0x14; +}; + +// TODO: Just here to get delinking working until we make dedicated source +// files for these classes +struct CSysColiManager { + CSysColiManager(); + virtual ~CSysColiManager(); +}; +struct UnknownGlobal { + UnknownGlobal(); + virtual ~UnknownGlobal(); +}; +struct UnknownStatic02 { + UnknownStatic02(); + virtual ~UnknownStatic02(); +}; +struct UnknownStatic04 { + UnknownStatic04(); + virtual ~UnknownStatic04(); +}; +struct UnknownStatic05 { + UnknownStatic05(); + virtual ~UnknownStatic05(); +}; +struct UnknownStatic06 { + UnknownStatic06(); + virtual ~UnknownStatic06(); +}; +struct UnknownStatic07 { + UnknownStatic07(); + virtual ~UnknownStatic07(); +}; +struct UnknownStatic09 { + UnknownStatic09(); + virtual ~UnknownStatic09(); +}; +struct UnknownStatic13 { + char unknown1[0x274]; + void * unknown2; + void * unknown3; +}; +struct UnknownStatic16 { + UnknownStatic16(); + virtual ~UnknownStatic16(); +}; +struct UnknownStatic17 { + UnknownStatic17(); + virtual ~UnknownStatic17(); +}; +struct UnknownStatic18 { + UnknownStatic18(); + virtual ~UnknownStatic18(); +}; +struct UnknownStatic19 { + UnknownStatic19(); + virtual ~UnknownStatic19(); +}; +struct UnknownStatic24 { + UnknownStatic24(); + virtual ~UnknownStatic24(); +}; +struct UnknownStatic27 { + UnknownStatic27(); + virtual ~UnknownStatic27(); + void * unknown[3]; +}; +struct SGraphicsSetting { + unsigned countedIfZero; + char * name; + float unknown[3]; + float value; + unsigned index; +}; +struct SGraphicsSettings { + float * settings; + unsigned settingsArrSizeInBytes; + unsigned unknown1; + unsigned unknown2; + unsigned srcArrZeroCnt; + SGraphicsSetting * srcItemsMarked0; + unsigned * offsetsFromPrevSrcItemMarked0; +}; +enum eGRAPHICSSETTINGTYPE { + eGRAPHICSSETTINGTYPE_WARP = 0x0, + eGRAPHICSSETTINGTYPE_WARP_X = 0x1, + eGRAPHICSSETTINGTYPE_WARP_Y = 0x2, + eGRAPHICSSETTINGTYPE_WARP_Z = 0x3, + eGRAPHICSSETTINGTYPE_GO = 0x4, + eGRAPHICSSETTINGTYPE_MEMORY = 0x5, + eGRAPHICSSETTINGTYPE_DRAW = 0x6, + eGRAPHICSSETTINGTYPE_COLOR = 0x7, + eGRAPHICSSETTINGTYPE_COLOR_R = 0x8, + eGRAPHICSSETTINGTYPE_COLOR_G = 0x9, + eGRAPHICSSETTINGTYPE_COLOR_B = 0xa, + eGRAPHICSSETTINGTYPE_AMBIENT = 0xb, + eGRAPHICSSETTINGTYPE_AMBIENT_R = 0xc, + eGRAPHICSSETTINGTYPE_AMBIENT_G = 0xd, + eGRAPHICSSETTINGTYPE_AMBIENT_B = 0xe, + eGRAPHICSSETTINGTYPE_SHADOWCOLOR = 0xf, + eGRAPHICSSETTINGTYPE_SHADOWCOLOR_A = 0x10, + eGRAPHICSSETTINGTYPE_SHADOWCOLOR_R = 0x11, + eGRAPHICSSETTINGTYPE_SHADOWCOLOR_G = 0x12, + eGRAPHICSSETTINGTYPE_SHADOWCOLOR_B = 0x13, + eGRAPHICSSETTINGTYPE_BGCOLOR = 0x14, + eGRAPHICSSETTINGTYPE_BGCOLOR_R = 0x15, + eGRAPHICSSETTINGTYPE_BGCOLOR_G = 0x16, + eGRAPHICSSETTINGTYPE_BGCOLOR_B = 0x17, + eGRAPHICSSETTINGTYPE_MIPMAPLOD = 0x18, + eGRAPHICSSETTINGTYPE_MIPMAPLOD_BIAS = 0x19, + eGRAPHICSSETTINGTYPE_G_CONTRAST = 0x1a, + eGRAPHICSSETTINGTYPE_G_CONTRAST_R = 0x1b, + eGRAPHICSSETTINGTYPE_G_CONTRAST_G = 0x1c, + eGRAPHICSSETTINGTYPE_G_CONTRAST_B = 0x1d, + eGRAPHICSSETTINGTYPE_G_LUMINANCE = 0x1e, + eGRAPHICSSETTINGTYPE_G_LUMINANCE_R = 0x1f, + eGRAPHICSSETTINGTYPE_G_LUMINANCE_G = 0x20, + eGRAPHICSSETTINGTYPE_G_LUMINANCE_B = 0x21, + eGRAPHICSSETTINGTYPE_GRIND = 0x22, + eGRAPHICSSETTINGTYPE_GRIND_NS = 0x23, + eGRAPHICSSETTINGTYPE_GRIND_XS = 0x24, + eGRAPHICSSETTINGTYPE_GRIND_NR = 0x25, + eGRAPHICSSETTINGTYPE_GRIND_XR = 0x26, + eGRAPHICSSETTINGTYPE_GIZA_NO = 0x27, + eGRAPHICSSETTINGTYPE_GIZA_NO_T = 0x28, + eGRAPHICSSETTINGTYPE_GIZA_SPEED = 0x29, + eGRAPHICSSETTINGTYPE_GIZA_SPEED_R = 0x2a, + eGRAPHICSSETTINGTYPE_GIZA_SPEED_T = 0x2b, + eGRAPHICSSETTINGTYPE_GIZA_SPEED_S = 0x2c, + eGRAPHICSSETTINGTYPE_GIZA_GRIND = 0x2d, + eGRAPHICSSETTINGTYPE_GIZA_GRIND_R = 0x2e, + eGRAPHICSSETTINGTYPE_GIZA_GRIND_T = 0x2f, + eGRAPHICSSETTINGTYPE_GIZA_GRIND_S = 0x30, + eGRAPHICSSETTINGTYPE_GIZA_NORMAL = 0x31, + eGRAPHICSSETTINGTYPE_GIZA_NORMAL_R = 0x32, + eGRAPHICSSETTINGTYPE_GIZA_NORMAL_T = 0x33, + eGRAPHICSSETTINGTYPE_GIZA_NORMAL_S = 0x34, + eGRAPHICSSETTINGTYPE_GIZA_SDASH = 0x35, + eGRAPHICSSETTINGTYPE_GIZA_SDASH_R = 0x36, + eGRAPHICSSETTINGTYPE_GIZA_SDASH_T = 0x37, + eGRAPHICSSETTINGTYPE_GIZA_SDASH_S = 0x38, + eGRAPHICSSETTINGTYPE_GIZA_CAMZ = 0x39, + eGRAPHICSSETTINGTYPE_GIZA_CAMZ_ND = 0x3a, + eGRAPHICSSETTINGTYPE_GIZA_CAMZ_XD = 0x3b, + eGRAPHICSSETTINGTYPE_GIZA_CAMZ_NR = 0x3c, + eGRAPHICSSETTINGTYPE_GIZA_CAMZ_XR = 0x3d, + eGRAPHICSSETTINGTYPE_GIZA_CAMTRT = 0x3e, + eGRAPHICSSETTINGTYPE_GIZA_CAMTRT_ND = 0x3f, + eGRAPHICSSETTINGTYPE_GIZA_CAMTRT_XD = 0x40, + eGRAPHICSSETTINGTYPE_GIZA_CAMTRT_NR = 0x41, + eGRAPHICSSETTINGTYPE_GIZA_CAMTRT_XR = 0x42, + eGRAPHICSSETTINGTYPE_GIZA_CAMANG_NA = 0x43, + eGRAPHICSSETTINGTYPE_GIZA_CAMANG_XA = 0x44, + eGRAPHICSSETTINGTYPE_GIZA_CAMANG_NR = 0x45, + eGRAPHICSSETTINGTYPE_GIZA_CAMANG_XR = 0x46, + eGRAPHICSSETTINGTYPE_GIZA_MESH = 0x47, + eGRAPHICSSETTINGTYPE_GIZA_MESH_IP = 0x48, + eGRAPHICSSETTINGTYPE_GIZA_MESH_AP = 0x49, + eGRAPHICSSETTINGTYPE_GIZA_MESH_BA = 0x4a, + eGRAPHICSSETTINGTYPE_GIZA_CAMALPHA = 0x4b, + eGRAPHICSSETTINGTYPE_GIZA_CAMALPHA_ENABLE = 0x4c, + eGRAPHICSSETTINGTYPE_DIST = 0x4d, + eGRAPHICSSETTINGTYPE_FOG = 0x4e, + eGRAPHICSSETTINGTYPE_FOG_ENABLE = 0x4f, + eGRAPHICSSETTINGTYPE_FOG_R = 0x50, + eGRAPHICSSETTINGTYPE_FOG_G = 0x51, + eGRAPHICSSETTINGTYPE_FOG_B = 0x52, + eGRAPHICSSETTINGTYPE_FOG_RANGE = 0x53, + eGRAPHICSSETTINGTYPE_FOG_RANGE_NEAR = 0x54, + eGRAPHICSSETTINGTYPE_FOG_RANGE_FAR = 0x55, + eGRAPHICSSETTINGTYPE_POWER = 0x56, + eGRAPHICSSETTINGTYPE_WIRE_FRAME = 0x57, + eGRAPHICSSETTINGTYPE_WIRE_FRAME_ENABLE = 0x58, + eGRAPHICSSETTINGTYPE_TEXTURE = 0x59, + eGRAPHICSSETTINGTYPE_TEXTURE_NO = 0x5a, + eGRAPHICSSETTINGTYPE_SCREENGAUGE = 0x5b, + eGRAPHICSSETTINGTYPE_SCREENGAUGE_ENABLE = 0x5c, + eGRAPHICSSETTINGTYPE_OWARI = 0x5d, + eGRAPHICSSETTINGTYPE_COUNT = 0x5e, +}; + + +enum eACTFLAG { + eACTFLAG_CAMERA = 1 << 0, + eACTFLAG_SKIPDRAWINGSOMETHING = 1 << 1, + eACTFLAG_NODRAWPHASE2 = 1 << 16, + eACTFLAG_DRAWTREE2 = 1 << 18, + eACTFLAG_DRAWFIRST = 1 << 22, + eACTFLAG_CAMERACHILD = 1 << 30, + eACTFLAG_DELETE = 1 << 31 +}; + +// Position in g_lpActMan->objects array +// Different indices and ranges are dedicated to different kinds of +// objecs. +enum eACTID { + eACTID_NOTINDEXED = -1, // Not stored in array + eACTID_DIRECTOR = 0, + // TODO + + eACTID_NUM = 0x1DF4 +}; + +// Base class of most objects (and everything in g_lpActMan->objects) +struct CActBase { + eACTFLAG m_ActFlag; + eACTID m_ActID; + + DWORD m_dwDrawChildMask; + float m_fZ; + DWORD m_dwZSort; // Four-level key, one byte each + float m_vSomeTranslation[3]; + + // Links forming a tree of objects for exec phase + CActBase * m_lpParent; + CActBase * m_lpChild; + CActBase * m_lpSiblingBefore; + CActBase * m_lpSiblingNext; + + // Some data structures used for draw phrase + CActBase * m_lpDrawNext; + CActBase * * m_lplpDrawBeforePtr; + CActBase * * * m_lplplpDrawLastPtr; + + CActBase * m_lpZSort; + + virtual ~CActBase(); + + void recursiveExec0Default(); + void drawManyDefault( + eACTFLAG flagFilterAny1, + int drawArg1, + int drawArg2, + eACTFLAG flagFilterAll, + unsigned otherBitfieldFilterAny, + eACTFLAG flagFilterNone, + eACTFLAG flagFilterAny2 + ); + void drawTreeDefault1(); + void drawTreeDefault2(); + + void recursiveExec0Event(); + void drawManyEvent( + eACTFLAG flagFilterAny1, + int drawArg1, + int drawArg2, + eACTFLAG flagFilterAll, + unsigned otherBitfieldFilterAny, + eACTFLAG flagFilterNone, + eACTFLAG flagFilterAny2 + ); + void drawTreeEvent1(); + void drawTreeEvent2(); + + void recursiveExec0CoveredPause(); + void drawManyCoveredPause( + eACTFLAG flagFilterAny1, + int drawArg1, + int drawArg2, + eACTFLAG flagFilterAll, + unsigned otherBitfieldFilterAny, + eACTFLAG flagFilterNone, + eACTFLAG flagFilterAny2 + ); + void drawTreeCoveredPause1(); + void drawTreeCoveredPause2(); + + void recursiveExec0FreezeCam(); + void drawManyFreezeCam( + eACTFLAG flagFilterAny1, + int drawArg1, + int drawArg2, + eACTFLAG flagFilterAll, + unsigned otherBitfieldFilterAny, + eACTFLAG flagFilterNone, + eACTFLAG flagFilterAny2 + ); + void drawTreeFreezeCam1(); + void drawTreeFreezeCam2(); + + void recursiveExec0UncoveredPause(); + void drawManyUncoveredPause( + eACTFLAG flagFilterAny1, + int drawArg1, + int drawArg2, + eACTFLAG flagFilterAll, + unsigned otherBitfieldFilterAny, + eACTFLAG flagFilterNone, + eACTFLAG flagFilterAny2 + ); + void drawTreeUncoveredPause1(); + void drawTreeUncoveredPause2(); + + void insertActionTreeSub(CActBase * lpSibling, CActBase * lpParent); + void deleteActionChild(CActBase * lpChild); + CActBase * getParentAction(); + + void SetDelete(CActBase * lpAct); + void SetDeleteChild(CActBase * lpChild); + + // Each frame, one of these trios of methods is called depending on + // which state the game is in + // Default implementation of each does nothing; inheriting objects + // override these methods to run some code during each phase of each + // frame. + virtual void Exec0Default(); + virtual void Exec1Default(); + virtual void DrawListDefault(unsigned); + + virtual void Exec0Event(); + virtual void Exec1Event(); + virtual void DrawListEvent(unsigned); + + virtual void Exec0CoveredPause(); + virtual void Exec1CoveredPause(); + virtual void DrawListCoveredPause(unsigned); + + virtual void Exec0FreezeCam(); + virtual void Exec1FreezeCam(); + virtual void DrawListFreezeCam(unsigned); + + virtual void Exec0UncoveredPause(); + virtual void Exec1UncoveredPause(); + virtual void DrawListUncoveredPause(unsigned); + + void recursiveExec1Default(); + void recursiveExec1Event(); + void recursiveExec1CoveredPause(); + void recursiveExec1FreezeCam(); + void recursiveExec1UncoveredPause(); + + void insertActionTree(CActBase * lpParent); + + CActBase(CActBase * lpParent, eACTID ActID, eACTFLAG ActFlag); +}; + +// There's a big array of possible arguments for draw methods with these +struct SDrawFuncArgs { + eACTFLAG flagFilterAny; + int arg1; + int arg2; +}; + +// Base class of objects serving as the head of a tree of objects to draw +// recursively +struct CDrawBase : CActBase { + float unknown0x44[3]; + float unknown0x50[3]; + float unknown0x5C[3]; + float unknown0x68[3]; + unsigned unknown0x74; + unsigned unknown0x78; + unsigned unknown0x7C; + unsigned unknown0x80; + float m_fViewport[4]; + eACTID m_SomeActID; + + void copySomeVectors(); + CDrawBase(CActBase * lpParent, eACTID ActID, eACTFLAG ActFlag); + virtual ~CDrawBase(); +}; + +struct CPlayer : CActBase { + unsigned unknown0x44; + unsigned unknown0x48; + + CPlayer(CActBase * lpParent, eACTID ActID, eACTFLAG ActFlag); + virtual ~CPlayer(); +}; + +// Top-level globally-accessible "god object" that runs the main loop and +// provides global access to most other objects and many variables +enum eDRAWMODE { + eDRAWMODE_YES, + eDRAWMODE_WAITVBLANK, + eDRAWMODE_NO +}; + +enum eGLOBAL { +}; + +#pragma pack(4) +struct CActMan { + char unknown0x4[4]; + unsigned unknown0x8; + unsigned * unknown0xC; + HRESULT m_InitState; + unsigned unknown0x14; + BOOL m_bDrawProfilingInfo; + int unknown0x1C; + BOOL m_bLogosStarted; + BOOL m_bFatal; + + D3DCOLOR m_Color; + D3DCOLOR m_AmbientColor; + D3DCOLOR m_ShadowColor; + D3DCOLOR m_BgColor; + D3DCOLOR m_BgColorFallback; + BOOL m_bUseFallbackBgColor; + + // Game state used to select CActBase methods to call in main loop + // If multiple states are activated, the precedence is + // coveredPause > Event > FreezeCam > UncoveredPause > Default + BOOL m_bCoveredPause; // Game paused with world not visible + BOOL m_bEvent; // Events (cutscenes) + BOOL m_bFreezeCam; // Time-frozen camera shots + BOOL m_bUncoveredPause; // Game paused with world visible, or + // automatic pause at start of mission + + BOOL m_bCoveredPauseNextFrame; + BOOL m_bNoCoveredPauseNextFrame; + BOOL m_bEventNextFrame; + BOOL m_bNoEventNextFrame; + BOOL m_bFreezeCamNextFrame; + BOOL m_bNoFreezeCamNextFrame; + BOOL m_bUncoveredPauseNextFrame; + BOOL m_bNoUncoveredPauseNextFrame; + + BOOL m_bDrawChildren; + BOOL m_bSkipDraw; + BOOL m_bRunSomeExtraDrawListCode; + SGraphicsPerformanceCounters m_PerfCounters; + + eDRAWMODE m_DrawMode; + + // Globally accessible objects and variables + CActBase * m_lpActTbl[7668]; + DWORD m_Globals[461]; // Items may be any 32-bit type, e.g. ptr + + CDrawBase * m_lpCamRoot; + CDrawBase * * m_lplpCamPtr; + + CActBase * m_lpDrawRoot; + CActBase * * m_lplpDrawPtr; + + CActBase * m_lpDrawSortRoot; + CActBase * * m_lplpDrawSortPtr; + + CActBase * m_lpDrawSortBinRoots[256]; + CActBase * * m_lplpDrawSortBinPtrs[256]; + + unsigned unknown0x87B4; + + LARGE_INTEGER m_ExecPerfCount; + LARGE_INTEGER m_DrawPerfCount; + + unsigned unknown0x87C8; + unsigned unknown0x87CC; + DWORD m_dwFrameCount_MAYBE; + unsigned unknown0x87D4; + unsigned unknown0x87D8; + CActBase * m_lpActExecRoot; + DWORD m_dwAnimCount_MAYBE; + DWORD m_dwAnimStep_MAYBE; + DWORD m_dwActCount; + CDrawBase * m_pCurrentDraw; + eACTID m_CurrentDrawActID; + eACTID m_CurrentDrawSomeActID; + Mat4 m_mParentMatrix; + unsigned unknown0x8838; + unsigned unknown0x883C; + + CActMan(unsigned *, unsigned); + virtual ~CActMan(); + void ActionExec(); + void drawOne(CActBase * lpAct, unsigned); + void drawListSub( + eACTFLAG flagFilterAny1, + int drawArg1, + int drawArg2, + eACTFLAG flagFilterAll, + unsigned otherBitfieldFilterAny, + eACTFLAG flagFilterNone, + eACTFLAG flagFilterAny2 + ); + void drawTree1(CActBase * lpAct); + + void setCoveredPauseNextFrame (BOOL bVal); + void setEventNextFrame (BOOL bVal); + void setFreezeCamNextFrame (BOOL bVal); + void setUncoveredPauseNextFrame(BOOL bVal); + + void DrawChildren(); + void DrawSkip(); + void Fatal(); + void SetDrawMode(eDRAWMODE Mode); + + void SetGlobal(eGLOBAL Index, DWORD dwVal); + DWORD GetGlobal(eGLOBAL Index); + + void InsertDrawList(CActBase * lpAct); + void DeleteDrawList(CActBase * lpAct); + + void InsertActionExecList(eACTID ActID , CActBase * lpAct); + void FreeActID (eACTID ActID); + CActBase * GetAction (eACTID ActID); + int GetFreeActionID (eACTID Min , eACTID Max); + BOOL ActionIDAvail (eACTID ActID); + void SwapActID (eACTID ActID1, eACTID ActID2); + + void ClearScreen(); + void EnableSomeExtraDrawListCode(); + void SetLogosStarted(BOOL bVal); + + void initSortDrawList(); + CActBase * getSortList(); + void InsertDrawSortList(CActBase * lpAct); + void SortListSub(unsigned char ucSortKeyBitOffset); + + void SetFallbackBgColor(D3DCOLOR Color, BOOL bUseFallback); + void Init(); + void drawMany(eACTFLAG flagFilterAll, BOOL); + void sortDrawList(); + void drawSub(); + void draw(); + void IdleSub(); + int Idle(); +}; +extern CActMan * g_lpActMan; + +// Root of the exec GameObj tree +struct CActRoot : CActBase { + CActRoot(CActBase * lpParent, eACTID ActID, eACTFLAG ActFlag); + virtual ~CActRoot(); +}; + +void SetActionDelete(eACTID ActID); + + +#endif diff --git a/decompile/src/JSRF/Core.cpp b/decompile/src/JSRF/Core.cpp deleted file mode 100644 index b791c42..0000000 --- a/decompile/src/JSRF/Core.cpp +++ /dev/null @@ -1,595 +0,0 @@ -/* JSRF Decompilation: JSRF/Core.hpp -Game and GameObj classes that form the foundation of the JSRF game code. -*/ - -#pragma bss_seg(".data") - -#include "../XDK/CRT/stddef.h" -#include "Core.hpp" - -// Declarations for symbols not yet defined in their own source files -// Remove these once they've been delinked! -void readInput(); - -// Address: 0x00011000 -// Status: unimplemented -GameObj::~GameObj() { - g_game->gameObjCnt -= 1; -} - -// Address: 0x00011070 -// Status: unimplemented -void GameObj::recursiveExecDefault() { -} - -// Address: 0x000110A0 -// Status: unimplemented -void GameObj::drawListDefault( - GameObjFlags flagFilterAny1, - int drawArg1, - int drawArg2, - GameObjFlags flagFilterAll, - unsigned otherBitfieldFilterAny, - GameObjFlags flagFilterNone, - GameObjFlags flagFilterAny2 -) { -} - -// Address: 0x00011220 -// Status: unimplemented -void GameObj::drawTreeDefault1() { -} - -// Address: 0x00011260 -// Status: unimplemented -void GameObj::drawTreeDefault2() { -} - -// Address: 0x000112A0 -// Status: unimplemented -void GameObj::recursiveExecEvent() { -} - -// Address: 0x000112D0 -// Status: unimplemented -void GameObj::drawListEvent( - GameObjFlags flagFilterAny1, - int drawArg1, - int drawArg2, - GameObjFlags flagFilterAll, - unsigned otherBitfieldFilterAny, - GameObjFlags flagFilterNone, - GameObjFlags flagFilterAny2 -) { -} - -// Address: 0x00011450 -// Status: unimplemented -void GameObj::drawTreeEvent1() { -} - -// Address: 0x00011490 -// Status: unimplemented -void GameObj::drawTreeEvent2() { -} - -// Address: 0x000114D0 -// Status: unimplemented -void GameObj::recursiveExecCoveredPause() { -} - -// Address: 0x00011500 -// Status: unimplemented -void GameObj::drawListCoveredPause( - GameObjFlags flagFilterAny1, - int drawArg1, - int drawArg2, - GameObjFlags flagFilterAll, - unsigned otherBitfieldFilterAny, - GameObjFlags flagFilterNone, - GameObjFlags flagFilterAny2 -) { -} - -// Address: 0x00011680 -// Status: unimplemented -void GameObj::drawTreeCoveredPause1() { -} - -// Address: 0x000116C0 -// Status: unimplemented -void GameObj::drawTreeCoveredPause2() { -} - -// Address: 0x00011700 -// Status: unimplemented -void GameObj::recursiveExecFreezeCam() { -} - -// Address: 0x00011730 -// Status: unimplemented -void GameObj::drawListFreezeCam( - GameObjFlags flagFilterAny1, - int drawArg1, - int drawArg2, - GameObjFlags flagFilterAll, - unsigned otherBitfieldFilterAny, - GameObjFlags flagFilterNone, - GameObjFlags flagFilterAny2 -) { -} - -// Address: 0x000118B0 -// Status: unimplemented -void GameObj::drawTreeFreezeCam1() { -} - -// Address: 0x000118F0 -// Status: unimplemented -void GameObj::drawTreeFreezeCam2() { -} - -// Address: 0x00011930 -// Status: unimplemented -void GameObj::recursiveExecUncoveredPause() { -} - -// Address: 0x00011960 -// Status: unimplemented -void GameObj::drawListUncoveredPause( - GameObjFlags flagFilterAny1, - int drawArg1, - int drawArg2, - GameObjFlags flagFilterAll, - unsigned otherBitfieldFilterAny, - GameObjFlags flagFilterNone, - GameObjFlags flagFilterAny2 -) { -} - -// Address: 0x00011AE0 -// Status: unimplemented -void GameObj::drawTreeUncoveredPause1() { -} - -// Address: 0x00011B20 -// Status: unimplemented -void GameObj::drawTreeUncoveredPause2() { -} - -// Address: 0x00011B60 -// Status: unimplemented -void GameObj::addToSiblings(GameObj * sibling, GameObj * parent) { -} - -// Address: 0x00011B90 -// Status: unimplemented -void GameObj::destructChildren(GameObj * firstChild) { -} - -// Address: 0x00011BD0 -// Status: matching -GameObj * GameObj::getParent() { - return this->parent; -} - -// Address: 0x00011BE0 -// Status: unimplemented -void GameObj::removeFromObjList(GameObj * obj) { - if (obj->flags > -1) { - } -} - -// Address: 0x00011C20 -// Status: nonmatching -void GameObj::removeChildrenFromObjList(GameObj * firstChild) { - if (firstChild != NULL) do { - if (firstChild->flags > -1) { - firstChild->flags = GameObjFlags(firstChild->flags | GOF_DELETEAFTEREXEC); - g_game->removeFromDrawList(firstChild); - g_game->unsetObj(firstChild->index); - } - - this->removeChildrenFromObjList(firstChild->firstChild); - firstChild = firstChild->nextSibling; - } while (firstChild != NULL); -} - -// Address: 0x00011C80 -// Status: matching -void GameObj::drawDefault(unsigned unknown) {} - -// Address: 0x00011C90 -// Status: matching -void GameObj::execDefault() {} - -// Eliminated by link time code generation (aliased with 0x00011C90) -void GameObj::postExecDefault() {} - -// Eliminated by link time code generation (aliased with 0x00011C90) -void GameObj::execEvent() {} - -// Eliminated by link time code generation (aliased with 0x00011C90) -void GameObj::postExecEvent() {} - -// Eliminated by link time code generation (aliased with 0x00011C80) -void GameObj::drawEvent(unsigned unknown) {} - -// Eliminated by link time code generation (aliased with 0x00011C90) -void GameObj::execCoveredPause() {} - -// Eliminated by link time code generation (aliased with 0x00011C90) -void GameObj::postExecCoveredPause() {} - -// Eliminated by link time code generation (aliased with 0x00011C80) -void GameObj::drawCoveredPause(unsigned unknown) {} - -// Eliminated by link time code generation (aliased with 0x00011C90) -void GameObj::execFreezeCam() {} - -// Eliminated by link time code generation (aliased with 0x00011C90) -void GameObj::postExecFreezeCam() {} - -// Eliminated by link time code generation (aliased with 0x00011C80) -void GameObj::drawFreezeCam(unsigned unknown) {} - -// Eliminated by link time code generation (aliased with 0x00011C90) -void GameObj::execUncoveredPause() {} - -// Eliminated by link time code generation (aliased with 0x00011C90) -void GameObj::postExecUncoveredPause() {} - -// Eliminated by link time code generation (aliased with 0x00011C80) -void GameObj::drawUncoveredPause(unsigned unknown) {} - -// Address: 0x00011CA0 -// Status: unimplemented -void DrawTree::copySomeVectors() { -} - -// Address: 0x00011D00 -// Status: unimplemented -void GameObj::recursivePostExecDefault() { -} - -// Address: 0x00011D00 -// Status: unimplemented -void GameObj::recursivePostExecEvent() { -} - -// Address: 0x00011E40 -// Status: unimplemented -void GameObj::recursivePostExecCoveredPause() { -} - -// Address: 0x00011EE0 -// Status: unimplemented -void GameObj::recursivePostExecFreezeCam() { -} - -// Address: 0x00011F80 -// Status: unimplemented -void GameObj::recursivePostExecUncoveredPause() { -} - -// Address: 0x00012020 -// Status: unimplemented -void GameObj::setParent(GameObj * parent) { -} - -// Address: 0x00012100 -// Status: unimplemented -GameObj::GameObj(GameObj * parent, GameObjIndex index, GameObjFlags flags) { - g_game->setObj(index, this); - - this->parent = NULL; - this->firstChild = NULL; - this->prevSibling = NULL; - this->nextSibling = NULL; - this->index = index; - this->flags = flags; - - this->setParent(parent); - - this->sortKey = 0; - this->otherBitfield = 1; - - g_game->gameObjCnt += 1; -} - -// Address: 0x00012170 -// Status: matching -DrawTree::DrawTree(GameObj * parent, GameObjIndex index, GameObjFlags flags) : - GameObj(parent, index, flags) { - this->otherBitfield = 7; - this->someIndex = 0; -} - -// Address: 0x000121D0 -// Status: unimplemented -DrawTree::~DrawTree() {} - -// Address: 0x000121E0 -// Status: unimplemented -PlayerObj::PlayerObj(GameObj * parent, GameObjIndex index, GameObjFlags flags) : - GameObj(parent, index, flags) { - this->unknown0x44 = 0; - this->unknown0x48 = 0; -} - -// Eliminated by link time code generation (aliased with 0x000121D0) -PlayerObj::~PlayerObj() {} - -// Address: 0x00012210 -// Status: unimplemented -Game::Game(unsigned * unknown1, unsigned unknown2) { -} - -// Address: 0x00012390 -// Status: unimplemented -Game::~Game() { -} - -// Address: 0x000123E0 -// Status: unimplemented -void Game::exec() { -} - -// Address: 0x00012580 -// Status: unimplemented -void Game::drawObj(GameObj * obj, unsigned unknown) { -} - -// Address: 0x000125E0 -// Status: unimplemented -void Game::drawList_( - GameObjFlags flagFilterAny1, - int drawArg1, - int drawArg2, - GameObjFlags flagFilterAll, - unsigned otherBitfieldFilterAny, - GameObjFlags flagFilterNone, - GameObjFlags flagFilterAny2 -) { -} - -// Address: 0x00012680 -// Status: unimplemented -void Game::drawTree1(GameObj * obj) { -} - -// Address: 0x000126D0 -// Status: unimplemented -void Game::setCoveredPauseNextFrame(BOOL val) { -} - -// Address: 0x000126F0 -// Status: unimplemented -void Game::setEventNextFrame(BOOL val) { -} - -// Address: 0x00012710 -// Status: unimplemented -void Game::setFreezeCamNextFrame(BOOL val) { -} - -// Address: 0x00012730 -// Status: unimplemented -void Game::setUncoveredPauseNextFrame(BOOL val) { -} - -// Address: 0x00012750 -// Status: matching -void Game::enableDrawChildren() { - this->drawChildren = TRUE; -} - -// Address: 0x00012760 -// Status: matching -void Game::enableSkipDraw() { - this->skipDraw = TRUE; -} - -// Address: 0x00012770 -// Status: unimplemented -void Game::fatal() { -} - -// Address: 0x000127B0 -// Status: matching -void Game::setDrawMode(DrawMode mode) { - this->drawMode = mode; -} - -// Address: 0x000127C0 -// Status: matching -void Game::setGlobal(GlobalIndex index, unsigned val) { - this->globals[index] = val; -} - -// Address: 0x000127E0 -// Status: matching -unsigned Game::getGlobal(GlobalIndex index) { - return this->globals[index]; -} - -// Address: 0x000127F0 -// Status: unimplemented -void Game::addToDrawList(GameObj * obj) { -} - -// Address: 0x00012840 -// Status: unimplemented -void Game::removeFromDrawList(GameObj * obj) { -} - -// Address: 0x00012870 -// Status: matching -void Game::setObj(GameObjIndex index, GameObj * obj) { - if (0 <= index && index < OBJ_CNT) - this->objects[index] = obj; -} - -// Address: 0x00012890 -// Status: matching -void Game::unsetObj(GameObjIndex index) { - if (0 <= index && this->objects[index] != NULL) - this->objects[index] = NULL; -} - -// Address: 0x000128C0 -// Status: matching -GameObj * Game::getObj(GameObjIndex index) { - return 0 <= index ? this->objects[index] : NULL; -} - -// Address: 0x000128E0 -// Status: matching -int Game::allocObjIndex(GameObjIndex min, GameObjIndex max) { - if (min <= max) do - if (this->objects[min] == NULL) return min; - else min = GameObjIndex(min + 1); - while (min <= max); - - return -1; -} - -// Address: 0x00012910 -// Status: matching -BOOL Game::objIndexAvail(GameObjIndex index) { - return this->objects[index] == NULL; -} - -// Address: 0x00012930 -// Status: matching -void Game::swapObjs(GameObjIndex index1, GameObjIndex index2) { - GameObj * tmp = this->objects[index1]; - this->objects[index1] = this->objects[index2]; - this->objects[index2] = tmp; - - if (this->objects[index1] != NULL) this->objects[index1]->index = index1; - if (this->objects[index2] != NULL) this->objects[index2]->index = index2; -} - -// Address: 0x00012980 -// Status: unimplemented -void Game::clearScreen() { -} - -// Address: 0x000129B0 -// Status: matching -void Game::enableSomeExtraDrawListCode() { - this->runSomeExtraDrawListCode = TRUE; -} - -// Address: 0x000129C0 -// Status: matching -void Game::setLogosStarted(BOOL val) { - this->logosStarted = val; -} - -// Address: 0x000129D0 -// Status: matching -void Game::clearDrawPriorityList() { - this->drawPriorityListHead = NULL; - this->drawPriorityListEndNext = &g_game->drawPriorityListHead; -} - -// Address: 0x000129F0 -// Status: matching -GameObj * Game::getDrawPriorityListHead() { - return this->drawPriorityListHead; -} - -// Address: 0x00012A00 -// Status: matching -void Game::appendToDrawPriorityList(GameObj * obj) { - obj->drawPriorityListNext = NULL; - *this->drawPriorityListEndNext = obj; - this->drawPriorityListEndNext = &obj->drawPriorityListNext; -} - -// Address: 0x00012A20 -// Status: unimplemented -void Game::sortDrawPriorityListSingleLevel(unsigned char sortKeyBitOffset) { - for ( - unsigned i = 0; - i < sizeof this->drawPriorityListsByKeyHeads/sizeof *this->drawPriorityListsByKeyHeads; - i++ - ) this->drawPriorityListsByKeyHeads[i] = NULL; -} - -// Address: 0x00012AC0 -// Status: matching -void Game::setFallbackBgColour(D3DCOLOR colour, BOOL useFallback) { - this->useFallbackBgColour = useFallback; - this->bgColourFallback = colour; -} - -// Address: 0x00012AE0 -// Status: unimplemented -RootExecObj::RootExecObj(GameObj * parent, GameObjIndex index, GameObjFlags flags) : - GameObj(parent, index, flags) { -} - -// Address: 0x00012BE0 -// Status: matching -RootExecObj::~RootExecObj() { -} - -// Address: 0x00012C10 -// Status: unimplemented -void Game::initRootExecObj() { -} - -// Address: 0x00012C80 -// Status: unimplemented -void Game::drawList(GameObjFlags flagFilterAll, BOOL unknown) { -} - -// Address: 0x000131A0 -// Status: nonmatching -void Game::sortDrawPriorityList() { - this->sortDrawPriorityListSingleLevel(0x00); - this->sortDrawPriorityListSingleLevel(0x08); - this->sortDrawPriorityListSingleLevel(0x10); - this->sortDrawPriorityListSingleLevel(0x18); -} - -// Address: 0x000131F0 -// Status: unimplemented -void Game::drawObjs() { -} - -// Address: 0x00013930 -// Status: unimplemented -void Game::draw() { -} - -// Address: 0x00013A80 -// Status: unimplemented -void Game::frame() { - readInput(); -} - -// Address: 0x00013F80 -// Status: matching -int Game::mainLoop() { - if (this->initState >= 0) while (true) { - if (!this->fatalErr) this->frame(); - else { - readInput(); - Sleep(0x10); - } - } else return -1; -} - -// Address: 0x00013FC0 -// Status: nonmatching -void removeFromObjListByIndex(GameObjIndex index) { - GameObj * obj = g_game->getObj(index); - if (obj != NULL) { - obj->removeFromObjList(obj); - obj->removeChildrenFromObjList(obj->firstChild); - } -} diff --git a/decompile/src/JSRF/Core.hpp b/decompile/src/JSRF/Core.hpp deleted file mode 100644 index 3206349..0000000 --- a/decompile/src/JSRF/Core.hpp +++ /dev/null @@ -1,549 +0,0 @@ -/* JSRF Decompilation: JSRF/Core.hpp -Game and GameObj classes that form the foundation of the JSRF game code. -*/ - -#ifndef CORE_HPP -#define CORE_HPP - -#include "../MUSASHI/MMatrix.hpp" -#include "../XDK/CRT/stddef.h" -#include "../XDK/D3D.h" -#include "../XDK/Win32.h" - - -// TODO; move to header for Graphics COM object in Smilebit libraries -struct GraphicsPerformanceCounters { - unsigned fps; - unsigned trianglesPerSecond; - unsigned frameTriangleCnt; - unsigned unknown0xC; - unsigned unknown0x10; - unsigned unknown0x14; -}; - -// TODO: Just here to get delinking working until we make dedicated source -// files for these classes -struct CollisionManager { - CollisionManager(); - virtual ~CollisionManager(); -}; -struct UnknownGlobal { - UnknownGlobal(); - virtual ~UnknownGlobal(); -}; -struct UnknownStatic02 { - UnknownStatic02(); - virtual ~UnknownStatic02(); -}; -struct UnknownStatic04 { - UnknownStatic04(); - virtual ~UnknownStatic04(); -}; -struct UnknownStatic05 { - UnknownStatic05(); - virtual ~UnknownStatic05(); -}; -struct UnknownStatic06 { - UnknownStatic06(); - virtual ~UnknownStatic06(); -}; -struct UnknownStatic07 { - UnknownStatic07(); - virtual ~UnknownStatic07(); -}; -struct UnknownStatic09 { - UnknownStatic09(); - virtual ~UnknownStatic09(); -}; -struct UnknownStatic13 { - char unknown1[0x274]; - void * unknown2; - void * unknown3; -}; -struct UnknownStatic16 { - UnknownStatic16(); - virtual ~UnknownStatic16(); -}; -struct UnknownStatic17 { - UnknownStatic17(); - virtual ~UnknownStatic17(); -}; -struct UnknownStatic18 { - UnknownStatic18(); - virtual ~UnknownStatic18(); -}; -struct UnknownStatic19 { - UnknownStatic19(); - virtual ~UnknownStatic19(); -}; -struct UnknownStatic24 { - UnknownStatic24(); - virtual ~UnknownStatic24(); -}; -struct UnknownStatic27 { - UnknownStatic27(); - virtual ~UnknownStatic27(); - void * unknown[3]; -}; -struct GraphicsSetting { - unsigned countedIfZero; - char * name; - D3DVECTOR unknown; - float value; - unsigned index; -}; -struct GraphicsSettings { - float * settings; - unsigned settingsArrSizeInBytes; - unsigned unknown1; - unsigned unknown2; - unsigned srcArrZeroCnt; - GraphicsSetting * srcItemsMarked0; - unsigned * offsetsFromPrevSrcItemMarked0; -}; -enum GraphicsSettingType { - GST_WARP = 0x0, - GST_WARP_X = 0x1, - GST_WARP_Y = 0x2, - GST_WARP_Z = 0x3, - GST_GO = 0x4, - GST_MEMORY = 0x5, - GST_DRAW = 0x6, - GST_COLOR = 0x7, - GST_COLOR_R = 0x8, - GST_COLOR_G = 0x9, - GST_COLOR_B = 0xa, - GST_AMBIENT = 0xb, - GST_AMBIENT_R = 0xc, - GST_AMBIENT_G = 0xd, - GST_AMBIENT_B = 0xe, - GST_SHADOWCOLOR = 0xf, - GST_SHADOWCOLOR_A = 0x10, - GST_SHADOWCOLOR_R = 0x11, - GST_SHADOWCOLOR_G = 0x12, - GST_SHADOWCOLOR_B = 0x13, - GST_BGCOLOR = 0x14, - GST_BGCOLOR_R = 0x15, - GST_BGCOLOR_G = 0x16, - GST_BGCOLOR_B = 0x17, - GST_MIPMAPLOD = 0x18, - GST_MIPMAPLOD_BIAS = 0x19, - GST_G_CONTRAST = 0x1a, - GST_G_CONTRAST_R = 0x1b, - GST_G_CONTRAST_G = 0x1c, - GST_G_CONTRAST_B = 0x1d, - GST_G_LUMINANCE = 0x1e, - GST_G_LUMINANCE_R = 0x1f, - GST_G_LUMINANCE_G = 0x20, - GST_G_LUMINANCE_B = 0x21, - GST_GRIND = 0x22, - GST_GRIND_NS = 0x23, - GST_GRIND_XS = 0x24, - GST_GRIND_NR = 0x25, - GST_GRIND_XR = 0x26, - GST_GIZA_NO = 0x27, - GST_GIZA_NO_T = 0x28, - GST_GIZA_SPEED = 0x29, - GST_GIZA_SPEED_R = 0x2a, - GST_GIZA_SPEED_T = 0x2b, - GST_GIZA_SPEED_S = 0x2c, - GST_GIZA_GRIND = 0x2d, - GST_GIZA_GRIND_R = 0x2e, - GST_GIZA_GRIND_T = 0x2f, - GST_GIZA_GRIND_S = 0x30, - GST_GIZA_NORMAL = 0x31, - GST_GIZA_NORMAL_R = 0x32, - GST_GIZA_NORMAL_T = 0x33, - GST_GIZA_NORMAL_S = 0x34, - GST_GIZA_SDASH = 0x35, - GST_GIZA_SDASH_R = 0x36, - GST_GIZA_SDASH_T = 0x37, - GST_GIZA_SDASH_S = 0x38, - GST_GIZA_CAMZ = 0x39, - GST_GIZA_CAMZ_ND = 0x3a, - GST_GIZA_CAMZ_XD = 0x3b, - GST_GIZA_CAMZ_NR = 0x3c, - GST_GIZA_CAMZ_XR = 0x3d, - GST_GIZA_CAMTRT = 0x3e, - GST_GIZA_CAMTRT_ND = 0x3f, - GST_GIZA_CAMTRT_XD = 0x40, - GST_GIZA_CAMTRT_NR = 0x41, - GST_GIZA_CAMTRT_XR = 0x42, - GST_GIZA_CAMANG_NA = 0x43, - GST_GIZA_CAMANG_XA = 0x44, - GST_GIZA_CAMANG_NR = 0x45, - GST_GIZA_CAMANG_XR = 0x46, - GST_GIZA_MESH = 0x47, - GST_GIZA_MESH_IP = 0x48, - GST_GIZA_MESH_AP = 0x49, - GST_GIZA_MESH_BA = 0x4a, - GST_GIZA_CAMALPHA = 0x4b, - GST_GIZA_CAMALPHA_ENABLE = 0x4c, - GST_DIST = 0x4d, - GST_FOG = 0x4e, - GST_FOG_ENABLE = 0x4f, - GST_FOG_R = 0x50, - GST_FOG_G = 0x51, - GST_FOG_B = 0x52, - GST_FOG_RANGE = 0x53, - GST_FOG_RANGE_NEAR = 0x54, - GST_FOG_RANGE_FAR = 0x55, - GST_POWER = 0x56, - GST_WIRE_FRAME = 0x57, - GST_WIRE_FRAME_ENABLE = 0x58, - GST_TEXTURE = 0x59, - GST_TEXTURE_NO = 0x5a, - GST_SCREENGAUGE = 0x5b, - GST_SCREENGAUGE_ENABLE = 0x5c, - GST_OWARI = 0x5d, - GST_COUNT = 0x5e, -}; - - -enum GameObjFlags { - GOF_DRAWTREEHEAD = 1 << 0, - GOF_SKIPDRAWINGSOMETHING = 1 << 1, - GOF_NODRAWPHASE2 = 1 << 16, - GOF_DRAWTREE2 = 1 << 18, - GOF_DRAWPHASE1 = 1 << 22, - GOF_DRAWTREECHILD = 1 << 30, - GOF_DELETEAFTEREXEC = 1 << 31 -}; - -// Position in g_game->objects array -// Different indices and ranges are dedicated to different kinds of -// objecs. -enum GameObjIndex { - OBJ_NOTINDEXED = -1, // Not stored in array - OBJ_DIRECTOR = 0, - // TODO - - OBJ_CNT = 0x1DF4 -}; - -// Base class of most objects (and everything in g_game->objects) -struct GameObj { - GameObjFlags flags; - GameObjIndex index; - - unsigned otherBitfield; - float reverseSortKey; // Sign flipped to produced sortKey - unsigned sortKey; // Four-level key, one byte each - D3DVECTOR someTranslation; - - // Links forming a tree of objects for exec phase - GameObj * parent; - GameObj * firstChild; - GameObj * prevSibling; - GameObj * nextSibling; - - // Some data structures used for draw phrase - GameObj * nextDrawTree; - GameObj * * prevDrawTreeNext; - GameObj * * * lastDrawTreeNextPtr; - - GameObj * drawPriorityListNext; - - virtual ~GameObj(); - - void recursiveExecDefault(); - void drawListDefault( - GameObjFlags flagFilterAny1, - int drawArg1, - int drawArg2, - GameObjFlags flagFilterAll, - unsigned otherBitfieldFilterAny, - GameObjFlags flagFilterNone, - GameObjFlags flagFilterAny2 - ); - void drawTreeDefault1(); - void drawTreeDefault2(); - - void recursiveExecEvent(); - void drawListEvent( - GameObjFlags flagFilterAny1, - int drawArg1, - int drawArg2, - GameObjFlags flagFilterAll, - unsigned otherBitfieldFilterAny, - GameObjFlags flagFilterNone, - GameObjFlags flagFilterAny2 - ); - void drawTreeEvent1(); - void drawTreeEvent2(); - - void recursiveExecCoveredPause(); - void drawListCoveredPause( - GameObjFlags flagFilterAny1, - int drawArg1, - int drawArg2, - GameObjFlags flagFilterAll, - unsigned otherBitfieldFilterAny, - GameObjFlags flagFilterNone, - GameObjFlags flagFilterAny2 - ); - void drawTreeCoveredPause1(); - void drawTreeCoveredPause2(); - - void recursiveExecFreezeCam(); - void drawListFreezeCam( - GameObjFlags flagFilterAny1, - int drawArg1, - int drawArg2, - GameObjFlags flagFilterAll, - unsigned otherBitfieldFilterAny, - GameObjFlags flagFilterNone, - GameObjFlags flagFilterAny2 - ); - void drawTreeFreezeCam1(); - void drawTreeFreezeCam2(); - - void recursiveExecUncoveredPause(); - void drawListUncoveredPause( - GameObjFlags flagFilterAny1, - int drawArg1, - int drawArg2, - GameObjFlags flagFilterAll, - unsigned otherBitfieldFilterAny, - GameObjFlags flagFilterNone, - GameObjFlags flagFilterAny2 - ); - void drawTreeUncoveredPause1(); - void drawTreeUncoveredPause2(); - - void addToSiblings(GameObj * sibling, GameObj * parent); - void destructChildren(GameObj * firstChild); - GameObj * getParent(); - - void removeFromObjList (GameObj * obj); - void removeChildrenFromObjList(GameObj * firstChild); - - // Each frame, one of these trios of methods is called depending on - // which state the game is in - // Default implementation of each does nothing; inheriting objects - // override these methods to run some code during each phase of each - // frame. - virtual void execDefault(); - virtual void postExecDefault(); - virtual void drawDefault(unsigned); - - virtual void execEvent(); - virtual void postExecEvent(); - virtual void drawEvent(unsigned); - - virtual void execCoveredPause(); - virtual void postExecCoveredPause(); - virtual void drawCoveredPause(unsigned); - - virtual void execFreezeCam(); - virtual void postExecFreezeCam(); - virtual void drawFreezeCam(unsigned); - - virtual void execUncoveredPause(); - virtual void postExecUncoveredPause(); - virtual void drawUncoveredPause(unsigned); - - void recursivePostExecDefault(); - void recursivePostExecEvent(); - void recursivePostExecCoveredPause(); - void recursivePostExecFreezeCam(); - void recursivePostExecUncoveredPause(); - - void setParent(GameObj * parent); - - GameObj(GameObj * parent, GameObjIndex index, GameObjFlags flags); -}; - -// There's a big array of possible arguments for draw methods with these -struct DrawFuncArgs { - GameObjFlags flagFilterAny; - int arg1; - int arg2; -}; - -// Base class of objects serving as the head of a tree of objects to draw -// recursively -struct DrawTree : GameObj { - D3DVECTOR unknown0x44; - D3DVECTOR unknown0x50; - D3DVECTOR unknown0x5C; - D3DVECTOR unknown0x68; - unsigned unknown0x74; - unsigned unknown0x78; - unsigned unknown0x7C; - unsigned unknown0x80; - D3DRECT viewport; - unsigned someIndex; - - void copySomeVectors(); - DrawTree(GameObj * parent, GameObjIndex index, GameObjFlags flags); - virtual ~DrawTree(); -}; - -struct PlayerObj : GameObj { - unsigned unknown0x44; - unsigned unknown0x48; - - PlayerObj(GameObj * parent, GameObjIndex index, GameObjFlags flags); - virtual ~PlayerObj(); -}; - -// Top-level globally-accessible "god object" that runs the main loop and -// provides global access to most other objects and many variables -enum DrawMode { - DRAW_YES, - DRAW_WAITVBLANK, - DRAW_NO -}; - -enum GlobalIndex { -}; - -#pragma pack(4) -struct Game { - char unknown0x4[4]; - unsigned unknown0x8; - unsigned * unknown0xC; - int initState; - unsigned unknown0x14; - BOOL drawProfilingInfo; - int unknown0x1C; - BOOL logosStarted; - BOOL fatalErr; - - D3DCOLOR colour; - D3DCOLOR ambientColour; - D3DCOLOR shadowColour; - D3DCOLOR bgColour; - D3DCOLOR bgColourFallback; - BOOL useFallbackBgColour; - - // Game state used to select GameObj methods to call in main loop - // If multiple states are activated, the precedence is - // coveredPause > Event > FreezeCam > UncoveredPause > Default - BOOL coveredPause; // Game paused with world not visible - BOOL event; // Events (cutscenes) - BOOL freezeCam; // Time-frozen camera shots - BOOL uncoveredPause; // Game paused with world visible, or - // automatic pause at start of mission - - BOOL coveredPauseNextFrame; - BOOL noCoveredPauseNextFrame; - BOOL eventNextFrame; - BOOL noEventNextFrame; - BOOL freezeCamNextFrame; - BOOL noFreezeCamNextFrame; - BOOL uncoveredPauseNextFrame; - BOOL noUncoveredPauseNextFrame; - - BOOL drawChildren; - BOOL skipDraw; - BOOL runSomeExtraDrawListCode; - GraphicsPerformanceCounters perfCounters; - - DrawMode drawMode; - - // Globally accessible objects and variables - GameObj * objects[7668]; - unsigned globals[461]; // Items may be any 32-bit type, e.g. ptr - - DrawTree * drawTreesHead; - DrawTree * * drawTreesEndNext; - - GameObj * drawListHead; - GameObj * * drawListEndNext; - - GameObj * drawPriorityListHead; - GameObj * * drawPriorityListEndNext; - - GameObj * drawPriorityListsByKeyHeads [256]; - GameObj * * drawPriorityListsByKeyEndNexts[256]; - - unsigned unknown0x87B4; - - LARGE_INTEGER execPerfCount; - LARGE_INTEGER drawPerfCount; - - unsigned unknown0x87C8; - unsigned unknown0x87CC; - unsigned frameCnt1; - unsigned unknown0x87D4; - unsigned unknown0x87D8; - GameObj * rootExecObj; - int frameCnt2; - int frameCnt3; - unsigned gameObjCnt; - DrawTree * currentDrawTree; - GameObjIndex currentDrawTreeIndex; - int unknown0x87F4; - Mat4 parentMatrix; - unsigned unknown0x8838; - unsigned unknown0x883C; - - Game(unsigned *, unsigned); - virtual ~Game(); - void exec(); - void drawObj(GameObj * obj, unsigned); - void drawList_( - GameObjFlags flagFilterAny1, - int drawArg1, - int drawArg2, - GameObjFlags flagFilterAll, - unsigned otherBitfieldFilterAny, - GameObjFlags flagFilterNone, - GameObjFlags flagFilterAny2 - ); - void drawTree1(GameObj * obj); - - void setCoveredPauseNextFrame (BOOL val); - void setEventNextFrame (BOOL val); - void setFreezeCamNextFrame (BOOL val); - void setUncoveredPauseNextFrame(BOOL val); - - void enableDrawChildren(); - void enableSkipDraw(); - void fatal(); - void setDrawMode(DrawMode mode); - - void setGlobal(GlobalIndex index, unsigned val); - unsigned getGlobal(GlobalIndex index); - - void addToDrawList (GameObj * obj); - void removeFromDrawList(GameObj * obj); - - void setObj (GameObjIndex index , GameObj * obj); - void unsetObj (GameObjIndex index ); - GameObj * getObj (GameObjIndex index ); - int allocObjIndex(GameObjIndex min , GameObjIndex max); - BOOL objIndexAvail(GameObjIndex index ); - void swapObjs (GameObjIndex index1, GameObjIndex index2); - - void clearScreen(); - void enableSomeExtraDrawListCode(); - void setLogosStarted(BOOL val); - - void clearDrawPriorityList(); - GameObj * getDrawPriorityListHead(); - void appendToDrawPriorityList(GameObj * obj); - void sortDrawPriorityListSingleLevel(unsigned char sortKeyBitOffset); - - void setFallbackBgColour(D3DCOLOR colour, BOOL useFallback); - void initRootExecObj(); - void drawList(GameObjFlags flagFilterAll, BOOL); - void sortDrawPriorityList(); - void drawObjs(); - void draw(); - void frame(); - int mainLoop(); -}; -extern Game * g_game; - -// Root of the exec GameObj tree -struct RootExecObj : GameObj { - RootExecObj(GameObj * parent, GameObjIndex index, GameObjFlags flags); - virtual ~RootExecObj(); -}; - -void removeFromObjListByIndex(GameObjIndex index); - -#endif diff --git a/decompile/src/JSRF/GameData.cpp b/decompile/src/JSRF/GameData.cpp deleted file mode 100644 index 5a5e7d4..0000000 --- a/decompile/src/JSRF/GameData.cpp +++ /dev/null @@ -1,366 +0,0 @@ -/* JSRF Decompilation: JSRF/GameData.hpp -Save data and closely-related runtime data. -*/ - -#pragma bss_seg(".data") - -#include "../XDK/Win32.h" -#include "GameData.hpp" - - -GameData g_gameData = GameData(); - - - -// Address: 0x00039B50 -// Status: unimplemented -BOOL GameData::checkFlagCondition(unsigned cond) { - return 0; -} - -// Address: 0x00039BE0 -// Status: unimplemented -void GameData::writeStateFlag(unsigned flagVal) { -} - -// Address: 0x00039C70 -// Status: unimplemented -void GameData::incrementChapter() { -} - -// Address: 0x00039C80 -// Status: unimplemented -void GameData::setMissionDigits34(unsigned val) { -} - -// Address: 0x00039C90 -// Status: unimplemented -void GameData::setSpawnPosIndex(unsigned val) { -} - -// Address: 0x00039CA0 -// Status: unimplemented -unsigned GameData::getSpawnPosIndex() { - return 0; -} - -// Address: 0x00039CB0 -// Status: unimplemented -void GameData::unlockCharacter(PlayerCharId charId) { -} - -// Address: 0x00039CF0 -// Status: unimplemented -void GameData::lockCharacter(PlayerCharId charId) { -} - -// Address: 0x00039D10 -// Status: unimplemented -BOOL GameData::characterUnlocked(PlayerCharId charId) { - return 0; -} - -// Address: 0x00039D40 -// Status: unimplemented -BOOL GameData::checkFlagConditions(unsigned * conds, unsigned count) { - return 0; -} - -// Address: 0x00039D80 -// Status: unimplemented -void GameData::writeStateFlags(unsigned * writes, unsigned count) { -} - -// Address: 0x00039DB0 -// Status: unimplemented -BOOL GameData::checkFlagConditionUnpacked(FlagList flagList, unsigned index) { - return 0; -} - -// Address: 0x00039DE0 -// Status: unimplemented -void GameData::writeStateFlagUnpacked(FlagList flagList, unsigned index, unsigned val) { -} - -// Address: 0x00039E10 -// Status: unimplemented -void GameData::setSoulSpawned(unsigned soulId) { -} - -// Address: 0x00039E40 -// Status: unimplemented -BOOL GameData::getSoulSpawned(unsigned soulId) { - return 0; -} - -// Address: 0x00039E80 -// Status: unimplemented -void GameData::setSoulCollected(unsigned soulId) { -} - -// Address: 0x00039EB0 -// Status: unimplemented -BOOL GameData::getSoulHeld(unsigned soulId) { - return 0; -} - -// Address: 0x00039EF0 -// Status: unimplemented -BOOL GameData::soulSpawnedUncollected(unsigned soulId) { - return 0; -} - -// Address: 0x00039F40 -// Status: unimplemented -void GameData::clearHeldSouls() { -} - -// Address: 0x00039F60 -// Status: unimplemented -void GameData::restoreHeldSouls() { -} - -// Address: 0x00039FD0 -// Status: unimplemented -unsigned GameData::getSoulCount() { - return 0; -} - -// Address: 0x0003A0A0 -// Status: unimplemented -unsigned GameData::getTotalSoulsInStage(unsigned stageId) { - return 0; -} - -// Address: 0x0003A130 -// Status: unimplemented -unsigned GameData::getHeldSoulsInStage(unsigned stageId) { - return 0; -} - -// Address: 0x0003A2B0 -// Status: unimplemented -BOOL GameData::getSoulCollectedBySize(TagSize size, unsigned index) { - return 0; -} - -// Address: 0x0003A2F0 -// Status: unimplemented -void GameData::setUnusedPerStageBitmask(unsigned stageId, unsigned index) { -} - -// Address: 0x0003A340 -// Status: unimplemented -int GameData::getTagState(unsigned stageId, unsigned tagIndex, BOOL rivalTag) { - return 0; -} - -// Address: 0x0003A3A0 -// Status: unimplemented -void GameData::setTagState(unsigned stageId, unsigned tagIndex, BOOL rivalTag, unsigned val) { -} - -// Address: 0x0003A400 -// Status: unimplemented -void GameData::setTagCovered(unsigned stageId, unsigned tagIndex, BOOL rivalTag, unsigned gangOrPlayer) { -} - -// Address: 0x0003A4A0 -// Status: unimplemented -void GameData::setVolumeSettings(float volMusic, float volSfx) { -} - -// Address: 0x0003A4C0 -// Status: unimplemented -void GameData::getVolumeSettings(float * outMusic, float * outSfx) { -} - -// Address: 0x0003A4E0 -// Status: unimplemented -void GameData::setRumbleEnabled(BOOL val) { -} - -// Address: 0x0003A4F0 -// Status: unimplemented -BOOL GameData::getRumbleEnabled() { - return 0; -} - -// Address: 0x0003A500 -// Status: unimplemented -void GameData::setGarageMusic(unsigned songId) { -} - -// Address: 0x0003A510 -// Status: unimplemented -unsigned GameData::getGarageMusic() { - return 0; -} - -// Address: 0x0003A520 -// Status: unimplemented -void GameData::setUnusedBitfield(unsigned index) { -} - -// Address: 0x0003A550 -// Status: unimplemented -void GameData::setMiscObjective(unsigned index) { -} - -// Address: 0x0003A580 -// Status: unimplemented -BOOL GameData::getMiscObjective(unsigned index) { - return 0; -} - -// Address: 0x0003A5C0 -// Status: unimplemented -unsigned GameData::countMiscObjectives() { - return 0; -} - -// Address: 0x0003A690 -// Status: unimplemented -BOOL GameData::getHighScore(unsigned stageId, TestRunType type, unsigned rank, TestRunScore * out) { - return 0; -} - -// Address: 0x0003A750 -// Status: unimplemented -void GameData::incrementTimer(Timer timer) { -} - -// Address: 0x0003A780 -// Status: unimplemented -unsigned GameData::getTimer(Timer timer) { - return 0; -} - -// Address: 0x0003A7B0 -// Status: unimplemented -void GameData::setTimer(Timer timer, unsigned frames) { -} - -// Address: 0x0003A7F0 -// Status: unimplemented -void GameData::setSelectedTag(unsigned gangOrPlayer, TagSize size, unsigned tagId, BOOL multiplayer) { -} - -// Address: 0x0003A820 -// Status: unimplemented -unsigned GameData::getSelectedTag(unsigned gangOrPlayer, TagSize size, BOOL multiplayer) { - return 0; -} - -// Address: 0x0003A840 -// Status: unimplemented -void GameData::setCustomTagSelected(unsigned gangOrPlayer, TagSize size, BOOL active, BOOL multiplayer) { -} - -// Address: 0x0003A870 -// Status: unimplemented -BOOL GameData::getCustomTagSelected(unsigned gangOrPlayer, TagSize size, BOOL multiplayer) { - return 0; -} - -// Address: 0x0003A890 -// Status: unimplemented -void GameData::setEventSeen(unsigned eventId) { -} - -// Address: 0x0003A8C0 -// Status: unimplemented -BOOL GameData::eventSeen(unsigned eventId) { - return 0; -} - -// Address: 0x0003A900 -// Status: unimplemented -void GameData::incrementPlaytime() { -} - -// Address: 0x0003A910 -// Status: matching -unsigned GameData::getSaveDataSize() { - // 0x50 byte key + 0x3508 actual save data + 0x8 extra (why extra?) - return 0x50 + sizeof this->saveActive + 0x8; -} - -// Address: 0x0003A920 -// Status: unimplemented -BOOL GameData::decrypt(char * saveData) { - return 0; -} - -// Address: 0x0003AB60 -// Status: unimplemented -void GameData::encrypt(char * outSaveData) { -} - -// Address: 0x0003AE00 -// Status: unimplemented -void GameData::getSaveDescription(SaveDescription * outDesc) { -} - -// Address: 0x0003AE20 -// Status: unimplemented -void GameData::clearStateFlags(FlagListOrPtr flagList) { -} - -// Address: 0x0003AEA0 -// Status: unimplemented -void GameData::resetTimer(Timer timer) { -} - -// Address: 0x0003AED0 -// Status: unimplemented -GameData::GameData() { -} - -// Address: 0x0003B3C0 -// Status: unimplemented -void GameData::resetSelectedTags() { -} - -// Address: 0x0003B420 -// Status: unimplemented -void GameData::resetExceptSettingsAndSouls() { -} - -// Address: 0x0003B5A0 -// Status: unimplemented -void GameData::resetExceptSettingsAndHighScores() { -} - -// Address: 0x0003B640 -// Status: unimplemented -void GameData::resetExceptSettings() { -} - -// Address: 0x0003B680 -// Status: unimplemented -void GameData::stash() { -} - -// Address: 0x0003B6A0 -// Status: unimplemented -void GameData::stashRestoreExceptSpecialFlags() { -} - -// Address: 0x0003B6F0 -// Status: unimplemented -void GameData::stashRestoreExceptHighScores() { -} - -// Address: 0x0003B790 -// Status: unimplemented -void GameData::stashRestore() { -} - -// Optimized out -GameData::~GameData() {} - -// Address: 0x0003B7E0 -// Status: unimplemented -void GameData::addHighScore(unsigned stageId, TestRunType type, TestRunScore * score) { -} diff --git a/decompile/src/JSRF/GameData.hpp b/decompile/src/JSRF/GameData.hpp deleted file mode 100644 index d19a335..0000000 --- a/decompile/src/JSRF/GameData.hpp +++ /dev/null @@ -1,237 +0,0 @@ -/* JSRF Decompilation: JSRF/GameData.hpp -Save data and closely-related runtime data. -*/ - -#ifndef GAMEDATA_HPP -#define GAMEDATA_HPP - -#include "../XDK/Win32.h" - - -// Enum that should probably go somewhere else -enum PlayerCharId { - PCHARID_BEAT, - PCHARID_CORN, - PCHARID_GUM, - PCHARID_COMBO, - PCHARID_RHYTH, - PCHARID_SODA, - PCHARID_YOYO, - PCHARID_NT3000, - PCHARID_GARAM, - PCHARID_BOOGIE, - PCHARID_CUBE, - PCHARID_LOVESHOCKERS, - PCHARID_POISONJAM, - PCHARID_NOISETANK, - PCHARID_IMMORTALS, - PCHARID_DOOMRIDERS, - PCHARID_RAPID99, - PCHARID_POTTS, - PCHARID_GOUJI, - PCHARID_ROBOY, - PCHARID_CLUTCH, - PCHARID_JAZZ, - PCHARID_AKUMU, - PCHARID_ZEROBEAT -}; - -// Data structure actually saved to disk -struct SaveData { - unsigned chapter; - unsigned missionDigits34; - unsigned spawnPosIndex; - unsigned playtimeFrames; - unsigned unlockedChars; - - // Boolean flags read and written by missions - unsigned chapterFlags[16]; // Reset every chapter - unsigned globalFlags [16]; // Never reset - unsigned specialFlags[16]; // Never reset; special effects like - // unlocking/completing tutorials, finishing - // street challenges - - unsigned spawnedSouls [8]; // Souls that have appeared on streets - unsigned collectedSouls[8]; // Souls that have been acquired - unsigned heldSouls [8]; // Souls currently usable (i.e. not stolen) - - unsigned unusedPerStageBitmask[16]; - - // Which tags have been sprayed and by who - // Indexed by stage, tag ID, and player/rival tag; rival tags don't - // count towards completion and can be painted over. Each entry is a - // packed bit array of 3 bits per "G" mark, valued 7 if nothing is - // painted or 0-3 to indicate player 1-4 painted it (in story mode, - // rival graffiti is considered painted by players 2-4). - unsigned tagState[16][80][2]; - - struct SaveSettings { - float volumeMusic; - float volumeSfx; - BOOL rumbleEnabled; - unsigned unused[29]; - } saveSettings; - - unsigned garageMusic; - unsigned unusedBitfield[8]; - - // Sewer switches at offset 0 then noise tanks at offset 3 - unsigned miscObjectives[32]; - - struct TestRunScoreSaved { - unsigned score; - unsigned char character; - unsigned char rank1; // Used by Jet Tech - unsigned char rank2; // Used by other test runs - } highScores[16][4][5]; - - unsigned clutchTimer; - unsigned unusedTimer; - - unsigned selectedTags [5]; // Like GameData but for P1 in 1-player - unsigned customTagSelected[5]; // Like GameData but for P1 in 1-player - - unsigned eventsSeen[16]; -}; - -// Numeric IDs for selecting different listss of state flags -enum FlagList { - FLAGLIST_MISSION, - FLAGLIST_CHAPTER, - FLAGLIST_GLOBAL, - FLAGLIST_SPECIAL -}; - -// Numeric IDs for tag sizes (should maybe put somewhere else?) -enum TagSize { - TAGSIZE_SS, - TAGSIZE_S, - TAGSIZE_M, - TAGSIZE_L, - TAGSIZE_XL -}; - -// Numeric IDs for different test run categories -enum TestRunType { - TESTRUN_GRAFFITI, - TESTRUN_TECH, - TESTRUN_DASH, - TESTRUN_FLAG -}; - -// Unpacked version of TestRunScoreSaved -struct TestRunScore { - unsigned score; - PlayerCharId character; - unsigned rank1; // Used by Jet Tech - unsigned rank2; // Used by other test runs -}; - -// Numeric IDs for different timers -enum Timer { - TIMER_DEATHBALLPRACTICE, - TIMER_CLUTCH, - TIMER_UNUSED -}; - -// Info showed in save/load menu -struct SaveDescription { - unsigned chapter, playtimeSeconds; -}; - -union FlagListOrPtr { - FlagList list; - unsigned * ptr; -}; - -// Save data-ish data structure used at runtime -struct GameData { - SaveData saveActive; - SaveData saveStashed; // Holds save data during test runs/tutorials - - unsigned missionFlags[16]; // Reset every mission transition - unsigned deathBallPracticeTimer; // For Jazz sequence in Future Site - - // Indexed like SaveData.highScores; true if score is most recent and - // also made leaderboard - BOOL mostRecentHighScore[16][4][5]; - - // Tags indexed by single or multiplayer, then gang (GGs, Golden - // Rhinos/Zero Beat, Poison Jam, Immortals) or player, then size - unsigned selectedTags [2][4][5]; // IDs of tags in use - BOOL customTagSelected[2][4][5]; // True means tag ID is for custom - // graffiti list, not ingame list - - BOOL checkFlagCondition (unsigned cond); - void writeStateFlag (unsigned flagVal); - void incrementChapter (); - void setMissionDigits34 (unsigned val); - void setSpawnPosIndex (unsigned val); - unsigned getSpawnPosIndex (); - void unlockCharacter (PlayerCharId charId); - void lockCharacter (PlayerCharId charId); - BOOL characterUnlocked (PlayerCharId charId); - BOOL checkFlagConditions (unsigned * conds , unsigned count); - void writeStateFlags (unsigned * writes, unsigned count); - BOOL checkFlagConditionUnpacked(FlagList flagList, unsigned index); - void writeStateFlagUnpacked (FlagList flagList, unsigned index, unsigned val); - void setSoulSpawned (unsigned soulId); - BOOL getSoulSpawned (unsigned soulId); - void setSoulCollected (unsigned soulId); - BOOL getSoulHeld (unsigned soulId); - BOOL soulSpawnedUncollected(unsigned soulId); - void clearHeldSouls (); - void restoreHeldSouls (); - unsigned getSoulCount (); - unsigned getTotalSoulsInStage(unsigned stageId); - unsigned getHeldSoulsInStage (unsigned stageId); - BOOL getSoulCollectedBySize(TagSize size, unsigned index); - void setUnusedPerStageBitmask(unsigned stageId, unsigned index); - int getTagState (unsigned stageId, unsigned index, BOOL rivalTag); - void setTagState (unsigned stageId, unsigned index, BOOL rivalTag, unsigned val); - void setTagCovered (unsigned stageId, unsigned index, BOOL rivalTag, unsigned gangOrPlayer); - void setVolumeSettings (float volMusic, float volSfx); - void getVolumeSettings (float * outMusic, float * outSfx); - void setRumbleEnabled (BOOL val); - BOOL getRumbleEnabled (); - void setGarageMusic (unsigned songId); - unsigned getGarageMusic (); - void setUnusedBitfield (unsigned index); - void setMiscObjective (unsigned index); - BOOL getMiscObjective (unsigned index); - unsigned countMiscObjectives (); - BOOL getHighScore (unsigned stageId, TestRunType type, unsigned rank, TestRunScore * out); - void incrementTimer (Timer timer); - unsigned getTimer (Timer timer); - void setTimer (Timer timer, unsigned frames); - void setSelectedTag (unsigned gangOrPlayer, TagSize size, unsigned tagId, BOOL multiplayer); - unsigned getSelectedTag (unsigned gangOrPlayer, TagSize size, BOOL multiplayer); - void setCustomTagSelected(unsigned gangOrPlayer, TagSize size, BOOL active, BOOL multiplayer); - BOOL getCustomTagSelected(unsigned gangOrPlayer, TagSize size, BOOL multiplayer); - void setEventSeen (unsigned eventId); - BOOL eventSeen (unsigned eventId); - void incrementPlaytime (); - unsigned getSaveDataSize (); - BOOL decrypt (char * saveData); - void encrypt (char * outSaveData); - void getSaveDescription (SaveDescription * outDesc); - void clearStateFlags (FlagListOrPtr flags); - void resetTimer (Timer timer); - GameData(); - void resetSelectedTags (); - - void resetExceptSettingsAndSouls (); - void resetExceptSettingsAndHighScores(); - void resetExceptSettings (); - - void stash (); - void stashRestoreExceptSpecialFlags(); - void stashRestoreExceptHighScores (); - void stashRestore (); - - virtual ~GameData(); - void addHighScore(unsigned stageId, TestRunType type, TestRunScore * score); -}; -extern GameData g_gameData; - -#endif diff --git a/decompile/src/JSRF/Jet2.cpp b/decompile/src/JSRF/Jet2.cpp index 0db0134..0de638f 100644 --- a/decompile/src/JSRF/Jet2.cpp +++ b/decompile/src/JSRF/Jet2.cpp @@ -5,18 +5,18 @@ Main function. #pragma bss_seg(".data") #include "../XDK/CRT/stddef.h" -#include "Core.hpp" +#include "Action.hpp" // Address: 0x0022FCE0 -Game * g_game; +CActMan * g_lpActMan; // Address: 0x0006F9E0 // Status: matching void main(void) { - g_game = new Game(NULL, 0); - g_game->initRootExecObj(); - g_game->mainLoop(); - delete g_game; + g_lpActMan = new CActMan(NULL, 0); + g_lpActMan->Init(); + g_lpActMan->Idle(); + delete g_lpActMan; } diff --git a/decompile/src/JSRF/SaveData.cpp b/decompile/src/JSRF/SaveData.cpp new file mode 100644 index 0000000..daf5de3 --- /dev/null +++ b/decompile/src/JSRF/SaveData.cpp @@ -0,0 +1,366 @@ +/* JSRF Decompilation: JSRF/SaveData.cpp +Save data and closely-related runtime data. +*/ + +#pragma bss_seg(".data") + +#include "../XDK/Win32.h" +#include "SaveData.hpp" + + +CSaveData g_SaveData = CSaveData(); + + + +// Address: 0x00039B50 +// Status: unimplemented +BOOL CSaveData::CheckFlagCondition(DWORD dwCond) { + return 0; +} + +// Address: 0x00039BE0 +// Status: unimplemented +void CSaveData::WriteStateFlag(DWORD dwFlagVal) { +} + +// Address: 0x00039C70 +// Status: unimplemented +void CSaveData::IncreaseChapter() { +} + +// Address: 0x00039C80 +// Status: unimplemented +void CSaveData::SetReturnMissionNo(DWORD dwVal) { +} + +// Address: 0x00039C90 +// Status: unimplemented +void CSaveData::SetSpawnPosIndex(DWORD dwVal) { +} + +// Address: 0x00039CA0 +// Status: unimplemented +DWORD CSaveData::GetSpawnPosIndex() { + return 0; +} + +// Address: 0x00039CB0 +// Status: unimplemented +void CSaveData::UnlockCharacter(ePLAYERCHARID CharId) { +} + +// Address: 0x00039CF0 +// Status: unimplemented +void CSaveData::LockCharacter(ePLAYERCHARID CharId) { +} + +// Address: 0x00039D10 +// Status: unimplemented +BOOL CSaveData::IsCharacterUnlocked(ePLAYERCHARID CharId) { + return 0; +} + +// Address: 0x00039D40 +// Status: unimplemented +BOOL CSaveData::CheckFlagConditions(DWORD * lpdwConds, DWORD dwCount) { + return 0; +} + +// Address: 0x00039D80 +// Status: unimplemented +void CSaveData::WriteStateFlags(DWORD * lpdwWrites, DWORD dwCount) { +} + +// Address: 0x00039DB0 +// Status: unimplemented +BOOL CSaveData::CheckFlagConditionUnpacked(eFLAGLIST FlagList, DWORD dwIndex) { + return 0; +} + +// Address: 0x00039DE0 +// Status: unimplemented +void CSaveData::WriteStateFlagUnpacked(eFLAGLIST FlagList, DWORD dwIndex, DWORD dwVal) { +} + +// Address: 0x00039E10 +// Status: unimplemented +void CSaveData::SetSoulSpawned(DWORD dwSoulId) { +} + +// Address: 0x00039E40 +// Status: unimplemented +BOOL CSaveData::GetSoulSpawned(DWORD dwSoulId) { + return 0; +} + +// Address: 0x00039E80 +// Status: unimplemented +void CSaveData::SetSoulCollected(DWORD dwSoulId) { +} + +// Address: 0x00039EB0 +// Status: unimplemented +BOOL CSaveData::GetSoulHeld(DWORD dwSoulId) { + return 0; +} + +// Address: 0x00039EF0 +// Status: unimplemented +BOOL CSaveData::IsSoulSpawnedUncollected(DWORD dwSoulId) { + return 0; +} + +// Address: 0x00039F40 +// Status: unimplemented +void CSaveData::ClearHeldSouls() { +} + +// Address: 0x00039F60 +// Status: unimplemented +void CSaveData::RestoreHeldSouls() { +} + +// Address: 0x00039FD0 +// Status: unimplemented +DWORD CSaveData::GetSoulCount() { + return 0; +} + +// Address: 0x0003A0A0 +// Status: unimplemented +DWORD CSaveData::GetTotalSoulsInStage(DWORD dwStageId) { + return 0; +} + +// Address: 0x0003A130 +// Status: unimplemented +DWORD CSaveData::GetHeldSoulsInStage(DWORD dwStageId) { + return 0; +} + +// Address: 0x0003A2B0 +// Status: unimplemented +BOOL CSaveData::GetSoulCollectedBySize(eTAGSIZE Size, DWORD dwIndex) { + return 0; +} + +// Address: 0x0003A2F0 +// Status: unimplemented +void CSaveData::SetUnusedPerStageBitmask(DWORD dwStageId, DWORD dwIndex) { +} + +// Address: 0x0003A340 +// Status: unimplemented +int CSaveData::GetTagState(DWORD dwStageId, DWORD dwTagIndex, BOOL bRivalTag) { + return 0; +} + +// Address: 0x0003A3A0 +// Status: unimplemented +void CSaveData::SetTagState(DWORD dwStageId, DWORD dwTagIndex, BOOL bRivalTag, DWORD dwVal) { +} + +// Address: 0x0003A400 +// Status: unimplemented +void CSaveData::SetTagCovered(DWORD dwStageId, DWORD dwTagIndex, BOOL bRivalTag, DWORD dwGangOrPlayer) { +} + +// Address: 0x0003A4A0 +// Status: unimplemented +void CSaveData::SetVolumeSettings(float fVolMusic, float fVolSfx) { +} + +// Address: 0x0003A4C0 +// Status: unimplemented +void CSaveData::GetVolumeSettings(float * lpfOutMusic, float * lpfOutSfx) { +} + +// Address: 0x0003A4E0 +// Status: unimplemented +void CSaveData::SetRumbleEnabled(BOOL bVal) { +} + +// Address: 0x0003A4F0 +// Status: unimplemented +BOOL CSaveData::GetRumbleEnabled() { + return 0; +} + +// Address: 0x0003A500 +// Status: unimplemented +void CSaveData::SetGarageMusic(DWORD dwSongId) { +} + +// Address: 0x0003A510 +// Status: unimplemented +DWORD CSaveData::GetGarageMusic() { + return 0; +} + +// Address: 0x0003A520 +// Status: unimplemented +void CSaveData::SetUnusedBitfield(DWORD dwIndex) { +} + +// Address: 0x0003A550 +// Status: unimplemented +void CSaveData::SetMiscObjective(DWORD dwIndex) { +} + +// Address: 0x0003A580 +// Status: unimplemented +BOOL CSaveData::GetMiscObjective(DWORD dwIndex) { + return 0; +} + +// Address: 0x0003A5C0 +// Status: unimplemented +DWORD CSaveData::CountMiscObjectives() { + return 0; +} + +// Address: 0x0003A690 +// Status: unimplemented +BOOL CSaveData::GetHighScore(DWORD dwStageId, eTESTRUN Type, DWORD dwRank, STestRunScore * lpOut) { + return 0; +} + +// Address: 0x0003A750 +// Status: unimplemented +void CSaveData::IncreaseTimer(eTIMER Timer) { +} + +// Address: 0x0003A780 +// Status: unimplemented +DWORD CSaveData::GetTimer(eTIMER Timer) { + return 0; +} + +// Address: 0x0003A7B0 +// Status: unimplemented +void CSaveData::SetTimer(eTIMER Timer, DWORD dwFrames) { +} + +// Address: 0x0003A7F0 +// Status: unimplemented +void CSaveData::SetSelectedTag(DWORD dwGangOrPlayer, eTAGSIZE Size, DWORD dwTagId, BOOL bMultiplayer) { +} + +// Address: 0x0003A820 +// Status: unimplemented +DWORD CSaveData::GetSelectedTag(DWORD dwGangOrPlayer, eTAGSIZE Size, BOOL bMultiplayer) { + return 0; +} + +// Address: 0x0003A840 +// Status: unimplemented +void CSaveData::SetCustomTagSelected(DWORD dwGangOrPlayer, eTAGSIZE Size, BOOL active, BOOL bMultiplayer) { +} + +// Address: 0x0003A870 +// Status: unimplemented +BOOL CSaveData::GetCustomTagSelected(DWORD dwGangOrPlayer, eTAGSIZE Size, BOOL bMultiplayer) { + return 0; +} + +// Address: 0x0003A890 +// Status: unimplemented +void CSaveData::SetEventSeen(DWORD dwEventId) { +} + +// Address: 0x0003A8C0 +// Status: unimplemented +BOOL CSaveData::GetEventSeen(DWORD dwEventId) { + return 0; +} + +// Address: 0x0003A900 +// Status: unimplemented +void CSaveData::IncreasePlaytime() { +} + +// Address: 0x0003A910 +// Status: matching +DWORD CSaveData::GetSaveDataSize() { + // 0x50 byte key + 0x3508 actual save data + 0x8 extra (why extra?) + return 0x50 + sizeof this->m_SaveData + 0x8; +} + +// Address: 0x0003A920 +// Status: unimplemented +BOOL CSaveData::Decode(void * lpvSaveData) { + return 0; +} + +// Address: 0x0003AB60 +// Status: unimplemented +void CSaveData::Encode(void * lpvOutSaveData) { +} + +// Address: 0x0003AE00 +// Status: unimplemented +void CSaveData::GetSaveDescription(SSaveDescription * lpOutDesc) { +} + +// Address: 0x0003AE20 +// Status: unimplemented +void CSaveData::ClearStateFlags(UFlagListOrPtr FlagList) { +} + +// Address: 0x0003AEA0 +// Status: unimplemented +void CSaveData::ResetTimer(eTIMER Timer) { +} + +// Address: 0x0003AED0 +// Status: unimplemented +CSaveData::CSaveData() { +} + +// Address: 0x0003B3C0 +// Status: unimplemented +void CSaveData::ResetSelectedTags() { +} + +// Address: 0x0003B420 +// Status: unimplemented +void CSaveData::SaveDataResetTutorial() { +} + +// Address: 0x0003B5A0 +// Status: unimplemented +void CSaveData::SaveDataResetTestRun() { +} + +// Address: 0x0003B640 +// Status: unimplemented +void CSaveData::SaveDataResetVs() { +} + +// Address: 0x0003B680 +// Status: unimplemented +void CSaveData::SaveDataBackup() { +} + +// Address: 0x0003B6A0 +// Status: unimplemented +void CSaveData::SaveDataRestoreTutorial() { +} + +// Address: 0x0003B6F0 +// Status: unimplemented +void CSaveData::SaveDataRestoreTestRun() { +} + +// Address: 0x0003B790 +// Status: unimplemented +void CSaveData::SaveDataRestoreVs() { +} + +// Optimized out +CSaveData::~CSaveData() {} + +// Address: 0x0003B7E0 +// Status: unimplemented +void CSaveData::AddHighScore(DWORD dwStageId, eTESTRUN Type, STestRunScore * lpScore) { +} diff --git a/decompile/src/JSRF/SaveData.hpp b/decompile/src/JSRF/SaveData.hpp new file mode 100644 index 0000000..336a96e --- /dev/null +++ b/decompile/src/JSRF/SaveData.hpp @@ -0,0 +1,237 @@ +/* JSRF Decompilation: JSRF/SaveData.hpp +Save data and closely-related runtime data. +*/ + +#ifndef SAVEDATA_HPP +#define SAVEDATA_HPP + +#include "../XDK/Win32.h" + + +// Enum that should probably go somewhere else +enum ePLAYERCHARID { + ePLAYERCHARID_BEAT, + ePLAYERCHARID_CORN, + ePLAYERCHARID_GUM, + ePLAYERCHARID_COMBO, + ePLAYERCHARID_RHYTH, + ePLAYERCHARID_SODA, + ePLAYERCHARID_YOYO, + ePLAYERCHARID_NT3000, + ePLAYERCHARID_GARAM, + ePLAYERCHARID_BOOGIE, + ePLAYERCHARID_CUBE, + ePLAYERCHARID_LOVESHOCKERS, + ePLAYERCHARID_POISONJAM, + ePLAYERCHARID_NOISETANK, + ePLAYERCHARID_IMMORTALS, + ePLAYERCHARID_DOOMRIDERS, + ePLAYERCHARID_RAPID99, + ePLAYERCHARID_POTTS, + ePLAYERCHARID_GOUJI, + ePLAYERCHARID_ROBOY, + ePLAYERCHARID_CLUTCH, + ePLAYERCHARID_JAZZ, + ePLAYERCHARID_AKUMU, + ePLAYERCHARID_ZEROBEAT +}; + +// Data structure actually saved to disk +struct sdData { + DWORD m_dwReturnChapterNo; + DWORD m_dwReturnMissionNo; + DWORD m_dwSpawnPosIndex; + DWORD m_dwPlaytimeFrames; + DWORD m_dwUnlockedChars; + + // Boolean flags read and written by missions + DWORD m_dwChapterFlags[16]; // Reset every chapter + DWORD m_dwGlobalFlags [16]; // Never reset + DWORD m_dwSpecialFlags[16]; // Never reset; special effects like + // unlocking/completing tutorials, finishing + // street challenges + + DWORD m_dwSpawnedSouls [8]; // Souls that have appeared on streets + DWORD m_dwCollectedSouls[8]; // Souls that have been acquired + DWORD m_dwHeldSouls [8]; // Souls currently usable (i.e. not stolen) + + DWORD m_dwUnusedPerStageBitmask[16]; + + // Which tags have been sprayed and by who + // Indexed by stage, tag ID, and player/rival tag; rival tags don't + // count towards completion and can be painted over. Each entry is a + // packed bit array of 3 bits per "G" mark, valued 7 if nothing is + // painted or 0-3 to indicate player 1-4 painted it (in story mode, + // rival graffiti is considered painted by players 2-4). + DWORD m_dwTagState[16][80][2]; + + struct sdSettings { + float m_fVolumeMusic; + float m_fVolumeSfx; + BOOL m_bRumbleEnabled; + unsigned m_dwUnused[29]; + } m_Settings; + + DWORD m_dwGarageMusic; + DWORD m_dwUnusedBitfield[8]; + + // Sewer switches at offset 0 then noise tanks at offset 3 + DWORD m_dwMiscObjectives[32]; + + struct sdTestRunScore { + DWORD m_dwScore; + unsigned char m_ucCharacter; + unsigned char m_ucRank1; // Used by Jet Tech + unsigned char m_ucRank2; // Used by other test runs + } m_HighScores[16][4][5]; + + DWORD m_dwClutchTimer; + DWORD m_dwUnusedTimer; + + DWORD m_dwSelectedTags [5]; // Like GameData but for P1 in 1-player + DWORD m_dwCustomTagSelected[5]; // Like GameData but for P1 in 1-player + + DWORD m_dwEventsSeen[16]; +}; + +// Numeric IDs for selecting different listss of state flags +enum eFLAGLIST { + eFLAGLIST_MISSION, + eFLAGLIST_CHAPTER, + eFLAGLIST_GLOBAL, + eFLAGLIST_SPECIAL +}; + +// Numeric IDs for tag sizes (should maybe put somewhere else?) +enum eTAGSIZE { + eTAGSIZE_SS, + eTAGSIZE_S, + eTAGSIZE_M, + eTAGSIZE_L, + eTAGSIZE_XL +}; + +// Numeric IDs for different test run categories +enum eTESTRUN { + eTESTRUN_GRAFFITI, + eTESTRUN_TECH, + eTESTRUN_DASH, + eTESTRUN_FLAG +}; + +// Unpacked version of STestRunScoreSaved +struct STestRunScore { + DWORD m_dwScore; + ePLAYERCHARID m_Character; + DWORD m_dwRank1; // Used by Jet Tech + DWORD m_dwRank2; // Used by other test runs +}; + +// Numeric IDs for different timers +enum eTIMER { + eTIMER_DEATHBALLPRACTICE, + eTIMER_CLUTCH, + eTIMER_UNUSED +}; + +// Info showed in save/load menu +struct SSaveDescription { + DWORD m_dwChapter; + DWORD m_dwPlaytimeSeconds; +}; + +union UFlagListOrPtr { + eFLAGLIST list; + DWORD * lpdw; +}; + +// Save data-ish data structure used at runtime +struct CSaveData { + sdData m_SaveData; + sdData m_SaveBack; // Holds save data during test runs/tutorials + + DWORD m_dwMissionFlags[16]; // Reset every mission transition + DWORD m_dwDeathBallPracticeTimer; // For Jazz sequence in Future Site + + // Indexed like SaveData.highScores; true if score is most recent and + // also made leaderboard + BOOL m_bMostRecentHighScore[16][4][5]; + + // Tags indexed by single or multiplayer, then gang (GGs, Golden + // Rhinos/Zero Beat, Poison Jam, Immortals) or player, then size + DWORD m_dwSelectedTags [2][4][5]; // IDs of tags in use + BOOL m_bCustomTagSelected[2][4][5]; // True means tag ID is for custom + // graffiti list, not ingame list + + BOOL CheckFlagCondition (DWORD dwCond); + void WriteStateFlag (DWORD dwFlagVal); + void IncreaseChapter (); + void SetReturnMissionNo (DWORD dwVal); + void SetSpawnPosIndex (DWORD dwVal); + DWORD GetSpawnPosIndex (); + void UnlockCharacter (ePLAYERCHARID CharId); + void LockCharacter (ePLAYERCHARID CharId); + BOOL IsCharacterUnlocked (ePLAYERCHARID CharId); + BOOL CheckFlagConditions (DWORD * lpdwConds , DWORD dwCount); + void WriteStateFlags (DWORD * lpdwWrites, DWORD dwCount); + BOOL CheckFlagConditionUnpacked(eFLAGLIST FlagList, DWORD dwIndex); + void WriteStateFlagUnpacked (eFLAGLIST FlagList, DWORD dwIndex, DWORD dwVal); + void SetSoulSpawned (DWORD dwSoulId); + BOOL GetSoulSpawned (DWORD dwSoulId); + void SetSoulCollected (DWORD dwSoulId); + BOOL GetSoulHeld (DWORD dwSoulId); + BOOL IsSoulSpawnedUncollected(DWORD dwSoulId); + void ClearHeldSouls (); + void RestoreHeldSouls (); + DWORD GetSoulCount (); + DWORD GetTotalSoulsInStage(DWORD dwStageId); + DWORD GetHeldSoulsInStage (DWORD dwStageId); + BOOL GetSoulCollectedBySize(eTAGSIZE Size, DWORD dwIndex); + void SetUnusedPerStageBitmask(DWORD dwStageId, DWORD dwIndex); + int GetTagState (DWORD dwStageId, DWORD dwIndex, BOOL bRivalTag); + void SetTagState (DWORD dwStageId, DWORD dwIndex, BOOL bRivalTag, DWORD dwVal); + void SetTagCovered (DWORD dwStageId, DWORD dwIndex, BOOL bRivalTag, DWORD dwGangOrPlayer); + void SetVolumeSettings (float fVolMusic , float fVolSfx); + void GetVolumeSettings (float * lpfOutMusic, float * lpfOutSfx); + void SetRumbleEnabled (BOOL bVal); + BOOL GetRumbleEnabled (); + void SetGarageMusic (DWORD dwSongId); + DWORD GetGarageMusic (); + void SetUnusedBitfield (DWORD dwIndex); + void SetMiscObjective (DWORD dwIndex); + BOOL GetMiscObjective (DWORD dwIndex); + DWORD CountMiscObjectives (); + BOOL GetHighScore (DWORD dwStageId, eTESTRUN Type, DWORD dwRank, STestRunScore * lpOut); + void IncreaseTimer (eTIMER Timer); + DWORD GetTimer (eTIMER Timer); + void SetTimer (eTIMER Timer, DWORD frames); + void SetSelectedTag (DWORD dwGangOrPlayer, eTAGSIZE Size, DWORD dwTagId, BOOL bMultiplayer); + DWORD GetSelectedTag (DWORD dwGangOrPlayer, eTAGSIZE Size, BOOL bMultiplayer); + void SetCustomTagSelected(DWORD dwGangOrPlayer, eTAGSIZE Size, BOOL bActive, BOOL bMultiplayer); + BOOL GetCustomTagSelected(DWORD dwGangOrPlayer, eTAGSIZE Size, BOOL bMultiplayer); + void SetEventSeen (DWORD dwEventId); + BOOL GetEventSeen (DWORD dwEventId); + void IncreasePlaytime (); + DWORD GetSaveDataSize (); + BOOL Decode (void * lpvSaveData); + void Encode (void * lpvOutSaveData); + void GetSaveDescription (SSaveDescription * lpOutDesc); + void ClearStateFlags (UFlagListOrPtr Flags); + void ResetTimer (eTIMER Timer); + CSaveData(); + void ResetSelectedTags (); + + void SaveDataResetTutorial (); + void SaveDataResetTestRun (); + void SaveDataResetVs (); + void SaveDataBackup (); + void SaveDataRestoreTutorial(); + void SaveDataRestoreTestRun (); + void SaveDataRestoreVs (); + + virtual ~CSaveData(); + void AddHighScore(DWORD dwStageId, eTESTRUN Type, STestRunScore * lpScore); +}; +extern CSaveData g_SaveData; + +#endif diff --git a/decompile/src/MUSASHI/MMatrix.hpp b/decompile/src/MUSASHI/MMatrix.hpp index 9d7354d..87c98c3 100644 --- a/decompile/src/MUSASHI/MMatrix.hpp +++ b/decompile/src/MUSASHI/MMatrix.hpp @@ -9,6 +9,6 @@ Smilebit's stack-based matrix math library. // 4x4 matrix type -typedef D3DVECTOR4 Mat4[4]; +typedef float Mat4[4][4]; #endif diff --git a/ghidra/make_header.sh b/ghidra/make_header.sh index 3181dfe..a2aaabf 100755 --- a/ghidra/make_header.sh +++ b/ghidra/make_header.sh @@ -13,8 +13,8 @@ HEADERS=" XDK/CRT/ehdata.h XDK/D3D.h MUSASHI/MMatrix.hpp - JSRF/Core.hpp - JSRF/GameData.hpp + JSRF/Action.hpp + JSRF/SaveData.hpp " # Process each header file into jsrf.h diff --git a/ghidra/objects.csv b/ghidra/objects.csv index 6a7689b..5b18483 100644 --- a/ghidra/objects.csv +++ b/ghidra/objects.csv @@ -1,6 +1,6 @@ Object,Delink?,.text,.text$yc,.text$yd,.text$x,D3D,DSOUND,MMATRIX,XGRPH,XPP,.rdata,.rdata$x,.data$CRT,.data,DOLBY -JSRF/Core.obj,true,0x00011000-0x00013FEB,,,0x00186BA0-0x00186C14,,,,,,0x001C4390-0x001C44F9,0x001E4D20-0x001E4DAB,,0x001EB880-0x001EB933, -JSRF/GameData.obj,true,0x00039B50-0x0003B937,0x0018AD60-0x0018AD75,0x0018C9A0-0x0018C9AA,,,,,,,0x001CA16C-0x001CA3DB,,0x001EB790-0x001EB793,0x001EFC88-0x001F7047, +JSRF/Action.obj,true,0x00011000-0x00013FEB,,,0x00186BA0-0x00186C14,,,,,,0x001C4390-0x001C44F9,0x001E4D20-0x001E4DAB,,0x001EB880-0x001EB933, +JSRF/SaveData.obj,true,0x00039B50-0x0003B937,0x0018AD60-0x0018AD75,0x0018C9A0-0x0018C9AA,,,,,,,0x001CA16C-0x001CA3DB,,0x001EB790-0x001EB793,0x001EFC88-0x001F7047, JSRF/Jet2.obj,true,0x0006F9E0-0x0006FA6F,,,0x00187710-0x00187724,,,,,,,0x001E620C-0x001E622F,,0x0022FCE0-0x0022FCE3, ADX (need to decompose),false,0x0013A570-0x0014555F,?,?,?,?,,,,,,?,?,?, Xapi (need to decompose),false,0x00145560-0x0014B79F,?,?,?,?,,,,,,?,?,?, diff --git a/ghidra/symboltable.tsv b/ghidra/symboltable.tsv index 055c3c2..fc9033e 100644 --- a/ghidra/symboltable.tsv +++ b/ghidra/symboltable.tsv @@ -1,123 +1,123 @@ -0x00011000 func void __thiscall notinline nofixup GameObj::~GameObj -0x00011070 func void __thiscall notinline nofixup GameObj::recursiveExecDefault -0x000110a0 func void __thiscall notinline nofixup GameObj::drawListDefault GameObjFlags flagFilterAny1 int drawArg1 int drawArg2 GameObjFlags flagFilterAll uint otherBitfieldFilterAny GameObjFlags flagFilterNone GameObjFlags flagFilterAny2 -0x00011220 func void __thiscall notinline nofixup GameObj::drawTreeDefault1 -0x00011260 func void __thiscall notinline nofixup GameObj::drawTreeDefault2 -0x000112a0 func void __thiscall notinline nofixup GameObj::recursiveExecEvent -0x000112d0 func void __thiscall notinline nofixup GameObj::drawListEvent GameObjFlags param_1 int param_2 int param_3 GameObjFlags param_4 uint param_5 GameObjFlags param_6 GameObjFlags param_7 -0x00011450 func void __thiscall notinline nofixup GameObj::drawTreeEvent1 -0x00011490 func void __thiscall notinline nofixup GameObj::drawTreeEvent2 -0x000114d0 func void __thiscall notinline nofixup GameObj::recursiveExecCoveredPause -0x00011500 func void __thiscall notinline nofixup GameObj::drawListCoveredPause GameObjFlags flagFilterAny1 int drawArg1 int drawArg2 GameObjFlags flagFilterAll uint otherBitfieldFilterAny GameObjFlags flagFilterNone GameObjFlags flagFilterAny2 -0x00011680 func void __thiscall notinline nofixup GameObj::drawTreeCoveredPause1 -0x000116c0 func void __thiscall notinline nofixup GameObj::drawTreeCoveredPause2 -0x00011700 func void __thiscall notinline nofixup GameObj::recursiveExecFreezeCam -0x00011730 func void __thiscall notinline nofixup GameObj::drawListFreezeCam GameObjFlags param_1 int param_2 int param_3 GameObjFlags param_4 uint param_5 GameObjFlags param_6 GameObjFlags param_7 -0x000118b0 func void __thiscall notinline nofixup GameObj::drawTreeFreezeCam1 -0x000118f0 func void __thiscall notinline nofixup GameObj::drawTreeFreezeCam2 -0x00011930 func void __thiscall notinline nofixup GameObj::recursiveExecUncoveredPause -0x00011960 func void __thiscall notinline nofixup GameObj::drawListUncoveredPause GameObjFlags param_1 int param_2 int param_3 GameObjFlags param_4 uint param_5 GameObjFlags param_6 GameObjFlags param_7 -0x00011ae0 func void __thiscall notinline nofixup GameObj::drawTreeUncoveredPause1 -0x00011b20 func void __thiscall notinline nofixup GameObj::drawTreeUncoveredPause2 -0x00011b60 func void __thiscall notinline nofixup GameObj::addToSiblings GameObj * sibling GameObj * parent -0x00011b90 func void __thiscall notinline nofixup GameObj::destructChildren GameObj * firstChild -0x00011bd0 func GameObj * __thiscall notinline nofixup GameObj::getParent -0x00011be0 func void __thiscall notinline nofixup GameObj::removeFromObjList GameObj * obj -0x00011c20 func void __thiscall notinline nofixup GameObj::removeChildrenFromObjList GameObj * firstChild -0x00011c80 func void __thiscall notinline nofixup GameObj::nopMethod1Arg uint param_1 -0x00011c90 func void __thiscall notinline nofixup GameObj::nopMethod0Arg -0x00011ca0 func void __thiscall notinline nofixup DrawTree::copySomeVectors -0x00011ce0 func void * __thiscall notinline nofixup GameObj::`scalar_deleting_destructor' uint param_1 -0x00011d00 func void __thiscall notinline nofixup GameObj::recursivePostExecDefault -0x00011da0 func void __thiscall notinline nofixup GameObj::recursivePostExecEvent -0x00011e40 func void __thiscall notinline nofixup GameObj::recursivePostExecCoveredPause -0x00011ee0 func void __thiscall notinline nofixup GameObj::recursivePostExecFreezeCam -0x00011f80 func void __thiscall notinline nofixup GameObj::recursivePostExecUncoveredPause -0x00012020 func void __thiscall notinline nofixup GameObj::setParent GameObj * parent -0x00012100 func GameObj * __thiscall notinline nofixup GameObj::GameObj GameObj * parent GameObjIndex index GameObjFlags flags -0x00012170 func DrawTree * __thiscall notinline nofixup DrawTree::DrawTree GameObj * parent GameObjIndex index GameObjFlags flags -0x000121b0 func void * __thiscall notinline nofixup DrawTree::`scalar_deleting_destructor' uint param_1 -0x000121d0 func void __thiscall notinline nofixup DrawTree::~DrawTree -0x000121e0 func PlayerObj * __thiscall notinline nofixup PlayerObj::PlayerObj GameObj * parent GameObjIndex index GameObjFlags flags -0x00012210 func Game * __thiscall notinline nofixup Game::Game uint * param_1 uint param_2 -0x00012390 func void __thiscall notinline nofixup Game::~Game -0x000123e0 func void __thiscall notinline nofixup Game::exec -0x00012580 func void __thiscall notinline nofixup Game::drawObj GameObj * obj uint param_2 -0x000125e0 func void __thiscall notinline nofixup Game::drawList_ GameObjFlags flagFilterAny1 int drawArg1 int drawArg2 GameObjFlags flagFilterAll uint otherBitfieldFilterAny GameObjFlags flagFilterNone GameObjFlags flagFilterAny2 -0x00012680 func void __thiscall notinline nofixup Game::drawTree1 GameObj * obj -0x000126d0 func void __thiscall notinline nofixup Game::setCoveredPauseNextFrame BOOL val -0x000126f0 func void __thiscall notinline nofixup Game::setEventNextFrame BOOL val -0x00012710 func void __thiscall notinline nofixup Game::setFreezeCamNextFrame BOOL val -0x00012730 func void __thiscall notinline nofixup Game::setUncoveredPauseNextFrame BOOL val -0x00012750 func void __thiscall notinline nofixup Game::enableDrawChildren -0x00012760 func void __thiscall notinline nofixup Game::enableSkipDraw -0x00012770 func void __thiscall notinline nofixup Game::fatal -0x000127b0 func void __thiscall notinline nofixup Game::setDrawMode DrawMode mode -0x000127c0 func void __thiscall notinline nofixup Game::setGlobal GlobalIndex index uint val -0x000127e0 func uint __thiscall notinline nofixup Game::getGlobal GlobalIndex index -0x000127f0 func void __thiscall notinline nofixup Game::addToDrawList GameObj * obj -0x00012840 func void __thiscall notinline nofixup Game::removeFromDrawList GameObj * obj -0x00012870 func void __thiscall notinline nofixup Game::setObj GameObjIndex index GameObj * obj -0x00012890 func void __thiscall notinline nofixup Game::unsetObj GameObjIndex index -0x000128c0 func GameObj * __thiscall notinline nofixup Game::getObj GameObjIndex index -0x000128e0 func int __thiscall notinline nofixup Game::allocObjIndex GameObjIndex min GameObjIndex max -0x00012910 func BOOL __thiscall notinline nofixup Game::objIndexAvail GameObjIndex index -0x00012930 func void __thiscall notinline nofixup Game::swapObjs GameObjIndex index1 GameObjIndex index2 -0x00012980 func void __thiscall notinline nofixup Game::clearScreen -0x000129b0 func void __thiscall notinline nofixup Game::enableSomeExtraDrawListCode -0x000129c0 func void __thiscall notinline nofixup Game::setLogosStarted BOOL val -0x000129d0 func void __thiscall notinline nofixup Game::clearDrawPriorityList -0x000129f0 func GameObj * __thiscall notinline nofixup Game::getDrawPriorityListHead -0x00012a00 func void __thiscall notinline nofixup Game::appendToDrawPriorityList GameObj * obj -0x00012a20 func void __thiscall notinline nofixup Game::sortDrawPriorityListSingleLevel uchar sortKeyBitOffset -0x00012ac0 func void __thiscall notinline nofixup Game::setFallbackBgColour D3DCOLOR colour BOOL useFallback -0x00012ae0 func void __thiscall notinline nofixup RootExecObj::RootExecObj GameObj * parent GameObjIndex index GameObjFlags flags -0x00012be0 func void __thiscall notinline nofixup RootExecObj::~RootExecObj -0x00012bf0 func void * __thiscall notinline nofixup Game::`scalar_deleting_destructor' uint param_1 -0x00012c10 func void __thiscall notinline nofixup Game::initRootExecObj -0x00012c80 func void __thiscall notinline nofixup Game::drawList GameObjFlags flagFilterAll BOOL param_2 -0x000131a0 func void __thiscall notinline nofixup Game::sortDrawPriorityList -0x000131d0 func void * __thiscall notinline nofixup RootExecObj::`scalar_deleting_destructor' uint param_1 -0x000131f0 func void __thiscall notinline nofixup Game::drawObjs -0x00013930 func void __thiscall notinline nofixup Game::draw -0x00013a80 func void __thiscall notinline nofixup Game::frame -0x00013f80 func int __thiscall notinline nofixup Game::mainLoop -0x00013fc0 func void __cdecl notinline nofixup removeFromObjListByIndex GameObjIndex index -0x000149d0 func uint __thiscall notinline nofixup GameData::getChapter -0x000149e0 func undefined4 __thiscall notinline nofixup GameData::getMissionDigits34 +0x00011000 func void __thiscall notinline nofixup CActBase::~CActBase +0x00011070 func void __thiscall notinline nofixup CActBase::recursiveExec0Default +0x000110a0 func void __thiscall notinline nofixup CActBase::drawManyDefault eACTFLAG flagFilterAny1 int drawArg1 int drawArg2 eACTFLAG flagFilterAll uint otherBitfieldFilterAny eACTFLAG flagFilterNone eACTFLAG flagFilterAny2 +0x00011220 func void __thiscall notinline nofixup CActBase::drawTreeDefault1 +0x00011260 func void __thiscall notinline nofixup CActBase::drawTreeDefault2 +0x000112a0 func void __thiscall notinline nofixup CActBase::recursiveExec0Event +0x000112d0 func void __thiscall notinline nofixup CActBase::drawManyEvent eACTFLAG param_1 int param_2 int param_3 eACTFLAG param_4 uint param_5 eACTFLAG param_6 eACTFLAG param_7 +0x00011450 func void __thiscall notinline nofixup CActBase::drawTreeEvent1 +0x00011490 func void __thiscall notinline nofixup CActBase::drawTreeEvent2 +0x000114d0 func void __thiscall notinline nofixup CActBase::recursiveExec0CoveredPause +0x00011500 func void __thiscall notinline nofixup CActBase::drawManyCoveredPause eACTFLAG flagFilterAny1 int drawArg1 int drawArg2 eACTFLAG flagFilterAll uint otherBitfieldFilterAny eACTFLAG flagFilterNone eACTFLAG flagFilterAny2 +0x00011680 func void __thiscall notinline nofixup CActBase::drawTreeCoveredPause1 +0x000116c0 func void __thiscall notinline nofixup CActBase::drawTreeCoveredPause2 +0x00011700 func void __thiscall notinline nofixup CActBase::recursiveExec0FreezeCam +0x00011730 func void __thiscall notinline nofixup CActBase::drawManyFreezeCam eACTFLAG param_1 int param_2 int param_3 eACTFLAG param_4 uint param_5 eACTFLAG param_6 eACTFLAG param_7 +0x000118b0 func void __thiscall notinline nofixup CActBase::drawTreeFreezeCam1 +0x000118f0 func void __thiscall notinline nofixup CActBase::drawTreeFreezeCam2 +0x00011930 func void __thiscall notinline nofixup CActBase::recursiveExec0UncoveredPause +0x00011960 func void __thiscall notinline nofixup CActBase::drawManyUncoveredPause eACTFLAG param_1 int param_2 int param_3 eACTFLAG param_4 uint param_5 eACTFLAG param_6 eACTFLAG param_7 +0x00011ae0 func void __thiscall notinline nofixup CActBase::drawTreeUncoveredPause1 +0x00011b20 func void __thiscall notinline nofixup CActBase::drawTreeUncoveredPause2 +0x00011b60 func void __thiscall notinline nofixup CActBase::insertActionTreeSub CActBase * sibling CActBase * parent +0x00011b90 func void __thiscall notinline nofixup CActBase::deleteActionChild CActBase * lpChild +0x00011bd0 func CActBase * __thiscall notinline nofixup CActBase::getParentAction +0x00011be0 func void __thiscall notinline nofixup CActBase::SetDelete CActBase * lpAct +0x00011c20 func void __thiscall notinline nofixup CActBase::SetDeleteChild CActBase * lpChild +0x00011c80 func void __thiscall notinline nofixup CActBase::nopMethod1Arg uint param_1 +0x00011c90 func void __thiscall notinline nofixup CActBase::nopMethod0Arg +0x00011ca0 func void __thiscall notinline nofixup CDrawBase::copySomeVectors +0x00011ce0 func void * __thiscall notinline nofixup CActBase::`scalar_deleting_destructor' uint param_1 +0x00011d00 func void __thiscall notinline nofixup CActBase::recursiveExec1Default +0x00011da0 func void __thiscall notinline nofixup CActBase::recursiveExec1Event +0x00011e40 func void __thiscall notinline nofixup CActBase::recursiveExec1CoveredPause +0x00011ee0 func void __thiscall notinline nofixup CActBase::recursiveExec1FreezeCam +0x00011f80 func void __thiscall notinline nofixup CActBase::recursiveExec1UncoveredPause +0x00012020 func void __thiscall notinline nofixup CActBase::insertActionTree CActBase * lpParent +0x00012100 func CActBase * __thiscall notinline nofixup CActBase::CActBase CActBase * parent eACTID index eACTFLAG flags +0x00012170 func CDrawBase * __thiscall notinline nofixup CDrawBase::CDrawBase CActBase * parent eACTID index eACTFLAG flags +0x000121b0 func void * __thiscall notinline nofixup CDrawBase::`scalar_deleting_destructor' uint param_1 +0x000121d0 func void __thiscall notinline nofixup CDrawBase::~CDrawBase +0x000121e0 func CPlayer * __thiscall notinline nofixup CPlayer::CPlayer CActBase * parent eACTID index eACTFLAG flags +0x00012210 func CActMan * __thiscall notinline nofixup CActMan::CActMan uint * param_1 uint param_2 +0x00012390 func void __thiscall notinline nofixup CActMan::~CActMan +0x000123e0 func void __thiscall notinline nofixup CActMan::ActionExec +0x00012580 func void __thiscall notinline nofixup CActMan::drawOne CActBase * obj uint param_2 +0x000125e0 func void __thiscall notinline nofixup CActMan::drawListSub eACTFLAG flagFilterAny1 int drawArg1 int drawArg2 eACTFLAG flagFilterAll uint otherBitfieldFilterAny eACTFLAG flagFilterNone eACTFLAG flagFilterAny2 +0x00012680 func void __thiscall notinline nofixup CActMan::drawTree1 CActBase * lpAct +0x000126d0 func void __thiscall notinline nofixup CActMan::setCoveredPauseNextFrame BOOL bVal +0x000126f0 func void __thiscall notinline nofixup CActMan::setEventNextFrame BOOL val +0x00012710 func void __thiscall notinline nofixup CActMan::setFreezeCamNextFrame BOOL val +0x00012730 func void __thiscall notinline nofixup CActMan::setUncoveredPauseNextFrame BOOL val +0x00012750 func void __thiscall notinline nofixup CActMan::DrawChildren +0x00012760 func void __thiscall notinline nofixup CActMan::DrawSkip +0x00012770 func void __thiscall notinline nofixup CActMan::Fatal +0x000127b0 func void __thiscall notinline nofixup CActMan::SetDrawMode eDRAWMODE Mode +0x000127c0 func void __thiscall notinline nofixup CActMan::SetGlobal eGLOBAL Index DWORD dwVal +0x000127e0 func DWORD __thiscall notinline nofixup CActMan::GetGlobal eGLOBAL Index +0x000127f0 func void __thiscall notinline nofixup CActMan::InsertDrawList CActBase * lpAct +0x00012840 func void __thiscall notinline nofixup CActMan::DeleteDrawList CActBase * lpAct +0x00012870 func void __thiscall notinline nofixup CActMan::InsertActionExecList eACTID ActID CActBase * lpAct +0x00012890 func void __thiscall notinline nofixup CActMan::FreeActID eACTID id +0x000128c0 func CActBase * __thiscall notinline nofixup CActMan::GetAction eACTID id +0x000128e0 func int __thiscall notinline nofixup CActMan::GetFreeActionID eACTID Min eACTID Max +0x00012910 func BOOL __thiscall notinline nofixup CActMan::ActionIDAvail eACTID ActID +0x00012930 func void __thiscall notinline nofixup CActMan::SwapActID eACTID ActID1 eACTID ActID2 +0x00012980 func void __thiscall notinline nofixup CActMan::ClearScreen +0x000129b0 func void __thiscall notinline nofixup CActMan::EnableSomeExtraDrawListCode +0x000129c0 func void __thiscall notinline nofixup CActMan::SetLogosStarted BOOL bVal +0x000129d0 func void __thiscall notinline nofixup CActMan::initSortDrawList +0x000129f0 func CActBase * __thiscall notinline nofixup CActMan::getSortList +0x00012a00 func void __thiscall notinline nofixup CActMan::InsertDrawSortList CActBase * lpAct +0x00012a20 func void __thiscall notinline nofixup CActMan::SortListSub uchar ucSortKeyBitOffset +0x00012ac0 func void __thiscall notinline nofixup CActMan::SetFallbackBgColor D3DCOLOR Colour BOOL bUseFallback +0x00012ae0 func void __thiscall notinline nofixup CActRoot::CActRoot CActBase * parent eACTID index eACTFLAG flags +0x00012be0 func void __thiscall notinline nofixup CActRoot::~CActRoot +0x00012bf0 func void * __thiscall notinline nofixup CActMan::`scalar_deleting_destructor' uint param_1 +0x00012c10 func void __thiscall notinline nofixup CActMan::Init +0x00012c80 func void __thiscall notinline nofixup CActMan::drawMany eACTFLAG flagFilterAll BOOL param_2 +0x000131a0 func void __thiscall notinline nofixup CActMan::sortDrawList +0x000131d0 func void * __thiscall notinline nofixup CActRoot::`scalar_deleting_destructor' uint param_1 +0x000131f0 func void __thiscall notinline nofixup CActMan::drawSub +0x00013930 func void __thiscall notinline nofixup CActMan::draw +0x00013a80 func void __thiscall notinline nofixup CActMan::IdleSub +0x00013f80 func int __thiscall notinline nofixup CActMan::Idle +0x00013fc0 func void __cdecl notinline nofixup SetActionDelete eACTID ActID +0x000149d0 func DWORD __thiscall notinline nofixup CSaveData::GetReturnChapterNo +0x000149e0 func DWORD __thiscall notinline nofixup CSaveData::GetReturnMissionNo 0x00015110 func undefined4 * __thiscall notinline nofixup UnknownStatic02::~UnknownStatic02 byte param_1 -0x00015130 func void __thiscall notinline nofixup UnknownStatic02::calledDuringExecDefault -0x00016040 func CollisionManager * __thiscall notinline nofixup CollisionManager::CollisionManager -0x00016160 func void __thiscall notinline nofixup CollisionManager::~CollisionManager -0x000161b0 func void __thiscall notinline nofixup CollisionManager::reset -0x00016200 func void __thiscall notinline nofixup CollisionManager::registerStageCollisions CollisionsEntry * ent -0x00016220 func void __thiscall notinline nofixup CollisionManager::registerStageGrindPath GrindPathEntry * ent -0x00016240 func void __thiscall notinline nofixup CollisionManager::registerObjectCollisions int ent -0x00016260 func void __thiscall notinline nofixup CollisionManager::addQuery CollisionQuery * query undefined4 objectId -0x000162a0 func void __thiscall notinline nofixup CollisionManager::addColliderSphereQuery ColliderSphereQuery * query -0x000162e0 func void __thiscall notinline nofixup CollisionManager::addColliderCylinderQuery ColliderCylinderQuery * query -0x00016320 func void __thiscall notinline nofixup CollisionManager::addColliderBoxQuery ColliderBoxQuery * query +0x00015130 func void __thiscall notinline nofixup UnknownStatic02::calledDuringExec0Default +0x00016040 func CSysColiManager * __thiscall notinline nofixup CSysColiManager::CollisionManager +0x00016160 func void __thiscall notinline nofixup CSysColiManager::~CSysColiManager +0x000161b0 func void __thiscall notinline nofixup CSysColiManager::reset +0x00016200 func void __thiscall notinline nofixup CSysColiManager::registerStageCollisions CollisionsEntry * ent +0x00016220 func void __thiscall notinline nofixup CSysColiManager::registerStageGrindPath GrindPathEntry * ent +0x00016240 func void __thiscall notinline nofixup CSysColiManager::registerObjectCollisions int ent +0x00016260 func void __thiscall notinline nofixup CSysColiManager::addQuery CollisionQuery * query undefined4 objectId +0x000162a0 func void __thiscall notinline nofixup CSysColiManager::addColliderSphereQuery ColliderSphereQuery * query +0x000162e0 func void __thiscall notinline nofixup CSysColiManager::addColliderCylinderQuery ColliderCylinderQuery * query +0x00016320 func void __thiscall notinline nofixup CSysColiManager::addColliderBoxQuery ColliderBoxQuery * query 0x00017d90 func undefined __stdcall notinline nofixup makeAABB AABB * outBounds D3DVECTOR * inBounds uint cnt undefined4 extent 0x00019570 func undefined __stdcall notinline nofixup setupSphereCollider ColliderSphere * out ColliderSphere * template 0x000195f0 func undefined __stdcall notinline nofixup setupCylinderCollider ColliderCylinder * out ColliderCylinder * template 0x00019680 func ColliderSphere * __stdcall notinline nofixup createColliderSphere ColliderSphere * template 0x000196f0 func ColliderCylinder * __stdcall notinline nofixup createColliderCylinder ColliderCylinder * template -0x00019760 func void __thiscall notinline nofixup CollisionManager::freeCollider void * collider -0x0001d920 func void __thiscall notinline nofixup CollisionManager::calledDuringExec +0x00019760 func void __thiscall notinline nofixup CSysColiManager::freeCollider void * collider +0x0001d920 func void __thiscall notinline nofixup CSysColiManager::calledDuringExec 0x0001da20 func void __thiscall notinline nofixup UnknownObj_0x1289::~UnknownObj_0x1289 0x0001daa0 func void __thiscall notinline nofixup UnknownObj_0x1289::draw -0x0001daf0 func DrawTree * __thiscall notinline nofixup UnknownObj_0x1289::UnknownObj_0x1289 GameObj * parent GameObjIndex index GameObjFlags flags +0x0001daf0 func CDrawBase * __thiscall notinline nofixup UnknownObj_0x1289::UnknownObj_0x1289 CActBase * parent eACTID index eACTFLAG flags 0x0001dc00 func void * __thiscall notinline nofixup UnknownObj_0x1289::`scalar_deleting_destructor' byte param_1 0x0001dd60 func void __thiscall notinline nofixup UnknownStatic04::calledDuringExec 0x0001dde0 func void __thiscall notinline nofixup UnknownStatic04::`scalar_deleting_destructor' byte param_1 -0x0001df30 func void __thiscall notinline nofixup UnknownStatic05::calledDuringExecDefault +0x0001df30 func void __thiscall notinline nofixup UnknownStatic05::calledDuringExec0Default 0x0001e0b0 func void __thiscall notinline nofixup UnknownStatic05::`scalar_deleting_destructor' byte param_1 0x0001e140 func void __thiscall notinline nofixup CopSpawnView::~CopSpawnView -0x0001e1a0 func void __thiscall notinline nofixup DrawTree::freezeCamDraw int param_1 -0x0001e280 func DrawTree * __thiscall notinline nofixup CopSpawnView::CopSpawnView GameObj * parent GameObjIndex index GameObjFlags flags undefined4 * mssnData +0x0001e1a0 func void __thiscall notinline nofixup CDrawBase::freezeCamDraw int param_1 +0x0001e280 func CDrawBase * __thiscall notinline nofixup CopSpawnView::CopSpawnView CActBase * parent eACTID index eACTFLAG flags undefined4 * mssnData 0x0001e3a0 func void * __thiscall notinline nofixup CopSpawnView::`scalar_deleting_destructor' byte param_1 0x0001e460 func undefined4 default notinline nofixup createCopSpawnView Mission * mssn undefined4 mssnData -0x0001e540 func EventChild2 * __thiscall notinline nofixup EventChild2::EventChild2 GameObj * parent GameObjIndex index uint bitfieldValue uint eventId +0x0001e540 func EventChild2 * __thiscall notinline nofixup EventChild2::EventChild2 CActBase * parent eACTID index uint bitfieldValue uint eventId 0x0001e8c0 func void __thiscall notinline nofixup EventChild2::endEvent_MAYBE 0x00022990 func void __thiscall notinline nofixup EventChild2::~EventChild2 0x000232a0 func void __thiscall notinline nofixup EventChild2::draw undefined4 param_1 @@ -125,9 +125,9 @@ 0x00023790 func void __thiscall notinline nofixup EventChild2::exec 0x000239d0 func void __thiscall notinline nofixup EventChild1::~EventChild1 0x00023f20 func void __thiscall notinline nofixup EventChild1::draw int param_1 -0x00024150 func EventChild1 * __thiscall notinline nofixup EventChild1::EventChild1 GameObj * parent GameObjIndex index GameObjFlags flags +0x00024150 func EventChild1 * __thiscall notinline nofixup EventChild1::EventChild1 CActBase * parent eACTID index eACTFLAG flags 0x00024220 func EventChild1 * __thiscall notinline nofixup EventChild1::`scalar_deleting_destructor' byte param_1 -0x00024240 func GameObj * __thiscall notinline nofixup Event::Event GameObj * parent GameObjIndex index uint bitfieldValue int eventId +0x00024240 func CActBase * __thiscall notinline nofixup Event::Event CActBase * parent eACTID index uint bitfieldValue int eventId 0x00024330 func void __thiscall notinline nofixup Event::~Event 0x000243b0 func void __stdcall notinline nofixup virtualFree void * ptr 0x000243d0 func Event * __thiscall notinline nofixup Event::`scalar_deleting_destructor' byte param_1 @@ -137,12 +137,12 @@ 0x00024600 func undefined unknown notinline nofixup setUnknownAllocated_0x6Something undefined4 packed 0x00024620 func void __stdcall notinline nofixup setUnknownObj_0x6SomethingElse uint packed float param_2 0x00024650 func undefined unknown notinline nofixup getSomeUnknownAllocated_0x6Field -0x00024670 func UnknownObj_0x6 * __thiscall notinline nofixup UnknownObj_0x6::UnknownObj_0x6 GameObj * parent GameObjIndex index GameObjFlags flags +0x00024670 func UnknownObj_0x6 * __thiscall notinline nofixup UnknownObj_0x6::UnknownObj_0x6 CActBase * parent eACTID index eACTFLAG flags 0x000246e0 func UnknownObj_0x6 * __thiscall notinline nofixup UnknownObj_0x6::`scalar_deleting_destructor' byte param_1 0x00024700 func void __thiscall notinline nofixup UnknownObj_0x6::exec -0x00024ae0 func void __thiscall notinline nofixup UnknownStatic06::calledDuringExecDefault +0x00024ae0 func void __thiscall notinline nofixup UnknownStatic06::calledDuringExec0Default 0x00024c70 func void __thiscall notinline nofixup UnknownStatic06::`scalar_deleting_destructor' bool free -0x00024c90 func CacheBuilder_MAYBE * __thiscall notinline nofixup CacheBuilder_MAYBE::CacheBuilder_MAYBE GameObj * parent GameObjIndex index GameObjFlags flags +0x00024c90 func CacheBuilder_MAYBE * __thiscall notinline nofixup CacheBuilder_MAYBE::CacheBuilder_MAYBE CActBase * parent eACTID index eACTFLAG flags 0x00024cf0 func void __thiscall notinline nofixup CacheBuilder_MAYBE::~CacheBuilder_MAYBE 0x00024e10 func BOOL __thiscall notinline nofixup CacheBuilder_MAYBE::cacheTablePathExists uint index 0x00024e70 func BOOL __thiscall notinline nofixup CacheBuilder_MAYBE::writeCacheCheckpoint @@ -163,9 +163,9 @@ 0x00025740 func void __stdcall notinline nofixup freeFile FileType fileType uint id 0x00025770 func BOOL default notinline nofixup fileExists char * path 0x000257b0 func uint default notinline nofixup getSomeFileManagerField -0x000257d0 func void __thiscall notinline nofixup FileManager::FileManager GameObj * parent GameObjIndex index uint bitfieldValue +0x000257d0 func void __thiscall notinline nofixup FileManager::FileManager CActBase * parent eACTID index uint bitfieldValue 0x00025dd0 func BOOL __thiscall notinline nofixup FileManager::readFromPath char * filePath void * * buf -0x00026010 func void __cdecl notinline nofixup initFileManager RootExecObj * parent +0x00026010 func void __cdecl notinline nofixup initFileManager CActRoot * parent 0x00026080 func void __stdcall notinline nofixup freeCurrentFile 0x000260d0 func void __thiscall notinline nofixup FileManager::~FileManager 0x00026150 func FileManager * __thiscall notinline nofixup FileManager::`scalar_deleting_destructor' UINT param_1 @@ -241,73 +241,73 @@ 0x00039850 func BOOL __thiscall notinline nofixup FileManager::readLogo 0x00039a80 func void __thiscall notinline nofixup UnknownStatic07::calledDuringExec 0x00039b30 func void __thiscall notinline nofixup UnknownStatic07::`scalar_deleting_destructor' byte param_1 -0x00039b50 func BOOL __thiscall notinline nofixup GameData::checkFlagCondition uint cond -0x00039be0 func void __thiscall notinline nofixup GameData::writeStateFlag uint flagVal -0x00039c70 func void __thiscall notinline nofixup GameData::incrementChapter -0x00039c80 func void __thiscall notinline nofixup GameData::setMissionDigits34 uint missionDigits34 -0x00039c90 func void __thiscall notinline nofixup GameData::setSpawnPosIndex uint index -0x00039ca0 func uint __thiscall notinline nofixup GameData::getSpawnPosIndex -0x00039cb0 func void __thiscall notinline nofixup GameData::unlockCharacter PlayerCharId charId -0x00039cf0 func void __thiscall notinline nofixup GameData::lockCharacter PlayerCharId charId -0x00039d10 func BOOL __thiscall notinline nofixup GameData::characterUnlocked PlayerCharId charId -0x00039d40 func BOOL __thiscall notinline nofixup GameData::checkFlagConditions uint * conds uint count -0x00039d80 func void __thiscall notinline nofixup GameData::writeStateFlags uint * writes uint count -0x00039db0 func BOOL __thiscall notinline nofixup GameData::checkFlagConditionUnpacked FlagList flagList uint index -0x00039de0 func void __thiscall notinline nofixup GameData::writeStateFlagUnpacked FlagList flagList uint index uint flagVal -0x00039e10 func void __thiscall notinline nofixup GameData::setSoulSpawned uint soulId -0x00039e40 func BOOL __thiscall notinline nofixup GameData::getSoulSpawned uint soulId -0x00039e80 func void __thiscall notinline nofixup GameData::setSoulCollected uint soulId -0x00039eb0 func BOOL __thiscall notinline nofixup GameData::getSoulHeld uint soulId -0x00039ef0 func BOOL __thiscall notinline nofixup GameData::soulSpawnedUncollected uint soulId -0x00039f40 func void __thiscall notinline nofixup GameData::clearHeldSouls -0x00039f60 func void __thiscall notinline nofixup GameData::restoreHeldSouls -0x00039fd0 func uint __thiscall notinline nofixup GameData::getSoulCount -0x0003a0a0 func uint __thiscall notinline nofixup GameData::getTotalSoulsInStage uint stageId -0x0003a130 func uint __thiscall notinline nofixup GameData::getHeldSoulsInStage uint stageId -0x0003a2b0 func BOOL __thiscall notinline nofixup GameData::getSoulCollectedBySize TagSize size uint index -0x0003a2f0 func void __thiscall notinline nofixup GameData::setUnusedPerStageBitmask uint stageId uint index -0x0003a340 func int __thiscall notinline nofixup GameData::getTagState uint stageId uint tagIndex BOOL rivalTag -0x0003a3a0 func void __thiscall notinline nofixup GameData::setTagState uint stageId uint tagIndex BOOL rivalTag uint val -0x0003a400 func void __thiscall notinline nofixup GameData::setTagCovered uint stageId uint tagIndex BOOL rivalTag uint gangOrPlayer -0x0003a4a0 func void __thiscall notinline nofixup GameData::setVolumeSettings float volMusic float volSfx -0x0003a4c0 func void __thiscall notinline nofixup GameData::getVolumeSettings float * outMusic float * outSfx -0x0003a4e0 func void __thiscall notinline nofixup GameData::setRumbleEnabled BOOL value -0x0003a4f0 func BOOL __thiscall notinline nofixup GameData::getRumbleEnabled -0x0003a500 func void __thiscall notinline nofixup GameData::setGarageMusic uint songId -0x0003a510 func uint __thiscall notinline nofixup GameData::getGarageMusic -0x0003a520 func void __thiscall notinline nofixup GameData::setUnusedBitfield uint index -0x0003a550 func void __thiscall notinline nofixup GameData::setMiscObjective uint index -0x0003a580 func BOOL __thiscall notinline nofixup GameData::getMiscObjective uint index -0x0003a5c0 func uint __thiscall notinline nofixup GameData::countMiscObjectives -0x0003a690 func BOOL __thiscall notinline nofixup GameData::getHighScore uint stageId TestRunType type uint rank TestRunScore * out -0x0003a750 func void __thiscall notinline nofixup GameData::incrementTimer Timer timer -0x0003a780 func uint __thiscall notinline nofixup GameData::getTimer Timer timer -0x0003a7b0 func void __thiscall notinline nofixup GameData::setTimer Timer timer uint frames -0x0003a7f0 func void __thiscall notinline nofixup GameData::setSelectedTag uint gangOrPlayer TagSize size uint tagId BOOL multiplayer -0x0003a820 func uint __thiscall notinline nofixup GameData::getSelectedTag uint gangOrPlayer TagSize size BOOL multiplayer -0x0003a840 func void __thiscall notinline nofixup GameData::setCustomTagSelected uint gangOrPlayer TagSize size BOOL active BOOL multiplayer -0x0003a870 func BOOL __thiscall notinline nofixup GameData::getCustomTagSelected uint gangOrPlayer TagSize size BOOL multiplayer -0x0003a890 func void __thiscall notinline nofixup GameData::setEventSeen uint eventId -0x0003a8c0 func BOOL __thiscall notinline nofixup GameData::eventSeen uint eventId -0x0003a900 func void __thiscall notinline nofixup GameData::incrementPlaytime -0x0003a910 func uint __thiscall notinline nofixup GameData::getSaveDataSize -0x0003a920 func BOOL __thiscall notinline nofixup GameData::decrypt char * saveData -0x0003ab60 func void __thiscall notinline nofixup GameData::encrypt char * outSaveData -0x0003ae00 func void __thiscall notinline nofixup GameData::getSaveDescription SaveDescription * outDesc -0x0003ae20 func void __thiscall notinline nofixup GameData::clearStateFlags FlagListOrPtr flagList -0x0003aea0 func void __thiscall notinline nofixup GameData::resetTimer Timer timer -0x0003aed0 func void __thiscall notinline nofixup GameData::GameData -0x0003b3c0 func void __thiscall notinline nofixup GameData::resetSelectedTags -0x0003b420 func void __thiscall notinline nofixup GameData::resetExceptSettingsAndSouls -0x0003b5a0 func void __thiscall notinline nofixup GameData::resetExceptSettingsAndHighScores -0x0003b640 func void __thiscall notinline nofixup GameData::resetExceptSettings -0x0003b680 func void __thiscall notinline nofixup GameData::stash -0x0003b6a0 func void __thiscall notinline nofixup GameData::stashRestoreExceptSpecialFlags -0x0003b6f0 func void __thiscall notinline nofixup GameData::stashRestoreExceptHighScores -0x0003b790 func void __thiscall notinline nofixup GameData::stashRestore -0x0003b7c0 func void * __thiscall notinline nofixup GameData::`scalar_deleting_destructor' uint param_1 -0x0003b7e0 func void __thiscall notinline nofixup GameData::addHighScore uint stageId TestRunType type TestRunScore * score -0x0003c150 func TextRenderer_MAYBE * __thiscall notinline nofixup TextRenderer_MAYBE::TextRenderer_MAYBE GameObj * parent GameObjIndex index uint bitfieldValue +0x00039b50 func BOOL __thiscall notinline nofixup CSaveData::CheckFlagCondition DWORD dwCond +0x00039be0 func void __thiscall notinline nofixup CSaveData::WriteStateFlag DWORD dwFlagVal +0x00039c70 func void __thiscall notinline nofixup CSaveData::IncreaseChapter +0x00039c80 func void __thiscall notinline nofixup CSaveData::SetReturnMissionNo DWORD dwMission +0x00039c90 func void __thiscall notinline nofixup CSaveData::SetSpawnPosIndex DWORD dwIndex +0x00039ca0 func DWORD __thiscall notinline nofixup CSaveData::GetSpawnPosIndex +0x00039cb0 func void __thiscall notinline nofixup CSaveData::UnlockCharacter ePLAYERCHARID Character +0x00039cf0 func void __thiscall notinline nofixup CSaveData::LockCharacter ePLAYERCHARID Character +0x00039d10 func BOOL __thiscall notinline nofixup CSaveData::IsCharacterUnlocked ePLAYERCHARID Character +0x00039d40 func BOOL __thiscall notinline nofixup CSaveData::CheckFlagConditions DWORD * lpdwConds DWORD dwCount +0x00039d80 func void __thiscall notinline nofixup CSaveData::WriteStateFlags DWORD * lpdwWrites DWORD dwCount +0x00039db0 func BOOL __thiscall notinline nofixup CSaveData::CheckFlagConditionUnpacked eFLAGLIST FlagList DWORD dwIndex +0x00039de0 func void __thiscall notinline nofixup CSaveData::WriteStateFlagUnpacked eFLAGLIST FlagList DWORD dwIndex DWORD dwFlagVal +0x00039e10 func void __thiscall notinline nofixup CSaveData::SetSoulSpawned DWORD dwSoulId +0x00039e40 func BOOL __thiscall notinline nofixup CSaveData::GetSoulSpawned DWORD dwSoulId +0x00039e80 func void __thiscall notinline nofixup CSaveData::SetSoulCollected DWORD dwSoulId +0x00039eb0 func BOOL __thiscall notinline nofixup CSaveData::GetSoulHeld DWORD dwSoulId +0x00039ef0 func BOOL __thiscall notinline nofixup CSaveData::IsSoulSpawnedUncollected DWORD dwSoulId +0x00039f40 func void __thiscall notinline nofixup CSaveData::ClearHeldSouls +0x00039f60 func void __thiscall notinline nofixup CSaveData::RestoreHeldSouls +0x00039fd0 func DWORD __thiscall notinline nofixup CSaveData::GetSoulCount +0x0003a0a0 func DWORD __thiscall notinline nofixup CSaveData::GetTotalSoulsInStage DWORD dwStageId +0x0003a130 func DWORD __thiscall notinline nofixup CSaveData::GetHeldSoulsInStage DWORD dwStageId +0x0003a2b0 func BOOL __thiscall notinline nofixup CSaveData::GetSoulCollectedBySize eTAGSIZE Size DWORD dwIndex +0x0003a2f0 func void __thiscall notinline nofixup CSaveData::SetUnusedPerStageBitmask DWORD dwStageId DWORD dwIndex +0x0003a340 func int __thiscall notinline nofixup CSaveData::GetTagState DWORD dwStageId DWORD dwTagIndex BOOL bRivalTag +0x0003a3a0 func void __thiscall notinline nofixup CSaveData::SetTagState DWORD dwStageId DWORD dwTagIndex BOOL bRivalTag DWORD dwVal +0x0003a400 func void __thiscall notinline nofixup CSaveData::SetTagCovered DWORD dwStageId DWORD dwTagIndex BOOL bRivalTag DWORD dwGangOrPlayer +0x0003a4a0 func void __thiscall notinline nofixup CSaveData::SetVolumeSettings float fVolMusic float fVolSfx +0x0003a4c0 func void __thiscall notinline nofixup CSaveData::GetVolumeSettings float * lpfOutMusic float * lpfOutSfx +0x0003a4e0 func void __thiscall notinline nofixup CSaveData::SetRumbleEnabled BOOL bValue +0x0003a4f0 func BOOL __thiscall notinline nofixup CSaveData::GetRumbleEnabled +0x0003a500 func void __thiscall notinline nofixup CSaveData::SetGarageMusic DWORD dwSongId +0x0003a510 func DWORD __thiscall notinline nofixup CSaveData::GetGarageMusic +0x0003a520 func void __thiscall notinline nofixup CSaveData::SetUnusedBitfield DWORD dwIndex +0x0003a550 func void __thiscall notinline nofixup CSaveData::SetMiscObjective DWORD dwIndex +0x0003a580 func BOOL __thiscall notinline nofixup CSaveData::GetMiscObjective DWORD dwIndex +0x0003a5c0 func DWORD __thiscall notinline nofixup CSaveData::CountMiscObjectives +0x0003a690 func BOOL __thiscall notinline nofixup CSaveData::GetHighScore DWORD dwStageId eTESTRUN Type DWORD dwRank STestRunScore * lpOut +0x0003a750 func void __thiscall notinline nofixup CSaveData::IncreaseTimer eTIMER Timer +0x0003a780 func DWORD __thiscall notinline nofixup CSaveData::GetTimer eTIMER Timer +0x0003a7b0 func void __thiscall notinline nofixup CSaveData::SetTimer eTIMER Timer DWORD dwFrames +0x0003a7f0 func void __thiscall notinline nofixup CSaveData::SetSelectedTag DWORD dwGangOrPlayer eTAGSIZE Size DWORD dwTagId BOOL bMultiplayer +0x0003a820 func DWORD __thiscall notinline nofixup CSaveData::GetSelectedTag DWORD dwGangOrPlayer eTAGSIZE Size BOOL bMultiplayer +0x0003a840 func void __thiscall notinline nofixup CSaveData::SetCustomTagSelected DWORD dwGangOrPlayer eTAGSIZE Size BOOL bActive BOOL bMultiplayer +0x0003a870 func BOOL __thiscall notinline nofixup CSaveData::GetCustomTagSelected DWORD dwGangOrPlayer eTAGSIZE Size BOOL bMultiplayer +0x0003a890 func void __thiscall notinline nofixup CSaveData::SetEventSeen DWORD dwEventId +0x0003a8c0 func BOOL __thiscall notinline nofixup CSaveData::GetEventSeen DWORD dwEventId +0x0003a900 func void __thiscall notinline nofixup CSaveData::IncreasePlaytime +0x0003a910 func DWORD __thiscall notinline nofixup CSaveData::GetSaveDataSize +0x0003a920 func BOOL __thiscall notinline nofixup CSaveData::Decode void * lpvSaveData +0x0003ab60 func void __thiscall notinline nofixup CSaveData::Encode void * lpvOutSaveData +0x0003ae00 func void __thiscall notinline nofixup CSaveData::GetSaveDescription SSaveDescription * lpOutDesc +0x0003ae20 func void __thiscall notinline nofixup CSaveData::ClearStateFlags UFlagListOrPtr FlagList +0x0003aea0 func void __thiscall notinline nofixup CSaveData::ResetTimer eTIMER Timer +0x0003aed0 func void __thiscall notinline nofixup CSaveData::CSaveData +0x0003b3c0 func void __thiscall notinline nofixup CSaveData::ResetSelectedTags +0x0003b420 func void __thiscall notinline nofixup CSaveData::SaveDataResetTutorial +0x0003b5a0 func void __thiscall notinline nofixup CSaveData::SaveDataResetTestRun +0x0003b640 func void __thiscall notinline nofixup CSaveData::SaveDataResetVs +0x0003b680 func void __thiscall notinline nofixup CSaveData::SaveDataBackup +0x0003b6a0 func void __thiscall notinline nofixup CSaveData::SaveDataRestoreTutorial +0x0003b6f0 func void __thiscall notinline nofixup CSaveData::SaveDataRestoreTestRun +0x0003b790 func void __thiscall notinline nofixup CSaveData::SaveDataRestoreVs +0x0003b7c0 func void * __thiscall notinline nofixup CSaveData::`scalar_deleting_destructor' uint param_1 +0x0003b7e0 func void __thiscall notinline nofixup CSaveData::AddHighScore DWORD dwStageId eTESTRUN Type STestRunScore * lpScore +0x0003c150 func TextRenderer_MAYBE * __thiscall notinline nofixup TextRenderer_MAYBE::TextRenderer_MAYBE CActBase * parent eACTID index uint bitfieldValue 0x0003c2b0 func void __thiscall notinline nofixup TextRenderer_MAYBE::~TextRenderer_MAYBE 0x0003c310 func void __thiscall notinline nofixup TextRenderer_MAYBE::draw undefined4 param_1 0x0003ca00 func void * __thiscall notinline nofixup TextRenderer_MAYBE::_~TextRenderer_MAYBE byte param_1 @@ -318,7 +318,7 @@ 0x0003e420 func void __thiscall notinline nofixup MissionManagerChild_0xE7::~MissionManagerChild_0xE7 0x0003e430 func void __thiscall notinline nofixup MissionManagerChild_0xE7::setColour D3DCOLOR col 0x0003e440 func void __thiscall notinline nofixup MissionManagerChild_0xE7::setAmbientColour D3DCOLOR col -0x0003e5f0 func MissionManagerChild_0xE7 * __thiscall notinline nofixup MissionManagerChild_0xE7::MissionManagerChild_0xE7 GameObj * parent GameObjIndex index uint bitfieldValue +0x0003e5f0 func MissionManagerChild_0xE7 * __thiscall notinline nofixup MissionManagerChild_0xE7::MissionManagerChild_0xE7 CActBase * parent eACTID index uint bitfieldValue 0x0003e640 func MissionManagerChild_0xE7 * __thiscall notinline nofixup MissionManagerChild_0xE7::`scalar_deleting_destructor' byte param_1 0x0003e660 func void __thiscall notinline nofixup MissionManagerChild_0xE7::draw 0x0003e690 func void __thiscall notinline nofixup UnknownStatic09::UnknownStatic09 @@ -328,14 +328,14 @@ 0x0003e9c0 func void __thiscall notinline nofixup UnknownStatic09::calledDuringExec 0x0003ee70 func void __thiscall notinline nofixup UnknownStatic09::`scalar_deleting_destructor' byte param_1 0x00042820 func void __thiscall notinline nofixup GraffitiSoulSpawnView_MAYBE::~GraffitiSoulSpawnView_MAYBE -0x00042b00 func GraffitiSoulSpawnView_MAYBE * __thiscall notinline nofixup GraffitiSoulSpawnView_MAYBE::GraffitiSoulSpawnView_MAYBE GameObj * parent GameObjIndex index GameObjFlags flags GraffitiSoul * soul +0x00042b00 func GraffitiSoulSpawnView_MAYBE * __thiscall notinline nofixup GraffitiSoulSpawnView_MAYBE::GraffitiSoulSpawnView_MAYBE CActBase * parent eACTID index eACTFLAG flags GraffitiSoul * soul 0x00042c20 func void * __thiscall notinline nofixup GraffitiSoulSpawnView_MAYBE::`scalar_deleting_destructor' byte param_1 0x000432e0 func void __thiscall notinline nofixup PickupList::~PickupList 0x00043700 func LanguageId __thiscall notinline nofixup Language::get -0x00043c00 func PickupList * __thiscall notinline nofixup PickupList::PickupList GameObj * parent GameObjIndex index uint bitfieldValue OffCnt * pickupList +0x00043c00 func PickupList * __thiscall notinline nofixup PickupList::PickupList CActBase * parent eACTID index uint bitfieldValue OffCnt * pickupList 0x00043ea0 func void * __thiscall notinline nofixup PickupList::`scalar_deleting_destructor' byte param_1 -0x00044740 func GameObjIndex default notinline nofixup spawnPickupList GameObj * parent OffCnt * pickupList -0x000461b0 func GameObj * __thiscall notinline nofixup EventChild1Child::EventChild1Child GameObj * parent GameObjIndex index uint bitfieldValue +0x00044740 func eACTID default notinline nofixup spawnPickupList CActBase * parent OffCnt * pickupList +0x000461b0 func CActBase * __thiscall notinline nofixup EventChild1Child::EventChild1Child CActBase * parent eACTID index uint bitfieldValue 0x00046310 func void __thiscall notinline nofixup EventChild1Child::~EventChild1Child 0x00046650 func EventChild1Child * __thiscall notinline nofixup EventChild1Child::`scalar_deleting_destructor' byte param_1 0x00046920 func undefined __stdcall notinline nofixup getUnknownStatic13PartDefault UnknownStatic13Part * out @@ -347,7 +347,7 @@ 0x0004a6f0 func BOOL __stdcall notinline nofixup someVecsDirectionCheck D3DVECTOR * ref D3DVECTOR * vs 0x0004a7a0 func int __cdecl notinline nofixup xyToAngle float x undefined4 y 0x0004a8f0 func void * __cdecl notinline nofixup operator_new size_t __size -0x0004a910 func Mission * __thiscall notinline nofixup Mission::Mission GameObj * parent GameObjIndex index GameObjFlags flags uint chapter uint idDigits34 BOOL param_6 +0x0004a910 func Mission * __thiscall notinline nofixup Mission::Mission CActBase * parent eACTID index eACTFLAG flags uint chapter uint idDigits34 BOOL param_6 0x0004aba0 func void __thiscall notinline nofixup Mission::initBin 0x0004abd0 func void __thiscall notinline nofixup Mission::initDat 0x0004ac00 func void __thiscall notinline nofixup Mission::initMark @@ -359,7 +359,7 @@ 0x0004c070 func void __thiscall notinline nofixup Mission::waitForSomething 0x0004c400 func void __thiscall notinline nofixup Mission::showTextForFrame 0x0004ca20 func void __thiscall notinline nofixup Mission::setPauseOptions Call_SetPauseOptions * args -0x0004d5f0 func undefined __stdcall notinline nofixup populateSomeCharIdArray PlayerCharId * buf +0x0004d5f0 func undefined __stdcall notinline nofixup populateSomeCharIdArray ePLAYERCHARID * buf 0x0004d880 func void __thiscall notinline nofixup Mission::setManyPlayerStateFieldsToOne 0x0004db30 func void default notinline nofixup resolveMissionBinPtrs MissionBin * mssn 0x0004e930 func void __stdcall notinline nofixup newMission uint chapter uint idDigits34 BOOL param_3 @@ -367,7 +367,7 @@ 0x0004eaf0 func void __cdecl notinline nofixup resetSomeGlobals 0x0004eb80 func BOOL default notinline nofixup getProfKModeSetting uint indexMajor undefined4 indexMinor 0x0004ec30 func BOOL default notinline nofixup getSomeController_MAYBE undefined4 out -0x0004ecd0 func MissionManager * __thiscall notinline nofixup MissionManager::MissionManager GameObj * parent GameObjIndex index GameObjFlags flags +0x0004ecd0 func MissionManager * __thiscall notinline nofixup MissionManager::MissionManager CActBase * parent eACTID index eACTFLAG flags 0x0004ef00 func void __thiscall notinline nofixup MissionManager::~MissionManager 0x0004ef90 func void __thiscall notinline nofixup MissionManager::execDefault 0x0004f9a0 func void __thiscall notinline nofixup MissionManager::drawDefault @@ -393,7 +393,7 @@ 0x00056990 func void __thiscall notinline nofixup Mission::runListenerCalls Call * listeners uint count 0x00057de0 func Opcode __thiscall notinline nofixup Mission::startBlockingCall 0x00057f90 func void __thiscall notinline nofixup Mission::setNextSwitchFuncFromOpcode Opcode opcode -0x00058240 func CharacterSelect * __thiscall notinline nofixup CharacterSelect::CharacterSelect GameObj * parent GameObjIndex index uint bitfieldValue OffCnt * charPreviewList Coordinates * coords PlayerPath * param_6 PlayerPath * param_7 PlayerPath * param_8 +0x00058240 func CharacterSelect * __thiscall notinline nofixup CharacterSelect::CharacterSelect CActBase * parent eACTID index uint bitfieldValue OffCnt * charPreviewList Coordinates * coords PlayerPath * param_6 PlayerPath * param_7 PlayerPath * param_8 0x000585e0 func void __thiscall notinline nofixup Mission::runNonblockingCall Call * calls uint index 0x0005b3f0 func Opcode __thiscall notinline nofixup Mission::runImmediateCalls 0x0005b570 func void __thiscall notinline nofixup Mission::runNonblockingCalls Call * calls undefined4 count @@ -403,22 +403,22 @@ 0x0005bb90 func void __thiscall notinline nofixup Mission::runCallsNoBlocking 0x0005d9c0 func undefined4 * __cdecl notinline nofixup FUN_0005d9c0_LTCG void * param_1 undefined4 param_2 0x0005e030 func BOOL __stdcall notinline nofixup addModOrClamp short * limit float * out float increment BOOL clamp -0x0005f180 func void __thiscall notinline nofixup COMManager_MAYBE::COMManager_MAYBE -0x0005f1d0 func void __thiscall notinline nofixup COMManager_MAYBE::~COMManager_MAYBE -0x0005f250 func int __thiscall notinline nofixup COMManager_MAYBE::createControllerCOM_MAYBE -0x0005f2c0 func HRESULT __stdcall notinline nofixup createGraphics HasScreenWidthAndHeight * param_1 GraphicsCOM * * out -0x0005f330 func COMManager_MAYBE * __thiscall notinline nofixup COMManager_MAYBE::`scalar_deleting_destructor' byte param_1 -0x0005f350 func int __thiscall notinline nofixup COMManager_MAYBE::initCOMObjects_MAYBE uint * param_1 uint param_2 -0x000605b0 func GameObj * __thiscall notinline nofixup MissionManagerChild_0xE8::MissionManagerChild_0xE8 GameObj * parent GameObjIndex index GameObjFlags flags +0x0005f180 func CMusashi * __thiscall notinline nofixup CMusashi::CMusashi +0x0005f1d0 func void __thiscall notinline nofixup CMusashi::~CMusashi +0x0005f250 func int __thiscall notinline nofixup CMusashi::createControllerCOM_MAYBE +0x0005f2c0 func HRESULT __stdcall notinline nofixup MGameGL_Initialize tag_MGLCLASS * settings CMGameGL * * out +0x0005f330 func CMusashi * __thiscall notinline nofixup CMusashi::`scalar_deleting_destructor' byte param_1 +0x0005f350 func int __thiscall notinline nofixup CMusashi::Init uint * param_1 uint param_2 +0x000605b0 func CActBase * __thiscall notinline nofixup MissionManagerChild_0xE8::MissionManagerChild_0xE8 CActBase * parent eACTID index eACTFLAG flags 0x00060650 func void __thiscall notinline nofixup MissionManagerChild_0xE8::~MissionManagerChild_0xE8 0x00060ac0 func void __thiscall notinline nofixup MissionManagerChild_0xE8::execDefault 0x00062010 func MissionManagerChild_0xE8 * __thiscall notinline nofixup MissionManagerChild_0xE8::`scalar_deleting_destructor' byte param_1 -0x00065800 func void __thiscall notinline nofixup UnknownStatic16::calledDuringExecDefault +0x00065800 func void __thiscall notinline nofixup UnknownStatic16::calledDuringExec0Default 0x00065910 func void __thiscall notinline nofixup UnknownStatic16::`scalar_deleting_destructor' byte param_1 0x00065940 func void __cdecl notinline nofixup initInputs_MAYBE 0x000659c0 func void __stdcall notinline nofixup readInput 0x00065c80 func void __cdecl notinline nofixup setStartButtonStatesToZero -0x00066110 func void __thiscall notinline nofixup UnknownStatic17::calledDuringExecDefault +0x00066110 func void __thiscall notinline nofixup UnknownStatic17::calledDuringExec0Default 0x000663c0 func void __thiscall notinline nofixup UnknownStatic17::`scalar_deleting_destructor' byte param_1 0x000663e0 func void __thiscall notinline nofixup LoadingScreen::~LoadingScreen 0x00066440 func void __thiscall notinline nofixup LoadingScreen::execDefault @@ -427,34 +427,34 @@ 0x00066660 func void __thiscall notinline nofixup LoadingScreen::drawUncoveredPause undefined4 param_1 0x000666f0 func void __thiscall notinline nofixup LoadingScreen::show BOOL param_1 BOOL pauseMusic 0x000667d0 func void __thiscall notinline nofixup LoadingScreen::hide -0x00066870 func LoadingScreen * __thiscall notinline nofixup LoadingScreen::LoadingScreen GameObj * parent GameObjIndex index GameObjFlags flags +0x00066870 func LoadingScreen * __thiscall notinline nofixup LoadingScreen::LoadingScreen CActBase * parent eACTID index eACTFLAG flags 0x00066900 func void * __thiscall notinline nofixup LoadingScreen::l`scalar_deleting_destructor' byte param_1 0x00066950 func float __thiscall notinline nofixup FRNG::get 0x00066980 func void __thiscall notinline nofixup FRNG::seed uint seed -0x00066ad0 func void __thiscall notinline nofixup UnknownStatic18::calledDuringExecDefault +0x00066ad0 func void __thiscall notinline nofixup UnknownStatic18::calledDuringExec0Default 0x00066b80 func void __thiscall notinline nofixup UnknownStatic18::`scalar_deleting_destructor' byte param_1 0x00066d80 func void __thiscall notinline nofixup UnknownStatic19::calledDuringExec 0x00067010 func void __thiscall notinline nofixup UnknownStatic19::`scalar_deleting_destructor' byte param_1 0x00067310 func void __thiscall notinline nofixup TextBox_MAYBE::drawDefault 0x000678b0 func BOOL __thiscall notinline nofixup TextBox_MAYBE::save 0x00067980 func void __thiscall notinline nofixup TextBox_MAYBE::~TextBox_MAYBE -0x00067b60 func TextBox_MAYBE * __thiscall notinline nofixup TextBox_MAYBE::TextBox_MAYBE GameObj * parent GameObjIndex index GameObjFlags flags undefined4 param_4 undefined4 * param_5 +0x00067b60 func TextBox_MAYBE * __thiscall notinline nofixup TextBox_MAYBE::TextBox_MAYBE CActBase * parent eACTID index eACTFLAG flags undefined4 param_4 undefined4 * param_5 0x00067e70 func void * __thiscall notinline nofixup TextBox_MAYBE::l`scalar_deleting_destructor' uint param_1 0x00067e90 func void __thiscall notinline nofixup TextBox_MAYBE::execDefault -0x000694a0 func float __thiscall notinline nofixup GraphicsSettings::getGraphicsSetting GraphicsSettingType setting -0x000694c0 func GraphicsSettings * __thiscall notinline nofixup GraphicsSettings::GraphicsSettings +0x000694a0 func float __thiscall notinline nofixup GraphicsSettings::getGraphicsSetting eGRAPHICSSETTINGTYPE setting +0x000694c0 func SGraphicsSettings * __thiscall notinline nofixup GraphicsSettings::GraphicsSettings 0x0006af00 func StageBin * __thiscall notinline nofixup StageBin::StageBin void * stgBinBuf 0x0006b270 func void __thiscall notinline nofixup StageBin::~StageBin 0x0006bb80 func void __thiscall notinline nofixup UnknownStatic22::`scalar_deleting_destructor' byte param_1 0x0006c340 func StageBin * __thiscall notinline nofixup StageBin::`scalar_deleting_destructor' byte param_1 0x0006c6d0 func void __thiscall notinline nofixup UnknownGlobal::clearSomeLinkedList_MAYBE 0x0006c6e0 func void __thiscall notinline nofixup UnknownGlobal::calledDuringExec -0x0006c840 func TalkCharLive * __thiscall notinline nofixup TalkCharLive::TalkCharLive GameObj * parent GameObjIndex index uint bitfieldValue TalkCharacter * talkChar uint talkCharIndex uint talkEvent +0x0006c840 func TalkCharLive * __thiscall notinline nofixup TalkCharLive::TalkCharLive CActBase * parent eACTID index uint bitfieldValue TalkCharacter * talkChar uint talkCharIndex uint talkEvent 0x0006caf0 func void __thiscall notinline nofixup TalkCharLive::execDefault 0x0006cd00 func int default notinline nofixup newTalkCharLive Mission * mssn TalkCharacter * talkChar uint talkCharIndex uint talkEvent 0x0006ce00 func void __thiscall notinline nofixup TalkCharLive::~TalkCharLive 0x0006cec0 func void * __thiscall notinline nofixup TalkCharLive::`scalar_deleting_destructor' byte param_1 -0x0006d9a0 func UnknownObj_0x1DDE * __thiscall notinline nofixup UnknownObj_0x1DDE::UnknownAllocated_0x1DDE GameObj * parent GameObjIndex index uint bitfieldValue GameObjIndex param_4 GameObj * * * param_5 Mat4 * param_6 float param_7 +0x0006d9a0 func UnknownObj_0x1DDE * __thiscall notinline nofixup UnknownObj_0x1DDE::UnknownAllocated_0x1DDE CActBase * parent eACTID index uint bitfieldValue eACTID param_4 CActBase * * * param_5 Mat4 * param_6 float param_7 0x0006da80 func void __thiscall notinline nofixup UnknownStatic24::UnknownStatic24 0x0006dbb0 func void __thiscall notinline nofixup UnknownStatic24::clearFieldsInSomeLinkedList 0x0006dbe0 func void __thiscall notinline nofixup UnknownStatic24::calledDuringExec @@ -469,7 +469,7 @@ 0x0006ec80 func void __thiscall notinline nofixup UnknownObj_0x12B0::drawDefault 0x0006f100 func void __thiscall notinline nofixup UnknownObj_0x12B0::setMessage char * msg undefined4 param_2 undefined4 param_3 int controllerThatCanDismiss_MAYBE 0x0006f190 func BOOL default notinline nofixup allocated0x12b0 -0x0006f200 func UnknownObj_0x12B0 * __thiscall notinline nofixup UnknownObj_0x12B0::UnknownAllocated_0x12B0 GameObj * parent GameObjIndex index GameObjFlags flags char * message int param_5 uint otherFlags undefined4 controllerThatCanDismiss +0x0006f200 func UnknownObj_0x12B0 * __thiscall notinline nofixup UnknownObj_0x12B0::UnknownAllocated_0x12B0 CActBase * parent eACTID index eACTFLAG flags char * message int param_5 uint otherFlags undefined4 controllerThatCanDismiss 0x0006f380 func UnknownObj_0x12B0 * __thiscall notinline nofixup UnknownObj_0x12B0::ll`scalar_deleting_destructor' byte param_1 0x0006f3a0 func void __thiscall notinline nofixup UnknownObj_0x12B0::execDefault 0x0006f450 func void __cdecl notinline nofixup showMessage char * msg int param_2 undefined4 param_3 int controllerThatCanDismiss @@ -479,24 +479,24 @@ 0x0006f600 func undefined __cdecl notinline nofixup showReconnectNAndStartMessage1 uint controllerId 0x0006f650 func undefined __cdecl notinline nofixup showReconnectNAndStartMessage2 uint controllerId 0x0006f6a0 func void __cdecl notinline nofixup showReconnectControllerMessage -0x0006f6d0 func void default notinline nofixup showCharacterJoinMessage PlayerCharId character undefined4 controller +0x0006f6d0 func void default notinline nofixup showCharacterJoinMessage ePLAYERCHARID character undefined4 controller 0x0006f730 func undefined unknown notinline nofixup showProblemWithDisc 0x0006f760 func undefined unknown notinline nofixup showSaveLoadErr -0x0006f8c0 func void __thiscall notinline nofixup UnknownStatic27::calledDuringExecDefault +0x0006f8c0 func void __thiscall notinline nofixup UnknownStatic27::calledDuringExec0Default 0x0006f9c0 func undefined4 * __thiscall notinline nofixup UnknownStatic27::`scalar_deleting_destructor' byte param_1 0x0006f9e0 func void __cdecl notinline nofixup main 0x00077400 func void __cdecl notinline nofixup resetHighScores 0x000780f0 func void __thiscall notinline nofixup UnknownObj_0x1167_2::~UnknownAllocated_0x1167_2 -0x00078520 func UnknownAllocated_0x1167_2 * __thiscall notinline nofixup UnknownObj_0x1167_2::UnknownAllocated_0x1167_2 GameObj * parent GameObjIndex index uint bitfieldValue undefined4 param_4 uint mssnId +0x00078520 func UnknownAllocated_0x1167_2 * __thiscall notinline nofixup UnknownObj_0x1167_2::UnknownAllocated_0x1167_2 CActBase * parent eACTID index uint bitfieldValue undefined4 param_4 uint mssnId 0x000789d0 func void * __thiscall notinline nofixup UnknownObj_0x1167_2::`scalar_deleting_destructor' byte param_1 0x00079b50 func void __thiscall notinline nofixup UnknownObj_0x1167_1::~UnknownAllocated_0x1167_1 -0x0007a8b0 func UnknownAllocated_0x1167_1 * __thiscall notinline nofixup UnknownObj_0x1167_1::UnknownAllocated_0x1167_1 GameObj * parent GameObjIndex index uint bitfieldValue undefined4 param_4 +0x0007a8b0 func UnknownAllocated_0x1167_1 * __thiscall notinline nofixup UnknownObj_0x1167_1::UnknownAllocated_0x1167_1 CActBase * parent eACTID index uint bitfieldValue undefined4 param_4 0x0007ab20 func void * __thiscall notinline nofixup UnknownObj_0x1167_1::`scalar_deleting_destructor' byte param_1 -0x0007ae10 func DemoInitializer * __thiscall notinline nofixup DemoInitializer::DemoInitializer GameObj * parent GameObjIndex index uint bitfieldValue +0x0007ae10 func DemoInitializer * __thiscall notinline nofixup DemoInitializer::DemoInitializer CActBase * parent eACTID index uint bitfieldValue 0x0007af70 func void __thiscall notinline nofixup DemoInitializer::~DemoInitializer 0x0007b830 func DemoInitializer * __thiscall notinline nofixup DemoInitializer::`scalar_deleting_destructor' byte param_1 0x0007b8d0 func void __thiscall notinline nofixup DemoInitializer::execDefault -0x0007bc10 func Director * __thiscall notinline nofixup Director::Director GameObj * parent GameObjIndex index uint bitfieldValue +0x0007bc10 func Director * __thiscall notinline nofixup Director::Director CActBase * parent eACTID index uint bitfieldValue 0x0007bc90 func void __thiscall notinline nofixup Director::~Director 0x0007bdd0 func void __thiscall notinline nofixup Director::execDefault 0x0007be30 func void __thiscall notinline nofixup Director::init @@ -511,13 +511,41 @@ 0x0007c250 func void __thiscall notinline nofixup Director::waitDestructMissionManager 0x0007c270 func void __thiscall notinline nofixup Director::switchOnMisc 0x0007c290 func void __thiscall notinline nofixup Director::newGame_MAYBE +0x0007c9e0 func void __thiscall notinline nofixup Director::PrepareUnknownMission +0x0007ca60 func void __thiscall notinline nofixup Director::NopUnknownMission +0x0007ca70 func void __thiscall notinline nofixup Director::WaitEndUnknownMission +0x0007ca90 func void __thiscall notinline nofixup Director::ReturnFromUnknownMission +0x0007cae0 func void __thiscall notinline nofixup Director::PrepareTutorial +0x0007cbb0 func void __thiscall notinline nofixup Director::NopTutorial +0x0007cbc0 func void __thiscall notinline nofixup Director::WaitEndTutorial +0x0007cbe0 func void __thiscall notinline nofixup Director::ReturnFromTutorial +0x0007cc40 func void __thiscall notinline nofixup Director::PrepareTestRun +0x0007cd10 func void __thiscall notinline nofixup Director::NopTestRun +0x0007cd20 func void __thiscall notinline nofixup Director::WaitEndTestRun +0x0007cd40 func void __thiscall notinline nofixup Director::ReturnFromTestRun +0x0007cda0 func void __thiscall notinline nofixup Director::PrepareVs +0x0007ce70 func void __thiscall notinline nofixup Director::NopVs +0x0007ce80 func void __thiscall notinline nofixup Director::WaitEndVs +0x0007cea0 func void __thiscall notinline nofixup Director::ReturnFromVs +0x0007cf00 func void __thiscall notinline nofixup Director::PrepareGraffitiMenu +0x0007cfb0 func void __thiscall notinline nofixup Director::WaitLoadGraffitiMenu +0x0007cfe0 func void __thiscall notinline nofixup Director::WaitEndGraffitiMenu +0x0007d000 func void __thiscall notinline nofixup Director::ReturnFromGraffitiMenu +0x0007d2d0 func void __thiscall notinline nofixup Director::PrepareEnding +0x0007d320 func void __thiscall notinline nofixup Director::WaitLoadEnding +0x0007d3d0 func void __thiscall notinline nofixup Director::WaitEndEnding +0x0007d3f0 func void __thiscall notinline nofixup Director::ReturnFromEnding +0x0007d450 func void __thiscall notinline nofixup Director::NopStinger +0x0007d460 func void __thiscall notinline nofixup Director::PrepareStinger +0x0007d520 func void __thiscall notinline nofixup Director::WaitEndStinger +0x0007d540 func void __thiscall notinline nofixup Director::ReturnFromStinger 0x0007d5b0 func Director * __thiscall notinline nofixup Director::`scalar_deleting_constructor' byte param_1 0x0007e100 func BOOL default notinline nofixup 0x1DF3NotAllocated -0x0007e260 func void __stdcall notinline nofixup allocate0x1DF3 GameObj * parent +0x0007e260 func void __stdcall notinline nofixup allocate0x1DF3 CActBase * parent 0x0007e2f0 func void __thiscall notinline nofixup Opening::~Opening 0x0007e360 func void __thiscall notinline nofixup Opening::execDefault 0x0007e550 func void __thiscall notinline nofixup Opening::drawDefault undefined4 param_1 -0x0007e6a0 func Opening * __thiscall notinline nofixup Opening::Opening GameObj * parent GameObjIndex index GameObjFlags flags +0x0007e6a0 func Opening * __thiscall notinline nofixup Opening::Opening CActBase * parent eACTID index eACTFLAG flags 0x0007e7b0 func void * __thiscall notinline nofixup Opening::`scalar_deleting_destructor' uint param_1 0x0007e7d0 func void default notinline nofixup startOpening Director * director 0x0007e830 func void __thiscall notinline nofixup SomePlayerStateChild::~SomePlayerStateChild @@ -526,7 +554,7 @@ 0x0007fda0 func void __thiscall notinline nofixup SomePlayerStateChild::zeroCounters_MAYBE 0x0007fe70 func void __thiscall notinline nofixup SomePlayerStateChild::setQuantities int cans int staminaPercent int param_3 0x00080320 func void * __thiscall notinline nofixup SomePlayerStateChild::`scalar_deleting_destructor' byte param_1 -0x00084200 func SomePlayerStateChild * __thiscall notinline nofixup SomePlayerStateChild::SomePlayerStateChild undefined4 parent undefined4 index GameObjFlags flags MissionManagerChild_0xBArrMember * param_4 +0x00084200 func SomePlayerStateChild * __thiscall notinline nofixup SomePlayerStateChild::SomePlayerStateChild undefined4 parent undefined4 index eACTFLAG flags MissionManagerChild_0xBArrMember * param_4 0x00085410 func void __thiscall notinline nofixup UnknownObj_0x50::~UnknownObj_0x50 0x00086180 func UnknownObj_0x50 * __thiscall notinline nofixup UnknownObj_0x50::`scalar_deleting_destructor' byte param_1 0x00092ff0 func void __thiscall notinline nofixup SomePlayerStateChild::dealDamage_MAYBE uint damage undefined4 param_2 undefined4 param_3 BOOL param_4 @@ -541,24 +569,24 @@ 0x000a5070 func void __thiscall notinline nofixup PlayerCamera::execDefault 0x000a6110 func void __thiscall notinline nofixup SomePlayerState::~SomePlayerState 0x000a63f0 func void __thiscall notinline nofixup SomePlayerState::setSomeFieldToOne -0x000a6980 func GameObj * __thiscall notinline nofixup SomePlayerState::SomePlayerState GameObj * parent GameObjIndex index uint bitfieldValue MissionManagerChild_0xBArrMember * param_4 +0x000a6980 func CActBase * __thiscall notinline nofixup SomePlayerState::SomePlayerState CActBase * parent eACTID index uint bitfieldValue MissionManagerChild_0xBArrMember * param_4 0x000a6af0 func void * __thiscall notinline nofixup SomePlayerState::`scalar_deleting_destructor' byte param_1 0x000a76e0 func void __thiscall notinline nofixup SomePlayerState::execDefault -0x000a82d0 func MissionManagerChild_0xB * __thiscall notinline nofixup MissionManagerChild_0xB::MissionManagerChild_0xB GameObj * parent GameObjIndex index uint bitfieldValue -0x000a8360 func void __thiscall notinline nofixup MissionManagerChild_0xB::~MissionManagerChild_0xB GameObj * param_1 +0x000a82d0 func MissionManagerChild_0xB * __thiscall notinline nofixup MissionManagerChild_0xB::MissionManagerChild_0xB CActBase * parent eACTID index uint bitfieldValue +0x000a8360 func void __thiscall notinline nofixup MissionManagerChild_0xB::~MissionManagerChild_0xB CActBase * param_1 0x000a8370 func void __thiscall notinline nofixup MissionManagerChild_0xB::execDefault 0x000a8720 func MissionManagerChild_0xB * __thiscall notinline nofixup MissionManagerChild_0xB::`scalar_deleting_destructor' byte param_1 -0x000aecc0 func void __thiscall notinline nofixup GameObj::callExecDefault -0x000b3de0 func void __thiscall notinline nofixup GameObj::callDrawDefault uint param_1 -0x000c0a90 func GameObj * __thiscall notinline nofixup MissionManagerChild_0x12B1::MissionManagerChild_0x12B1 GameObj * param_1 GameObjIndex param_2 uint param_3 +0x000aecc0 func void __thiscall notinline nofixup CActBase::callExecDefault +0x000b3de0 func void __thiscall notinline nofixup CActBase::callDrawDefault uint param_1 +0x000c0a90 func CActBase * __thiscall notinline nofixup MissionManagerChild_0x12B1::MissionManagerChild_0x12B1 CActBase * param_1 eACTID param_2 uint param_3 0x000fe690 func undefined unknown notinline nofixup printableStrLen undefined4 param_1 -0x000fe740 func DrawTree * __thiscall notinline nofixup MissionManagerChild_0x1165::MissionManagerChild_0x1165 GameObj * param_1 GameObjIndex param_2 GameObjFlags flags +0x000fe740 func CDrawBase * __thiscall notinline nofixup MissionManagerChild_0x1165::MissionManagerChild_0x1165 CActBase * param_1 eACTID param_2 eACTFLAG flags 0x000fea80 func void default notinline nofixup setShowText undefined4 param_1 undefined4 param_2 uint charDelay char * str undefined4 param_5 -0x000ff230 func DrawTree * __thiscall notinline nofixup MissionManagerChild_0x1163::MissionManagerChild_0x1163 GameObj * param_1 GameObjIndex param_2 GameObjFlags flags +0x000ff230 func CDrawBase * __thiscall notinline nofixup MissionManagerChild_0x1163::MissionManagerChild_0x1163 CActBase * param_1 eACTID param_2 eACTFLAG flags 0x00100000 func void __fastcall notinline nofixup functionAtUnfortunateAddress int param_1 char param_2 int param_3 int param_4 int param_5 int param_6 0x00107260 func undefined unknown notinline nofixup showOverlay1 undefined4 param_1 0x00107320 func undefined unknown notinline nofixup showOverlay2 undefined4 param_1 -0x00115fc0 func AdxManager * __thiscall notinline nofixup AdxManager::AdxManager GameObj * parent GameObjIndex index GameObjFlags flags +0x00115fc0 func AdxManager * __thiscall notinline nofixup AdxManager::AdxManager CActBase * parent eACTID index eACTFLAG flags 0x001160d0 func int __stdcall notinline nofixup getAdxIndex AdxType type int id 0x00116240 func void __thiscall notinline nofixup AdxManager::setPause AdxType type BOOL val 0x00116290 func void __thiscall notinline nofixup AdxManager::setWaitPlayStart AdxType type BOOL val @@ -574,23 +602,25 @@ 0x00117140 func undefined unknown notinline nofixup playVoiceLine undefined4 voiceLineId 0x00117330 func AdxManager * __thiscall notinline nofixup AdxManager::`scalar_deleting_destructor' byte param_1 0x00117350 func void default notinline nofixup setMusic int id undefined4 param_2 -0x001174d0 func GameObj * __thiscall notinline nofixup MissionManagerChild_0xEA::MissionManagerChild_0xEA GameObj * param_1 GameObjIndex param_2 uint param_3 -0x001179f0 func GameObj * __thiscall notinline nofixup MissionManagerChild_0xE9::MissionManagerChild_0xE9 GameObj * param_1 GameObjIndex param_2 uint param_3 +0x001174d0 func CActBase * __thiscall notinline nofixup MissionManagerChild_0xEA::MissionManagerChild_0xEA CActBase * param_1 eACTID param_2 uint param_3 +0x001179f0 func CActBase * __thiscall notinline nofixup MissionManagerChild_0xE9::MissionManagerChild_0xE9 CActBase * param_1 eACTID param_2 uint param_3 0x00117ba0 func WavInfo * __thiscall notinline nofixup WavInfo::WavInfo uint id void * fileBuf uint param_3 0x00118610 func void __thiscall notinline nofixup SoundManager::execNormal 0x00118630 func void __thiscall notinline nofixup SoundManager::execEvent 0x00118650 func char * default notinline nofixup makeSoundEffectFilepath int id 0x00118800 func void __cdecl notinline nofixup somethingOnAllWavInfos 0x00118870 func undefined unknown notinline nofixup setSomeUnknownAllocated_0x4Field undefined4 val -0x00118c00 func SoundManager * __thiscall notinline nofixup SoundManager::SoundManager GameObj * parent GameObjIndex index uint bitfieldValue +0x00118c00 func SoundManager * __thiscall notinline nofixup SoundManager::SoundManager CActBase * parent eACTID index uint bitfieldValue 0x00118cb0 func void __thiscall notinline nofixup SoundManager::~SoundManager 0x00119570 func SoundManager * __thiscall notinline nofixup SoundManager::`scalar_deleting_destructor' byte param_1 0x00119670 func void default notinline nofixup parseNormWavs uint id void * fileBuf -0x00126ac0 func void __thiscall notinline nofixup UnknownObj_0x1DE2::~UnknownAllocated_0x1DE2 -0x00127590 func UnknownObj_0x1DE2 * __thiscall notinline nofixup UnknownObj_0x1DE2::UnknownAllocated_0x1DE2 GameObj * param_1 GameObjIndex param_2 uint param_3 -0x001277f0 func undefined unknown notinline nofixup UnknownObj_0x1DE2::`scalar_deleting_destructor' undefined1 param_1 +0x00126ac0 func void __thiscall notinline nofixup CGraffitiMenu::~CGraffitiMenu +0x00127080 func void __thiscall notinline nofixup CGraffitiMenu::DrawListDefault int param_1 +0x00127590 func CGraffitiMenu * __thiscall notinline nofixup CGraffitiMenu::CGraffitiMenu CActBase * param_1 eACTID param_2 uint param_3 +0x001277f0 func undefined unknown notinline nofixup CGraffitiMenu::`scalar_deleting_destructor' undefined1 param_1 +0x00127810 func void __thiscall notinline nofixup CGraffitiMenu::Exec0Default 0x00127e60 func void __thiscall notinline nofixup UnknownObj_0x1DE4::~UnknownAllocated_0x1DE4 -0x00128fd0 func UnknownObj_0x1DE4 * __thiscall notinline nofixup UnknownObj_0x1DE4::UnknownAllocated_0x1DE4 GameObj * param_1 GameObjIndex param_2 uint param_3 +0x00128fd0 func UnknownObj_0x1DE4 * __thiscall notinline nofixup UnknownObj_0x1DE4::UnknownAllocated_0x1DE4 CActBase * param_1 eACTID param_2 uint param_3 0x00129160 func UnknownObj_0x1DE4 * __thiscall notinline nofixup UnknownObj_0x1DE4::`scalar_deleting_destructor' uint param_1 0x0013a6b0 func void default notinline nofixup CRI::ADXT_Stop ADXT adxt 0x0013a980 func undefined __stdcall notinline nofixup CRI::ADXT_SetOutVol ADXT adxt Sint32 vol @@ -661,8 +691,8 @@ 0x001455a3 func HANDLE __stdcall notinline nofixup XAPILIB::CreateFile LPCSTR lpFileName DWORD dwDesiredAccess DWORD dwShareMode void * lpSecurityAttributes DWORD dwCreationDisposition DWORD dwFlagsAndAttributes HANDLE hTemplateFile 0x0014572e func BOOL __stdcall notinline nofixup XAPILIB::CopyFileEx char * lpExistingFileName char * lpNewFileName LPPROGRESS_ROUTINE lpProgressRoutine LPVOID lpData LPBOOL pbCancel DWORD dwCopyFlags 0x00145a10 func BOOL __stdcall notinline nofixup XAPILIB::CopyFile char * lpExistingFileName char * lpNewFileName BOOL bFailIfExists -0x00145a2f func PVOID __stdcall notinline nofixup XAPILIB::VirtualAlloc LPVOID lpAddress SIZE_T dwSize DWORD flAllocationType DWORD flProtect -0x00145a5d func BOOL __stdcall notinline nofixup XAPILIB::VirtualFree LPVOID lpAddress SIZE_T dwSize DWORD dwFreeType +0x00145a2f func PVOID __stdcall notinline nofixup VirtualAlloc LPVOID lpAddress SIZE_T dwSize DWORD flAllocationType DWORD flProtect +0x00145a5d func BOOL __stdcall notinline nofixup VirtualFree LPVOID lpAddress SIZE_T dwSize DWORD dwFreeType 0x00145a99 func BOOL __stdcall notinline nofixup XAPILIB::VirtualProtect LPVOID lpAddress SIZE_T dwSize DWORD flNewProtect PDWORD lpflOldProtect 0x00145b64 func DWORD __stdcall notinline nofixup XAPILIB::WaitForSingleObjectEx HANDLE hHandle DWORD dwMilliseconds BOOL bAlertable 0x00145ba8 func DWORD __stdcall notinline nofixup XAPILIB::WaitForMultipleObjectsEx DWORD nCount HANDLE * lpHandles BOOL fWaitAll DWORD dwMilliseconds BOOL bAlertable @@ -727,9 +757,9 @@ 0x0014b4b5 func void __stdcall notinline nofixup extern_"C"::_cinit 0x0014b50d func void __stdcall notinline nofixup extern_"C"::_rtinit 0x0014b6c4 func HANDLE __stdcall notinline nofixup XAPILIB::XGetSectionHandle char * pSectionName -0x0014c2a0 func void __cdecl notinline nofixup iRngSeed uint seed -0x0014c2b0 func uint __stdcall notinline nofixup iRng -0x0014c2d0 func float default notinline nofixup iRngF +0x0014c2a0 func void __cdecl notinline nofixup SeedRandom uint seed +0x0014c2b0 func uint __stdcall notinline nofixup Random +0x0014c2d0 func float default notinline nofixup FRandom 0x0014c300 func void __fastcall notinline nofixup vSum D3DVECTOR * out D3DVECTOR * u D3DVECTOR * v 0x0014c340 func void __fastcall notinline nofixup vAdd D3DVECTOR * u D3DVECTOR * v 0x0014c370 func void __fastcall notinline nofixup vProd D3DVECTOR * out D3DVECTOR * v float a @@ -751,8 +781,8 @@ 0x0014c730 func void __fastcall notinline nofixup vAddProd D3DVECTOR * u D3DVECTOR * v float a 0x0014c770 func float __stdcall notinline nofixup acos float x 0x0014c7a0 func float __stdcall notinline nofixup asin float x -0x0014c7d0 func float __stdcall notinline nofixup patan float x float y -0x0014c7f0 func float __stdcall notinline nofixup abs float x +0x0014c7d0 func float __stdcall notinline nofixup ATan float x float y +0x0014c7f0 func float __stdcall notinline nofixup FAbs float x 0x0014c800 func float __fastcall notinline nofixup vDot D3DVECTOR * u D3DVECTOR * v 0x0014c820 func float default notinline nofixup sqrt float x 0x0014c840 func undefined __fastcall notinline nofixup max undefined4 x undefined4 y @@ -760,55 +790,59 @@ 0x0014c870 func float default notinline nofixup fmin float x float y 0x0014c890 func float default notinline nofixup sub_scale_add float x float y float z 0x0014c8b0 func undefined __fastcall notinline nofixup vSubScaleAdd D3DVECTOR * out D3DVECTOR * u D3DVECTOR * v undefined4 a -0x0014c910 func int default notinline nofixup initSinCosTable -0x0014caa0 func int default notinline nofixup initFloatMath -0x0014cad0 func undefined unknown notinline nofixup freeSinCosTable +0x0014c910 func int default notinline nofixup InitializeSinCos +0x0014caa0 func int default notinline nofixup MMath_Initialize +0x0014cad0 func void __cdecl notinline nofixup UninitializeSinCos +0x0014caf0 func uint * __stdcall notinline nofixup MMath_ExportLibrary +0x0014cb20 func uint __stdcall notinline nofixup MMath_ImportLibrary SMMathExport * lib 0x0014cc60 func undefined __fastcall notinline nofixup clamp undefined4 x undefined4 min undefined4 max -0x0014cca0 func float __stdcall notinline nofixup clamp float x float min float max +0x0014cca0 func float __stdcall notinline nofixup FSat float x float min float max 0x0014cd50 func undefined __fastcall notinline nofixup vInverse D3DVECTOR * out D3DVECTOR * v -0x0014cdb0 func GraphicsCOM * __thiscall notinline nofixup GraphicsCOM::GraphicsCOM -0x0014cf00 func ULONG __stdcall notinline nofixup GraphicsCOM::AddRef GraphicsCOM * this -0x0014cf20 func HRESULT __stdcall notinline nofixup GraphicsCOM::QueryInterface GraphicsCOM * this IID * riid void * * ppvObject -0x0014cf80 func ULONG __stdcall notinline nofixup GraphicsCOM::Release GraphicsCOM * this -0x0014d020 func undefined __stdcall notinline nofixup GraphicsCOM::setClearColour GraphicsCOM * this undefined4 colour -0x0014d030 func HRESULT __stdcall notinline nofixup GraphicsCOM::clear GraphicsCOM * this undefined4 flags +0x0014cdb0 func CMGameGL * __thiscall notinline nofixup CMGameGL::CMGameGL +0x0014cf00 func ULONG __stdcall notinline nofixup CMGameGL::AddRef CMGameGL * this +0x0014cf20 func HRESULT __stdcall notinline nofixup CMGameGL::QueryInterface CMGameGL * this IID * riid void * * ppvObject +0x0014cf80 func ULONG __stdcall notinline nofixup CMGameGL::Release CMGameGL * this +0x0014cfb0 func HRESULT __stdcall notinline nofixup MGameGLCreate CMGameGL * * out +0x0014d020 func undefined __stdcall notinline nofixup CMGameGL::setClearColour CMGameGL * this undefined4 colour +0x0014d030 func HRESULT __stdcall notinline nofixup CMGameGL::clear CMGameGL * this undefined4 flags 0x0014d080 func uint default notinline nofixup return0 -0x0014d090 func HRESULT default notinline nofixup GraphicsCOM::swapDefault undefined4 this -0x0014d0d0 func undefined __stdcall notinline nofixup GraphicsCOM::swapFinish GraphicsCOM * this -0x0014d0f0 func HRESULT __stdcall notinline nofixup GraphicsCOM::getTextureArrayIndex GraphicsCOM * this undefined4 out -0x0014d340 func HRESULT __stdcall notinline nofixup GraphicsCOM::setRenderTargetFromArray GraphicsCOM * this int index -0x0014d4a0 func ULONG __stdcall notinline nofixup AddRef FontCOM * this -0x0014d9d0 func HRESULT __stdcall notinline nofixup GraphicsCOM::setShaderConstantMode GraphicsCOM * this VERTEXSHADERCONSTANTMODE mode +0x0014d090 func HRESULT default notinline nofixup CMGameGL::swapDefault undefined4 this +0x0014d0d0 func undefined __stdcall notinline nofixup CMGameGL::swapFinish CMGameGL * this +0x0014d0f0 func HRESULT __stdcall notinline nofixup CMGameGL::getTextureArrayIndex CMGameGL * this undefined4 out +0x0014d340 func HRESULT __stdcall notinline nofixup CMGameGL::setRenderTargetFromArray CMGameGL * this int index +0x0014d4a0 func ULONG __stdcall notinline nofixup AddRef CMGameGLFont * this +0x0014d9d0 func HRESULT __stdcall notinline nofixup CMGameGL::setShaderConstantMode CMGameGL * this VERTEXSHADERCONSTANTMODE mode 0x0014f640 func undefined __stdcall notinline nofixup freeFromSomeTextureArray uint index -0x0014f6d0 func undefined __stdcall notinline nofixup GraphicsCOM::freeOneOrAllOfSomeTextureArray GraphicsCOM * this int index -0x0014fb20 func undefined __stdcall notinline nofixup GraphicsCOM::setLightDirection GraphicsCOM * this D3DVECTOR * direction -0x0014fbb0 func undefined __stdcall notinline nofixup GraphicsCOM::setLightColour GraphicsCOM * this D3DCOLOR colour -0x0014fdb0 func undefined __stdcall notinline nofixup GraphicsCOM::setAmbient GraphicsCOM * this D3DCOLOR colour -0x0014fde0 func HRESULT __stdcall notinline nofixup GraphicsCOM::setTextureByIndex GraphicsCOM * this uint stage undefined4 index -0x0014fe30 func HRESULT __stdcall notinline nofixup GraphicsCOM::setTexCoordIndex GraphicsCOM * this DWORD stage DWORD value -0x0014fef0 func HRESULT __stdcall notinline nofixup GraphicsCOM::setTextureOps GraphicsCOM * this uint stage DWORD setting -0x001502c0 func HRESULT __stdcall notinline nofixup GraphicsCOM::setMipMapLODBias GraphicsCOM * this uint stage float value -0x001504d0 func HRESULT __stdcall notinline nofixup GraphicsCOM::setRenderState GraphicsCOM * this D3DRENDERSTATETYPE state undefined4 val -0x001507c0 func HRESULT __stdcall notinline nofixup GraphicsCOM::getRenderState GraphicsCOM * this D3DRENDERSTATETYPE state undefined4 out -0x00150830 func HRESULT __stdcall notinline nofixup GraphicsCOM::setSpecularEnable GraphicsCOM * this BOOL value -0x00150850 func HRESULT __stdcall notinline nofixup GraphicsCOM::setLighting GraphicsCOM * this BOOL value -0x00150890 func HRESULT __stdcall notinline nofixup GraphicsCOM::setAlphaBlendEnabled GraphicsCOM * this BOOL value -0x00150950 func HRESULT __stdcall notinline nofixup GraphicsCOM::setFogEnable GraphicsCOM * this BOOL value -0x00150c70 func int __stdcall notinline nofixup GraphicsCOM::setMaterial GraphicsCOM * this uint index -0x00151120 func HRESULT __stdcall notinline nofixup GraphicsCOM::setStencilEnable GraphicsCOM * this BOOL value +0x0014f6d0 func undefined __stdcall notinline nofixup CMGameGL::freeOneOrAllOfSomeTextureArray CMGameGL * this int index +0x0014fb20 func undefined __stdcall notinline nofixup CMGameGL::setLightDirection CMGameGL * this D3DVECTOR * direction +0x0014fbb0 func undefined __stdcall notinline nofixup CMGameGL::setLightColour CMGameGL * this D3DCOLOR colour +0x0014fdb0 func undefined __stdcall notinline nofixup CMGameGL::setAmbient CMGameGL * this D3DCOLOR colour +0x0014fde0 func HRESULT __stdcall notinline nofixup CMGameGL::setTextureByIndex CMGameGL * this uint stage undefined4 index +0x0014fe30 func HRESULT __stdcall notinline nofixup CMGameGL::setTexCoordIndex CMGameGL * this DWORD stage DWORD value +0x0014fef0 func HRESULT __stdcall notinline nofixup CMGameGL::setTextureOps CMGameGL * this uint stage DWORD setting +0x001502c0 func HRESULT __stdcall notinline nofixup CMGameGL::setMipMapLODBias CMGameGL * this uint stage float value +0x001504d0 func HRESULT __stdcall notinline nofixup CMGameGL::setRenderState CMGameGL * this D3DRENDERSTATETYPE state undefined4 val +0x001507c0 func HRESULT __stdcall notinline nofixup CMGameGL::getRenderState CMGameGL * this D3DRENDERSTATETYPE state undefined4 out +0x00150830 func HRESULT __stdcall notinline nofixup CMGameGL::setSpecularEnable CMGameGL * this BOOL value +0x00150850 func HRESULT __stdcall notinline nofixup CMGameGL::setLighting CMGameGL * this BOOL value +0x00150890 func HRESULT __stdcall notinline nofixup CMGameGL::setAlphaBlendEnabled CMGameGL * this BOOL value +0x00150950 func HRESULT __stdcall notinline nofixup CMGameGL::setFogEnable CMGameGL * this BOOL value +0x00150c70 func int __stdcall notinline nofixup CMGameGL::setMaterial CMGameGL * this uint index +0x00151120 func HRESULT __stdcall notinline nofixup CMGameGL::setStencilEnable CMGameGL * this BOOL value 0x00151130 func HRESULT default notinline nofixup resetDiffuseVertexData -0x00151160 func HRESULT __stdcall notinline nofixup GraphicsCOM::setDiffuseVertexData GraphicsCOM * this undefined4 packed -0x00151180 func HRESULT __stdcall notinline nofixup GraphicsCOM::setReverseCull GraphicsCOM * this undefined4 value -0x001511b0 func HRESULT __stdcall notinline nofixup GraphicsCOM::setStencilSettings GraphicsCOM * this DWORD pass DWORD func DWORD ref -0x00151820 func undefined __stdcall notinline nofixup FontCOM::setSomeThings FontCOM * this undefined4 param_2 undefined4 colour -0x00151840 func void __stdcall notinline nofixup FontCOM::draw FontCOM * this uint x uint y char * str -0x001519d0 func undefined __stdcall notinline nofixup FontCOM::drawDecimal FontCOM * this undefined4 x undefined4 y int val -0x00151a00 func undefined __stdcall notinline nofixup FontCOM::drawPaddedHex FontCOM * this undefined4 x undefined4 y uint val -0x00151a30 func void __stdcall notinline nofixup FontCOM::drawUnknown FontCOM * this undefined4 x undefined4 y -0x00151a90 func void default notinline nofixup FontCOM::drawFormat FontCOM * this uint x uint y char * fmt ... -0x00151ac0 func HRESULT __stdcall notinline nofixup FontCOM::QueryInterface FontCOM * this IID * riid void * * ppvObject -0x00151c40 func ULONG __stdcall notinline nofixup FontCOM::Release FontCOM * this -0x00151ca0 func HRESULT __stdcall notinline nofixup GraphicsCOM::createFont GraphicsCOM * this undefined4 riid char * fontPath undefined4 param_4 FontCOM * * out +0x00151160 func HRESULT __stdcall notinline nofixup CMGameGL::setDiffuseVertexData CMGameGL * this undefined4 packed +0x00151180 func HRESULT __stdcall notinline nofixup CMGameGL::setReverseCull CMGameGL * this undefined4 value +0x001511b0 func HRESULT __stdcall notinline nofixup CMGameGL::setStencilSettings CMGameGL * this DWORD pass DWORD func DWORD ref +0x00151820 func undefined __stdcall notinline nofixup CMGameGLFont::setSomeThings CMGameGLFont * this undefined4 param_2 undefined4 colour +0x00151840 func void __stdcall notinline nofixup CMGameGLFont::draw CMGameGLFont * this uint x uint y char * str +0x001519d0 func undefined __stdcall notinline nofixup CMGameGLFont::drawDecimal CMGameGLFont * this undefined4 x undefined4 y int val +0x00151a00 func undefined __stdcall notinline nofixup CMGameGLFont::drawPaddedHex CMGameGLFont * this undefined4 x undefined4 y uint val +0x00151a30 func void __stdcall notinline nofixup CMGameGLFont::drawUnknown CMGameGLFont * this undefined4 x undefined4 y +0x00151a90 func void default notinline nofixup CMGameGLFont::drawFormat CMGameGLFont * this uint x uint y char * fmt ... +0x00151ac0 func HRESULT __stdcall notinline nofixup CMGameGLFont::QueryInterface CMGameGLFont * this IID * riid void * * ppvObject +0x00151b00 func int __cdecl notinline nofixup CLGameGLFont::Initialize int param_1 char * param_2 int param_3 +0x00151c40 func ULONG __stdcall notinline nofixup CMGameGLFont::Release CMGameGLFont * this +0x00151ca0 func HRESULT __stdcall notinline nofixup CMGameGL::CreateFont CMGameGL * this undefined4 riid char * fontPath undefined4 param_4 CMGameGLFont * * out 0x00151d70 func HRESULT __stdcall notinline nofixup GraphicsCOMChild::QueryInterface GraphicsCOMChild * this IID * riid void * * ppvObject 0x00151db0 func undefined __stdcall notinline nofixup GraphicsCOMChild::setFirstToSecond GraphicsCOMChild * this 0x00151dd0 func HRESULT __stdcall notinline nofixup GraphicsCOMChild::setGammaRampChannel GraphicsCOMChild * this undefined4 contrast undefined4 luminance Channel channel @@ -818,33 +852,37 @@ 0x001521b0 func undefined unknown notinline nofixup setGammaRamp 0x00152210 func undefined __stdcall notinline nofixup GraphicsCOMChild::commitGammaRamp GraphicsCOMChild * this 0x00152230 func ULONG __stdcall notinline nofixup GraphicsCOMChild::Release GraphicsCOMChild * this -0x00152270 func HRESULT __stdcall notinline nofixup GraphicsCOM::createChild GraphicsCOM * this GraphicsCOMChild * * out +0x00152270 func HRESULT __stdcall notinline nofixup CMGameGL::createChild CMGameGL * this GraphicsCOMChild * * out 0x001532f0 func ULONG __stdcall notinline nofixup AddRef undefined4 * this -0x00153a90 func void __thiscall notinline nofixup GraphicsCOM::setSomeGlobals -0x00153e30 func void __stdcall notinline nofixup GraphicsCOM::setViewport GraphicsCOM * this D3DRECT * region -0x00154130 func void default notinline nofixup GraphicsCOM::projectHomogeneous GraphicsCOM * this Vec2 * out D3DVECTOR * v +0x00153a90 func void __thiscall notinline nofixup CMGameGL::setSomeGlobals +0x00153e30 func void __stdcall notinline nofixup CMGameGL::setViewport CMGameGL * this D3DRECT * region +0x00154130 func void default notinline nofixup CMGameGL::projectHomogeneous CMGameGL * this Vec2 * out D3DVECTOR * v 0x00154250 func void __fastcall notinline nofixup transpose D3DMATRIX * mat -0x001542a0 func uint __stdcall notinline nofixup GraphicsCOM::getTransform GraphicsCOM * this undefined4 type D3DMATRIX * out BOOL transpose -0x00154420 func uint __stdcall notinline nofixup GraphicsCOM::setTransform GraphicsCOM * this undefined4 type undefined4 mat -0x00154520 func uint __stdcall notinline nofixup GraphicsCOM::setWorldTransform GraphicsCOM * this uint index undefined4 mat -0x00154540 func uint default notinline nofixup GraphicsCOM::setTextureTransform GraphicsCOM * this uint index D3DMATRIX * mat -0x001548e0 func undefined __stdcall notinline nofixup GraphicsCOM::getSomeBoolFromArray GraphicsCOM * this uint index +0x001542a0 func uint __stdcall notinline nofixup CMGameGL::getTransform CMGameGL * this undefined4 type D3DMATRIX * out BOOL transpose +0x00154420 func uint __stdcall notinline nofixup CMGameGL::setTransform CMGameGL * this undefined4 type undefined4 mat +0x00154520 func uint __stdcall notinline nofixup CMGameGL::setWorldTransform CMGameGL * this uint index undefined4 mat +0x00154540 func uint default notinline nofixup CMGameGL::setTextureTransform CMGameGL * this uint index D3DMATRIX * mat +0x001548e0 func undefined __stdcall notinline nofixup CMGameGL::getSomeBoolFromArray CMGameGL * this uint index 0x00154ae0 func undefined unknown notinline nofixup unsetTexture 0x00154b00 func BOOL __stdcall notinline nofixup someTextureArrayItemIsVolumeTexture uint index -0x00154b20 func void __thiscall notinline nofixup GraphicsCOM::freeSomeTextureArray +0x00154b20 func void __thiscall notinline nofixup CMGameGL::freeSomeTextureArray 0x00154c10 func undefined unknown notinline nofixup ROUND undefined4 x -0x00154c20 func void __thiscall notinline nofixup GraphicsCOM::resetPerfCounters -0x00154c30 func void __thiscall notinline nofixup GraphicsCOM::calculatePerformance -0x00154cf0 func uint __stdcall notinline nofixup GraphicsCOM::getPerfCounters GraphicsCOM * this GraphicsPerformanceCounters * out -0x00155150 func DWORD __stdcall notinline nofixup GraphicsCOM::getManyThings GraphicsCOM * this GraphicsCOMThingType type void * outOrIndex -0x00155540 func undefined __stdcall notinline nofixup GraphicsCOM::releaseSomething GraphicsCOM * this undefined4 param_2 -0x00155a60 func undefined unknown notinline nofixup GraphicsCOM::getCapabilities +0x00154c20 func void __thiscall notinline nofixup CMGameGL::resetPerfCounters +0x00154c30 func void __thiscall notinline nofixup CMGameGL::calculatePerformance +0x00154cf0 func uint __stdcall notinline nofixup CMGameGL::getPerfCounters CMGameGL * this SGraphicsPerformanceCounters * out +0x00154d70 func uint __stdcall notinline nofixup CMGameGL::ImportLibrary undefined4 this undefined4 which void * out +0x00154dc0 func void * __stdcall notinline nofixup CMGameGL::ExportLibrary CMGameGL * this uint which +0x00154e00 func uint __thiscall notinline nofixup CMGameGL::InitializeLibraries tag_MGLCLASS * param_1 +0x00155150 func DWORD __stdcall notinline nofixup CMGameGL::getManyThings CMGameGL * this GraphicsCOMThingType type void * outOrIndex +0x00155380 func HRESULT __stdcall notinline nofixup CMGameGL::Initialize CMGameGL * this tag_MGLCLASS * lpParams +0x00155540 func undefined __stdcall notinline nofixup CMGameGL::releaseSomething CMGameGL * this undefined4 param_2 +0x00155a60 func undefined unknown notinline nofixup CMGameGL::getCapabilities 0x001560c0 func undefined __stdcall notinline nofixup scalePack D3DVECTOR * v 0x00156120 func undefined __fastcall notinline nofixup unpack3Scaled D3DVECTOR * out undefined4 packed 0x001564a0 func undefined unknown notinline nofixup nop 0x00156d60 func HRESULT __stdcall notinline nofixup UnknownCOM::QueryInterface UnknownCOM * this IID * riid void * * ppvObject 0x00156dc0 func ULONG __stdcall notinline nofixup UnknownCOM::Release UnknownCOM * this -0x00156df0 func HRESULT default notinline nofixup createUnknownCOM GraphicsCOM * graphics UnknownCOM * * out +0x00156df0 func HRESULT default notinline nofixup createUnknownCOM CMGameGL * graphics UnknownCOM * * out 0x001576f0 func ULONG __stdcall notinline nofixup AddRef undefined * this 0x001577c0 func undefined unknown notinline nofixup QueryInterface undefined4 param_1 undefined4 param_2 undefined4 param_3 0x001579a0 func ULONG unknown notinline nofixup Release undefined4 this @@ -1001,45 +1039,53 @@ 0x0019e0e0 data DWORD[146] D3D8::D3D__RenderState 0x001a5299 func undefined unknown notinline nofixup initUnknownStatic49 0x001a52a4 func undefined unknown notinline nofixup initUnknownStatic50 -0x001ba8a0 func void __cdecl notinline nofixup MMATRIX::setIdentity -0x001ba8f0 func void __fastcall notinline nofixup MMATRIX::load Mat4 * in -0x001ba950 func void __fastcall notinline nofixup MMATRIX::store Mat4 * out -0x001ba9b0 func Mat4 * __cdecl notinline nofixup MMATRIX::getHead -0x001ba9c0 func void __cdecl notinline nofixup MMATRIX::dup -0x001baa00 func void __cdecl notinline nofixup MMATRIX::pushIdentity -0x001baa50 func Mat4 * __cdecl notinline nofixup MMATRIX::pop +0x001ba8a0 func void __cdecl notinline nofixup IdentityMatrix +0x001ba8f0 func void __fastcall notinline nofixup LoadMatrix float * in +0x001ba950 func void __fastcall notinline nofixup StoreMatrix float * out +0x001ba9b0 func float * __cdecl notinline nofixup GetCurrentMatrixPointer +0x001ba9c0 func void __cdecl notinline nofixup PushMatrix +0x001baa00 func void __cdecl notinline nofixup PushIdentityMatrix +0x001baa50 func float * __cdecl notinline nofixup PopMatrix 0x001baa60 func void __cdecl notinline nofixup MMATRIX::applyIntoTranslation float x float y float z 0x001baaa0 func void __fastcall notinline nofixup MMATRIX::applyIntoTranslation D3DVECTOR * v 0x001bab20 func void __fastcall notinline nofixup MMATRIX::applyOrTranslation D3DVECTOR * out D3DVECTOR * v -0x001bac00 func void __fastcall notinline nofixup MMATRIX::apply D3DVECTOR * out D3DVECTOR * v -0x001bac50 func void __fastcall notinline nofixup MMATRIX::rotate3D int * angles +0x001bac00 func void __fastcall notinline nofixup TransformNormal float * out float * v +0x001bac50 func void __fastcall notinline nofixup RotateCoord int * angles +0x001bac70 func void __fastcall notinline nofixup Rotate_MAYBE tag_MGLROTATE * angles 0x001badb0 func void __fastcall notinline nofixup MMATRIX::applyTo Mat4 * m 0x001bae90 func void __fastcall notinline nofixup MMATRIX::apply Mat4 * m -0x001bb230 func void __cdecl notinline nofixup MMATRIX::scaleCols float x float y float z -0x001bb270 func void __fastcall notinline nofixup MMATRIX::scaleCols D3DVECTOR * v -0x001bb2b0 func void __cdecl notinline nofixup MMATRIX::scale float a -0x001bb2e0 func void __fastcall notinline nofixup MMATRIX::rotateYZ int angle -0x001bb330 func void __fastcall notinline nofixup MMATRIX::rotateXZ int angle -0x001bb380 func void __fastcall notinline nofixup MMATRIX::rotateXY int angle -0x001bb3d0 func void __cdecl notinline nofixup MMATRIX::setIdentitySansTranslation -0x001bb410 func void __fastcall notinline nofixup MMATRIX::getTranslation D3DVECTOR * out -0x001bb430 func void __fastcall notinline nofixup MMATRIX::setTranslation D3DVECTOR * v -0x001bb5e0 func void __cdecl notinline nofixup MMATRIX::transpose -0x001bb690 func uint __cdecl notinline nofixup MMATRIX::initMatrices uint count -0x001bb720 func void __cdecl notinline nofixup MMATRIX::freeMatrices -0x001bb960 func void __cdecl notinline nofixup MMATRIX::scaleCol1 float a -0x001bb980 func void __cdecl notinline nofixup MMATRIX::scaleCol2 float a -0x001bb9a0 func void __cdecl notinline nofixup MMATRIX::scaleCol3 float a +0x001baf70 func void __fastcall notinline nofixup LookAt D3DVECTOR * param_1 D3DVECTOR * param_2 int angle +0x001bb230 func void __cdecl notinline nofixup Scale float x float y float z +0x001bb270 func void __fastcall notinline nofixup ScaleCoord D3DVECTOR * v +0x001bb2b0 func void __cdecl notinline nofixup ProportionalScale float a +0x001bb2e0 func void __fastcall notinline nofixup RotateX int angle +0x001bb330 func void __fastcall notinline nofixup RotateY int angle +0x001bb380 func void __fastcall notinline nofixup RotateZ int angle +0x001bb3d0 func void __cdecl notinline nofixup IdentityRotate +0x001bb410 func void __fastcall notinline nofixup GetTranslate float * out +0x001bb430 func void __fastcall notinline nofixup SetTranslate float * v +0x001bb5e0 func void __cdecl notinline nofixup TransposeMatrix +0x001bb630 func void __stdcall notinline nofixup TranslateX float param_1 +0x001bb650 func void __cdecl notinline nofixup TranslateY float param_1 +0x001bb670 func void __cdecl notinline nofixup TranslateZ float param_1 +0x001bb690 func uint __cdecl notinline nofixup MMatrix_Initialize uint count +0x001bb720 func void __cdecl notinline nofixup MMatrix_Uninitialize +0x001bb750 func uint * __cdecl notinline nofixup MMatrix_ExportLibrary +0x001bb780 func uint __cdecl notinline nofixup MMatrix_ImportLibrary SMMatrixExport * lib +0x001bb960 func void __cdecl notinline nofixup ScaleX float a +0x001bb980 func void __cdecl notinline nofixup ScaleY float a +0x001bb9a0 func void __cdecl notinline nofixup ScaleZ float a +0x001bb9c0 func void __cdecl notinline nofixup GetRotationCoord int * param_1 0x001bbac0 func bool __stdcall notinline nofixup XGRPH::isDxt D3DFORMAT fmt 0x001bd03b func undefined __stdcall notinline nofixup vector_constructor_iterator void * param_1 uint param_2 undefined4 param_3 undefined4 param_4 0x001bdaa9 func undefined unknown notinline nofixup initUnknownStaticXPP 0x001c4160 data D3DDIRTYFLAG[54] D3D8::D3DDIRTYFROMTEXTURESTATE 0x001c4248 data D3DSIMPLERENDERSTATEENCODE[82] D3D8::D3DSIMPLERENDERSTATEENCODE -0x001c4390 data GameObjVtbl GameObj::`vftable' -0x001c43d8 data GameObjVtbl DrawTree::`vftable' -0x001c4418 data GameObjVtbl PlayerObj::`vftable' -0x001c4458 data GameVtbl Game::`vftable' -0x001c4480 data undefined * RootExecObj::`vftable' +0x001c4390 data CActBaseVtbl CActBase::`vftable' +0x001c43d8 data CActBaseVtbl CDrawBase::`vftable' +0x001c4418 data CActBaseVtbl CPlayer::`vftable' +0x001c4458 data CActManVtbl CActMan::`vftable' +0x001c4480 data undefined * CActRoot::`vftable' 0x001c4544 data pointer UnknownStatic02::vtable 0x001c4558 data float 2^32 0x001c4580 data undefined * UnknownObj_0x1289::vtable @@ -1047,26 +1093,26 @@ 0x001c45c4 data pointer UnknownStatic05::vtable 0x001c45c8 data undefined * CopSpawnView::vtable 0x001c4ba8 data undefined * EventChild2::vtable -0x001c4c88 data GameObjVtbl EventChild1::`vftable' +0x001c4c88 data CActBaseVtbl EventChild1::`vftable' 0x001c4cc8 data float float(1/255) -0x001c4cd0 data GameObjVtbl Event::`vftable' -0x001c4d10 data GameObjVtbl UnknownObj_0x6::`vftable' +0x001c4cd0 data CActBaseVtbl Event::`vftable' +0x001c4d10 data CActBaseVtbl UnknownObj_0x6::`vftable' 0x001c4d50 data pointer UnknownStatic06::`vftable' -0x001c4d58 data GameObjVtbl CacheBuilder_MAYBE::`vftable' +0x001c4d58 data CActBaseVtbl CacheBuilder_MAYBE::`vftable' 0x001c4f68 data undefined * FileManager::`vftable' 0x001ca168 data pointer UnknownStatic07::vtable -0x001ca3d8 data pointer GameData::`vftable' -0x001ca440 data GameObjVtbl TextRenderer_MAYBE::`vftable' +0x001ca3d8 data pointer CSaveData::`vftable' +0x001ca440 data CActBaseVtbl TextRenderer_MAYBE::`vftable' 0x001ca4c8 data undefined * MissionManagerChild_0xE7::vtable 0x001ca508 data undefined * UnknownStatic09::vtable 0x001ca5f0 data undefined * GraffitiSoulSpawnView_MAYBE::vtable 0x001ca678 data undefined * PickupList::vtable 0x001ca7d8 data undefined * EventChild1Child::vtable 0x001caa8c data ProgressVtbl Progress::`vftable' -0x001caab0 data GameObjVtbl Mission::`vftable' -0x001caaf8 data GameObjVtbl MissionManager::`vftable' +0x001caab0 data CActBaseVtbl Mission::`vftable' +0x001caaf8 data CActBaseVtbl MissionManager::`vftable' 0x001cab98 data undefined * CharacterSelect::vtable -0x001caf70 data pointer COMManager_MAYBE::vtable +0x001caf70 data pointer CMusashi::vtable 0x001cb000 data undefined * MissionManagerChild_0xE8::vtable 0x001cb094 data pointer UnknownStatic16::vtable 0x001cb0a0 data pointer UnknownStatic17::vtable @@ -1085,25 +1131,25 @@ 0x001cc620 data pointer Timer::vtable 0x001cc660 data undefined * UnknownObj_0x12B0::vtable 0x001cc6a0 data pointer UnknownStatic27::vtable -0x001ccd18 data GameObjVtbl UnknownObj_0x1167_2::`vftable' -0x001ccde8 data GameObjVtbl UnknownObj_0x1167_1::vtable -0x001cce30 data GameObjVtbl DemoInitializer::vtable -0x001cceb8 data GameObjVtbl Director::`vftable' -0x001ccf78 data GameObjVtbl UnknownObj_0x1DF3::`vftable' -0x001ccfb8 data GameObjVtbl Opening::`vftable' -0x001ccff8 data GameObjVtbl SomePlayerStateChild::`vftable' -0x001cd0c0 data GameObjVtbl UnknownObj_0x50::`vftable' -0x001cd518 data GameObjVtbl PlayerCamera::vtable +0x001ccd18 data CActBaseVtbl UnknownObj_0x1167_2::`vftable' +0x001ccde8 data CActBaseVtbl UnknownObj_0x1167_1::vtable +0x001cce30 data CActBaseVtbl DemoInitializer::vtable +0x001cceb8 data CActBaseVtbl Director::`vftable' +0x001ccf78 data CActBaseVtbl UnknownObj_0x1DF3::`vftable' +0x001ccfb8 data CActBaseVtbl Opening::`vftable' +0x001ccff8 data CActBaseVtbl SomePlayerStateChild::`vftable' +0x001cd0c0 data CActBaseVtbl UnknownObj_0x50::`vftable' +0x001cd518 data CActBaseVtbl PlayerCamera::vtable 0x001cd560 data float g_cameraMinDist 0x001cd564 data float g_cameraMaxDist -0x001cd570 data GameObjVtbl SomePlayerState::vtable -0x001cd5c8 data GameObjVtbl MissionManagerChild_0xB::vtable +0x001cd570 data CActBaseVtbl SomePlayerState::vtable +0x001cd5c8 data CActBaseVtbl MissionManagerChild_0xB::vtable 0x001d3878 data FileMapping[56] musicMapping 0x001d3a38 data FileMapping[623] voiceLineMapping 0x001d4db0 data FileMapping[17] soundEffectMapping 0x001d76c8 data undefined * AdxManager::vtable 0x001d7b20 data undefined * SoundManager::vtable -0x001da300 data undefined * UnknownObj_0x1DE2::vtable +0x001da300 data CActBaseVtbl CGraffitiMenu::vtable 0x001da350 data undefined * UnknownObj_0x1DE4::vtable 0x001e0c2c data IMAGE_TLS_DIRECTORY32 extern_"C"::_tls_used 0x001e0ea0 data float g_radToU16Angle1 @@ -1111,12 +1157,12 @@ 0x001e0ea8 data float g_radToU16Angle3 0x001e0ebc data float epsilon_neg 0x001e0ec0 data float epsilon_pos -0x001e0f00 data GraphicsCOMVtbl GraphicsCOM::vtable -0x001e1248 data FontCOMVtbl FontCOM::vtable +0x001e0f00 data CMGameGLVtbl CMGameGL::vtable +0x001e1248 data CMGameGLFontVtbl CMGameGLFont::vtable 0x001e1270 data GraphicsCOMChildVtbl GraphicsCOMChild::vtable -0x001e1340 data IID FontCOM::iid +0x001e1340 data IID CMGameGLFont::iid 0x001e1350 data IID GraphicsCOMChild::iid -0x001e13e0 data IID GraphicsCOM::iid +0x001e13e0 data IID CMGameGL::iid 0x001e13f0 data UnknownCOMVtbl UnknownCOM::vtable 0x001e144c data UnknownCOMChildVtbl UnknownCOMChild::vtable 0x001e16b8 data IID UnknownCOMChild::iid @@ -1145,7 +1191,7 @@ 0x001eb83c data pointer __xc_z 0x001eb840 data voidFunc * __xi_a 0x001eb854 data pointer __xi_z -0x001eb880 data DrawFuncArgs[15] drawFuncArgs +0x001eb880 data SDrawFuncArgs[15] drawFuncArgs 0x001eb994 data UnknownStatic02 g_unknownStatic02 0x001ebaa8 data UnknownStatic04 g_unknownStatic04 0x001ebabc data UnknownStatic05 g_unknownStatic05 @@ -1172,7 +1218,7 @@ 0x001efdc8 data uint[40] g_defaultSpawnedSouls 0x001efe68 data uint[4][5] g_defaultSelectedTags 0x001efeb8 data char *[61] g_unusedDebugStrings -0x001effb0 data GameData g_gameData +0x001effb0 data CSaveData g_gameData 0x001f8b30 data float someJaTextParameter 0x001f8b58 data float someSpaceTextParameter 0x001f8c38 data int[286] g_soullIdToStageIndex @@ -1180,7 +1226,7 @@ 0x001f9358 data UnknownStatic13Part g_unknownStatic13PartDefault 0x001f93c8 data UnknownStatic13 g_unknownStatic13 0x001f9640 data UnknownStatic13Part * g_unchangingUnknownStatic3Ptr -0x001f9808 data PlayerCharId[32] charIds +0x001f9808 data ePLAYERCHARID[32] charIds 0x001f9888 data SwitcherMethod *[119] Mission::execDefaultFuncs 0x001f9a68 data SwitcherMethod *[119] Mission::exec_5Funcs 0x001f9c48 data SwitcherMethod *[119] Mission::exec_3Funcs @@ -1198,7 +1244,7 @@ 0x001fbb7c data undefined * ioMessagesJa 0x001fbbb8 data undefined * ioMessagesEn 0x001fbca8 data char * *[5] ioMessages -0x001fbcc0 data GraphicsSetting[19][5] GraphicsSettings::g_graphicsSettingsSource +0x001fbcc0 data SGraphicsSetting[19][5] GraphicsSettings::g_graphicsSettingsSource 0x001fc724 data Language g_language 0x0020c6c0 data UnknownStatic22 g_unknownStatic22 0x0020c750 data UnknownGlobal g_unknownGlobal @@ -1230,7 +1276,7 @@ 0x0021c234 data uint[5] tagIdsPoisonJam 0x0021c248 data uint[5] tagIdsImmortals 0x0021c25c data uint[5] tagIdsZeroBeat -0x0021c450 data PlayerCharId[24] someCharIdArray +0x0021c450 data ePLAYERCHARID[24] someCharIdArray 0x0021c510 data EvCharId[24] someCharIdMapping 0x0021c570 data char *[5] hasJoinedYou 0x0021c584 data undefined * testRunRankNamesJa @@ -1267,7 +1313,7 @@ 0x0022e004 data OBJECT_STRING extern_"C"::TitleData 0x0022e00c data OBJECT_STRING extern_"C"::UDrive 0x0022e014 data OBJECT_STRING extern_"C"::UserData -0x0022e58c data uint g_iRng +0x0022e58c data uint g_dwRandom 0x0022e6ac data float g_someMin 0x0022e6b0 data float g_someMax 0x0022e700 data D3DMATRIX g_identityMatrix @@ -1275,20 +1321,20 @@ 0x0022ed54 data pointer __cfltcvt_tab 0x0022ed5c data pointer __cfltcvt 0x0022eeb8 data PRTL_CRITICAL_SECTION[8] g_criticalSections -0x0022fce0 data Game * g_game -0x0022fce8 data CollisionManager g_collisionManager +0x0022fce0 data CActMan * g_lpActMan +0x0022fce8 data CSysColiManager g_collisionManager 0x002314b0 data UnknownStatic09 g_unknownStatic09 -0x00231d40 data GenericScratch g_genericScratch +0x00231d40 data ScratchPad g_scratchPad 0x00251d40 data uint g_objectCount 0x00251d44 data DWORD g_textureOps 0x00251d54 data int[4] g_texIndexPerStage 0x00251d64 data ControllerCOM_MAYBE * g_controllerCOM_MAYBE -0x00251d68 data FontCOM * g_timesNewRoman -0x00251d6c data GraphicsCOM * g_graphics +0x00251d68 data CMGameGLFont * g_timesNewRoman +0x00251d6c data CMGameGL * g_pMGameGLInterface 0x00251d70 data GraphicsCOMChild * g_graphicsCOMChild 0x00251d74 data UnknownCOM * g_unknownCOM 0x00251d78 data UnknownCOMChild * g_unknownCOMChild -0x00251d7c data COMManager_MAYBE * g_comManager_MAYBE +0x00251d7c data CMusashi * g_lpMusashi 0x00251d80 data DWORD g_specularEnable 0x00251d84 data BOOL g_fogEnable 0x00251d88 data int g_texIndex @@ -1297,7 +1343,7 @@ 0x00251f20 data uint g_activeController_MAYBE 0x00251f24 data undefined4 g_loadingScreen 0x00251f28 data FRNG g_fRng -0x00251f5c data GraphicsSettings g_graphicsSettings +0x00251f5c data SGraphicsSettings g_graphicsSettings 0x00251f78 data UnknownStatic24 g_unknownStatic24 0x00252790 data UnknownStatic25 g_unknownStatic25 0x002588f0 data char[121] g_voiceLinePathBuf @@ -1310,11 +1356,17 @@ 0x0026174c data adxerr_func * CRI::lsc_err_func 0x00261750 data void * CRI::lsc_err_obj 0x00264850 data int extern_"C"::_tls_index -0x00264ba4 data SinCos * g_sinCosTable -0x00264bac data SinCos * g_ptrToSinCosTable +0x00264ba4 data SinCos * s_lpSinCosTable +0x00264ba8 data uint g_dwMMathVersion +0x00264bac data SinCos * g_lpSinCosTable 0x00264bb4 data float[8] g_floatResults -0x00264c04 data Mat4 * * g_matricesHead -0x00264c08 data Mat4 *[3] g_matrices +0x00264bf8 data uint g_dwMMatrixVersion +0x00264bfc data Mat4 * * g_lpCurrentMatrix +0x00264c00 data Mat4 * g_matrices +0x00264c04 data Mat4 * * s_lplpCurrentMatrix +0x00264c08 data Mat4 * s_lpMatrixStackBase +0x00264c0c data Mat4 * s_lpMatrixStackAllocation +0x00264c10 data Mat4 * s_lpMatrixStackHead 0x00264c14 data D3DCOLOR g_clearColour 0x00264ca0 data D3DLIGHT8 g_lighting 0x00264d28 data D3DCOLORVALUE g_diffuseLightRGB @@ -1322,7 +1374,7 @@ 0x00264d48 data D3DMATERIAL8 * g_material 0x00264d54 data D3DVECTOR4 g_diffuseVertexData 0x00264d64 data BOOL g_reverseCull -0x00264d68 data char[256] FontCOM::g_buf +0x00264d68 data char[256] CMGameGLFont::g_buf 0x00264e68 data D3DGAMMARAMP * g_gammaRamp 0x00264ed0 data D3DVIEWPORT8 g_viewport 0x00264ee8 data float g_someHomogeneousScalingFactorX