mirror of https://github.com/PrimeDecomp/prime.git
117 lines
5.2 KiB
ArmAsm
117 lines
5.2 KiB
ArmAsm
.include "macros.inc"
|
|
|
|
.section .text, "ax"
|
|
|
|
.global WriteProc
|
|
WriteProc:
|
|
/* 803CAA80 003C79E0 3C 80 80 57 */ lis r4, __GBA@ha
|
|
/* 803CAA84 003C79E4 54 63 40 2E */ slwi r3, r3, 8
|
|
/* 803CAA88 003C79E8 38 04 A1 A0 */ addi r0, r4, __GBA@l
|
|
/* 803CAA8C 003C79EC 7C 60 1A 14 */ add r3, r0, r3
|
|
/* 803CAA90 003C79F0 80 03 00 20 */ lwz r0, 0x20(r3)
|
|
/* 803CAA94 003C79F4 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 803CAA98 003C79F8 4C 82 00 20 */ bnelr
|
|
/* 803CAA9C 003C79FC 88 03 00 05 */ lbz r0, 5(r3)
|
|
/* 803CAAA0 003C7A00 80 63 00 14 */ lwz r3, 0x14(r3)
|
|
/* 803CAAA4 003C7A04 70 00 00 3A */ andi. r0, r0, 0x3a
|
|
/* 803CAAA8 003C7A08 98 03 00 00 */ stb r0, 0(r3)
|
|
/* 803CAAAC 003C7A0C 4E 80 00 20 */ blr
|
|
|
|
.global GBAWriteAsync
|
|
GBAWriteAsync:
|
|
/* 803CAAB0 003C7A10 7C 08 02 A6 */ mflr r0
|
|
/* 803CAAB4 003C7A14 90 01 00 04 */ stw r0, 4(r1)
|
|
/* 803CAAB8 003C7A18 94 21 FF D0 */ stwu r1, -0x30(r1)
|
|
/* 803CAABC 003C7A1C BF 61 00 1C */ stmw r27, 0x1c(r1)
|
|
/* 803CAAC0 003C7A20 3B 63 00 00 */ addi r27, r3, 0
|
|
/* 803CAAC4 003C7A24 3C 60 80 57 */ lis r3, __GBA@ha
|
|
/* 803CAAC8 003C7A28 57 67 40 2E */ slwi r7, r27, 8
|
|
/* 803CAACC 003C7A2C 38 03 A1 A0 */ addi r0, r3, __GBA@l
|
|
/* 803CAAD0 003C7A30 7F E0 3A 14 */ add r31, r0, r7
|
|
/* 803CAAD4 003C7A34 3B 84 00 00 */ addi r28, r4, 0
|
|
/* 803CAAD8 003C7A38 3B A5 00 00 */ addi r29, r5, 0
|
|
/* 803CAADC 003C7A3C 80 1F 00 1C */ lwz r0, 0x1c(r31)
|
|
/* 803CAAE0 003C7A40 3B C6 00 00 */ addi r30, r6, 0
|
|
/* 803CAAE4 003C7A44 28 00 00 00 */ cmplwi r0, 0
|
|
/* 803CAAE8 003C7A48 41 82 00 0C */ beq lbl_803CAAF4
|
|
/* 803CAAEC 003C7A4C 38 60 00 02 */ li r3, 2
|
|
/* 803CAAF0 003C7A50 48 00 00 40 */ b lbl_803CAB30
|
|
lbl_803CAAF4:
|
|
/* 803CAAF4 003C7A54 38 00 00 15 */ li r0, 0x15
|
|
/* 803CAAF8 003C7A58 98 1F 00 00 */ stb r0, 0(r31)
|
|
/* 803CAAFC 003C7A5C 38 9C 00 00 */ addi r4, r28, 0
|
|
/* 803CAB00 003C7A60 38 7F 00 01 */ addi r3, r31, 1
|
|
/* 803CAB04 003C7A64 38 A0 00 04 */ li r5, 4
|
|
/* 803CAB08 003C7A68 4B C3 89 89 */ bl memcpy
|
|
/* 803CAB0C 003C7A6C 93 9F 00 18 */ stw r28, 0x18(r31)
|
|
/* 803CAB10 003C7A70 3C 60 80 3D */ lis r3, WriteProc@ha
|
|
/* 803CAB14 003C7A74 38 C3 AA 80 */ addi r6, r3, WriteProc@l
|
|
/* 803CAB18 003C7A78 93 BF 00 14 */ stw r29, 0x14(r31)
|
|
/* 803CAB1C 003C7A7C 7F 63 DB 78 */ mr r3, r27
|
|
/* 803CAB20 003C7A80 38 80 00 05 */ li r4, 5
|
|
/* 803CAB24 003C7A84 93 DF 00 1C */ stw r30, 0x1c(r31)
|
|
/* 803CAB28 003C7A88 38 A0 00 01 */ li r5, 1
|
|
/* 803CAB2C 003C7A8C 48 00 03 7D */ bl __GBATransfer
|
|
lbl_803CAB30:
|
|
/* 803CAB30 003C7A90 BB 61 00 1C */ lmw r27, 0x1c(r1)
|
|
/* 803CAB34 003C7A94 80 01 00 34 */ lwz r0, 0x34(r1)
|
|
/* 803CAB38 003C7A98 38 21 00 30 */ addi r1, r1, 0x30
|
|
/* 803CAB3C 003C7A9C 7C 08 03 A6 */ mtlr r0
|
|
/* 803CAB40 003C7AA0 4E 80 00 20 */ blr
|
|
|
|
.global GBAWrite
|
|
GBAWrite:
|
|
/* 803CAB44 003C7AA4 7C 08 02 A6 */ mflr r0
|
|
/* 803CAB48 003C7AA8 90 01 00 04 */ stw r0, 4(r1)
|
|
/* 803CAB4C 003C7AAC 94 21 FF D0 */ stwu r1, -0x30(r1)
|
|
/* 803CAB50 003C7AB0 93 E1 00 2C */ stw r31, 0x2c(r1)
|
|
/* 803CAB54 003C7AB4 93 C1 00 28 */ stw r30, 0x28(r1)
|
|
/* 803CAB58 003C7AB8 3B C5 00 00 */ addi r30, r5, 0
|
|
/* 803CAB5C 003C7ABC 93 A1 00 24 */ stw r29, 0x24(r1)
|
|
/* 803CAB60 003C7AC0 3B A4 00 00 */ addi r29, r4, 0
|
|
/* 803CAB64 003C7AC4 93 81 00 20 */ stw r28, 0x20(r1)
|
|
/* 803CAB68 003C7AC8 3B 83 00 00 */ addi r28, r3, 0
|
|
/* 803CAB6C 003C7ACC 3C 60 80 57 */ lis r3, __GBA@ha
|
|
/* 803CAB70 003C7AD0 57 86 40 2E */ slwi r6, r28, 8
|
|
/* 803CAB74 003C7AD4 38 03 A1 A0 */ addi r0, r3, __GBA@l
|
|
/* 803CAB78 003C7AD8 7F E0 32 14 */ add r31, r0, r6
|
|
/* 803CAB7C 003C7ADC 80 1F 00 1C */ lwz r0, 0x1c(r31)
|
|
/* 803CAB80 003C7AE0 28 00 00 00 */ cmplwi r0, 0
|
|
/* 803CAB84 003C7AE4 41 82 00 0C */ beq lbl_803CAB90
|
|
/* 803CAB88 003C7AE8 38 60 00 02 */ li r3, 2
|
|
/* 803CAB8C 003C7AEC 48 00 00 48 */ b lbl_803CABD4
|
|
lbl_803CAB90:
|
|
/* 803CAB90 003C7AF0 38 00 00 15 */ li r0, 0x15
|
|
/* 803CAB94 003C7AF4 98 1F 00 00 */ stb r0, 0(r31)
|
|
/* 803CAB98 003C7AF8 38 9D 00 00 */ addi r4, r29, 0
|
|
/* 803CAB9C 003C7AFC 38 7F 00 01 */ addi r3, r31, 1
|
|
/* 803CABA0 003C7B00 38 A0 00 04 */ li r5, 4
|
|
/* 803CABA4 003C7B04 4B C3 88 ED */ bl memcpy
|
|
/* 803CABA8 003C7B08 93 BF 00 18 */ stw r29, 0x18(r31)
|
|
/* 803CABAC 003C7B0C 3C 80 80 3D */ lis r4, __GBASyncCallback@ha
|
|
/* 803CABB0 003C7B10 38 04 AC E4 */ addi r0, r4, __GBASyncCallback@l
|
|
/* 803CABB4 003C7B14 93 DF 00 14 */ stw r30, 0x14(r31)
|
|
/* 803CABB8 003C7B18 3C 60 80 3D */ lis r3, WriteProc@ha
|
|
/* 803CABBC 003C7B1C 38 C3 AA 80 */ addi r6, r3, WriteProc@l
|
|
/* 803CABC0 003C7B20 90 1F 00 1C */ stw r0, 0x1c(r31)
|
|
/* 803CABC4 003C7B24 38 7C 00 00 */ addi r3, r28, 0
|
|
/* 803CABC8 003C7B28 38 80 00 05 */ li r4, 5
|
|
/* 803CABCC 003C7B2C 38 A0 00 01 */ li r5, 1
|
|
/* 803CABD0 003C7B30 48 00 02 D9 */ bl __GBATransfer
|
|
lbl_803CABD4:
|
|
/* 803CABD4 003C7B34 2C 03 00 00 */ cmpwi r3, 0
|
|
/* 803CABD8 003C7B38 41 82 00 08 */ beq lbl_803CABE0
|
|
/* 803CABDC 003C7B3C 48 00 00 0C */ b lbl_803CABE8
|
|
lbl_803CABE0:
|
|
/* 803CABE0 003C7B40 7F 83 E3 78 */ mr r3, r28
|
|
/* 803CABE4 003C7B44 48 00 01 35 */ bl __GBASync
|
|
lbl_803CABE8:
|
|
/* 803CABE8 003C7B48 80 01 00 34 */ lwz r0, 0x34(r1)
|
|
/* 803CABEC 003C7B4C 83 E1 00 2C */ lwz r31, 0x2c(r1)
|
|
/* 803CABF0 003C7B50 83 C1 00 28 */ lwz r30, 0x28(r1)
|
|
/* 803CABF4 003C7B54 83 A1 00 24 */ lwz r29, 0x24(r1)
|
|
/* 803CABF8 003C7B58 83 81 00 20 */ lwz r28, 0x20(r1)
|
|
/* 803CABFC 003C7B5C 38 21 00 30 */ addi r1, r1, 0x30
|
|
/* 803CAC00 003C7B60 7C 08 03 A6 */ mtlr r0
|
|
/* 803CAC04 003C7B64 4E 80 00 20 */ blr
|