diff --git a/asm/Dolphin/GBA/GBAKey.s b/asm/Dolphin/GBA/GBAKey.s new file mode 100644 index 00000000..9c0a2083 --- /dev/null +++ b/asm/Dolphin/GBA/GBAKey.s @@ -0,0 +1,257 @@ +.include "macros.inc" + +.section .data, "wa" + +lbl_803F71A0: + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2,255, 0, 33 + .byte 19, 6, 18, 3, 18, 4, 19, 5, 0,146, 0,255, 0,136,255,255 + .byte 0,137,255,255, 0,138,255,255, 0,139,255,255,143, 0,139, 0 + .byte 140, 0, 2,191,128,126, 22,252,220,209, 22,253, 0, 0, 22,251 + .byte 0, 1, 2,191,128,120, 36,255, 2,128,171,186, 2,148, 0, 41 + .byte 142, 0, 2,191,128,120, 32,255, 2, 64, 15,255, 31, 94, 0,155 + .byte 0, 0, 0,153, 0, 32, 0,135, 0, 0, 0,128, 0, 65, 2,159 + .byte 128,188, 2,191, 0,140, 2,191,128,126, 22,252,220,209, 22,253 + .byte 0, 3, 22,251, 0, 1,143, 0, 2,191,128,120, 2,128,205,209 + .byte 2,148, 0, 76, 38,255, 2,128, 0, 1, 2,149, 0, 94, 2,128 + .byte 0, 2, 2,149,128, 0, 2,159, 0, 76, 0, 33,142, 0, 2,191 + .byte 128,120, 36,255, 2,191,128,120, 36,255, 2,191,128,120, 36,255 + .byte 2,191,128,120, 0,197,255,255, 2, 64, 15,255, 28,158, 2,191 + .byte 128,120, 0,199,255,255, 2,191,128,120, 0,198,255,255, 2,191 + .byte 128,120, 0,192,255,255, 2,191,128,120, 32,255, 2, 64, 15,255 + .byte 31, 94, 2,191,128,120, 33,255, 2,191,128,120, 35,255, 18, 5 + .byte 18, 6, 2,159,128,181, 0, 33,129, 0, 0,129, 0, 16, 16, 32 + .byte 27, 62, 0,223, 20, 86, 3, 64,255,208,132, 23, 0,128, 0, 0 + .byte 0,134, 0, 0, 0,130, 0, 31, 0,222, 21,246, 20, 8, 0,223 + .byte 23,102, 3, 64, 0,255, 31, 95, 2,191,136,229, 31, 28,129, 30 + .byte 25, 30, 20,120, 31,252, 31, 94, 2,191,136, 9, 2,191,135, 35 + .byte 0, 6,129, 6, 0,222, 22,108, 20, 4, 2, 64,255, 0, 0,223 + .byte 18, 49, 21,120, 3, 64, 0,255, 31, 95, 2,191,136,229, 31, 28 + .byte 129, 30, 25, 30, 20,120, 31,252, 31, 94, 2,191,136, 9, 2,191 + .byte 135, 35,129, 0,137, 0, 0,209, 0, 5,153, 0,130, 0, 2,149 + .byte 0,229, 2,145, 0,243, 0,130, 0, 16, 0,134, 0, 1, 0,208 + .byte 23, 27,145, 0,125, 0, 77, 0, 21, 1, 31, 95, 0,223, 0, 3 + .byte 21, 4, 2,191,136, 9, 2,159, 1, 2, 0,130, 0, 17, 0,223 + .byte 0, 3, 21, 1, 31, 95, 0,222, 16, 67, 2, 64,255,240, 2,191 + .byte 136,229, 2,159, 1, 2, 0,130, 0, 16, 0,134, 0, 1, 0,208 + .byte 18,133,145, 0, 77, 0, 21, 1, 0,222, 0, 3, 20, 4, 31, 94 + .byte 2,191,136, 9, 0,131, 0, 19, 27,126,137, 35, 0,131, 0, 19 + .byte 0,223, 0, 7, 0,222, 17,184, 2, 64,255,240, 31, 94, 2,191 + .byte 129,244,241, 0, 2,191,132, 88,143, 0, 0,130, 0, 21, 0,222 + .byte 0, 6, 0,218, 22, 91, 2,191,136,229, 20,253, 20, 3, 27, 94 + .byte 27, 92, 0,130, 0, 22, 0,222, 23, 35, 20,244, 0,218, 22,107 + .byte 2,191,136,229,177, 0, 2,144, 1, 46,129, 0, 20,253,142, 0 + .byte 0,223, 20,145, 3, 64,208,240, 28,191, 0,223, 20,104, 0,209 + .byte 17,252, 21,124, 28,223, 0,209, 17,184,153, 0, 20, 24, 20,120 + .byte 31, 94, 31,254, 31,101, 54, 0, 20, 2, 31,102, 55, 0, 21, 1 + .byte 76, 0, 21, 24,153, 0, 53, 0, 76, 0, 0,223, 0, 18, 63, 0 + .byte 0,255, 0, 18, 20,112, 0,223, 0, 17, 63, 0, 0,255, 0, 17 + .byte 31,165, 21, 1, 31,230,241, 0, 21,248,245, 0, 31, 95, 31,125 + .byte 129, 0, 0,222, 0, 17, 52, 0,137, 0, 0,223, 0, 18, 53, 0 + .byte 76, 0, 0,223, 0, 18, 21,120, 76, 0,137, 0, 31,254, 21, 8 + .byte 59, 0, 0,222, 0, 17, 62, 0, 0,223, 0, 18, 59, 0, 28,191 + .byte 0,218, 21,241, 53, 0, 2,149, 1,146, 0,223, 16,226, 21, 8 + .byte 31, 95, 0,223, 16, 59,121, 0, 57, 0, 48,128, 0,254, 0, 34 + .byte 0,220, 18, 41, 0,221, 17,248, 92, 0,240, 0, 31,229, 48,128 + .byte 2,159, 1,165, 0,223, 16,202, 21, 8, 31, 95, 0,223, 16, 67 + .byte 117, 0, 57, 0, 48,128, 0,254, 0, 34, 0,220, 18, 89, 0,221 + .byte 22,254, 76, 0,240, 0, 31,229, 48,128, 0,254, 0, 35, 0,218 + .byte 0, 8, 0,216, 0, 9, 0,155, 0, 32, 0,153, 0, 8, 0,135 + .byte 0, 0, 2,191,128,139, 2,223, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + +lbl_803F7520: + .asciz "GBAKey.c" + .balign 4 + +lbl_803F752C: + .asciz "GBA - unexpected dsp call" + +.section .text, "ax" # 0x80003640 - 0x803CB1C0 + +.global __GBASetDelay +__GBASetDelay: +/* 803CAF1C 003C7E7C 3C 80 80 57 */ lis r4, __GBA@ha +/* 803CAF20 003C7E80 54 63 40 2E */ slwi r3, r3, 8 +/* 803CAF24 003C7E84 38 04 A1 A0 */ addi r0, r4, __GBA@l +/* 803CAF28 003C7E88 7C E0 1A 14 */ add r7, r0, r3 +/* 803CAF2C 003C7E8C 80 67 00 30 */ lwz r3, 0x30(r7) +/* 803CAF30 003C7E90 80 87 00 34 */ lwz r4, 0x34(r7) +/* 803CAF34 003C7E94 90 C7 00 34 */ stw r6, 0x34(r7) +/* 803CAF38 003C7E98 90 A7 00 30 */ stw r5, 0x30(r7) +/* 803CAF3C 003C7E9C 4E 80 00 20 */ blr + +.global __GBADSPTaskInit +__GBADSPTaskInit: +/* 803CAF40 003C7EA0 7C 08 02 A6 */ mflr r0 +/* 803CAF44 003C7EA4 3C 80 80 57 */ lis r4, __GBA@ha +/* 803CAF48 003C7EA8 90 01 00 04 */ stw r0, 4(r1) +/* 803CAF4C 003C7EAC 38 84 A1 A0 */ addi r4, r4, __GBA@l +/* 803CAF50 003C7EB0 38 04 00 A8 */ addi r0, r4, 0xa8 +/* 803CAF54 003C7EB4 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 803CAF58 003C7EB8 7C 00 18 40 */ cmplw r0, r3 +/* 803CAF5C 003C7EBC 93 E1 00 1C */ stw r31, 0x1c(r1) +/* 803CAF60 003C7EC0 40 82 00 0C */ bne lbl_803CAF6C +/* 803CAF64 003C7EC4 38 00 00 00 */ li r0, 0 +/* 803CAF68 003C7EC8 48 00 00 68 */ b lbl_803CAFD0 +lbl_803CAF6C: +/* 803CAF6C 003C7ECC 38 84 01 00 */ addi r4, r4, 0x100 +/* 803CAF70 003C7ED0 38 04 00 A8 */ addi r0, r4, 0xa8 +/* 803CAF74 003C7ED4 7C 00 18 40 */ cmplw r0, r3 +/* 803CAF78 003C7ED8 40 82 00 0C */ bne lbl_803CAF84 +/* 803CAF7C 003C7EDC 38 00 00 01 */ li r0, 1 +/* 803CAF80 003C7EE0 48 00 00 50 */ b lbl_803CAFD0 +lbl_803CAF84: +/* 803CAF84 003C7EE4 38 04 01 A8 */ addi r0, r4, 0x1a8 +/* 803CAF88 003C7EE8 7C 00 18 40 */ cmplw r0, r3 +/* 803CAF8C 003C7EEC 38 84 01 00 */ addi r4, r4, 0x100 +/* 803CAF90 003C7EF0 40 82 00 0C */ bne lbl_803CAF9C +/* 803CAF94 003C7EF4 38 00 00 02 */ li r0, 2 +/* 803CAF98 003C7EF8 48 00 00 38 */ b lbl_803CAFD0 +lbl_803CAF9C: +/* 803CAF9C 003C7EFC 38 04 01 A8 */ addi r0, r4, 0x1a8 +/* 803CAFA0 003C7F00 7C 00 18 40 */ cmplw r0, r3 +/* 803CAFA4 003C7F04 40 82 00 0C */ bne lbl_803CAFB0 +/* 803CAFA8 003C7F08 38 00 00 03 */ li r0, 3 +/* 803CAFAC 003C7F0C 48 00 00 24 */ b lbl_803CAFD0 +lbl_803CAFB0: +/* 803CAFB0 003C7F10 3C 60 80 3F */ lis r3, lbl_803F7520@ha +/* 803CAFB4 003C7F14 4C C6 31 82 */ crclr 6 +/* 803CAFB8 003C7F18 3C 80 80 3F */ lis r4, lbl_803F752C@ha +/* 803CAFBC 003C7F1C 38 A4 75 2C */ addi r5, r4, lbl_803F752C@l +/* 803CAFC0 003C7F20 38 63 75 20 */ addi r3, r3, lbl_803F7520@l +/* 803CAFC4 003C7F24 38 80 00 A9 */ li r4, 0xa9 +/* 803CAFC8 003C7F28 4B FB 4A 65 */ bl OSPanic +/* 803CAFCC 003C7F2C 38 00 FF FF */ li r0, -1 +lbl_803CAFD0: +/* 803CAFD0 003C7F30 3C 60 80 57 */ lis r3, __GBA@ha +/* 803CAFD4 003C7F34 54 04 40 2E */ slwi r4, r0, 8 +/* 803CAFD8 003C7F38 38 03 A1 A0 */ addi r0, r3, __GBA@l +/* 803CAFDC 003C7F3C 7F E0 22 14 */ add r31, r0, r4 +/* 803CAFE0 003C7F40 3C 60 AB BA */ lis r3, 0xabba +/* 803CAFE4 003C7F44 4B FA 4A 0D */ bl DSPSendMailToDSP +lbl_803CAFE8: +/* 803CAFE8 003C7F48 4B FA 49 D1 */ bl DSPCheckMailToDSP +/* 803CAFEC 003C7F4C 28 03 00 00 */ cmplwi r3, 0 +/* 803CAFF0 003C7F50 40 82 FF F8 */ bne lbl_803CAFE8 +/* 803CAFF4 003C7F54 80 7F 00 F8 */ lwz r3, 0xf8(r31) +/* 803CAFF8 003C7F58 4B FA 49 F9 */ bl DSPSendMailToDSP +lbl_803CAFFC: +/* 803CAFFC 003C7F5C 4B FA 49 BD */ bl DSPCheckMailToDSP +/* 803CB000 003C7F60 28 03 00 00 */ cmplwi r3, 0 +/* 803CB004 003C7F64 40 82 FF F8 */ bne lbl_803CAFFC +/* 803CB008 003C7F68 80 01 00 24 */ lwz r0, 0x24(r1) +/* 803CB00C 003C7F6C 83 E1 00 1C */ lwz r31, 0x1c(r1) +/* 803CB010 003C7F70 38 21 00 20 */ addi r1, r1, 0x20 +/* 803CB014 003C7F74 7C 08 03 A6 */ mtlr r0 +/* 803CB018 003C7F78 4E 80 00 20 */ blr + +.global __GBADSPTaskDone +__GBADSPTaskDone: +/* 803CB01C 003C7F7C 3C 80 80 57 */ lis r4, __GBA@ha +/* 803CB020 003C7F80 7C 08 02 A6 */ mflr r0 +/* 803CB024 003C7F84 38 84 A1 A0 */ addi r4, r4, __GBA@l +/* 803CB028 003C7F88 90 01 00 04 */ stw r0, 4(r1) +/* 803CB02C 003C7F8C 38 04 00 A8 */ addi r0, r4, 0xa8 +/* 803CB030 003C7F90 7C 00 18 40 */ cmplw r0, r3 +/* 803CB034 003C7F94 94 21 FF F8 */ stwu r1, -8(r1) +/* 803CB038 003C7F98 40 82 00 0C */ bne lbl_803CB044 +/* 803CB03C 003C7F9C 38 00 00 00 */ li r0, 0 +/* 803CB040 003C7FA0 48 00 00 68 */ b lbl_803CB0A8 +lbl_803CB044: +/* 803CB044 003C7FA4 38 84 01 00 */ addi r4, r4, 0x100 +/* 803CB048 003C7FA8 38 04 00 A8 */ addi r0, r4, 0xa8 +/* 803CB04C 003C7FAC 7C 00 18 40 */ cmplw r0, r3 +/* 803CB050 003C7FB0 40 82 00 0C */ bne lbl_803CB05C +/* 803CB054 003C7FB4 38 00 00 01 */ li r0, 1 +/* 803CB058 003C7FB8 48 00 00 50 */ b lbl_803CB0A8 +lbl_803CB05C: +/* 803CB05C 003C7FBC 38 04 01 A8 */ addi r0, r4, 0x1a8 +/* 803CB060 003C7FC0 7C 00 18 40 */ cmplw r0, r3 +/* 803CB064 003C7FC4 38 84 01 00 */ addi r4, r4, 0x100 +/* 803CB068 003C7FC8 40 82 00 0C */ bne lbl_803CB074 +/* 803CB06C 003C7FCC 38 00 00 02 */ li r0, 2 +/* 803CB070 003C7FD0 48 00 00 38 */ b lbl_803CB0A8 +lbl_803CB074: +/* 803CB074 003C7FD4 38 04 01 A8 */ addi r0, r4, 0x1a8 +/* 803CB078 003C7FD8 7C 00 18 40 */ cmplw r0, r3 +/* 803CB07C 003C7FDC 40 82 00 0C */ bne lbl_803CB088 +/* 803CB080 003C7FE0 38 00 00 03 */ li r0, 3 +/* 803CB084 003C7FE4 48 00 00 24 */ b lbl_803CB0A8 +lbl_803CB088: +/* 803CB088 003C7FE8 3C 60 80 3F */ lis r3, lbl_803F7520@ha +/* 803CB08C 003C7FEC 4C C6 31 82 */ crclr 6 +/* 803CB090 003C7FF0 3C 80 80 3F */ lis r4, lbl_803F752C@ha +/* 803CB094 003C7FF4 38 A4 75 2C */ addi r5, r4, lbl_803F752C@l +/* 803CB098 003C7FF8 38 63 75 20 */ addi r3, r3, lbl_803F7520@l +/* 803CB09C 003C7FFC 38 80 00 A9 */ li r4, 0xa9 +/* 803CB0A0 003C8000 4B FB 49 8D */ bl OSPanic +/* 803CB0A4 003C8004 38 00 FF FF */ li r0, -1 +lbl_803CB0A8: +/* 803CB0A8 003C8008 7C 03 03 78 */ mr r3, r0 +/* 803CB0AC 003C800C 38 80 00 00 */ li r4, 0 +/* 803CB0B0 003C8010 4B FF ED B1 */ bl __GBAX01 +/* 803CB0B4 003C8014 80 01 00 0C */ lwz r0, 0xc(r1) +/* 803CB0B8 003C8018 38 21 00 08 */ addi r1, r1, 8 +/* 803CB0BC 003C801C 7C 08 03 A6 */ mtlr r0 +/* 803CB0C0 003C8020 4E 80 00 20 */ blr + +.global __GBAX02 +__GBAX02: +/* 803CB0C4 003C8024 7C 08 02 A6 */ mflr r0 +/* 803CB0C8 003C8028 3C A0 80 57 */ lis r5, __GBA@ha +/* 803CB0CC 003C802C 90 01 00 04 */ stw r0, 4(r1) +/* 803CB0D0 003C8030 38 05 A1 A0 */ addi r0, r5, __GBA@l +/* 803CB0D4 003C8034 54 63 40 2E */ slwi r3, r3, 8 +/* 803CB0D8 003C8038 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 803CB0DC 003C803C 38 A0 00 04 */ li r5, 4 +/* 803CB0E0 003C8040 93 E1 00 1C */ stw r31, 0x1c(r1) +/* 803CB0E4 003C8044 7F E0 1A 14 */ add r31, r0, r3 +/* 803CB0E8 003C8048 93 C1 00 18 */ stw r30, 0x18(r1) +/* 803CB0EC 003C804C 3B DF 00 40 */ addi r30, r31, 0x40 +/* 803CB0F0 003C8050 93 A1 00 14 */ stw r29, 0x14(r1) +/* 803CB0F4 003C8054 83 BF 00 F8 */ lwz r29, 0xf8(r31) +/* 803CB0F8 003C8058 38 7D 00 00 */ addi r3, r29, 0 +/* 803CB0FC 003C805C 4B C3 83 95 */ bl memcpy +/* 803CB100 003C8060 80 1E 00 00 */ lwz r0, 0(r30) +/* 803CB104 003C8064 38 7D 00 20 */ addi r3, r29, 0x20 +/* 803CB108 003C8068 38 80 00 20 */ li r4, 0x20 +/* 803CB10C 003C806C 90 1D 00 04 */ stw r0, 4(r29) +/* 803CB110 003C8070 80 1E 00 04 */ lwz r0, 4(r30) +/* 803CB114 003C8074 90 1D 00 08 */ stw r0, 8(r29) +/* 803CB118 003C8078 80 1E 00 0C */ lwz r0, 0xc(r30) +/* 803CB11C 003C807C 90 1D 00 0C */ stw r0, 0xc(r29) +/* 803CB120 003C8080 90 7D 00 10 */ stw r3, 0x10(r29) +/* 803CB124 003C8084 4B FB 39 61 */ bl DCInvalidateRange +/* 803CB128 003C8088 38 7D 00 00 */ addi r3, r29, 0 +/* 803CB12C 003C808C 38 80 00 20 */ li r4, 0x20 +/* 803CB130 003C8090 4B FB 39 81 */ bl DCFlushRange +/* 803CB134 003C8094 38 00 00 FF */ li r0, 0xff +/* 803CB138 003C8098 3C 80 80 3F */ lis r4, lbl_803F71A0@ha +/* 803CB13C 003C809C 90 1F 00 AC */ stw r0, 0xac(r31) +/* 803CB140 003C80A0 38 84 71 A0 */ addi r4, r4, lbl_803F71A0@l +/* 803CB144 003C80A4 3C 04 80 00 */ addis r0, r4, 0x8000 +/* 803CB148 003C80A8 90 1F 00 B4 */ stw r0, 0xb4(r31) +/* 803CB14C 003C80AC 38 00 03 80 */ li r0, 0x380 +/* 803CB150 003C80B0 3C A0 80 3D */ lis r5, __GBADSPTaskInit@ha +/* 803CB154 003C80B4 90 1F 00 B8 */ stw r0, 0xb8(r31) +/* 803CB158 003C80B8 38 C0 00 00 */ li r6, 0 +/* 803CB15C 003C80BC 38 00 00 10 */ li r0, 0x10 +/* 803CB160 003C80C0 90 DF 00 BC */ stw r6, 0xbc(r31) +/* 803CB164 003C80C4 38 A5 AF 40 */ addi r5, r5, __GBADSPTaskInit@l +/* 803CB168 003C80C8 3C 80 80 3D */ lis r4, __GBADSPTaskDone@ha +/* 803CB16C 003C80CC B0 1F 00 CC */ sth r0, 0xcc(r31) +/* 803CB170 003C80D0 38 04 B0 1C */ addi r0, r4, __GBADSPTaskDone@l +/* 803CB174 003C80D4 38 7F 00 A8 */ addi r3, r31, 0xa8 +/* 803CB178 003C80D8 90 BF 00 D0 */ stw r5, 0xd0(r31) +/* 803CB17C 003C80DC 90 DF 00 D4 */ stw r6, 0xd4(r31) +/* 803CB180 003C80E0 90 1F 00 D8 */ stw r0, 0xd8(r31) +/* 803CB184 003C80E4 90 DF 00 DC */ stw r6, 0xdc(r31) +/* 803CB188 003C80E8 4B FA 49 D9 */ bl DSPAddTask +/* 803CB18C 003C80EC 80 01 00 24 */ lwz r0, 0x24(r1) +/* 803CB190 003C80F0 83 E1 00 1C */ lwz r31, 0x1c(r1) +/* 803CB194 003C80F4 83 C1 00 18 */ lwz r30, 0x18(r1) +/* 803CB198 003C80F8 83 A1 00 14 */ lwz r29, 0x14(r1) +/* 803CB19C 003C80FC 38 21 00 20 */ addi r1, r1, 0x20 +/* 803CB1A0 003C8100 7C 08 03 A6 */ mtlr r0 +/* 803CB1A4 003C8104 4E 80 00 20 */ blr diff --git a/asm/Dolphin/GBA/GBAXfer.s b/asm/Dolphin/GBA/GBAXfer.s index f444e496..03d86a89 100644 --- a/asm/Dolphin/GBA/GBAXfer.s +++ b/asm/Dolphin/GBA/GBAXfer.s @@ -1,71 +1,4 @@ .include "macros.inc" - -.section .data, "wa" - -lbl_803F71A0: - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2,255, 0, 33 - .byte 19, 6, 18, 3, 18, 4, 19, 5, 0,146, 0,255, 0,136,255,255 - .byte 0,137,255,255, 0,138,255,255, 0,139,255,255,143, 0,139, 0 - .byte 140, 0, 2,191,128,126, 22,252,220,209, 22,253, 0, 0, 22,251 - .byte 0, 1, 2,191,128,120, 36,255, 2,128,171,186, 2,148, 0, 41 - .byte 142, 0, 2,191,128,120, 32,255, 2, 64, 15,255, 31, 94, 0,155 - .byte 0, 0, 0,153, 0, 32, 0,135, 0, 0, 0,128, 0, 65, 2,159 - .byte 128,188, 2,191, 0,140, 2,191,128,126, 22,252,220,209, 22,253 - .byte 0, 3, 22,251, 0, 1,143, 0, 2,191,128,120, 2,128,205,209 - .byte 2,148, 0, 76, 38,255, 2,128, 0, 1, 2,149, 0, 94, 2,128 - .byte 0, 2, 2,149,128, 0, 2,159, 0, 76, 0, 33,142, 0, 2,191 - .byte 128,120, 36,255, 2,191,128,120, 36,255, 2,191,128,120, 36,255 - .byte 2,191,128,120, 0,197,255,255, 2, 64, 15,255, 28,158, 2,191 - .byte 128,120, 0,199,255,255, 2,191,128,120, 0,198,255,255, 2,191 - .byte 128,120, 0,192,255,255, 2,191,128,120, 32,255, 2, 64, 15,255 - .byte 31, 94, 2,191,128,120, 33,255, 2,191,128,120, 35,255, 18, 5 - .byte 18, 6, 2,159,128,181, 0, 33,129, 0, 0,129, 0, 16, 16, 32 - .byte 27, 62, 0,223, 20, 86, 3, 64,255,208,132, 23, 0,128, 0, 0 - .byte 0,134, 0, 0, 0,130, 0, 31, 0,222, 21,246, 20, 8, 0,223 - .byte 23,102, 3, 64, 0,255, 31, 95, 2,191,136,229, 31, 28,129, 30 - .byte 25, 30, 20,120, 31,252, 31, 94, 2,191,136, 9, 2,191,135, 35 - .byte 0, 6,129, 6, 0,222, 22,108, 20, 4, 2, 64,255, 0, 0,223 - .byte 18, 49, 21,120, 3, 64, 0,255, 31, 95, 2,191,136,229, 31, 28 - .byte 129, 30, 25, 30, 20,120, 31,252, 31, 94, 2,191,136, 9, 2,191 - .byte 135, 35,129, 0,137, 0, 0,209, 0, 5,153, 0,130, 0, 2,149 - .byte 0,229, 2,145, 0,243, 0,130, 0, 16, 0,134, 0, 1, 0,208 - .byte 23, 27,145, 0,125, 0, 77, 0, 21, 1, 31, 95, 0,223, 0, 3 - .byte 21, 4, 2,191,136, 9, 2,159, 1, 2, 0,130, 0, 17, 0,223 - .byte 0, 3, 21, 1, 31, 95, 0,222, 16, 67, 2, 64,255,240, 2,191 - .byte 136,229, 2,159, 1, 2, 0,130, 0, 16, 0,134, 0, 1, 0,208 - .byte 18,133,145, 0, 77, 0, 21, 1, 0,222, 0, 3, 20, 4, 31, 94 - .byte 2,191,136, 9, 0,131, 0, 19, 27,126,137, 35, 0,131, 0, 19 - .byte 0,223, 0, 7, 0,222, 17,184, 2, 64,255,240, 31, 94, 2,191 - .byte 129,244,241, 0, 2,191,132, 88,143, 0, 0,130, 0, 21, 0,222 - .byte 0, 6, 0,218, 22, 91, 2,191,136,229, 20,253, 20, 3, 27, 94 - .byte 27, 92, 0,130, 0, 22, 0,222, 23, 35, 20,244, 0,218, 22,107 - .byte 2,191,136,229,177, 0, 2,144, 1, 46,129, 0, 20,253,142, 0 - .byte 0,223, 20,145, 3, 64,208,240, 28,191, 0,223, 20,104, 0,209 - .byte 17,252, 21,124, 28,223, 0,209, 17,184,153, 0, 20, 24, 20,120 - .byte 31, 94, 31,254, 31,101, 54, 0, 20, 2, 31,102, 55, 0, 21, 1 - .byte 76, 0, 21, 24,153, 0, 53, 0, 76, 0, 0,223, 0, 18, 63, 0 - .byte 0,255, 0, 18, 20,112, 0,223, 0, 17, 63, 0, 0,255, 0, 17 - .byte 31,165, 21, 1, 31,230,241, 0, 21,248,245, 0, 31, 95, 31,125 - .byte 129, 0, 0,222, 0, 17, 52, 0,137, 0, 0,223, 0, 18, 53, 0 - .byte 76, 0, 0,223, 0, 18, 21,120, 76, 0,137, 0, 31,254, 21, 8 - .byte 59, 0, 0,222, 0, 17, 62, 0, 0,223, 0, 18, 59, 0, 28,191 - .byte 0,218, 21,241, 53, 0, 2,149, 1,146, 0,223, 16,226, 21, 8 - .byte 31, 95, 0,223, 16, 59,121, 0, 57, 0, 48,128, 0,254, 0, 34 - .byte 0,220, 18, 41, 0,221, 17,248, 92, 0,240, 0, 31,229, 48,128 - .byte 2,159, 1,165, 0,223, 16,202, 21, 8, 31, 95, 0,223, 16, 67 - .byte 117, 0, 57, 0, 48,128, 0,254, 0, 34, 0,220, 18, 89, 0,221 - .byte 22,254, 76, 0,240, 0, 31,229, 48,128, 0,254, 0, 35, 0,218 - .byte 0, 8, 0,216, 0, 9, 0,155, 0, 32, 0,153, 0, 8, 0,135 - .byte 0, 0, 2,191,128,139, 2,223, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - -lbl_803F7520: - .asciz "GBAKey.c" - .balign 4 - -lbl_803F752C: - .asciz "GBA - unexpected dsp call" .section .text, "ax" # 0x80003640 - 0x803CB1C0 @@ -291,190 +224,3 @@ __GBATransfer: /* 803CAF10 003C7E70 38 21 00 30 */ addi r1, r1, 0x30 /* 803CAF14 003C7E74 7C 08 03 A6 */ mtlr r0 /* 803CAF18 003C7E78 4E 80 00 20 */ blr - -.global __GBASetDelay -__GBASetDelay: -/* 803CAF1C 003C7E7C 3C 80 80 57 */ lis r4, __GBA@ha -/* 803CAF20 003C7E80 54 63 40 2E */ slwi r3, r3, 8 -/* 803CAF24 003C7E84 38 04 A1 A0 */ addi r0, r4, __GBA@l -/* 803CAF28 003C7E88 7C E0 1A 14 */ add r7, r0, r3 -/* 803CAF2C 003C7E8C 80 67 00 30 */ lwz r3, 0x30(r7) -/* 803CAF30 003C7E90 80 87 00 34 */ lwz r4, 0x34(r7) -/* 803CAF34 003C7E94 90 C7 00 34 */ stw r6, 0x34(r7) -/* 803CAF38 003C7E98 90 A7 00 30 */ stw r5, 0x30(r7) -/* 803CAF3C 003C7E9C 4E 80 00 20 */ blr - -.global __GBADSPTaskInit -__GBADSPTaskInit: -/* 803CAF40 003C7EA0 7C 08 02 A6 */ mflr r0 -/* 803CAF44 003C7EA4 3C 80 80 57 */ lis r4, __GBA@ha -/* 803CAF48 003C7EA8 90 01 00 04 */ stw r0, 4(r1) -/* 803CAF4C 003C7EAC 38 84 A1 A0 */ addi r4, r4, __GBA@l -/* 803CAF50 003C7EB0 38 04 00 A8 */ addi r0, r4, 0xa8 -/* 803CAF54 003C7EB4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 803CAF58 003C7EB8 7C 00 18 40 */ cmplw r0, r3 -/* 803CAF5C 003C7EBC 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 803CAF60 003C7EC0 40 82 00 0C */ bne lbl_803CAF6C -/* 803CAF64 003C7EC4 38 00 00 00 */ li r0, 0 -/* 803CAF68 003C7EC8 48 00 00 68 */ b lbl_803CAFD0 -lbl_803CAF6C: -/* 803CAF6C 003C7ECC 38 84 01 00 */ addi r4, r4, 0x100 -/* 803CAF70 003C7ED0 38 04 00 A8 */ addi r0, r4, 0xa8 -/* 803CAF74 003C7ED4 7C 00 18 40 */ cmplw r0, r3 -/* 803CAF78 003C7ED8 40 82 00 0C */ bne lbl_803CAF84 -/* 803CAF7C 003C7EDC 38 00 00 01 */ li r0, 1 -/* 803CAF80 003C7EE0 48 00 00 50 */ b lbl_803CAFD0 -lbl_803CAF84: -/* 803CAF84 003C7EE4 38 04 01 A8 */ addi r0, r4, 0x1a8 -/* 803CAF88 003C7EE8 7C 00 18 40 */ cmplw r0, r3 -/* 803CAF8C 003C7EEC 38 84 01 00 */ addi r4, r4, 0x100 -/* 803CAF90 003C7EF0 40 82 00 0C */ bne lbl_803CAF9C -/* 803CAF94 003C7EF4 38 00 00 02 */ li r0, 2 -/* 803CAF98 003C7EF8 48 00 00 38 */ b lbl_803CAFD0 -lbl_803CAF9C: -/* 803CAF9C 003C7EFC 38 04 01 A8 */ addi r0, r4, 0x1a8 -/* 803CAFA0 003C7F00 7C 00 18 40 */ cmplw r0, r3 -/* 803CAFA4 003C7F04 40 82 00 0C */ bne lbl_803CAFB0 -/* 803CAFA8 003C7F08 38 00 00 03 */ li r0, 3 -/* 803CAFAC 003C7F0C 48 00 00 24 */ b lbl_803CAFD0 -lbl_803CAFB0: -/* 803CAFB0 003C7F10 3C 60 80 3F */ lis r3, lbl_803F7520@ha -/* 803CAFB4 003C7F14 4C C6 31 82 */ crclr 6 -/* 803CAFB8 003C7F18 3C 80 80 3F */ lis r4, lbl_803F752C@ha -/* 803CAFBC 003C7F1C 38 A4 75 2C */ addi r5, r4, lbl_803F752C@l -/* 803CAFC0 003C7F20 38 63 75 20 */ addi r3, r3, lbl_803F7520@l -/* 803CAFC4 003C7F24 38 80 00 A9 */ li r4, 0xa9 -/* 803CAFC8 003C7F28 4B FB 4A 65 */ bl OSPanic -/* 803CAFCC 003C7F2C 38 00 FF FF */ li r0, -1 -lbl_803CAFD0: -/* 803CAFD0 003C7F30 3C 60 80 57 */ lis r3, __GBA@ha -/* 803CAFD4 003C7F34 54 04 40 2E */ slwi r4, r0, 8 -/* 803CAFD8 003C7F38 38 03 A1 A0 */ addi r0, r3, __GBA@l -/* 803CAFDC 003C7F3C 7F E0 22 14 */ add r31, r0, r4 -/* 803CAFE0 003C7F40 3C 60 AB BA */ lis r3, 0xabba -/* 803CAFE4 003C7F44 4B FA 4A 0D */ bl DSPSendMailToDSP -lbl_803CAFE8: -/* 803CAFE8 003C7F48 4B FA 49 D1 */ bl DSPCheckMailToDSP -/* 803CAFEC 003C7F4C 28 03 00 00 */ cmplwi r3, 0 -/* 803CAFF0 003C7F50 40 82 FF F8 */ bne lbl_803CAFE8 -/* 803CAFF4 003C7F54 80 7F 00 F8 */ lwz r3, 0xf8(r31) -/* 803CAFF8 003C7F58 4B FA 49 F9 */ bl DSPSendMailToDSP -lbl_803CAFFC: -/* 803CAFFC 003C7F5C 4B FA 49 BD */ bl DSPCheckMailToDSP -/* 803CB000 003C7F60 28 03 00 00 */ cmplwi r3, 0 -/* 803CB004 003C7F64 40 82 FF F8 */ bne lbl_803CAFFC -/* 803CB008 003C7F68 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803CB00C 003C7F6C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 803CB010 003C7F70 38 21 00 20 */ addi r1, r1, 0x20 -/* 803CB014 003C7F74 7C 08 03 A6 */ mtlr r0 -/* 803CB018 003C7F78 4E 80 00 20 */ blr - -.global __GBADSPTaskDone -__GBADSPTaskDone: -/* 803CB01C 003C7F7C 3C 80 80 57 */ lis r4, __GBA@ha -/* 803CB020 003C7F80 7C 08 02 A6 */ mflr r0 -/* 803CB024 003C7F84 38 84 A1 A0 */ addi r4, r4, __GBA@l -/* 803CB028 003C7F88 90 01 00 04 */ stw r0, 4(r1) -/* 803CB02C 003C7F8C 38 04 00 A8 */ addi r0, r4, 0xa8 -/* 803CB030 003C7F90 7C 00 18 40 */ cmplw r0, r3 -/* 803CB034 003C7F94 94 21 FF F8 */ stwu r1, -8(r1) -/* 803CB038 003C7F98 40 82 00 0C */ bne lbl_803CB044 -/* 803CB03C 003C7F9C 38 00 00 00 */ li r0, 0 -/* 803CB040 003C7FA0 48 00 00 68 */ b lbl_803CB0A8 -lbl_803CB044: -/* 803CB044 003C7FA4 38 84 01 00 */ addi r4, r4, 0x100 -/* 803CB048 003C7FA8 38 04 00 A8 */ addi r0, r4, 0xa8 -/* 803CB04C 003C7FAC 7C 00 18 40 */ cmplw r0, r3 -/* 803CB050 003C7FB0 40 82 00 0C */ bne lbl_803CB05C -/* 803CB054 003C7FB4 38 00 00 01 */ li r0, 1 -/* 803CB058 003C7FB8 48 00 00 50 */ b lbl_803CB0A8 -lbl_803CB05C: -/* 803CB05C 003C7FBC 38 04 01 A8 */ addi r0, r4, 0x1a8 -/* 803CB060 003C7FC0 7C 00 18 40 */ cmplw r0, r3 -/* 803CB064 003C7FC4 38 84 01 00 */ addi r4, r4, 0x100 -/* 803CB068 003C7FC8 40 82 00 0C */ bne lbl_803CB074 -/* 803CB06C 003C7FCC 38 00 00 02 */ li r0, 2 -/* 803CB070 003C7FD0 48 00 00 38 */ b lbl_803CB0A8 -lbl_803CB074: -/* 803CB074 003C7FD4 38 04 01 A8 */ addi r0, r4, 0x1a8 -/* 803CB078 003C7FD8 7C 00 18 40 */ cmplw r0, r3 -/* 803CB07C 003C7FDC 40 82 00 0C */ bne lbl_803CB088 -/* 803CB080 003C7FE0 38 00 00 03 */ li r0, 3 -/* 803CB084 003C7FE4 48 00 00 24 */ b lbl_803CB0A8 -lbl_803CB088: -/* 803CB088 003C7FE8 3C 60 80 3F */ lis r3, lbl_803F7520@ha -/* 803CB08C 003C7FEC 4C C6 31 82 */ crclr 6 -/* 803CB090 003C7FF0 3C 80 80 3F */ lis r4, lbl_803F752C@ha -/* 803CB094 003C7FF4 38 A4 75 2C */ addi r5, r4, lbl_803F752C@l -/* 803CB098 003C7FF8 38 63 75 20 */ addi r3, r3, lbl_803F7520@l -/* 803CB09C 003C7FFC 38 80 00 A9 */ li r4, 0xa9 -/* 803CB0A0 003C8000 4B FB 49 8D */ bl OSPanic -/* 803CB0A4 003C8004 38 00 FF FF */ li r0, -1 -lbl_803CB0A8: -/* 803CB0A8 003C8008 7C 03 03 78 */ mr r3, r0 -/* 803CB0AC 003C800C 38 80 00 00 */ li r4, 0 -/* 803CB0B0 003C8010 4B FF ED B1 */ bl __GBAX01 -/* 803CB0B4 003C8014 80 01 00 0C */ lwz r0, 0xc(r1) -/* 803CB0B8 003C8018 38 21 00 08 */ addi r1, r1, 8 -/* 803CB0BC 003C801C 7C 08 03 A6 */ mtlr r0 -/* 803CB0C0 003C8020 4E 80 00 20 */ blr - -.global __GBAX02 -__GBAX02: -/* 803CB0C4 003C8024 7C 08 02 A6 */ mflr r0 -/* 803CB0C8 003C8028 3C A0 80 57 */ lis r5, __GBA@ha -/* 803CB0CC 003C802C 90 01 00 04 */ stw r0, 4(r1) -/* 803CB0D0 003C8030 38 05 A1 A0 */ addi r0, r5, __GBA@l -/* 803CB0D4 003C8034 54 63 40 2E */ slwi r3, r3, 8 -/* 803CB0D8 003C8038 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 803CB0DC 003C803C 38 A0 00 04 */ li r5, 4 -/* 803CB0E0 003C8040 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 803CB0E4 003C8044 7F E0 1A 14 */ add r31, r0, r3 -/* 803CB0E8 003C8048 93 C1 00 18 */ stw r30, 0x18(r1) -/* 803CB0EC 003C804C 3B DF 00 40 */ addi r30, r31, 0x40 -/* 803CB0F0 003C8050 93 A1 00 14 */ stw r29, 0x14(r1) -/* 803CB0F4 003C8054 83 BF 00 F8 */ lwz r29, 0xf8(r31) -/* 803CB0F8 003C8058 38 7D 00 00 */ addi r3, r29, 0 -/* 803CB0FC 003C805C 4B C3 83 95 */ bl memcpy -/* 803CB100 003C8060 80 1E 00 00 */ lwz r0, 0(r30) -/* 803CB104 003C8064 38 7D 00 20 */ addi r3, r29, 0x20 -/* 803CB108 003C8068 38 80 00 20 */ li r4, 0x20 -/* 803CB10C 003C806C 90 1D 00 04 */ stw r0, 4(r29) -/* 803CB110 003C8070 80 1E 00 04 */ lwz r0, 4(r30) -/* 803CB114 003C8074 90 1D 00 08 */ stw r0, 8(r29) -/* 803CB118 003C8078 80 1E 00 0C */ lwz r0, 0xc(r30) -/* 803CB11C 003C807C 90 1D 00 0C */ stw r0, 0xc(r29) -/* 803CB120 003C8080 90 7D 00 10 */ stw r3, 0x10(r29) -/* 803CB124 003C8084 4B FB 39 61 */ bl DCInvalidateRange -/* 803CB128 003C8088 38 7D 00 00 */ addi r3, r29, 0 -/* 803CB12C 003C808C 38 80 00 20 */ li r4, 0x20 -/* 803CB130 003C8090 4B FB 39 81 */ bl DCFlushRange -/* 803CB134 003C8094 38 00 00 FF */ li r0, 0xff -/* 803CB138 003C8098 3C 80 80 3F */ lis r4, lbl_803F71A0@ha -/* 803CB13C 003C809C 90 1F 00 AC */ stw r0, 0xac(r31) -/* 803CB140 003C80A0 38 84 71 A0 */ addi r4, r4, lbl_803F71A0@l -/* 803CB144 003C80A4 3C 04 80 00 */ addis r0, r4, 0x8000 -/* 803CB148 003C80A8 90 1F 00 B4 */ stw r0, 0xb4(r31) -/* 803CB14C 003C80AC 38 00 03 80 */ li r0, 0x380 -/* 803CB150 003C80B0 3C A0 80 3D */ lis r5, __GBADSPTaskInit@ha -/* 803CB154 003C80B4 90 1F 00 B8 */ stw r0, 0xb8(r31) -/* 803CB158 003C80B8 38 C0 00 00 */ li r6, 0 -/* 803CB15C 003C80BC 38 00 00 10 */ li r0, 0x10 -/* 803CB160 003C80C0 90 DF 00 BC */ stw r6, 0xbc(r31) -/* 803CB164 003C80C4 38 A5 AF 40 */ addi r5, r5, __GBADSPTaskInit@l -/* 803CB168 003C80C8 3C 80 80 3D */ lis r4, __GBADSPTaskDone@ha -/* 803CB16C 003C80CC B0 1F 00 CC */ sth r0, 0xcc(r31) -/* 803CB170 003C80D0 38 04 B0 1C */ addi r0, r4, __GBADSPTaskDone@l -/* 803CB174 003C80D4 38 7F 00 A8 */ addi r3, r31, 0xa8 -/* 803CB178 003C80D8 90 BF 00 D0 */ stw r5, 0xd0(r31) -/* 803CB17C 003C80DC 90 DF 00 D4 */ stw r6, 0xd4(r31) -/* 803CB180 003C80E0 90 1F 00 D8 */ stw r0, 0xd8(r31) -/* 803CB184 003C80E4 90 DF 00 DC */ stw r6, 0xdc(r31) -/* 803CB188 003C80E8 4B FA 49 D9 */ bl DSPAddTask -/* 803CB18C 003C80EC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803CB190 003C80F0 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 803CB194 003C80F4 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 803CB198 003C80F8 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 803CB19C 003C80FC 38 21 00 20 */ addi r1, r1, 0x20 -/* 803CB1A0 003C8100 7C 08 03 A6 */ mtlr r0 -/* 803CB1A4 003C8104 4E 80 00 20 */ blr diff --git a/obj_files.mk b/obj_files.mk index 6814d30f..4e9bed8e 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -225,7 +225,8 @@ GBA_FILES :=\ $(BUILD_DIR)/asm/Dolphin/GBA/GBA.o\ $(BUILD_DIR)/asm/Dolphin/GBA/GBARead.o\ $(BUILD_DIR)/asm/Dolphin/GBA/GBAWrite.o\ - $(BUILD_DIR)/asm/Dolphin/GBA/GBAXfer.o + $(BUILD_DIR)/asm/Dolphin/GBA/GBAXfer.o\ + $(BUILD_DIR)/asm/Dolphin/GBA/GBAKey.o TEXT_O_FILES :=\ $(BUILD_DIR)/asm/text.o