#ifndef __DVD_H__ #define __DVD_H__ #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 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); #ifdef __cplusplus } #endif #endif