6FD190 + 6FD410 OK (#235)

* func_800D94F0_jp

* func_800D9514_jp

* func_800D9524_jp

* func_800D955C_jp

* func_800D9618_jp

* func_800D96A8_jp

* func_800D96E8_jp

* func_800D9700_jp

* func_800D9750_jp

* func_800D9760_jp

* func_800D9770_jp

* func_800D9788_jp

* func_800D97A0_jp

* func_800D97F8_jp

* func_800D986C_jp

* Split off 6FD410 based on bss

* Migrate bss

* add todo

* headers

* Better types for 6FD410 bss based on graph

* Cleanup
This commit is contained in:
Derek Hensley
2024-12-28 07:59:22 -08:00
committed by GitHub
parent 7ba4585497
commit cb54eb49e4
10 changed files with 213 additions and 28 deletions
+115
View File
@@ -0,0 +1,115 @@
#include "6FD190.h"
#include "6FD410.h"
#include "alignment.h"
#include "code_variables.h"
#include "libc64/malloc.h"
#include "segment_symbols.h"
#include "unk.h"
u16* B_80146060_jp[3];
UNK_PTR B_8014606C_jp;
uintptr_t B_80146070_jp;
uintptr_t func_800D94F0_jp(void) {
B_80146070_jp = 0x80400000;
B_80146070_jp &= ~0x3F;
return B_80146070_jp;
}
void func_800D9514_jp(void) {
B_80146070_jp = 0;
}
void func_800D9524_jp(void) {
B_80146060_jp[0] = NULL;
B_80146060_jp[1] = NULL;
B_80146060_jp[2] = NULL;
B_8014606C_jp = NULL;
func_800D9770_jp();
}
void func_800D955C_jp(s32 arg0) {
switch (arg0) {
case 0:
B_80146060_jp[0] = D_80000400;
break;
case 1:
B_80146060_jp[1] = (u16*)ALIGN64((uintptr_t)malloc_r(0x2583F));
break;
case 2:
B_8014606C_jp = (UNK_PTR)ALIGN64((uintptr_t)malloc(0x2583F));
break;
case 3:
B_80146060_jp[2] = (u16*)ALIGN64((uintptr_t)malloc(0x2583F));
break;
default:
break;
}
}
void func_800D9618_jp(s32 arg0) {
switch (arg0) {
case 0:
B_80146060_jp[0] = NULL;
break;
case 1:
free(B_80146060_jp[1]);
B_80146060_jp[1] = NULL;
break;
case 2:
free(B_8014606C_jp);
B_8014606C_jp = NULL;
break;
case 3:
free(B_80146060_jp[2]);
B_80146060_jp[2] = NULL;
break;
default:
break;
}
}
void func_800D96A8_jp(void) {
func_800D9788_jp();
func_800D9618_jp(0);
func_800D9618_jp(1);
func_800D9618_jp(2);
func_800D9618_jp(3);
}
u16* func_800D96E8_jp(s32 arg0) {
return B_80146060_jp[arg0];
}
s32 func_800D9700_jp(void) {
if (B_80146060_jp[2] != NULL) {
return 3;
}
if (B_80146060_jp[1] != NULL) {
return 2;
}
if (B_80146060_jp[0] != NULL) {
return 1;
}
return 0;
}
UNK_PTR func_800D9750_jp(void) {
return B_8014606C_jp;
}
uintptr_t func_800D9760_jp(void) {
return B_80146070_jp;
}
+51
View File
@@ -0,0 +1,51 @@
#include "6FD410.h"
#include "libc/stdbool.h"
u32 B_80146080_jp;
UNK_PTR B_80146084_jp;
void func_800D9770_jp(void) {
B_80146080_jp = 0;
B_80146084_jp = NULL;
}
void func_800D9788_jp(void) {
B_80146080_jp = 0;
B_80146084_jp = NULL;
}
UNK_PTR func_800D97A0_jp(u32 arg0) {
if (arg0 < 0x25800) {
if (B_80146080_jp == 0) {
B_80146080_jp = 1;
} else if (B_80146080_jp == 3) {
B_80146080_jp = 4;
return B_80146084_jp;
}
}
return NULL;
}
UNK_PTR func_800D97F8_jp(u32 arg0) {
UNK_PTR ret;
u32 start = osGetCount();
while (true) {
if ((osGetCount() - start) > ((s32)(OS_NSEC_TO_CYCLES(1333333334)))) {
return 0;
}
ret = func_800D97A0_jp(arg0);
if (ret != NULL) {
return ret;
}
}
}
void func_800D986C_jp(s32 arg0) {
if (arg0) {
B_80146084_jp = NULL;
B_80146080_jp = 0;
}
}