mirror of
https://github.com/pret/pokestadium.git
synced 2026-09-26 13:23:01 -04:00
various
This commit is contained in:
+2
-2
@@ -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
@@ -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
|
||||
|
||||
@@ -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[];
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+5
-4
@@ -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
@@ -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
@@ -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_
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "global.h"
|
||||
|
||||
s32 func_80048B90(s32);
|
||||
s32 func_80048B90(u32);
|
||||
|
||||
|
||||
#endif // _49790_H_
|
||||
|
||||
+31
-4
@@ -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
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void func_8000CDB8(s32);
|
||||
s32 func_8000CDB8(s32);
|
||||
s32 func_8000CFB0(s32);
|
||||
|
||||
#endif // _D470_H_
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#ifndef _FRAGMENT43_H_
|
||||
#define _FRAGMENT43_H_
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void func_8340051C(void);
|
||||
|
||||
#endif // _FRAGMENT43_H_
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user