Skip to content

Commit 47b5511

Browse files
committed
MAP1_S03: func_800DCDDC
1 parent 178c813 commit 47b5511

2 files changed

Lines changed: 138 additions & 10 deletions

File tree

include/maps/map1/map1_s03.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ extern u8 D_800E62D0;
4141
extern u8 D_800E6388;
4242
extern s32 D_800E638C;
4343

44+
extern u16 D_800E2000[1]; // g_MapMsgSounds
45+
extern s_FsImageDesc D_800E2004;
46+
extern VECTOR3 D_800E200C;
47+
extern s16 D_800E2018;
48+
extern s32 D_800E201C;
49+
extern u8 D_800E2102; // g_MapMsgSoundIdx
50+
extern VECTOR3 D_800E6160;
51+
extern VECTOR3 D_800E6170;
52+
extern s32 D_800E617C;
53+
54+
4455

4556
extern s_AnimInfo LOCKER_DEAD_BODY_ANIM_INFOS[8];
4657

src/maps/map1_s03/map1_s03.c

Lines changed: 127 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -442,11 +442,128 @@ INCLUDE_ASM("asm/maps/map1_s03/nonmatchings/map1_s03", func_800DCB54);
442442

443443
#include "maps/shared/SysWork_StateStepIncrementAfterTime.h" // 0x800DCD44
444444

