This commit is contained in:
Maide
2024-09-10 15:52:07 +01:00
parent be9787703f
commit fc4e90cf07
26 changed files with 1571 additions and 84 deletions
+2 -2
View File
@@ -7,7 +7,7 @@ void func_80057FD0(void *, int);
s32 func_8005A990(OSPiHandle *);
// bcopy.s
void _bcopy(void *, void *, u32);
void _bcopy(void *, void *, s32);
// 5580.s
void func_80004CC0(OSThread *, s32, s32);
@@ -37,7 +37,7 @@ void func_8000D970(OSPfs *);
void set_watch_lohi(s32);
u32 osGetCount(void);
OSIntMask osSetIntMask(OSIntMask);;
OSIntMask osSetIntMask(OSIntMask);
unsigned long long __ull_rshift(unsigned long long a0, unsigned long long a1);
unsigned long long __ull_rem(unsigned long long a0, unsigned long long a1);
+2 -2
View File
@@ -105,8 +105,8 @@ typedef struct unk_D_86002F34_00C {
/* 0x38 */ f32 unk_038;
/* 0x3C */ char pad3C[0x24];
/* 0x60 */ MtxF* unk_060;
/* 0x64 */ Vec3f unk_064;
/* 0x70 */ char pad70[0x38];
/* 0x64 */ MtxF unk_064;
/* 0xA4 */ char padA4[0x4];
/* 0xA8 */ Vec3f unk_0A8;
/* 0xB4 */ Vec3f unk_0B4;
} unk_D_86002F34_00C; // size >= 0xC0
+9
View File
@@ -80,6 +80,7 @@ extern u8 fragment14_relocs_ROM_END[];
extern u8 fragment15_TEXT_START[];
extern u8 fragment15_ROM_START[];
extern u8 fragment15_ROM_END[];
extern u8 fragment15_relocs_ROM_END[];
// fragment 16
extern u8 fragment16_TEXT_START[];
@@ -229,42 +230,50 @@ extern u8 fragment41_ROM_END[];
extern u8 fragment42_TEXT_START[];
extern u8 fragment42_ROM_START[];
extern u8 fragment42_ROM_END[];
extern u8 fragment42_relocs_ROM_END[];
// fragment 43
extern u8 fragment43_TEXT_START[];
extern u8 fragment43_ROM_START[];
extern u8 fragment43_ROM_END[];
extern u8 fragment43_relocs_ROM_END[];
extern u8 fragment43_relocs_ROM_END[];
// fragment 44
extern u8 fragment44_TEXT_START[];
extern u8 fragment44_ROM_START[];
extern u8 fragment44_ROM_END[];
extern u8 fragment44_relocs_ROM_END[];
// fragment 45
extern u8 fragment45_TEXT_START[];
extern u8 fragment45_ROM_START[];
extern u8 fragment45_ROM_END[];
extern u8 fragment45_relocs_ROM_END[];
// fragment 46
extern u8 fragment46_TEXT_START[];
extern u8 fragment46_ROM_START[];
extern u8 fragment46_ROM_END[];
extern u8 fragment46_relocs_ROM_END[];
// fragment 47
extern u8 fragment47_TEXT_START[];
extern u8 fragment47_ROM_START[];
extern u8 fragment47_ROM_END[];
extern u8 fragment47_relocs_ROM_END[];
// fragment 48
extern u8 fragment48_TEXT_START[];
extern u8 fragment48_ROM_START[];
extern u8 fragment48_ROM_END[];
extern u8 fragment48_relocs_ROM_END[];
// fragment 49
extern u8 fragment49_TEXT_START[];
extern u8 fragment49_ROM_START[];
extern u8 fragment49_ROM_END[];
extern u8 fragment49_relocs_ROM_END[];
// fragment 50
extern u8 fragment50_TEXT_START[];
+3
View File
@@ -228,4 +228,7 @@ extern u8 D_87B000CC;
extern u8 D_87B000D0;
extern u8 D_87B000D4;
extern s32 D_800FC820;
extern s32 D_800FF9C0;
#endif
+1
View File
@@ -259,3 +259,4 @@ D_800A60C0 = 0x800A60C0;
D_82100DC0 = 0x82100DC0;
D_86106450 = 0x86106450; // size:0x1140
D_862082A0 = 0x862082A0; // size:0x10
D_800AE4E8 = 0x800AE4E8; // size:0x30
+59 -3
View File
@@ -1,8 +1,64 @@
#include "global.h"
#include "20330.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/20330/func_8001F730.s")
static s32 pad_D_800AC880[0x2];
static s32 D_800AC888;
static unk_D_80068BA0* D_800AC88C;
#pragma GLOBAL_ASM("asm/us/nonmatchings/20330/func_8001F738.s")
void func_8001F730(void) {
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/20330/func_8001F750.s")
void func_8001F738(unk_D_80068BA0* arg0) {
D_800AC888 = 0xA;
D_800AC88C = arg0;
}
s32 func_8001F750(void) {
if (D_800AC88C->unk_08 & 0x800) {
D_800AC888 = 0xA;
return 0x800;
}
if (D_800AC88C->unk_08 & 0x400) {
D_800AC888 = 0xA;
return 0x400;
}
if (D_800AC88C->unk_08 & 0x200) {
D_800AC888 = 0xA;
return 0x200;
}
if (D_800AC88C->unk_08 & 0x100) {
D_800AC888 = 0xA;
return 0x100;
}
D_800AC888--;
if (D_800AC888 <= 0) {
D_800AC888 = 0;
// clang-format off
if (D_800AC88C->unk_06 & 0x800) {
D_800AC888 = 2; return 0x800;
}
// clang-format on
if (D_800AC88C->unk_06 & 0x400) {
D_800AC888 = 2;
return 0x400;
}
if (D_800AC88C->unk_06 & 0x200) {
D_800AC888 = 2;
return 0x200;
}
if (D_800AC88C->unk_06 & 0x100) {
D_800AC888 = 2;
return 0x100;
}
}
return 0;
}
+1 -1
View File
@@ -5,7 +5,7 @@
void func_8001F730(void);
void func_8001F738(unk_D_80068BA0*);
void func_8001F750(void);
s32 func_8001F750(void);
#endif // _20330_H_
+26
View File
@@ -3,7 +3,33 @@
#include "global.h"
typedef struct unk_func_80026268_arg0 {
/* 0x00 */ char unk00[0x4];
/* 0x04 */ u8 unk_04;
/* 0x05 */ char unk05[0x1F];
/* 0x24 */ u8 unk_24;
/* 0x25 */ u8 unk_25;
/* 0x26 */ char unk26[0xA];
/* 0x30 */ u8 unk_30[11];
/* 0x3B */ u8 unk_3B[11];
/* 0x46 */ u8 unk_46[11];
/* 0x51 */ char unk51[0x1];
/* 0x52 */ u8 unk_52;
/* 0x52 */ u8 unk_53;
} unk_func_80026268_arg0; // size >= 0x54
typedef struct unk_D_800AE4E8_004_1_000_010 {
/* 0x00 */ char unk00[0x21];
/* 0x21 */ u8 unk_21[11];
/* 0x2C */ u8 unk_2C[11];
} unk_D_800AE4E8_004_1_000_010; // size = 0x37
void func_80021B7C(u8*, u8*);
void func_80021C40(u8*, u8*);
void func_80021CA4(char*, u8);
void func_80021D9C(unk_func_80026268_arg0*, unk_D_800AE4E8_004_1_000_010*);
void func_80021F04(unk_func_80026268_arg0*, unk_D_800AE4E8_004_1_000_010*);
void func_80022338(unk_func_80026268_arg0*);
void func_80023068(void);
s32 func_8002311C(s32);
void func_80024040(s16);
+918 -36
View File
File diff suppressed because it is too large Load Diff
+5 -4
View File
@@ -15,12 +15,13 @@ typedef struct unk_func_80027FA0 {
} unk_func_80027FA0; // size = 0x8
void func_80026684(s32, s32);
void func_8002707C(s32 arg0, s32 arg1);
void func_80027F24(unk_func_8002A728*);
void func_80027F40(unk_func_8002A728*);
void func_80027FA0(unk_func_80027FA0*, s32);
void func_80027FA0(unk_func_80027FA0*, s16);
void func_80028070(u16*);
void func_800280D4(s32);
void func_800284B4(s32);
void func_80028AFC(s32);
void func_800280D4(u8);
s32 func_800284B4(s16);
s32 func_80028AFC(s16);
#endif // _26820_H_
+240 -4
View File
@@ -1,6 +1,187 @@
#include "30640.h"
#include "include/libc/math.h"
#include "src/11BA0.h"
#include "src/12D80.h"
#include "src/17300.h"
#include "src/18140.h"
#include "src/18480.h"
#include "src/19840.h"
#include "src/1C720.h"
#include "src/1CF30.h"
#include "src/29BA0.h"
#include "src/3FB0.h"
#include "src/4BDC0.h"
#include "src/6BC0.h"
#include "src/E890.h"
#include "src/math_util.h"
#include "src/memory.h"
#include "src/fragments/43/fragment43.h"
#include "src/util.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/30640/func_8002FA40.s")
extern u32 D_83407B30;
void func_8002FA40(void) {
s32 var_s6;
u32* temp_s0;
u32 var_s0;
u32 var_s2;
u32 sp64;
u32 var_s5;
u32 sp5C;
s32 var_v0;
u32* val;
val = &D_83407B30;
var_s2 = 0;
var_s5 = 0;
main_pool_push_state('SNPM');
func_8004B1CC(0x4B);
FRAGMENT_LOAD(func_80004454, fragment43)();
FRAGMENT_LOAD(func_80004454, fragment34);
do {
temp_s0 = Util_ConvertAddrToVirtAddr(val);
var_s6 = 1;
main_pool_push_state('galy');
switch (var_s5) {
case 0:
var_v0 = 0;
if (*temp_s0 != 0) {
var_s0 = 1;
} else {
switch (var_s2) {
case 4:
var_s0 = 2;
break;
default:
var_s0 = 0;
if (var_s2 == 7) {
var_v0 = 1;
}
break;
}
}
sp64 = FRAGMENT_LOAD_AND_CALL(fragment42, var_s0, var_v0);
break;
case 1:
case 6:
FRAGMENT_LOAD(func_80004454, fragment2)();
ASSET_LOAD(D_3000000, _675FA0, 0);
FRAGMENT_LOAD(func_80004454, fragment3);
FRAGMENT_LOAD(func_80004454, fragment31);
if (var_s5 == 1) {
var_s0 = 0;
} else {
var_s0 = 1;
}
switch (FRAGMENT_LOAD_AND_CALL(fragment15, var_s0, 0)) {
case 1:
sp64 = 5;
break;
case 2:
if (var_s0 == 1) {
sp64 = 5;
} else {
sp64 = 2;
}
break;
default:
sp64 = 5;
break;
}
break;
case 2:
if (var_s2 == 4) {
var_s0 = 0;
} else {
var_s0 = 1;
}
sp64 = FRAGMENT_LOAD_AND_CALL(fragment45, var_s0, 0);
break;
case 3:
var_v0 = 1;
switch (var_s2) {
case 4:
var_s0 = sp5C;
var_v0 = 0;
break;
case 2:
var_s0 = 1;
break;
default:
if (*temp_s0 != 0) {
var_s0 = 2;
} else {
var_s0 = 0;
}
break;
}
sp64 = FRAGMENT_LOAD_AND_CALL(fragment44, var_s0, var_v0);
if (sp64 == 4) {
sp5C = var_s0;
}
break;
case 4:
FRAGMENT_LOAD_AND_CALL(fragment46, 0, 0);
sp64 = var_s2;
break;
case 5:
FRAGMENT_LOAD(func_80004454, fragment61);
switch (var_s2) {
case 1:
var_s0 = 1;
break;
case 6:
var_s0 = 2;
break;
default:
var_s0 = 0;
break;
}
sp64 = FRAGMENT_LOAD_AND_CALL(fragment47, var_s0, 0);
break;
case 7:
FRAGMENT_LOAD_AND_CALL(fragment49, 0, 0);
sp64 = 0;
break;
default:
var_s6 = 0;
break;
}
var_s2 = var_s5;
var_s5 = sp64;
main_pool_pop_state('galy');
} while (var_s6 != 0);
((ret_func_80004454)Util_ConvertAddrToVirtAddr(func_8340051C))();
main_pool_pop_state('SNPM');
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/30640/func_8002FF00.s")
@@ -60,7 +241,12 @@
#pragma GLOBAL_ASM("asm/us/nonmatchings/30640/func_80031910.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/30640/func_80031A6C.s")
f32 func_80031A6C(f32 arg0) {
if (arg0 < 0.0) {
arg0 = -arg0;
}
return arg0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/30640/func_80031A94.s")
@@ -74,6 +260,56 @@
#pragma GLOBAL_ASM("asm/us/nonmatchings/30640/func_80031DF8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/30640/func_80031EF4.s")
void func_80031EF4(MtxF* arg0, MtxF* arg1) {
f32 sp24 = sqrtf(SQ(arg1->mf[0][0]) + SQ(arg1->mf[0][1]) + SQ(arg1->mf[0][2]));
f32 sp20 = sqrtf(SQ(arg1->mf[1][0]) + SQ(arg1->mf[1][1]) + SQ(arg1->mf[1][2]));
f32 sp1C = sqrtf(SQ(arg1->mf[2][0]) + SQ(arg1->mf[2][1]) + SQ(arg1->mf[2][2]));
#pragma GLOBAL_ASM("asm/us/nonmatchings/30640/func_80032034.s")
arg0->mf[0][0] = arg1->mf[0][0] * sp24;
arg0->mf[0][1] = arg1->mf[1][0] * sp24;
arg0->mf[0][2] = arg1->mf[2][0] * sp24;
arg0->mf[0][3] = 0.0f;
arg0->mf[1][0] = arg1->mf[0][1] * sp20;
arg0->mf[1][1] = arg1->mf[1][1] * sp20;
arg0->mf[1][2] = arg1->mf[2][1] * sp20;
arg0->mf[1][3] = 0.0f;
arg0->mf[2][0] = arg1->mf[0][2] * sp1C;
arg0->mf[2][1] = arg1->mf[1][2] * sp1C;
arg0->mf[2][2] = arg1->mf[2][2] * sp1C;
arg0->mf[2][3] = 0.0f;
arg0->mf[3][0] = 0.0f;
arg0->mf[3][1] = 0.0f;
arg0->mf[3][2] = 0.0f;
arg0->mf[3][3] = 1.0f;
}
void func_80032034(MtxF* arg0, Vec3f* arg1) {
f32 temp_fa1;
f32 temp_fv0;
f32 temp_fv1;
f32 sp30;
f32 sp2C;
f32 sp28;
f32 sp24;
f32 sp20;
f32 sp1C;
temp_fv0 = arg0->mf[0][0];
temp_fv1 = arg0->mf[0][1];
temp_fa1 = arg0->mf[0][2];
sp30 = arg0->mf[1][0];
sp2C = arg0->mf[1][1];
sp28 = arg0->mf[1][2];
sp24 = arg0->mf[2][0];
sp20 = arg0->mf[2][1];
sp1C = arg0->mf[2][2];
arg1->x = sqrtf(SQ(temp_fv0) + SQ(temp_fv1) + SQ(temp_fa1));
arg1->y = sqrtf(SQ(sp30) + SQ(sp2C) + SQ(sp28));
arg1->z = sqrtf(SQ(sp24) + SQ(sp20) + SQ(sp1C));
}
+2 -1
View File
@@ -5,6 +5,7 @@
void func_8002FA40(void);
f32 func_80031A6C(f32);
void func_80031EF4(f32[4][4], Vec3f*);
void func_80031EF4(MtxF*, MtxF*);
void func_80032034(MtxF* arg0, Vec3f* arg1);
#endif // _30640_H_
+1
View File
@@ -6,6 +6,7 @@
void func_80038E98(s32, s32);
s32 func_80038F30(s32, s32);
s32 func_80039024(s32, s32, s32, s32, u32, s32);
void func_8003916C(s32, s32);
void func_800392A8(s32, s32);
s32 func_80039354(s32);
void func_800393DC(s32, s32);
+3 -3
View File
@@ -266,8 +266,8 @@ s32 func_80003A14(u8* arg0, s16 arg1, s16 arg2, s32 arg3) {
return 0;
}
void func_80003B04(s16 arg0) {
func_8000CDB8(arg0 << 7);
s32 func_80003B04(s16 arg0) {
return func_8000CDB8(arg0 << 7);
}
void func_80003B30(u8* arg0, u8* arg1, u8* arg2, s32 arg3) {
@@ -526,7 +526,7 @@ void func_800043BC(s32 arg0, Fragment* addr) {
}
}
void* func_80004454(s32 arg0, u8* romStart, u8* romEnd) {
ret_func_80004454 func_80004454(s32 arg0, u8* romStart, u8* romEnd) {
void* addr = func_80003DC4(romStart, romEnd, 0, 0);
if (addr != NULL) {
+4 -2
View File
@@ -76,6 +76,8 @@ typedef struct unk_func_80003680_sp90 {
/* 0x14 */ s32 unk_14;
} unk_func_80003680_sp90; // size >= 0x18
typedef void (*ret_func_80004454)(void);
s32 func_800033B0(u8* arg0);
void func_800033C8(unk_func_80003680_sp300* arg0, u8* arg1);
void func_80003558(UnkStruct80001380* arg0, unk_func_80003680_sp90* arg1);
@@ -86,7 +88,7 @@ void func_80003860(void);
void func_80003890(u8* in_header, u8* memory);
void func_80003964(u8* arg0, s32 arg1, s32 arg2, s32 arg3);
s32 func_80003A14(u8* arg0, s16 arg1, s16 arg2, s32 arg3);
void func_80003B04(s16 arg0);
s32 func_80003B04(s16 arg0);
void func_80003B30(u8* arg0, u8* arg1, u8* arg2, s32 arg3);
void func_80003BE0(u8* arg0, u8* arg1, u8* arg2);
void* func_80003C80(u8* addr, PRESJPEG* arg1, s32 side);
@@ -102,7 +104,7 @@ s32 func_80004258(s32 id, u8* rom_start, u8* rom_end, s32 arg3);
struct MainPoolBlock* func_800042E0(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
void func_80004364(u32 base_addr, u32 addr);
void func_800043BC(s32 arg0, Fragment* addr);
void* func_80004454(s32 arg0, u8* romStart, u8* romEnd);
ret_func_80004454 func_80004454(s32 arg0, u8* romStart, u8* romEnd);
void* func_800044A8(s32 arg0, s32 arg1, s32 arg2);
void* func_800044F4(u8* romStart, u8* romEnd, s32 arg2, s32 arg3);
void* func_80004660(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
+35 -3
View File
@@ -1,14 +1,46 @@
#include "45720.h"
extern u8 D_800FCEF0[2];
extern u32 D_800FCF00[2];
extern s16 D_800FCF1C[2];
extern s8 D_800785F0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/45720/func_80044B20.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/45720/func_80044CBC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/45720/func_80044D78.s")
void func_80044D78(u32 arg0, u32 arg1) {
u32 temp_a0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/45720/func_80044E54.s")
if (arg0 < 2) {
if (arg1 != 0) {
D_800FCF1C[arg0] = (f32)D_800FCF00[arg0] / arg1;
}
temp_a0 = osSetIntMask(1);
if (arg1 != 0) {
D_800FCEF0[arg0] = 5;
} else {
D_800FCEF0[arg0] = 1;
}
osSetIntMask(temp_a0);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/45720/func_80044E80.s")
s32 func_80044E54(s32 arg0) {
if (D_800FCEF0[arg0] == 2) {
return 0;
}
return 1;
}
void func_80044E80(s32 arg0) {
if (arg0 != 0) {
D_800785F0 = 0;
} else {
D_800785F0 = 1;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/45720/func_80044EA4.s")
+1 -1
View File
@@ -3,7 +3,7 @@
#include "global.h"
void func_80044D78(s32, s32);
void func_80044D78(u32, u32);
s32 func_80044E54(s32);
void func_80044E80(s32);
+194 -2
View File
@@ -1,4 +1,196 @@
#include "global.h"
#include "49790.h"
#include "src/38BB0.h"
#include "src/49790.h"
#include "src/4CBC0.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/49790/func_80048B90.s")
static s32 D_80078A30 = 0;
static s32 D_80078A34 = 0;
static s32 D_80078A38 = 0;
static s32 D_80078A3C = 0;
static s32 D_80078A40 = 0;
static s32 D_80078A44 = 0;
static s32 D_80078A48 = 0;
static s32 D_80078A4C = 0;
static u8 D_80078A50 = 0;
s32 func_80048B90(u32 arg0) {
u32 temp_v0_3;
s32 sp28;
f32 sp24;
temp_v0_3 = arg0 & 0xFFFF0000;
sp28 = 0x80;
sp24 = 0.0f;
if (temp_v0_3 == 0x01200000) {
return func_8004E304(arg0, 0, 0);
}
if (temp_v0_3 == 0x01100000) {
return func_8004DF94(arg0, 0, 0);
}
if (arg0 == 0xF) {
if (!(D_800FC820 & 0x80000000)) {
return 0;
}
D_80078A30 = func_80039024(D_800FF9C0, D_800FC688, 0xF, 0x70, 0x80, -1);
func_800392A8(D_80078E70, 0x28);
return D_80078A30;
}
if (arg0 == 0x30) {
arg0 = 0x26;
}
if (arg0 == 0x3C) {
if (D_80078A50 != 0) {
D_80078A50++;
if (D_80078A50 > 0) {
D_80078A50 = 0;
}
return 0;
}
D_80078A50++;
if (1) {}
arg0 = 5;
sp24 = -12.0f;
sp28 = 0x38;
}
switch (arg0) {
case 0x1:
func_800392A8(D_80078A34, 1);
break;
case 0x5:
case 0x6:
case 0x7:
case 0x9:
case 0xD:
case 0xE:
case 0x10:
case 0x11:
case 0x12:
case 0x13:
case 0x14:
case 0x15:
case 0x16:
case 0x17:
case 0x18:
case 0x19:
case 0x1A:
case 0x1B:
case 0x1C:
case 0x1D:
case 0x1E:
case 0x1F:
case 0x20:
case 0x21:
case 0x22:
case 0x23:
case 0x24:
case 0x25:
case 0x26:
case 0x27:
case 0x28:
case 0x29:
case 0x2F:
break;
case 0x2:
func_800392A8(D_80078A3C, 1);
break;
case 0x3:
func_800392A8(D_80078A38, 1);
break;
case 0x4:
func_800392A8(D_80078A40, 0x14);
break;
case 0x8:
func_800392A8(D_80078A44, 2);
break;
case 0x2C:
func_800392A8(D_80078A48, 2);
sp28 = 0xA0;
break;
case 0x2D:
func_800392A8(D_80078A48, 2);
break;
case 0x2E:
func_800392A8(D_80078A4C, 2);
break;
case 0xA:
sp28 = 0xE0;
break;
case 0x31:
arg0 -= 1;
break;
case 0xB:
case 0xC:
sp28 = 0xD0;
break;
case 0x2A:
case 0x2B:
func_80048B90(0x1B);
break;
case 0x32:
D_80078A30 = func_8004DDA4(0x01000001, 0, 0);
return D_80078A30;
case 0x33:
D_80078A30 = func_8004DDA4(0x01000002, 0, 0);
return D_80078A30;
default:
return 0;
}
D_80078A30 = func_80039024(D_800FC68C, D_800FC688, arg0, sp28, 0x80, -1);
if (sp24 != 0.0f) {
func_80039534(D_80078A30, sp24);
}
switch (arg0) {
case 1:
D_80078A34 = D_80078A30;
break;
case 2:
D_80078A3C = D_80078A30;
break;
case 3:
D_80078A38 = D_80078A30;
break;
case 4:
D_80078A40 = D_80078A30;
break;
case 8:
D_80078A44 = D_80078A30;
break;
case 44:
D_80078A48 = D_80078A30;
break;
case 45:
D_80078A4C = D_80078A30;
break;
}
return D_80078A30;
}
+1 -1
View File
@@ -3,7 +3,7 @@
#include "global.h"
s32 func_80048B90(s32);
s32 func_80048B90(u32);
#endif // _49790_H_
+31 -4
View File
@@ -1,9 +1,36 @@
#include "50860.h"
#include "45720.h"
#include "38BB0.h"
#include "3D140.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/50860/func_8004FC60.s")
void func_8004FC60(s32 arg0, s32 arg1) {
s32 i;
#pragma GLOBAL_ASM("asm/us/nonmatchings/50860/func_8004FCD8.s")
if (arg0 & 4) {
for (i = 0; i < 2; i++) {
func_80044D78(i, arg1);
}
arg0 &= ~4;
}
func_8003916C(arg0, arg1);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/50860/func_8004FD44.s")
void func_8004FCD8(s32 arg0) {
s32 i;
#pragma GLOBAL_ASM("asm/us/nonmatchings/50860/func_8004FD64.s")
D_8007840C = 0;
func_8003DB84(0);
func_8004FC60(3, arg0);
for (i = 0; i < 2; i++) {
func_80044D78(i, arg0);
}
}
void func_8004FD44(void) {
func_8004FCD8(1);
}
void func_8004FD64(s32 arg0) {
func_8004FCD8(arg0);
}
+1 -1
View File
@@ -3,7 +3,7 @@
#include "global.h"
void func_8000CDB8(s32);
s32 func_8000CDB8(s32);
s32 func_8000CFB0(s32);
#endif // _D470_H_
+10
View File
@@ -0,0 +1,10 @@
#ifndef _FRAGMENT43_H_
#define _FRAGMENT43_H_
#include "global.h"
void func_8340051C(void);
#endif // _FRAGMENT43_H_
+3 -3
View File
@@ -169,13 +169,13 @@ void func_86200020(unk_D_86203E50* arg0) {
void func_86200034(void) {
UNUSED s32 pad[3];
f32 spDC[4][4];
MtxF spDC;
Mtx sp98;
s32 i;
UNUSED s32 pad2[1];
func_80031EF4(spDC, &D_86203E3C->unk_064);
guMtxF2L(spDC, &sp98);
func_80031EF4(&spDC, &D_86203E3C->unk_064);
guMtxF2L(spDC.mf, &sp98);
for (i = 0; i < 4; i++) {
D_86204590 = &D_86203E50[i];
+5 -3
View File
@@ -7,6 +7,8 @@
#define MEMORY_POOL_LEFT 0
#define MEMORY_POOL_RIGHT 1
typedef void (*AllocateFunc)(struct MainPoolBlock*, u32);
// structs for the main pool.
typedef struct MainPoolState {
/* 0x00 */ s32 freeSpace;
@@ -18,7 +20,7 @@ typedef struct MainPoolState {
struct MainPoolBlock {
/* 0x00 */ struct MainPoolBlock *prev;
/* 0x04 */ struct MainPoolBlock *next;
/* 0x08 */ void (*func)(struct MainPoolBlock *block, s32 arg);
/* 0x08 */ AllocateFunc func;
/* 0x0C */ s32 arg; // passed into func as the 2nd argument.
};
@@ -51,7 +53,7 @@ struct MemoryPool {
void main_pool_init(void *start, void *end);
void *main_pool_alloc_from_pool(u32 size, u32 side);
u32 main_pool_free(void *addr, u32 runBlockFunc);
void *main_pool_alloc_with_func(u32 size, s32 side, s32 arg, void *func);
void *main_pool_alloc_with_func(u32 size, s32 side, s32 arg, AllocateFunc func);
void *main_pool_alloc(u32 size, s32 side);
u32 main_pool_try_free(void *addr);
void *main_pool_realloc(void *addr, size_t size);
@@ -59,7 +61,7 @@ u32 main_pool_get_available(void);
u32 main_pool_push_state(u32 arg);
u32 main_pool_pop_state(u32 arg);
void *main_pool_search(uintptr_t addr, s32 *argPtr);
void main_pool_set_func(void *block, s32 arg, void *func);
void main_pool_set_func(void *block, s32 arg, AllocateFunc func);
size_t main_pool_get_block_dist(struct MainPoolBlock *block);
struct MainPool *main_pool_get_pool(void);
+5 -5
View File
@@ -86,7 +86,7 @@ u32 main_pool_free(void* addr, u32 runBlockFunc) {
block = (sMemPool.listHeadL = sMemPool.listHeadL->prev);
if (runBlockFunc) {
// TODO: Fakematch
void (*func)(struct MainPoolBlock*, u32) = block->func;
AllocateFunc func = block->func;
if (func != 0) {
block->func((u8*)block + sizeof(struct MainPoolBlock), block->arg);
// TODO: fake here too
@@ -101,7 +101,7 @@ u32 main_pool_free(void* addr, u32 runBlockFunc) {
if (oldListHead >= block && oldListHead >= block) {
do {
if (runBlockFunc) {
void (*func)(struct MainPoolBlock*, u32) = block->func;
AllocateFunc func = block->func;
if (func != NULL) {
func((u8*)block + sizeof(struct MainPoolBlock), block->arg);
block = sMemPool.listHeadR;
@@ -122,7 +122,7 @@ u32 main_pool_free(void* addr, u32 runBlockFunc) {
* Manually allocate and initialize a block given a size and side and its
* function+arguments.
*/
void* main_pool_alloc_with_func(u32 size, s32 side, s32 arg, void* func) {
void* main_pool_alloc_with_func(u32 size, s32 side, s32 arg, AllocateFunc func) {
struct MainPoolBlock* addr;
osRecvMesg(&sMemPool.queue, NULL, OS_MESG_BLOCK);
@@ -182,7 +182,7 @@ void* main_pool_realloc(void* addr, size_t size) {
// is there enough room to expand/realloc the area?
if (diff >= size || sMemPool.available >= (size - diff)) {
s32 arg = prior->arg;
void* func = prior->func;
AllocateFunc func = prior->func;
main_pool_free(addr, FALSE); // do not run the func as we are merely reallocating it.
newaddr = main_pool_alloc_from_pool(size, MEMORY_POOL_LEFT);
main_pool_set_func(newaddr, arg, func);
@@ -377,7 +377,7 @@ void* main_pool_search(uintptr_t addr, s32* argPtr) {
/**
* Set the block function and its argument(s) for a given block.
*/
void main_pool_set_func(void* block, s32 arg, void* func) {
void main_pool_set_func(void* block, s32 arg, AllocateFunc func) {
struct MainPoolBlock* node = (void*)((uintptr_t)block - sizeof(struct MainPoolBlock));
node->func = func;
node->arg = arg;
+9 -3
View File
@@ -335,6 +335,9 @@
- [0x6FC00, data, rom_data_6FC00]
- [0x76260, .data, 29BA0]
- [0x76280, data, rom_data_76280]
- [0x79630, .data, 49790]
- [0x79660, data, rom_data_79660]
- [0x79AE0, .data, 4CBC0]
- [0x79C70, data, rom_data_79C70]
@@ -389,12 +392,12 @@
- [0x7C750, rodata, rom_rodata_7C750]
- [0x7CCA0, rodata, rom_rodata_7CCA0]
- [0x7CD10, rodata, rom_rodata_7CD10]
- [0x7CD40, rodata, rom_rodata_7CD40]
- [0x7CD40, .rodata, 26820]
- [0x7CEC0, .rodata, 29BA0]
- [0x7CFD0, rodata, rom_rodata_7CFD0]
- [0x7D030, rodata, rom_rodata_7D030]
- [0x7D040, rodata, rom_rodata_7D040]
- [0x7D0F0, rodata, rom_rodata_7D0F0]
- [0x7D0F0, .rodata, 30640]
- [0x7D110, rodata, rom_rodata_7D110]
- [0x7D1B0, rodata, rom_rodata_7D1B0]
- [0x7D230, rodata, rom_rodata_7D230]
@@ -402,7 +405,8 @@
- [0x7D3E0, rodata, rom_rodata_7D3E0]
- [0x7D880, rodata, rom_rodata_7D880]
- [0x7DF80, rodata, rom_rodata_7DF80]
- [0x7DFD0, rodata, rom_rodata_7DFD0]
- [0x7DFD0, .rodata, 49790]
- [0x7E0C0, rodata, rom_rodata_7E0C0]
- [0x7E0D0, rodata, rom_rodata_7E0D0]
- [0x7E0E0, .rodata, 4BA90]
- [0x7E110, .rodata, 4BDC0]
@@ -458,6 +462,8 @@
- {vram: 0x800A74C0, type: .bss, name: crash_screen}
- {vram: 0x800A7EA0, type: .bss, name: profiler}
- {vram: 0x800A8100, type: bss, name: unk_bss_2}
- {vram: 0x800AC880, type: .bss, name: 20330}
- {vram: 0x800AC890, type: bss, name: unk_bss_11}
- {vram: 0x800AE520, type: .bss, name: 29BA0}
- {vram: 0x800AF740, type: bss, name: unk_bss_7}
- {vram: 0x800FF990, type: .bss, name: 4B940}