Compare commits

...

3 commits

Author SHA1 Message Date
KeybadeBlox
cbcc22ec9d Fix contribution guide link 2026-01-12 09:51:56 -05:00
KeybadeBlox
fbc5619d6a Begin populating JSRF/GameData.hpp 2026-01-12 09:46:56 -05:00
KeybadeBlox
d11f2fd538 Delink JSRF/GameData 2026-01-11 20:46:54 -05:00
7 changed files with 269 additions and 35 deletions

View file

@ -6,5 +6,10 @@ all: src/JSRF/Jet2.obj
CL.EXE /nologo /Wall /TP /W3 /Ogityb0 /MT /GX /Fo$@ /c $< CL.EXE /nologo /Wall /TP /W3 /Ogityb0 /MT /GX /Fo$@ /c $<
# Header files used for each object # Header files used for each object
src/JSRF/Jet2.obj: src/JSRF/Core.hpp src/XDK/D3D.hpp src/XDK/Win32.hpp\ src/JSRF/Jet2.obj: src/JSRF/Core.hpp src/Std.hpp src/XDK/D3D.hpp\
src/Std.hpp src/XDK/Win32.hpp
src/JSRF/Core.obj: src/JSRF/Core.hpp src/Smilebit/MMatrix.hpp src/Std.hpp\
src/XDK/D3D.hpp src/XDK/Win32.hpp
src/JSRF/GameData.obj: src/JSRF/GameData.hpp

View file

@ -117,6 +117,18 @@
"RootExecObj::~RootExecObj": "??1RootExecObj@@UAE@XZ", "RootExecObj::~RootExecObj": "??1RootExecObj@@UAE@XZ",
"removeFromObjListByIndex": "?removeFromObjListByIndex@@YAXW4GameObjIndex@@@Z" "removeFromObjListByIndex": "?removeFromObjListByIndex@@YAXW4GameObjIndex@@@Z"
} }
},
{
"name": "JSRF/GameData",
"target_path": "target/JSRF/GameData.obj",
"base_path": "src/JSRF/GameData.obj",
"metadata": {
"complete": false,
"source_path": "src/JSRF/GameData.cpp"
},
"symbol_mappings": {
"GameData::`scalar_deleting_destructor'": "??_GGameData@@UAEPAXI@Z"
}
} }
] ]
} }

View file

@ -0,0 +1,10 @@
/* JSRF Decompilation: JSRF/GameData.hpp
Save data and closely-related runtime data.
*/
#pragma bss_seg(".data")
#include "GameData.hpp"
GameData g_gameData = GameData();

View file

@ -0,0 +1,164 @@
/* JSRF Decompilation: JSRF/GameData.hpp
Save data and closely-related runtime data.
*/
#ifndef GAMEDATA_HPP
#define GAMEDATA_HPP
#include "../XDK/Win32.hpp"
// 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;
unsigned 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 };
// Save data-ish data structure used at runtime
extern 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 (unsigned charId);
void lockCharacter (unsigned charId);
BOOL characterUnlocked (unsigned 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);
unsigned setSoulCollectedBySize(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);
GameData();
virtual ~GameData();
} g_gameData;
#endif

View file

