SSBM Decomp
Loading...
Searching...
No Matches
dvd.h
Go to the documentation of this file.
1#ifndef _DOLPHIN_DVD_H_
2#define _DOLPHIN_DVD_H_
3
4#include <dolphin/types.h>
5
16
17typedef struct DVDCommandBlock DVDCommandBlock;
18typedef void (*DVDCBCallback)(s32 result, DVDCommandBlock *block);
20{
23 /*0x08*/ u32 command;
24 /*0x0C*/ s32 state;
25 /*0x10*/ u32 offset;
26 /*0x14*/ u32 length;
27 /*0x18*/ void *addr;
30 /*0x24*/ DVDDiskID *id;
32 /*0x2C*/ void *userData;
33};
34
35typedef struct DVDFileInfo DVDFileInfo;
36typedef void (*DVDCallback)(s32 result, DVDFileInfo *fileInfo);
38{
40 /*0x30*/ u32 startAddr;
41 /*0x34*/ u32 length;
43};
44
45typedef struct
46{
50} DVDDir;
51
52typedef struct
53{
56 char *name;
58
59typedef struct DVDBB2 {
61 /* 0x04 */ u32 FSTPosition;
62 /* 0x08 */ u32 FSTLength;
63 /* 0x0C */ u32 FSTMaxLength;
64 /* 0x10 */ void * FSTAddress;
65 /* 0x14 */ u32 userPosition;
66 /* 0x18 */ u32 userLength;
67 /* 0x1C */ u32 padding0;
68} DVDBB2;
69
70typedef struct DVDDriveInfo {
71 /* 0x00 */ u16 revisionLevel;
72 /* 0x02 */ u16 deviceCode;
73 /* 0x04 */ u32 releaseDate;
74 /* 0x08 */ u8 padding[24];
76
78int DVDLowRead(void * addr, unsigned long length, unsigned long offset, void (* callback)(unsigned long));
79int DVDLowSeek(unsigned long offset, void (* callback)(unsigned long));
80int DVDLowWaitCoverClose(void (* callback)(unsigned long));
81int DVDLowReadDiskID(struct DVDDiskID * diskID, void (* callback)(unsigned long));
82int DVDLowStopMotor(void (* callback)(unsigned long));
83int DVDLowRequestError(void (* callback)(unsigned long));
84int DVDLowInquiry(struct DVDDriveInfo * info, void (* callback)(unsigned long));
85int DVDLowAudioStream(unsigned long subcmd, unsigned long length, unsigned long offset, void (* callback)(unsigned long));
86int DVDLowRequestAudioStatus(unsigned long subcmd, void (* callback)(unsigned long));
87int DVDLowAudioBufferConfig(int enable, unsigned long size, void (* callback)(unsigned long));
89void (* DVDLowSetResetCoverCallback(void (* callback)(unsigned long)))(unsigned long);
91void (* DVDLowClearCallback())(unsigned long);
92unsigned long DVDLowGetCoverStatus();
93
94// dvd.c
95void DVDInit();
96int DVDReadAbsAsyncPrio(struct DVDCommandBlock * block, void * addr, long length, long offset, void (* callback)(long, struct DVDCommandBlock *), long prio);
97int DVDSeekAbsAsyncPrio(struct DVDCommandBlock * block, long offset, void (* callback)(long, struct DVDCommandBlock *), long prio);
98int DVDReadAbsAsyncForBS(struct DVDCommandBlock * block, void * addr, long length, long offset, void (* callback)(long, struct DVDCommandBlock *));
99int DVDReadDiskID(struct DVDCommandBlock * block, struct DVDDiskID * diskID, void (* callback)(long, struct DVDCommandBlock *));
100int DVDPrepareStreamAbsAsync(struct DVDCommandBlock * block, unsigned long length, unsigned long offset, void (* callback)(long, struct DVDCommandBlock *));
101int DVDCancelStreamAsync(struct DVDCommandBlock * block, void (* callback)(long, struct DVDCommandBlock *));
102long DVDCancelStream(struct DVDCommandBlock * block);
103int DVDStopStreamAtEndAsync(struct DVDCommandBlock * block, void (* callback)(long, struct DVDCommandBlock *));
105int DVDGetStreamErrorStatusAsync(struct DVDCommandBlock * block, void (* callback)(long, struct DVDCommandBlock *));
107int DVDGetStreamPlayAddrAsync(struct DVDCommandBlock * block, void (* callback)(long, struct DVDCommandBlock *));
109int DVDGetStreamStartAddrAsync(struct DVDCommandBlock * block, void (* callback)(long, struct DVDCommandBlock *));
111int DVDGetStreamLengthAsync(struct DVDCommandBlock * block, void (* callback)(long, struct DVDCommandBlock *));
113int DVDChangeDiskAsyncForBS(struct DVDCommandBlock * block, void (* callback)(long, struct DVDCommandBlock *));
114int DVDChangeDiskAsync(struct DVDCommandBlock * block, struct DVDDiskID * id, void (* callback)(long, struct DVDCommandBlock *));
115long DVDChangeDisk(struct DVDCommandBlock * block, struct DVDDiskID * id);
116int DVDInquiryAsync(struct DVDCommandBlock * block, struct DVDDriveInfo * info, void (* callback)(long, struct DVDCommandBlock *));
117long DVDInquiry(struct DVDCommandBlock * block, struct DVDDriveInfo * info);
118void DVDReset();
122int DVDSetAutoInvalidation(int autoInval);
123void DVDPause();
125int DVDCancelAsync(struct DVDCommandBlock * block, void (* callback)(long, struct DVDCommandBlock *));
126long DVDCancel(volatile struct DVDCommandBlock * block);
128long DVDCancelAll(void);
131
132// dvdfs.c
133s32 DVDConvertPathToEntrynum(const char* pathPtr);
135BOOL DVDOpen(char* fileName, DVDFileInfo* fileInfo);
137BOOL DVDGetCurrentDir(char* path, u32 maxlen);
138BOOL DVDChangeDir(char* dirName);
139BOOL DVDReadAsyncPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset,
140 DVDCallback callback, s32 prio);
141long DVDReadPrio(struct DVDFileInfo * fileInfo, void * addr, long length, long offset, long prio);
142int DVDSeekAsyncPrio(struct DVDFileInfo * fileInfo, long offset, void (* callback)(long, struct DVDFileInfo *), long prio);
143long DVDSeekPrio(struct DVDFileInfo * fileInfo, long offset, long prio);
144long DVDGetFileInfoStatus(struct DVDFileInfo * fileInfo);
145int DVDOpenDir(char * dirName, DVDDir * dir);
146int DVDReadDir(DVDDir * dir, DVDDirEntry* dirent);
150s32 DVDPrepareStream(DVDFileInfo* fileInfo, u32 length, u32 offset);
152
153#define DVDReadAsync(fileInfo, addr, length, offset, callback) \
154 DVDReadAsyncPrio((fileInfo), (addr), (length), (offset), (callback), 2)
155
156#define DVD_RESULT_GOOD 0
157#define DVD_RESULT_FATAL_ERROR -1
158#define DVD_RESULT_IGNORED -2
159#define DVD_RESULT_CANCELED -6
160
161#define DVD_STATE_FATAL_ERROR -1
162#define DVD_STATE_END 0
163#define DVD_STATE_BUSY 1
164#define DVD_STATE_WAITING 2
165#define DVD_STATE_COVER_CLOSED 3
166#define DVD_STATE_NO_DISK 4
167#define DVD_STATE_COVER_OPEN 5
168#define DVD_STATE_WRONG_DISK 6
169#define DVD_STATE_MOTOR_STOPPED 7
170#define DVD_STATE_PAUSING 8
171#define DVD_STATE_IGNORED 9
172#define DVD_STATE_CANCELED 10
173#define DVD_STATE_RETRY 11
174
175#define DVD_MIN_TRANSFER_SIZE 32
176
177// could be bitfields
178#define DVD_INTTYPE_TC 1
179#define DVD_INTTYPE_DE 2
180// unk type 3
181#define DVD_INTTYPE_CVR 4
182
183// DVD Commands
184
185#define DVD_COMMAND_NONE 0
186#define DVD_COMMAND_READ 1
187#define DVD_COMMAND_SEEK 2
188#define DVD_COMMAND_CHANGE_DISK 3
189#define DVD_COMMAND_BSREAD 4
190#define DVD_COMMAND_READID 5
191#define DVD_COMMAND_INITSTREAM 6
192#define DVD_COMMAND_CANCELSTREAM 7
193#define DVD_COMMAND_STOP_STREAM_AT_END 8
194#define DVD_COMMAND_REQUEST_AUDIO_ERROR 9
195#define DVD_COMMAND_REQUEST_PLAY_ADDR 10
196#define DVD_COMMAND_REQUEST_START_ADDR 11
197#define DVD_COMMAND_REQUEST_LENGTH 12
198#define DVD_COMMAND_AUDIO_BUFFER_CONFIG 13
199#define DVD_COMMAND_INQUIRY 14
200#define DVD_COMMAND_BS_CHANGE_DISK 15
201
202// unidentified externs
203extern int DVDReadAbsAsyncForBS(struct DVDCommandBlock * block, void * addr, long length, long offset, void (* callback)(long, struct DVDCommandBlock *));
204extern int DVDReadDiskID(struct DVDCommandBlock * block, struct DVDDiskID * diskID, void (* callback)(long, struct DVDCommandBlock *));
205extern void DVDReset(void);
206
207int DVDReadAbsAsyncPrio(struct DVDCommandBlock * block /* r29 */, void * addr /* r1+0xC */, long length /* r1+0x10 */, long offset /* r1+0x14 */, void (* callback)(long, struct DVDCommandBlock *) /* r1+0x18 */, long prio /* r31 */);
208int DVDSeekAbsAsyncPrio(struct DVDCommandBlock * block /* r31 */, long offset /* r28 */, void (* callback)(long, struct DVDCommandBlock *) /* r1+0x10 */, long prio /* r1+0x14 */);
209int DVDPrepareStreamAbsAsync(struct DVDCommandBlock * block /* r31 */, unsigned long length /* r1+0xC */, unsigned long offset /* r1+0x10 */, void (* callback)(long, struct DVDCommandBlock *) /* r1+0x14 */);
211
212#endif
static DVDFileInfo fileinfo
Definition devcom.static.h:25
int DVDReadAbsAsyncPrio(struct DVDCommandBlock *block, void *addr, long length, long offset, void(*callback)(long, struct DVDCommandBlock *), long prio)
void(* DVDCallback)(s32 result, DVDFileInfo *fileInfo)
Definition dvd.h:36
BOOL DVDReadAsyncPrio(DVDFileInfo *fileInfo, void *addr, s32 length, s32 offset, DVDCallback callback, s32 prio)
int DVDGetStreamStartAddrAsync(struct DVDCommandBlock *block, void(*callback)(long, struct DVDCommandBlock *))
long DVDGetStreamStartAddr(struct DVDCommandBlock *block)
long DVDGetFileInfoStatus(struct DVDFileInfo *fileInfo)
unsigned long DVDLowGetCoverStatus()
long DVDSeekPrio(struct DVDFileInfo *fileInfo, long offset, long prio)
int DVDLowSeek(unsigned long offset, void(*callback)(unsigned long))
BOOL DVDFastOpen(s32 entrynum, DVDFileInfo *fileInfo)
void DVDInit()
void DVDReset()
void(*)(unsigned long) DVDLowSetResetCoverCallback(void(*callback)(unsigned long))
Definition dvd.h:89
int DVDReadDir(DVDDir *dir, DVDDirEntry *dirent)
long DVDCancelAll(void)
int DVDOpenDir(char *dirName, DVDDir *dir)
BOOL DVDClose(DVDFileInfo *fileInfo)
long DVDGetStreamPlayAddr(struct DVDCommandBlock *block)
void DVDResume()
BOOL DVDCheckDisk(void)
void DVDLowReset()
int DVDChangeDiskAsyncForBS(struct DVDCommandBlock *block, void(*callback)(long, struct DVDCommandBlock *))
int DVDStopStreamAtEndAsync(struct DVDCommandBlock *block, void(*callback)(long, struct DVDCommandBlock *))
int DVDCancelStreamAsync(struct DVDCommandBlock *block, void(*callback)(long, struct DVDCommandBlock *))
long DVDInquiry(struct DVDCommandBlock *block, struct DVDDriveInfo *info)
int DVDLowRequestAudioStatus(unsigned long subcmd, void(*callback)(unsigned long))
int DVDChangeDiskAsync(struct DVDCommandBlock *block, struct DVDDiskID *id, void(*callback)(long, struct DVDCommandBlock *))
int DVDGetStreamLengthAsync(struct DVDCommandBlock *block, void(*callback)(long, struct DVDCommandBlock *))
int DVDSetAutoInvalidation(int autoInval)
BOOL DVDGetCurrentDir(char *path, u32 maxlen)
BOOL DVDOpen(char *fileName, DVDFileInfo *fileInfo)
int DVDCloseDir(DVDDir *dir)
int DVDCancelAsync(struct DVDCommandBlock *block, void(*callback)(long, struct DVDCommandBlock *))
long DVDReadPrio(struct DVDFileInfo *fileInfo, void *addr, long length, long offset, long prio)
int DVDReadAbsAsyncForBS(struct DVDCommandBlock *block, void *addr, long length, long offset, void(*callback)(long, struct DVDCommandBlock *))
s32 DVDPrepareStream(DVDFileInfo *fileInfo, u32 length, u32 offset)
void DVDPause()
int DVDPrepareStreamAbsAsync(struct DVDCommandBlock *block, unsigned long length, unsigned long offset, void(*callback)(long, struct DVDCommandBlock *))
long DVDCancel(volatile struct DVDCommandBlock *block)
int DVDLowInquiry(struct DVDDriveInfo *info, void(*callback)(unsigned long))
BOOL DVDChangeDir(char *dirName)
int DVDLowAudioBufferConfig(int enable, unsigned long size, void(*callback)(unsigned long))
int DVDSeekAbsAsyncPrio(struct DVDCommandBlock *block, long offset, void(*callback)(long, struct DVDCommandBlock *), long prio)
int DVDLowReadDiskID(struct DVDDiskID *diskID, void(*callback)(unsigned long))
int DVDResetRequired()
int DVDGetStreamErrorStatusAsync(struct DVDCommandBlock *block, void(*callback)(long, struct DVDCommandBlock *))
s32 DVDConvertPathToEntrynum(const char *pathPtr)
long DVDGetStreamLength(struct DVDCommandBlock *block)
int DVDGetStreamPlayAddrAsync(struct DVDCommandBlock *block, void(*callback)(long, struct DVDCommandBlock *))
long DVDChangeDisk(struct DVDCommandBlock *block, struct DVDDiskID *id)
struct DVDDiskID * DVDGetCurrentDiskID(void)
long DVDGetStreamErrorStatus(struct DVDCommandBlock *block)
void(*)(unsigned long) DVDLowClearCallback()
Definition dvd.h:91
s32 DVDGetTransferredSize(DVDFileInfo *fileinfo)
void DVDDumpWaitingQueue(void)
long DVDStopStreamAtEnd(struct DVDCommandBlock *block)
int DVDInquiryAsync(struct DVDCommandBlock *block, struct DVDDriveInfo *info, void(*callback)(long, struct DVDCommandBlock *))
int DVDLowAudioStream(unsigned long subcmd, unsigned long length, unsigned long offset, void(*callback)(unsigned long))
long DVDGetDriveStatus()
BOOL DVDPrepareStreamAsync(DVDFileInfo *fileInfo, u32 length, u32 offset, DVDCallback callback)
int DVDLowRead(void *addr, unsigned long length, unsigned long offset, void(*callback)(unsigned long))
long DVDCancelStream(struct DVDCommandBlock *block)
void __DVDStoreErrorCode(u32 error)
int DVDLowRequestError(void(*callback)(unsigned long))
int DVDLowBreak()
int DVDLowWaitCoverClose(void(*callback)(unsigned long))
int DVDReadDiskID(struct DVDCommandBlock *block, struct DVDDiskID *diskID, void(*callback)(long, struct DVDCommandBlock *))
int DVDLowStopMotor(void(*callback)(unsigned long))
int DVDSeekAsyncPrio(struct DVDFileInfo *fileInfo, long offset, void(*callback)(long, struct DVDFileInfo *), long prio)
int DVDCancelAllAsync(DVDCBCallback callback)
void * DVDGetFSTLocation()
void(* DVDCBCallback)(s32 result, DVDCommandBlock *block)
Definition dvd.h:18
long DVDGetCommandBlockStatus(struct DVDCommandBlock *block)
int BOOL
Definition types.h:20
unsigned long u32
Definition types.h:9
unsigned short int u16
Definition types.h:7
static void callback(HSD_GObj *gobj)
Definition ftDk_SpecialLw.c:90
signed long s32
Definition hsd_3B2B.h:1
unsigned char u8
Definition hsd_3B2B.h:2
Definition dvd.h:59
u32 FSTMaxLength
Definition dvd.h:63
u32 FSTPosition
Definition dvd.h:61
u32 bootFilePosition
Definition dvd.h:60
void * FSTAddress
Definition dvd.h:64
u32 userLength
Definition dvd.h:66
u32 padding0
Definition dvd.h:67
u32 FSTLength
Definition dvd.h:62
u32 userPosition
Definition dvd.h:65
Definition dvd.h:20
u32 transferredSize
Definition dvd.h:29
void * addr
Definition dvd.h:27
u32 currTransferSize
Definition dvd.h:28
DVDCommandBlock * prev
Definition dvd.h:22
void * userData
Definition dvd.h:32
u32 offset
Definition dvd.h:25
DVDDiskID * id
Definition dvd.h:30
u32 command
Definition dvd.h:23
DVDCBCallback callback
Definition dvd.h:31
s32 state
Definition dvd.h:24
DVDCommandBlock * next
Definition dvd.h:21
u32 length
Definition dvd.h:26
Definition dvd.h:53
char * name
Definition dvd.h:56
BOOL isDir
Definition dvd.h:55
u32 entryNum
Definition dvd.h:54
Definition dvd.h:46
u32 next
Definition dvd.h:49
u32 location
Definition dvd.h:48
u32 entryNum
Definition dvd.h:47
Definition dvd.h:7
u8 streaming
Definition dvd.h:12
char company[2]
Definition dvd.h:9
char gameName[4]
Definition dvd.h:8
u8 gameVersion
Definition dvd.h:11
u8 diskNumber
Definition dvd.h:10
u8 streamingBufSize
Definition dvd.h:13
u8 padding[22]
Definition dvd.h:14
Definition dvd.h:70
u16 deviceCode
Definition dvd.h:72
u32 releaseDate
Definition dvd.h:73
u8 padding[24]
Definition dvd.h:74
u16 revisionLevel
Definition dvd.h:71
Definition dvd.h:38
u32 length
Definition dvd.h:41
DVDCallback callback
Definition dvd.h:42
DVDCommandBlock cb
Definition dvd.h:39
u32 startAddr
Definition dvd.h:40
int entrynum
Definition synth.static.h:39