445-
INCLUDE_RODATA("asm/maps/map1_s03/nonmatchings/map1_s03", D_800CBC04);
445+
void func_800DCDDC(void)
446+
{
447+
s32 pitch;
448+
s32 tmp0;
449+
s32 tmp1;
450+
s32 cos0;
451+
s32 sin0;
446452

447-
INCLUDE_RODATA("asm/maps/map1_s03/nonmatchings/map1_s03", D_800CBC0C);
453+
tmp0 = D_800E201C;
454+
tmp1 = tmp0 >> 2;
455+
sin0 = Math_Sin(tmp1);
456+
cos0 = Math_Cos(tmp0 >> 4);
457+
pitch = ((sin0 * 2) + cos0 + Math_Cos(Math_Sin(tmp1 * 2))) >> 9;
448458

449-
INCLUDE_ASM("asm/maps/map1_s03/nonmatchings/map1_s03", func_800DCDDC);
459+
if (g_SysWork.sysStateStep_C[0] >= 10)
460+
{
461+
D_800E2018 -= FP_MULTIPLY_PRECISE(g_DeltaTime0, Q12(0.5f), Q12_SHIFT);
462+
if (D_800E2018 < 0)
463+
{
464+
D_800E2018 = 0;
465+
}
466+
func_800463C0(Sfx_Unk1467, 0, ~(D_800E2018 >> 4), pitch);
467+
}
468+
else if (g_SysWork.sysStateStep_C[0] > 0)
469+
{
470+
D_800E2018 += FP_MULTIPLY_PRECISE(g_DeltaTime0, Q12(0.25f), Q12_SHIFT);
471+
if (D_800E2018 > Q12(0.9961f))
472+
{
473+
D_800E2018 = Q12(0.9961f);
474+
}
475+
func_800463C0(Sfx_Unk1467, 0, ~(D_800E2018 >> 4), pitch);
476+
}
477+
switch (g_SysWork.sysStateStep_C[0])
478+
{
479+
case 0:
480+
sharedFunc_800D20E4_0_s00();
481+
D_800E2102 = 0;
482+
Fs_QueueStartReadTim(FILE_TIM_ENBAN_TIM, FS_BUFFER_1, &D_800E2004);
483+
Fs_QueueStartRead(FILE_ANIM_UFO1_DMS, FS_BUFFER_13);
484+
D_800E617C = -1;
485+
g_Screen_FadeStatus = 4;
486+
Sd_EngineCmd(Sfx_Unk1467);
487+
func_800463C0(Sfx_Unk1467, 0, Q8_CLAMPED(1.0f), 0);
488+
D_800E2018 = 0;
489+
D_800E201C = 0;
490+
SysWork_StateStepIncrement(0);
491+
/* fallthrough */
492+
case 1:
493+
func_80085DF0();
494+
break;
495+
case 2:
496+
if (Fs_QueueDoThingWhenEmpty())
497+
{
498+
SysWork_StateStepIncrement(0);
499+
}
500+
break;
501+
case 3:
502+
D_800E617C = 0;
503+
SysWork_StateStepIncrementAfterFade(0, true, 3, 0, false);
504+
DmsHeader_FixOffsets((s_DmsHeader*)FS_BUFFER_13);
505+
func_8003D03C();
506+
sharedFunc_800D2EB4_0_s00();
507+
Game_TurnFlashlightOn();
508+
SysWork_StateStepIncrement(0);
509+
/* fallthrough */
510+
case 4:
511+
SysWork_StateStepIncrementAfterFade(2, false, 0, 0, false);
512+
/* fallthrough */
513+
case 5:
514+
Map_MessageWithAudio(46, &D_800E2102, D_800E2000); // "What?"
515+
break;
516+
case 6:
517+
SysWork_StateStepIncrementAfterTime(&D_800E617C, Q12(40.0f), Q12(0.0f), Q12(30.0f), true, true);
518+
sharedFunc_800CE5D4_1_s03(&D_800E200C, Q12(0.5f), Q12(0.05f), 0);
519+
break;
520+
case 7:
521+
MapMsg_DisplayAndHandleSelection(false, 47, 0, 0, 0, false); // "That light!?"
522+
sharedFunc_800CE5D4_1_s03(&D_800E200C, Q12(0.5f), Q12(0.05f), 0);
523+
break;
524+
case 8:
525+
func_80080B58(&g_SysWork.playerBoneCoords_890[2], &(SVECTOR3){}, &QVECTOR3(-13.91f, -11.5f, 22.11f));
526+
sharedFunc_800CE5D4_1_s03(&D_800E200C, Q12(0.5f), Q12(0.05f), 0);
527+
SysWork_StateStepIncrementDelayed(0x2800, false);
528+
break;
529+
case 9:
530+
sharedFunc_800CE5D4_1_s03(&D_800E200C, Q12(0.5f), Q12(0.05f), 0);
531+
g_SysWork.field_28 += g_DeltaTime0;
532+
if (g_SysWork.field_28 > Q12(4.0f))
533+
{
534+
D_800E200C.vx += FP_MULTIPLY_PRECISE(g_DeltaTime0, Q12(-1.2f), Q12_SHIFT);
535+
D_800E200C.vy += FP_MULTIPLY_PRECISE(g_DeltaTime0, Q12(-0.4f), Q12_SHIFT);
536+
}
537+
if (g_SysWork.field_28 > Q12(6.0f))
538+
{
539+
SysWork_StateStepIncrement(0);
540+
}
541+
break;
542+
case 10:
543+
SysWork_StateStepIncrementDelayed(Q12(2.5f), false);
544+
break;
545+
default:
546+
sharedFunc_800D2244_0_s00(false);
547+
SysWork_StateSetNext(SysState_Gameplay);
548+
SysWork_StateStepIncrementAfterFade(0, false, 2, 0, false);
549+
vcReturnPreAutoCamWork(true);
550+
Savegame_EventFlagSet(EventFlag_456);
551+
func_80086470(3, InventoryItemId_ChannelingStone, 1, false);
552+
func_8003D01C();
553+
sharedFunc_800D2EF4_0_s00();
554+
D_800E617C = -1;
555+
func_8004690C(Sfx_Unk1467);
556+
break;
557+
}
558+
D_800E201C += g_DeltaTime0;
559+
if (D_800E617C >= 0)
560+
{
561+
Dms_CharacterGetPosRot(&g_SysWork.player_4C.chara_0.position_18, &g_SysWork.player_4C.chara_0.rotation_24, "HERO", D_800E617C, (s_DmsHeader*)FS_BUFFER_13);
562+
vcChangeProjectionValue(Dms_CameraGetTargetPos(&D_800E6160, &D_800E6170, NULL, D_800E617C, (s_DmsHeader*)FS_BUFFER_13));
563+
vcUserCamTarget(&D_800E6160, NULL, true);
564+
vcUserWatchTarget(&D_800E6170, NULL, true);
565+
}
566+
}
450567

