This release is mostly about the Xbox 360 XBLA version. Where v3.3.3 could
draw the release's models and their own textures, this one draws the whole
release — every texture in the game, its font, its explosion, its logo —
and puts all of it behind one key. Alongside that: model packs, a one-row
asset dump, and a list of fixes, most of them from reports.
Nothing here is on unless you turn it on. A fresh pd.ini is still stock
Perfect Dark.
The XBLA release
Everything below lives on the Xbox 360 (XBLA) page in Extended Options,
and needs your own copy of the release dropped in xbla/ (the archive, the
package, or a folder holding either).
Enable Textures is now the whole of the release's art. It used to mean the
meshes' own texture records alone; the other 3503 — the ones that carry one of
the game's own texture numbers — could only reach the game by pressing the
convert button, waiting a minute and spending 600MB on a pack. Now the switch
serves them straight out of the package as the renderer asks, byte for byte the
picture the conversion would have written. A texture pack you have selected
still outranks it texture by texture, so painting over one texture does not
mean giving up the rest.
The page's "Enlarged Textures Only" row is gone with it — that was a judgement
about art rather than about the port, and it made the page disagree with itself
about what the release's art is. The button below now reads Make Into Texture
Pack, which is what it does.
Enable Font sets the game's text in the release's own typeface. Both are
Handel Gothic; the 2010 version rendered it from the outline at five sizes
instead of as 16-texel bitmaps, and those glyphs are in the package. Every
measurement is still the ROM's — the widths, the baseline, the kerning table —
so nothing reflows and a dialog that fitted before still fits.
Enable Explosions puts the release's own 48-frame fireball where the ROM's
puff was. 4J never upscaled the ROM's explosion, because their renderer drew an
animation of its own; this draws fourteen of its frames at the game's own size,
tint and opacity, with the ROM's colour ramp left in place — that ramp is what
keeps an explosion part of the scene rather than a flash over it.
The release's logo is now the banner of the page that turns its art on.
F6 switches the whole release, not just the meshes. There are five parts now
— meshes, textures, rooms, font, explosion — and seeing the release against the
ROM used to mean leaving the level to tick four more boxes. One key moves all
five together; the page is still where a mixed state is made. Your pd.ini
binding is unchanged.
A texture pack can repaint the release's own art. A folder called xbla
inside a pack holds one image per record, named in hex, and reaches the models
and the rooms. To find out which record a surface is, stand in front of it and
press F7.
Twenty-five reused texture slots, up from six. 4J put their own pictures in
slots the ROM uses for something else, so with the release's art on, taxis drew
tree bark, police cars drew snowy cliffs and the hovercopter drew a sink. The
old list came from one run through Villa; the new one comes from a static sweep
of all 60 level files and the five props involved, with every candidate judged
by the picture rather than by the diff.
Model packs, and a dump of everything
Dump All Assets To Disk, one row on the Texture & Model Packs page
(--dump-assets headless, about 80 seconds): the ROM's 3502 textures, the
release's 5747 records, the 686 character, prop and gun models as OBJ+MTL, and
the release's 595 meshes the same way — each named for the model it belongs to.
F7 still dumps what is on screen, as Dump Drawn Textures.
Model packs replace a model with an OBJ:
model-packs/<pack>/n64/<name>.obj for the game's own, xbla/<name>.obj for
the release's mesh. Pick one from the dropdown on the same page. It is live —
switching packs, switching them off and F9 to re-read an edited file all take
effect where you stand — a texture pack repaints a pack's mesh like the room
around it, and Mod.ModelPackPrefer settles which half draws where a model has
both.
Menus
Dab's Mod Options is five pages now — Player, Camera, Display, Missions,
Recording — swiped with Left and Right the way the Perfect Menu swipes to
Options. Eighty rows on one page was too many, and every key bind now sits on
the page of the feature it drives.
Clean Text Outlines is now Thin Text Outlines, which is what it picks: both
positions of the switch draw an outline, and the default one has a shape of its
own rather than the ROM's filled cell. The pd.ini key is unchanged.
Fixes
- Area 51 crash. Two reports, on v3.2.2 and v3.3.3, both the same
instruction: a head's hat/hair state was resolved against the last body to
wear that head rather than the one in front of you. Head model definitions are
shared between characters, which is what made it a crash and not a glitch. - The Randomizer no longer spawns you out of bounds. A pad was taken on
trust, and the game's ground search answers "no floor at all" with a number
that reads as a floor far below — 2% to 8% of a stage's pads were a death on
arrival. - No more soft locks in a sealed room. Guards could be dealt outside the
zone they were meant to fight in and could not reach you; the zone is now one
door deep and they are dealt into it. - A room won is a room to rest in. Full health and shield when the score
goes up, and no more guards until the next landing — a run was previously one
long life with no moment in it that was not under fire. Guards halved: six at
a time, six per ten seconds. - A Randomizer landing on a Stage Loader map froze the game on the loading
screen. A mod's map was being given the template arena's setup file, and a
99th pad over a 98-pad map unpacked a room number the collision walk then
followed forever. - Chicago's drainage ditch no longer scrolls its own pavement with the
release's level geometry on. The water animation was being handed vertices
from the wrong room block. - A mod's map draws its own art again with Enable Textures on. A texture
number only names a picture inside the copy of the game that numbered it, and
GoldenEye X ships 2104 textures at stock numbers — so its Complex came up
wearing Perfect Dark's wall panels, stretched over tiles cut for something
else. A maps-only mod also gets a texture-pack index of its own now. - The Ghost Trials leaderboard blob. A solid teal pane over the times,
which was the list's own overlay rectangle painted in the colour of the last
dropdown option drawn. - The XBLA font sits flush. Reported as "some letters are sitting higher" —
each glyph was being fitted into its own ink box, and a 16-texel bitmap
carries a row of its rasteriser's spill, so an 'A' came out a whole texel
taller than the 'H' beside it. One line is now fitted per font through all 94
characters at once. Also fixed from reports: ':' cut off at the top, the thin
'1', lowercase in the smallest font, and an outline that was too thick and
blocky. - Explosions were invisible with Enable Textures on — the ROM's puff as
much as the release's fireball. A small texture on the console shares its tile
with its own mip chain, and level 0 is not at the tile's origin; 400 of the
package's records were being decoded as their own mips with the picture
missing, and the explosion's colour ramp is one of them. A ramp multiplies, so
a near-empty one took the whole explosion off the screen. If you converted a
PD XBLA texture pack before this, convert it again — it has 400 wrong files in
it. - Skinned XBLA meshes are posed with the bones that actually move them. The
file's fourth byte is not a count of influences; most vertices have fewer than
three and were writing a repeated bone.
Performance
Eighty simulants sharing one body made the game seek and inflate the same 20KB
of the release's package eighty-one times in a row. One kept slot collapses the
run, and the mesh pose does its bone work once at build time instead of per
frame: −12.6% instructions per frame with the meshes on, and about 30ms off a
level load.