code_8012EC80.c OK and Documented + parameter_static extraction (#534)

* Match remaining functions of code_8012EC80.c

* parameter_static extracted and OK

* Small Progress

* Documentation all over the place

* Finish Documenting

* Cleanup

* Name more textures

* Update knowledge on deku playground player name

* All textures from parameter_static known now

* Finish documenting and validating parameter_static

* More up-to-date SaveContext docs

* More docs

* More cleanup

* Sun -> Star

* Minor touchup

* More cleanup

* pictograph -> pictoBox

* Remove the "unused" part

* More accurate name: hour lines

* It's gsDPLoadTextureBlock, not gsDPSetTextureImage

* Fix parameter_static and merge issues

* More docs from new PRs and Parameter WIP

* Missed a name

* Move parameter_static to interface assets

* Clean up code_8012EC80.c data

* Fix comment

* Add comments to parameter_static

* Oops

* fix merge

* Missed a PR review suggestion

* Fix merge
This commit is contained in:
engineer124 2022-02-05 12:49:21 +11:00 committed by GitHub
parent bcdd99df08
commit 2104c16362
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
65 changed files with 969 additions and 614 deletions

View File

@ -0,0 +1,136 @@
<Root>
<File Name="parameter_static" Segment="2">
<Texture Name="gHeartEmptyTex" OutName="heart_empty" Format="ia8" Width="16" Height="16" Offset="0x0"/>
<Texture Name="gHeartQuarterTex" OutName="heart_quarter" Format="ia8" Width="16" Height="16" Offset="0x100"/>
<Texture Name="gHeartHalfTex" OutName="heart_half" Format="ia8" Width="16" Height="16" Offset="0x200"/>
<Texture Name="gHeartThreeQuarterTex" OutName="heart_three_quarter" Format="ia8" Width="16" Height="16" Offset="0x300"/>
<Texture Name="gHeartFullTex" OutName="heart_full" Format="ia8" Width="16" Height="16" Offset="0x400"/>
<Texture Name="gDefenseHeartEmptyTex" OutName="defense_heart_empty" Format="ia8" Width="16" Height="16" Offset="0x500"/>
<Texture Name="gDefenseHeartQuarterTex" OutName="defense_heart_quarter" Format="ia8" Width="16" Height="16" Offset="0x600"/>
<Texture Name="gDefenseHeartHalfTex" OutName="defense_heart_half" Format="ia8" Width="16" Height="16" Offset="0x700"/>
<Texture Name="gDefenseHeartThreeQuarterTex" OutName="defense_heart_three_quarter" Format="ia8" Width="16" Height="16" Offset="0x800"/>
<Texture Name="gDefenseHeartFullTex" OutName="defense_heart_full" Format="ia8" Width="16" Height="16" Offset="0x900"/>
<Texture Name="gFishermanMinigameTorchIconTex" OutName="fisherman_minigame_torch_icon" Format="ia8" Width="16" Height="30" Offset="0xA00"/>
<Texture Name="gSwordTrainingLogIconTex" OutName="sword_training_log_icon" Format="ia8" Width="24" Height="16" Offset="0xBE0"/>
<Texture Name="gSmallKeyCounterIconTex" OutName="small_key_counter_icon" Format="ia8" Width="16" Height="16" Offset="0xD60"/>
<Texture Name="gRupeeCounterIconTex" OutName="rupee_counter_icon" Format="ia8" Width="16" Height="16" Offset="0xE60"/>
<Texture Name="gButtonBackgroundTex" OutName="button_background" Format="ia8" Width="32" Height="32" Offset="0xF60"/>
<Texture Name="gEquippedItemOutlineTex" OutName="equipped_item_outline" Format="ia8" Width="32" Height="32" Offset="0x1360"/>
<Texture Name="gEmptyCLeftArrowTex" OutName="empty_c_left_arrow" Format="ia8" Width="32" Height="32" Offset="0x1760"/>
<Texture Name="gEmptyCDownArrowTex" OutName="empty_c_down_arrow" Format="ia8" Width="32" Height="32" Offset="0x1B60"/>
<Texture Name="gEmptyCRightArrowTex" OutName="empty_c_right_arrow" Format="ia8" Width="32" Height="32" Offset="0x1F60"/>
<Texture Name="gTimerClockIconTex" OutName="timer_clock_icon" Format="ia8" Width="16" Height="16" Offset="0x2360"/>
<Texture Name="gMapBossIconTex" OutName="map_boss_icon" Format="ia8" Width="8" Height="8" Offset="0x2460"/>
<Texture Name="gOcarinaATex" OutName="ocarina_a" Format="ia8" Width="16" Height="16" Offset="0x24A0"/>
<Texture Name="gOcarinaCDownTex" OutName="ocarina_c_down" Format="ia8" Width="16" Height="16" Offset="0x25A0"/>
<Texture Name="gOcarinaCRightTex" OutName="ocarina_c_right" Format="ia8" Width="16" Height="16" Offset="0x26A0"/>
<Texture Name="gOcarinaCLeftTex" OutName="ocarina_c_left" Format="ia8" Width="16" Height="16" Offset="0x27A0"/>
<Texture Name="gOcarinaCUpTex" OutName="ocarina_c_up" Format="ia8" Width="16" Height="16" Offset="0x28A0"/>
<Texture Name="gOcarinaTrebleClefTex" OutName="ocarina_treble_clef" Format="i4" Width="16" Height="32" Offset="0x29A0"/>
<Texture Name="gSceneTitleCardGradientTex" OutName="scene_title_card_gradient" Format="i8" Width="64" Height="1" Offset="0x2AA0"/>
<!-- All four versions of Tatl textures are identical -->
<Texture Name="gTatlCUpENGTex" OutName="tatl_c_up_eng" Format="ia4" Width="32" Height="12" Offset="0x2AE0"/>
<Texture Name="gTatlCUpGERTex" OutName="tatl_c_up_ger" Format="ia4" Width="32" Height="12" Offset="0x2BA0"/>
<Texture Name="gTatlCUpFRATex" OutName="tatl_c_up_fra" Format="ia4" Width="32" Height="12" Offset="0x2C60"/>
<Texture Name="gTatlCUpESPTex" OutName="tatl_c_up_esp" Format="ia4" Width="32" Height="12" Offset="0x2D20"/>
<Texture Name="gCarrotIconTex" OutName="carrot_icon" Format="rgba32" Width="16" Height="16" Offset="0x2DE0"/>
<Texture Name="gGoldSkulltulaCounterIconTex" OutName="gold_skulltula_counter_icon" Format="rgba32" Width="24" Height="18" Offset="0x31E0"/>
<Texture Name="gBeaverRingIconTex" OutName="beaver_ring_icon" Format="rgba32" Width="24" Height="16" Offset="0x38A0"/>
<Texture Name="gMapDungeonEntranceIconTex" OutName="map_dungeon_entrance_icon" Format="rgba16" Width="8" Height="8" Offset="0x3EA0"/>
<Texture Name="gMapChestIconTex" OutName="map_chest_icon" Format="rgba16" Width="8" Height="8" Offset="0x3F20"/>
<Texture Name="gArcheryScoreIconTex" OutName="archery_score_icon" Format="rgba16" Width="24" Height="16" Offset="0x3FA0"/>
<!-- Looking through the lens of the pictograph box -->
<Texture Name="gPictoBoxFocusIconTex" OutName="picto_box_focus_icon" Format="i4" Width="32" Height="16" Offset="0x42A0"/>
<Texture Name="gPictoBoxFocusBorderTex" OutName="picto_box_focus_border" Format="ia4" Width="16" Height="16" Offset="0x43A0"/>
<Texture Name="gPictoBoxFocusTextTex" OutName="picto_box_focus_text" Format="i4" Width="32" Height="8" Offset="0x4420"/>
<Texture Name="gCounterDigit0Tex" OutName="counter_digit_0" Format="i8" Width="8" Height="16" Offset="0x44A0"/>
<Texture Name="gCounterDigit1Tex" OutName="counter_digit_1" Format="i8" Width="8" Height="16" Offset="0x4520"/>
<Texture Name="gCounterDigit2Tex" OutName="counter_digit_2" Format="i8" Width="8" Height="16" Offset="0x45A0"/>
<Texture Name="gCounterDigit3Tex" OutName="counter_digit_3" Format="i8" Width="8" Height="16" Offset="0x4620"/>
<Texture Name="gCounterDigit4Tex" OutName="counter_digit_4" Format="i8" Width="8" Height="16" Offset="0x46A0"/>
<Texture Name="gCounterDigit5Tex" OutName="counter_digit_5" Format="i8" Width="8" Height="16" Offset="0x4720"/>
<Texture Name="gCounterDigit6Tex" OutName="counter_digit_6" Format="i8" Width="8" Height="16" Offset="0x47A0"/>
<Texture Name="gCounterDigit7Tex" OutName="counter_digit_7" Format="i8" Width="8" Height="16" Offset="0x4820"/>
<Texture Name="gCounterDigit8Tex" OutName="counter_digit_8" Format="i8" Width="8" Height="16" Offset="0x48A0"/>
<Texture Name="gCounterDigit9Tex" OutName="counter_digit_9" Format="i8" Width="8" Height="16" Offset="0x4920"/>
<Texture Name="gCounterColonTex" OutName="counter_colon" Format="i8" Width="8" Height="16" Offset="0x49A0"/>
<Texture Name="gStrayFairyMapCounterSlashTex" OutName="stray_fairy_map_counter_slash" Format="i8" Width="8" Height="16" Offset="0x4A20"/>
<Texture Name="gAmmoDigit0Tex" OutName="ammo_digit_0" Format="ia8" Width="8" Height="8" Offset="0x4AA0"/>
<Texture Name="gAmmoDigit1Tex" OutName="ammo_digit_1" Format="ia8" Width="8" Height="8" Offset="0x4AE0"/>
<Texture Name="gAmmoDigit2Tex" OutName="ammo_digit_2" Format="ia8" Width="8" Height="8" Offset="0x4B20"/>
<Texture Name="gAmmoDigit3Tex" OutName="ammo_digit_3" Format="ia8" Width="8" Height="8" Offset="0x4B60"/>
<Texture Name="gAmmoDigit4Tex" OutName="ammo_digit_4" Format="ia8" Width="8" Height="8" Offset="0x4BA0"/>
<Texture Name="gAmmoDigit5Tex" OutName="ammo_digit_5" Format="ia8" Width="8" Height="8" Offset="0x4BE0"/>
<Texture Name="gAmmoDigit6Tex" OutName="ammo_digit_6" Format="ia8" Width="8" Height="8" Offset="0x4C20"/>
<Texture Name="gAmmoDigit7Tex" OutName="ammo_digit_7" Format="ia8" Width="8" Height="8" Offset="0x4C60"/>
<Texture Name="gAmmoDigit8Tex" OutName="ammo_digit_8" Format="ia8" Width="8" Height="8" Offset="0x4CA0"/>
<Texture Name="gAmmoDigit9Tex" OutName="ammo_digit_9" Format="ia8" Width="8" Height="8" Offset="0x4CE0"/>
<Texture Name="gAmmoDigitHalfTex" OutName="ammo_digit_half" Format="ia8" Width="16" Height="8" Offset="0x4D20"/>
<Texture Name="gMagicBarEndTex" OutName="magic_bar_end" Format="ia8" Width="8" Height="16" Offset="0x4DA0"/>
<Texture Name="gMagicBarMidTex" OutName="magic_bar_mid" Format="ia8" Width="24" Height="16" Offset="0x4E20"/>
<Texture Name="gMagicBarFillTex" OutName="magic_bar_fill" Format="ia8" Width="8" Height="8" Offset="0x4FA0"/>
<!-- The analog clock from day one until midnight of the final day -->
<Texture Name="gThreeDayClockDiamondTex" OutName="three_day_clock_diamond" Format="ia8" Width="40" Height="32" Offset="0x4FE0"/>
<Texture Name="gThreeDayClockMoonHourTex" OutName="three_day_clock_moon_hour" Format="ia8" Width="24" Height="24" Offset="0x54E0"/>
<Texture Name="gThreeDayClockSunHourTex" OutName="three_day_clock_sun_hour" Format="ia8" Width="24" Height="24" Offset="0x5720"/>
<Texture Name="gThreeDayClockBorderTex" OutName="three_day_clock_border" Format="i4" Width="64" Height="48" Offset="0x5960"/>
<Texture Name="gThreeDayClockHourLinesTex" OutName="three_day_clock_hour_lines" Format="i4" Width="64" Height="35" Offset="0x5F60"/>
<Texture Name="gThreeDayClockStarMinuteTex" OutName="three_day_clock_star_minute" Format="i4" Width="16" Height="16" Offset="0x63C0"/>
<Texture Name="gThreeDayClockHour12Tex" OutName="three_day_clock_hour_12" Format="i4" Width="16" Height="11" Offset="0x6440"/>
<Texture Name="gThreeDayClockHour1Tex" OutName="three_day_clock_hour_1" Format="i4" Width="16" Height="11" Offset="0x6498"/>
<Texture Name="gThreeDayClockHour2Tex" OutName="three_day_clock_hour_2" Format="i4" Width="16" Height="11" Offset="0x64F0"/>
<Texture Name="gThreeDayClockHour3Tex" OutName="three_day_clock_hour_3" Format="i4" Width="16" Height="11" Offset="0x6548"/>
<Texture Name="gThreeDayClockHour4Tex" OutName="three_day_clock_hour_4" Format="i4" Width="16" Height="11" Offset="0x65A0"/>
<Texture Name="gThreeDayClockHour5Tex" OutName="three_day_clock_hour_5" Format="i4" Width="16" Height="11" Offset="0x65F8"/>
<Texture Name="gThreeDayClockHour6Tex" OutName="three_day_clock_hour_6" Format="i4" Width="16" Height="11" Offset="0x6650"/>
<Texture Name="gThreeDayClockHour7Tex" OutName="three_day_clock_hour_7" Format="i4" Width="16" Height="11" Offset="0x66A8"/>
<Texture Name="gThreeDayClockHour8Tex" OutName="three_day_clock_hour_8" Format="i4" Width="16" Height="11" Offset="0x6700"/>
<Texture Name="gThreeDayClockHour9Tex" OutName="three_day_clock_hour_9" Format="i4" Width="16" Height="11" Offset="0x6758"/>
<Texture Name="gThreeDayClockHour10Tex" OutName="three_day_clock_hour_10" Format="i4" Width="16" Height="11" Offset="0x67B0"/>
<Texture Name="gThreeDayClockHour11Tex" OutName="three_day_clock_hour_11" Format="i4" Width="16" Height="11" Offset="0x6808"/>
<!-- The digital clock until moon crash after midnight of the final day -->
<Texture Name="gFinalHoursClockDigit0Tex" OutName="final_hours_clock_digit_0" Format="i8" Width="8" Height="8" Offset="0x6860"/>
<Texture Name="gFinalHoursClockDigit1Tex" OutName="final_hours_clock_digit_1" Format="i8" Width="8" Height="8" Offset="0x68A0"/>
<Texture Name="gFinalHoursClockDigit2Tex" OutName="final_hours_clock_digit_2" Format="i8" Width="8" Height="8" Offset="0x68E0"/>
<Texture Name="gFinalHoursClockDigit3Tex" OutName="final_hours_clock_digit_3" Format="i8" Width="8" Height="8" Offset="0x6920"/>
<Texture Name="gFinalHoursClockDigit4Tex" OutName="final_hours_clock_digit_4" Format="i8" Width="8" Height="8" Offset="0x6960"/>
<Texture Name="gFinalHoursClockDigit5Tex" OutName="final_hours_clock_digit_5" Format="i8" Width="8" Height="8" Offset="0x69A0"/>
<Texture Name="gFinalHoursClockDigit6Tex" OutName="final_hours_clock_digit_6" Format="i8" Width="8" Height="8" Offset="0x69E0"/>
<Texture Name="gFinalHoursClockDigit7Tex" OutName="final_hours_clock_digit_7" Format="i8" Width="8" Height="8" Offset="0x6A20"/>
<Texture Name="gFinalHoursClockDigit8Tex" OutName="final_hours_clock_digit_8" Format="i8" Width="8" Height="8" Offset="0x6A60"/>
<Texture Name="gFinalHoursClockDigit9Tex" OutName="final_hours_clock_digit_9" Format="i8" Width="8" Height="8" Offset="0x6AA0"/>
<Texture Name="gFinalHoursClockColonTex" OutName="final_hours_clock_colon" Format="i8" Width="8" Height="8" Offset="0x6AE0"/>
<Texture Name="gFinalHoursClockFrameTex" OutName="final_hours_clock_frame" Format="ia4" Width="80" Height="13" Offset="0x6B20"/>
<Texture Name="gMinigameCountdownGoTex" OutName="minigame_countdown_go" Format="ia8" Width="40" Height="32" Offset="0x6D28"/>
<Texture Name="gMinigameCountdown1Tex" OutName="minigame_countdown_1" Format="ia8" Width="24" Height="32" Offset="0x7228"/>
<Texture Name="gMinigameCountdown2Tex" OutName="minigame_countdown_2" Format="ia8" Width="24" Height="32" Offset="0x7528"/>
<Texture Name="gMinigameCountdown3Tex" OutName="minigame_countdown_3" Format="ia8" Width="24" Height="32" Offset="0x7828"/>
<!-- The letters of "PERFECT!" -->
<Texture Name="gMinigameLetterPTex" OutName="minigame_letter_p" Format="i4" Width="32" Height="33" Offset="0x7B28"/>
<Texture Name="gMinigameLetterETex" OutName="minigame_letter_e" Format="i4" Width="32" Height="33" Offset="0x7D38"/>
<Texture Name="gMinigameLetterRTex" OutName="minigame_letter_r" Format="i4" Width="32" Height="33" Offset="0x7F48"/>
<Texture Name="gMinigameLetterFTex" OutName="minigame_letter_f" Format="i4" Width="32" Height="33" Offset="0x8158"/>
<Texture Name="gMinigameLetterCTex" OutName="minigame_letter_c" Format="i4" Width="32" Height="33" Offset="0x8368"/>
<Texture Name="gMinigameLetterTTex" OutName="minigame_letter_t" Format="i4" Width="32" Height="33" Offset="0x8578"/>
<Texture Name="gMinigameExclamationTex" OutName="minigame_exclamation" Format="i4" Width="32" Height="33" Offset="0x8788"/>
<Texture Name="gStrayFairyWoodfallIconTex" OutName="stray_fairy_woodfall_icon" Format="rgba32" Width="32" Height="24" Offset="0x8998"/>
<Texture Name="gStrayFairySnowheadIconTex" OutName="stray_fairy_snowhead_icon" Format="rgba32" Width="32" Height="24" Offset="0x9598"/>
<Texture Name="gStrayFairyGreatBayIconTex" OutName="stray_fairy_great_bay_icon" Format="rgba32" Width="32" Height="24" Offset="0xA198"/>
<Texture Name="gStrayFairyStoneTowerIconTex" OutName="stray_fairy_stone_tower_icon" Format="rgba32" Width="32" Height="24" Offset="0xAD98"/>
<Texture Name="gStrayFairyGlowingCircleIconTex" OutName="stray_fairy_glowing_circle_icon" Format="i4" Width="32" Height="24" Offset="0xB998"/>
</File>
</Root>

View File

@ -1968,8 +1968,8 @@ void func_801149A0(s32 arg0, s16 arg1);
// void func_80114A9C(void);
// void func_80114B84(void);
// void func_80114CA0(void);
UNK_TYPE func_80114E90(void);
UNK_TYPE func_80114F2C(u8 arg0);
s32 Interface_HasEmptyBottle(void);
s32 Interface_HasItemInBottle(u8 itemId);
// void func_80114FD0(void);
// void func_80115130(void);
// void func_801152B8(void);
@ -2055,7 +2055,7 @@ s32 func_80123810(GlobalContext* globalCtx);
void func_80123AA4(Player* player, s32 arg1);
// void func_80123BD4(void);
// void func_80123C58(void);
// void func_80123C90(void);
void Player_SetEquipmentData(GlobalContext* globalCtx, Player* this);
void func_80123D50(GlobalContext* globalCtx, Player* player, UNK_TYPE arg2, UNK_TYPE arg3);
void func_80123DA4(Player* player);
// void func_80123DC0(void);
@ -2253,16 +2253,16 @@ s32 Room_StartRoomTransition(GlobalContext* globalCtx, RoomContext* roomCtx, s32
s32 Room_HandleLoadCallbacks(GlobalContext* globalCtx, RoomContext* roomCtx);
void Room_Draw(GlobalContext* globalCtx, Room* room, u32 flags);
void func_8012EBF8(GlobalContext* globalCtx, RoomContext* roomCtx);
s32 func_8012EC80(GlobalContext* globalCtx);
void func_8012ED34(s16 equipment);
u8 func_8012ED78(GlobalContext* globalCtx, s16 equipment);
void func_8012EDE8(s16 arg0, u32 arg1);
s32 func_8012EE34(s16 arg0);
void func_8012EF0C(s16 arg0);
void func_8012F0EC(s16 arg0);
void func_8012F1BC(s16 sceneIndex);
s16 func_8012F22C(s16 sceneIndex);
void func_8012F278(GlobalContext* globalCtx);
s32 Inventory_GetBtnBItem(GlobalContext* globalCtx);
void Inventory_ChangeEquipment(s16 value);
u8 Inventory_DeleteEquipment(GlobalContext* globalCtx, s16 equipment);
void Inventory_ChangeUpgrade(s16 upgrade, u32 value);
s32 Inventory_IsMapVisible(s16 sceneNum);
void Inventory_SetMapVisibility(s16 tingleIndex);
void Inventory_SaveDekuPlaygroundHighScore(s16 timerId);
void Inventory_IncrementSkullTokenCount(s16 sceneIndex);
s16 Inventory_GetSkullTokenCount(s16 sceneIndex);
void Inventory_SaveLotteryCodeGuess(GlobalContext* globalCtx);
s32 Object_Spawn(ObjectContext* objectCtx, s16 id);
void Object_InitBank(GameState* gameState, ObjectContext* objectCtx);
void Object_UpdateBank(ObjectContext* objectCtx);

View File

@ -70,7 +70,7 @@
#define ALL_EQUIP_VALUE(equip) ((gSaveContext.inventory.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
#define CUR_EQUIP_VALUE(equip) ((gSaveContext.equips.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
#define CUR_UPG_VALUE(upg) ((gSaveContext.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
#define TAKE_EQUIPPED_ITEM(equip) (gSaveContext.equips.equipment = ((((void)0, gSaveContext.equips.equipment) & (gEquipNegMasks[equip])) | (u16)(0 << gEquipShifts[equip])))
#define SET_EQUIP_VALUE(equip, value) (gSaveContext.equips.equipment = ((((void)0, gSaveContext.equips.equipment) & (gEquipNegMasks[equip])) | (u16)((u16)(value) << gEquipShifts[equip])))
#define CUR_FORM_EQUIP(button) (gSaveContext.equips.buttonItems[CUR_FORM][button])
#define CHECK_QUEST_ITEM(item) (((void)0, gSaveContext.inventory.questItems) & gBitFlags[item])
#define REMOVE_QUEST_ITEM(item) (gSaveContext.inventory.questItems = (((void)0, gSaveContext.inventory.questItems) & (-1 - gBitFlags[item])))

View File

@ -708,7 +708,7 @@ typedef enum {
typedef struct {
/* 0x00 */ u16 unk_0;
/* 0x02 */ u16 unk_2;
/* 0x02 */ u16 timeIncrement;
/* 0x04 */ f32 unk_4;
/* 0x08 */ f32 unk_8;
/* 0x0C */ f32 unk_C;
@ -855,15 +855,15 @@ typedef struct {
/* 0x11F0B */ UNK_TYPE1 pad11F0B[0x5];
/* 0x11F10 */ s32 unk11F10;
/* 0x11F14 */ UNK_TYPE1 pad11F14[0xE];
/* 0x11F22 */ u8 unk11F22;
/* 0x11F22 */ u8 msgMode;
/* 0x11F23 */ UNK_TYPE1 pad11F23[0xFD];
/* 0x12020 */ u8 unk12020;
/* 0x12021 */ u8 choiceIndex;
/* 0x12022 */ u8 unk12022;
/* 0x12023 */ u8 unk12023;
/* 0x12024 */ UNK_TYPE1 unk12024[0x6];
/* 0x1202A */ u16 unk1202A;
/* 0x1202C */ UNK_TYPE1 pad1202C[0x2];
/* 0x1202A */ u16 ocarinaMode;
/* 0x1202C */ u16 ocarinaAction;
/* 0x1202E */ u16 unk1202E;
/* 0x12030 */ s16 unk_12030;
/* 0x12032 */ UNK_TYPE1 unk_12032[0x2];
@ -871,7 +871,11 @@ typedef struct {
/* 0x12044 */ s16 unk12044;
/* 0x12046 */ UNK_TYPE1 pad12046[0x2];
/* 0x12048 */ u8 unk12048; // EnKakasi
/* 0x12049 */ UNK_TYPE1 pad12049[0x21];
/* 0x12049 */ UNK_TYPE1 pad12049[0xB];
/* 0x12054 */ s16 unk12054; // First digit in lottery code guess
/* 0x12056 */ s16 unk12056; // Second digit lottery code guess
/* 0x12058 */ s16 unk12058; // Third digit lottery code guess
/* 0x1205A */ UNK_TYPE1 pad1205A[0x10];
/* 0x1206A */ s16 unk1206A;
/* 0x1206C */ s32 unk1206C;
/* 0x12070 */ UNK_TYPE1 pad12070[0x8];

View File

@ -20,7 +20,7 @@ typedef struct {
/* 0x50 */ u8 dungeonItems[10];
/* 0x5A */ s8 dungeonKeys[10];
/* 0x64 */ s8 strayFairies[10]; // "orange_fairy"
/* 0x6E */ u8 unk_6E[8][3]; // "degnuts_memory_name"
/* 0x6E */ char dekuPlaygroundPlayerName[3][8]; // Stores playerName (8 char) over (3 days) when getting a new high score. original name: degnuts_memory_name
} Inventory; // size = 0x88
typedef struct {
@ -41,6 +41,24 @@ typedef struct {
/* 0x1C */ u32 tempCollectFlags;
} RespawnData; // size = 0x20
typedef struct {
/* 0x00 */ u32 chest;
/* 0x04 */ u32 swch0;
/* 0x08 */ u32 swch1;
/* 0x0C */ u32 clearedRoom;
/* 0x10 */ u32 collectible;
/* 0x14 */ u32 unk_14;
/* 0x18 */ u32 unk_18;
} PermanentSceneFlags; // size = 0x1C
typedef struct {
/* 0x00 */ u32 chest;
/* 0x04 */ u32 swch0;
/* 0x08 */ u32 swch1;
/* 0x0C */ u32 clearedRoom;
/* 0x10 */ u32 collectible;
} CycleSceneFlags; // size = 0x14
typedef struct {
/* 0x0000 */ u32 entranceIndex; // "scene_no"
/* 0x0004 */ u8 equippedMask; // "player_mask"
@ -78,16 +96,37 @@ typedef struct {
/* 0x004A */ s16 savedSceneNum; // "scene_data_ID"
/* 0x004C */ ItemEquips equips;
/* 0x0070 */ Inventory inventory;
/* 0x00F8 */ u32 roomInf[128][7];
/* 0x00F8 */ PermanentSceneFlags permanentSceneFlags[120];
/* 0x0E18 */ u8 unk_E18[0x54];
/* 0x0E6C */ u32 dekuPlaygroundHighScores[3];
/* 0x0E78 */ u32 pictoFlags0;
/* 0x0E7C */ u32 pictoFlags1;
/* 0x0E80 */ u32 unk_E80;
/* 0x0E84 */ u32 unk_E84;
/* 0x0E88 */ u32 unk_E88[7]; // Invadepoh flags
/* 0x0EA4 */ u32 scenesVisible[7]; // tingle maps and clouded regions on pause map. Stores scenes bitwise for up to 224 scenes even though there are not that many scenes
/* 0x0EC0 */ u32 skullTokenCount; // upper 16 bits store Swamp skulls, lower 16 bits store Ocean skulls
/* 0x0EC4 */ u32 unk_EC4; // Gossic stone heart piece flags
/* 0x0EC8 */ u32 unk_EC8;
/* 0x0ECC */ u32 unk_ECC[2]; // Related to blue warps
/* 0x0ED4 */ u32 stolenItems; // Items stolen by Takkuri and given to Curiosity Shop Man
/* 0x0ED8 */ u32 unk_DD8;
/* 0x0EDC */ u32 bankRupees;
/* 0x0EE0 */ u32 unk_EE0;
/* 0x0EE4 */ u32 unk_EE4; // Fishing flags
/* 0x0EE8 */ u32 unk_EE8;
/* 0x0EEC */ u32 horseBackBalloonHighScore;
/* 0x0EF0 */ u32 lotteryCodeGuess; // Lottery code chosen by player (only uses lower three hex digits)
/* 0x0EF4 */ u32 unk_EF4; // Shooting Gallery Man Flags
/* 0x0EF8 */ u8 weekEventReg[100]; // "week_event_reg"
/* 0x0F5C */ u32 mapsVisited; // "area_arrival"
/* 0x0F60 */ u32 unk_F60; // "cloud_clear"
/* 0x0F60 */ u32 mapsVisible; // "cloud_clear"
/* 0x0F64 */ u8 unk_F64; // "oca_rec_flag"
/* 0x0F65 */ u8 unk_F65; // "oca_rec_flag8"
/* 0x0F66 */ u8 unk_F66[128]; // "oca_rec_buff8"
/* 0x0FE6 */ s8 unk_FE6; // "aikotoba_index"
/* 0x0FE7 */ s8 unk_FE7[5]; // "aikotoba_table"
/* 0x0FEC */ s8 lotteryCodes[3][3]; // "numbers_table"
/* 0x0FEC */ s8 lotteryCodes[3][3]; // Preset lottery codes "numbers_table"
/* 0x0FF5 */ s8 spiderHouseMaskOrder[6]; // "kinsta_color_table"
/* 0x0FFB */ s8 bomberCode[5]; // "bombers_aikotoba_table"
/* 0x1000 */ HorseData horseData;
@ -169,12 +208,12 @@ typedef struct {
/* 0x3F54 */ u8 dogIsLost; // "dog_event_flag"
/* 0x3F55 */ u8 nextTransition; // "next_wipe"
/* 0x3F56 */ s16 worldMapArea; // "area_type"
/* 0x3F58 */ s16 unk_3F58; // "sunmoon_flag"
/* 0x3F58 */ s16 sunsSongState; // "sunmoon_flag"
/* 0x3F5A */ s16 healthAccumulator; // "life_mode"
/* 0x3F5C */ s32 unk_3F5C; // "bet_rupees"
/* 0x3F60 */ u8 unk_3F60; // "framescale_flag"
/* 0x3F64 */ f32 unk_3F64; // "framescale_scale"
/* 0x3F68 */ u32 cycleSceneFlags[120][5];
/* 0x3F68 */ CycleSceneFlags cycleSceneFlags[120]; // Scene flags that are temporarily stored over the duration of a single 3-day cycle
/* 0x48C8 */ u16 unk_48C8; // "scene_id_mix"
/* 0x48CA */ u8 maskMaskBit[3]; // masks given away on the Moon
/* 0x48CD */ char unk_48CD[24];
@ -197,4 +236,11 @@ typedef enum {
/* 0xFF */ BTN_DISABLED = 0xFF
} ButtonStatus;
typedef enum {
/* 0 */ SUNSSONG_INACTIVE,
/* 1 */ SUNSSONG_START, // the suns ocarina effect signals that the song has finished playing
/* 2 */ SUNSSONG_SPEED_TIME, // suns was played where time passes, speed up the advancement of time
/* 3 */ SUNSSONG_SPECIAL // time does not advance, but signals the song was played. used for freezing redeads
} SunsSongState;
#endif

3
spec
View File

@ -9290,7 +9290,8 @@ beginseg
name "parameter_static"
compress
romalign 0x1000
include "build/baserom/parameter_static.o"
include "build/assets/interface/parameter_static/parameter_static.o"
number 2
endseg
beginseg

View File

@ -1,6 +1,7 @@
#include "global.h"
#include "interface/parameter_static/parameter_static.h"
// Bit Flag array in which gBitFlags[n] is literally (1 << n)
// Bit Flag array in which gBitFlags[n] is (1 << n)
u32 gBitFlags[] = {
(1 << 0), (1 << 1), (1 << 2), (1 << 3), (1 << 4), (1 << 5), (1 << 6), (1 << 7),
(1 << 8), (1 << 9), (1 << 10), (1 << 11), (1 << 12), (1 << 13), (1 << 14), (1 << 15),
@ -8,164 +9,225 @@ u32 gBitFlags[] = {
(1 << 24), (1 << 25), (1 << 26), (1 << 27), (1 << 28), (1 << 29), (1 << 30), (1 << 31),
};
u16 gEquipMasks[] = { 0x000F, 0x00F0, 0x0F00, 0xF000 };
u16 gEquipNegMasks[] = { 0xFFF0, 0xFF0F, 0xF0FF, 0x0FFF };
// four-bit masks
u16 gEquipMasks[] = {
0xF << 0, // Sword
0xF << 4, // Shield
0xF << 8, // Unused (Tunic)
0xF << 12, // Unused (Boots)
};
// four-bit masks
u16 gEquipNegMasks[] = {
~(0xF << 0), // Sword
~(0xF << 4), // Shield
~(0xF << 8), // Unused (Tunic)
(u16) ~(0xF << 12), // Unused (Boots)
};
// 3 = two bit masks
// 7 = three bit masks
u32 gUpgradeMasks[] = {
0x00000007, 0x00000038, 0x000001C0, 0x00000E00, 0x00003000, 0x0001C000, 0x000E0000, 0x00700000,
7 << 0, // Quivers
7 << 3, // Bomb Bags
7 << 6, // Unused (Strength)
7 << 9, // Unused (Scale)
3 << 12, // Wallets
7 << 14, // Unused (Deku Seed Bullet Bags)
7 << 17, // Unused (Deku Stick)
7 << 20, // Unused (Deku Nut)
};
// 3 = two-bit masks
// 7 = three-bit masks
u32 gUpgradeNegMasks[] = {
0xFFFFFFF8, 0xFFFFFFC7, 0xFFFFFE3F, 0xFFFFF1FF, 0xFFFFCFFF, 0xFFFE3FFF, 0xFFF1FFFF, 0xFF8FFFFF,
~(7 << 0), // Quivers
~(7 << 3), // Bomb Bags
~(7 << 6), // Unused (Strength)
~(7 << 9), // Unused (Scale)
~(3 << 12), // Wallets
~(7 << 14), // Unused (Deku Seed Bullet Bags)
~(7 << 17), // Unused (Deku Stick)
~(7 << 20), // Unused (Deku Nut)
};
u8 gEquipShifts[] = {
0, // Sword
4, // Shield
8, // Unused (Tunic)
12, // Unused (Boots)
};
u8 gUpgradeShifts[] = {
0, // Quivers
3, // Bomb Bags
6, // Unused (Strength)
9, // Unused (Scale)
12, // Wallets
14, // Unused (Deku Seed Bullet Bags)
17, // Unused (Deku Stick)
20, // Unused (Deku Nut)
};
u8 gEquipShifts[] = { 0, 4, 8, 12 };
u8 gUpgradeShifts[] = { 0, 3, 6, 9, 12, 14, 17, 20 };
u16 gUpgradeCapacities[][4] = {
{ 0, 30, 40, 50 }, // Quivers
{ 0, 20, 30, 40 }, // Bomb Bags
{ 0, 0, 0, 0 }, // Unused (Scale)
{ 0, 0, 0, 0 }, // Unused (Strength)
{ 0, 0, 0, 0 }, // Unused (Scale)
{ 99, 200, 500, 500 }, // Wallets
{ 0, 30, 40, 50 }, // Unused (Deku Seed Bullet Bags)
{ 0, 10, 20, 30 }, // Unused (Deku Stick)
{ 0, 20, 30, 40 }, // Unused (Deku Nut)
};
u32 gGsFlagsMask[] = { 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 };
u32 gGsFlagsShift[] = { 0, 8, 16, 24 };
// eight-bit masks
u32 gGsFlagsMask[] = {
0xFF << 0,
0xFF << 8,
0xFF << 16,
0xFF << 24,
};
u32 gGsFlagsShift[] = {
0,
8,
16,
24,
};
// TODO: use symbols for these icon textures once textures are properly in C
void* gItemIcons[] = {
0x08000000, // ITEM_OCARINA
0x08001000, // ITEM_BOW
0x08002000, // ITEM_ARROW_FIRE
0x08003000, // ITEM_ARROW_ICE
0x08004000, // ITEM_ARROW_LIGHT
0x08005000, // ITEM_OCARINA_FAIRY
0x08006000, // ITEM_BOMB
0x08007000, // ITEM_BOMBCHU
0x08008000, // ITEM_STICK
0x08009000, // ITEM_NUT
0x0800A000, // ITEM_MAGIC_BEANS
0x0800B000, // ITEM_SLINGSHOT
0x0800C000, // ITEM_POWDER_KEG
0x0800D000, // ITEM_PICTO_BOX
0x0800E000, // ITEM_LENS
0x0800F000, // ITEM_HOOKSHOT
0x08010000, // ITEM_SWORD_GREAT_FAIRY
0x08011000, // ITEM_LONGSHOT
0x08012000, // ITEM_BOTTLE
0x08013000, // ITEM_POTION_RED
0x08014000, // ITEM_POTION_GREEN
0x08015000, // ITEM_POTION_BLUE
0x08016000, // ITEM_FAIRY
0x08017000, // ITEM_DEKU_PRINCESS
0x08018000, // ITEM_MILK_BOTTLE
0x08019000, // ITEM_MILK_HALF
0x0801A000, // ITEM_FISH
0x0801B000, // ITEM_BUG
0x0801C000, // ITEM_BLUE_FIRE
0x0801D000, // ITEM_POE
0x0801E000, // ITEM_BIG_POE
0x0801F000, // ITEM_SPRING_WATER
0x08020000, // ITEM_HOT_SPRING_WATER
0x08021000, // ITEM_ZORA_EGG
0x08022000, // ITEM_GOLD_DUST
0x08023000, // ITEM_MUSHROOM
0x08024000, // ITEM_SEA_HORSE
0x08025000, // ITEM_CHATEAU
0x08026000, // ITEM_HYLIAN_LOACH
0x08027000, // ITEM_OBABA_DRINK
0x08028000, // ITEM_MOON_TEAR
0x08029000, // ITEM_DEED_LAND
0x0802A000, // ITEM_DEED_SWAMP
0x0802B000, // ITEM_DEED_MOUNTAIN
0x0802C000, // ITEM_DEED_OCEAN
0x0802D000, // ITEM_ROOM_KEY
0x0802E000, // ITEM_LETTER_MAMA
0x0802F000, // ITEM_LETTER_TO_KAFEI
0x08030000, // ITEM_PENDANT_MEMORIES
0x08031000, // ITEM_TINGLE_MAP
0x08032000, // ITEM_MASK_DEKU
0x08033000, // ITEM_MASK_GORON
0x08034000, // ITEM_MASK_ZORA
0x08035000, // ITEM_MASK_FIERCE_DEITY
0x08036000, // ITEM_MASK_TRUTH
0x08037000, // ITEM_MASK_KAFEIS_MASK
0x08038000, // ITEM_MASK_ALL_NIGHT
0x08039000, // ITEM_MASK_BUNNY
0x0803A000, // ITEM_MASK_KEATON
0x0803B000, // ITEM_MASK_GARO
0x0803C000, // ITEM_MASK_ROMANI
0x0803D000, // ITEM_MASK_CIRCUS_LEADER
0x0803E000, // ITEM_MASK_POSTMAN
0x0803F000, // ITEM_MASK_COUPLE
0x08040000, // ITEM_MASK_GREAT_FAIRY
0x08041000, // ITEM_MASK_GIBDO
0x08042000, // ITEM_MASK_DON_GERO
0x08043000, // ITEM_MASK_KAMARO
0x08044000, // ITEM_MASK_CAPTAIN
0x08045000, // ITEM_MASK_STONE
0x08046000, // ITEM_MASK_BREMEN
0x08047000, // ITEM_MASK_BLAST
0x08048000, // ITEM_MASK_SCENTS
0x08049000, // ITEM_MASK_GIANT
0x0804A000, // ITEM_BOW_ARROW_FIRE
0x0804B000, // ITEM_BOW_ARROW_ICE
0x0804C000, // ITEM_BOW_ARROW_LIGHT
0x0804D000, // ITEM_SWORD_KOKIRI
0x0804E000, // ITEM_SWORD_RAZOR
0x0804F000, // ITEM_SWORD_GILDED
0x08050000, // ITEM_SWORD_DEITY
0x08051000, // ITEM_SHIELD_HERO
0x08052000, // ITEM_SHIELD_MIRROR
0x08053000, // ITEM_QUIVER_30
0x08054000, // ITEM_QUIVER_40
0x08055000, // ITEM_QUIVER_50
0x08056000, // ITEM_BOMB_BAG_20
0x08057000, // ITEM_BOMB_BAG_30
0x08058000, // ITEM_BOMB_BAG_40
0x08059000, // ITEM_WALLET_DEFAULT
0x0805A000, // ITEM_WALLET_ADULT
0x0805B000, // ITEM_WALLET_GIANT
0x0805C000, // ITEM_FISHING_POLE
0x0805D000, // ITEM_REMAINS_ODOLWA
0x0805E000, // ITEM_REMAINS_GOHT
0x0805F000, // ITEM_REMAINS_GYORG
0x08060000, // ITEM_REMAINS_TWINMOLD
0x08062000, // ITEM_SONG_SONATA
0x08062000, // ITEM_SONG_LULLABY
0x08062000, // ITEM_SONG_NOVA
0x08062000, // ITEM_SONG_ELEGY
0x08062000, // ITEM_SONG_OATH
0x08062000, // ITEM_SONG_SARIA
0x08062000, // ITEM_SONG_TIME
0x08062000, // ITEM_SONG_HEALING
0x08062000, // ITEM_SONG_EPONA
0x08062000, // ITEM_SONG_SOARING
0x08062000, // ITEM_SONG_STORMS
0x08062000, // ITEM_SONG_SUN
0x08061000, // ITEM_BOMBERS_NOTEBOOK
0x09000000, // ITEM_SKULL_TOKEN
0x09000900, // ITEM_HEART_CONTAINER
0x09001200, // ITEM_HEART_PIECE
0x08062000, //
0x08062000, //
0x08062000, // ITEM_SONG_LULLABY_INTRO
0x09003600, // ITEM_KEY_BOSS
0x09004800, // ITEM_COMPASS
0x09003F00, // ITEM_DUNGEON_MAP
0x09005100, // ITEM_STRAY_FAIRIES
0x09005A00, // ITEM_KEY_SMALL
0x09006300, // ITEM_MAGIC_SMALL
0x09006C00, // ITEM_MAGIC_LARGE
0x08062180, // ITEM_HEART_PIECE_2
0x08062A80, // ITEM_INVALID_1
0x08063380, // ITEM_INVALID_2
0x020028A0, // ITEM_INVALID_3
0x020025A0, // ITEM_INVALID_4
0x020027A0, // ITEM_INVALID_5
0x020026A0, // ITEM_INVALID_6
0x020024A0, // ITEM_INVALID_7
0x08000000, // ITEM_OCARINA
0x08001000, // ITEM_BOW
0x08002000, // ITEM_ARROW_FIRE
0x08003000, // ITEM_ARROW_ICE
0x08004000, // ITEM_ARROW_LIGHT
0x08005000, // ITEM_OCARINA_FAIRY
0x08006000, // ITEM_BOMB
0x08007000, // ITEM_BOMBCHU
0x08008000, // ITEM_STICK
0x08009000, // ITEM_NUT
0x0800A000, // ITEM_MAGIC_BEANS
0x0800B000, // ITEM_SLINGSHOT
0x0800C000, // ITEM_POWDER_KEG
0x0800D000, // ITEM_PICTO_BOX
0x0800E000, // ITEM_LENS
0x0800F000, // ITEM_HOOKSHOT
0x08010000, // ITEM_SWORD_GREAT_FAIRY
0x08011000, // ITEM_LONGSHOT
0x08012000, // ITEM_BOTTLE
0x08013000, // ITEM_POTION_RED
0x08014000, // ITEM_POTION_GREEN
0x08015000, // ITEM_POTION_BLUE
0x08016000, // ITEM_FAIRY
0x08017000, // ITEM_DEKU_PRINCESS
0x08018000, // ITEM_MILK_BOTTLE
0x08019000, // ITEM_MILK_HALF
0x0801A000, // ITEM_FISH
0x0801B000, // ITEM_BUG
0x0801C000, // ITEM_BLUE_FIRE
0x0801D000, // ITEM_POE
0x0801E000, // ITEM_BIG_POE
0x0801F000, // ITEM_SPRING_WATER
0x08020000, // ITEM_HOT_SPRING_WATER
0x08021000, // ITEM_ZORA_EGG
0x08022000, // ITEM_GOLD_DUST
0x08023000, // ITEM_MUSHROOM
0x08024000, // ITEM_SEA_HORSE
0x08025000, // ITEM_CHATEAU
0x08026000, // ITEM_HYLIAN_LOACH
0x08027000, // ITEM_OBABA_DRINK
0x08028000, // ITEM_MOON_TEAR
0x08029000, // ITEM_DEED_LAND
0x0802A000, // ITEM_DEED_SWAMP
0x0802B000, // ITEM_DEED_MOUNTAIN
0x0802C000, // ITEM_DEED_OCEAN
0x0802D000, // ITEM_ROOM_KEY
0x0802E000, // ITEM_LETTER_MAMA
0x0802F000, // ITEM_LETTER_TO_KAFEI
0x08030000, // ITEM_PENDANT_MEMORIES
0x08031000, // ITEM_TINGLE_MAP
0x08032000, // ITEM_MASK_DEKU
0x08033000, // ITEM_MASK_GORON
0x08034000, // ITEM_MASK_ZORA
0x08035000, // ITEM_MASK_FIERCE_DEITY
0x08036000, // ITEM_MASK_TRUTH
0x08037000, // ITEM_MASK_KAFEIS_MASK
0x08038000, // ITEM_MASK_ALL_NIGHT
0x08039000, // ITEM_MASK_BUNNY
0x0803A000, // ITEM_MASK_KEATON
0x0803B000, // ITEM_MASK_GARO
0x0803C000, // ITEM_MASK_ROMANI
0x0803D000, // ITEM_MASK_CIRCUS_LEADER
0x0803E000, // ITEM_MASK_POSTMAN
0x0803F000, // ITEM_MASK_COUPLE
0x08040000, // ITEM_MASK_GREAT_FAIRY
0x08041000, // ITEM_MASK_GIBDO
0x08042000, // ITEM_MASK_DON_GERO
0x08043000, // ITEM_MASK_KAMARO
0x08044000, // ITEM_MASK_CAPTAIN
0x08045000, // ITEM_MASK_STONE
0x08046000, // ITEM_MASK_BREMEN
0x08047000, // ITEM_MASK_BLAST
0x08048000, // ITEM_MASK_SCENTS
0x08049000, // ITEM_MASK_GIANT
0x0804A000, // ITEM_BOW_ARROW_FIRE
0x0804B000, // ITEM_BOW_ARROW_ICE
0x0804C000, // ITEM_BOW_ARROW_LIGHT
0x0804D000, // ITEM_SWORD_KOKIRI
0x0804E000, // ITEM_SWORD_RAZOR
0x0804F000, // ITEM_SWORD_GILDED
0x08050000, // ITEM_SWORD_DEITY
0x08051000, // ITEM_SHIELD_HERO
0x08052000, // ITEM_SHIELD_MIRROR
0x08053000, // ITEM_QUIVER_30
0x08054000, // ITEM_QUIVER_40
0x08055000, // ITEM_QUIVER_50
0x08056000, // ITEM_BOMB_BAG_20
0x08057000, // ITEM_BOMB_BAG_30
0x08058000, // ITEM_BOMB_BAG_40
0x08059000, // ITEM_WALLET_DEFAULT
0x0805A000, // ITEM_WALLET_ADULT
0x0805B000, // ITEM_WALLET_GIANT
0x0805C000, // ITEM_FISHING_POLE
0x0805D000, // ITEM_REMAINS_ODOLWA
0x0805E000, // ITEM_REMAINS_GOHT
0x0805F000, // ITEM_REMAINS_GYORG
0x08060000, // ITEM_REMAINS_TWINMOLD
0x08062000, // ITEM_SONG_SONATA
0x08062000, // ITEM_SONG_LULLABY
0x08062000, // ITEM_SONG_NOVA
0x08062000, // ITEM_SONG_ELEGY
0x08062000, // ITEM_SONG_OATH
0x08062000, // ITEM_SONG_SARIA
0x08062000, // ITEM_SONG_TIME
0x08062000, // ITEM_SONG_HEALING
0x08062000, // ITEM_SONG_EPONA
0x08062000, // ITEM_SONG_SOARING
0x08062000, // ITEM_SONG_STORMS
0x08062000, // ITEM_SONG_SUN
0x08061000, // ITEM_BOMBERS_NOTEBOOK
0x09000000, // ITEM_SKULL_TOKEN
0x09000900, // ITEM_HEART_CONTAINER
0x09001200, // ITEM_HEART_PIECE
0x08062000, //
0x08062000, //
0x08062000, // ITEM_SONG_LULLABY_INTRO
0x09003600, // ITEM_KEY_BOSS
0x09004800, // ITEM_COMPASS
0x09003F00, // ITEM_DUNGEON_MAP
0x09005100, // ITEM_STRAY_FAIRIES
0x09005A00, // ITEM_KEY_SMALL
0x09006300, // ITEM_MAGIC_SMALL
0x09006C00, // ITEM_MAGIC_LARGE
0x08062180, // ITEM_HEART_PIECE_2
0x08062A80, // ITEM_INVALID_1
0x08063380, // ITEM_INVALID_2
gOcarinaCUpTex, // ITEM_INVALID_3
gOcarinaCDownTex, // ITEM_INVALID_4
gOcarinaCLeftTex, // ITEM_INVALID_5
gOcarinaCRightTex, // ITEM_INVALID_6
gOcarinaATex, // ITEM_INVALID_7
};
// Used to map item IDs to inventory slots
@ -412,7 +474,7 @@ u16 gScenesPerRegion[11][27] = {
},
};
s32 func_8012EC80(GlobalContext* globalCtx) {
s32 Inventory_GetBtnBItem(GlobalContext* globalCtx) {
if (gSaveContext.buttonStatus[0] == BTN_DISABLED) {
return ITEM_NONE;
} else if (gSaveContext.unk_1015 == ITEM_NONE) {
@ -429,129 +491,237 @@ s32 func_8012EC80(GlobalContext* globalCtx) {
}
}
void func_8012ED34(s16 equipment);
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/func_8012ED34.s")
/**
* Only changes shield
*/
void Inventory_ChangeEquipment(s16 value) {
SET_EQUIP_VALUE(EQUIP_SHIELD, value);
}
u8 func_8012ED78(GlobalContext* globalCtx, s16 equipment);
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/func_8012ED78.s")
/**
* Only deletes shield, equipment argument unused and is a remnant of OoT
*/
u8 Inventory_DeleteEquipment(GlobalContext* globalCtx, s16 equipment) {
Player* player = GET_PLAYER(globalCtx);
void func_8012EDE8(s16 arg0, u32 arg1);
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/func_8012EDE8.s")
if (CUR_EQUIP_VALUE_VOID(EQUIP_SHIELD) != 0) {
SET_EQUIP_VALUE(EQUIP_SHIELD, 0);
Player_SetEquipmentData(globalCtx, player);
return true;
}
s32 func_8012EE34(s16 arg0) {
s16 num = 0;
return false;
}
if (arg0 >= 0x20) {
if (arg0 < 0x40) {
num = 1;
} else if (arg0 < 0x60) {
num = 2;
} else if (arg0 < 0x80) {
num = 3;
} else if (arg0 < 0xA0) {
num = 4;
} else if (arg0 < 0xC0) {
num = 5;
} else if (arg0 < 0xE0) {
num = 6;
void Inventory_ChangeUpgrade(s16 upgrade, u32 value) {
u32 upgrades = gSaveContext.inventory.upgrades;
upgrades &= gUpgradeNegMasks[upgrade];
upgrades |= value << gUpgradeShifts[upgrade];
gSaveContext.inventory.upgrades = upgrades;
}
s32 Inventory_IsMapVisible(s16 sceneNum) {
s16 index = 0;
/**
* a single index of scenesVisible can only hold 32 bits. So for every 32 scenes in the scene enum,
* increment to the next index of scenesVisible so that every scene gets a unique flag in scenesVisible,
* 224 bits were allocated to this although there are only 112 scenes
*/
if (sceneNum >= 0x20) {
if (sceneNum < 0x40) {
index = 1;
} else if (sceneNum < 0x60) {
index = 2;
} else if (sceneNum < 0x80) {
index = 3;
} else if (sceneNum < 0xA0) {
index = 4;
} else if (sceneNum < 0xC0) {
index = 5;
} else if (sceneNum < 0xE0) {
index = 6;
}
}
if (gSaveContext.roomInf[125][num] & gBitFlags[arg0 - (num << 5)]) {
return 1;
if (gSaveContext.scenesVisible[index] & gBitFlags[sceneNum - (index << 5)]) {
return true;
}
return 0;
return false;
}
static u16 D_801C2380[6][12] = {
{ SCENE_00KEIKOKU, SCENE_BOTI, SCENE_13HUBUKINOMITI, SCENE_24KEMONOMITI, SCENE_IKANAMAE, SCENE_TOWN, SCENE_ICHIBA,
SCENE_BACKTOWN, SCENE_CLOCKTOWER, SCENE_ALLEY, -1 },
{ SCENE_20SICHITAI, SCENE_20SICHITAI2, SCENE_21MITURINMAE, SCENE_22DEKUCITY, SCENE_DEKU_KING, SCENE_KINSTA1, -1 },
{ SCENE_10YUKIYAMANOMURA, SCENE_10YUKIYAMANOMURA2, SCENE_11GORONNOSATO, SCENE_11GORONNOSATO2, SCENE_16GORON_HOUSE,
SCENE_12HAKUGINMAE, SCENE_14YUKIDAMANOMITI, SCENE_GORONRACE, SCENE_17SETUGEN, SCENE_17SETUGEN2, -1 },
{ SCENE_F01, SCENE_ROMANYMAE, SCENE_OMOYA, SCENE_F01C, SCENE_F01_B, SCENE_KOEPONARACE, -1 },
{ SCENE_30GYOSON, SCENE_SINKAI, SCENE_31MISAKI, SCENE_TORIDE, SCENE_KAIZOKU, SCENE_33ZORACITY, SCENE_35TAKI, -1 },
{ SCENE_F40, SCENE_F41, SCENE_CASTLE, SCENE_IKANA, SCENE_REDEAD, -1 },
static u16 sScenesPerTingleMap[6][12] = {
{
// Clock Town Tingle Map
SCENE_00KEIKOKU,
SCENE_BOTI,
SCENE_13HUBUKINOMITI,
SCENE_24KEMONOMITI,
SCENE_IKANAMAE,
SCENE_TOWN,
SCENE_ICHIBA,
SCENE_BACKTOWN,
SCENE_CLOCKTOWER,
SCENE_ALLEY,
-1,
},
{
// Woodfall Tingle Map
SCENE_20SICHITAI,
SCENE_20SICHITAI2,
SCENE_21MITURINMAE,
SCENE_22DEKUCITY,
SCENE_DEKU_KING,
SCENE_KINSTA1,
-1,
},
{
// Snowhead Tingle Map
SCENE_10YUKIYAMANOMURA,
SCENE_10YUKIYAMANOMURA2,
SCENE_11GORONNOSATO,
SCENE_11GORONNOSATO2,
SCENE_16GORON_HOUSE,
SCENE_12HAKUGINMAE,
SCENE_14YUKIDAMANOMITI,
SCENE_GORONRACE,
SCENE_17SETUGEN,
SCENE_17SETUGEN2,
-1,
},
{
// Romani Ranch Tingle Map
SCENE_F01,
SCENE_ROMANYMAE,
SCENE_OMOYA,
SCENE_F01C,
SCENE_F01_B,
SCENE_KOEPONARACE,
-1,
},
{
// Great Bay Tingle Map
SCENE_30GYOSON,
SCENE_SINKAI,
SCENE_31MISAKI,
SCENE_TORIDE,
SCENE_KAIZOKU,
SCENE_33ZORACITY,
SCENE_35TAKI,
-1,
},
{
// Stone Tower Tingle Map
SCENE_F40,
SCENE_F41,
SCENE_CASTLE,
SCENE_IKANA,
SCENE_REDEAD,
-1,
},
};
void func_8012EF0C(s16 arg0) {
s16 phi_v0 = 0;
s16 phi_v1 = 0;
u16(*new_var)[] = &D_801C2380[arg0];
/**
* Map visibility is achieved by purchasing a tingle map
*/
void Inventory_SetMapVisibility(s16 tingleIndex) {
s16 i = 0;
s16 index = 0;
u16(*tingleMapSceneIndices)[] = &sScenesPerTingleMap[tingleIndex];
if ((arg0 >= 0) && (arg0 < 6)) {
if ((tingleIndex >= 0) && (tingleIndex < 6)) {
while (true) {
if ((*new_var)[phi_v0] == 0xFFFF) {
if ((*tingleMapSceneIndices)[i] == 0xFFFF) {
break;
}
if (((s16)(*new_var)[phi_v0]) < 0x20) {
phi_v1 = 0;
} else if (((s16)(*new_var)[phi_v0]) < 0x40) {
phi_v1 = 1;
} else if (((s16)(*new_var)[phi_v0]) < 0x60) {
phi_v1 = 2;
} else if (((s16)(*new_var)[phi_v0]) < 0x80) {
phi_v1 = 3;
} else if (((s16)(*new_var)[phi_v0]) < 0xA0) {
phi_v1 = 4;
} else if (((s16)(*new_var)[phi_v0]) < 0xC0) {
phi_v1 = 5;
} else if (((s16)(*new_var)[phi_v0]) < 0xE0) {
phi_v1 = 6;
/**
* a single index of scenesVisible can only hold 32 bits. So for every 32 scenes in the scene enum,
* increment to the next index of scenesVisible so that every scene gets a unique flag in scenesVisible,
* 224 bits were allocated to this although there are only 112 scenes
*/
if (((s16)(*tingleMapSceneIndices)[i]) < 0x20) {
index = 0;
} else if (((s16)(*tingleMapSceneIndices)[i]) < 0x40) {
index = 1;
} else if (((s16)(*tingleMapSceneIndices)[i]) < 0x60) {
index = 2;
} else if (((s16)(*tingleMapSceneIndices)[i]) < 0x80) {
index = 3;
} else if (((s16)(*tingleMapSceneIndices)[i]) < 0xA0) {
index = 4;
} else if (((s16)(*tingleMapSceneIndices)[i]) < 0xC0) {
index = 5;
} else if (((s16)(*tingleMapSceneIndices)[i]) < 0xE0) {
index = 6;
}
// Required to match
gSaveContext.roomInf[125][phi_v1] =
gSaveContext.roomInf[125][phi_v1] | gBitFlags[(s16)(*new_var)[phi_v0] - (phi_v1 << 5)];
phi_v0++;
gSaveContext.scenesVisible[index] =
gSaveContext.scenesVisible[index] | gBitFlags[(s16)(*tingleMapSceneIndices)[i] - (index << 5)];
i++;
}
if ((*new_var) == D_801C2380[0]) {
gSaveContext.unk_F60 |= 3;
} else if ((*new_var) == D_801C2380[1]) {
gSaveContext.unk_F60 |= 0x1C;
} else if ((*new_var) == D_801C2380[2]) {
gSaveContext.unk_F60 |= 0xE0;
} else if ((*new_var) == D_801C2380[3]) {
gSaveContext.unk_F60 |= 0x100;
} else if ((*new_var) == D_801C2380[4]) {
gSaveContext.unk_F60 |= 0x1E00;
} else if ((*new_var) == D_801C2380[5]) {
gSaveContext.unk_F60 |= 0x6000;
if ((*tingleMapSceneIndices) == sScenesPerTingleMap[0]) {
gSaveContext.mapsVisible |= 3;
} else if ((*tingleMapSceneIndices) == sScenesPerTingleMap[1]) {
gSaveContext.mapsVisible |= 0x1C;
} else if ((*tingleMapSceneIndices) == sScenesPerTingleMap[2]) {
gSaveContext.mapsVisible |= 0xE0;
} else if ((*tingleMapSceneIndices) == sScenesPerTingleMap[3]) {
gSaveContext.mapsVisible |= 0x100;
} else if ((*tingleMapSceneIndices) == sScenesPerTingleMap[4]) {
gSaveContext.mapsVisible |= 0x1E00;
} else if ((*tingleMapSceneIndices) == sScenesPerTingleMap[5]) {
gSaveContext.mapsVisible |= 0x6000;
}
}
XREG(95) = 0;
}
void func_8012F0EC(s16 arg0);
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/func_8012F0EC.s")
/**
* Also stores the players filename into dekuPlaygroundPlayerName
*/
void Inventory_SaveDekuPlaygroundHighScore(s16 timerId) {
s16 i;
#ifdef NON_MATCHING
// regalloc
void func_8012F1BC(s16 sceneIndex) {
if (sceneIndex == SCENE_KINSTA1) {
gSaveContext.roomInf[126][0] = ((((gSaveContext.roomInf[126][0] & 0xFFFF0000) >> 0x10) + 1) << 0x10) |
(gSaveContext.roomInf[126][0] & 0xFFFF);
} else {
gSaveContext.roomInf[126][0] =
((gSaveContext.roomInf[126][0] + 1) & 0xFFFF) | (gSaveContext.roomInf[126][0] & 0xFFFF0000);
}
}
#else
void func_8012F1BC(s16 arg0);
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/func_8012F1BC.s")
#endif
gSaveContext.dekuPlaygroundHighScores[CURRENT_DAY - 1] = gSaveContext.unk_3DE0[timerId];
s16 func_8012F22C(s16 sceneIndex) {
if (sceneIndex == SCENE_KINSTA1) {
return (gSaveContext.roomInf[126][0] & 0xFFFF0000) >> 0x10;
} else {
return gSaveContext.roomInf[126][0] & 0xFFFF;
for (i = 0; i < 8; i++) {
gSaveContext.inventory.dekuPlaygroundPlayerName[CURRENT_DAY - 1][i] = gSaveContext.playerName[i];
}
}
void func_8012F278(GlobalContext* globalCtx);
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/func_8012F278.s")
void Inventory_IncrementSkullTokenCount(s16 sceneIndex) {
if (sceneIndex == SCENE_KINSTA1) {
// Swamp Spider House (increment high bits of skullTokenCount)
gSaveContext.skullTokenCount = ((u16)(((gSaveContext.skullTokenCount & 0xFFFF0000) >> 0x10) + 1) << 0x10) |
(gSaveContext.skullTokenCount & 0xFFFF);
} else {
// Ocean Spider House (increment low bits of skullTokenCount)
gSaveContext.skullTokenCount =
(((u16)gSaveContext.skullTokenCount + 1) & 0xFFFF) | (gSaveContext.skullTokenCount & 0xFFFF0000);
}
}
s16 Inventory_GetSkullTokenCount(s16 sceneIndex) {
if (sceneIndex == SCENE_KINSTA1) {
// Swamp Spider House
return (gSaveContext.skullTokenCount & 0xFFFF0000) >> 0x10;
} else {
// Ocean Spider House
return gSaveContext.skullTokenCount & 0xFFFF;
}
}
void Inventory_SaveLotteryCodeGuess(GlobalContext* globalCtx) {
u16 lotteryCodeGuess;
lotteryCodeGuess = ((globalCtx->msgCtx.unk12054 & 0xF) << 8); // First Digit
lotteryCodeGuess |= ((globalCtx->msgCtx.unk12056 & 0xF) << 4); // Second Digit
lotteryCodeGuess |= (globalCtx->msgCtx.unk12058 & 0xF); // Third Digit
gSaveContext.lotteryCodeGuess = (gSaveContext.lotteryCodeGuess & 0xFFFF0000) | (lotteryCodeGuess & 0xFFFF);
}

View File

@ -2233,11 +2233,11 @@ void func_800B9120(ActorContext* actorCtx) {
void Actor_InitContext(GlobalContext* globalCtx, ActorContext* actorCtx, ActorEntry* actorEntry) {
ActorOverlay* overlayEntry;
u32* cycleFlags;
CycleSceneFlags* cycleFlags;
s32 i;
gSaveContext.weekEventReg[92] |= 0x80;
cycleFlags = gSaveContext.cycleSceneFlags[convert_scene_number_among_shared_scenes(globalCtx->sceneNum)];
cycleFlags = &gSaveContext.cycleSceneFlags[convert_scene_number_among_shared_scenes(globalCtx->sceneNum)];
bzero(actorCtx, sizeof(ActorContext));
ActorOverlayTable_Init();
@ -2251,14 +2251,14 @@ void Actor_InitContext(GlobalContext* globalCtx, ActorContext* actorCtx, ActorEn
overlayEntry++;
}
actorCtx->flags.chest = cycleFlags[0];
actorCtx->flags.switches[0] = cycleFlags[1];
actorCtx->flags.switches[1] = cycleFlags[2];
actorCtx->flags.chest = cycleFlags->chest;
actorCtx->flags.switches[0] = cycleFlags->swch0;
actorCtx->flags.switches[1] = cycleFlags->swch1;
if (globalCtx->sceneNum == SCENE_INISIE_R) {
cycleFlags = gSaveContext.cycleSceneFlags[globalCtx->sceneNum];
cycleFlags = &gSaveContext.cycleSceneFlags[globalCtx->sceneNum];
}
actorCtx->flags.collectible[0] = cycleFlags[4];
actorCtx->flags.clearedRoom = cycleFlags[3];
actorCtx->flags.collectible[0] = cycleFlags->collectible;
actorCtx->flags.clearedRoom = cycleFlags->clearedRoom;
TitleCard_ContextInit(&globalCtx->state, &actorCtx->titleCtxt);
func_800B6468(globalCtx);

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "interface/parameter_static/parameter_static.h"
static s16 sHeartsPrimColors[3][3] = { { 255, 70, 50 }, { 255, 190, 0 }, { 100, 100, 255 } };
static s16 sHeartsEnvColors[3][3] = { { 50, 40, 60 }, { 255, 0, 0 }, { 0, 0, 255 } };
@ -14,24 +15,21 @@ s16 sBeatingHeartsDDEnv[3];
s16 sHeartsDDPrim[2][3];
s16 sHeartsDDEnv[2][3];
extern TexturePtr D_02000000; // Empty heart texture
extern TexturePtr D_02000100; // Quarter Heart Texture
extern TexturePtr D_02000200; // Half Heart Texture
extern TexturePtr D_02000300; // Three Quarter Heart Texture
extern TexturePtr D_02000400; // Full heart texture
extern TexturePtr D_02000500; // Empty Double Defense Heart texture
extern TexturePtr D_02000600; // Quarter Double Defense Heart Texture
extern TexturePtr D_02000700; // Half Double Defense Heart Texture
extern TexturePtr D_02000800; // Three Quarter Double Defense Heart Texture
extern TexturePtr D_02000900; // Full Double Defense Heart texture
TexturePtr HeartTextures[] = {
gHeartFullTex, gHeartQuarterTex, gHeartQuarterTex, gHeartQuarterTex,
gHeartQuarterTex, gHeartQuarterTex, gHeartHalfTex, gHeartHalfTex,
gHeartHalfTex, gHeartHalfTex, gHeartHalfTex, gHeartThreeQuarterTex,
gHeartThreeQuarterTex, gHeartThreeQuarterTex, gHeartThreeQuarterTex, gHeartThreeQuarterTex,
};
TexturePtr HeartTextures[] = { &D_02000400, &D_02000100, &D_02000100, &D_02000100, &D_02000100, &D_02000100,
&D_02000200, &D_02000200, &D_02000200, &D_02000200, &D_02000200, &D_02000300,
&D_02000300, &D_02000300, &D_02000300, &D_02000300 };
TexturePtr HeartDDTextures[] = { &D_02000900, &D_02000600, &D_02000600, &D_02000600, &D_02000600, &D_02000600,
&D_02000700, &D_02000700, &D_02000700, &D_02000700, &D_02000700, &D_02000800,
&D_02000800, &D_02000800, &D_02000800, &D_02000800 };
TexturePtr HeartDDTextures[] = {
gDefenseHeartFullTex, gDefenseHeartQuarterTex, gDefenseHeartQuarterTex,
gDefenseHeartQuarterTex, gDefenseHeartQuarterTex, gDefenseHeartQuarterTex,
gDefenseHeartHalfTex, gDefenseHeartHalfTex, gDefenseHeartHalfTex,
gDefenseHeartHalfTex, gDefenseHeartHalfTex, gDefenseHeartThreeQuarterTex,
gDefenseHeartThreeQuarterTex, gDefenseHeartThreeQuarterTex, gDefenseHeartThreeQuarterTex,
gDefenseHeartThreeQuarterTex,
};
void LifeMeter_Init(GlobalContext* globalCtx) {
InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx;
@ -276,11 +274,11 @@ void LifeMeter_Draw(GlobalContext* globalCtx) {
}
if (i < fullHeartCount) {
heartTex = &D_02000400;
heartTex = gHeartFullTex;
} else if (i == fullHeartCount) {
heartTex = HeartTextures[fractionHeartCount];
} else {
heartTex = &D_02000000;
heartTex = gHeartEmptyTex;
}
} else {
if (i < fullHeartCount) {
@ -316,11 +314,11 @@ void LifeMeter_Draw(GlobalContext* globalCtx) {
gDPSetEnvColor(OVERLAY_DISP++, sHeartsDDEnv[1][0], sHeartsDDEnv[1][1], sHeartsDDEnv[1][2], 255);
}
if (i < fullHeartCount) {
heartTex = &D_02000900;
heartTex = gDefenseHeartFullTex;
} else if (i == fullHeartCount) {
heartTex = HeartDDTextures[fractionHeartCount];
} else {
heartTex = &D_02000500;
heartTex = gDefenseHeartEmptyTex;
}
}

View File

@ -72,9 +72,9 @@
#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114CA0.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114E90.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_HasEmptyBottle.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114F2C.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_HasItemInBottle.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114FD0.s")

View File

@ -68,7 +68,7 @@
#pragma GLOBAL_ASM("asm/non_matchings/code/z_player_lib/func_80123C58.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_player_lib/func_80123C90.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_player_lib/Player_SetEquipmentData.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_player_lib/func_80123D50.s")

View File

@ -388,17 +388,17 @@ void Scene_HeaderCmdTimeSettings(GlobalContext* globalCtx, SceneCmd* cmd) {
}
if (cmd->timeSettings.unk6 != 0xFF) {
globalCtx->envCtx.unk_2 = cmd->timeSettings.unk6;
globalCtx->envCtx.timeIncrement = cmd->timeSettings.unk6;
} else {
globalCtx->envCtx.unk_2 = 0;
globalCtx->envCtx.timeIncrement = 0;
}
if ((gSaveContext.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (globalCtx->envCtx.unk_2 != 0)) {
globalCtx->envCtx.unk_2 = 5;
if ((gSaveContext.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (globalCtx->envCtx.timeIncrement != 0)) {
globalCtx->envCtx.timeIncrement = 5;
}
if (gSaveContext.unk_3F58 == 0) {
REG(15) = globalCtx->envCtx.unk_2;
if (gSaveContext.sunsSongState == SUNSSONG_INACTIVE) {
REG(15) = globalCtx->envCtx.timeIncrement;
}
dayTime = gSaveContext.time;
@ -408,17 +408,20 @@ void Scene_HeaderCmdTimeSettings(GlobalContext* globalCtx, SceneCmd* cmd) {
dayTime = gSaveContext.time;
globalCtx->envCtx.unk_C = (Math_CosS(dayTime - 0x8000) * 20.0f) * 25.0f;
if (globalCtx->envCtx.unk_2 == 0 && gSaveContext.cutscene < 0xFFF0) {
if (globalCtx->envCtx.timeIncrement == 0 && gSaveContext.cutscene < 0xFFF0) {
gSaveContext.environmentTime = gSaveContext.time;
if (gSaveContext.environmentTime >= 0x2AAA && gSaveContext.environmentTime < 0x4555) {
gSaveContext.environmentTime = 0x3555;
} else if (gSaveContext.environmentTime >= 0x4555 && gSaveContext.environmentTime < 0x5555) {
gSaveContext.environmentTime = 0x5555;
} else if (gSaveContext.environmentTime >= 0xAAAA && gSaveContext.environmentTime < 0xB555) {
gSaveContext.environmentTime = 0xB555;
} else if (gSaveContext.environmentTime >= 0xC000 && gSaveContext.environmentTime < 0xCAAA) {
gSaveContext.environmentTime = 0xCAAA;
if (gSaveContext.environmentTime >= CLOCK_TIME(4, 0) && gSaveContext.environmentTime < CLOCK_TIME(6, 30)) {
gSaveContext.environmentTime = CLOCK_TIME(5, 0);
} else if (gSaveContext.environmentTime >= CLOCK_TIME(6, 30) &&
gSaveContext.environmentTime < CLOCK_TIME(8, 0)) {
gSaveContext.environmentTime = CLOCK_TIME(8, 0);
} else if (gSaveContext.environmentTime >= CLOCK_TIME(16, 0) &&
gSaveContext.environmentTime < CLOCK_TIME(17, 0)) {
gSaveContext.environmentTime = CLOCK_TIME(17, 0);
} else if (gSaveContext.environmentTime >= CLOCK_TIME(18, 0) &&
gSaveContext.environmentTime < CLOCK_TIME(19, 0)) {
gSaveContext.environmentTime = CLOCK_TIME(19, 0);
}
}
}

View File

@ -12,8 +12,8 @@ s32 func_8013A240(GlobalContext* globalCtx) {
s32 seen;
s32 count = 0;
gSaveContext.roomInf[123][3] = 0;
gSaveContext.roomInf[123][4] = 0;
gSaveContext.pictoFlags0 = 0;
gSaveContext.pictoFlags1 = 0;
if (globalCtx->sceneNum == SCENE_20SICHITAI) {
func_8013A41C(1);
@ -76,19 +76,19 @@ s32 func_8013A240(GlobalContext* globalCtx) {
void func_8013A41C(s32 flag) {
if (flag < 0x20) {
gSaveContext.roomInf[123][3] |= (1 << flag);
gSaveContext.pictoFlags0 |= (1 << flag);
} else {
flag &= 0x1F;
gSaveContext.roomInf[123][4] |= (1 << flag);
gSaveContext.pictoFlags1 |= (1 << flag);
}
}
void func_8013A46C(s32 flag) {
if (flag < 0x20) {
gSaveContext.roomInf[123][3] &= ~(1 << flag);
gSaveContext.pictoFlags0 &= ~(1 << flag);
} else {
flag &= 0x1F;
gSaveContext.roomInf[123][4] &= ~(1 << flag);
gSaveContext.pictoFlags1 &= ~(1 << flag);
}
}
@ -96,10 +96,10 @@ u32 func_8013A4C4(s32 flag) {
SaveContext* saveCtx = &gSaveContext;
if (flag < 0x20) {
return saveCtx->roomInf[123][3] & (1 << flag);
return saveCtx->pictoFlags0 & (1 << flag);
} else {
flag &= 0x1F;
return saveCtx->roomInf[123][4] & (1 << flag);
return saveCtx->pictoFlags1 & (1 << flag);
}
}
@ -123,36 +123,36 @@ s32 func_8013A530(GlobalContext* globalCtx, Actor* actor, s32 flag, Vec3f* pos,
distance = OLib_Vec3fDist(pos, &camera->eye);
if ((distance < distanceMin) || (distanceMax < distance)) {
func_8013A41C(0x3f);
ret = 0x3f;
func_8013A41C(0x3F);
ret = 0x3F;
}
x = func_8013A504(func_800DFCB4(camera) + rot->x);
y = func_8013A504(func_800DFCDC(camera) - (s16)(rot->y - 0x7FFF));
if ((0 < angleError) && ((angleError < x) || (angleError < y))) {
func_8013A41C(0x3e);
ret |= 0x3e;
func_8013A41C(0x3E);
ret |= 0x3E;
}
Actor_GetProjectedPos(globalCtx, pos, &screenSpace, &distance);
x = (s16)(screenSpace.x * distance * 160.0f + 160.0f) - 85;
y = (s16)(screenSpace.y * distance * -120.0f + 120.0f) - 67;
if ((x < 0) || (0x96 < x) || (y < 0) || (0x69 < y)) {
func_8013A41C(0x3d);
ret |= 0x3d;
func_8013A41C(0x3D);
ret |= 0x3D;
}
if (BgCheck_ProjectileLineTest(&globalCtx->colCtx, pos, &camera->eye, &screenSpace, &poly, true, true, true, true,
&bgId)) {
func_8013A41C(0x3c);
ret |= 0x3c;
func_8013A41C(0x3C);
ret |= 0x3C;
}
actors[0] = actor;
actors[1] = &GET_PLAYER(globalCtx)->actor;
if (CollisionCheck_LineOCCheck(globalCtx, &globalCtx->colChkCtx, pos, &camera->eye, actors, 2) != 0) {
func_8013A41C(0x3b);
ret |= 0x3b;
if (CollisionCheck_LineOCCheck(globalCtx, &globalCtx->colChkCtx, pos, &camera->eye, actors, 2)) {
func_8013A41C(0x3B);
ret |= 0x3B;
}
if (ret == 0) {

View File

@ -178,7 +178,7 @@ void ArrowIce_Fly(ArrowIce* this, GlobalContext* globalCtx) {
void ArrowIce_Update(Actor* thisx, GlobalContext* globalCtx) {
ArrowIce* this = THIS;
if ((globalCtx->msgCtx.unk11F22 == 0xE) || (globalCtx->msgCtx.unk11F22 == 0x12)) {
if ((globalCtx->msgCtx.msgMode == 0xE) || (globalCtx->msgCtx.msgMode == 0x12)) {
Actor_MarkForDeath(&this->actor);
return;
} else {

View File

@ -1530,7 +1530,7 @@ void DmStk_Update(Actor* thisx, GlobalContext* globalCtx) {
break;
}
if ((globalCtx->actorCtx.unk5 & 2) && (globalCtx->msgCtx.unk11F22 != 0) &&
if ((globalCtx->actorCtx.unk5 & 2) && (globalCtx->msgCtx.msgMode != 0) &&
(globalCtx->msgCtx.unk11F04 == 0x5E6) && !FrameAdvance_IsEnabled(globalCtx) &&
(globalCtx->sceneLoadFlag == 0) && (ActorCutscene_GetCurrentIndex() == -1) &&
(globalCtx->csCtx.state == 0)) {

View File

@ -552,28 +552,27 @@ void func_808B9CE8(DoorWarp1* this, GlobalContext* globalCtx) {
switch (globalCtx->sceneNum) {
case SCENE_MITURIN_BS:
gSaveContext.roomInf[126][3] =
(((void)0, gSaveContext.roomInf[126][3]) & 0xFFFFFF00) | (((u8)gSaveContext.roomInf[126][4]) & 0xFF);
gSaveContext.unk_ECC[0] =
(((void)0, gSaveContext.unk_ECC[0]) & 0xFFFFFF00) | (((u8)gSaveContext.unk_ECC[1]) & 0xFF);
break;
case SCENE_HAKUGIN_BS:
gSaveContext.roomInf[126][3] = (((void)0, gSaveContext.roomInf[126][3]) & 0xFFFF00FF) |
((((u8)gSaveContext.roomInf[126][4]) & 0xFF) << 8);
gSaveContext.unk_ECC[0] =
(((void)0, gSaveContext.unk_ECC[0]) & 0xFFFF00FF) | ((((u8)gSaveContext.unk_ECC[1]) & 0xFF) << 8);
break;
case SCENE_INISIE_BS:
gSaveContext.roomInf[126][3] = (((void)0, gSaveContext.roomInf[126][3]) & 0xFF00FFFF) |
((((u8)gSaveContext.roomInf[126][4]) & 0xFF) << 0x10);
gSaveContext.unk_ECC[0] =
(((void)0, gSaveContext.unk_ECC[0]) & 0xFF00FFFF) | ((((u8)gSaveContext.unk_ECC[1]) & 0xFF) << 0x10);
break;
case SCENE_SEA_BS:
gSaveContext.roomInf[126][3] = (((void)0, gSaveContext.roomInf[126][3]) & 0x00FFFFFF) |
((((u8)gSaveContext.roomInf[126][4]) & 0xFF) << 0x18);
gSaveContext.unk_ECC[0] =
(((void)0, gSaveContext.unk_ECC[0]) & 0x00FFFFFF) | ((((u8)gSaveContext.unk_ECC[1]) & 0xFF) << 0x18);
break;
}
gSaveContext.roomInf[126][4] =
(gSaveContext.roomInf[126][4] & 0xFFFFFF00) | ((((u8)gSaveContext.roomInf[126][4]) + 1) & 0xFF);
gSaveContext.unk_ECC[1] = (gSaveContext.unk_ECC[1] & 0xFFFFFF00) | ((((u8)gSaveContext.unk_ECC[1]) + 1) & 0xFF);
Item_Give(globalCtx, func_808B849C(this, globalCtx) + (ITEM_REMAINS_ODOLWA - 1));
DoorWarp1_SetupAction(this, func_808B9E94);
}
@ -656,19 +655,19 @@ void func_808BA10C(DoorWarp1* this, GlobalContext* globalCtx) {
switch (phi_v0_2) {
case 0:
phi_a0 = gSaveContext.roomInf[126][3] & 0xFF;
phi_a0 = gSaveContext.unk_ECC[0] & 0xFF;
break;
case 1:
phi_a0 = (gSaveContext.roomInf[126][3] & 0xFF00) >> 8;
phi_a0 = (gSaveContext.unk_ECC[0] & 0xFF00) >> 8;
break;
case 2:
phi_a0 = (gSaveContext.roomInf[126][3] & 0xFF0000) >> 0x10;
phi_a0 = (gSaveContext.unk_ECC[0] & 0xFF0000) >> 0x10;
break;
case 3:
phi_a0 = (gSaveContext.roomInf[126][3] & 0xFF000000) >> 0x18;
phi_a0 = (gSaveContext.unk_ECC[0] & 0xFF000000) >> 0x18;
break;
default:

View File

@ -321,7 +321,7 @@ s32 func_80BED27C(EnAkindonuts* this) {
}
s32 func_80BED2FC(EnAkindonuts* this) {
if (!func_80114E90()) {
if (!Interface_HasEmptyBottle()) {
return 2;
}
@ -335,7 +335,7 @@ s32 func_80BED2FC(EnAkindonuts* this) {
}
s32 func_80BED35C(EnAkindonuts* this) {
if (!func_80114E90()) {
if (!Interface_HasEmptyBottle()) {
return 2;
}
@ -414,7 +414,7 @@ void func_80BED3BC(EnAkindonuts* this, GlobalContext* globalCtx) {
func_8019F208();
this->unk_32C &= ~0x1;
this->unk_32C |= 0x40;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_33C = 0x15EF;
this->actionFunc = func_80BEF360;
@ -497,7 +497,7 @@ void func_80BED680(EnAkindonuts* this, GlobalContext* globalCtx) {
func_8019F208();
this->unk_32C |= 0x40;
this->unk_32C &= ~0x1;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_33C = 0x15EF;
this->actionFunc = func_80BEF360;
@ -592,7 +592,7 @@ void func_80BED8A4(EnAkindonuts* this, GlobalContext* globalCtx) {
func_8019F208();
this->unk_32C |= 0x40;
this->unk_32C &= ~0x1;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_33C = 0x15EF;
this->actionFunc = func_80BEF360;
@ -675,7 +675,7 @@ void func_80BEDB88(EnAkindonuts* this, GlobalContext* globalCtx) {
func_8019F208();
this->unk_32C |= 0x40;
this->unk_32C &= ~0x1;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_33C = 0x15EF;
this->actionFunc = func_80BEF360;
@ -765,7 +765,7 @@ void func_80BEDDAC(EnAkindonuts* this, GlobalContext* globalCtx) {
func_8019F208();
this->unk_32C |= 0x40;
this->unk_32C &= ~0x1;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_33C = 0x15EF;
this->actionFunc = func_80BEF360;
@ -843,7 +843,7 @@ void func_80BEE070(EnAkindonuts* this, GlobalContext* globalCtx) {
func_8019F208();
this->unk_32C |= 0x40;
this->unk_32C &= ~0x1;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_33C = 0x161A;
this->actionFunc = func_80BEF360;
@ -926,7 +926,7 @@ void func_80BEE274(EnAkindonuts* this, GlobalContext* globalCtx) {
func_8019F208();
this->unk_32C |= 0x40;
this->unk_32C &= ~0x1;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_33C = 0x1629;
this->actionFunc = func_80BEF360;
@ -1004,7 +1004,7 @@ void func_80BEE530(EnAkindonuts* this, GlobalContext* globalCtx) {
func_8019F208();
this->unk_32C |= 0x40;
this->unk_32C &= ~0x1;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_33C = 0x15EF;
this->actionFunc = func_80BEF360;
@ -1235,7 +1235,7 @@ void func_80BEEFA8(EnAkindonuts* this, GlobalContext* globalCtx) {
if (func_80147624(globalCtx)) {
if (this->unk_32C & 1) {
this->unk_32C &= ~0x1;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_33C = 0;
this->actionFunc = func_80BEEE10;
@ -1243,7 +1243,7 @@ void func_80BEEFA8(EnAkindonuts* this, GlobalContext* globalCtx) {
this->unk_32C &= ~0x20;
this->actor.flags &= ~1;
this->unk_32C &= ~0x4;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_338 = 8;
this->unk_33C = 0;
@ -1275,7 +1275,7 @@ void func_80BEEFA8(EnAkindonuts* this, GlobalContext* globalCtx) {
void func_80BEF18C(EnAkindonuts* this, GlobalContext* globalCtx) {
if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_33C = 0;
this->actionFunc = func_80BEEE10;
@ -1302,7 +1302,7 @@ void func_80BEF20C(EnAkindonuts* this, GlobalContext* globalCtx) {
if ((sp27 == 5) && func_80147624(globalCtx)) {
if (this->unk_32C & 1) {
this->unk_32C &= ~0x1;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actionFunc = func_80BEF360;
} else {

View File

@ -394,7 +394,7 @@ void func_809C16DC(EnAob01* this, GlobalContext* globalCtx) {
this->unk_2D2 &= ~2;
func_801159EC(-this->unk_434);
func_800B7298(globalCtx, NULL, 7);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actionFunc = func_809C1C9C;
return;
@ -455,7 +455,7 @@ void func_809C1D64(EnAob01* this, GlobalContext* globalCtx) {
}
}
} else if ((temp_v0 == 5) && func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_210 = 0;
this->actionFunc = func_809C2060;
@ -578,7 +578,7 @@ void func_809C21E0(EnAob01* this, GlobalContext* globalCtx) {
this->unk_2D2 &= ~0x40;
if (this->unk_2D2 & 0x10) {
this->unk_2D2 &= ~0x10;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actionFunc = func_809C2060;
} else {
@ -748,7 +748,7 @@ void func_809C2A64(EnAob01* this, GlobalContext* globalCtx) {
if (func_809C15BC(this)) {
if ((sp2F == 5) && func_80147624(globalCtx)) {
this->unk_434 = 0;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
}

View File

@ -99,7 +99,7 @@ void func_809CCEE8(EnBji01* this, GlobalContext* globalCtx) {
}
}
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
globalCtx->msgCtx.unk11F22 = 0;
globalCtx->msgCtx.msgMode = 0;
globalCtx->msgCtx.unk11F10 = 0;
func_809CD028(this, globalCtx);
} else {

View File

@ -235,7 +235,7 @@ void EnCow_GiveMilk(EnCow* this, GlobalContext* globalCtx) {
void EnCow_CheckForEmptyBottle(EnCow* this, GlobalContext* globalCtx) {
if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) {
if (func_80114E90()) {
if (Interface_HasEmptyBottle()) {
func_80151938(globalCtx, 0x32C9); // Text to give milk.
this->actionFunc = EnCow_GiveMilk;
} else {
@ -264,7 +264,7 @@ void EnCow_Talk(EnCow* this, GlobalContext* globalCtx) {
}
void EnCow_Idle(EnCow* this, GlobalContext* globalCtx) {
if ((globalCtx->msgCtx.unk1202A == 0) || (globalCtx->msgCtx.unk1202A == 4)) {
if ((globalCtx->msgCtx.ocarinaMode == 0) || (globalCtx->msgCtx.ocarinaMode == 4)) {
if (D_801BDAA4 != 0) {
if (this->flags & EN_COW_FLAG_WONT_GIVE_MILK) {
this->flags &= ~EN_COW_FLAG_WONT_GIVE_MILK;
@ -292,7 +292,7 @@ void EnCow_Idle(EnCow* this, GlobalContext* globalCtx) {
if (func_801A5100() == 4) {
if (!(gSaveContext.weekEventReg[87] & 1)) {
gSaveContext.weekEventReg[87] |= 1;
if (func_80114E90()) {
if (Interface_HasEmptyBottle()) {
this->actor.textId = 0x32C9; // Text to give milk.
} else {
this->actor.textId = 0x32CA; // Text if you don't have an empty bottle.

View File

@ -409,7 +409,7 @@ void func_80B3EE8C(EnDai* this, GlobalContext* globalCtx) {
void func_80B3EEDC(EnDai* this, GlobalContext* globalCtx) {
Player* player = GET_PLAYER(globalCtx);
if ((player->transformation == PLAYER_FORM_GORON) && (globalCtx->msgCtx.unk1202A == 3) &&
if ((player->transformation == PLAYER_FORM_GORON) && (globalCtx->msgCtx.ocarinaMode == 3) &&
(globalCtx->msgCtx.unk1202E == 1)) {
func_80B3E5DC(this, 1);
this->actionFunc = func_80B3EE8C;

View File

@ -323,7 +323,7 @@ void func_80A71C3C(EnDno* this, GlobalContext* globalCtx) {
}
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
globalCtx->msgCtx.unk11F22 = 0;
globalCtx->msgCtx.msgMode = 0;
globalCtx->msgCtx.unk11F10 = 0;
func_80A71E54(this, globalCtx);
} else if (this->actor.xzDistToPlayer < 60.0f) {
@ -419,7 +419,7 @@ void func_80A71F18(EnDno* this, GlobalContext* globalCtx) {
case 9:
if (func_80147624(globalCtx)) {
func_8013E1C8(&this->skelAnime, sAnimations, 10, &this->unk_32C);
globalCtx->msgCtx.unk11F22 = 0x44;
globalCtx->msgCtx.msgMode = 0x44;
}
break;
@ -602,7 +602,7 @@ void func_80A725F8(EnDno* this, GlobalContext* globalCtx) {
case 0x800:
case 0x801:
if (func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x44;
globalCtx->msgCtx.msgMode = 0x44;
this->unk_452 = 1;
this->unk_454 = 0.0f;
func_8013E1C8(&this->skelAnime, sAnimations, 8, &this->unk_32C);

View File

@ -352,7 +352,7 @@ void EnDnp_Init(Actor* thisx, GlobalContext* globalCtx) {
this->actor.world.rot.x = this->actor.shape.rot.x;
this->actor.cutscene = 0x10;
this->actionFunc = func_80B3D47C;
} else if (((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_0) && !func_80114F2C(0x17) &&
} else if (((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_0) && !Interface_HasItemInBottle(ITEM_DEKU_PRINCESS) &&
!(gSaveContext.weekEventReg[23] & 0x20)) ||
((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_2) && (gSaveContext.weekEventReg[23] & 0x20))) {
Actor_SetScale(&this->actor, 0.0085f);

View File

@ -332,7 +332,7 @@ void func_80A52DC8(EnDnq* this, GlobalContext* globalCtx) {
if (!(gSaveContext.weekEventReg[23] & 0x20)) {
this->unk_390 = 70.0f;
if (func_80114F2C(ITEM_DEKU_PRINCESS) && !func_801690CC(globalCtx) &&
if (Interface_HasItemInBottle(ITEM_DEKU_PRINCESS) && !func_801690CC(globalCtx) &&
(Message_GetState(&globalCtx->msgCtx) == 0) && (ActorCutscene_GetCurrentIndex() == -1)) {
if ((DECR(this->unk_384) == 0) && (gSaveContext.weekEventReg[29] & 0x40)) {
func_801518B0(globalCtx, 0x969, NULL);

View File

@ -833,7 +833,7 @@ void EnFishing_Init(Actor* thisx, GlobalContext* globalCtx2) {
if (sLinkAge != 1) {
// HIGH_SCORE(HS_FISHING) from OoT
if (gSaveContext.roomInf[127][2] & 0x1000) {
if (gSaveContext.unk_EE4 & 0x1000) {
D_8090CD08 = 0;
} else {
D_8090CD08 = 1;
@ -851,18 +851,18 @@ void EnFishing_Init(Actor* thisx, GlobalContext* globalCtx2) {
Audio_QueueSeqCmd(0x100100FF);
if (sLinkAge == 1) {
if (gSaveContext.roomInf[127][2] & 0x7F) {
D_809171CC = gSaveContext.roomInf[127][2] & 0x7F;
if (gSaveContext.unk_EE4 & 0x7F) {
D_809171CC = gSaveContext.unk_EE4 & 0x7F;
} else {
D_809171CC = 40.0f;
}
} else if (gSaveContext.roomInf[127][2] & 0x7F000000) {
D_809171CC = (gSaveContext.roomInf[127][2] & 0x7F000000) >> 0x18;
} else if (gSaveContext.unk_EE4 & 0x7F000000) {
D_809171CC = (gSaveContext.unk_EE4 & 0x7F000000) >> 0x18;
} else {
D_809171CC = 45.0f;
}
D_809171D1 = (gSaveContext.roomInf[127][2] & 0xFF0000) >> 0x10;
D_809171D1 = (gSaveContext.unk_EE4 & 0xFF0000) >> 0x10;
if ((D_809171D1 & 7) == 7) {
globalCtx->roomCtx.unk7A[0] = 90;
D_809171CA = 1;
@ -2812,8 +2812,8 @@ void func_80903C60(EnFishing* this, u8 arg1) {
void EnFishing_HandleAquariumDialog(EnFishing* this, GlobalContext* globalCtx) {
if (sLinkAge == 1) {
if (gSaveContext.roomInf[127][2] & 0x7F) {
if (gSaveContext.roomInf[127][2] & 0x80) {
if (gSaveContext.unk_EE4 & 0x7F) {
if (gSaveContext.unk_EE4 & 0x80) {
this->actor.textId = 0x40B1;
} else {
this->actor.textId = 0x4089;
@ -2821,8 +2821,8 @@ void EnFishing_HandleAquariumDialog(EnFishing* this, GlobalContext* globalCtx) {
} else {
this->actor.textId = 0x40AE;
}
} else if (gSaveContext.roomInf[127][2] & 0x7F000000) {
if (gSaveContext.roomInf[127][2] & 0x80000000) {
} else if (gSaveContext.unk_EE4 & 0x7F000000) {
if (gSaveContext.unk_EE4 & 0x80000000) {
this->actor.textId = 0x40B1;
} else {
this->actor.textId = 0x4089;
@ -3762,8 +3762,8 @@ void EnFishing_UpdateFish(Actor* thisx, GlobalContext* globalCtx2) {
if ((D_80917272 == 0) && (D_80917274 == 0)) {
// Assignment of OoT's D_80B7E086 here removed in MM
if (((sLinkAge == 1) && (gSaveContext.roomInf[127][2] & 0x400)) ||
((sLinkAge != 1) && (gSaveContext.roomInf[127][2] & 0x800))) {
if (((sLinkAge == 1) && (gSaveContext.unk_EE4 & 0x400)) ||
((sLinkAge != 1) && (gSaveContext.unk_EE4 & 0x800))) {
// Assignment of OoT's D_80B7A67C here removed in MM, this is now an empty branch
}
} else {
@ -4705,7 +4705,7 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, GlobalContext* globalCtx) {
case 0:
if (D_809171FC == 0) {
if (sLinkAge != 1) {
if ((gSaveContext.roomInf[127][2] & 0x100) && !(gSaveContext.roomInf[127][2] & 0x200)) {
if ((gSaveContext.unk_EE4 & 0x100) && !(gSaveContext.unk_EE4 & 0x200)) {
this->actor.textId = 0x4093;
} else {
this->actor.textId = 0x407B;
@ -4723,9 +4723,9 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, GlobalContext* globalCtx) {
if (D_809171FC == 0) {
this->unk_154 = 1;
if (sLinkAge != 1) {
gSaveContext.roomInf[127][2] |= 0x200;
gSaveContext.unk_EE4 |= 0x200;
} else {
gSaveContext.roomInf[127][2] |= 0x100;
gSaveContext.unk_EE4 |= 0x100;
}
} else {
this->unk_154 = 10;
@ -4808,8 +4808,8 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, GlobalContext* globalCtx) {
D_8090CD04 = 20;
this->unk_154 = 0;
if ((gSaveContext.roomInf[127][2] & 0xFF0000) < 0xFF0000) {
gSaveContext.roomInf[127][2] += 0x10000;
if ((gSaveContext.unk_EE4 & 0xFF0000) < 0xFF0000) {
gSaveContext.unk_EE4 += 0x10000;
}
}
break;
@ -4917,30 +4917,30 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, GlobalContext* globalCtx) {
if (sLinkAge == 1) {
f32 temp;
gSaveContext.roomInf[127][2] &= 0xFFFFFF00;
gSaveContext.roomInf[127][2] |= ((s16)D_809171CC & 0x7F);
gSaveContext.unk_EE4 &= 0xFFFFFF00;
gSaveContext.unk_EE4 |= ((s16)D_809171CC & 0x7F);
temp = (gSaveContext.roomInf[127][2] & 0x7F000000) >> 0x18;
temp = (gSaveContext.unk_EE4 & 0x7F000000) >> 0x18;
if (temp < D_809171CC) {
gSaveContext.roomInf[127][2] &= 0xFFFFFF;
gSaveContext.roomInf[127][2] |= ((s16)D_809171CC & 0x7F) << 0x18;
gSaveContext.unk_EE4 &= 0xFFFFFF;
gSaveContext.unk_EE4 |= ((s16)D_809171CC & 0x7F) << 0x18;
if (D_809171D2 == 2) {
gSaveContext.roomInf[127][2] |= 0x80000000;
gSaveContext.unk_EE4 |= 0x80000000;
}
}
if (D_809171D2 == 2) {
gSaveContext.roomInf[127][2] |= 0x80;
gSaveContext.unk_EE4 |= 0x80;
this->unk_154 = 0;
break;
}
} else {
gSaveContext.roomInf[127][2] &= 0xFFFFFF;
gSaveContext.roomInf[127][2] |= ((s16)D_809171CC & 0x7F) << 0x18;
gSaveContext.unk_EE4 &= 0xFFFFFF;
gSaveContext.unk_EE4 |= ((s16)D_809171CC & 0x7F) << 0x18;
if (D_809171D2 == 2) {
gSaveContext.roomInf[127][2] |= 0x80000000;
gSaveContext.unk_EE4 |= 0x80000000;
this->unk_154 = 0;
break;
}
@ -4957,14 +4957,14 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, GlobalContext* globalCtx) {
}
if (sLinkAge == 1) {
if ((D_809171CC >= 50.0f) && !(gSaveContext.roomInf[127][2] & 0x400)) {
gSaveContext.roomInf[127][2] |= 0x400;
if ((D_809171CC >= 50.0f) && !(gSaveContext.unk_EE4 & 0x400)) {
gSaveContext.unk_EE4 |= 0x400;
getItemId = GI_HEART_PIECE;
sSinkingLureLocation = Rand_ZeroFloat(3.999f) + 1.0f;
}
} else {
if ((D_809171CC >= 60.0f) && !(gSaveContext.roomInf[127][2] & 0x800)) {
gSaveContext.roomInf[127][2] |= 0x800;
if ((D_809171CC >= 60.0f) && !(gSaveContext.unk_EE4 & 0x800)) {
gSaveContext.unk_EE4 |= 0x800;
getItemId = GI_SCALE_GOLD;
sSinkingLureLocation = Rand_ZeroFloat(3.999f) + 1.0f;
}
@ -5130,9 +5130,9 @@ void EnFishing_UpdateOwner(Actor* thisx, GlobalContext* globalCtx2) {
}
if (D_8090CD08 == 0) {
gSaveContext.roomInf[127][2] |= 0x1000;
gSaveContext.unk_EE4 |= 0x1000;
} else if (D_8090CD08 == 1) {
gSaveContext.roomInf[127][2] &= ~0x1000;
gSaveContext.unk_EE4 &= ~0x1000;
}
if (D_8090CCFC != 0) {

View File

@ -299,14 +299,13 @@ s16 EnFsn_GetStolenItemId(u32 stolenItem) {
s32 EnFsn_HasItemsToSell(void) {
if (CURRENT_DAY != 3) {
if (((gSaveContext.roomInf[126][5] & 0xFF000000) >> 0x18) ||
((gSaveContext.roomInf[126][5] & 0xFF0000) >> 0x10)) {
if (((gSaveContext.stolenItems & 0xFF000000) >> 0x18) || ((gSaveContext.stolenItems & 0xFF0000) >> 0x10)) {
return true;
}
return false;
} else {
if (((gSaveContext.roomInf[126][5] & 0xFF000000) >> 0x18) ||
((gSaveContext.roomInf[126][5] & 0xFF0000) >> 0x10) || !(gSaveContext.weekEventReg[0x21] & 4)) {
if (((gSaveContext.stolenItems & 0xFF000000) >> 0x18) || ((gSaveContext.stolenItems & 0xFF0000) >> 0x10) ||
!(gSaveContext.weekEventReg[0x21] & 4)) {
return true;
}
return false;
@ -314,8 +313,8 @@ s32 EnFsn_HasItemsToSell(void) {
}
void EnFsn_GetShopItemIds(EnFsn* this) {
u32 stolenItem1 = (gSaveContext.roomInf[126][5] & 0xFF000000) >> 0x18;
u32 stolenItem2 = (gSaveContext.roomInf[126][5] & 0xFF0000) >> 0x10;
u32 stolenItem1 = (gSaveContext.stolenItems & 0xFF000000) >> 0x18;
u32 stolenItem2 = (gSaveContext.stolenItems & 0xFF0000) >> 0x10;
s16 itemId;
this->stolenItem1 = this->stolenItem2 = 0;
@ -362,7 +361,7 @@ void EnFsn_EndInteraction(EnFsn* this, GlobalContext* globalCtx) {
this->cutsceneState = 0;
}
Actor_ProcessTalkRequest(&this->actor, &globalCtx->state);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
Interface_ChangeAlpha(50);
this->drawCursor = 0;
@ -934,7 +933,7 @@ void EnFsn_MakeOffer(EnFsn* this, GlobalContext* globalCtx) {
switch (globalCtx->msgCtx.choiceIndex) {
case 0:
func_8019F208();
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
if (this->cutsceneState == 2) {
ActorCutscene_Stop(this->cutscene);
@ -1134,7 +1133,7 @@ void EnFsn_HandleCanPlayerBuyItem(EnFsn* this, GlobalContext* globalCtx) {
item = this->items[this->cursorIdx];
item->buyFanfareFunc(globalCtx, item);
Actor_PickUp(&this->actor, globalCtx, this->items[this->cursorIdx]->getItemId, 300.0f, 300.0f);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
Interface_ChangeAlpha(50);
this->drawCursor = 0;
@ -1142,9 +1141,9 @@ void EnFsn_HandleCanPlayerBuyItem(EnFsn* this, GlobalContext* globalCtx) {
item = this->items[this->cursorIdx];
item->boughtFunc(globalCtx, item);
if (this->stolenItem1 == this->cursorIdx) {
gSaveContext.roomInf[126][5] &= ~0xFF000000;
gSaveContext.stolenItems &= ~0xFF000000;
} else if (this->stolenItem2 == this->cursorIdx) {
gSaveContext.roomInf[126][5] &= ~0xFF0000;
gSaveContext.stolenItems &= ~0xFF0000;
}
this->numSellingItems--;
this->itemIds[this->cursorIdx] = -1;
@ -1171,7 +1170,7 @@ void EnFsn_SetupEndInteraction(EnFsn* this, GlobalContext* globalCtx) {
if (globalCtx->msgCtx.unk120B1 == 0) {
EnFsn_EndInteraction(this, globalCtx);
} else {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
}
} else {
@ -1243,7 +1242,7 @@ void EnFsn_AskCanBuyMore(EnFsn* this, GlobalContext* globalCtx) {
if (globalCtx->msgCtx.unk120B1 == 0) {
EnFsn_EndInteraction(this, globalCtx);
} else {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
}
} else {
@ -1290,7 +1289,7 @@ void EnFsn_AskCanBuyAterRunningOutOfItems(EnFsn* this, GlobalContext* globalCtx)
if (globalCtx->msgCtx.unk120B1 == 0) {
EnFsn_EndInteraction(this, globalCtx);
} else {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
}
} else {
@ -1344,12 +1343,12 @@ void EnFsn_ConverseBackroom(EnFsn* this, GlobalContext* globalCtx) {
if (Message_GetState(&globalCtx->msgCtx) == 5 && func_80147624(globalCtx)) {
if (this->flags & ENFSN_END_CONVERSATION) {
this->flags &= ~ENFSN_END_CONVERSATION;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actionFunc = EnFsn_IdleBackroom;
} else if (this->flags & ENFSN_GIVE_ITEM) {
this->flags &= ~ENFSN_GIVE_ITEM;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actionFunc = EnFsn_GiveItem;
} else {

View File

@ -370,8 +370,8 @@ void func_80B0FE7C(GlobalContext* globalCtx) {
}
void func_80B0FEBC(EnGb2* this, GlobalContext* globalCtx) {
if ((globalCtx->msgCtx.unk1202A == 3) && (globalCtx->msgCtx.unk1202E == 7)) {
globalCtx->msgCtx.unk1202A = 4;
if ((globalCtx->msgCtx.ocarinaMode == 3) && (globalCtx->msgCtx.unk1202E == 7)) {
globalCtx->msgCtx.ocarinaMode = 4;
gSaveContext.eventInf[4] |= 0x80;
this->unk_26E = 0x14D1;
this->unk_288 = 10;
@ -391,7 +391,7 @@ void func_80B0FFA8(EnGb2* this, GlobalContext* globalCtx) {
if (temp_v0 == 5) {
if (func_80147624(globalCtx)) {
if (this->unk_26C & 2) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_26E = 0x14D1;
this->unk_288 = 30;
@ -431,7 +431,7 @@ void func_80B0FFA8(EnGb2* this, GlobalContext* globalCtx) {
case 0:
func_8019F208();
func_801159EC(-this->unk_288);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
func_800B7298(globalCtx, NULL, 7);
this->actionFunc = func_80B11344;
@ -553,7 +553,7 @@ void func_80B10634(EnGb2* this, GlobalContext* globalCtx) {
if (temp_v0 == 5) {
if (func_80147624(globalCtx)) {
if (this->unk_26C & 2) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_26C &= ~2;
if (this->unk_26E == 0x14DD) {
@ -583,7 +583,7 @@ void func_80B10634(EnGb2* this, GlobalContext* globalCtx) {
} else {
func_8019F208();
func_801159EC(-this->unk_288);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
func_800B7298(globalCtx, NULL, 7);
this->actionFunc = func_80B11344;
@ -749,7 +749,7 @@ void func_80B10E98(EnGb2* this, GlobalContext* globalCtx) {
if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) {
if (this->unk_26C & 2) {
this->unk_26C &= ~2;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
if ((this->unk_26E != 0x14E8) && (this->unk_26E != 0x14EA)) {
ActorCutscene_Stop(this->unk_282[this->unk_290]);
@ -792,7 +792,7 @@ void func_80B11048(EnGb2* this, GlobalContext* globalCtx) {
void func_80B110F8(EnGb2* this, GlobalContext* globalCtx) {
if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) {
if (this->unk_26C & 2) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_26C &= ~2;
this->actionFunc = func_80B10A48;

View File

@ -541,7 +541,7 @@ void func_80BB26EC(EnGeg* this, GlobalContext* globalCtx) {
case 0xD61:
ActorCutscene_Stop(this->unk_498);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_230 &= ~0x10;
this->actionFunc = func_80BB221C;
@ -557,14 +557,14 @@ void func_80BB27D4(EnGeg* this, GlobalContext* globalCtx) {
if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) {
switch (this->unk_496) {
case 0xD63:
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actionFunc = func_80BB221C;
break;
case 0xD69:
this->unk_49A = this->unk_49C[6];
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actionFunc = func_80BB2520;
break;
@ -572,7 +572,7 @@ void func_80BB27D4(EnGeg* this, GlobalContext* globalCtx) {
case 0xD6D:
case 0xD6F:
case 0xD8A:
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actionFunc = func_80BB31B8;
break;
@ -580,7 +580,7 @@ void func_80BB27D4(EnGeg* this, GlobalContext* globalCtx) {
case 0xD72:
case 0xD75:
case 0xD8B:
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_230 &= ~0x10;
this->unk_49A = this->unk_49C[7];
@ -607,7 +607,7 @@ void func_80BB2944(EnGeg* this, GlobalContext* globalCtx) {
}
} else if ((sp27 == 5) && func_80147624(globalCtx)) {
if (this->unk_496 == 0xD67) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_49A = this->unk_49C[4];
this->actionFunc = func_80BB2520;
@ -624,7 +624,7 @@ void func_80BB2A54(EnGeg* this, GlobalContext* globalCtx) {
ActorCutscene_Stop(this->unk_498);
this->unk_230 &= ~0x10;
this->unk_244 = 65;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actionFunc = func_80BB347C;
} else {

View File

@ -81,7 +81,7 @@ void EnGinkoMan_Idle(EnGinkoMan* this, GlobalContext* globalCtx) {
EnGinkoMan_SwitchAnimation(this, globalCtx);
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
if ((gSaveContext.roomInf[127][0] & 0xFFFF) == 0) {
if ((gSaveContext.bankRupees & 0xFFFF) == 0) {
Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_FLOORSMACKING);
func_801518B0(globalCtx, 0x44C, &this->actor);
this->curTextId = 0x44C; // would you like to make an account
@ -145,7 +145,7 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) {
Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_FLOORSMACKING);
}
globalCtx->msgCtx.bankRupees = gSaveContext.roomInf[127][0] & 0xFFFF;
globalCtx->msgCtx.bankRupees = gSaveContext.bankRupees & 0xFFFF;
func_801518B0(globalCtx, 0x45A, &this->actor);
this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!"
}
@ -156,22 +156,22 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) {
this->curTextId = 0x44E; //" ...So, what'll it be? Deposit Rupees Don't deposit Rupees"
break;
case 0x45A: // "All right, little guy, now I've got a total of [rupees] from you!"
if (((gSaveContext.roomInf[127][0] & 0xFFFF) >= 200) && (this->previousBankValue < 200) &&
if (((gSaveContext.bankRupees & 0xFFFF) >= 200) && (this->previousBankValue < 200) &&
!(gSaveContext.weekEventReg[59] & 0x40)) {
gSaveContext.weekEventReg[59] |= 0x40;
func_801518B0(globalCtx, 0x45B, &this->actor);
this->curTextId = 0x45B; // "What's this? You've already saved up 200 Rupees!?!
} else if (((gSaveContext.roomInf[127][0] & 0xFFFF) >= 1000) && ((this->previousBankValue) < 1000) &&
} else if (((gSaveContext.bankRupees & 0xFFFF) >= 1000) && ((this->previousBankValue) < 1000) &&
!(gSaveContext.weekEventReg[59] & 0x80)) {
gSaveContext.weekEventReg[59] |= 0x80;
func_801518B0(globalCtx, 0x45C, &this->actor);
this->curTextId = 0x45C; // "What's this? You've already saved up 1000 Rupees!?!
} else if ((gSaveContext.roomInf[127][0] & 0xFFFF) >= 5000) {
} else if ((gSaveContext.bankRupees & 0xFFFF) >= 5000) {
if ((this->previousBankValue < 5000) && !(gSaveContext.weekEventReg[60] & 1)) {
gSaveContext.weekEventReg[60] |= 1;
func_801518B0(globalCtx, 0x45D, &this->actor);
this->curTextId = 0x45D; // "What's this? You've already saved up 5000 Rupees?!
} else if (this->previousBankValue < (s16)(gSaveContext.roomInf[127][0] & 0xFFFF)) {
} else if (this->previousBankValue < (s16)(gSaveContext.bankRupees & 0xFFFF)) {
Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_SITTING);
func_801518B0(globalCtx, 0x45E, &this->actor);
this->curTextId =
@ -208,12 +208,12 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) {
this->curTextId = 0x464; // Hey, relax! It doesn't leave any marks
break;
case 0x464: // Hey, relax! It doesn't leave any marks
globalCtx->msgCtx.unk11F22 = 0x44;
globalCtx->msgCtx.msgMode = 0x44;
EnGinkoMan_SetupStamp(this); // stamp player
break;
case 0x465: // "There! Now I'll know you when I see you!"
Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_FLOORSMACKING);
globalCtx->msgCtx.bankRupees = gSaveContext.roomInf[127][0] & 0xFFFF;
globalCtx->msgCtx.bankRupees = gSaveContext.bankRupees & 0xFFFF;
func_801518B0(globalCtx, 0x45A, &this->actor);
this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!"
break;
@ -229,7 +229,7 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) {
case 0x46C: // "Ah, yes...[Link], right? If I remember, you're the little guy who deposited [rupees]."
case 0x47E: // "Your deposits total [rupees]."
if (this->choiceDepositWithdrawl == GINKOMAN_CHOICE_DEPOSIT) {
if ((u32)(gSaveContext.roomInf[127][0] & 0xFFFF) >= 5000) {
if ((u32)(gSaveContext.bankRupees & 0xFFFF) >= 5000) {
func_801518B0(globalCtx, 0x45F, &this->actor);
this->curTextId = 0x45F; // "Excuuuse me! But I can't take anymore deposits!
} else if (gSaveContext.rupees == 0) {
@ -280,12 +280,12 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) {
case 0x473: // Use it wisely...
case 0x474: // "Aw, you're taking out all that? If you spend it like that, it'll all be gone before you know
// it!"
if ((gSaveContext.roomInf[127][0] & 0xFFFF) == 0) {
if ((gSaveContext.bankRupees & 0xFFFF) == 0) {
func_801518B0(globalCtx, 0x478, &this->actor);
// "Look, little guy, all the Rupees you deposited are gone, so you can't use that stamp anymore."
this->curTextId = 0x478;
} else {
globalCtx->msgCtx.bankRupees = gSaveContext.roomInf[127][0] & 0xFFFF;
globalCtx->msgCtx.bankRupees = gSaveContext.bankRupees & 0xFFFF;
func_801518B0(globalCtx, 0x45A, &this->actor);
this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!"
}
@ -311,7 +311,7 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx)
switch (this->curTextId) {
case 0x44E: // "...So, what'll it be?
if (globalCtx->msgCtx.choiceIndex == GINKOMAN_CHOICE_YES) {
if ((gSaveContext.roomInf[127][0] & 0xFFFF) >= 5000) {
if ((gSaveContext.bankRupees & 0xFFFF) >= 5000) {
play_sound(NA_SE_SY_ERROR);
func_801518B0(globalCtx, 0x45F, &this->actor);
this->curTextId = 0x45F; // bank full, cannot accept more
@ -353,21 +353,20 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx)
this->curTextId = 0x453; // That's it? That aint nothing at all
}
if ((gSaveContext.roomInf[127][0] & 0xFFFF) == 0) {
if ((gSaveContext.bankRupees & 0xFFFF) == 0) {
this->isNewAccount = true;
}
func_801159EC((s16)-globalCtx->msgCtx.bankRupeesSelected);
this->previousBankValue = gSaveContext.roomInf[127][0] & 0xFFFF;
if (1) {} // Needed to match
gSaveContext.roomInf[127][0] =
(gSaveContext.roomInf[127][0] & 0xFFFF0000) |
((gSaveContext.roomInf[127][0] & 0xFFFF) + globalCtx->msgCtx.bankRupeesSelected);
this->previousBankValue = gSaveContext.bankRupees & 0xFFFF;
gSaveContext.bankRupees =
((gSaveContext.bankRupees & 0xFFFF) + globalCtx->msgCtx.bankRupeesSelected) |
(gSaveContext.bankRupees & 0xFFFF0000);
}
} else { // GINKOMAN_CHOICE_NO
func_8019F230();
Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_SITTING);
if ((gSaveContext.roomInf[127][0] & 0xFFFF) == 0) {
if ((gSaveContext.bankRupees & 0xFFFF) == 0) {
func_801518B0(globalCtx, 0x456, &this->actor);
this->curTextId = 0x456; // Is that so? think about it
} else {
@ -396,7 +395,7 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx)
break;
case 0x471: // Are you really withdrawling [selected rupees]?
if (globalCtx->msgCtx.choiceIndex == GINKOMAN_CHOICE_YES) {
if ((s32)((gSaveContext.roomInf[127][0] & 0xFFFF)) <
if ((s32)((gSaveContext.bankRupees & 0xFFFF)) <
((s32)(globalCtx->msgCtx.bankRupeesSelected + this->serviceFee))) {
play_sound(NA_SE_SY_ERROR);
Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_FLOORSMACKING);
@ -420,11 +419,11 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx)
this->curTextId = 0x472; // It's a waste to take out such a tiny bit
}
this->previousBankValue = (s16)(gSaveContext.roomInf[127][0] & 0xFFFF);
gSaveContext.roomInf[127][0] =
(gSaveContext.roomInf[127][0] & 0xFFFF0000) |
(((gSaveContext.roomInf[127][0] & 0xFFFF) - globalCtx->msgCtx.bankRupeesSelected) -
this->serviceFee);
this->previousBankValue = (s16)(gSaveContext.bankRupees & 0xFFFF);
gSaveContext.bankRupees =
(((gSaveContext.bankRupees & 0xFFFF) - globalCtx->msgCtx.bankRupeesSelected) -
this->serviceFee) |
(gSaveContext.bankRupees & 0xFFFF0000);
func_801159EC(globalCtx->msgCtx.bankRupeesSelected);
}
} else {
@ -578,7 +577,7 @@ void EnGinkoMan_Stamp(EnGinkoMan* this, GlobalContext* globalCtx) {
break;
case 0x469: // "Excuse me, but let me take a look at you..."
Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_SITTING);
globalCtx->msgCtx.bankRupees = (gSaveContext.roomInf[127][0] & 0xFFFF);
globalCtx->msgCtx.bankRupees = (gSaveContext.bankRupees & 0xFFFF);
if ((CURRENT_DAY == 3) && (gSaveContext.isNight == 1)) {
func_801518B0(globalCtx, 0x46C, &this->actor);
this->curTextId = 0x46C; // "Ah, yes...[Link], right?

View File

@ -185,7 +185,7 @@ void EnGirlA_Destroy(Actor* thisx, GlobalContext* globalCtx) {
}
s32 EnGirlA_CanBuyPotionRed(GlobalContext* globalCtx, EnGirlA* this) {
if (!func_80114E90()) {
if (!Interface_HasEmptyBottle()) {
return CANBUY_RESULT_NEED_EMPTY_BOTTLE;
}
if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) {
@ -195,7 +195,7 @@ s32 EnGirlA_CanBuyPotionRed(GlobalContext* globalCtx, EnGirlA* this) {
}
s32 EnGirlA_CanBuyPotionGreen(GlobalContext* globalCtx, EnGirlA* this) {
if (!func_80114E90()) {
if (!Interface_HasEmptyBottle()) {
return CANBUY_RESULT_NEED_EMPTY_BOTTLE;
}
if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) {
@ -208,7 +208,7 @@ s32 EnGirlA_CanBuyPotionBlue(GlobalContext* globalCtx, EnGirlA* this) {
if (!(gSaveContext.weekEventReg[53] & 8)) {
return CANBUY_RESULT_CANNOT_GET_NOW;
}
if (!func_80114E90()) {
if (!Interface_HasEmptyBottle()) {
return CANBUY_RESULT_NEED_EMPTY_BOTTLE;
}
if (!(gSaveContext.weekEventReg[53] & 0x10)) {
@ -366,7 +366,7 @@ s32 EnGirlA_CanBuyShieldMirror(GlobalContext* globalCtx, EnGirlA* this) {
}
s32 EnGirlA_CanBuyFairy(GlobalContext* globalCtx, EnGirlA* this) {
if (!func_80114E90()) {
if (!Interface_HasEmptyBottle()) {
return CANBUY_RESULT_NEED_EMPTY_BOTTLE;
}
if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) {

View File

@ -523,7 +523,7 @@ s32 func_80A1222C(EnGo* this, GlobalContext* globalCtx) {
Player* player = GET_PLAYER(globalCtx);
s32 ret = false;
if (((player->transformation == PLAYER_FORM_GORON) && (globalCtx->msgCtx.unk1202A == 3) &&
if (((player->transformation == PLAYER_FORM_GORON) && (globalCtx->msgCtx.ocarinaMode == 3) &&
(globalCtx->msgCtx.unk1202E == 1) && (this->unk_3EC == 0) && (this->actor.xzDistToPlayer < 400.0f)) ||
(!(gSaveContext.weekEventReg[22] & 4) && (globalCtx->sceneNum == SCENE_16GORON_HOUSE) &&
(gSaveContext.sceneSetupIndex == 0) && (this->unk_3EC == 0) && (globalCtx->csCtx.unk_12 == 1))) {

View File

@ -112,7 +112,7 @@ s8 func_80997A90(s16 arg0, s16 arg1) {
if ((arg0 == 0) || ((arg0 != 1) && (arg0 != 2) && (arg0 == 3))) {
phi_v1 = 0;
} else {
phi_v1 = (gSaveContext.roomInf[126][1] >> (arg1 * 3)) & 7;
phi_v1 = (gSaveContext.unk_EC4 >> (arg1 * 3)) & 7;
}
return phi_v1;
}
@ -273,7 +273,7 @@ void func_80998040(EnGs* this, GlobalContext* globalCtx) {
}
void func_8099807C(EnGs* this, GlobalContext* globalCtx) {
switch (globalCtx->msgCtx.unk1202A) {
switch (globalCtx->msgCtx.ocarinaMode) {
case 3:
switch (globalCtx->msgCtx.unk1202E) {
case 7:
@ -388,8 +388,8 @@ void func_809985B8(EnGs* this, GlobalContext* globalCtx) {
Math_Vec3f_Sum(&player->actor.world.pos, &sp38, &player->actor.world.pos);
Math_Vec3f_Copy(&player->actor.prevPos, &player->actor.world.pos);
this->unk_200 = 0.0f;
gSaveContext.roomInf[126][1] =
(gSaveContext.roomInf[126][1] & ~(7 << (this->unk_198 * 3))) | ((this->unk_194 & 7) << (this->unk_198 * 3));
gSaveContext.unk_EC4 =
((u32)gSaveContext.unk_EC4 & ~(7 << (this->unk_198 * 3))) | ((this->unk_194 & 7) << (this->unk_198 * 3));
gossipStone = NULL;
do {
@ -450,7 +450,7 @@ void func_8099874C(EnGs* this, GlobalContext* globalCtx) {
phi_v0 = 1;
for (i = 0; i < 4; i++) {
if (((gSaveContext.roomInf[126][1] >> (i * 3)) & 7) != (u32)this->unk_194) {
if (((gSaveContext.unk_EC4 >> (i * 3)) & 7) != (u32)this->unk_194) {
phi_v0 = 0;
}
}
@ -1005,7 +1005,7 @@ void EnGs_Update(Actor* thisx, GlobalContext* globalCtx) {
EnGs* this = THIS;
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
globalCtx->msgCtx.unk11F22 = 0;
globalCtx->msgCtx.msgMode = 0;
globalCtx->msgCtx.unk11F10 = 0;
this->collider.base.acFlags &= ~AC_HIT;
func_80997DEC(this, globalCtx);

View File

@ -356,7 +356,7 @@ void func_80BCFC0C(EnHg* this, GlobalContext* globalCtx) {
} else {
D_80BD00C8 = false;
}
if (globalCtx->msgCtx.unk1202A == 3) {
if (globalCtx->msgCtx.ocarinaMode == 3) {
if (globalCtx->msgCtx.unk1202E == 7 && gSaveContext.playerForm == PLAYER_FORM_HUMAN) {
if (INV_CONTENT(ITEM_MASK_GIBDO) == ITEM_MASK_GIBDO) {
this->unk218 = 3;

View File

@ -392,7 +392,7 @@ void func_80C2077C(EnHintSkb* this, GlobalContext* globalCtx) {
func_801518B0(globalCtx, 0x1147, &this->actor);
this->unk_3E6 = 0x1147;
if (this->skelAnime.animation == &object_skb_Anim_00697C) {
globalCtx->msgCtx.unk11F22 = 0x44;
globalCtx->msgCtx.msgMode = 0x44;
this->actor.speedXZ = 2.4f;
this->actor.gravity = -1.0f;
this->actor.velocity.y = 3.0f;

View File

@ -748,7 +748,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) {
if (msgCtx->choiceIndex == 0) {
func_8019F208();
if (gSaveContext.rupees >= globalCtx->msgCtx.unk1206C) {
if (func_80114E90()) {
if (Interface_HasEmptyBottle()) {
this->actionFunc = func_808F3C40;
Actor_PickUp(&this->actor, globalCtx, 0x92, 500.0f, 100.0f);
func_801159EC(-globalCtx->msgCtx.unk1206C);
@ -894,7 +894,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) {
break;
case 0x347E:
func_808F35D8(this, globalCtx);
if (func_80114E90()) {
if (Interface_HasEmptyBottle()) {
this->actionFunc = func_808F3B40;
Actor_PickUp(&this->actor, globalCtx, 0x92, 500.0f, 100.0f);
ret = true;
@ -1000,7 +1000,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) {
if (msgCtx->choiceIndex == 0) {
func_8019F208();
if (gSaveContext.rupees >= globalCtx->msgCtx.unk1206C) {
if (func_80114E90()) {
if (Interface_HasEmptyBottle()) {
this->actionFunc = func_808F3C40;
Actor_PickUp(&this->actor, globalCtx, 0x92, 500.0f, 100.0f);
func_801159EC(-globalCtx->msgCtx.unk1206C);
@ -1098,7 +1098,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) {
break;
case 0x34A1:
func_808F35D8(this, globalCtx);
if (func_80114E90()) {
if (Interface_HasEmptyBottle()) {
this->actionFunc = func_808F3B40;
Actor_PickUp(&this->actor, globalCtx, 0x92, 500.0f, 100.0f);
ret = true;

View File

@ -628,10 +628,9 @@ void func_80B439B0(s32 arg0, s32 arg1) {
}
if (!(arg0 & 1)) {
gSaveContext.roomInf[124][arg0 >> 1] = (gSaveContext.roomInf[124][arg0 >> 1] & 0xFFFF0000) | (arg1 & 0xFFFF);
gSaveContext.unk_E88[arg0 >> 1] = (gSaveContext.unk_E88[arg0 >> 1] & 0xFFFF0000) | (arg1 & 0xFFFF);
} else {
gSaveContext.roomInf[124][arg0 >> 1] =
(gSaveContext.roomInf[124][arg0 >> 1] & 0xFFFF) | ((arg1 & 0xFFFF) << 0x10);
gSaveContext.unk_E88[arg0 >> 1] = (gSaveContext.unk_E88[arg0 >> 1] & 0xFFFF) | ((arg1 & 0xFFFF) << 0x10);
}
}
@ -639,19 +638,19 @@ s32 func_80B43A24(s32 arg0) {
u32 phi_v1;
if ((arg0 & 1) == 0) {
phi_v1 = gSaveContext.roomInf[124][arg0 >> 1] & 0xFFFF;
phi_v1 = gSaveContext.unk_E88[arg0 >> 1] & 0xFFFF;
} else {
phi_v1 = (gSaveContext.roomInf[124][arg0 >> 1] & 0xFFFF0000) >> 0x10;
phi_v1 = (gSaveContext.unk_E88[arg0 >> 1] & 0xFFFF0000) >> 0x10;
}
return phi_v1 + 0x1AAA;
}
void func_80B43A74(s32 arg0) {
gSaveContext.roomInf[124][4] = (gSaveContext.roomInf[124][4] & ~0xFF) | (arg0 & 0xFF);
gSaveContext.unk_E88[4] = (gSaveContext.unk_E88[4] & ~0xFF) | (arg0 & 0xFF);
}
s32 func_80B43A9C(void) {
return (gSaveContext.roomInf[124][4] >> 0) & 0xFF;
return (gSaveContext.unk_E88[4] >> 0) & 0xFF;
}
s32 func_80B43AB0(void) {
@ -3465,7 +3464,7 @@ void func_80B4B024(EnInvadepoh* this) {
void func_80B4B048(EnInvadepoh* this, GlobalContext* globalCtx) {
if (globalCtx->msgCtx.unk120B1 == 0) {
if (globalCtx->msgCtx.unk11F22 == 0) {
if (globalCtx->msgCtx.msgMode == 0) {
D_80B4E998 = 1;
} else if ((Message_GetState(&globalCtx->msgCtx) == 6) || (Message_GetState(&globalCtx->msgCtx) == 5)) {
D_80B4E998 = 1;

View File

@ -619,7 +619,7 @@ void EnKakasi_TeachingSong(EnKakasi* this, GlobalContext* globalCtx) {
func_8096FAAC(this, globalCtx);
func_8096FBB8(this, globalCtx);
if (globalCtx->msgCtx.unk1202A == 4) { // song failed
if (globalCtx->msgCtx.ocarinaMode == 4) { // song failed
this->unk190 = 0;
this->unkCounter1A4 = 0;
ActorCutscene_Stop(this->actorCutscenes[0]);
@ -633,7 +633,7 @@ void EnKakasi_TeachingSong(EnKakasi* this, GlobalContext* globalCtx) {
EnKakasi_SetAnimation(this, ENKAKASI_ANIM_ARMS_CROSSED_ROCKING);
this->actionFunc = EnKakasi_RegularDialogue;
} else if (globalCtx->msgCtx.unk1202A == 3) { // song success
} else if (globalCtx->msgCtx.ocarinaMode == 3) { // song success
this->postTeachTimer = 30;
this->skelanime.playSpeed = 2.0f;
EnKakasi_SetAnimation(this, ENKAKASI_ANIM_HOPPING_REGULAR);
@ -656,7 +656,7 @@ void EnKakasi_PostSongLearnTwirl(EnKakasi* this, GlobalContext* globalCtx) {
void EnKakasi_SetupPostSongLearnDialogue(EnKakasi* this, GlobalContext* globalCtx) {
ActorCutscene_Stop(this->actorCutscenes[0]);
globalCtx->msgCtx.unk1202A = 4;
globalCtx->msgCtx.ocarinaMode = 4;
this->unk190 = 0;
this->unkCounter1A4 = 0;
EnKakasi_SetAnimation(this, ENKAKASI_ANIM_HOPPING_REGULAR);
@ -1033,9 +1033,9 @@ void EnKakasi_SetupIdleUnderground(EnKakasi* this) {
void EnKakasi_IdleUnderground(EnKakasi* this, GlobalContext* globalCtx) {
if ((gSaveContext.weekEventReg[79] & 0x8) && this->actor.xzDistToPlayer < this->songSummonDist &&
(BREG(1) != 0 || globalCtx->msgCtx.unk1202A == 0xD)) {
(BREG(1) != 0 || globalCtx->msgCtx.ocarinaMode == 0xD)) {
this->actor.flags &= ~0x8000000;
globalCtx->msgCtx.unk1202A = 4;
globalCtx->msgCtx.ocarinaMode = 4;
this->actionFunc = EnKakasi_SetupRiseOutOfGround;
}
}

View File

@ -825,13 +825,13 @@ void EnKanban_Update(Actor* thisx, GlobalContext* globalCtx) {
switch (this->ocarinaFlag) {
case 0:
if (globalCtx->msgCtx.unk1202A == 1) {
if (globalCtx->msgCtx.ocarinaMode == 1) {
this->ocarinaFlag = 1;
}
break;
case 1:
if ((globalCtx->msgCtx.unk1202A == 4) && (globalCtx->msgCtx.unk1202E == 7)) {
if ((globalCtx->msgCtx.ocarinaMode == 4) && (globalCtx->msgCtx.unk1202E == 7)) {
this->actionState = ENKANBAN_REPAIR;
this->bounceX = 1;
play_sound(NA_SE_SY_TRE_BOX_APPEAR);

View File

@ -153,32 +153,33 @@ ObjIcePoly* EnKgy_FindIceBlock(GlobalContext* globalCtx) {
}
void func_80B40C74(GlobalContext* globalCtx) {
gSaveContext.roomInf[globalCtx->sceneNum][5] |= 1;
gSaveContext.permanentSceneFlags[globalCtx->sceneNum].unk_14 |= 1;
if (CURRENT_DAY == 1) {
gSaveContext.roomInf[globalCtx->sceneNum][5] |= 2;
gSaveContext.permanentSceneFlags[globalCtx->sceneNum].unk_14 |= 2;
} else {
gSaveContext.roomInf[globalCtx->sceneNum][5] &= ~2;
gSaveContext.permanentSceneFlags[globalCtx->sceneNum].unk_14 &= ~2;
}
}
void func_80B40D00(GlobalContext* globalCtx) {
gSaveContext.roomInf[globalCtx->sceneNum][5] |= 4;
gSaveContext.permanentSceneFlags[globalCtx->sceneNum].unk_14 |= 4;
}
void func_80B40D30(GlobalContext* globalCtx) {
gSaveContext.roomInf[globalCtx->sceneNum][5] &= ~7;
gSaveContext.permanentSceneFlags[globalCtx->sceneNum].unk_14 &= ~7;
}
s32 func_80B40D64(GlobalContext* globalCtx) {
return gSaveContext.roomInf[globalCtx->sceneNum][5] & 1;
return gSaveContext.permanentSceneFlags[globalCtx->sceneNum].unk_14 & 1;
}
s32 func_80B40D8C(GlobalContext* globalCtx) {
return gSaveContext.roomInf[globalCtx->sceneNum][5] & 4;
return gSaveContext.permanentSceneFlags[globalCtx->sceneNum].unk_14 & 4;
}
s32 func_80B40DB4(GlobalContext* globalCtx) {
if ((CURRENT_DAY == 3) || ((CURRENT_DAY == 2) && (gSaveContext.roomInf[globalCtx->sceneNum][5] & 2))) {
if ((CURRENT_DAY == 3) ||
((CURRENT_DAY == 2) && (gSaveContext.permanentSceneFlags[globalCtx->sceneNum].unk_14 & 2))) {
return true;
}
return false;
@ -717,7 +718,7 @@ void func_80B41E18(EnKgy* this, GlobalContext* globalCtx) {
func_80B41368(this, globalCtx, 0);
this->actor.textId = 0xC43;
CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE;
TAKE_EQUIPPED_ITEM(EQUIP_SWORD);
SET_EQUIP_VALUE(EQUIP_SWORD, 0);
func_80112B40(globalCtx, 0);
func_80B40C74(globalCtx);
break;

View File

@ -909,9 +909,9 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) {
this->textId = 0x336D;
} else {
time = gSaveContext.unk_3DE0[4];
if ((s32)time < (s32)gSaveContext.roomInf[127][4]) {
if ((s32)time < (s32)gSaveContext.horseBackBalloonHighScore) {
// [Score] New record!
gSaveContext.roomInf[127][4] = time;
gSaveContext.horseBackBalloonHighScore = time;
EnMa4_SetFaceExpression(this, 0, 3);
func_801518B0(globalCtx, 0x3350, &this->actor);
this->textId = 0x3350;
@ -953,8 +953,8 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) {
this->textId = 0x3356;
} else {
time = gSaveContext.unk_3DE0[4];
if ((s32)time < (s32)gSaveContext.roomInf[127][4]) {
gSaveContext.roomInf[127][4] = time;
if ((s32)time < (s32)gSaveContext.horseBackBalloonHighScore) {
gSaveContext.horseBackBalloonHighScore = time;
EnMa4_SetFaceExpression(this, 0, 3);
func_801518B0(globalCtx, 0x3350, &this->actor);
this->textId = 0x3350;
@ -980,9 +980,9 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) {
this->textId = 0x3356;
} else {
time = gSaveContext.unk_3DE0[4];
if ((s32)time < (s32)gSaveContext.roomInf[127][4]) {
if ((s32)time < (s32)gSaveContext.horseBackBalloonHighScore) {
// New record
gSaveContext.roomInf[127][4] = time;
gSaveContext.horseBackBalloonHighScore = time;
func_801518B0(globalCtx, 0x335D, &this->actor);
this->textId = 0x335D;
} else {

View File

@ -249,7 +249,7 @@ void EnOssan_EndInteraction(GlobalContext* globalCtx, EnOssan* this) {
Player* player = GET_PLAYER(globalCtx);
Actor_ProcessTalkRequest(&this->actor, &globalCtx->state);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
Interface_ChangeAlpha(50);
this->drawCursor = 0;
@ -931,7 +931,7 @@ void EnOssan_SetupBuyItemWithFanfare(GlobalContext* globalCtx, EnOssan* this) {
Player* player = GET_PLAYER(globalCtx);
Actor_PickUp(&this->actor, globalCtx, this->items[this->cursorIdx]->getItemId, 300.0f, 300.0f);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
player->stateFlags2 &= ~0x20000000;
Interface_ChangeAlpha(50);
@ -1048,7 +1048,7 @@ void EnOssan_BuyItemWithFanfare(EnOssan* this, GlobalContext* globalCtx) {
void EnOssan_SetupItemPurchased(EnOssan* this, GlobalContext* globalCtx) {
if (Message_GetState(&globalCtx->msgCtx) == 6 && func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
EnOssan_SetupAction(this, EnOssan_ItemPurchased);
if (this->cutsceneState == ENOSSAN_CUTSCENESTATE_STOPPED) {

View File

@ -221,8 +221,8 @@ void EnRd_Init(Actor* thisx, GlobalContext* globalCtx) {
void EnRd_Destroy(Actor* thisx, GlobalContext* globalCtx) {
EnRd* this = THIS;
if (gSaveContext.unk_3F58 != 0) {
gSaveContext.unk_3F58 = 0;
if (gSaveContext.sunsSongState != SUNSSONG_INACTIVE) {
gSaveContext.sunsSongState = SUNSSONG_INACTIVE;
}
Collider_DestroyCylinder(globalCtx, &this->collider);
}
@ -982,7 +982,7 @@ void func_808D64D0(EnRd* this) {
this->unk_3D6 = 0xA;
this->actor.speedXZ = 0.0f;
this->actor.world.rot.y = this->actor.shape.rot.y;
if (gSaveContext.unk_3F58 != 0) {
if (gSaveContext.sunsSongState != SUNSSONG_INACTIVE) {
this->unk_3E9 = 1;
this->unk_3E0 = 600;
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_LIGHT_ARROW_HIT);
@ -1009,7 +1009,7 @@ void func_808D65BC(EnRd* this, GlobalContext* globalCtx) {
if (this->unk_3E0 == 0) {
this->unk_3E9 = 0;
gSaveContext.unk_3F58 = 0;
gSaveContext.sunsSongState = SUNSSONG_INACTIVE;
}
}
}
@ -1048,7 +1048,7 @@ void func_808D6814(EnRd* this, GlobalContext* globalCtx) {
s32 pad;
Player* player = GET_PLAYER(globalCtx);
if ((gSaveContext.unk_3F58 != 0) && (this->actor.shape.rot.x == 0) && (this->unk_3E9 == 0) &&
if ((gSaveContext.sunsSongState != SUNSSONG_INACTIVE) && (this->actor.shape.rot.x == 0) && (this->unk_3E9 == 0) &&
(this->unk_3EF != 11) && (this->unk_3EF != 12) && (this->unk_3EF != 1)) {
func_808D64D0(this);
return;
@ -1159,8 +1159,8 @@ void EnRd_Update(Actor* thisx, GlobalContext* globalCtx) {
EnRd* this = THIS;
func_808D6814(this, globalCtx);
if ((gSaveContext.unk_3F58 != 0) && (this->unk_3E9 == 0)) {
gSaveContext.unk_3F58 = 0;
if ((gSaveContext.sunsSongState != SUNSSONG_INACTIVE) && (this->unk_3E9 == 0)) {
gSaveContext.sunsSongState = SUNSSONG_INACTIVE;
}
if ((this->unk_3F0 != 6) && ((this->unk_3EF != 13) || (this->unk_3F0 != 2))) {

View File

@ -307,7 +307,7 @@ void func_808FA4F4(EnRr* this, GlobalContext* globalCtx) {
if (((this->unk_1E2 == 0) && (gSaveContext.playerForm == PLAYER_FORM_HUMAN)) &&
(CUR_EQUIP_VALUE_VOID(EQUIP_SHIELD) == EQUIP_SHIELD)) {
sp34 = true;
this->unk_1E2 = func_8012ED78(globalCtx, 1);
this->unk_1E2 = Inventory_DeleteEquipment(globalCtx, 1);
} else {
sp34 = false;
}

View File

@ -367,7 +367,7 @@ void EnRuppecrow_UpdatePosition(EnRuppecrow* this, GlobalContext* globalCtx) {
s32 EnRuppecrow_CheckPlayedMatchingSong(GlobalContext* globalCtx) {
Player* player = GET_PLAYER(globalCtx);
if (globalCtx->msgCtx.unk1202A == 0x3) {
if (globalCtx->msgCtx.ocarinaMode == 0x3) {
switch (player->transformation) {
case PLAYER_FORM_DEKU:
if (globalCtx->msgCtx.unk1202E == OCARINA_SONG_SONATA) {

View File

@ -307,7 +307,7 @@ void func_80BCB6D0(EnScopenuts* this, GlobalContext* globalCtx) {
if (func_80147624(globalCtx)) {
if (this->unk_328 & 1) {
this->unk_328 &= ~1;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actor.flags &= ~ACTOR_FLAG_1;
this->unk_328 &= ~4;
@ -330,7 +330,7 @@ void func_80BCB6D0(EnScopenuts* this, GlobalContext* globalCtx) {
func_801518B0(globalCtx, this->unk_33C, &this->actor);
} else {
func_8019F208();
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
func_801159EC(this->unk_358 * -1);
this->actionFunc = func_80BCB90C;

View File

@ -462,7 +462,7 @@ void func_80ADBAB8(EnSellnuts* this, GlobalContext* globalCtx) {
}
if ((sp27 == 5) && func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actionFunc = func_80ADBBEC;
func_800B7298(globalCtx, NULL, 0x13);
@ -508,7 +508,7 @@ void func_80ADBD64(EnSellnuts* this, GlobalContext* globalCtx) {
}
if ((sp27 == 5) && func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_338 &= ~2;
this->actor.flags &= ~1;
@ -550,7 +550,7 @@ void func_80ADBE80(EnSellnuts* this, GlobalContext* globalCtx) {
void func_80ADBFA0(EnSellnuts* this, GlobalContext* globalCtx) {
if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
if (this->unk_34C == 0) {
this->actionFunc = func_80ADB544;
@ -713,7 +713,7 @@ void func_80ADC6D0(EnSellnuts* this, GlobalContext* globalCtx) {
Player* player = GET_PLAYER(globalCtx);
if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
if (player->transformation == PLAYER_FORM_DEKU) {
if (gSaveContext.day == 3) {
@ -743,7 +743,7 @@ void func_80ADC7B4(EnSellnuts* this, GlobalContext* globalCtx) {
ActorCutscene_SetIntentToPlay(this->cutscene);
}
} else if ((this->unk_366 == 1) && (temp == 5) && func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_366 = 0;
ActorCutscene_Stop(this->cutscene);

View File

@ -436,7 +436,7 @@ void EnSob1_EndInteraction(GlobalContext* globalCtx, EnSob1* this) {
this->cutsceneState = ENSOB1_CUTSCENESTATE_STOPPED;
}
Actor_ProcessTalkRequest(&this->actor, &globalCtx->state);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
Interface_ChangeAlpha(50);
this->drawCursor = 0;
@ -927,7 +927,7 @@ void EnSob1_SetupBuyItemWithFanfare(GlobalContext* globalCtx, EnSob1* this) {
Player* player = GET_PLAYER(globalCtx);
Actor_PickUp(&this->actor, globalCtx, this->items[this->cursorIdx]->getItemId, 300.0f, 300.0f);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
player->stateFlags2 &= ~0x20000000;
Interface_ChangeAlpha(50);
@ -1067,7 +1067,7 @@ void EnSob1_BuyItemWithFanfare(EnSob1* this, GlobalContext* globalCtx) {
void EnSob1_SetupItemPurchased(EnSob1* this, GlobalContext* globalCtx) {
if (Message_GetState(&globalCtx->msgCtx) == 6 && func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
EnSob1_SetupAction(this, EnSob1_ItemPurchased);
if (this->cutsceneState == ENSOB1_CUTSCENESTATE_STOPPED) {

View File

@ -653,7 +653,7 @@ void EnSsh_Init(Actor* thisx, GlobalContext* globalCtx) {
this->actor.gravity = 0.0f;
this->initialYaw = this->actor.world.rot.y;
EnSsh_SetupAction(this, EnSsh_Start);
if (func_8012F22C(globalCtx->sceneNum) >= 30) {
if (Inventory_GetSkullTokenCount(globalCtx->sceneNum) >= 30) {
Actor_MarkForDeath(&this->actor);
}
}

View File

@ -1108,7 +1108,7 @@ void func_80BAD130(EnSuttari* this, GlobalContext* globalCtx) {
u8 talkState = Message_GetState(&globalCtx->msgCtx);
if ((talkState == 5 || talkState == 6) && func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
if (this->flags1 & 8) {
this->actionFunc = func_80BAD004;
@ -1145,7 +1145,7 @@ void func_80BAD2B4(EnSuttari* this, GlobalContext* globalCtx) {
this->actionFunc = func_80BAD230;
} else {
ActorCutscene_Stop(this->cutscenes[1]);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->flags1 |= 0x40;
this->actionFunc = func_80BAD380;
@ -1169,7 +1169,7 @@ void func_80BAD380(EnSuttari* this, GlobalContext* globalCtx) {
player->stateFlags1 &= ~0x10000000;
this->flags1 &= ~0x4000;
ActorCutscene_Stop(this->cutscenes[1]);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->flags1 |= 0x40;
}
@ -1312,7 +1312,7 @@ void func_80BADA9C(EnSuttari* this, GlobalContext* globalCtx) {
((EnElf*)GET_PLAYER(globalCtx)->tatlActor)->unk_264 |= 0x10;
this->flags2 &= ~1;
}
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->textId = 0;
if (this->flags1 & 1) {

View File

@ -271,7 +271,7 @@ void func_809C6A04(EnSyatekiMan* this, GlobalContext* globalCtx) {
func_801159EC(-20);
gSaveContext.weekEventReg[63] |= 1;
gSaveContext.weekEventReg[63] &= (u8)~2;
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_26A = 7;
player->stateFlags1 |= 0x20;
@ -320,7 +320,7 @@ void func_809C6C2C(EnSyatekiMan* this, GlobalContext* globalCtx) {
case 0xA2B:
case 0xA2C:
case 0xA35:
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
player->actor.freezeTimer = 0;
func_80112AFC(globalCtx);
@ -353,7 +353,7 @@ void func_809C6C2C(EnSyatekiMan* this, GlobalContext* globalCtx) {
break;
case 0xA34:
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
player->actor.freezeTimer = 0;
gSaveContext.minigameState = 3;
@ -388,7 +388,7 @@ void func_809C6E30(EnSyatekiMan* this, GlobalContext* globalCtx) {
case 6:
if (func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
player->stateFlags1 &= ~0x20;
gSaveContext.weekEventReg[63] &= (u8)~1;
@ -628,7 +628,7 @@ void func_809C7620(EnSyatekiMan* this, GlobalContext* globalCtx) {
this->unk_284 = 0x400;
}
} else {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
player->actor.freezeTimer = 0;
this->unk_26A = 7;
@ -641,7 +641,7 @@ void func_809C7620(EnSyatekiMan* this, GlobalContext* globalCtx) {
case 0x3FE:
case 0x400:
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
player->actor.freezeTimer = 0;
this->unk_27E = 0;
@ -688,7 +688,7 @@ void func_809C7620(EnSyatekiMan* this, GlobalContext* globalCtx) {
case 0x405:
case 0x406:
case 0x407:
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
player->actor.freezeTimer = 0;
gSaveContext.minigameState = 3;
@ -974,8 +974,8 @@ void func_809C8488(EnSyatekiMan* this, GlobalContext* globalCtx) {
this->unk_274 = 0;
this->unk_276 = 0;
if (this->unk_270 <= 0) {
if ((s32)((gSaveContext.roomInf[127][6] & 0xFFFF0000) >> 0x10) < this->unk_280) {
gSaveContext.roomInf[127][6] = ((gSaveContext.roomInf[127][6]) & 0xFFFF) | ((u16)this->unk_280 << 0x10);
if ((s32)((gSaveContext.unk_EF4 & 0xFFFF0000) >> 0x10) < this->unk_280) {
gSaveContext.unk_EF4 = ((gSaveContext.unk_EF4) & 0xFFFF) | ((u16)this->unk_280 << 0x10);
}
this->unk_270 = 15;
if (this->unk_280 >= 0x848) {
@ -1164,8 +1164,8 @@ void func_809C8BF0(EnSyatekiMan* this, GlobalContext* globalCtx) {
if ((this->unk_270 <= 0) && (globalCtx->interfaceCtx.unk_286 == 0)) {
Flags_SetAllTreasure(globalCtx, this->unk_280);
this->unk_270 = 15;
if (((s32)(gSaveContext.roomInf[127][6] & 0xFFFF) < this->unk_280) || (this->unk_280 == 50)) {
if ((s32)(gSaveContext.roomInf[127][6] & 0xFFFF) < this->unk_280) {
if (((s32)(gSaveContext.unk_EF4 & 0xFFFF) < this->unk_280) || (this->unk_280 == 50)) {
if ((s32)(gSaveContext.unk_EF4 & 0xFFFF) < this->unk_280) {
if (!(gSaveContext.weekEventReg[59] & 0x20)) {
func_801518B0(globalCtx, 0x407, &this->actor);
this->unk_284 = 0x407;
@ -1180,7 +1180,7 @@ void func_809C8BF0(EnSyatekiMan* this, GlobalContext* globalCtx) {
func_801518B0(globalCtx, 0x406, &this->actor);
this->unk_284 = 0x406;
}
gSaveContext.roomInf[127][6] = (gSaveContext.roomInf[127][6] & 0xFFFF0000) | (this->unk_280 & 0xFFFF);
gSaveContext.unk_EF4 = (gSaveContext.unk_EF4 & 0xFFFF0000) | (this->unk_280 & 0xFFFF);
this->unk_26A = 6;
} else {
if (CURRENT_DAY != 3) {

View File

@ -670,7 +670,7 @@ s32 EnTalkGibud_PresentedItemMatchesRequest(EnTalkGibud* this, GlobalContext* gl
return EN_TALK_GIBUD_REQUESTED_ITEM_NOT_ENOUGH_AMMO;
}
}
if (func_80114F2C(requestedItem->item)) {
if (Interface_HasItemInBottle(requestedItem->item)) {
return EN_TALK_GIBUD_REQUESTED_ITEM_MET;
}
}

View File

@ -168,7 +168,7 @@ void EnThiefbird_Init(Actor* thisx, GlobalContext* globalCtx) {
D_80C1392C = 1;
Math_Vec3f_Copy(&D_80C13920, &this->actor.world.pos);
Actor_MarkForDeath(&this->actor);
} else if ((gSaveContext.roomInf[126][5] & 0xFF000000) >> 0x18) {
} else if ((gSaveContext.stolenItems & 0xFF000000) >> 0x18) {
Actor_MarkForDeath(&this->actor);
} else {
func_80C11538(this);
@ -260,7 +260,7 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) {
itemId1 = ITEM_SWORD_GREAT_FAIRY;
} else {
CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE;
TAKE_EQUIPPED_ITEM(EQUIP_SWORD);
SET_EQUIP_VALUE(EQUIP_SWORD, 0);
this->unk_3E8 = D_80C13680[phi_a3 - 1];
}
@ -271,10 +271,10 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) {
return false;
}
if (!((gSaveContext.roomInf[126][5] & 0xFF000000) >> 0x18)) {
gSaveContext.roomInf[126][5] = (gSaveContext.roomInf[126][5] & 0xFFFFFF) | ((itemId1 & 0xFF) << 0x18);
if (!((gSaveContext.stolenItems & 0xFF000000) >> 0x18)) {
gSaveContext.stolenItems = (gSaveContext.stolenItems & 0xFFFFFF) | ((itemId1 & 0xFF) << 0x18);
} else {
gSaveContext.roomInf[126][5] = (gSaveContext.roomInf[126][5] & 0xFF00FFFF) | ((itemId1 & 0xFF) << 0x10);
gSaveContext.stolenItems = (gSaveContext.stolenItems & 0xFF00FFFF) | ((itemId1 & 0xFF) << 0x10);
}
return true;
@ -570,8 +570,8 @@ void func_80C1193C(EnThiefbird* this, GlobalContext* globalCtx) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_THIEFBIRD_VOICE);
if (!(this->collider.base.atFlags & AT_BOUNCED)) {
if ((D_80C1392C != 0) && CUR_UPG_VALUE(UPG_QUIVER) &&
(!((gSaveContext.roomInf[126][5] & 0xFF000000) >> 0x18) ||
!((gSaveContext.roomInf[126][5] & 0xFF0000) >> 0x10)) &&
(!((gSaveContext.stolenItems & 0xFF000000) >> 0x18) ||
!((gSaveContext.stolenItems & 0xFF0000) >> 0x10)) &&
(Rand_ZeroOne() < 0.5f) && func_80C10B0C(this, globalCtx)) {
func_80C1242C(this);
} else if (func_80C10E98(globalCtx)) {

View File

@ -291,7 +291,7 @@ void func_80AECA3C(EnTk* this, GlobalContext* globalCtx) {
void func_80AECA90(EnTk* this, GlobalContext* globalCtx) {
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
globalCtx->msgCtx.unk11F22 = 0;
globalCtx->msgCtx.msgMode = 0;
globalCtx->msgCtx.unk11F10 = 0;
func_80AEDE10(this, globalCtx);
} else if (this->actor.xzDistToPlayer < 100.0f) {
@ -318,7 +318,7 @@ void func_80AECB6C(EnTk* this, GlobalContext* globalCtx) {
this->actor.textId = 0;
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
globalCtx->msgCtx.unk11F22 = 0;
globalCtx->msgCtx.msgMode = 0;
globalCtx->msgCtx.unk11F10 = 0;
func_80AED4F8(this, globalCtx);
return;
@ -690,7 +690,7 @@ void func_80AED940(EnTk* this, GlobalContext* globalCtx) {
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
this->unk_2CA &= ~0x80;
this->actor.flags &= ~0x10000;
globalCtx->msgCtx.unk11F22 = 0;
globalCtx->msgCtx.msgMode = 0;
globalCtx->msgCtx.unk11F10 = 0;
func_80AEDE10(this, globalCtx);
} else if (!(this->unk_2CA & 0x80)) {
@ -871,7 +871,7 @@ void func_80AEDF5C(EnTk* this, GlobalContext* globalCtx) {
this->unk_2CA |= 2;
if (globalCtx->msgCtx.choiceIndex == 0) {
func_8019F208();
globalCtx->msgCtx.unk11F22 = 0x44;
globalCtx->msgCtx.msgMode = 0x44;
func_80AEE2A8(this, globalCtx);
} else {
func_8019F230();

View File

@ -547,7 +547,7 @@ s32 func_80BA46D8(EnToto* this, GlobalContext* globalCtx) {
}
s32 func_80BA4740(EnToto* this, GlobalContext* globalCtx) {
if (globalCtx->msgCtx.unk1202A == 4) {
if (globalCtx->msgCtx.ocarinaMode == 4) {
if (gSaveContext.playerForm == PLAYER_FORM_HUMAN) {
gSaveContext.weekEventReg[56] |= 0x10;
}

View File

@ -199,7 +199,7 @@ void EnTrt_EndInteraction(GlobalContext* globalCtx, EnTrt* this) {
this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED;
}
Actor_ProcessTalkRequest(&this->actor, &globalCtx->state);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
Interface_ChangeAlpha(50);
this->drawCursor = 0;
@ -342,7 +342,7 @@ void EnTrt_GetMushroom(EnTrt* this, GlobalContext* globalCtx) {
ActorCutscene_Stop(this->cutscene);
this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED;
}
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actionFunc = EnTrt_PayForMushroom;
break;
@ -382,12 +382,12 @@ void EnTrt_Goodbye(EnTrt* this, GlobalContext* globalCtx) {
void EnTrt_SetupTryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) {
if (Message_GetState(&globalCtx->msgCtx) == 5 && func_80147624(globalCtx)) {
if (this->textId == 0x88F) {
if (func_80114E90() || !(gSaveContext.weekEventReg[0xC] & 0x10)) {
if (Interface_HasEmptyBottle() || !(gSaveContext.weekEventReg[0xC] & 0x10)) {
if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) {
ActorCutscene_Stop(this->cutscene);
this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED;
}
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actionFunc = EnTrt_GiveRedPotionForKoume;
} else {
@ -403,7 +403,7 @@ void EnTrt_SetupTryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) {
EnTrt_SetupStartShopping(globalCtx, this, 0);
} else if (gSaveContext.weekEventReg[0x54] & 0x40) {
this->textId = 0x83B;
if (func_80114F2C(ITEM_POTION_RED)) {
if (Interface_HasItemInBottle(ITEM_POTION_RED)) {
EnTrt_SetupStartShopping(globalCtx, this, false);
} else {
this->actionFunc = EnTrt_TryToGiveRedPotion;
@ -632,7 +632,7 @@ void EnTrt_SetupBuyItemWithFanfare(GlobalContext* globalCtx, EnTrt* this) {
Player* player = GET_PLAYER(globalCtx);
Actor_PickUp(&this->actor, globalCtx, this->items[this->cursorIdx]->getItemId, 300.0f, 300.0f);
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
player->stateFlags2 &= ~0x20000000;
Interface_ChangeAlpha(50);
@ -715,7 +715,7 @@ void EnTrt_SelectItem(EnTrt* this, GlobalContext* globalCtx) {
}
}
} else if (talkState == 5 && func_80147624(globalCtx)) {
if (!func_80114E90()) {
if (!Interface_HasEmptyBottle()) {
play_sound(NA_SE_SY_ERROR);
EnTrt_SetupCannotBuy(globalCtx, this, 0x846);
} else {
@ -926,7 +926,7 @@ void EnTrt_TryToGiveRedPotionAfterSurprised(EnTrt* this, GlobalContext* globalCt
this->blinkFunc = EnTrt_Blink;
if (talkState == 6 && func_80147624(globalCtx)) {
if (func_80114E90() || !(gSaveContext.weekEventReg[0xC] & 0x10)) {
if (Interface_HasEmptyBottle() || !(gSaveContext.weekEventReg[0xC] & 0x10)) {
if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) {
ActorCutscene_Stop(this->cutscene);
this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED;
@ -945,12 +945,12 @@ void EnTrt_TryToGiveRedPotionAfterSurprised(EnTrt* this, GlobalContext* globalCt
void EnTrt_TryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) {
if (Message_GetState(&globalCtx->msgCtx) == 5 && func_80147624(globalCtx)) {
if (this->textId == 0x83C) {
if (func_80114E90()) {
if (Interface_HasEmptyBottle()) {
if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) {
ActorCutscene_Stop(this->cutscene);
this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED;
}
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->actionFunc = EnTrt_GiveRedPotionForKoume;
} else {

View File

@ -328,7 +328,7 @@ void func_80AD3CEC(EnTrt2* this, GlobalContext* globalCtx) {
func_801518B0(globalCtx, this->unk_3A8, &this->actor);
this->unk_3D8 = false;
} else if ((sp27 == 5) && func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
func_80AD3380(&this->skelAnime, sAnimations, 6);
this->unk_3B2 = 4;
@ -343,7 +343,7 @@ void func_80AD3DA4(EnTrt2* this, GlobalContext* globalCtx) {
this->unk_3B2 = 11;
return;
} else if (this->unk_3A8 == 0x88F) {
if (func_80114E90()) {
if (Interface_HasEmptyBottle()) {
this->unk_3B2 = 11;
} else {
this->unk_3B2 = 10;
@ -355,8 +355,8 @@ void func_80AD3DA4(EnTrt2* this, GlobalContext* globalCtx) {
void func_80AD3E34(EnTrt2* this, GlobalContext* globalCtx) {
if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) {
if (func_80114E90()) {
globalCtx->msgCtx.unk11F22 = 0x43;
if (Interface_HasEmptyBottle()) {
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_3B2 = 12;
} else {
@ -373,7 +373,7 @@ void func_80AD3EF0(EnTrt2* this, GlobalContext* globalCtx) {
if (temp_v0 == 6) {
if (func_80147624(globalCtx)) {
if ((func_80114E90() && !(gSaveContext.weekEventReg[84] & 0x40)) ||
if ((Interface_HasEmptyBottle() && !(gSaveContext.weekEventReg[84] & 0x40)) ||
!(gSaveContext.weekEventReg[12] & 0x10)) {
this->unk_3B2 = 12;
} else {
@ -384,7 +384,7 @@ void func_80AD3EF0(EnTrt2* this, GlobalContext* globalCtx) {
}
}
} else if ((temp_v0 == 5) && func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
this->unk_3B2 = 12;
}
@ -428,7 +428,7 @@ void func_80AD417C(EnTrt2* this, GlobalContext* globalCtx) {
func_80AD349C(this);
func_80AD3DA4(this, globalCtx);
} else {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
if (this->unk_3A8 == 0x84C) {
func_80AD3380(&this->skelAnime, sAnimations, 6);
@ -510,7 +510,7 @@ void func_80AD4550(EnTrt2* this, GlobalContext* globalCtx) {
}
if ((sp23 == 5) && func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
}
}

View File

@ -484,7 +484,7 @@ void EnWeatherTag_Update(Actor* thisx, GlobalContext* globalCtx) {
u16 oldTime;
this->actionFunc(this, globalCtx);
if ((globalCtx->actorCtx.unk5 & 2) && (globalCtx->msgCtx.unk11F22 != 0) && (globalCtx->msgCtx.unk11F04 == 0x5E6) &&
if ((globalCtx->actorCtx.unk5 & 2) && (globalCtx->msgCtx.msgMode != 0) && (globalCtx->msgCtx.unk11F04 == 0x5E6) &&
(!FrameAdvance_IsEnabled(globalCtx)) && (globalCtx->sceneLoadFlag == 0) &&
(ActorCutscene_GetCurrentIndex() == -1) && (globalCtx->csCtx.state == 0)) {

View File

@ -628,7 +628,7 @@ void func_80B9451C(EnZog* this, GlobalContext* globalCtx) {
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
this->unk_300 = 2;
this->actionFunc = func_80B94470;
} else if ((globalCtx->msgCtx.unk1202A == 3) && (this->actor.xzDistToPlayer < 120.0f)) {
} else if ((globalCtx->msgCtx.ocarinaMode == 3) && (this->actor.xzDistToPlayer < 120.0f)) {
if ((globalCtx->msgCtx.unk1202E == 7) && (gSaveContext.playerForm == PLAYER_FORM_HUMAN)) {
func_80B93BA8(this, 2);
this->actionFunc = func_80B943C0;
@ -716,7 +716,7 @@ void func_80B948A8(EnZog* this, GlobalContext* globalCtx) {
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
this->unk_300 = 2;
this->actionFunc = func_80B946FC;
} else if ((globalCtx->msgCtx.unk1202A == 3) && (this->actor.xzDistToPlayer < 120.0f)) {
} else if ((globalCtx->msgCtx.ocarinaMode == 3) && (this->actor.xzDistToPlayer < 120.0f)) {
if ((globalCtx->msgCtx.unk1202E == 7) && (gSaveContext.playerForm == PLAYER_FORM_HUMAN)) {
func_80B93BA8(this, 2);
this->actionFunc = func_80B943C0;

View File

@ -526,8 +526,8 @@ void func_80BBBDE0(EnZos* this, GlobalContext* globalCtx) {
func_80BBB0D4(this, globalCtx);
if (globalCtx->msgCtx.unk1202A == 0x2A) {
globalCtx->msgCtx.unk1202A = 4;
if (globalCtx->msgCtx.ocarinaMode == 0x2A) {
globalCtx->msgCtx.ocarinaMode = 4;
this->actionFunc = func_80BBBB84;
this->actor.flags |= ACTOR_FLAG_10000;
func_800B8614(&this->actor, globalCtx, 120.0f);

View File

@ -1138,7 +1138,7 @@ void func_80B98BF4(EnZot* this, GlobalContext* globalCtx) {
void func_80B98CA8(EnZot* this, GlobalContext* globalCtx) {
if (func_800B8718(&this->actor, &globalCtx->state)) {
globalCtx->msgCtx.unk1202A = 4;
globalCtx->msgCtx.ocarinaMode = 4;
func_8019B544(0xFFFF);
this->actionFunc = func_80B98BF4;
this->actor.flags |= 0x10000;

View File

@ -98,7 +98,7 @@ void func_80B3C4E0(ObjGhaka* this, GlobalContext* globalCtx) {
if (talkState == 5) {
if (func_80147624(globalCtx)) {
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
func_80B3C260(this);
}
@ -117,7 +117,7 @@ void func_80B3C4E0(ObjGhaka* this, GlobalContext* globalCtx) {
break;
case 2:
func_8019F230();
globalCtx->msgCtx.unk11F22 = 0x43;
globalCtx->msgCtx.msgMode = 0x43;
globalCtx->msgCtx.unk12023 = 4;
func_80B3C260(this);
}

View File

@ -141,7 +141,7 @@ void ObjWarpstone_Update(Actor* thisx, GlobalContext* globalCtx) {
} else if ((Message_GetState(&globalCtx->msgCtx) == 4) && (func_80147624(globalCtx))) {
if (globalCtx->msgCtx.choiceIndex != 0) {
func_8019F208();
globalCtx->msgCtx.unk11F22 = 0x4D;
globalCtx->msgCtx.msgMode = 0x4D;
globalCtx->msgCtx.unk120D6 = 0;
globalCtx->msgCtx.unk120D4 = 0;
gSaveContext.owlSaveLocation = OBJ_WARPSTONE_GET_ID(this);

View File

@ -2119,8 +2119,8 @@
0x80114A9C:("func_80114A9C",),
0x80114B84:("func_80114B84",),
0x80114CA0:("func_80114CA0",),
0x80114E90:("func_80114E90",),
0x80114F2C:("func_80114F2C",),
0x80114E90:("Interface_HasEmptyBottle",),
0x80114F2C:("Interface_HasItemInBottle",),
0x80114FD0:("func_80114FD0",),
0x80115130:("func_80115130",),
0x801152B8:("func_801152B8",),
@ -2206,7 +2206,7 @@
0x80123AA4:("func_80123AA4",),
0x80123BD4:("func_80123BD4",),
0x80123C58:("func_80123C58",),
0x80123C90:("func_80123C90",),
0x80123C90:("Player_SetEquipmentData",),
0x80123D50:("func_80123D50",),
0x80123DA4:("func_80123DA4",),
0x80123DC0:("func_80123DC0",),
@ -2405,16 +2405,16 @@
0x8012EAA8:("Room_HandleLoadCallbacks",),
0x8012EBA8:("Room_Draw",),
0x8012EBF8:("func_8012EBF8",),
0x8012EC80:("func_8012EC80",),
0x8012ED34:("func_8012ED34",),
0x8012ED78:("func_8012ED78",),
0x8012EDE8:("func_8012EDE8",),
0x8012EE34:("func_8012EE34",),
0x8012EF0C:("func_8012EF0C",),
0x8012F0EC:("func_8012F0EC",),
0x8012F1BC:("func_8012F1BC",),
0x8012F22C:("func_8012F22C",),
0x8012F278:("func_8012F278",),
0x8012EC80:("Inventory_GetBtnBItem",),
0x8012ED34:("Inventory_ChangeEquipment",),
0x8012ED78:("Inventory_DeleteEquipment",),
0x8012EDE8:("Inventory_ChangeUpgrade",),
0x8012EE34:("Inventory_IsMapVisible",),
0x8012EF0C:("Inventory_SetMapVisibility",),
0x8012F0EC:("Inventory_SaveDekuPlaygroundHighScore",),
0x8012F1BC:("Inventory_IncrementSkullTokenCount",),
0x8012F22C:("Inventory_GetSkullTokenCount",),
0x8012F278:("Inventory_SaveLotteryCodeGuess",),
0x8012F2E0:("Object_Spawn",),
0x8012F3D0:("Object_InitBank",),
0x8012F4FC:("Object_UpdateBank",),

View File

@ -1386,7 +1386,7 @@
0x801C2078:("gItemSlots","u8","[80]",0x50),
0x801C20C8:("gItemPrices","UNK_TYPE1","",0x1),
0x801C212C:("gScenesPerRegion","SceneIdList","[]",0x252),
0x801C2380:("D_801C2380","u16","[]",0x90),
0x801C2380:("sScenesPerTingleMap","u16","[]",0x90),
0x801C2410:("D_801C2410","UNK_TYPE1","",0x1),
0x801C2650:("tatlMessageFiles","RomFile","[2]",0x10),
0x801C2660:("sceneTextureFiles","RomFile","[9]",0x48),

View File

@ -1633,8 +1633,8 @@ asm/non_matchings/code/z_parameter/func_801149A0.s,func_801149A0,0x801149A0,0x3F
asm/non_matchings/code/z_parameter/func_80114A9C.s,func_80114A9C,0x80114A9C,0x3A
asm/non_matchings/code/z_parameter/func_80114B84.s,func_80114B84,0x80114B84,0x47
asm/non_matchings/code/z_parameter/func_80114CA0.s,func_80114CA0,0x80114CA0,0x7C
asm/non_matchings/code/z_parameter/func_80114E90.s,func_80114E90,0x80114E90,0x27
asm/non_matchings/code/z_parameter/func_80114F2C.s,func_80114F2C,0x80114F2C,0x29
asm/non_matchings/code/z_parameter/Interface_HasEmptyBottle.s,Interface_HasEmptyBottle,0x80114E90,0x27
asm/non_matchings/code/z_parameter/Interface_HasItemInBottle.s,Interface_HasItemInBottle,0x80114F2C,0x29
asm/non_matchings/code/z_parameter/func_80114FD0.s,func_80114FD0,0x80114FD0,0x58
asm/non_matchings/code/z_parameter/func_80115130.s,func_80115130,0x80115130,0x62
asm/non_matchings/code/z_parameter/func_801152B8.s,func_801152B8,0x801152B8,0x44
@ -1720,7 +1720,7 @@ asm/non_matchings/code/z_player_lib/func_801239AC.s,func_801239AC,0x801239AC,0x3
asm/non_matchings/code/z_player_lib/func_80123AA4.s,func_80123AA4,0x80123AA4,0x4C
asm/non_matchings/code/z_player_lib/func_80123BD4.s,func_80123BD4,0x80123BD4,0x21
asm/non_matchings/code/z_player_lib/func_80123C58.s,func_80123C58,0x80123C58,0xE
asm/non_matchings/code/z_player_lib/func_80123C90.s,func_80123C90,0x80123C90,0x30
asm/non_matchings/code/z_player_lib/Player_SetEquipmentData.s,Player_SetEquipmentData,0x80123C90,0x30
asm/non_matchings/code/z_player_lib/func_80123D50.s,func_80123D50,0x80123D50,0x15
asm/non_matchings/code/z_player_lib/func_80123DA4.s,func_80123DA4,0x80123DA4,0x7
asm/non_matchings/code/z_player_lib/func_80123DC0.s,func_80123DC0,0x80123DC0,0x34
@ -1919,16 +1919,16 @@ asm/non_matchings/code/z_room/Room_StartRoomTransition.s,Room_StartRoomTransitio
asm/non_matchings/code/z_room/Room_HandleLoadCallbacks.s,Room_HandleLoadCallbacks,0x8012EAA8,0x40
asm/non_matchings/code/z_room/Room_Draw.s,Room_Draw,0x8012EBA8,0x14
asm/non_matchings/code/z_room/func_8012EBF8.s,func_8012EBF8,0x8012EBF8,0x22
asm/non_matchings/code/code_8012EC80/func_8012EC80.s,func_8012EC80,0x8012EC80,0x2D
asm/non_matchings/code/code_8012EC80/func_8012ED34.s,func_8012ED34,0x8012ED34,0x11
asm/non_matchings/code/code_8012EC80/func_8012ED78.s,func_8012ED78,0x8012ED78,0x1C
asm/non_matchings/code/code_8012EC80/func_8012EDE8.s,func_8012EDE8,0x8012EDE8,0x13
asm/non_matchings/code/code_8012EC80/func_8012EE34.s,func_8012EE34,0x8012EE34,0x36
asm/non_matchings/code/code_8012EC80/func_8012EF0C.s,func_8012EF0C,0x8012EF0C,0x78
asm/non_matchings/code/code_8012EC80/func_8012F0EC.s,func_8012F0EC,0x8012F0EC,0x34
asm/non_matchings/code/code_8012EC80/func_8012F1BC.s,func_8012F1BC,0x8012F1BC,0x1C
asm/non_matchings/code/code_8012EC80/func_8012F22C.s,func_8012F22C,0x8012F22C,0x13
asm/non_matchings/code/code_8012EC80/func_8012F278.s,func_8012F278,0x8012F278,0x16
asm/non_matchings/code/code_8012EC80/Inventory_GetBtnBItem.s,Inventory_GetBtnBItem,0x8012EC80,0x2D
asm/non_matchings/code/code_8012EC80/Inventory_ChangeEquipment.s,Inventory_ChangeEquipment,0x8012ED34,0x11
asm/non_matchings/code/code_8012EC80/Inventory_DeleteEquipment.s,Inventory_DeleteEquipment,0x8012ED78,0x1C
asm/non_matchings/code/code_8012EC80/Inventory_ChangeUpgrade.s,Inventory_ChangeUpgrade,0x8012EDE8,0x13
asm/non_matchings/code/code_8012EC80/Inventory_IsMapVisible.s,Inventory_IsMapVisible,0x8012EE34,0x36
asm/non_matchings/code/code_8012EC80/Inventory_SetMapVisibility.s,Inventory_SetMapVisibility,0x8012EF0C,0x78
asm/non_matchings/code/code_8012EC80/Inventory_SaveDekuPlaygroundHighScore.s,Inventory_SaveDekuPlaygroundHighScore,0x8012F0EC,0x34
asm/non_matchings/code/code_8012EC80/Inventory_IncrementSkullTokenCount.s,Inventory_IncrementSkullTokenCount,0x8012F1BC,0x1C
asm/non_matchings/code/code_8012EC80/Inventory_GetSkullTokenCount.s,Inventory_GetSkullTokenCount,0x8012F22C,0x13
asm/non_matchings/code/code_8012EC80/Inventory_SaveLotteryCodeGuess.s,Inventory_SaveLotteryCodeGuess,0x8012F278,0x16
asm/non_matchings/code/z_scene/Object_Spawn.s,Object_Spawn,0x8012F2E0,0x3C
asm/non_matchings/code/z_scene/Object_InitBank.s,Object_InitBank,0x8012F3D0,0x4B
asm/non_matchings/code/z_scene/Object_UpdateBank.s,Object_UpdateBank,0x8012F4FC,0x43

1 asm/non_matchings/code/z_en_a_keep/EnAObj_Init.s EnAObj_Init 0x800A5AC0 0x2B
1633 asm/non_matchings/code/z_parameter/func_80114A9C.s func_80114A9C 0x80114A9C 0x3A
1634 asm/non_matchings/code/z_parameter/func_80114B84.s func_80114B84 0x80114B84 0x47
1635 asm/non_matchings/code/z_parameter/func_80114CA0.s func_80114CA0 0x80114CA0 0x7C
1636 asm/non_matchings/code/z_parameter/func_80114E90.s asm/non_matchings/code/z_parameter/Interface_HasEmptyBottle.s func_80114E90 Interface_HasEmptyBottle 0x80114E90 0x27
1637 asm/non_matchings/code/z_parameter/func_80114F2C.s asm/non_matchings/code/z_parameter/Interface_HasItemInBottle.s func_80114F2C Interface_HasItemInBottle 0x80114F2C 0x29
1638 asm/non_matchings/code/z_parameter/func_80114FD0.s func_80114FD0 0x80114FD0 0x58
1639 asm/non_matchings/code/z_parameter/func_80115130.s func_80115130 0x80115130 0x62
1640 asm/non_matchings/code/z_parameter/func_801152B8.s func_801152B8 0x801152B8 0x44
1720 asm/non_matchings/code/z_player_lib/func_80123AA4.s func_80123AA4 0x80123AA4 0x4C
1721 asm/non_matchings/code/z_player_lib/func_80123BD4.s func_80123BD4 0x80123BD4 0x21
1722 asm/non_matchings/code/z_player_lib/func_80123C58.s func_80123C58 0x80123C58 0xE
1723 asm/non_matchings/code/z_player_lib/func_80123C90.s asm/non_matchings/code/z_player_lib/Player_SetEquipmentData.s func_80123C90 Player_SetEquipmentData 0x80123C90 0x30
1724 asm/non_matchings/code/z_player_lib/func_80123D50.s func_80123D50 0x80123D50 0x15
1725 asm/non_matchings/code/z_player_lib/func_80123DA4.s func_80123DA4 0x80123DA4 0x7
1726 asm/non_matchings/code/z_player_lib/func_80123DC0.s func_80123DC0 0x80123DC0 0x34
1919 asm/non_matchings/code/z_room/Room_HandleLoadCallbacks.s Room_HandleLoadCallbacks 0x8012EAA8 0x40
1920 asm/non_matchings/code/z_room/Room_Draw.s Room_Draw 0x8012EBA8 0x14
1921 asm/non_matchings/code/z_room/func_8012EBF8.s func_8012EBF8 0x8012EBF8 0x22
1922 asm/non_matchings/code/code_8012EC80/func_8012EC80.s asm/non_matchings/code/code_8012EC80/Inventory_GetBtnBItem.s func_8012EC80 Inventory_GetBtnBItem 0x8012EC80 0x2D
1923 asm/non_matchings/code/code_8012EC80/func_8012ED34.s asm/non_matchings/code/code_8012EC80/Inventory_ChangeEquipment.s func_8012ED34 Inventory_ChangeEquipment 0x8012ED34 0x11
1924 asm/non_matchings/code/code_8012EC80/func_8012ED78.s asm/non_matchings/code/code_8012EC80/Inventory_DeleteEquipment.s func_8012ED78 Inventory_DeleteEquipment 0x8012ED78 0x1C
1925 asm/non_matchings/code/code_8012EC80/func_8012EDE8.s asm/non_matchings/code/code_8012EC80/Inventory_ChangeUpgrade.s func_8012EDE8 Inventory_ChangeUpgrade 0x8012EDE8 0x13
1926 asm/non_matchings/code/code_8012EC80/func_8012EE34.s asm/non_matchings/code/code_8012EC80/Inventory_IsMapVisible.s func_8012EE34 Inventory_IsMapVisible 0x8012EE34 0x36
1927 asm/non_matchings/code/code_8012EC80/func_8012EF0C.s asm/non_matchings/code/code_8012EC80/Inventory_SetMapVisibility.s func_8012EF0C Inventory_SetMapVisibility 0x8012EF0C 0x78
1928 asm/non_matchings/code/code_8012EC80/func_8012F0EC.s asm/non_matchings/code/code_8012EC80/Inventory_SaveDekuPlaygroundHighScore.s func_8012F0EC Inventory_SaveDekuPlaygroundHighScore 0x8012F0EC 0x34
1929 asm/non_matchings/code/code_8012EC80/func_8012F1BC.s asm/non_matchings/code/code_8012EC80/Inventory_IncrementSkullTokenCount.s func_8012F1BC Inventory_IncrementSkullTokenCount 0x8012F1BC 0x1C
1930 asm/non_matchings/code/code_8012EC80/func_8012F22C.s asm/non_matchings/code/code_8012EC80/Inventory_GetSkullTokenCount.s func_8012F22C Inventory_GetSkullTokenCount 0x8012F22C 0x13
1931 asm/non_matchings/code/code_8012EC80/func_8012F278.s asm/non_matchings/code/code_8012EC80/Inventory_SaveLotteryCodeGuess.s func_8012F278 Inventory_SaveLotteryCodeGuess 0x8012F278 0x16
1932 asm/non_matchings/code/z_scene/Object_Spawn.s Object_Spawn 0x8012F2E0 0x3C
1933 asm/non_matchings/code/z_scene/Object_InitBank.s Object_InitBank 0x8012F3D0 0x4B
1934 asm/non_matchings/code/z_scene/Object_UpdateBank.s Object_UpdateBank 0x8012F4FC 0x43