From f2eabdb6257c09cf2890dac5e9737912728542af Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Thu, 2 Feb 2023 17:29:19 -0400 Subject: global: Add rest of Dolphin SDK proper, add MSL, and MetroTRK Finally, it links properly. --- asm/Dolphin/gd/GDBase.s | 121 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 asm/Dolphin/gd/GDBase.s (limited to 'asm/Dolphin/gd/GDBase.s') diff --git a/asm/Dolphin/gd/GDBase.s b/asm/Dolphin/gd/GDBase.s new file mode 100644 index 0000000..4066b98 --- /dev/null +++ b/asm/Dolphin/gd/GDBase.s @@ -0,0 +1,121 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80005600 - 0x8036FBA0 +.global GDInitGDLObj +GDInitGDLObj: +/* 800AF018 000ABF58 90 83 00 00 */ stw r4, 0(r3) +/* 800AF01C 000ABF5C 7C 04 2A 14 */ add r0, r4, r5 +/* 800AF020 000ABF60 90 83 00 08 */ stw r4, 8(r3) +/* 800AF024 000ABF64 90 03 00 0C */ stw r0, 0xc(r3) +/* 800AF028 000ABF68 90 A3 00 04 */ stw r5, 4(r3) +/* 800AF02C 000ABF6C 4E 80 00 20 */ blr + +.global GDFlushCurrToMem +GDFlushCurrToMem: +/* 800AF030 000ABF70 7C 08 02 A6 */ mflr r0 +/* 800AF034 000ABF74 90 01 00 04 */ stw r0, 4(r1) +/* 800AF038 000ABF78 94 21 FF F8 */ stwu r1, -8(r1) +/* 800AF03C 000ABF7C 80 8D 95 B8 */ lwz r4, __GDCurrentDL@sda21(r13) +/* 800AF040 000ABF80 80 64 00 00 */ lwz r3, 0(r4) +/* 800AF044 000ABF84 80 84 00 04 */ lwz r4, 4(r4) +/* 800AF048 000ABF88 4B FD EF 65 */ bl DCFlushRange +/* 800AF04C 000ABF8C 80 01 00 0C */ lwz r0, 0xc(r1) +/* 800AF050 000ABF90 38 21 00 08 */ addi r1, r1, 8 +/* 800AF054 000ABF94 7C 08 03 A6 */ mtlr r0 +/* 800AF058 000ABF98 4E 80 00 20 */ blr + +.global GDPadCurr32 +GDPadCurr32: +/* 800AF05C 000ABF9C 80 6D 95 B8 */ lwz r3, __GDCurrentDL@sda21(r13) +/* 800AF060 000ABFA0 80 03 00 08 */ lwz r0, 8(r3) +/* 800AF064 000ABFA4 54 00 06 FF */ clrlwi. r0, r0, 0x1b +/* 800AF068 000ABFA8 4D 82 00 20 */ beqlr +/* 800AF06C 000ABFAC 28 00 00 20 */ cmplwi r0, 0x20 +/* 800AF070 000ABFB0 20 60 00 20 */ subfic r3, r0, 0x20 +/* 800AF074 000ABFB4 38 C0 00 00 */ li r6, 0 +/* 800AF078 000ABFB8 4C 80 00 20 */ bgelr +/* 800AF07C 000ABFBC 54 60 E8 FF */ rlwinm. r0, r3, 0x1d, 3, 0x1f +/* 800AF080 000ABFC0 7C 09 03 A6 */ mtctr r0 +/* 800AF084 000ABFC4 41 82 00 B0 */ beq lbl_800AF134 +lbl_800AF088: +/* 800AF088 000ABFC8 80 AD 95 B8 */ lwz r5, __GDCurrentDL@sda21(r13) +/* 800AF08C 000ABFCC 80 85 00 08 */ lwz r4, 8(r5) +/* 800AF090 000ABFD0 38 04 00 01 */ addi r0, r4, 1 +/* 800AF094 000ABFD4 90 05 00 08 */ stw r0, 8(r5) +/* 800AF098 000ABFD8 98 C4 00 00 */ stb r6, 0(r4) +/* 800AF09C 000ABFDC 80 AD 95 B8 */ lwz r5, __GDCurrentDL@sda21(r13) +/* 800AF0A0 000ABFE0 80 85 00 08 */ lwz r4, 8(r5) +/* 800AF0A4 000ABFE4 38 04 00 01 */ addi r0, r4, 1 +/* 800AF0A8 000ABFE8 90 05 00 08 */ stw r0, 8(r5) +/* 800AF0AC 000ABFEC 98 C4 00 00 */ stb r6, 0(r4) +/* 800AF0B0 000ABFF0 80 AD 95 B8 */ lwz r5, __GDCurrentDL@sda21(r13) +/* 800AF0B4 000ABFF4 80 85 00 08 */ lwz r4, 8(r5) +/* 800AF0B8 000ABFF8 38 04 00 01 */ addi r0, r4, 1 +/* 800AF0BC 000ABFFC 90 05 00 08 */ stw r0, 8(r5) +/* 800AF0C0 000AC000 98 C4 00 00 */ stb r6, 0(r4) +/* 800AF0C4 000AC004 80 AD 95 B8 */ lwz r5, __GDCurrentDL@sda21(r13) +/* 800AF0C8 000AC008 80 85 00 08 */ lwz r4, 8(r5) +/* 800AF0CC 000AC00C 38 04 00 01 */ addi r0, r4, 1 +/* 800AF0D0 000AC010 90 05 00 08 */ stw r0, 8(r5) +/* 800AF0D4 000AC014 98 C4 00 00 */ stb r6, 0(r4) +/* 800AF0D8 000AC018 80 AD 95 B8 */ lwz r5, __GDCurrentDL@sda21(r13) +/* 800AF0DC 000AC01C 80 85 00 08 */ lwz r4, 8(r5) +/* 800AF0E0 000AC020 38 04 00 01 */ addi r0, r4, 1 +/* 800AF0E4 000AC024 90 05 00 08 */ stw r0, 8(r5) +/* 800AF0E8 000AC028 98 C4 00 00 */ stb r6, 0(r4) +/* 800AF0EC 000AC02C 80 AD 95 B8 */ lwz r5, __GDCurrentDL@sda21(r13) +/* 800AF0F0 000AC030 80 85 00 08 */ lwz r4, 8(r5) +/* 800AF0F4 000AC034 38 04 00 01 */ addi r0, r4, 1 +/* 800AF0F8 000AC038 90 05 00 08 */ stw r0, 8(r5) +/* 800AF0FC 000AC03C 98 C4 00 00 */ stb r6, 0(r4) +/* 800AF100 000AC040 80 AD 95 B8 */ lwz r5, __GDCurrentDL@sda21(r13) +/* 800AF104 000AC044 80 85 00 08 */ lwz r4, 8(r5) +/* 800AF108 000AC048 38 04 00 01 */ addi r0, r4, 1 +/* 800AF10C 000AC04C 90 05 00 08 */ stw r0, 8(r5) +/* 800AF110 000AC050 98 C4 00 00 */ stb r6, 0(r4) +/* 800AF114 000AC054 80 AD 95 B8 */ lwz r5, __GDCurrentDL@sda21(r13) +/* 800AF118 000AC058 80 85 00 08 */ lwz r4, 8(r5) +/* 800AF11C 000AC05C 38 04 00 01 */ addi r0, r4, 1 +/* 800AF120 000AC060 90 05 00 08 */ stw r0, 8(r5) +/* 800AF124 000AC064 98 C4 00 00 */ stb r6, 0(r4) +/* 800AF128 000AC068 42 00 FF 60 */ bdnz lbl_800AF088 +/* 800AF12C 000AC06C 70 63 00 07 */ andi. r3, r3, 7 +/* 800AF130 000AC070 4D 82 00 20 */ beqlr +lbl_800AF134: +/* 800AF134 000AC074 7C 69 03 A6 */ mtctr r3 +lbl_800AF138: +/* 800AF138 000AC078 80 AD 95 B8 */ lwz r5, __GDCurrentDL@sda21(r13) +/* 800AF13C 000AC07C 80 85 00 08 */ lwz r4, 8(r5) +/* 800AF140 000AC080 38 04 00 01 */ addi r0, r4, 1 +/* 800AF144 000AC084 90 05 00 08 */ stw r0, 8(r5) +/* 800AF148 000AC088 98 C4 00 00 */ stb r6, 0(r4) +/* 800AF14C 000AC08C 42 00 FF EC */ bdnz lbl_800AF138 +/* 800AF150 000AC090 4E 80 00 20 */ blr + +.global GDOverflowed +GDOverflowed: +/* 800AF154 000AC094 7C 08 02 A6 */ mflr r0 +/* 800AF158 000AC098 90 01 00 04 */ stw r0, 4(r1) +/* 800AF15C 000AC09C 94 21 FF F8 */ stwu r1, -8(r1) +/* 800AF160 000AC0A0 81 8D 95 BC */ lwz r12, overflowcb@sda21(r13) +/* 800AF164 000AC0A4 28 0C 00 00 */ cmplwi r12, 0 +/* 800AF168 000AC0A8 41 82 00 0C */ beq lbl_800AF174 +/* 800AF16C 000AC0AC 7D 88 03 A6 */ mtlr r12 +/* 800AF170 000AC0B0 4E 80 00 21 */ blrl +lbl_800AF174: +/* 800AF174 000AC0B4 80 01 00 0C */ lwz r0, 0xc(r1) +/* 800AF178 000AC0B8 38 21 00 08 */ addi r1, r1, 8 +/* 800AF17C 000AC0BC 7C 08 03 A6 */ mtlr r0 +/* 800AF180 000AC0C0 4E 80 00 20 */ blr + +.global GDSetOverflowCallback +GDSetOverflowCallback: +/* 800AF184 000AC0C4 90 6D 95 BC */ stw r3, overflowcb@sda21(r13) +/* 800AF188 000AC0C8 4E 80 00 20 */ blr + +.section .sbss, "wa" # 0x804097C0 - 0x8040B45C +.global __GDCurrentDL +__GDCurrentDL: + .skip 0x4 +overflowcb: + .skip 0x4 -- cgit v1.2.3-13-gbd6f