/dev/di: Difference between revisions

From WiiBrew
Jump to navigation Jump to search
Crediar (talk | contribs)
started the page and added some ioctls
 
added the DI commands
Line 13: Line 13:


  DVDLowRead (Only works after DVDOpenPartition)
  DVDLowRead (Only works after DVDOpenPartition)
((u32*)inbuf)[0x00] = 0xD0000000
  ((u32*)inbuf)[0x01] = size;
  ((u32*)inbuf)[0x01] = size;
  ((u32*)inbuf)[0x02] = offset;
  ((u32*)inbuf)[0x02] = offset;
Line 18: Line 19:


  DVDLowUnencryptedRead
  DVDLowUnencryptedRead
((u32*)inbuf)[0x00] = 0x8D000000
  ((u32*)inbuf)[0x01] = size;
  ((u32*)inbuf)[0x01] = size;
  ((u32*)inbuf)[0x02] = offset;
  ((u32*)inbuf)[0x02] = offset;
Line 23: Line 25:


  DVDLowStopMotor
  DVDLowStopMotor
((u32*)inbuf)[0x00] = 0xE3000000
  ((u32*)inbuf)[0x01] = 0; // optional, unknown
  ((u32*)inbuf)[0x01] = 0; // optional, unknown
  ((u32*)inbuf)[0x02] = 0; // optional, unknown
  ((u32*)inbuf)[0x02] = 0; // optional, unknown
Line 28: Line 31:


  DVDLowReset
  DVDLowReset
((u32*)inbuf)[0x00] = 0x8A000000
  ((u32*)inbuf)[0x01] = 0x80000000; // not sure about that
  ((u32*)inbuf)[0x01] = 0x80000000; // not sure about that
  ios_ioctl( di_fd, inbuf[0x00], inbuf, 0x20, outbuf, 0x20);
  ios_ioctl( di_fd, inbuf[0x00], inbuf, 0x20, outbuf, 0x20);


  DVDLowReadDiskID
  DVDLowReadDiskID
((u32*)inbuf)[0x00] = 0x70000000
  ios_ioctl( di_fd, inbuf[0x00], inbuf, 0x20, dst, 0x20);
  ios_ioctl( di_fd, inbuf[0x00], inbuf, 0x20, dst, 0x20);

Revision as of 15:31, 19 March 2008

Through /dev/di you can control the DVD.

The inbuf size of all /dev/di IOS cmds must be 0x20

The first entry of the inbuf should(!) be the DI cmd, Starlet fixes it if it doesn't match.


DVDLowGetCoverStatus
ios_ioctl( di_fd, 0x88, inbuf, 0x20, outbuf, 0x20);
DVDLowRequestError
ios_ioctl( di_fd, 0x88, inbuf, 0x20, outbuf, 0x20);
DVDLowRead (Only works after DVDOpenPartition)
((u32*)inbuf)[0x00] = 0xD0000000
((u32*)inbuf)[0x01] = size;
((u32*)inbuf)[0x02] = offset;
ios_ioctl( di_fd, inbuf[0x00] ,inbuf, 0x20, dst, size);
DVDLowUnencryptedRead
((u32*)inbuf)[0x00] = 0x8D000000
((u32*)inbuf)[0x01] = size;
((u32*)inbuf)[0x02] = offset;
ios_ioctl( di_fd, inbuf[0x00], inbuf, 0x20, dst, size);
DVDLowStopMotor
((u32*)inbuf)[0x00] = 0xE3000000
((u32*)inbuf)[0x01] = 0;	// optional, unknown
((u32*)inbuf)[0x02] = 0;	// optional, unknown
ios_ioctl( di_fd, inbuf[0x00], inbuf, 0x20, outbuf, 0x20);
DVDLowReset
((u32*)inbuf)[0x00] = 0x8A000000
((u32*)inbuf)[0x01] = 0x80000000; // not sure about that
ios_ioctl( di_fd, inbuf[0x00], inbuf, 0x20, outbuf, 0x20);
DVDLowReadDiskID
((u32*)inbuf)[0x00] = 0x70000000
ios_ioctl( di_fd, inbuf[0x00], inbuf, 0x20, dst, 0x20);