mirror of https://github.com/PrimeDecomp/prime.git
108 lines
4.7 KiB
ArmAsm
108 lines
4.7 KiB
ArmAsm
|
.include "macros.inc"
|
||
|
|
||
|
.section .text, "ax" # 0x80003640 - 0x803CB1C0
|
||
|
|
||
|
.global ReadProc
|
||
|
ReadProc:
|
||
|
/* 803CA920 003C7880 7C 08 02 A6 */ mflr r0
|
||
|
/* 803CA924 003C7884 3C 80 80 57 */ lis r4, __GBA@ha
|
||
|
/* 803CA928 003C7888 90 01 00 04 */ stw r0, 4(r1)
|
||
|
/* 803CA92C 003C788C 54 63 40 2E */ slwi r3, r3, 8
|
||
|
/* 803CA930 003C7890 38 04 A1 A0 */ addi r0, r4, __GBA@l
|
||
|
/* 803CA934 003C7894 94 21 FF E8 */ stwu r1, -0x18(r1)
|
||
|
/* 803CA938 003C7898 93 E1 00 14 */ stw r31, 0x14(r1)
|
||
|
/* 803CA93C 003C789C 7F E0 1A 14 */ add r31, r0, r3
|
||
|
/* 803CA940 003C78A0 80 1F 00 20 */ lwz r0, 0x20(r31)
|
||
|
/* 803CA944 003C78A4 2C 00 00 00 */ cmpwi r0, 0
|
||
|
/* 803CA948 003C78A8 40 82 00 24 */ bne lbl_803CA96C
|
||
|
/* 803CA94C 003C78AC 80 7F 00 18 */ lwz r3, 0x18(r31)
|
||
|
/* 803CA950 003C78B0 38 9F 00 05 */ addi r4, r31, 5
|
||
|
/* 803CA954 003C78B4 38 A0 00 04 */ li r5, 4
|
||
|
/* 803CA958 003C78B8 4B C3 8B 39 */ bl memcpy
|
||
|
/* 803CA95C 003C78BC 88 1F 00 09 */ lbz r0, 9(r31)
|
||
|
/* 803CA960 003C78C0 80 7F 00 14 */ lwz r3, 0x14(r31)
|
||
|
/* 803CA964 003C78C4 70 00 00 3A */ andi. r0, r0, 0x3a
|
||
|
/* 803CA968 003C78C8 98 03 00 00 */ stb r0, 0(r3)
|
||
|
lbl_803CA96C:
|
||
|
/* 803CA96C 003C78CC 80 01 00 1C */ lwz r0, 0x1c(r1)
|
||
|
/* 803CA970 003C78D0 83 E1 00 14 */ lwz r31, 0x14(r1)
|
||
|
/* 803CA974 003C78D4 38 21 00 18 */ addi r1, r1, 0x18
|
||
|
/* 803CA978 003C78D8 7C 08 03 A6 */ mtlr r0
|
||
|
/* 803CA97C 003C78DC 4E 80 00 20 */ blr
|
||
|
|
||
|
.global GBAReadAsync
|
||
|
GBAReadAsync:
|
||
|
/* 803CA980 003C78E0 7C 08 02 A6 */ mflr r0
|
||
|
/* 803CA984 003C78E4 3C E0 80 57 */ lis r7, __GBA@ha
|
||
|
/* 803CA988 003C78E8 90 01 00 04 */ stw r0, 4(r1)
|
||
|
/* 803CA98C 003C78EC 54 68 40 2E */ slwi r8, r3, 8
|
||
|
/* 803CA990 003C78F0 38 07 A1 A0 */ addi r0, r7, __GBA@l
|
||
|
/* 803CA994 003C78F4 94 21 FF F8 */ stwu r1, -8(r1)
|
||
|
/* 803CA998 003C78F8 7D 00 42 14 */ add r8, r0, r8
|
||
|
/* 803CA99C 003C78FC 80 08 00 1C */ lwz r0, 0x1c(r8)
|
||
|
/* 803CA9A0 003C7900 28 00 00 00 */ cmplwi r0, 0
|
||
|
/* 803CA9A4 003C7904 41 82 00 0C */ beq lbl_803CA9B0
|
||
|
/* 803CA9A8 003C7908 38 60 00 02 */ li r3, 2
|
||
|
/* 803CA9AC 003C790C 48 00 00 30 */ b lbl_803CA9DC
|
||
|
lbl_803CA9B0:
|
||
|
/* 803CA9B0 003C7910 38 00 00 14 */ li r0, 0x14
|
||
|
/* 803CA9B4 003C7914 98 08 00 00 */ stb r0, 0(r8)
|
||
|
/* 803CA9B8 003C7918 3C E0 80 3D */ lis r7, ReadProc@ha
|
||
|
/* 803CA9BC 003C791C 38 07 A9 20 */ addi r0, r7, ReadProc@l
|
||
|
/* 803CA9C0 003C7920 90 88 00 18 */ stw r4, 0x18(r8)
|
||
|
/* 803CA9C4 003C7924 38 80 00 01 */ li r4, 1
|
||
|
/* 803CA9C8 003C7928 90 A8 00 14 */ stw r5, 0x14(r8)
|
||
|
/* 803CA9CC 003C792C 38 A0 00 05 */ li r5, 5
|
||
|
/* 803CA9D0 003C7930 90 C8 00 1C */ stw r6, 0x1c(r8)
|
||
|
/* 803CA9D4 003C7934 7C 06 03 78 */ mr r6, r0
|
||
|
/* 803CA9D8 003C7938 48 00 04 D1 */ bl __GBATransfer
|
||
|
lbl_803CA9DC:
|
||
|
/* 803CA9DC 003C793C 80 01 00 0C */ lwz r0, 0xc(r1)
|
||
|
/* 803CA9E0 003C7940 38 21 00 08 */ addi r1, r1, 8
|
||
|
/* 803CA9E4 003C7944 7C 08 03 A6 */ mtlr r0
|
||
|
/* 803CA9E8 003C7948 4E 80 00 20 */ blr
|
||
|
|
||
|
.global GBARead
|
||
|
GBARead:
|
||
|
/* 803CA9EC 003C794C 7C 08 02 A6 */ mflr r0
|
||
|
/* 803CA9F0 003C7950 90 01 00 04 */ stw r0, 4(r1)
|
||
|
/* 803CA9F4 003C7954 94 21 FF D8 */ stwu r1, -0x28(r1)
|
||
|
/* 803CA9F8 003C7958 93 E1 00 24 */ stw r31, 0x24(r1)
|
||
|
/* 803CA9FC 003C795C 3B E3 00 00 */ addi r31, r3, 0
|
||
|
/* 803CAA00 003C7960 3C 60 80 57 */ lis r3, __GBA@ha
|
||
|
/* 803CAA04 003C7964 57 E6 40 2E */ slwi r6, r31, 8
|
||
|
/* 803CAA08 003C7968 38 03 A1 A0 */ addi r0, r3, __GBA@l
|
||
|
/* 803CAA0C 003C796C 7D 00 32 14 */ add r8, r0, r6
|
||
|
/* 803CAA10 003C7970 80 08 00 1C */ lwz r0, 0x1c(r8)
|
||
|
/* 803CAA14 003C7974 28 00 00 00 */ cmplwi r0, 0
|
||
|
/* 803CAA18 003C7978 41 82 00 0C */ beq lbl_803CAA24
|
||
|
/* 803CAA1C 003C797C 38 60 00 02 */ li r3, 2
|
||
|
/* 803CAA20 003C7980 48 00 00 38 */ b lbl_803CAA58
|
||
|
lbl_803CAA24:
|
||
|
/* 803CAA24 003C7984 38 00 00 14 */ li r0, 0x14
|
||
|
/* 803CAA28 003C7988 98 08 00 00 */ stb r0, 0(r8)
|
||
|
/* 803CAA2C 003C798C 3C E0 80 3D */ lis r7, __GBASyncCallback@ha
|
||
|
/* 803CAA30 003C7990 3C 60 80 3D */ lis r3, ReadProc@ha
|
||
|
/* 803CAA34 003C7994 90 88 00 18 */ stw r4, 0x18(r8)
|
||
|
/* 803CAA38 003C7998 38 C3 A9 20 */ addi r6, r3, ReadProc@l
|
||
|
/* 803CAA3C 003C799C 38 07 AC E4 */ addi r0, r7, __GBASyncCallback@l
|
||
|
/* 803CAA40 003C79A0 90 A8 00 14 */ stw r5, 0x14(r8)
|
||
|
/* 803CAA44 003C79A4 7F E3 FB 78 */ mr r3, r31
|
||
|
/* 803CAA48 003C79A8 38 80 00 01 */ li r4, 1
|
||
|
/* 803CAA4C 003C79AC 90 08 00 1C */ stw r0, 0x1c(r8)
|
||
|
/* 803CAA50 003C79B0 38 A0 00 05 */ li r5, 5
|
||
|
/* 803CAA54 003C79B4 48 00 04 55 */ bl __GBATransfer
|
||
|
lbl_803CAA58:
|
||
|
/* 803CAA58 003C79B8 2C 03 00 00 */ cmpwi r3, 0
|
||
|
/* 803CAA5C 003C79BC 41 82 00 08 */ beq lbl_803CAA64
|
||
|
/* 803CAA60 003C79C0 48 00 00 0C */ b lbl_803CAA6C
|
||
|
lbl_803CAA64:
|
||
|
/* 803CAA64 003C79C4 7F E3 FB 78 */ mr r3, r31
|
||
|
/* 803CAA68 003C79C8 48 00 02 B1 */ bl __GBASync
|
||
|
lbl_803CAA6C:
|
||
|
/* 803CAA6C 003C79CC 80 01 00 2C */ lwz r0, 0x2c(r1)
|
||
|
/* 803CAA70 003C79D0 83 E1 00 24 */ lwz r31, 0x24(r1)
|
||
|
/* 803CAA74 003C79D4 38 21 00 28 */ addi r1, r1, 0x28
|
||
|
/* 803CAA78 003C79D8 7C 08 03 A6 */ mtlr r0
|
||
|
/* 803CAA7C 003C79DC 4E 80 00 20 */ blr
|