Skip to content

Commit 5acef77

Browse files
pseregietBl00D4NGEL
andcommitted
MAP5_S01: func_800EC42C
Co-authored-by: Dominik Peters <Bl00D4NGEL@users.noreply.github.com>
1 parent a31db11 commit 5acef77

File tree

2 files changed

+248
-4
lines changed

2 files changed

+248
-4
lines changed

include/maps/map5/map5_s01.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,17 @@ extern s_WorldObjectDesc g_WorldObject1; // D_800F3E40
2020
extern s_WorldObjectPose g_CommonWorldObjectPoses[5]; // 0x800F018C
2121
extern u8 D_800CCA84[]; // "HOOK_HID" + garbage after null byte
2222
extern SVECTOR3 D_800CC938; // empty SVECTOR3, remove after all functions that use it are decompiled.
23+
extern u16 D_800F0174;
24+
extern s_FsImageDesc D_800F0178;
25+
extern VECTOR3 D_800F0180;
26+
extern u8 D_800F035C;
27+
extern u8 D_800F035D;
28+
extern s16 D_800F035E;
29+
extern q19_12 D_800F0360;
30+
extern VECTOR3 D_800F3DF0;
31+
extern VECTOR3 D_800F3E00;
32+
extern s32 D_800F3E0C;
33+
2334

2435
void func_800CD818(void);
2536

@@ -36,4 +47,6 @@ void func_800ECB58(void);
3647

3748
void func_800ECC8C(void);
3849

50+
void func_800EC42C(void);
51+
3952
#endif

src/maps/map5_s01/map5_s01.c

Lines changed: 235 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -750,11 +750,242 @@ INCLUDE_ASM("asm/maps/map5_s01/nonmatchings/map5_s01", func_800EC2D8);
750750

751751
#include "maps/shared/SysWork_StateStepIncrementAfterTime.h" // 0x800EC394
752752

