Sly 1:Game state
Subsystem | |
---|---|
Description | Manages the current state of the game world |
Game | Sly Cooper and the Thievius Raccoonus |
Startup Function | 0x160070 |
Update Function | 1607d0 |
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.
Startup
The startup function, StartupGame
, only calls StartGame
.
StartGame
StartGame
calls UnloadGame
followed by WipeToWorldWarp
.
UnloadGame
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.
InitGameState
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.
Update
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 |