Continue populating JSRF/Core

This commit is contained in:
KeybadeBlox 2025-12-31 23:03:36 -05:00
parent f65876135d
commit f8578b0871
3 changed files with 356 additions and 28 deletions

View file

@ -30,9 +30,48 @@
"source_path": "src/JSRF/Core.cpp" "source_path": "src/JSRF/Core.cpp"
}, },
"symbol_mappings": { "symbol_mappings": {
"DrawTree::DrawTree": "??0DrawTree@@QAE@PAUGameObj@@W4GameObjIndex@@W4GameObjFlags@@@Z",
"DrawTree::`scalar_deleting_destructor'": "??_GDrawTree@@UAEPAXI@Z",
"DrawTree::copySomeVectors": "?copySomeVectors@DrawTree@@QAEXXZ",
"DrawTree::~DrawTree": "??1DrawTree@@UAE@XZ",
"GameObj::GameObj": "??0GameObj@@QAE@PAU0@W4GameObjIndex@@W4GameObjFlags@@@Z",
"GameObj::`scalar_deleting_destructor'": "??_GGameObj@@UAEPAXI@Z", "GameObj::`scalar_deleting_destructor'": "??_GGameObj@@UAEPAXI@Z",
"GameObj::`vftable'": "??_7GameObj@@6B@", "GameObj::`vftable'": "??_7GameObj@@6B@",
"GameObj::~GameObj": "??1GameObj@@UAE@XZ" "GameObj::addToSiblings": "?addToSiblings@GameObj@@QAEXPAU1@0@Z",
"GameObj::destructChildren": "?destructChildren@GameObj@@QAEXPAU1@@Z",
"GameObj::drawListCoveredPause": "?drawListCoveredPause@GameObj@@QAEXW4GameObjFlags@@HH0I00@Z",
"GameObj::drawListDefault": "?drawListDefault@GameObj@@QAEXW4GameObjFlags@@HH0I00@Z",
"GameObj::drawListEvent": "?drawListEvent@GameObj@@QAEXW4GameObjFlags@@HH0I00@Z",
"GameObj::drawListFreezeCam": "?drawListFreezeCam@GameObj@@QAEXW4GameObjFlags@@HH0I00@Z",
"GameObj::drawListUncoveredPause": "?drawListUncoveredPause@GameObj@@QAEXW4GameObjFlags@@HH0I00@Z",
"GameObj::drawTreeCoveredPause1": "?drawTreeCoveredPause1@GameObj@@QAEXXZ",
"GameObj::drawTreeCoveredPause2": "?drawTreeCoveredPause2@GameObj@@QAEXXZ",
"GameObj::drawTreeDefault1": "?drawTreeDefault1@GameObj@@QAEXXZ",
"GameObj::drawTreeDefault2": "?drawTreeDefault2@GameObj@@QAEXXZ",
"GameObj::drawTreeEvent1": "?drawTreeEvent1@GameObj@@QAEXXZ",
"GameObj::drawTreeEvent2": "?drawTreeEvent2@GameObj@@QAEXXZ",
"GameObj::drawTreeFreezeCam1": "?drawTreeFreezeCam1@GameObj@@QAEXXZ",
"GameObj::drawTreeFreezeCam2": "?drawTreeFreezeCam2@GameObj@@QAEXXZ",
"GameObj::drawTreeUncoveredPause1": "?drawTreeUncoveredPause1@GameObj@@QAEXXZ",
"GameObj::drawTreeUncoveredPause2": "?drawTreeUncoveredPause2@GameObj@@QAEXXZ",
"GameObj::getParent": "?getParent@GameObj@@QAEPAU1@XZ",
"GameObj::nopDraw": "?drawDefault@GameObj@@UAEXH@Z",
"GameObj::nopExec": "?execDefault@GameObj@@UAEXXZ",
"GameObj::recursiveExecCoveredPause": "?recursiveExecCoveredPause@GameObj@@QAEXXZ",
"GameObj::recursiveExecDefault": "?recursiveExecDefault@GameObj@@QAEXXZ",
"GameObj::recursiveExecEvent": "?recursiveExecEvent@GameObj@@QAEXXZ",
"GameObj::recursiveExecFreezeCam": "?recursiveExecFreezeCam@GameObj@@QAEXXZ",
"GameObj::recursiveExecUncoveredPause": "?recursiveExecUncoveredPause@GameObj@@QAEXXZ",
"GameObj::recursivePostExecCoveredPause": "?recursivePostExecCoveredPause@GameObj@@QAEXXZ",
"GameObj::recursivePostExecDefault": "?recursivePostExecDefault@GameObj@@QAEXXZ",
"GameObj::recursivePostExecEvent": "?recursivePostExecEvent@GameObj@@QAEXXZ",
"GameObj::recursivePostExecFreezeCam": "?recursivePostExecFreezeCam@GameObj@@QAEXXZ",
"GameObj::recursivePostExecUncoveredPause": "?recursivePostExecUncoveredPause@GameObj@@QAEXXZ",
"GameObj::removeChildrenFromObjList": "?removeChildrenFromObjList@GameObj@@QAEXPAU1@@Z",
"GameObj::removeFromObjList": "?removeFromObjList@GameObj@@QAEXPAU1@@Z",
"GameObj::setParent": "?setParent@GameObj@@QAEXPAU1@@Z",
"GameObj::~GameObj": "??1GameObj@@UAE@XZ",
"PlayerObj::PlayerObj": "??0PlayerObj@@QAE@PAUGameObj@@W4GameObjIndex@@W4GameObjFlags@@@Z"
} }
} }
] ]

