Skip to content

About this page

On this page

Controllers ​

This section is in beta. See the note on the cheat sheet.

Controller port peripherals (gamepads, multitaps and memory cards) share one physical bus: SIO2, a serial interface the IOP owns. They follow the pattern in EE, IOP, and SIF: an EE-side client library talks over SIF to an IOP driver, which is the only code that accesses the hardware.

SIO2 devices ​

sio2man (core) is the IOP-side driver for the SIO2 bus. padman, mtapman (multitap), and the memory-card drivers (see Storage) are separate IOP modules that sit on top of it, each owning one kind of device on the bus. On the EE side, pad, mtap and mc are the matching RPC clients your game code calls.

DeviceEE-side clientIOP-side driver
Gamepad (DualShock2)padpadman
Multitapmtapmtapman
Memory cardmcmcman/mcserv (see Storage)
Keyboardkbd(its own IOP USB driver)
Infrared remotermrmman

padman/mtapman/the memory-card drivers are loaded automatically when an EE program uses pad, mtap or mc.

USB devices ​

Keyboards, mice and USB storage do not use SIO2. They are reached through the IOP's USB stack (usbd and related modules), a separate hardware path from the controller ports. kbd's EE-side API resembles pad's (an RPC client to an IOP driver), but it talks to USB IOP modules.

See also ​