Sly 1:Executable

SCUS_971.98 is the executable for. It is an ELF binary compiled for the PS2’s Emotion Engine processor. The compiler is GCC v2.9-ee-991111b.

Shared libraries
These libary files are included on the disc alongside the game executable.


 * sio2man.irx – Manager Interface for joypads, multitaps and memory cards
 * padman.irx – Gamepad manager
 * mcman.irx – Memory card manager
 * mcserv.irx – Memory card server
 * libsd.irx – Sound library
 * 989snd.irx – Sound driver

Static libraries
These libraries are bundled with the executable and only referenced by name in some strings.


 * libkernl – PlayStation kernel library
 * libmc 2430 – Memory card library
 * libgraph 2400 – Graphics synthesizer library
 * libdma  2400 – Unknown
 * libcdvd 2420 – CD/DVD library
 * libpad  2410 – DualShock gamepad library
 * libipu  2400 – Image data Processor (IPU) library

Initialization and main loop
The entry point for the executable is. It sets up the main thread, initializes the main thread's heap, and calls. The  function takes two arguments,   (the number of arguments) and   (the array of arguments). It performs some initialization and begins the main game loop.

Initialization
starts by calling, a function that iterates over a function table and calls each function to initialize several game variables. Exeuction then returns to  which stores the passed parameters in   and   respectively. It then calls, a function which intializes even more game variables.

Game loop
The logic of the main game loop can be broken down as follows.


 * First, check if  has an MPEG queued to be played. If so:
 * – Call some graphics functions and swap the graphics synthesizer buffers
 * – Execute the MPEG on the global transition instance
 * Check if  has a pending transition . If so:
 * Call a function that calls  on the   instance
 * Check again if  has an MPEG queued to be played (this happens if two MPEGs were queued to play back-to-back) If so:
 * – Handle controller input
 * – Watch for cheat code inputs
 * – This function is not well understood, but saving the game is impossible without it
 * – Update the state of GUI blots
 * – Update the running timers on the game state structs
 * – If g_psw is not NULL...
 * – Setup some camera values to render the next frame
 * – Prepare to render the next frame
 * – Update the global clock values
 * Grab a function pointer from the  struct and execute it if it is not NULL (the function takes   as an argument)
 * – Render gameobjects on the current frame
 * – Render the gui elements on the current frame
 * – Draw the gameobjects on the frame
 * – Draw the gui elements on the frame
 * – Finish rendering the frame
 * – Increment the global frame counter
 * – Draw the gui elements on the frame
 * – Finish rendering the frame
 * – Increment the global frame counter

This loop continues infinitely unless  is called or a handled exception causes execution to halt, in which case you are immediately booted back to the PS2 BIOS.

Build strings
The executable contains the following strings generated during the build process.

jojo

08/24/02 22:06

0824.2206