Skip to content

Commit 9d1f7d2

Browse files
authored
MAP0_S00: func_800DCF38, func_800DCDA8, func_800DAEFC (#403)
* MAP0_S00: match func_800DAEFC * MAP0_S00: match func_800DCDA8 * MAP0_S00: match func_800DCF38
1 parent 1a1ab05 commit 9d1f7d2

2 files changed

Lines changed: 142 additions & 3 deletions

File tree

include/maps/map0/map0_s00.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ extern u8 D_800DFAC2;
4949

5050
extern u8 g_MapMsgSoundIdx;
5151

52+
extern s32 D_800DFAC4;
53+
54+
extern VECTOR3 D_800DFAE0[]; // } TODO might be one big table.
55+
extern VECTOR3 D_800DFB28[3]; // }
56+
5257
void func_800CBFB0(void);
5358

5459
void func_800D0124();

src/maps/map0_s00/map0_s00.c

Lines changed: 137 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

811874
INCLUDE_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

12011335
INCLUDE_ASM("asm/maps/map0_s00/nonmatchings/map0_s00", func_800DD0CC);
12021336

0 commit comments

Comments
 (0)