753-
INCLUDE_RODATA("asm/maps/map5_s01/nonmatchings/map5_s01", D_800CC938);
753+
void func_800EC42C(void)
754+
{
755+
s32 mulZ;
756+
s32 mulX;
757+
s32 pitch;
758+
s32 tmp0;
759+
s32 tmp1;
760+
s32 sin0;
761+
s32 sin1;
762+
763+
764+
tmp0 = D_800F0360;
765+
sin0 = Math_Sin(tmp0 >> 2);
766+
sin1 = Math_Sin(tmp0 >> 3);
767+
tmp1 = (sin0*2) + sin1 + Math_Sin(Math_Cos(tmp0 >> 4));
768+
pitch = tmp1 >> 8;
769+
D_800F0360 += g_DeltaTime0;
770+
771+
if (g_SysWork.sysStateStep_C[0] >= 10)
772+
{
773+
D_800F035E -= FP_MULTIPLY_PRECISE(g_DeltaTime0, Q12(0.5f), Q12_SHIFT);
774+
if (D_800F035E < 0)
775+
{
776+
D_800F035E = 0;
777+
}
754778

755-
INCLUDE_RODATA("asm/maps/map5_s01/nonmatchings/map5_s01", D_800CC940);
779+
func_800463C0(Sfx_Unk1467, 0, ~(D_800F035E >> 4), pitch);
780+
}
781+
else if (g_SysWork.sysStateStep_C[0] > 0)
782+
{
783+
D_800F035E += FP_MULTIPLY_PRECISE(g_DeltaTime0, Q12(0.25f), Q12_SHIFT);
784+
if (D_800F035E > Q12(0.9961f))
785+
{
786+
D_800F035E = Q12(0.9961f);
787+
}
756788

757-
INCLUDE_ASM("asm/maps/map5_s01/nonmatchings/map5_s01", func_800EC42C);
789+
func_800463C0(Sfx_Unk1467, 0, ~(D_800F035E >> 4), pitch);
790+
}
791+
792+
switch (g_SysWork.sysStateStep_C[0])
793+
{
794+
case 0:
795+
Player_ControlFreeze();
796+
Fs_QueueStartReadTim(FILE_TIM_ENBAN_TIM, FS_BUFFER_1, &D_800F0178);
797+
Fs_QueueStartRead(FILE_ANIM_UFO3_DMS, FS_BUFFER_13);
798+
D_800F3E0C = NO_VALUE;
799+
ScreenFade_ResetTimestep();
800+
Sd_EngineCmd(Sfx_Unk1467);
801+
func_800463C0(Sfx_Unk1467, 0, Q8_CLAMPED(1.0f), 0);
802+
D_800F035E = 0;
803+
D_800F0360 = 0;
804+
D_800F035D = 0;
805+
SysWork_StateStepIncrement(0);
806+
/* fallthrough */
807+
case 1:
808+
func_80085DF0();
809+
break;
810+
case 2:
811+
if (Fs_QueueDoThingWhenEmpty() != false)
812+
{
813+
SysWork_StateStepIncrement(0);
814+
}
815+
break;
816+
case 3:
817+
D_800F3E0C = 0;
818+
SysWork_StateStepIncrementAfterFade(0, true, 3, 0, false);
819+
DmsHeader_FixOffsets((s_DmsHeader* )FS_BUFFER_13);
820+
func_8003D03C();
821+
sharedFunc_800D2EB4_0_s00();
822+
Game_TurnFlashlightOn();
823+
D_800F035C = 0;
824+
SysWork_StateStepIncrement(0);
825+
/* fallthrough */
826+
case 4:
827+
SysWork_StateStepIncrementAfterFade(2, false, 0, 0, false);
828+
break;
829+
case 5:
830+
Map_MessageWithAudio(18, &D_800F035C, &D_800F0174);
831+
break;
832+
case 6:
833+
SysWork_StateStepIncrementAfterTime(&D_800F3E0C, Q12(40.0f), Q12(0.0f), Q12(30.0f), true, true);
834+
block_18:
835+
sharedFunc_800CE5D4_1_s03(&D_800F0180, Q12(0.5f), Q12(0.05f), 0);
836+
break;
837+
case 7:
838+
MapMsg_DisplayAndHandleSelection(false, 19, 0, 0, 0, false);
839+
sharedFunc_800CE5D4_1_s03(&D_800F0180, Q12(0.5f), Q12(0.05f), 0);
840+
break;
841+
case 8:
842+
func_80080B58(&g_SysWork.playerBoneCoords_890[2], &(SVECTOR3){}, &QVECTOR3(-196.53f, -14.25f, -9.73f));
843+
sharedFunc_800CE5D4_1_s03(&D_800F0180, Q12(1.0f), Q12(0.1f), 1);
844+
SysWork_StateStepIncrementDelayed(Q12(2.5f), false);
845+
break;
846+
case 9:
847+
g_SysWork.field_28 += g_DeltaTime0;
848+
switch (g_SysWork.field_28 / Q12(0.1f))
849+
{
850+
case 0x0:
851+
case 0x1:
852+
case 0x2:
853+
case 0x3:
854+
mulZ = Q12(0.0f);
855+
mulX = Q12(0.0f);
856+
break;
857+
case 0x4:
858+
case 0x5:
859+
case 0x6:
860+
case 0xB:
861+
case 0xC:
862+
case 0xD:
863+
case 0x12:
864+
case 0x13:
865+
case 0x14:
866+
mulX = Q12(-0.9f);
867+
mulZ = Q12(1.0f);
868+
break;
869+
case 0x7:
870+
case 0x8:
871+
case 0x9:
872+
case 0xA:
873+
case 0xE:
874+
case 0xF:
875+
case 0x10:
876+
case 0x11:
877+
case 0x15:
878+
case 0x16:
879+
case 0x17:
880+
case 0x18:
881+
mulX = Q12(1.2f);
882+
mulZ = Q12(1.0f);
883+
break;
884+
case 0x19:
885+
if (D_800F035D == 0)
886+
{
887+
D_800F0180.vy = Q12(-13.0f);
888+
D_800F0180.vz = Q12(2.5f);
889+
D_800F035D++;
890+
}
891+
/* fallthrough */
892+
case 0x1A:
893+
case 0x1B:
894+
case 0x1F:
895+
case 0x20:
896+
case 0x21:
897+
case 0x25:
898+
case 0x26:
899+
case 0x27:
900+
case 0x2B:
901+
case 0x2C:
902+
case 0x2D:
903+
mulX = Q12(-1.2f);
904+
mulZ = Q12(-1.2f);
905+
break;
906+
case 0x1C:
907+
case 0x1D:
908+
case 0x1E:
909+
case 0x22:
910+
case 0x23:
911+
case 0x24:
912+
case 0x28:
913+
case 0x29:
914+
case 0x2A:
915+
mulX = Q12(1.2f);
916+
mulZ = Q12(-1.2f);
917+
break;
918+
case 0x2E:
919+
if (D_800F035D == 1)
920+
{
921+
D_800F0180.vy = Q12(-15.75f);
922+
D_800F0180.vz = Q12(-12.25f);
923+
D_800F035D++;
924+
}
925+
/* fallthrough */
926+
case 0x3B:
927+
mulX = Q12(0.0f);
928+
mulZ = Q12(-1.6f);
929+
break;
930+
case 0x2F:
931+
case 0x30:
932+
case 0x31:
933+
case 0x38:
934+
case 0x39:
935+
case 0x3A:
936+
mulX = Q12(0.6f);
937+
mulZ = Q12(-1.6f);
938+
break;
939+
case 0x32:
940+
case 0x33:
941+
case 0x34:
942+
case 0x35:
943+
case 0x36:
944+
case 0x37:
945+
mulX = Q12(-0.6f);
946+
mulZ = Q12(-1.6f);
947+
break;
948+
default:
949+
mulZ = Q12(0.0f);
950+
mulX = Q12(0.0f);
951+
SysWork_StateStepIncrement(0);
952+
break;
953+
}
954+
955+
D_800F0180.vy += FP_MULTIPLY_PRECISE(g_DeltaTime0, (mulX*4), Q12_SHIFT);
956+
D_800F0180.vz += FP_MULTIPLY_PRECISE(g_DeltaTime0, (mulZ*4), Q12_SHIFT);
957+
958+
959+
sharedFunc_800CE5D4_1_s03(&D_800F0180, Q12(0.5f), Q12(0.05f), 0);
960+
break;
961+
case 10: /* switch 1 */
962+
SysWork_StateStepIncrementDelayed(Q12(2.5f), false);
963+
break;
964+
default: /* switch 1 */
965+
Player_ControlUnfreeze(false);
966+
SysWork_StateSetNext(SysState_Gameplay);
967+
SysWork_StateStepIncrementAfterFade(0, false, 2, 0, false);
968+
vcReturnPreAutoCamWork(true);
969+
Savegame_EventFlagSet(EventFlag_458);
970+
func_80086470(3, InventoryItemId_ChannelingStone, 1, false);
971+
func_8003D01C();
972+
sharedFunc_800D2EF4_0_s00();
973+
D_800F3E0C = -1;
974+
func_8004690C(Sfx_Unk1467);
975+
break;
976+
}
977+
978+
if (D_800F3E0C >= 0)
979+
{
980+
Dms_CharacterGetPosRot(&g_SysWork.player_4C.chara_0.position_18, &g_SysWork.player_4C.chara_0.rotation_24, "HERO", D_800F3E0C, (s_DmsHeader* )FS_BUFFER_13);
981+
g_SysWork.player_4C.chara_0.position_18.vx -= Q12(20.0f);
982+
vcChangeProjectionValue(Dms_CameraGetTargetPos(&D_800F3DF0, &D_800F3E00, NULL, D_800F3E0C, (s_DmsHeader* )FS_BUFFER_13));
983+
D_800F3DF0.vx -= Q12(20.0f);
984+
D_800F3E00.vx -= Q12(20.0f);
985+
vcUserCamTarget(&D_800F3DF0, NULL, true);
986+
vcUserWatchTarget(&D_800F3E00, NULL, true);
987+
}
988+
}
758989

759990
void func_800ECB58(void)
760991
{
@@ -791,7 +1022,7 @@ void func_800ECC8C(void)
7911022
{
7921023
if (!Savegame_EventFlagGet(EventFlag_M5S01_PickupMap))
7931024
{
794-
g_WorldGfx_ObjectAdd(&g_WorldObject0.object_0, &g_WorldObject0.position_1C, &D_800CC938);
1025+
g_WorldGfx_ObjectAdd(&g_WorldObject0.object_0, &g_WorldObject0.position_1C, &(SVECTOR3){});
7951026
}
7961027
}
7971028

0 commit comments

Comments
 (0)