Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
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#ifdef __REVOLUTION_SDK__
5#include <revolution/dvd.h>
6#else
7#include <dolphin/types.h>
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13#define DVD_ASSERTMSGLINE(line, cond, msg) \
14 if (!(cond)) \
15 OSPanic(__FILE__, line, msg)
16
17#define DVD_ASSERTMSG1LINE(line, cond, msg, arg1) \
18 if (!(cond)) \
19 OSPanic(__FILE__, line, msg, arg1)
20
21#define DVD_ASSERTMSG2LINE(line, cond, msg, arg1, arg2) \
22 if (!(cond)) \
23 OSPanic(__FILE__, line, msg, arg1, arg2)
24
25#define DVD_RESULT_GOOD 0
26#define DVD_RESULT_FATAL_ERROR -1
27#define DVD_RESULT_IGNORED -2
28#define DVD_RESULT_CANCELED -6
29
30#define DVD_STATE_FATAL_ERROR -1
31#define DVD_STATE_END 0
32#define DVD_STATE_BUSY 1
33#define DVD_STATE_WAITING 2
34#define DVD_STATE_COVER_CLOSED 3
35#define DVD_STATE_NO_DISK 4
36#define DVD_STATE_COVER_OPEN 5
37#define DVD_STATE_WRONG_DISK 6
38#define DVD_STATE_MOTOR_STOPPED 7
39#define DVD_STATE_PAUSING 8
40#define DVD_STATE_IGNORED 9
41#define DVD_STATE_CANCELED 10
42#define DVD_STATE_RETRY 11
43
44#define DVD_MIN_TRANSFER_SIZE 32
45
46// could be bitfields
47#define DVD_INTTYPE_TC 1
48#define DVD_INTTYPE_DE 2
49// unk type 3
50#define DVD_INTTYPE_CVR 4
51
52// DVD Commands
53#define DVD_COMMAND_NONE 0
54#define DVD_COMMAND_READ 1
55#define DVD_COMMAND_SEEK 2
56#define DVD_COMMAND_CHANGE_DISK 3
57#define DVD_COMMAND_BSREAD 4
58#define DVD_COMMAND_READID 5
59#define DVD_COMMAND_INITSTREAM 6
60#define DVD_COMMAND_CANCELSTREAM 7
61#define DVD_COMMAND_STOP_STREAM_AT_END 8
62#define DVD_COMMAND_REQUEST_AUDIO_ERROR 9
63#define DVD_COMMAND_REQUEST_PLAY_ADDR 10
64#define DVD_COMMAND_REQUEST_START_ADDR 11
65#define DVD_COMMAND_REQUEST_LENGTH 12
66#define DVD_COMMAND_AUDIO_BUFFER_CONFIG 13
67#define DVD_COMMAND_INQUIRY 14
68#define DVD_COMMAND_BS_CHANGE_DISK 15
69#define DVD_COMMAND_UNK_16 16
70
80
82typedef void (*DVDCBCallback)(s32 result, DVDCommandBlock* block);
83typedef void (*DVDLowCallback)(u32);
84
87
89 /* 0x00 */ DVDCommandBlock* next;
90 /* 0x04 */ DVDCommandBlock* prev;
91 /* 0x08 */ u32 command;
92 /* 0x0C */ s32 state;
93 /* 0x10 */ u32 offset;
94 /* 0x14 */ u32 length;
95 /* 0x18 */ void* addr;
97 /* 0x20 */ u32 transferredSize;
98 /* 0x24 */ DVDDiskID* id;
100 /* 0x2C */ void* userData;
101};
102
104typedef void (*DVDCallback)(s32 result, DVDFileInfo *fileInfo);
106 /* 0x00 */ DVDCommandBlock cb;
107 /* 0x30 */ u32 startAddr;
108 /* 0x34 */ u32 length;
110};
111
117
118typedef struct {
121 char* name;
123
124typedef struct DVDBB2 {
126 /* 0x04 */ u32 FSTPosition;
127 /* 0x08 */ u32 FSTLength;
128 /* 0x0C */ u32 FSTMaxLength;
129 /* 0x10 */ void* FSTAddress;
130 /* 0x14 */ u32 userPosition;
131 /* 0x18 */ u32 userLength;
132 /* 0x1C */ u32 padding0;
134
135typedef struct DVDDriveInfo {
136 /* 0x00 */ u16 revisionLevel;
137 /* 0x02 */ u16 deviceCode;
138 /* 0x04 */ u32 releaseDate;
139 /* 0x08 */ u8 padding[24];
141
142// DVD
143void DVDInit(void);
144int DVDReadAbsAsyncPrio(DVDCommandBlock* block, void* addr, s32 length, s32 offset, DVDCBCallback callback, s32 prio);
146int DVDReadAbsAsyncForBS(DVDCommandBlock* block, void* addr, s32 length, s32 offset, DVDCBCallback callback);
168void DVDReset(void);
169int DVDResetRequired(void);
173void DVDPause(void);
174void DVDResume(void);
176s32 DVDCancel(volatile DVDCommandBlock* block);
178s32 DVDCancelAll(void);
180BOOL DVDCheckDisk(void);
181
182// DVD FATAL
184
185// DVD FS
186s32 DVDConvertPathToEntrynum(const char* pathPtr);
187BOOL DVDFastOpen(s32 entrynum, DVDFileInfo* fileInfo);
188BOOL DVDOpen(const char* fileName, DVDFileInfo* fileInfo);
189BOOL DVDClose(DVDFileInfo* fileInfo);
190BOOL DVDGetCurrentDir(char* path, u32 maxlen);
191BOOL DVDChangeDir(const char* dirName);
192BOOL DVDReadAsyncPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset,
193 DVDCallback callback, s32 prio);
194s32 DVDReadPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, s32 prio);
195int DVDSeekAsyncPrio(DVDFileInfo* fileInfo, s32 offset, void (* callback)(s32, DVDFileInfo *), s32 prio);
196s32 DVDSeekPrio(DVDFileInfo* fileInfo, s32 offset, s32 prio);
197s32 DVDGetFileInfoStatus(const DVDFileInfo* fileInfo);
198BOOL DVDFastOpenDir(s32 entrynum, DVDDir* dir);
199int DVDOpenDir(const char* dirName, DVDDir* dir);
200int DVDReadDir(DVDDir* dir, DVDDirEntry* dirent);
201int DVDCloseDir(DVDDir* dir);
202void DVDRewindDir(DVDDir* dir);
203void* DVDGetFSTLocation(void);
205s32 DVDPrepareStream(DVDFileInfo* fileInfo, u32 length, u32 offset);
207
208#define DVDReadAsync(fileInfo, addr, length, offset, callback) \
209 DVDReadAsyncPrio((fileInfo), (addr), (length), (offset), (callback), 2)
210
211// DVD ID UTILS
212int DVDCompareDiskID(const DVDDiskID* id1, const DVDDiskID* id2);
213DVDDiskID* DVDGenerateDiskID(DVDDiskID* id, const char* game, const char* company, u8 diskNum, u8 version);
214
215// DVD LOW
216BOOL DVDLowRead(void* addr, u32 length, u32 offset, DVDLowCallback callback);
223BOOL DVDLowAudioStream(u32 subcmd, u32 length, u32 offset, DVDLowCallback callback);
226void DVDLowReset(void);
228BOOL DVDLowBreak(void);
231
232// DVD QUEUE
233void DVDDumpWaitingQueue(void);
234
235#ifdef __cplusplus
236}
237#endif
238
239#endif
240#endif
static u16 const id2[7]
Definition d_a_npc_seirei.cpp:597
static u16 const id1[7]
Definition d_a_npc_seirei.cpp:587
void(* DVDCallback)(s32 result, DVDFileInfo *fileInfo)
Definition dvd.h:104
BOOL DVDReadAsyncPrio(DVDFileInfo *fileInfo, void *addr, s32 length, s32 offset, DVDCallback callback, s32 prio)
Definition dvdfs.c:299
BOOL DVDFastOpenDir(s32 entrynum, DVDDir *dir)
Definition dvdfs.c:442
BOOL DVDFastOpen(s32 entrynum, DVDFileInfo *fileInfo)
Definition dvdfs.c:164
int DVDGetStreamLengthAsync(DVDCommandBlock *block, DVDCBCallback callback)
Definition dvd.c:1284
int DVDReadDir(DVDDir *dir, DVDDirEntry *dirent)
Definition dvdfs.c:482
void(* DVDCommandCheckerCallback)(u32)
Definition dvd.h:85
BOOL DVDClose(DVDFileInfo *fileInfo)
Definition dvdfs.c:209
struct DVDDriveInfo DVDDriveInfo
BOOL DVDOpen(const char *fileName, DVDFileInfo *fileInfo)
Definition dvdfs.c:181
int DVDReadDiskID(DVDCommandBlock *block, DVDDiskID *diskID, DVDCBCallback callback)
Definition dvd.c:1054
s32 DVDGetStreamLength(DVDCommandBlock *block)
Definition dvd.c:1293
int DVDOpenDir(const char *dirName, DVDDir *dir)
Definition dvdfs.c:457
BOOL DVDCheckDisk(void)
Definition dvd.c:1775
void DVDReset(void)
Definition dvd.c:1500
s32 DVDGetCommandBlockStatus(const DVDCommandBlock *block)
Definition dvd.c:1512
struct DVDBB2 DVDBB2
s32 DVDCancelAll(void)
Definition dvd.c:1742
s32 DVDGetDriveStatus(void)
Definition dvd.c:1529
int DVDGetStreamStartAddrAsync(DVDCommandBlock *block, DVDCBCallback callback)
Definition dvd.c:1244
void DVDResume(void)
Definition dvd.c:1571
DVDLowCallback DVDLowSetResetCoverCallback(DVDLowCallback callback)
Definition dvdlow.c:455
int DVDCancelAsync(DVDCommandBlock *block, DVDCBCallback callback)
Definition dvd.c:1583
s32 DVDCancel(volatile DVDCommandBlock *block)
Definition dvd.c:1682
int DVDCancelStreamAsync(DVDCommandBlock *block, DVDCBCallback callback)
Definition dvd.c:1084
s32 DVDGetStreamErrorStatus(DVDCommandBlock *block)
Definition dvd.c:1173
BOOL DVDLowRead(void *addr, u32 length, u32 offset, DVDLowCallback callback)
Definition dvdlow.c:286
void * DVDGetFSTLocation(void)
Definition dvdfs.c:504
BOOL DVDGetCurrentDir(char *path, u32 maxlen)
Definition dvdfs.c:276
int DVDStopStreamAtEndAsync(DVDCommandBlock *block, DVDCBCallback callback)
Definition dvd.c:1124
BOOL DVDSetAutoInvalidation(BOOL autoInval)
Definition dvd.c:1552
BOOL DVDLowStopMotor(DVDLowCallback callback)
Definition dvdlow.c:366
struct DVDDiskID DVDDiskID
int DVDChangeDiskAsyncForBS(DVDCommandBlock *block, DVDCBCallback callback)
Definition dvd.c:1334
void DVDPause(void)
Definition dvd.c:1560
void(* DVDCommandChecker)(DVDCommandBlock *, DVDCommandCheckerCallback)
Definition dvd.h:86
s32 DVDReadPrio(DVDFileInfo *fileInfo, void *addr, s32 length, s32 offset, s32 prio)
Definition dvdfs.c:330
s32 DVDStopMotor(DVDCommandBlock *block)
Definition dvd.c:1414
int DVDCloseDir(DVDDir *dir)
Definition dvdfs.c:496
BOOL DVDLowRequestAudioStatus(u32 subcmd, DVDLowCallback callback)
Definition dvdlow.c:407
int DVDGetStreamPlayAddrAsync(DVDCommandBlock *block, DVDCBCallback callback)
Definition dvd.c:1204
BOOL DVDChangeDir(const char *dirName)
Definition dvdfs.c:281
s32 DVDPrepareStream(DVDFileInfo *fileInfo, u32 length, u32 offset)
Definition dvdfs.c:543
BOOL DVDLowSeek(u32 offset, DVDLowCallback callback)
Definition dvdlow.c:331
DVDDiskID * DVDGetCurrentDiskID(void)
Definition dvd.c:1771
s32 DVDGetStreamPlayAddr(DVDCommandBlock *block)
Definition dvd.c:1213
s32 DVDStopStreamAtEnd(DVDCommandBlock *block)
Definition dvd.c:1133
void(* DVDLowCallback)(u32)
Definition dvd.h:83
int DVDReadAbsAsyncForBS(DVDCommandBlock *block, void *addr, s32 length, s32 offset, DVDCBCallback callback)
Definition dvd.c:1033
s32 DVDInquiry(DVDCommandBlock *block, DVDDriveInfo *info)
Definition dvd.c:1465
int DVDSetAutoFatalMessaging(BOOL enable)
Definition dvdFatal.c:78
void DVDRewindDir(DVDDir *dir)
Definition dvdfs.c:500
int DVDInquiryAsync(DVDCommandBlock *block, DVDDriveInfo *info, DVDCBCallback callback)
Definition dvd.c:1449
BOOL DVDLowWaitCoverClose(DVDLowCallback callback)
Definition dvdlow.c:343
int DVDReadAbsAsyncPrio(DVDCommandBlock *block, void *addr, s32 length, s32 offset, DVDCBCallback callback, s32 prio)
Definition dvd.c:996
s32 DVDConvertPathToEntrynum(const char *pathPtr)
Definition dvdfs.c:64
int DVDChangeDiskAsync(DVDCommandBlock *block, DVDDiskID *id, DVDCBCallback callback)
Definition dvd.c:1346
int DVDSeekAsyncPrio(DVDFileInfo *fileInfo, s32 offset, void(*callback)(s32, DVDFileInfo *), s32 prio)
Definition dvdfs.c:376
void DVDDumpWaitingQueue(void)
Definition dvdqueue.c:149
int DVDSeekAbsAsyncPrio(DVDCommandBlock *block, s32 offset, DVDCBCallback callback, s32 prio)
Definition dvd.c:1018
s32 DVDSeekPrio(DVDFileInfo *fileInfo, s32 offset, s32 prio)
Definition dvdfs.c:397
s32 DVDGetStreamStartAddr(DVDCommandBlock *block)
Definition dvd.c:1253
u32 DVDLowGetCoverStatus(void)
Definition dvdlow.c:503
BOOL DVDPrepareStreamAsync(DVDFileInfo *fileInfo, u32 length, u32 offset, DVDCallback callback)
Definition dvdfs.c:511
int DVDGetStreamErrorStatusAsync(DVDCommandBlock *block, DVDCBCallback callback)
Definition dvd.c:1164
s32 DVDCancelStream(DVDCommandBlock *block)
Definition dvd.c:1093
void DVDInit(void)
Definition dvd.c:105
BOOL DVDLowAudioStream(u32 subcmd, u32 length, u32 offset, DVDLowCallback callback)
Definition dvdlow.c:396
int DVDResetRequired(void)
Definition dvd.c:1508
s32 DVDGetFileInfoStatus(const DVDFileInfo *fileInfo)
Definition dvdfs.c:438
int DVDStopMotorAsync(DVDCommandBlock *block, DVDCBCallback callback)
Definition dvd.c:1402
s32 DVDChangeDisk(DVDCommandBlock *block, DVDDiskID *id)
Definition dvd.c:1367
int DVDCancelAllAsync(DVDCBCallback callback)
Definition dvd.c:1717
void(* DVDCBCallback)(s32 result, DVDCommandBlock *block)
Definition dvd.h:82
int DVDPrepareStreamAbsAsync(DVDCommandBlock *block, u32 length, u32 offset, DVDCBCallback callback)
Definition dvd.c:1073
unsigned int size
Definition __os.h:106
int BOOL
Definition types.h:33
unsigned long u32
Definition types.h:12
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
void DVDLowReset(void)
Definition dvdlow.c:438
void(* DVDCallback)(s32 result, DVDFileInfo *fileInfo)
Definition dvd.h:104
BOOL DVDLowReadDiskID(DVDDiskID *diskID, DVDLowCallback callback)
Definition dvdlow.c:351
BOOL DVDLowRequestError(DVDLowCallback callback)
Definition dvdlow.c:375
BOOL DVDLowBreak(void)
Definition dvdlow.c:488
BOOL DVDLowAudioBufferConfig(u8 enable, u32 size, DVDLowCallback callback)
Definition dvd_broadway.c:680
s32 DVDGetTransferredSize(DVDFileInfo *fileinfo)
Definition dvdfs.c:600
DVDDiskID * DVDGenerateDiskID(DVDDiskID *id, const char *game, const char *company, u8 diskNum, u8 version)
Definition dvdidutils.c:76
BOOL DVDLowInquiry(DVDDriveInfo *info, DVDLowCallback callback)
Definition dvdlow.c:384
int DVDCompareDiskID(const DVDDiskID *id1, const DVDDiskID *id2)
Definition dvdidutils.c:18
DVDLowCallback DVDLowClearCallback(void)
Definition dvdlow.c:494
void(* DVDCBCallback)(s32 result, DVDCommandBlock *block)
Definition dvd.h:82
static void callback(u32 param_0)
Definition OSExec.c:308
Definition dvd.h:124
u32 FSTMaxLength
Definition dvd.h:128
u32 FSTPosition
Definition dvd.h:126
u32 bootFilePosition
Definition dvd.h:125
void * FSTAddress
Definition dvd.h:129
u32 userLength
Definition dvd.h:131
u32 padding0
Definition dvd.h:132
u32 FSTLength
Definition dvd.h:127
u32 userPosition
Definition dvd.h:130
Definition dvd.h:88
DVDDiskID * id
Definition dvd.h:98
u32 transferredSize
Definition dvd.h:97
u32 currTransferSize
Definition dvd.h:96
DVDCommandBlock * prev
Definition dvd.h:90
void * userData
Definition dvd.h:100
void * addr
Definition dvd.h:95
u32 offset
Definition dvd.h:93
u32 command
Definition dvd.h:91
DVDCBCallback callback
Definition dvd.h:99
s32 state
Definition dvd.h:92
u32 length
Definition dvd.h:94
DVDCommandBlock * next
Definition dvd.h:89
Definition dvd.h:118
char * name
Definition dvd.h:121
BOOL isDir
Definition dvd.h:120
u32 entryNum
Definition dvd.h:119
Definition dvd.h:112
u32 next
Definition dvd.h:115
u32 location
Definition dvd.h:114
u32 entryNum
Definition dvd.h:113
Definition dvd.h:71
u8 padding[22]
Definition dvd.h:78
u8 streaming
Definition dvd.h:76
char gameName[4]
Definition dvd.h:72
char company[2]
Definition dvd.h:73
u8 gameVersion
Definition dvd.h:75
u8 diskNumber
Definition dvd.h:74
u8 streamingBufSize
Definition dvd.h:77
Definition dvd.h:135
u16 deviceCode
Definition dvd.h:137
u8 padding[24]
Definition dvd.h:139
u32 releaseDate
Definition dvd.h:138
u16 revisionLevel
Definition dvd.h:136
Definition dvd.h:105
u32 length
Definition dvd.h:108
DVDCallback callback
Definition dvd.h:109
DVDCommandBlock cb
Definition dvd.h:106
u32 startAddr
Definition dvd.h:107
Definition d_a_npc_ks.cpp:47