diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg
index ace5963a..880622a1 100644
--- a/progress/progress_core2.svg
+++ b/progress/progress_core2.svg
@@ -17,7 +17,7 @@
core2
- 75.5725%
- 75.5725%
+ 75.7777%
+ 75.7777%
\ No newline at end of file
diff --git a/progress/progress_total.svg b/progress/progress_total.svg
index 2577081f..9544e88b 100644
--- a/progress/progress_total.svg
+++ b/progress/progress_total.svg
@@ -17,7 +17,7 @@
Banjo-Kazooie (us.v10)
- 80.7765%
- 80.7765%
+ 80.8942%
+ 80.8942%
\ No newline at end of file
diff --git a/src/core2/code_BEF20.c b/src/core2/code_BEF20.c
index df84d79b..4ea68f75 100644
--- a/src/core2/code_BEF20.c
+++ b/src/core2/code_BEF20.c
@@ -14,8 +14,10 @@ extern s32 D_80385FE0;
extern s32 D_80385FE4;
extern s32 D_80385FE8;
extern f32 D_80385FEC;
-extern u8 D_80385FF0[];
+extern u8 D_80385FF0[];
extern f32 D_80386000[];
+extern s32 D_80386038;
+extern s32 D_80386068;
void func_80345EB0(enum item_e item){
if(func_802FAFE8(item)){
@@ -386,7 +388,6 @@ s32 notescore_getLevelScore(enum level_e lvl_id){
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_8034722C.s")
extern u8 D_80386060[]; //saved item array
-extern s32 D_80385F68;
//itemscore_getSavedItemArray
void func_80347630(s32 *size, u8 **buffer){
@@ -405,56 +406,57 @@ void func_80347630(s32 *size, u8 **buffer){
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_8034789C.s")
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347958.s")
+void func_80347958(void){
+ func_8034789C();
+ D_80385F30[ITEM_14_HEALTH] = D_80385F30[ITEM_15_HEALTH_TOTAL];
+}
void func_80347984(void){}
void func_8034798C(void){
- D_80385F68 = jiggyscore_leveltotal(level_get());
+ D_80385F30[ITEM_E_JIGGY] = jiggyscore_leveltotal(level_get());
func_802FA5D0();
}
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_803479C0.s")
-
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347A14.s")
-
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347A4C.s")
-
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347A70.s")
-
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347A7C.s")
-
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347AA8.s")
-
-/// =============== BREAK?????
-extern void func_80329904(ActorMarker *, s32, f32 *);
-
-void func_80347B10(Struct81s *arg0){
- Actor *actor;
- actor = func_802C937C(0x10, arg0->position);
- actor->unk54 = 3.0f;
- func_803333DC(arg0, actor);
+//restore item counts from savestate
+void func_803479C0(u8 *arg0){
+ D_80385F30[ITEM_1C_MUMBO_TOKEN] = D_80385F30[ITEM_25_MUMBO_TOKEN_TOTAL] = arg0[0];
+ D_80385F30[ITEM_D_EGGS] = arg0[1];
+ D_80385F30[ITEM_F_RED_FEATHER] = arg0[2];
+ D_80385F30[ITEM_10_GOLD_FEATHER] = arg0[3];
+ D_80385F30[ITEM_26_JIGGY_TOTAL] = D_80385F30[ITEM_2B_UNKNOWN] = arg0[4];
+ func_802FA5D0();
}
-void func_80347B54(Struct81s *arg0){
- func_802C3C88((GenMethod_1)func_80347B10, reinterpret_cast(s32, arg0));
-}
-void func_80347B80(Struct81s *arg0) {
- Actor *sp1C;
- Actor *temp_v0;
-
- sp1C = marker_getActor(arg0->marker);
- if (sp1C->unk54 > 0.0) {
- if (randf() < ((sp1C->unk54 / 3.0) * 2)) {
- func_8033E73C(arg0->marker, 5, func_80329904);
- func_8033E3F0(0xF, ((ActorMarker *)arg0->marker)->unk14_21);
- // func_8033E3F0(0xF, arg0->marker->unk14_21);
- }
- sp1C->unk54 -= time_getDelta();
+void func_80347A14(s32 arg0){
+ if(arg0){
+ D_80386038--;
+ }
+ else{
+ D_80386038++;
}
}
-void func_80347C5C(Struct81s *arg0, Gfx **arg1, Mtx **arg2, Vtx **arg3){}
+bool func_80347A4C(void){
+ return (D_80386038 != 0) ? FALSE : TRUE;
+}
-void func_80347C70(Struct81s *arg0){}
\ No newline at end of file
+void func_80347A70(void){
+ D_80386038 = 0;
+}
+
+void func_80347A7C(void){
+ func_80320748();
+ D_80386068 = item_getCount(ITEM_16_LIFE);
+}
+
+void func_80347AA8(void) {
+ func_80320798();
+ func_803204E4(0x1F, FALSE);
+ func_803204E4(0x20, FALSE);
+ func_803204E4(0xC1, FALSE);
+ func_803204E4(0xC0, FALSE);
+ item_set(ITEM_16_LIFE, D_80386068);
+ func_802FA5D0();
+}
diff --git a/src/core2/code_C0B80.c b/src/core2/code_C0B80.c
new file mode 100644
index 00000000..0af74125
--- /dev/null
+++ b/src/core2/code_C0B80.c
@@ -0,0 +1,35 @@
+#include
+#include "functions.h"
+#include "variables.h"
+
+extern void func_80329904(ActorMarker *, s32, f32 *);
+
+void func_80347B10(Struct81s *arg0){
+ Actor *actor;
+ actor = func_802C937C(0x10, arg0->position);
+ actor->unk54 = 3.0f;
+ func_803333DC(arg0, actor);
+}
+
+void func_80347B54(Struct81s *arg0){
+ func_802C3C88((GenMethod_1)func_80347B10, reinterpret_cast(s32, arg0));
+}
+
+void func_80347B80(Struct81s *arg0) {
+ Actor *sp1C;
+ Actor *temp_v0;
+
+ sp1C = marker_getActor(arg0->marker);
+ if (sp1C->unk54 > 0.0) {
+ if (randf() < ((sp1C->unk54 / 3.0) * 2)) {
+ func_8033E73C(arg0->marker, 5, func_80329904);
+ func_8033E3F0(0xF, ((ActorMarker *)arg0->marker)->unk14_21);
+ // func_8033E3F0(0xF, arg0->marker->unk14_21);
+ }
+ sp1C->unk54 -= time_getDelta();
+ }
+}
+
+void func_80347C5C(Struct81s *arg0, Gfx **arg1, Mtx **arg2, Vtx **arg3){}
+
+void func_80347C70(Struct81s *arg0){}
diff --git a/src/core2/code_CB050.c b/src/core2/code_CB050.c
index 33c61649..44297048 100644
--- a/src/core2/code_CB050.c
+++ b/src/core2/code_CB050.c
@@ -2,7 +2,130 @@
#include "functions.h"
#include "variables.h"
+extern f32 func_80258780(f32[3], f32[3]);
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_CB050/func_80351FE0.s")
+typedef struct{
+ f32 unk0;
+ f32 unk4[3];
+ f32 unk10[3];
+ f32 unk1C[3];
+ f32 unk28[3];
+ f32 unk34[3];
+ f32 unk40[3];
+ f32 unk4C[3];
+ f32 unk58[3];
+ f32 unk64;
+ f32 unk68;
+ s32 unk6C;
+}Struct_core2_CB050_0;
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_CB050/func_80352114.s")
+/* .code */
+void func_80351FE0(Struct_core2_CB050_0 *arg0, Struct68s *arg1) {
+ f32 sp3C[3];
+ f32 sp30[3];
+ f32 sp24[3];
+
+ arg0->unk0 = randf2(80.0f, 100.0f);
+ arg0->unk4[0] = arg0->unk4[1] = arg0->unk4[2] = 0.0f;
+ arg0->unk10[0] = arg0->unk10[1] = arg0->unk10[2] = 0.0f;
+ arg0->unk1C[0] = arg0->unk1C[1] = arg0->unk1C[2] = 0.0f;
+ arg0->unk28[0] = arg0->unk28[1] = arg0->unk28[2] = 0.0f;
+ arg0->unk34[0] = arg0->unk34[1] = arg0->unk34[2] = 0.0f;
+ arg0->unk40[0] = arg0->unk40[1] = arg0->unk40[2] = 0.0f;
+ func_8035179C(arg1, arg0->unk4C);
+ func_80351814(arg1, arg0->unk58);
+ arg0->unk64 = 0.0f;
+ arg0->unk6C = 0;
+ if (map_get() == MAP_22_CC_INSIDE_CLANKER) {
+ sp3C[0] = arg0->unk4C[0];
+ sp3C[1] = arg0->unk4C[1] + 1000.0f;
+ sp3C[2] = arg0->unk4C[2];
+
+ sp30[0] = arg0->unk4C[0];
+ sp30[1] = arg0->unk4C[1] - 200.0f;
+ sp30[2] = arg0->unk4C[2];
+
+ if (func_80309B48(sp3C, sp30, sp24, 0xF800FF0F)) {
+ arg0->unk68 = arg0->unk4C[1] - sp30[1];
+ }
+ }
+}
+
+void func_80352114(Struct_core2_CB050_0 *arg0, s32 arg1, f32 arg2) {
+ f32 sp6C[3];
+ f32 player_position[3];
+ s32 pad;
+ f32 sp58;
+ f32 sp54;
+ f32 sp50;
+ f32 temp_f0;
+ f32 sp40[3];
+ f32 sp34[3];
+ f32 sp28[3];
+
+ arg0->unk64 = (f32) (arg0->unk64 + arg2);
+ player_getPosition(player_position);
+ if( (func_80294660() == 0x100)
+ && func_8028F20C()
+ && (func_80258780(player_position, arg0->unk4C) < 50000.0f)
+ ) {
+ sp58 = arg0->unk4C[0] - player_position[0];
+ sp54 = arg0->unk4C[2] - player_position[2];
+ sp50 = cosf((arg0->unk58[1] * M_PI) / 180.0);
+ temp_f0 = sinf((arg0->unk58[1] * M_PI) / 180.0);
+ arg0->unk1C[0] = -((sp58 * temp_f0) + (sp54 * sp50)) / 4;
+ arg0->unk1C[2] = ((sp58 * sp50) - (sp54 * temp_f0)) / 4;
+ if (arg0->unk6C) {
+ if (arg0->unk34[1] < -20.0f) {
+ arg0->unk40[1] = -7.0f;
+ }
+ } else {
+ arg0->unk40[1] = -32.0f;
+ }
+ arg0->unk6C = TRUE;
+
+ } else {
+ arg0->unk1C[0] = arg0->unk1C[1] = arg0->unk1C[2] = 0.0f;
+ if (!arg0->unk6C) {
+ if (arg0->unk34[1] > 5.0f) {
+ arg0->unk40[1] = 0.0f;
+ }
+ } else {
+ arg0->unk40[1] = 10.0f;
+ }
+ arg0->unk6C = FALSE;
+ }
+ arg0->unk28[1] = sinf(((arg0->unk64 * arg0->unk0) / 180.0) * RARE_PI) * 10.0f;
+ arg0->unk4[0] = cosf(((arg0->unk64 * arg0->unk0) / 180.0) * RARE_PI) * 4.5;
+ arg0->unk4[1] = sinf(((arg0->unk64 * arg0->unk0) / 180.0) * RARE_PI) * 2;
+ if (map_get() == MAP_22_CC_INSIDE_CLANKER) {
+ sp40[0] = arg0->unk4C[0];
+ sp40[1] = arg0->unk4C[1] + 1000.0f;
+ sp40[2] = arg0->unk4C[2];
+
+ sp34[0] = arg0->unk4C[0];
+ sp34[1] = arg0->unk4C[1] - 200.0f;
+ sp34[2] = arg0->unk4C[2];
+ if (func_80309B48(sp40, sp34, sp28, 0xF800FF0F)) {
+ arg0->unk4C[1] = sp34[1] + arg0->unk68;
+ }
+ }
+ sp6C[0] = arg0->unk4C[0] + arg0->unk34[0];
+ sp6C[1] = arg0->unk4C[1] + arg0->unk34[1];
+ sp6C[2] = arg0->unk4C[2] + arg0->unk34[2];
+ sp6C[0] = sp6C[0] + arg0->unk28[0];
+ sp6C[1] = sp6C[1] + arg0->unk28[1];
+ sp6C[2] = sp6C[2] + arg0->unk28[2];
+ func_80351B28(arg1, sp6C);
+
+ arg0->unk10[2] += (arg0->unk1C[2] - arg0->unk10[2]) * 0.075;
+ arg0->unk10[0] += (arg0->unk1C[0] - arg0->unk10[0]) * 0.075;
+ arg0->unk34[1] += (arg0->unk40[1] - arg0->unk34[1]) * 0.2;
+ sp6C[0] = arg0->unk58[0] + arg0->unk4[0];
+ sp6C[1] = arg0->unk58[1] + arg0->unk4[1];
+ sp6C[2] = arg0->unk58[2] + arg0->unk4[2];
+ sp6C[0] = sp6C[0] + arg0->unk10[0];
+ sp6C[1] = sp6C[1] + arg0->unk10[1];
+ sp6C[2] = sp6C[2] + arg0->unk10[2];
+ func_80351C2C(arg1, sp6C);
+}
diff --git a/subyaml/core2.us.v10.yaml b/subyaml/core2.us.v10.yaml
index 77623b3a..1b39d0bf 100644
--- a/subyaml/core2.us.v10.yaml
+++ b/subyaml/core2.us.v10.yaml
@@ -341,6 +341,7 @@ segments:
- [0xBDCC0, c, code_BDCC0] #DONE
- [0xBE2C0, c, code_BE2C0]
- [0xBEF20, c, code_BEF20]
+ - [0xC0B80, c, code_C0B80] #DONE
- [0xC0CF0, c, code_C0CF0] #DONE
- [0xC0E60, c, code_C0E60]
- [0xC2C20, c, code_C2C20] #DONE
@@ -367,7 +368,7 @@ segments:
- [0xC97F0, c, code_C97F0]
- [0xC9E70, c, code_C9E70] #DONE
- [0xC9F00, c, code_C9F00]
- - [0xCB050, c, code_CB050]
+ - [0xCB050, c, code_CB050] #DONE
- [0xCB610, c, code_CB610] #DONE
- [0xCB8A0, c, code_CB8A0] #DONE
- [0xCBBF0, c, code_CBBF0] #DONE
@@ -774,6 +775,8 @@ segments:
- [0xF2390, bin, data_F2390] # .rodata, code_C89C0]
- [0xF23B0, bin, data_C97F0] # .rodata, code_C97F0]
- [0xF23C0, bin, data_F23C0]
+ - [0xF23F0, .rodata, code_CB050]
+ - [0xF2460, bin, data_F2460]
- [0xF2480, .rodata, code_CBD10]
- [0xF24A0, bin, data_F24A0]
- [0xF24C0, .rodata, code_CD0A0]
diff --git a/symbol_addrs.core2.us.v10.txt b/symbol_addrs.core2.us.v10.txt
index 92bc1f6c..9a91a6d4 100644
--- a/symbol_addrs.core2.us.v10.txt
+++ b/symbol_addrs.core2.us.v10.txt
@@ -502,6 +502,7 @@ D_80378E38 = 0x80378E38;
D_803791A8 = 0x803791A8;
D_80379208 = 0x80379208;
D_80379210 = 0x80379210;
+D_803793E0 = 0x803793E0;
D_80379400 = 0x80379400;
D_80379458 = 0x80379458;
D_80379460 = 0x80379460;