prime/asm/Kyoto/CDvdRequest.s

223 lines
9.5 KiB
ArmAsm

.include "macros.inc"
.section .data
.balign 8
.global __vt__15CARAMDvdRequest
__vt__15CARAMDvdRequest:
# ROM: 0x3EA578
.4byte 0
.4byte 0
.4byte __dt__15CARAMDvdRequestFv
.4byte WaitUntilComplete__15CARAMDvdRequestFv
.4byte IsComplete__15CARAMDvdRequestFv
.4byte PostCancelRequest__15CARAMDvdRequestFv
.4byte GetMediaType__15CARAMDvdRequestCFv
.global __vt__15CRealDvdRequest
__vt__15CRealDvdRequest:
# ROM: 0x3EA594
.4byte 0
.4byte 0
.4byte __dt__15CRealDvdRequestFv
.4byte WaitUntilComplete__15CRealDvdRequestFv
.4byte IsComplete__15CRealDvdRequestFv
.4byte PostCancelRequest__15CRealDvdRequestFv
.4byte GetMediaType__15CRealDvdRequestCFv
.section .text, "ax"
.global __dt__15CARAMDvdRequestFv
__dt__15CARAMDvdRequestFv:
/* 802FE5D4 002FB534 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802FE5D8 002FB538 7C 08 02 A6 */ mflr r0
/* 802FE5DC 002FB53C 90 01 00 14 */ stw r0, 0x14(r1)
/* 802FE5E0 002FB540 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802FE5E4 002FB544 7C 7F 1B 79 */ or. r31, r3, r3
/* 802FE5E8 002FB548 41 82 00 30 */ beq lbl_802FE618
/* 802FE5EC 002FB54C 3C 60 80 3F */ lis r3, __vt__15CARAMDvdRequest@ha
/* 802FE5F0 002FB550 38 03 D5 78 */ addi r0, r3, __vt__15CARAMDvdRequest@l
/* 802FE5F4 002FB554 90 1F 00 00 */ stw r0, 0(r31)
/* 802FE5F8 002FB558 41 82 00 10 */ beq lbl_802FE608
/* 802FE5FC 002FB55C 3C 60 80 3E */ lis r3, __vt__11CDvdRequest@ha
/* 802FE600 002FB560 38 03 9F F8 */ addi r0, r3, __vt__11CDvdRequest@l
/* 802FE604 002FB564 90 1F 00 00 */ stw r0, 0(r31)
lbl_802FE608:
/* 802FE608 002FB568 7C 80 07 35 */ extsh. r0, r4
/* 802FE60C 002FB56C 40 81 00 0C */ ble lbl_802FE618
/* 802FE610 002FB570 7F E3 FB 78 */ mr r3, r31
/* 802FE614 002FB574 48 01 73 1D */ bl Free__7CMemoryFPCv
lbl_802FE618:
/* 802FE618 002FB578 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802FE61C 002FB57C 7F E3 FB 78 */ mr r3, r31
/* 802FE620 002FB580 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802FE624 002FB584 7C 08 03 A6 */ mtlr r0
/* 802FE628 002FB588 38 21 00 10 */ addi r1, r1, 0x10
/* 802FE62C 002FB58C 4E 80 00 20 */ blr
.global GetMediaType__15CARAMDvdRequestCFv
GetMediaType__15CARAMDvdRequestCFv:
/* 802FE630 002FB590 38 60 00 00 */ li r3, 0
/* 802FE634 002FB594 4E 80 00 20 */ blr
.global PostCancelRequest__15CARAMDvdRequestFv
PostCancelRequest__15CARAMDvdRequestFv:
/* 802FE638 002FB598 4E 80 00 20 */ blr
.global IsComplete__15CARAMDvdRequestFv
IsComplete__15CARAMDvdRequestFv:
/* 802FE63C 002FB59C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802FE640 002FB5A0 7C 08 02 A6 */ mflr r0
/* 802FE644 002FB5A4 90 01 00 14 */ stw r0, 0x14(r1)
/* 802FE648 002FB5A8 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2)
/* 802FE64C 002FB5AC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802FE650 002FB5B0 7C 7F 1B 78 */ mr r31, r3
/* 802FE654 002FB5B4 80 63 00 04 */ lwz r3, 4(r3)
/* 802FE658 002FB5B8 7C 03 00 40 */ cmplw r3, r0
/* 802FE65C 002FB5BC 41 82 00 20 */ beq lbl_802FE67C
/* 802FE660 002FB5C0 48 04 61 65 */ bl IsDMACompleted__12CARAMManagerFUi
/* 802FE664 002FB5C4 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 802FE668 002FB5C8 40 82 00 0C */ bne lbl_802FE674
/* 802FE66C 002FB5CC 38 60 00 00 */ li r3, 0
/* 802FE670 002FB5D0 48 00 00 10 */ b lbl_802FE680
lbl_802FE674:
/* 802FE674 002FB5D4 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2)
/* 802FE678 002FB5D8 90 1F 00 04 */ stw r0, 4(r31)
lbl_802FE67C:
/* 802FE67C 002FB5DC 38 60 00 01 */ li r3, 1
lbl_802FE680:
/* 802FE680 002FB5E0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802FE684 002FB5E4 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802FE688 002FB5E8 7C 08 03 A6 */ mtlr r0
/* 802FE68C 002FB5EC 38 21 00 10 */ addi r1, r1, 0x10
/* 802FE690 002FB5F0 4E 80 00 20 */ blr
.global WaitUntilComplete__15CARAMDvdRequestFv
WaitUntilComplete__15CARAMDvdRequestFv:
/* 802FE694 002FB5F4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802FE698 002FB5F8 7C 08 02 A6 */ mflr r0
/* 802FE69C 002FB5FC 90 01 00 14 */ stw r0, 0x14(r1)
/* 802FE6A0 002FB600 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2)
/* 802FE6A4 002FB604 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802FE6A8 002FB608 7C 7F 1B 78 */ mr r31, r3
/* 802FE6AC 002FB60C 80 63 00 04 */ lwz r3, 4(r3)
/* 802FE6B0 002FB610 7C 03 00 40 */ cmplw r3, r0
/* 802FE6B4 002FB614 41 82 00 10 */ beq lbl_802FE6C4
/* 802FE6B8 002FB618 48 04 60 91 */ bl WaitForDMACompletion__12CARAMManagerFUi
/* 802FE6BC 002FB61C 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2)
/* 802FE6C0 002FB620 90 1F 00 04 */ stw r0, 4(r31)
lbl_802FE6C4:
/* 802FE6C4 002FB624 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802FE6C8 002FB628 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802FE6CC 002FB62C 7C 08 03 A6 */ mtlr r0
/* 802FE6D0 002FB630 38 21 00 10 */ addi r1, r1, 0x10
/* 802FE6D4 002FB634 4E 80 00 20 */ blr
.global GetMediaType__15CRealDvdRequestCFv
GetMediaType__15CRealDvdRequestCFv:
/* 802FE6D8 002FB638 38 60 00 01 */ li r3, 1
/* 802FE6DC 002FB63C 4E 80 00 20 */ blr
.global PostCancelRequest__15CRealDvdRequestFv
PostCancelRequest__15CRealDvdRequestFv:
/* 802FE6E0 002FB640 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802FE6E4 002FB644 7C 08 02 A6 */ mflr r0
/* 802FE6E8 002FB648 38 80 00 00 */ li r4, 0
/* 802FE6EC 002FB64C 38 63 00 04 */ addi r3, r3, 4
/* 802FE6F0 002FB650 90 01 00 14 */ stw r0, 0x14(r1)
/* 802FE6F4 002FB654 48 07 5B 19 */ bl DVDCancelAsync
/* 802FE6F8 002FB658 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802FE6FC 002FB65C 7C 08 03 A6 */ mtlr r0
/* 802FE700 002FB660 38 21 00 10 */ addi r1, r1, 0x10
/* 802FE704 002FB664 4E 80 00 20 */ blr
.global IsComplete__15CRealDvdRequestFv
IsComplete__15CRealDvdRequestFv:
/* 802FE708 002FB668 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802FE70C 002FB66C 7C 08 02 A6 */ mflr r0
/* 802FE710 002FB670 38 63 00 04 */ addi r3, r3, 4
/* 802FE714 002FB674 90 01 00 14 */ stw r0, 0x14(r1)
/* 802FE718 002FB678 48 07 59 ED */ bl DVDGetCommandBlockStatus
/* 802FE71C 002FB67C 2C 03 00 00 */ cmpwi r3, 0
/* 802FE720 002FB680 38 00 00 00 */ li r0, 0
/* 802FE724 002FB684 41 82 00 0C */ beq lbl_802FE730
/* 802FE728 002FB688 2C 03 00 0A */ cmpwi r3, 0xa
/* 802FE72C 002FB68C 40 82 00 08 */ bne lbl_802FE734
lbl_802FE730:
/* 802FE730 002FB690 38 00 00 01 */ li r0, 1
lbl_802FE734:
/* 802FE734 002FB694 7C 03 03 78 */ mr r3, r0
/* 802FE738 002FB698 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802FE73C 002FB69C 7C 08 03 A6 */ mtlr r0
/* 802FE740 002FB6A0 38 21 00 10 */ addi r1, r1, 0x10
/* 802FE744 002FB6A4 4E 80 00 20 */ blr
.global WaitUntilComplete__15CRealDvdRequestFv
WaitUntilComplete__15CRealDvdRequestFv:
/* 802FE748 002FB6A8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802FE74C 002FB6AC 7C 08 02 A6 */ mflr r0
/* 802FE750 002FB6B0 90 01 00 14 */ stw r0, 0x14(r1)
/* 802FE754 002FB6B4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802FE758 002FB6B8 7C 7F 1B 78 */ mr r31, r3
lbl_802FE75C:
/* 802FE75C 002FB6BC 7F E3 FB 78 */ mr r3, r31
/* 802FE760 002FB6C0 4B FF FF A9 */ bl IsComplete__15CRealDvdRequestFv
/* 802FE764 002FB6C4 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 802FE768 002FB6C8 41 82 FF F4 */ beq lbl_802FE75C
/* 802FE76C 002FB6CC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802FE770 002FB6D0 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802FE774 002FB6D4 7C 08 03 A6 */ mtlr r0
/* 802FE778 002FB6D8 38 21 00 10 */ addi r1, r1, 0x10
/* 802FE77C 002FB6DC 4E 80 00 20 */ blr
.global __dt__15CRealDvdRequestFv
__dt__15CRealDvdRequestFv:
/* 802FE780 002FB6E0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802FE784 002FB6E4 7C 08 02 A6 */ mflr r0
/* 802FE788 002FB6E8 90 01 00 14 */ stw r0, 0x14(r1)
/* 802FE78C 002FB6EC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802FE790 002FB6F0 7C 9F 23 78 */ mr r31, r4
/* 802FE794 002FB6F4 93 C1 00 08 */ stw r30, 8(r1)
/* 802FE798 002FB6F8 7C 7E 1B 79 */ or. r30, r3, r3
/* 802FE79C 002FB6FC 41 82 00 7C */ beq lbl_802FE818
/* 802FE7A0 002FB700 3C 80 80 3F */ lis r4, __vt__15CRealDvdRequest@ha
/* 802FE7A4 002FB704 38 04 D5 94 */ addi r0, r4, __vt__15CRealDvdRequest@l
/* 802FE7A8 002FB708 90 1E 00 00 */ stw r0, 0(r30)
/* 802FE7AC 002FB70C 81 83 00 00 */ lwz r12, 0(r3)
/* 802FE7B0 002FB710 81 8C 00 10 */ lwz r12, 0x10(r12)
/* 802FE7B4 002FB714 7D 89 03 A6 */ mtctr r12
/* 802FE7B8 002FB718 4E 80 04 21 */ bctrl
/* 802FE7BC 002FB71C 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 802FE7C0 002FB720 40 82 00 2C */ bne lbl_802FE7EC
/* 802FE7C4 002FB724 7F C3 F3 78 */ mr r3, r30
/* 802FE7C8 002FB728 81 9E 00 00 */ lwz r12, 0(r30)
/* 802FE7CC 002FB72C 81 8C 00 14 */ lwz r12, 0x14(r12)
/* 802FE7D0 002FB730 7D 89 03 A6 */ mtctr r12
/* 802FE7D4 002FB734 4E 80 04 21 */ bctrl
/* 802FE7D8 002FB738 7F C3 F3 78 */ mr r3, r30
/* 802FE7DC 002FB73C 81 9E 00 00 */ lwz r12, 0(r30)
/* 802FE7E0 002FB740 81 8C 00 0C */ lwz r12, 0xc(r12)
/* 802FE7E4 002FB744 7D 89 03 A6 */ mtctr r12
/* 802FE7E8 002FB748 4E 80 04 21 */ bctrl
lbl_802FE7EC:
/* 802FE7EC 002FB74C 38 7E 00 04 */ addi r3, r30, 4
/* 802FE7F0 002FB750 48 07 2F 5D */ bl DVDClose
/* 802FE7F4 002FB754 28 1E 00 00 */ cmplwi r30, 0
/* 802FE7F8 002FB758 41 82 00 10 */ beq lbl_802FE808
/* 802FE7FC 002FB75C 3C 60 80 3E */ lis r3, __vt__11CDvdRequest@ha
/* 802FE800 002FB760 38 03 9F F8 */ addi r0, r3, __vt__11CDvdRequest@l
/* 802FE804 002FB764 90 1E 00 00 */ stw r0, 0(r30)
lbl_802FE808:
/* 802FE808 002FB768 7F E0 07 35 */ extsh. r0, r31
/* 802FE80C 002FB76C 40 81 00 0C */ ble lbl_802FE818
/* 802FE810 002FB770 7F C3 F3 78 */ mr r3, r30
/* 802FE814 002FB774 48 01 71 1D */ bl Free__7CMemoryFPCv
lbl_802FE818:
/* 802FE818 002FB778 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802FE81C 002FB77C 7F C3 F3 78 */ mr r3, r30
/* 802FE820 002FB780 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802FE824 002FB784 83 C1 00 08 */ lwz r30, 8(r1)
/* 802FE828 002FB788 7C 08 03 A6 */ mtlr r0
/* 802FE82C 002FB78C 38 21 00 10 */ addi r1, r1, 0x10
/* 802FE830 002FB790 4E 80 00 20 */ blr