Pause Cutscene Trigger
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 theactor
that wants to queue up a stream, which means closeractors
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 toOVERLORD
as the one that should be queued up and prepared for loading.However, because
OVERLORD
kinda sucks, when a stream finishes playing theGOAL
thread will not be aware of this beforeOVERLORD
, so if you (un)pause on the frame that it ends, it will end up sending an "unpause" message toOVERLORD
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