CDVD N Commands

Parameters are in units of bytes and are little-endian. All N commands raise IRQ2 (bit 1 of CDVD I_STAT).

00h NOP

01h NOPsync

Params: None.

These commands do nothing? They do raise an IRQ upon their "completion".

02h Standby

Params: None.

Returns the read position to sector 0 and sets the drive status to PAUSED. Possibly also spins the drive if it's not spinning already?

03h Stop

Params: None.

Returns the read position to sector 0 and stops the drive. Seems to have a 166 ms delay?

04h Pause

Params: None.

Unknown what effect this has, from the perspective of emulation.

05h Seek

Params:

  • 0-3 Sector position

Moves the read position to the indicated parameter.

06h ReadCd

Params:

  • 0-3 Sector position
  • 4-7 Sectors to read
  • 10 Block size (1=2328 bytes, 2=2340 bytes, all others=2048 bytes)

Performs a CD-style read. Seems to raise bit 0 of CDVD I_STAT upon completion?

08h ReadDvd

Params:

  • 0-3 Sector position
  • 4-7 Sectors to read Performs a DVD-style read, with a block size of 2064 bytes. The format of the data is as follows:
offset size description
0 1 Volume number + 0x20
1 3 Sector number - volume start + 0x30000, in big-endian.
4 8 ? (all zeroes)
12 2048 Raw sector data
2060 4 ? (all zeroes)

09h GetToc

Params: None?

Fetches the ToC from the disk, with a block size of 2064 bytes.