mirror of https://github.com/PrimeDecomp/prime.git
Match and link CDvdRequest, Split and match CDvdRequestManager
This commit is contained in:
parent
7c47499116
commit
b24751b60c
|
@ -3,8 +3,8 @@
|
||||||
.section .data
|
.section .data
|
||||||
.balign 8
|
.balign 8
|
||||||
|
|
||||||
.global lbl_803ED578
|
.global __vt__15CARAMDvdRequest
|
||||||
lbl_803ED578:
|
__vt__15CARAMDvdRequest:
|
||||||
# ROM: 0x3EA578
|
# ROM: 0x3EA578
|
||||||
.4byte 0
|
.4byte 0
|
||||||
.4byte 0
|
.4byte 0
|
||||||
|
@ -14,8 +14,8 @@ lbl_803ED578:
|
||||||
.4byte PostCancelRequest__15CARAMDvdRequestFv
|
.4byte PostCancelRequest__15CARAMDvdRequestFv
|
||||||
.4byte GetMediaType__15CARAMDvdRequestCFv
|
.4byte GetMediaType__15CARAMDvdRequestCFv
|
||||||
|
|
||||||
.global lbl_803ED594
|
.global __vt__15CRealDvdRequest
|
||||||
lbl_803ED594:
|
__vt__15CRealDvdRequest:
|
||||||
# ROM: 0x3EA594
|
# ROM: 0x3EA594
|
||||||
.4byte 0
|
.4byte 0
|
||||||
.4byte 0
|
.4byte 0
|
||||||
|
@ -25,14 +25,6 @@ lbl_803ED594:
|
||||||
.4byte PostCancelRequest__15CRealDvdRequestFv
|
.4byte PostCancelRequest__15CRealDvdRequestFv
|
||||||
.4byte GetMediaType__15CRealDvdRequestCFv
|
.4byte GetMediaType__15CRealDvdRequestCFv
|
||||||
|
|
||||||
.section .sbss, "wa"
|
|
||||||
.balign 8
|
|
||||||
|
|
||||||
# TODO CDvdRequestManager
|
|
||||||
.global mManagerInstalled__14CDvdRequestSys
|
|
||||||
mManagerInstalled__14CDvdRequestSys:
|
|
||||||
.skip 0x8
|
|
||||||
|
|
||||||
.section .text, "ax"
|
.section .text, "ax"
|
||||||
|
|
||||||
.global __dt__15CARAMDvdRequestFv
|
.global __dt__15CARAMDvdRequestFv
|
||||||
|
@ -43,12 +35,12 @@ __dt__15CARAMDvdRequestFv:
|
||||||
/* 802FE5E0 002FB540 93 E1 00 0C */ stw r31, 0xc(r1)
|
/* 802FE5E0 002FB540 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||||
/* 802FE5E4 002FB544 7C 7F 1B 79 */ or. r31, r3, r3
|
/* 802FE5E4 002FB544 7C 7F 1B 79 */ or. r31, r3, r3
|
||||||
/* 802FE5E8 002FB548 41 82 00 30 */ beq lbl_802FE618
|
/* 802FE5E8 002FB548 41 82 00 30 */ beq lbl_802FE618
|
||||||
/* 802FE5EC 002FB54C 3C 60 80 3F */ lis r3, lbl_803ED578@ha
|
/* 802FE5EC 002FB54C 3C 60 80 3F */ lis r3, __vt__15CARAMDvdRequest@ha
|
||||||
/* 802FE5F0 002FB550 38 03 D5 78 */ addi r0, r3, lbl_803ED578@l
|
/* 802FE5F0 002FB550 38 03 D5 78 */ addi r0, r3, __vt__15CARAMDvdRequest@l
|
||||||
/* 802FE5F4 002FB554 90 1F 00 00 */ stw r0, 0(r31)
|
/* 802FE5F4 002FB554 90 1F 00 00 */ stw r0, 0(r31)
|
||||||
/* 802FE5F8 002FB558 41 82 00 10 */ beq lbl_802FE608
|
/* 802FE5F8 002FB558 41 82 00 10 */ beq lbl_802FE608
|
||||||
/* 802FE5FC 002FB55C 3C 60 80 3E */ lis r3, lbl_803D9FF8@ha
|
/* 802FE5FC 002FB55C 3C 60 80 3E */ lis r3, __vt__11CDvdRequest@ha
|
||||||
/* 802FE600 002FB560 38 03 9F F8 */ addi r0, r3, lbl_803D9FF8@l
|
/* 802FE600 002FB560 38 03 9F F8 */ addi r0, r3, __vt__11CDvdRequest@l
|
||||||
/* 802FE604 002FB564 90 1F 00 00 */ stw r0, 0(r31)
|
/* 802FE604 002FB564 90 1F 00 00 */ stw r0, 0(r31)
|
||||||
lbl_802FE608:
|
lbl_802FE608:
|
||||||
/* 802FE608 002FB568 7C 80 07 35 */ extsh. r0, r4
|
/* 802FE608 002FB568 7C 80 07 35 */ extsh. r0, r4
|
||||||
|
@ -188,8 +180,8 @@ __dt__15CRealDvdRequestFv:
|
||||||
/* 802FE794 002FB6F4 93 C1 00 08 */ stw r30, 8(r1)
|
/* 802FE794 002FB6F4 93 C1 00 08 */ stw r30, 8(r1)
|
||||||
/* 802FE798 002FB6F8 7C 7E 1B 79 */ or. r30, r3, r3
|
/* 802FE798 002FB6F8 7C 7E 1B 79 */ or. r30, r3, r3
|
||||||
/* 802FE79C 002FB6FC 41 82 00 7C */ beq lbl_802FE818
|
/* 802FE79C 002FB6FC 41 82 00 7C */ beq lbl_802FE818
|
||||||
/* 802FE7A0 002FB700 3C 80 80 3F */ lis r4, lbl_803ED594@ha
|
/* 802FE7A0 002FB700 3C 80 80 3F */ lis r4, __vt__15CRealDvdRequest@ha
|
||||||
/* 802FE7A4 002FB704 38 04 D5 94 */ addi r0, r4, lbl_803ED594@l
|
/* 802FE7A4 002FB704 38 04 D5 94 */ addi r0, r4, __vt__15CRealDvdRequest@l
|
||||||
/* 802FE7A8 002FB708 90 1E 00 00 */ stw r0, 0(r30)
|
/* 802FE7A8 002FB708 90 1E 00 00 */ stw r0, 0(r30)
|
||||||
/* 802FE7AC 002FB70C 81 83 00 00 */ lwz r12, 0(r3)
|
/* 802FE7AC 002FB70C 81 83 00 00 */ lwz r12, 0(r3)
|
||||||
/* 802FE7B0 002FB710 81 8C 00 10 */ lwz r12, 0x10(r12)
|
/* 802FE7B0 002FB710 81 8C 00 10 */ lwz r12, 0x10(r12)
|
||||||
|
@ -212,8 +204,8 @@ lbl_802FE7EC:
|
||||||
/* 802FE7F0 002FB750 48 07 2F 5D */ bl DVDClose
|
/* 802FE7F0 002FB750 48 07 2F 5D */ bl DVDClose
|
||||||
/* 802FE7F4 002FB754 28 1E 00 00 */ cmplwi r30, 0
|
/* 802FE7F4 002FB754 28 1E 00 00 */ cmplwi r30, 0
|
||||||
/* 802FE7F8 002FB758 41 82 00 10 */ beq lbl_802FE808
|
/* 802FE7F8 002FB758 41 82 00 10 */ beq lbl_802FE808
|
||||||
/* 802FE7FC 002FB75C 3C 60 80 3E */ lis r3, lbl_803D9FF8@ha
|
/* 802FE7FC 002FB75C 3C 60 80 3E */ lis r3, __vt__11CDvdRequest@ha
|
||||||
/* 802FE800 002FB760 38 03 9F F8 */ addi r0, r3, lbl_803D9FF8@l
|
/* 802FE800 002FB760 38 03 9F F8 */ addi r0, r3, __vt__11CDvdRequest@l
|
||||||
/* 802FE804 002FB764 90 1E 00 00 */ stw r0, 0(r30)
|
/* 802FE804 002FB764 90 1E 00 00 */ stw r0, 0(r30)
|
||||||
lbl_802FE808:
|
lbl_802FE808:
|
||||||
/* 802FE808 002FB768 7F E0 07 35 */ extsh. r0, r31
|
/* 802FE808 002FB768 7F E0 07 35 */ extsh. r0, r31
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
.include "macros.inc"
|
||||||
|
|
||||||
|
.section .sbss, "wa"
|
||||||
|
.balign 8
|
||||||
|
|
||||||
|
.global mManagerInstalled__14CDvdRequestSys
|
||||||
|
mManagerInstalled__14CDvdRequestSys:
|
||||||
|
.skip 0x1
|
|
@ -165,11 +165,11 @@ AsyncSeekRead__8CDvdFileFPvUi11ESeekOrigini:
|
||||||
/* 8034FA44 0034C9A4 38 C0 00 01 */ li r6, 1
|
/* 8034FA44 0034C9A4 38 C0 00 01 */ li r6, 1
|
||||||
/* 8034FA48 0034C9A8 7C 63 02 14 */ add r3, r3, r0
|
/* 8034FA48 0034C9A8 7C 63 02 14 */ add r3, r3, r0
|
||||||
/* 8034FA4C 0034C9AC 4B FF 4E 05 */ bl DMAToMRAM__12CARAMManagerFPvPvUiQ212CARAMManager12EDMAPriority
|
/* 8034FA4C 0034C9AC 4B FF 4E 05 */ bl DMAToMRAM__12CARAMManagerFPvPvUiQ212CARAMManager12EDMAPriority
|
||||||
/* 8034FA50 0034C9B0 3C A0 80 3E */ lis r5, lbl_803D9FF8@ha
|
/* 8034FA50 0034C9B0 3C A0 80 3E */ lis r5, __vt__11CDvdRequest@ha
|
||||||
/* 8034FA54 0034C9B4 3C 80 80 3F */ lis r4, lbl_803ED578@ha
|
/* 8034FA54 0034C9B4 3C 80 80 3F */ lis r4, __vt__15CARAMDvdRequest@ha
|
||||||
/* 8034FA58 0034C9B8 38 05 9F F8 */ addi r0, r5, lbl_803D9FF8@l
|
/* 8034FA58 0034C9B8 38 05 9F F8 */ addi r0, r5, __vt__11CDvdRequest@l
|
||||||
/* 8034FA5C 0034C9BC 90 1C 00 00 */ stw r0, 0(r28)
|
/* 8034FA5C 0034C9BC 90 1C 00 00 */ stw r0, 0(r28)
|
||||||
/* 8034FA60 0034C9C0 38 04 D5 78 */ addi r0, r4, lbl_803ED578@l
|
/* 8034FA60 0034C9C0 38 04 D5 78 */ addi r0, r4, __vt__15CARAMDvdRequest@l
|
||||||
/* 8034FA64 0034C9C4 90 1C 00 00 */ stw r0, 0(r28)
|
/* 8034FA64 0034C9C4 90 1C 00 00 */ stw r0, 0(r28)
|
||||||
/* 8034FA68 0034C9C8 90 7C 00 04 */ stw r3, 4(r28)
|
/* 8034FA68 0034C9C8 90 7C 00 04 */ stw r3, 4(r28)
|
||||||
lbl_8034FA6C:
|
lbl_8034FA6C:
|
||||||
|
@ -183,11 +183,11 @@ lbl_8034FA74:
|
||||||
/* 8034FA84 0034C9E4 4B FC 5D E9 */ bl __nw__FUlPCcPCc
|
/* 8034FA84 0034C9E4 4B FC 5D E9 */ bl __nw__FUlPCcPCc
|
||||||
/* 8034FA88 0034C9E8 7C 7C 1B 79 */ or. r28, r3, r3
|
/* 8034FA88 0034C9E8 7C 7C 1B 79 */ or. r28, r3, r3
|
||||||
/* 8034FA8C 0034C9EC 41 82 00 1C */ beq lbl_8034FAA8
|
/* 8034FA8C 0034C9EC 41 82 00 1C */ beq lbl_8034FAA8
|
||||||
/* 8034FA90 0034C9F0 3C 80 80 3E */ lis r4, lbl_803D9FF8@ha
|
/* 8034FA90 0034C9F0 3C 80 80 3E */ lis r4, __vt__11CDvdRequest@ha
|
||||||
/* 8034FA94 0034C9F4 3C 60 80 3F */ lis r3, lbl_803ED594@ha
|
/* 8034FA94 0034C9F4 3C 60 80 3F */ lis r3, __vt__15CRealDvdRequest@ha
|
||||||
/* 8034FA98 0034C9F8 38 04 9F F8 */ addi r0, r4, lbl_803D9FF8@l
|
/* 8034FA98 0034C9F8 38 04 9F F8 */ addi r0, r4, __vt__11CDvdRequest@l
|
||||||
/* 8034FA9C 0034C9FC 90 1C 00 00 */ stw r0, 0(r28)
|
/* 8034FA9C 0034C9FC 90 1C 00 00 */ stw r0, 0(r28)
|
||||||
/* 8034FAA0 0034CA00 38 03 D5 94 */ addi r0, r3, lbl_803ED594@l
|
/* 8034FAA0 0034CA00 38 03 D5 94 */ addi r0, r3, __vt__15CRealDvdRequest@l
|
||||||
/* 8034FAA4 0034CA04 90 1C 00 00 */ stw r0, 0(r28)
|
/* 8034FAA4 0034CA04 90 1C 00 00 */ stw r0, 0(r28)
|
||||||
lbl_8034FAA8:
|
lbl_8034FAA8:
|
||||||
/* 8034FAA8 0034CA08 3B 7C 00 04 */ addi r27, r28, 4
|
/* 8034FAA8 0034CA08 3B 7C 00 04 */ addi r27, r28, 4
|
||||||
|
|
|
@ -25,8 +25,8 @@ lbl_803D9FC0:
|
||||||
.4byte IGetDefaultAudioTrack__11CDummyWorldCFv
|
.4byte IGetDefaultAudioTrack__11CDummyWorldCFv
|
||||||
.4byte IGetAreaCount__11CDummyWorldFv
|
.4byte IGetAreaCount__11CDummyWorldFv
|
||||||
|
|
||||||
.global lbl_803D9FF8
|
.global __vt__11CDvdRequest
|
||||||
lbl_803D9FF8:
|
__vt__11CDvdRequest:
|
||||||
# ROM: 0x3D6FF8
|
# ROM: 0x3D6FF8
|
||||||
.4byte 0
|
.4byte 0
|
||||||
.4byte 0
|
.4byte 0
|
||||||
|
|
|
@ -532,7 +532,8 @@ LIBS = [
|
||||||
"Kyoto/Animation/CTimeScaleFunctions",
|
"Kyoto/Animation/CTimeScaleFunctions",
|
||||||
"Kyoto/Animation/IAnimReader",
|
"Kyoto/Animation/IAnimReader",
|
||||||
"Kyoto/Animation/CAllFormatsAnimSource",
|
"Kyoto/Animation/CAllFormatsAnimSource",
|
||||||
"Kyoto/CDvdRequest",
|
["Kyoto/CDvdRequestManager", True],
|
||||||
|
["Kyoto/CDvdRequest", True],
|
||||||
["Kyoto/Text/CColorInstruction", True],
|
["Kyoto/Text/CColorInstruction", True],
|
||||||
["Kyoto/Text/CColorOverrideInstruction", True],
|
["Kyoto/Text/CColorOverrideInstruction", True],
|
||||||
["Kyoto/Text/CDrawStringOptions", True],
|
["Kyoto/Text/CDrawStringOptions", True],
|
||||||
|
|
|
@ -29,8 +29,6 @@ public:
|
||||||
static void Free(const void* ptr);
|
static void Free(const void* ptr);
|
||||||
static int DMAToARAM(void*, void*, uint, EDMAPriority);
|
static int DMAToARAM(void*, void*, uint, EDMAPriority);
|
||||||
static int DMAToMRAM(void*, void*, uint, EDMAPriority);
|
static int DMAToMRAM(void*, void*, uint, EDMAPriority);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static uint mPreInitializeAlloc;
|
static uint mPreInitializeAlloc;
|
||||||
static const int kInvalidAlloc;
|
static const int kInvalidAlloc;
|
||||||
|
|
|
@ -1,24 +1,38 @@
|
||||||
#ifndef _CDVDREQUEST
|
#ifndef _CDVDREQUEST
|
||||||
#define _CDVDREQUEST
|
#define _CDVDREQUEST
|
||||||
|
|
||||||
|
#include "dolphin/dvd.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
class CDvdRequest {
|
class CDvdRequest {
|
||||||
public:
|
public:
|
||||||
virtual ~CDvdRequest() = 0; // 8
|
virtual ~CDvdRequest(){}; // 8
|
||||||
virtual void WaitUntilComplete() = 0; // c
|
virtual void WaitUntilComplete() = 0; // c
|
||||||
virtual bool IsComplete() = 0; // 10
|
virtual bool IsComplete() = 0; // 10
|
||||||
virtual void PostCancelRequest() = 0; // 14
|
virtual void PostCancelRequest() = 0; // 14
|
||||||
virtual int GetMediaType() const = 0; // 18
|
virtual int GetMediaType() const = 0; // 18
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class CRealDvdRequest : public CDvdRequest {
|
||||||
|
public:
|
||||||
|
~CRealDvdRequest();
|
||||||
|
void WaitUntilComplete();
|
||||||
|
bool IsComplete();
|
||||||
|
void PostCancelRequest();
|
||||||
|
int GetMediaType() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
DVDFileInfo mFileInfo;
|
||||||
|
};
|
||||||
|
|
||||||
class CARAMDvdRequest : public CDvdRequest {
|
class CARAMDvdRequest : public CDvdRequest {
|
||||||
public:
|
public:
|
||||||
CARAMDvdRequest(uint i) : x4_dmaReq(i) {}
|
CARAMDvdRequest(uint i) : x4_dmaReq(i) {}
|
||||||
void WaitUntilComplete() {};
|
void WaitUntilComplete();
|
||||||
bool IsComplete() {};
|
bool IsComplete();
|
||||||
void PostCancelRequest() {};
|
void PostCancelRequest();
|
||||||
int GetMediaType() const { return 1; }
|
int GetMediaType() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint x4_dmaReq;
|
uint x4_dmaReq;
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#ifndef _CDVDREQUESTMANAGER
|
||||||
|
#define _CDVDREQUESTMANAGER
|
||||||
|
|
||||||
|
class CDvdRequestSys {
|
||||||
|
public:
|
||||||
|
static bool mManagerInstalled;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _CDVDREQUESTMANAGER
|
|
@ -92,7 +92,11 @@ void DVDReset();
|
||||||
s32 DVDCancel(DVDCommandBlock* block);
|
s32 DVDCancel(DVDCommandBlock* block);
|
||||||
BOOL DVDOpen(char* fileName, DVDFileInfo* fileInfo);
|
BOOL DVDOpen(char* fileName, DVDFileInfo* fileInfo);
|
||||||
BOOL DVDFastOpen(s32 entrynum, DVDFileInfo* fileInfo);
|
BOOL DVDFastOpen(s32 entrynum, DVDFileInfo* fileInfo);
|
||||||
|
s32 DVDGetCommandBlockStatus(DVDCommandBlock* block);
|
||||||
|
BOOL DVDCancelAsync(DVDCommandBlock* block, DVDCBCallback callback);
|
||||||
|
s32 DVDCancel(DVDCommandBlock* block);
|
||||||
|
BOOL DVDCancelAllAsync(DVDCBCallback callback);
|
||||||
|
s32 DVDCancelAll(void);
|
||||||
BOOL DVDPrepareStreamAsync(DVDFileInfo* fInfo, u32 length, u32 offset, DVDCallback callback);
|
BOOL DVDPrepareStreamAsync(DVDFileInfo* fInfo, u32 length, u32 offset, DVDCallback callback);
|
||||||
s32 DVDPrepareStream(DVDFileInfo* fInfo, u32 length, u32 offset);
|
s32 DVDPrepareStream(DVDFileInfo* fInfo, u32 length, u32 offset);
|
||||||
|
|
||||||
|
|
|
@ -279,7 +279,7 @@ BOOL DVDGetCurrentDir(char* path, u32 maxlen) {
|
||||||
return DVDConvertEntrynumToPath((s32)currentDirectory, path, maxlen);
|
return DVDConvertEntrynumToPath((s32)currentDirectory, path, maxlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL DVDChangeDir(const char* dirName) {
|
BOOL DVDChangeDir(char* dirName) {
|
||||||
s32 entry;
|
s32 entry;
|
||||||
entry = DVDConvertPathToEntrynum(dirName);
|
entry = DVDConvertPathToEntrynum(dirName);
|
||||||
if ((entry < 0) || (entryIsDir(entry) == FALSE)) {
|
if ((entry < 0) || (entryIsDir(entry) == FALSE)) {
|
||||||
|
@ -440,7 +440,7 @@ s32 DVDSeekPrio(DVDFileInfo* fileInfo, s32 offset, s32 prio) {
|
||||||
static void cbForSeekSync(s32 result, DVDCommandBlock* block) { OSWakeupThread(&__DVDThreadQueue); }
|
static void cbForSeekSync(s32 result, DVDCommandBlock* block) { OSWakeupThread(&__DVDThreadQueue); }
|
||||||
|
|
||||||
/* This is based on the revolution SDK, these may not match in all cases */
|
/* This is based on the revolution SDK, these may not match in all cases */
|
||||||
s32 DVDGetFileInfoStatus(const DVDFileInfo* fileInfo) {
|
s32 DVDGetFileInfoStatus(DVDFileInfo* fileInfo) {
|
||||||
return DVDGetCommandBlockStatus(&fileInfo->cb);
|
return DVDGetCommandBlockStatus(&fileInfo->cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -459,7 +459,7 @@ BOOL DVDFastOpenDir(s32 entrynum, DVDDir* dir) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is based on the revolution SDK, these may not match in all cases */
|
/* This is based on the revolution SDK, these may not match in all cases */
|
||||||
BOOL DVDOpenDir(const char* dirName, DVDDir* dir) {
|
BOOL DVDOpenDir(char* dirName, DVDDir* dir) {
|
||||||
s32 entry;
|
s32 entry;
|
||||||
char currentDir[128];
|
char currentDir[128];
|
||||||
entry = DVDConvertPathToEntrynum(dirName);
|
entry = DVDConvertPathToEntrynum(dirName);
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
#include "Kyoto/CDvdRequest.hpp"
|
||||||
|
|
||||||
|
#include "Kyoto/CARAMManager.hpp"
|
||||||
|
|
||||||
|
#include "Kyoto/Alloc/CMemory.hpp"
|
||||||
|
|
||||||
|
CRealDvdRequest::~CRealDvdRequest() {
|
||||||
|
if (!IsComplete()) {
|
||||||
|
PostCancelRequest();
|
||||||
|
WaitUntilComplete();
|
||||||
|
}
|
||||||
|
DVDClose(&mFileInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CRealDvdRequest::WaitUntilComplete() {
|
||||||
|
while (!CRealDvdRequest::IsComplete()) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CRealDvdRequest::IsComplete() {
|
||||||
|
s32 status = DVDGetCommandBlockStatus(&mFileInfo.cb);
|
||||||
|
bool ret = false;
|
||||||
|
if (status == DVD_STATE_END || status == DVD_STATE_CANCELED) {
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CRealDvdRequest::PostCancelRequest() {
|
||||||
|
DVDCancelAsync(&mFileInfo.cb, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CRealDvdRequest::GetMediaType() const {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CARAMDvdRequest::WaitUntilComplete() {
|
||||||
|
if (CARAMManager::GetInvalidDMAHandle() == x4_dmaReq) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CARAMManager::WaitForDMACompletion(x4_dmaReq);
|
||||||
|
x4_dmaReq = CARAMManager::GetInvalidDMAHandle();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CARAMDvdRequest::IsComplete() {
|
||||||
|
if (x4_dmaReq != CARAMManager::GetInvalidDMAHandle()) {
|
||||||
|
if (!CARAMManager::IsDMACompleted(x4_dmaReq)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
x4_dmaReq = CARAMManager::GetInvalidDMAHandle();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CARAMDvdRequest::PostCancelRequest() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int CARAMDvdRequest::GetMediaType() const {
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
#include "Kyoto/CDvdRequestManager.hpp"
|
||||||
|
|
||||||
|
bool CDvdRequestSys::mManagerInstalled = false;
|
|
@ -89,17 +89,17 @@ CDvdFile::CDvdFile(const char* filename)
|
||||||
|
|
||||||
CDvdFile::~CDvdFile() { CloseFile(); }
|
CDvdFile::~CDvdFile() { CloseFile(); }
|
||||||
|
|
||||||
IDvdRequest* CDvdFile::SyncRead(void* dest, uint len) { AsyncSeekRead(dest, len, kSO_Cur, 0); }
|
CDvdRequest* CDvdFile::SyncRead(void* dest, uint len) { AsyncSeekRead(dest, len, kSO_Cur, 0); }
|
||||||
|
|
||||||
IDvdRequest* CDvdFile::SyncSeekRead(void* buf, uint len, ESeekOrigin origin, int offset) {}
|
CDvdRequest* CDvdFile::SyncSeekRead(void* buf, uint len, ESeekOrigin origin, int offset) {}
|
||||||
|
|
||||||
IDvdRequest* CDvdFile::AsyncSeekRead(void* dest, uint len, ESeekOrigin origin, int offset) {
|
CDvdRequest* CDvdFile::AsyncSeekRead(void* dest, uint len, ESeekOrigin origin, int offset) {
|
||||||
IDvdRequest* request;
|
CDvdRequest* request;
|
||||||
StallForARAMFile();
|
StallForARAMFile();
|
||||||
CalcFileOffset(offset, origin);
|
CalcFileOffset(offset, origin);
|
||||||
|
|
||||||
if (x8_) {
|
if (x8_) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
int roundedLen = (len + 31) & ~31;
|
int roundedLen = (len + 31) & ~31;
|
||||||
DCFlushRange(dest, roundedLen);
|
DCFlushRange(dest, roundedLen);
|
||||||
|
|
Loading…
Reference in New Issue