Skip to content

Commit 87e3e77

Browse files
committed
MAP1_S03: func_800DABC4
1 parent d2e2bb0 commit 87e3e77

4 files changed

Lines changed: 113 additions & 2 deletions

File tree

include/event_flags.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ typedef enum _EventFlag
110110

111111
EventFlag_M1S02_PickupRubberBall = 110,
112112
EventFlag_M1S02_UsedRubberBall = 111,
113+
EventFlag_112 = 112,
114+
EventFlag_M1S03_KeyDownTheDrain = 113,
113115
EventFlag_M1S02_PickupClassroomKey = 114,
114116
EventFlag_115 = 115,
115117
EventFlag_M1S03_MonsterLurksBookRead = 116,

include/game.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1025,7 +1025,8 @@ typedef struct _EventParam
10251025
{
10261026
u8 unk_0[2];
10271027
s16 eventFlagId_2;
1028-
u8 unk_4[1];
1028+
u8 unk_4_0: 4;
1029+
u8 unk_4_4: 4;
10291030
u8 field_5; // Index into `D_800E839C`. Related pickup item SFX.
10301031
u8 unk_6[2];
10311032
u32 triggerType_8_0 : 5;

include/maps/map1/map1_s03.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,6 @@ void func_800DC0F8(void);
7979

8080
void func_800DBEC8(void);
8181

82+
void func_800DABC4(void);
83+
8284
#endif

src/maps/map1_s03/map1_s03.c

Lines changed: 107 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,113 @@ void func_800DA950(void) // 0x800DA950
365365

366366
INCLUDE_ASM("asm/maps/map1_s03/nonmatchings/map1_s03", func_800DAA28);
367367

368-
INCLUDE_ASM("asm/maps/map1_s03/nonmatchings/map1_s03", func_800DABC4);
368+
void func_800DABC4(void)
369+
{
370+
switch (g_SysWork.sysStateStep_C[0])
371+
{
372+
case 0:
373+
sharedFunc_800D20E4_0_s00();
374+
if (g_MapEventParam->field_5 == 17 || g_MapEventParam->field_5 == 18)
375+
{
376+
if (Savegame_EventFlagGet(EventFlag_M1S03_KeyDownTheDrain))
377+
{
378+
func_800862F8(false, FILE_TIM_HOLEKEY1_TIM, false);
379+
}
380+
else
381+
{
382+
func_800862F8(false, FILE_TIM_HOLEKEY0_TIM, false);
383+
Savegame_EventFlagSet(EventFlag_112);
384+
}
385+
}
386+
else if (g_MapEventParam->field_5 == 19 || g_MapEventParam->field_5 == 20)
387+
{
388+
if ((g_MapEventParam->unk_4_4 == 3) || Savegame_EventFlagGet(EventFlag_M1S02_UsedRubberBall))
389+
{
390+
func_800862F8(false, FILE_TIM_BALLHOLE_TIM, false);
391+
}
392+
else
393+
{
394+
func_800862F8(false, FILE_TIM_BALLHOL1_TIM, false);
395+
}
396+
}
397+
SysWork_StateStepIncrement(0);
398+
/* fallthrough */
399+
case 1:
400+
func_80085DF0();
401+
return;
402+
case 2:
403+
func_80086C58(&g_SysWork.player_4C.chara_0, 59);
404+
return;
405+
case 3:
406+
SysWork_StateStepIncrementAfterFade(false, true, 0, 0, false);
407+
SysWork_StateStepIncrement(0);
408+
/* fallthrough */
409+
case 4:
410+
func_800862F8(true, 0, false);
411+
return;
412+
case 5:
413+
SysWork_StateStepIncrementAfterFade(1, true, 0, 0, false);
414+
return;
415+
case 6:
416+
func_800862F8(2, 0, false);
417+
SysWork_StateStepIncrementAfterFade(2, false, 0, 0, false);
418+
return;
419+
case 7:
420+
func_800862F8(2, 0, false);
421+
if (g_MapEventParam->field_5 == 19 || g_MapEventParam->field_5 == 20)
422+
{
423+
if (g_MapEventParam->unk_4_4 == 3)
424+
{
425+
Savegame_EventFlagSet(EventFlag_M1S02_UsedRubberBall);
426+
MapMsg_DisplayAndHandleSelection(false, 36, false, false, 0, false);
427+
}
428+
else
429+
{
430+
if (Savegame_EventFlagGet(EventFlag_M1S02_UsedRubberBall))
431+
{
432+
MapMsg_DisplayAndHandleSelection(false, 34, false, false, 0, false); // "The ball is stuffed inside the pipe."
433+
}
434+
else
435+
{
436+
MapMsg_DisplayAndHandleSelection(false, 35, false, false, 0, false); // "Nothing special."
437+
}
438+
}
439+
}
440+
else
441+
{
442+
if (Savegame_EventFlagGet(EventFlag_M1S02_PickupClassroomKey))
443+
{
444+
MapMsg_DisplayAndHandleSelection(false, 35, false, false, 0, false); // "Nothing special."
445+
}
446+
else
447+
{
448+
if (!Savegame_EventFlagGet(EventFlag_M1S03_KeyDownTheDrain))
449+
{
450+
MapMsg_DisplayAndHandleSelection(false, 32, false, false, 0, false); // "There's a hanging key."
451+
}
452+
else
453+
{
454+
MapMsg_DisplayAndHandleSelection(false, 33, false, false, 0, false); // "The key went down the drain."
455+
}
456+
}
457+
}
458+
return;
459+
case 8:
460+
func_800862F8(2, 0, false);
461+
SysWork_StateStepIncrementAfterFade(2, true, 0, 0, false);
462+
return;
463+
case 9:
464+
SysWork_StateStepIncrementAfterFade(2, false, 0, 0, false);
465+
return;
466+
case 10:
467+
func_80086C58(&g_SysWork.player_4C.chara_0, 60);
468+
return;
469+
default:
470+
sharedFunc_800D2244_0_s00(false);
471+
SysWork_StateSetNext(SysState_Gameplay);
472+
return;
473+
}
474+
}
369475

370476
INCLUDE_RODATA("asm/maps/map1_s03/nonmatchings/map1_s03", D_800CBAA4);
371477

0 commit comments

Comments
 (0)