Sly 1:Game state

From SlyMods
Jump to navigation Jump to search
Game state
Click here to upload a new image.[[Media:|Dummy link]]
DescriptionManages the current state of the game world
GameSly Cooper and the Thievius Raccoonus
Startup Function0x160070
Update Function1607d0

Game state is the subsystem that manages the current state of the game world. It manages a global instance of the GS struct, which keeps track of things such as the quantity of keys, coins, and charms collected; unlocked powerups; which cutscenes have been watched; and more.


The startup function, StartupGame, only calls StartGame.


StartGame calls UnloadGame followed by WipeToWorldWarp.


UnloadGame is called during startup and during a level transition if the ClearGame transition flag is set. It calls InitGameState, OnDifficultyGameLoad, and RetryGame. It also disables cheat codes by setting g_grfcht to GRFCHT::None and it sets the stored value for the previous level ID to -1.


The InitGameState function at 1605e8 resets fields on the global g_gs instance to their defaults. Specifically, it sets the following values:

Field Value
gameworldCur GAMEWORLD::Intro
grfvault 0
gsv 0x12
cbThis 0x1a00
worldlevelCur WORLDLEVEL_2
clife 5
last_powerup -1

It then calls a function which resets the game settings to their defaults.


The update function, UpdateGameState, takes the current frame's dt as input and updates the play times on the global g_gs instance. Specifically, it adds the dt value to the current game play time (g_pgsCur->dt), the current world play time (g_wsCur->dt), and the current level play time (g_lsCur->dt). It does not call any other functions.

Global values

Address Type Name Description
g_pgsCur GS* 0x2623c0 Pointer to current game state
g_pwsCur WS* 0x2623c4 Pointer to current world state
g_plsCur LS* 0x2623c8 Pointer to current level state

See also