451568
void func_800DD3AC(void)
452569
{
@@ -503,7 +620,7 @@ void func_800DD688(void)
503620
g_WorldGfx_ObjectAdd(&g_WorldObject5.object_0, &g_WorldObject5.position_1C.position_0, &g_WorldObject5.position_1C.rotation_C);
504621
if (g_SavegamePtr->eventFlags_168[3] & 0x8000)
505622
{
506-
g_WorldGfx_ObjectAdd(&g_WorldObject6.object_0, &g_WorldObject6.position_1C, &D_800CBC04);
623+
g_WorldGfx_ObjectAdd(&g_WorldObject6.object_0, &g_WorldObject6.position_1C, &(SVECTOR3){});
507624
}
508625
}
509626

@@ -768,11 +885,11 @@ void func_800DE828(void)
768885
{
769886
if (Savegame_EventFlagGet(EventFlag_105))
770887
{
771-
g_WorldGfx_ObjectAdd(&g_WorldObject4.object_0, &g_WorldObject4.position_1C, &D_800CBC04);
888+
g_WorldGfx_ObjectAdd(&g_WorldObject4.object_0, &g_WorldObject4.position_1C, &(SVECTOR3){});
772889
}
773890
if (Savegame_EventFlagGet(EventFlag_101) && Savegame_EventFlagGet(EventFlag_102))
774891
{
775-
g_WorldGfx_ObjectAdd(&g_WorldObject3.object_0, &g_WorldObject3.position_1C, &D_800CBC04);
892+
g_WorldGfx_ObjectAdd(&g_WorldObject3.object_0, &g_WorldObject3.position_1C, &(SVECTOR3){});
776893
}
777894
g_WorldGfx_ObjectAdd(&g_WorldObject0.object_0, &g_WorldObject0.position_1C.position_0, &g_WorldObject0.position_1C.rotation_C);
778895
g_WorldGfx_ObjectAdd(&g_WorldObject1.object_0, &g_WorldObject1.position_1C.position_0, &g_WorldObject1.position_1C.rotation_C);
@@ -815,12 +932,12 @@ void func_800DE828(void)
815932
{
816933
Savegame_EventFlagSet(EventFlag_106);
817934
}
818-
g_WorldGfx_ObjectAdd(&g_WorldObject4.object_0, &g_WorldObject4.position_1C, &D_800CBC04);
935+
g_WorldGfx_ObjectAdd(&g_WorldObject4.object_0, &g_WorldObject4.position_1C, &(SVECTOR3){});
819936
}
820937
else if (Savegame_EventFlagGet(EventFlag_106))
821938
{
822939
g_WorldObject2.position_1C.rotation_C.vy = FP_ANGLE(-157.4f);
823-
g_WorldGfx_ObjectAdd(&g_WorldObject4.object_0, &g_WorldObject4.position_1C, &D_800CBC04);
940+
g_WorldGfx_ObjectAdd(&g_WorldObject4.object_0, &g_WorldObject4.position_1C, &(SVECTOR3){});
824941
}
825942

826943
if (!Savegame_EventFlagGet(EventFlag_101) || !Savegame_EventFlagGet(EventFlag_102))
@@ -920,7 +1037,7 @@ void func_800DE828(void)
9201037
}
9211038
D_800E20E8 = tmp0;
9221039
g_WorldObject1.position_1C.rotation_C.vy += FP_FROM(tmp0, Q12_SHIFT);
923-
g_WorldGfx_ObjectAdd(&g_WorldObject3.object_0, &g_WorldObject3.position_1C, &D_800CBC04);
1040+
g_WorldGfx_ObjectAdd(&g_WorldObject3.object_0, &g_WorldObject3.position_1C, &(SVECTOR3){});
9241041
if (D_800E20EE == 4)
9251042
{
9261043
if (g_WorldObject1.position_1C.rotation_C.vy < FP_ANGLE(-5.7f))
@@ -946,7 +1063,7 @@ void func_800DE828(void)
9461063
else
9471064
{
9481065
g_WorldObject1.position_1C.rotation_C.vy = FP_ANGLE(-157.5f);
949-
g_WorldGfx_ObjectAdd(&g_WorldObject3.object_0, &g_WorldObject3.position_1C, &D_800CBC04);
1066+
g_WorldGfx_ObjectAdd(&g_WorldObject3.object_0, &g_WorldObject3.position_1C, &(SVECTOR3){});
9501067
if (!Savegame_EventFlagGet(EventFlag_105))
9511068
{
9521069
D_800E20EE = 6;

0 commit comments

Comments
 (0)