diff --git a/README.md b/README.md index 3921868e..8025fdd1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# banjo (91.8246%) +# banjo (91.9337%) diff --git a/progress/progress_core1.svg b/progress/progress_core1.svg index 130d4c41..01b58079 100644 --- a/progress/progress_core1.svg +++ b/progress/progress_core1.svg @@ -9,7 +9,7 @@ - + @@ -17,7 +17,7 @@ core1 - 84.1199% - 84.1199% + 84.3371% + 84.3371% \ No newline at end of file diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg index c9add18d..1f5adb30 100644 --- a/progress/progress_core2.svg +++ b/progress/progress_core2.svg @@ -9,7 +9,7 @@ - + @@ -17,7 +17,7 @@ core2 - 89.9820% - 89.9820% + 90.1172% + 90.1172% \ No newline at end of file diff --git a/progress/progress_total.svg b/progress/progress_total.svg index 7ea7f956..22f0d0ec 100644 --- a/progress/progress_total.svg +++ b/progress/progress_total.svg @@ -9,7 +9,7 @@ - + @@ -17,7 +17,7 @@ Banjo-Kazooie (us.v10) - 91.8246% - 91.8246% + 91.9337% + 91.9337% \ No newline at end of file diff --git a/src/core1/code_13990.c b/src/core1/code_13990.c index 2216920e..af196dc9 100644 --- a/src/core1/code_13990.c +++ b/src/core1/code_13990.c @@ -4,13 +4,18 @@ #include "ml/mtx.h" -extern Mtx *D_80282FD0; -extern Mtx_t D_80282810; + f32 func_80263FF0(f32); f32 cosf(f32); extern f64 D_80278220; +/*.bss*/ +Mtx_t D_80282810; +u8 pad_D_80282850[0x780]; +Mtx * D_80282FD0; + +/*.code*/ #ifndef NONMATCHING #pragma GLOBAL_ASM("asm/nonmatchings/core1/code_13990/func_802513B0.s") #else diff --git a/src/core1/code_15770.c b/src/core1/code_15770.c index c63a11fc..5176d225 100644 --- a/src/core1/code_15770.c +++ b/src/core1/code_15770.c @@ -2,7 +2,7 @@ #include "functions.h" #include "variables.h" -extern struct { +struct { u16 *unk0; int unk4; } D_80282FE0; diff --git a/src/core1/code_15B30.c b/src/core1/code_15B30.c index 7c82dea2..83fc118f 100644 --- a/src/core1/code_15B30.c +++ b/src/core1/code_15B30.c @@ -11,23 +11,27 @@ typedef struct { s32 unk14; }Struct_Core1_15B30; -extern Gfx *D_80276580[2]; -extern Mtx *D_80282FF0[2]; -extern Vtx *D_80282FF8[2]; -extern s32 D_80283000; -extern s32 D_80283004; -extern Struct_Core1_15B30 D_80283008[]; -extern s32 D_802831E8; -extern OSMesgQueue D_802831F0; -extern OSMesg D_80283208; -extern u16 D_8028320C; -extern u16 D_8028320E; -extern u16 D_80283210; -extern u16 D_80283212; -extern Gfx *D_80283214; - extern u8 D_803A5D00[2][0x1ecc0]; +/* .data */ +extern Gfx *D_80276580[2]; + +/* .bss */ +Mtx *D_80282FF0[2]; +Vtx *D_80282FF8[2]; +s32 D_80283000; +s32 D_80283004; +Struct_Core1_15B30 D_80283008[20]; +s32 D_802831E8; +OSMesgQueue D_802831F0; +OSMesg D_80283208; +u16 D_8028320C; +u16 D_8028320E; +u16 D_80283210; +u16 D_80283212; +Gfx *D_80283214; + +/* .h */ void func_80254348(void); void func_80254464(void); diff --git a/src/core1/code_18210.c b/src/core1/code_18210.c index f6e0f013..f94405dd 100644 --- a/src/core1/code_18210.c +++ b/src/core1/code_18210.c @@ -2,11 +2,11 @@ #include "functions.h" #include "variables.h" -extern u64 D_80283280[]; - -extern s32 D_80283380; -extern s32 D_80283384; -extern s32 D_80283388; +/* .bss */ +u8 D_80283280[0x100]; +s32 D_80283380; +s32 D_80283384; +s32 D_80283388; void func_80255C30(void) { D_80283384 = *(s32 *)0xA4000000 ^ -1; diff --git a/src/core1/code_1D5D0.c b/src/core1/code_1D5D0.c index 0cf244f1..bfe22a73 100644 --- a/src/core1/code_1D5D0.c +++ b/src/core1/code_1D5D0.c @@ -4,7 +4,13 @@ #include "SnS.h" #include "save.h" - +/* .bss */ +StopNSwop_Data snsParsedKeys; +struct GlobalSave gSaveData; +s32 snsMinKeyToParse; +s32 snsMaxKeyToParse; +s32 snsParsedCurrPos; +u32 snsBackedUpItems; void sns_init_parsing_params(s32 min, s32 max) { diff --git a/src/core1/done/code_1E360.c b/src/core1/done/code_1E360.c index 7db3a0f8..477e9a33 100644 --- a/src/core1/done/code_1E360.c +++ b/src/core1/done/code_1E360.c @@ -3,18 +3,20 @@ #include "variables.h" #include "SnS.h" -/** - * An index used to track the position in the incoming payload - * we should read the next key from. - */ -extern s32 snsPayloadInCurrPos; - +/* .data*/ /** * An index used to track the position in the outgoing payload * it should write the next key to. */ extern s32 snsPayloadOutCurrPos; +/*.bss*/ +/** + * An index used to track the position in the incoming payload + * we should read the next key from. + */ +s32 snsPayloadInCurrPos; + struct SnsPayload *snspayload_init_new_payload(struct SnsPayload *payload) { diff --git a/src/core1/done/gu/rotate.c b/src/core1/done/gu/rotate.c new file mode 100644 index 00000000..e6c66041 --- /dev/null +++ b/src/core1/done/gu/rotate.c @@ -0,0 +1,53 @@ +#include +#include "functions.h" +#include "variables.h" + +// extern f32 D_80285900; + +f32 sinf(f32); +f32 cosf(f32); + +// MATCHING but need to resolve core1 bss section for static D_80285900 +void guRotateF(float mf[4][4], float a, float x, float y, float z) +{ + static f32 D_80285900 = 3.1415926 / 180.0; + float sine; + float cosine; + float ab, bc, ca, t; + + + guNormalize(&x, &y, &z); + a *= D_80285900; + sine = sinf(a); + cosine = cosf(a); + t = (1-cosine); + ab = x*y*t; + bc = y*z*t; + ca = z*x*t; + + guMtxIdentF(mf); + + t = x*x; + mf[0][0] = t+cosine*(1-t); + mf[2][1] = bc-x*sine; + mf[1][2] = bc+x*sine; + + t = y*y; + mf[1][1] = t+cosine*(1-t); + mf[2][0] = ca+y*sine; + mf[0][2] = ca-y*sine; + + t = z*z; + mf[2][2] = t+cosine*(1-t); + mf[1][0] = ab-z*sine; + mf[0][1] = ab+z*sine; +} + +// MATCHING with -O3, need to resolve bss section +void guRotate(Mtx *m, float a, float x, float y, float z) +{ + float mf[4][4]; + + guRotateF(mf, a, x, y, z); + guMtxF2L(mf, m); +} diff --git a/src/core1/done/io/pimgr.c b/src/core1/done/io/pimgr.c index 1b8e3761..c9635f74 100644 --- a/src/core1/done/io/pimgr.c +++ b/src/core1/done/io/pimgr.c @@ -7,10 +7,12 @@ extern u32 __osPiAccessQueueEnabled; OSDevMgr __osPiDevMgr = {0}; OSPiHandle *__osPiTable = NULL; OSPiHandle *__osCurrentHandle[2] = {&CartRomHandle, &LeoDiskHandle}; -extern OSThread piThread; -extern char piThreadStack[OS_PIM_STACKSIZE]; -extern OSMesgQueue piEventQueue; -extern OSMesg piEventBuf; + +/* .bss */ +OSThread piThread; +char piThreadStack[OS_PIM_STACKSIZE]; +OSMesgQueue piEventQueue; +OSMesg piEventBuf; void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf, s32 cmdMsgCnt) { diff --git a/src/core1/done/io/sptask.c b/src/core1/done/io/sptask.c index c6339495..2051dfe8 100644 --- a/src/core1/done/io/sptask.c +++ b/src/core1/done/io/sptask.c @@ -5,7 +5,9 @@ { \ ptr = (void *)osVirtualToPhysical(ptr); \ } -extern OSTask tmp_task; // TODO bss (static) + +OSTask tmp_task; // TODO bss (static) + static OSTask *_VirtualToPhysicalTask(OSTask *intp) { OSTask *tp; diff --git a/src/core1/done/io/vimgr.c b/src/core1/done/io/vimgr.c index 358b3772..63804bbe 100644 --- a/src/core1/done/io/vimgr.c +++ b/src/core1/done/io/vimgr.c @@ -4,6 +4,8 @@ #include "osint.h" OSDevMgr __osViDevMgr = {0}; + +/* .bss */ /*static*/ OSThread viThread; /*static*/ unsigned char viThreadStack[OS_VIM_STACKSIZE]; /*static*/ OSMesgQueue viEventQueue; @@ -54,7 +56,7 @@ void osCreateViManager(OSPri pri) } } } -extern u16 retrace; +u16 retrace; static void viMgrMain(void *arg) { __OSViContext *vc; diff --git a/src/core1/done/os/seteventmesg.c b/src/core1/done/os/seteventmesg.c index 5911e2f5..a95b6158 100644 --- a/src/core1/done/os/seteventmesg.c +++ b/src/core1/done/os/seteventmesg.c @@ -1,5 +1,6 @@ #include #include "osint.h" + __OSEventState __osEventStateTab[OS_NUM_EVENTS]; void osSetEventMesg(OSEvent event, OSMesgQueue *mq, OSMesg msg) { diff --git a/src/core1/gu/rotate.c b/src/core1/gu/rotate.c deleted file mode 100644 index cd47f551..00000000 --- a/src/core1/gu/rotate.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include "functions.h" -#include "variables.h" - -extern f32 D_80285900; - -f32 sinf(f32); -f32 cosf(f32); - -#pragma GLOBAL_ASM("asm/nonmatchings/core1/gu/rotate/guRotateF.s") -// MATCHING but need to resolve core1 bss section for static D_80285900 -// void guRotateF(float mf[4][4], float a, float x, float y, float z) -// { -// static f32 D_80285900 = 3.1415926 / 180.0; -// float sine; -// float cosine; -// float ab, bc, ca, t; - - -// guNormalize(&x, &y, &z); -// a *= D_80285900; -// sine = sinf(a); -// cosine = cosf(a); -// t = (1-cosine); -// ab = x*y*t; -// bc = y*z*t; -// ca = z*x*t; - -// guMtxIdentF(mf); - -// t = x*x; -// mf[0][0] = t+cosine*(1-t); -// mf[2][1] = bc-x*sine; -// mf[1][2] = bc+x*sine; - -// t = y*y; -// mf[1][1] = t+cosine*(1-t); -// mf[2][0] = ca+y*sine; -// mf[0][2] = ca-y*sine; - -// t = z*z; -// mf[2][2] = t+cosine*(1-t); -// mf[1][0] = ab-z*sine; -// mf[0][1] = ab+z*sine; -// } - -#pragma GLOBAL_ASM("asm/nonmatchings/core1/gu/rotate/guRotate.s") -// MATCHING with -O3, need to resolve bss section -// void guRotate(Mtx *m, float a, float x, float y, float z) -// { -// float mf[4][4]; - -// guRotateF(mf, a, x, y, z); -// guMtxF2L(mf, m); -// } diff --git a/src/core1/memory.c b/src/core1/memory.c index 80449588..3b9c3b8d 100644 --- a/src/core1/memory.c +++ b/src/core1/memory.c @@ -19,7 +19,7 @@ extern void func_80253010(void *dest, void *src, s32 size); #define HEAP_SIZE 0x210520 #define LAST_HEAP_BLOCK HEAP_SIZE/sizeof(EmptyHeapBlock) - 1 -enum { +extern enum { HEAP_BLOCK_EMPTY = 0, HEAP_BLOCK_USED = 1, HEAP_BLOCK_PERM = 2 @@ -46,11 +46,7 @@ extern EmptyHeapBlock D_8023DA00; extern struct{ bool unk0; }D_802765B0; -extern void *D_80283224; -extern void *D_80283228; -extern s32 D_8028322C; -extern u32 heap_requested_size; -extern HeapHeader * D_80283234; + extern u32 heap_occupiedBytes; //occupied heap size extern u8 D_80276594; extern u8 D_80276598; @@ -61,8 +57,13 @@ extern void *D_802765A8; extern s32 D_802765AC; extern UNK_TYPE(void *) D_802765B4; -extern s32 D_80283220; -extern struct { +s32 D_80283220; +void *D_80283224; +void *D_80283228; +s32 D_8028322C; +u32 heap_requested_size; +HeapHeader * D_80283234; +struct { void *unk0[0x10]; void **unk40; }D_80283238; diff --git a/src/core1/os/initialize.c b/src/core1/os/initialize.c index 316a4df7..a721101e 100644 --- a/src/core1/os/initialize.c +++ b/src/core1/os/initialize.c @@ -20,6 +20,7 @@ OSTime osClockRate = OS_CLOCK_RATE; s32 osViClock = VI_NTSC_CLOCK; u32 __osShutdown = 0; u32 __OSGlobalIntMask = OS_IM_ALL; +/* .bss */ u32 __osFinalrom; void __osInitialize_common() diff --git a/src/core2/code_7AF80.c b/src/core2/code_7AF80.c index 5993074f..251c53d9 100644 --- a/src/core2/code_7AF80.c +++ b/src/core2/code_7AF80.c @@ -590,37 +590,35 @@ void * func_80303800(f32 volume_p1[3], f32 volume_p2[3], f32 arg2[3], u32 arg3) return NULL; } -//BKCollisionTri * -#ifndef NONMATCHING -BKCollisionTri * func_80303960(f32 volume_p1[3], f32 volume_p2[3], f32 radius, f32 arg3[3], s32 arg4, u32 flags); -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_80303960.s") -#else BKCollisionTri * func_80303960(f32 volume_p1[3], f32 volume_p2[3], f32 radius, f32 arg3[3], s32 arg4, u32 flags) { s32 cube_indx[3]; s32 min[3]; s32 max[3]; BKCollisionTri *temp_v0; BKCollisionTri *var_s5; + Cube *cube; var_s5 = NULL; cube_volumeToIndices(min, max, volume_p1, volume_p2, radius + D_80381FA0.unk4); + if(cube_indx); for(cube_indx[0] = min[0]; cube_indx[0] <= max[0]; cube_indx[0]++){ for(cube_indx[1] = min[1]; cube_indx[1] <= max[1]; cube_indx[1]++){ for(cube_indx[2] = min[2]; cube_indx[2] <= max[2]; cube_indx[2]++){ - temp_v0 = func_80331638(cube_atIndices(cube_indx), volume_p1, volume_p2, radius, arg3, arg4, flags); + cube = cube_atIndices(cube_indx); + temp_v0 = func_80331638(cube, volume_p1, volume_p2, radius, arg3, arg4, flags); if (temp_v0 != NULL) { var_s5 = temp_v0; } } } } - temp_v0 = func_80331638(func_8030364C(), volume_p1, volume_p2, radius, arg3, arg4, flags); + cube = func_8030364C(); + temp_v0 = func_80331638(cube, volume_p1, volume_p2, radius, arg3, arg4, flags); if (temp_v0 != NULL) { var_s5 = temp_v0; } return var_s5; } -#endif //BKCollisionTri * BKCollisionTri * func_80303AF0(f32 position[3], f32 radius, f32 arg2[3], u32 arg3) { @@ -1777,13 +1775,57 @@ s32 func_80307164(Struct_core2_7AF80_2 *arg0) { return -1; } -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_80307258.s") +s32 func_80307258(f32 arg0[3], s32 arg1, s32 arg2) { + f32 temp_f14; + f32 temp_f2; + Struct_core2_7AF80_2 * temp_a0; + Struct_core2_7AF80_2 *temp_a3; + Struct_core2_7AF80_2 *var_v1; + Struct_core2_7AF80_1 *temp_v0; + + temp_v0 = &D_8036A9BC[arg1]; + var_v1 = temp_v0->unk8 + arg2; + if (((arg0[0] - var_v1->unk0[0]) * (arg0[0] - var_v1->unk0[0])) + (((arg0[2] - var_v1->unk0[2]) * (arg0[2] - var_v1->unk0[2]))) < (var_v1->unkC * var_v1->unkC)) { + return arg2; + } + temp_a0 = temp_v0->unk8 + temp_v0->unk0; + for (var_v1 = temp_v0->unk8; var_v1 < temp_a0; var_v1++) { + temp_f2 = arg0[2] - var_v1->unk0[2]; + temp_f14 = arg0[0] - var_v1->unk0[0]; + if (((temp_f2 * temp_f2) + (temp_f14 * temp_f14)) < (var_v1->unkC * var_v1->unkC)) { + return var_v1 - temp_v0->unk8; + } + } + return -1; +} bool func_80307390(s32 arg0, s32 arg1) { return (D_8036A9BC + arg0)->unk8[arg1].unk10_0; } -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_803073CC.s") +s32 func_803073CC(f32 arg0[3], s32 arg1, s32 arg2) { + f32 temp_f14; + f32 temp_f2; + Struct_core2_7AF80_2 * temp_a0; + Struct_core2_7AF80_2 *temp_a3; + Struct_core2_7AF80_2 *var_v1; + Struct_core2_7AF80_1 *temp_v0; + + temp_v0 = &D_8036A9D4[arg1]; + var_v1 = temp_v0->unk8 + arg2; + if (((arg0[0] - var_v1->unk0[0]) * (arg0[0] - var_v1->unk0[0])) + (((arg0[2] - var_v1->unk0[2]) * (arg0[2] - var_v1->unk0[2]))) < (var_v1->unkC * var_v1->unkC)) { + return arg2; + } + temp_a0 = temp_v0->unk8 + temp_v0->unk0; + for (var_v1 = temp_v0->unk8; var_v1 < temp_a0; var_v1++) { + temp_f2 = arg0[2] - var_v1->unk0[2]; + temp_f14 = arg0[0] - var_v1->unk0[0]; + if (((temp_f2 * temp_f2) + (temp_f14 * temp_f14)) < (var_v1->unkC * var_v1->unkC)) { + return var_v1 - temp_v0->unk8; + } + } + return -1; +} #pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_80307504.s") // s32 func_80307504(f32 arg0[3], s32 arg1, s32 arg2, s32 arg3, s32 arg4) { diff --git a/src/core2/code_A5BC0.c b/src/core2/code_A5BC0.c index 40444db5..d175e8b5 100644 --- a/src/core2/code_A5BC0.c +++ b/src/core2/code_A5BC0.c @@ -42,6 +42,7 @@ typedef union{ typedef bool( *Method_Core2_A5BC0)(NodeProp *, s32); +s32 func_80330974(ActorMarker *marker, s32 arg1, f32 arg2, s32 arg3); s32 func_80320DB0(f32[3], f32, f32[3], u32); extern void func_80320EB0(ActorMarker *, f32, s32); extern void func_80320ED8(ActorMarker *, f32, s32); @@ -51,13 +52,15 @@ void func_8032CD60(Prop *); f32 func_8033A244(f32); void func_8032F64C(f32 *pos, ActorMarker * marker); + /* .data */ extern s32 D_8036E7B0; extern ModelCache *modelCache; //D_8036E7C0 //model pointer array pointer extern u8 *D_8036E7C4; extern ActorMarker *D_8036E7C8; -extern s16 D_8036E7E0[]; -extern s16 D_8036E7FC[]; +extern Struct6Cs D_8036E7D0; //= {NULL, NULL, NULL, func_80330974}; +extern s16 D_8036E7E0[];//= {0x2D2, 0x2DD, 0x580, 0x6D1, 0x6D6, 0x6D7, 0x364, 0x2E8, 0x309, 0x30A, 0x704, 0x30D, 0x6C7, -1}; +extern s16 D_8036E7FC[]; //={-1}; //extern s32 D_8036E800; // extern u32 D_8036E804[8]; @@ -969,12 +972,8 @@ void func_8032F194(ActorMarker *marker, s32 position[3], Cube *cube) { #ifndef NONMATCHING #pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_8032F21C.s") #else -s32 func_8032F21C(Cube *cube, s32 position[3], ActorMarker *marker, bool arg3) { +void func_8032F21C(Cube *cube, s32 position[3], ActorMarker *marker, bool arg3) { ActorProp *sp1C; - u8 temp_t0; - u8 temp_t2; - u8 temp_t6; - u8 temp_t8; sp1C = func_8032D80C(cube); sp1C->unk8_0 = TRUE; @@ -982,8 +981,8 @@ s32 func_8032F21C(Cube *cube, s32 position[3], ActorMarker *marker, bool arg3) { sp1C->y = (s16) position[1]; sp1C->z = (s16) position[2]; sp1C->marker = marker; - sp1C->unk8_15 = 0; sp1C->unk8_1 = arg3; + sp1C->unk8_15 = 0; sp1C->unk8_5 = FALSE; sp1C->unk8_10 = (func_802E4A08(position)) ? 0xF : (u8)(randf() * 32); @@ -1460,8 +1459,9 @@ s32 func_80330974(ActorMarker *marker, s32 arg1, f32 arg2, s32 arg3) { return 0; } - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_80330B10.s") +Struct6Cs *func_80330B10(void){ + return &D_8036E7D0; +} //marker_loadModelBin BKModelBin *func_80330B1C(ActorMarker *this){ @@ -1589,6 +1589,7 @@ s32 func_80330F94(NodeProp *arg0, s32 arg1[3]){ #pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_80330FC4.s") + void func_80330FCC(ActorMarker *marker, s32 arg1[3]){ arg1[0] = marker->propPtr->x; arg1[1] = marker->propPtr->y; diff --git a/src/core2/code_B6EA0.h b/src/core2/code_B6EA0.h index f4e30811..9835bedb 100644 --- a/src/core2/code_B6EA0.h +++ b/src/core2/code_B6EA0.h @@ -7,7 +7,7 @@ typedef s32 (*FuncUnk40)(ActorMarker *, s32, f32[3]); -typedef struct particle_struct_0_s{ +typedef struct particle_struct_1_s{ f32 unk0[3]; f32 unkC[3]; u8 pad18[8]; @@ -24,6 +24,29 @@ typedef struct particle_struct_0_s{ u8 unk45; u8 unk46; u8 unk47; +} ParticleStruct1s; + +typedef struct particle_struct_0_s{ + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; + f32 unk14; + u8 pad18[8]; + s32 unk20; + s32 unk24; + s32 unk28; + u8 pad24[0x4]; + ActorMarker *marker_30; + struct54s *unk34; + ActorMarker *unk38; + s32 unk3C; + FuncUnk40 unk40; + u8 unk44; + u8 unk45; + u8 unk46; + u8 unk47; } ParticleStruct0s; ActorMarker *func_8033E864(void); diff --git a/src/core2/code_CD6E0.c b/src/core2/code_CD6E0.c index 545e8c3a..185172d0 100644 --- a/src/core2/code_CD6E0.c +++ b/src/core2/code_CD6E0.c @@ -30,7 +30,7 @@ void func_803546E8(void) { u8 sp4F; struct54s* sp48; u8 sp47; - ParticleStruct0s* temp_s0; + ParticleStruct1s* temp_s0; f32 sp34[3]; f32 sp28[3]; @@ -64,7 +64,7 @@ void func_803546E8(void) { } void func_8035489C(void) { - ParticleStruct0s* temp_s0; + ParticleStruct1s* temp_s0; u8 temp_v0; f32 playerVelocity[3]; f32 playerPosition[3]; @@ -98,7 +98,7 @@ void func_80354998(void) { ActorMarker *sp50; struct54s *sp4C; u8 sp4B; - ParticleStruct0s *temp_s0; + ParticleStruct1s *temp_s0; f32 sp38[3]; f32 sp2C[3]; s32 sp28; @@ -170,7 +170,7 @@ void func_80354998(void) { } void func_80354C18(void) { - ParticleStruct0s* temp_s0; + ParticleStruct1s* temp_s0; s32 pad; ActorMarker *sp4C; u8 sp4B; @@ -221,7 +221,7 @@ void func_80354C18(void) { void func_80354DC8(void){} void func_80354DD0(void) { - ParticleStruct0s* temp_s0; + ParticleStruct1s* temp_s0; struct54s* sp40; u8 sp3F; u8 pad3C[3]; @@ -253,7 +253,7 @@ void func_80354DD0(void) { } void func_80354EEC(void) { - ParticleStruct0s* temp_s0; + ParticleStruct1s* temp_s0; s32 pad; ActorMarker *sp3C; FuncUnk40 sp38; @@ -293,7 +293,7 @@ void func_8035500C(void) { u8 sp47; struct54s* sp40; u8 sp3F; - ParticleStruct0s* temp_s0; + ParticleStruct1s* temp_s0; f32 sp2C[3]; f32 sp20[3]; @@ -322,7 +322,7 @@ void func_8035500C(void) { } void func_80355134(void) { - ParticleStruct0s* temp_s0; + ParticleStruct1s* temp_s0; u8 temp_s1; ActorMarker *sp3C; FuncUnk40 sp38; @@ -364,7 +364,7 @@ void func_8035529C(void) { u8 sp4F; struct54s* sp48; u8 sp47; - ParticleStruct0s* sp40; + ParticleStruct1s* sp40; f32 sp34[3]; f32 sp28[3]; @@ -393,7 +393,7 @@ void func_8035529C(void) { } void func_803553E8(void) { - ParticleStruct0s* temp_s0; + ParticleStruct1s* temp_s0; u8 temp_s1; ActorMarker *sp3C; FuncUnk40 sp38; @@ -436,7 +436,7 @@ void func_80355550(void) { u8 sp3F; struct54s *sp38; u8 sp37; - ParticleStruct0s *sp30; + ParticleStruct1s *sp30; f32 sp24[3]; f32 sp18[3]; @@ -474,7 +474,7 @@ void func_80355550(void) { } void func_8035570C(void) { - ParticleStruct0s* temp_s0; + ParticleStruct1s* temp_s0; u8 temp_s1; ActorMarker *sp3C; FuncUnk40 sp38; @@ -517,7 +517,7 @@ void func_80355864(void) { static s32 D_803863E4; f32 var_f2; Actor *sp4C; - ParticleStruct0s *sp48; + ParticleStruct1s *sp48; s32 sp44; f32 sp38[3]; f32 sp2C[3]; @@ -559,7 +559,7 @@ void func_80355864(void) { } void func_80355B00(void) { - ParticleStruct0s *sp44; + ParticleStruct1s *sp44; u8 sp43; ActorMarker *pad40; Actor *sp38; diff --git a/src/core2/gc/pauseMenu.c b/src/core2/gc/pauseMenu.c index 3b259f1c..4c7b0bef 100644 --- a/src/core2/gc/pauseMenu.c +++ b/src/core2/gc/pauseMenu.c @@ -802,24 +802,17 @@ s32 gcpausemenu_getMaxPage(void){ return D_80383010.page_cnt; } -#ifndef NONMATCHING -void gcpausemenu_getNextPage(s32); -#pragma GLOBAL_ASM("asm/nonmatchings/core2/gc/pauseMenu/gcpausemenu_getNextPage.s") -#else void gcpausemenu_getNextPage(s32 arg0) { D_80383010.unk9 = D_80383010.selection; do{ D_80383010.unk9 += arg0; + if((D_80383010.unk39 != 0) && (D_80383010.unk9 == 0xC)) + break; } - while(((D_80383010.unk39 == 0) || (D_80383010.unk9 != 0xC)) - && (D_80383010.unk9 != 0) - && itemscore_timeScores_get(D_8036C58C[D_80383010.unk9].level_id) == 0 - ); + while( (D_80383010.unk9 != 0) && itemscore_timeScores_get(D_8036C58C[D_80383010.unk9].level_id) == 0); gcPauseMenu_setState((D_80383010.unk9 == 0xC) ? 0xA : 0xC); D_80383010.unk7 = 6; } -#endif - void gcpausemenu_updateBButtonAndJoystickSprites(void) { f32 temp_f12; diff --git a/subyaml/core1.us.v10.yaml b/subyaml/core1.us.v10.yaml index c67e6e7c..38132042 100644 --- a/subyaml/core1.us.v10.yaml +++ b/subyaml/core1.us.v10.yaml @@ -160,7 +160,7 @@ segments: - [0x28AD0, c, done/io/viblack] #DONE - [0x28B40, c, done/gu/ortho] #DONE - [0x28D00, c, done/gu/translate] #DONE - - [0x28DA0, c, gu/rotate] + - [0x28DA0, c, done/gu/rotate] - [0x28F90, c, done/io/contreaddata] #DONE - [0x291F0, c, done/io/controller] #DONE - [0x295B0, c, done/io/contsetch] #DONE @@ -307,7 +307,7 @@ segments: - [0x3B190, .rodata, done/gu/sinf] - [0x3B1E0, .rodata, done/audio/cents2ratio] - [0x3B1F0, bin, data_3B1F0] # .rodata, ultra/setintmask] # splat bug preventing this from linking correctly - - [0x3B2C0, bin, data_3B2C0] # .rodata, gu/rotate] # need to resolve .data section first + - [0x3B2C0, .rodata, done/gu/rotate] # need to resolve .data section first - [0x3B2D0, .rodata, done/audio/cseq] - [0x3B2E0, .rodata, done/audio/drvrNew] - [0x3B300, .rodata, done/audio/reverb] @@ -342,4 +342,17 @@ segments: - [0x3c710, .bss, code_12F10] - [0x3c710, .bss, code_13640] - [0x3c710, .bss, code_136D0] + - [0x3c710, .bss, code_13990] + - [0x3c710, .bss, code_15770] + - [0x3c710, .bss, code_15B30] + - [0x3c710, .bss, memory] + - [0x3c710, .bss, code_18210] + - [0x3c710, .bss, code_1D5D0] + - [0x3c710, .bss, done/code_1E360] + - [0x3c710, .bss, os/initialize] + - [0x3c710, .bss, done/io/pimgr] + - [0x3c710, .bss, done/io/sptask] + - [0x3c710, .bss, done/os/seteventmesg] + - [0x3c710, .bss, done/io/vimgr] + - [0x3c710, .bss, done/gu/rotate] - [0x3c710] # core1 end diff --git a/subyaml/core2.us.v10.yaml b/subyaml/core2.us.v10.yaml index 90799fac..56e009c0 100644 --- a/subyaml/core2.us.v10.yaml +++ b/subyaml/core2.us.v10.yaml @@ -295,7 +295,7 @@ segments: - [0x857B0, c, code_857B0] #DONE - [0x85800, c, code_85800] #DONE - [0x87E30, c, code_87E30] - - [0x8A7B0, c, gc/pauseMenu] + - [0x8A7B0, c, gc/pauseMenu] #DONE - [0x8DC20, c, code_8DC20] - [0x8E270, c, gc/zoombox] #DONE - [0x91E10, c, code_91E10]