From 09f3d663901f94a216e117e2cb3c1c0062b02b94 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Fri, 27 Jan 2023 18:38:26 +0200 Subject: [PATCH] Work on various dolphin libs --- Progress.md | 8 +- asm/dolphin/card/CARDBios/__CARDSync.s | 44 --- .../gx/GXFrameBuf/GXClearBoundingBox.s | 15 - asm/dolphin/gx/GXFrameBuf/GXSetCopyClamp.s | 23 -- asm/dolphin/gx/GXFrameBuf/GXSetCopyClear.s | 31 --- asm/dolphin/gx/GXFrameBuf/GXSetDispCopyDst.s | 14 - .../gx/GXFrameBuf/GXSetDispCopyFrame2Field.s | 10 - .../gx/GXFrameBuf/GXSetDispCopyGamma.s | 6 - asm/dolphin/gx/GXFrameBuf/GXSetDispCopySrc.s | 32 --- asm/dolphin/gx/GXFrameBuf/GXSetTexCopySrc.s | 32 --- .../gx/GXInit/__GXDefaultTlutRegionCallback.s | 12 - .../si/SISamplingRate/SISetSamplingRate.s | 66 ----- asm/dolphin/vi/vi/VIGetDTVStatus.s | 16 -- asm/dolphin/vi/vi/VISetBlack.s | 32 --- asm/dolphin/vi/vi/VISetNextFrameBuffer.s | 28 -- asm/dolphin/vi/vi/VISetPostRetraceCallback.s | 18 -- asm/dolphin/vi/vi/VISetPreRetraceCallback.s | 18 -- asm/dolphin/vi/vi/VIWaitForRetrace.s | 23 -- asm/exi/EXIBios/EXIGetID.s | 261 ------------------ include/dolphin/gx/GXFrameBuf.h | 4 +- include/dolphin/gx/GXInit.h | 7 +- include/dolphin/gx/GXTexture.h | 2 +- libs/dolphin/card/CARDBios.c | 51 ++-- libs/dolphin/exi/EXIBios.c | 14 +- libs/dolphin/gx/GXFrameBuf.c | 170 ++++++++---- libs/dolphin/gx/GXGeometry.c | 1 - libs/dolphin/gx/GXInit.c | 29 +- libs/dolphin/gx/GXTexture.c | 3 +- libs/dolphin/mtx/mtx44.c | 66 +++++ libs/dolphin/si/SISamplingRate.c | 18 -- libs/dolphin/vi/Makefile | 4 +- libs/dolphin/vi/vi.c | 147 ++++++---- 32 files changed, 312 insertions(+), 893 deletions(-) delete mode 100644 asm/dolphin/card/CARDBios/__CARDSync.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXClearBoundingBox.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXSetCopyClamp.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXSetCopyClear.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXSetDispCopyDst.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXSetDispCopyFrame2Field.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXSetDispCopyGamma.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXSetDispCopySrc.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXSetTexCopySrc.s delete mode 100644 asm/dolphin/gx/GXInit/__GXDefaultTlutRegionCallback.s delete mode 100644 asm/dolphin/si/SISamplingRate/SISetSamplingRate.s delete mode 100644 asm/dolphin/vi/vi/VIGetDTVStatus.s delete mode 100644 asm/dolphin/vi/vi/VISetBlack.s delete mode 100644 asm/dolphin/vi/vi/VISetNextFrameBuffer.s delete mode 100644 asm/dolphin/vi/vi/VISetPostRetraceCallback.s delete mode 100644 asm/dolphin/vi/vi/VISetPreRetraceCallback.s delete mode 100644 asm/dolphin/vi/vi/VIWaitForRetrace.s delete mode 100644 asm/exi/EXIBios/EXIGetID.s diff --git a/Progress.md b/Progress.md index 7a349bf2fa3..fd0b434670a 100644 --- a/Progress.md +++ b/Progress.md @@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes) .init | 97.972973% | 9280 | 9472 .extab | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96 -.text | 23.237864% | 835760 | 3596544 +.text | 23.307153% | 838252 | 3596544 .ctors | 100.000000% | 448 | 448 .dtors | 100.000000% | 32 | 32 .rodata | 100.000000% | 193856 | 193856 .data | 100.000000% | 197632 | 197632 .sdata | 100.000000% | 1408 | 1408 .sdata2 | 100.000000% | 20832 | 20832 -Total | 31.330484% | 1259696 | 4020672 +Total | 31.392464% | 1262188 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 31.330484% | 1259696 | 4020672 +main.dol | 31.392464% | 1262188 | 4020672 RELs | 33.041295% | 3799856 | 11500324 -Total | 32.598114% | 5059552 | 15520996 +Total | 32.614170% | 5062044 | 15520996 ## RELs diff --git a/asm/dolphin/card/CARDBios/__CARDSync.s b/asm/dolphin/card/CARDBios/__CARDSync.s deleted file mode 100644 index 6cd72ae2949..00000000000 --- a/asm/dolphin/card/CARDBios/__CARDSync.s +++ /dev/null @@ -1,44 +0,0 @@ -lbl_80353E20: -/* 80353E20 7C 08 02 A6 */ mflr r0 -/* 80353E24 90 01 00 04 */ stw r0, 4(r1) -/* 80353E28 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80353E2C 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80353E30 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80353E34 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80353E38 93 81 00 10 */ stw r28, 0x10(r1) -/* 80353E3C 3B 83 00 00 */ addi r28, r3, 0 -/* 80353E40 1C 9C 01 10 */ mulli r4, r28, 0x110 -/* 80353E44 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80353E48 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80353E4C 7F E0 22 14 */ add r31, r0, r4 -/* 80353E50 4B FE 98 A5 */ bl OSDisableInterrupts -/* 80353E54 7C 7D 1B 78 */ mr r29, r3 -/* 80353E58 48 00 00 0C */ b lbl_80353E64 -lbl_80353E5C: -/* 80353E5C 38 7F 00 8C */ addi r3, r31, 0x8c -/* 80353E60 4B FE DD 4D */ bl OSSleepThread -lbl_80353E64: -/* 80353E64 2C 1C 00 00 */ cmpwi r28, 0 -/* 80353E68 41 80 00 0C */ blt lbl_80353E74 -/* 80353E6C 2C 1C 00 02 */ cmpwi r28, 2 -/* 80353E70 41 80 00 0C */ blt lbl_80353E7C -lbl_80353E74: -/* 80353E74 38 00 FF 80 */ li r0, -128 -/* 80353E78 48 00 00 08 */ b lbl_80353E80 -lbl_80353E7C: -/* 80353E7C 80 1F 00 04 */ lwz r0, 4(r31) -lbl_80353E80: -/* 80353E80 7C 1E 03 78 */ mr r30, r0 -/* 80353E84 2C 1E FF FF */ cmpwi r30, -1 -/* 80353E88 41 82 FF D4 */ beq lbl_80353E5C -/* 80353E8C 7F A3 EB 78 */ mr r3, r29 -/* 80353E90 4B FE 98 8D */ bl OSRestoreInterrupts -/* 80353E94 7F C3 F3 78 */ mr r3, r30 -/* 80353E98 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80353E9C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80353EA0 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80353EA4 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80353EA8 83 81 00 10 */ lwz r28, 0x10(r1) -/* 80353EAC 38 21 00 20 */ addi r1, r1, 0x20 -/* 80353EB0 7C 08 03 A6 */ mtlr r0 -/* 80353EB4 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXClearBoundingBox.s b/asm/dolphin/gx/GXFrameBuf/GXClearBoundingBox.s deleted file mode 100644 index efbbffec3cb..00000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXClearBoundingBox.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_8035D5F8: -/* 8035D5F8 38 C0 00 61 */ li r6, 0x61 -/* 8035D5FC 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035D600 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035D604 3C 80 55 00 */ lis r4, 0x5500 /* 0x550003FF@ha */ -/* 8035D608 98 C5 80 00 */ stb r6, 0x8000(r5) /* 0xCC008000@l */ -/* 8035D60C 38 04 03 FF */ addi r0, r4, 0x03FF /* 0x550003FF@l */ -/* 8035D610 90 05 80 00 */ stw r0, -0x8000(r5) -/* 8035D614 3C 80 56 00 */ lis r4, 0x5600 /* 0x560003FF@ha */ -/* 8035D618 38 84 03 FF */ addi r4, r4, 0x03FF /* 0x560003FF@l */ -/* 8035D61C 98 C5 80 00 */ stb r6, -0x8000(r5) -/* 8035D620 38 00 00 00 */ li r0, 0 -/* 8035D624 90 85 80 00 */ stw r4, -0x8000(r5) -/* 8035D628 B0 03 00 02 */ sth r0, 2(r3) -/* 8035D62C 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXSetCopyClamp.s b/asm/dolphin/gx/GXFrameBuf/GXSetCopyClamp.s deleted file mode 100644 index 4bb4ff3506b..00000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXSetCopyClamp.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_8035CC84: -/* 8035CC84 54 65 07 FE */ clrlwi r5, r3, 0x1f -/* 8035CC88 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035CC8C 38 05 FF FF */ addi r0, r5, -1 -/* 8035CC90 7C 05 00 34 */ cntlzw r5, r0 -/* 8035CC94 80 04 01 EC */ lwz r0, 0x1ec(r4) -/* 8035CC98 54 A5 DE 3E */ rlwinm r5, r5, 0x1b, 0x18, 0x1f -/* 8035CC9C 54 63 07 BC */ rlwinm r3, r3, 0, 0x1e, 0x1e -/* 8035CCA0 50 A0 07 FE */ rlwimi r0, r5, 0, 0x1f, 0x1f -/* 8035CCA4 38 63 FF FE */ addi r3, r3, -2 -/* 8035CCA8 90 04 01 EC */ stw r0, 0x1ec(r4) -/* 8035CCAC 7C 60 00 34 */ cntlzw r0, r3 -/* 8035CCB0 54 03 DE 3E */ rlwinm r3, r0, 0x1b, 0x18, 0x1f -/* 8035CCB4 80 04 01 EC */ lwz r0, 0x1ec(r4) -/* 8035CCB8 50 60 0F BC */ rlwimi r0, r3, 1, 0x1e, 0x1e -/* 8035CCBC 90 04 01 EC */ stw r0, 0x1ec(r4) -/* 8035CCC0 80 04 01 FC */ lwz r0, 0x1fc(r4) -/* 8035CCC4 50 A0 07 FE */ rlwimi r0, r5, 0, 0x1f, 0x1f -/* 8035CCC8 90 04 01 FC */ stw r0, 0x1fc(r4) -/* 8035CCCC 80 04 01 FC */ lwz r0, 0x1fc(r4) -/* 8035CCD0 50 60 0F BC */ rlwimi r0, r3, 1, 0x1e, 0x1e -/* 8035CCD4 90 04 01 FC */ stw r0, 0x1fc(r4) -/* 8035CCD8 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXSetCopyClear.s b/asm/dolphin/gx/GXFrameBuf/GXSetCopyClear.s deleted file mode 100644 index 020a2b36863..00000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXSetCopyClear.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_8035D070: -/* 8035D070 88 A3 00 00 */ lbz r5, 0(r3) -/* 8035D074 38 C0 00 00 */ li r6, 0 -/* 8035D078 88 03 00 03 */ lbz r0, 3(r3) -/* 8035D07C 39 20 00 61 */ li r9, 0x61 -/* 8035D080 50 A6 06 3E */ rlwimi r6, r5, 0, 0x18, 0x1f -/* 8035D084 3D 00 CC 01 */ lis r8, 0xCC01 /* 0xCC008000@ha */ -/* 8035D088 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 8035D08C 50 06 44 2E */ rlwimi r6, r0, 8, 0x10, 0x17 -/* 8035D090 99 28 80 00 */ stb r9, 0x8000(r8) /* 0xCC008000@l */ -/* 8035D094 38 00 00 4F */ li r0, 0x4f -/* 8035D098 50 06 C0 0E */ rlwimi r6, r0, 0x18, 0, 7 -/* 8035D09C 90 C8 80 00 */ stw r6, -0x8000(r8) -/* 8035D0A0 39 40 00 00 */ li r10, 0 -/* 8035D0A4 38 C0 00 50 */ li r6, 0x50 -/* 8035D0A8 88 E3 00 02 */ lbz r7, 2(r3) -/* 8035D0AC 39 60 00 00 */ li r11, 0 -/* 8035D0B0 88 63 00 01 */ lbz r3, 1(r3) -/* 8035D0B4 38 00 00 51 */ li r0, 0x51 -/* 8035D0B8 50 EB 06 3E */ rlwimi r11, r7, 0, 0x18, 0x1f -/* 8035D0BC 50 6B 44 2E */ rlwimi r11, r3, 8, 0x10, 0x17 -/* 8035D0C0 99 28 80 00 */ stb r9, -0x8000(r8) -/* 8035D0C4 50 CB C0 0E */ rlwimi r11, r6, 0x18, 0, 7 -/* 8035D0C8 91 68 80 00 */ stw r11, -0x8000(r8) -/* 8035D0CC 50 8A 02 3E */ rlwimi r10, r4, 0, 8, 0x1f -/* 8035D0D0 50 0A C0 0E */ rlwimi r10, r0, 0x18, 0, 7 -/* 8035D0D4 99 28 80 00 */ stb r9, -0x8000(r8) -/* 8035D0D8 38 00 00 00 */ li r0, 0 -/* 8035D0DC 91 48 80 00 */ stw r10, -0x8000(r8) -/* 8035D0E0 B0 05 00 02 */ sth r0, 2(r5) -/* 8035D0E4 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXSetDispCopyDst.s b/asm/dolphin/gx/GXFrameBuf/GXSetDispCopyDst.s deleted file mode 100644 index db78a5f62ae..00000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXSetDispCopyDst.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_8035CAFC: -/* 8035CAFC 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035CB00 38 00 00 00 */ li r0, 0 -/* 8035CB04 90 04 01 E8 */ stw r0, 0x1e8(r4) -/* 8035CB08 54 60 0C 3C */ rlwinm r0, r3, 1, 0x10, 0x1e -/* 8035CB0C 7C 00 2E 70 */ srawi r0, r0, 5 -/* 8035CB10 80 64 01 E8 */ lwz r3, 0x1e8(r4) -/* 8035CB14 50 03 05 BE */ rlwimi r3, r0, 0, 0x16, 0x1f -/* 8035CB18 38 00 00 4D */ li r0, 0x4d -/* 8035CB1C 90 64 01 E8 */ stw r3, 0x1e8(r4) -/* 8035CB20 80 64 01 E8 */ lwz r3, 0x1e8(r4) -/* 8035CB24 50 03 C0 0E */ rlwimi r3, r0, 0x18, 0, 7 -/* 8035CB28 90 64 01 E8 */ stw r3, 0x1e8(r4) -/* 8035CB2C 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXSetDispCopyFrame2Field.s b/asm/dolphin/gx/GXFrameBuf/GXSetDispCopyFrame2Field.s deleted file mode 100644 index a02b8f8ec89..00000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXSetDispCopyFrame2Field.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8035CC60: -/* 8035CC60 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 8035CC64 38 00 00 00 */ li r0, 0 -/* 8035CC68 80 85 01 EC */ lwz r4, 0x1ec(r5) -/* 8035CC6C 50 64 64 A6 */ rlwimi r4, r3, 0xc, 0x12, 0x13 -/* 8035CC70 90 85 01 EC */ stw r4, 0x1ec(r5) -/* 8035CC74 80 65 01 FC */ lwz r3, 0x1fc(r5) -/* 8035CC78 50 03 64 A6 */ rlwimi r3, r0, 0xc, 0x12, 0x13 -/* 8035CC7C 90 65 01 FC */ stw r3, 0x1fc(r5) -/* 8035CC80 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXSetDispCopyGamma.s b/asm/dolphin/gx/GXFrameBuf/GXSetDispCopyGamma.s deleted file mode 100644 index 549372f7958..00000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXSetDispCopyGamma.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_8035D2F0: -/* 8035D2F0 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035D2F4 80 04 01 EC */ lwz r0, 0x1ec(r4) -/* 8035D2F8 50 60 3D F0 */ rlwimi r0, r3, 7, 0x17, 0x18 -/* 8035D2FC 90 04 01 EC */ stw r0, 0x1ec(r4) -/* 8035D300 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXSetDispCopySrc.s b/asm/dolphin/gx/GXFrameBuf/GXSetDispCopySrc.s deleted file mode 100644 index 88806a13f11..00000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXSetDispCopySrc.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_8035CA04: -/* 8035CA04 81 02 CB 80 */ lwz r8, __GXData(r2) -/* 8035CA08 39 20 00 00 */ li r9, 0 -/* 8035CA0C 54 A7 04 3E */ clrlwi r7, r5, 0x10 -/* 8035CA10 91 28 01 E0 */ stw r9, 0x1e0(r8) -/* 8035CA14 54 C5 04 3E */ clrlwi r5, r6, 0x10 -/* 8035CA18 54 60 04 3E */ clrlwi r0, r3, 0x10 -/* 8035CA1C 80 68 01 E0 */ lwz r3, 0x1e0(r8) -/* 8035CA20 50 03 05 BE */ rlwimi r3, r0, 0, 0x16, 0x1f -/* 8035CA24 54 80 04 3E */ clrlwi r0, r4, 0x10 -/* 8035CA28 90 68 01 E0 */ stw r3, 0x1e0(r8) -/* 8035CA2C 38 C0 00 49 */ li r6, 0x49 -/* 8035CA30 38 87 FF FF */ addi r4, r7, -1 -/* 8035CA34 80 E8 01 E0 */ lwz r7, 0x1e0(r8) -/* 8035CA38 50 07 53 2A */ rlwimi r7, r0, 0xa, 0xc, 0x15 -/* 8035CA3C 38 65 FF FF */ addi r3, r5, -1 -/* 8035CA40 90 E8 01 E0 */ stw r7, 0x1e0(r8) -/* 8035CA44 38 00 00 4A */ li r0, 0x4a -/* 8035CA48 80 A8 01 E0 */ lwz r5, 0x1e0(r8) -/* 8035CA4C 50 C5 C0 0E */ rlwimi r5, r6, 0x18, 0, 7 -/* 8035CA50 90 A8 01 E0 */ stw r5, 0x1e0(r8) -/* 8035CA54 91 28 01 E4 */ stw r9, 0x1e4(r8) -/* 8035CA58 80 A8 01 E4 */ lwz r5, 0x1e4(r8) -/* 8035CA5C 50 85 05 BE */ rlwimi r5, r4, 0, 0x16, 0x1f -/* 8035CA60 90 A8 01 E4 */ stw r5, 0x1e4(r8) -/* 8035CA64 80 88 01 E4 */ lwz r4, 0x1e4(r8) -/* 8035CA68 50 64 53 2A */ rlwimi r4, r3, 0xa, 0xc, 0x15 -/* 8035CA6C 90 88 01 E4 */ stw r4, 0x1e4(r8) -/* 8035CA70 80 68 01 E4 */ lwz r3, 0x1e4(r8) -/* 8035CA74 50 03 C0 0E */ rlwimi r3, r0, 0x18, 0, 7 -/* 8035CA78 90 68 01 E4 */ stw r3, 0x1e4(r8) -/* 8035CA7C 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXSetTexCopySrc.s b/asm/dolphin/gx/GXFrameBuf/GXSetTexCopySrc.s deleted file mode 100644 index 77cdf647aef..00000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXSetTexCopySrc.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_8035CA80: -/* 8035CA80 81 02 CB 80 */ lwz r8, __GXData(r2) -/* 8035CA84 39 20 00 00 */ li r9, 0 -/* 8035CA88 54 A7 04 3E */ clrlwi r7, r5, 0x10 -/* 8035CA8C 91 28 01 F0 */ stw r9, 0x1f0(r8) -/* 8035CA90 54 C5 04 3E */ clrlwi r5, r6, 0x10 -/* 8035CA94 54 60 04 3E */ clrlwi r0, r3, 0x10 -/* 8035CA98 80 68 01 F0 */ lwz r3, 0x1f0(r8) -/* 8035CA9C 50 03 05 BE */ rlwimi r3, r0, 0, 0x16, 0x1f -/* 8035CAA0 54 80 04 3E */ clrlwi r0, r4, 0x10 -/* 8035CAA4 90 68 01 F0 */ stw r3, 0x1f0(r8) -/* 8035CAA8 38 C0 00 49 */ li r6, 0x49 -/* 8035CAAC 38 87 FF FF */ addi r4, r7, -1 -/* 8035CAB0 80 E8 01 F0 */ lwz r7, 0x1f0(r8) -/* 8035CAB4 50 07 53 2A */ rlwimi r7, r0, 0xa, 0xc, 0x15 -/* 8035CAB8 38 65 FF FF */ addi r3, r5, -1 -/* 8035CABC 90 E8 01 F0 */ stw r7, 0x1f0(r8) -/* 8035CAC0 38 00 00 4A */ li r0, 0x4a -/* 8035CAC4 80 A8 01 F0 */ lwz r5, 0x1f0(r8) -/* 8035CAC8 50 C5 C0 0E */ rlwimi r5, r6, 0x18, 0, 7 -/* 8035CACC 90 A8 01 F0 */ stw r5, 0x1f0(r8) -/* 8035CAD0 91 28 01 F4 */ stw r9, 0x1f4(r8) -/* 8035CAD4 80 A8 01 F4 */ lwz r5, 0x1f4(r8) -/* 8035CAD8 50 85 05 BE */ rlwimi r5, r4, 0, 0x16, 0x1f -/* 8035CADC 90 A8 01 F4 */ stw r5, 0x1f4(r8) -/* 8035CAE0 80 88 01 F4 */ lwz r4, 0x1f4(r8) -/* 8035CAE4 50 64 53 2A */ rlwimi r4, r3, 0xa, 0xc, 0x15 -/* 8035CAE8 90 88 01 F4 */ stw r4, 0x1f4(r8) -/* 8035CAEC 80 68 01 F4 */ lwz r3, 0x1f4(r8) -/* 8035CAF0 50 03 C0 0E */ rlwimi r3, r0, 0x18, 0, 7 -/* 8035CAF4 90 68 01 F4 */ stw r3, 0x1f4(r8) -/* 8035CAF8 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXInit/__GXDefaultTlutRegionCallback.s b/asm/dolphin/gx/GXInit/__GXDefaultTlutRegionCallback.s deleted file mode 100644 index a824382aeee..00000000000 --- a/asm/dolphin/gx/GXInit/__GXDefaultTlutRegionCallback.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80359318: -/* 80359318 28 03 00 14 */ cmplwi r3, 0x14 -/* 8035931C 41 80 00 0C */ blt lbl_80359328 -/* 80359320 38 60 00 00 */ li r3, 0 -/* 80359324 48 00 00 14 */ b lbl_80359338 -lbl_80359328: -/* 80359328 54 63 20 36 */ slwi r3, r3, 4 -/* 8035932C 80 02 CB 80 */ lwz r0, __GXData(r2) -/* 80359330 38 63 03 88 */ addi r3, r3, 0x388 -/* 80359334 7C 60 1A 14 */ add r3, r0, r3 -lbl_80359338: -/* 80359338 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SISamplingRate/SISetSamplingRate.s b/asm/dolphin/si/SISamplingRate/SISetSamplingRate.s deleted file mode 100644 index 9ec17740f43..00000000000 --- a/asm/dolphin/si/SISamplingRate/SISetSamplingRate.s +++ /dev/null @@ -1,66 +0,0 @@ -lbl_80346290: -/* 80346290 7C 08 02 A6 */ mflr r0 -/* 80346294 90 01 00 04 */ stw r0, 4(r1) -/* 80346298 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8034629C 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 803462A0 93 C1 00 18 */ stw r30, 0x18(r1) -/* 803462A4 93 A1 00 14 */ stw r29, 0x14(r1) -/* 803462A8 3B A3 00 00 */ addi r29, r3, 0 -/* 803462AC 28 1D 00 0B */ cmplwi r29, 0xb -/* 803462B0 3C 60 80 3D */ lis r3, XYNTSC@ha /* 0x803D12D0@ha */ -/* 803462B4 3B E3 12 D0 */ addi r31, r3, XYNTSC@l /* 0x803D12D0@l */ -/* 803462B8 40 81 00 08 */ ble lbl_803462C0 -/* 803462BC 3B A0 00 0B */ li r29, 0xb -lbl_803462C0: -/* 803462C0 4B FF 74 35 */ bl OSDisableInterrupts -/* 803462C4 93 AD 91 80 */ stw r29, SamplingRate(r13) -/* 803462C8 7C 7E 1B 78 */ mr r30, r3 -/* 803462CC 48 00 77 D1 */ bl VIGetTvFormat -/* 803462D0 2C 03 00 02 */ cmpwi r3, 2 -/* 803462D4 41 82 00 24 */ beq lbl_803462F8 -/* 803462D8 40 80 00 14 */ bge lbl_803462EC -/* 803462DC 2C 03 00 00 */ cmpwi r3, 0 -/* 803462E0 41 82 00 18 */ beq lbl_803462F8 -/* 803462E4 40 80 00 1C */ bge lbl_80346300 -/* 803462E8 48 00 00 20 */ b lbl_80346308 -lbl_803462EC: -/* 803462EC 2C 03 00 05 */ cmpwi r3, 5 -/* 803462F0 41 82 00 08 */ beq lbl_803462F8 -/* 803462F4 48 00 00 14 */ b lbl_80346308 -lbl_803462F8: -/* 803462F8 7F E4 FB 78 */ mr r4, r31 -/* 803462FC 48 00 00 20 */ b lbl_8034631C -lbl_80346300: -/* 80346300 38 9F 00 30 */ addi r4, r31, 0x30 -/* 80346304 48 00 00 18 */ b lbl_8034631C -lbl_80346308: -/* 80346308 38 7F 00 60 */ addi r3, r31, 0x60 -/* 8034630C 4C C6 31 82 */ crclr 6 -/* 80346310 4B CC 07 AD */ bl OSReport -/* 80346314 3B A0 00 00 */ li r29, 0 -/* 80346318 38 9F 00 00 */ addi r4, r31, 0 -lbl_8034631C: -/* 8034631C 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC00206C@ha */ -/* 80346320 A0 03 20 6C */ lhz r0, 0x206C(r3) /* 0xCC00206C@l */ -/* 80346324 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80346328 41 82 00 0C */ beq lbl_80346334 -/* 8034632C 38 A0 00 02 */ li r5, 2 -/* 80346330 48 00 00 08 */ b lbl_80346338 -lbl_80346334: -/* 80346334 38 A0 00 01 */ li r5, 1 -lbl_80346338: -/* 80346338 57 A3 10 3A */ slwi r3, r29, 2 -/* 8034633C 7C 04 1A 2E */ lhzx r0, r4, r3 -/* 80346340 7C 64 1A 14 */ add r3, r4, r3 -/* 80346344 88 83 00 02 */ lbz r4, 2(r3) -/* 80346348 7C 65 01 D6 */ mullw r3, r5, r0 -/* 8034634C 4B FF F4 A9 */ bl SISetXY -/* 80346350 7F C3 F3 78 */ mr r3, r30 -/* 80346354 4B FF 73 C9 */ bl OSRestoreInterrupts -/* 80346358 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8034635C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80346360 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80346364 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80346368 38 21 00 20 */ addi r1, r1, 0x20 -/* 8034636C 7C 08 03 A6 */ mtlr r0 -/* 80346370 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/VIGetDTVStatus.s b/asm/dolphin/vi/vi/VIGetDTVStatus.s deleted file mode 100644 index 237a53eab7e..00000000000 --- a/asm/dolphin/vi/vi/VIGetDTVStatus.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_8034DB04: -/* 8034DB04 7C 08 02 A6 */ mflr r0 -/* 8034DB08 90 01 00 04 */ stw r0, 4(r1) -/* 8034DB0C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8034DB10 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8034DB14 4B FE FB E1 */ bl OSDisableInterrupts -/* 8034DB18 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC00206E@ha */ -/* 8034DB1C A0 04 20 6E */ lhz r0, 0x206E(r4) /* 0xCC00206E@l */ -/* 8034DB20 54 1F 07 BE */ clrlwi r31, r0, 0x1e -/* 8034DB24 4B FE FB F9 */ bl OSRestoreInterrupts -/* 8034DB28 57 E3 07 FE */ clrlwi r3, r31, 0x1f -/* 8034DB2C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8034DB30 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8034DB34 38 21 00 10 */ addi r1, r1, 0x10 -/* 8034DB38 7C 08 03 A6 */ mtlr r0 -/* 8034DB3C 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/VISetBlack.s b/asm/dolphin/vi/vi/VISetBlack.s deleted file mode 100644 index c8f2d2fef47..00000000000 --- a/asm/dolphin/vi/vi/VISetBlack.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_8034D840: -/* 8034D840 7C 08 02 A6 */ mflr r0 -/* 8034D844 3C 80 80 45 */ lis r4, regs@ha /* 0x8044CA28@ha */ -/* 8034D848 90 01 00 04 */ stw r0, 4(r1) -/* 8034D84C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8034D850 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8034D854 3B E4 CA 28 */ addi r31, r4, regs@l /* 0x8044CA28@l */ -/* 8034D858 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8034D85C 3B C3 00 00 */ addi r30, r3, 0 -/* 8034D860 4B FE FE 95 */ bl OSDisableInterrupts -/* 8034D864 93 DF 01 30 */ stw r30, 0x130(r31) -/* 8034D868 7C 7E 1B 78 */ mr r30, r3 -/* 8034D86C 81 5F 01 44 */ lwz r10, 0x144(r31) -/* 8034D870 80 1F 01 30 */ lwz r0, 0x130(r31) -/* 8034D874 90 01 00 08 */ stw r0, 8(r1) -/* 8034D878 A0 7F 00 FA */ lhz r3, 0xfa(r31) -/* 8034D87C A0 9F 00 F6 */ lhz r4, 0xf6(r31) -/* 8034D880 88 AA 00 00 */ lbz r5, 0(r10) -/* 8034D884 A0 CA 00 02 */ lhz r6, 2(r10) -/* 8034D888 A0 EA 00 04 */ lhz r7, 4(r10) -/* 8034D88C A1 0A 00 06 */ lhz r8, 6(r10) -/* 8034D890 A1 2A 00 08 */ lhz r9, 8(r10) -/* 8034D894 A1 4A 00 0A */ lhz r10, 0xa(r10) -/* 8034D898 4B FF F4 55 */ bl setVerticalRegs -/* 8034D89C 7F C3 F3 78 */ mr r3, r30 -/* 8034D8A0 4B FE FE 7D */ bl OSRestoreInterrupts -/* 8034D8A4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8034D8A8 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8034D8AC 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8034D8B0 38 21 00 20 */ addi r1, r1, 0x20 -/* 8034D8B4 7C 08 03 A6 */ mtlr r0 -/* 8034D8B8 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/VISetNextFrameBuffer.s b/asm/dolphin/vi/vi/VISetNextFrameBuffer.s deleted file mode 100644 index 3694fc0ae8e..00000000000 --- a/asm/dolphin/vi/vi/VISetNextFrameBuffer.s +++ /dev/null @@ -1,28 +0,0 @@ -lbl_8034D7C4: -/* 8034D7C4 7C 08 02 A6 */ mflr r0 -/* 8034D7C8 3C 80 80 45 */ lis r4, regs@ha /* 0x8044CA28@ha */ -/* 8034D7CC 90 01 00 04 */ stw r0, 4(r1) -/* 8034D7D0 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8034D7D4 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8034D7D8 3B E4 CA 28 */ addi r31, r4, regs@l /* 0x8044CA28@l */ -/* 8034D7DC 93 C1 00 10 */ stw r30, 0x10(r1) -/* 8034D7E0 3B C3 00 00 */ addi r30, r3, 0 -/* 8034D7E4 4B FE FF 11 */ bl OSDisableInterrupts -/* 8034D7E8 93 DF 01 20 */ stw r30, 0x120(r31) -/* 8034D7EC 38 00 00 01 */ li r0, 1 -/* 8034D7F0 3B C3 00 00 */ addi r30, r3, 0 -/* 8034D7F4 90 0D 92 B8 */ stw r0, FBSet(r13) -/* 8034D7F8 38 7F 00 F0 */ addi r3, r31, 0xf0 -/* 8034D7FC 38 9F 01 24 */ addi r4, r31, 0x124 -/* 8034D800 38 BF 01 28 */ addi r5, r31, 0x128 -/* 8034D804 38 DF 01 3C */ addi r6, r31, 0x13c -/* 8034D808 38 FF 01 40 */ addi r7, r31, 0x140 -/* 8034D80C 4B FF F2 0D */ bl setFbbRegs -/* 8034D810 7F C3 F3 78 */ mr r3, r30 -/* 8034D814 4B FE FF 09 */ bl OSRestoreInterrupts -/* 8034D818 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8034D81C 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8034D820 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 8034D824 38 21 00 18 */ addi r1, r1, 0x18 -/* 8034D828 7C 08 03 A6 */ mtlr r0 -/* 8034D82C 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/VISetPostRetraceCallback.s b/asm/dolphin/vi/vi/VISetPostRetraceCallback.s deleted file mode 100644 index c37195382fb..00000000000 --- a/asm/dolphin/vi/vi/VISetPostRetraceCallback.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_8034C224: -/* 8034C224 7C 08 02 A6 */ mflr r0 -/* 8034C228 90 01 00 04 */ stw r0, 4(r1) -/* 8034C22C 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8034C230 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8034C234 93 C1 00 10 */ stw r30, 0x10(r1) -/* 8034C238 7C 7E 1B 78 */ mr r30, r3 -/* 8034C23C 83 ED 92 78 */ lwz r31, PostCB(r13) -/* 8034C240 4B FF 14 B5 */ bl OSDisableInterrupts -/* 8034C244 93 CD 92 78 */ stw r30, PostCB(r13) -/* 8034C248 4B FF 14 D5 */ bl OSRestoreInterrupts -/* 8034C24C 7F E3 FB 78 */ mr r3, r31 -/* 8034C250 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8034C254 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8034C258 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 8034C25C 38 21 00 18 */ addi r1, r1, 0x18 -/* 8034C260 7C 08 03 A6 */ mtlr r0 -/* 8034C264 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/VISetPreRetraceCallback.s b/asm/dolphin/vi/vi/VISetPreRetraceCallback.s deleted file mode 100644 index 776cd7f621d..00000000000 --- a/asm/dolphin/vi/vi/VISetPreRetraceCallback.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_8034C1E0: -/* 8034C1E0 7C 08 02 A6 */ mflr r0 -/* 8034C1E4 90 01 00 04 */ stw r0, 4(r1) -/* 8034C1E8 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8034C1EC 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8034C1F0 93 C1 00 10 */ stw r30, 0x10(r1) -/* 8034C1F4 7C 7E 1B 78 */ mr r30, r3 -/* 8034C1F8 83 ED 92 74 */ lwz r31, PreCB(r13) -/* 8034C1FC 4B FF 14 F9 */ bl OSDisableInterrupts -/* 8034C200 93 CD 92 74 */ stw r30, PreCB(r13) -/* 8034C204 4B FF 15 19 */ bl OSRestoreInterrupts -/* 8034C208 7F E3 FB 78 */ mr r3, r31 -/* 8034C20C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8034C210 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8034C214 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 8034C218 38 21 00 18 */ addi r1, r1, 0x18 -/* 8034C21C 7C 08 03 A6 */ mtlr r0 -/* 8034C220 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/VIWaitForRetrace.s b/asm/dolphin/vi/vi/VIWaitForRetrace.s deleted file mode 100644 index f7506c2f9b3..00000000000 --- a/asm/dolphin/vi/vi/VIWaitForRetrace.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_8034C9C4: -/* 8034C9C4 7C 08 02 A6 */ mflr r0 -/* 8034C9C8 90 01 00 04 */ stw r0, 4(r1) -/* 8034C9CC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8034C9D0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8034C9D4 93 C1 00 08 */ stw r30, 8(r1) -/* 8034C9D8 4B FF 0D 1D */ bl OSDisableInterrupts -/* 8034C9DC 83 CD 92 64 */ lwz r30, retraceCount(r13) -/* 8034C9E0 7C 7F 1B 78 */ mr r31, r3 -lbl_8034C9E4: -/* 8034C9E4 38 6D 92 6C */ la r3, retraceQueue(r13) /* 804517EC-_SDA_BASE_ */ -/* 8034C9E8 4B FF 51 C5 */ bl OSSleepThread -/* 8034C9EC 80 0D 92 64 */ lwz r0, retraceCount(r13) -/* 8034C9F0 7C 1E 00 40 */ cmplw r30, r0 -/* 8034C9F4 41 82 FF F0 */ beq lbl_8034C9E4 -/* 8034C9F8 7F E3 FB 78 */ mr r3, r31 -/* 8034C9FC 4B FF 0D 21 */ bl OSRestoreInterrupts -/* 8034CA00 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8034CA04 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8034CA08 83 C1 00 08 */ lwz r30, 8(r1) -/* 8034CA0C 38 21 00 10 */ addi r1, r1, 0x10 -/* 8034CA10 7C 08 03 A6 */ mtlr r0 -/* 8034CA14 4E 80 00 20 */ blr diff --git a/asm/exi/EXIBios/EXIGetID.s b/asm/exi/EXIBios/EXIGetID.s deleted file mode 100644 index 4a1b8508936..00000000000 --- a/asm/exi/EXIBios/EXIGetID.s +++ /dev/null @@ -1,261 +0,0 @@ -lbl_80344238: -/* 80344238 7C 08 02 A6 */ mflr r0 -/* 8034423C 90 01 00 04 */ stw r0, 4(r1) -/* 80344240 94 21 FF B8 */ stwu r1, -0x48(r1) -/* 80344244 BE E1 00 24 */ stmw r23, 0x24(r1) -/* 80344248 7C 79 1B 79 */ or. r25, r3, r3 -/* 8034424C 3B 44 00 00 */ addi r26, r4, 0 -/* 80344250 3B 65 00 00 */ addi r27, r5, 0 -/* 80344254 54 64 30 32 */ slwi r4, r3, 6 -/* 80344258 3C 60 80 45 */ lis r3, Ecb@ha /* 0x8044C570@ha */ -/* 8034425C 38 03 C5 70 */ addi r0, r3, Ecb@l /* 0x8044C570@l */ -/* 80344260 7F E0 22 14 */ add r31, r0, r4 -/* 80344264 40 82 00 24 */ bne lbl_80344288 -/* 80344268 28 1A 00 02 */ cmplwi r26, 2 -/* 8034426C 40 82 00 1C */ bne lbl_80344288 -/* 80344270 80 0D 91 58 */ lwz r0, IDSerialPort1(r13) -/* 80344274 28 00 00 00 */ cmplwi r0, 0 -/* 80344278 41 82 00 10 */ beq lbl_80344288 -/* 8034427C 90 1B 00 00 */ stw r0, 0(r27) -/* 80344280 38 60 00 01 */ li r3, 1 -/* 80344284 48 00 03 50 */ b lbl_803445D4 -lbl_80344288: -/* 80344288 2C 19 00 02 */ cmpwi r25, 2 -/* 8034428C 40 80 00 E0 */ bge lbl_8034436C -/* 80344290 28 1A 00 00 */ cmplwi r26, 0 -/* 80344294 40 82 00 D8 */ bne lbl_8034436C -/* 80344298 7F 23 CB 78 */ mr r3, r25 -/* 8034429C 4B FF F1 5D */ bl __EXIProbe -/* 803442A0 2C 03 00 00 */ cmpwi r3, 0 -/* 803442A4 40 82 00 0C */ bne lbl_803442B0 -/* 803442A8 38 60 00 00 */ li r3, 0 -/* 803442AC 48 00 03 28 */ b lbl_803445D4 -lbl_803442B0: -/* 803442B0 80 9F 00 20 */ lwz r4, 0x20(r31) -/* 803442B4 57 20 10 3A */ slwi r0, r25, 2 -/* 803442B8 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030C0@ha */ -/* 803442BC 3B C3 30 C0 */ addi r30, r3, 0x30C0 /* 0x800030C0@l */ -/* 803442C0 7F DE 02 14 */ add r30, r30, r0 -/* 803442C4 80 1E 00 00 */ lwz r0, 0(r30) -/* 803442C8 7C 04 00 00 */ cmpw r4, r0 -/* 803442CC 40 82 00 14 */ bne lbl_803442E0 -/* 803442D0 80 1F 00 1C */ lwz r0, 0x1c(r31) -/* 803442D4 90 1B 00 00 */ stw r0, 0(r27) -/* 803442D8 80 7F 00 20 */ lwz r3, 0x20(r31) -/* 803442DC 48 00 02 F8 */ b lbl_803445D4 -lbl_803442E0: -/* 803442E0 4B FF 94 15 */ bl OSDisableInterrupts -/* 803442E4 7C 7C 1B 78 */ mr r28, r3 -/* 803442E8 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 803442EC 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 803442F0 40 82 00 14 */ bne lbl_80344304 -/* 803442F4 7F 23 CB 78 */ mr r3, r25 -/* 803442F8 4B FF F1 01 */ bl __EXIProbe -/* 803442FC 2C 03 00 00 */ cmpwi r3, 0 -/* 80344300 40 82 00 14 */ bne lbl_80344314 -lbl_80344304: -/* 80344304 7F 83 E3 78 */ mr r3, r28 -/* 80344308 4B FF 94 15 */ bl OSRestoreInterrupts -/* 8034430C 38 00 00 00 */ li r0, 0 -/* 80344310 48 00 00 48 */ b lbl_80344358 -lbl_80344314: -/* 80344314 38 79 00 00 */ addi r3, r25, 0 -/* 80344318 38 80 00 01 */ li r4, 1 -/* 8034431C 38 A0 00 00 */ li r5, 0 -/* 80344320 38 C0 00 00 */ li r6, 0 -/* 80344324 4B FF F0 11 */ bl EXIClearInterrupts -/* 80344328 38 00 00 00 */ li r0, 0 -/* 8034432C 90 1F 00 08 */ stw r0, 8(r31) -/* 80344330 3C 60 00 10 */ lis r3, 0x10 -/* 80344334 1C 19 00 03 */ mulli r0, r25, 3 -/* 80344338 7C 63 04 30 */ srw r3, r3, r0 -/* 8034433C 4B FF 98 09 */ bl __OSUnmaskInterrupts -/* 80344340 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 80344344 60 00 00 08 */ ori r0, r0, 8 -/* 80344348 90 1F 00 0C */ stw r0, 0xc(r31) -/* 8034434C 7F 83 E3 78 */ mr r3, r28 -/* 80344350 4B FF 93 CD */ bl OSRestoreInterrupts -/* 80344354 38 00 00 01 */ li r0, 1 -lbl_80344358: -/* 80344358 2C 00 00 00 */ cmpwi r0, 0 -/* 8034435C 40 82 00 0C */ bne lbl_80344368 -/* 80344360 38 60 00 00 */ li r3, 0 -/* 80344364 48 00 02 70 */ b lbl_803445D4 -lbl_80344368: -/* 80344368 83 BE 00 00 */ lwz r29, 0(r30) -lbl_8034436C: -/* 8034436C 4B FF 93 89 */ bl OSDisableInterrupts -/* 80344370 3B 83 00 00 */ addi r28, r3, 0 -/* 80344374 38 00 00 00 */ li r0, 0 -/* 80344378 2C 19 00 02 */ cmpwi r25, 2 -/* 8034437C 40 80 00 10 */ bge lbl_8034438C -/* 80344380 28 1A 00 00 */ cmplwi r26, 0 -/* 80344384 40 82 00 08 */ bne lbl_8034438C -/* 80344388 38 00 00 01 */ li r0, 1 -lbl_8034438C: -/* 8034438C 2C 00 00 00 */ cmpwi r0, 0 -/* 80344390 41 82 00 10 */ beq lbl_803443A0 -/* 80344394 3C 60 80 34 */ lis r3, UnlockedHandler@ha /* 0x80344210@ha */ -/* 80344398 38 A3 42 10 */ addi r5, r3, UnlockedHandler@l /* 0x80344210@l */ -/* 8034439C 48 00 00 08 */ b lbl_803443A4 -lbl_803443A0: -/* 803443A0 38 A0 00 00 */ li r5, 0 -lbl_803443A4: -/* 803443A4 38 79 00 00 */ addi r3, r25, 0 -/* 803443A8 38 9A 00 00 */ addi r4, r26, 0 -/* 803443AC 4B FF FC 7D */ bl EXILock -/* 803443B0 7C 60 00 34 */ cntlzw r0, r3 -/* 803443B4 54 00 D9 7E */ srwi r0, r0, 5 -/* 803443B8 7C 1E 03 79 */ or. r30, r0, r0 -/* 803443BC 40 82 01 34 */ bne lbl_803444F0 -/* 803443C0 38 79 00 00 */ addi r3, r25, 0 -/* 803443C4 38 9A 00 00 */ addi r4, r26, 0 -/* 803443C8 38 A0 00 00 */ li r5, 0 -/* 803443CC 4B FF F4 9D */ bl EXISelect -/* 803443D0 7C 60 00 34 */ cntlzw r0, r3 -/* 803443D4 54 00 D9 7E */ srwi r0, r0, 5 -/* 803443D8 7C 1E 03 79 */ or. r30, r0, r0 -/* 803443DC 40 82 00 90 */ bne lbl_8034446C -/* 803443E0 38 00 00 00 */ li r0, 0 -/* 803443E4 90 01 00 1C */ stw r0, 0x1c(r1) -/* 803443E8 38 79 00 00 */ addi r3, r25, 0 -/* 803443EC 38 81 00 1C */ addi r4, r1, 0x1c -/* 803443F0 38 A0 00 02 */ li r5, 2 -/* 803443F4 38 C0 00 01 */ li r6, 1 -/* 803443F8 38 E0 00 00 */ li r7, 0 -/* 803443FC 4B FF E9 05 */ bl EXIImm -/* 80344400 7C 60 00 34 */ cntlzw r0, r3 -/* 80344404 54 00 D9 7E */ srwi r0, r0, 5 -/* 80344408 7F DE 03 78 */ or r30, r30, r0 -/* 8034440C 38 79 00 00 */ addi r3, r25, 0 -/* 80344410 4B FF EC D9 */ bl EXISync -/* 80344414 7C 60 00 34 */ cntlzw r0, r3 -/* 80344418 54 00 D9 7E */ srwi r0, r0, 5 -/* 8034441C 7F DE 03 78 */ or r30, r30, r0 -/* 80344420 38 79 00 00 */ addi r3, r25, 0 -/* 80344424 38 9B 00 00 */ addi r4, r27, 0 -/* 80344428 38 A0 00 04 */ li r5, 4 -/* 8034442C 38 C0 00 00 */ li r6, 0 -/* 80344430 38 E0 00 00 */ li r7, 0 -/* 80344434 4B FF E8 CD */ bl EXIImm -/* 80344438 7C 60 00 34 */ cntlzw r0, r3 -/* 8034443C 54 00 D9 7E */ srwi r0, r0, 5 -/* 80344440 7F DE 03 78 */ or r30, r30, r0 -/* 80344444 38 79 00 00 */ addi r3, r25, 0 -/* 80344448 4B FF EC A1 */ bl EXISync -/* 8034444C 7C 60 00 34 */ cntlzw r0, r3 -/* 80344450 54 00 D9 7E */ srwi r0, r0, 5 -/* 80344454 7F DE 03 78 */ or r30, r30, r0 -/* 80344458 38 79 00 00 */ addi r3, r25, 0 -/* 8034445C 4B FF F5 39 */ bl EXIDeselect -/* 80344460 7C 60 00 34 */ cntlzw r0, r3 -/* 80344464 54 00 D9 7E */ srwi r0, r0, 5 -/* 80344468 7F DE 03 78 */ or r30, r30, r0 -lbl_8034446C: -/* 8034446C 4B FF 92 89 */ bl OSDisableInterrupts -/* 80344470 7C 77 1B 78 */ mr r23, r3 -/* 80344474 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 80344478 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b -/* 8034447C 40 82 00 10 */ bne lbl_8034448C -/* 80344480 7E E3 BB 78 */ mr r3, r23 -/* 80344484 4B FF 92 99 */ bl OSRestoreInterrupts -/* 80344488 48 00 00 68 */ b lbl_803444F0 -lbl_8034448C: -/* 8034448C 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 80344490 54 00 07 34 */ rlwinm r0, r0, 0, 0x1c, 0x1a -/* 80344494 90 1F 00 0C */ stw r0, 0xc(r31) -/* 80344498 38 79 00 00 */ addi r3, r25, 0 -/* 8034449C 38 9F 00 00 */ addi r4, r31, 0 -/* 803444A0 4B FF E7 6D */ bl SetExiInterruptMask -/* 803444A4 80 7F 00 24 */ lwz r3, 0x24(r31) -/* 803444A8 2C 03 00 00 */ cmpwi r3, 0 -/* 803444AC 40 81 00 3C */ ble lbl_803444E8 -/* 803444B0 83 1F 00 2C */ lwz r24, 0x2c(r31) -/* 803444B4 34 03 FF FF */ addic. r0, r3, -1 -/* 803444B8 90 1F 00 24 */ stw r0, 0x24(r31) -/* 803444BC 40 81 00 18 */ ble lbl_803444D4 -/* 803444C0 38 7F 00 28 */ addi r3, r31, 0x28 -/* 803444C4 38 9F 00 30 */ addi r4, r31, 0x30 -/* 803444C8 80 1F 00 24 */ lwz r0, 0x24(r31) -/* 803444CC 54 05 18 38 */ slwi r5, r0, 3 -/* 803444D0 48 02 1C 61 */ bl memmove -lbl_803444D4: -/* 803444D4 38 79 00 00 */ addi r3, r25, 0 -/* 803444D8 38 80 00 00 */ li r4, 0 -/* 803444DC 39 98 00 00 */ addi r12, r24, 0 -/* 803444E0 7D 88 03 A6 */ mtlr r12 -/* 803444E4 4E 80 00 21 */ blrl -lbl_803444E8: -/* 803444E8 7E E3 BB 78 */ mr r3, r23 -/* 803444EC 4B FF 92 31 */ bl OSRestoreInterrupts -lbl_803444F0: -/* 803444F0 7F 83 E3 78 */ mr r3, r28 -/* 803444F4 4B FF 92 29 */ bl OSRestoreInterrupts -/* 803444F8 2C 19 00 02 */ cmpwi r25, 2 -/* 803444FC 40 80 00 C4 */ bge lbl_803445C0 -/* 80344500 28 1A 00 00 */ cmplwi r26, 0 -/* 80344504 40 82 00 BC */ bne lbl_803445C0 -/* 80344508 4B FF 91 ED */ bl OSDisableInterrupts -/* 8034450C 7C 77 1B 78 */ mr r23, r3 -/* 80344510 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 80344514 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 80344518 40 82 00 10 */ bne lbl_80344528 -/* 8034451C 7E E3 BB 78 */ mr r3, r23 -/* 80344520 4B FF 91 FD */ bl OSRestoreInterrupts -/* 80344524 48 00 00 4C */ b lbl_80344570 -lbl_80344528: -/* 80344528 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 8034452C 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b -/* 80344530 41 82 00 1C */ beq lbl_8034454C -/* 80344534 80 1F 00 18 */ lwz r0, 0x18(r31) -/* 80344538 28 00 00 00 */ cmplwi r0, 0 -/* 8034453C 40 82 00 10 */ bne lbl_8034454C -/* 80344540 7E E3 BB 78 */ mr r3, r23 -/* 80344544 4B FF 91 D9 */ bl OSRestoreInterrupts -/* 80344548 48 00 00 28 */ b lbl_80344570 -lbl_8034454C: -/* 8034454C 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 80344550 54 00 07 76 */ rlwinm r0, r0, 0, 0x1d, 0x1b -/* 80344554 90 1F 00 0C */ stw r0, 0xc(r31) -/* 80344558 3C 60 00 50 */ lis r3, 0x50 -/* 8034455C 1C 19 00 03 */ mulli r0, r25, 3 -/* 80344560 7C 63 04 30 */ srw r3, r3, r0 -/* 80344564 4B FF 95 59 */ bl __OSMaskInterrupts -/* 80344568 7E E3 BB 78 */ mr r3, r23 -/* 8034456C 4B FF 91 B1 */ bl OSRestoreInterrupts -lbl_80344570: -/* 80344570 4B FF 91 85 */ bl OSDisableInterrupts -/* 80344574 57 20 10 3A */ slwi r0, r25, 2 -/* 80344578 3C 80 80 00 */ lis r4, 0x8000 /* 0x800030C0@ha */ -/* 8034457C 38 84 30 C0 */ addi r4, r4, 0x30C0 /* 0x800030C0@l */ -/* 80344580 7C 04 00 2E */ lwzx r0, r4, r0 -/* 80344584 7C 9D 00 50 */ subf r4, r29, r0 -/* 80344588 30 04 FF FF */ addic r0, r4, -1 -/* 8034458C 7C 00 21 10 */ subfe r0, r0, r4 -/* 80344590 7F DE 03 79 */ or. r30, r30, r0 -/* 80344594 40 82 00 10 */ bne lbl_803445A4 -/* 80344598 80 1B 00 00 */ lwz r0, 0(r27) -/* 8034459C 90 1F 00 1C */ stw r0, 0x1c(r31) -/* 803445A0 93 BF 00 20 */ stw r29, 0x20(r31) -lbl_803445A4: -/* 803445A4 4B FF 91 79 */ bl OSRestoreInterrupts -/* 803445A8 2C 1E 00 00 */ cmpwi r30, 0 -/* 803445AC 41 82 00 0C */ beq lbl_803445B8 -/* 803445B0 38 60 00 00 */ li r3, 0 -/* 803445B4 48 00 00 20 */ b lbl_803445D4 -lbl_803445B8: -/* 803445B8 80 7F 00 20 */ lwz r3, 0x20(r31) -/* 803445BC 48 00 00 18 */ b lbl_803445D4 -lbl_803445C0: -/* 803445C0 2C 1E 00 00 */ cmpwi r30, 0 -/* 803445C4 41 82 00 0C */ beq lbl_803445D0 -/* 803445C8 38 60 00 00 */ li r3, 0 -/* 803445CC 48 00 00 08 */ b lbl_803445D4 -lbl_803445D0: -/* 803445D0 38 60 00 01 */ li r3, 1 -lbl_803445D4: -/* 803445D4 80 01 00 4C */ lwz r0, 0x4c(r1) -/* 803445D8 BA E1 00 24 */ lmw r23, 0x24(r1) -/* 803445DC 38 21 00 48 */ addi r1, r1, 0x48 -/* 803445E0 7C 08 03 A6 */ mtlr r0 -/* 803445E4 4E 80 00 20 */ blr diff --git a/include/dolphin/gx/GXFrameBuf.h b/include/dolphin/gx/GXFrameBuf.h index ffa428cb595..781a397f349 100644 --- a/include/dolphin/gx/GXFrameBuf.h +++ b/include/dolphin/gx/GXFrameBuf.h @@ -10,8 +10,8 @@ extern "C" { void GXSetDispCopySrc(u16 left, u16 top, u16 width, u16 height); void GXSetTexCopySrc(u16 left, u16 top, u16 width, u16 height); -void GXSetDispCopyDst(u16 width, u16 height); -void GXSetTexCopyDst(u16 width, u16 height, GXTexFmt fmt, GXBool mipmap); +void GXSetDispCopyDst(u16 arg0, u16 arg1); +void GXSetTexCopyDst(u16 width, u16 height, s32 fmt, GXBool mipmap); void GXSetDispCopyFrame2Field(GXCopyMode mode); void GXSetCopyClamp(GXFBClamp clamp); u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale); diff --git a/include/dolphin/gx/GXInit.h b/include/dolphin/gx/GXInit.h index 881ee2c24ae..7f3553f5b21 100644 --- a/include/dolphin/gx/GXInit.h +++ b/include/dolphin/gx/GXInit.h @@ -87,7 +87,7 @@ typedef struct _GXData { STATIC_ASSERT(sizeof(GXData) == 0x5B0); -extern GXData* __GXData; +extern GXData* const __GXData; extern u32* __piReg; extern u16* __cpReg; @@ -100,6 +100,11 @@ inline void GXSetWasteFlags() { data->field_0x2 = 0; } +static inline void set_x2(u16 value) +{ + __GXData->field_0x2 = value; +} + #ifdef __cplusplus extern "C" { #endif diff --git a/include/dolphin/gx/GXTexture.h b/include/dolphin/gx/GXTexture.h index d4d8efdb381..934bf6f6751 100644 --- a/include/dolphin/gx/GXTexture.h +++ b/include/dolphin/gx/GXTexture.h @@ -10,7 +10,7 @@ extern "C" { #endif u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, GXBool mipmap, u8 max_lod); -void __GetImageTileCount(); +void __GetImageTileCount(u32 arg0, s16 arg1, s16 arg2, s32* arg3, s32* arg4, s32* arg5); void GXInitTexObj(GXTexObj* obj, void* image, u16 width, u16 height, GXTexFmt fmt, GXTexWrapMode wrapS, GXTexWrapMode wrapT, GXBool mipmap); void GXInitTexObjCI(GXTexObj* obj, void* image, u16 width, u16 height, GXCITexFmt format, diff --git a/libs/dolphin/card/CARDBios.c b/libs/dolphin/card/CARDBios.c index 9df3a700f40..4bdb226e983 100644 --- a/libs/dolphin/card/CARDBios.c +++ b/libs/dolphin/card/CARDBios.c @@ -641,43 +641,30 @@ s32 CARDFreeBlocks(s32 chan, s32* byteNotUsed, s32* filesNotUsed) { return __CARDPutControlBlock(card, CARD_RESULT_READY); } -/* 80353E20-80353EB8 34E760 0098+00 0/0 7/7 0/0 .text __CARDSync */ -#ifdef NONMATCHING -s32 __CARDSync(s32 chan) { +s32 CARDGetResultCode(s32 chan) +{ CARDControl* card; - s32 val; - BOOL enabled; - s32 result; - + if (chan < 0 || chan >= 2) { + return CARD_RESULT_FATAL_ERROR; + } card = &__CARDBlock[chan]; + return card->result; +} + +/* 80353E20-80353EB8 34E760 0098+00 0/0 7/7 0/0 .text __CARDSync */ +s32 __CARDSync(s32 chan) { + CARDControl* block; + s32 result; + s32 enabled; + + block = &__CARDBlock[chan]; enabled = OSDisableInterrupts(); - for (;; ) { - if (chan < 0 || chan >= 2) - result = -0x80; - else - result = card->result; - val = result; - - if (val != CARD_RESULT_BUSY){ - break; - } else { - OSSleepThread(&card->threadQueue); - } - } + while ((result = CARDGetResultCode(chan)) == -1) { + OSSleepThread(&block->threadQueue); + } OSRestoreInterrupts(enabled); - - return val; + return result; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 __CARDSync(s32 chan) { - nofralloc -#include "asm/dolphin/card/CARDBios/__CARDSync.s" -} -#pragma pop -#endif /* 80353EB8-80353F08 34E7F8 0050+00 1/0 0/0 0/0 .text OnReset */ static s32 OnReset(s32 f) { diff --git a/libs/dolphin/exi/EXIBios.c b/libs/dolphin/exi/EXIBios.c index 0f483ab2d80..e923bb76498 100644 --- a/libs/dolphin/exi/EXIBios.c +++ b/libs/dolphin/exi/EXIBios.c @@ -642,8 +642,6 @@ static void UnlockedHandler(s32 chan, OSContext* context) { } /* 80344238-803445E8 33EB78 03B0+00 5/5 3/3 0/0 .text EXIGetID */ -// Use of add. instead of add -#ifdef NONMATCHING s32 EXIGetID(s32 chan, u32 dev, u32* id) { EXIControl* exi = &Ecb[chan]; BOOL err; @@ -651,7 +649,7 @@ s32 EXIGetID(s32 chan, u32 dev, u32* id) { s32 startTime; BOOL enabled; - if (exi == (EXIControl*)NULL && dev == 2 && IDSerialPort1[0] != 0) { + if (chan == 0 && dev == 2 && IDSerialPort1[0] != 0) { *id = IDSerialPort1[0]; return 1; } @@ -706,16 +704,6 @@ s32 EXIGetID(s32 chan, u32 dev, u32* id) { return err ? 0 : !0; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 EXIGetID(s32 chan, u32 dev, u32* id) { - nofralloc -#include "asm/exi/EXIBios/EXIGetID.s" -} -#pragma pop -#endif /* ############################################################################################## */ /* 803D10F0-803D1100 02E210 000F+01 0/0 0/0 0/0 .data @473 */ diff --git a/libs/dolphin/gx/GXFrameBuf.c b/libs/dolphin/gx/GXFrameBuf.c index b5504ae0cb5..1b419003435 100644 --- a/libs/dolphin/gx/GXFrameBuf.c +++ b/libs/dolphin/gx/GXFrameBuf.c @@ -4,6 +4,8 @@ // #include "dolphin/gx/GXFrameBuf.h" +#include "dolphin/gx/GXInit.h" +#include "dolphin/gx/GX.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -26,73 +28,112 @@ extern u8 GXEurgb60Hz480IntDf[60 + 4 /* padding */]; // External References: // -void __GetImageTileCount(); void __cvt_fp2unsigned(); -extern void* __GXData; // // Declarations: // /* 8035CA04-8035CA80 357344 007C+00 0/0 2/2 0/0 .text GXSetDispCopySrc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetDispCopySrc(u16 left, u16 top, u16 width, u16 height) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopySrc.s" +void GXSetDispCopySrc(u16 left, u16 top, u16 width, u16 height) +{ + __GXData->field_0x1e0 = 0; + GX_BITFIELD_SET(__GXData->field_0x1e0, 22, 10, left); + GX_BITFIELD_SET(__GXData->field_0x1e0, 12, 10, top); + GX_BITFIELD_SET(__GXData->field_0x1e0, 0, 8, 73); + __GXData->field_0x1e4 = 0; + GX_BITFIELD_SET(__GXData->field_0x1e4, 22, 10, width - 1); + GX_BITFIELD_SET(__GXData->field_0x1e4, 12, 10, height - 1); + GX_BITFIELD_SET(__GXData->field_0x1e4, 0, 8, 74); } -#pragma pop /* 8035CA80-8035CAFC 3573C0 007C+00 0/0 9/9 0/0 .text GXSetTexCopySrc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetTexCopySrc(u16 left, u16 top, u16 width, u16 height) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXSetTexCopySrc.s" +void GXSetTexCopySrc(u16 left, u16 top, u16 width, u16 height) +{ + __GXData->field_0x1f0 = 0; + GX_BITFIELD_SET(__GXData->field_0x1f0, 22, 10, left); + GX_BITFIELD_SET(__GXData->field_0x1f0, 12, 10, top); + GX_BITFIELD_SET(__GXData->field_0x1f0, 0, 8, 0x49); + __GXData->field_0x1f4 = 0; + GX_BITFIELD_SET(__GXData->field_0x1f4, 22, 10, width - 1); + GX_BITFIELD_SET(__GXData->field_0x1f4, 12, 10, height - 1); + GX_BITFIELD_SET(__GXData->field_0x1f4, 0, 8, 0x4A); } -#pragma pop /* 8035CAFC-8035CB30 35743C 0034+00 0/0 2/2 0/0 .text GXSetDispCopyDst */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetDispCopyDst(u16 width, u16 height) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopyDst.s" +void GXSetDispCopyDst(u16 arg0, u16 arg1) +{ + s32 val = (s32) ((arg0 << 1) & 0xFFFE) >> 5; + __GXData->field_0x1e8 = 0; + GX_BITFIELD_SET(__GXData->field_0x1e8, 22, 10, val); + GX_BITFIELD_SET(__GXData->field_0x1e8, 0, 8, 0x4D); } -#pragma pop /* 8035CB30-8035CC60 357470 0130+00 0/0 9/9 0/0 .text GXSetTexCopyDst */ +#ifdef NONMATCHING +void GXSetTexCopyDst(u16 width, u16 height, s32 fmt, GXBool mipmap) { + s32 fmt2; + s32 arg3, arg4, arg5; + __GXData->field_0x200 = 0; + + fmt2 = fmt & 0xf; + if ((s32)fmt == GX_TF_Z16) { + fmt2 = 0xb; + } + + switch (fmt) { + case 0: + case 1: + case 2: + case 3: + case 0x26: + GX_BITFIELD_SET(__GXData->field_0x1fc, 15, 2, 3); + break; + default: + GX_BITFIELD_SET(__GXData->field_0x1fc, 15, 2, 2); + break; + } + + __GXData->field_0x200 = (fmt & 0x10) == 0x10; + __GXData->field_0x1fc = __rlwimi(__GXData->field_0x1fc, fmt2, 0, 28, 28); + fmt2 &= 7; + __GetImageTileCount(fmt, width, height, &arg3, &arg4, &arg5); + __GXData->field_0x1f8 = 0; + GX_BITFIELD_SET(__GXData->field_0x1f8, 22, 10, arg3*arg5); + GX_BITFIELD_SET(__GXData->field_0x1f8, 0, 8, 0x4d); + GX_BITFIELD_SET(__GXData->field_0x1fc, 22, 1, mipmap); + GX_BITFIELD_SET(__GXData->field_0x1fc, 25, 3, fmt2); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTexCopyDst(u16 width, u16 height, GXTexFmt fmt, GXBool mipmap) { +asm void GXSetTexCopyDst(u16 width, u16 height, s32 fmt, GXBool mipmap) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXSetTexCopyDst.s" } #pragma pop +#endif /* 8035CC60-8035CC84 3575A0 0024+00 0/0 1/1 0/0 .text GXSetDispCopyFrame2Field */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetDispCopyFrame2Field(GXCopyMode mode) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopyFrame2Field.s" +void GXSetDispCopyFrame2Field(GXCopyMode arg0) +{ + GX_BITFIELD_SET(__GXData->field_0x1ec, 18, 2, arg0); + GX_BITFIELD_SET(__GXData->field_0x1fc, 18, 2, 0); } -#pragma pop +#define INSERT_FIELD(reg, value, nbits, shift) \ + (reg) = ((u32) (reg) & ~(((1 << (nbits)) - 1) << (shift))) | \ + ((u32) (value) << (shift)); /* 8035CC84-8035CCDC 3575C4 0058+00 0/0 2/2 0/0 .text GXSetCopyClamp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetCopyClamp(GXFBClamp clamp) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXSetCopyClamp.s" +void GXSetCopyClamp(GXFBClamp clamp) { + u8 isTop = (clamp & GX_CLAMP_TOP) == GX_CLAMP_TOP; + u8 isBottom = (clamp & GX_CLAMP_BOTTOM) == GX_CLAMP_BOTTOM; + __GXData->field_0x1ec = __rlwimi(__GXData->field_0x1ec, isTop, 0, 31, 31); + __GXData->field_0x1ec = __rlwimi(__GXData->field_0x1ec, isBottom, 1, 30, 30); + __GXData->field_0x1fc = __rlwimi(__GXData->field_0x1fc, isTop, 0, 31, 31); + __GXData->field_0x1fc = __rlwimi(__GXData->field_0x1fc, isBottom, 1, 30, 30); } -#pragma pop /* ############################################################################################## */ /* 804565A8-804565B0 004BA8 0004+04 3/3 0/0 0/0 .sdata2 @179 */ @@ -137,14 +178,29 @@ asm u32 GXSetDispCopyYScale(f32 y_scale) { #pragma pop /* 8035D070-8035D0E8 3579B0 0078+00 0/0 2/2 0/0 .text GXSetCopyClear */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetCopyClear(GXColor color, u32 clear_z) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXSetCopyClear.s" +void GXSetCopyClear(GXColor color, u32 clear_z) { + u32 r6 = 0; + GX_BITFIELD_SET(r6, 24, 8, color.r); + GX_BITFIELD_SET(r6, 16, 8, color.a); + GX_BITFIELD_SET(r6, 0, 8, 0x4f); + GXFIFO.u8 = 0x61; + GXFIFO.u32 = r6; + + r6 = 0; + GX_BITFIELD_SET(r6, 24, 8, color.b); + GX_BITFIELD_SET(r6, 16, 8, color.g); + GX_BITFIELD_SET(r6, 0, 8, 0x50); + GXFIFO.u8 = 0x61; + GXFIFO.u32 = r6; + + r6 = 0; + GX_BITFIELD_SET(r6, 8, 24, clear_z); + GX_BITFIELD_SET(r6, 0, 8, 0x51); + GXFIFO.u8 = 0x61; + GXFIFO.u32 = r6; + + __GXData->field_0x2 = 0; } -#pragma pop /* 8035D0E8-8035D2F0 357A28 0208+00 0/0 4/4 0/0 .text GXSetCopyFilter */ #pragma push @@ -157,14 +213,10 @@ asm void GXSetCopyFilter(GXBool antialias, u8 pattern[12][2], GXBool vf, u8 vfil #pragma pop /* 8035D2F0-8035D304 357C30 0014+00 0/0 2/2 0/0 .text GXSetDispCopyGamma */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetDispCopyGamma(GXGamma gamma) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopyGamma.s" +void GXSetDispCopyGamma(GXGamma gamma) +{ + GX_BITFIELD_SET(__GXData->field_0x1ec, 23, 2, gamma); } -#pragma pop /* 8035D304-8035D46C 357C44 0168+00 0/0 3/3 0/0 .text GXCopyDisp */ #pragma push @@ -187,14 +239,14 @@ asm void GXCopyTex(void* dst, GXBool clear) { #pragma pop /* 8035D5F8-8035D630 357F38 0038+00 0/0 1/1 0/0 .text GXClearBoundingBox */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXClearBoundingBox(void) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXClearBoundingBox.s" +void GXClearBoundingBox(void) +{ + GXFIFO.u8 = GX_LOAD_BP_REG; + GXFIFO.u32 = 0x550003FF; + GXFIFO.u8 = GX_LOAD_BP_REG; + GXFIFO.u32 = 0x560003FF; + set_x2(GX_FALSE); } -#pragma pop /* ############################################################################################## */ /* 803D2448-803D2484 02F568 003C+00 0/0 2/1 0/0 .data GXNtsc480IntDf */ diff --git a/libs/dolphin/gx/GXGeometry.c b/libs/dolphin/gx/GXGeometry.c index fbfcfd36646..b73fae97921 100644 --- a/libs/dolphin/gx/GXGeometry.c +++ b/libs/dolphin/gx/GXGeometry.c @@ -132,7 +132,6 @@ void GXSetCullMode(GXCullMode mode) { GXCullMode mode2; data = __GXData; - // Useless set mode2 = (mode >> 1) & 1; GX_BITFIELD_SET(mode2, 30, 1, mode); diff --git a/libs/dolphin/gx/GXInit.c b/libs/dolphin/gx/GXInit.c index bcde2384286..3a4574f0921 100644 --- a/libs/dolphin/gx/GXInit.c +++ b/libs/dolphin/gx/GXInit.c @@ -67,7 +67,7 @@ static GXFifoObj FifoObj; static GXData gxData; /* 80456580-80456584 -00001 0004+00 6/6 108/108 0/0 .sdata2 __GXData */ -SECTION_SDATA2 extern GXData* __GXData = &gxData; +GXData* const __GXData = &gxData; /* 8035921C-80359318 353B5C 00FC+00 1/1 0/0 0/0 .text __GXDefaultTexRegionCallback */ #pragma push @@ -80,29 +80,16 @@ asm GXTexRegion* __GXDefaultTexRegionCallback(GXTexObj* obj, GXTexMapID mapID) { #pragma pop /* 80359318-8035933C 353C58 0024+00 1/1 0/0 0/0 .text __GXDefaultTlutRegionCallback */ -// blr instead of b -#ifdef NONMATCHING -GXTlutRegion* __GXDefaultTlutRegionCallback(u32 tlut) { - GXTlutRegion* region; - - if (tlut >= 20) { - region = NULL; - } else { - region = &__GXData->field_0x388[tlut]; - } - - return region; -} -#else #pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm GXTlutRegion* __GXDefaultTlutRegionCallback(u32 tlut) { - nofralloc -#include "asm/dolphin/gx/GXInit/__GXDefaultTlutRegionCallback.s" +#pragma peephole off +GXTlutRegion* __GXDefaultTlutRegionCallback(u32 tlut) { + if (tlut >= 0x14) { + return NULL; + } else { + return &__GXData->field_0x388[tlut]; + } } #pragma pop -#endif /* 80451944-80451948 000E44 0004+00 1/1 0/0 0/0 .sbss resetFuncRegistered$145 */ /* static */ u8 resetFuncRegistered[4]; diff --git a/libs/dolphin/gx/GXTexture.c b/libs/dolphin/gx/GXTexture.c index dc89a7ffb1e..bef2d710943 100644 --- a/libs/dolphin/gx/GXTexture.c +++ b/libs/dolphin/gx/GXTexture.c @@ -11,7 +11,6 @@ // Forward References: // -void __GetImageTileCount(); static void GXLoadTexObjPreLoaded(); void GXLoadTexObj(); void GXLoadTlut(); @@ -118,7 +117,7 @@ SECTION_DATA static void* lit_145[61] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GetImageTileCount() { +asm void __GetImageTileCount(u32 arg0, s16 arg1, s16 arg2, s32* arg3, s32* arg4, s32* arg5) { nofralloc #include "asm/dolphin/gx/GXTexture/__GetImageTileCount.s" } diff --git a/libs/dolphin/mtx/mtx44.c b/libs/dolphin/mtx/mtx44.c index bf7efb33b58..baad94917a3 100644 --- a/libs/dolphin/mtx/mtx44.c +++ b/libs/dolphin/mtx/mtx44.c @@ -36,6 +36,39 @@ SECTION_SDATA2 static f32 lit_105 = 0.5f; SECTION_SDATA2 static f32 lit_106 = 0.01745329238474369f; /* 80346F28-80346FF8 341868 00D0+00 0/0 6/6 0/0 .text C_MTXPerspective */ +// Functions match but has issues with float constants +#ifdef NONMATCHING +void C_MTXPerspective(Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f) +{ + f32 temp_f3; + f32 temp_f4; + + fovY = 0.5F * fovY; + + temp_f4 = 1.0F / tanf(0.017453292F * (fovY)); + temp_f3 = 1.0F / (f - n); + + m[0][0] = temp_f4 / aspect; + m[0][1] = 0.0F; + m[0][2] = 0.0F; + m[0][3] = 0.0F; + + m[1][0] = 0.0F; + m[1][1] = temp_f4; + m[1][2] = 0.0F; + m[1][3] = 0.0F; + + m[2][0] = 0.0F; + m[2][1] = 0.0F; + m[2][2] = -n * temp_f3; + m[2][3] = temp_f3 * -(f * n); + + m[3][0] = 0.0F; + m[3][1] = 0.0F; + m[3][2] = -1.0F; + m[3][3] = 0.0F; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -44,8 +77,40 @@ asm void C_MTXPerspective(Mtx44 m, f32 fovy, f32 aspect, f32 near, f32 far) { #include "asm/dolphin/mtx/mtx44/C_MTXPerspective.s" } #pragma pop +#endif /* 80346FF8-80347090 341938 0098+00 0/0 11/11 2/2 .text C_MTXOrtho */ +#ifdef NONMATCHING +void C_MTXOrtho(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f) +{ + f32 temp_f8; + f32 temp_f10; + f32 temp_f4; + + temp_f10 = 1.0F / (r - l); + m[0][0] = 2.0F * temp_f10; + m[0][1] = 0.0F; + m[0][2] = 0.0F; + m[0][3] = temp_f10 * -(r + l); + + temp_f8 = 1.0F / (t - b); + m[1][0] = 0.0F; + m[1][1] = 2.0F * temp_f8; + m[1][2] = 0.0F; + m[1][3] = temp_f8 * -(t + b); + + temp_f4 = 1.0F / (f - n); + m[2][0] = 0.0F; + m[2][1] = 0.0F; + m[2][2] = -1.0F * temp_f4; + m[2][3] = -f * temp_f4; + + m[3][0] = 0.0F; + m[3][1] = 0.0F; + m[3][2] = 0.0F; + m[3][3] = 1.0F; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -54,3 +119,4 @@ asm void C_MTXOrtho(Mtx44 m, f32 top, f32 bottom, f32 left, f32 right, f32 near, #include "asm/dolphin/mtx/mtx44/C_MTXOrtho.s" } #pragma pop +#endif diff --git a/libs/dolphin/si/SISamplingRate.c b/libs/dolphin/si/SISamplingRate.c index 7a6ff1a28b5..c7c02cf188e 100644 --- a/libs/dolphin/si/SISamplingRate.c +++ b/libs/dolphin/si/SISamplingRate.c @@ -34,18 +34,10 @@ static XY XYPAL[12] = { }; #pragma pop -/* 803D1330-803D1368 02E450 0033+05 0/1 0/0 0/0 .data @16 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_16[] = "SISetSamplingRate: unknown TV format. Use default."; -#pragma pop - /* 80451700-80451708 000C00 0004+04 2/2 0/0 0/0 .sbss SamplingRate */ static u32 SamplingRate; /* 80346290-80346374 340BD0 00E4+00 1/1 1/1 0/0 .text SISetSamplingRate */ -// needs compiler epilogue patch -#ifdef NONMATCHING void SISetSamplingRate(u32 msec) { XY* xy; BOOL enabled; @@ -77,16 +69,6 @@ void SISetSamplingRate(u32 msec) { SISetXY((__VIRegs[54] & 1 ? 2u : 1u) * xy[msec].line, xy[msec].count); OSRestoreInterrupts(enabled); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void SISetSamplingRate(u32 msec) { - nofralloc -#include "asm/dolphin/si/SISamplingRate/SISetSamplingRate.s" -} -#pragma pop -#endif /* 80346374-80346398 340CB4 0024+00 0/0 2/2 0/0 .text SIRefreshSamplingRate */ void SIRefreshSamplingRate() { diff --git a/libs/dolphin/vi/Makefile b/libs/dolphin/vi/Makefile index 77b012b0c64..d16012c0cb4 100644 --- a/libs/dolphin/vi/Makefile +++ b/libs/dolphin/vi/Makefile @@ -14,6 +14,7 @@ LIBVI_A_CFLAGS := \ -fp hard \ -nodefaults \ -str reuse \ + -inline auto \ -RTTI off \ -maxerrors 5 \ -enum int $(INCLUDES) \ @@ -35,10 +36,11 @@ $(BUILD_DIR)/libs/dolphin/vi/%.o: libs/dolphin/vi/%.c $(BUILD_DIR)/libs/dolphin/ @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(FRANK_CC) $(LIBVI_A_CFLAGS) -c -o $(@:.o=.po) $(basename $@).c @$(DOLPHIN_LIB_CC) $(LIBVI_A_CFLAGS) $(DEPFLAGS) -c -o $(dir $@) $(basename $@).c @if [ -z '$(DISABLE_DEPS)' ]; then tools/transform-dep.py '$(basename $@).d' '$(basename $@).d'; touch -c $@; fi @echo Frank is fixing $@ - @$(PYTHON) $(FRANK) $@ $@ $@ + @$(PYTHON) $(FRANK) $@ $(@:.o=.po) $@ ifndef DISABLE_DEPS LIBVI_A_D_FILES := $(LIBVI_A_O_FILES:.o=.d) diff --git a/libs/dolphin/vi/vi.c b/libs/dolphin/vi/vi.c index 0fec2d2804c..f21ede57002 100644 --- a/libs/dolphin/vi/vi.c +++ b/libs/dolphin/vi/vi.c @@ -14,15 +14,15 @@ void __VIRetraceHandler(); static void getTiming(); void __VIInit(); -static void setFbbRegs(); -static void setVerticalRegs(); +static void setFbbRegs(void**, void**, void**, void**, void**); +static void setVerticalRegs(u16, u16, u8, u16, u16, u16, u16, u16, u32); u32 VIGetRetraceCount(); -static void GetCurrentDisplayPosition(); +static void GetCurrentDisplayPosition(u32* x, u32* y); static void getCurrentFieldEvenOdd(); -void VIGetNextField(); +u32 VIGetNextField(); void VIGetCurrentLine(); void VIGetTvFormat(); -void VIGetDTVStatus(); +u32 VIGetDTVStatus(); void __VIDisplayPositionToXY(); void __VIGetCurrentPosition(); @@ -46,19 +46,19 @@ static u8 regs[118 + 2 /* padding */]; static u8 IsInitialized[4]; /* 804517E4-804517E8 000CE4 0004+00 4/3 0/0 0/0 .sbss retraceCount */ -static u8 retraceCount[4]; +static u32 retraceCount; /* 804517E8-804517EC 000CE8 0004+00 3/3 0/0 0/0 .sbss flushFlag */ static u8 flushFlag[4]; /* 804517EC-804517F4 000CEC 0008+00 3/3 0/0 0/0 .sbss retraceQueue */ -static u8 retraceQueue[8]; +static OSThreadQueue retraceQueue; /* 804517F4-804517F8 000CF4 0004+00 3/3 0/0 0/0 .sbss PreCB */ -static u8 PreCB[4]; +static VIRetraceCallback PreCB; /* 804517F8-804517FC 000CF8 0004+00 3/3 0/0 0/0 .sbss PostCB */ -static u8 PostCB[4]; +static VIRetraceCallback PostCB; /* 804517FC-80451800 000CFC 0004+00 1/1 0/0 0/0 .sbss PositionCallback */ static u8 PositionCallback[4]; @@ -112,24 +112,22 @@ asm void __VIRetraceHandler() { #pragma pop /* 8034C1E0-8034C224 346B20 0044+00 0/0 4/4 0/0 .text VISetPreRetraceCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback) { - nofralloc -#include "asm/dolphin/vi/vi/VISetPreRetraceCallback.s" +VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback cb) { + VIRetraceCallback prevCb = PreCB; + BOOL enable = OSDisableInterrupts(); + PreCB = cb; + OSRestoreInterrupts(enable); + return prevCb; } -#pragma pop /* 8034C224-8034C268 346B64 0044+00 0/0 4/4 2/2 .text VISetPostRetraceCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback) { - nofralloc -#include "asm/dolphin/vi/vi/VISetPostRetraceCallback.s" +VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback cb) { + VIRetraceCallback prevCb = PostCB; + BOOL enable = OSDisableInterrupts(); + PostCB = cb; + OSRestoreInterrupts(enable); + return prevCb; } -#pragma pop /* ############################################################################################## */ /* 803D1760-803D17A4 02E880 0044+00 4/3 0/0 0/0 .data @1 */ @@ -247,7 +245,7 @@ SECTION_DATA static void* lit_101[31] = { }; /* 80451838-8045183C 000D38 0004+00 2/2 0/0 0/0 .sbss FBSet */ -static u8 FBSet[4]; +static u32 FBSet; /* 8045183C-80451840 000D3C 0004+00 1/1 0/0 0/0 .sbss timingExtra */ static u8 timingExtra[4]; @@ -296,20 +294,22 @@ asm void VIInit() { #pragma pop /* 8034C9C4-8034CA18 347304 0054+00 0/0 10/10 0/0 .text VIWaitForRetrace */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void VIWaitForRetrace() { - nofralloc -#include "asm/dolphin/vi/vi/VIWaitForRetrace.s" +void VIWaitForRetrace() { + BOOL enable = OSDisableInterrupts(); + u32 startVal = retraceCount; + + do { + OSSleepThread(&retraceQueue); + } while(startVal == retraceCount); + + OSRestoreInterrupts(enable); } -#pragma pop /* 8034CA18-8034CCEC 347358 02D4+00 2/2 0/0 0/0 .text setFbbRegs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void setFbbRegs() { +static asm void setFbbRegs(void**, void**, void**, void**, void**) { nofralloc #include "asm/dolphin/vi/vi/setFbbRegs.s" } @@ -319,7 +319,7 @@ static asm void setFbbRegs() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void setVerticalRegs() { +static asm void setVerticalRegs(u16 arg0, u16 arg1, u8 arg2, u16 arg3, u16 arg4, u16 arg5, u16 arg6, u16 arg7, u32 arg8) { nofralloc #include "asm/dolphin/vi/vi/setVerticalRegs.s" } @@ -395,14 +395,18 @@ asm void VIFlush() { #pragma pop /* 8034D7C4-8034D830 348104 006C+00 0/0 3/3 0/0 .text VISetNextFrameBuffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void VISetNextFrameBuffer(void*) { - nofralloc -#include "asm/dolphin/vi/vi/VISetNextFrameBuffer.s" +void VISetNextFrameBuffer(void* buffer) { + void** bufferArray = (void**)regs; + BOOL enable = OSDisableInterrupts(); + + bufferArray[72] = buffer; + FBSet = 1; + setFbbRegs(bufferArray + 60, bufferArray + 73, + bufferArray + 74, bufferArray + 79, bufferArray + 80 + ); + + OSRestoreInterrupts(enable); } -#pragma pop /* 8034D830-8034D838 -00001 0008+00 0/0 0/0 0/0 .text VIGetNextFrameBuffer */ void* VIGetNextFrameBuffer() { @@ -415,29 +419,59 @@ void* VIGetCurrentFrameBuffer() { } /* 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(BOOL) { - nofralloc -#include "asm/dolphin/vi/vi/VISetBlack.s" +void VISetBlack(BOOL isBlack) { + u8* ptr = regs; + u16* ptr2; + BOOL enable = OSDisableInterrupts(); + + ((u32*)ptr)[76] = isBlack; + ptr2 = ((u16**)ptr)[81]; + setVerticalRegs( + ((u16*)ptr)[125], + ((u16*)ptr)[123], + ((u8*)ptr2)[0], + ptr2[1], + ptr2[2], + ptr2[3], + ptr2[4], + ptr2[5], + ((u32*)ptr)[76] + ); + + OSRestoreInterrupts(enable); } -#pragma pop /* 8034D8BC-8034D8C4 -00001 0008+00 0/0 0/0 0/0 .text VIGetRetraceCount */ u32 VIGetRetraceCount() { - return *(u32*)(&retraceCount); + return retraceCount; } /* 8034D8C4-8034D900 348204 003C+00 1/1 0/0 0/0 .text GetCurrentDisplayPosition */ +#ifdef NONMATCHING +void GetCurrentDisplayPosition(u32* x, u32* y) { + u32 val3; + u32 val4; + u32 val = __VIRegs[22] & 0x7FF; + + do { + val4 = val; + val = __VIRegs[22] & 0x7FF; + val3 = __VIRegs[23] & 0x7FF; + } while (val4 != val); + + *x = val3; + *y = val; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void GetCurrentDisplayPosition() { +static asm void GetCurrentDisplayPosition(u32* x, u32* y) { nofralloc #include "asm/dolphin/vi/vi/GetCurrentDisplayPosition.s" } #pragma pop +#endif /* 8034D900-8034D968 348240 0068+00 1/1 0/0 0/0 .text getCurrentFieldEvenOdd */ #pragma push @@ -453,7 +487,7 @@ static asm void getCurrentFieldEvenOdd() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void VIGetNextField() { +asm u32 VIGetNextField() { nofralloc #include "asm/dolphin/vi/vi/VIGetNextField.s" } @@ -495,14 +529,13 @@ asm void VIGetTvFormat() { #pragma pop /* 8034DB04-8034DB40 348444 003C+00 0/0 2/2 0/0 .text VIGetDTVStatus */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void VIGetDTVStatus() { - nofralloc -#include "asm/dolphin/vi/vi/VIGetDTVStatus.s" +u32 VIGetDTVStatus() { + u32 val; + BOOL enable = OSDisableInterrupts(); + val = __VIRegs[55] & 3; + OSRestoreInterrupts(enable); + return val & 1; } -#pragma pop /* 8034DB40-8034DD5C 348480 021C+00 1/1 0/0 0/0 .text __VIDisplayPositionToXY */ #pragma push