change PAD_ScanPads()s behaviour. the return value now contains a bitmask of the...
[libogc.git] / libdi / README
blob1121de24af395eb22b81074b034d2e80e662b449
1 =====================================================================
2 ==      libdi by Team Twiizers.
3 ==      
4 ==
5 =====================================================================
7 libdi is a threadsafe library that allows you to access the DVD drive
8 in your Wii, regardless of a modchip being installed or not.
10 -----------
11 -- INSTALL
12 -----------
14 To install the lib, simply type
16 make
17 make install
19 This will install the lib into your libogc.
21 -----------
22 -- USAGE
23 -----------
25 Usage is fairly self-explanatory, aside from DI_Init. You can set
26 a callback using DI_SetCallback, which will be called upon completion
27 of the disc initialization. This callback runs in the regular callback
28 context.
30 After this initial init, you call DI_Mount to spin the drive up. There is
31 no need for unmounting, you can just eject the disc any time you want.
32 Remounting with DI_Mount is necessary however. Calling DI_Mount is also
33 helpful as a last resort for failing reads.
35 Async reads are implemented in the lib using the standard async ioctls.
36 You can pass an ipccallback function, of which the usrdata will be filled
37 with the buffer you pass. Async reads do not have the advantage of auto-retries.
38 You will have to check wether a read succeeds or not in your callback.
40 Sync reads do have auto-retry, and the lib will try up to MAX_RETRY amount
41 of times before it gives up. Dirty discs can need up to 10 retries
42 before data is actually properly read. By default MAX_RETRY is set to 16.
44 Most of the functions in this lib are universal and can be used on modchipped
45 or non-modchipped drives alike. Some exceptions are: 
47 DI_ReadDVDConfig        Will only work on non-modchipped drives.
48 DI_ReportKey            Will only work on non-modchipped drives.
49 DI_ReadDVDUnencrypted   Will only work on original discs.
50 DI_ClosePartition       Will only work on original discs.
51 DI_OpenPartition        Will only work on original discs.
52 DI_ReadDiscID           Will only work on original discs.
54 If you've been reading through the source, you've probably noticed by now the
55 peculiar function DI_KillDrive. DI_KillDrive will not actually kill your drive
56 as to be useless. It merely crashes it in such a way that it will not respond
57 to any DI commands, it will not eject your disc, and it will not take in any discs
58 until the next DI_Reset. DI_Mount might fail if used after this function!
59 I have included this function because people might have a use for it. Like it
60 says in the source, I am not responsible if someone's drive does actually die
61 from usage of this function.
64 Known bugs:
66 Currently, if you do a DI_Init(), and then return to HBC without a disc ever being inserted,
67 your program will hang until a disc is inserted. If anyone has a nice solution, I'd
68 love to hear it.
70 Erant