@ -1,5 +1,6 @@
Object,Delink?,.text,.text$x,D3D,DSOUND,MMATRIX,XGRPH,XPP,.rdata,.rdata$x,.data,DOLBY Object,Delink?,.text,.text$x,D3D,DSOUND,MMATRIX,XGRPH,XPP,.rdata,.rdata$x,.data,DOLBY
JSRF/Core.obj,true,0x00011000-0x00013FEB,0x00186BA0-0x00186C14,,,,,,0x001C4390-0x001C44F9,0x001E4D20-0x001E4DAB,0x001EB880-0x001EB933, JSRF/Core.obj,true,0x00011000-0x00013FEB,0x00186BA0-0x00186C14,,,,,,0x001C4390-0x001C44F9,0x001E4D20-0x001E4DAB,0x001EB880-0x001EB933,
JSRF/GameData.obj,true,0x00039B50-0x0003B937,,,,,,,0x001CA16C-0x001CA3DB,,0x001EFC88-0x001F7047,
JSRF/Jet2.obj,true,0x0006F9E0-0x0006FA6F,0x00187710-0x00187724,,,,,,,0x001E620C-0x001E622F,0x0022FCE0-0x0022FCE3, JSRF/Jet2.obj,true,0x0006F9E0-0x0006FA6F,0x00187710-0x00187724,,,,,,,0x001E620C-0x001E622F,0x0022FCE0-0x0022FCE3,
ADX (need to decompose),false,0x0013A570-0x0014555F,?,,,,,,?,?,?, ADX (need to decompose),false,0x0013A570-0x0014555F,?,,,,,,?,?,?,
XDK Core (need to decompose),false,0x00145560-0x0014B79F,?,,,,,,?,?,?, XDK Core (need to decompose),false,0x00145560-0x0014B79F,?,,,,,,?,?,?,
@ -11,4 +12,4 @@ Direct3D8 (need to decompose),false,,,0x0018CB40-0x0019E334,,,,,?,?,?,
DirectSound8 (need to decompose),false,,,,0x0019E340-0x001BA89B,,,,?,?,?,0x0027E080-0x00284E17 DirectSound8 (need to decompose),false,,,,0x0019E340-0x001BA89B,,,,?,?,?,0x0027E080-0x00284E17
MMatrix.obj,false,,,,,0x001BA8A0-0x001BBAAF,,,,,0x00264BD8-0x00264C13, MMatrix.obj,false,,,,,0x001BA8A0-0x001BBAAF,,,,,0x00264BD8-0x00264C13,
Xgraphics (need to decompose),false,,,,,,0x001BBAC0-0x001BC7BB,,,,, Xgraphics (need to decompose),false,,,,,,0x001BBAC0-0x001BC7BB,,,,,
XDK Peripherals,false,,,,,,,0x001BC7C0-0x001C3F57,,,, XDK Peripherals (need to decompose),false,,,,,,,0x001BC7C0-0x001C3F57,,,,

1 Object Delink? .text .text$x D3D DSOUND MMATRIX XGRPH XPP .rdata .rdata$x .data DOLBY
2 JSRF/Core.obj true 0x00011000-0x00013FEB 0x00186BA0-0x00186C14 0x001C4390-0x001C44F9 0x001E4D20-0x001E4DAB 0x001EB880-0x001EB933
3 JSRF/GameData.obj true 0x00039B50-0x0003B937 0x001CA16C-0x001CA3DB 0x001EFC88-0x001F7047
4 JSRF/Jet2.obj true 0x0006F9E0-0x0006FA6F 0x00187710-0x00187724 0x001E620C-0x001E622F 0x0022FCE0-0x0022FCE3
5 ADX (need to decompose) false 0x0013A570-0x0014555F ? ? ? ?
6 XDK Core (need to decompose) false 0x00145560-0x0014B79F ? ? ? ?
12 DirectSound8 (need to decompose) false 0x0019E340-0x001BA89B ? ? ? 0x0027E080-0x00284E17
13 MMatrix.obj false 0x001BA8A0-0x001BBAAF 0x00264BD8-0x00264C13
14 Xgraphics (need to decompose) false 0x001BBAC0-0x001BC7BB
15 XDK Peripherals XDK Peripherals (need to decompose) false 0x001BC7C0-0x001C3F57

View file

