Skip to content
Snippets Groups Projects
Commit 5a39532b authored by Geo Ster's avatar Geo Ster
Browse files

Implement SIO2/PAD communication and CDVD commands

* Implementing IOP components is probably the hardest task in a PS2
emulator, even compared to complex chips like the VUs. That is because
almost every single component in the IOP is completetly undocumented
so emulators have to make assumptions and reverse engineer them to
figure out what they do. This commit adds support three new IOP components.

* The DVD drive is quite simple in concept. It accepts two types of
commands, S commands (synchronous) and N commands (asynchronous).
Async commands are used mainly for seeks and reads, so the CPU
doesn't have to wait for the drive to fetch the data. On the other
hand S commands complete instantly and are used for more misc
operations.

* Both types of commands contain three registers; one stores
the current command, the other acts as the status register and
the third register either gives the current command output
(read) or stores the parameters of the command (write).

* SIO2 is very peculiar since very little is actually known about it.
It is responsible for managing peripherals like the memory card or
the DualShock controller. The CPU first sends a peripheral byte that
informs about the target peripheral, then a command and waits for
a reply. The SEND3 array contains the command size for each SIO2 command.

* Since in this case the gamepad gets accessed, that needs to be implemented.
To prevent this commit message from getting extermely long, because the
gamepad is very complex in its operation, I will talk about it in another
time. Check out the new txt file in the docs folder for more info
parent df2591e9
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment