misc documentation

This commit is contained in:
Banjo Kazooie
2023-01-30 00:02:44 -06:00
parent da9a0109b5
commit cd146f444f
258 changed files with 2526 additions and 3594 deletions

View File

@@ -5,7 +5,7 @@
#include "gc/gctransition.h"
void func_8023E00C(s32);
void func_8023E00C(enum map_e);
void func_8023DFF0(s32);
@@ -26,7 +26,7 @@ u32 D_8027A130;
u8 pad_8027A138[0x400];
u64 D_8027A538;
u8 pad_8027A540[0x17F8];
OSThread D_8027BD38;
OSThread s_MainThread;
s32 D_8027BEE8;
s32 D_8027BEEC;
u64 D_8027BEF0;
@@ -98,12 +98,12 @@ void func_8023DBDC(void){
func_8023DFF0(3);
}
void func_8023DC0C(void){
void core1_init(void){
func_80255C30();
func_8023E00C(func_8023DBA4());
rarezip_init(); //initialize decompressor's huft table
func_8024BE30();
func_80251308();
overlayManagerloadCore2();
D_8027BEF0 = D_8027A538;
heap_init();
func_80254028();
@@ -111,10 +111,10 @@ void func_8023DC0C(void){
func_8033EF58();
assetCache_init();
pfsManager_init();
func_80250C84();
rumbleManager_init();
audioManager_init();
func_8025425C();
func_80257424();
ml_init();
gctransition_reset();
D_8027A130 = 0;
D_80275618 = 0;
@@ -132,9 +132,9 @@ void func_8023DCF4(void){
#ifndef NOMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_0/func_8023DD0C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_0/mainLoop.s")
#else
void func_8023DD0C(void){
void mainLoop(void){
s32 x;
s32 y;
s32 r;
@@ -152,7 +152,7 @@ void func_8023DD0C(void){
if(!D_8027BEEC)
func_8024E7C8();
D_8027BEEC = 0;
func_80250C08();
rumbleManager_80250C08();
if(!mapSpecificFlags_validateCRC1()){
write_file_blocks(0, 0, 0x80397AD0, 0x40);
@@ -200,11 +200,11 @@ void func_8023DD0C(void){
}
#endif
void func_8023DF9C(void *arg0){
func_8023DC0C();
void __mainMethod(void *arg0){
core1_init();
sns_write_payload_over_heap();
while(1){ //main loop
func_8023DD0C();
mainLoop();
}
}
@@ -216,18 +216,18 @@ s32 func_8023E000(void){
return D_8027A130;
}
void func_8023E00C(s32 arg0){
D_8027BEE8 = arg0;
void func_8023E00C(enum map_e map_id){
D_8027BEE8 = map_id;
}
void func_8023E018(void){
void mainThread_create(void){
// 5th argument should be a pointer to the end of an array, but the start is unknown
// D_8027A538 is not the right symbol, but the end of the array is the important port and this is the closest symbol currently
osCreateThread(&D_8027BD38, 6, func_8023DF9C, NULL, ((u8*)&D_8027A538) + 0x1800, 0x14);
osCreateThread(&s_MainThread, 6, __mainMethod, NULL, ((u8*)&D_8027A538) + 0x1800, 0x14);
}
OSThread *func_8023E060(void){
return &D_8027BD38;
OSThread *mainThread_get(void){
return &s_MainThread;
}
void func_8023E06C(void){

View File

@@ -119,28 +119,28 @@ f32 func_80255F14(f32 vec1[3], f32 vec2[3])
}
//ml_vec3f_cross_product
void func_80255F74(f32 dst[3], f32 src1[3], f32 src2[3])
void ml_crossProduct_vec3f(f32 dst[3], f32 src1[3], f32 src2[3])
{
dst[0] = src1[1] * src2[2] - src1[2] * src2[1];
dst[1] = src1[2] * src2[0] - src1[0] * src2[2];
dst[2] = src1[0] * src2[1] - src1[1] * src2[0];
}
void func_80255FE4(f32 dst[3], f32 vec1[3], f32 vec2[3], f32 scale)
void ml_interpolate_vec3f(f32 dst[3], f32 vec1[3], f32 vec2[3], f32 scale)
{
dst[0] = vec1[0] + (vec2[0] - vec1[0]) * scale;
dst[1] = vec1[1] + (vec2[1] - vec1[1]) * scale;
dst[2] = vec1[2] + (vec2[2] - vec1[2]) * scale;
}
f32 ml_vec3f_dot_product(f32 vec1[3], f32 vec2[3])
f32 ml_dotProduct_vec3f(f32 vec1[3], f32 vec2[3])
{
return vec1[0] * vec2[0]
+ vec1[1] * vec2[1]
+ vec1[2] * vec2[2];
}
f32 ml_vec3f_distance(f32 vec1[3], f32 vec2[3])
f32 ml_distance_vec3f(f32 vec1[3], f32 vec2[3])
{
f32 diff[3];
@@ -167,7 +167,7 @@ f32 func_802560D0(f32 arg0[3], f32 arg1[3], f32 arg2[3]) {
sp24[2] = arg1[2] - arg0[2];
sp20 = gu_sqrtf(sp24[0]*sp24[0] + sp24[1]*sp24[1] + sp24[2]*sp24[2]);
if (sp20 < 0.01) {
return ml_vec3f_distance(arg0, arg2);
return ml_distance_vec3f(arg0, arg2);
}
sp3C[0] = arg2[0] - arg0[0];
@@ -183,10 +183,10 @@ f32 func_802560D0(f32 arg0[3], f32 arg1[3], f32 arg2[3]) {
sp4C[0] = arg0[0] + (sp24[0] * sp30);
sp4C[1] = arg0[1] + (sp24[1] * sp30);
sp4C[2] = arg0[2] + (sp24[2] * sp30);
return ml_vec3f_distance(sp4C, arg2);
return ml_distance_vec3f(sp4C, arg2);
}
f32 ml_vec3f_distance_squared(f32 vec1[3], f32 vec2[3])
f32 ml_distanceSquared_vec3f(f32 vec1[3], f32 vec2[3])
{
f32 diff[3];
@@ -564,7 +564,7 @@ void func_8025727C(f32 x1, f32 y1, f32 z1, f32 x2, f32 y2, f32 z2, f32 *o1, f32
}
//ml_init
void func_80257424(void)
void ml_init(void)
{
u16 i;
@@ -583,7 +583,7 @@ void func_80257424(void)
* Deallocates the ushort table used for asin
*/
//ml_free
void func_80257594(void)
void ml_free(void)
{
free(D_80276CB8);
D_80276CB8 = NULL;
@@ -629,7 +629,7 @@ void func_802576F8(void)
//ml_timer_update
//decrement a counter and returns True if timer reaches 0
bool func_8025773C(f32 *timer, f32 delta)
bool ml_timer_update(f32 *timer, f32 delta)
{
if (*timer > 0)
{
@@ -658,9 +658,9 @@ void func_8025778C(f32 dst[3], f32 arg1[3], f32 arg2[3][3]){
func_802596AC(sp34, arg2[1], arg2[2], arg1);
func_802596AC(sp28, arg2[2], arg2[0], arg1);
sp54 = ml_vec3f_distance_squared(sp40, arg1);
sp50 = ml_vec3f_distance_squared(sp34, arg1);
sp4C = ml_vec3f_distance_squared(sp28, arg1);
sp54 = ml_distanceSquared_vec3f(sp40, arg1);
sp50 = ml_distanceSquared_vec3f(sp34, arg1);
sp4C = ml_distanceSquared_vec3f(sp28, arg1);
if(sp54 < sp50){
if(sp4C < sp54){
@@ -688,7 +688,7 @@ void func_802578A4(f32 dst[3], f32 vec1[3], f32 vec2[3])
ml_vec3f_diff_copy(tmp1, &vec2[3], vec2);
ml_vec3f_diff_copy(tmp2, &vec2[6], vec2);
func_80255F74(tmp3, tmp1, tmp2);
ml_crossProduct_vec3f(tmp3, tmp1, tmp2);
ml_vec3f_normalize(tmp3);
func_80257918(dst, vec1, vec2, tmp3);
}
@@ -712,19 +712,19 @@ bool func_802579B0(f32 vec[3], f32 x1, f32 z1, f32 x2, f32 z2)
f32 func_80257A44(f32 val1, f32 val2)
{
return func_802588B0(val1, val2) / val2;
return ml_remainder_f(val1, val2) / val2;
}
f32 func_80257A6C(f32 val1, f32 val2)
{
f32 tmp = func_802588B0(val1, val2) / val2;
f32 tmp = ml_remainder_f(val1, val2) / val2;
return (sinf(tmp * (2*BAD_PI)) + 1.0) / 2.0;
}
f32 func_80257AD4(f32 val1, f32 val2)
{
return sinf((func_802588B0(val1, val2) / val2) * (2*BAD_PI));
return sinf((ml_remainder_f(val1, val2) / val2) * (2*BAD_PI));
}
f32 ml_map_f(f32 a, f32 b, f32 c, f32 d, f32 e)
@@ -768,8 +768,7 @@ f32 func_80257BFC(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4)
return arg4;
}
//ml_f_interpolate
f32 func_80257C48(f32 arg0, f32 arg1, f32 arg2)
f32 ml_interpolate_f(f32 arg0, f32 arg1, f32 arg2)
{
return arg0 * (arg2 - arg1) + arg1;
}
@@ -805,7 +804,7 @@ void func_80257DB0(f32 arg0[3], f32 arg1[3], f32 arg2[3])
f32 tmp[3];
ml_vec3f_scale_copy(arg0, arg1, -1);
dot_product = ml_vec3f_dot_product(arg0, arg2);
dot_product = ml_dotProduct_vec3f(arg0, arg2);
ml_vec3f_scale_copy(tmp, arg2, 2 * dot_product);
ml_vec3f_diff_copy(arg0, tmp, arg0);
}
@@ -821,8 +820,7 @@ void func_80257E14(f32 v[3], f32 a)
}
}
// int clamp
s32 func_80257EA8(s32 val, s32 min, s32 max)
s32 ml_clamp_w(s32 val, s32 min, s32 max)
{
if (val < min)
return min;
@@ -833,16 +831,15 @@ s32 func_80257EA8(s32 val, s32 min, s32 max)
return val;
}
//ml_clamp_f
f32 mlClamp_f(f32 arg0, f32 arg1, f32 arg2)
f32 ml_clamp_f(f32 val, f32 min, f32 max)
{
if (arg0 < arg1)
return arg1;
if (val < min)
return min;
if (arg0 > arg2)
return arg2;
if (val > max)
return max;
return arg0;
return val;
}
//ml_vec3f_yaw_between
@@ -948,14 +945,12 @@ int func_80258210(f32 x, f32 y, f32 *dst)
return TRUE;
}
//ml_vec3f_is_zero
int func_802582EC(f32 vec[3])
int ml_isZero_vec3f(f32 vec[3])
{
return !(vec[0] != 0 || vec[1] != 0 || vec[2] != 0);
}
//ml_vec3f_is_not_zero
bool func_80258368(f32 vec[3])
bool ml_isNonzero_vec3f(f32 vec[3])
{
return vec[0] != 0 || vec[1] != 0 || vec[2] != 0;
}
@@ -1062,19 +1057,19 @@ f32 mlNormalizeAngle(f32 angle)
return angle;
}
f32 func_802588B0(f32 arg0, f32 arg1)
f32 ml_remainder_f(f32 arg0, f32 arg1)
{
f32 val = arg0 / arg1;
return (val - (s32)val) * arg1;
}
f32 max_f(f32 arg0, f32 arg1)
f32 ml_max_f(f32 arg0, f32 arg1)
{
return arg0 > arg1 ? arg0 : arg1;
}
f32 min_f(f32 arg0, f32 arg1)
f32 ml_min_f(f32 arg0, f32 arg1)
{
return arg0 < arg1 ? arg0 : arg1;
}
@@ -1471,9 +1466,9 @@ void func_802596AC(f32 a0[3], f32 a1[3], f32 a2[3], f32 a3[3])
func_80259554(a0, a1, a2, a3);
a = ml_vec3f_distance_squared(a1, a2);
b = ml_vec3f_distance_squared(a1, a0);
c = ml_vec3f_distance_squared(a2, a0);
a = ml_distanceSquared_vec3f(a1, a2);
b = ml_distanceSquared_vec3f(a1, a0);
c = ml_distanceSquared_vec3f(a2, a0);
if (a < b || a < c)
{

View File

@@ -126,7 +126,7 @@ void func_80259BD0(void) {
for(var_s0 = D_80276E30; var_s0 < &D_80276E30[6]; var_s0++){
if (var_s0->unk10 >= 0) {
temp_lo = var_s0 - D_80276E30;
var_s0->unk4 = min_f(var_s0->unk4 + sp3C, 600.0f);
var_s0->unk4 = ml_min_f(var_s0->unk4 + sp3C, 600.0f);
if ((var_s0->unk4 > 1.0f) && func_80250074(temp_lo)) {
func_8025A7DC(var_s0->unk10);
}

View File

@@ -35,7 +35,7 @@ void func_802405F0(u32 arg0, u32 arg1, s32 size){
}
#endif
void func_80240754(void){
void piMgr_create(void){
osCreateMesgQueue(&D_8027E0AC, &D_8027E0A8, 1);
osCreateMesgQueue(&D_8027E108, &D_8027E0C8[0], 16);
osCreatePiManager(OS_PRIORITY_PIMGR, &D_8027E108, &D_8027E0C8[0], 16);

View File

@@ -14,14 +14,14 @@ void func_80240BE0(void){
osStartThread(&D_8027ED10);
}
void func_80240754(void);
void func_8023E018(void);
OSThread *func_8023E060(void);
void piMgr_create(void);
void mainThread_create(void);
OSThread *mainThread_get(void);
void func_80240C30(void *arg)
{
func_80240754();
func_8023E018();
osStartThread(func_8023E060());
piMgr_create();
mainThread_create();
osStartThread(mainThread_get());
while (1);
}

View File

@@ -5,7 +5,7 @@
int func_802458E0(f32 arg0[3], Actor *arg1, s32 arg2);
extern bool func_80320DB0(f32[3], f32, f32[3], u32);
extern bool func_80323240(struct56s *, f32, f32[3]);
extern f32 ml_vec3f_dot_product(f32[3], f32[3]);
extern f32 ml_dotProduct_vec3f(f32[3], f32[3]);
extern BKCollisionTri *func_80320B98(f32[3], f32[3], f32[3], u32);
extern BKCollisionTri *func_80320C94(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3[3], s32 arg4, u32 arg5);
extern f32 func_8031C5D4(struct0*);
@@ -122,7 +122,7 @@ void func_802450DC(f32 arg0[3], f32 arg1[3], f32 arg2[3], f32 arg3[3], f32 arg4[
ml_vec3f_diff_copy(sp3C, arg1, arg0);
ml_vec3f_diff_copy(sp30, arg3, arg2);
ml_vec3f_diff_copy(sp24, sp3C, sp30);
phi_f12 = -ml_vec3f_dot_product(arg4, sp24);
phi_f12 = -ml_dotProduct_vec3f(arg4, sp24);
phi_f12 = MAX(5.0f, phi_f12);
arg1[0] += phi_f12 * arg4[0];
arg1[1] += phi_f12 * arg4[1];
@@ -145,13 +145,13 @@ void func_802451A4(f32 arg0[3], f32 arg1[3], f32 arg2[3], f32 arg3[3], f32 arg4[
ml_vec3f_diff_copy(sp54, sp6C, sp60);
ml_vec3f_normalize_copy(sp3C, sp54);
ml_vec3f_yaw_rotate_copy(sp30, sp3C, 90.0f);
sp28 = ml_vec3f_dot_product(arg4, sp3C);
sp28 = ml_dotProduct_vec3f(arg4, sp3C);
if (arg5 != 0) {
D_8027EF30 = ml_vec3f_dot_product(arg4, sp30);
D_8027EF30 = ml_dotProduct_vec3f(arg4, sp30);
}
phi_v0 = (D_8027EF30 < 0.0f) ? -1 : 1;
ml_vec3f_yaw_rotate_copy(sp48, arg4,(phi_v0 * sp28) * 45.0);
phi_f12 = -ml_vec3f_dot_product(sp48, sp54);
phi_f12 = -ml_dotProduct_vec3f(sp48, sp54);
phi_f12 = MAX(5.0f, phi_f12);
arg1[0] += phi_f12 * sp48[0];
arg1[1] += phi_f12 * sp48[1];
@@ -280,7 +280,7 @@ void func_8024560C(f32 arg0[3], struct0 *arg1, UNK_TYPE(s32) arg2, u8 *arg3, f32
}
BKCollisionTri *func_8024575C(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3[3], s32 arg4, u32 arg5){
if(arg2 < ml_vec3f_distance(arg0, arg1)){
if(arg2 < ml_distance_vec3f(arg0, arg1)){
return NULL;
}
return func_80320C94(arg0, arg1, arg2, arg3, arg4, arg5);

View File

@@ -399,7 +399,7 @@ void func_8024730C(void){
} else {
osViSetMode(&D_802759F8);
}
func_80250FC0(); //stop controller motors
rumbleManager_80250FC0(); //stop controller motors
do{
osDpSetStatus(DPC_STATUS_FLUSH);
}while(1);

View File

@@ -145,8 +145,8 @@ void func_8024BFD8(s32 arg0){
static s32 D_80280E90;
osSetThreadPri(NULL, 0x7f);
func_802408EC(0x1E);
func_80240874();
defragManager_setPriority(0x1E);
defragManager_80240874();
if(arg0){
osRecvMesg(&D_802807B0, NULL, OS_MESG_BLOCK);
}
@@ -167,9 +167,9 @@ void func_8024BFD8(s32 arg0){
}//L8024C178
D_80280724 = D_802808D8;
D_802808D8 = 0;
func_802408B0();
defragManager_802408B0();
osSetThreadPri(NULL, 0x14);
func_802408EC(0xA);
defragManager_setPriority(0xA);
}
void func_8024C1B4(void){

View File

@@ -3,7 +3,7 @@
#include "variables.h"
extern void guPerspective(Mtx *, u16*, f32, f32, f32, f32, f32);
extern f32 ml_vec3f_dot_product(f32[3], f32[3]);
extern f32 ml_dotProduct_vec3f(f32[3], f32[3]);
/* .data */
f32 D_80275D20 = 40.0f; //fovy
@@ -48,7 +48,7 @@ void func_8024C510(f32 arg0){
}
void func_8024C584(f32 arg0[3]){
ml_vec3f_distance(arg0, D_80280EB0);
ml_distance_vec3f(arg0, D_80280EB0);
}
void func_8024C5A8(f32 arg0[3]){
@@ -355,7 +355,7 @@ bool func_8024DB50(f32 arg0[3], f32 arg1) {
sp3C[1] = arg0[1] - D_80280EB0[1];
sp3C[2] = arg0[2] - D_80280EB0[2];
for(i = 0; i < 4; i++){
if(arg1 <= ml_vec3f_dot_product(sp3C, D_80280ED0[i])){
if(arg1 <= ml_dotProduct_vec3f(sp3C, D_80280ED0[i])){
return FALSE;
}
}

View File

@@ -2,53 +2,53 @@
#include "functions.h"
#include "variables.h"
void func_80240924(s32 arg0);
void __defrag_thread(s32 arg0);
OSMesgQueue D_8027E120;
OSMesg D_8027E138;
OSMesgQueue D_8027E140;
OSMesg D_8027E158;
OSThread D_8027E160;
u8 D_8027E310[0x800];
OSThread defragThread;
u8 defragStack[0x800];
/* .code */
void func_802407C0(void){
void defragManager_init(void){
osCreateMesgQueue(&D_8027E120, &D_8027E138, 1);
osCreateMesgQueue(&D_8027E140, &D_8027E158, 1);
osCreateThread(&D_8027E160, 2, func_80240924, NULL, &D_8027E310[0x800], 10);
osStartThread(&D_8027E160);
osCreateThread(&defragThread, 2, __defrag_thread, NULL, &defragStack[0x800], 10);
osStartThread(&defragThread);
}
void func_80240844(void){
osStopThread(&D_8027E160);
osDestroyThread(&D_8027E160);
void defragManager_free(void){
osStopThread(&defragThread);
osDestroyThread(&defragThread);
}
void func_80240874(void){
void defragManager_80240874(void){
if(func_8023E000() == 3){
osSendMesg(&D_8027E120, NULL, OS_MESG_BLOCK);
}
}
void func_802408B0(void){
void defragManager_802408B0(void){
if(func_8023E000() == 3){
osSendMesg(&D_8027E140, NULL, OS_MESG_BLOCK);
}
}
void func_802408EC(OSPri pri){
void defragManager_setPriority(OSPri pri){
if(func_8023E000() == 3){
osSetThreadPri(&D_8027E160, pri);
osSetThreadPri(&defragThread, pri);
}
}
void func_80240924(s32 arg0){
void __defrag_thread(s32 arg0){
int tmp_v0;
do{
osRecvMesg(&D_8027E120, NULL, OS_MESG_BLOCK);
if(!D_8027E140.validCount){
do{
tmp_v0 = func_802E48D8();
tmp_v0 = game_defrag();
}while(!D_8027E140.validCount && tmp_v0);
}
osRecvMesg(&D_8027E140, NULL, OS_MESG_BLOCK);

View File

@@ -15,7 +15,7 @@ extern u8 D_8002D500;
extern u32 D_8027BF2C;
extern u32 D_8027BF30;
void func_80253050(
void overlay_load(
s32 overlay_id, u32 ram_start, u32 ram_end, u32 rom_start, u32 rom_end,
u32 code_start, u32 code_end, u32 data_start, u32 data_end, u32 bss_start, u32 bss_end
){

View File

@@ -14,7 +14,7 @@ typedef struct struct_2a_s{
u8* data_end;
u8* bss_start;
u8* bss_end;
} struct2As;
} OverlayAddressMap;
extern u8 D_803A5D00;
@@ -56,7 +56,7 @@ SEGMENT_EXTERNS(fight);
{#realname, segname##_VRAM, segname##_VRAM_END, segname##_ROM_START, segname##_ROM_END, NULL, NULL, NULL, NULL, NULL, NULL}
/* .data */
struct2As D_802762D0[] = {
static OverlayAddressMap overlayAddressMap[] = {
SEGMENT_ENTRY(core2, gs),
DUMMY_SEGMENT_ENTRY(emptyLvl, coshow),
SEGMENT_ENTRY(CC, whale),
@@ -73,117 +73,116 @@ struct2As D_802762D0[] = {
SEGMENT_ENTRY(lair, witch),
SEGMENT_ENTRY(fight, battle),
};
s32 D_80276564 = sizeof(D_802762D0) / sizeof(D_802762D0[0]);
static s32 overlayCount = sizeof(overlayAddressMap) / sizeof(overlayAddressMap[0]);
/* .bss */
enum overlay_e D_80282800;
enum overlay_e overlayMgrLoadedId;
void func_802513A4(void);
void overlayManagerdebug(void);
/* .code */
struct2As *func_802510F0(void){
//returns struct2As ptr with largest RAM size
OverlayAddressMap *__overlayManagergetLargetOverlayAddressMap(void){
//returns OverlayAddressMap ptr with largest RAM size
int i;
struct2As * v1;
OverlayAddressMap * largest_overlay;
v1 = &D_802762D0[1];
for(i = 1; i < D_80276564; i++){
if(v1->ram_end - v1->ram_start < (u32)(D_802762D0[i].ram_end - D_802762D0[i].ram_start)){
v1 = &D_802762D0[i];
largest_overlay = &overlayAddressMap[1];
for(i = 1; i < overlayCount; i++){
if(largest_overlay->ram_end - largest_overlay->ram_start < (u32)(overlayAddressMap[i].ram_end - overlayAddressMap[i].ram_start)){
largest_overlay = &overlayAddressMap[i];
}
}
return v1;
return largest_overlay;
}
s32 func_80251170(void){
s32 __overlayManager80251170(void){
return 0;
}
s32 func_80251178(void){
s32 __overlayManager80251178(void){
int sp24;
struct2As *sp20;
OverlayAddressMap *largest_overlay;
s32 sp1C;
s32 sp18;
sp20 = func_802510F0();
largest_overlay = __overlayManagergetLargetOverlayAddressMap();
sp18 = func_802546DC();
sp1C = func_80251170();
sp1C = __overlayManager80251170();
return ((sp1C + &D_803A5D00) - sp20->ram_end) + sp18;
return ((sp1C + &D_803A5D00) - largest_overlay->ram_end) + sp18;
}
void func_802511C4(void){
void __overlayManager802511C4(void){
s32 sp24;
int sp20;
int sp1C;
int sp18;
int heap_size;
u32 tmp_v0;
sp24 = func_80251178();
sp18 = heap_get_size();
sp24 = __overlayManager80251178();
heap_size = heap_get_size();
sp20 = func_802546DC();
sp1C = sp18 - sp20;
sp1C = heap_size - sp20;
if(sp24 < 0){
func_802513A4();
overlayManagerdebug();
tmp_v0 = sp1C + sp24;
while( tmp_v0 & 0xF){tmp_v0--;}
}
}
int get_loaded_overlay_id(void){
return D_80282800;
int overlayManagergetLoadedId(void){
return overlayMgrLoadedId;
}
int is_overlay_loaded(int overlay_id){
return D_80282800 == overlay_id;
bool overlayManagerisOverlayLoaded(int overlay_id){
return overlayMgrLoadedId == overlay_id;
}
bool load_overlay(enum overlay_e overlay_id){
enum overlay_e rom_addr;
bool overlayManagerload(enum overlay_e overlay_id){
s32 rom_addr;
if(overlay_id == 0)
return FALSE;
if(overlay_id == D_80282800)
if(overlay_id == overlayMgrLoadedId)
return FALSE;
D_80282800 = overlay_id;
rom_addr = D_802762D0 + overlay_id;
overlayMgrLoadedId = overlay_id;
rom_addr = (s32)(overlayAddressMap + overlay_id);
func_80253050(
overlay_load(
overlay_id,
((struct2As*)rom_addr)->ram_start,
((struct2As*)rom_addr)->ram_end,
((struct2As*)rom_addr)->unkC,
((struct2As*)rom_addr)->unk10,
((struct2As*)rom_addr)->code_start,
((struct2As*)rom_addr)->code_end,
((struct2As*)rom_addr)->data_start,
((struct2As*)rom_addr)->data_end,
((struct2As*)rom_addr)->bss_start,
((struct2As*)rom_addr)->bss_end
((OverlayAddressMap*)rom_addr)->ram_start,
((OverlayAddressMap*)rom_addr)->ram_end,
((OverlayAddressMap*)rom_addr)->unkC,
((OverlayAddressMap*)rom_addr)->unk10,
((OverlayAddressMap*)rom_addr)->code_start,
((OverlayAddressMap*)rom_addr)->code_end,
((OverlayAddressMap*)rom_addr)->data_start,
((OverlayAddressMap*)rom_addr)->data_end,
((OverlayAddressMap*)rom_addr)->bss_start,
((OverlayAddressMap*)rom_addr)->bss_end
);
return TRUE;
}
//clear_loaded_overlay_id
s32 func_802512FC(void){
D_80282800 = 0;
s32 overlayManagerclearLoadedId(void){
overlayMgrLoadedId = 0;
}
void func_80251308(void){
func_802512FC();
func_80253050(0,
void overlayManagerloadCore2(void){
overlayManagerclearLoadedId();
overlay_load(0,
core2_VRAM, core2_VRAM_END,
core2_ROM_START, core2_ROM_END,
core2_TEXT_START, core2_TEXT_END,
core2_DATA_START, core2_RODATA_END,
core2_BSS_START, core2_BSS_END
);
func_802511C4();
__overlayManager802511C4();
}
void func_802513A4(void){}
void overlayManagerdebug(void){}

View File

@@ -15,13 +15,13 @@ f32 D_80282420;
f32 D_80282424;
f32 D_80282428;
f32 D_8028242C;
OSThread D_80282430;
u8 D_802825E0[0x200];
OSThread rumbleThread;
u8 rumbleStack[0x200];
/* .code */
void func_80250D94(f32, f32, f32);
void rumbleManager_80250D94(f32, f32, f32);
void func_80250890(void){
void __rumbleManager_startRumble(void){
u32 motor_status;
if(D_802823B0){
@@ -32,7 +32,7 @@ void func_80250890(void){
}
}
void func_802508E0(void){
void __rumbleManager_stopRumble(void){
u32 motor_status;
if(D_802823B0){
@@ -54,14 +54,14 @@ void func_80250930(void){
}
}
void func_8025098C(void *arg0) {
void __rumbleUpdate(void *arg0) {
static s32 D_802827E0;
static s32 D_802827E4;
static s32 rumble_state;
f32 temp_f2;
f32 temp_f0;
f32 temp_f12;
f32 temp_f14;
s32 temp_a0;
s32 prev_state;
s32 var_v0;
s32 var_v1;
@@ -71,42 +71,42 @@ void func_8025098C(void *arg0) {
if (!D_802823B0 && ((D_802827E0 % 60) == 0)) {
func_80250930();
}
temp_a0 = D_802827E4;
prev_state = rumble_state;
if (D_80282424 != D_80282420) {
temp_f2 = D_80282428 + ((D_8028242C - D_80282428) * D_80282424 / D_80282420);
var_v0 = (s32) (((1.0 - temp_f2) * 8.0) + 1);
if (var_v0 < 2) {
D_802827E4 = var_v0;
rumble_state = var_v0;
} else {
D_802827E4 = (D_802827E0 % var_v0) == 0;
rumble_state = (D_802827E0 % var_v0) == 0;
}
} else {
D_802827E4 = 0;
rumble_state = 0;
}
if (D_802827E4 != temp_a0) {
D_802827E4 = D_802827E4;
if (D_802827E4) {
func_80250890(); //start_motor
if (rumble_state != prev_state) {
if (rumble_state) {
__rumbleManager_startRumble(); //start_motor
}
else{
func_802508E0(); //stop_motor
__rumbleManager_stopRumble(); //stop_motor
}
}
}while(1);
}
void func_80250BA4(s32 arg0, s32 arg1, s32 arg2){
void __rumbleManager_80250BA4(s32 arg0, s32 arg1, s32 arg2){
f64 f0 = 524288.0;
func_80250D94(arg0/f0, arg1/f0, arg2/f0);
rumbleManager_80250D94(arg0/f0, arg1/f0, arg2/f0);
}
void func_80250C08(void) {
void rumbleManager_80250C08(void) {
if (D_802823AC != 0) {
D_80282424 = MIN(D_80282420, D_80282424 + time_getDelta());
}
}
void func_80250C84(void){
void rumbleManager_init(void){
s32 pfs_status;
func_8024F35C(4);
@@ -120,15 +120,15 @@ void func_80250C84(void){
D_802823B0 = D_802823AC;
if(D_802823AC){
osCreateMesgQueue(&D_80282390, &D_802823A8, 1);
osCreateThread(&D_80282430, 8, func_8025098C, NULL, &D_802825E0[0x200], 0x19);
osStartThread(&D_80282430);
osCreateThread(&rumbleThread, 8, __rumbleUpdate, NULL, &rumbleStack[0x200], 0x19);
osStartThread(&rumbleThread);
func_8024BDAC(&D_80282390, 0);
}
}
void func_80250D8C(void){}
void __rumbleManager_80250D8C(void){}
void func_80250D94(f32 arg0, f32 arg1, f32 arg2){
void rumbleManager_80250D94(f32 arg0, f32 arg1, f32 arg2){
f32 f4;
if(arg2 != 0.0f && D_802823AC){
if(func_802E4A08() == 0){
@@ -142,21 +142,20 @@ void func_80250D94(f32 arg0, f32 arg1, f32 arg2){
}
}
void func_80250E6C(f32 arg0, f32 arg1){
func_80250D94(arg0, arg0, arg1);
void rumbleManager_80250E6C(f32 arg0, f32 arg1){
rumbleManager_80250D94(arg0, arg0, arg1);
}
void func_80250E94(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5){
void rumbleManager_80250E94(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5){
if(D_802823AC){
timedFunc_set_3(0.0f, (GenMethod_3) func_80250BA4, 0, (s32) (arg0 * 524288.0f), (s32) (arg2*524288.0f));
timedFunc_set_3(arg2, (GenMethod_3) func_80250BA4, (s32) (arg0 * 524288.0f), (s32) (arg1 * 524288.0f), (s32) (arg3*524288.0f));
timedFunc_set_3(arg2 + arg3, (GenMethod_3) func_80250BA4, (s32) (arg1 * 524288.0f), (s32) (arg1 * 524288.0f), (s32) (arg4*524288.0f));
timedFunc_set_3(arg2 + arg3 + arg4, (GenMethod_3) func_80250BA4, (s32) (arg1 * 524288.0f), 0, (s32) (arg5*524288.0f));
timedFunc_set_3(0.0f, (GenMethod_3) __rumbleManager_80250BA4, 0, (s32) (arg0 * 524288.0f), (s32) (arg2*524288.0f));
timedFunc_set_3(arg2, (GenMethod_3) __rumbleManager_80250BA4, (s32) (arg0 * 524288.0f), (s32) (arg1 * 524288.0f), (s32) (arg3*524288.0f));
timedFunc_set_3(arg2 + arg3, (GenMethod_3) __rumbleManager_80250BA4, (s32) (arg1 * 524288.0f), (s32) (arg1 * 524288.0f), (s32) (arg4*524288.0f));
timedFunc_set_3(arg2 + arg3 + arg4, (GenMethod_3) __rumbleManager_80250BA4, (s32) (arg1 * 524288.0f), 0, (s32) (arg5*524288.0f));
}
}
void func_80250FC0(void){
void rumbleManager_80250FC0(void){
int i;
u32 motor_status;
if(D_802823B0){