Skip to content

Commit 73a76a3

Browse files
authored
MAP0_S00: match func_800DC33C (#395)
* MAP0_S00: match func_800DC33C * small cleanup
1 parent 7b248e0 commit 73a76a3

2 files changed

Lines changed: 103 additions & 1 deletion

File tree

include/maps/map0/map0_s00.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ extern s8 D_800DD593;
2222

2323
extern s8 D_800DD594;
2424

25+
extern s32 D_800DFAD0;
26+
2527
extern s8 D_800E34EC;
2628

2729
extern s8 D_800E39AC;

src/maps/map0_s00/map0_s00.c

Lines changed: 101 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,107 @@ INCLUDE_ASM("asm/maps/map0_s00/nonmatchings/map0_s00", func_800DBF08);
450450

451451
INCLUDE_ASM("asm/maps/map0_s00/nonmatchings/map0_s00", func_800DC1E8);
452452

453-
INCLUDE_ASM("asm/maps/map0_s00/nonmatchings/map0_s00", func_800DC33C);
453+
void func_800DC33C(s32 eventFlags0)
454+
{
455+
VECTOR3 sp18;
456+
s16 temp_a0;
457+
s16 var_s1;
458+
s32 var_v1;
459+
s32 temp_a0_2;
460+
s32 temp_v0;
461+
s32 temp_v0_2;
462+
s32 temp_v1;
463+
s32 var_a0;
464+
s32 var_a2;
465+
s32 var_v1_2;
466+
s_Savegame* temp_s0;
467+
468+
temp_s0 = g_SavegamePtr;
469+
if (!(temp_s0->eventFlags_168[0] & 0x20))
470+
{
471+
func_800865FC(1, 1, 0, 0x800, -0x3E000, 0x6C000);
472+
sharedFunc_800D88AC_0_s00(g_SysWork.npcs_1A0);
473+
temp_s0->eventFlags_168[0] |= 0x20;
474+
}
475+
476+
vwGetViewPosition(&sp18);
477+
temp_v0 = (g_SysWork.npcs_1A0[0].position_18.vx - sp18.vx) >> 6;
478+
temp_v0_2 = (g_SysWork.npcs_1A0[0].position_18.vz - sp18.vz) >> 6;
479+
480+
if (((SquareRoot0((temp_v0 * temp_v0) + (temp_v0_2 * temp_v0_2)) << 6) <= 0x10800) &&
481+
(g_SysWork.npcs_1A0[0].position_18.vx >= FP_METER(-58.0f)))
482+
{
483+
484+
if (!(g_SysWork.flags_22A4 & 0x80))
485+
{
486+
if (!Vw_AabbVisibleInScreenCheck(
487+
g_SysWork.npcs_1A0[0].position_18.vx - Q12(1.0f),
488+
g_SysWork.npcs_1A0[0].position_18.vx + Q12(1.0f),
489+
g_SysWork.npcs_1A0[0].position_18.vy - Q12(1.5f),
490+
g_SysWork.npcs_1A0[0].position_18.vy,
491+
g_SysWork.npcs_1A0[0].position_18.vz - Q12(1.0f),
492+
g_SysWork.npcs_1A0[0].position_18.vz + Q12(1.0f)))
493+
{
494+
block7:
495+
g_SysWork.npcs_1A0[0].position_18.vz = 1;
496+
g_SysWork.npcs_1A0[0].position_18.vx = 1;
497+
g_SysWork.npcs_1A0[0].properties_E4.player.headingAngle_124 = 0;
498+
sharedFunc_800D88C0_0_s00(g_SysWork.npcs_1A0, 0);
499+
g_SavegamePtr->eventFlags_168[0] |= 0x40;
500+
return;
501+
}
502+
}
503+
504+
var_s1 = func_8005BF38(
505+
(ratan2(g_SysWork.npcs_1A0[0].position_18.vx - g_SysWork.player_4C.chara_0.position_18.vx,
506+
g_SysWork.npcs_1A0[0].position_18.vz - g_SysWork.player_4C.chara_0.position_18.vz) - g_SysWork.player_4C.chara_0.headingAngle_3C));
507+
508+
temp_a0 = func_8005BF38((
509+
ratan2(FP_METER(-62.0f) - g_SysWork.player_4C.chara_0.position_18.vx,
510+
Q12(106.0f) - g_SysWork.player_4C.chara_0.position_18.vz) -
511+
g_SysWork.player_4C.chara_0.headingAngle_3C));
512+
513+
514+
if (ABS(var_s1) > ABS(temp_a0))
515+
{
516+
var_s1 = temp_a0;
517+
}
518+
var_a0 = var_s1 << 16;
519+
520+
temp_a0_2 = (g_SysWork.player_4C.chara_0.moveSpeed_38 * Math_Cos(var_a0 >> 0x10) * 0x10) >> 0x10;
521+
522+
if (temp_a0_2 > FP_METER(1.8))
523+
{
524+
D_800DFAD0 = temp_a0_2 + Q12(0.9f);
525+
}
526+
else if (D_800DFAD0 > FP_METER(1.8))
527+
{
528+
var_a2 = FP_METER(1.8);
529+
temp_v1 = D_800DFAD0 - FP_MULTIPLY_FLOAT_PRECISE(g_DeltaTime0, 0.5f, 12);
530+
if (temp_v1 >= FP_METER(1.8))
531+
{
532+
var_a2 = temp_v1;
533+
}
534+
D_800DFAD0 = var_a2;
535+
}
536+
else
537+
{
538+
var_v1_2 = D_800DFAD0 + FP_MULTIPLY_FLOAT_PRECISE(g_DeltaTime0, 0.5f, 12);
539+
540+
if (var_v1_2 > FP_METER(1.8))
541+
{
542+
var_v1_2 = FP_METER(1.8);
543+
}
544+
D_800DFAD0 = var_v1_2;
545+
}
546+
547+
g_SysWork.npcs_1A0[0].properties_E4.player.headingAngle_124 = D_800DFAD0;
548+
func_8008677C(g_SysWork.npcs_1A0, 2, 1);
549+
return;
550+
}
551+
552+
goto block7;
553+
}
454554

455555
INCLUDE_ASM("asm/maps/map0_s00/nonmatchings/map0_s00", func_800DC694);
456556

0 commit comments

Comments
 (0)