Sly 1:Executable: Difference between revisions
Expanded on main and Startup functions, other minor tweaks
TheOnlyZac (talk | contribs) (→Game loop: Tweaked main game loop) |
TheOnlyZac (talk | contribs) (Expanded on main and Startup functions, other minor tweaks) |
||
Line 1:
'''SCUS_971.98''' is the [[executable]] for {{Sly 1}}. It is an ELF binary compiled for the PS2’s [[Wikipedia:Emotion Engine|Emotion Engine]] processor. The compiler is
▲'''SCUS_971.98''' is the [[executable]] for {{Sly 1}}. It is an ELF binary compiled for the PS2’s [[Wikipedia:Emotion Engine|Emotion Engine]] processor. The compiler is GCC v2.9-ee-991111b.<ref>Based on strings found in the May 2002 demo build</ref>
== Libraries ==
Line 38 ⟶ 37:
* '''libipu 2400''' – Image data Processor (IPU) library<ref name=":1" />
== Initialization and main loop ==
=== _start ===
The entry point for the executable is <code>_start</code>, which is provided by the PS2 SDK's <code>crt0.s</code>. It sets up the main thread, initializes the main thread's heap, and calls <code>main</code>.
=== main ===
The <code>main</code> function takes two parameters, <code>int cphzArgs</code> (the number of arguments) and <code>char** apchzArgs</code> (an array of arguments), which it stores as the the global variables <code>g_cphzArgs</code> and <code>g_apchzArgs</code> respectively. It calls <code>__main</code> and <code>Startup</code> to initialize the game engine, then begins the main loop.
====
<code>main</code>
==== Startup ====
<code>Startup</code> begins by calling <code>SetPhase</code>, setting <code>g_phase</code> to <code>PHASE::Startup</code>. It then iterates over an array of function pointers, called <code>StartupSampler</code>, and calls each one. The startup sampled contains the startup functions for many game subsystems, such as DMA, Thread, Codes, Screen, and Clock, and many more.
=== Game loop ===
|