Z_message (2 NON_MATCHINGS) (#1398)

* matched func_8014D62C

* matched func_8014D304

* matched func_80149048

* matched func_80159438 & func_8014CDF0

* matched Message_GetState

* matched func_80152CAC

* matched func_80149454

* matched func_801491DC

* matched func_80150A84

* matched func_801496C8

* matched func_80149C18

* func_8014995C progress

* matched 8014995C

* matched func_80153EF0

* fix MessageContext lottery guess array size to match func_801496C8

* matched 80148D64

* matched func_8014AAD0

* progress func_8014CFDC

* matched func_8014CFDC

* progress func_801514B0

* progress#2 func_801514B0

* matched func_801514B0

* progress func_8014C70C

* Progress on few functions

* fix some variables & func name

* change unk11F00 type and usages

* func_8014C70C matched

* match func_8015268c

* fix building

* format

* engi message WIP

* enums, cleanup

* missed one

* oops

* even more enums

* another oops

* func_8015E7EC NON_MATCHING

* cleanup Message_DrawTextCredits

* MSGMODE cleanup

* import sFontWidths

* Import z_message_nes data

* Message_DrawTextNES draft

* fix types in message_nes

* Message_DrawTextNES NON_EQUIVALENT

* Message_DrawTextNES improvement

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Import bss

* fixes

* Data clean up

* Delete Message_Decode m2c output

* Readd Message_Update data

* import data

* func declaration

* cleanup

* Language enum

* fix naming, some flags

* Update functions and variables related to the bombers notebook event queue.

* Update renamed variables.txt

* format

* attempt Message_DecodeCredits

* begin Message_DecodeNES

* decode cleanup

* incremental improvements on Message_DecodeNES

* oops

* more progress

* first attempt at Message_Decode

* cleanup Message_Decode

* Message_Decode progress

* good progress on decode loops

* more progress

* good Message_Decode progress, thank anon

* decode creep

* big improvements, thanks anon/hatal

* small nes improvement

* cleanup

* match Message_DrawTextDefault, big progress on Message_DrawTextNES

* namefixer for save structs

* Some cleanup/fix non-equivalencies in decodes

* cleanup

* Small cleanup

* func_80150A84

* TextBoxType enum usage

* Format

* match Message_DecodeCredit by Maide, small improvement in Message_DrawTextNES

* comments

* some docs

* cleanup, improve matches

* Some improvement

Co-Authored-By: Santiago <github-santaclose-noreplay@NA.com>

* Fixes

* Missed

* Match Message_DrawTextNES

* Move functions to z64message.h

* string macros

* Small cleanups

* 1 more small thing

* decompme scratches

* Cleanup

* Item enum

* PR

* SEGMENT_ROM_START

* PR

* format

* ocarina cleanup

---------

Co-authored-by: andzura <andzura@andzura.fr>
Co-authored-by: Angie <angheloalf95@gmail.com>
Co-authored-by: engineer124 <engineer124engineer124@gmail.com>
Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
Co-authored-by: Zoey Zolotova <zoey.zolotova@gmail.com>
Co-authored-by: Santiago <github-santaclose-noreplay@NA.com>
This commit is contained in:
Derek Hensley
2023-10-04 08:51:45 +11:00
committed by GitHub
co-authored by andzura Angie engineer124 engineer124 Zoey Zolotova Santiago
parent f08a69a2cb
commit 9e72c240d9
88 changed files with 7398 additions and 815 deletions
+1 -63
View File
@@ -991,68 +991,6 @@ void func_8014116C(Gfx** gfxP, u16* arg1, u16* workBuffer, s32 width, s32 height
// void func_80141678(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
void func_80141778(Struct_80140E80* arg0, Gfx** gfxp, void* unk_18E60, GraphicsContext* gfxCtx);
// void func_80147520(void);
void func_80147564(PlayState* play);
s32 Message_ShouldAdvance(PlayState* play);
s32 Message_ShouldAdvanceSilent(PlayState* play);
void Message_CloseTextbox(PlayState* play);
void func_80147818(PlayState* play, UNK_PTR puParm2, UNK_TYPE4 uParm3, UNK_TYPE4 uParm4);
// void func_80147F18(PlayState* play, UNK_PTR puParm2, UNK_TYPE4 uParm3, UNK_TYPE4 uParm4);
// void func_80148558(PlayState* play, UNK_PTR puParm2, UNK_TYPE4 uParm3, UNK_TYPE4 uParm4);
void func_80148B98(PlayState* play, u8 arg1);
// void func_80148CBC(void);
// void func_80148D64(void);
// void func_80149048(void);
// void func_801491DC(void);
// void func_80149454(void);
// void func_801496C8(void);
void Message_DrawTextChar(PlayState* play, TexturePtr texture, Gfx** gfxP);
void func_80149C18(PlayState* play);
// void Message_FindMessage(void);
void Message_DrawItemIcon(PlayState* play, Gfx** gfxP);
void Message_HandleOcarina(PlayState* play);
void func_8014ADBC(PlayState* play, UNK_PTR puParm2);
void Message_LoadItemIcon(PlayState* play, u16 itemId, s16 arg2);
void Message_SetupLoadItemIcon(PlayState* play);
// void func_8014CCB4(void);
// void func_8014CDF0(void);
// void Message_SetupLoadItemIcon(void);
void func_8014D304(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
// void func_8014D62C(void);
// void func_8014D7B4(void);
void func_80150A84(PlayState* play);
void func_80150D08(PlayState* play, u32 uParm2);
void func_801514B0(PlayState* play, u16 arg1, u8 arg2);
void Message_StartTextbox(PlayState* play, u16 textId, Actor* actor);
void Message_ContinueTextbox(PlayState* play, u16 textId);
void func_80151A68(PlayState* play, u16 textId);
void Message_BombersNotebookQueueEvent(PlayState* play, u8 event);
// void func_80151C9C(void);
void func_80151DA4(PlayState* play, u16 arg2);
void func_80152434(PlayState* play, u16 arg2);
// void func_80152464(void);
u8 Message_GetState(MessageContext* msgCtx);
// void func_8015268C(void);
// void func_80152C64(void);
// void func_80152CAC(void);
// void func_80152EC0(void);
// void func_80152FB8(void);
// void func_80153750(void);
// void func_80153E7C(void);
// void func_80153EF0(void);
void func_801541D4(PlayState* play, Gfx** gfxp);
void Message_Draw(PlayState* play);
void Message_Update(PlayState* play);
void func_801586A4(PlayState* play);
void Message_Init(PlayState* play);
void Message_FindMessageNES(PlayState* play, u16 textId);
void Message_DrawTextNES(PlayState* play, Gfx** gfxP, u16 textDrawPos);
void Message_DecodeNES(PlayState* play);
void Message_FindCreditsMessage(PlayState* play, u16 textId);
void Message_FindCreditsMessage(PlayState* play, u16 textId);
void Message_DrawTextCredits(PlayState* play, Gfx** gfxP);
void Message_DecodeCredits(PlayState* play);
uintptr_t KaleidoManager_FaultAddrConv(uintptr_t address, void* param);
void KaleidoManager_LoadOvl(KaleidoMgrOverlay* ovl);
void KaleidoManager_ClearOvl(KaleidoMgrOverlay* ovl);
@@ -1463,7 +1401,7 @@ void Audio_StopSequenceInCutscene(u16 seqId);
s32 Audio_IsSequencePlaying(u8 seqId);
void Audio_PlayBgm_StorePrevBgm(u16 seqId);
void Audio_RestorePrevBgm(void);
// void func_801A3000(void);
void func_801A3000(u16 seqId, u8 ioData);
// void func_801A3038(void);
void Audio_PlayFanfare(u16 seqId);
// void func_801A312C(void);
-131
View File
@@ -219,137 +219,6 @@ extern UNK_PTR D_801C5C50;
// extern UNK_TYPE1 D_801C5C9C;
extern UNK_PTR D_801C5CB0;
// extern UNK_TYPE1 D_801C6A70;
// extern UNK_TYPE2 D_801C6A74;
// extern UNK_TYPE2 D_801C6A78;
// extern UNK_TYPE2 D_801C6A7C;
// extern UNK_TYPE2 D_801C6A80;
// extern UNK_TYPE2 D_801C6A84;
// extern UNK_TYPE2 D_801C6A88;
// extern UNK_TYPE2 D_801C6A8C;
// extern UNK_TYPE2 D_801C6A90;
// extern UNK_TYPE2 D_801C6A94;
extern u8 gPageSwitchNextButtonStatus[6][5];
// extern UNK_TYPE1 D_801CED40;
// extern UNK_TYPE2 D_801CFC78;
// extern UNK_TYPE1 D_801CFC7A;
// extern UNK_TYPE1 D_801CFC7C;
// extern UNK_TYPE1 D_801CFC7E;
// extern UNK_TYPE1 D_801CFC84;
// extern UNK_TYPE1 D_801CFC88;
// extern UNK_TYPE1 D_801CFC8C;
// extern UNK_TYPE1 D_801CFC8E;
// extern UNK_TYPE1 D_801CFC92;
extern u8 D_801CFC98;
extern s16 D_801CFCA4[9];
// extern UNK_TYPE2 D_801CFCAC;
extern s16 gOcarinaSongItemMap[];
// extern UNK_TYPE2 D_801CFCD8;
// extern UNK_TYPE2 D_801CFCE4;
// extern UNK_TYPE2 D_801CFCF0;
// extern UNK_TYPE2 D_801CFCF4;
// extern UNK_TYPE2 D_801CFCF8;
// extern UNK_TYPE2 D_801CFCFC;
// extern UNK_TYPE2 D_801CFD00;
// extern UNK_TYPE2 D_801CFD04;
// extern UNK_TYPE2 D_801CFD08;
// extern UNK_TYPE2 D_801CFD0C;
// extern UNK_TYPE2 D_801CFD10;
// extern UNK_TYPE2 D_801CFD1C;
// extern UNK_TYPE2 D_801CFD28;
// extern UNK_TYPE2 D_801CFD2C;
// extern UNK_TYPE2 D_801CFD30;
// extern UNK_TYPE2 D_801CFD34;
// extern UNK_TYPE2 D_801CFD38;
// extern UNK_TYPE2 D_801CFD3C;
// extern UNK_TYPE2 D_801CFD40;
// extern UNK_TYPE2 D_801CFD44;
// extern UNK_TYPE2 D_801CFD48;
// extern UNK_TYPE2 D_801CFD54;
// extern UNK_TYPE2 D_801CFD60;
// extern UNK_TYPE2 D_801CFD64;
// extern UNK_TYPE2 D_801CFD68;
// extern UNK_TYPE2 D_801CFD6C;
// extern UNK_TYPE2 D_801CFD70;
// extern UNK_TYPE2 D_801CFD74;
// extern UNK_TYPE2 D_801CFD78;
// extern UNK_TYPE2 D_801CFD7C;
// extern UNK_TYPE2 D_801CFD80;
// extern UNK_TYPE2 D_801CFD84;
// extern UNK_TYPE2 D_801CFD88;
// extern UNK_TYPE2 D_801CFD8C;
// extern UNK_TYPE2 D_801CFD90;
extern UNK_PTR D_801CFD94;
// extern UNK_TYPE2 D_801CFD98;
// extern UNK_TYPE2 D_801CFD9C;
// extern UNK_TYPE2 D_801CFDA0;
// extern UNK_TYPE1 D_801CFDA4;
// extern UNK_TYPE1 D_801CFDC8;
// extern UNK_TYPE1 D_801CFDEC;
// extern UNK_TYPE1 D_801CFE04;
// extern UNK_TYPE1 D_801CFE1C;
// extern UNK_TYPE1 D_801CFE34;
// extern UNK_TYPE1 D_801CFE4C;
// extern UNK_TYPE1 D_801CFE5C;
// extern UNK_TYPE1 D_801CFE68;
// extern UNK_TYPE1 D_801CFE74;
// extern UNK_TYPE1 D_801CFEA4;
// extern UNK_TYPE1 D_801CFED4;
// extern UNK_TYPE1 D_801CFF04;
// extern UNK_TYPE1 D_801CFF34;
// extern UNK_TYPE1 D_801CFF64;
// extern UNK_TYPE1 D_801CFF70;
// extern UNK_TYPE1 D_801CFF7C;
// extern UNK_TYPE1 D_801CFF88;
// extern UNK_TYPE1 D_801CFF94;
// extern UNK_TYPE1 D_801D0000;
// extern UNK_TYPE1 D_801D0001;
// extern UNK_TYPE1 D_801D001F;
// extern UNK_TYPE1 D_801D0188;
// extern UNK_TYPE1 D_801D023A;
// extern UNK_TYPE1 D_801D0250;
// extern UNK_TYPE2 D_801D0268;
// extern UNK_TYPE1 D_801D027C;
// extern UNK_TYPE1 D_801D0284;
// extern UNK_TYPE1 D_801D028C;
// extern UNK_TYPE1 D_801D02C0;
// extern UNK_TYPE1 D_801D02D8;
// extern UNK_TYPE1 D_801D02F8;
// extern UNK_TYPE1 D_801D0330;
// extern UNK_TYPE1 D_801D0334;
// extern UNK_TYPE1 D_801D0340;
// extern UNK_TYPE1 D_801D034C;
// extern UNK_TYPE1 D_801D0358;
// extern UNK_TYPE1 D_801D0364;
// extern UNK_TYPE1 D_801D0378;
extern char D_801D039C[];
// extern UNK_TYPE1 D_801D03A4;
// extern UNK_TYPE1 D_801D03A8;
// extern UNK_TYPE1 D_801D03C8;
// extern UNK_TYPE1 D_801D03E8;
// extern UNK_TYPE1 D_801D03F0;
// extern UNK_TYPE1 D_801D0401;
// extern UNK_TYPE1 D_801D0408;
// extern UNK_TYPE1 D_801D0428;
// extern UNK_TYPE1 D_801D045A;
// extern UNK_TYPE1 D_801D0462;
//extern UNK_TYPE1 D_801D0468;
// extern UNK_TYPE1 sNESFontWidths;
// extern char sRupeesTextLocalization[];
// extern UNK_TYPE1 sRupeesTextLength;
// extern char D_801D0714[];
// extern UNK_TYPE1 D_801D07C4;
// extern UNK_TYPE1 D_801D07DC;
// extern UNK_TYPE1 D_801D080C;
// extern UNK_TYPE1 D_801D083C;
// extern UNK_TYPE1 D_801D086C;
// extern UNK_TYPE1 D_801D0890;
// extern UNK_TYPE1 D_801D089C;
// extern UNK_TYPE1 D_801D08CC;
// extern UNK_TYPE1 D_801D08D8;
// extern UNK_TYPE1 D_801D08E4;
// extern UNK_TYPE1 sMaskCodeTextENG;
// extern UNK_TYPE1 sMaskCodeTextLengthENG;
extern KaleidoMgrOverlay gKaleidoMgrOverlayTable[2];
// extern UNK_TYPE1 D_801D0B8C;
extern KaleidoMgrOverlay* gKaleidoMgrCurOvl;
+21
View File
@@ -326,6 +326,27 @@ typedef enum ItemId {
/* 0xB1 */ ITEM_MAP_POINT_MOUNTAIN_VILLAGE,
/* 0xB2 */ ITEM_MAP_POINT_MILK_ROAD,
/* 0xB3 */ ITEM_MAP_POINT_ZORA_CAPE,
/* 0xB8 */ ITEM_B8 = 0xB8,
/* 0xB9 */ ITEM_B9,
/* 0xBA */ ITEM_BA,
/* 0xBB */ ITEM_BB,
/* 0xBC */ ITEM_BC,
/* 0xBD */ ITEM_BD,
/* 0xBE */ ITEM_BE,
/* 0xBF */ ITEM_BF,
/* 0xC0 */ ITEM_C0,
/* 0xC1 */ ITEM_C1,
/* 0xC2 */ ITEM_C2,
/* 0xC3 */ ITEM_C3,
/* 0xC4 */ ITEM_C4,
/* 0xC5 */ ITEM_C5,
/* 0xC6 */ ITEM_C6,
/* 0xC7 */ ITEM_C7,
/* 0xC8 */ ITEM_C8,
/* 0xC9 */ ITEM_C9,
/* 0xCA */ ITEM_CA,
/* 0xCB */ ITEM_CB,
/* 0xCC */ ITEM_CC,
/* 0xF0 */ ITEM_F0 = 0xF0, // PLAYER_MASK_BLAST
/* 0xF1 */ ITEM_F1, // PLAYER_MASK_BREMEN
/* 0xF2 */ ITEM_F2, // PLAYER_MASK_KAMARO
+31 -6
View File
@@ -139,9 +139,6 @@ typedef enum MessageMode {
/* 0x4F */ MSGMODE_OWL_SAVE_2
} MessageMode;
extern u16 sBombersNotebookEventMessages[BOMBERS_NOTEBOOK_EVENT_MAX];
extern u16 gBombersNotebookWeekEventFlags[BOMBERS_NOTEBOOK_EVENT_MAX];
typedef enum FaceReactionSet {
/* 0x11 */ FACE_REACTION_SET_JIM = 0x11,
/* 0x12 */ FACE_REACTION_SET_BOMBERS,
@@ -177,7 +174,6 @@ typedef enum TextState {
/* 18 */ TEXT_STATE_18
} TextState;
#define FONT_CHAR_TEX_WIDTH 16
#define FONT_CHAR_TEX_HEIGHT 16
//! TODO: Make this use `sizeof(AnyFontTextureSymbol)`
@@ -203,8 +199,8 @@ typedef struct {
u16 wchar[640]; // msgBufWide
u64 force_structure_alignment_msg;
} msgBuf;
/* 0x11D80 */ u8* messageStart;
/* 0x11D84 */ u8* messageEnd;
/* 0x11D80 */ u32 messageStart;
/* 0x11D84 */ u32 messageEnd;
/* 0x11D88 */ u8 unk_11D88; // current Char Buffer ?
} Font; // size = 0x11D90
@@ -324,4 +320,33 @@ typedef struct MessageContext {
/* 0x120DA */ UNK_TYPE1 unk_120DA[0x6];
} MessageContext; // size = 0x120E0
s32 Message_ShouldAdvance(struct PlayState* play);
void Message_CloseTextbox(struct PlayState* play);
void Message_DrawTextChar(struct PlayState* play, TexturePtr texture, Gfx** gfxP);
void Message_DrawItemIcon(struct PlayState* play, Gfx** gfxP);
void Message_HandleOcarina(struct PlayState* play);
void Message_LoadItemIcon(struct PlayState* play, u16 itemId, s16 arg2);
void Message_SetupLoadItemIcon(struct PlayState* play);
void func_801514B0(struct PlayState* play, u16 arg1, u8 arg2);
void Message_StartTextbox(struct PlayState* play, u16 textId, Actor* actor);
void Message_ContinueTextbox(struct PlayState* play, u16 textId);
void Message_DisplaySceneTitleCard(struct PlayState* play, u16 textId);
void Message_BombersNotebookQueueEvent(struct PlayState* play, u8 event);
void Message_DisplayOcarinaStaff(struct PlayState* play, u16 ocarinaAction);
void Message_DisplayOcarinaStaffBlockSunsSong(struct PlayState* play, u16 ocarinaAction);
u8 Message_GetState(MessageContext* msgCtx);
void Message_Draw(struct PlayState* play);
void Message_Update(struct PlayState* play);
void Message_Init(struct PlayState* play);
void Message_FindMessageNES(struct PlayState* play, u16 textId);
void Message_DrawTextNES(struct PlayState* play, Gfx** gfxP, u16 textDrawPos);
void Message_DecodeNES(struct PlayState* play);
void Message_FindCreditsMessage(struct PlayState* play, u16 textId);
void Message_DrawTextCredits(struct PlayState* play, Gfx** gfxP);
void Message_DecodeCredits(struct PlayState* play);
extern u8 gPageSwitchNextButtonStatus[6][5];
extern u16 gBombersNotebookWeekEventFlags[BOMBERS_NOTEBOOK_EVENT_MAX];
extern s16 gOcarinaSongItemMap[];
#endif
+139 -4
View File
@@ -32,10 +32,135 @@ typedef enum {
/* 24 */ OCARINA_SONG_SCARECROW_LONG = OCARINA_SONG_MAX // anything larger than 24 is considered the long scarecrow's song
} OcarinaSongId;
typedef enum OcarinaMode {
/* 0x18 */ OCARINA_MODE_APPLY_INV_SOT_FAST = 24,
typedef enum {
/* 0x00 */ OCARINA_ACTION_0, // acts like free play but never set
/* 0x01 */ OCARINA_ACTION_FREE_PLAY,
/* 0x02 */ OCARINA_ACTION_DEMONSTRATE_SONATA, // Song demonstrated/previewed by another actor/teacher
/* 0x03 */ OCARINA_ACTION_DEMONSTRATE_GORON_LULLABY,
/* 0x04 */ OCARINA_ACTION_DEMONSTRATE_NEW_WAVE,
/* 0x05 */ OCARINA_ACTION_DEMONSTRATE_ELEGY,
/* 0x06 */ OCARINA_ACTION_DEMONSTRATE_OATH,
/* 0x07 */ OCARINA_ACTION_DEMONSTRATE_SARIAS,
/* 0x08 */ OCARINA_ACTION_DEMONSTRATE_TIME,
/* 0x09 */ OCARINA_ACTION_DEMONSTRATE_HEALING,
/* 0x0A */ OCARINA_ACTION_DEMONSTRATE_EPONAS,
/* 0x0B */ OCARINA_ACTION_DEMONSTRATE_SOARING,
/* 0x0C */ OCARINA_ACTION_DEMONSTRATE_STORMS,
/* 0x0D */ OCARINA_ACTION_DEMONSTRATE_SUNS,
/* 0x0E */ OCARINA_ACTION_DEMONSTRATE_INVERTED_TIME,
/* 0x0F */ OCARINA_ACTION_DEMONSTRATE_DOUBLE_TIME,
/* 0x10 */ OCARINA_ACTION_DEMONSTRATE_GORON_LULLABY_INTRO,
/* 0x11 */ OCARINA_ACTION_11,
/* 0x12 */ OCARINA_ACTION_PROMPT_SONATA, // User plays back song through inputing 1 note at a time, as a tutorial. Each note is verified.
/* 0x13 */ OCARINA_ACTION_PROMPT_GORON_LULLABY,
/* 0x14 */ OCARINA_ACTION_PROMPT_NEW_WAVE,
/* 0x15 */ OCARINA_ACTION_PROMPT_ELEGY,
/* 0x16 */ OCARINA_ACTION_PROMPT_OATH,
/* 0x17 */ OCARINA_ACTION_PROMPT_SARIAS,
/* 0x18 */ OCARINA_ACTION_PROMPT_TIME,
/* 0x19 */ OCARINA_ACTION_PROMPT_HEALING,
/* 0x1A */ OCARINA_ACTION_PROMPT_EPONAS,
/* 0x1B */ OCARINA_ACTION_PROMPT_SOARING,
/* 0x1C */ OCARINA_ACTION_PROMPT_STORMS,
/* 0x1D */ OCARINA_ACTION_PROMPT_SUNS,
/* 0x1E */ OCARINA_ACTION_PROMPT_INVERTED_TIME,
/* 0x1F */ OCARINA_ACTION_PROMPT_DOUBLE_TIME,
/* 0x20 */ OCARINA_ACTION_PROMPT_GORON_LULLABY_INTRO,
/* 0x21 */ OCARINA_ACTION_21,
/* 0x22 */ OCARINA_ACTION_CHECK_SONATA, // Once the entire song is played, checks for a specific song. Broken as playing any dungeon song will softlock.
/* 0x23 */ OCARINA_ACTION_CHECK_GORON_LULLABY,
/* 0x24 */ OCARINA_ACTION_CHECK_NEW_WAVE,
/* 0x25 */ OCARINA_ACTION_CHECK_ELEGY,
/* 0x26 */ OCARINA_ACTION_CHECK_OATH,
/* 0x27 */ OCARINA_ACTION_CHECK_SARIAS,
/* 0x28 */ OCARINA_ACTION_CHECK_TIME,
/* 0x29 */ OCARINA_ACTION_CHECK_HEALING,
/* 0x2A */ OCARINA_ACTION_CHECK_EPONAS,
/* 0x2B */ OCARINA_ACTION_CHECK_SOARING,
/* 0x2C */ OCARINA_ACTION_CHECK_STORMS,
/* 0x2D */ OCARINA_ACTION_CHECK_SUNS,
/* 0x2E */ OCARINA_ACTION_CHECK_INVERTED_TIME,
/* 0x2F */ OCARINA_ACTION_CHECK_DOUBLE_TIME,
/* 0x30 */ OCARINA_ACTION_CHECK_GORON_LULLABY_INTRO,
/* 0x31 */ OCARINA_ACTION_CHECK_SCARECROW_SPAWN, // TODO: Verify (may include more)
/* 0x32 */ OCARINA_ACTION_FREE_PLAY_DONE,
/* 0x33 */ OCARINA_ACTION_SCARECROW_LONG_RECORDING,
/* 0x34 */ OCARINA_ACTION_SCARECROW_LONG_DEMONSTRATION,
/* 0x35 */ OCARINA_ACTION_SCARECROW_SPAWN_RECORDING,
/* 0x36 */ OCARINA_ACTION_SCARECROW_SPAWN_DEMONSTRATION,
/* 0x37 */ OCARINA_ACTION_37,
/* 0x38 */ OCARINA_ACTION_CHECK_NOTIME,
/* 0x39 */ OCARINA_ACTION_CHECK_NOTIME_DONE,
/* 0x3A */ OCARINA_ACTION_3A, // Monkey Instrument Prompt
/* 0x3B */ OCARINA_ACTION_3B,
/* 0x3C */ OCARINA_ACTION_3C,
/* 0x3D */ OCARINA_ACTION_DEMONSTRATE_EVAN_PART1_FIRST_HALF, // Evan Part 1 demonstrate first half (Japa)
/* 0x3E */ OCARINA_ACTION_DEMONSTRATE_EVAN_PART2_FIRST_HALF, // Evan Part 2 demonstrate first half (Japa)
/* 0x3F */ OCARINA_ACTION_DEMONSTRATE_EVAN_PART1_SECOND_HALF, // Evan Part 1 demonstrate second half (Diary)
/* 0x40 */ OCARINA_ACTION_DEMONSTRATE_EVAN_PART2_SECOND_HALF, // Evan Part 2 demonstrate second half (Diary)
/* 0x41 */ OCARINA_ACTION_PROMPT_EVAN_PART1_SECOND_HALF, // Evan Part 1 prompt second half (Japa)
/* 0x42 */ OCARINA_ACTION_PROMPT_EVAN_PART2_SECOND_HALF, // Evan Part 2 prompt second half (Japa)
/* 0x43 */ OCARINA_ACTION_PROMPT_WIND_FISH_HUMAN,
/* 0x44 */ OCARINA_ACTION_PROMPT_WIND_FISH_GORON,
/* 0x45 */ OCARINA_ACTION_PROMPT_WIND_FISH_ZORA,
/* 0x46 */ OCARINA_ACTION_PROMPT_WIND_FISH_DEKU,
/* 0x47 */ OCARINA_ACTION_TIMED_PROMPT_SONATA, // Playing back a particular song, but must also time the notes properly. Not fully implemented
/* 0x48 */ OCARINA_ACTION_TIMED_PROMPT_GORON_LULLABY,
/* 0x49 */ OCARINA_ACTION_TIMED_PROMPT_NEW_WAVE,
/* 0x4A */ OCARINA_ACTION_TIMED_PROMPT_ELEGY,
/* 0x4B */ OCARINA_ACTION_TIMED_PROMPT_OATH,
/* 0x4C */ OCARINA_ACTION_TIMED_PROMPT_SARIAS,
/* 0x4D */ OCARINA_ACTION_TIMED_PROMPT_TIME,
/* 0x4E */ OCARINA_ACTION_TIMED_PROMPT_HEALING,
/* 0x4F */ OCARINA_ACTION_TIMED_PROMPT_EPONAS,
/* 0x50 */ OCARINA_ACTION_TIMED_PROMPT_SOARING,
/* 0x51 */ OCARINA_ACTION_TIMED_PROMPT_STORMS
} OcarinaSongActionId;
typedef enum {
/* 0x00 */ OCARINA_MODE_NONE,
/* 0x01 */ OCARINA_MODE_ACTIVE,
/* 0x02 */ OCARINA_MODE_WARP,
/* 0x03 */ OCARINA_MODE_EVENT,
/* 0x04 */ OCARINA_MODE_END,
/* 0x05 */ OCARINA_MODE_PLAYED_TIME, // Played Time
/* 0x06 */ OCARINA_MODE_PLAYED_HEALING,
/* 0x07 */ OCARINA_MODE_PLAYED_EPONAS,
/* 0x08 */ OCARINA_MODE_PLAYED_SOARING,
/* 0x09 */ OCARINA_MODE_PLAYED_STORMS,
/* 0x0A */ OCARINA_MODE_PLAYED_SUNS,
/* 0x0B */ OCARINA_MODE_PLAYED_INVERTED_TIME,
/* 0x0C */ OCARINA_MODE_PLAYED_DOUBLE_TIME,
/* 0x0D */ OCARINA_MODE_PLAYED_SCARECROW_SPAWN,
/* 0x0E */ OCARINA_MODE_E,
/* 0x0F */ OCARINA_MODE_F,
/* 0x10 */ OCARINA_MODE_10,
/* 0x11 */ OCARINA_MODE_11, // End memory/scarecrow from OoT
/* 0x12 */ OCARINA_MODE_PROCESS_SOT, // Song of Time related
/* 0x13 */ OCARINA_MODE_PROCESS_INVERTED_TIME, // Inverted Song of Time related
/* 0x14 */ OCARINA_MODE_14,
/* 0x15 */ OCARINA_MODE_PROCESS_DOUBLE_TIME, // Song of Double Time related
/* 0x16 */ OCARINA_MODE_APPLY_SOT, // Apply
/* 0x17 */ OCARINA_MODE_17,
/* 0x18 */ OCARINA_MODE_APPLY_INV_SOT_FAST,
/* 0x19 */ OCARINA_MODE_APPLY_INV_SOT_SLOW,
/* 0x1A */ OCARINA_MODE_APPLY_DOUBLE_SOT
/* 0x1A */ OCARINA_MODE_APPLY_DOUBLE_SOT,
/* 0x1B */ OCARINA_MODE_1B,
/* 0x1C */ OCARINA_MODE_WARP_TO_GREAT_BAY_COAST,
/* 0x1D */ OCARINA_MODE_WARP_TO_ZORA_CAPE,
/* 0x1E */ OCARINA_MODE_WARP_TO_SNOWHEAD,
/* 0x1F */ OCARINA_MODE_WARP_TO_MOUNTAIN_VILLAGE,
/* 0x20 */ OCARINA_MODE_WARP_TO_SOUTH_CLOCK_TOWN,
/* 0x21 */ OCARINA_MODE_WARP_TO_MILK_ROAD,
/* 0x22 */ OCARINA_MODE_WARP_TO_WOODFALL,
/* 0x23 */ OCARINA_MODE_WARP_TO_SOUTHERN_SWAMP,
/* 0x24 */ OCARINA_MODE_WARP_TO_IKANA_CANYON,
/* 0x25 */ OCARINA_MODE_WARP_TO_STONE_TOWER,
/* 0x26 */ OCARINA_MODE_WARP_TO_ENTRANCE,
/* 0x27 */ OCARINA_MODE_PROCESS_RESTRICTED_SONG, // Variants of Song of Time, Soaring, or Elegy restricted
/* 0x28 */ OCARINA_MODE_28,
/* 0x29 */ OCARINA_MODE_29,
/* 0x2A */ OCARINA_MODE_PLAYED_FULL_EVAN_SONG
} OcarinaMode;
typedef enum {
@@ -78,7 +203,7 @@ typedef enum {
/* 3 */ OCARINA_INSTRUMENT_WHISTLING_FLUTE,
/* 4 */ OCARINA_INSTRUMENT_HARP,
/* 5 */ OCARINA_INSTRUMENT_IKANA_KING,
/* 6 */ OCARINA_INSTRUMENT_TATL,
/* 6 */ OCARINA_INSTRUMENT_TATL, // Sounds like bells
/* 7 */ OCARINA_INSTRUMENT_GORON_DRUMS,
/* 8 */ OCARINA_INSTRUMENT_ZORA_GUITAR,
/* 9 */ OCARINA_INSTRUMENT_DEKU_PIPES,
@@ -98,6 +223,16 @@ typedef enum {
/* -1 */ OCARINA_RECORD_REJECTED = 0xFF
} OcarinaRecordingState;
typedef enum {
/* 0 */ OCARINA_ERROR_NONE,
/* 1 */ OCARINA_ERROR_1,
/* 2 */ OCARINA_ERROR_2,
/* 3 */ OCARINA_ERROR_3,
/* 4 */ OCARINA_ERROR_BEND,
/* 5 */ OCARINA_ERROR_5,
/* 0xFF */ OCARINA_ERROR_INACTIVE = 0xFF // Song not available
} OcarinaError;
/**
* bFlat4Flag Note:
* Flag for resolving whether (pitch = OCARINA_PITCH_BFLAT4)
+5 -5
View File
@@ -115,7 +115,7 @@ typedef enum {
/* 16 */ TIMER_STATE_POSTMAN_END
} TimerState;
typedef enum {
typedef enum BottleTimerState {
/* 0 */ BOTTLE_TIMER_STATE_OFF,
/* 1 */ BOTTLE_TIMER_STATE_COUNTING
} BottleTimerState;
@@ -126,7 +126,7 @@ typedef enum {
/* 3 */ MINIGAME_STATUS_END = 3
} MinigameStatus;
typedef enum {
typedef enum HudVisibility {
/* 0 */ HUD_VISIBILITY_IDLE,
/* 1 */ HUD_VISIBILITY_NONE,
/* 2 */ HUD_VISIBILITY_NONE_ALT, // Identical to HUD_VISIBILITY_NONE
@@ -304,7 +304,7 @@ typedef struct SaveInfo {
/* 0xF38 */ u32 regionsVisited; // "area_arrival"
/* 0xF3C */ u32 worldMapCloudVisibility; // "cloud_clear"
/* 0xF40 */ u8 unk_F40; // "oca_rec_flag" has scarecrows song
/* 0xF41 */ u8 unk_F41; // "oca_rec_flag8" scarecrows song set?
/* 0xF41 */ u8 scarecrowSpawnSongSet; // "oca_rec_flag8"
/* 0xF42 */ u8 scarecrowSpawnSong[128];
/* 0xFC2 */ s8 bombersCaughtNum; // "aikotoba_index"
/* 0xFC3 */ s8 bombersCaughtOrder[5]; // "aikotoba_table"
@@ -453,8 +453,8 @@ typedef enum {
// The day begins at CLOCK_TIME(6, 0) so it must be offset.
#define TIME_UNTIL_MOON_CRASH \
((4 - CURRENT_DAY) * DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0)));
#define TIME_UNTIL_NEW_DAY (DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0)));
((4 - CURRENT_DAY) * DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0)))
#define TIME_UNTIL_NEW_DAY (DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0)))
#define GET_PLAYER_FORM ((void)0, gSaveContext.save.playerForm)
-2
View File
@@ -528,8 +528,6 @@ beginseg
include "build/src/code/z_vr_box_draw.o"
include "build/src/code/z_sram_NES.o"
include "build/src/code/z_message.o"
include "build/data/code/z_message.data.o"
include "build/data/code/z_message.bss.o"
include "build/src/code/z_message_nes.o"
include "build/src/code/z_message_staff.o"
include "build/src/code/z_player_call.o"
+1 -1
View File
@@ -18,7 +18,7 @@ void SaveContext_Init(void) {
gSaveContext.nextTransitionType = TRANS_NEXT_TYPE_DEFAULT;
gSaveContext.prevHudVisibility = HUD_VISIBILITY_ALL;
gSaveContext.options.language = 1;
gSaveContext.options.language = LANGUAGE_ENG;
gSaveContext.options.audioSetting = SAVE_AUDIO_STEREO;
gSaveContext.options.zTargetSetting = 0;
}
+4 -4
View File
@@ -197,7 +197,7 @@ void CutsceneCmd_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdMisc* cmd) {
if (isFirstFrame) {
loadedScene = play->loadedScene;
if (loadedScene->titleTextId != 0) {
func_80151A68(play, loadedScene->titleTextId);
Message_DisplaySceneTitleCard(play, loadedScene->titleTextId);
}
}
break;
@@ -1043,7 +1043,7 @@ void CutsceneCmd_Text(PlayState* play, CutsceneContext* csCtx, CsCmdText* cmd) {
if (sCurOcarinaAction != cmd->textId) {
sCutsceneTextboxType = CS_TEXT_OCARINA_ACTION;
sCurOcarinaAction = cmd->textId;
func_80152434(play, cmd->textId);
Message_DisplayOcarinaStaff(play, cmd->textId);
return;
}
}
@@ -1098,7 +1098,7 @@ void CutsceneCmd_Text(PlayState* play, CutsceneContext* csCtx, CsCmdText* cmd) {
}
if ((talkState == TEXT_STATE_5) && Message_ShouldAdvance(play)) {
func_80152434(play, cmd->textId);
Message_DisplayOcarinaStaff(play, cmd->textId);
}
}
@@ -1565,7 +1565,7 @@ void Cutscene_HandleEntranceTriggers(PlayState* play) {
if ((Entrance_GetTransitionFlags(((void)0, gSaveContext.save.entrance) +
((void)0, gSaveContext.sceneLayer)) &
0x4000) != 0) {
func_80151A68(play, scene->titleTextId);
Message_DisplaySceneTitleCard(play, scene->titleTextId);
}
}
+1 -1
View File
@@ -93,7 +93,7 @@ void KaleidoSetup_Update(PlayState* play) {
(play->gameOverCtx.state == GAMEOVER_INACTIVE)) {
if ((play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) {
if ((gSaveContext.save.cutsceneIndex < 0xFFF0) && (gSaveContext.nextCutsceneIndex < 0xFFF0)) {
if (!Play_InCsMode(play) || ((msgCtx->msgMode != 0) && (msgCtx->currentTextId == 0xFF))) {
if (!Play_InCsMode(play) || ((msgCtx->msgMode != MSGMODE_NONE) && (msgCtx->currentTextId == 0xFF))) {
if ((play->unk_1887C < 2) && (gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY) &&
(gSaveContext.magicState != MAGIC_STATE_FILL)) {
if (!CHECK_EVENTINF(EVENTINF_17) && !(player->stateFlags1 & PLAYER_STATE1_20)) {
+5598 -166
View File
File diff suppressed because it is too large Load Diff
-1
View File
@@ -2,7 +2,6 @@
#include "message_data_static.h"
#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h"
// fontWidth
f32 sNESFontWidths[160] = {
8.0f, 8.0f, 6.0f, 9.0f, 9.0f, 14.0f, 12.0f, 3.0f, 7.0f, 7.0f, 7.0f, 9.0f, 4.0f, 6.0f, 4.0f, 9.0f,
10.0f, 5.0f, 9.0f, 9.0f, 10.0f, 9.0f, 9.0f, 9.0f, 9.0f, 9.0f, 6.0f, 6.0f, 9.0f, 11.0f, 9.0f, 11.0f,
File diff suppressed because it is too large Load Diff
+29 -28
View File
@@ -1709,7 +1709,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) {
if (CHECK_EVENTINF(EVENTINF_41)) {
// Related to swamp boat (non-minigame)?
for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) {
if ((GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTOGRAPH_BOX) || (msgCtx->msgMode != 0)) {
if ((GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTOGRAPH_BOX) || (msgCtx->msgMode != MSGMODE_NONE)) {
if (gSaveContext.buttonStatus[i] == BTN_ENABLED) {
restoreHudVisibility = true;
}
@@ -3657,7 +3657,7 @@ void Magic_Update(PlayState* play) {
case MAGIC_STATE_CONSUME_LENS:
// Slowly consume magic while Lens of Truth is active
if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) &&
(msgCtx->msgMode == 0) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) &&
(msgCtx->msgMode == MSGMODE_NONE) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) &&
(play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) &&
!Play_InCsMode(play)) {
@@ -3700,7 +3700,7 @@ void Magic_Update(PlayState* play) {
// fallthrough
case MAGIC_STATE_CONSUME_GORON_ZORA:
if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == 0) &&
(msgCtx->msgMode == 0) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) &&
(msgCtx->msgMode == MSGMODE_NONE) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) &&
(play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) {
if (!Play_InCsMode(play)) {
interfaceCtx->magicConsumptionTimer--;
@@ -3722,7 +3722,7 @@ void Magic_Update(PlayState* play) {
case MAGIC_STATE_CONSUME_GIANTS_MASK:
if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) &&
(msgCtx->msgMode == 0) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) &&
(msgCtx->msgMode == MSGMODE_NONE) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) &&
(play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) {
if (!Play_InCsMode(play)) {
interfaceCtx->magicConsumptionTimer--;
@@ -3932,7 +3932,7 @@ void Interface_DrawItemButtons(PlayState* play) {
if ((gSaveContext.hudVisibility == HUD_VISIBILITY_NONE) ||
(gSaveContext.hudVisibility == HUD_VISIBILITY_NONE_ALT) ||
(gSaveContext.hudVisibility == HUD_VISIBILITY_A_HEARTS_MAGIC_WITH_OVERWRITE) ||
(msgCtx->msgMode != 0)) {
(msgCtx->msgMode != MSGMODE_NONE)) {
temp = 0;
} else if (player->stateFlags1 & PLAYER_STATE1_200000) {
temp = 70;
@@ -4400,8 +4400,8 @@ void Interface_DrawClock(PlayState* play) {
OPEN_DISPS(play->state.gfxCtx);
if ((R_TIME_SPEED != 0) &&
((msgCtx->msgMode == 0) || ((play->actorCtx.flags & ACTORCTX_FLAG_1) && !Play_InCsMode(play)) ||
(msgCtx->msgMode == 0) || ((msgCtx->currentTextId >= 0x100) && (msgCtx->currentTextId <= 0x200)) ||
((msgCtx->msgMode == MSGMODE_NONE) || ((play->actorCtx.flags & ACTORCTX_FLAG_1) && !Play_InCsMode(play)) ||
(msgCtx->msgMode == MSGMODE_NONE) || ((msgCtx->currentTextId >= 0x100) && (msgCtx->currentTextId <= 0x200)) ||
(gSaveContext.gameMode == GAMEMODE_END_CREDITS)) &&
!FrameAdvance_IsEnabled(&play->state) && !Environment_IsTimeStopped() && (gSaveContext.save.day <= 3)) {
/**
@@ -5440,31 +5440,31 @@ void Interface_StartMoonCrash(PlayState* play) {
play->transitionType = TRANS_TYPE_FADE_WHITE;
}
void Interface_GetTimerDigits(u64 timer, s16* timerArr) {
u64 time = timer;
void Interface_GetTimerDigits(OSTime time, s16* timerArr) {
OSTime t = time;
// 6 minutes
timerArr[0] = time / SECONDS_TO_TIMER(360);
time -= timerArr[0] * SECONDS_TO_TIMER(360);
timerArr[0] = t / SECONDS_TO_TIMER(360);
t -= timerArr[0] * SECONDS_TO_TIMER(360);
// minutes
timerArr[1] = time / SECONDS_TO_TIMER(60);
time -= timerArr[1] * SECONDS_TO_TIMER(60);
timerArr[1] = t / SECONDS_TO_TIMER(60);
t -= timerArr[1] * SECONDS_TO_TIMER(60);
// 10 seconds
timerArr[3] = time / SECONDS_TO_TIMER(10);
time -= timerArr[3] * SECONDS_TO_TIMER(10);
timerArr[3] = t / SECONDS_TO_TIMER(10);
t -= timerArr[3] * SECONDS_TO_TIMER(10);
// seconds
timerArr[4] = time / SECONDS_TO_TIMER(1);
time -= timerArr[4] * SECONDS_TO_TIMER(1);
timerArr[4] = t / SECONDS_TO_TIMER(1);
t -= timerArr[4] * SECONDS_TO_TIMER(1);
// 100 milliseconds
timerArr[6] = time / SECONDS_TO_TIMER_PRECISE(0, 10);
time -= timerArr[6] * SECONDS_TO_TIMER_PRECISE(0, 10);
timerArr[6] = t / SECONDS_TO_TIMER_PRECISE(0, 10);
t -= timerArr[6] * SECONDS_TO_TIMER_PRECISE(0, 10);
// 10 milliseconds
timerArr[7] = time;
timerArr[7] = t;
}
#define IS_POSTMAN_TIMER_DRAWN \
@@ -5500,8 +5500,8 @@ void Interface_DrawTimers(PlayState* play) {
// Not satisfying any of these conditions will pause the timer
if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) &&
(play->gameOverCtx.state == GAMEOVER_INACTIVE) &&
((msgCtx->msgMode == 0) ||
((msgCtx->msgMode != 0) && (msgCtx->currentTextId >= 0x1BB2) && (msgCtx->currentTextId <= 0x1BB6))) &&
((msgCtx->msgMode == MSGMODE_NONE) || ((msgCtx->msgMode != MSGMODE_NONE) && (msgCtx->currentTextId >= 0x1BB2) &&
(msgCtx->currentTextId <= 0x1BB6))) &&
!(player->stateFlags1 & PLAYER_STATE1_200) && (play->transitionTrigger == TRANS_TRIGGER_OFF) &&
(play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play)) {
@@ -5950,7 +5950,7 @@ void Interface_UpdateBottleTimers(PlayState* play) {
// Not satisfying any of these conditions will pause the bottle timer
if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) &&
(play->gameOverCtx.state == GAMEOVER_INACTIVE) &&
((msgCtx->msgMode == 0) || ((msgCtx->currentTextId >= 0x100) && (msgCtx->currentTextId <= 0x200)) ||
((msgCtx->msgMode == MSGMODE_NONE) || ((msgCtx->currentTextId >= 0x100) && (msgCtx->currentTextId <= 0x200)) ||
((msgCtx->currentTextId >= 0x1BB2) && (msgCtx->currentTextId <= 0x1BB6))) &&
(play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) &&
!Play_InCsMode(play)) {
@@ -6870,7 +6870,7 @@ void Interface_Update(PlayState* play) {
interfaceCtx->aButtonRoll = -15700.0f;
interfaceCtx->aButtonState = A_BTN_STATE_2;
if ((msgCtx->msgMode != 0) && (msgCtx->textboxYTarget == 0x26)) {
if ((msgCtx->msgMode != MSGMODE_NONE) && (msgCtx->textboxYTarget == 38)) {
R_A_BTN_Y_OFFSET = -14;
} else {
R_A_BTN_Y_OFFSET = 0;
@@ -7018,8 +7018,9 @@ void Interface_Update(PlayState* play) {
// Update Sun Song
if (gSaveContext.sunsSongState != SUNSSONG_INACTIVE) {
// exit out of ocarina mode after suns song finishes playing
if ((msgCtx->ocarinaAction != 0x39) && (gSaveContext.sunsSongState == SUNSSONG_START)) {
play->msgCtx.ocarinaMode = 4;
if ((msgCtx->ocarinaAction != OCARINA_ACTION_CHECK_NOTIME_DONE) &&
(gSaveContext.sunsSongState == SUNSSONG_START)) {
play->msgCtx.ocarinaMode = OCARINA_MODE_END;
}
// handle suns song in areas where time moves
@@ -7039,7 +7040,7 @@ void Interface_Update(PlayState* play) {
// Daytime has been reached. End suns song effect
gSaveContext.sunsSongState = SUNSSONG_INACTIVE;
R_TIME_SPEED = sPrevTimeSpeed;
play->msgCtx.ocarinaMode = 4;
play->msgCtx.ocarinaMode = OCARINA_MODE_END;
}
} else {
// Daytime
@@ -7047,7 +7048,7 @@ void Interface_Update(PlayState* play) {
// Nighttime has been reached. End suns song effect
gSaveContext.sunsSongState = SUNSSONG_INACTIVE;
R_TIME_SPEED = sPrevTimeSpeed;
play->msgCtx.ocarinaMode = 4;
play->msgCtx.ocarinaMode = OCARINA_MODE_END;
}
}
} else {
+1 -1
View File
@@ -1072,7 +1072,7 @@ void Play_Update(PlayState* this) {
this->pauseCtx.bombersNotebookOpen = false;
sBombersNotebook.loadState = BOMBERS_NOTEBOOK_LOAD_STATE_NONE;
this->msgCtx.msgLength = 0;
this->msgCtx.msgMode = 0;
this->msgCtx.msgMode = MSGMODE_NONE;
this->msgCtx.currentTextId = 0;
this->msgCtx.stateTimer = 0;
Audio_PlaySfx(NA_SE_SY_CANCEL);
+6 -7
View File
@@ -638,7 +638,7 @@ void Sram_SaveEndOfCycle(PlayState* play) {
}
gSaveContext.save.saveInfo.playerData.rupees = 0;
gSaveContext.save.saveInfo.unk_F41 = 0;
gSaveContext.save.saveInfo.scarecrowSpawnSongSet = false;
gSaveContext.powderKegTimer = 0;
gSaveContext.unk_1014 = 0;
gSaveContext.jinxTimer = 0;
@@ -1304,7 +1304,7 @@ void Sram_OpenSave(FileSelectState* fileSelect, SramContext* sramCtx) {
gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible;
}
if (gSaveContext.save.saveInfo.unk_F41) {
if (gSaveContext.save.saveInfo.scarecrowSpawnSongSet) {
Lib_MemCpy(gScarecrowSpawnSongPtr, gSaveContext.save.saveInfo.scarecrowSpawnSong,
sizeof(gSaveContext.save.saveInfo.scarecrowSpawnSong));
@@ -1649,7 +1649,7 @@ void func_801457CC(GameState* gameState, SramContext* sramCtx) {
} else {
if (phi_s2) {
gSaveContext.options.optionId = 0xA51D;
gSaveContext.options.language = 1;
gSaveContext.options.language = LANGUAGE_ENG;
gSaveContext.options.audioSetting = SAVE_AUDIO_STEREO;
gSaveContext.options.languageSetting = 0;
gSaveContext.options.zTargetSetting = 0;
@@ -1657,7 +1657,7 @@ void func_801457CC(GameState* gameState, SramContext* sramCtx) {
Lib_MemCpy(&gSaveContext.options, sramCtx->saveBuf, sizeof(SaveOptions));
if (gSaveContext.options.optionId != 0xA51D) {
gSaveContext.options.optionId = 0xA51D;
gSaveContext.options.language = 1;
gSaveContext.options.language = LANGUAGE_ENG;
gSaveContext.options.audioSetting = SAVE_AUDIO_STEREO;
gSaveContext.options.languageSetting = 0;
gSaveContext.options.zTargetSetting = 0;
@@ -1671,7 +1671,7 @@ void func_801457CC(GameState* gameState, SramContext* sramCtx) {
gSaveContext.flashSaveAvailable = D_801F6AF2;
}
gSaveContext.options.language = 1;
gSaveContext.options.language = LANGUAGE_ENG;
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram_NES/func_801457CC.s")
@@ -1853,8 +1853,7 @@ void Sram_InitSave(FileSelectState* fileSelect2, SramContext* sramCtx) {
*/
void Sram_WriteSaveOptionsToBuffer(SramContext* sramCtx) {
if (gSaveContext.flashSaveAvailable) {
// TODO: macros for languages
gSaveContext.options.language = 1;
gSaveContext.options.language = LANGUAGE_ENG;
Lib_MemCpy(sramCtx->saveBuf, &gSaveContext.options, sizeof(SaveOptions));
}
}
@@ -204,7 +204,7 @@ void FireArrow_Fly(ArrowFire* this, PlayState* play) {
void ArrowFire_Update(Actor* thisx, PlayState* play) {
ArrowFire* this = (ArrowFire*)thisx;
if ((play->msgCtx.msgMode == 0xE) || (play->msgCtx.msgMode == 0x12)) {
if ((play->msgCtx.msgMode == MSGMODE_E) || (play->msgCtx.msgMode == MSGMODE_SONG_PLAYED)) {
Actor_Kill(&this->actor);
return;
}
@@ -176,7 +176,7 @@ void ArrowIce_Fly(ArrowIce* this, PlayState* play) {
void ArrowIce_Update(Actor* thisx, PlayState* play) {
ArrowIce* this = THIS;
if ((play->msgCtx.msgMode == 0xE) || (play->msgCtx.msgMode == 0x12)) {
if ((play->msgCtx.msgMode == MSGMODE_E) || (play->msgCtx.msgMode == MSGMODE_SONG_PLAYED)) {
Actor_Kill(&this->actor);
return;
} else {
@@ -172,7 +172,7 @@ void ArrowLight_Fly(ArrowLight* this, PlayState* play) {
void ArrowLight_Update(Actor* thisx, PlayState* play) {
ArrowLight* this = THIS;
if ((play->msgCtx.msgMode == 0xE) || (play->msgCtx.msgMode == 0x12)) {
if ((play->msgCtx.msgMode == MSGMODE_E) || (play->msgCtx.msgMode == MSGMODE_SONG_PLAYED)) {
Actor_Kill(&this->actor);
return;
}
@@ -176,7 +176,7 @@ void func_80AA8698(DmChar01* this, PlayState* play) {
D_80AAAAB4 = false;
}
if ((player->transformation == PLAYER_FORM_DEKU) && (play->msgCtx.ocarinaMode == 3) &&
if ((player->transformation == PLAYER_FORM_DEKU) && (play->msgCtx.ocarinaMode == OCARINA_MODE_EVENT) &&
(play->msgCtx.lastPlayedSong == OCARINA_SONG_SONATA)) {
if ((player2->actor.world.pos.x > -40.0f) && (player2->actor.world.pos.x < 40.0f) &&

Some files were not shown because too many files have changed in this diff Show More