Properly split GBA

Former-commit-id: 3434469fc6
This commit is contained in:
Phillip Stephens 2022-10-15 14:46:18 -07:00
parent 2de628515f
commit c2ad63b3aa
5 changed files with 1202 additions and 1194 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,104 @@
.include "macros.inc"
.section .text, "ax"
.global GBAGetProcessStatus
GBAGetProcessStatus:
/* 803C98E8 003C6848 7C 08 02 A6 */ mflr r0
/* 803C98EC 003C684C 3C A0 80 57 */ lis r5, __GBA@ha
/* 803C98F0 003C6850 90 01 00 04 */ stw r0, 4(r1)
/* 803C98F4 003C6854 54 63 40 2E */ slwi r3, r3, 8
/* 803C98F8 003C6858 38 05 A1 A0 */ addi r0, r5, __GBA@l
/* 803C98FC 003C685C 94 21 FF C8 */ stwu r1, -0x38(r1)
/* 803C9900 003C6860 BE E1 00 14 */ stmw r23, 0x14(r1)
/* 803C9904 003C6864 7E E0 1A 14 */ add r23, r0, r3
/* 803C9908 003C6868 3B 04 00 00 */ addi r24, r4, 0
/* 803C990C 003C686C 3B F7 00 40 */ addi r31, r23, 0x40
/* 803C9910 003C6870 4B FB 7D 51 */ bl OSDisableInterrupts
/* 803C9914 003C6874 80 1F 00 14 */ lwz r0, 0x14(r31)
/* 803C9918 003C6878 3B A3 00 00 */ addi r29, r3, 0
/* 803C991C 003C687C 28 00 00 00 */ cmplwi r0, 0
/* 803C9920 003C6880 41 82 01 04 */ beq lbl_803C9A24
/* 803C9924 003C6884 80 7F 00 34 */ lwz r3, 0x34(r31)
/* 803C9928 003C6888 3B C0 00 00 */ li r30, 0
/* 803C992C 003C688C 80 1F 00 28 */ lwz r0, 0x28(r31)
/* 803C9930 003C6890 3B 80 00 02 */ li r28, 2
/* 803C9934 003C6894 1C A3 00 64 */ mulli r5, r3, 0x64
/* 803C9938 003C6898 80 9F 00 64 */ lwz r4, 0x64(r31)
/* 803C993C 003C689C 80 7F 00 2C */ lwz r3, 0x2c(r31)
/* 803C9940 003C68A0 7C 85 23 D6 */ divw r4, r5, r4
/* 803C9944 003C68A4 7C 63 F2 78 */ xor r3, r3, r30
/* 803C9948 003C68A8 7C 00 F2 78 */ xor r0, r0, r30
/* 803C994C 003C68AC 7C 60 03 79 */ or. r0, r3, r0
/* 803C9950 003C68B0 54 9B 06 3E */ clrlwi r27, r4, 0x18
/* 803C9954 003C68B4 41 82 00 C0 */ beq lbl_803C9A14
/* 803C9958 003C68B8 4B FB BA 51 */ bl OSGetTime
/* 803C995C 003C68BC 3E E0 80 00 */ lis r23, 0x800000F8@ha
/* 803C9960 003C68C0 80 DF 00 2C */ lwz r6, 0x2c(r31)
/* 803C9964 003C68C4 80 17 00 F8 */ lwz r0, 0x800000F8@l(r23)
/* 803C9968 003C68C8 3C A0 10 62 */ lis r5, 0x10624DD3@ha
/* 803C996C 003C68CC 7F 26 20 10 */ subfc r25, r6, r4
/* 803C9970 003C68D0 80 9F 00 28 */ lwz r4, 0x28(r31)
/* 803C9974 003C68D4 3B E5 4D D3 */ addi r31, r5, 0x10624DD3@l
/* 803C9978 003C68D8 54 00 F0 BE */ srwi r0, r0, 2
/* 803C997C 003C68DC 7C 1F 00 16 */ mulhwu r0, r31, r0
/* 803C9980 003C68E0 7F 44 19 10 */ subfe r26, r4, r3
/* 803C9984 003C68E4 54 06 D1 BE */ srwi r6, r0, 6
/* 803C9988 003C68E8 38 7A 00 00 */ addi r3, r26, 0
/* 803C998C 003C68EC 38 99 00 00 */ addi r4, r25, 0
/* 803C9990 003C68F0 38 A0 00 00 */ li r5, 0
/* 803C9994 003C68F4 4B FC 02 39 */ bl __div2i
/* 803C9998 003C68F8 38 E0 15 7C */ li r7, 0x157c
/* 803C999C 003C68FC 6C 65 80 00 */ xoris r5, r3, 0x8000
/* 803C99A0 003C6900 6F C3 80 00 */ xoris r3, r30, 0x8000
/* 803C99A4 003C6904 7C 07 20 10 */ subfc r0, r7, r4
/* 803C99A8 003C6908 7C 63 29 10 */ subfe r3, r3, r5
/* 803C99AC 003C690C 7C 65 29 10 */ subfe r3, r5, r5
/* 803C99B0 003C6910 7C 63 00 D1 */ neg. r3, r3
/* 803C99B4 003C6914 41 82 00 50 */ beq lbl_803C9A04
/* 803C99B8 003C6918 80 77 00 F8 */ lwz r3, 0xf8(r23)
/* 803C99BC 003C691C 7C BE 39 D6 */ mullw r5, r30, r7
/* 803C99C0 003C6920 54 63 F0 BE */ srwi r3, r3, 2
/* 803C99C4 003C6924 7C 7F 18 16 */ mulhwu r3, r31, r3
/* 803C99C8 003C6928 54 66 D1 BE */ srwi r6, r3, 6
/* 803C99CC 003C692C 7C 66 38 16 */ mulhwu r3, r6, r7
/* 803C99D0 003C6930 7C A5 1A 14 */ add r5, r5, r3
/* 803C99D4 003C6934 7C 66 F1 D6 */ mullw r3, r6, r30
/* 803C99D8 003C6938 7F 60 FE 70 */ srawi r0, r27, 0x1f
/* 803C99DC 003C693C 7C A5 1A 14 */ add r5, r5, r3
/* 803C99E0 003C6940 7C 60 C9 D6 */ mullw r3, r0, r25
/* 803C99E4 003C6944 7C 1B C8 16 */ mulhwu r0, r27, r25
/* 803C99E8 003C6948 7C 63 02 14 */ add r3, r3, r0
/* 803C99EC 003C694C 7C 1B D1 D6 */ mullw r0, r27, r26
/* 803C99F0 003C6950 7C 9B C9 D6 */ mullw r4, r27, r25
/* 803C99F4 003C6954 7C C6 39 D6 */ mullw r6, r6, r7
/* 803C99F8 003C6958 7C 63 02 14 */ add r3, r3, r0
/* 803C99FC 003C695C 4B FC 01 D1 */ bl __div2i
/* 803C9A00 003C6960 7C 9B 23 78 */ mr r27, r4
lbl_803C9A04:
/* 803C9A04 003C6964 57 60 06 3E */ clrlwi r0, r27, 0x18
/* 803C9A08 003C6968 28 00 00 64 */ cmplwi r0, 0x64
/* 803C9A0C 003C696C 41 80 00 08 */ blt lbl_803C9A14
/* 803C9A10 003C6970 3B 60 00 64 */ li r27, 0x64
lbl_803C9A14:
/* 803C9A14 003C6974 28 18 00 00 */ cmplwi r24, 0
/* 803C9A18 003C6978 41 82 00 24 */ beq lbl_803C9A3C
/* 803C9A1C 003C697C 9B 78 00 00 */ stb r27, 0(r24)
/* 803C9A20 003C6980 48 00 00 1C */ b lbl_803C9A3C
lbl_803C9A24:
/* 803C9A24 003C6984 80 17 00 1C */ lwz r0, 0x1c(r23)
/* 803C9A28 003C6988 28 00 00 00 */ cmplwi r0, 0
/* 803C9A2C 003C698C 41 82 00 0C */ beq lbl_803C9A38
/* 803C9A30 003C6990 3B 80 00 02 */ li r28, 2
/* 803C9A34 003C6994 48 00 00 08 */ b lbl_803C9A3C
lbl_803C9A38:
/* 803C9A38 003C6998 3B 80 00 00 */ li r28, 0
lbl_803C9A3C:
/* 803C9A3C 003C699C 7F A3 EB 78 */ mr r3, r29
/* 803C9A40 003C69A0 4B FB 7C 49 */ bl OSRestoreInterrupts
/* 803C9A44 003C69A4 7F 83 E3 78 */ mr r3, r28
/* 803C9A48 003C69A8 BA E1 00 14 */ lmw r23, 0x14(r1)
/* 803C9A4C 003C69AC 80 01 00 3C */ lwz r0, 0x3c(r1)
/* 803C9A50 003C69B0 38 21 00 38 */ addi r1, r1, 0x38
/* 803C9A54 003C69B4 7C 08 03 A6 */ mtlr r0
/* 803C9A58 003C69B8 4E 80 00 20 */ blr

1078
asm/Dolphin/GBA/GBAJoyBoot.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -70,20 +70,8 @@ lbl_803F752C:
.section .text, "ax"
.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:
.global __F23
__F23:
/* 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)
@ -147,8 +135,8 @@ lbl_803CAFFC:
/* 803CB014 003C7F74 7C 08 03 A6 */ mtlr r0
/* 803CB018 003C7F78 4E 80 00 20 */ blr
.global __GBADSPTaskDone
__GBADSPTaskDone:
.global __F25
__F25:
/* 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
@ -234,15 +222,15 @@ __GBAX02:
/* 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
/* 803CB150 003C80B0 3C A0 80 3D */ lis r5, __F23@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
/* 803CB164 003C80C4 38 A5 AF 40 */ addi r5, r5, __F23@l
/* 803CB168 003C80C8 3C 80 80 3D */ lis r4, __F25@ha
/* 803CB16C 003C80CC B0 1F 00 CC */ sth r0, 0xcc(r31)
/* 803CB170 003C80D0 38 04 B0 1C */ addi r0, r4, __GBADSPTaskDone@l
/* 803CB170 003C80D0 38 04 B0 1C */ addi r0, r4, __F25@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)

View File

@ -224,3 +224,15 @@ __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