View file

@ -11,3 +11,294 @@ Game and GameObj classes that form the foundation of the JSRF game code.
GameObj::~GameObj() { GameObj::~GameObj() {
g_game->gameObjCnt -= 1; g_game->gameObjCnt -= 1;
} }
// Address: 0x00011070
// Matching: no
void GameObj::recursiveExecDefault() {
}
// Address: 0x000110A0
// Matching: no
void GameObj::drawListDefault(
GameObjFlags flagFilterAny1,
int drawArg1,
int drawArg2,
GameObjFlags flagFilterAll,
unsigned otherBitfieldFilterAny,
GameObjFlags flagFilterNone,
GameObjFlags flagFilterAny2
) {
}
// Address: 0x00011220
// Matching: no
void GameObj::drawTreeDefault1() {
}
// Address: 0x00011260
// Matching: no
void GameObj::drawTreeDefault2() {
}
// Address: 0x000112A0
// Matching: no
void GameObj::recursiveExecEvent() {
}
// Address: 0x000112D0
// Matching: no
void GameObj::drawListEvent(
GameObjFlags flagFilterAny1,
int drawArg1,
int drawArg2,
GameObjFlags flagFilterAll,
unsigned otherBitfieldFilterAny,
GameObjFlags flagFilterNone,
GameObjFlags flagFilterAny2
) {
}
// Address: 0x00011450
// Matching: no
void GameObj::drawTreeEvent1() {
}
// Address: 0x00011490
// Matching: no
void GameObj::drawTreeEvent2() {
}
// Address: 0x000114D0
// Matching: no
void GameObj::recursiveExecCoveredPause() {
}
// Address: 0x00011500
// Matching: no
void GameObj::drawListCoveredPause(
GameObjFlags flagFilterAny1,
int drawArg1,
int drawArg2,
GameObjFlags flagFilterAll,
unsigned otherBitfieldFilterAny,
GameObjFlags flagFilterNone,
GameObjFlags flagFilterAny2
) {
}
// Address: 0x00011680
// Matching: no
void GameObj::drawTreeCoveredPause1() {
}
// Address: 0x000116C0
// Matching: no
void GameObj::drawTreeCoveredPause2() {
}
// Address: 0x00011700
// Matching: no
void GameObj::recursiveExecFreezeCam() {
}
// Address: 0x00011730
// Matching: no
void GameObj::drawListFreezeCam(
GameObjFlags flagFilterAny1,
int drawArg1,
int drawArg2,
GameObjFlags flagFilterAll,
unsigned otherBitfieldFilterAny,
GameObjFlags flagFilterNone,
GameObjFlags flagFilterAny2
) {
}
// Address: 0x000118B0
// Matching: no
void GameObj::drawTreeFreezeCam1() {
}
// Address: 0x000118F0
// Matching: no
void GameObj::drawTreeFreezeCam2() {
}
// Address: 0x00011930
// Matching: no
void GameObj::recursiveExecUncoveredPause() {
}
// Address: 0x00011960
// Matching: no
void GameObj::drawListUncoveredPause(
GameObjFlags flagFilterAny1,
int drawArg1,
int drawArg2,
GameObjFlags flagFilterAll,
unsigned otherBitfieldFilterAny,
GameObjFlags flagFilterNone,
GameObjFlags flagFilterAny2
) {
}
// Address: 0x00011AE0
// Matching: no
void GameObj::drawTreeUncoveredPause1() {
}
// Address: 0x00011B20
// Matching: no
void GameObj::drawTreeUncoveredPause2() {
}
// Address: 0x00011B60
// Matching: no
void GameObj::addToSiblings(GameObj * sibling, GameObj * parent) {
}
// Address: 0x00011B90
// Matching: no
void GameObj::destructChildren(GameObj * firstChild) {
}
// Address: 0x00011BD0
// Matching: yes
GameObj * GameObj::getParent() {
return this->parent;
}
// Address: 0x00011BE0
// Matching: no
void GameObj::removeFromObjList(GameObj * obj) {
}
// Address: 0x00011C20
// Matching: no
void GameObj::removeChildrenFromObjList(GameObj * firstChild) {
}
// Address: 0x00011C80
// Matching: yes
void GameObj::drawDefault(int unknown) {}
// Address: 0x00011C90
// Matching: yes
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(int 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(int 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(int 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(int unknown) {}
// Address: 0x00011CA0
// Matching: no
void DrawTree::copySomeVectors() {
}
// Address: 0x00011D00
// Matching: no
void GameObj::recursivePostExecDefault() {
}
// Address: 0x00011D00
// Matching: no
void GameObj::recursivePostExecEvent() {
}
// Address: 0x00011E40
// Matching: no
void GameObj::recursivePostExecCoveredPause() {
}
// Address: 0x00011EE0
// Matching: no
void GameObj::recursivePostExecFreezeCam() {
}
// Address: 0x00011F80
// Matching: no
void GameObj::recursivePostExecUncoveredPause() {
}
// Address: 0x00012020
// Matching: no
void GameObj::setParent(GameObj * parent) {
}
// Address: 0x00012100
// Matching: no
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
// Matching: no
DrawTree::DrawTree(GameObj * parent, GameObjIndex index, GameObjFlags flags) :
GameObj(parent, index, flags) {
this->otherBitfield = 7;
this->someIndex = 0;
}
// Address: 0x000121D0
// Matching: no
DrawTree::~DrawTree() {}
// Address: 0x000121E0
// Matching: no
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() {}

View file

@ -41,7 +41,7 @@ enum GameObjIndex {
}; };
// Base class of most objects (and everything in g_game->objects) // Base class of most objects (and everything in g_game->objects)
class GameObj { struct GameObj {
GameObjFlags flags; GameObjFlags flags;
GameObjIndex index; GameObjIndex index;
@ -64,7 +64,6 @@ class GameObj {
// Another linked list sort of arrangement // Another linked list sort of arrangement
GameObj * someKindOfNextObj; GameObj * someKindOfNextObj;
public:
virtual ~GameObj(); virtual ~GameObj();
void recursiveExecDefault(); void recursiveExecDefault();
@ -147,23 +146,23 @@ public:
// frame. // frame.
virtual void execDefault(); virtual void execDefault();
virtual void postExecDefault(); virtual void postExecDefault();
virtual void drawDefault(); virtual void drawDefault(int);
virtual void execEvent(); virtual void execEvent();
virtual void postExecEvent(); virtual void postExecEvent();
virtual void drawEvent(); virtual void drawEvent(int);
virtual void execCoveredPause(); virtual void execCoveredPause();
virtual void postExecCoveredPause(); virtual void postExecCoveredPause();
virtual void drawCoveredPause(); virtual void drawCoveredPause(int);
virtual void execFreezeCam(); virtual void execFreezeCam();
virtual void postExecFreezeCam(); virtual void postExecFreezeCam();
virtual void drawFreezeCam(); virtual void drawFreezeCam(int);
virtual void execUncoveredPause(); virtual void execUncoveredPause();
virtual void postExecUncoveredPause(); virtual void postExecUncoveredPause();
virtual void drawUncoveredPause(); virtual void drawUncoveredPause(int);
void recursivePostExecDefault(); void recursivePostExecDefault();
void recursivePostExecEvent(); void recursivePostExecEvent();
@ -178,7 +177,7 @@ public:
// Base class of objects serving as the head of a tree of objects to draw // Base class of objects serving as the head of a tree of objects to draw
// recursively // recursively
class DrawTree : GameObj { struct DrawTree : GameObj {
D3DVECTOR unknown0x44; D3DVECTOR unknown0x44;
D3DVECTOR unknown0x50; D3DVECTOR unknown0x50;
D3DVECTOR unknown0x5C; D3DVECTOR unknown0x5C;
@ -190,18 +189,17 @@ class DrawTree : GameObj {
D3DRECT viewport; D3DRECT viewport;
unsigned someIndex; unsigned someIndex;
public:
void copySomeVectors(); void copySomeVectors();
DrawTree(GameObj * parent, GameObjIndex index, GameObjFlags flags); DrawTree(GameObj * parent, GameObjIndex index, GameObjFlags flags);
virtual ~DrawTree(); virtual ~DrawTree();
}; };
class PlayerObj : GameObj { struct PlayerObj : GameObj {
unsigned unknown0x44; unsigned unknown0x44;
unsigned unknown0x48; unsigned unknown0x48;
public:
PlayerObj(GameObj * parent, GameObjIndex index, GameObjFlags flags); PlayerObj(GameObj * parent, GameObjIndex index, GameObjFlags flags);
virtual ~PlayerObj();
}; };
// Top-level globally-accessible "god object" that runs the main loop and // Top-level globally-accessible "god object" that runs the main loop and
@ -251,9 +249,9 @@ extern struct Game {
BOOL uncoveredPauseNextFrame; BOOL uncoveredPauseNextFrame;
BOOL noUncoveredPauseNextFrame; BOOL noUncoveredPauseNextFrame;
unsigned unknown0x70; BOOL drawChildren;
BOOL skipDraw; BOOL skipDraw;
int zeroedByExec; BOOL runSomeExtraDrawListCode;
GraphicsPerformanceCounters perfCounters; GraphicsPerformanceCounters perfCounters;
DrawMode drawMode; DrawMode drawMode;
@ -262,17 +260,17 @@ extern struct Game {
GameObj * objects[7668]; GameObj * objects[7668];
unsigned globals[461]; // Items may be any 32-bit type, e.g. ptr unsigned globals[461]; // Items may be any 32-bit type, e.g. ptr
GameObj * somethingLinkedBHead; DrawTree * drawTreesHead;
GameObj * * somethingLinkedBEndNext; DrawTree * * drawTreesEndNext;
GameObj * somethingLinkedAHead; GameObj * drawListHead;
GameObj * * somethingLinkedAEndNext; GameObj * * drawListEndNext;
GameObj * sortedLinkedListHead; GameObj * drawPriorityListHead;
GameObj * * sortedLinkedListEndNext; GameObj * * drawPriorityListEndNext;
GameObj * linkedListsByKeyHeads [256]; GameObj * drawPriorityListsByKeyHeads [256];
GameObj * * linkedListByKeyEndNexts[256]; GameObj * * drawPriorityListsByKeyEndNexts[256];
LARGE_INTEGER execPerfCount; LARGE_INTEGER execPerfCount;
LARGE_INTEGER drawPerfCount; LARGE_INTEGER drawPerfCount;
@ -286,10 +284,10 @@ extern struct Game {
int frameCnt2; int frameCnt2;
int frameCnt3; int frameCnt3;
unsigned gameObjCnt; unsigned gameObjCnt;
GameObj * rootDrawObj; DrawTree * currentDrawTree;
int unknown0x87F0; GameObjIndex currentDrawTreeIndex;
int unknown0x87F4; int unknown0x87F4;
Mat4 unknown0x87F8; Mat4 parentMatrix;
unsigned unknown0x8838; unsigned unknown0x8838;
unsigned unknown0x883C; unsigned unknown0x883C;
@ -324,8 +322,8 @@ extern struct Game {
void addToDrawList (GameObj * obj); void addToDrawList (GameObj * obj);
void removeFromDrawList(GameObj * obj); void removeFromDrawList(GameObj * obj);
void setObj (GameObjIndex index ); void setObj (GameObjIndex index , GameObj * obj);
void unsetObj (GameObjIndex index , GameObj * obj); void unsetObj (GameObjIndex index );
GameObj * getObj (GameObjIndex index ); GameObj * getObj (GameObjIndex index );
int allocObjIndex(GameObjIndex min , GameObjIndex max); int allocObjIndex(GameObjIndex min , GameObjIndex max);
BOOL objIndexAvail(GameObjIndex index ); BOOL objIndexAvail(GameObjIndex index );
@ -351,7 +349,7 @@ extern struct Game {
} * g_game; } * g_game;
// Root of the exec GameObj tree // Root of the exec GameObj tree
class RootExecObj : GameObj { struct RootExecObj : GameObj {
RootExecObj(GameObj * parent, GameObjIndex index, GameObjFlags flags); RootExecObj(GameObj * parent, GameObjIndex index, GameObjFlags flags);
virtual ~RootExecObj(); virtual ~RootExecObj();
}; };