Skip to content

Cheat sheet beta

This whole architecture section is new and hand-written against real source, but hasn't had many eyes on it yet - if something here looks wrong, it might be. See Introduction to PS2 architecture for the version of this that explains why, not just what.

Jump straight to the package for a task. core/ packages are always installed; world/ packages and standalone repos need libs:/adding as a dependency - see Packages.

I want to...Reach forNotes
Draw 2D/3D primitivesgsKit (tier: standalone) or ps2gl (standalone)Two different-shaped APIs over the same GS - see Graphics Synthesizer. Not both at once.
Move buffers to the GS/VU without stalling the CPUdmakit (world)Wraps DMA tags/chains - see DMA.
Do vector/matrix mathmath3d (core), ps2stuff (standalone)math3d is the base EE-side library; ps2stuff adds higher-level helpers.
Run code on VU1gsKit/ps2gl's own VU microprograms, or hand-written VCL/VU asmNo general-purpose "VU package" - see Vector Units.
Play a sound effect / stream musiclibsd, libspu2 (core, low-level); audsrv (standalone, LGPL, the easy path); libsnd2, rspu2drv, sdr (world, format-specific)See Audio for which layer to pick.
Decode MP3libmad (world)Pair with audsrv for playback.
Read a gamepadpad (core, EE-side RPC client) + padman (core, IOP driver, loaded automatically)See Controllers.
Read/write a memory cardmc (core, EE client) + mcman/mcserv (core, IOP drivers)mmceman (world) if you want a memory-card-emulator target instead of real hardware.
Read a save-data-formatted memory card (PFS)fs-osd/hdd-osd (core)PS2's real save-game filesystem, also used on HDD.
Read files off the disccdvd, cdvdfsv, cdfs (core)See Storage.
Talk to the networknetman + smap (core, IOP) + ps2ip (core, EE-side lwIP)See Networking - and the IOP-resident ps2ip-nm/smap-ps2ip alternative, a separate architecture.
Call from EE code into an IOP modulesifman/sifcmd (core)The SIF/RPC bridge - see EE, IOP, and SIF.
Patch in an unsupported syscall (e.g. LoadModuleBuffer)patches (core, source dir is named sbv)sbv_patch_enable_lmb() is the one nearly every non-trivial program calls.
Load fontsfreetype (standalone) + gskit-toolkit (world, wires it into gsKit's texture system)
Load PNG/JPEG imageslibpng (standalone), libjpeg_ps2_addons/libjpeg-turbo (world/standalone)
Compress/decompress datazlib (standalone), unzip (world)
Hash data (MD5/SHA/CRC32)hash (world)Generic, not PS2-specific.
Render ASCII-art graphicsaalib (world)
Decode MPEG2 videompeg (core)IPU/DMAC/MMI-accelerated - see DMA for the IPU's own two channels (fromIPU/toIPU).