STREAMED AUDIO
The disc carries 1158 streamed tracks — monkey-phone calls,
cutscene voice-over, minigame speech and music — 341 MB of
sound/stream data. The first visit starts extraction
automatically when this tab opens; files stay in private browser storage.
SEQUENCED SOUND EFFECTS
The disc carries 101 embedded sound banks: 2,699 assembled
requests built from shared PS-ADPCM waveforms, positional programs,
and the game's 480 Hz seseq bytecode. The first
visit extracts the 20 MB bank set automatically when this tab
opens, into private browser storage.
FMV ASSETS
DERIVATIVES
IMAGES & SPRITE SHEETS
Select an image or sprite sheet.
IMAGE & SPRITE ARCHIVE
Scan every TIM2 texture stored directly in DATA.BIN and
inside its compressed PCK packages. Source textures stay in private
browser storage; previews and PNG exports are decoded locally.
MODELS & ANIMATION
Select a model, animation, or collision mesh.
DECODING I3D…
BUILD THE 3D ARCHIVE
Scan every I3D model, skeletal animation, and collision mesh in
DATA.BIN. Models are rendered locally with their TIM2 textures,
skinning, and compatible package animations. Nothing leaves this browser.
AUDIO PLAYBACK IN ASSET LAB
Press H or ESC to closeThe audio engine
Asset Lab reimplements the game's PS2 sound driver. It decodes streaming ADPCM, runs the SPU2 envelopes and gaussian resampler, applies the driver's integer volume and pan math, and reproduces the hardware reverb network. The browser reads the banks, sequences, and tables from your own disc, including tables stored in the game's IRX modules. Playback runs on the SPU2's 48000 Hz clock.
Sound-effect requests (SE tab)
Each sound-effect bank has a two-level sequence table. Expand a bank to see its outer bank and inner request coordinates. Loading a request runs its complete bytecode through the same 48-voice synth used for BGM. VOL is the value supplied by the gameplay caller before positional attenuation. Asset Lab has no scene distance to apply, so the same effect may sound quieter during the game.
Event score and source audio
The event score lists commands, not decoded samples. A short score can start a looped ADPCM sample or SPU2 noise voice that keeps playing until its sustain envelope reaches silence. The source data is still looped even if the event stream never jumps. Some envelopes are extremely slow: Arabian requests 25:1 and 28:0 run for about 39.8 hours, which is effectively continuous during normal play.
STREAM JUMP is different. It repeats the request
bytecode and is the only kind of loop that wraps the transport bar.
The L key controls an infinite stream jump; it does not stop a sample
from following its own loop points. When only the source loops, the
transport reaches the end of the event track and stays there while
the sound continues. You can still seek within the event score.
Event markers
1 marks a one-shot sample, L a looped
sample, N an SPU2 noise source, and R a tone
sent to reverb. An open STOP Pnn Knn marker is a
velocity-zero command that stops a matching live program and key; it
does not start a sound. LFO DEPTH, LFO RATE, VELOCITY, PAN, and GLIDE
are commands from the authored bytecode. Amber marks long-running
loops and noise. When a source runs longer than a useful export,
choose an explicit 10, 30, or 60 second limit.
Music volume (VOL NN AUTH, keys - = A)
The driver starts with song volume 127, but the game does not play
its music that loud. Every cue calculates
songvol = trunc(127 × volume_scale × options_slider × dolby).
The per-song volume_scale comes from the game's BGM
database and ranges from 0.28 to 0.56. Sony set it separately for each
song. At 127, dense songs overdrive
the 16-bit mix bus. At the authored levels, only occasional transients
clip, just as they do on the console. Use - and = to adjust the value,
then A to restore the authored setting.
Music ducking (key D)
The game lowers music to 70 percent during cutscenes and monkey-phone calls. It fades down over half a second and returns over two seconds. The game advances this linear ramp once per frame and sends each new volume to the driver. It keeps separate groups for cutscenes and phone calls, but the groups use the same settings and never overlap during play. Asset Lab uses one toggle for both. While it is active, the VOL dial follows the game's cue-volume layer at the authored scale. The -, =, and A keys return to manual volume.
Timing (key T)
The console runs its sequencers from the 60 Hz sound-thread callback. Events due during one callback fire together on a 16.7 ms grid. Sound-effect bytecode uses 480 ticks per second, so each console callback spans eight ticks. EXACT plays events at their authored 480 Hz positions and is the default for listening. TICK reproduces the console's callback bursts and is the useful setting for capture comparisons.
Music loops (key L)
MIDI CC99 values 20 and 30 mark the loop start and end. The game's sequence walker consumes them before they reach the sound driver. The console repeats music indefinitely. Sixty-four songs have one marker pair; the four Genie Dancer jingles are meant to play once. The export menu can repeat the loop body any number of times.
Voice slots (the 48-cell grid)
The SPU2 has 48 hardware voices shared by music and sound effects. The driver assigns them round-robin and never steals a voice that is already playing. If every slot is busy, it drops the new note. A voice becomes free only on a 60 Hz tick after its envelope falls below 2. The busiest music in the game reaches 31 voices with exact timing and 33 with tick timing, so no music note is dropped.
Live source loops (SE tab)
A request can repeat its 480 Hz bytecode while each hardware
voice follows its own ADPCM loop and ADSR envelope. The live rows read
decoder state rather than estimating from elapsed time. At a loop
seam, the source marker returns to the embedded loop start and the
seam count rises, but the envelope continues without restarting.
These rows are monitors, not seek controls. The request transport and
STREAM JUMP remain separate request-level coordinates.
Reverb (keys R , .)
The game selects the SPU2's STUDIO_C reverb preset at depth 30 during boot and never changes it. Only flagged tones enter the wet bus, but they remain in the dry mix because reverb is a send. The network runs at 24 kHz behind the hardware's 39-tap half-band filter. Asset Lab's depth control is only for comparison; the game itself never moves it.
Gaussian and bright resampling (key G)
The SPU2 resamples each voice with a four-tap gaussian kernel. It sounds darker than a modern resampler and can produce audible aliasing when a note plays below its root pitch. That grit is part of the console's sound. BRIGHT uses a Catmull-Rom kernel with cleaner treble, but it does not match the hardware. Authored exports always use gaussian resampling.
Clipping and driver quirks
The chip adds voices on a saturating 16-bit bus, so dense passages can crunch on the real hardware. Authored volumes reduce this to rare transient clipping. The CLIP counter and red waveform columns mark every saturated sample.
Velocity is linear because the banks use an identity velocity curve. Pan is not constant power, so a centered tone is about 2.5 dB louder than one panned fully left or right. Both behaviors come from the driver and are reproduced as written.