general cleanup of ttc related code

This commit is contained in:
Bl00D4NGEL
2024-10-10 22:54:45 +02:00
parent f8b724f598
commit 3a8222b5cd
5 changed files with 210 additions and 94 deletions

View File

@@ -328,7 +328,7 @@ enum volatile_flags_e {
VOLATILE_FLAG_74_SANDCASTLE_INFINITE_EGGS, VOLATILE_FLAG_74_SANDCASTLE_INFINITE_EGGS,
VOLATILE_FLAG_75_SANDCASTLE_INFINITE_RED_FEATHERS, VOLATILE_FLAG_75_SANDCASTLE_INFINITE_RED_FEATHERS,
VOLATILE_FLAG_76_SANDCASTLE_INFINITE_GOLD_FEATHERS, VOLATILE_FLAG_76_SANDCASTLE_INFINITE_GOLD_FEATHERS,
VOLATILE_FLAG_77_SANDCASTLE_SET_HEALTH_TO_MAX, // unused VOLATILE_FLAG_77_SANDCASTLE_SET_HEALTH_TO_MAX,
VOLATILE_FLAG_78_SANDCASTLE_NO_BONUS, VOLATILE_FLAG_78_SANDCASTLE_NO_BONUS,
VOLATILE_FLAG_79, // unused VOLATILE_FLAG_79, // unused
VOLATILE_FLAG_7A, // unused VOLATILE_FLAG_7A, // unused
@@ -4431,7 +4431,7 @@ enum asset_e
ASSET_E35_DIALOG_BOTTLES_BONUS_REMINDER = VER_SELECT(0xE35, 0xa77, 0, 0), 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_E37_TEXT_BOTTLES_STOP_WASTING_TIME_AFTER_FURNACE_FUN = 0xE37, // Talk to bottles after beating furnace fun
ASSET_E38_CHEATING_ERASE_SAVE_CONFIRMATION, ASSET_E38_DIALOG_CHEATING_ERASE_SAVE_CONFIRMATION,
ASSET_E57_DIALOG_FIRST_JIGGY = VER_SELECT(0xF57, 0xabd, 0, 0), ASSET_E57_DIALOG_FIRST_JIGGY = VER_SELECT(0xF57, 0xabd, 0, 0),
@@ -4450,8 +4450,8 @@ enum asset_e
ASSET_FAD_TEXT_UNKNOWN = 0xfad, ASSET_FAD_TEXT_UNKNOWN = 0xfad,
ASSET_FBE_TEXT_CHEATING_ERASE_SAVE_WARNING = 0xfbe, ASSET_FBE_DIALOG_CHEATING_ERASE_SAVE_WARNING = 0xfbe,
ASSET_FBF_TEXT_ERASED_SAVE, ASSET_FBF_DIALOG_ERASED_SAVE,
ASSET_10A1_DIALOG_BRENTILDA_MEET = 0x10A1, ASSET_10A1_DIALOG_BRENTILDA_MEET = 0x10A1,
ASSET_10A2_TEXT_UNKNOWN, ASSET_10A2_TEXT_UNKNOWN,

View File

@@ -5,14 +5,12 @@
#include "SnS.h" #include "SnS.h"
/* extern */ /* extern */
extern void func_802D6310(f32, enum map_e, s32, s32, enum file_progress_e);
void func_802D6310(f32, enum map_e, s32, s32, enum file_progress_e);
extern BKModel *mapModel_getModel(s32); extern BKModel *mapModel_getModel(s32);
extern u8 D_8037DCC0[7]; extern u8 gCompletedBottleBonusGames[7];
/* .h */ /* .h */
static void __code3E30_resetSecretCheatCodeProgress(void); static void __code3E30_resetSecretCheatCodeProgress(void);
static u32 __code3E30_scrambleAddressForSecretCheatCode(); static u32 __code3E30_scrambleAddressForSecretCheatCode();
@@ -48,7 +46,7 @@ typedef struct
static s32 __code3E30_getNumberOfBannedCheatCodesEntered(); static s32 __code3E30_getNumberOfBannedCheatCodesEntered();
/* .data */ /* .data */
static s32 secretCheatCodeRelatedValue = NULL; static s32 sSecretCheatCodeRelatedValue = NULL;
enum floor_letters_e { enum floor_letters_e {
FLOOR_LETTER_J = 0x70, FLOOR_LETTER_J = 0x70,
@@ -78,6 +76,17 @@ enum floor_letters_e {
FLOOR_LETTER_K = 0x38 FLOOR_LETTER_K = 0x38
}; };
/**
* The floor tiles look like this (_ being empty):
* J _ G _ A _ L
* _ V _ E _ C _
* M _ N _ R _ P
* _ D _ O _ S _
* Z _ U _ Y _ I
* _ X _ T _ F _
* O _ A _ W _ O
* _ H _ B _ K _
*/
static LetterFloorTile sLetterFloorTiles[] = { static LetterFloorTile sLetterFloorTiles[] = {
{0x02, FLOOR_LETTER_J, 0, 0.0f}, {0x02, FLOOR_LETTER_J, 0, 0.0f},
{0x04, FLOOR_LETTER_G, 0, 0.0f}, {0x04, FLOOR_LETTER_G, 0, 0.0f},
@@ -152,7 +161,7 @@ static void __code3E30_transformMeshCallbackOverlayInit(s32 arg0, BKVtxRef *vtx_
static void __code3E30_setupCheatCodeTimer(s32 new_timer_state) static void __code3E30_setupCheatCodeTimer(s32 new_timer_state)
{ {
if (new_timer_state == 1) if (new_timer_state == 1)
{ // something in FF? {
if (volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME)) if (volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME))
{ {
// set timer to 50 seconds // set timer to 50 seconds
@@ -163,6 +172,7 @@ static void __code3E30_setupCheatCodeTimer(s32 new_timer_state)
// set timer to 100 seconds // set timer to 100 seconds
item_set(ITEM_0_HOURGLASS_TIMER, 5999); item_set(ITEM_0_HOURGLASS_TIMER, 5999);
} }
item_set(ITEM_6_HOURGLASS, TRUE); item_set(ITEM_6_HOURGLASS, TRUE);
} }
@@ -301,7 +311,7 @@ static void __code3E30_updateTimeDeltaSumForFloorTiles()
static void __code3E30_setsecretCheatCodeRelatedValue(void) static void __code3E30_setsecretCheatCodeRelatedValue(void)
{ {
secretCheatCodeRelatedValue = __code3E30_scrambleAddressForSecretCheatCode(); sSecretCheatCodeRelatedValue = __code3E30_scrambleAddressForSecretCheatCode();
} }
static u32 __code3E30_cheatoCodeUnlocked(s32 cheato_code_index) static u32 __code3E30_cheatoCodeUnlocked(s32 cheato_code_index)
@@ -340,7 +350,7 @@ static void __code3E30_setVolatileFlags(u32 arg0)
static void __code3E30_checkFloorTileForRegularCheatCode(LetterFloorTile *letter_floor_tile) static void __code3E30_checkFloorTileForRegularCheatCode(LetterFloorTile *letter_floor_tile)
{ {
s32 sp40[4]; // unused but required for checksum s32 pad0[4];
bool floor_is_valid_or_correct; bool floor_is_valid_or_correct;
bool is_in_ff_minigame; bool is_in_ff_minigame;
@@ -365,7 +375,7 @@ static void __code3E30_checkFloorTileForRegularCheatCode(LetterFloorTile *letter
for (i = 0; i < 7; i++) for (i = 0; i < 7; i++)
{ {
if (D_8037DCC0[i] != 0) if (gCompletedBottleBonusGames[i] != 0)
{ {
unlocked_cheat_flags |= (0x10 << i); unlocked_cheat_flags |= (0x10 << i);
} }
@@ -563,10 +573,10 @@ void code3E30_overlayInit(void)
{ {
BKModel_transformMesh(sMapState.model2, 0x3C, __code3E30_transformMeshCallbackOverlayInit, 0); BKModel_transformMesh(sMapState.model2, 0x3C, __code3E30_transformMeshCallbackOverlayInit, 0);
sMapState.banjoKazooieCodeEnteredState = 3; sMapState.banjoKazooieCodeEnteredState = 3;
} // L8038B2CC }
__code3E30_setsecretCheatCodeRelatedValue(); __code3E30_setsecretCheatCodeRelatedValue();
__code3E30_resetSecretCheatCodeProgress(); __code3E30_resetSecretCheatCodeProgress();
} // L8038B2E0 }
} }
void code3E30_overlayUpdate(void) void code3E30_overlayUpdate(void)
@@ -648,65 +658,176 @@ static s32 sThirdForbiddenSecretCheatCodeIndex = NULL;
#define VOLATILE_FLAG_CHEAT_OFFSET 0x14 #define VOLATILE_FLAG_CHEAT_OFFSET 0x14
static SecretCheatCode sSecretsCheatCodes[] = { static SecretCheatCode sSecretsCheatCodes[] = {
{"0mjnd", 0, 0x00, 00}, // CHEAT // CHEAT
{"i67knip674bbkjnkbjd62jj4d6iinkigd2dnkbj", 0, 0x01, 00}, // NOW BANJO WILL BE ABLE TO SEE IT ON NABNUTS TABLE {"0mjnd", 0, 0x00, 00},
{"dm422j09jde6gbbkj59nkk4i4idmj0nrdn4i20nk4i", 0, 0x02, 00}, // THIS SECRET YOULL BE GRABBIN IN THE CAPTAINS CABIN
{"n14l2ddmjmngidjl5b661n2j09jd4idmjkndm9661", 0, 0x03, 00}, // AMIDST THE HAUNTED GLOOM A SECRET IN THE BATHROOM // NOW BANJO WILL BE ABLE TO SEE IT ON NABNUTS TABLE
{"nlj2j9dl6696rji274ljni04jid2j09jd27n4d4i24lj", 0, 0x04, 00}, // A DESERT DOOR OPENS WIDE ANCIENT SECRETS WAIT INSIDE {"i67knip674bbkjnkbjd62jj4d6iinkigd2dnkbj", 0, 0x01, 00},
{"6gd6cdmj2jn4d942j2d69jajnb169j2j09jdr943j2", 0, 0x05, 00}, // OUT OF THE SEA IT RISES TO REVEAL MORE SECRET PRIZES
{"l6ide6g56nildjbbmj9nk6gddmj2j09jd4imj90jbbn9", 0, 0x06, 00}, // DONT YOU GO AND TELL HER ABOUT THE SECRET IN HER CELLAR // THIS SECRET YOULL BE GRABBIN IN THE CAPTAINS CABIN
{"i67e6g0ni2jjni40j40j8je7m40me6g0nimnajc69c9jj", 0, 0x07, 00}, // NOW YOU CAN SEE A NICE ICE KEY WHICH YOU CAN HAVE FOR FREE {"dm422j09jde6gbbkj59nkk4i4idmj0nrdn4i20nk4i", 0, 0x02, 00},
{"56945md6idm96g5mi6djl669d76", 0, VOLATILE_FLAG_66_SANDCASTLE_OPEN_DOOR_TWO + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // GO RIGHT ON THROUGH NOTE DOOR TWO
{"i6djl669dm9jj5jd4ic69c9jj", 0, VOLATILE_FLAG_67_SANDCASTLE_OPEN_DOOR_THREE + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // NOTE DOOR THREE GET IN FOR FREE // AMIDST THE HAUNTED GLOOM A SECRET IN THE BATHROOM
{"dn8jnd6g9dm96g5mi6djl669c6g9", 0, VOLATILE_FLAG_68_SANDCASTLE_OPEN_DOOR_FOUR + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // TAKE A TOUR THROUGH NOTE DOOR FOUR {"n14l2ddmjmngidjl5b661n2j09jd4idmjkndm9661", 0, 0x03, 00},
{"g2jdm420mjndi6djl669c4aj42kjnd", 0, VOLATILE_FLAG_69_SANDCASTLE_OPEN_DOOR_FIVE + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // USE THIS CHEAT NOTE DOOR FIVE IS BEAT
{"dm42d94082g2jld66rjii6djl66924h", 0, VOLATILE_FLAG_6A_SANDCASTLE_OPEN_DOOR_SIX + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // THIS TRICKS USED TO OPEN NOTE DOOR SIX // A DESERT DOOR OPENS WIDE ANCIENT SECRETS WAIT INSIDE
{"dmj2jajidmi6djl66942i67i6169j", 0, VOLATILE_FLAG_6B_SANDCASTLE_OPEN_DOOR_SEVEN + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // THE SEVENTH NOTE DOOR IS NOW NO MORE {"nlj2j9dl6696rji274ljni04jid2j09jd27n4d4i24lj", 0, 0x04, 00},
{"e6g0ni5jd7jdcjjdi670bni8j92p455e42061rbjdj", 0, VOLATILE_FLAG_6C_SANDCASTLE_PUZZLE_COMPLETE_CC + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // YOU CAN GET WET FEET NOW CLANKERS JIGGY IS COMPLETE
{"dmjp455e2cgbb6cce6g2d61r4id6l4i5ekgkkbj5b66r27n1r", 0, VOLATILE_FLAG_6D_SANDCASTLE_PUZZLE_COMPLETE_BGS + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // THE JIGGYS FULL OFF YOU STOMP IN TO DINGY BUBBLEGLOOP SWAMP // OUT OF THE SEA IT RISES TO REVEAL MORE SECRET PRIZES
{"dmjp455e2l6ij266cce6g564id6c9jj3jj3erjn8nil4d22i67", 0, VOLATILE_FLAG_6E_SANDCASTLE_PUZZLE_COMPLETE_FP + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // THE JIGGYS DONE SO OFF YOU GO INTO FREEZEEZY PEAK AND ITS SNOW {"6gd6cdmj2jn4d942j2d69jajnb169j2j09jdr943j2", 0, 0x05, 00},
{"56k42p455e42i67l6ijd9j86i4inil5jd261j2gi", 0, VOLATILE_FLAG_6F_SANDCASTLE_PUZZLE_COMPLETE_GV + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // GOBIS JIGGY IS NOW DONE TREK ON IN AND GET SOME SUN
{"dmjp455e2i671nlj7m6bj4id6dmj1ni246ie6g0ni2d96bb", 0, VOLATILE_FLAG_70_SANDCASTLE_PUZZLE_COMPLETE_MMM + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // THE JIGGYS NOW MADE WHOLE INTO THE MANSION YOU CAN STROLL // DONT YOU GO AND TELL HER ABOUT THE SECRET IN HER CELLAR
{"dmjp455e2l6ij26dn8jnd94r6id6dmj9g2dekg08jd2m4r", 0, VOLATILE_FLAG_71_SANDCASTLE_PUZZLE_COMPLETE_RBB + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // THE JIGGYS DONE SO TAKE A TRIP ON TO THE RUSTY BUCKET SHIP {"l6ide6g56nildjbbmj9nk6gddmj2j09jd4imj90jbbn9", 0, 0x06, 00},
{"0b4080b608766l42b6d26ccgi566i4idmjp455e2l6ij", 0, VOLATILE_FLAG_72_SANDCASTLE_PUZZLE_COMPLETE_CCC + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // CLICK CLOCK WOOD IS LOTS OF FUN GO ON IN THE JIGGYS DONE
{"b6d26c56j274dm1nieknip62", 0, VOLATILE_FLAG_73_SANDCASTLE_INFINITE_LIVES + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // LOTS OF GOES WITH MANY BANJOS // NOW YOU CAN SEE A NICE ICE KEY WHICH YOU CAN HAVE FOR FREE
{"knip6kj52c69rbjide6cj552", 0, VOLATILE_FLAG_74_SANDCASTLE_INFINITE_EGGS + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // BANJO BEGS FOR PLENTY OF EGGS {"i67e6g0ni2jjni40j40j8je7m40me6g0nimnajc69c9jj", 0, 0x07, 00},
{"i67e6g0nicbem45m4idmj28e", 0, VOLATILE_FLAG_75_SANDCASTLE_INFINITE_RED_FEATHERS + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // NOW YOU CAN FLY HIGH IN THE SKY
{"n56blji5b67d6r96dj0dknip6", 0, VOLATILE_FLAG_76_SANDCASTLE_INFINITE_GOLD_FEATHERS + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // A GOLDEN GLOW TO PROTECT BANJO // GO RIGHT ON THROUGH NOTE DOOR TWO
{"k6dmr4rj2n9jdmj9jd60bni8j92bn49", 0, VOLATILE_FLAG_7D_SANDCASTLE_RAISE_PIPES_TO_CC + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // BOTH PIPES ARE THERE TO CLANKERS LAIR {"56945md6idm96g5mi6djl669d76", 0, VOLATILE_FLAG_66_SANDCASTLE_OPEN_DOOR_TWO + VOLATILE_FLAG_CHEAT_OFFSET, 00},
{"e6gbb0jn2jd6594rj7mjigr56j2nr4rj", 0, VOLATILE_FLAG_7E_SANDCASTLE_RAISE_PIPE_TO_BRENTILDA + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // YOULL CEASE TO GRIPE WHEN UP GOES A PIPE
{"dmj9j2i67mj9jlni8j9dmni4i74dm0bni8j9", 0, VOLATILE_FLAG_7F_SANDCASTLE_OPEN_CC + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // THERES NOWHERE DANKER THAN IN WITH CLANKER // NOTE DOOR THREE GET IN FOR FREE
{"e6gbbkjn1n3jli67dmj27n1rr400e594bbj429n42jl", 0, VOLATILE_FLAG_80_SANDCASTLE_REMOVE_GRILL_NEAR_BGS_JIGGY + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // YOULL BE AMAZED NOW THE SWAMP PICCY GRILLE IS RAISED {"i6djl669dm9jj5jd4ic69c9jj", 0, VOLATILE_FLAG_67_SANDCASTLE_OPEN_DOOR_THREE + VOLATILE_FLAG_CHEAT_OFFSET, 00},
{"l6idlj2rn49dmjd9jjp455er6l4g142i67dmj9j", 0, VOLATILE_FLAG_81_SANDCASTLE_CCC_JIGGY_PODIUM + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // DONT DESPAIR THE TREE JIGGY PODIUM IS NOW THERE
{"2mj2nig5beknd26bjd29j16ajmj9594bbjnilmnd", 0, VOLATILE_FLAG_82_SANDCASTLE_REMOVE_GRILL_AND_HAT_FROM_STATUE + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // SHES AN UGLY BAT SO LETS REMOVE HER GRILLE AND HAT // TAKE A TOUR THROUGH NOTE DOOR FOUR
{"4d2e6g9bg08elnen2dmj40jknbb1jbd2n7ne", 0, VOLATILE_FLAG_83_SANDCASTLE_REMOVE_ICE + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // ITS YOUR LUCKY DAY AS THE ICE BALL MELTS AWAY {"dn8jnd6g9dm96g5mi6djl669c6g9", 0, VOLATILE_FLAG_68_SANDCASTLE_OPEN_DOOR_FOUR + VOLATILE_FLAG_CHEAT_OFFSET, 00},
{"i674id6dmj27n1re6g0ni2d61r", 0, VOLATILE_FLAG_84_SANDCASTLE_OPEN_BGS + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // NOW IN TO THE SWAMP YOU CAN STOMP
{"dmje0ng2jd96gkbjkgdi67dmje9j9gkkbj", 0, VOLATILE_FLAG_85_SANDCASTLE_REMOVE_BREAKABLE_WALLS + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // THEY CAUSE TROUBLE BUT NOW THEYRE RUBBLE // USE THIS CHEAT NOTE DOOR FIVE IS BEAT
{"e6gbbkj5bnld62jjdmj2m608pg1rrnl", 0, VOLATILE_FLAG_86_SANDCASTLE_SHOCKSPRING_JUMP_UNLOCKED + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // YOULL BE GLAD TO SEE THE SHOCK JUMP PAD {"g2jdm420mjndi6djl669c4aj42kjnd", 0, VOLATILE_FLAG_69_SANDCASTLE_OPEN_DOOR_FIVE + VOLATILE_FLAG_CHEAT_OFFSET, 00},
{"dm42061j24imniled66rji261j7mj9j2nile", 0, VOLATILE_FLAG_87_SANDCASTLE_OPEN_GV + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // THIS COMES IN HANDY TO OPEN SOMEWHERE SANDY
{"7jk22d6re6g9rbne26dn8jdmj1n7ne", 0, VOLATILE_FLAG_88_SANDCASTLE_REMOVE_WEBS + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // WEBS STOP YOUR PLAY SO TAKE THEM AWAY // THIS TRICKS USED TO OPEN NOTE DOOR SIX
{"59gide74bb09ei67e6gaj21n2mjlmj9jej", 0, VOLATILE_FLAG_89_SANDCASTLE_REMOVE_GLASS_EYE + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // GRUNTY WILL CRY NOW YOUVE SMASHED HER EYE {"dm42d94082g2jld66rjii6djl66924h", 0, VOLATILE_FLAG_6A_SANDCASTLE_OPEN_DOOR_SIX + VOLATILE_FLAG_CHEAT_OFFSET, 00},
{"e6g76idkj2nli67e6g0nig2jdmjcbernl", 0, VOLATILE_FLAG_8A_SANDCASTLE_FLIGHT_UNLOCKED + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // YOU WONT BE SAD NOW YOU CAN USE THE FLY PAD
{"i67e6g0ni56nild9gl5j4idmj2i67", 0, VOLATILE_FLAG_8B_SANDCASTLE_OPEN_FP + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // NOW YOU CAN GO AND TRUDGE IN THE SNOW // THE SEVENTH NOTE DOOR IS NOW NO MORE
{"dmj1ni246i6c5m62d2n9ji67e6g9m62d2", 0, VOLATILE_FLAG_8C_SANDCASTLE_OPEN_MMM + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // THE MANSION OF GHOSTS ARE NOW YOUR HOSTS {"dmj2jajidmi6djl66942i67i6169j", 0, VOLATILE_FLAG_6B_SANDCASTLE_OPEN_DOOR_SEVEN + VOLATILE_FLAG_CHEAT_OFFSET, 00},
{"e6g76idmnajd67n4di67dmj9j2i609erd5ndj", 0, VOLATILE_FLAG_8D_SANDCASTLE_REMOVE_CRYPT_GATE + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // YOU WONT HAVE TO WAIT NOW THERES NO CRYPT GATE
{"dm422m6gbl5jd94l6cdmj09erd06cc4ib4l", 0, VOLATILE_FLAG_8E_SANDCASTLE_REMOVE_CRYPT_COFFIN_LID + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // THIS SHOULD GET RID OF THE CRYPT COFFIN LID // YOU CAN GET WET FEET NOW CLANKERS JIGGY IS COMPLETE
{"gre6g5674dm6gdnm4d0mgrd6dmj7ndj9bjajb274d0m", 0, VOLATILE_FLAG_8F_SANDCASTLE_REMOVE_GRATE_NEAR_WATER_SWITCH + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // UP YOU GO WITHOUT A HITCH UP TO THE WATER LEVEL SWITCH {"e6g0ni5jd7jdcjjdi670bni8j92p455e42061rbjdj", 0, VOLATILE_FLAG_6C_SANDCASTLE_PUZZLE_COMPLETE_CC + VOLATILE_FLAG_CHEAT_OFFSET, 00},
{"7mei6ddn8jnd94r4i24lj59gide29g2de2m4r", 0, VOLATILE_FLAG_90_SANDCASTLE_OPEN_RBB + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // WHY NOT TAKE A TRIP INSIDE GRUNTYS RUSTY SHIP
{"dmj594bbj56j2k661d6dmj2m4rr40dg9j9661", 0, VOLATILE_FLAG_91_SANDCASTLE_REMOVE_GRILL_NEAR_RBB_JIGGY + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // THE GRILLE GOES BOOM TO THE SHIP PICTURE ROOM // THE JIGGYS FULL OFF YOU STOMP IN TO DINGY BUBBLEGLOOP SWAMP
{"6i0j4d2m6ijkgddmjb6i5dgiijb594bbj4256ij", 0, VOLATILE_FLAG_92_SANDCASTLE_REMOVE_TUNNEL_GRILL_NEAR_RBB_JIGGY + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // ONCE IT SHONE BUT THE LONG TUNNEL GRILLE IS GONE {"dmjp455e2cgbb6cce6g2d61r4id6l4i5ekgkkbj5b66r27n1r", 0, VOLATILE_FLAG_6D_SANDCASTLE_PUZZLE_COMPLETE_BGS + VOLATILE_FLAG_CHEAT_OFFSET, 00},
{"dm426ij2566ln2e6g0nijidj9dmj766l", 0, VOLATILE_FLAG_93_SANDCASTLE_OPEN_CCW + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // THIS ONES GOOD AS YOU CAN ENTER THE WOOD
{"nijij95ekn9d65jde6gcn9", 0, VOLATILE_FLAG_94_SANDCASTLE_INFINITE_HEALTH + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // AN ENERGY BAR TO GET YOU FAR // THE JIGGYS DONE SO OFF YOU GO INTO FREEZEEZY PEAK AND ITS SNOW
{"l6idkjnlg1k6562jj1g1k6", 0, VOLATILE_FLAG_95_SANDCASTLE_INFINTE_MUMBO_TOKENS + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // DONT BE A DUMBO GO SEE MUMBO {"dmjp455e2l6ij266cce6g564id6c9jj3jj3erjn8nil4d22i67", 0, VOLATILE_FLAG_6E_SANDCASTLE_PUZZLE_COMPLETE_FP + VOLATILE_FLAG_CHEAT_OFFSET, 00},
{"54ajdmjkjn9b6d26cn49", 0, VOLATILE_FLAG_96_SANDCASTLE_INFINITE_AIR + VOLATILE_FLAG_CHEAT_OFFSET, 00}, // GIVE THE BEAR LOTS OF AIR
// GOBIS JIGGY IS NOW DONE TREK ON IN AND GET SOME SUN
{"56k42p455e42i67l6ijd9j86i4inil5jd261j2gi", 0, VOLATILE_FLAG_6F_SANDCASTLE_PUZZLE_COMPLETE_GV + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// THE JIGGYS NOW MADE WHOLE INTO THE MANSION YOU CAN STROLL
{"dmjp455e2i671nlj7m6bj4id6dmj1ni246ie6g0ni2d96bb", 0, VOLATILE_FLAG_70_SANDCASTLE_PUZZLE_COMPLETE_MMM + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// THE JIGGYS DONE SO TAKE A TRIP ON TO THE RUSTY BUCKET SHIP
{"dmjp455e2l6ij26dn8jnd94r6id6dmj9g2dekg08jd2m4r", 0, VOLATILE_FLAG_71_SANDCASTLE_PUZZLE_COMPLETE_RBB + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// CLICK CLOCK WOOD IS LOTS OF FUN GO ON IN THE JIGGYS DONE
{"0b4080b608766l42b6d26ccgi566i4idmjp455e2l6ij", 0, VOLATILE_FLAG_72_SANDCASTLE_PUZZLE_COMPLETE_CCC + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// LOTS OF GOES WITH MANY BANJOS
{"b6d26c56j274dm1nieknip62", 0, VOLATILE_FLAG_73_SANDCASTLE_INFINITE_LIVES + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// BANJO BEGS FOR PLENTY OF EGGS
{"knip6kj52c69rbjide6cj552", 0, VOLATILE_FLAG_74_SANDCASTLE_INFINITE_EGGS + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// NOW YOU CAN FLY HIGH IN THE SKY
{"i67e6g0nicbem45m4idmj28e", 0, VOLATILE_FLAG_75_SANDCASTLE_INFINITE_RED_FEATHERS + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// A GOLDEN GLOW TO PROTECT BANJO
{"n56blji5b67d6r96dj0dknip6", 0, VOLATILE_FLAG_76_SANDCASTLE_INFINITE_GOLD_FEATHERS + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// BOTH PIPES ARE THERE TO CLANKERS LAIR
{"k6dmr4rj2n9jdmj9jd60bni8j92bn49", 0, VOLATILE_FLAG_7D_SANDCASTLE_RAISE_PIPES_TO_CC + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// YOULL CEASE TO GRIPE WHEN UP GOES A PIPE
{"e6gbb0jn2jd6594rj7mjigr56j2nr4rj", 0, VOLATILE_FLAG_7E_SANDCASTLE_RAISE_PIPE_TO_BRENTILDA + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// THERES NOWHERE DANKER THAN IN WITH CLANKER
{"dmj9j2i67mj9jlni8j9dmni4i74dm0bni8j9", 0, VOLATILE_FLAG_7F_SANDCASTLE_OPEN_CC + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// YOULL BE AMAZED NOW THE SWAMP PICCY GRILLE IS RAISED
{"e6gbbkjn1n3jli67dmj27n1rr400e594bbj429n42jl", 0, VOLATILE_FLAG_80_SANDCASTLE_REMOVE_GRILL_NEAR_BGS_JIGGY + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// DONT DESPAIR THE TREE JIGGY PODIUM IS NOW THERE
{"l6idlj2rn49dmjd9jjp455er6l4g142i67dmj9j", 0, VOLATILE_FLAG_81_SANDCASTLE_CCC_JIGGY_PODIUM + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// SHES AN UGLY BAT SO LETS REMOVE HER GRILLE AND HAT
{"2mj2nig5beknd26bjd29j16ajmj9594bbjnilmnd", 0, VOLATILE_FLAG_82_SANDCASTLE_REMOVE_GRILL_AND_HAT_FROM_STATUE + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// ITS YOUR LUCKY DAY AS THE ICE BALL MELTS AWAY
{"4d2e6g9bg08elnen2dmj40jknbb1jbd2n7ne", 0, VOLATILE_FLAG_83_SANDCASTLE_REMOVE_ICE + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// NOW IN TO THE SWAMP YOU CAN STOMP
{"i674id6dmj27n1re6g0ni2d61r", 0, VOLATILE_FLAG_84_SANDCASTLE_OPEN_BGS + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// THEY CAUSE TROUBLE BUT NOW THEYRE RUBBLE
{"dmje0ng2jd96gkbjkgdi67dmje9j9gkkbj", 0, VOLATILE_FLAG_85_SANDCASTLE_REMOVE_BREAKABLE_WALLS + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// YOULL BE GLAD TO SEE THE SHOCK JUMP PAD
{"e6gbbkj5bnld62jjdmj2m608pg1rrnl", 0, VOLATILE_FLAG_86_SANDCASTLE_SHOCKSPRING_JUMP_UNLOCKED + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// THIS COMES IN HANDY TO OPEN SOMEWHERE SANDY
{"dm42061j24imniled66rji261j7mj9j2nile", 0, VOLATILE_FLAG_87_SANDCASTLE_OPEN_GV + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// WEBS STOP YOUR PLAY SO TAKE THEM AWAY
{"7jk22d6re6g9rbne26dn8jdmj1n7ne", 0, VOLATILE_FLAG_88_SANDCASTLE_REMOVE_WEBS + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// GRUNTY WILL CRY NOW YOUVE SMASHED HER EYE
{"59gide74bb09ei67e6gaj21n2mjlmj9jej", 0, VOLATILE_FLAG_89_SANDCASTLE_REMOVE_GLASS_EYE + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// YOU WONT BE SAD NOW YOU CAN USE THE FLY PAD
{"e6g76idkj2nli67e6g0nig2jdmjcbernl", 0, VOLATILE_FLAG_8A_SANDCASTLE_FLIGHT_UNLOCKED + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// NOW YOU CAN GO AND TRUDGE IN THE SNOW
{"i67e6g0ni56nild9gl5j4idmj2i67", 0, VOLATILE_FLAG_8B_SANDCASTLE_OPEN_FP + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// THE MANSION OF GHOSTS ARE NOW YOUR HOSTS
{"dmj1ni246i6c5m62d2n9ji67e6g9m62d2", 0, VOLATILE_FLAG_8C_SANDCASTLE_OPEN_MMM + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// YOU WONT HAVE TO WAIT NOW THERES NO CRYPT GATE
{"e6g76idmnajd67n4di67dmj9j2i609erd5ndj", 0, VOLATILE_FLAG_8D_SANDCASTLE_REMOVE_CRYPT_GATE + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// THIS SHOULD GET RID OF THE CRYPT COFFIN LID
{"dm422m6gbl5jd94l6cdmj09erd06cc4ib4l", 0, VOLATILE_FLAG_8E_SANDCASTLE_REMOVE_CRYPT_COFFIN_LID + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// UP YOU GO WITHOUT A HITCH UP TO THE WATER LEVEL SWITCH
{"gre6g5674dm6gdnm4d0mgrd6dmj7ndj9bjajb274d0m", 0, VOLATILE_FLAG_8F_SANDCASTLE_REMOVE_GRATE_NEAR_WATER_SWITCH + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// WHY NOT TAKE A TRIP INSIDE GRUNTYS RUSTY SHIP
{"7mei6ddn8jnd94r4i24lj59gide29g2de2m4r", 0, VOLATILE_FLAG_90_SANDCASTLE_OPEN_RBB + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// THE GRILLE GOES BOOM TO THE SHIP PICTURE ROOM
{"dmj594bbj56j2k661d6dmj2m4rr40dg9j9661", 0, VOLATILE_FLAG_91_SANDCASTLE_REMOVE_GRILL_NEAR_RBB_JIGGY + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// ONCE IT SHONE BUT THE LONG TUNNEL GRILLE IS GONE
{"6i0j4d2m6ijkgddmjb6i5dgiijb594bbj4256ij", 0, VOLATILE_FLAG_92_SANDCASTLE_REMOVE_TUNNEL_GRILL_NEAR_RBB_JIGGY + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// THIS ONES GOOD AS YOU CAN ENTER THE WOOD
{"dm426ij2566ln2e6g0nijidj9dmj766l", 0, VOLATILE_FLAG_93_SANDCASTLE_OPEN_CCW + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// AN ENERGY BAR TO GET YOU FAR
{"nijij95ekn9d65jde6gcn9", 0, VOLATILE_FLAG_94_SANDCASTLE_INFINITE_HEALTH + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// DONT BE A DUMBO GO SEE MUMBO
{"l6idkjnlg1k6562jj1g1k6", 0, VOLATILE_FLAG_95_SANDCASTLE_INFINTE_MUMBO_TOKENS + VOLATILE_FLAG_CHEAT_OFFSET, 00},
// GIVE THE BEAR LOTS OF AIR
{"54ajdmjkjn9b6d26cn49", 0, VOLATILE_FLAG_96_SANDCASTLE_INFINITE_AIR + VOLATILE_FLAG_CHEAT_OFFSET, 00},
NULL NULL
}; };
static u8 sLastFloorTileHitCorret = 0; // 0 = "initial", 1 = incorrect, 2 = correct static u8 sLastFloorTileHitCorret = 0; // 0 = "initial", 1 = incorrect, 2 = correct
static BannedCheatCodeRange sBannedCheatCodeRanges[4] = { static BannedCheatCodeRange sBannedCheatCodeRanges[4] = {
{VOLATILE_FLAG_66_SANDCASTLE_OPEN_DOOR_TWO + VOLATILE_FLAG_CHEAT_OFFSET, VOLATILE_FLAG_6B_SANDCASTLE_OPEN_DOOR_SEVEN + VOLATILE_FLAG_CHEAT_OFFSET}, {
{VOLATILE_FLAG_6C_SANDCASTLE_PUZZLE_COMPLETE_CC + VOLATILE_FLAG_CHEAT_OFFSET, VOLATILE_FLAG_72_SANDCASTLE_PUZZLE_COMPLETE_CCC + VOLATILE_FLAG_CHEAT_OFFSET}, VOLATILE_FLAG_66_SANDCASTLE_OPEN_DOOR_TWO + VOLATILE_FLAG_CHEAT_OFFSET,
{VOLATILE_FLAG_7D_SANDCASTLE_RAISE_PIPES_TO_CC + VOLATILE_FLAG_CHEAT_OFFSET, VOLATILE_FLAG_93_SANDCASTLE_OPEN_CCW + VOLATILE_FLAG_CHEAT_OFFSET}, VOLATILE_FLAG_6B_SANDCASTLE_OPEN_DOOR_SEVEN + VOLATILE_FLAG_CHEAT_OFFSET
},
{
VOLATILE_FLAG_6C_SANDCASTLE_PUZZLE_COMPLETE_CC + VOLATILE_FLAG_CHEAT_OFFSET,
VOLATILE_FLAG_72_SANDCASTLE_PUZZLE_COMPLETE_CCC + VOLATILE_FLAG_CHEAT_OFFSET
},
{
VOLATILE_FLAG_7D_SANDCASTLE_RAISE_PIPES_TO_CC + VOLATILE_FLAG_CHEAT_OFFSET,
VOLATILE_FLAG_93_SANDCASTLE_OPEN_CCW + VOLATILE_FLAG_CHEAT_OFFSET
},
NULL NULL
}; };
@@ -910,7 +1031,7 @@ static void __code3E30_eraseGameplayDialogCallback(ActorMarker *caller, enum ass
{ {
__code3E30_setNumberOfBannedCheatcodesEntered(3); __code3E30_setNumberOfBannedCheatcodesEntered(3);
__code3E30_checkSecretCheatCodeIndex(sThirdForbiddenSecretCheatCodeIndex); __code3E30_checkSecretCheatCodeIndex(sThirdForbiddenSecretCheatCodeIndex);
gcdialog_showText(ASSET_FBF_TEXT_ERASED_SAVE, 0xC, NULL, NULL, NULL, NULL); gcdialog_showText(ASSET_FBF_DIALOG_ERASED_SAVE, 0xC, NULL, NULL, NULL, NULL);
gameFile_clear(func_802C5A30()); gameFile_clear(func_802C5A30());
gameFile_8033CFD4(func_802C5A30()); gameFile_8033CFD4(func_802C5A30());
func_802C5A3C(-1); func_802C5A3C(-1);
@@ -945,11 +1066,11 @@ static void __code3E30_checkIfBannedCheatCodeEntered(s32 secret_cheat_code_index
__code3E30_setNumberOfBannedCheatcodesEntered(2); __code3E30_setNumberOfBannedCheatcodesEntered(2);
__code3E30_checkSecretCheatCodeIndex(secret_cheat_code_index); __code3E30_checkSecretCheatCodeIndex(secret_cheat_code_index);
__code3E30_resetSecretCheatCodeProgress(); __code3E30_resetSecretCheatCodeProgress();
gcdialog_showText(ASSET_FBE_TEXT_CHEATING_ERASE_SAVE_WARNING, 0xC, NULL, NULL, NULL, NULL); gcdialog_showText(ASSET_FBE_DIALOG_CHEATING_ERASE_SAVE_WARNING, 0xC, NULL, NULL, NULL, NULL);
return; return;
case 2: case 2:
sThirdForbiddenSecretCheatCodeIndex = secret_cheat_code_index; sThirdForbiddenSecretCheatCodeIndex = secret_cheat_code_index;
gcdialog_showText(ASSET_E38_CHEATING_ERASE_SAVE_CONFIRMATION, 0xC, NULL, NULL, __code3E30_eraseGameplayDialogCallback, NULL); gcdialog_showText(ASSET_E38_DIALOG_CHEATING_ERASE_SAVE_CONFIRMATION, 0xC, NULL, NULL, __code3E30_eraseGameplayDialogCallback, NULL);
return; return;
} }
return; return;
@@ -1068,5 +1189,5 @@ static bool __code3E30_isCurrentSecretCheatCodeCharacter0()
bool code_3E30_isSecretCheatCodeRelatedValueEqualToScrambledAddressValue() bool code_3E30_isSecretCheatCodeRelatedValueEqualToScrambledAddressValue()
{ {
return __code3E30_scrambleAddressForSecretCheatCode() == secretCheatCodeRelatedValue; return __code3E30_scrambleAddressForSecretCheatCode() == sSecretCheatCodeRelatedValue;
} }

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) #define CH_BOTTLES_BONUS_PUZZLE_PIECE_COUNT (CH_BOTTLES_BONUS_PUZZLE_HEIGHT * CH_BOTTLES_BONUS_PUZZLE_WIDTH)
/* .extern symbols??? */ /* .extern symbols??? */
extern u8 D_8037DCC0[7]; extern u8 gCompletedBottleBonusGames[7];
extern u8 D_8037DCC7; extern u8 D_8037DCC7;
extern u8 D_8037DCC8; extern u8 D_8037DCC8;
extern u8 D_8037DCC9; extern u8 D_8037DCC9;
@@ -422,7 +422,7 @@ void chBottlesBonus_completedPuzzle(void) {
Actor *actor; Actor *actor;
actor = marker_getActor(chBottlesBonusMarker); actor = marker_getActor(chBottlesBonusMarker);
D_8037DCC0[chBottleBonusPuzzleIndex] = TRUE; gCompletedBottleBonusGames[chBottleBonusPuzzleIndex] = TRUE;
func_80311714(0); func_80311714(0);
gcdialog_showText(D_803681A0[chBottleBonusPuzzleIndex + 1].text_id, 0x86, actor->position, chBottlesBonusMarker, chBottlesBonus_IncrementPuzzle, NULL); gcdialog_showText(D_803681A0[chBottleBonusPuzzleIndex + 1].text_id, 0x86, actor->position, chBottlesBonusMarker, chBottlesBonus_IncrementPuzzle, NULL);
func_80311714(1); 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) { void chBottlesBonus_func_802DEB80(void) {
int i; int i;
for(i = 0; i < 7; i++){ for(i = 0; i < 7; i++){
D_8037DCC0[i] = 0; gCompletedBottleBonusGames[i] = 0;
} }
D_8037DCC7 = 0; D_8037DCC7 = 0;
D_8037DCC8 = 0; D_8037DCC8 = 0;

View File

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

View File

@@ -942,11 +942,6 @@ int func_80311174(s32 text_id, s32 arg1, f32 *pos, ActorMarker *marker, void(*ca
return 0; return 0;
} }
// arg1 = "person" that says text?
// 0xC = Bottles
// 0xE = Jumbo?
// 0x4 = Gruntilda?
// 0xF = Mr Vile?
bool gcdialog_showText(s32 text_id, s32 arg1, f32 *pos, ActorMarker *marker, void(*callback)(ActorMarker *, enum asset_e, s32), void(*arg5)(ActorMarker *, enum asset_e, s32)){ bool gcdialog_showText(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); return func_80311174(text_id, arg1, pos, marker, callback, arg5, 0);
} }