misc documentation
This commit is contained in:
@@ -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){
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
@@ -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){
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
@@ -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
|
||||
){
|
@@ -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){}
|
@@ -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){
|
Reference in New Issue
Block a user