Replace Matching: with Status:

We'd rather have three stages (unimplemented, nonmatching, matching)
than just matching or not.
This commit is contained in:
KeybadeBlox 2026-02-19 21:11:42 -05:00
parent 73b59a95cd
commit be4946eb98
5 changed files with 150 additions and 150 deletions

View file

@ -12,18 +12,18 @@ Game and GameObj classes that form the foundation of the JSRF game code.
void readInput(); void readInput();
// Address: 0x00011000 // Address: 0x00011000
// Matching: no // Status: unimplemented
GameObj::~GameObj() { GameObj::~GameObj() {
g_game->gameObjCnt -= 1; g_game->gameObjCnt -= 1;
} }
// Address: 0x00011070 // Address: 0x00011070
// Matching: no // Status: unimplemented
void GameObj::recursiveExecDefault() { void GameObj::recursiveExecDefault() {
} }
// Address: 0x000110A0 // Address: 0x000110A0
// Matching: no // Status: unimplemented
void GameObj::drawListDefault( void GameObj::drawListDefault(
GameObjFlags flagFilterAny1, GameObjFlags flagFilterAny1,
int drawArg1, int drawArg1,
@ -36,22 +36,22 @@ void GameObj::drawListDefault(
} }
// Address: 0x00011220 // Address: 0x00011220
// Matching: no // Status: unimplemented
void GameObj::drawTreeDefault1() { void GameObj::drawTreeDefault1() {
} }
// Address: 0x00011260 // Address: 0x00011260
// Matching: no // Status: unimplemented
void GameObj::drawTreeDefault2() { void GameObj::drawTreeDefault2() {
} }
// Address: 0x000112A0 // Address: 0x000112A0
// Matching: no // Status: unimplemented
void GameObj::recursiveExecEvent() { void GameObj::recursiveExecEvent() {
} }
// Address: 0x000112D0 // Address: 0x000112D0
// Matching: no // Status: unimplemented
void GameObj::drawListEvent( void GameObj::drawListEvent(
GameObjFlags flagFilterAny1, GameObjFlags flagFilterAny1,
int drawArg1, int drawArg1,
@ -64,22 +64,22 @@ void GameObj::drawListEvent(
} }
// Address: 0x00011450 // Address: 0x00011450
// Matching: no // Status: unimplemented
void GameObj::drawTreeEvent1() { void GameObj::drawTreeEvent1() {
} }
// Address: 0x00011490 // Address: 0x00011490
// Matching: no // Status: unimplemented
void GameObj::drawTreeEvent2() { void GameObj::drawTreeEvent2() {
} }
// Address: 0x000114D0 // Address: 0x000114D0
// Matching: no // Status: unimplemented
void GameObj::recursiveExecCoveredPause() { void GameObj::recursiveExecCoveredPause() {
} }
// Address: 0x00011500 // Address: 0x00011500
// Matching: no // Status: unimplemented
void GameObj::drawListCoveredPause( void GameObj::drawListCoveredPause(
GameObjFlags flagFilterAny1, GameObjFlags flagFilterAny1,
int drawArg1, int drawArg1,
@ -92,22 +92,22 @@ void GameObj::drawListCoveredPause(
} }
// Address: 0x00011680 // Address: 0x00011680
// Matching: no // Status: unimplemented
void GameObj::drawTreeCoveredPause1() { void GameObj::drawTreeCoveredPause1() {
} }
// Address: 0x000116C0 // Address: 0x000116C0
// Matching: no // Status: unimplemented
void GameObj::drawTreeCoveredPause2() { void GameObj::drawTreeCoveredPause2() {
} }
// Address: 0x00011700 // Address: 0x00011700
// Matching: no // Status: unimplemented
void GameObj::recursiveExecFreezeCam() { void GameObj::recursiveExecFreezeCam() {
} }
// Address: 0x00011730 // Address: 0x00011730
// Matching: no // Status: unimplemented
void GameObj::drawListFreezeCam( void GameObj::drawListFreezeCam(
GameObjFlags flagFilterAny1, GameObjFlags flagFilterAny1,
int drawArg1, int drawArg1,
@ -120,22 +120,22 @@ void GameObj::drawListFreezeCam(
} }
// Address: 0x000118B0 // Address: 0x000118B0
// Matching: no // Status: unimplemented
void GameObj::drawTreeFreezeCam1() { void GameObj::drawTreeFreezeCam1() {
} }
// Address: 0x000118F0 // Address: 0x000118F0
// Matching: no // Status: unimplemented
void GameObj::drawTreeFreezeCam2() { void GameObj::drawTreeFreezeCam2() {
} }
// Address: 0x00011930 // Address: 0x00011930
// Matching: no // Status: unimplemented
void GameObj::recursiveExecUncoveredPause() { void GameObj::recursiveExecUncoveredPause() {
} }
// Address: 0x00011960 // Address: 0x00011960
// Matching: no // Status: unimplemented
void GameObj::drawListUncoveredPause( void GameObj::drawListUncoveredPause(
GameObjFlags flagFilterAny1, GameObjFlags flagFilterAny1,
int drawArg1, int drawArg1,
@ -148,40 +148,40 @@ void GameObj::drawListUncoveredPause(
} }
// Address: 0x00011AE0 // Address: 0x00011AE0
// Matching: no // Status: unimplemented
void GameObj::drawTreeUncoveredPause1() { void GameObj::drawTreeUncoveredPause1() {
} }
// Address: 0x00011B20 // Address: 0x00011B20
// Matching: no // Status: unimplemented
void GameObj::drawTreeUncoveredPause2() { void GameObj::drawTreeUncoveredPause2() {
} }
// Address: 0x00011B60 // Address: 0x00011B60
// Matching: no // Status: unimplemented
void GameObj::addToSiblings(GameObj * sibling, GameObj * parent) { void GameObj::addToSiblings(GameObj * sibling, GameObj * parent) {
} }
// Address: 0x00011B90 // Address: 0x00011B90
// Matching: no // Status: unimplemented
void GameObj::destructChildren(GameObj * firstChild) { void GameObj::destructChildren(GameObj * firstChild) {
} }
// Address: 0x00011BD0 // Address: 0x00011BD0
// Matching: yes // Status: matching
GameObj * GameObj::getParent() { GameObj * GameObj::getParent() {
return this->parent; return this->parent;
} }
// Address: 0x00011BE0 // Address: 0x00011BE0
// Matching: no // Status: unimplemented
void GameObj::removeFromObjList(GameObj * obj) { void GameObj::removeFromObjList(GameObj * obj) {
if (obj->flags > -1) { if (obj->flags > -1) {
} }
} }
// Address: 0x00011C20 // Address: 0x00011C20
// Matching: no // Status: nonmatching
void GameObj::removeChildrenFromObjList(GameObj * firstChild) { void GameObj::removeChildrenFromObjList(GameObj * firstChild) {
if (firstChild != NULL) do { if (firstChild != NULL) do {
if (firstChild->flags > -1) { if (firstChild->flags > -1) {
@ -196,11 +196,11 @@ void GameObj::removeChildrenFromObjList(GameObj * firstChild) {
} }
// Address: 0x00011C80 // Address: 0x00011C80
// Matching: yes // Status: matching
void GameObj::drawDefault(unsigned unknown) {} void GameObj::drawDefault(unsigned unknown) {}
// Address: 0x00011C90 // Address: 0x00011C90
// Matching: yes // Status: matching
void GameObj::execDefault() {} void GameObj::execDefault() {}
// Eliminated by link time code generation (aliased with 0x00011C90) // Eliminated by link time code generation (aliased with 0x00011C90)
@ -243,42 +243,42 @@ void GameObj::postExecUncoveredPause() {}
void GameObj::drawUncoveredPause(unsigned unknown) {} void GameObj::drawUncoveredPause(unsigned unknown) {}
// Address: 0x00011CA0 // Address: 0x00011CA0
// Matching: no // Status: unimplemented
void DrawTree::copySomeVectors() { void DrawTree::copySomeVectors() {
} }
// Address: 0x00011D00 // Address: 0x00011D00
// Matching: no // Status: unimplemented
void GameObj::recursivePostExecDefault() { void GameObj::recursivePostExecDefault() {
} }
// Address: 0x00011D00 // Address: 0x00011D00
// Matching: no // Status: unimplemented
void GameObj::recursivePostExecEvent() { void GameObj::recursivePostExecEvent() {
} }
// Address: 0x00011E40 // Address: 0x00011E40
// Matching: no // Status: unimplemented
void GameObj::recursivePostExecCoveredPause() { void GameObj::recursivePostExecCoveredPause() {
} }
// Address: 0x00011EE0 // Address: 0x00011EE0
// Matching: no // Status: unimplemented
void GameObj::recursivePostExecFreezeCam() { void GameObj::recursivePostExecFreezeCam() {
} }
// Address: 0x00011F80 // Address: 0x00011F80
// Matching: no // Status: unimplemented
void GameObj::recursivePostExecUncoveredPause() { void GameObj::recursivePostExecUncoveredPause() {
} }
// Address: 0x00012020 // Address: 0x00012020
// Matching: no // Status: unimplemented
void GameObj::setParent(GameObj * parent) { void GameObj::setParent(GameObj * parent) {
} }
// Address: 0x00012100 // Address: 0x00012100
// Matching: no // Status: unimplemented
GameObj::GameObj(GameObj * parent, GameObjIndex index, GameObjFlags flags) { GameObj::GameObj(GameObj * parent, GameObjIndex index, GameObjFlags flags) {
g_game->setObj(index, this); g_game->setObj(index, this);
@ -298,7 +298,7 @@ GameObj::GameObj(GameObj * parent, GameObjIndex index, GameObjFlags flags) {
} }
// Address: 0x00012170 // Address: 0x00012170
// Matching: yes // Status: matching
DrawTree::DrawTree(GameObj * parent, GameObjIndex index, GameObjFlags flags) : DrawTree::DrawTree(GameObj * parent, GameObjIndex index, GameObjFlags flags) :
GameObj(parent, index, flags) { GameObj(parent, index, flags) {
this->otherBitfield = 7; this->otherBitfield = 7;
@ -306,11 +306,11 @@ DrawTree::DrawTree(GameObj * parent, GameObjIndex index, GameObjFlags flags) :
} }
// Address: 0x000121D0 // Address: 0x000121D0
// Matching: no // Status: unimplemented
DrawTree::~DrawTree() {} DrawTree::~DrawTree() {}
// Address: 0x000121E0 // Address: 0x000121E0
// Matching: no // Status: unimplemented
PlayerObj::PlayerObj(GameObj * parent, GameObjIndex index, GameObjFlags flags) : PlayerObj::PlayerObj(GameObj * parent, GameObjIndex index, GameObjFlags flags) :
GameObj(parent, index, flags) { GameObj(parent, index, flags) {
this->unknown0x44 = 0; this->unknown0x44 = 0;
@ -321,27 +321,27 @@ PlayerObj::PlayerObj(GameObj * parent, GameObjIndex index, GameObjFlags flags) :
PlayerObj::~PlayerObj() {} PlayerObj::~PlayerObj() {}
// Address: 0x00012210 // Address: 0x00012210
// Matching: no // Status: unimplemented
Game::Game(unsigned * unknown1, unsigned unknown2) { Game::Game(unsigned * unknown1, unsigned unknown2) {
} }
// Address: 0x00012390 // Address: 0x00012390
// Matching: no // Status: unimplemented
Game::~Game() { Game::~Game() {
} }
// Address: 0x000123E0 // Address: 0x000123E0
// Matching: no // Status: unimplemented
void Game::exec() { void Game::exec() {
} }
// Address: 0x00012580 // Address: 0x00012580
// Matching: no // Status: unimplemented
void Game::drawObj(GameObj * obj, unsigned unknown) { void Game::drawObj(GameObj * obj, unsigned unknown) {
} }
// Address: 0x000125E0 // Address: 0x000125E0
// Matching: no // Status: unimplemented
void Game::drawList_( void Game::drawList_(
GameObjFlags flagFilterAny1, GameObjFlags flagFilterAny1,
int drawArg1, int drawArg1,
@ -354,97 +354,97 @@ void Game::drawList_(
} }
// Address: 0x00012680 // Address: 0x00012680
// Matching: no // Status: unimplemented
void Game::drawTree1(GameObj * obj) { void Game::drawTree1(GameObj * obj) {
} }
// Address: 0x000126D0 // Address: 0x000126D0
// Matching: no // Status: unimplemented
void Game::setCoveredPauseNextFrame(BOOL val) { void Game::setCoveredPauseNextFrame(BOOL val) {
} }
// Address: 0x000126F0 // Address: 0x000126F0
// Matching: no // Status: unimplemented
void Game::setEventNextFrame(BOOL val) { void Game::setEventNextFrame(BOOL val) {
} }
// Address: 0x00012710 // Address: 0x00012710
// Matching: no // Status: unimplemented
void Game::setFreezeCamNextFrame(BOOL val) { void Game::setFreezeCamNextFrame(BOOL val) {
} }
// Address: 0x00012730 // Address: 0x00012730
// Matching: no // Status: unimplemented
void Game::setUncoveredPauseNextFrame(BOOL val) { void Game::setUncoveredPauseNextFrame(BOOL val) {
} }
// Address: 0x00012750 // Address: 0x00012750
// Matching: yes // Status: matching
void Game::enableDrawChildren() { void Game::enableDrawChildren() {
this->drawChildren = TRUE; this->drawChildren = TRUE;
} }
// Address: 0x00012760 // Address: 0x00012760
// Matching: yes // Status: matching
void Game::enableSkipDraw() { void Game::enableSkipDraw() {
this->skipDraw = TRUE; this->skipDraw = TRUE;
} }
// Address: 0x00012770 // Address: 0x00012770
// Matching: no // Status: unimplemented
void Game::fatal() { void Game::fatal() {
} }
// Address: 0x000127B0 // Address: 0x000127B0
// Matching: yes // Status: matching
void Game::setDrawMode(DrawMode mode) { void Game::setDrawMode(DrawMode mode) {
this->drawMode = mode; this->drawMode = mode;
} }
// Address: 0x000127C0 // Address: 0x000127C0
// Matching: yes // Status: matching
void Game::setGlobal(GlobalIndex index, unsigned val) { void Game::setGlobal(GlobalIndex index, unsigned val) {
this->globals[index] = val; this->globals[index] = val;
} }
// Address: 0x000127E0 // Address: 0x000127E0
// Matching: yes // Status: matching
unsigned Game::getGlobal(GlobalIndex index) { unsigned Game::getGlobal(GlobalIndex index) {
return this->globals[index]; return this->globals[index];
} }
// Address: 0x000127F0 // Address: 0x000127F0
// Matching: no // Status: unimplemented
void Game::addToDrawList(GameObj * obj) { void Game::addToDrawList(GameObj * obj) {
} }
// Address: 0x00012840 // Address: 0x00012840
// Matching: no // Status: unimplemented
void Game::removeFromDrawList(GameObj * obj) { void Game::removeFromDrawList(GameObj * obj) {
} }
// Address: 0x00012870 // Address: 0x00012870
// Matching: yes // Status: matching
void Game::setObj(GameObjIndex index, GameObj * obj) { void Game::setObj(GameObjIndex index, GameObj * obj) {
if (0 <= index && index < OBJ_CNT) if (0 <= index && index < OBJ_CNT)
this->objects[index] = obj; this->objects[index] = obj;
} }
// Address: 0x00012890 // Address: 0x00012890
// Matching: yes // Status: matching
void Game::unsetObj(GameObjIndex index) { void Game::unsetObj(GameObjIndex index) {
if (0 <= index && this->objects[index] != NULL) if (0 <= index && this->objects[index] != NULL)
this->objects[index] = NULL; this->objects[index] = NULL;
} }
// Address: 0x000128C0 // Address: 0x000128C0
// Matching: yes // Status: matching
GameObj * Game::getObj(GameObjIndex index) { GameObj * Game::getObj(GameObjIndex index) {
return 0 <= index ? this->objects[index] : NULL; return 0 <= index ? this->objects[index] : NULL;
} }
// Address: 0x000128E0 // Address: 0x000128E0
// Matching: yes // Status: matching
int Game::allocObjIndex(GameObjIndex min, GameObjIndex max) { int Game::allocObjIndex(GameObjIndex min, GameObjIndex max) {
if (min <= max) do if (min <= max) do
if (this->objects[min] == NULL) return min; if (this->objects[min] == NULL) return min;
@ -455,13 +455,13 @@ int Game::allocObjIndex(GameObjIndex min, GameObjIndex max) {
} }
// Address: 0x00012910 // Address: 0x00012910
// Matching: yes // Status: matching
BOOL Game::objIndexAvail(GameObjIndex index) { BOOL Game::objIndexAvail(GameObjIndex index) {
return this->objects[index] == NULL; return this->objects[index] == NULL;
} }
// Address: 0x00012930 // Address: 0x00012930
// Matching: yes // Status: matching
void Game::swapObjs(GameObjIndex index1, GameObjIndex index2) { void Game::swapObjs(GameObjIndex index1, GameObjIndex index2) {
GameObj * tmp = this->objects[index1]; GameObj * tmp = this->objects[index1];
this->objects[index1] = this->objects[index2]; this->objects[index1] = this->objects[index2];
@ -472,37 +472,37 @@ void Game::swapObjs(GameObjIndex index1, GameObjIndex index2) {
} }
// Address: 0x00012980 // Address: 0x00012980
// Matching: no // Status: unimplemented
void Game::clearScreen() { void Game::clearScreen() {
} }
// Address: 0x000129B0 // Address: 0x000129B0
// Matching: yes // Status: matching
void Game::enableSomeExtraDrawListCode() { void Game::enableSomeExtraDrawListCode() {
this->runSomeExtraDrawListCode = TRUE; this->runSomeExtraDrawListCode = TRUE;
} }
// Address: 0x000129C0 // Address: 0x000129C0
// Matching: yes // Status: matching
void Game::setLogosStarted(BOOL val) { void Game::setLogosStarted(BOOL val) {
this->logosStarted = val; this->logosStarted = val;
} }
// Address: 0x000129D0 // Address: 0x000129D0
// Matching: yes // Status: matching
void Game::clearDrawPriorityList() { void Game::clearDrawPriorityList() {
this->drawPriorityListHead = NULL; this->drawPriorityListHead = NULL;
this->drawPriorityListEndNext = &g_game->drawPriorityListHead; this->drawPriorityListEndNext = &g_game->drawPriorityListHead;
} }
// Address: 0x000129F0 // Address: 0x000129F0
// Matching: yes // Status: matching
GameObj * Game::getDrawPriorityListHead() { GameObj * Game::getDrawPriorityListHead() {
return this->drawPriorityListHead; return this->drawPriorityListHead;
} }
// Address: 0x00012A00 // Address: 0x00012A00
// Matching: yes // Status: matching
void Game::appendToDrawPriorityList(GameObj * obj) { void Game::appendToDrawPriorityList(GameObj * obj) {
obj->drawPriorityListNext = NULL; obj->drawPriorityListNext = NULL;
*this->drawPriorityListEndNext = obj; *this->drawPriorityListEndNext = obj;
@ -510,7 +510,7 @@ void Game::appendToDrawPriorityList(GameObj * obj) {
} }
// Address: 0x00012A20 // Address: 0x00012A20
// Matching: no // Status: unimplemented
void Game::sortDrawPriorityListSingleLevel(unsigned char sortKeyBitOffset) { void Game::sortDrawPriorityListSingleLevel(unsigned char sortKeyBitOffset) {
for ( for (
unsigned i = 0; unsigned i = 0;
@ -520,35 +520,35 @@ void Game::sortDrawPriorityListSingleLevel(unsigned char sortKeyBitOffset) {
} }
// Address: 0x00012AC0 // Address: 0x00012AC0
// Matching: yes // Status: matching
void Game::setFallbackBgColour(D3DCOLOR colour, BOOL useFallback) { void Game::setFallbackBgColour(D3DCOLOR colour, BOOL useFallback) {
this->useFallbackBgColour = useFallback; this->useFallbackBgColour = useFallback;
this->bgColourFallback = colour; this->bgColourFallback = colour;
} }
// Address: 0x00012AE0 // Address: 0x00012AE0
// Matching: no // Status: unimplemented
RootExecObj::RootExecObj(GameObj * parent, GameObjIndex index, GameObjFlags flags) : RootExecObj::RootExecObj(GameObj * parent, GameObjIndex index, GameObjFlags flags) :
GameObj(parent, index, flags) { GameObj(parent, index, flags) {
} }
// Address: 0x00012BE0 // Address: 0x00012BE0
// Matching: no // Status: matching
RootExecObj::~RootExecObj() { RootExecObj::~RootExecObj() {
} }
// Address: 0x00012C10 // Address: 0x00012C10
// Matching: no // Status: unimplemented
void Game::initRootExecObj() { void Game::initRootExecObj() {
} }
// Address: 0x00012C80 // Address: 0x00012C80
// Matching: no // Status: unimplemented
void Game::drawList(GameObjFlags flagFilterAll, BOOL unknown) { void Game::drawList(GameObjFlags flagFilterAll, BOOL unknown) {
} }
// Address: 0x000131A0 // Address: 0x000131A0
// Matching: no // Status: nonmatching
void Game::sortDrawPriorityList() { void Game::sortDrawPriorityList() {
this->sortDrawPriorityListSingleLevel(0x00); this->sortDrawPriorityListSingleLevel(0x00);
this->sortDrawPriorityListSingleLevel(0x08); this->sortDrawPriorityListSingleLevel(0x08);
@ -557,23 +557,23 @@ void Game::sortDrawPriorityList() {
} }
// Address: 0x000131F0 // Address: 0x000131F0
// Matching: no // Status: unimplemented
void Game::drawObjs() { void Game::drawObjs() {
} }
// Address: 0x00013930 // Address: 0x00013930
// Matching: no // Status: unimplemented
void Game::draw() { void Game::draw() {
} }
// Address: 0x00013A80 // Address: 0x00013A80
// Matching: no // Status: unimplemented
void Game::frame() { void Game::frame() {
readInput(); readInput();
} }
// Address: 0x00013F80 // Address: 0x00013F80
// Matching: yes // Status: matching
int Game::mainLoop() { int Game::mainLoop() {
if (this->initState >= 0) while (true) { if (this->initState >= 0) while (true) {
if (!this->fatalErr) this->frame(); if (!this->fatalErr) this->frame();
@ -585,7 +585,7 @@ int Game::mainLoop() {
} }
// Address: 0x00013FC0 // Address: 0x00013FC0
// Matching: no // Status: nonmatching
void removeFromObjListByIndex(GameObjIndex index) { void removeFromObjListByIndex(GameObjIndex index) {
GameObj * obj = g_game->getObj(index); GameObj * obj = g_game->getObj(index);
if (obj != NULL) { if (obj != NULL) {

View file

@ -13,347 +13,347 @@ GameData g_gameData = GameData();
// Address: 0x00039B50 // Address: 0x00039B50
// Matching: no // Status: unimplemented
BOOL GameData::checkFlagCondition(unsigned cond) { BOOL GameData::checkFlagCondition(unsigned cond) {
return 0; return 0;
} }
// Address: 0x00039BE0 // Address: 0x00039BE0
// Matching: no // Status: unimplemented
void GameData::writeStateFlag(unsigned flagVal) { void GameData::writeStateFlag(unsigned flagVal) {
} }
// Address: 0x00039C70 // Address: 0x00039C70
// Matching: no // Status: unimplemented
void GameData::incrementChapter() { void GameData::incrementChapter() {
} }
// Address: 0x00039C80 // Address: 0x00039C80
// Matching: no // Status: unimplemented
void GameData::setMissionDigits34(unsigned val) { void GameData::setMissionDigits34(unsigned val) {
} }
// Address: 0x00039C90 // Address: 0x00039C90
// Matching: no // Status: unimplemented
void GameData::setSpawnPosIndex(unsigned val) { void GameData::setSpawnPosIndex(unsigned val) {
} }
// Address: 0x00039CA0 // Address: 0x00039CA0
// Matching: no // Status: unimplemented
unsigned GameData::getSpawnPosIndex() { unsigned GameData::getSpawnPosIndex() {
return 0; return 0;
} }
// Address: 0x00039CB0 // Address: 0x00039CB0
// Matching: no
void GameData::unlockCharacter(unsigned charId) { void GameData::unlockCharacter(unsigned charId) {
// Status: unimplemented
} }
// Address: 0x00039CF0 // Address: 0x00039CF0
// Matching: no
void GameData::lockCharacter(unsigned charId) { void GameData::lockCharacter(unsigned charId) {
// Status: unimplemented
} }
// Address: 0x00039D10 // Address: 0x00039D10
// Matching: no
BOOL GameData::characterUnlocked(unsigned charId) { BOOL GameData::characterUnlocked(unsigned charId) {
// Status: unimplemented
return 0; return 0;
} }
// Address: 0x00039D40 // Address: 0x00039D40
// Matching: no // Status: unimplemented
BOOL GameData::checkFlagConditions(unsigned * conds, unsigned count) { BOOL GameData::checkFlagConditions(unsigned * conds, unsigned count) {
return 0; return 0;
} }
// Address: 0x00039D80 // Address: 0x00039D80
// Matching: no // Status: unimplemented
void GameData::writeStateFlags(unsigned * writes, unsigned count) { void GameData::writeStateFlags(unsigned * writes, unsigned count) {
} }
// Address: 0x00039DB0 // Address: 0x00039DB0
// Matching: no // Status: unimplemented
BOOL GameData::checkFlagConditionUnpacked(FlagList flagList, unsigned index) { BOOL GameData::checkFlagConditionUnpacked(FlagList flagList, unsigned index) {
return 0; return 0;
} }
// Address: 0x00039DE0 // Address: 0x00039DE0
// Matching: no // Status: unimplemented
void GameData::writeStateFlagUnpacked(FlagList flagList, unsigned index, unsigned val) { void GameData::writeStateFlagUnpacked(FlagList flagList, unsigned index, unsigned val) {
} }
// Address: 0x00039E10 // Address: 0x00039E10
// Matching: no // Status: unimplemented
void GameData::setSoulSpawned(unsigned soulId) { void GameData::setSoulSpawned(unsigned soulId) {
} }
// Address: 0x00039E40 // Address: 0x00039E40
// Matching: no // Status: unimplemented
BOOL GameData::getSoulSpawned(unsigned soulId) { BOOL GameData::getSoulSpawned(unsigned soulId) {
return 0; return 0;
} }
// Address: 0x00039E80 // Address: 0x00039E80
// Matching: no // Status: unimplemented
void GameData::setSoulCollected(unsigned soulId) { void GameData::setSoulCollected(unsigned soulId) {
} }
// Address: 0x00039EB0 // Address: 0x00039EB0
// Matching: no // Status: unimplemented
BOOL GameData::getSoulHeld(unsigned soulId) { BOOL GameData::getSoulHeld(unsigned soulId) {
return 0; return 0;
} }
// Address: 0x00039EF0 // Address: 0x00039EF0
// Matching: no // Status: unimplemented
BOOL GameData::soulSpawnedUncollected(unsigned soulId) { BOOL GameData::soulSpawnedUncollected(unsigned soulId) {
return 0; return 0;
} }
// Address: 0x00039F40 // Address: 0x00039F40
// Matching: no // Status: unimplemented
void GameData::clearHeldSouls() { void GameData::clearHeldSouls() {
} }
// Address: 0x00039F60 // Address: 0x00039F60
// Matching: no // Status: unimplemented
void GameData::restoreHeldSouls() { void GameData::restoreHeldSouls() {
} }
// Address: 0x00039FD0 // Address: 0x00039FD0
// Matching: no // Status: unimplemented
unsigned GameData::getSoulCount() { unsigned GameData::getSoulCount() {
return 0; return 0;
} }
// Address: 0x0003A0A0 // Address: 0x0003A0A0
// Matching: no // Status: unimplemented
unsigned GameData::getTotalSoulsInStage(unsigned stageId) { unsigned GameData::getTotalSoulsInStage(unsigned stageId) {
return 0; return 0;
} }
// Address: 0x0003A130 // Address: 0x0003A130
// Matching: no // Status: unimplemented
unsigned GameData::getHeldSoulsInStage(unsigned stageId) { unsigned GameData::getHeldSoulsInStage(unsigned stageId) {
return 0; return 0;
} }
// Address: 0x0003A2B0 // Address: 0x0003A2B0
// Matching: no // Status: unimplemented
BOOL GameData::getSoulCollectedBySize(TagSize size, unsigned index) { BOOL GameData::getSoulCollectedBySize(TagSize size, unsigned index) {
return 0; return 0;
} }
// Address: 0x0003A2F0 // Address: 0x0003A2F0
// Matching: no // Status: unimplemented
void GameData::setUnusedPerStageBitmask(unsigned stageId, unsigned index) { void GameData::setUnusedPerStageBitmask(unsigned stageId, unsigned index) {
} }
// Address: 0x0003A340 // Address: 0x0003A340
// Matching: no // Status: unimplemented
int GameData::getTagState(unsigned stageId, unsigned tagIndex, BOOL rivalTag) { int GameData::getTagState(unsigned stageId, unsigned tagIndex, BOOL rivalTag) {
return 0; return 0;
} }
// Address: 0x0003A3A0 // Address: 0x0003A3A0
// Matching: no // Status: unimplemented
void GameData::setTagState(unsigned stageId, unsigned tagIndex, BOOL rivalTag, unsigned val) { void GameData::setTagState(unsigned stageId, unsigned tagIndex, BOOL rivalTag, unsigned val) {
} }
// Address: 0x0003A400 // Address: 0x0003A400
// Matching: no // Status: unimplemented
void GameData::setTagCovered(unsigned stageId, unsigned tagIndex, BOOL rivalTag, unsigned gangOrPlayer) { void GameData::setTagCovered(unsigned stageId, unsigned tagIndex, BOOL rivalTag, unsigned gangOrPlayer) {
} }
// Address: 0x0003A4A0 // Address: 0x0003A4A0
// Matching: no // Status: unimplemented
void GameData::setVolumeSettings(float volMusic, float volSfx) { void GameData::setVolumeSettings(float volMusic, float volSfx) {
} }
// Address: 0x0003A4C0 // Address: 0x0003A4C0
// Matching: no // Status: unimplemented
void GameData::getVolumeSettings(float * outMusic, float * outSfx) { void GameData::getVolumeSettings(float * outMusic, float * outSfx) {
} }
// Address: 0x0003A4E0 // Address: 0x0003A4E0
// Matching: no // Status: unimplemented
void GameData::setRumbleEnabled(BOOL val) { void GameData::setRumbleEnabled(BOOL val) {
} }
// Address: 0x0003A4F0 // Address: 0x0003A4F0
// Matching: no // Status: unimplemented
BOOL GameData::getRumbleEnabled() { BOOL GameData::getRumbleEnabled() {
return 0; return 0;
} }
// Address: 0x0003A500 // Address: 0x0003A500
// Matching: no // Status: unimplemented
void GameData::setGarageMusic(unsigned songId) { void GameData::setGarageMusic(unsigned songId) {
} }
// Address: 0x0003A510 // Address: 0x0003A510
// Matching: no // Status: unimplemented
unsigned GameData::getGarageMusic() { unsigned GameData::getGarageMusic() {
return 0; return 0;
} }
// Address: 0x0003A520 // Address: 0x0003A520
// Matching: no // Status: unimplemented
void GameData::setUnusedBitfield(unsigned index) { void GameData::setUnusedBitfield(unsigned index) {
} }
// Address: 0x0003A550 // Address: 0x0003A550
// Matching: no // Status: unimplemented
void GameData::setMiscObjective(unsigned index) { void GameData::setMiscObjective(unsigned index) {
} }
// Address: 0x0003A580 // Address: 0x0003A580
// Matching: no // Status: unimplemented
BOOL GameData::getMiscObjective(unsigned index) { BOOL GameData::getMiscObjective(unsigned index) {
return 0; return 0;
} }
// Address: 0x0003A5C0 // Address: 0x0003A5C0
// Matching: no // Status: unimplemented
unsigned GameData::countMiscObjectives() { unsigned GameData::countMiscObjectives() {
return 0; return 0;
} }
// Address: 0x0003A690 // Address: 0x0003A690
// Matching: no // Status: unimplemented
BOOL GameData::getHighScore(unsigned stageId, TestRunType type, unsigned rank, TestRunScore * out) { BOOL GameData::getHighScore(unsigned stageId, TestRunType type, unsigned rank, TestRunScore * out) {
return 0; return 0;
} }
// Address: 0x0003A750 // Address: 0x0003A750
// Matching: no // Status: unimplemented
void GameData::incrementTimer(Timer timer) { void GameData::incrementTimer(Timer timer) {
} }
// Address: 0x0003A780 // Address: 0x0003A780
// Matching: no // Status: unimplemented
unsigned GameData::getTimer(Timer timer) { unsigned GameData::getTimer(Timer timer) {
return 0; return 0;
} }
// Address: 0x0003A7B0 // Address: 0x0003A7B0
// Matching: no // Status: unimplemented
void GameData::setTimer(Timer timer, unsigned frames) { void GameData::setTimer(Timer timer, unsigned frames) {
} }
// Address: 0x0003A7F0 // Address: 0x0003A7F0
// Matching: no // Status: unimplemented
void GameData::setSelectedTag(unsigned gangOrPlayer, TagSize size, unsigned tagId, BOOL multiplayer) { void GameData::setSelectedTag(unsigned gangOrPlayer, TagSize size, unsigned tagId, BOOL multiplayer) {
} }
// Address: 0x0003A820 // Address: 0x0003A820
// Matching: no // Status: unimplemented
unsigned GameData::getSelectedTag(unsigned gangOrPlayer, TagSize size, BOOL multiplayer) { unsigned GameData::getSelectedTag(unsigned gangOrPlayer, TagSize size, BOOL multiplayer) {
return 0; return 0;
} }
// Address: 0x0003A840 // Address: 0x0003A840
// Matching: no // Status: unimplemented
void GameData::setCustomTagSelected(unsigned gangOrPlayer, TagSize size, BOOL active, BOOL multiplayer) { void GameData::setCustomTagSelected(unsigned gangOrPlayer, TagSize size, BOOL active, BOOL multiplayer) {
} }
// Address: 0x0003A870 // Address: 0x0003A870
// Matching: no // Status: unimplemented
BOOL GameData::getCustomTagSelected(unsigned gangOrPlayer, TagSize size, BOOL multiplayer) { BOOL GameData::getCustomTagSelected(unsigned gangOrPlayer, TagSize size, BOOL multiplayer) {
return 0; return 0;
} }
// Address: 0x0003A890 // Address: 0x0003A890
// Matching: no // Status: unimplemented
void GameData::setEventSeen(unsigned eventId) { void GameData::setEventSeen(unsigned eventId) {
} }
// Address: 0x0003A8C0 // Address: 0x0003A8C0
// Matching: no // Status: unimplemented
BOOL GameData::eventSeen(unsigned eventId) { BOOL GameData::eventSeen(unsigned eventId) {
return 0; return 0;
} }
// Address: 0x0003A900 // Address: 0x0003A900
// Matching: no // Status: unimplemented
void GameData::incrementPlaytime() { void GameData::incrementPlaytime() {
} }
// Address: 0x0003A910 // Address: 0x0003A910
// Matching: yes // Status: matching
unsigned GameData::getSaveDataSize() { unsigned GameData::getSaveDataSize() {
// 0x50 byte key + 0x3508 actual save data + 0x8 extra (why extra?) // 0x50 byte key + 0x3508 actual save data + 0x8 extra (why extra?)
return 0x50 + sizeof this->saveActive + 0x8; return 0x50 + sizeof this->saveActive + 0x8;
} }
// Address: 0x0003A920 // Address: 0x0003A920
// Matching: no // Status: unimplemented
BOOL GameData::decrypt(char * saveData) { BOOL GameData::decrypt(char * saveData) {
return 0; return 0;
} }
// Address: 0x0003AB60 // Address: 0x0003AB60
// Matching: no // Status: unimplemented
void GameData::encrypt(char * outSaveData) { void GameData::encrypt(char * outSaveData) {
} }
// Address: 0x0003AE00 // Address: 0x0003AE00
// Matching: no // Status: unimplemented
void GameData::getSaveDescription(SaveDescription * outDesc) { void GameData::getSaveDescription(SaveDescription * outDesc) {
} }
// Address: 0x0003AE20 // Address: 0x0003AE20
// Matching: no // Status: unimplemented
void GameData::clearStateFlags(FlagListOrPtr flagList) { void GameData::clearStateFlags(FlagListOrPtr flagList) {
} }
// Address: 0x0003AEA0 // Address: 0x0003AEA0
// Matching: no // Status: unimplemented
void GameData::resetTimer(Timer timer) { void GameData::resetTimer(Timer timer) {
} }
// Address: 0x0003AED0 // Address: 0x0003AED0
// Matching: no // Status: unimplemented
GameData::GameData() { GameData::GameData() {
} }
// Address: 0x0003B3C0 // Address: 0x0003B3C0
// Matching: no // Status: unimplemented
void GameData::resetSelectedTags() { void GameData::resetSelectedTags() {
} }
// Address: 0x0003B420 // Address: 0x0003B420
// Matching: no // Status: unimplemented
void GameData::resetExceptSettingsAndSouls() { void GameData::resetExceptSettingsAndSouls() {
} }
// Address: 0x0003B5A0 // Address: 0x0003B5A0
// Matching: no // Status: unimplemented
void GameData::resetExceptSettingsAndHighScores() { void GameData::resetExceptSettingsAndHighScores() {
} }
// Address: 0x0003B640 // Address: 0x0003B640
// Matching: no // Status: unimplemented
void GameData::resetExceptSettings() { void GameData::resetExceptSettings() {
} }
// Address: 0x0003B680 // Address: 0x0003B680
// Matching: no // Status: unimplemented
void GameData::stash() { void GameData::stash() {
} }
// Address: 0x0003B6A0 // Address: 0x0003B6A0
// Matching: no // Status: unimplemented
void GameData::stashRestoreExceptSpecialFlags() { void GameData::stashRestoreExceptSpecialFlags() {
} }
// Address: 0x0003B6F0 // Address: 0x0003B6F0
// Matching: no // Status: unimplemented
void GameData::stashRestoreExceptHighScores() { void GameData::stashRestoreExceptHighScores() {
} }
// Address: 0x0003B790 // Address: 0x0003B790
// Matching: no // Status: unimplemented
void GameData::stashRestore() { void GameData::stashRestore() {
} }
@ -361,6 +361,6 @@ void GameData::stashRestore() {
GameData::~GameData() {} GameData::~GameData() {}
// Address: 0x0003B7E0 // Address: 0x0003B7E0
// Matching: no // Status: unimplemented
void GameData::addHighScore(unsigned stageId, TestRunType type, TestRunScore * score) { void GameData::addHighScore(unsigned stageId, TestRunType type, TestRunScore * score) {
} }

View file

@ -13,7 +13,7 @@ Game * g_game;
// Address: 0x0006F9E0 // Address: 0x0006F9E0
// Matching: yes // Status: matching
void main(void) { void main(void) {
g_game = new Game(NULL, 0); g_game = new Game(NULL, 0);
g_game->initRootExecObj(); g_game->initRootExecObj();

View file

@ -19,7 +19,7 @@ Mat4 * g_matrices[3];
// Address: 0x001BB690 // Address: 0x001BB690
// Matching: yes // Status: matching
HRESULT __stdcall initMatrices(unsigned const count) { HRESULT __stdcall initMatrices(unsigned const count) {
/* Initialize the matrix stack with the given number of matrices. /* Initialize the matrix stack with the given number of matrices.
The requested number of matrices is rounded up to the nearest multiple of two. The requested number of matrices is rounded up to the nearest multiple of two.

View file

@ -17,7 +17,7 @@ DWORD __stdcall mainXapiStartup(LPVOID lpThreadParameter);
// Address: 0x00148023 // Address: 0x00148023
// Matching: no // Status: unimplemented
void __cdecl mainCRTStartup(void) { void __cdecl mainCRTStartup(void) {
/* The true entrypoint of the game, spawning a thread for the rest to run in /* The true entrypoint of the game, spawning a thread for the rest to run in
The linker automatically sets this function to the entrypoint. The linker automatically sets this function to the entrypoint.
@ -25,7 +25,7 @@ The linker automatically sets this function to the entrypoint.
} }
// Address: 0x00147FB4 // Address: 0x00147FB4
// Matching: no // Status: unimplemented
DWORD __stdcall mainXapiStartup(LPVOID const lpThreadParameter) { DWORD __stdcall mainXapiStartup(LPVOID const lpThreadParameter) {
/* Runs some initialization and then calls main() */ /* Runs some initialization and then calls main() */
main(); main();