summaryrefslogtreecommitdiff
path: root/asm/SDK/MEM
diff options
context:
space:
mode:
authorMax <mparisi@stevens.edu>2020-10-04 01:06:39 -0400
committerMax <mparisi@stevens.edu>2020-10-04 01:06:39 -0400
commit65db4167db2ac657708953b24cf26b6950d97362 (patch)
treedb0089734e4803b6cec71c92f8328d13cd56d7d5 /asm/SDK/MEM
parentb797027f0f9e6fe56c802a46e146918aa884dfc9 (diff)
split mem_list, mem_frameHeap, mem_allocator, mix, and remote
Diffstat (limited to 'asm/SDK/MEM')
-rw-r--r--asm/SDK/MEM/mem_allocator.s60
-rw-r--r--asm/SDK/MEM/mem_frameHeap.s225
-rw-r--r--asm/SDK/MEM/mem_heapCommon.s26
-rw-r--r--asm/SDK/MEM/mem_list.s90
4 files changed, 388 insertions, 13 deletions
diff --git a/asm/SDK/MEM/mem_allocator.s b/asm/SDK/MEM/mem_allocator.s
new file mode 100644
index 0000000..4472425
--- /dev/null
+++ b/asm/SDK/MEM/mem_allocator.s
@@ -0,0 +1,60 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global AllocatorAllocForExpHeap_
+AllocatorAllocForExpHeap_:
+/* 802976F8 00293358 7C 65 1B 78 */ mr r5, r3
+/* 802976FC 0029335C 80 63 00 04 */ lwz r3, 4(r3)
+/* 80297700 00293360 80 A5 00 08 */ lwz r5, 8(r5)
+/* 80297704 00293364 4B FF F8 24 */ b MEMAllocFromExpHeapEx
+
+.global AllocatorFreeForExpHeap_
+AllocatorFreeForExpHeap_:
+/* 80297708 00293368 80 63 00 04 */ lwz r3, 4(r3)
+/* 8029770C 0029336C 4B FF FA B8 */ b MEMFreeToExpHeap
+
+.global AllocatorAllocForFrmHeap_
+AllocatorAllocForFrmHeap_:
+/* 80297710 00293370 7C 65 1B 78 */ mr r5, r3
+/* 80297714 00293374 80 63 00 04 */ lwz r3, 4(r3)
+/* 80297718 00293378 80 A5 00 08 */ lwz r5, 8(r5)
+/* 8029771C 0029337C 4B FF FD A4 */ b MEMAllocFromFrmHeapEx
+
+.global AllocatorFreeForFrmHeap_
+AllocatorFreeForFrmHeap_:
+/* 80297720 00293380 4E 80 00 20 */ blr
+
+.global MEMAllocFromAllocator
+MEMAllocFromAllocator:
+/* 80297724 00293384 80 A3 00 00 */ lwz r5, 0(r3)
+/* 80297728 00293388 81 85 00 00 */ lwz r12, 0(r5)
+/* 8029772C 0029338C 7D 89 03 A6 */ mtctr r12
+/* 80297730 00293390 4E 80 04 20 */ bctr
+
+.global MEMFreeToAllocator
+MEMFreeToAllocator:
+/* 80297734 00293394 80 A3 00 00 */ lwz r5, 0(r3)
+/* 80297738 00293398 81 85 00 04 */ lwz r12, 4(r5)
+/* 8029773C 0029339C 7D 89 03 A6 */ mtctr r12
+/* 80297740 002933A0 4E 80 04 20 */ bctr
+
+.global MEMInitAllocatorForExpHeap
+MEMInitAllocatorForExpHeap:
+/* 80297744 002933A4 38 C2 A3 68 */ addi r6, r2, lbl_80642968-_SDA2_BASE_
+/* 80297748 002933A8 38 00 00 00 */ li r0, 0
+/* 8029774C 002933AC 90 C3 00 00 */ stw r6, 0(r3)
+/* 80297750 002933B0 90 83 00 04 */ stw r4, 4(r3)
+/* 80297754 002933B4 90 A3 00 08 */ stw r5, 8(r3)
+/* 80297758 002933B8 90 03 00 0C */ stw r0, 0xc(r3)
+/* 8029775C 002933BC 4E 80 00 20 */ blr
+
+.global MEMInitAllocatorForFrmHeap
+MEMInitAllocatorForFrmHeap:
+/* 80297760 002933C0 38 C2 A3 70 */ addi r6, r2, lbl_80642970-_SDA2_BASE_
+/* 80297764 002933C4 38 00 00 00 */ li r0, 0
+/* 80297768 002933C8 90 C3 00 00 */ stw r6, 0(r3)
+/* 8029776C 002933CC 90 83 00 04 */ stw r4, 4(r3)
+/* 80297770 002933D0 90 A3 00 08 */ stw r5, 8(r3)
+/* 80297774 002933D4 90 03 00 0C */ stw r0, 0xc(r3)
+/* 80297778 002933D8 4E 80 00 20 */ blr
diff --git a/asm/SDK/MEM/mem_frameHeap.s b/asm/SDK/MEM/mem_frameHeap.s
new file mode 100644
index 0000000..5cca960
--- /dev/null
+++ b/asm/SDK/MEM/mem_frameHeap.s
@@ -0,0 +1,225 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MEMCreateFrmHeapEx
+MEMCreateFrmHeapEx:
+/* 8029740C 0029306C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80297410 00293070 7C 08 02 A6 */ mflr r0
+/* 80297414 00293074 7C 84 1A 14 */ add r4, r4, r3
+/* 80297418 00293078 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8029741C 0029307C 38 03 00 03 */ addi r0, r3, 3
+/* 80297420 00293080 54 86 00 3A */ rlwinm r6, r4, 0, 0, 0x1d
+/* 80297424 00293084 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80297428 00293088 54 1F 00 3A */ rlwinm r31, r0, 0, 0, 0x1d
+/* 8029742C 0029308C 7C 1F 30 40 */ cmplw r31, r6
+/* 80297430 00293090 41 81 00 10 */ bgt lbl_80297440
+/* 80297434 00293094 7C 1F 30 50 */ subf r0, r31, r6
+/* 80297438 00293098 28 00 00 48 */ cmplwi r0, 0x48
+/* 8029743C 0029309C 40 80 00 0C */ bge lbl_80297448
+lbl_80297440:
+/* 80297440 002930A0 38 60 00 00 */ li r3, 0
+/* 80297444 002930A4 48 00 00 38 */ b lbl_8029747C
+lbl_80297448:
+/* 80297448 002930A8 3C 80 46 52 */ lis r4, 0x46524D48@ha
+/* 8029744C 002930AC 7C A7 2B 78 */ mr r7, r5
+/* 80297450 002930B0 7F E3 FB 78 */ mr r3, r31
+/* 80297454 002930B4 38 BF 00 48 */ addi r5, r31, 0x48
+/* 80297458 002930B8 38 84 4D 48 */ addi r4, r4, 0x46524D48@l
+/* 8029745C 002930BC 4B FF F1 B1 */ bl MEMiInitHeapHead
+/* 80297460 002930C0 80 9F 00 18 */ lwz r4, 0x18(r31)
+/* 80297464 002930C4 38 00 00 00 */ li r0, 0
+/* 80297468 002930C8 7F E3 FB 78 */ mr r3, r31
+/* 8029746C 002930CC 90 9F 00 3C */ stw r4, 0x3c(r31)
+/* 80297470 002930D0 80 9F 00 1C */ lwz r4, 0x1c(r31)
+/* 80297474 002930D4 90 9F 00 40 */ stw r4, 0x40(r31)
+/* 80297478 002930D8 90 1F 00 44 */ stw r0, 0x44(r31)
+lbl_8029747C:
+/* 8029747C 002930DC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80297480 002930E0 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80297484 002930E4 7C 08 03 A6 */ mtlr r0
+/* 80297488 002930E8 38 21 00 10 */ addi r1, r1, 0x10
+/* 8029748C 002930EC 4E 80 00 20 */ blr
+
+.global MEMDestroyFrmHeap
+MEMDestroyFrmHeap:
+/* 80297490 002930F0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80297494 002930F4 7C 08 02 A6 */ mflr r0
+/* 80297498 002930F8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8029749C 002930FC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802974A0 00293100 7C 7F 1B 78 */ mr r31, r3
+/* 802974A4 00293104 4B FF F3 29 */ bl MEMiFinalizeHeap
+/* 802974A8 00293108 7F E3 FB 78 */ mr r3, r31
+/* 802974AC 0029310C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802974B0 00293110 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802974B4 00293114 7C 08 03 A6 */ mtlr r0
+/* 802974B8 00293118 38 21 00 10 */ addi r1, r1, 0x10
+/* 802974BC 0029311C 4E 80 00 20 */ blr
+
+.global MEMAllocFromFrmHeapEx
+MEMAllocFromFrmHeapEx:
+/* 802974C0 00293120 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802974C4 00293124 7C 08 02 A6 */ mflr r0
+/* 802974C8 00293128 2C 04 00 00 */ cmpwi r4, 0
+/* 802974CC 0029312C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802974D0 00293130 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802974D4 00293134 7C 7F 1B 78 */ mr r31, r3
+/* 802974D8 00293138 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802974DC 0029313C 7C 9E 23 78 */ mr r30, r4
+/* 802974E0 00293140 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802974E4 00293144 7C BD 2B 78 */ mr r29, r5
+/* 802974E8 00293148 40 82 00 08 */ bne lbl_802974F0
+/* 802974EC 0029314C 3B C0 00 01 */ li r30, 1
+lbl_802974F0:
+/* 802974F0 00293150 80 03 00 38 */ lwz r0, 0x38(r3)
+/* 802974F4 00293154 38 9E 00 03 */ addi r4, r30, 3
+/* 802974F8 00293158 54 9E 00 3A */ rlwinm r30, r4, 0, 0, 0x1d
+/* 802974FC 0029315C 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 80297500 00293160 41 82 00 0C */ beq lbl_8029750C
+/* 80297504 00293164 38 63 00 20 */ addi r3, r3, 0x20
+/* 80297508 00293168 4B FD 84 41 */ bl OSLockMutex
+lbl_8029750C:
+/* 8029750C 0029316C 2C 1D 00 00 */ cmpwi r29, 0
+/* 80297510 00293170 41 80 00 54 */ blt lbl_80297564
+/* 80297514 00293174 80 7F 00 3C */ lwz r3, 0x3c(r31)
+/* 80297518 00293178 38 1D FF FF */ addi r0, r29, -1
+/* 8029751C 0029317C 7C 05 00 F8 */ nor r5, r0, r0
+/* 80297520 00293180 80 1F 00 40 */ lwz r0, 0x40(r31)
+/* 80297524 00293184 7C 9D 1A 14 */ add r4, r29, r3
+/* 80297528 00293188 38 84 FF FF */ addi r4, r4, -1
+/* 8029752C 0029318C 7C BD 20 38 */ and r29, r5, r4
+/* 80297530 00293190 7F DE EA 14 */ add r30, r30, r29
+/* 80297534 00293194 7C 1E 00 40 */ cmplw r30, r0
+/* 80297538 00293198 40 81 00 0C */ ble lbl_80297544
+/* 8029753C 0029319C 3B A0 00 00 */ li r29, 0
+/* 80297540 002931A0 48 00 00 6C */ b lbl_802975AC
+lbl_80297544:
+/* 80297544 002931A4 80 1F 00 38 */ lwz r0, 0x38(r31)
+/* 80297548 002931A8 7C A3 F0 50 */ subf r5, r3, r30
+/* 8029754C 002931AC 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80297550 002931B0 41 82 00 0C */ beq lbl_8029755C
+/* 80297554 002931B4 38 80 00 00 */ li r4, 0
+/* 80297558 002931B8 4B D6 CB AD */ bl memset
+lbl_8029755C:
+/* 8029755C 002931BC 93 DF 00 3C */ stw r30, 0x3c(r31)
+/* 80297560 002931C0 48 00 00 4C */ b lbl_802975AC
+lbl_80297564:
+/* 80297564 002931C4 80 BF 00 40 */ lwz r5, 0x40(r31)
+/* 80297568 002931C8 20 1D FF FF */ subfic r0, r29, -1
+/* 8029756C 002931CC 7C 04 00 F8 */ nor r4, r0, r0
+/* 80297570 002931D0 80 1F 00 3C */ lwz r0, 0x3c(r31)
+/* 80297574 002931D4 7C 7E 28 50 */ subf r3, r30, r5
+/* 80297578 002931D8 7C 9D 18 38 */ and r29, r4, r3
+/* 8029757C 002931DC 7C 1D 00 40 */ cmplw r29, r0
+/* 80297580 002931E0 40 80 00 0C */ bge lbl_8029758C
+/* 80297584 002931E4 3B A0 00 00 */ li r29, 0
+/* 80297588 002931E8 48 00 00 24 */ b lbl_802975AC
+lbl_8029758C:
+/* 8029758C 002931EC 80 1F 00 38 */ lwz r0, 0x38(r31)
+/* 80297590 002931F0 7C BD 28 50 */ subf r5, r29, r5
+/* 80297594 002931F4 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80297598 002931F8 41 82 00 10 */ beq lbl_802975A8
+/* 8029759C 002931FC 7F A3 EB 78 */ mr r3, r29
+/* 802975A0 00293200 38 80 00 00 */ li r4, 0
+/* 802975A4 00293204 4B D6 CB 61 */ bl memset
+lbl_802975A8:
+/* 802975A8 00293208 93 BF 00 40 */ stw r29, 0x40(r31)
+lbl_802975AC:
+/* 802975AC 0029320C 80 1F 00 38 */ lwz r0, 0x38(r31)
+/* 802975B0 00293210 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 802975B4 00293214 41 82 00 0C */ beq lbl_802975C0
+/* 802975B8 00293218 38 7F 00 20 */ addi r3, r31, 0x20
+/* 802975BC 0029321C 4B FD 84 69 */ bl OSUnlockMutex
+lbl_802975C0:
+/* 802975C0 00293220 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802975C4 00293224 7F A3 EB 78 */ mr r3, r29
+/* 802975C8 00293228 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802975CC 0029322C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802975D0 00293230 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802975D4 00293234 7C 08 03 A6 */ mtlr r0
+/* 802975D8 00293238 38 21 00 20 */ addi r1, r1, 0x20
+/* 802975DC 0029323C 4E 80 00 20 */ blr
+
+.global MEMFreeToFrmHeap
+MEMFreeToFrmHeap:
+/* 802975E0 00293240 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802975E4 00293244 7C 08 02 A6 */ mflr r0
+/* 802975E8 00293248 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802975EC 0029324C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802975F0 00293250 7C 9F 23 78 */ mr r31, r4
+/* 802975F4 00293254 93 C1 00 08 */ stw r30, 8(r1)
+/* 802975F8 00293258 7C 7E 1B 78 */ mr r30, r3
+/* 802975FC 0029325C 80 03 00 38 */ lwz r0, 0x38(r3)
+/* 80297600 00293260 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 80297604 00293264 41 82 00 0C */ beq lbl_80297610
+/* 80297608 00293268 38 63 00 20 */ addi r3, r3, 0x20
+/* 8029760C 0029326C 4B FD 83 3D */ bl OSLockMutex
+lbl_80297610:
+/* 80297610 00293270 57 E0 07 FF */ clrlwi. r0, r31, 0x1f
+/* 80297614 00293274 41 82 00 14 */ beq lbl_80297628
+/* 80297618 00293278 80 7E 00 18 */ lwz r3, 0x18(r30)
+/* 8029761C 0029327C 38 00 00 00 */ li r0, 0
+/* 80297620 00293280 90 1E 00 44 */ stw r0, 0x44(r30)
+/* 80297624 00293284 90 7E 00 3C */ stw r3, 0x3c(r30)
+lbl_80297628:
+/* 80297628 00293288 57 E0 07 BD */ rlwinm. r0, r31, 0, 0x1e, 0x1e
+/* 8029762C 0029328C 41 82 00 28 */ beq lbl_80297654
+/* 80297630 00293290 80 7E 00 44 */ lwz r3, 0x44(r30)
+/* 80297634 00293294 48 00 00 10 */ b lbl_80297644
+lbl_80297638:
+/* 80297638 00293298 80 1E 00 1C */ lwz r0, 0x1c(r30)
+/* 8029763C 0029329C 90 03 00 08 */ stw r0, 8(r3)
+/* 80297640 002932A0 80 63 00 0C */ lwz r3, 0xc(r3)
+lbl_80297644:
+/* 80297644 002932A4 2C 03 00 00 */ cmpwi r3, 0
+/* 80297648 002932A8 40 82 FF F0 */ bne lbl_80297638
+/* 8029764C 002932AC 80 1E 00 1C */ lwz r0, 0x1c(r30)
+/* 80297650 002932B0 90 1E 00 40 */ stw r0, 0x40(r30)
+lbl_80297654:
+/* 80297654 002932B4 80 1E 00 38 */ lwz r0, 0x38(r30)
+/* 80297658 002932B8 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 8029765C 002932BC 41 82 00 0C */ beq lbl_80297668
+/* 80297660 002932C0 38 7E 00 20 */ addi r3, r30, 0x20
+/* 80297664 002932C4 4B FD 83 C1 */ bl OSUnlockMutex
+lbl_80297668:
+/* 80297668 002932C8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8029766C 002932CC 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80297670 002932D0 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80297674 002932D4 7C 08 03 A6 */ mtlr r0
+/* 80297678 002932D8 38 21 00 10 */ addi r1, r1, 0x10
+/* 8029767C 002932DC 4E 80 00 20 */ blr
+
+.global MEMGetAllocatableSizeForFrmHeapEx
+MEMGetAllocatableSizeForFrmHeapEx:
+/* 80297680 002932E0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80297684 002932E4 7C 08 02 A6 */ mflr r0
+/* 80297688 002932E8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8029768C 002932EC 7C 80 FE 70 */ srawi r0, r4, 0x1f
+/* 80297690 002932F0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80297694 002932F4 7C 1F 22 78 */ xor r31, r0, r4
+/* 80297698 002932F8 7F E0 F8 50 */ subf r31, r0, r31
+/* 8029769C 002932FC 93 C1 00 08 */ stw r30, 8(r1)
+/* 802976A0 00293300 7C 7E 1B 78 */ mr r30, r3
+/* 802976A4 00293304 4B FD 70 B9 */ bl OSDisableInterrupts
+/* 802976A8 00293308 80 1E 00 3C */ lwz r0, 0x3c(r30)
+/* 802976AC 0029330C 38 9F FF FF */ addi r4, r31, -1
+/* 802976B0 00293310 7C 85 20 F8 */ nor r5, r4, r4
+/* 802976B4 00293314 80 DE 00 40 */ lwz r6, 0x40(r30)
+/* 802976B8 00293318 7C 9F 02 14 */ add r4, r31, r0
+/* 802976BC 0029331C 38 04 FF FF */ addi r0, r4, -1
+/* 802976C0 00293320 7C A0 00 38 */ and r0, r5, r0
+/* 802976C4 00293324 7C 00 30 40 */ cmplw r0, r6
+/* 802976C8 00293328 40 81 00 0C */ ble lbl_802976D4
+/* 802976CC 0029332C 3B E0 00 00 */ li r31, 0
+/* 802976D0 00293330 48 00 00 08 */ b lbl_802976D8
+lbl_802976D4:
+/* 802976D4 00293334 7F E0 30 50 */ subf r31, r0, r6
+lbl_802976D8:
+/* 802976D8 00293338 4B FD 70 AD */ bl OSRestoreInterrupts
+/* 802976DC 0029333C 7F E3 FB 78 */ mr r3, r31
+/* 802976E0 00293340 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802976E4 00293344 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802976E8 00293348 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802976EC 0029334C 7C 08 03 A6 */ mtlr r0
+/* 802976F0 00293350 38 21 00 10 */ addi r1, r1, 0x10
+/* 802976F4 00293354 4E 80 00 20 */ blr
diff --git a/asm/SDK/MEM/mem_heapCommon.s b/asm/SDK/MEM/mem_heapCommon.s
index 6e2cc20..0d05b07 100644
--- a/asm/SDK/MEM/mem_heapCommon.s
+++ b/asm/SDK/MEM/mem_heapCommon.s
@@ -52,7 +52,7 @@ lbl_80296568:
lbl_80296570:
/* 80296570 002921D0 7F C4 F3 78 */ mr r4, r30
/* 80296574 002921D4 38 7F 00 0C */ addi r3, r31, 0xc
-/* 80296578 002921D8 48 00 12 F9 */ bl func_80297870
+/* 80296578 002921D8 48 00 12 F9 */ bl MEMGetNextListObject
/* 8029657C 002921DC 2C 03 00 00 */ cmpwi r3, 0
/* 80296580 002921E0 7C 7E 1B 78 */ mr r30, r3
/* 80296584 002921E4 40 82 FF B4 */ bne lbl_80296538
@@ -67,7 +67,7 @@ lbl_80296598:
lbl_802965A0:
/* 802965A0 00292200 7F E4 FB 78 */ mr r4, r31
/* 802965A4 00292204 38 7D 00 0C */ addi r3, r29, 0xc
-/* 802965A8 00292208 48 00 12 C9 */ bl func_80297870
+/* 802965A8 00292208 48 00 12 C9 */ bl MEMGetNextListObject
/* 802965AC 0029220C 2C 03 00 00 */ cmpwi r3, 0
/* 802965B0 00292210 7C 7F 1B 78 */ mr r31, r3
/* 802965B4 00292214 40 82 FF 64 */ bne lbl_80296518
@@ -82,7 +82,7 @@ lbl_802965C8:
lbl_802965D0:
/* 802965D0 00292230 7F C3 F3 78 */ mr r3, r30
/* 802965D4 00292234 7F A4 EB 78 */ mr r4, r29
-/* 802965D8 00292238 48 00 12 99 */ bl func_80297870
+/* 802965D8 00292238 48 00 12 99 */ bl MEMGetNextListObject
/* 802965DC 0029223C 2C 03 00 00 */ cmpwi r3, 0
/* 802965E0 00292240 7C 7D 1B 78 */ mr r29, r3
/* 802965E4 00292244 40 82 FF 14 */ bne lbl_802964F8
@@ -113,14 +113,14 @@ MEMiInitHeapHead:
/* 80296638 00292298 90 C3 00 1C */ stw r6, 0x1c(r3)
/* 8029663C 0029229C 90 03 00 38 */ stw r0, 0x38(r3)
/* 80296640 002922A0 38 63 00 0C */ addi r3, r3, 0xc
-/* 80296644 002922A4 48 00 11 39 */ bl func_8029777C
+/* 80296644 002922A4 48 00 11 39 */ bl MEMInitList
/* 80296648 002922A8 80 0D AC 48 */ lwz r0, lbl_8063FF08-_SDA_BASE_(r13)
/* 8029664C 002922AC 2C 00 00 00 */ cmpwi r0, 0
/* 80296650 002922B0 40 82 00 28 */ bne lbl_80296678
/* 80296654 002922B4 3C 60 80 53 */ lis r3, lbl_805311C0@ha
/* 80296658 002922B8 38 80 00 04 */ li r4, 4
/* 8029665C 002922BC 38 63 11 C0 */ addi r3, r3, lbl_805311C0@l
-/* 80296660 002922C0 48 00 11 1D */ bl func_8029777C
+/* 80296660 002922C0 48 00 11 1D */ bl MEMInitList
/* 80296664 002922C4 3C 60 80 53 */ lis r3, lbl_805311D0@ha
/* 80296668 002922C8 38 63 11 D0 */ addi r3, r3, lbl_805311D0@l
/* 8029666C 002922CC 4B FD 92 A5 */ bl OSInitMutex
@@ -173,7 +173,7 @@ lbl_8029670C:
lbl_80296714:
/* 80296714 00292374 7F A4 EB 78 */ mr r4, r29
/* 80296718 00292378 38 7F 00 0C */ addi r3, r31, 0xc
-/* 8029671C 0029237C 48 00 11 55 */ bl func_80297870
+/* 8029671C 0029237C 48 00 11 55 */ bl MEMGetNextListObject
/* 80296720 00292380 2C 03 00 00 */ cmpwi r3, 0
/* 80296724 00292384 7C 7D 1B 78 */ mr r29, r3
/* 80296728 00292388 40 82 FF B4 */ bne lbl_802966DC
@@ -188,7 +188,7 @@ lbl_8029673C:
lbl_80296744:
/* 80296744 002923A4 7F E4 FB 78 */ mr r4, r31
/* 80296748 002923A8 38 7E 00 0C */ addi r3, r30, 0xc
-/* 8029674C 002923AC 48 00 11 25 */ bl func_80297870
+/* 8029674C 002923AC 48 00 11 25 */ bl MEMGetNextListObject
/* 80296750 002923B0 2C 03 00 00 */ cmpwi r3, 0
/* 80296754 002923B4 7C 7F 1B 78 */ mr r31, r3
/* 80296758 002923B8 40 82 FF 64 */ bne lbl_802966BC
@@ -203,7 +203,7 @@ lbl_8029676C:
lbl_80296774:
/* 80296774 002923D4 7F C4 F3 78 */ mr r4, r30
/* 80296778 002923D8 38 7F 11 C0 */ addi r3, r31, 0x11c0
-/* 8029677C 002923DC 48 00 10 F5 */ bl func_80297870
+/* 8029677C 002923DC 48 00 10 F5 */ bl MEMGetNextListObject
/* 80296780 002923E0 2C 03 00 00 */ cmpwi r3, 0
/* 80296784 002923E4 7C 7E 1B 78 */ mr r30, r3
/* 80296788 002923E8 40 82 FF 14 */ bne lbl_8029669C
@@ -215,7 +215,7 @@ lbl_80296790:
lbl_8029679C:
/* 8029679C 002923FC 7F 83 E3 78 */ mr r3, r28
/* 802967A0 00292400 7F 64 DB 78 */ mr r4, r27
-/* 802967A4 00292404 48 00 0F F1 */ bl func_80297794
+/* 802967A4 00292404 48 00 0F F1 */ bl MEMAppendListObject
/* 802967A8 00292408 3C 60 80 53 */ lis r3, lbl_805311D0@ha
/* 802967AC 0029240C 38 63 11 D0 */ addi r3, r3, lbl_805311D0@l
/* 802967B0 00292410 4B FD 92 75 */ bl OSUnlockMutex
@@ -278,7 +278,7 @@ lbl_80296870:
lbl_80296878:
/* 80296878 002924D8 7F A4 EB 78 */ mr r4, r29
/* 8029687C 002924DC 38 7F 00 0C */ addi r3, r31, 0xc
-/* 80296880 002924E0 48 00 0F F1 */ bl func_80297870
+/* 80296880 002924E0 48 00 0F F1 */ bl MEMGetNextListObject
/* 80296884 002924E4 2C 03 00 00 */ cmpwi r3, 0
/* 80296888 002924E8 7C 7D 1B 78 */ mr r29, r3
/* 8029688C 002924EC 40 82 FF B4 */ bne lbl_80296840
@@ -293,7 +293,7 @@ lbl_802968A0:
lbl_802968A8:
/* 802968A8 00292508 7F E4 FB 78 */ mr r4, r31
/* 802968AC 0029250C 38 7E 00 0C */ addi r3, r30, 0xc
-/* 802968B0 00292510 48 00 0F C1 */ bl func_80297870
+/* 802968B0 00292510 48 00 0F C1 */ bl MEMGetNextListObject
/* 802968B4 00292514 2C 03 00 00 */ cmpwi r3, 0
/* 802968B8 00292518 7C 7F 1B 78 */ mr r31, r3
/* 802968BC 0029251C 40 82 FF 64 */ bne lbl_80296820
@@ -308,7 +308,7 @@ lbl_802968D0:
lbl_802968D8:
/* 802968D8 00292538 7F C4 F3 78 */ mr r4, r30
/* 802968DC 0029253C 38 7F 11 C0 */ addi r3, r31, 0x11c0
-/* 802968E0 00292540 48 00 0F 91 */ bl func_80297870
+/* 802968E0 00292540 48 00 0F 91 */ bl MEMGetNextListObject
/* 802968E4 00292544 2C 03 00 00 */ cmpwi r3, 0
/* 802968E8 00292548 7C 7E 1B 78 */ mr r30, r3
/* 802968EC 0029254C 40 82 FF 14 */ bne lbl_80296800
@@ -320,7 +320,7 @@ lbl_802968F4:
lbl_80296900:
/* 80296900 00292560 7F 83 E3 78 */ mr r3, r28
/* 80296904 00292564 7F 64 DB 78 */ mr r4, r27
-/* 80296908 00292568 48 00 0E FD */ bl func_80297804
+/* 80296908 00292568 48 00 0E FD */ bl MEMRemoveListObject
/* 8029690C 0029256C 3C 60 80 53 */ lis r3, lbl_805311D0@ha
/* 80296910 00292570 38 63 11 D0 */ addi r3, r3, lbl_805311D0@l
/* 80296914 00292574 4B FD 91 11 */ bl OSUnlockMutex
diff --git a/asm/SDK/MEM/mem_list.s b/asm/SDK/MEM/mem_list.s
new file mode 100644
index 0000000..8496c01
--- /dev/null
+++ b/asm/SDK/MEM/mem_list.s
@@ -0,0 +1,90 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MEMInitList
+MEMInitList:
+/* 8029777C 002933DC 38 00 00 00 */ li r0, 0
+/* 80297780 002933E0 B0 83 00 0A */ sth r4, 0xa(r3)
+/* 80297784 002933E4 90 03 00 00 */ stw r0, 0(r3)
+/* 80297788 002933E8 90 03 00 04 */ stw r0, 4(r3)
+/* 8029778C 002933EC B0 03 00 08 */ sth r0, 8(r3)
+/* 80297790 002933F0 4E 80 00 20 */ blr
+
+.global MEMAppendListObject
+MEMAppendListObject:
+/* 80297794 002933F4 80 03 00 00 */ lwz r0, 0(r3)
+/* 80297798 002933F8 2C 00 00 00 */ cmpwi r0, 0
+/* 8029779C 002933FC 40 82 00 30 */ bne lbl_802977CC
+/* 802977A0 00293400 A0 A3 00 0A */ lhz r5, 0xa(r3)
+/* 802977A4 00293404 38 00 00 00 */ li r0, 0
+/* 802977A8 00293408 7C A4 2A 14 */ add r5, r4, r5
+/* 802977AC 0029340C 90 05 00 04 */ stw r0, 4(r5)
+/* 802977B0 00293410 90 05 00 00 */ stw r0, 0(r5)
+/* 802977B4 00293414 A0 A3 00 08 */ lhz r5, 8(r3)
+/* 802977B8 00293418 90 83 00 00 */ stw r4, 0(r3)
+/* 802977BC 0029341C 38 05 00 01 */ addi r0, r5, 1
+/* 802977C0 00293420 90 83 00 04 */ stw r4, 4(r3)
+/* 802977C4 00293424 B0 03 00 08 */ sth r0, 8(r3)
+/* 802977C8 00293428 4E 80 00 20 */ blr
+lbl_802977CC:
+/* 802977CC 0029342C A0 C3 00 0A */ lhz r6, 0xa(r3)
+/* 802977D0 00293430 38 00 00 00 */ li r0, 0
+/* 802977D4 00293434 80 A3 00 04 */ lwz r5, 4(r3)
+/* 802977D8 00293438 7C A6 21 6E */ stwux r5, r6, r4
+/* 802977DC 0029343C 90 06 00 04 */ stw r0, 4(r6)
+/* 802977E0 00293440 80 A3 00 04 */ lwz r5, 4(r3)
+/* 802977E4 00293444 A0 03 00 0A */ lhz r0, 0xa(r3)
+/* 802977E8 00293448 7C A5 02 14 */ add r5, r5, r0
+/* 802977EC 0029344C 90 85 00 04 */ stw r4, 4(r5)
+/* 802977F0 00293450 A0 A3 00 08 */ lhz r5, 8(r3)
+/* 802977F4 00293454 90 83 00 04 */ stw r4, 4(r3)
+/* 802977F8 00293458 38 05 00 01 */ addi r0, r5, 1
+/* 802977FC 0029345C B0 03 00 08 */ sth r0, 8(r3)
+/* 80297800 00293460 4E 80 00 20 */ blr
+
+.global MEMRemoveListObject
+MEMRemoveListObject:
+/* 80297804 00293464 A0 A3 00 0A */ lhz r5, 0xa(r3)
+/* 80297808 00293468 7C C4 2A 14 */ add r6, r4, r5
+/* 8029780C 0029346C 7C 84 28 2E */ lwzx r4, r4, r5
+/* 80297810 00293470 2C 04 00 00 */ cmpwi r4, 0
+/* 80297814 00293474 40 82 00 10 */ bne lbl_80297824
+/* 80297818 00293478 80 06 00 04 */ lwz r0, 4(r6)
+/* 8029781C 0029347C 90 03 00 00 */ stw r0, 0(r3)
+/* 80297820 00293480 48 00 00 10 */ b lbl_80297830
+lbl_80297824:
+/* 80297824 00293484 80 06 00 04 */ lwz r0, 4(r6)
+/* 80297828 00293488 7C 84 2A 14 */ add r4, r4, r5
+/* 8029782C 0029348C 90 04 00 04 */ stw r0, 4(r4)
+lbl_80297830:
+/* 80297830 00293490 80 A6 00 04 */ lwz r5, 4(r6)
+/* 80297834 00293494 2C 05 00 00 */ cmpwi r5, 0
+/* 80297838 00293498 40 82 00 10 */ bne lbl_80297848
+/* 8029783C 0029349C 80 06 00 00 */ lwz r0, 0(r6)
+/* 80297840 002934A0 90 03 00 04 */ stw r0, 4(r3)
+/* 80297844 002934A4 48 00 00 10 */ b lbl_80297854
+lbl_80297848:
+/* 80297848 002934A8 80 86 00 00 */ lwz r4, 0(r6)
+/* 8029784C 002934AC A0 03 00 0A */ lhz r0, 0xa(r3)
+/* 80297850 002934B0 7C 85 01 2E */ stwx r4, r5, r0
+lbl_80297854:
+/* 80297854 002934B4 38 00 00 00 */ li r0, 0
+/* 80297858 002934B8 90 06 00 00 */ stw r0, 0(r6)
+/* 8029785C 002934BC 90 06 00 04 */ stw r0, 4(r6)
+/* 80297860 002934C0 A0 83 00 08 */ lhz r4, 8(r3)
+/* 80297864 002934C4 38 04 FF FF */ addi r0, r4, -1
+/* 80297868 002934C8 B0 03 00 08 */ sth r0, 8(r3)
+/* 8029786C 002934CC 4E 80 00 20 */ blr
+
+.global MEMGetNextListObject
+MEMGetNextListObject:
+/* 80297870 002934D0 2C 04 00 00 */ cmpwi r4, 0
+/* 80297874 002934D4 40 82 00 0C */ bne lbl_80297880
+/* 80297878 002934D8 80 63 00 00 */ lwz r3, 0(r3)
+/* 8029787C 002934DC 4E 80 00 20 */ blr
+lbl_80297880:
+/* 80297880 002934E0 A0 03 00 0A */ lhz r0, 0xa(r3)
+/* 80297884 002934E4 7C 64 02 14 */ add r3, r4, r0
+/* 80297888 002934E8 80 63 00 04 */ lwz r3, 4(r3)
+/* 8029788C 002934EC 4E 80 00 20 */ blr