Pause Cutscene Trigger

From Jak Speedruns Wiki
Jump to navigation Jump to search

A pause cutscene trigger, also known as a pause trigger or audio buffer, is a bug that allows Jak to initiate the audio stream of a queued "event" without triggering the full "event". The bug is most commonly used on the second to last mirror in Forbidden Jungle to trigger the fisherman cutscene audio stream early, but it can be performed with any streamed audio file.

It was patched in the OpenGOAL PC port of the game by Dass because it would cause occasional crashes. "The console version does not crash because the PS2 IOP can handle null derefs."

Technical

In order to prevent freezes when the game wants to start any streamed file, actors that want to use any sort of streamed data will attempt to put themselves in the stream loader's queue, which sorts streams based on priority (3 streams, lower values first). 99% of the time, priority is set to the distance to the actor that wants to queue up a stream, which means closer actors get put higher on the list, or a negative value if it's something that's already playing (which guarantees a higher priority as distances cannot be negative). The stream at the top of the list that's not already playing (the preload stream) will then be sent to OVERLORD as the one that should be queued up and prepared for loading.

However, because OVERLORD kinda sucks, when a stream finishes playing the GOAL thread will not be aware of this before OVERLORD, so if you (un)pause on the frame that it ends, it will end up sending an "unpause" message to OVERLORD despite there being nothing to unpause. This causes whatever the game is about to queue up next to be the stream that receives that message instead (as queued up streams are effectively no different to ones that are playing, they're paused by default). So, the queued up stream starts playing and causes audio to start playing unexpectedly (for streams that have audio).

Now, when you, for example, go to the NPC that the audio belongs to, the game engine syncs up the cutscenes by using the information from OVERLORD about where in the stream playback we are. So, the cutscene just jumps to whatever the audio is at and things resume as normal.

- Dass

Demonstrations

Discovery

Glitches, Bugs, Exploits, and Secrets
Jak and Daxter: The Precursor Legacy Audio Pause GlitchBoat PauseBridge BlastCheat ModeDark GlitchDebug ModeDeveloper PicturesDupe StateFlut Flut EscapeGame CrashGhost GlitchHard FishIdle DeloadLine GlitchMoon WalkOrb Duplication GlitchPause BufferPause Cutscene TriggerPunch GlitchStatue GlitchTexture CorruptionVoid OutWalking While TalkingZombie GlitchZoomer Escape
Jak II Cheat ModeDebug ModeDeveloper PicturesGame CrashGhost TownInvisibility GlitchInvulnerability GlitchLine GlitchOrb Duplication GlitchPause BufferPeacemaker StackingPunch GlitchStadium BugStatue GlitchZombie Glitch
Jak 3 Cheat ModeDebug ModeDeveloper PicturesGame CrashInvisibility GlitchInvulnerability GlitchLine GlitchOrb Duplication GlitchPeacemaker StackingPunch GlitchStatue GlitchZombie Glitch
Jak X: Combat Racing Debug ModeLine Glitch
Daxter Dream OrbPalace Vase OrbTeleporter Menu Storage
Jak and Daxter: The Lost Frontier Easter EggsScene Player Skip