@ -24,8 +24,8 @@ destructChildren 00011b90 f
getParent 00011bd0 f getParent 00011bd0 f
removeFromObjList 00011be0 f removeFromObjList 00011be0 f
removeChildrenFromObjList 00011c20 f removeChildrenFromObjList 00011c20 f
nopDraw 00011c80 f nopMethod1Arg 00011c80 f
nopExec 00011c90 f nopMethod0Arg 00011c90 f
copySomeVectors 00011ca0 f copySomeVectors 00011ca0 f
`scalar_deleting_destructor' 00011ce0 f `scalar_deleting_destructor' 00011ce0 f
recursivePostExecDefault 00011d00 f recursivePostExecDefault 00011d00 f
@ -49,7 +49,7 @@ setEventNextFrame 000126f0 f
setFreezeCamNextFrame 00012710 f setFreezeCamNextFrame 00012710 f
setUncoveredPauseNextFrame 00012730 f setUncoveredPauseNextFrame 00012730 f
enableDrawChildren 00012750 f enableDrawChildren 00012750 f
setSkipDraw 00012760 f enableSkipDraw 00012760 f
fatal 00012770 f fatal 00012770 f
setDrawMode 000127b0 f setDrawMode 000127b0 f
setGlobal 000127c0 f setGlobal 000127c0 f
@ -200,7 +200,7 @@ readMissionDat 00030850 f
readPeople 00031160 f readPeople 00031160 f
readCurrentPlayer 000320a0 f readCurrentPlayer 000320a0 f
readPlayer 00032c70 f readPlayer 00032c70 f
return1 00033800 f methodReturnTrue 00033800 f
initProgress 00033870 f initProgress 00033870 f
getProgress 000338a0 f getProgress 000338a0 f
readProgress 00033a80 f readProgress 00033a80 f
@ -239,31 +239,59 @@ checkFlagConditions 00039d40 f
writeStateFlags 00039d80 f writeStateFlags 00039d80 f
checkFlagConditionUnpacked 00039db0 f checkFlagConditionUnpacked 00039db0 f
writeStateFlagUnpacked 00039de0 f writeStateFlagUnpacked 00039de0 f
setGraffitiSoulSpawned 00039e10 f setSoulSpawned 00039e10 f
getGraffitiSoulSpawned 00039e40 f getSoulSpawned 00039e40 f
giveSoul 00039e80 f setSoulCollected 00039e80 f
clearCollectedSouls 00039f40 f getSoulHeld 00039eb0 f
restoreCollectedSouls 00039f60 f soulSpawnedUncollected 00039ef0 f
clearHeldSouls 00039f40 f
restoreHeldSouls 00039f60 f
getSoulCount 00039fd0 f getSoulCount 00039fd0 f
setSomeSoulCollected 0003a2f0 f getTotalSoulsInStage 0003a0a0 f
getSomeCollectedSouls 0003a340 f getHeldSoulsInStage 0003a130 f
setSomeCollectedSouls 0003a3a0 f setSoulCollectedBySize 0003a2b0 f
setSomeCollectedSoulsRepeating 0003a400 f setUnusedPerStageBitmask 0003a2f0 f
getTagState 0003a340 f
setTagState 0003a3a0 f
setTagCovered 0003a400 f
setVolumeSettings 0003a4a0 f
getVolumeSettings 0003a4c0 f getVolumeSettings 0003a4c0 f
setRumbleEnabled 0003a4e0 f
getRumbleEnabled 0003a4f0 f
setGarageMusic 0003a500 f setGarageMusic 0003a500 f
getGarageMusic 0003a510 f getGarageMusic 0003a510 f
incrementSomeFrameCount 0003a750 f setUnusedBitfield 0003a520 f
getSomeFrameCount_MAYBE 0003a780 f setMiscObjective 0003a550 f
setSomeFrameCountToSeconds 0003a7b0 f getMiscObjective 0003a580 f
countMiscObjectives 0003a5c0 f
getHighScore 0003a690 f
incrementTimer 0003a750 f
getTimer 0003a780 f
setTimer 0003a7b0 f
setSelectedTag 0003a7f0 f
getSelectedTag 0003a820 f
setCustomTagSelected 0003a840 f
getCustomTagSelected 0003a870 f
setEventSeen 0003a890 f setEventSeen 0003a890 f
eventSeen 0003a8c0 f eventSeen 0003a8c0 f
incrementPlaytime 0003a900 f incrementPlaytime 0003a900 f
getSomeConstant 0003a910 f getSaveDataSize 0003a910 f
decrypt 0003a920 f
encrypt 0003ab60 f
getSaveDescription 0003ae00 f
clearStateFlags 0003ae20 f clearStateFlags 0003ae20 f
setFrameCountToZero 0003aea0 f resetTimer 0003aea0 f
SaveData 0003aed0 f GameData 0003aed0 f
setSomeArrayValues 0003b3c0 f resetSelectedTags 0003b3c0 f
~SaveData 0003b7c0 f resetExceptSettingsAndSouls 0003b420 f
resetExceptSettingsAndHighScores 0003b5a0 f
resetExceptSettings 0003b640 f
stash 0003b680 f
stashRestoreExceptSpecialFlags 0003b6a0 f
stashRestoreExceptHighScores 0003b6f0 f
stashRestore 0003b790 f
`scalar_deleting_destructor' 0003b7c0 f
addHighScore 0003b7e0 f
UnknownAllocated_0x1166 0003c150 f UnknownAllocated_0x1166 0003c150 f
~TextRenderer_MAYBE 0003c2b0 f ~TextRenderer_MAYBE 0003c2b0 f
draw 0003c310 f draw 0003c310 f
@ -415,6 +443,7 @@ showProblemWithDisc 0006f730 f
showSaveLoadErr 0006f760 f showSaveLoadErr 0006f760 f
~UnknownStatic27 0006f9c0 f ~UnknownStatic27 0006f9c0 f
_main 0006f9e0 f _main 0006f9e0 f
resetHighScores 00077400 f
~UnknownAllocated_0x1167_2 000780f0 f ~UnknownAllocated_0x1167_2 000780f0 f
UnknownAllocated_0x1167_2 00078520 f UnknownAllocated_0x1167_2 00078520 f
_~UnknownAllocated_0x1167_2 000789d0 f _~UnknownAllocated_0x1167_2 000789d0 f
@ -455,7 +484,7 @@ SomePlayerStateChild 00084200 f
~UnknownObj_0x50 00085410 f ~UnknownObj_0x50 00085410 f
_~UnknownObj_0x50 00086180 f _~UnknownObj_0x50 00086180 f
dealDamage_MAYBE 00092ff0 f dealDamage_MAYBE 00092ff0 f
return0 00093ce0 f methodReturn0 00093ce0 f
setTired_MAYBE 0009bd90 f setTired_MAYBE 0009bd90 f
~PlayerCamera 000a2820 f ~PlayerCamera 000a2820 f
draw 000a2960 f draw 000a2960 f
@ -835,7 +864,7 @@ initUnknownStatic04 0018ad20 f
initUnknownStatic05 0018ad30 f initUnknownStatic05 0018ad30 f
initUnknownStatic06 0018ad40 f initUnknownStatic06 0018ad40 f
initUnknownStatic07 0018ad50 f initUnknownStatic07 0018ad50 f
initSaveData 0018ad60 f initGameData 0018ad60 f
initUnknownStatic09 0018ad80 f initUnknownStatic09 0018ad80 f
initUnknownStatic10 0018ada0 f initUnknownStatic10 0018ada0 f
initUnknownStatic11 0018adb0 f initUnknownStatic11 0018adb0 f
@ -875,7 +904,7 @@ initUnknownStatic44 0018c5b0 f
initUnknownStatic45 0018c6f0 f initUnknownStatic45 0018c6f0 f
initUnknownStatic46 0018c810 f initUnknownStatic46 0018c810 f
~UnknownStatic06 0018c980 f ~UnknownStatic06 0018c980 f
~SaveData 0018c9a0 f ~GameData 0018c9a0 f
~UnknownStatic13 0018c9f0 f ~UnknownStatic13 0018c9f0 f
~GraphicsSettings 0018caa0 f ~GraphicsSettings 0018caa0 f
~UnknownStatic25 0018caf0 f ~UnknownStatic25 0018caf0 f
@ -941,7 +970,7 @@ vtable 001c4d50 l
vtable 001c4d58 l vtable 001c4d58 l
vtable 001c4f68 l vtable 001c4f68 l
vtable 001ca168 l vtable 001ca168 l
vtable 001ca3d8 l `vftable' 001ca3d8 l
vtable 001ca440 l vtable 001ca440 l
vtable 001ca4c8 l vtable 001ca4c8 l
vtable 001ca508 l vtable 001ca508 l
@ -1025,6 +1054,7 @@ drawFuncArgs 001eb880 l
g_unknownStatic02 001eb994 l g_unknownStatic02 001eb994 l
g_unknownStatic04 001ebaa8 l g_unknownStatic04 001ebaa8 l
g_unknownStatic05 001ebabc l g_unknownStatic05 001ebabc l
g_soundBanks 001ebe00 l
g_unknownStatic06 001ec050 l g_unknownStatic06 001ec050 l
fileInitializers 001ec068 l fileInitializers 001ec068 l
fileReaders 001ec0f0 l fileReaders 001ec0f0 l
@ -1034,6 +1064,7 @@ fileFreers 001ec288 l
enemyFilenames 001ec310 l enemyFilenames 001ec310 l
enemyInitializers 001ec370 l enemyInitializers 001ec370 l
enemySoundEffectMapping 001ec3d0 l enemySoundEffectMapping 001ec3d0 l
g_MarkPressTextFilenames 001ee218 l
playerFilenames 001ee5f8 l playerFilenames 001ee5f8 l
animationsMap 001ee658 l animationsMap 001ee658 l
playerSoundFilenameIdMap 001ee6b8 l playerSoundFilenameIdMap 001ee6b8 l
@ -1041,10 +1072,15 @@ animationsNames 001ee718 l
talkEventMapping 001eeb6c l talkEventMapping 001eeb6c l
logoFilenames 001efc5c l logoFilenames 001efc5c l
g_unknownStatic07 001efc74 l g_unknownStatic07 001efc74 l
someStageSoulMapping 001efc88 l g_stageIdToStageIndex 001efc88 l
g_saveData 001effb0 l g_defaultHeldSouls 001efd78 l
g_defaultSpawnedSouls 001efdc8 l
g_defaultSelectedTags 001efe68 l
g_unusedDebugStrings 001efeb8 l
g_gameData 001effb0 l
someJaTextParameter 001f8b30 l someJaTextParameter 001f8b30 l
someSpaceTextParameter 001f8b58 l someSpaceTextParameter 001f8b58 l
g_soullIdToStageIndex 001f8c38 l
fullscreenViewport 001f90b0 l fullscreenViewport 001f90b0 l
g_unknownStatic13PartDefault 001f9358 l g_unknownStatic13PartDefault 001f9358 l
g_unknownStatic13 001f93c8 l g_unknownStatic13 001f93c8 l
@ -1090,6 +1126,11 @@ stageNames 0021ba68 l
charNamesJa 0021ba80 l charNamesJa 0021ba80 l
charNamesEn 0021bae0 l charNamesEn 0021bae0 l
charNames 0021bc60 l charNames 0021bc60 l
g_stageIds 0021c098 l
g_jetGraffitiStageIds 0021c0f8 l
g_jetTechStageIds 0021c12c l
g_jetDashStageIds 0021c160 l
g_jetFlagStageIds 0021c194 l
stageToCharIdArrayIndex_MAYBE 0021c1fc l stageToCharIdArrayIndex_MAYBE 0021c1fc l
tagIdsPoisonJam 0021c234 l tagIdsPoisonJam 0021c234 l
tagIdsImmortals 0021c248 l tagIdsImmortals 0021c248 l
@ -1131,6 +1172,7 @@ g_criticalSections 0022eeb8 l
g_game 0022fce0 l g_game 0022fce0 l
g_collisionManager 0022fce8 l g_collisionManager 0022fce8 l
g_unknownStatic09 002314b0 l g_unknownStatic09 002314b0 l
g_genericScratch 00231d40 l
g_objectCount 00251d40 l g_objectCount 00251d40 l
g_textureOps 00251d44 l g_textureOps 00251d44 l
g_texIndexPerStage 00251d54 l g_texIndexPerStage 00251d54 l

