Merge branch 'document/sandcastle' into 'master'

Document the rest of TTC

See merge request banjo.decomp/banjo-kazooie!99
This commit is contained in:
Banjo Kazooie 2024-10-14 21:40:46 +00:00
commit d1b41e109d
18 changed files with 917 additions and 522 deletions

View File

@ -328,7 +328,7 @@ enum volatile_flags_e {
VOLATILE_FLAG_74_SANDCASTLE_INFINITE_EGGS,
VOLATILE_FLAG_75_SANDCASTLE_INFINITE_RED_FEATHERS,
VOLATILE_FLAG_76_SANDCASTLE_INFINITE_GOLD_FEATHERS,
VOLATILE_FLAG_77, // unused
VOLATILE_FLAG_77_SANDCASTLE_SET_HEALTH_TO_MAX,
VOLATILE_FLAG_78_SANDCASTLE_NO_BONUS,
VOLATILE_FLAG_79, // unused
VOLATILE_FLAG_7A, // unused
@ -4460,7 +4460,7 @@ enum asset_e
ASSET_E35_DIALOG_BOTTLES_BONUS_REMINDER = VER_SELECT(0xE35, 0xa77, 0, 0),
ASSET_E37_TEXT_BOTTLES_STOP_WASTING_TIME_AFTER_FURNACE_FUN = 0xE37, // Talk to bottles after beating furnace fun
ASSET_E38_TEXT_UNKNOWN,
ASSET_E38_DIALOG_CHEATING_ERASE_SAVE_CONFIRMATION,
ASSET_E57_DIALOG_FIRST_JIGGY = VER_SELECT(0xF57, 0xabd, 0, 0),
@ -4479,8 +4479,8 @@ enum asset_e
ASSET_FAD_TEXT_UNKNOWN = 0xfad,
ASSET_FBE_TEXT_UNKNOWN = 0xfbe,
ASSET_FBF_TEXT_UNKNOWN,
ASSET_FBE_DIALOG_CHEATING_ERASE_SAVE_WARNING = 0xfbe,
ASSET_FBF_DIALOG_ERASED_SAVE,
ASSET_10A1_DIALOG_BRENTILDA_MEET = 0x10A1,
ASSET_10A2_TEXT_UNKNOWN,

View File

@ -1,7 +1,7 @@
sm_func_80386810 = 0x80386810;
mm_func_803888B0 = 0x803888B0;
TTC_resetSpawnableActors = 0x80388AC0;
ttc_func_8038BF8C = 0x8038BF8C;
code26D0_resetSpawnableActorsForTTC = 0x80388AC0;
code_3E30_isSecretCheatCodeRelatedValueEqualToScrambledAddressValue = 0x8038BF8C;
cc_func_803870E0 = 0x803870E0;
cc_func_80387DA0 = 0x80387DA0;
bgs_func_803885DC = 0x803885DC;

View File

@ -382,7 +382,7 @@ void CC_func_80388F4C(void){
if(D_80389FA0.unk21 == 3){
func_8034A174(D_80389FA0.unk34, 6, sp48);
if(ml_distance_vec3f(sp48, sp6C) <= 130.0f && sp6C[1] - sp48[1] < 50.0f){
func_8031D04C(0x21, 1);
func_8031D04C(MAP_21_CC_WITCH_SWITCH_ROOM, 1);
}
}//L80389260

View File

@ -137,7 +137,7 @@ void func_803870F8(Actor *this){
sp3C[1] = this->position_y + 100;
sp3C[2] = this->position_z;
if(ml_distance_vec3f(&sp3C, &sp70) < 120.0f){
func_8031D04C(0x22, (local->unk0 == 1)? 7 : 6);
func_8031D04C(MAP_22_CC_INSIDE_CLANKER, (local->unk0 == 1)? 7 : 6);
}
}//L80387500
}

View File

@ -70,7 +70,7 @@ static void __chLockup_close(Actor *this){
}
static void __chLockup_open(Actor *this){
func_80389468();
code3040_func_80389468();
subaddie_set_state_with_direction(this, CH_LOCKUP_STATE_OPENING, 0.2f, 1);
this->unk38_31 = 1;
FUNC_8030E8B4(SFX_6B_LOCKUP_OPENING, 1.0f, 32000, this->position, 1250, 2500);

View File

@ -25,11 +25,12 @@ extern ActorInfo gChTreasurehuntRedQuestionMark;
extern ActorInfo gChTreasurehuntRedX;
extern ActorInfo gChTreasure;
void code26D0_genericUpdateFunc(Actor *this);
void code26D0_palmTreeUpdateFunc(Actor *this);
void code26D0_lighthouseAUpdateFunc(Actor *this);
void func_802D3D54(Actor *this);
void code26D0_sharkfoodIslandUpdateFunc(Actor *this);
extern void func_802D3D54(Actor *this);
static void __code26D0_genericUpdateFunc(Actor *this);
static void __code26D0_palmTreeUpdateFunc(Actor *this);
static void __code26D0_lighthouseAUpdateFunc(Actor *this);
static void __code26D0_sharkfoodIslandUpdateFunc(Actor *this);
/* .data */
ActorInfo gBlubberShipTopHatch = {
@ -49,47 +50,47 @@ ActorInfo gLighthouseDoor = {
ActorInfo gSharkfoodIsland = {
MARKER_167_SHARKFOOD_ISLAND, ACTOR_25C_SHARKFOOD_ISLAND, ASSET_50A_MODEL_SHARKFOOD_ISLAND,
0x1, NULL,
code26D0_sharkfoodIslandUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
__code26D0_sharkfoodIslandUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo gLighthouseA = {
MARKER_267_LIGHTHOUSE_A, ACTOR_2E2_LIGHTHOUSE_A, ASSET_3BD_MODEL_LIGHTHOUSE_A,
0x1, NULL,
code26D0_lighthouseAUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
__code26D0_lighthouseAUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo gLighthouseB = {
MARKER_26A_LIGHTHOUSE_B, ACTOR_2DF_LIGHTHOUSE_B, ASSET_3BE_MODEL_LIGHTHOUSE_B,
0x1, NULL,
code26D0_genericUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
__code26D0_genericUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo gStairs1 = {
MARKER_268_STAIRS_1, ACTOR_2E0_TTC_STAIRS_1, ASSET_3B6_MODEL_TTC_STAIRS_1,
0x1, NULL,
code26D0_genericUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
__code26D0_genericUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo gStairs2 = {
MARKER_269_STAIRS_2, ACTOR_2E1_TTC_STAIRS_2, ASSET_3B7_MODEL_TTC_STAIRS_1,
0x1, NULL,
code26D0_genericUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
__code26D0_genericUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo gPalmTree = {
MARKER_1D5_PALM_TREE, ACTOR_31E_PALM_TREE, ASSET_3A9_MODEL_PALM_TREE,
0x1, NULL,
code26D0_palmTreeUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
__code26D0_palmTreeUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
/* .code */
void TTC_resetSpawnableActors(void)
void code26D0_resetSpawnableActorsForTTC(void)
{
spawnableActorList_add(&gBlubberShipTopHatch, actor_new, ACTOR_FLAG_NONE);
spawnableActorList_add(&gLighthouseDoor, actor_new, ACTOR_FLAG_NONE);
@ -112,14 +113,14 @@ void TTC_resetSpawnableActors(void)
spawnableActorList_add(&gChClam, actor_new, ACTOR_FLAG_UNKNOWN_0 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_25);
}
void code26D0_genericUpdateFunc(Actor *this){
static void __code26D0_genericUpdateFunc(Actor *this){
if(!this->initialized){
func_802D3D74(this);
this->initialized = TRUE;
}
}
void code26D0_palmTreeUpdateFunc(Actor *this){
static void __code26D0_palmTreeUpdateFunc(Actor *this){
if(!this->initialized){
func_802D3D74(this);
this->initialized = TRUE;
@ -127,21 +128,21 @@ void code26D0_palmTreeUpdateFunc(Actor *this){
}
}
void code26D0_spawnLighthouseB(s32 arg0){
static void __code26D0_spawnLighthouseB(s32 arg0){
ActorMarker *marker = reinterpret_cast(ActorMarker *, arg0);
Actor *this = marker_getActor(marker);
spawn_child_actor(ACTOR_2DF_LIGHTHOUSE_B, &this);
}
void code26D0_lighthouseAUpdateFunc(Actor *this){
code26D0_genericUpdateFunc(this);
static void __code26D0_lighthouseAUpdateFunc(Actor *this){
__code26D0_genericUpdateFunc(this);
if(!this->volatile_initialized){
__spawnQueue_add_1((GenFunction_1)code26D0_spawnLighthouseB, (s32)this->marker);
__spawnQueue_add_1((GenFunction_1)__code26D0_spawnLighthouseB, (s32)this->marker);
this->volatile_initialized = TRUE;
}
}
void code26D0_sharkfoodIslandUpdateFunc(Actor *this){
static void __code26D0_sharkfoodIslandUpdateFunc(Actor *this){
f32 player_position[3];
if(!this->initialized){
@ -160,7 +161,7 @@ void code26D0_sharkfoodIslandUpdateFunc(Actor *this){
else{
this->position_y = -1000.0f;
}
}//L80388E7C
}
if(this->position_y == 700.0f){
player_getPosition(player_position);

View File

@ -5,8 +5,11 @@
extern s32 D_80276CB0;
/* .data */
// code crc0
s32 D_8038C750 = 0x0016D2FD;
// code crc1
s32 D_8038C754 = 0xFB70B01D;
// data crc
s32 D_8038C758 = 0x0004EFAC;
/* .bss */
@ -15,17 +18,17 @@ struct {
s32 unk4;
u8 pad8[4];
s32 unkC;
}D_8038D6F0;
} sD_8038D6F0;
/* .code */
void func_80389430(void){
void __code3040_func_80389430(){
if(getGameMode() != GAME_MODE_7_ATTRACT_DEMO){
func_8029CF48(2, 1, 0.0f);
}
}
void func_80389468(void){
if(D_8038D6F0.unk4 != D_8038C754 || D_8038D6F0.unkC != D_80276CB0){
func_80389430();
void code3040_func_80389468(void){
if(sD_8038D6F0.unk4 != D_8038C754 || sD_8038D6F0.unkC != D_80276CB0){
__code3040_func_80389430();
}
}

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@ extern void func_803458E4(f32[4], f32[4], f32[4], f32);
#define CH_BOTTLES_BONUS_PUZZLE_PIECE_COUNT (CH_BOTTLES_BONUS_PUZZLE_HEIGHT * CH_BOTTLES_BONUS_PUZZLE_WIDTH)
/* .extern symbols??? */
extern u8 D_8037DCC0[7];
extern u8 gCompletedBottleBonusGames[7];
extern u8 D_8037DCC7;
extern u8 D_8037DCC8;
extern u8 D_8037DCC9;
@ -422,7 +422,7 @@ void chBottlesBonus_completedPuzzle(void) {
Actor *actor;
actor = marker_getActor(chBottlesBonusMarker);
D_8037DCC0[chBottleBonusPuzzleIndex] = TRUE;
gCompletedBottleBonusGames[chBottleBonusPuzzleIndex] = TRUE;
func_80311714(0);
gcdialog_showText(D_803681A0[chBottleBonusPuzzleIndex + 1].text_id, 0x86, actor->position, chBottlesBonusMarker, chBottlesBonus_IncrementPuzzle, NULL);
func_80311714(1);
@ -600,7 +600,7 @@ Actor *chBottlesBonus_new(s32 position[3], s32 yaw, ActorInfo *actor_info, u32 f
void chBottlesBonus_func_802DEB80(void) {
int i;
for(i = 0; i < 7; i++){
D_8037DCC0[i] = 0;
gCompletedBottleBonusGames[i] = 0;
}
D_8037DCC7 = 0;
D_8037DCC8 = 0;

View File

@ -39,7 +39,7 @@ void __chCrab_802CB040(Actor *this) {
void __chCrab_802CB078(Actor *this) {
u32 temp_t9;
if ((this->modelCacheIndex != ACTOR_F2_BLACK_SNIPPET) || func_8038B550()) {
if ((this->modelCacheIndex != ACTOR_F2_BLACK_SNIPPET) || code3E30_hasBanjoKazooieCodeBeenEntered()) {
temp_t9 = (u32) this->unk38_31 >> 0x16;
if (this->unk38_31 != 0) {
this->unk38_31--;
@ -159,7 +159,7 @@ bool __chCrab_802CB76C(ActorMarker *marker, ActorMarker *other) {
Actor *this;
this = marker_getActor(marker);
if ((this->modelCacheIndex == ACTOR_F2_BLACK_SNIPPET) && !func_8038B550()) {
if ((this->modelCacheIndex == ACTOR_F2_BLACK_SNIPPET) && !code3E30_hasBanjoKazooieCodeBeenEntered()) {
return FALSE;
}
return TRUE;

View File

@ -83,7 +83,7 @@ s32 mm_hut_smash_count;
u32 CH_TREASUREHUNT_PUZZLE_CURRENT_STEP;
struct FF_StorageStruct* D_8037DCB8;
s32 D_8037DCBC;
u8 D_8037DCC0[7];
u8 gCompletedBottleBonusGames[7]; // bottle bonus puzzle?
u8 D_8037DCC7;
u8 D_8037DCC8;
u8 D_8037DCC9;

View File

@ -361,6 +361,7 @@ void func_802D3CC8(ActorMarker *marker){
func_802D31AC(marker, NULL);
}
// used as init function
void func_802D3CE8(Actor *this){
if(!this->initialized){
marker_setCollisionScripts(this->marker, NULL, func_802D3138, func_802D31AC);
@ -373,6 +374,7 @@ void func_802D3D54(Actor *this){
func_802D3CE8(this);
}
// used as init function
void func_802D3D74(Actor *this){
this->marker->propPtr->unk8_3 = TRUE;
actor_collisionOff(this);

View File

@ -89,7 +89,7 @@ ItemPrint D_803692F8[0x2C] = {
/* .bss */
s32 D_803810B0;
f32 itemPrintValues[0x2C]; //item_print_value
s32 D_80381168[0x2C]; //comusic_e
s32 D_80381168[0x2C]; // item_e => comusic_e
f32 D_80381218[0x2C]; //item_sfx_volume???
s32 D_803812C8[0x2C]; //comusic_e
s32 D_80381378[0x2C]; //sfx_e

View File

@ -231,8 +231,9 @@ void func_8031CE70(f32 *arg0, enum map_e arg1, s32 arg2) {
}
}
void func_8031D04C(enum map_e arg0, s32 arg1) {
func_8031CB50(arg0, arg1, 0);
// set map and exit id?
void func_8031D04C(enum map_e arg0, s32 exit_id) {
func_8031CB50(arg0, exit_id, 0);
}
void func_8031D06C(enum map_e arg0, s32 arg1) {

View File

@ -208,15 +208,15 @@ void func_80322B3C(s32 arg0, s32 arg1){ return; }
void __overlay_ttc_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx){ return; }
void __overlay_ttc_release(void){
func_8038B04C();
code3E30_overlayRelease();
}
void overlay_ttc_init(void){
func_8038B094();
code3E30_overlayInit();
}
void __overlay_ttc_update(void){
func_8038B2F0();
code3E30_overlayUpdate();
}
void func_80322BB8(s32 arg0, s32 arg1){ return; }

View File

@ -321,7 +321,7 @@ s32 func_80334ECC(void) {
phi_v1 = 0x1F;
}
if (((phi_v1 & phi_v0) == 3) && (overlayManagergetLoadedId() == OVERLAY_5_BEACH)) {
if ((ttc_func_8038BF8C() == 0) || (D_80370250 != 0)) {
if ((code_3E30_isSecretCheatCodeRelatedValueEqualToScrambledAddressValue() == FALSE) || (D_80370250 != 0)) {
D_80370250 = (u8)1;
for (phi_v0 = 0; phi_v0 != 0x8F0D180; phi_v0++){
}

View File

@ -128,7 +128,7 @@ void volatileFlag_setAndTriggerDialog_4(enum volatile_flags_e arg0) {
volatileFlag_setAndTriggerDialog(arg0, 4);
}
// called for WISHYWASHYBANJO dialog
// called for WISHYWASHYBANJO dialog, mumbo jumbo speaking?
void volatileFlag_setAndTriggerDialog_E(enum volatile_flags_e arg0) {
volatileFlag_setAndTriggerDialog(arg0, 0xE);
}

View File

@ -374,7 +374,7 @@ void spawnQueue_reset(void){
GV_func_8038F154();
break;
case OVERLAY_5_BEACH:
TTC_resetSpawnableActors();
code26D0_resetSpawnableActorsForTTC();
break;
case OVERLAY_6_JUNGLE:
MM_func_803888B0();