[aquaria] Patch list for my repository

Andrew Church 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.

  --Andrew Church
    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
  without problems.)

- 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
  Aquaria forums).

- 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
     joystick control.

   - 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)
     glRotate() call.

   - 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
     Aquaria forums).

   - 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
     spawning enemies.

   - 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 mailing list