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]