1 ~GameObj 00011000 f
24 getParent 00011bd0 f
25 removeFromObjList 00011be0 f
26 removeChildrenFromObjList 00011c20 f
27 nopDraw nopMethod1Arg 00011c80 f
28 nopExec nopMethod0Arg 00011c90 f
29 copySomeVectors 00011ca0 f
30 `scalar_deleting_destructor' 00011ce0 f
31 recursivePostExecDefault 00011d00 f
49 setFreezeCamNextFrame 00012710 f
50 setUncoveredPauseNextFrame 00012730 f
51 enableDrawChildren 00012750 f
52 setSkipDraw enableSkipDraw 00012760 f
53 fatal 00012770 f
54 setDrawMode 000127b0 f
55 setGlobal 000127c0 f
200 readPeople 00031160 f
201 readCurrentPlayer 000320a0 f
202 readPlayer 00032c70 f
203 return1 methodReturnTrue 00033800 f
204 initProgress 00033870 f
205 getProgress 000338a0 f
206 readProgress 00033a80 f
239 writeStateFlags 00039d80 f
240 checkFlagConditionUnpacked 00039db0 f
241 writeStateFlagUnpacked 00039de0 f
242 setGraffitiSoulSpawned setSoulSpawned 00039e10 f
243 getGraffitiSoulSpawned getSoulSpawned 00039e40 f
244 giveSoul setSoulCollected 00039e80 f
245 clearCollectedSouls getSoulHeld 00039f40 00039eb0 f
246 restoreCollectedSouls soulSpawnedUncollected 00039f60 00039ef0 f
247 clearHeldSouls 00039f40 f
248 restoreHeldSouls 00039f60 f
249 getSoulCount 00039fd0 f
250 setSomeSoulCollected getTotalSoulsInStage 0003a2f0 0003a0a0 f
251 getSomeCollectedSouls getHeldSoulsInStage 0003a340 0003a130 f
252 setSomeCollectedSouls setSoulCollectedBySize 0003a3a0 0003a2b0 f
253 setSomeCollectedSoulsRepeating setUnusedPerStageBitmask 0003a400 0003a2f0 f
254 getTagState 0003a340 f
255 setTagState 0003a3a0 f
256 setTagCovered 0003a400 f
257 setVolumeSettings 0003a4a0 f
258 getVolumeSettings 0003a4c0 f
259 setRumbleEnabled 0003a4e0 f
260 getRumbleEnabled 0003a4f0 f
261 setGarageMusic 0003a500 f
262 getGarageMusic 0003a510 f
263 incrementSomeFrameCount setUnusedBitfield 0003a750 0003a520 f
264 getSomeFrameCount_MAYBE setMiscObjective 0003a780 0003a550 f
265 setSomeFrameCountToSeconds getMiscObjective 0003a7b0 0003a580 f
266 countMiscObjectives 0003a5c0 f
267 getHighScore 0003a690 f
268 incrementTimer 0003a750 f
269 getTimer 0003a780 f
270 setTimer 0003a7b0 f
271 setSelectedTag 0003a7f0 f
272 getSelectedTag 0003a820 f
273 setCustomTagSelected 0003a840 f
274 getCustomTagSelected 0003a870 f
275 setEventSeen 0003a890 f
276 eventSeen 0003a8c0 f
277 incrementPlaytime 0003a900 f
278 getSomeConstant getSaveDataSize 0003a910 f
279 decrypt 0003a920 f
280 encrypt 0003ab60 f
281 getSaveDescription 0003ae00 f
282 clearStateFlags 0003ae20 f
283 setFrameCountToZero resetTimer 0003aea0 f
284 SaveData GameData 0003aed0 f
285 setSomeArrayValues resetSelectedTags 0003b3c0 f
286 ~SaveData resetExceptSettingsAndSouls 0003b7c0 0003b420 f
287 resetExceptSettingsAndHighScores 0003b5a0 f
288 resetExceptSettings 0003b640 f
289 stash 0003b680 f
290 stashRestoreExceptSpecialFlags 0003b6a0 f
291 stashRestoreExceptHighScores 0003b6f0 f
292 stashRestore 0003b790 f
293 `scalar_deleting_destructor' 0003b7c0 f
294 addHighScore 0003b7e0 f
295 UnknownAllocated_0x1166 0003c150 f
296 ~TextRenderer_MAYBE 0003c2b0 f
297 draw 0003c310 f
443 showSaveLoadErr 0006f760 f
444 ~UnknownStatic27 0006f9c0 f
445 _main 0006f9e0 f
446 resetHighScores 00077400 f
447 ~UnknownAllocated_0x1167_2 000780f0 f
448 UnknownAllocated_0x1167_2 00078520 f
449 _~UnknownAllocated_0x1167_2 000789d0 f
484 ~UnknownObj_0x50 00085410 f
485 _~UnknownObj_0x50 00086180 f
486 dealDamage_MAYBE 00092ff0 f
487 return0 methodReturn0 00093ce0 f
488 setTired_MAYBE 0009bd90 f
489 ~PlayerCamera 000a2820 f
490 draw 000a2960 f
864 initUnknownStatic05 0018ad30 f
865 initUnknownStatic06 0018ad40 f
866 initUnknownStatic07 0018ad50 f
867 initSaveData initGameData 0018ad60 f
868 initUnknownStatic09 0018ad80 f
869 initUnknownStatic10 0018ada0 f
870 initUnknownStatic11 0018adb0 f
904 initUnknownStatic45 0018c6f0 f
905 initUnknownStatic46 0018c810 f
906 ~UnknownStatic06 0018c980 f
907 ~SaveData ~GameData 0018c9a0 f
908 ~UnknownStatic13 0018c9f0 f
909 ~GraphicsSettings 0018caa0 f
910 ~UnknownStatic25 0018caf0 f
970 vtable 001c4d58 l
971 vtable 001c4f68 l
972 vtable 001ca168 l
973 vtable `vftable' 001ca3d8 l
974 vtable 001ca440 l
975 vtable 001ca4c8 l
976 vtable 001ca508 l
1054 g_unknownStatic02 001eb994 l
1055 g_unknownStatic04 001ebaa8 l
1056 g_unknownStatic05 001ebabc l
1057 g_soundBanks 001ebe00 l
1058 g_unknownStatic06 001ec050 l
1059 fileInitializers 001ec068 l
1060 fileReaders 001ec0f0 l
1064 enemyFilenames 001ec310 l
1065 enemyInitializers 001ec370 l
1066 enemySoundEffectMapping 001ec3d0 l
1067 g_MarkPressTextFilenames 001ee218 l
1068 playerFilenames 001ee5f8 l
1069 animationsMap 001ee658 l
1070 playerSoundFilenameIdMap 001ee6b8 l
1072 talkEventMapping 001eeb6c l
1073 logoFilenames 001efc5c l
1074 g_unknownStatic07 001efc74 l
1075 someStageSoulMapping g_stageIdToStageIndex 001efc88 l
1076 g_saveData g_defaultHeldSouls 001effb0 001efd78 l
1077 g_defaultSpawnedSouls 001efdc8 l
1078 g_defaultSelectedTags 001efe68 l
1079 g_unusedDebugStrings 001efeb8 l
1080 g_gameData 001effb0 l
1081 someJaTextParameter 001f8b30 l
1082 someSpaceTextParameter 001f8b58 l
1083 g_soullIdToStageIndex 001f8c38 l
1084 fullscreenViewport 001f90b0 l
1085 g_unknownStatic13PartDefault 001f9358 l
1086 g_unknownStatic13 001f93c8 l
1126 charNamesJa 0021ba80 l
1127 charNamesEn 0021bae0 l
1128 charNames 0021bc60 l
1129 g_stageIds 0021c098 l
1130 g_jetGraffitiStageIds 0021c0f8 l
1131 g_jetTechStageIds 0021c12c l
1132 g_jetDashStageIds 0021c160 l
1133 g_jetFlagStageIds 0021c194 l
1134 stageToCharIdArrayIndex_MAYBE 0021c1fc l
1135 tagIdsPoisonJam 0021c234 l
1136 tagIdsImmortals 0021c248 l
1172 g_game 0022fce0 l
1173 g_collisionManager 0022fce8 l
1174 g_unknownStatic09 002314b0 l
1175 g_genericScratch 00231d40 l
1176 g_objectCount 00251d40 l
1177 g_textureOps 00251d44 l
1178 g_texIndexPerStage 00251d54 l

View file

@ -2,9 +2,9 @@
A matching decompilation of the Xbox game Jet Set Radio Future. A matching decompilation of the Xbox game Jet Set Radio Future.
## Progress ## Progress
- Delinking progress: 0.52% (13263 out of 2574172 bytes in XBE address space) - Delinking progress: 1.02% (26325 out of 2574172 bytes in XBE address space)
- Decompilation progress: 30.6% (30 out of the 98 functions delinked so far) - Decompilation progress: 18.3% (30 out of the 164 functions delinked so far)
- **Estimated total progress: 0.16%** (previous two multiplied together) - **Estimated total progress: 0.19%** (previous two multiplied together)
## Roadmap ## Roadmap
The approach of this decompilation is to: The approach of this decompilation is to:
@ -24,7 +24,7 @@ linker from the same Visual C++ 7.0 already used to compile object files. Step
## Contributing ## Contributing
Anybody interested in joining the effort is welcome to read the Anybody interested in joining the effort is welcome to read the
[contribution guide](contributing.md). Those looking to get in contact with [contribution guide](documentation/gettingstarted.md). Those looking to get in
other contributors can post to contact with other contributors can post to
[the repository's issue tracker](https://codeberg.org/KeybadeBlox/JSRF-Decompilation/issues) [the repository's issue tracker](https://codeberg.org/KeybadeBlox/JSRF-Decompilation/issues)
or join the [JSRF Reverse Engineering Discord](https://discord.gg/kYEm5jz). or join the [JSRF Reverse Engineering Discord](https://discord.gg/kYEm5jz).