D160: env-gated diagnostics for the Dam level-end cutscene (GE_D160)

Dam exit should play a scripted cutscene (Bond off the dam / bungee) before
the MISSION COMPLETE report; on PC it cuts straight to the report while
progression still works (bossReturnTitleStage fires). Add GE_D160=1 trace
points to localise whether the cutscene AI runs:
 - bossReturnTitleStage entry (+ caller return addr)
 - bondviewSetCameraMode (mode, stage, g_IntroSwirl, intro anim idx, caller)
 - AI EndLevel/exit_level, CameraLookAtBondFromPad, CameraSwitch (tag lookup
   result: cdef ptr / TagIndex<0 / tag NOT FOUND)
No behaviour change (all #ifdef PORT, getenv-gated).
This commit is contained in:
James Dansereau committed 2026-08-31 12:09:45 -04:00
1 parent d439dfeaeb
commit fc844fb9b4
4 files changed
+38

No files matched your search

+22
View File
@@ -10051,6 +10051,11 @@ _AI_CMD(
_AI_CMD(
{
#ifdef PORT
if (getenv("GE_D160"))
osSyncPrintf("D160: AI EndLevel/exit_level cmd chr=%p cameraBufferToggle=%d\n",
(void *)ChrEntityp, (int)cameraBufferToggle);
#endif
if (cameraBufferToggle)
{
if (cameraFrameCounter2 == FALSE)
@@ -10172,6 +10177,10 @@ _AI_CMD(
g_CameraLookAtBondPad = (PadRecord *) &g_CurrentSetup.boundpads[getBoundPadNum(padnum)];
}
set_camera_mode(CAMERAMODE_POSEND);
#ifdef PORT
if (getenv("GE_D160"))
osSyncPrintf("D160: AI CameraLookAtBondFromPad -> POSEND\n");
#endif
Offset += CAT(CAT(AI_, CMDNAME), _LENGTH);
break;
})
@@ -10223,8 +10232,21 @@ _AI_CMD(
dword_CODE_bss_80079A18 = CharArrayTo16(ai->val,1);
dword_CODE_bss_80079A1C = CharArrayTo16(ai->val,3);
set_camera_mode(CAMERAMODE_POSEND);
#ifdef PORT
if (getenv("GE_D160"))
osSyncPrintf("D160: AI CameraSwitch tag=%d cdef=%p -> POSEND\n",
(int)ai->val[0], (void *)cdef);
#endif
}
#ifdef PORT
else if (getenv("GE_D160"))
osSyncPrintf("D160: AI CameraSwitch tag=%d TagIndex<0 (no cutscene)\n", (int)ai->val[0]);
#endif
}
#ifdef PORT
else if (getenv("GE_D160"))
osSyncPrintf("D160: AI CameraSwitch tag=%d NOT FOUND\n", (int)ai->val[0]);
#endif
Offset += CAT(CAT(AI_, CMDNAME), _LENGTH);
break;
})
+5
View File
@@ -741,6 +741,11 @@ void bossReturnTitleStage(void) {
objectivestatusDisableStatusDisplay();
#endif
#ifdef PORT
if (getenv("GE_D160")) {
osSyncPrintf("D160: bossReturnTitleStage ENTER stage=%d allComplete=%d caller=%p\n",
(int)bossGetStageNum(), (int)objectiveIsAllComplete(),
__builtin_return_address(0));
}
if (getenv("GE_SAVELOG")) {
extern int g_savelogObjOnce;
g_savelogObjOnce = 1;
+8
View File
@@ -787,6 +787,14 @@ void bondviewSetCameraMode(s32 arg0)
g_CameraMode = arg0;
g_CameraAfterCinema = 0;
#ifdef PORT
if (getenv("GE_D160")) {
osSyncPrintf("D160: bondviewSetCameraMode(%d) stage=%d IntroSwirl=%d introAnimIdx=%d caller=%p\n",
(int)arg0, (int)bossGetStageNum(), (int)g_IntroSwirl,
(int)g_IntroAnimationIndex, __builtin_return_address(0));
}
#endif
if (g_CameraMode == CAMERAMODE_INTRO)
{
if ((ptr_random06cam_entry != NULL) && (get_recording_ramrom_flag() == 0) && (get_is_ramrom_flag() == 0))
+3
View File
@@ -33,6 +33,9 @@
#include <random.h>
#include <snd.h>
#include <ultra64.h>
#ifdef PORT
#include <stdlib.h>
#endif
// hack? used to match as called with 2 args, but decompiled code takes 1
extern s32 objectiveGetStatus_WEAK(s32 objectiveNum, s32);