#ifndef _DOLPHIN_DVD #define _DOLPHIN_DVD #include "types.h" #ifdef __cplusplus extern "C" { #endif typedef struct DVDDiskID { char gameName[4]; char company[2]; u8 diskNumber; u8 gameVersion; u8 streaming; u8 streamingBufSize; // 0 = default u8 padding[22]; // 0's are stored } DVDDiskID; typedef struct DVDCommandBlock DVDCommandBlock; typedef void (*DVDCBCallback)(s32 result, DVDCommandBlock* block); struct DVDCommandBlock { DVDCommandBlock* next; DVDCommandBlock* prev; u32 command; s32 state; u32 offset; u32 length; void* addr; u32 currTransferSize; u32 transferredSize; DVDDiskID* id; DVDCBCallback callback; void* userData; }; typedef struct DVDFileInfo DVDFileInfo; typedef void (*DVDCallback)(s32 result, DVDFileInfo* fileInfo); struct DVDFileInfo { u32 startAddr; u32 length; DVDCallback callback; }; void DVDInit(); void DVDSetAutoFatalMessaging(BOOL); void DVDReset(); BOOL DVDPrepareStreamAsync(DVDFileInfo* fInfo, u32 length, u32 offset, DVDCallback callback); s32 DVDPrepareStream(DVDFileInfo* fInfo, u32 length, u32 offset); BOOL DVDCancelStreamAsync(DVDCommandBlock* block, DVDCBCallback callback); s32 DVDCancelStream(DVDCommandBlock* block); BOOL DVDStopStreamAtEndAsync(DVDCommandBlock* block, DVDCBCallback callback); s32 DVDStopStreamAtEnd(DVDCommandBlock* block); BOOL DVDGetStreamErrorStatusAsync(DVDCommandBlock* block, DVDCBCallback callback); s32 DVDGetStreamErrorStatus(DVDCommandBlock* block); BOOL DVDGetStreamPlayAddrAsync(DVDCommandBlock* block, DVDCBCallback callback); s32 DVDGetStreamPlayAddr(DVDCommandBlock* block); s32 DVDGetDriveStatus(); #ifdef __cplusplus } #endif #endif // _DOLPHIN_DVD