Decompile memaHeapInit
This commit is contained in:
parent
97a50547c4
commit
70f72e190d
|
|
@ -899,7 +899,7 @@ struct prop *propAllocateEyespy(struct pad *pad, s16 room)
|
|||
|
||||
if (checksum != CHECKSUM_PLACEHOLDER) {
|
||||
s32 *ptr2 = (s32 *)func00012914;
|
||||
s32 *end2 = (s32 *)func00012a0c;
|
||||
s32 *end2 = (s32 *)memaInit;
|
||||
|
||||
while (ptr2 < end2) {
|
||||
ptr2[0] = 0;
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ bool func000126f0(void *arg0);
|
|||
void func000127b8(void);
|
||||
u32 func00012800(void);
|
||||
u32 func00012914(void);
|
||||
void func00012a0c(void);
|
||||
void func00012a14(void *ptr, u32 arg1);
|
||||
void memaInit(void);
|
||||
void memaHeapInit(void *ptr, u32 arg1);
|
||||
void memPrintInfoIfEnabled(void);
|
||||
void *func00012ab0(u32 size);
|
||||
u32 func00012c3c(void);
|
||||
|
|
|
|||
|
|
@ -7,22 +7,27 @@
|
|||
#include "data.h"
|
||||
#include "types.h"
|
||||
|
||||
struct allocation {
|
||||
struct memaspace {
|
||||
u32 addr;
|
||||
u32 size;
|
||||
};
|
||||
|
||||
struct memaheap {
|
||||
u32 unk000;
|
||||
u32 unk004;
|
||||
u32 unk008;
|
||||
struct memaspace spaces[124];
|
||||
u32 unk3ec;
|
||||
u32 unk3f0;
|
||||
u32 unk3f4;
|
||||
s32 unk3f8;
|
||||
};
|
||||
|
||||
u32 var80099470;
|
||||
u32 var80099474;
|
||||
u32 var80099478[249];
|
||||
u32 var8009985c;
|
||||
u32 var80099860;
|
||||
u32 var80099864;
|
||||
u32 var80099868;
|
||||
u32 var8009986c;
|
||||
u32 var80099870;
|
||||
struct memaheap g_MemaHeap;
|
||||
|
||||
void memaSwap(struct allocation *a, struct allocation *b)
|
||||
void memaSwap(struct memaspace *a, struct memaspace *b)
|
||||
{
|
||||
u32 tempaddr = a->addr;
|
||||
u32 tempsize = a->size;
|
||||
|
|
@ -32,7 +37,7 @@ void memaSwap(struct allocation *a, struct allocation *b)
|
|||
b->size = tempsize;
|
||||
}
|
||||
|
||||
void memaMerge(struct allocation *a, struct allocation *b)
|
||||
void memaMerge(struct memaspace *a, struct memaspace *b)
|
||||
{
|
||||
a->size += b->size;
|
||||
b->addr = 0;
|
||||
|
|
@ -100,7 +105,7 @@ glabel func000126f0
|
|||
|
||||
void func000127b8(void)
|
||||
{
|
||||
while (func000126f0(var80099478));
|
||||
while (func000126f0(&g_MemaHeap));
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
|
|
@ -198,8 +203,8 @@ glabel func00012914
|
|||
/* 12930: 0019c880 */ sll $t9,$t9,0x2
|
||||
/* 12934: 0329001a */ div $zero,$t9,$t1
|
||||
/* 12938: 00003012 */ mflo $a2
|
||||
/* 1293c: 3c0b800a */ lui $t3,%hi(var80099478)
|
||||
/* 12940: 256b9478 */ addiu $t3,$t3,%lo(var80099478)
|
||||
/* 1293c: 3c0b800a */ lui $t3,%hi(g_MemaHeap)
|
||||
/* 12940: 256b9478 */ addiu $t3,$t3,%lo(g_MemaHeap)
|
||||
/* 12944: 000650c0 */ sll $t2,$a2,0x3
|
||||
/* 12948: 014b1021 */ addu $v0,$t2,$t3
|
||||
/* 1294c: 8c480010 */ lw $t0,0x10($v0)
|
||||
|
|
@ -242,11 +247,11 @@ glabel func00012914
|
|||
/* 129cc: 8c6efffc */ lw $t6,-0x4($v1)
|
||||
.L000129d0:
|
||||
/* 129d0: 8c6f0000 */ lw $t7,0x0($v1)
|
||||
/* 129d4: 3c04800a */ lui $a0,%hi(var80099478)
|
||||
/* 129d4: 3c04800a */ lui $a0,%hi(g_MemaHeap)
|
||||
/* 129d8: 55e00005 */ bnezl $t7,.L000129f0
|
||||
/* 129dc: 8fb80018 */ lw $t8,0x18($sp)
|
||||
/* 129e0: 0c004a00 */ jal func00012800
|
||||
/* 129e4: 24849478 */ addiu $a0,$a0,%lo(var80099478)
|
||||
/* 129e4: 24849478 */ addiu $a0,$a0,%lo(g_MemaHeap)
|
||||
/* 129e8: 00401825 */ or $v1,$v0,$zero
|
||||
/* 129ec: 8fb80018 */ lw $t8,0x18($sp)
|
||||
.L000129f0:
|
||||
|
|
@ -259,82 +264,38 @@ glabel func00012914
|
|||
/* 12a08: 00000000 */ nop
|
||||
);
|
||||
|
||||
void func00012a0c(void)
|
||||
void memaInit(void)
|
||||
{
|
||||
// empty
|
||||
}
|
||||
|
||||
void memaHeapInit(void *heapaddr, u32 heapsize)
|
||||
{
|
||||
struct memaspace *space;
|
||||
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
GLOBAL_ASM(
|
||||
glabel func00012a14
|
||||
/* 12a14: 3c03800a */ lui $v1,%hi(var80099478)
|
||||
/* 12a18: 24639478 */ addiu $v1,$v1,%lo(var80099478)
|
||||
/* 12a1c: 2406ffff */ addiu $a2,$zero,-1
|
||||
/* 12a20: ac6603ec */ sw $a2,0x3ec($v1)
|
||||
/* 12a24: ac6603f4 */ sw $a2,0x3f4($v1)
|
||||
/* 12a28: 240effff */ addiu $t6,$zero,-1
|
||||
/* 12a2c: 3c06800a */ lui $a2,%hi(var8009985c)
|
||||
/* 12a30: 3c02800a */ lui $v0,%hi(var80099478+0xc)
|
||||
/* 12a34: 24a508e0 */ addiu $a1,$a1,0x8e0
|
||||
/* 12a38: ac600000 */ sw $zero,0x0($v1)
|
||||
/* 12a3c: ac600004 */ sw $zero,0x4($v1)
|
||||
/* 12a40: ac600008 */ sw $zero,0x8($v1)
|
||||
/* 12a44: ac6003f0 */ sw $zero,0x3f0($v1)
|
||||
/* 12a48: ac6e03f8 */ sw $t6,0x3f8($v1)
|
||||
/* 12a4c: 24429484 */ addiu $v0,$v0,%lo(var80099478+0xc)
|
||||
/* 12a50: 24c6985c */ addiu $a2,$a2,%lo(var8009985c)
|
||||
.L00012a54:
|
||||
/* 12a54: 24420008 */ addiu $v0,$v0,0x8
|
||||
/* 12a58: 00c2082b */ sltu $at,$a2,$v0
|
||||
/* 12a5c: ac40fff8 */ sw $zero,-0x8($v0)
|
||||
/* 12a60: 1020fffc */ beqz $at,.L00012a54
|
||||
/* 12a64: ac40fffc */ sw $zero,-0x4($v0)
|
||||
/* 12a68: 3c02800a */ lui $v0,%hi(var80099470)
|
||||
/* 12a6c: 3c06800a */ lui $a2,%hi(var80099474)
|
||||
/* 12a70: 24c69474 */ addiu $a2,$a2,%lo(var80099474)
|
||||
/* 12a74: 24429470 */ addiu $v0,$v0,%lo(var80099470)
|
||||
/* 12a78: ac440000 */ sw $a0,0x0($v0)
|
||||
/* 12a7c: ac64000c */ sw $a0,0xc($v1)
|
||||
/* 12a80: acc50000 */ sw $a1,0x0($a2)
|
||||
/* 12a84: 03e00008 */ jr $ra
|
||||
/* 12a88: ac650010 */ sw $a1,0x10($v1)
|
||||
);
|
||||
#else
|
||||
GLOBAL_ASM(
|
||||
glabel func00012a14
|
||||
/* 12fb4: 3c03800a */ lui $v1,0x800a
|
||||
/* 12fb8: 2463c3f8 */ addiu $v1,$v1,-15368
|
||||
/* 12fbc: 2406ffff */ addiu $a2,$zero,-1
|
||||
/* 12fc0: ac6603ec */ sw $a2,0x3ec($v1)
|
||||
/* 12fc4: ac6603f4 */ sw $a2,0x3f4($v1)
|
||||
/* 12fc8: 240effff */ addiu $t6,$zero,-1
|
||||
/* 12fcc: 3c06800a */ lui $a2,0x800a
|
||||
/* 12fd0: 3c02800a */ lui $v0,0x800a
|
||||
/* 12fd4: ac600000 */ sw $zero,0x0($v1)
|
||||
/* 12fd8: ac600004 */ sw $zero,0x4($v1)
|
||||
/* 12fdc: ac600008 */ sw $zero,0x8($v1)
|
||||
/* 12fe0: ac6003f0 */ sw $zero,0x3f0($v1)
|
||||
/* 12fe4: ac6e03f8 */ sw $t6,0x3f8($v1)
|
||||
/* 12fe8: 2442c404 */ addiu $v0,$v0,-15356
|
||||
/* 12fec: 24c6c7dc */ addiu $a2,$a2,-14372
|
||||
.NB00012ff0:
|
||||
/* 12ff0: 24420008 */ addiu $v0,$v0,0x8
|
||||
/* 12ff4: 00c2082b */ sltu $at,$a2,$v0
|
||||
/* 12ff8: ac40fff8 */ sw $zero,-0x8($v0)
|
||||
/* 12ffc: 1020fffc */ beqz $at,.NB00012ff0
|
||||
/* 13000: ac40fffc */ sw $zero,-0x4($v0)
|
||||
/* 13004: 3c02800a */ lui $v0,0x800a
|
||||
/* 13008: 3c06800a */ lui $a2,0x800a
|
||||
/* 1300c: 24c6c3f4 */ addiu $a2,$a2,-15372
|
||||
/* 13010: 2442c3f0 */ addiu $v0,$v0,-15376
|
||||
/* 13014: ac440000 */ sw $a0,0x0($v0)
|
||||
/* 13018: ac64000c */ sw $a0,0xc($v1)
|
||||
/* 1301c: acc50000 */ sw $a1,0x0($a2)
|
||||
/* 13020: 03e00008 */ jr $ra
|
||||
/* 13024: ac650010 */ sw $a1,0x10($v1)
|
||||
);
|
||||
heapsize += 0x8e0; // ?!
|
||||
#endif
|
||||
|
||||
g_MemaHeap.unk3ec = 0xffffffff;
|
||||
g_MemaHeap.unk3f4 = 0xffffffff;
|
||||
|
||||
g_MemaHeap.unk000 = 0;
|
||||
g_MemaHeap.unk004 = 0;
|
||||
g_MemaHeap.unk008 = 0;
|
||||
|
||||
g_MemaHeap.unk3f0 = 0;
|
||||
g_MemaHeap.unk3f8 = -1;
|
||||
|
||||
for (space = &g_MemaHeap.spaces[0]; space <= &g_MemaHeap.spaces[123]; space++) {
|
||||
space->addr = 0;
|
||||
space->size = 0;
|
||||
}
|
||||
|
||||
g_MemaHeap.spaces[0].addr = var80099470 = (u32)heapaddr;
|
||||
g_MemaHeap.spaces[0].size = var80099474 = heapsize;
|
||||
}
|
||||
|
||||
/**
|
||||
* Example printout of figures:
|
||||
*
|
||||
|
|
@ -373,7 +334,7 @@ void memPrintInfoIfEnabled(void)
|
|||
s32 over;
|
||||
char buffer[124];
|
||||
|
||||
func000126f0(&var80099478);
|
||||
func000126f0(&g_MemaHeap);
|
||||
|
||||
#if VERSION < VERSION_NTSC_1_0
|
||||
if (debugIsMemInfoEnabled()) {
|
||||
|
|
@ -460,12 +421,12 @@ glabel func00012ab0
|
|||
/* 12abc: 00809025 */ or $s2,$a0,$zero
|
||||
/* 12ac0: afb50028 */ sw $s5,0x28($sp)
|
||||
/* 12ac4: afb00014 */ sw $s0,0x14($sp)
|
||||
/* 12ac8: 3c11800a */ lui $s1,%hi(var80099478+0xc)
|
||||
/* 12ac8: 3c11800a */ lui $s1,%hi(g_MemaHeap+0xc)
|
||||
/* 12acc: 3c078009 */ lui $a3,%hi(g_Is4Mb)
|
||||
/* 12ad0: afbf002c */ sw $ra,0x2c($sp)
|
||||
/* 12ad4: afb40024 */ sw $s4,0x24($sp)
|
||||
/* 12ad8: afb30020 */ sw $s3,0x20($sp)
|
||||
/* 12adc: 26319484 */ addiu $s1,$s1,%lo(var80099478+0xc)
|
||||
/* 12adc: 26319484 */ addiu $s1,$s1,%lo(g_MemaHeap+0xc)
|
||||
/* 12ae0: 2404ffff */ addiu $a0,$zero,-1
|
||||
/* 12ae4: 00004025 */ or $t0,$zero,$zero
|
||||
/* 12ae8: 24e70af0 */ addiu $a3,$a3,%lo(g_Is4Mb)
|
||||
|
|
@ -506,7 +467,7 @@ glabel func00012ab0
|
|||
/* 12b68: 24140008 */ addiu $s4,$zero,0x8
|
||||
/* 12b6c: 0332082b */ sltu $at,$t9,$s2
|
||||
/* 12b70: 10200006 */ beqz $at,.L00012b8c
|
||||
/* 12b74: 3c13800a */ lui $s3,%hi(var80099478)
|
||||
/* 12b74: 3c13800a */ lui $s3,%hi(g_MemaHeap)
|
||||
/* 12b78: 8e29000c */ lw $t1,0xc($s1)
|
||||
.L00012b7c:
|
||||
/* 12b7c: 26310008 */ addiu $s1,$s1,0x8
|
||||
|
|
@ -515,11 +476,11 @@ glabel func00012ab0
|
|||
/* 12b88: 8e29000c */ lw $t1,0xc($s1)
|
||||
.L00012b8c:
|
||||
/* 12b8c: 8e2a0000 */ lw $t2,0x0($s1)
|
||||
/* 12b90: 26739478 */ addiu $s3,$s3,%lo(var80099478)
|
||||
/* 12b90: 26739478 */ addiu $s3,$s3,%lo(g_MemaHeap)
|
||||
/* 12b94: 56aa0017 */ bnel $s5,$t2,.L00012bf4
|
||||
/* 12b98: 02204025 */ or $t0,$s1,$zero
|
||||
/* 12b9c: 3c11800a */ lui $s1,%hi(var80099478+0xc)
|
||||
/* 12ba0: 26319484 */ addiu $s1,$s1,%lo(var80099478+0xc)
|
||||
/* 12b9c: 3c11800a */ lui $s1,%hi(g_MemaHeap+0xc)
|
||||
/* 12ba0: 26319484 */ addiu $s1,$s1,%lo(g_MemaHeap+0xc)
|
||||
.L00012ba4:
|
||||
/* 12ba4: 0c0049bc */ jal func000126f0
|
||||
/* 12ba8: 02602025 */ or $a0,$s3,$zero
|
||||
|
|
@ -679,11 +640,11 @@ glabel func00012ab0
|
|||
|
||||
GLOBAL_ASM(
|
||||
glabel func00012c3c
|
||||
/* 12c3c: 3c0f800a */ lui $t7,%hi(var80099478+0xc)
|
||||
/* 12c40: 8def9484 */ lw $t7,%lo(var80099478+0xc)($t7)
|
||||
/* 12c44: 3c0e800a */ lui $t6,%hi(var80099478+0xc)
|
||||
/* 12c3c: 3c0f800a */ lui $t7,%hi(g_MemaHeap+0xc)
|
||||
/* 12c40: 8def9484 */ lw $t7,%lo(g_MemaHeap+0xc)($t7)
|
||||
/* 12c44: 3c0e800a */ lui $t6,%hi(g_MemaHeap+0xc)
|
||||
/* 12c48: 2407ffff */ addiu $a3,$zero,-1
|
||||
/* 12c4c: 25ce9484 */ addiu $t6,$t6,%lo(var80099478+0xc)
|
||||
/* 12c4c: 25ce9484 */ addiu $t6,$t6,%lo(g_MemaHeap+0xc)
|
||||
/* 12c50: 00a03025 */ or $a2,$a1,$zero
|
||||
/* 12c54: 10ef000c */ beq $a3,$t7,.L00012c88
|
||||
/* 12c58: 01c01025 */ or $v0,$t6,$zero
|
||||
|
|
@ -736,13 +697,13 @@ glabel func00012cdc
|
|||
/* 12ce0: afbf0014 */ sw $ra,0x14($sp)
|
||||
/* 12ce4: 0c0049ee */ jal func000127b8
|
||||
/* 12ce8: afa00018 */ sw $zero,0x18($sp)
|
||||
/* 12cec: 3c0e800a */ lui $t6,%hi(var80099478+0xc)
|
||||
/* 12cf0: 8dce9484 */ lw $t6,%lo(var80099478+0xc)($t6)
|
||||
/* 12cec: 3c0e800a */ lui $t6,%hi(g_MemaHeap+0xc)
|
||||
/* 12cf0: 8dce9484 */ lw $t6,%lo(g_MemaHeap+0xc)($t6)
|
||||
/* 12cf4: 2405ffff */ addiu $a1,$zero,-1
|
||||
/* 12cf8: 3c02800a */ lui $v0,%hi(var80099478+0xc)
|
||||
/* 12cf8: 3c02800a */ lui $v0,%hi(g_MemaHeap+0xc)
|
||||
/* 12cfc: 8fa40018 */ lw $a0,0x18($sp)
|
||||
/* 12d00: 10ae000a */ beq $a1,$t6,.L00012d2c
|
||||
/* 12d04: 24429484 */ addiu $v0,$v0,%lo(var80099478+0xc)
|
||||
/* 12d04: 24429484 */ addiu $v0,$v0,%lo(g_MemaHeap+0xc)
|
||||
/* 12d08: 8c430004 */ lw $v1,0x4($v0)
|
||||
.L00012d0c:
|
||||
/* 12d0c: 0083082b */ sltu $at,$a0,$v1
|
||||
|
|
|
|||
|
|
@ -307,7 +307,7 @@ glabel mainInit
|
|||
/* d284: 00000000 */ nop
|
||||
/* d288: 0c0047dc */ jal func000121e0
|
||||
/* d28c: 00000000 */ nop
|
||||
/* d290: 0c0049e7 */ jal func00012a0c
|
||||
/* d290: 0c0049e7 */ jal memaInit
|
||||
/* d294: 00000000 */ nop
|
||||
/* d298: 0c004d3a */ jal func00013758
|
||||
/* d29c: 00000000 */ nop
|
||||
|
|
@ -710,7 +710,7 @@ glabel mainInit
|
|||
/* d544: 00000000 */ nop
|
||||
/* d548: 0c004878 */ jal func000121e0
|
||||
/* d54c: 00000000 */ nop
|
||||
/* d550: 0c004a83 */ jal func00012a0c
|
||||
/* d550: 0c004a83 */ jal memaInit
|
||||
/* d554: 00000000 */ nop
|
||||
/* d558: 0c004dd6 */ jal func00013758
|
||||
/* d55c: 00000000 */ nop
|
||||
|
|
@ -1107,7 +1107,7 @@ glabel mainInit
|
|||
/* daac: 00000000 */ sll $zero,$zero,0x0
|
||||
/* dab0: 0c004994 */ jal func000121e0
|
||||
/* dab4: 00000000 */ sll $zero,$zero,0x0
|
||||
/* dab8: 0c004beb */ jal func00012a0c
|
||||
/* dab8: 0c004beb */ jal memaInit
|
||||
/* dabc: 00000000 */ sll $zero,$zero,0x0
|
||||
/* dac0: 0c004fea */ jal func00013758
|
||||
/* dac4: 00000000 */ sll $zero,$zero,0x0
|
||||
|
|
@ -1499,7 +1499,7 @@ const char var70053aa0[] = " -ml0 -me0 -mgfx100 -mvtx50 -mt700 -ma400";
|
|||
// amgrAllocateStack();
|
||||
// gvarsInit();
|
||||
// func000121e0();
|
||||
// func00012a0c();
|
||||
// memaInit();
|
||||
// func00013758();
|
||||
// viConfigureForLogos();
|
||||
// var8005d9b0 = rmonIsDisabled();
|
||||
|
|
@ -1874,7 +1874,7 @@ void mainLoop(void)
|
|||
var8005d9b8 = strtol(argFindByPrefix(1, "-ma"), NULL, 0) * 1024;
|
||||
}
|
||||
|
||||
func00012a14(malloc(var8005d9b8, MEMPOOL_STAGE), var8005d9b8);
|
||||
memaHeapInit(malloc(var8005d9b8, MEMPOOL_STAGE), var8005d9b8);
|
||||
stageLoadCommonLang(g_StageNum);
|
||||
playersUnrefAll();
|
||||
|
||||
|
|
@ -2324,7 +2324,7 @@ glabel mainLoop
|
|||
/* e4ec: 24050004 */ addiu $a1,$zero,0x4
|
||||
/* e4f0: 3c058006 */ lui $a1,0x8006
|
||||
/* e4f4: 8ca5f2d8 */ lw $a1,-0xd28($a1)
|
||||
/* e4f8: 0c004bed */ jal func00012a14
|
||||
/* e4f8: 0c004bed */ jal memaHeapInit
|
||||
/* e4fc: 00402025 */ or $a0,$v0,$zero
|
||||
/* e500: 3c048006 */ lui $a0,0x8006
|
||||
/* e504: 0fc02bf4 */ jal stageLoadCommonLang
|
||||
|
|
|
|||
Loading…
Reference in New Issue