From ff3fbdfa8f000f22f4ff2e245360804ce00921f1 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Wed, 14 Oct 2020 23:22:43 +0100 Subject: [PATCH] near-match begin_state_intro --- include/variables.h | 18 +++++++- src/code_11a50_len_7a0.c | 90 ++++++++++++++++++++++++++++++++++++++++ undefined_syms.txt | 20 +++++++-- 3 files changed, 123 insertions(+), 5 deletions(-) diff --git a/include/variables.h b/include/variables.h index 5290e33a19..d67f005c7b 100644 --- a/include/variables.h +++ b/include/variables.h @@ -89,10 +89,21 @@ extern Trigger* gTriggerList1[64]; extern Trigger* gTriggerList2[64]; extern Trigger** gCurrentTriggerListPtr[64]; +// Map transition data. Should probably be a struct extern u16 gMapTransitionAlpha; -extern u16 D_800A0942; +extern s16 D_800A0942; extern s16 D_800A0944; - +extern s16 D_800A0954; +extern s16 D_800A0956; +extern s16 D_800A0958; +extern s16 D_800A095A; +extern u8 D_800A095B; +extern s16 D_800A095C; +extern u8 D_800A095D; +extern s16 D_800A095E; +extern u8 D_800A095F; +extern s32 D_800A0960; +extern s32 D_800A0964; extern s32 gGameState; extern s32 D_8009A650[1]; @@ -138,6 +149,9 @@ extern u32 gBattleMapFlags[MAX_MAPFLAGS]; extern s32 D_8009A5D8; +extern u8 D_800779B0; +extern u8 D_800A0963; + extern s32 mapScriptLibStart; extern s32 mapScriptLibEnd; extern s32 mapScriptLibVram; diff --git a/src/code_11a50_len_7a0.c b/src/code_11a50_len_7a0.c index b14218f0db..961b0b898f 100644 --- a/src/code_11a50_len_7a0.c +++ b/src/code_11a50_len_7a0.c @@ -1,6 +1,96 @@ #include "common.h" +void set_curtain_scale_goal(f32 arg0); +void set_curtain_fade_goal(f32 arg0); +void intro_logos_set_fade_alpha(s16 new_alpha); +void intro_logos_set_fade_color(s16 arg0); + +#ifdef NON_MATCHING +void begin_state_intro(void) { + s8 unk_A8; + + GAME_STATUS->loadMenuState = 0; + + set_curtain_scale_goal(1.0f); + set_curtain_fade_goal(0.3f); + + unk_A8 = GAME_STATUS->unk_A8; + switch (unk_A8) { + case 0: + intro_logos_set_fade_alpha(0); + + D_800A0954 = 0xFF; + D_800A0956 = 0x10; + D_800A0958 = 4; + D_800A0960 = 0; + D_800A095A = 0xD0; + D_800A095C = 0xD0; + D_800A095E = 0xD0; + D_800A0964 = 0; + + do { + GameStatus* gameStatus = GAME_STATUS; + + // hos_05 (Star Sanctuary) + gameStatus->areaID = 5; + gameStatus->mapID = 5; + gameStatus->entryID = 3; + } while (0); + + break; + case 1: + intro_logos_set_fade_alpha(0); + + D_800A0954 = 0; + D_800A0956 = 0xC; + D_800A0958 = 4; + D_800A0960 = unk_A8; + D_800A095A = 0; + D_800A095C = 0; + D_800A095E = 0; + D_800A0964 = 0; + + // FIXME: regalloc issues + do { + GameStatus* gameStatus = GAME_STATUS; + + // hos_04 (Outside the Sanctuary) + gameStatus->areaID = 5; + gameStatus->mapID = 4; + gameStatus->entryID = 4; + } while (0); + + break; + default: + intro_logos_set_fade_alpha(0); + intro_logos_set_fade_color(0xD0); + + { + GameStatus* gameStatus = GAME_STATUS; + u8* mystery = &D_800779B0; + + gameStatus->unk_A8 = -1; + + D_800A0956 = 6; + D_800A0958 = 6; + + ++*mystery; + if (*mystery >= 4) { + *mystery = 0; + } + + D_800A0964 = 3; + } + } + + func_80137DA4(D_800A0963, (f32)D_800A0954); + func_80137E10(1, D_800A095B, D_800A095D, D_800A095F); + + intro_logos_update_fade(); +} +#else INCLUDE_ASM(s32, "code_11a50_len_7a0", begin_state_intro); +#endif INCLUDE_ASM(s32, "code_11a50_len_7a0", step_intro); diff --git a/undefined_syms.txt b/undefined_syms.txt index 26d4c827af..53bd4301ba 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -29,13 +29,27 @@ gWorldMapFlags = 0x802DBC70; gBattleMapFlags = 0x802DBD34; gMapTransitionAlpha = 0x800A0940; +D_800A0940 = 0x800A0940; +D_800A0942 = 0x800A0942; +D_800A0944 = 0x800A0944; +D_800A0954 = 0x800A0954; +D_800A0956 = 0x800A0956; +D_800A0958 = 0x800A0958; +D_800A095A = 0x800A095A; +D_800A095B = 0x800A095B; +D_800A095C = 0x800A095C; +D_800A095D = 0x800A095D; +D_800A095E = 0x800A095E; +D_800A095F = 0x800A095D; +D_800A0960 = 0x800A0960; +D_800A0963 = 0x800A0963; +D_800A0964 = 0x800A0964; + D_800E92D8 = 0x800E92D8; D_80147474 = 0x80147474; D_80109270 = 0x80109270; D_80108558 = 0x80108558; -D_800A0940 = 0x800A0940; -D_800A0942 = 0x800A0942; -D_800A0944 = 0x800A0944; +D_800779B0 = 0x800779B0; D_8010CD10 = 0x8010CD10; D_8010CD12 = 0x8010CD12;