diff --git a/configure.py b/configure.py index 351e770b..bc63a8bf 100644 --- a/configure.py +++ b/configure.py @@ -746,13 +746,13 @@ config.libs = [ }, { "lib": "msm", - "mw_version": config.linker_version, + "mw_version": "GC/1.2.5n", "cflags": cflags_msm, "host": False, "objects": [ Object(NonMatching, "msm/msmsys.c"), Object(NonMatching, "msm/msmmem.c"), - Object(NonMatching, "msm/msmfio.c"), + Object(Matching, "msm/msmfio.c"), Object(NonMatching, "msm/msmmus.c"), Object(NonMatching, "msm/msmse.c"), Object(NonMatching, "msm/msmstream.c"), diff --git a/include/dolphin/dvd.h b/include/dolphin/dvd.h index 38c62254..cc6e1fa9 100644 --- a/include/dolphin/dvd.h +++ b/include/dolphin/dvd.h @@ -118,7 +118,10 @@ s32 DVDConvertPathToEntrynum(char* pathPtr); BOOL DVDReadAsyncPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, DVDCallback callback, s32 prio); - + +BOOL DVDReadPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, s32 prio); + + #define DVDReadAsync(fileInfo, addr, length, offset, callback) \ DVDReadAsyncPrio((fileInfo), (addr), (length), (offset), (callback), 2) #define DVDRead(fileInfo, addr, length, offset) \ diff --git a/src/msm/msmfio.c b/src/msm/msmfio.c new file mode 100644 index 00000000..581cb3a1 --- /dev/null +++ b/src/msm/msmfio.c @@ -0,0 +1,43 @@ +#include "dolphin.h" + +struct msmFio { + BOOL (*open)(s32, DVDFileInfo *); + BOOL (*read)(DVDFileInfo *, void *, s32, s32, s32); + BOOL (*close)(DVDFileInfo *); +}; + +static struct msmFio fio; + +BOOL msmFioClose(DVDFileInfo *fileInfo) +{ + return fio.close(fileInfo); +} + +BOOL msmFioRead(DVDFileInfo *fileInfo, void *addr, s32 length, s32 offset) +{ + return fio.read(fileInfo, addr, length, offset, 2); +} + +BOOL msmFioOpen(s32 entrynum, DVDFileInfo *fileInfo) +{ + return fio.open(entrynum, fileInfo); +} + +void msmFioInit(void *open, void *read, void *close) +{ + if(open) { + fio.open = open; + } else { + fio.open = DVDFastOpen; + } + if(read) { + fio.read = read; + } else { + fio.read = DVDReadPrio; + } + if(close) { + fio.close = close; + } else { + fio.close = DVDClose; + } +} \ No newline at end of file