[aquaria] Patch list for my repository
achurch+aquaria at achurch.org
Sat Aug 7 03:15:13 EDT 2010
For the interested, here's a (hopefully complete) list of the changes
I've made on my repository, http://achurch.org/cgi-bin/hg/aquaria/ as of
r455 (7e0c63fd50e2). The changes are mostly divided into independent
branches, with a couple of catch-all branches (miscellaneous-fixes and
gameplay-changes) for minor issues that don't warrant their own branch;
the "patched" branch contains a merge of all my changes committed to
date, and "psp" contains additional code specific to my unofficial PSP
As previously noted on this list, my repository is not a clone of the
one on icculus.org, so those using the icculus repository will need to
patch separately. I've tried to base as many of these changes as
possible directly off the icculus source, but in some cases I've had to
base them off earlier changes of mine, so check the commit notes before
merging. (Ryan, as I've noted before, I'll be happy to roll up patches
for anything you want to commit to icculus.)
As a side note, I'm currently writing a system interface layer for the
BBGE engine to simplify the task of porting to different systems, so I
may not be very active on the repository for a while.
achurch at achurch.org
******** General fixes/improvements ********
- Branch floating-point-fixes: Minimizes the use of double-precision
floating point calculations, and eliminates some unnecessary use of
floating point functions altogether.
- Branch lua-changes: Various changes to the Lua scripting interface,
notably reduction of memory use by only loading each script once per
map (instead of once per entity or node) and removal of unused or
obsolete script functions. NOTE that this branch breaks compatibility
with the scripts distributed with the commercial game (though since at
least one has already been broken on the icculus repository -- the
mantis issue -- I don't see this as a problem, and indeed I'd argue
that any breakage should be done sooner rather than later).
- Branch ogg-streaming: Adds support for Ogg Vorbis streaming to the
OpenAL sound implementation, avoiding the need to cache all the PCM
data in memory (saving 150-200MB, depending on the particular map).
- Branch psp-backport: This branch contains backports of platform-
agnostic code originally added for my PSP port. It was my intent
not to introduce any behavioral changes on this branch; most of the
changes are cleanup or optimizations of existing code, such as
reducing computational complexity or improving data locality.
However, there is one change (the use of OpenGL display lists for
rendering, in r328:81929abac7b3) which may reduce performance on
low-end graphics cards or software GL implementations; I've left
it in as it should be applicable to most modern hardware, but I'll
be considering this issue further. Also note that there are a few
fixes for bugs introduced on this branch, located in branch
- Branch use-huge-valf: Changes the search loops for "closest" searches
to use HUGE_VALF (a C constant for infinity) or the relevant range
limit as the initial distance value instead of using separate "found"
flag logic. Note that this change exposes a script bug, which has
been fixed on the "energy-temple-door-fix" branch.
******** Build-related issues (no effect on program behavior) ********
- Branch build-sceneeditor-fixes: Disables all code related to the
scene editor if it is disabled in the build, rather than leaving the
code in and only disabling the calls into it.
- Branch custom-build-id: Allows a custom version string to be set at
build time to be appended to the version displayed on the title screen.
- Branch move-external-libs: Moves all code from external libraries
into a separate "ExternalLibs" directory, for better separation of
internal and external code.
- Branch warning-cleanup: Cleans up some warning-generating code.
******** Fixes/improvements for specific problems ********
- Branch energy-temple-door-fix: Fixes an improper data type in a
script function call.
- Branch floating-jellyfish-fix: Fixes jellyfish getting stuck in
midair if they were bumped out of the water (reported on the Aquaria
- Branch food-drop-action: Adds a "Food Drop" action to the action list
so that keyboard/joystick users have a way to drop food.
- Branch grid-render-optimization: Inverts the rendering loop for the
obstruction grid to avoid cache thrashing.
- Branch huggy-crash-fix: Fixes a crash which could occur when changing
to fish form with huggies attached.
- Branch intro-double-robj-add-fix: Fixes a typo which led to the same
RenderObject being added twice during the intro sequence (this was
exposed as a crash by changes to the rendering logic).
- Branch joystick-swimming-fix: Tweaks joystick input handling to give
finer-grained control over swimming speed.
- Branch last-battle-stuck-in-floor-fix: Fixes a rare bug where Naija
could get stuck in the floor during the second stage of the last
battle. (As a side note, I've tried to avoid specific story or game
content references in commit comments such as these, to minimize
spoilers to anyone skimming the repository. If you get deep enough
into the code, everything is spoiled anyway, of course -- but I can
at least try to minimize my own impact.)
- Branch mapvis-bitmap: Changes the visited-area logic for the world
map to use a bitmap instead of a list, which both reduces memory usage
and fixes a bug that caused save files to grow indefinitely, taking
longer to load each time the game was saved. The branch also includes
an alternate, compact (base64-encoded binary) save format, but this is
disabled by default to maintain save file compatibility with the
commercial build, except on the PSP where it's enabled to save memory
and processing time. (Builds with this code can _read_ either format
- Branch more-joystick-buttons: Allows up to 17 joystick buttons to be
recognized and used (thus enabling the use of all buttons on a PS3
- Branch save-menu-fixes: Adjusts save menu behavior to not display
"Game Saved" until after the game has actually been saved, and run a
bit more quickly overall. (As a side effect, if you save as soon as
you find a new save crystal, the world map token may appear in the
screenshot; it's my intention to fix that at some point.) Also saves
the number of the last save slot used, and starts the cursor on that
slot when using keyboard or joystick control.
- Branch smooth-loading-juice: Makes the "loading juice" animation on
the startup screen run more smoothly.
- Branch song-menu-joystick-fix: Allows songs on the menu to be checked
under keyboard or joystick control (but Dustin Voss has a smarter
- Branch spirit-form-fixes: Fixes two issues reported on the Aquaria
forums, (1) the inability to absorb shots after the firer of those
shots has died and (2) the possibility of getting stuck in the spirit
world by singing the spirit form song while changing areas.
- Branch water-surface-hi-res-glitch-fix: Fixes a glitch that corrupted
the water surface graphics on high-resolution screens (reported on the
- Branch world-map-scroll-fixes: Smooths out scrolling and zooming on
the world map, and allows the map to be scrolled with a joystick.
- Branch miscellaneous-fixes: Miscellaneous changes, as follows --
- r65 (2f1040865084): Fixes a bug in the FTGL library, which was
exposed as a crash by the change to loading a single copy of the
TrueType font (originally r36:3ad4a420d7be on the PSP branch,
later backported as r321:be791b9eac3e on branch psp-backport).
- r76 (086a96f919c8), r196 (3a8be6df2bbb): Fixes missing return
values in a few script functions (just for completeness; the values
aren't actually used).
- r78 (16f7ad12700a): Ensures that the "burst" animation (Naija
pushing with her legs) is played when bursting under keyboard or
- r82 (09acf115392c): Cleans up the Texture::read() and write()
methods (mainly for completeness -- they aren't used on the PC,
but the changes were needed for cleaner code on the PSP).
- r92 (3f12e67987fe): Replaces literal frame time constants with
the globally-defined FRAME_TIME.
- r97 (de5203bf00b6): Fixes David Gow's input grab patch so that a
second Ctrl+G properly regrabs input.
- r98 (eb9b749a74e0): Prevents the program from regrabbing input
after a resolution or fullscreen change if Ctrl+G has been pressed.
- r99 (d9673ae71eb9): Fixes a few uses of uninitialized fields
(though they were probably harmless).
- r105 (9a2c3fe3741f): Fixes a potential crash on exit.
- r111 (86ae2bc43cea) + r439 (274d91271cdb): Prevents the mouse
cursor from appearing when changing areas under keyboard or
joystick control. (There still seem to be some cases where the
cursor appears for an instant; I haven't isolated these yet.)
The second patch is a fix for a regression introduced by the first.
- r112 (6b5d95f6d124) was moved to the save-menu-fixes branch.
- r205 (fbe70ef8a157): Fixes the window title when the window is
- r248 (987ab7e3d3b3): Removes an incorrect (but harmless)
- r390 (bf24600ff299) + r393 (ca854c8d32ab): Frees all sound data
when shutting down (mainly for completeness). The second patch
corrects a typo in the first.
- r400 (4dd2e94b78dc): Fixes misnamed FrameBuffer methods.
- r437 (8f7a0c0ad90a): Fixes a script bug which caused the Li
beacon to be triggered even after Li has been found (reported on
the Aquaria forums).
- r438 (75f952e58eaf): Fixes "dancing dots" that can occur with
world map beacons at high zoom factors (reported as bug #4542 on
- r440 (35b08766e7b9), r441 (58cbbf61a487): Fixes various cases in
which opening the menu, world map, or help screen could crash the
game (reported on the Aquaria forums).
- r442 (94a15b0431a4): Fixes bound objects being teleported to
random locations when pulled out of the water (reported on the
Aquaria forums; a similar issue was reported as bug #4478 on
bugzilla.icculus.org, but I'm not sure whether it has the same
- r443 (c452c1fe7e2e): Fixes a bug causing shock jellyfish to zoom
around the map if pushed by Naija shortly before they perform a
shock (reported on the Aquaria forums).
- r444 (0ab8fdcecd6a): Fixes a bug causing the minimap to become
visible inside a RADARHIDE node in certain cases (reported on the
- r445 (87a662451894): Limits the rate at which splash effects are
played, to prevent sound overload when Naija swims along the
surface (reported on the Aquaria forums).
- r446 (db08659002de): Prevents the fourth form of the last boss
from spawning multiple times (reported on the Aquaria forums).
- r453 (35877a715d13): Prevents drowned monkeys from making a
"screech" sound effect when hit; also allow monkeys to be hit
during the drowning animation. (Belatedly, this should probably
have been filed on the gameplay-changes branch -- ah well.)
******** Gameplay changes ********
(changes which are not obviously bug fixes -- or which are bug
fixes but have a significant impact on gameplay -- and may not
be generally appropriate, but which I find make the game more
- Branch faster-cooking: Keeps ingredients in the cooking slots after
cooking (unless they run out), so a recipe can be cooked multiple
times by just clicking on "Cook" repeatedly. (There's currently a
cosmetic bug with this -- the "?" is not updated to the proper food
icon if you learn a recipe by cooking it.)
- Branch joystick-singing-fix: Changes the joystick input logic for
singing so that full input in any direction always starts a note, and
notes are detected by angle rather than absolute position.
- Branch minimap-changes: Several minimap-related changes, as follows --
- r262 (2d2b91b3168d) + r414 (ca9b3988433f): Minimap rendering
optimizations backported from the PSP port. (As a side effect,
this slightly changes the position of the minimap when the game
menu is open. The commit comment also talks about the world map
screen, but that part is incorrect -- I'd misremembered whether the
minimap moves to the top of the screen when the world map is open.)
The second patch is a fix for a bug in the first.
- r263 (b6a62e2afa90) + r278 (b418931182dd): Shrinks minimap icons
when they are far away, to let the player know what's nearby and
what isn't. The second patch is a fix for a bug in the first.
- r429 (dc26a736d887): Adjusts the positions of the orange and
purple pyramid markers above the minimap, depending on the minimap
display size. This is mostly a no-op on PCs (the positions may
shift by a pixel or two depending on screen size), but was added to
support the larger relative minimap size used on the PSP.
- Branch naija-stopping-fix: Allows Naija to continue gliding under
keyboard or joystick control instead of stopping as soon as the swim
keys/buttons are released.
- Branch world-map-visited-range-tweak: Marks "visited" areas on the
world map based on what's visible on the game screen, rather than only
the small region around Naija's current position.
- Branch gameplay-changes: Miscellaneous changes, as follows --
- r230 (4bc17103ca46): Smooths out the child's movement during the
"darkness" puzzle in the Sunken City.
- r231 (8bb7f50b96d2): Implements a camera shake when a green sea
dragon dies which was not executed due to an apparent script typo.
- r232 (b2a8062f85ee): Fixes an apparent typo in the Mergog battle
script, changing Naija's (incorrect?) "evil laugh" sound effect to
a "giggle" effect.
- r233 (5c5c150355d9): Fixes seahorse response logic for Naija's
singing, for a smoother ride. The significant gameplay change
here is that the acceleration previously varied depending on
direction, but is now the same in all directions.
- r234 (fc8ddeaa1e7a): Fixes an apparent script typo which
prevented the Sunken City boss's "rage" animation from playing.
This appears to me to be the correct behavior, but I've filed it
as a gameplay change since it may affect balance in the battle.
- r235 (bb73210d5bcd): Prevents the Mithalas boss from "stomping"
on the pit (thus appearing to step on empty water). Again, the
fixed behavior appears correct to me, but I've filed it as a
gameplay change due to the potential change in game balance.
- r236 (04428132be79): Finishes the partly-implemented logic for
Deep Crawleys to make their glows change color as Naija sings.
- r237 (413127f61888): Adjusts the healing effect of huggies so the
heal amount is independent of frame rate.
- r419 (556af5bf9385): Prevents pull plants in Naija's home from
- r420 (cd24ecfcd00c): Prevents Deep Crawleys from shrinking to
zero size before they die.
- r421 (7431e0dd5377): Prevents Li and the pet blaster from hitting
seahorses and other non-targets. (The behavior with respect to
seahorses in particular could be considered a bug, but the change
itself is game-wide and thus has the potential to break other parts
of the game; hence I've filed it as a gameplay change.)
More information about the aquaria