Merge pull request #490 from hatal175/subtask5

Decompile Subtask_FadeIn/Out
This commit is contained in:
notyourav
2022-04-10 23:52:32 -07:00
committed by GitHub
9 changed files with 90 additions and 117 deletions
+2 -2
View File
@@ -89,7 +89,7 @@ void sub_0804AB70(void) {
gScreen.bg1.yOffset = 0;
controls->scroll_y = 0;
portalId = gArea.portal_type;
if ((portalId == 2) && (gUI.unk_1c.area != 2)) {
if ((portalId == 2) && (gUI.roomControls.area != 2)) {
portalId = 3;
}
ptr = &gUnk_080D4138[portalId * 2];
@@ -142,7 +142,7 @@ bool32 sub_0804ACA8(void) {
void sub_0804ACC8(void) {
if (gFadeControl.active == 0) {
SetGlobalFlag(gArea.portal_type + ENTRANCE_0);
sub_0804AD6C((RoomControls*)&gUI.unk_1c);
sub_0804AD6C(&gUI.roomControls);
sub_080A71F4(0);
}
}
+4 -4
View File
@@ -1828,11 +1828,11 @@ void sub_0805368C(void) {
}
void sub_080536A8(void) {
sub_080A71C4(5, 5, 4, 0x10);
sub_080A71C4(5, 5, FADE_INSTANT, 0x10);
}
void sub_080536B8(void) {
sub_080A71C4(5, 3, 4, 4);
sub_080A71C4(5, 3, FADE_INSTANT, 4);
SetFade(FADE_IN_OUT | FADE_INSTANT, 0x100);
}
@@ -1972,7 +1972,7 @@ void sub_08053B10(void) {
}
void sub_08053B3C(void) {
sub_080A71C4(5, 4, 5, 0x100);
sub_080A71C4(5, 4, FADE_IN_OUT | FADE_INSTANT, 0x100);
SetFade(FADE_IN_OUT | FADE_INSTANT, 0x100);
}
@@ -2002,7 +2002,7 @@ void sub_08053BBC(void) {
}
void sub_08053BE8(void) {
sub_080A71C4(5, 2, 5, 0x100);
sub_080A71C4(5, 2, FADE_IN_OUT | FADE_INSTANT, 0x100);
SetFade(FADE_IN_OUT | FADE_INSTANT, 0x100);
}
+1 -1
View File
@@ -4974,7 +4974,7 @@ extern u32 script_PlayerIntro;
void sub_StateChange_HouseInteriors2_LinksHouseBedroom(void) {
if (!CheckGlobalFlag(START) && !CheckLocalFlag(0x46)) {
sub_080A71C4(5, 1, 4, 4);
sub_080A71C4(5, 1, FADE_INSTANT, 4);
gUpdateVisibleTiles = 0;
SetFade(FADE_IN_OUT | FADE_INSTANT, 256);
sub_080751E8(0, 6, &script_PlayerIntro);
+54 -7
View File
@@ -30,6 +30,9 @@ extern u8 gUnk_08128C00[];
extern Frame* gSpriteAnimations_322[];
extern u32 gUnk_085C4620[];
extern u16* gMoreSpritePtrs[];
extern Screen gUnk_03001020;
extern u8 gUnk_02024090[];
extern u8 gUnk_03000420[];
void sub_080A5CFC(u32, void*, u32);
void sub_080A6FB4(u32, u32);
@@ -1262,7 +1265,7 @@ void MenuFadeIn(u32 param_1, u32 param_2) {
gUI.nextToLoad = 1;
}
gUI.field_0x6 = 0;
gUI.isLoading = -1;
gUI.fadeType = -1;
gUI.fadeInTime = 0x20;
gMain.substate = GAMEMAIN_SUBTASK;
SetFade(FADE_IN_OUT | FADE_INSTANT, 0x20);
@@ -1272,16 +1275,16 @@ void MenuFadeIn(u32 param_1, u32 param_2) {
void sub_080A71A4(u32 param_1, u32 param_2, u32 param_3) {
if (gUI.nextToLoad == 0) {
gUI.fillerC[2] = param_3;
gUI.unk_e = param_3;
} else {
gUI.fillerC[3] = param_3;
gUI.unk_f = param_3;
}
MenuFadeIn(param_1, param_2);
}
void sub_080A71C4(u32 param_1, u32 param_2, u32 param_3, u32 param_4) {
void sub_080A71C4(u32 param_1, u32 param_2, u32 fadeType, u32 param_4) {
MenuFadeIn(param_1, param_2);
gUI.isLoading = param_3;
gUI.fadeType = fadeType;
gUI.fadeInTime = param_4;
}
@@ -1312,7 +1315,24 @@ void GameMain_Subtask(void) {
gUnk_0812901C[gUI.nextToLoad]();
}
ASM_FUNC("asm/non_matching/subtask2/Subtask_FadeIn.inc", void Subtask_FadeIn())
void Subtask_FadeIn(void) {
if (!gFadeControl.active) {
MemCopy(&gScreen, &gUnk_03001020, sizeof(Screen));
MemCopy(gPaletteBuffer, gUnk_02024090, 0x400);
MemCopy(&gGFXSlots, &gUI.gfxSlotList, sizeof(GfxSlotList));
MemCopy(gPaletteList, gUI.palettes, sizeof(gUI.palettes));
MemCopy(&gRoomControls, &gUI.roomControls, sizeof(RoomControls));
MemCopy(gUnk_03000420, gUI.unk_2a8, sizeof(gUI.unk_2a8));
MemCopy(&gActiveScriptInfo, &gUI.activeScriptInfo, sizeof(ActiveScriptInfo));
sub_0805E958();
gUI.unk_d = gRoomTransition.field_0x2c[2];
gUI.controlMode = gPlayerState.controlMode;
gUI.currentRoomProperties = gCurrentRoomProperties;
gUI.mapBottomBgControlPtr = gMapBottom.bgControlPtr;
gUI.mapTopBgControlPtr = gMapTop.bgControlPtr;
gUI.nextToLoad = 1;
}
}
void Subtask_Init(void) {
if (gFadeControl.active == 0) {
@@ -1332,7 +1352,34 @@ void Subtask_Init(void) {
}
}
ASM_FUNC("asm/non_matching/subtask2/Subtask_FadeOut.inc", void Subtask_FadeOut())
void Subtask_FadeOut(void) {
if (!gFadeControl.active) {
DeleteAllEntities();
sub_0805E974();
gCurrentRoomProperties = gUI.currentRoomProperties;
gPlayerState.controlMode = gUI.controlMode;
gMapBottom.bgControlPtr = gUI.mapBottomBgControlPtr;
gMapTop.bgControlPtr = gUI.mapTopBgControlPtr;
MemCopy(&gUI.activeScriptInfo, &gActiveScriptInfo, sizeof(ActiveScriptInfo));
MemCopy(gUI.unk_2a8, gUnk_03000420, sizeof(gUI.unk_2a8));
MemCopy(gUI.palettes, gPaletteList, sizeof(gUI.palettes));
MemCopy(&gUI.gfxSlotList, &gGFXSlots, sizeof(gGFXSlots));
MemCopy(&gUI.roomControls, &gRoomControls, sizeof(RoomControls));
MemCopy(&gUnk_03001020, &gScreen, sizeof(Screen));
gArea.localFlagOffset = GetFlagBankOffset(gRoomControls.area);
gArea.pCurrentRoomInfo = GetCurrentRoomInfo();
RestoreGameTask(gUI.field_0x6);
sub_0801D000(gUI.unk_d != 0);
sub_080A74F4();
if (gUI.fadeType != 0xffff) {
SetFade(gUI.fadeType, gUI.fadeInTime);
} else {
SetFadeInverted(gUI.fadeInTime);
}
gUI.nextToLoad = 4;
gRoomTransition.field_0x2c[3] = 0;
}
}
void Subtask_Die(void) {
sub_080A74F4();