@@ -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
451568void 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