@@ -806,7 +806,70 @@ void func_800DADD4(void)
806806}
807807*/
808808
809- INCLUDE_ASM ("asm/maps/map0_s00/nonmatchings/map0_s00" , func_800DAEFC );
809+ void func_800DAEFC (void )
810+ {
811+ s32 temp_s1 ;
812+ s32 var_a3 ;
813+ s32 temp ;
814+ s32 temp2 ;
815+
816+ switch (g_SysWork .sysStateStep_C [0 ])
817+ {
818+ case 0 :
819+ sharedFunc_800D20E4_0_s00 ();
820+ g_SysWork .npcs_1A0 [0 ].position_18 .vx = Q12 (-62.0f );
821+ g_SysWork .npcs_1A0 [0 ].rotation_24 .vy = Q12 (0.5f );
822+ g_SysWork .npcs_1A0 [0 ].position_18 .vz = g_SysWork .player_4C .chara_0 .position_18 .vz - Q12 (19.0f );
823+ func_8008616C (0 , true, 2 , 0 , false);
824+ SysWork_StateStepIncrement ();
825+ /* fallthrough */
826+ case 1 :
827+ func_80085DF0 ();
828+ return ;
829+ case 2 :
830+ func_800865FC (0 , 0 , 0 , Q12 (0.5f ), 0 , 0 );
831+ Camera_TranslationSet (& g_SysWork .player_4C .chara_0 .position_18 , Q12 (0.24f ), Q12 (-4.06f ), Q12 (-5.0f ), 0 , 0 , 0 , 0 , true);
832+ Camera_RotationSet (& g_SysWork .player_4C .chara_0 .position_18 , Q12 (-0.72f ), Q12 (-2.11f ), Q12 (-1.63f ), 0 , 0 , 0 , 0 , true);
833+ SysWork_StateStepIncrement ();
834+
835+ /* fallthrough */
836+ case 3 :
837+ func_800866D4 (0x35 , 1 , 0 );
838+ return ;
839+ case 4 :
840+ func_800865FC (1 , 0 , 0 , Q12 (0.5f ), -0x3E000 , g_SysWork .player_4C .chara_0 .position_18 .vz - Q12 (10.0f ));
841+ func_80085E6C (0x1000 , false);
842+ return ;
843+ case 5 :
844+ func_800866D4 (0x36 , 1 , 0 );
845+ func_80085E6C (0x1000 , false);
846+ return ;
847+ case 6 :
848+ func_800866D4 (0x36 , 1 , 0 );
849+ temp_s1 = FP_MULTIPLY (Math_Cos (g_SysWork .player_4C .chara_0 .rotation_24 .vy ), Q12 (0.6f ), 12 ) - Q12 (1.84f );
850+ temp = FP_MULTIPLY (Math_Cos (g_SysWork .player_4C .chara_0 .rotation_24 .vy ), Q12 (2.0f ), 12 ) + Q12 (4.0f );
851+ if (g_SysWork .player_4C .chara_0 .position_18 .vz + temp < Q12 (130.0f ))
852+ {
853+ temp2 = FP_MULTIPLY (Math_Cos (g_SysWork .player_4C .chara_0 .rotation_24 .vy ), 0x2000 , 12 ) + Q12 (4.0f );
854+ var_a3 = g_SysWork .player_4C .chara_0 .position_18 .vz + temp2 ;
855+ }
856+ else
857+ {
858+ var_a3 = Q12 (130.0f );
859+ }
860+ Camera_TranslationSet (NULL , Q12 (-62.0f ), temp_s1 , var_a3 , 0 , 0 , 0 , 0 , D_800DFAC4 );
861+ Camera_RotationSet (NULL , g_SysWork .player_4C .chara_0 .position_18 .vx , -0xB33 , g_SysWork .player_4C .chara_0 .position_18 .vz - 0x5000 , 0 , 0 , 0 , 0 , D_800DFAC4 );
862+ D_800DFAC4 = false;
863+ return ;
864+ default :
865+ sharedFunc_800D2244_0_s00 (0 );
866+ SysWork_StateSetNext (SysState_Gameplay );
867+
868+ func_8008616C (0 , false, 2 , 0 , false);
869+ g_SavegamePtr -> eventFlags_168 [0 ] |= 0x180 ;
870+ func_800865FC (1 , 1 , 0 , 0x800 , -0x3E000 , 0x31000 );
871+ }
872+ }
810873
811874INCLUDE_ASM ("asm/maps/map0_s00/nonmatchings/map0_s00" , func_800DB26C );
812875
@@ -1194,9 +1257,80 @@ void func_800DCC54(void)
11941257 }
11951258}
11961259
1197- INCLUDE_ASM ("asm/maps/map0_s00/nonmatchings/map0_s00" , func_800DCDA8 );
1260+ s32 func_800DCDA8 (void )
1261+ {
1262+ s16 sp20 ;
1263+ s32 i ;
1264+ s32 var_s2 ;
1265+ s16 var_s5 ;
1266+ s32 var_s4 ;
1267+ s32 temp_v1_3 ;
1268+
1269+ var_s4 = 0 ;
1270+ var_s5 = 0 ;
1271+ var_s2 = 0 ;
1272+
1273+ for (i = 0 ; i < 5 ; i ++ )
1274+ {
1275+ temp_v1_3 = func_8005C478 (
1276+ & sp20 ,
1277+ g_SysWork .player_4C .chara_0 .position_18 .vx ,
1278+ g_SysWork .player_4C .chara_0 .position_18 .vz ,
1279+ D_800DFAE0 [i ].vx ,
1280+ D_800DFAE0 [i ].vy ,
1281+ D_800DFAE0 [i + 1 ].vx ,
1282+ D_800DFAE0 [i + 1 ].vy
1283+ );
1284+
1285+ if (!i )
1286+ {
1287+ var_s4 = temp_v1_3 ;
1288+ var_s5 = sp20 ;
1289+ var_s2 = 0 ;
1290+ } else if (temp_v1_3 < var_s4 ) {
1291+ var_s4 = temp_v1_3 ;
1292+ var_s5 = sp20 ;
1293+ var_s2 = i ;
1294+ }
1295+ }
1296+
1297+ return FP_MULTIPLY_PRECISE (D_800DFAE0 [var_s2 + 1 ].vz - D_800DFAE0 [var_s2 ].vz , var_s5 , 12 ) + D_800DFAE0 [var_s2 ].vz ;
1298+ }
1299+
1300+ s32 func_800DCF38 (s32 arg0 )
1301+ {
1302+ s16 sp20 ;
1303+ s32 temp_v0 ;
1304+ s32 var_t0 ;
1305+ s32 var_v0 ;
1306+
1307+ var_t0 = 0 ;
1308+ if (g_SysWork .sysState_8 == SysState_EventCallFunc )
1309+ {
1310+ if (!(g_SavegamePtr -> eventFlags_168 [0 ] & 0x8000 ))
1311+ {
1312+ return arg0 ;
1313+ }
1314+ }
1315+ else
1316+ {
1317+ if (!(g_SavegamePtr -> eventFlags_168 [0 ] & 0x8000 ))
1318+ {
1319+ if (g_SysWork .player_4C .chara_0 .position_18 .vx < Q12 (-200.0f ))
1320+ {
1321+ func_8005C478 (& sp20 , g_SysWork .player_4C .chara_0 .position_18 .vx ,
1322+ g_SysWork .player_4C .chara_0 .position_18 .vz ,
1323+ D_800DFB28 [0 ].vx , D_800DFB28 [0 ].vy ,
1324+ D_800DFB28 [1 ].vx , D_800DFB28 [1 ].vy );
1325+ var_v0 = FP_MULTIPLY_PRECISE ((D_800DFB28 [1 ].vz - D_800DFB28 [0 ].vz ), sp20 , 12 ) + Q12 (60.0f );
1326+ var_t0 = D_800DFB28 [0 ].vz + var_v0 ;
1327+ }
1328+ return MAX (var_t0 , arg0 );
1329+ }
1330+ }
11981331
1199- INCLUDE_ASM ("asm/maps/map0_s00/nonmatchings/map0_s00" , func_800DCF38 );
1332+ return FP_MULTIPLY_PRECISE (g_DeltaTime0 , Q12 (9.0f ), 12 ) + arg0 ;
1333+ }
12001334
12011335INCLUDE_ASM ("asm/maps/map0_s00/nonmatchings/map0_s00" , func_800DD0CC );
12021336
0 commit comments