diff --git a/asm/JSystem/JUtility/JUTVideo/__ct__8JUTVideoFPC16_GXRenderModeObj.s b/asm/JSystem/JUtility/JUTVideo/__ct__8JUTVideoFPC16_GXRenderModeObj.s deleted file mode 100644 index db0d7616e4c..00000000000 --- a/asm/JSystem/JUtility/JUTVideo/__ct__8JUTVideoFPC16_GXRenderModeObj.s +++ /dev/null @@ -1,62 +0,0 @@ -lbl_802E4CF4: -/* 802E4CF4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E4CF8 7C 08 02 A6 */ mflr r0 -/* 802E4CFC 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E4D00 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802E4D04 93 C1 00 08 */ stw r30, 8(r1) -/* 802E4D08 7C 7F 1B 78 */ mr r31, r3 -/* 802E4D0C 7C 9E 23 78 */ mr r30, r4 -/* 802E4D10 3C 60 80 3D */ lis r3, __vt__8JUTVideo@ha /* 0x803CC980@ha */ -/* 802E4D14 38 03 C9 80 */ addi r0, r3, __vt__8JUTVideo@l /* 0x803CC980@l */ -/* 802E4D18 90 1F 00 00 */ stw r0, 0(r31) -/* 802E4D1C 38 00 00 00 */ li r0, 0 -/* 802E4D20 90 1F 00 04 */ stw r0, 4(r31) -/* 802E4D24 48 06 77 F1 */ bl VIInit -/* 802E4D28 38 00 00 01 */ li r0, 1 -/* 802E4D2C 98 1F 00 2C */ stb r0, 0x2c(r31) -/* 802E4D30 38 00 00 02 */ li r0, 2 -/* 802E4D34 90 1F 00 30 */ stw r0, 0x30(r31) -/* 802E4D38 7F E3 FB 78 */ mr r3, r31 -/* 802E4D3C 7F C4 F3 78 */ mr r4, r30 -/* 802E4D40 48 00 04 59 */ bl setRenderMode__8JUTVideoFPC16_GXRenderModeObj -/* 802E4D44 38 60 00 01 */ li r3, 1 -/* 802E4D48 48 06 8A F9 */ bl VISetBlack -/* 802E4D4C 48 06 89 49 */ bl VIFlush -/* 802E4D50 38 00 00 00 */ li r0, 0 -/* 802E4D54 90 1F 00 08 */ stw r0, 8(r31) -/* 802E4D58 48 06 8B 65 */ bl VIGetRetraceCount -/* 802E4D5C 90 7F 00 0C */ stw r3, 0xc(r31) -/* 802E4D60 38 00 00 01 */ li r0, 1 -/* 802E4D64 90 1F 00 10 */ stw r0, 0x10(r31) -/* 802E4D68 38 00 00 00 */ li r0, 0 -/* 802E4D6C 90 1F 00 18 */ stw r0, 0x18(r31) -/* 802E4D70 48 05 D9 A5 */ bl OSGetTick -/* 802E4D74 90 6D 8F BC */ stw r3, sVideoLastTick__8JUTVideo(r13) -/* 802E4D78 3C 60 00 0A */ lis r3, 0x000A /* 0x000A3930@ha */ -/* 802E4D7C 38 03 39 30 */ addi r0, r3, 0x3930 /* 0x000A3930@l */ -/* 802E4D80 90 0D 8F C0 */ stw r0, sVideoInterval__8JUTVideo(r13) -/* 802E4D84 3C 60 80 2E */ lis r3, preRetraceProc__8JUTVideoFUl@ha /* 0x802E4E50@ha */ -/* 802E4D88 38 63 4E 50 */ addi r3, r3, preRetraceProc__8JUTVideoFUl@l /* 0x802E4E50@l */ -/* 802E4D8C 48 06 74 55 */ bl VISetPreRetraceCallback -/* 802E4D90 90 7F 00 1C */ stw r3, 0x1c(r31) -/* 802E4D94 3C 60 80 2E */ lis r3, postRetraceProc__8JUTVideoFUl@ha /* 0x802E5144@ha */ -/* 802E4D98 38 63 51 44 */ addi r3, r3, postRetraceProc__8JUTVideoFUl@l /* 0x802E5144@l */ -/* 802E4D9C 48 06 74 89 */ bl VISetPostRetraceCallback -/* 802E4DA0 90 7F 00 20 */ stw r3, 0x20(r31) -/* 802E4DA4 38 00 00 00 */ li r0, 0 -/* 802E4DA8 90 1F 00 24 */ stw r0, 0x24(r31) -/* 802E4DAC 90 1F 00 28 */ stw r0, 0x28(r31) -/* 802E4DB0 38 7F 00 38 */ addi r3, r31, 0x38 -/* 802E4DB4 38 9F 00 34 */ addi r4, r31, 0x34 -/* 802E4DB8 38 A0 00 01 */ li r5, 1 -/* 802E4DBC 48 05 9B D9 */ bl OSInitMessageQueue -/* 802E4DC0 3C 60 80 2E */ lis r3, drawDoneCallback__8JUTVideoFv@ha /* 0x802E50BC@ha */ -/* 802E4DC4 38 63 50 BC */ addi r3, r3, drawDoneCallback__8JUTVideoFv@l /* 0x802E50BC@l */ -/* 802E4DC8 48 07 77 E5 */ bl GXSetDrawDoneCallback -/* 802E4DCC 7F E3 FB 78 */ mr r3, r31 -/* 802E4DD0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802E4DD4 83 C1 00 08 */ lwz r30, 8(r1) -/* 802E4DD8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E4DDC 7C 08 03 A6 */ mtlr r0 -/* 802E4DE0 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E4DE4 4E 80 00 20 */ blr diff --git a/asm/JSystem/JUtility/JUTVideo/drawDoneCallback__8JUTVideoFv.s b/asm/JSystem/JUtility/JUTVideo/drawDoneCallback__8JUTVideoFv.s deleted file mode 100644 index 35d397642af..00000000000 --- a/asm/JSystem/JUtility/JUTVideo/drawDoneCallback__8JUTVideoFv.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_802E50BC: -/* 802E50BC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E50C0 7C 08 02 A6 */ mflr r0 -/* 802E50C4 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E50C8 80 8D 8F D0 */ lwz r4, sManager__6JUTXfb(r13) -/* 802E50CC 28 04 00 00 */ cmplwi r4, 0 -/* 802E50D0 41 82 00 64 */ beq lbl_802E5134 -/* 802E50D4 38 60 00 00 */ li r3, 0 -/* 802E50D8 98 6D 8F C4 */ stb r3, data_80451544(r13) -/* 802E50DC 80 04 00 10 */ lwz r0, 0x10(r4) -/* 802E50E0 2C 00 00 01 */ cmpwi r0, 1 -/* 802E50E4 40 82 00 50 */ bne lbl_802E5134 -/* 802E50E8 80 04 00 1C */ lwz r0, 0x1c(r4) -/* 802E50EC 2C 00 00 01 */ cmpwi r0, 1 -/* 802E50F0 40 82 00 44 */ bne lbl_802E5134 -/* 802E50F4 90 64 00 1C */ stw r3, 0x1c(r4) -/* 802E50F8 A8 A4 00 16 */ lha r5, 0x16(r4) -/* 802E50FC 7C A0 07 35 */ extsh. r0, r5 -/* 802E5100 41 80 00 0C */ blt lbl_802E510C -/* 802E5104 54 A0 10 3A */ slwi r0, r5, 2 -/* 802E5108 7C 64 00 2E */ lwzx r3, r4, r0 -lbl_802E510C: -/* 802E510C 28 03 00 00 */ cmplwi r3, 0 -/* 802E5110 41 82 00 24 */ beq lbl_802E5134 -/* 802E5114 7C A0 07 35 */ extsh. r0, r5 -/* 802E5118 41 80 00 10 */ blt lbl_802E5128 -/* 802E511C 54 A0 10 3A */ slwi r0, r5, 2 -/* 802E5120 7C 64 00 2E */ lwzx r3, r4, r0 -/* 802E5124 48 00 00 08 */ b lbl_802E512C -lbl_802E5128: -/* 802E5128 38 60 00 00 */ li r3, 0 -lbl_802E512C: -/* 802E512C 48 06 86 99 */ bl VISetNextFrameBuffer -/* 802E5130 48 06 85 65 */ bl VIFlush -lbl_802E5134: -/* 802E5134 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E5138 7C 08 03 A6 */ mtlr r0 -/* 802E513C 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E5140 4E 80 00 20 */ blr diff --git a/asm/JSystem/JUtility/JUTVideo/postRetraceProc__8JUTVideoFUl.s b/asm/JSystem/JUtility/JUTVideo/postRetraceProc__8JUTVideoFUl.s deleted file mode 100644 index 4de7ed27ecb..00000000000 --- a/asm/JSystem/JUtility/JUTVideo/postRetraceProc__8JUTVideoFUl.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_802E5144: -/* 802E5144 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E5148 7C 08 02 A6 */ mflr r0 -/* 802E514C 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E5150 80 8D 8F B8 */ lwz r4, sManager__8JUTVideo(r13) -/* 802E5154 28 04 00 00 */ cmplwi r4, 0 -/* 802E5158 41 82 00 30 */ beq lbl_802E5188 -/* 802E515C 81 84 00 28 */ lwz r12, 0x28(r4) -/* 802E5160 28 0C 00 00 */ cmplwi r12, 0 -/* 802E5164 41 82 00 0C */ beq lbl_802E5170 -/* 802E5168 7D 89 03 A6 */ mtctr r12 -/* 802E516C 4E 80 04 21 */ bctrl -lbl_802E5170: -/* 802E5170 48 06 87 4D */ bl VIGetRetraceCount -/* 802E5174 7C 64 1B 78 */ mr r4, r3 -/* 802E5178 80 6D 8F B8 */ lwz r3, sManager__8JUTVideo(r13) -/* 802E517C 38 63 00 38 */ addi r3, r3, 0x38 -/* 802E5180 38 A0 00 00 */ li r5, 0 -/* 802E5184 48 05 98 71 */ bl OSSendMessage -lbl_802E5188: -/* 802E5188 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E518C 7C 08 03 A6 */ mtlr r0 -/* 802E5190 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E5194 4E 80 00 20 */ blr diff --git a/asm/JSystem/JUtility/JUTVideo/preRetraceProc__8JUTVideoFUl.s b/asm/JSystem/JUtility/JUTVideo/preRetraceProc__8JUTVideoFUl.s deleted file mode 100644 index 96956fd495d..00000000000 --- a/asm/JSystem/JUtility/JUTVideo/preRetraceProc__8JUTVideoFUl.s +++ /dev/null @@ -1,164 +0,0 @@ -lbl_802E4E50: -/* 802E4E50 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E4E54 7C 08 02 A6 */ mflr r0 -/* 802E4E58 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E4E5C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802E4E60 80 8D 8F B8 */ lwz r4, sManager__8JUTVideo(r13) -/* 802E4E64 28 04 00 00 */ cmplwi r4, 0 -/* 802E4E68 41 82 02 0C */ beq lbl_802E5074 -/* 802E4E6C 81 84 00 24 */ lwz r12, 0x24(r4) -/* 802E4E70 28 0C 00 00 */ cmplwi r12, 0 -/* 802E4E74 41 82 00 0C */ beq lbl_802E4E80 -/* 802E4E78 7D 89 03 A6 */ mtctr r12 -/* 802E4E7C 4E 80 04 21 */ bctrl -lbl_802E4E80: -/* 802E4E80 48 05 D8 95 */ bl OSGetTick -/* 802E4E84 80 0D 8F BC */ lwz r0, sVideoLastTick__8JUTVideo(r13) -/* 802E4E88 7C 00 18 50 */ subf r0, r0, r3 -/* 802E4E8C 90 0D 8F C0 */ stw r0, sVideoInterval__8JUTVideo(r13) -/* 802E4E90 90 6D 8F BC */ stw r3, sVideoLastTick__8JUTVideo(r13) -/* 802E4E94 83 ED 8F D0 */ lwz r31, sManager__6JUTXfb(r13) -/* 802E4E98 28 1F 00 00 */ cmplwi r31, 0 -/* 802E4E9C 40 82 00 14 */ bne lbl_802E4EB0 -/* 802E4EA0 38 60 00 01 */ li r3, 1 -/* 802E4EA4 48 06 89 9D */ bl VISetBlack -/* 802E4EA8 48 06 87 ED */ bl VIFlush -/* 802E4EAC 48 00 01 C8 */ b lbl_802E5074 -lbl_802E4EB0: -/* 802E4EB0 88 0D 8F CC */ lbz r0, data_8045154C(r13) -/* 802E4EB4 7C 00 07 75 */ extsb. r0, r0 -/* 802E4EB8 40 82 00 14 */ bne lbl_802E4ECC -/* 802E4EBC 38 00 00 00 */ li r0, 0 -/* 802E4EC0 90 0D 8F C8 */ stw r0, frameBuffer(r13) -/* 802E4EC4 38 00 00 01 */ li r0, 1 -/* 802E4EC8 98 0D 8F CC */ stb r0, data_8045154C(r13) -lbl_802E4ECC: -/* 802E4ECC 80 8D 8F C8 */ lwz r4, frameBuffer(r13) -/* 802E4ED0 28 04 00 00 */ cmplwi r4, 0 -/* 802E4ED4 41 82 00 1C */ beq lbl_802E4EF0 -/* 802E4ED8 80 6D 8F B8 */ lwz r3, sManager__8JUTVideo(r13) -/* 802E4EDC 80 C3 00 04 */ lwz r6, 4(r3) -/* 802E4EE0 80 6D 8F A8 */ lwz r3, sDirectPrint__14JUTDirectPrint(r13) -/* 802E4EE4 A0 A6 00 04 */ lhz r5, 4(r6) -/* 802E4EE8 A0 C6 00 06 */ lhz r6, 6(r6) -/* 802E4EEC 4B FF F6 81 */ bl changeFrameBuffer__14JUTDirectPrintFPvUsUs -lbl_802E4EF0: -/* 802E4EF0 80 6D 8F B8 */ lwz r3, sManager__8JUTVideo(r13) -/* 802E4EF4 88 03 00 2C */ lbz r0, 0x2c(r3) -/* 802E4EF8 28 00 00 01 */ cmplwi r0, 1 -/* 802E4EFC 40 82 00 38 */ bne lbl_802E4F34 -/* 802E4F00 80 83 00 30 */ lwz r4, 0x30(r3) -/* 802E4F04 2C 04 00 00 */ cmpwi r4, 0 -/* 802E4F08 40 81 00 08 */ ble lbl_802E4F10 -/* 802E4F0C 38 84 FF FF */ addi r4, r4, -1 -lbl_802E4F10: -/* 802E4F10 90 83 00 30 */ stw r4, 0x30(r3) -/* 802E4F14 30 04 FF FF */ addic r0, r4, -1 -/* 802E4F18 7C 00 21 10 */ subfe r0, r0, r4 -/* 802E4F1C 80 6D 8F B8 */ lwz r3, sManager__8JUTVideo(r13) -/* 802E4F20 98 03 00 2C */ stb r0, 0x2c(r3) -/* 802E4F24 38 60 00 01 */ li r3, 1 -/* 802E4F28 48 06 89 19 */ bl VISetBlack -/* 802E4F2C 48 06 87 69 */ bl VIFlush -/* 802E4F30 48 00 01 44 */ b lbl_802E5074 -lbl_802E4F34: -/* 802E4F34 28 1F 00 00 */ cmplwi r31, 0 -/* 802E4F38 40 82 00 14 */ bne lbl_802E4F4C -/* 802E4F3C 38 60 00 01 */ li r3, 1 -/* 802E4F40 48 06 89 01 */ bl VISetBlack -/* 802E4F44 48 06 87 51 */ bl VIFlush -/* 802E4F48 48 00 01 2C */ b lbl_802E5074 -lbl_802E4F4C: -/* 802E4F4C 80 1F 00 10 */ lwz r0, 0x10(r31) -/* 802E4F50 2C 00 00 03 */ cmpwi r0, 3 -/* 802E4F54 41 82 00 0C */ beq lbl_802E4F60 -/* 802E4F58 2C 00 00 02 */ cmpwi r0, 2 -/* 802E4F5C 40 82 00 80 */ bne lbl_802E4FDC -lbl_802E4F60: -/* 802E4F60 88 0D 8F C4 */ lbz r0, data_80451544(r13) -/* 802E4F64 28 00 00 00 */ cmplwi r0, 0 -/* 802E4F68 40 82 01 0C */ bne lbl_802E5074 -/* 802E4F6C A8 1F 00 16 */ lha r0, 0x16(r31) -/* 802E4F70 7C 03 07 35 */ extsh. r3, r0 -/* 802E4F74 B0 1F 00 18 */ sth r0, 0x18(r31) -/* 802E4F78 40 80 00 14 */ bge lbl_802E4F8C -/* 802E4F7C 38 60 00 01 */ li r3, 1 -/* 802E4F80 48 06 88 C1 */ bl VISetBlack -/* 802E4F84 48 06 87 11 */ bl VIFlush -/* 802E4F88 48 00 00 EC */ b lbl_802E5074 -lbl_802E4F8C: -/* 802E4F8C A8 7F 00 18 */ lha r3, 0x18(r31) -/* 802E4F90 7C 60 07 35 */ extsh. r0, r3 -/* 802E4F94 41 80 00 10 */ blt lbl_802E4FA4 -/* 802E4F98 54 60 10 3A */ slwi r0, r3, 2 -/* 802E4F9C 7C 7F 00 2E */ lwzx r3, r31, r0 -/* 802E4FA0 48 00 00 08 */ b lbl_802E4FA8 -lbl_802E4FA4: -/* 802E4FA4 38 60 00 00 */ li r3, 0 -lbl_802E4FA8: -/* 802E4FA8 48 06 88 1D */ bl VISetNextFrameBuffer -/* 802E4FAC 48 06 86 E9 */ bl VIFlush -/* 802E4FB0 38 60 00 00 */ li r3, 0 -/* 802E4FB4 48 06 88 8D */ bl VISetBlack -/* 802E4FB8 A8 7F 00 18 */ lha r3, 0x18(r31) -/* 802E4FBC 7C 60 07 35 */ extsh. r0, r3 -/* 802E4FC0 41 80 00 10 */ blt lbl_802E4FD0 -/* 802E4FC4 54 60 10 3A */ slwi r0, r3, 2 -/* 802E4FC8 7C 1F 00 2E */ lwzx r0, r31, r0 -/* 802E4FCC 48 00 00 08 */ b lbl_802E4FD4 -lbl_802E4FD0: -/* 802E4FD0 38 00 00 00 */ li r0, 0 -lbl_802E4FD4: -/* 802E4FD4 90 0D 8F C8 */ stw r0, frameBuffer(r13) -/* 802E4FD8 48 00 00 9C */ b lbl_802E5074 -lbl_802E4FDC: -/* 802E4FDC 2C 00 00 01 */ cmpwi r0, 1 -/* 802E4FE0 40 82 00 94 */ bne lbl_802E5074 -/* 802E4FE4 80 1F 00 1C */ lwz r0, 0x1c(r31) -/* 802E4FE8 2C 00 00 00 */ cmpwi r0, 0 -/* 802E4FEC 40 82 00 84 */ bne lbl_802E5070 -/* 802E4FF0 A8 1F 00 16 */ lha r0, 0x16(r31) -/* 802E4FF4 7C 00 07 35 */ extsh. r0, r0 -/* 802E4FF8 41 80 00 70 */ blt lbl_802E5068 -/* 802E4FFC B0 1F 00 18 */ sth r0, 0x18(r31) -/* 802E5000 A8 7F 00 18 */ lha r3, 0x18(r31) -/* 802E5004 7C 60 07 35 */ extsh. r0, r3 -/* 802E5008 41 80 00 10 */ blt lbl_802E5018 -/* 802E500C 54 60 10 3A */ slwi r0, r3, 2 -/* 802E5010 7C 7F 00 2E */ lwzx r3, r31, r0 -/* 802E5014 48 00 00 08 */ b lbl_802E501C -lbl_802E5018: -/* 802E5018 38 60 00 00 */ li r3, 0 -lbl_802E501C: -/* 802E501C 38 80 00 01 */ li r4, 1 -/* 802E5020 48 07 82 E5 */ bl GXCopyDisp -/* 802E5024 48 07 6E A9 */ bl GXFlush -/* 802E5028 38 00 00 02 */ li r0, 2 -/* 802E502C 90 1F 00 1C */ stw r0, 0x1c(r31) -/* 802E5030 A8 7F 00 18 */ lha r3, 0x18(r31) -/* 802E5034 7C 60 07 35 */ extsh. r0, r3 -/* 802E5038 41 80 00 10 */ blt lbl_802E5048 -/* 802E503C 54 60 10 3A */ slwi r0, r3, 2 -/* 802E5040 7C 1F 00 2E */ lwzx r0, r31, r0 -/* 802E5044 48 00 00 08 */ b lbl_802E504C -lbl_802E5048: -/* 802E5048 38 00 00 00 */ li r0, 0 -lbl_802E504C: -/* 802E504C 90 0D 8F C8 */ stw r0, frameBuffer(r13) -/* 802E5050 48 06 87 E1 */ bl VIGetNextFrameBuffer -/* 802E5054 28 03 00 00 */ cmplwi r3, 0 -/* 802E5058 41 82 00 18 */ beq lbl_802E5070 -/* 802E505C 38 60 00 00 */ li r3, 0 -/* 802E5060 48 06 87 E1 */ bl VISetBlack -/* 802E5064 48 00 00 0C */ b lbl_802E5070 -lbl_802E5068: -/* 802E5068 38 60 00 01 */ li r3, 1 -/* 802E506C 48 06 87 D5 */ bl VISetBlack -lbl_802E5070: -/* 802E5070 48 06 86 25 */ bl VIFlush -lbl_802E5074: -/* 802E5074 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802E5078 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E507C 7C 08 03 A6 */ mtlr r0 -/* 802E5080 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E5084 4E 80 00 20 */ blr diff --git a/include/JSystem/JUtility/JUTDirectPrint.h b/include/JSystem/JUtility/JUTDirectPrint.h index 8f2c2fbb4aa..8fac8cf23c6 100644 --- a/include/JSystem/JUtility/JUTDirectPrint.h +++ b/include/JSystem/JUtility/JUTDirectPrint.h @@ -22,6 +22,8 @@ public: /* 802E4240 */ static JUTDirectPrint* start(); + static JUTDirectPrint* getManager() { return sDirectPrint; } + private: static u8 sAsciiTable[128]; static u32 sFontData[64]; diff --git a/include/JSystem/JUtility/JUTException.h b/include/JSystem/JUtility/JUTException.h index 129d6457459..eed808f7ba0 100644 --- a/include/JSystem/JUtility/JUTException.h +++ b/include/JSystem/JUtility/JUTException.h @@ -3,6 +3,7 @@ #include "JSystem/JKernel/JKRThread.h" #include "JSystem/JUtility/JUTGamePad.h" +#include "Runtime.PPCEABI.H/__va_arg.h" #include "dolphin/gx/GX.h" #include "dolphin/os/OS.h" #include "dolphin/types.h" @@ -26,7 +27,7 @@ public: /* 802E1D5C */ JUTException(JUTDirectPrint*); /* 802E1E40 */ void create(JUTDirectPrint*); /* 802E1FCC */ void errorHandler(u16, OSContext*, u32, u32); - /* 802E20C0 */ void panic_f_va(char const*, int, char const*, __va_list_struct*); + /* 802E20C0 */ void panic_f_va(char const*, int, char const*, va_list); /* 802E21FC */ static void panic_f(char const*, int, char const*, ...); /* 802E227C */ void setFPException(u32); /* 802E22C4 */ void showFloatSub(int, f32); diff --git a/include/JSystem/JUtility/JUTVideo.h b/include/JSystem/JUtility/JUTVideo.h index 2657239126c..5660decd258 100644 --- a/include/JSystem/JUtility/JUTVideo.h +++ b/include/JSystem/JUtility/JUTVideo.h @@ -8,28 +8,30 @@ class JUTVideo { public: - typedef void (*CallbackFn)(void); + typedef void (*Callback)(u32); - JUTVideo(_GXRenderModeObj const*); + JUTVideo(GXRenderModeObj const*); virtual ~JUTVideo(); // TODO: return types not confirmed - /* 802E4C54 */ static JUTVideo* createManager(_GXRenderModeObj const*); + /* 802E4C54 */ static JUTVideo* createManager(GXRenderModeObj const*); /* 802E4CAC */ static void destroyManager(); - /* 802E4E50 */ void preRetraceProc(u32); /* 802E5088 */ void drawDoneStart(); /* 802E50B0 */ void dummyNoDrawWait(); - /* 802E50BC */ void drawDoneCallback(); - /* 802E5144 */ void postRetraceProc(u32); - /* 802E5198 */ void setRenderMode(_GXRenderModeObj const*); + /* 802E5198 */ void setRenderMode(GXRenderModeObj const*); /* 802E5210 */ void waitRetraceIfNeed(); - static JUTVideo* getManager() { return sManager; } - _GXRenderModeObj* getRenderMode() const { return mRenderObj; } + /* 802E4E50 */ static void preRetraceProc(u32); + /* 802E5144 */ static void postRetraceProc(u32); + /* 802E50BC */ static void drawDoneCallback(); + static JUTVideo* getManager() { return sManager; } + GXRenderModeObj* getRenderMode() const { return mRenderObj; } + +private: static JUTVideo* sManager; - static u32 sVideoLastTick; - static u32 sVideoInterval; + static OSTick sVideoLastTick; + static OSTick sVideoInterval; private: /* 0x04 */ _GXRenderModeObj* mRenderObj; @@ -40,12 +42,16 @@ private: /* 0x18 */ u32 field_0x18; /* 0x1C */ VIRetraceCallback mPreRetraceCallback; /* 0x20 */ VIRetraceCallback mPostRetraceCallback; - /* 0x24 */ CallbackFn unknown_callback_1; - /* 0x28 */ CallbackFn unknown_callback_2; + /* 0x24 */ Callback mPreCallback; + /* 0x28 */ Callback mPostCallback; /* 0x2C */ bool mSetBlack; /* 0x30 */ s32 mSetBlackFrameCount; /* 0x34 */ OSMessage mMessage; /* 0x38 */ OSMessageQueue mMessageQueue; }; +inline JUTVideo* JUTGetVideoManager() { + return JUTVideo::getManager(); +} + #endif /* JUTVIDEO_H */ diff --git a/include/JSystem/JUtility/JUTXfb.h b/include/JSystem/JUtility/JUTXfb.h index a523452d252..240fb27a08c 100644 --- a/include/JSystem/JUtility/JUTXfb.h +++ b/include/JSystem/JUtility/JUTXfb.h @@ -23,6 +23,36 @@ public: /* 802E5424 */ static void destroyManager(); /* 802E5454 */ void initiate(u16, u16, JKRHeap*, JUTXfb::EXfbNumber); + s32 getBufferNum() const { return mBufferNum; } + s16 getDrawnXfbIndex() const { return mDrawnXfbIndex; } + s16 getDrawningXfbIndex() const { return mDrawingXfbIndex; } + s16 getDisplayingXfbIndex() const { return mDisplayingXfbIndex; } + s32 getSDrawingFlag() const { return mSDrawingFlag; } + + void* getDrawnXfb() const { + if (mDrawnXfbIndex >= 0) + return mBuffer[mDrawnXfbIndex]; + return NULL; + } + + void* getDrawningXfb() const { + if (mDrawingXfbIndex >= 0) + return mBuffer[mDrawingXfbIndex]; + return NULL; + } + + void* getDisplayingXfb() const { + if (mDisplayingXfbIndex >= 0) + return mBuffer[mDisplayingXfbIndex]; + return NULL; + } + + void setDisplayingXfbIndex(s16 index) { mDisplayingXfbIndex = index; } + void setSDrawingFlag(s32 flag) { mSDrawingFlag = flag; } + + static JUTXfb* getManager() { return sManager; } + +private: static JUTXfb* sManager; private: diff --git a/include/dolphin/gx/GX.h b/include/dolphin/gx/GX.h index 5fac58593ce..9fd2cd31212 100644 --- a/include/dolphin/gx/GX.h +++ b/include/dolphin/gx/GX.h @@ -291,7 +291,7 @@ typedef enum _GXTevAlphaArg { /* 0x6 */ GX_CA_ZERO, } GXTevAlphaArg; -struct _GXRenderModeObj { +typedef struct _GXRenderModeObj { s32 vi_tv_mode; u16 fb_width; u16 efb_height; @@ -305,7 +305,7 @@ struct _GXRenderModeObj { u8 antialiasing; u8 sample_pattern[12][2]; u8 vfilter[7]; -}; +} GXRenderModeObj; struct _GXTexObj { u32 texture_filter; diff --git a/include/dolphin/os/OS.h b/include/dolphin/os/OS.h index e6620ecac0c..bdc80cb1cd1 100644 --- a/include/dolphin/os/OS.h +++ b/include/dolphin/os/OS.h @@ -4,6 +4,7 @@ #ifndef OS_H_ #define OS_H_ +#include "Runtime.PPCEABI.H/__va_arg.h" #include "dolphin/types.h" /* TODO: more structs, and get rid of the ones that are faked! */ @@ -122,8 +123,6 @@ struct OSThread { void* data[2]; }; -struct __va_list_struct; - extern "C" { s32 OSEnableScheduler(void); s32 OSDisableScheduler(void); @@ -165,7 +164,7 @@ void OSReportDisable(void); void OSReportEnable(void); void OSReportForceEnableOff(void); void OSReportForceEnableOn(void); -void OSVReport(const char* format, __va_list_struct* list); +void OSVReport(const char* format, va_list list); void OSTicksToCalendarTime(OSTime ticks, OSCalendarTime* out_time); OSTime OSGetTime(void); @@ -202,7 +201,7 @@ u8* OSGetStackPointer(void); void OSSwitchFiberEx(u32, u32, u32, u32, u32, u32); -void OSVAttention(const char* fmt, __va_list_struct* va_list); +void OSVAttention(const char* fmt, va_list args); void OSReportInit(void); diff --git a/include/dolphin/vi/vi.h b/include/dolphin/vi/vi.h index 586819f535d..350f64483d6 100644 --- a/include/dolphin/vi/vi.h +++ b/include/dolphin/vi/vi.h @@ -1,10 +1,21 @@ #ifndef VI_H #define VI_H +#include "dolphin/gx/GX.h" #include "dolphin/types.h" typedef void (*VIRetraceCallback)(u32); extern "C" void VIWaitForRetrace(void); +extern "C" void VISetNextFrameBuffer(void*); +extern "C" VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback); +extern "C" VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback); +extern "C" void VIInit(); +extern "C" void VIConfigure(GXRenderModeObj*); +extern "C" void VIFlush(); +extern "C" void* VIGetNextFrameBuffer(); +extern "C" void* VIGetCurrentFrameBuffer(); +extern "C" void VISetBlack(BOOL); +extern "C" u32 VIGetRetraceCount(); #endif /* VI_H */ diff --git a/include/msl_c/string.h b/include/msl_c/string.h index ceb5696ed19..902f205f09f 100644 --- a/include/msl_c/string.h +++ b/include/msl_c/string.h @@ -1,6 +1,7 @@ #ifndef MSL_STRING_H_ #define MSL_STRING_H_ +#include "Runtime.PPCEABI.H/__va_arg.h" #include "dolphin/types.h" // TODO: move to MSL_C.PPCEABI.bare.H/ @@ -20,9 +21,7 @@ int tolower(int); int sprintf(char*, const char*, ...); int printf(const char*, ...); int snprintf(char*, u32, const char*, ...); - -struct __va_list_struct; -size_t vsnprintf(char* buffer, size_t buffer_size, const char* format, __va_list_struct* args); +size_t vsnprintf(char* buffer, size_t buffer_size, const char* format, va_list args); } #endif \ No newline at end of file diff --git a/libs/JSystem/JUtility/JUTException.cpp b/libs/JSystem/JUtility/JUTException.cpp index 44f9f6cc521..90f3fa6d340 100644 --- a/libs/JSystem/JUtility/JUTException.cpp +++ b/libs/JSystem/JUtility/JUTException.cpp @@ -4,6 +4,7 @@ // #include "JSystem/JUtility/JUTException.h" +#include "Runtime.PPCEABI.H/__va_arg.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -336,7 +337,7 @@ static u8 context[712]; #pragma optimization_level 0 #pragma optimizewithasm off asm void JUTException::panic_f_va(char const* param_0, int param_1, char const* param_2, - __va_list_struct* param_3) { + va_list param_3) { nofralloc #include "asm/JSystem/JUtility/JUTException/panic_f_va__12JUTExceptionFPCciPCcP16__va_list_struct.s" } diff --git a/libs/JSystem/JUtility/JUTVideo.cpp b/libs/JSystem/JUtility/JUTVideo.cpp index e1191a10ff3..cff1fe483ed 100644 --- a/libs/JSystem/JUtility/JUTVideo.cpp +++ b/libs/JSystem/JUtility/JUTVideo.cpp @@ -4,72 +4,41 @@ // #include "JSystem/JUtility/JUTVideo.h" +#include "JSystem/JUtility/JUTDirectPrint.h" +#include "JSystem/JUtility/JUTXfb.h" #include "dol2asm.h" #include "dolphin/types.h" - -// -// Types: -// - -struct JUTXfb { - static u8 sManager[4 + 4 /* padding */]; -}; - -struct JUTDirectPrint { - /* 802E456C */ void changeFrameBuffer(void*, u16, u16); - - static u8 sDirectPrint[4 + 4 /* padding */]; -}; - -// -// Forward References: -// - -extern "C" void createManager__8JUTVideoFPC16_GXRenderModeObj(); -extern "C" void destroyManager__8JUTVideoFv(); -extern "C" void __ct__8JUTVideoFPC16_GXRenderModeObj(); -extern "C" void __dt__8JUTVideoFv(); -extern "C" void preRetraceProc__8JUTVideoFUl(); -extern "C" void drawDoneStart__8JUTVideoFv(); -extern "C" void dummyNoDrawWait__8JUTVideoFv(); -extern "C" void drawDoneCallback__8JUTVideoFv(); -extern "C" void postRetraceProc__8JUTVideoFUl(); -extern "C" void setRenderMode__8JUTVideoFPC16_GXRenderModeObj(); -extern "C" void waitRetraceIfNeed__8JUTVideoFv(); -extern "C" u8 sManager__8JUTVideo[4]; -extern "C" u8 sVideoLastTick__8JUTVideo[4]; -extern "C" u8 sVideoInterval__8JUTVideo[4]; +#include "dolphin/vi/vi.h" // // External References: // -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void changeFrameBuffer__14JUTDirectPrintFPvUsUs(); -extern "C" void VISetPreRetraceCallback(VIRetraceCallback); -extern "C" void VISetPostRetraceCallback(VIRetraceCallback); -extern "C" void VIInit(); -extern "C" void VIWaitForRetrace(); -extern "C" void VIConfigure(_GXRenderModeObj*); -extern "C" void VIFlush(); -extern "C" void VISetNextFrameBuffer(); -extern "C" void VIGetNextFrameBuffer(); -extern "C" void VISetBlack(s32); -extern "C" u32 VIGetRetraceCount(); extern "C" void GXSetDrawDone(); -extern "C" void GXCopyDisp(); -extern "C" u8 sDirectPrint__14JUTDirectPrint[4 + 4 /* padding */]; -extern "C" u8 sManager__6JUTXfb[4 + 4 /* padding */]; +extern "C" void GXCopyDisp(void*, BOOL); // // Declarations: // -/* ############################################################################################## */ /* 80451538-8045153C 000A38 0004+00 4/4 18/18 1/1 .sbss sManager__8JUTVideo */ JUTVideo* JUTVideo::sManager; +/* 8045153C-80451540 000A3C 0004+00 2/2 1/1 0/0 .sbss sVideoLastTick__8JUTVideo */ +OSTick JUTVideo::sVideoLastTick; + +/* 80451540-80451544 000A40 0004+00 2/2 1/1 0/0 .sbss sVideoInterval__8JUTVideo */ +OSTick JUTVideo::sVideoInterval; + +/* 80451544-80451548 000A44 0004+00 4/4 0/0 0/0 .sbss None */ +static bool data_80451544; + +/* 80451548-8045154C 000A48 0004+00 1/1 0/0 0/0 .sbss frameBuffer$2222 */ +static void* frameBuffer; + +/* 8045154C-80451550 000A4C 0004+00 1/1 0/0 0/0 .sbss None */ +static s8 data_8045154C; + /* 802E4C54-802E4CAC 2DF594 0058+00 0/0 1/1 0/0 .text * createManager__8JUTVideoFPC16_GXRenderModeObj */ JUTVideo* JUTVideo::createManager(_GXRenderModeObj const* param_0) { @@ -87,25 +56,8 @@ void JUTVideo::destroyManager() { } } -/* ############################################################################################## */ -/* 803CC980-803CC990 029AA0 000C+04 2/2 0/0 0/0 .data __vt__8JUTVideo */ -SECTION_DATA extern void* __vt__8JUTVideo[3 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8JUTVideoFv, - /* padding */ - NULL, -}; - -/* 8045153C-80451540 000A3C 0004+00 2/2 1/1 0/0 .sbss sVideoLastTick__8JUTVideo */ -u32 JUTVideo::sVideoLastTick; - -/* 80451540-80451544 000A40 0004+00 2/2 1/1 0/0 .sbss sVideoInterval__8JUTVideo */ -u32 JUTVideo::sVideoInterval; - /* 802E4CF4-802E4DE8 2DF634 00F4+00 1/1 0/0 0/0 .text __ct__8JUTVideoFPC16_GXRenderModeObj */ -#ifdef NONMATCHING -JUTVideo::JUTVideo(_GXRenderModeObj const* param_0) { +JUTVideo::JUTVideo(GXRenderModeObj const* param_0) { mRenderObj = NULL; VIInit(); mSetBlack = true; @@ -120,22 +72,12 @@ JUTVideo::JUTVideo(_GXRenderModeObj const* param_0) { sVideoLastTick = OSGetTick(); sVideoInterval = 670000; mPreRetraceCallback = VISetPreRetraceCallback(preRetraceProc); - mPostRetraceCallback = VISetPreRetraceCallback(postRetraceProc); - unknown_callback_1 = NULL; - unknown_callback_2 = NULL; - OSInitMessageQueue(mMessageQueue, mMessage, 1); + mPostRetraceCallback = VISetPostRetraceCallback(postRetraceProc); + mPreCallback = NULL; + mPostCallback = NULL; + OSInitMessageQueue(&mMessageQueue, &mMessage, 1); GXSetDrawDoneCallback(drawDoneCallback); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JUTVideo::JUTVideo(_GXRenderModeObj const* param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTVideo/__ct__8JUTVideoFPC16_GXRenderModeObj.s" -} -#pragma pop -#endif /* 802E4DE8-802E4E50 2DF728 0068+00 1/0 0/0 0/0 .text __dt__8JUTVideoFv */ JUTVideo::~JUTVideo() { @@ -143,78 +85,146 @@ JUTVideo::~JUTVideo() { VISetPostRetraceCallback(mPostRetraceCallback); } -/* ############################################################################################## */ -/* 80451544-80451548 000A44 0004+00 4/4 0/0 0/0 .sbss None */ -static u8 data_80451544[4]; - -/* 80451548-8045154C 000A48 0004+00 1/1 0/0 0/0 .sbss frameBuffer$2222 */ -static void* frameBuffer; - -/* 8045154C-80451550 000A4C 0004+00 1/1 0/0 0/0 .sbss None */ -static u8 data_8045154C[4]; - /* 802E4E50-802E5088 2DF790 0238+00 1/1 0/0 0/0 .text preRetraceProc__8JUTVideoFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTVideo::preRetraceProc(u32 param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTVideo/preRetraceProc__8JUTVideoFUl.s" +void JUTVideo::preRetraceProc(u32 retrace_count) { + if (!sManager) { + return; + } + + if (sManager->mPreCallback) { + (*sManager->mPreCallback)(retrace_count); + } + + OSTick tick = OSGetTick(); + sVideoInterval = tick - sVideoLastTick; + sVideoLastTick = tick; + + JUTXfb* xfb = JUTXfb::getManager(); + if (!xfb) { + VISetBlack(TRUE); + VIFlush(); + return; + } + + if (!data_8045154C) { + frameBuffer = NULL; + data_8045154C = true; + } + + if (frameBuffer) { + JUTVideo* videoManager = JUTGetVideoManager(); + const GXRenderModeObj* renderMode = videoManager->getRenderMode(); + JUTDirectPrint* directPrint = JUTDirectPrint::getManager(); + directPrint->changeFrameBuffer(frameBuffer, renderMode->fb_width, renderMode->efb_height); + } + + if (sManager->mSetBlack == 1) { + s32 frame_count = sManager->mSetBlackFrameCount; + if (frame_count > 0) { + frame_count--; + } + + sManager->mSetBlackFrameCount = frame_count; + sManager->mSetBlack = frame_count != 0; + VISetBlack(TRUE); + VIFlush(); + return; + } + + if (!xfb) { + VISetBlack(TRUE); + VIFlush(); + return; + } + + if (xfb->getBufferNum() == 3 || xfb->getBufferNum() == 2) { + if (!data_80451544) { + s16 index = xfb->getDrawnXfbIndex(); + xfb->setDisplayingXfbIndex(index); + if (index < 0) { + VISetBlack(1); + VIFlush(); + } else { + VISetNextFrameBuffer(xfb->getDisplayingXfb()); + VIFlush(); + VISetBlack(FALSE); + frameBuffer = xfb->getDisplayingXfb(); + } + } + } else if (xfb->getBufferNum() == 1) { + if (xfb->getSDrawingFlag() == 0) { + s16 index = xfb->getDrawnXfbIndex(); + if (index >= 0) { + xfb->setDisplayingXfbIndex(index); + GXCopyDisp(xfb->getDisplayingXfb(), 1); + GXFlush(); + xfb->setSDrawingFlag(2); + frameBuffer = xfb->getDisplayingXfb(); + if (VIGetNextFrameBuffer()) { + VISetBlack(FALSE); + } + } else { + VISetBlack(TRUE); + } + } + VIFlush(); + } } -#pragma pop /* 802E5088-802E50B0 2DF9C8 0028+00 0/0 1/1 0/0 .text drawDoneStart__8JUTVideoFv */ void JUTVideo::drawDoneStart() { - data_80451544[0] = 1; + data_80451544 = true; GXSetDrawDone(); } /* 802E50B0-802E50BC 2DF9F0 000C+00 0/0 1/1 0/0 .text dummyNoDrawWait__8JUTVideoFv */ void JUTVideo::dummyNoDrawWait() { - data_80451544[0] = 0; + data_80451544 = false; } /* 802E50BC-802E5144 2DF9FC 0088+00 1/1 0/0 0/0 .text drawDoneCallback__8JUTVideoFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTVideo::drawDoneCallback() { - nofralloc -#include "asm/JSystem/JUtility/JUTVideo/drawDoneCallback__8JUTVideoFv.s" -} -#pragma pop +void JUTVideo::drawDoneCallback() { + JUTXfb* xfb = JUTXfb::getManager(); + if (!xfb) { + return; + } -/* 802E5144-802E5198 2DFA84 0054+00 1/1 0/0 0/0 .text postRetraceProc__8JUTVideoFUl */ -#ifdef NONMATCHING -void JUTVideo::postRetraceProc(u32 param_0) { - void* message; - if (sManager != NULL) { - if (sManager->unknown_callback_2 != NULL) { - sManager->unknown_callback_2(); + data_80451544 = false; + if (xfb->getBufferNum() == 1) { + if (xfb->getSDrawingFlag() == 1) { + xfb->setSDrawingFlag(0); + + void* frameBuffer = xfb->getDrawnXfb(); + if (frameBuffer) { + VISetNextFrameBuffer(xfb->getDrawnXfb()); + VIFlush(); + } } - message = (void*)VIGetRetraceCount(); - OSSendMessage(&sManager->mMessageQueue, message, OS_MESSAGE_NON_BLOCKING); } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTVideo::postRetraceProc(u32 param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTVideo/postRetraceProc__8JUTVideoFUl.s" + +/* 802E5144-802E5198 2DFA84 0054+00 1/1 0/0 0/0 .text postRetraceProc__8JUTVideoFUl */ +void JUTVideo::postRetraceProc(u32 retrace_count) { + if (!sManager) { + return; + } + + if (sManager->mPostCallback != NULL) { + sManager->mPostCallback(retrace_count); + } + + OSMessage message = (OSMessage*)VIGetRetraceCount(); + OSSendMessage(&sManager->mMessageQueue, message, OS_MESSAGE_NON_BLOCKING); } -#pragma pop -#endif /* 802E5198-802E5210 2DFAD8 0078+00 1/1 2/2 0/0 .text * setRenderMode__8JUTVideoFPC16_GXRenderModeObj */ -void JUTVideo::setRenderMode(_GXRenderModeObj const* pObj) { +void JUTVideo::setRenderMode(GXRenderModeObj const* pObj) { if (mRenderObj != NULL && pObj->vi_tv_mode != mRenderObj->vi_tv_mode) { mSetBlack = true; mSetBlackFrameCount = 4; } - mRenderObj = (_GXRenderModeObj*)pObj; + mRenderObj = (GXRenderModeObj*)pObj; VIConfigure(mRenderObj); VIFlush(); diff --git a/libs/MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf.cpp b/libs/MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf.cpp index cc3bdeeffa8..289ae7131c2 100644 --- a/libs/MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf.cpp +++ b/libs/MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf.cpp @@ -4,6 +4,7 @@ // #include "MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf.h" +#include "Runtime.PPCEABI.H/__va_arg.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -28,7 +29,6 @@ extern "C" extern char const* const MSL_Common_Src_printf__stringBase0; // SECTION_INIT void memcpy(); -extern "C" void __va_arg(); extern "C" void __div2u(); extern "C" void __mod2u(); extern "C" void __num2dec(); @@ -72,7 +72,7 @@ asm size_t snprintf(const char*, size_t, const char*, ...) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm size_t vsnprintf(char* buffer, size_t buffer_size, const char* format, __va_list_struct* args) { +asm size_t vsnprintf(char* buffer, size_t buffer_size, const char* format, va_list args) { nofralloc #include "asm/MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf/vsnprintf.s" } @@ -154,6 +154,7 @@ SECTION_SDATA static u8 data_80450AD8[2 + 6 /* padding */] = { #pragma optimizewithasm off asm void __pformatter() { nofralloc +#undef __va_arg #include "asm/MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf/__pformatter.s" } #pragma pop diff --git a/libs/dolphin/vi/vi.cpp b/libs/dolphin/vi/vi.cpp index 94f7d82ac7d..5807dfcf2f8 100644 --- a/libs/dolphin/vi/vi.cpp +++ b/libs/dolphin/vi/vi.cpp @@ -12,20 +12,10 @@ // extern "C" void __VIRetraceHandler(); -extern "C" void VISetPreRetraceCallback(); -extern "C" void VISetPostRetraceCallback(); extern "C" static void getTiming(); extern "C" void __VIInit(); -extern "C" void VIInit(); -extern "C" void VIWaitForRetrace(); extern "C" static void setFbbRegs(); extern "C" static void setVerticalRegs(); -extern "C" void VIConfigure(); -extern "C" void VIFlush(); -extern "C" void VISetNextFrameBuffer(); -extern "C" u32 VIGetNextFrameBuffer(); -extern "C" u32 VIGetCurrentFrameBuffer(); -extern "C" void VISetBlack(); extern "C" u32 VIGetRetraceCount(); extern "C" static void GetCurrentDisplayPosition(); extern "C" static void getCurrentFieldEvenOdd(); @@ -139,7 +129,7 @@ asm void __VIRetraceHandler() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void VISetPreRetraceCallback() { +asm VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback) { nofralloc #include "asm/dolphin/vi/vi/VISetPreRetraceCallback.s" } @@ -149,7 +139,7 @@ asm void VISetPreRetraceCallback() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void VISetPostRetraceCallback() { +asm VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback) { nofralloc #include "asm/dolphin/vi/vi/VISetPostRetraceCallback.s" } @@ -772,7 +762,7 @@ static u8 message[4 + 4 /* padding */]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void VIConfigure() { +asm void VIConfigure(GXRenderModeObj*) { nofralloc #include "asm/dolphin/vi/vi/VIConfigure.s" } @@ -792,27 +782,27 @@ asm void VIFlush() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void VISetNextFrameBuffer() { +asm void VISetNextFrameBuffer(void*) { nofralloc #include "asm/dolphin/vi/vi/VISetNextFrameBuffer.s" } #pragma pop /* 8034D830-8034D838 -00001 0008+00 0/0 0/0 0/0 .text VIGetNextFrameBuffer */ -u32 VIGetNextFrameBuffer() { - return *(u32*)(&NextBufAddr); +void* VIGetNextFrameBuffer() { + return *(void**)(&NextBufAddr); } /* 8034D838-8034D840 -00001 0008+00 0/0 0/0 0/0 .text VIGetCurrentFrameBuffer */ -u32 VIGetCurrentFrameBuffer() { - return *(u32*)(&CurrBufAddr); +void* VIGetCurrentFrameBuffer() { + return *(void**)(&CurrBufAddr); } /* 8034D840-8034D8BC 348180 007C+00 0/0 7/7 0/0 .text VISetBlack */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void VISetBlack() { +asm void VISetBlack(BOOL) { nofralloc #include "asm/dolphin/vi/vi/VISetBlack.s" } diff --git a/src/m_Do/m_Do_machine.cpp b/src/m_Do/m_Do_machine.cpp index cdf41b89818..85da0fc17f2 100644 --- a/src/m_Do/m_Do_machine.cpp +++ b/src/m_Do/m_Do_machine.cpp @@ -129,9 +129,6 @@ extern "C" void setDirectConsole__17JUTConsoleManagerFP10JUTConsole(); extern "C" void PPCHalt(); extern "C" u32 OSGetProgressiveMode(); extern "C" void OSSetProgressiveMode(); -extern "C" void VIFlush(); -extern "C" void VISetBlack(s32); -extern "C" void VIGetRetraceCount(); extern "C" void VIGetDTVStatus(); extern "C" void _savegpr_28(); extern "C" void _restgpr_28();