Document ch Bottles2

This commit is contained in:
Owlenuff
2024-10-02 09:55:46 +02:00
parent de24d9230d
commit 82cc8de206
25 changed files with 167 additions and 144 deletions

View File

@@ -2210,7 +2210,8 @@ enum actor_e
ACTOR_3AF_GRUNTY_SHADOW = 0x3AF, ACTOR_3AF_GRUNTY_SHADOW = 0x3AF,
ACTOR_3BA_UNKOWN = 0x3ba, ACTOR_3B9_UNKNOWN = 0x3B9,
ACTOR_3BA_UNKNOWN,
ACTOR_3BF_GRUNTLING_BLUE = 0x3bf, ACTOR_3BF_GRUNTLING_BLUE = 0x3bf,
ACTOR_3C0_GRUNTLING_BLACK, ACTOR_3C0_GRUNTLING_BLACK,
@@ -2442,13 +2443,13 @@ enum bs_e
enum sm_specific_flags { enum sm_specific_flags {
SM_SPECIFIC_FLAG_1 = 0x1, SM_SPECIFIC_FLAG_1 = 0x1,
SM_SPECIFIC_FLAG_2, SM_SPECIFIC_FLAG_2,
SM_SPECIFIC_FLAG_3, SM_SPECIFIC_FLAG_3_ALL_SM_ABILITIES_LEARNED,
SM_SPECIFIC_FLAG_4, SM_SPECIFIC_FLAG_4,
SM_SPECIFIC_FLAG_5, SM_SPECIFIC_FLAG_5,
SM_SPECIFIC_FLAG_7 = 0x7, SM_SPECIFIC_FLAG_7 = 0x7,
SM_SPECIFIC_FLAG_8, SM_SPECIFIC_FLAG_8_ABILITY_HOLD_A_JUMP_HIGHER_UNLOCKED,
SM_SPECIFIC_FLAG_9, SM_SPECIFIC_FLAG_9_ABILITY_FEATHERY_UNLOCKED,
SM_SPECIFIC_FLAG_A, SM_SPECIFIC_FLAG_A,
SM_SPECIFIC_FLAG_C = 0xC, SM_SPECIFIC_FLAG_C = 0xC,
@@ -4404,8 +4405,8 @@ enum asset_e
ASSET_DF6_TEXT_BOTTLES_HIGH_JUMP_LEARN, ASSET_DF6_TEXT_BOTTLES_HIGH_JUMP_LEARN,
ASSET_DF7_TEXT_BOTTLES_FEATHERY_FLAP_LEARN, ASSET_DF7_TEXT_BOTTLES_FEATHERY_FLAP_LEARN,
ASSET_DF8_TEXT_BOTTLES_FLAP_FLIP_LEARN, ASSET_DF8_TEXT_BOTTLES_FLAP_FLIP_LEARN,
ASSET_DF9_TEXT_BOTTLES_UNKNOWN,
ASSET_DFA_TEXT_BOTTLES_JUMP_REFRESHER = 0xDFA, ASSET_DFA_TEXT_BOTTLES_JUMP_REFRESHER,
ASSET_DFB_TEXT_BOTTLES_DIVE_LEARN, ASSET_DFB_TEXT_BOTTLES_DIVE_LEARN,
ASSET_DFC_TEXT_UNKNOWN, ASSET_DFC_TEXT_UNKNOWN,
ASSET_DFD_TEXT_BOTTLES_SWIM_LEARN, ASSET_DFD_TEXT_BOTTLES_SWIM_LEARN,
@@ -4437,8 +4438,10 @@ enum asset_e
ASSET_E17_TEXT_UNKNOWN, ASSET_E17_TEXT_UNKNOWN,
ASSET_E18_TEXT_UNKNOWN, ASSET_E18_TEXT_UNKNOWN,
ASSET_E19_TEXT_UNKNOWN, ASSET_E19_TEXT_UNKNOWN,
ASSET_E1A_TEXT_BOTTLES_UNKNOWN,
ASSET_E1D_TEXT_BOTTLES_TUTORIAL_OFFER_WAIT = 0xE1D, ASSET_E1B_TEXT_BOTTLES_UNKNOWN,
ASSET_E1C_TEXT_BOTTLES_UNKNOWN,
ASSET_E1D_TEXT_BOTTLES_TUTORIAL_OFFER_WAIT,
ASSET_E1F_TEXT_BOTTLES_TUTORIAL_OFFER = VER_SELECT(0xE1F, 0xa61, 0, 0), ASSET_E1F_TEXT_BOTTLES_TUTORIAL_OFFER = VER_SELECT(0xE1F, 0xa61, 0, 0),
ASSET_E20_DIALOG_BOTTLES_BONUS_NOT_READY, ASSET_E20_DIALOG_BOTTLES_BONUS_NOT_READY,
@@ -4955,6 +4958,8 @@ enum marker_e{
MARKER_1E9_MUMBO_COST_SIGN, MARKER_1E9_MUMBO_COST_SIGN,
MARKER_1EA_GRUNTLING_RED, MARKER_1EA_GRUNTLING_RED,
MARKER_1ED_UNKNOWN = 0x1ED,
MARKER_1F1_GRUNTLING_BLACK = 0x1F1, MARKER_1F1_GRUNTLING_BLACK = 0x1F1,
MARKER_1F4_TOOTS = 0x1F4, MARKER_1F4_TOOTS = 0x1F4,

View File

@@ -509,7 +509,7 @@ f32 climbGetBottomY(void);
f32 climbGetTopY(void); f32 climbGetTopY(void);
void func_802596AC(f32 a0[3], f32 a1[3], f32 a2[3], f32 a3[3]); void func_802596AC(f32 a0[3], f32 a1[3], f32 a2[3], f32 a3[3]);
void func_8024E55C(s32, s32 [6]); void controller_copyFaceButtons(s32, s32 [6]);
void __spawnQueue_add_1(GenFunction_1, s32); void __spawnQueue_add_1(GenFunction_1, s32);
#define SPAWNQUEUE_ADD_1(method, arg0) __spawnQueue_add_1((GenFunction_1) (method), reinterpret_cast(s32, (arg0))) #define SPAWNQUEUE_ADD_1(method, arg0) __spawnQueue_add_1((GenFunction_1) (method), reinterpret_cast(s32, (arg0)))

View File

@@ -146,7 +146,7 @@ typedef struct jinjo_s{
}ActorLocal_Jinjo; }ActorLocal_Jinjo;
typedef struct ch_sm_4070{ typedef struct ch_sm_4070{
s32 unk0; s32 dialog_id;
}ActorLocal_SM_4070; }ActorLocal_SM_4070;
typedef struct actor_s{ typedef struct actor_s{

View File

@@ -658,7 +658,7 @@ void chvilegame_update(Actor *this) {
} }
if (this->state == 5) { if (this->state == 5) {
if (local->unkC == 7) { if (local->unkC == 7) {
func_8024E55C(0, sp30); controller_copyFaceButtons(0, sp30);
if ((sp30[FACE_BUTTON(BUTTON_B)] > 0) && func_8038C2A8(local->vile_marker)) { if ((sp30[FACE_BUTTON(BUTTON_B)] > 0) && func_8038C2A8(local->vile_marker)) {
func_8038A068(this, 0xA); func_8038A068(this, 0xA);
} }

View File

@@ -403,7 +403,7 @@ void func_803896FC(Actor *this){
sp58 = func_8038BE20(this->position); sp58 = func_8038BE20(this->position);
sp54 = time_getDelta(); sp54 = time_getDelta();
func_8024E55C(0, sp3C); controller_copyFaceButtons(0, sp3C);
if(!this->volatile_initialized){ if(!this->volatile_initialized){
this->volatile_initialized = TRUE; this->volatile_initialized = TRUE;

View File

@@ -211,8 +211,8 @@ void func_80387764(ActorMarker * marker){
func_8028F94C(2, actor->unk1C); func_8028F94C(2, actor->unk1C);
} }
//L80387848 //L80387848
if (!mapSpecificFlags_get(SM_SPECIFIC_FLAG_3) && chmole_learnedAllSpiralMountainAbilities() && temp_a2) { if (!mapSpecificFlags_get(SM_SPECIFIC_FLAG_3_ALL_SM_ABILITIES_LEARNED) && chmole_learnedAllSpiralMountainAbilities() && temp_a2) {
mapSpecificFlags_set(SM_SPECIFIC_FLAG_3, TRUE); mapSpecificFlags_set(SM_SPECIFIC_FLAG_3_ALL_SM_ABILITIES_LEARNED, TRUE);
sp34 = ASSET_E12_TEXT_BOTTLES_LEARNED_TUTORIAL_MOVES; sp34 = ASSET_E12_TEXT_BOTTLES_LEARNED_TUTORIAL_MOVES;
}//L80387898 }//L80387898

View File

@@ -101,7 +101,7 @@ void chsmmole_skipIntroTutorial(void){
ability_unlock(ABILITY_8_FLAP_FLIP); ability_unlock(ABILITY_8_FLAP_FLIP);
ability_unlock(ABILITY_5_CLIMB); ability_unlock(ABILITY_5_CLIMB);
chsmmole_setSpiralMountainAbilitiesAsUsed(); chsmmole_setSpiralMountainAbilitiesAsUsed();
mapSpecificFlags_set(SM_SPECIFIC_FLAG_3, TRUE); mapSpecificFlags_set(SM_SPECIFIC_FLAG_3_ALL_SM_ABILITIES_LEARNED, TRUE);
} }
/** /**
* @brief If the player is talking to Intro Bottles for the first time, use the * @brief If the player is talking to Intro Bottles for the first time, use the
@@ -211,8 +211,8 @@ void func_803892C8(ActorMarker *marker, enum asset_e text_id, s32 arg2){
Actor *actor; Actor *actor;
actor = marker_getActor(marker); actor = marker_getActor(marker);
if(!mapSpecificFlags_get(SM_SPECIFIC_FLAG_3) && chmole_learnedAllSpiralMountainAbilities()){ if(!mapSpecificFlags_get(SM_SPECIFIC_FLAG_3_ALL_SM_ABILITIES_LEARNED) && chmole_learnedAllSpiralMountainAbilities()){
mapSpecificFlags_set(SM_SPECIFIC_FLAG_3, TRUE); mapSpecificFlags_set(SM_SPECIFIC_FLAG_3_ALL_SM_ABILITIES_LEARNED, TRUE);
gcdialog_showText(ASSET_E12_TEXT_BOTTLES_LEARNED_TUTORIAL_MOVES, 0xe, actor->position, actor->marker, func_803892C8, NULL); gcdialog_showText(ASSET_E12_TEXT_BOTTLES_LEARNED_TUTORIAL_MOVES, 0xe, actor->position, actor->marker, func_803892C8, NULL);
}//L8038933C }//L8038933C
else{ else{
@@ -306,7 +306,7 @@ void chsmmole_80389610(Actor * this){
} }
break; break;
case 8://L80389720 case 8://L80389720
if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_3)){ if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_3_ALL_SM_ABILITIES_LEARNED)){
if(fileProgressFlag_get(FILEPROG_A6_FURNACE_FUN_COMPLETE)){ if(fileProgressFlag_get(FILEPROG_A6_FURNACE_FUN_COMPLETE)){
sp2C = ASSET_E37_TEXT_BOTTLES_STOP_WASTING_TIME_AFTER_FURNACE_FUN; sp2C = ASSET_E37_TEXT_BOTTLES_STOP_WASTING_TIME_AFTER_FURNACE_FUN;
sp28 |= 1; sp28 |= 1;
@@ -429,7 +429,7 @@ void chsmmole_Update(Actor * this){
mapSpecificFlags_set(SM_SPECIFIC_FLAG_1, TRUE); mapSpecificFlags_set(SM_SPECIFIC_FLAG_1, TRUE);
if(chmole_learnedAllSpiralMountainAbilities()){ if(chmole_learnedAllSpiralMountainAbilities()){
mapSpecificFlags_set(SM_SPECIFIC_FLAG_3, TRUE); mapSpecificFlags_set(SM_SPECIFIC_FLAG_3_ALL_SM_ABILITIES_LEARNED, TRUE);
mapSpecificFlags_set(SM_SPECIFIC_FLAG_2, TRUE); mapSpecificFlags_set(SM_SPECIFIC_FLAG_2, TRUE);
mapSpecificFlags_set(SM_SPECIFIC_FLAG_C, TRUE); mapSpecificFlags_set(SM_SPECIFIC_FLAG_C, TRUE);
mapSpecificFlags_set(SM_SPECIFIC_FLAG_F, TRUE); mapSpecificFlags_set(SM_SPECIFIC_FLAG_F, TRUE);
@@ -446,7 +446,7 @@ void chsmmole_Update(Actor * this){
func_8028E668(this->position, 180.0f, -40.0f, 120.0f); func_8028E668(this->position, 180.0f, -40.0f, 120.0f);
}//L80389B64 }//L80389B64
func_8024E55C(0,sp50); //get face buttons press counters controller_copyFaceButtons(0,sp50); //get face buttons press counters
player_getPosition(sp44); player_getPosition(sp44);
switch (this->state) switch (this->state)
{ {
@@ -455,7 +455,7 @@ void chsmmole_Update(Actor * this){
func_80328FB0(this, 4.0f); func_80328FB0(this, 4.0f);
if( (this->unkF4_8 == 1 && !mapSpecificFlags_get(SM_SPECIFIC_FLAG_1)) if( (this->unkF4_8 == 1 && !mapSpecificFlags_get(SM_SPECIFIC_FLAG_1))
|| (this->unkF4_8 == 8 && !mapSpecificFlags_get(SM_SPECIFIC_FLAG_2)) || (this->unkF4_8 == 8 && !mapSpecificFlags_get(SM_SPECIFIC_FLAG_2))
|| (this->unkF4_8 == 8 && mapSpecificFlags_get(SM_SPECIFIC_FLAG_3) && !mapSpecificFlags_get(SM_SPECIFIC_FLAG_F)) || (this->unkF4_8 == 8 && mapSpecificFlags_get(SM_SPECIFIC_FLAG_3_ALL_SM_ABILITIES_LEARNED) && !mapSpecificFlags_get(SM_SPECIFIC_FLAG_F))
){//L80389C50 ){//L80389C50
if( ((ml_distance_vec3f(sp44, this->unk1C) < this->actor_specific_1_f) && func_8028F20C()) if( ((ml_distance_vec3f(sp44, this->unk1C) < this->actor_specific_1_f) && func_8028F20C())

View File

@@ -2,143 +2,161 @@
#include "functions.h" #include "functions.h"
#include "variables.h" #include "variables.h"
//extern /* extern functions */
Actor *func_802D94B4(ActorMarker *, Gfx **, Mtx **, Vtx**); Actor *func_802D94B4(ActorMarker *, Gfx **, Mtx **, Vtx **);
void timed_exitStaticCamera(f32); void timed_exitStaticCamera(f32);
//public /* public functions */
void SM_func_8038A5D8(Actor *this); void chBottles2_update(Actor *this);
void func_8038A4DC(Actor *this, s32 arg1); void chBottles2_setState(Actor *this, s32 state);
/* .data */ /* .data */
ActorInfo D_8038B0B0 = { 0x1ED, 0x3B9, 0, 1, NULL, enum chBottles2_state_e {
SM_func_8038A5D8, actor_update_func_80326224, func_80325340, BOTTLES2_STATE_1_IDLE = 1,
BOTTLES2_STATE_2_TEACHING,
BOTTLES2_STATE_3_DISAPPEARED
};
ActorInfo D_8038B0B0 = {
MARKER_1ED_UNKNOWN, ACTOR_3B9_UNKNOWN, NULL, 1, NULL,
chBottles2_update, actor_update_func_80326224, func_80325340,
0, 0, 0.0f, 0 0, 0, 0.0f, 0
}; };
/* .code */ /* .code */
void func_8038A460(Actor *this){ void __chBottles2_setStaticCameraToNode4(Actor *this) {
timed_setStaticCameraToNode(0.0f,4); timed_setStaticCameraToNode(0.0f, 4);
} }
void func_8038A488(ActorMarker *caller, enum asset_e text_id, s32 arg2){ void __chBottles2_textCallback(ActorMarker *caller, enum asset_e text_id, s32 arg2) {
Actor *actor = marker_getActor(caller); Actor *actor = marker_getActor(caller);
if(text_id == 0xdf9 || text_id == 0xe12){
func_8038A4DC(actor, 3); if (text_id == ASSET_DF9_TEXT_BOTTLES_UNKNOWN || text_id == ASSET_E12_TEXT_BOTTLES_LEARNED_TUTORIAL_MOVES) {
chBottles2_setState(actor, BOTTLES2_STATE_3_DISAPPEARED);
} }
timed_exitStaticCamera(0.0f); timed_exitStaticCamera(0.0f);
} }
void func_8038A4DC(Actor *this, s32 arg1){ void chBottles2_setState(Actor *this, s32 state) {
switch(arg1){ switch (state) {
case 2://L8038A50C case BOTTLES2_STATE_2_TEACHING://L8038A50C
this->sm_4070.unk0 = 0; this->sm_4070.dialog_id = NULL;
player_getPosition(this->velocity); player_getPosition(this->velocity);
func_8028F918(0); func_8028F918(0);
if(ability_isUnlocked(ABILITY_7_FEATHERY_FLAP)){
mapSpecificFlags_set(SM_SPECIFIC_FLAG_9, TRUE); if (ability_isUnlocked(ABILITY_7_FEATHERY_FLAP)) {
}else if(ability_isUnlocked(ABILITY_A_HOLD_A_JUMP_HIGHER)){//L8038A540 mapSpecificFlags_set(SM_SPECIFIC_FLAG_9_ABILITY_FEATHERY_UNLOCKED, TRUE);
mapSpecificFlags_set(SM_SPECIFIC_FLAG_8, TRUE); }
}else{//L8038A560 else if (ability_isUnlocked(ABILITY_A_HOLD_A_JUMP_HIGHER)) {//L8038A540
func_8038A460(this); mapSpecificFlags_set(SM_SPECIFIC_FLAG_8_ABILITY_HOLD_A_JUMP_HIGHER_UNLOCKED, TRUE);
ability_unlock(ABILITY_A_HOLD_A_JUMP_HIGHER); }
gcdialog_showText(0xdf6, 0xe, this->unk1C, this->marker, func_8038A488, NULL); else {//L8038A560
this->sm_4070.unk0 = 0xe1a; __chBottles2_setStaticCameraToNode4(this);
mapSpecificFlags_set(SM_SPECIFIC_FLAG_8, FALSE); ability_unlock(ABILITY_A_HOLD_A_JUMP_HIGHER);
}
break; gcdialog_showText(ASSET_DF6_TEXT_BOTTLES_HIGH_JUMP_LEARN, 0xe, this->unk1C, this->marker, __chBottles2_textCallback, NULL);
case 3://L8038A5B0 this->sm_4070.dialog_id = ASSET_E1A_TEXT_BOTTLES_UNKNOWN;
mapSpecificFlags_set(SM_SPECIFIC_FLAG_5, TRUE); mapSpecificFlags_set(SM_SPECIFIC_FLAG_8_ABILITY_HOLD_A_JUMP_HIGHER_UNLOCKED, FALSE);
break; }
break;
case BOTTLES2_STATE_3_DISAPPEARED://L8038A5B0
mapSpecificFlags_set(SM_SPECIFIC_FLAG_5, TRUE);
break;
}//L8038A5BC }//L8038A5BC
subaddie_set_state(this, arg1);
subaddie_set_state(this, state);
} }
void SM_func_8038A5D8(Actor *this){ void chBottles2_update(Actor *this) {
f32 sp5C[3]; f32 plyr_pos[3];
s32 sp44[6]; s32 face_buttons[6];
f32 sp40; f32 distance_to_bottles;
Actor *temp_v0; Actor *bottles_ptr;
s32 temp_a0; s32 dialog_id;
if(!this->initialized){ if (!this->initialized) {
temp_v0 = actorArray_findClosestActorFromActorId(this->position, ACTOR_12B_TUTORIAL_BOTTLES, -1, &sp40); bottles_ptr = actorArray_findClosestActorFromActorId(this->position, ACTOR_12B_TUTORIAL_BOTTLES, -1, &distance_to_bottles);
if(temp_v0){
this->unk1C_x = temp_v0->position_x; if (bottles_ptr) {
this->unk1C_y = temp_v0->position_y; this->unk1C_x = bottles_ptr->position_x;
this->unk1C_z = temp_v0->position_z; this->unk1C_y = bottles_ptr->position_y;
this->unk1C_z = bottles_ptr->position_z;
} }
else{//L8038A630 else {//L8038A630
this->unk1C_x = this->position_x; this->unk1C_x = this->position_x;
this->unk1C_y = this->position_y; this->unk1C_y = this->position_y;
this->unk1C_z = this->position_z; this->unk1C_z = this->position_z;
}//L8038A644 }//L8038A644
this->initialized = TRUE; this->initialized = TRUE;
}//L8038A650 }//L8038A650
func_8024E55C(0, sp44); controller_copyFaceButtons(0, face_buttons);
switch (this->state)
{ switch (this->state) {
case 1://L8038A688 case BOTTLES2_STATE_1_IDLE://L8038A688
if(fileProgressFlag_get(FILEPROG_DB_SKIPPED_TUTORIAL)){ if (fileProgressFlag_get(FILEPROG_DB_SKIPPED_TUTORIAL)) {
marker_despawn(this->marker); marker_despawn(this->marker);
}else{
if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_E)){
func_8038A4DC(this, 2);
} }
} else if (mapSpecificFlags_get(SM_SPECIFIC_FLAG_E)) {
break; chBottles2_setState(this, BOTTLES2_STATE_2_TEACHING);
}
break;
case 2://L8038A6C8 case BOTTLES2_STATE_2_TEACHING://L8038A6C8
if(!func_803114B0()){ if (!func_803114B0()) {
if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_8)){ if (mapSpecificFlags_get(SM_SPECIFIC_FLAG_8_ABILITY_HOLD_A_JUMP_HIGHER_UNLOCKED)) {
func_8038A460(this); __chBottles2_setStaticCameraToNode4(this);
ability_unlock(ABILITY_7_FEATHERY_FLAP); ability_unlock(ABILITY_7_FEATHERY_FLAP);
gcdialog_showText(0xdf7, 0xa, this->unk1C, this->marker, func_8038A488, NULL);
this->sm_4070.unk0 = 0xe1b;
mapSpecificFlags_set(SM_SPECIFIC_FLAG_8, FALSE);
}//L8038A730
if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_9)){ gcdialog_showText(ASSET_DF7_TEXT_BOTTLES_FEATHERY_FLAP_LEARN, 0xa, this->unk1C, this->marker, __chBottles2_textCallback, NULL);
func_8038A460(this); this->sm_4070.dialog_id = ASSET_E1B_TEXT_BOTTLES_UNKNOWN;
ability_unlock(ABILITY_8_FLAP_FLIP); mapSpecificFlags_set(SM_SPECIFIC_FLAG_8_ABILITY_HOLD_A_JUMP_HIGHER_UNLOCKED, FALSE);
gcdialog_showText(0xdf8, 0xa, this->unk1C, this->marker, func_8038A488, NULL); }//L8038A730
this->sm_4070.unk0 = 0xe1c;
mapSpecificFlags_set(SM_SPECIFIC_FLAG_9, FALSE);
}//L8038A794
if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_A)){ if (mapSpecificFlags_get(SM_SPECIFIC_FLAG_9_ABILITY_FEATHERY_UNLOCKED)) {
func_8038A460(this); __chBottles2_setStaticCameraToNode4(this);
func_8028F94C(2, this->unk1C); ability_unlock(ABILITY_8_FLAP_FLIP);
if(!mapSpecificFlags_get(SM_SPECIFIC_FLAG_3) && chmole_learnedAllSpiralMountainAbilities()){ gcdialog_showText(ASSET_DF8_TEXT_BOTTLES_FLAP_FLIP_LEARN, 0xa, this->unk1C, this->marker, __chBottles2_textCallback, NULL);
mapSpecificFlags_set(SM_SPECIFIC_FLAG_3, TRUE); this->sm_4070.dialog_id = ASSET_E1C_TEXT_BOTTLES_UNKNOWN;
temp_a0 = 0xe12; mapSpecificFlags_set(SM_SPECIFIC_FLAG_9_ABILITY_FEATHERY_UNLOCKED, FALSE);
}else{ }//L8038A794
temp_a0 = 0xdf9;
if (mapSpecificFlags_get(SM_SPECIFIC_FLAG_A)) {
__chBottles2_setStaticCameraToNode4(this);
func_8028F94C(2, this->unk1C);
if (!mapSpecificFlags_get(SM_SPECIFIC_FLAG_3_ALL_SM_ABILITIES_LEARNED) && chmole_learnedAllSpiralMountainAbilities()) {
mapSpecificFlags_set(SM_SPECIFIC_FLAG_3_ALL_SM_ABILITIES_LEARNED, TRUE);
dialog_id = ASSET_E12_TEXT_BOTTLES_LEARNED_TUTORIAL_MOVES;
}
else {
dialog_id = ASSET_DF9_TEXT_BOTTLES_UNKNOWN;
}
gcdialog_showText(dialog_id, 0xe, this->unk1C, this->marker, __chBottles2_textCallback, NULL);
mapSpecificFlags_set(SM_SPECIFIC_FLAG_A, FALSE);
this->sm_4070.dialog_id = NULL;
} }
}//L8038A828
gcdialog_showText(temp_a0, 0xe, this->unk1C, this->marker, func_8038A488, NULL); player_getPosition(plyr_pos);
mapSpecificFlags_set(SM_SPECIFIC_FLAG_A, FALSE); plyr_pos[0] = this->velocity_x;
this->sm_4070.unk0 = 0; plyr_pos[2] = this->velocity_z;
func_8028FAB0(plyr_pos);
if (func_8028EFC8() && face_buttons[FACE_BUTTON(BUTTON_B)] == TRUE && func_8028F20C()) {
if (this->sm_4070.dialog_id) {
gcdialog_showText(dialog_id = this->sm_4070.dialog_id, 0, NULL, NULL, NULL, NULL);
}
} }
}//L8038A828 break;
player_getPosition(sp5C);
sp5C[0] = this->velocity_x;
sp5C[2] = this->velocity_z;
func_8028FAB0(sp5C);
if( func_8028EFC8()
&& sp44[FACE_BUTTON(BUTTON_B)] == 1
&& func_8028F20C()
){
if(this->sm_4070.unk0)
gcdialog_showText(temp_a0 = this->sm_4070.unk0, 0, NULL, NULL, NULL, NULL);
}
break;
case 3://L8038A8A0 case BOTTLES2_STATE_3_DISAPPEARED://L8038A8A0
marker_despawn(this->marker); marker_despawn(this->marker);
break; break;
}//L8038A8AC }//L8038A8AC
} }

View File

@@ -46,7 +46,7 @@ void func_8038A8F8(Actor *this){
if( !mapSpecificFlags_get(SM_SPECIFIC_FLAG_10) && sp2C < (f32) this->unkF4_8 && 1780.0f < func_8028E82C()){ if( !mapSpecificFlags_get(SM_SPECIFIC_FLAG_10) && sp2C < (f32) this->unkF4_8 && 1780.0f < func_8028E82C()){
if( !mapSpecificFlags_get(SM_SPECIFIC_FLAG_2) if( !mapSpecificFlags_get(SM_SPECIFIC_FLAG_2)
|| (mapSpecificFlags_get(SM_SPECIFIC_FLAG_3) && !mapSpecificFlags_get(SM_SPECIFIC_FLAG_F)) || (mapSpecificFlags_get(SM_SPECIFIC_FLAG_3_ALL_SM_ABILITIES_LEARNED) && !mapSpecificFlags_get(SM_SPECIFIC_FLAG_F))
){ //L8038AA54 ){ //L8038AA54
this->yaw_ideal = ml_distance_vec3f(this->velocity, this->unk1C) / 150.0; this->yaw_ideal = ml_distance_vec3f(this->velocity, this->unk1C) / 150.0;
func_8028F3D8(this->unk1C, this->yaw_ideal, func_8038A8C0, this->marker); func_8028F3D8(this->unk1C, this->yaw_ideal, func_8038A8C0, this->marker);

View File

@@ -92,7 +92,7 @@ f32 func_8024E420(s32 arg0, s32 arg1, s32 arg2) {
return phi_f2 *= arg0; return phi_f2 *= arg0;
} }
void func_8024E55C(s32 controller_index, s32 dst[6]){ void controller_copyFaceButtons(s32 controller_index, s32 dst[6]){
dst[FACE_BUTTON(BUTTON_A)] = D_80281138[controller_index].face_button[FACE_BUTTON(BUTTON_A)]; dst[FACE_BUTTON(BUTTON_A)] = D_80281138[controller_index].face_button[FACE_BUTTON(BUTTON_A)];
dst[FACE_BUTTON(BUTTON_B)] = D_80281138[controller_index].face_button[FACE_BUTTON(BUTTON_B)]; dst[FACE_BUTTON(BUTTON_B)] = D_80281138[controller_index].face_button[FACE_BUTTON(BUTTON_B)];
dst[FACE_BUTTON(BUTTON_C_LEFT)] = D_80281138[controller_index].face_button[FACE_BUTTON(BUTTON_C_LEFT)]; dst[FACE_BUTTON(BUTTON_C_LEFT)] = D_80281138[controller_index].face_button[FACE_BUTTON(BUTTON_C_LEFT)];

View File

@@ -333,7 +333,7 @@ void func_802C4C14(Actor *this){
} }
else{//L802C4D24 else{//L802C4D24
func_8024E60C(0, sp74); func_8024E60C(0, sp74);
func_8024E55C(0, sp5C); controller_copyFaceButtons(0, sp5C);
controller_getJoystick(0, &sp54); controller_getJoystick(0, &sp54);
switch(this->state){ switch(this->state){
case 2: case 2:

View File

@@ -376,7 +376,7 @@ void chmole_update(Actor *this){
} }
} }
}//L802D9F34 }//L802D9F34
func_8024E55C(0, sp50); // get face buttons press counters controller_copyFaceButtons(0, sp50); // get face buttons press counters
switch(this->state){ switch(this->state){
case 1://L802D9F70 case 1://L802D9F70
this->yaw_ideal = func_80329784(this); this->yaw_ideal = func_80329784(this);

View File

@@ -314,7 +314,7 @@ void chMumbo_update(Actor *this) {
&& func_8028F20C() && func_8028F20C()
&& func_8028EFC8() && func_8028EFC8()
){ ){
func_8024E55C(0, face_buttons); controller_copyFaceButtons(0, face_buttons);
if(face_buttons[FACE_BUTTON(BUTTON_B)] == 1){ if(face_buttons[FACE_BUTTON(BUTTON_B)] == 1){
if (D_8037DDF0 == TRANSFORM_7_WISHWASHY) { if (D_8037DDF0 == TRANSFORM_7_WISHWASHY) {
this->unk38_31 = 0; this->unk38_31 = 0;

View File

@@ -1013,7 +1013,7 @@ void func_802D5628(void){
D_8037DE08 -= time_getDelta(); D_8037DE08 -= time_getDelta();
} }
else{//L802D5B24 else{//L802D5B24
func_8024E55C(0, sp50); //get button inputs controller_copyFaceButtons(0, sp50); //get button inputs
if(sp50[FACE_BUTTON(BUTTON_B)] == 1){ if(sp50[FACE_BUTTON(BUTTON_B)] == 1){
func_80324C58(); func_80324C58();
func_802D6114(); func_802D6114();

View File

@@ -138,7 +138,7 @@ void func_802E35D8(void ) {
} }
} else if (D_8037E8C0.unk14 == 3) { } else if (D_8037E8C0.unk14 == 3) {
sp38 = 0; sp38 = 0;
func_8024E55C(0, &sp40); controller_copyFaceButtons(0, &sp40);
for(i = 0; i < 6; i++){ for(i = 0; i < 6; i++){
if (sp40[i] == 1) { if (sp40[i] == 1) {
sp38++; sp38++;

View File

@@ -487,7 +487,7 @@ void func_80319EA4(void) {
if(D_803830E0 == NULL) if(D_803830E0 == NULL)
return; return;
func_8024E55C(0, sp58); controller_copyFaceButtons(0, sp58);
controller_getJoystick(0, sp4C); controller_getJoystick(0, sp4C);
for(phi_s0 = 0; phi_s0 < 4; phi_s0++){ for(phi_s0 = 0; phi_s0 < 4; phi_s0++){
gczoombox_update(D_803830E0->unk24[phi_s0]); gczoombox_update(D_803830E0->unk24[phi_s0]);

View File

@@ -6,7 +6,7 @@ void func_80363500(Actor *this);
/* .data */ /* .data */
ActorInfo D_80373DC0= { ActorInfo D_80373DC0= {
0x1EE, ACTOR_3BA_UNKOWN, 0, 0x1EE, ACTOR_3BA_UNKNOWN, 0,
0, NULL, 0, NULL,
func_80363500, actor_update_func_80326224, func_80325340, func_80363500, actor_update_func_80326224, func_80325340,
0, 0, 0.0f, 0 0, 0, 0.0f, 0

View File

@@ -27,7 +27,7 @@ void func_80295448(void){
D_8037C310.unk0[0] = controller_getStartButton(0); D_8037C310.unk0[0] = controller_getStartButton(0);
func_8024E60C(0, &D_8037C310.unk0[1]); func_8024E60C(0, &D_8037C310.unk0[1]);
func_8024E6E0(0, &D_8037C310.unk0[4]); func_8024E6E0(0, &D_8037C310.unk0[4]);
func_8024E55C(0, &D_8037C310.unk0[8]); controller_copyFaceButtons(0, &D_8037C310.unk0[8]);
for(i=0; i<0xE; i++){//L802954A8 for(i=0; i<0xE; i++){//L802954A8
D_8037C310.unk7E[i] = D_8037C310.unk70[i]; D_8037C310.unk7E[i] = D_8037C310.unk70[i];
if(D_8037C310.unk70[i]){ if(D_8037C310.unk70[i]){

View File

@@ -376,7 +376,7 @@ void gcdialog_update(void) {
func_8024E5A8(0, controller_face_buttons); func_8024E5A8(0, controller_face_buttons);
func_8024E640(0, controller_side_buttons); func_8024E640(0, controller_side_buttons);
} else { } else {
func_8024E55C(0, controller_face_buttons); controller_copyFaceButtons(0, controller_face_buttons);
func_8024E60C(0, controller_side_buttons); func_8024E60C(0, controller_side_buttons);
} }

View File

@@ -936,7 +936,7 @@ s32 gcPauseMenu_update(void) {
return 0; return 0;
} }
func_8024E55C(0, face_button); controller_copyFaceButtons(0, face_button);
controller_getJoystick(0, joystick); controller_getJoystick(0, joystick);
func_8024E60C(0, sp60); func_8024E60C(0, sp60);
func_8024E6E0(0, sp50); func_8024E6E0(0, sp50);

View File

@@ -881,7 +881,7 @@ void func_80316764(GcZoombox *this, s32 arg1) {
f32 pad0; f32 pad0;
if (!this->unk1A4_10 ) { if (!this->unk1A4_10 ) {
func_8024E55C(0, sp38); controller_copyFaceButtons(0, sp38);
func_8024E60C(0, sp2C); func_8024E60C(0, sp2C);
phi_f0 = time_getDelta(); phi_f0 = time_getDelta();
} else { } else {
@@ -1067,7 +1067,7 @@ void gczoombox_update(GcZoombox *this){
return; return;
if( !this->unk1A4_10 ){ if( !this->unk1A4_10 ){
func_8024E55C(0, sp58); controller_copyFaceButtons(0, sp58);
func_8024E60C(0, sp4C); func_8024E60C(0, sp4C);
tmp_f0 = time_getDelta(); tmp_f0 = time_getDelta();
} }

View File

@@ -120,7 +120,7 @@ void chBrentilda_update(Actor *this) {
func_8028E668(this->position, 280.0f, -40.0f, 160.0f); func_8028E668(this->position, 280.0f, -40.0f, 160.0f);
this->yaw_ideal = (f32) func_80329784(this); this->yaw_ideal = (f32) func_80329784(this);
func_80328FB0(this, 3.0f); func_80328FB0(this, 3.0f);
func_8024E55C(0, sp78); controller_copyFaceButtons(0, sp78);
player_getPosition(sp64); player_getPosition(sp64);
temp_f0 = sp64[1] - this->position[1]; temp_f0 = sp64[1] - this->position[1];
if ((temp_f0 > -100.0f) && (temp_f0 < 350.0f)) { if ((temp_f0 > -100.0f) && (temp_f0 < 350.0f)) {

View File

@@ -1159,7 +1159,7 @@ void lair_func_8038E0B0(void) {
){ ){
func_80319EA4(); func_80319EA4();
func_8038C9D0(); func_8038C9D0();
func_8024E55C(0, sp48); controller_copyFaceButtons(0, sp48);
func_8024E60C(0, sp3C); func_8024E60C(0, sp3C);
if (D_8037DCB8->currFfMode < 3) { if (D_8037DCB8->currFfMode < 3) {
player_getPosition(D_8037DCB8->playerPosition); player_getPosition(D_8037DCB8->playerPosition);

View File

@@ -468,7 +468,7 @@ void lair_func_8038F924(Actor *this) {
particleEmitter_emitN(sp54, 6); particleEmitter_emitN(sp54, 6);
} }
} }
func_8024E55C(0, sp7C); controller_copyFaceButtons(0, sp7C);
func_8024E60C(0, sp6C); func_8024E60C(0, sp6C);
func_8038EDBC(this); func_8038EDBC(this);
switch(this->state){ switch(this->state){

View File

@@ -108,7 +108,7 @@ void func_803902B8(Actor *this) {
this->unk38_0 = sp58; this->unk38_0 = sp58;
sp58 = ml_vec3f_within_distance(this->position, sp5C, 400.0f); sp58 = ml_vec3f_within_distance(this->position, sp5C, 400.0f);
if (fileProgressFlag_get(sp54 + FILEPROG_AD_CHEATO_BLUEEGGS_UNLOCKED)) { if (fileProgressFlag_get(sp54 + FILEPROG_AD_CHEATO_BLUEEGGS_UNLOCKED)) {
func_8024E55C(0, sp3C); controller_copyFaceButtons(0, sp3C);
sp58 &= (sp3C[FACE_BUTTON(BUTTON_B)] == 1) || func_8028EC04(); sp58 &= (sp3C[FACE_BUTTON(BUTTON_B)] == 1) || func_8028EC04();
} }
if (sp58 && !*(s32 *)&this->local) { if (sp58 && !*(s32 *)&this->local) {