diff --git a/include/gc/gczoombox.h b/include/gc/gczoombox.h
index 9b334c72..a3183c1c 100644
--- a/include/gc/gczoombox.h
+++ b/include/gc/gczoombox.h
@@ -5,7 +5,114 @@
#include "structs.h"
-
+enum talk_pic_e {
+ TALK_PIC_0_GRUNTILDA_1,
+ TALK_PIC_1_VILE_1,
+ TALK_PIC_2_VILE_2,
+ TALK_PIC_3_VILE_3,
+ TALK_PIC_4_BANJO_1,
+ TALK_PIC_5_GRUNTILDA_2,
+ TALK_PIC_6_JIGGY_1,
+ TALK_PIC_7_TOOTY_1,
+ TALK_PIC_8_MUSIC_NOTE_1,
+ TALK_PIC_9_JIGGY_2,
+ TALK_PIC_A_EXTRA_HEALTH_MAX,
+ TALK_PIC_B_CLOCK,
+ TALK_PIC_C_BANJO_2,
+ TALK_PIC_D_KAZOOIE_1,
+ TALK_PIC_E_KAZOOIE_2,
+ TALK_PIC_F_BOTTLES,
+ TALK_PIC_10_MUMBO_1,
+ TALK_PIC_11_CHIMPY,
+ TALK_PIC_12_CONGA,
+ TALK_PIC_13_BLUBBER,
+ TALK_PIC_14_NIPPER,
+ TALK_PIC_15_CLANKER,
+ TALK_PIC_16_SNIPPET,
+ TALK_PIC_17_VILE_4,
+ TALK_PIC_18_TIPTUP,
+ TALK_PIC_19_TANKTUP,
+ TALK_PIC_1A_FLIBBIT,
+ TALK_PIC_1B_TRUNKER,
+ TALK_PIC_1C_RUBEE,
+ TALK_PIC_1D_GOBI,
+ TALK_PIC_1E_GRABBA,
+ TALK_PIC_1F_TEEHEE,
+ TALK_PIC_20_JINJO_YELLOW,
+ TALK_PIC_21_JINJO_GREEN,
+ TALK_PIC_22_JINJO_BLUE,
+ TALK_PIC_23_JINJO_PINK,
+ TALK_PIC_24_JINJO_ORANGE,
+ TALK_PIC_25_MUSIC_NOTE_2,
+ TALK_PIC_26_MUMBO_TOKEN,
+ TALK_PIC_27_BLUE_EGG,
+ TALK_PIC_28_RED_FEATHER,
+ TALK_PIC_29_GOLD_FEATHER,
+ TALK_PIC_2A_ORANGE,
+ TALK_PIC_2B_GOLD_BULLION,
+ TALK_PIC_2C_HONEYCOMB,
+ TALK_PIC_2D_EXTRA_HEALTH_MAX,
+ TALK_PIC_2E_EXTRA_LIFE,
+ TALK_PIC_2F_JIGGY_3,
+ TALK_PIC_30_EXTRA_HONEYCOMB,
+ TALK_PIC_31_CATERPILLAR,
+ TALK_PIC_32_WADING_BOOTS,
+ TALK_PIC_33_PIRANHA,
+ TALK_PIC_34_TERMITE,
+ TALK_PIC_35_JUJU,
+ TALK_PIC_36_YUMYUM,
+ TALK_PIC_37_LITTLE_LOCKUP,
+ TALK_PIC_38_LEAKY,
+ TALK_PIC_39_GLOOP,
+ TALK_PIC_3A_TIPTUP_CHOIR_MEMBER,
+ TALK_PIC_3B_SNACKER,
+ TALK_PIC_3C_ANCIENT_ONE,
+ TALK_PIC_3D_SAND_EEL,
+ TALK_PIC_3E_SNORKEL,
+ TALK_PIC_3F_JINXY,
+ TALK_PIC_40_CROCTUS,
+ TALK_PIC_41_GRUNTILDA_3,
+ TALK_PIC_42_TOOTY_2,
+ TALK_PIC_43_BOGGY,
+ TALK_PIC_44_WOZZA,
+ TALK_PIC_45_MOTZHAND,
+ TALK_PIC_46_TUMBLAR,
+ TALK_PIC_47_MUMMUM,
+ TALK_PIC_48_XMAS_GIFT_BLUE,
+ TALK_PIC_49_WORM,
+ TALK_PIC_4A_FREEZING_WATER,
+ TALK_PIC_4B_TWINKLY,
+ TALK_PIC_4C_TWINKLY_CHOMPER,
+ TALK_PIC_4D_GNAWTY,
+ TALK_PIC_4E_BOSS_BOOM_BOX,
+ TALK_PIC_4F_ZUBBA,
+ TALK_PIC_50_NAMBUT,
+ TALK_PIC_51_POLAR_BEAR_CUBS,
+ TALK_PIC_52_YOUNG_EEYRIE_1,
+ TALK_PIC_53_YOUNG_EEYRIE_2,
+ TALK_PIC_54_YOUNG_EEYRIE_3,
+ TALK_PIC_55_ADULT_EEYRIE,
+ TALK_PIC_56_WARP_CAULDRON,
+ TALK_PIC_57_BRENTILDA,
+ TALK_PIC_58_TOOTY_3,
+ TALK_PIC_59_BLACK_SNIPPET,
+ TALK_PIC_5A_LOGGO,
+ TALK_PIC_5B_CHEATO,
+ TALK_PIC_5C_XMAS_GIFT_GREEN,
+ TALK_PIC_5D_KLUNGO,
+ TALK_PIC_5E_SEXY_GRUNTY,
+ TALK_PIC_5F_TOOTY_4,
+ TALK_PIC_60_BANJO_3,
+ TALK_PIC_61_KAZOOIE_3,
+ TALK_PIC_62_TOOTY_5,
+ TALK_PIC_63_DINGPOT,
+ TALK_PIC_64_CROC_BANJO,
+ TALK_PIC_65_GRUNTILDA_4,
+ TALK_PIC_66_LOCKUP,
+ TALK_PIC_67_VILE_5,
+ TALK_PIC_68_VILE_6,
+ TALK_PIC_69_VILE_7
+};
typedef struct {
u8 unk0[0x30]; //string1
@@ -97,8 +204,9 @@ typedef struct {
u32 pad1A4_9:10;
}gczoombox_t; //size 0x1A8
+
void gczoombox_draw(gczoombox_t *this, Gfx **gdl, Mtx ** mptr, void *vptr);
void gczoombox_free(gczoombox_t* this);
-gczoombox_t *gczoombox_new(s32 arg0, s32 arg1, s32 arg2, s32 arg3, void (*arg4)(s32, s32));
+gczoombox_t *gczoombox_new(s32 arg0, enum talk_pic_e arg1, s32 arg2, s32 arg3, void (*arg4)(s32, s32));
#endif
diff --git a/progress/progress_TTC.svg b/progress/progress_TTC.svg
index e4ddd7bf..1cf4e1d0 100644
--- a/progress/progress_TTC.svg
+++ b/progress/progress_TTC.svg
@@ -9,7 +9,7 @@
-
+
@@ -17,7 +17,7 @@
TTC
- 84.8564%
- 84.8564%
+ 92.7219%
+ 92.7219%
\ No newline at end of file
diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg
index f101bca5..19a76886 100644
--- a/progress/progress_core2.svg
+++ b/progress/progress_core2.svg
@@ -9,7 +9,7 @@
-
+
@@ -17,7 +17,7 @@
core2
- 73.6289%
- 73.6289%
+ 73.9387%
+ 73.9387%
\ No newline at end of file
diff --git a/progress/progress_total.svg b/progress/progress_total.svg
index 4366ac35..bf4010d5 100644
--- a/progress/progress_total.svg
+++ b/progress/progress_total.svg
@@ -9,7 +9,7 @@
-
+
@@ -17,7 +17,7 @@
Banjo-Kazooie (us.v10)
- 79.5388%
- 79.5388%
+ 79.8391%
+ 79.8391%
\ No newline at end of file
diff --git a/src/TTC/code_3E30.c b/src/TTC/code_3E30.c
index c492ead5..ca7d486f 100644
--- a/src/TTC/code_3E30.c
+++ b/src/TTC/code_3E30.c
@@ -101,7 +101,23 @@ void func_8038A328(void) {
mapSpecificFlags_set(1, FALSE);
}
-#pragma GLOBAL_ASM("asm/nonmatchings/TTC/code_3E30/func_8038A37C.s")
+void func_8038A37C(s32 arg0, BKVtxRef *ref, Vtx *dst, s32 arg3) {
+ Struct_TTC_3E30_1 *ptr = (Struct_TTC_3E30_1 *) arg3;
+ f32 temp_f2;
+
+ if (ptr->unk4 < 0.5) {
+ temp_f2 = (ptr->unk4 / 0.5);
+ dst->v.cn[0] = (ref->v.v.cn[0] - 0xFF) * temp_f2 + 255.0f;
+ dst->v.cn[1] = ref->v.v.cn[1] * temp_f2;
+ dst->v.cn[2] = ref->v.v.cn[2] * temp_f2;
+ }
+ else{
+ dst->v.cn[0] = ref->v.v.cn[0];
+ dst->v.cn[1] = ref->v.v.cn[1];
+ dst->v.cn[2] = ref->v.v.cn[2];
+ ptr->unk3 = 2;
+ }
+}
void func_8038A5D8(Struct_TTC_3E30_1 *arg0, s32 arg1) {
s32 temp_v0;
@@ -114,11 +130,56 @@ void func_8038A5D8(Struct_TTC_3E30_1 *arg0, s32 arg1) {
}
}
-#pragma GLOBAL_ASM("asm/nonmatchings/TTC/code_3E30/func_8038A618.s")
+void func_8038A618(s32 arg0, BKVtxRef *ref, Vtx *dst, s32 arg3) {
+ Struct_TTC_3E30_1 *ptr = (Struct_TTC_3E30_1 *) arg3;
+ f32 temp_f12;
-#pragma GLOBAL_ASM("asm/nonmatchings/TTC/code_3E30/func_8038A7DC.s")
-#pragma GLOBAL_ASM("asm/nonmatchings/TTC/code_3E30/func_8038AA2C.s")
+ if (ptr->unk4 <= 0.5) {
+ temp_f12 = (ptr->unk4 / 0.5);
+ dst->v.cn[0] = ref->v.v.cn[0] * (1.0f - temp_f12);
+ dst->v.cn[1] = 0xFF;
+ dst->v.cn[2] = ref->v.v.cn[2] * (1.0f - temp_f12);
+ }
+ if (ptr->unk4 >= 0.5) {
+ ptr->unk3 = 4;
+ }
+}
+
+void func_8038A7DC(s32 arg0, BKVtxRef *ref, Vtx *dst, s32 arg3){
+ Struct_TTC_3E30_1 *ptr = (Struct_TTC_3E30_1 *) arg3;
+ f32 temp_f2;
+
+ if (ptr->unk4 < 0.5) {
+ temp_f2 = (ptr->unk4 / 0.5);
+ dst->v.cn[0] = (ref->v.v.cn[0] - 0xFF) * temp_f2 + 255.0f;
+ dst->v.cn[1] = (ref->v.v.cn[1] - 0xFF) * temp_f2 + 255.0f;
+ dst->v.cn[2] = ref->v.v.cn[2] * temp_f2;
+ }
+ else{
+ dst->v.cn[0] = ref->v.v.cn[0];
+ dst->v.cn[1] = ref->v.v.cn[1];
+ dst->v.cn[2] = ref->v.v.cn[2];
+ ptr->unk3 = 2;
+ }
+}
+
+void func_8038AA2C(void) {
+ f32 temp_f20;
+ Struct_TTC_3E30_1 *var_s0;
+
+ temp_f20 = time_getDelta();
+ for(var_s0 = D_8038C984; var_s0->unk0 != 0; var_s0++){
+ var_s0->unk4 += temp_f20;
+ if (var_s0->unk3 == 1) {
+ func_8033F120(D_8038D720.unk0, var_s0->unk0, func_8038A37C, (s32)var_s0);
+ } else if (var_s0->unk3 == 3) {
+ func_8033F120(D_8038D720.unk0, var_s0->unk0, func_8038A618, (s32)var_s0);
+ } else if (var_s0->unk3 == 5) {
+ func_8033F120(D_8038D720.unk0, var_s0->unk0, func_8038A7DC, (s32)var_s0);
+ }
+ }
+}
void func_8038AB44(void){
D_8038C980 = func_8038B600();
diff --git a/src/core2/ch/gameSelect.c b/src/core2/ch/gameSelect.c
index f47915c6..4cc84d6f 100644
--- a/src/core2/ch/gameSelect.c
+++ b/src/core2/ch/gameSelect.c
@@ -541,13 +541,13 @@ void func_802C5740(Actor * this){
if(!this->initialized){
func_8033CE40();
if(D_8037DCF4 == NULL){
- D_8037DCF4 = gczoombox_new(0xA0, 0xc, 2, 0, NULL);
+ D_8037DCF4 = gczoombox_new(0xA0, TALK_PIC_C_BANJO_2, 2, 0, NULL);
gczoombox_open(D_8037DCF4);
func_803184C8(D_8037DCF4, 30.0f, 5, 2, 0.4f, 0, 0);
}//L802C57FC
if(D_8037DCF0 == NULL){
- D_8037DCF0 = gczoombox_new(0xA, 0xd, 2, 1, func_802C44D0);
+ D_8037DCF0 = gczoombox_new(0xA, TALK_PIC_D_KAZOOIE_1, 2, 1, func_802C44D0);
func_80318284(D_8037DCF0, 2, &D_8037DCE0);
gczoombox_open(D_8037DCF0);
gczoombox_maximize(D_8037DCF0);
diff --git a/src/core2/code_87E30.c b/src/core2/code_87E30.c
index a23abace..1d9e5cb2 100644
--- a/src/core2/code_87E30.c
+++ b/src/core2/code_87E30.c
@@ -6,30 +6,35 @@
extern void func_803114D0(void );
extern void func_803184C8(gczoombox_t *, f32, s32, s32, f32, s32, s32);
extern int func_803114B0(void);
+extern void gczoombox_open(gczoombox_t *);
+extern void gczoombox_minimize(gczoombox_t *);
+extern void gczoombox_close(gczoombox_t *);
+extern bool func_803188B4(gczoombox_t *);
extern s8 D_8036C4D0[];
extern f32 D_80378534;
-extern struct {
- u8 pad0[0x100];
+struct {
+ char unk0[0x100];
u8 *unk100;
struct13s *unk104[2]; //string ptr
- s32 unk10C[2];
+ char *unk10C[2]; //current_string
u8 dialogStringCount[2]; //zoombox string_count
- s8 unk116[2];
- u8 unk118[2];
+ s8 unk116[2]; //current_cmd
+ u8 unk118[2]; //current_string_index
struct15s unk11A[2];
gczoombox_t *zoombox[2];
s16 unk124[2];
u32 unk128_31:8;
u32 unk128_23:8;
u32 unk128_15:8;
- u32 unk128_7:1;
+ u32 unk128_7:1; //active_zoombox_index
u32 unk128_6:1;
u32 unk128_5:1;
u32 unk128_4:1;
u32 unk128_3:1;
- u32 pad128_2:3;
+ u32 pad128_2:2;
+ u32 unk128_0:1;
u32 unk12C_31:2;
u32 unk12C_29:2;
u32 unk12C_27:2;
@@ -45,15 +50,69 @@ extern struct {
s32 unk138;
void (* unk13C)(ActorMarker *, s32, s32);
void (* unk140)(ActorMarker *, s32, s32);
- s32 unk144;
+ s32 (* unk144)(ActorMarker *, s32, s32);
struct14s unk148[4];
} D_80382E20;
+extern char D_80382FF8[];
+/* .code */
int func_8030EDC0(ActorMarker *caller, s32 arg1){
return (arg1 == -1)? 0: caller->unk5C == arg1;
}
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_87E30/func_8030EDE8.s")
+void gcdialog_init(void) {
+
+ s8 temp_t9;
+ u32 temp_t2;
+ u8 temp_a1;
+ u8 temp_t0;
+ u8 temp_t3;
+ u8 temp_t5;
+ u8 temp_t6;
+ u8 temp_t7;
+ u8 temp_t8;
+ s32 i;
+ struct14s *i_ptr;
+
+ D_80382E20.unk100 = 0;
+
+ for( i = 0; i < 2; i++){
+ D_80382E20.unk104[i] = NULL;
+ D_80382E20.dialogStringCount[i] = 0;
+ D_80382E20.zoombox[i] = NULL;
+ D_80382E20.unk118[i] = NULL;
+ D_80382E20.unk116[i] = -1;
+ D_80382E20.unk10C[i] = 0;
+ D_80382E20.unk11A[i].unk0_7 = 0;
+ D_80382E20.unk11A[i].unk0_5 = 0;
+ }
+
+ for(i = 0; i < 4; i++){
+ D_80382E20.unk148[i].unk0 = -1;
+ D_80382E20.unk148[i].unk2 = 0;
+ D_80382E20.unk148[i].unk10 = NULL;
+ D_80382E20.unk148[i].unk14 = 0;
+ D_80382E20.unk148[i].unk18 = NULL;
+ D_80382E20.unk148[i].unk1C = NULL;
+ D_80382E20.unk148[i].unk20 = 0;
+ D_80382E20.unk148[i].unk4[0] = D_80382E20.unk148[i].unk4[1] = D_80382E20.unk148[i].unk4[2] = 0;
+ }
+
+ D_80382E20.unk128_23 = 0;
+ D_80382E20.unk128_31 = D_80382E20.unk128_5 = FALSE;
+ D_80382E20.unk12C_31 = D_80382E20.unk12C_29 = D_80382E20.unk12C_27 = D_80382E20.unk12C_25 = 0;
+ D_80382E20.unk128_15 = D_80382E20.unk128_7 = FALSE;
+ D_80382E20.unk128_6 = TRUE;
+ D_80382E20.unk12C_23 = -1;
+ D_80382E20.unk12C_15 = D_80382E20.unk12C_11 = 0;
+ D_80382E20.unk130 = (s16) -1;
+ D_80382E20.caller = NULL;
+ D_80382E20.unk13C = NULL;
+ D_80382E20.unk140 = NULL;
+ D_80382E20.unk144 = 0;
+ D_80382E20.unk132 = 0xC;
+ D_80382E20.unk128_3 = TRUE;
+}
static void _gcdialog_freeZoomboxes(void){
s32 i;
@@ -97,9 +156,45 @@ void func_8030F130(void){
D_80382E20.unk144 = NULL;
}
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_87E30/func_8030F1D0.s")
+void func_8030F1D0(void){
+ if(func_803114B0()){
+ func_8025A55C(-1, 300, 2);
+ }
+ func_803114D0();
+ func_8030F130();
+ D_80382E20.unk128_23 = 0;
+}
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_87E30/func_8030F218.s")
+void func_8030F218(char *next_state, char *arg1, char *arg2, bool arg3, bool arg4) {
+ s32 var_v0;
+ s32 i;
+ s32 j;
+
+ var_v0 = 0;\
+ for(i = 0; arg1[i] != '\0'; i++){
+ if (arg1[i] == ((arg3) ? 0xE : '~')) {
+ if (arg4) {
+ next_state[var_v0++] = 0xFD;
+ next_state[var_v0++] = 0x68;
+ }
+
+ for(j = 0 ; arg2[j] != '\0'; j++){
+ next_state[var_v0++] = arg2[j];
+ if (arg4 && !arg3 && arg2[j] == ' ') {
+ next_state[var_v0++] = 0xFD;
+ next_state[var_v0++] = 0x68;
+ }
+ }
+ if (arg4) {
+ next_state[var_v0++] = 0xFD;
+ next_state[var_v0++] = 0x6C;
+ }
+ } else {
+ next_state[var_v0++] = arg1[i];
+ }
+ }
+ next_state[var_v0] = '\0';
+}
void func_8030F338(void){
if(D_80382E20.unk13C != NULL){
@@ -120,21 +215,23 @@ void func_8030F338(void){
func_8030F130();
}
-void func_8030F410(Gfx **arg0, Mtx **arg1, s32 arg2){
+void func_8030F410(Gfx **next_state, Mtx **arg1, s32 arg2){
s32 i;
for(i = 0; i<2; i++){
- gczoombox_draw(D_80382E20.zoombox[i], arg0, arg1, arg2);
+ gczoombox_draw(D_80382E20.zoombox[i], next_state, arg1, arg2);
}
}
-#ifdef NONMATCHING
-void func_8030F488(s32 arg0){
+
+
+void gcdialog_setState(s32 next_state){
s32 i;
s32 j;
- s32 cmd;
+ s32 v0 = 6;
- if(6 != D_80382E20.unk128_23 || arg0 != D_80382E20.unk128_23){
- switch(arg0){
+ if(v0);
+ if(D_80382E20.unk128_23 != v0 || next_state != v0){
+ switch(next_state){
case 1:
for(i = 0; i < 2; i++){
if(D_80382E20.zoombox[i] != NULL && D_80382E20.unk11A[i].unk0_7 == 0)
@@ -169,15 +266,14 @@ void func_8030F488(s32 arg0){
for(i=0; i< 2; i++){
D_80382E20.unk11A[i].unk0_7 = 0;
if(D_80382E20.zoombox[i] != NULL){
- D_80382E20.unk12C_25 += func_803188B4(D_80382E20.zoombox[i]);
-
+ D_80382E20.unk12C_25 += (u8)func_803188B4(D_80382E20.zoombox[i]);
}
}
break;
case 7:
func_8030F338();
- arg0 = 0;
+ next_state = 0;
break;
case 8:
func_8030F338();
@@ -191,38 +287,298 @@ void func_8030F488(s32 arg0){
default:
break;
}
- D_80382E20.unk128_23 = arg0;
+ D_80382E20.unk128_23 = next_state;
+ }
+
+}
+
+void func_8030F754(enum talk_pic_e portrait_id, s32 arg1){
+ s32 temp_a0;
+ s32 temp_v0;
+
+ switch(arg1){
+ case 1: //L8030F790
+ D_80382E20.unk12C_31++;
+ break;
+
+ case 3: //L8030F7BC
+ gcdialog_setState(2);
+ break;
+
+ case 4: //L8030F7CC
+ if(D_80382E20.unk128_23 == 6){
+ D_80382E20.unk12C_25--;
+ if(D_80382E20.unk12C_25 == 0){
+ temp_a0 = ((D_80382E20.unk11A[0].unk0_7) ? 1 : 0);
+ temp_v0 = ((D_80382E20.unk11A[1].unk0_7) ? 1 : 0);
+ gcdialog_setState((temp_v0 + temp_a0) ? 8 : 5);
+ }//L8030F980
+ break;
+ }
+
+ temp_v0 = ((D_80382E20.unk11A[0].unk0_7) ? 1 : 0) + ((D_80382E20.unk11A[1].unk0_7) ? 1 : 0);
+ if(temp_v0 > (s32)D_80382E20.unk12C_29){
+ D_80382E20.unk12C_29++;
+ if(D_80382E20.unk128_15 == D_80382E20.unk12C_29 + D_80382E20.unk12C_27){
+ gcdialog_setState(8);
+ }
+ }
+ break;
+
+ case 6: //L8030F8FC
+ D_80382E20.unk12C_27++;
+ if(D_80382E20.unk12C_27 == D_80382E20.unk128_15){
+ gcdialog_setState(7);
+ }//L8030F964
+
+ if(D_80382E20.unk128_15 == D_80382E20.unk12C_29 + D_80382E20.unk12C_27){
+ gcdialog_setState(8);
+ }
+ break;
+ }//L8030F984
+}
+
+#ifndef NONMATCHING
+#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_87E30/gcdialog_update.s")
+#else
+void gcdialog_update(void) {
+ s32 spA8;
+ s32 i;
+ s32 sp90[6];
+ bool temp_v1_2;
+ s32 sp84[2];
+ s32 sp80;
+ s32 sp7C;
+ char *sp4C[8];
+ s32 var_v0_6;
+ s32 var_a3;
+ s32 var_v0_2;
+
+ sp80 = -1;
+ if (D_80382E20.unk128_31 & 0x80) {
+ func_8024E5A8(0, sp90);
+ func_8024E640(0, sp84);
+ } else {
+ func_8024E55C(0, sp90);
+ func_8024E60C(0, sp84);
+ }
+ switch (D_80382E20.unk128_23) { /* switch 1 */
+ case 1: /* switch 1 */
+ var_a3 = 0;\
+ for(i = 0; i < 2; i++){
+ if(D_80382E20.zoombox[i] == NULL){
+ var_a3++;
+ }
+ };
+ if (var_a3 == 2) {
+ gcdialog_setState(7);
+ } else if (D_80382E20.unk128_15 == D_80382E20.unk12C_31) {
+ D_80382E20.unk12C_31 = 0;
+ gcdialog_setState(2);
+ }
+ break;
+
+ case 2: /* switch 1 */
+ if ((D_80382E20.zoombox[D_80382E20.unk128_7] == NULL) || func_80318BEC(D_80382E20.zoombox[D_80382E20.unk128_7]) || (D_80382E20.unk11A[D_80382E20.unk128_7].unk0_5 != 0)) {
+ D_80382E20.unk128_7 ^= 1;
+ } else {
+ D_80382E20.unk116[D_80382E20.unk128_7] = D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7]].cmd;
+ D_80382E20.unk10C[D_80382E20.unk128_7] = D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7]].str;
+ switch (D_80382E20.unk116[D_80382E20.unk128_7]) { /* switch 2 */
+ case -2: /* switch 2 */
+ if (D_80382E20.unk118[D_80382E20.unk128_7] == 0) {
+ D_80382E20.unk12C_29++;
+ }
+ gczoombox_minimize(D_80382E20.zoombox[D_80382E20.unk128_7]);
+ D_80382E20.unk11A[D_80382E20.unk128_7].unk0_7 = 1;
+ D_80382E20.unk11A[D_80382E20.unk128_7].unk0_5 = 1;
+ D_80382E20.unk128_7 ^= 1;
+ D_80382E20.unk128_6 = TRUE;
+ break;
+
+ case -1: /* switch 2 */
+ D_80382E20.unk11A[D_80382E20.unk128_7].unk0_7 = 2;
+ gcdialog_setState(4);
+ break;
+
+ case -4: /* switch 2 */
+ gczoombox_minimize(D_80382E20.zoombox[D_80382E20.unk128_7]);
+ gczoombox_close(D_80382E20.zoombox[D_80382E20.unk128_7]);
+ D_80382E20.unk11A[D_80382E20.unk128_7].unk0_7 = 0;
+ D_80382E20.unk11A[D_80382E20.unk128_7].unk0_5 = 1;
+ D_80382E20.unk128_7 ^= 1;
+ D_80382E20.unk128_6 = TRUE;
+ break;
+
+ case -7: /* switch 2 */
+ if (D_80382E20.unk140 != NULL) {
+ if (D_80382E20.caller == NULL) {
+ D_80382E20.unk140(D_80382E20.caller, D_80382E20.unk130, *D_80382E20.unk10C[D_80382E20.unk128_7]);
+ } else if (func_8030EDC0(D_80382E20.caller, D_80382E20.unk138)) {
+ D_80382E20.unk140(D_80382E20.caller, D_80382E20.unk130, *D_80382E20.unk10C[D_80382E20.unk128_7]);
+ }
+ }
+ D_80382E20.unk118[D_80382E20.unk128_7]++;
+ break;
+
+ case -9: /* switch 2 */
+ case -8: /* switch 2 */
+ do {
+ D_80382E20.unk118[D_80382E20.unk128_7]++;
+ D_80382E20.unk116[D_80382E20.unk128_7] = D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7]].cmd;
+ } while (D_80382E20.unk116[D_80382E20.unk128_7] == -8 || D_80382E20.unk116[D_80382E20.unk128_7] == -9);
+ break;
+
+ case -6: /* switch 2 */
+ for(var_v0_2 = D_80382E20.unk118[D_80382E20.unk128_7];
+ D_80382E20.unk104[D_80382E20.unk128_7][var_v0_2].cmd < -4;
+ var_v0_2++){
+ }
+
+ if (D_80382E20.unk104[D_80382E20.unk128_7][var_v0_2].cmd >= 0) {
+ func_803189C4(D_80382E20.zoombox[D_80382E20.unk128_7], D_80382E20.unk104[D_80382E20.unk128_7][var_v0_2].cmd + 0xC);
+ }
+ if (D_80382E20.unk118[D_80382E20.unk128_7]) {
+ gczoombox_minimize(D_80382E20.zoombox[D_80382E20.unk128_7]);
+ }
+ if ((D_80382E20.unk118[D_80382E20.unk128_7] == 0) && (D_80382E20.unk11A[D_80382E20.unk128_7].unk0_7 == 2)) {
+ gczoombox_minimize(D_80382E20.zoombox[D_80382E20.unk128_7]);
+ }
+ D_80382E20.unk11A[D_80382E20.unk128_7].unk0_7 = 0;
+ D_80382E20.unk118[D_80382E20.unk128_7]++;
+ D_80382E20.unk128_7 ^= 1;
+ D_80382E20.unk128_6 = TRUE;
+ break;
+
+ case -5: /* switch 2 */
+ gczoombox_minimize(D_80382E20.zoombox[D_80382E20.unk128_7]);
+ D_80382E20.unk11A[D_80382E20.unk128_7].unk0_7 = 0;
+ D_80382E20.unk118[D_80382E20.unk128_7]++;
+ D_80382E20.unk128_7 ^= 1;
+ D_80382E20.unk128_6 = TRUE;
+ break;
+
+ case -3: /* switch 2 */
+ D_80382E20.unk11A[D_80382E20.unk128_7].unk0_7 = 0;
+ gcdialog_setState(4);
+ break;
+
+ default: /* switch 2 */
+ if (!func_80316ED4(D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7]].str)) {
+ D_80382E20.unk118[D_80382E20.unk128_7]++;
+ } else {
+ if(D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7] + 1].cmd == -8){
+ if (D_80382E20.unk144 != NULL) {
+ sp7C = 1;
+
+ if (D_80382E20.caller == NULL) {
+ sp80 = D_80382E20.unk144(D_80382E20.caller, D_80382E20.unk130, D_80382E20.unk118[D_80382E20.unk128_7]);
+ }
+ else if (func_8030EDC0(D_80382E20.caller, D_80382E20.unk138)) {
+ sp80 = D_80382E20.unk144(D_80382E20.caller, D_80382E20.unk130, D_80382E20.unk118[D_80382E20.unk128_7]);
+ }
+
+ if (sp80 < 0) {
+ sp80 = -1 - sp80;
+ sp7C = 0;
+ }
+ if((sp80 >= 0) && ((D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7] + sp80 + 1].cmd == -8))) {
+ strlen(D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7] + sp80 + 1].str);
+ strlen(D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7]].str);
+ func_8030F218(D_80382E20.unk0, D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7]].str, D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7] + sp80 + 1].str, func_8031B604(D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7]].str), sp7C);
+ }
+ else{
+ sp80 = -1;
+ }
+ }
+ } else if(D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7] + 1].cmd == -9){
+ if (D_80382E20.unk144 != NULL) {
+ D_80382FF8[0] = '\0';
+ if (D_80382E20.caller == 0) {
+ sp80 = D_80382E20.unk144(D_80382E20.caller, D_80382E20.unk130, D_80382E20.unk118[D_80382E20.unk128_7]);
+ }
+ else if (func_8030EDC0(D_80382E20.caller, D_80382E20.unk138)) {
+ sp80 = D_80382E20.unk144(D_80382E20.caller, D_80382E20.unk130, D_80382E20.unk118[D_80382E20.unk128_7]);
+ }
+ strIToA(D_80382FF8, sp80);
+ strlen(D_80382FF8);
+ strlen(D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7]].str);
+ func_8030F218(D_80382E20.unk0, D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7]].str, &D_80382FF8, func_8031B604(D_80382E20.unk104[D_80382E20.unk128_7][D_80382E20.unk118[D_80382E20.unk128_7]].str), 0);
+ }
+ }
+ if (func_803189C4(D_80382E20.zoombox[D_80382E20.unk128_7], D_80382E20.unk116[D_80382E20.unk128_7] + 0xC)) {
+ gczoombox_minimize(D_80382E20.zoombox[D_80382E20.unk128_7]);
+ D_80382E20.unk128_6 = TRUE;
+ }
+ if (D_80382E20.unk128_6) {
+ gczoombox_maximize(D_80382E20.zoombox[D_80382E20.unk128_7]);
+ D_80382E20.unk128_6 = FALSE;
+ }
+ if (sp80 == -1) {
+ for(spA8 = D_80382E20.unk118[D_80382E20.unk128_7];
+ ((D_80382E20.unk104[D_80382E20.unk128_7][spA8].cmd == D_80382E20.unk116[D_80382E20.unk128_7]) && ((spA8 * 0) < 8));
+ spA8++
+ ){
+ sp4C[spA8 - D_80382E20.unk118[D_80382E20.unk128_7]] = D_80382E20.unk104[D_80382E20.unk128_7][spA8].str;
+ }
+ func_80318284(D_80382E20.zoombox[D_80382E20.unk128_7], spA8 - D_80382E20.unk118[D_80382E20.unk128_7], sp4C);
+ D_80382E20.unk118[D_80382E20.unk128_7] = spA8;
+ } else {
+ func_803183A4(D_80382E20.zoombox[D_80382E20.unk128_7], D_80382E20.unk0);
+ D_80382E20.unk118[D_80382E20.unk128_7]++;
+ }
+ gcdialog_setState(3);
+ }
+ break;
+ }
+ }
+ break;
+ case 3: /* switch 1 */
+ temp_v1_2 = D_80382E20.unk128_31 & 0x80;
+ if (D_80382E20.unk128_0 && (sp90[1] == 1)) {
+ gcdialog_setState(6);
+ }
+ else{
+ if (!temp_v1_2) {
+ var_v0_6 = (temp_v1_2) ? func_8024E5E8(0, 4) : func_8024E5E8(0, 3);
+ if ((var_v0_6 ^ 1) == 0) {
+ gcdialog_setState(6);
+ }
+ }
+ }
+ break;
+
+ case 4: /* switch 1 */
+ if (sp90[0] == 1) {
+ D_80382E20.unk12C_23 = 1;
+ } else if (sp90[1] == (s32) 1) {
+ D_80382E20.unk12C_23 = 0;
+ }
+ if (D_80382E20.unk12C_23 != -1) {
+ // var_a0 = 5;
+ gcdialog_setState((D_80382E20.unk11A[D_80382E20.unk128_7].unk0_7) ? 8 : 5);
+ }
+ break;
+
+ case 7: /* switch 1 */
+ case 8: /* switch 1 */
+ gcdialog_setState(0);
+ break;
+ }
+
+ for(i = 0; i < 2; i++){
+ gczoombox_update(D_80382E20.zoombox[i]);
}
}
-#else
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_87E30/func_8030F488.s")
#endif
-void func_8030F754(s32, s32);
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_87E30/func_8030F754.s")
-// void func_8030F754(s32 arg0, s32 arg1){
-// f32 sp90[3];
-// f32 sp84[3];
-// if(D_80382E20.unk128_31){
-// func_8024E5A8(0, &sp90);
-// func_8024E640(0, &sp84);
-// }else{
-// func_8024E55C(0, &sp90);
-// func_8024E60C(0, &sp84);
-// }//L8030F9F4
-// }
-
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_87E30/func_8030F990.s")
-
//parses text asset into seperate strings
-void func_80310574(s32 text_id);
-#ifdef NONMATCHING
void func_80310574(s32 text_id){
s32 i;
s32 j;
u8 *txt;
s32 _v0;
- s32 ch;
+ char ch;
s32 len;
txt = D_80382E20.unk100 = func_8031B66C(text_id);
@@ -231,7 +587,7 @@ void func_80310574(s32 text_id){
D_80382E20.dialogStringCount[i] = *(txt++);
D_80382E20.unk104[i] = (struct13s *) malloc(D_80382E20.dialogStringCount[i]*sizeof(struct13s));
for(j = 0; j < D_80382E20.dialogStringCount[i]; j++){//L803105F0
- ch = _v0 = *(txt++);
+ ch = *(txt++);
if(ch > 0 && ch < 0x20){
_v0 = -ch;
}
@@ -240,7 +596,8 @@ void func_80310574(s32 text_id){
}
D_80382E20.unk104[i][j].cmd = _v0;
- len = *(txt++);
+ len = *(txt);
+ txt++;
D_80382E20.unk104[i][j].str = txt;
txt += len;
@@ -248,16 +605,13 @@ void func_80310574(s32 text_id){
//L80310664
}
}
-#else
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_87E30/func_80310574.s")
-#endif
-s32 func_8031068C(s32 arg0){
- return (arg0) ? 0 : 0xA0;
+s32 func_8031068C(s32 next_state){
+ return (next_state) ? 0 : 0xA0;
}
-int func_803106A4(s32 arg0){
- return (arg0) ? 1 : 0;
+int func_803106A4(s32 next_state){
+ return (next_state) ? 1 : 0;
}
void func_803106BC(s32 text_id, s32 arg1, ActorMarker *marker, void(*callback)(ActorMarker *, s32, s32), void(*arg4)(ActorMarker *, s32, s32), s32 arg5){
@@ -324,16 +678,16 @@ void func_803106BC(s32 text_id, s32 arg1, ActorMarker *marker, void(*callback)(A
D_80382E20.unk140 = arg4;
D_80382E20.unk144 = arg5;
D_80382E20.unk138 = (marker != NULL )? ((marker->unk5C)? marker->unk5C : -1) : 0;
- func_8030F488(((func_802E4A08() || func_803203FC(0x1F)) && D_80382E20.unk128_3) ? 6 : 1);
+ gcdialog_setState(((func_802E4A08() || func_803203FC(0x1F)) && D_80382E20.unk128_3) ? 6 : 1);
//L803109EC
}
-void func_80310A5C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4){
+void func_80310A5C(s32 next_state, s32 arg1, s32 arg2, s32 arg3, s32 arg4){
s32 i;
f32 tmpf;
for(i = 0, tmpf = D_80378534; i< 2; i++){
if(D_80382E20.zoombox[i]){
- func_803184C8(D_80382E20.zoombox[i], arg2, arg0, arg1, tmpf, arg3, arg4);
+ func_803184C8(D_80382E20.zoombox[i], arg2, next_state, arg1, tmpf, arg3, arg4);
}
}
}
@@ -348,8 +702,8 @@ void func_80310B1C(s32 text_id, s32 arg1, ActorMarker *marker, void(*callback)(A
}
}
-void func_80310BB4(s32 arg0, s32 arg1, s32 arg2){
- func_80310A5C(arg1, arg2, arg0, D_80382E20.unk128_31 & 2, D_80382E20.unk128_31 & 0x80);
+void func_80310BB4(s32 next_state, s32 arg1, s32 arg2){
+ func_80310A5C(arg1, arg2, next_state, D_80382E20.unk128_31 & 2, D_80382E20.unk128_31 & 0x80);
}
void func_80310BFC(void){
@@ -423,7 +777,7 @@ void func_80310D2C(void){
D_80382E20.unk12C_15--;
}else{//L80310F88
- func_8030F990();
+ gcdialog_update();
}//L80310F98
if( ( D_80382E20.unk128_23 != 0 && D_80382E20.unk128_23 != 5 && D_80382E20.unk128_23 != 7)
|| ((!D_80382E20.unk128_23 && (D_80382E20.unk11A[0].unk0_7 || D_80382E20.unk11A[1].unk0_7)))
@@ -468,9 +822,9 @@ void func_80310D2C(void){
}
}
-int func_803110F8(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4){
+int func_803110F8(s32 next_state, s32 arg1, s32 arg2, s32 arg3, s32 arg4){
func_8025A55C(15000, 300, 2);
- func_80311174(arg0 + 0xe57, 0x84, NULL, NULL, NULL, NULL, arg4);
+ func_80311174(next_state + 0xe57, 0x84, NULL, NULL, NULL, NULL, arg4);
func_80310A5C(arg2, arg3, arg1, 0, 0);
return 1;
}
@@ -550,7 +904,6 @@ int func_80311174(s32 text_id, s32 arg1, f32 *pos, ActorMarker *marker, void(*ca
return 0;
}
-
bool func_80311480(s32 text_id, s32 arg1, f32 *pos, ActorMarker *marker, void(*callback)(ActorMarker *, enum asset_e, s32), void(*arg5)(ActorMarker *, enum asset_e, s32)){
return func_80311174(text_id, arg1, pos, marker, callback, arg5, 0);
}
@@ -563,19 +916,18 @@ int func_803114C4(void){
return D_80382E20.unk130;
}
-#ifdef NONMATCHING
void func_803114D0(void){
s32 i;
if(func_803114B0()){
- func_8030F488(6);
+ gcdialog_setState(6);
}else{
if(D_80382E20.unk128_23 != 6){
D_80382E20.unk12C_25 = 0;
for(i = 0; i< 2; i++){
D_80382E20.unk11A[i].unk0_7 = 0;
if(D_80382E20.zoombox[i]){
- D_80382E20.unk12C_25 = D_80382E20.unk12C_25 + func_803188B4(D_80382E20.zoombox[i]);
+ D_80382E20.unk12C_25 += (u8)func_803188B4(D_80382E20.zoombox[i]);
}
}
if(D_80382E20.unk12C_25 != 0){
@@ -587,15 +939,12 @@ void func_803114D0(void){
D_80382E20.unk12C_11 = 0;
}
-#else
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_87E30/func_803114D0.s")
-#endif
-int func_803115C4(s32 arg0){
- if(func_803114C4() != arg0){
+int func_803115C4(s32 next_state){
+ if(func_803114C4() != next_state){
return 0;
}else{
- func_8030F488(6);
+ gcdialog_setState(6);
return 1;
}
}
@@ -630,6 +979,6 @@ void func_8031169C(void){
}
}
-void func_80311714(int arg0){
- D_80382E20.unk128_3 = arg0;
-}
\ No newline at end of file
+void func_80311714(int next_state){
+ D_80382E20.unk128_3 = next_state;
+}
diff --git a/src/core2/code_94620.c b/src/core2/code_94620.c
index f527e770..134ab30e 100644
--- a/src/core2/code_94620.c
+++ b/src/core2/code_94620.c
@@ -20,11 +20,9 @@ void func_8031B5C4(s32 arg0) {
}
// regalloc
-// s32 func_8031B604(u8 *arg0) {
-// s32 ret = (arg0[0] == 0xFD) && (arg0[1] == 0x6A);
-// return ret;
-// }
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031B604.s")
+bool func_8031B604(char *arg0) {
+ return (arg0[0] == 0xFD) && (arg0[1] == 0x6A);
+}
void func_8031B62C(void) {
D_80383158 = (u8)0;
@@ -34,10 +32,6 @@ s32 func_8031B638(void) {
return D_80383150;
}
-// void func_8031B644(void) {
-// (s32*)(&D_80383158) =
-// }
-
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031B644.s")
void func_8031B65C(void){}
diff --git a/src/core2/code_AD5B0.c b/src/core2/code_AD5B0.c
index e3cf0e97..fde47e56 100644
--- a/src/core2/code_AD5B0.c
+++ b/src/core2/code_AD5B0.c
@@ -236,7 +236,7 @@ void func_80334B20(enum map_e arg0, s32 arg1, s32 arg2) {
}
func_80305990(0);
func_8030C740();
- func_8030EDE8();
+ gcdialog_init();
mapSpecificFlags_clearAll();
func_803411B0();
func_802C2B5C();
diff --git a/src/core2/gc/zoombox.c b/src/core2/gc/zoombox.c
index 8bd4c5a2..259d7bb7 100644
--- a/src/core2/gc/zoombox.c
+++ b/src/core2/gc/zoombox.c
@@ -23,7 +23,6 @@ typedef struct struct_17_s{
gczoomboxSfx soundInfo[5];
}gczoomboxPortraitInfo;
-
gczoomboxPortraitInfo D_8036C6C0[] = {
{ASSET_816_SPRITE_GRUNTILDA, 0xDA, 0xE5, {
{SFX_EC_GRUNTY_TALKING_1, 20000, 1.1f},
@@ -614,7 +613,7 @@ void func_8031594C(gczoombox_t * this, u8 *str, s32 arg2, s32 arg3){
s0 = arg2;
s4 = this;
s1 = 0;
- f22 = (this->portrait_id == 0x5F) ? 0.4 : 0.8;
+ f22 = (this->portrait_id == TALK_PIC_5F_TOOTY_4) ? 0.4 : 0.8;
if(getGameMode() == GAME_MODE_9_BANJO_AND_KAZOOIE){
func_8034A900();
@@ -677,7 +676,7 @@ void func_8031594C(gczoombox_t * this, u8 *str, s32 arg2, s32 arg3){
u8 func_80315BC0(gczoombox_t *this, enum sfx_e sfx_id, s32 arg2){
u8 sp1F = func_8030ED2C(sfx_id, arg2) & 0xff;
func_8030DD90(sp1F, 0);
- if(this->portrait_id == 0x66){
+ if(this->portrait_id == TALK_PIC_66_LOCKUP){
func_8030DCCC(sp1F, 0x40);
}
return sp1F;
@@ -708,7 +707,7 @@ void func_80315C90(gczoombox_t *this, s32 arg1) {
current_sfx = 0U;
if (this != NULL && this->sfx_count != 0 && this->unk1A4_11) {
- if (this->portrait_id == 0x15) {
+ if (this->portrait_id == TALK_PIC_15_CLANKER) {
for(phi_s1 = 0; phi_s1 < 5; phi_s1++){
if(func_8030E3FC(this->unk108[phi_s1]))
return;
@@ -853,7 +852,7 @@ void func_803164B0(gczoombox_t *this, Gfx **gfx, Mtx **mtx, s32 arg3, s32 arg4,
f32 sp2C[3];
f32 temp_f12;
- if (this->portrait_id == 0x46) {
+ if (this->portrait_id == TALK_PIC_46_TUMBLAR) {
arg6 = 0.75f;
}
func_80338338(0xFF, 0xFF, 0xFF);
@@ -1358,7 +1357,7 @@ void func_80317C90(gczoombox_t *this, s32 portrait_id){
}
//_gczoombox_loadsfx
-void func_80317D10(gczoombox_t *this, s32 portrait_id){
+void func_80317D10(gczoombox_t *this, enum talk_pic_e portrait_id){
s32 i;
this->sfx_count = 0;
@@ -1388,7 +1387,7 @@ void func_80317D10(gczoombox_t *this, s32 portrait_id){
}
}
-gczoombox_t *gczoombox_new(s32 arg0, s32 portrait_id, s32 arg2, s32 arg3, void (*arg4)(s32, s32)){
+gczoombox_t *gczoombox_new(s32 arg0, enum talk_pic_e portrait_id, s32 arg2, s32 arg3, void (*arg4)(s32, s32)){
gczoombox_t *this;
s32 i;
s32 temp_v1;
@@ -1694,7 +1693,7 @@ bool func_80318964(gczoombox_t *this) {
return TRUE;
}
-bool func_803189C4(gczoombox_t *this, s32 arg1){
+bool func_803189C4(gczoombox_t *this, enum talk_pic_e arg1){
if( this == NULL
|| arg1 == this->portrait_id
|| ( this->state != 6
diff --git a/subyaml/core2.us.v10.yaml b/subyaml/core2.us.v10.yaml
index 16560c95..f9294863 100644
--- a/subyaml/core2.us.v10.yaml
+++ b/subyaml/core2.us.v10.yaml
@@ -734,7 +734,9 @@ segments:
- [0xF0540, bin, data_F0540]
- [0xF14C0, .rodata, gc/transition]
- [0xF1520, .rodata, code_85800]
- - [0xF1540, bin, data_F1540]
+ - [0xF1540, .rodata, code_87E30]
+ - [0xF1560, bin, data_F1560] # .rodata, code_87E30]
+ - [0xF15B0, bin, data_F15B0]
- [0xF18F0, .rodata, gc/zoombox]
# - [0xF1960, bin, data_F1960]
- [0xF19C0, .rodata, code_91E10]
diff --git a/symbol_addrs.core2.us.v10.txt b/symbol_addrs.core2.us.v10.txt
index 5c70ec54..5e628b14 100644
--- a/symbol_addrs.core2.us.v10.txt
+++ b/symbol_addrs.core2.us.v10.txt
@@ -272,6 +272,8 @@ gctransition_reset = 0x8030BEDC;
gctransition_update = 0x8030BF1C;
sfxsource_setSfxId = 0x8030DA80;
sfxsource_setSampleRate = 0x8030DABC;
+gcdialog_setState = 0x8030F488;
+gcdialog_update = 0x8030F990;
gczoombox_free = 0x80315374;
_gczoombox_memClear = 0x80315430;
gczoombox_draw = 0x80316B8C;