Skip to content

Commit 79f8d37

Browse files
authored
MAP0_S00: match func_800DB26C (#407)
* MAP0_S00: match func_800DB26C * clean savegame flags and floats * MAP0_S00: match func_800D94F8
1 parent 5500608 commit 79f8d37

3 files changed

Lines changed: 88 additions & 2 deletions

File tree

include/event_flags.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ typedef enum _EventFlag
2020
EventFlag_16 = 16,
2121
EventFlag_17 = 17,
2222
EventFlag_18 = 18,
23+
24+
EventFlag_20 = 20,
2325

26+
EventFlag_23 = 23,
2427
EventFlag_24 = 24,
2528
EventFlag_25 = 25,
2629

include/maps/map0/map0_s00.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ extern s32 D_800DFB5C;
7676

7777
extern u8 D_800DFB60;
7878

79+
extern u8 D_800DF2F8;
80+
81+
extern s16 D_800DF300[];
82+
7983
void func_800CBFB0(void);
8084

8185
void func_800D0124();

src/maps/map0_s00/map0_s00.c

Lines changed: 81 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,38 @@ void Ai_Cheryl_Init(s_SubCharacter* chara) // 0x800D8888
339339

340340
#include "maps/shared/sharedFunc_800D92AC_0_s00.h" // 0x800D92AC
341341

342-
INCLUDE_ASM("asm/maps/map0_s00/nonmatchings/map0_s00", func_800D94F8);
342+
void func_800D94F8(void)
343+
{
344+
s32 i;
345+
s32 flags1;
346+
s32 flags0;
347+
u16 saveFlag;
348+
u16* var_a2;
349+
u32 saveByte;
350+
351+
// @hack not used directly but gets merged with the Savegame_EventFlagGet macros bellow.
352+
saveByte = g_SavegamePtr->eventFlags_168[0];
353+
flags1 = 0x199;
354+
flags0 = 0x100;
355+
356+
if ((g_SysWork.player_4C.chara_0.health_B0 > 0) && (!(Savegame_EventFlagGet(23) && !Savegame_EventFlagGet(20))))
357+
{
358+
for (i=1; i < 7; i++)
359+
{
360+
saveFlag = D_800DF300[i];
361+
if (Savegame_EventFlagGet((s16)saveFlag))
362+
{
363+
flags0 |= 1 << i;
364+
}
365+
}
366+
}
367+
else
368+
{
369+
Savegame_EventFlagClear(EventFlag_20);
370+
flags1 = 0x4CC;
371+
}
372+
func_80035F4C(flags0, flags1, &D_800DF2F8);
373+
}
343374

344375
/** Debug function? */
345376
void Gfx_LoadingScreen_StageString() // 0x800D95D4
@@ -930,7 +961,55 @@ void func_800DAEFC(void) // 0x800DAEFC
930961
}
931962
}
932963

933-
INCLUDE_ASM("asm/maps/map0_s00/nonmatchings/map0_s00", func_800DB26C);
964+
void func_800DB26C(void)
965+
{
966+
if (g_SysWork.sysStateStep_C[0] == 0)
967+
{
968+
Camera_TranslationSet(NULL, Q12(-62.0f), Q12(-2.24f), Q12(117.0f), 0, 0, 0, 0, 1);
969+
Camera_RotationSet(NULL, Q12(-62.0f), Q12(-0.7f), Q12(104.0f), 0, 0, 0, 0, true);
970+
func_800868DC(2);
971+
}
972+
switch (g_SysWork.sysStateStep_C[0]) {
973+
case 0:
974+
sharedFunc_800D20E4_0_s00();
975+
func_8008616C(0, true, 2, 0, false);
976+
func_800865FC(1, 0, 0, Q12(-0.25f), Q12(-60.5f), g_SysWork.player_4C.chara_0.position_18.vz);
977+
g_SysWork.npcs_1A0[0].position_18.vx = Q12(-62.0f);
978+
g_SysWork.npcs_1A0[0].rotation_24.vy = Q12(0.5f);
979+
g_SysWork.npcs_1A0[0].position_18.vz = g_SysWork.player_4C.chara_0.position_18.vz - Q12(9.0f);
980+
SysWork_StateStepIncrement();
981+
982+
/* fallthrough */
983+
case 1:
984+
func_80085DF0();
985+
return;
986+
case 2:
987+
func_800866D4(0x36, 1, 0);
988+
return;
989+
case 3:
990+
g_DeltaTime0 >>= 1;
991+
func_800865FC(0, 0, 0, Q12(-0.375f), 0, 0);
992+
func_80085E6C(Q12(0.8f), false);
993+
return;
994+
case 4:
995+
g_DeltaTime0 >>= 1;
996+
Savegame_EventFlagSet(EventFlag_8);
997+
func_800866D4(0x36, 1, 0);
998+
return;
999+
case 5:
1000+
g_DeltaTime0 >>= 1;
1001+
func_80085E6C(Q12(1.0f), false);
1002+
return;
1003+
default:
1004+
func_8008616C(0, false, 2, 0, false);
1005+
Savegame_EventFlagSet(EventFlag_7);
1006+
func_800865FC(1, 1, 0, Q12(0.5f), Q12(-62.0f), Q12(49.0f));
1007+
sharedFunc_800D2244_0_s00(0);
1008+
SysWork_StateSetNext(SysState_Gameplay);
1009+
1010+
return;
1011+
}
1012+
}
9341013

9351014
void func_800DB514(void)
9361015
{

0 commit comments

Comments
 (0)