Giter Site home page Giter Site logo

aquariaose / aquaria Goto Github PK

View Code? Open in Web Editor NEW
288.0 32.0 82.0 17.33 MB

Aquaria open source, forked from icculus.org due to inactivity. Has many enhancements compared to the original version.

Home Page: http://bit-blot.com/aquaria

License: GNU General Public License v2.0

C 58.94% C++ 19.27% Objective-C++ 0.01% Makefile 0.78% Shell 2.67% Python 0.76% CSS 0.01% Lua 11.16% CMake 0.24% HTML 5.85% DIGITAL Command Language 0.16% Batchfile 0.01% M4 0.11% sed 0.01% Roff 0.03%
game

aquaria's Introduction

This folder contains all Aquaria sources and necessary build scripts.
However, it does *not* contain any graphical file nor sound. If you
want to play the game, you first need to buy the original
full-featured version (http://www.bit-blot.com/aquaria/) and install
it. Once you have done that, you need to build the files in this
folder (see below for how to do that) and copy the resulting files to
the place where you installed the original full-featured version.

In case of problems, you can get support via IRC:
#bitblot @ irc.esper.net.


[1] BUILDING
------------

Follow these steps to build Aquaria. 

1- Install required dependencies first. This includes a C++ compiler
  and a handful of libraries. Here is a list of the Debian names for
  some of these dependencies:

build-essential cmake liblua5.1-0-dev libogg-dev libvorbis-dev
libopenal-dev libsdl1.2-dev

For Lua, libogg, and libvorbis the included versions can be used instead,
thus a system-wide install of these libs is not required.

2- Create a sub-directory 'cmake-build' and move into it

$ mkdir cmake-build
$ cd cmake-build

3- run cmake

$ cmake ..

Alternatively, if you want to specifiy compile-time options:
(See also [2] SETUP further down)

$ ccmake ..


4- If you miss some dependencies, install them and run cmake again.
   Due to windows lacking package management, it is recommended
   to set all AQUARIA_INTERNAL_* cmake variables to TRUE for win32
   builds, or for self-contained linux builds.

5- run make

$ make

6- If everything went well, the 'aquaria' binary is now in the
   current directory (cmake-build).



[2] SETUP
---------

First, be sure you have an existing installation of Aquaria.
This can be a Windows, Linux, or Mac OSX version, doesn't matter.

Take this directory tree, showing the mandatory subdirs:

Aquaria  <--- this is the directory you want!
 |
 +--- data
 +--- gfx
 +--- mus
 +--- scripts
 +--- sfx
 +--- vox
 +--- ...

There are three ways to setup Aquaria, you may choose the one that
fits your intentions most:


****
*** If you just want to get the thing working right now ***
*** and don't care much about updating frequently       ***
****

After building, copy the executable to your aquaria root directory.
Then copy all files inside the repo's "files" directory
to your Aquaria root dir, replacing everything that exists.

You should *not* remove any file from the Aquaria installation, just
replace some of them with the versions included in the repo.

/!\ Be careful if you do this on a Mac with finder because
    it replaces whole folders instead of just merging the new files in.
    You have been warned.

Lastly, if you want to play the included default mods,
copy game_scripts/_mods over your local _mods directory.



****
*** If you want to hack on Aquaria or update frequently: ***
****

* Linux/OSX: 
Set the AQUARIA_DATA_PATH environment variable to the installation
directory as described above. E.g. add this line to your ~/.profile:

  export AQUARIA_DATA_PATH=~/games/Aquaria

Alternatively, set the AQUARIA_DEFAULT_DATA_DIR compile time option
when building with cmake.

Then, go to $AQUARIA_DATA_PATH and create a symlink
to the updated files directory:

  cd ~/games/Aquaria
  ln -s ~/code/Aquaria-repo/files override

This will make sure that whenever you update the repo, the updated datafiles
from the repo will be loaded instead of those that ship with the game.

Lastly, if you want to play the included default mods,
copy game_scripts/_mods over your local _mods directory.



* Windows:

You'll probably want to install something like this for symlink/junction support:
--> http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
(You don't have to, but it's rather tedious to update everything by hand)

Take all subdirs from the Aquaria root directory, and copy them into
path/to/Aquaria-repo/bin, or whereever your compiler will output its executable.
If you are able to, better create junctions to save space.

Note that this will become your main working directory.

Unfortunately you will have to use junctions to link the updated files.
Create a junction in path/to/Aquaria-repo/bin that points to
path/to/Aquaria-repo/files.
Otherwise, if you don't use junctions, copy the files dir by hand should they change.
You can either name it "override" and drop it into bin, or simply copy & replace
its contents into bin if you don't mind keeping your data clean.

Lastly, if you want to play the included default mods,
copy game_scripts/_mods over your local _mods directory.



****
*** If you're a Linux package maintainer ***
****

I assume there is a package for e.g. the Humble Bundle version available;
you'll want to make sure that the game path is fixed and the same
on all user's installs when you set the following cmake options.

Set the AQUARIA_DEFAULT_DATA_DIR cmake option to the game data dir
as described above.
Make sure your package includes all files from the repo's "files" directory.
Set the AQUARIA_EXTRA_DATA_DIR cmake option to the directory where these
extra files will be installed by the package.

An example can be found here:
https://aur.archlinux.org/packages/aquaria-git/

Using this package as data dependecy:
https://aur.archlinux.org/packages/aquaria-data-hib/

You also need to make sure that the mod scripts in ~/.Aquaria/_mods/*/scripts/
are updated with those from the repo's game_scripts/_mods directory.


If this doesn't apply to your setup, ask. [email, github, IRC, ...]






[SDL 1.2 ONLY -- LINUX RUMBLE SUPPORT]
---------------------------------------

SDL 1.2 does not support rumble features, even though Linux does. This
feature will be added in SDL 1.3, which is still a long time coming.

In the meantime there is a hackish rumble implementation for Linux that
needs environment variables to be set that map joysticks via their indices
to event devices. E.g. to map the first joystick to the event device
"/dev/input/event6" you need to run aquaria like this:

$ export AQUARIA_EVENT_JOYSTICK0=/dev/input/event6
$ aquaria

Because aquaria is a single player game you never need to map another joystick
than the first one. Also keep in mind that your joystick event device has
another path. E.g. I use this command to run aquaria:

$ export AQUARIA_EVENT_JOYSTICK0=/dev/input/by-id/usb-©Microsoft_Corporation_Controller_0709960-event-joystick
$ aquaria

aquaria's People

Contributors

chewi avatar cuddlyogre avatar dodumosu avatar fgenesis avatar jbeich avatar kreeblah avatar maddthesane avatar nickolabs avatar pelupessy avatar smls avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aquaria's Issues

SegF at BBGE/Vector.cpp:439 (InterpolatedVector::stop)

While swimming around with my nautilus companion in the Abyss (after sunken city / loosing Li), I ran into a SegF on this (fully patched) Ubuntu 14.04 x86_64 system, running my own debug build of the experimental branch (HEAD as of today).

When this happened, I was again close to those translucent wobbly swallowing plants.

tomreyn@atibox:~/aquaria$ gdb -q -n -ex "bt full" -batch aquaria.debug-dynamic core

warning: core file may not match specified executable file.
[New LWP 9192]
[New LWP 9197]
[New LWP 9195]
[New LWP 9196]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./aquaria.debug-dynamic'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  InterpolatedVector::stop (this=this@entry=0x1d72738) at /home/tomreyn/SCM/aquaria/BBGE/Vector.cpp:439
439         data->interpolating = false;
#0  InterpolatedVector::stop (this=this@entry=0x1d72738) at /home/tomreyn/SCM/aquaria/BBGE/Vector.cpp:439
No locals.
#1  0x0000000000554dfe in l_obj_setPosition (L=0x37f0010) at /home/tomreyn/SCM/aquaria/Aquaria/ScriptInterface.cpp:919
        r = 0x1d72720
#2  0x00007f2634823f78 in luaD_precall (L=L@entry=0x37f0010, func=0x37f1df0, nresults=nresults@entry=0) at ldo.c:320
        ci = <optimized out>
        n = <optimized out>
        cl = <optimized out>
        funcr = <optimized out>
#3  0x00007f263482e6af in luaV_execute (L=L@entry=0x37f0010, nexeccalls=nexeccalls@entry=1) at lvm.c:591
        b = <optimized out>
        nresults = 0
        i = <optimized out>
        ra = <optimized out>
        cl = <optimized out>
        base = <optimized out>
        k = 0x371d1f0
        pc = 0x1cb0c4c
#4  0x00007f26348243cd in luaD_call (L=0x37f0010, func=0x37f1dc0, nResults=<optimized out>) at ldo.c:378
No locals.
#5  0x00007f26348236eb in luaD_rawrunprotected (L=L@entry=0x37f0010, f=f@entry=0x7f263481f050 <f_call>, ud=ud@entry=0x7fff5f055f50) at ldo.c:116
        lj = {previous = 0x0, b = {{__jmpbuf = {58654736, -7052487645225668357, 1, 58660624, 58660624, 0, 7052137634316824827, 6948190963966816507}, __mask_was_saved = 0, __saved_mask = {__val = {0, 4397953580929197344, 32583360, 58668032, 58671240, 6088863, 28462468, 4397953580929197344, 32583360, 58668032, 0, 17197904, 140734787575632, 139802066469192, 100, 58654856}}}}, status = 0}
#6  0x00007f263482455a in luaD_pcall (L=L@entry=0x37f0010, func=func@entry=0x7f263481f050 <f_call>, u=u@entry=0x7fff5f055f50, old_top=32, ef=<optimized out>) at ldo.c:464
        status = <optimized out>
        oldnCcalls = 0
        old_ci = 0
        old_allowhooks = 1 '\001'
        old_errfunc = 0
#7  0x00007f263482034d in lua_pcall (L=0x37f0010, nargs=2, nresults=0, errfunc=<optimized out>) at lapi.c:821
        c = {func = 0x37f1dc0, nresults = 0}
        status = <optimized out>
        func = <optimized out>
#8  0x0000000000548eff in Script::doCall (this=0x34e8fc0, nparams=nparams@entry=2, nrets=nrets@entry=0) at /home/tomreyn/SCM/aquaria/Aquaria/ScriptInterface.cpp:11287
        vpos = 1
        result = <optimized out>
#9  0x000000000054910d in Script::call (this=<optimized out>, name=name@entry=0x644d38 "update", param1=param1@entry=0x37f3400, param2=0, param2@entry=0.0333666615) at /home/tomreyn/SCM/aquaria/Aquaria/ScriptInterface.cpp:11337
No locals.
#10 0x0000000000535297 in ScriptedEntity::onUpdate (this=0x37f3400, dt=0.0333666615) at /home/tomreyn/SCM/aquaria/Aquaria/ScriptedEntity.cpp:520
No locals.
#11 0x00000000005cae26 in RenderObject::update (this=this@entry=0x37f3400, dt=dt@entry=0.0333666615) at /home/tomreyn/SCM/aquaria/BBGE/RenderObject.cpp:1116
        dt = 0.0333666615
        this = 0x37f3400
#12 0x000000000049c1a3 in Entity::update (this=0x37f3400, dt=0.0333666615) at /home/tomreyn/SCM/aquaria/Aquaria/Entity.cpp:1173
        backupPos = {x = 8238, y = 21606, z = 0}
        backupVel = {x = 0, y = 0, z = 0}
        doUpdate = true
#13 0x000000000059e9b6 in Core::updateRenderObjects (this=this@entry=0x7fff5f056270, dt=0.0333666615) at /home/tomreyn/SCM/aquaria/BBGE/Core.cpp:2776
        r = <optimized out>
        c = 40
#14 0x000000000040b972 in Core::main (this=this@entry=0x7fff5f056270, runTime=runTime@entry=-1) at /home/tomreyn/SCM/aquaria/BBGE/Core.cpp:3101
        dt = 0.0333666615
        frames = 20
        real_dt = 0
        verbose = false
        counter = 0.667099833
        wasInactive = false
#15 0x0000000000409cc6 in main (argc=<optimized out>, argv=<optimized out>) at /home/tomreyn/SCM/aquaria/Aquaria/Main.cpp:113
        dsql = {<Core> = {<ActionMapper> = {_vptr.ActionMapper = 0x629a70 <vtable for DSQ+16>, actionData = {<std::_List_base<ActionData, std::allocator<ActionData> >> = {_M_impl = {<std::allocator<std::_List_node<ActionData> >> = {<__gnu_cxx::new_allocator<std::_List_node<ActionData> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0xdbd6a0, _M_prev = 0x3100490}}}, <No data fields>}, keyDownMap = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, int> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x31c0130, _M_left = 0x320fcc0, _M_right = 0x3100280}, _M_node_count = 6}}}, cleared = false, createdEvents = {<std::_Vector_base<Event*, std::allocator<Event*> >> = {_M_impl = {<std::allocator<Event*>> = {<__gnu_cxx::new_allocator<Event*>> = {<No data fields>}, <No data fields>}, _M_start = 0x320af50, _M_finish = 0x320b8e0, _M_end_of_storage = 0x320bf50}}, <No data fields>}, inUpdate = false, inputEnabled = true}, <StateManager> = {_vptr.StateManager = 0x629b38 <vtable for DSQ+216>, stateInstances = {<std::_Vector_base<StateObject*, std::allocator<StateObject*> >> = {_M_impl = {<std::allocator<StateObject*>> = {<__gnu_cxx::new_allocator<StateObject*>> = {<No data fields>}, <No data fields>}, _M_start = 0xc84840, _M_finish = 0xc84888, _M_end_of_storage = 0xc848c0}}, <No data fields>}, enqueuedStateStage = -1, enqueuedJumpState = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x3727818 ""}}, stateChangeFlag = true, states = {0x18077e0, 0x0 <repeats 63 times>}, statesTopIndex = 0, stateObjects = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, StateObject*> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, StateObject*> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0xc6f2d0, _M_left = 0xc84060, _M_right = 0xc84440}, _M_node_count = 9}}}}, postProcessingFx = {radialBlurColor = {x = 1, y = 1, z = 1}, blurTimes = 12, renderLayer = 0, layer = 0, intensity = 0.100000001, blendType = 0, enabled = {false}}, stopWatchStartTime = 0, joystickPosition = {x = 0, y = 0, z = 0}, coreVerboseDebug = false, screenCenter = {x = 7709.52295, y = 20822.4707, z = 0}, resources = {<std::_Vector_base<Resource*, std::allocator<Resource*> >> = {_M_impl = {<std::allocator<Resource*>> = {<__gnu_cxx::new_allocator<Resource*>> = {<No data fields>}, <No data fields>}, _M_start = 0x1aa4310, _M_finish = 0x1aa5a08, _M_end_of_storage = 0x1aa6310}}, <No data fields>}, resourceNames = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x18f83d0, _M_finish = 0x18f9ac8, _M_end_of_storage = 0x18fa3d0}}, <No data fields>}, renderObjectLayerOrder = {<std::_Vector_base<int, std::allocator<int> >> = {_M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, _M_start = 0xc50ce0, _M_finish = 0xc50e10, _M_end_of_storage = 0xc50e10}}, <No data fields>}, renderObjectLayers = {<std::_Vector_base<RenderObjectLayer, std::allocator<RenderObjectLayer> >> = {_M_impl = {<std::allocator<RenderObjectLayer>> = {<__gnu_cxx::new_allocator<RenderObjectLayer>> = {<No data fields>}, <No data fields>}, _M_start = 0xc51010, _M_finish = 0xc53150, _M_end_of_storage = 0xc53150}}, <No data fields>}, garbage = {<std::_List_base<RenderObject*, std::allocator<RenderObject*> >> = {_M_impl = {<std::allocator<std::_List_node<RenderObject*> >> = {<__gnu_cxx::new_allocator<std::_List_node<RenderObject*> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x1d6eca0, _M_prev = 0x1a93f00}}}, <No data fields>}, sound = 0xd53d70, aspect = 1.60000002, width = 1680, height = 1050, globalScale = {<Vector> = {x = 0.519999981, y = 0.519999981, z = 0}, data = 0x0}, globalResolutionScale = {x = 1.75, y = 1.75, z = 1}, screenCapScale = {x = 1, y = 1, z = 1}, cameraPos = {x = 6940.29199, y = 20245.5469, z = 0}, fps = 30, loopDone = false, mouse = {position = {x = 273.714294, y = 316.571442, z = 0}, lastPosition = {x = 273.714294, y = 316.571442, z = 0}, buttons = {left = DOWN, right = UP, middle = UP}, pure_buttons = {left = DOWN, right = UP, middle = UP}, change = {x = 0, y = 0, z = 0}, buttonsEnabled = true, movementEnabled = true, scrollWheel = -10, scrollWheelChange = 0, lastScrollWheel = -10}, afterEffectManager = 0x1b78760, particleManager = 0xc508c0, minimized = false, cullRadius = 1197.39001, cullRadiusSqr = 1433742.88, cullCenter = {x = 7709.52295, y = 20822.4707, z = 0}, renderObjectCount = 339, processedRenderObjectCount = 6413, totalRenderObjectCount = 6580, invGlobalScale = 1.92307699, invGlobalScaleSqr = 3.69822502, currentLayerPass = 314, keys = {0 <repeats 104 times>}, flags = {flags = 1}, darkLayer = {useFrameBuffer = true, frameBuffer = {_w = 256, _h = 256, _fitToScreen = false, g_frameBuffer = 3, g_depthRenderBuffer = 3, g_dynamicTextureID = 767, w = 256, h = 256, enabled = true, inited = true}, stretch = 4, quality = 256, active = true, layer = 30, renderLayer = 52, texture = 0, format = 6407}, redBits = 0, greenBits = 0, blueBits = 0, alphaBits = 0, particlesPaused = 0, joystickEnabled = true, joystickOverrideMouse = false, debugLogTextures = true, joystick = {position = {x = 0, y = 0, z = 0}, lastPosition = {x = 0, y = 0, z = 0}, buttons = {UP <repeats 64 times>}, deadZone1 = 0.300000012, deadZone2 = 0.300000012, clearRumbleTime = -0.0160000008, leftTrigger = 0, rightTrigger = 0, leftThumb = false, rightThumb = false, leftShoulder = false, rightShoulder = false, dpadLeft = false, dpadRight = false, dpadUp = false, dpadDown = false, btnStart = false, btnSelect = false, rightStick = {x = 0, y = 0, z = 0}, inited = false, xinited = false, sdl_joy = 0x0, eventfd = -1, effectid = -1, stickIndex = 0, s1ax = 0, s1ay = 1, s2ax = 4, s2ay = 3}, flipMouseButtons = 0, frameBuffer = {_w = -1, _h = -1, _fitToScreen = true, g_frameBuffer = 1, g_depthRenderBuffer = 1, g_dynamicTextureID = 765, w = 2048, h = 2048, enabled = true, inited = true}, joystickAsMouse = false, updateMouse = true, frameOutputMode = false, overrideStartLayer = 0, overrideEndLayer = 0, secondaryTexturePath = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, eventQueue = {eventTimers = {<std::_List_base<EventTimer, std::allocator<EventTimer> >> = {_M_impl = {<std::allocator<std::_List_node<EventTimer> >> = {<__gnu_cxx::new_allocator<std::_List_node<EventTimer> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x7fff5f056aa0, _M_prev = 0x7fff5f056aa0}}}, <No data fields>}}, aspectX = 1680, aspectY = 1050, debugLogActive = true, viewOffX = 140, viewOffY = 0, vw2 = 480, vh2 = 300, center = {x = 400, y = 300, z = 0}, screenModes = {<std::_Vector_base<ScreenMode, std::allocator<ScreenMode> >> = {_M_impl = {<std::allocator<ScreenMode>> = {<__gnu_cxx::new_allocator<ScreenMode>> = {<No data fields>}, <No data fields>}, _M_start = 0xd8b0c0, _M_finish = 0xd8b114, _M_end_of_storage = 0xd8b120}}, <No data fields>}, settings = {renderOn = true, runInBackground = false, updateOn = true, prebufferSounds = false}, dbg_numThreadDecoders = 3, static dbg_numRenderCalls = 41596, fpsDebugString = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, timeUpdateType = TIMEUPDATE_DYNAMIC, fixedFPS = 60, userDataFolder = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xc4e348 "/home/tomreyn/.Aquaria"}}, grabInputOnReentry = 0, virtualOffX = 80, virtualOffY = 0, old_dt = 0.0333666615, current_dt = 0.0333666615, debugLogPath = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xc4e2d8 "/home/tomreyn/.Aquaria/"}}, _hasFocus = true, lib_graphics = true, lib_sound = false, lib_input = false, clearColor = {x = 0, y = 0, z = 0}, updateCursorFromMouse = true, appName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xc4e248 "Aquaria"}}, mouseConstraint = false, mouseCircle = 100, mouseConstraintCenter = {x = 400, y = 300, z = 0}, doScreenshot = false, baseCullRadius = 622.642761, afterEffectManagerLayer = 52, sortEnabled = false, cameraOffset = {x = 0, y = 0, z = 0}, avgFPS = {<std::_Vector_base<float, std::allocator<float> >> = {_M_impl = {<std::allocator<float>> = {<__gnu_cxx::new_allocator<float>> = {<No data fields>}, <No data fields>}, _M_start = 0xc50c60, _M_finish = 0xc50cd8, _M_end_of_storage = 0xc50cd8}}, <No data fields>}, sortTimer = 10, sortFlag = true, virtualHeight = 600, virtualWidth = 960, shuttingDown = false, quitNestedMainFlag = false, clearedGarbageFlag = false, nestedMains = 1, baseTextureDirectory = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xc89b18 "gfx/"}}, _logOut = <incomplete type>, nowTicks = 6965128, thenTicks = 6965128, _vsync = 1, _bpp = 32, _fullscreen = true, numSavedScreenshots = 0, _extraDataDir = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}, cursor = 0x16e5990, cursorGlow = 0x16e7880, cursorBlinker = 0x16e3720, overlay = 0x16f0140, tfader = 0x16ef770, overlay2 = 0x16eeb30, overlay3 = 0x16eee40, overlayRed = 0x16ef150, sceneColorOverlay = 0x16ef460, bar_left = 0x1cf6180, bar_right = 0x35fd490, bar_up = 0x0, bar_down = 0x0, barFade_left = 0x1b300b0, barFade_right = 0xca60f0, texCursor = 0xc65690, texCursorSwim = 0x15c4bd0, texCursorBurst = 0x1687140, texCursorSing = 0x15c4c60, texCursorLook = 0xc67500, game = 0x7f262f766010, loops = {bg = 0xd98420, bg2 = 0x0, roll = 0x0, charge = 0x0, shield = 0x0, current = 0x0, trip = 0x0}, subtitlePlayer = {subLines = {<std::_Vector_base<SubLine, std::allocator<SubLine> >> = {_M_impl = {<std::allocator<SubLine>> = {<__gnu_cxx::new_allocator<SubLine>> = {<No data fields>}, <No data fields>}, _M_start = 0x288b8e0, _M_finish = 0x288b8e0, _M_end_of_storage = 0x288b9e0}}, <No data fields>}, curLine = 0, vis = false, hidden = false}, nagType = NAG_TOTITLE, elements = {<std::_Vector_base<Element*, std::allocator<Element*> >> = {_M_impl = {<std::allocator<Element*>> = {<__gnu_cxx::new_allocator<Element*>> = {<No data fields>}, <No data fields>}, _M_start = 0x2656ae0, _M_finish = 0x2662048, _M_end_of_storage = 0x2666ae0}}, <No data fields>}, firstElementOnLayer = {0x283f940, 0x35afb70, 0x3495080, 0x2ebe5c0, 0x2eae510, 0x2eb04f0, 0x0, 0x0, 0xd66d70, 0x0, 0xd60ca0, 0xd60fd0, 0x1ed38c0, 0x0, 0x0, 0x0}, entities = {<std::_Vector_base<Entity*, std::allocator<Entity*> >> = {_M_impl = {<std::allocator<Entity*>> = {<__gnu_cxx::new_allocator<Entity*>> = {<No data fields>}, <No data fields>}, _M_start = 0x2ed2570, _M_finish = 0x2ed2d70, _M_end_of_storage = 0x2ed2d70}}, <No data fields>}, useFrameBuffer = true, continuity = {maxHealth = 8, health = 7, hudVisible = true, exp = 2042, seconds = 133946.594, itemSlots = {<std::_Vector_base<int, std::allocator<int> >> = {_M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, zoom = {x = 0.519999981, y = 0.519999981, z = 0}, naijaModel = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1bc80c8 "Naija"}}, form = FORM_SUN, formUpgrades = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<FormUpgradeType const, bool> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<FormUpgradeType const, bool> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<FormUpgradeType, FormUpgradeType, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1e4bec0, _M_left = 0xeb1930, _M_right = 0x2ed0ca0}, _M_node_count = 3}}}, songBank = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, Song> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, Song> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x34ed530, _M_left = 0x3970e00, _M_right = 0x1c077a0}, _M_node_count = 12}}}, knowsSong = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, bool> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, bool> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1dd40d0, _M_left = 0x19644a0, _M_right = 0x1951e90}, _M_node_count = 17}}}, songSlotsToType = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, int> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1ce49c0, _M_left = 0x1d18750, _M_right = 0x19644d0}, _M_node_count = 12}}}, songTypesToSlot = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, int> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1b9da00, _M_left = 0x1bb8410, _M_right = 0x19ec590}, _M_node_count = 11}}}, songSlotDescriptions = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x7fff5f0570e0, _M_right = 0x7fff5f0570e0}, _M_node_count = 0}}}, songSlotNames = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x2dc9010, _M_left = 0x18a8f30, _M_right = 0xcd9a60}, _M_node_count = 12}}}, songSlotVox = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1c95470, _M_left = 0x2fff7a0, _M_right = 0x179c100}, _M_node_count = 11}}}, entityFlags = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1b3e7a0, _M_left = 0x1e717f0, _M_right = 0x369bfd0}, _M_node_count = 178}}}, toggleMoveMode = false, gems = {<std::_List_base<GemData, std::allocator<GemData> >> = {_M_impl = {<std::allocator<std::_List_node<GemData> >> = {<__gnu_cxx::new_allocator<std::_List_node<GemData> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x3505d70, _M_prev = 0x362d3a0}}}, <No data fields>}, beacons = {<std::_List_base<BeaconData, std::allocator<BeaconData> >> = {_M_impl = {<std::allocator<std::_List_node<BeaconData> >> = {<__gnu_cxx::new_allocator<std::_List_node<BeaconData> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x1bb8380, _M_prev = 0x30b43a0}}}, <No data fields>}, voiceOversPlayed = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x1e6ab70, _M_finish = 0x1e6ae68, _M_end_of_storage = 0x1e6af70}}, <No data fields>}, costume = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x2fb7e88 "CC"}}, auraType = AURA_NONE, auraTimer = 0, unsortedOrder = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, recipes = {<std::_Vector_base<Recipe, std::allocator<Recipe> >> = {_M_impl = {<std::allocator<Recipe>> = {<__gnu_cxx::new_allocator<Recipe>> = {<No data fields>}, <No data fields>}, _M_start = 0x1bbaa90, _M_finish = 0x1bbb8e8, _M_end_of_storage = 0x1bbbc90}}, <No data fields>}, speedMult = 1, biteMult = 1, fishPoison = 1, defenseMult = 1, energyMult = 0, poison = 0, light = 0, petPower = 0, liPower = 0, speedMultTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 30}, biteMultTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, fishPoisonTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, defenseMultTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 15}, liPowerTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, invincibleTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, regenTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 5}, tripTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, energyTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 45}, poisonTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, poisonBitTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, webTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, webBitTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, lightTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, petPowerTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, speedMult2 = 1, naijaEats = {<std::_Vector_base<EatData, std::allocator<EatData> >> = {_M_impl = {<std::allocator<EatData>> = {<__gnu_cxx::new_allocator<EatData>> = {<No data fields>}, <No data fields>}, _M_start = 0x1856530, _M_finish = 0x1856530, _M_end_of_storage = 0x1856630}}, <No data fields>}, petData = {<std::_Vector_base<PetData, std::allocator<PetData> >> = {_M_impl = {<std::allocator<PetData>> = {<__gnu_cxx::new_allocator<PetData>> = {<No data fields>}, <No data fields>}, _M_start = 0x1bbc0d0, _M_finish = 0x1bbc0f0, _M_end_of_storage = 0x1bbc0f0}}, <No data fields>}, ingredientDescriptions = {<std::_Vector_base<IngredientDescription, std::allocator<IngredientDescription> >> = {_M_impl = {<std::allocator<IngredientDescription>> = {<__gnu_cxx::new_allocator<IngredientDescription>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, worldMap = {gw = 0, gh = 0, worldMapTiles = {<std::_Vector_base<WorldMapTile, std::allocator<WorldMapTile> >> = {_M_impl = {<std::allocator<WorldMapTile>> = {<__gnu_cxx::new_allocator<WorldMapTile>> = {<No data fields>}, <No data fields>}, _M_start = 0xe9e040, _M_finish = 0xe9ee40, _M_end_of_storage = 0xe9f040}}, <No data fields>}}, stringBank = {stringMap = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1c80090, _M_left = 0x1757cd0, _M_right = 0xc6d4e0}, _M_node_count = 239}}}}, treasureData = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, TreasureDataEntry> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, TreasureDataEntry> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1826350, _M_left = 0x28237a0, _M_right = 0x1803930}, _M_node_count = 33}}}, poisonBitTime = 1, poisonBitTimeAvatar = 2, lastMenuPage = MENUPAGE_FOOD, lastOptionsMenuPage = MENUPAGE_NONE, dualFormMode = 1, dualFormCharge = 0, foodSortType = 0, sortByType = {<std::_Vector_base<FoodSortOrder, std::allocator<FoodSortOrder> >> = {_M_impl = {<std::allocator<FoodSortOrder>> = {<__gnu_cxx::new_allocator<FoodSortOrder>> = {<No data fields>}, <No data fields>}, _M_start = 0x1bb90a0, _M_finish = 0x1bb9280, _M_end_of_storage = 0x1bb93a0}}, <No data fields>}, sortByHeal = {<std::_Vector_base<FoodSortOrder, std::allocator<FoodSortOrder> >> = {_M_impl = {<std::allocator<FoodSortOrder>> = {<__gnu_cxx::new_allocator<FoodSortOrder>> = {<No data fields>}, <No data fields>}, _M_start = 0x1bb93b0, _M_finish = 0x1bb95d8, _M_end_of_storage = 0x1bb96b0}}, <No data fields>}, sortByIngredients = {<std::_Vector_base<FoodSortOrder, std::allocator<FoodSortOrder> >> = {_M_impl = {<std::allocator<FoodSortOrder>> = {<__gnu_cxx::new_allocator<FoodSortOrder>> = {<No data fields>}, <No data fields>}, _M_start = 0x1bb8e00, _M_finish = 0x1bb8f20, _M_end_of_storage = 0x1bb8f80}}, <No data fields>}, sortByUnsort = {<std::_Vector_base<FoodSortOrder, std::allocator<FoodSortOrder> >> = {_M_impl = {<std::allocator<FoodSortOrder>> = {<__gnu_cxx::new_allocator<FoodSortOrder>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, statsAndAchievements = 0xc6eff0, eats = {<std::_Vector_base<EatData, std::allocator<EatData> >> = {_M_impl = {<std::allocator<EatData>> = {<__gnu_cxx::new_allocator<EatData>> = {<No data fields>}, <No data fields>}, _M_start = 0x1bb8830, _M_finish = 0x1bb8b10, _M_end_of_storage = 0x1bb8c30}}, <No data fields>}, speedTypes = {<std::_Vector_base<int, std::allocator<int> >> = {_M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, _M_start = 0x1bbd460, _M_finish = 0x1bbd480, _M_end_of_storage = 0x1bbd480}}, <No data fields>}, story = 1, worldType = WT_NORMAL, items = {<std::_Vector_base<int, std::allocator<int> >> = {_M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, spells = {<std::_Vector_base<int, std::allocator<int> >> = {_M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, flags = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1bbbfe0, _M_left = 0xc6d260, _M_right = 0x1dac920}, _M_node_count = 4}}}, intFlags = {0 <repeats 20 times>, 1, 354, 0 <repeats 79 times>, 7, 8, 11, 29, 1, 15, 12, 3, 1, 180, 2, 1, 17, 1, 1, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0 <repeats 64 times>, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 79, 90, 0, 0, 0, 0, 1, 0 <repeats 46 times>, 1, 0 <repeats 199 times>, 1 <repeats 19 times>, 0, 1 <repeats 12 times>, 0 <repeats 68 times>, 601, 1, 1, 1, 1, 0 <repeats 45 times>, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1...}, stringFlags = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x7fff5f0588e8, _M_right = 0x7fff5f0588e8}, _M_node_count = 0}}}, ingredients = {<std::_Vector_base<IngredientData*, std::allocator<IngredientData*> >> = {_M_impl = {<std::allocator<IngredientData*>> = {<__gnu_cxx::new_allocator<IngredientData*>> = {<No data fields>}, <No data fields>}, _M_start = 0x1e68d50, _M_finish = 0x1e68ec0, _M_end_of_storage = 0x1e68f50}}, <No data fields>}, ingredientData = {<std::_Vector_base<IngredientData*, std::allocator<IngredientData*> >> = {_M_impl = {<std::allocator<IngredientData*>> = {<__gnu_cxx::new_allocator<IngredientData*>> = {<No data fields>}, <No data fields>}, _M_start = 0x1bc02f0, _M_finish = 0x1bc0558, _M_end_of_storage = 0x1bc06f0}}, <No data fields>}, ingredientDisplayNames = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1b63a90, _M_left = 0x1e66320, _M_right = 0x2eb6f70}, _M_node_count = 89}}}}, v = {maxSlowSwimSpeed = 300, maxSwimSpeed = 460, maxBurstSpeed = 700, maxDodgeSpeed = 1000, maxWallJumpSpeed = 1200, maxWallJumpBurstSpeed = 1200, maxDreamWorldSpeed = 200, autoSaveTime = 20, autoSaveFiles = 3, afterEffectsXDivs = 20, afterEffectsYDivs = 20, frictionForce = 160, maxSpringSpeed = 2000, grabSpringPlantVelCap = 600, springTime = 1, zoomStop = 1, zoomMove = 0.519999981, zoomNaija = 1.5, jumpVelocityMod = 20, dodgeTime = 0.100000001, initialId = 9.62236282e+18, initialEgo = 4.59163468e-41, initialSuperEgo = 4.91995991e-08, unusedFPSSmoothing = 30, defaultCameraLerpDelay = 0.100000001, maxOutOfWaterSpeed = 1500, entityDamageTime = 0.100000001, pushTime = 0.5, avatarDamageTime = 1.5}, emote = {emoteTimer = 0, lastVariation = 3, emotes = {<std::_Vector_base<EmoteData, std::allocator<EmoteData> >> = {_M_impl = {<std::allocator<EmoteData>> = {<__gnu_cxx::new_allocator<EmoteData>> = {<No data fields>}, <No data fields>}, _M_start = 0x1bb8c40, _M_finish = 0x1bb8d30, _M_end_of_storage = 0x1bb8dc0}}, <No data fields>}}, profiles = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, currentProfile = {name = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xc4e218 "save"}}}, screenTransition = 0x16efa80, precacher = {renderObjects = {<std::_Vector_base<RenderObject*, std::allocator<RenderObject*> >> = {_M_impl = {<std::allocator<RenderObject*>> = {<__gnu_cxx::new_allocator<RenderObject*>> = {<No data fields>}, <No data fields>}, _M_start = 0x1ac16e0, _M_finish = 0x1ac2b58, _M_end_of_storage = 0x1ac36e0}}, <No data fields>}, cleaned = false, loadProgressCallback = 0x0, basedirOverride = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}, initScene = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, modIsSelected = false, avStart = {x = 0, y = 0, z = 0}, scriptInterface = {baseState = 0x15c4f80, _sballoc = {_blocks = 0xc50e20, _allblocks = {<std::_Vector_base<SmallBlockAllocator::Block*, std::allocator<SmallBlockAllocator::Block*> >> = {_M_impl = {<std::allocator<SmallBlockAllocator::Block*>> = {<__gnu_cxx::new_allocator<SmallBlockAllocator::Block*>> = {<No data fields>}, <No data fields>}, _M_start = 0x2841e20, _M_finish = 0x2841f48, _M_end_of_storage = 0x2842020}}, <No data fields>}, _blockSizeMin = 8, _blockSizeMax = 128, _blockSizeIncr = 8, _elemsPerBlockMin = 64, _elemsPerBlockMax = 2048}}, languagePack = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xc50ec8 "english"}}, dialogueFile = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, elementEffects = {<std::_Vector_base<ElementEffect, std::allocator<ElementEffect> >> = {_M_impl = {<std::allocator<ElementEffect>> = {<__gnu_cxx::new_allocator<ElementEffect>> = {<No data fields>}, <No data fields>}, _M_start = 0x1bb84a0, _M_finish = 0x1bb87b0, _M_end_of_storage = 0x1bb8820}}, <No data fields>}, voiceOversEnabled = true, recentSaveSlot = 52, gameSpeed = {<Vector> = {x = 1, y = 0, z = 0}, data = 0x381a0f0}, inputMode = INPUT_MOUSE, lastVoiceFile = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, user = {system = {debugLogOn = 1, locale = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, devModeOn = 0, allowDangerousScriptFunctions = 0}, audio = {micOn = 0, octave = 0, voxvol = 0.634921014, sfxvol = 0.596825004, musvol = 0.446031988, subtitles = 1, deviceName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, prebuffer = 0}, video = {blur = 0, noteEffects = 0, fpsSmoothing = 30, resx = 1680, resy = 1050, full = 1, fbuffer = 1, bits = 32, vsync = 1, darkfbuffer = 1, darkbuffersize = 256, saveSlotScreens = 1, parallaxOn0 = 1, parallaxOn1 = 1, parallaxOn2 = 1, numParticles = 2048, displaylists = 0, worldMapRevealMethod = 0}, control = {joystickEnabled = 1, autoAim = 1, targeting = 1, joyCursorSpeed = 900, flipInputButtons = 0, actionSet = {inputSet = {<std::_Vector_base<ActionInput, std::allocator<ActionInput> >> = {_M_impl = {<std::allocator<ActionInput>> = {<__gnu_cxx::new_allocator<ActionInput>> = {<No data fields>}, <No data fields>}, _M_start = 0xc84b30, _M_finish = 0xc84e00, _M_end_of_storage = 0xc84e30}}, <No data fields>}}, s1ax = 0, s1ay = 1, s2ax = 4, s2ay = 3, s1dead = 0.300000012, s2dead = 0.300000012, toolTipsOn = 1}, demo = {warpKeys = 0, intro = 0, shortLogos = 0}, data = {savePage = 13, saveSlot = 52}, version = {settingsVersion = 1}, network = {masterServer = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}}, user_backup = {system = {debugLogOn = 1, locale = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, devModeOn = 0, allowDangerousScriptFunctions = 0}, audio = {micOn = 0, octave = 0, voxvol = 0.634921014, sfxvol = 0.596825004, musvol = 0.446031988, subtitles = 1, deviceName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, prebuffer = 0}, video = {blur = 0, noteEffects = 0, fpsSmoothing = 30, resx = 1680, resy = 1050, full = 0, fbuffer = 1, bits = 32, vsync = 1, darkfbuffer = 1, darkbuffersize = 256, saveSlotScreens = 1, parallaxOn0 = 1, parallaxOn1 = 1, parallaxOn2 = 1, numParticles = 2048, displaylists = 0, worldMapRevealMethod = 0}, control = {joystickEnabled = 1, autoAim = 1, targeting = 1, joyCursorSpeed = 900, flipInputButtons = 0, actionSet = {inputSet = {<std::_Vector_base<ActionInput, std::allocator<ActionInput> >> = {_M_impl = {<std::allocator<ActionInput>> = {<__gnu_cxx::new_allocator<ActionInput>> = {<No data fields>}, <No data fields>}, _M_start = 0x320a2b0, _M_finish = 0x320a580, _M_end_of_storage = 0x320a580}}, <No data fields>}}, s1ax = 0, s1ay = 1, s2ax = 4, s2ay = 3, s1dead = 0.300000012, s2dead = 0.300000012, toolTipsOn = 1}, demo = {warpKeys = 0, intro = 0, shortLogos = 0}, data = {savePage = 11, saveSlot = 47}, version = {settingsVersion = 1}, network = {masterServer = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}}, user_bcontrol = {system = {debugLogOn = 0, locale = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, devModeOn = 0, allowDangerousScriptFunctions = 0}, audio = {micOn = 0, octave = 0, voxvol = 1, sfxvol = 1, musvol = 1, subtitles = 0, deviceName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, prebuffer = 0}, video = {blur = 1, noteEffects = 0, fpsSmoothing = 30, resx = 800, resy = 600, full = 1, fbuffer = 1, bits = 32, vsync = 1, darkfbuffer = 1, darkbuffersize = 256, saveSlotScreens = 1, parallaxOn0 = 1, parallaxOn1 = 1, parallaxOn2 = 1, numParticles = 2048, displaylists = 0, worldMapRevealMethod = 0}, control = {joystickEnabled = 0, autoAim = 1, targeting = 1, joyCursorSpeed = 4, flipInputButtons = 0, actionSet = {inputSet = {<std::_Vector_base<ActionInput, std::allocator<ActionInput> >> = {_M_impl = {<std::allocator<ActionInput>> = {<__gnu_cxx::new_allocator<ActionInput>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}}, s1ax = 0, s1ay = 0, s2ax = 0, s2ay = 0, s1dead = 0.300000012, s2dead = 0.300000012, toolTipsOn = 1}, demo = {warpKeys = 0, intro = 0, shortLogos = 0}, data = {savePage = 0, saveSlot = 0}, version = {settingsVersion = 1}, network = {masterServer = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}}, saveSlotMode = SSM_NONE, inModSelector = false, doScreenTrans = false, selectedSaveSlot = 0x3709e80, disableMiniMapOnNoInput = true, returnToScene = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, demo = {frame = 0, time = 0, timeDiff = 0, frames = {<std::_Vector_base<DemoFrame, std::allocator<DemoFrame> >> = {_M_impl = {<std::allocator<DemoFrame>> = {<__gnu_cxx::new_allocator<DemoFrame>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, mode = -1}, fpsText = 0x16ed2a0, cmDebug = 0x0, console = 0x16e6180, versionLabel = 0x16e64a0, profRender = 0x0, menuSelectDelay = 0, timer = 0, mod = {mapRevealMethod = REVEAL_UNSPECIFIED, shuttingDown = false, active = false, hasMap = false, blockEditor = false, doRecache = 0, debugMenu = 0, enqueueModStart = 0, name = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, path = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, modcache = {renderObjects = {<std::_Vector_base<RenderObject*, std::allocator<RenderObject*> >> = {_M_impl = {<std::allocator<RenderObject*>> = {<__gnu_cxx::new_allocator<RenderObject*>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, cleaned = true, loadProgressCallback = 0x0, basedirOverride = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}}, modEntries = {<std::_Vector_base<ModEntry, std::allocator<ModEntry> >> = {_M_impl = {<std::allocator<ModEntry>> = {<__gnu_cxx::new_allocator<ModEntry>> = {<No data fields>}, <No data fields>}, _M_start = 0x1018ef0, _M_finish = 0x1018fa0, _M_end_of_storage = 0x1018ff0}}, <No data fields>}, activePatches = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x7fff5f058ef0, _M_right = 0x7fff5f058ef0}, _M_node_count = 0}}}, selectedMod = 0, modSelectorScr = 0x0, achievement_text = 0x16ec210, achievement_box = 0x16e84d0, subtext = 0x16e81c0, subbox = 0x16e7eb0, font = {font = {header = {tex = 759, tex_width = 256, tex_height = 256, start_char = 32, end_char = 127, chars = 0x192c4a0}}, scale = 1, loaded = true, fontTopColor = {x = 0.899999976, y = 0.899999976, z = 1}, fontBtmColor = {x = 0.5, y = 0.800000012, z = 1}, overrideTexture = 0x1068110}, smallFont = {font = {header = {tex = 760, tex_width = 256, tex_height = 256, start_char = 32, end_char = 127, chars = 0x1899020}}, scale = 0.600000024, loaded = true, fontTopColor = {x = 0.899999976, y = 0.899999976, z = 1}, fontBtmColor = {x = 0.5, y = 0.800000012, z = 1}, overrideTexture = 0x1068110}, subsFont = {font = {header = {tex = 762, tex_width = 256, tex_height = 256, start_char = 32, end_char = 127, chars = 0x1b686c0}}, scale = 0.5, loaded = true, fontTopColor = {x = 1, y = 1, z = 1}, fontBtmColor = {x = 0.5, y = 0.800000012, z = 1}, overrideTexture = 0x1068110}, goldFont = {font = {header = {tex = 763, tex_width = 256, tex_height = 256, start_char = 32, end_char = 127, chars = 0x19163c0}}, scale = 1, loaded = true, fontTopColor = {x = 1, y = 0.899999976, z = 0.5}, fontBtmColor = {x = 0.600000024, y = 0.5, z = 0.25}, overrideTexture = 0x1068110}, smallFontRed = {font = {header = {tex = 761, tex_width = 256, tex_height = 256, start_char = 32, end_char = 127, chars = 0x1bfb0b0}}, scale = 0.600000024, loaded = true, fontTopColor = {x = 1, y = 0.899999976, z = 0.899999976}, fontBtmColor = {x = 1, y = 0.800000012, z = 0.5}, overrideTexture = 0x1068110}, fontArialSmall = {font = 0x30cc7b0}, fontArialBig = {font = 0x102d0a0}, fontArialSmallest = {font = 0x2434c30}, arialFontData = 0x2d654a0 "", arialFontDataSize = 160552, routeShoulder = true, particleBank1 = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xc4e278 "data/particles/"}}, particleBank2 = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, shotBank1 = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xc4e2a8 "data/shots/"}}, shotBank2 = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, dsq_filter = 0, difficulty = DSQ::DIFF_NORMAL, weird = 0, cutscene_bg = 0x16ec520, cutscene_text = 0x16ec830, cutscene_text2 = 0x16ecb90, cutscenePaused = false, inCutscene = false, _canSkipCutscene = false, skippingCutscene = false, almb = 0xc84b30, armb = 0xc84b48, watchQuitFlag = false, watchForQuit = false, confirmDone = 1, cancel = 0x34f2030, arrowUp = 0x3950bf0, arrowDown = 0x3250ec0, noEffectTimer = 0, iter = 0x2ed2980, blackout = 0x366b590, pecue = {<std::_Vector_base<PECue, std::allocator<PECue> >> = {_M_impl = {<std::allocator<PECue>> = {<__gnu_cxx::new_allocator<PECue>> = {<No data fields>}, <No data fields>}, _M_start = 0x3908450, _M_finish = 0x3908450, _M_end_of_storage = 0x3908550}}, <No data fields>}, voxQueue = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, consoleLines = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0xd8bb90, _M_finish = 0xd8bc20, _M_end_of_storage = 0xd8bc90}}, <No data fields>}, saveSlots = {<std::_Vector_base<AquariaSaveSlot*, std::allocator<AquariaSaveSlot*> >> = {_M_impl = {<std::allocator<AquariaSaveSlot*>> = {<__gnu_cxx::new_allocator<AquariaSaveSlot*>> = {<No data fields>}, <No data fields>}, _M_start = 0x1eb1c40, _M_finish = 0x1eb1c40, _M_end_of_storage = 0x1eb1c60}}, <No data fields>}, expText = 0x6f, moneyText = 0x8ad9f0, menu = {<std::_Vector_base<RenderObject*, std::allocator<RenderObject*> >> = {_M_impl = {<std::allocator<RenderObject*>> = {<__gnu_cxx::new_allocator<RenderObject*>> = {<No data fields>}, <No data fields>}, _M_start = 0x1e63e70, _M_finish = 0x1e63e70, _M_end_of_storage = 0x1e63e98}}, <No data fields>}, saveSlotPageCount = 0xc77630, shakeCameraTimer = 0, shakeCameraMag = 2, currentPortrait = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}
        dsqParam = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}
        extraDataDir = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}
        envPath = <optimized out>
tomreyn@atibox:~/aquaria$ 

Switch to modern GL /w GLES compat

Get rid of the GL matrix stack and all the old GL 1.x cruft.
Might want to make a dedicated renderer subsystem first, move all GL code there, and then transition to at least GL 2.0 with extensions, possibly GLES compatible.

This has sort of been done already (https://bitbucket.org/mattbierner/ios-aquaria), but with apple-specific extensions and not nicely contained in an extra subsystem.

Windows: Use user directory instead of workdir

Should save screenshots, saves, and config somewhere under %USERPROFILE% like on Linux/OSX.
That should fix saving issues many people are having nowadays with Win Vista and up.
Add optional portable mode to keep the current behavior.

malloc(): smallbin double linked list corrupted: 0x0000000000ed5e20

Same system + environment + build as in #12, still in the lower left corner of the left Abyss map (experimenting with two carnivore plants there, and switching forms):

tomreyn@atibox:~/aquaria$ ./aquaria.debug-dynamic
Environment varialbe AQUARIA_EVENT_JOYSTICK0 is not set.
Set this environment variable to the device file that shall be used for joystick number 0 in order to enable rumble support.
Example:
    export AQUARIA_EVENT_JOYSTICK0=/dev/input/event6

*** Error in `./aquaria.debug-dynamic': malloc(): smallbin double linked list corrupted: 0x0000000000ed5e20 ***
Aborted (core dumped)
tomreyn@atibox:~/aquaria$ gdb -q -n -ex "bt full" -batch aquaria.debug-dynamic core

warning: core file may not match specified executable file.
[New LWP 8923]
[New LWP 8927]
[New LWP 9010]
[New LWP 8928]
[New LWP 8926]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./aquaria.debug-dynamic'.
Program terminated with signal SIGABRT, Aborted.
#0  0x00007fa6fb753cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56  ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
#0  0x00007fa6fb753cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
        resultvar = 0
        pid = 8923
        selftid = 8923
#1  0x00007fa6fb7570d8 in __GI_abort () at abort.c:89
        save_stage = 2
        act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {34306848, 8, 34311136, 0, 140355032783994, 8, 34311136, 0, 140735257254848, 140735257254216, 42321152, 0, 42321152, 0, 14801496, 1}}, sa_flags = 42321152, sa_restorer = 0xe1c290}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x00007fa6fb790f24 in __libc_message (do_abort=do_abort@entry=1, fmt=fmt@entry=0x7fa6fb89f6c8 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/posix/libc_fatal.c:175
        ap = {{gp_offset = 40, fp_offset = 0, overflow_arg_area = 0x7fff7b041ba0, reg_save_area = 0x7fff7b041b30}}
        fd = 13
        on_2 = <optimized out>
        list = <optimized out>
        nlist = <optimized out>
        cp = <optimized out>
        written = <optimized out>
#3  0x00007fa6fb79bc87 in malloc_printerr (action=<optimized out>, str=0x7fa6fb89fa90 "malloc(): smallbin double linked list corrupted", ptr=<optimized out>) at malloc.c:4996
        buf = "0000000000ed5e20"
        cp = <optimized out>
#4  0x00007fa6fb79e994 in _int_malloc (av=0x7fa6fbadc760 <main_arena>, bytes=80) at malloc.c:3359
        p = 0x0
        fb = <optimized out>
        pp = <optimized out>
        nb = 96
        idx = <optimized out>
        bin = <optimized out>
        victim = <optimized out>
        size = <optimized out>
        victim_index = <optimized out>
        remainder = <optimized out>
        remainder_size = <optimized out>
        block = <optimized out>
        bit = <optimized out>
        map = <optimized out>
        fwd = <optimized out>
        bck = <optimized out>
        errstr = <optimized out>
        __func__ = "_int_malloc"
#5  0x00007fa6fb7a0340 in __GI___libc_malloc (bytes=80) at malloc.c:2891
        ar_ptr = 0x7fa6fbadc760 <main_arena>
        victim = 0x6
        __func__ = "__libc_malloc"
#6  0x00007fa6fbd57f2d in operator new(unsigned long) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#7  0x000000000049dc17 in InterpolatedVector (vec=..., this=0x7fff7b041d20) at /home/tomreyn/SCM/aquaria/Aquaria/../BBGE/Vector.h:494
No locals.
#8  Entity::render (this=0x353d6d0) at /home/tomreyn/SCM/aquaria/Aquaria/Entity.cpp:2828
        bcolor = {<Vector> = {x = 1, y = 1, z = 1}, data = 0x1}
        bscale = {<Vector> = {x = 0, y = 0, z = 8.53641597e-39}, data = 0x1d2ef90}
#9  0x00000000005d0dc3 in renderOneObject (robj=<optimized out>, this=0xdde190) at /home/tomreyn/SCM/aquaria/BBGE/RenderObjectLayer.cpp:499
        robj = <optimized out>
        this = 0xdde190
#10 RenderObjectLayer::renderPass (this=this@entry=0xdde190, pass=pass@entry=-2) at /home/tomreyn/SCM/aquaria/BBGE/RenderObjectLayer.cpp:380
        robj = <optimized out>
#11 0x00000000005a0e37 in Core::render (this=this@entry=0x7fff7b041f80, startLayer=startLayer@entry=-1, endLayer=endLayer@entry=-1, useFrameBufferIfAvail=useFrameBufferIfAvail@entry=true) at /home/tomreyn/SCM/aquaria/BBGE/Core.cpp:4200
        pass = -2
        i = <optimized out>
        c = 40
#12 0x000000000040b994 in Core::main (this=this@entry=0x7fff7b041f80, runTime=runTime@entry=-1) at /home/tomreyn/SCM/aquaria/BBGE/Core.cpp:3133
        dt = 0.0333666615
        frames = 18
        real_dt = 0
        verbose = false
        counter = 0.600666761
        wasInactive = false
#13 0x0000000000409cc6 in main (argc=<optimized out>, argv=<optimized out>) at /home/tomreyn/SCM/aquaria/Aquaria/Main.cpp:113
        dsql = {<Core> = {<ActionMapper> = {_vptr.ActionMapper = 0x629a70 <vtable for DSQ+16>, actionData = {<std::_List_base<ActionData, std::allocator<ActionData> >> = {_M_impl = {<std::allocator<std::_List_node<ActionData> >> = {<__gnu_cxx::new_allocator<std::_List_node<ActionData> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x1028a60, _M_prev = 0xf128b0}}}, <No data fields>}, keyDownMap = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, int> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0xf494d0, _M_left = 0xdda300, _M_right = 0xf493e0}, _M_node_count = 6}}}, cleared = false, createdEvents = {<std::_Vector_base<Event*, std::allocator<Event*> >> = {_M_impl = {<std::allocator<Event*>> = {<__gnu_cxx::new_allocator<Event*>> = {<No data fields>}, <No data fields>}, _M_start = 0x11a5150, _M_finish = 0x11a51b8, _M_end_of_storage = 0x11a51d0}}, <No data fields>}, inUpdate = false, inputEnabled = true}, <StateManager> = {_vptr.StateManager = 0x629b38 <vtable for DSQ+216>, stateInstances = {<std::_Vector_base<StateObject*, std::allocator<StateObject*> >> = {_M_impl = {<std::allocator<StateObject*>> = {<__gnu_cxx::new_allocator<StateObject*>> = {<No data fields>}, <No data fields>}, _M_start = 0xe10840, _M_finish = 0xe10888, _M_end_of_storage = 0xe108c0}}, <No data fields>}, enqueuedStateStage = -1, enqueuedJumpState = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1c3ce48 ""}}, stateChangeFlag = true, states = {0xe185b0, 0x0 <repeats 63 times>}, statesTopIndex = 0, stateObjects = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, StateObject*> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, StateObject*> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0xdfb2d0, _M_left = 0xe10060, _M_right = 0xe10440}, _M_node_count = 9}}}}, postProcessingFx = {radialBlurColor = {x = 1, y = 1, z = 1}, blurTimes = 12, renderLayer = 0, layer = 0, intensity = 0.100000001, blendType = 0, enabled = {false}}, stopWatchStartTime = 0, joystickPosition = {x = 0, y = 0, z = 0}, coreVerboseDebug = false, screenCenter = {x = 4663.72021, y = 21514.498, z = 0}, resources = {<std::_Vector_base<Resource*, std::allocator<Resource*> >> = {_M_impl = {<std::allocator<Resource*>> = {<__gnu_cxx::new_allocator<Resource*>> = {<No data fields>}, <No data fields>}, _M_start = 0x1c19dc0, _M_finish = 0x1c1b538, _M_end_of_storage = 0x1c1bdc0}}, <No data fields>}, resourceNames = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x1c367d0, _M_finish = 0x1c37f48, _M_end_of_storage = 0x1c387d0}}, <No data fields>}, renderObjectLayerOrder = {<std::_Vector_base<int, std::allocator<int> >> = {_M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, _M_start = 0xddcce0, _M_finish = 0xddce10, _M_end_of_storage = 0xddce10}}, <No data fields>}, renderObjectLayers = {<std::_Vector_base<RenderObjectLayer, std::allocator<RenderObjectLayer> >> = {_M_impl = {<std::allocator<RenderObjectLayer>> = {<__gnu_cxx::new_allocator<RenderObjectLayer>> = {<No data fields>}, <No data fields>}, _M_start = 0xddd010, _M_finish = 0xddf150, _M_end_of_storage = 0xddf150}}, <No data fields>}, garbage = {<std::_List_base<RenderObject*, std::allocator<RenderObject*> >> = {_M_impl = {<std::allocator<std::_List_node<RenderObject*> >> = {<__gnu_cxx::new_allocator<std::_List_node<RenderObject*> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x7fff7b042308, _M_prev = 0x7fff7b042308}}}, <No data fields>}, sound = 0xf17650, aspect = 1.60000002, width = 1680, height = 1050, globalScale = {<Vector> = {x = 0.532613993, y = 0.532613993, z = 0}, data = 0x0}, globalResolutionScale = {x = 1.75, y = 1.75, z = 1}, screenCapScale = {x = 1, y = 1, z = 1}, cameraPos = {x = 3912.70728, y = 20951.2383, z = 0}, fps = 30, loopDone = false, mouse = {position = {x = 457.142883, y = 353.142883, z = 0}, lastPosition = {x = 457.142883, y = 353.142883, z = 0}, buttons = {left = UP, right = UP, middle = UP}, pure_buttons = {left = UP, right = UP, middle = UP}, change = {x = 0, y = 0, z = 0}, buttonsEnabled = true, movementEnabled = true, scrollWheel = -2, scrollWheelChange = 0, lastScrollWheel = -2}, afterEffectManager = 0x11ac330, particleManager = 0xddc8c0, minimized = false, cullRadius = 1169.03198, cullRadiusSqr = 1366635.75, cullCenter = {x = 4663.72021, y = 21514.498, z = 0}, renderObjectCount = 119, processedRenderObjectCount = 5734, totalRenderObjectCount = 5737, invGlobalScale = 1.87753236, invGlobalScaleSqr = 3.52512789, currentLayerPass = -2, keys = {0 <repeats 104 times>}, flags = {flags = 1}, darkLayer = {useFrameBuffer = true, frameBuffer = {_w = 256, _h = 256, _fitToScreen = false, g_frameBuffer = 3, g_depthRenderBuffer = 3, g_dynamicTextureID = 756, w = 256, h = 256, enabled = true, inited = true}, stretch = 4, quality = 256, active = true, layer = 30, renderLayer = 52, texture = 0, format = 6407}, redBits = 0, greenBits = 0, blueBits = 0, alphaBits = 0, particlesPaused = 0, joystickEnabled = true, joystickOverrideMouse = false, debugLogTextures = true, joystick = {position = {x = 0, y = 0, z = 0}, lastPosition = {x = 0, y = 0, z = 0}, buttons = {UP <repeats 64 times>}, deadZone1 = 0.300000012, deadZone2 = 0.300000012, clearRumbleTime = -0.0170000009, leftTrigger = 0, rightTrigger = 0, leftThumb = false, rightThumb = false, leftShoulder = false, rightShoulder = false, dpadLeft = false, dpadRight = false, dpadUp = false, dpadDown = false, btnStart = false, btnSelect = false, rightStick = {x = 0, y = 0, z = 0}, inited = false, xinited = false, sdl_joy = 0x0, eventfd = -1, effectid = -1, stickIndex = 0, s1ax = 0, s1ay = 1, s2ax = 4, s2ay = 3}, flipMouseButtons = 0, frameBuffer = {_w = -1, _h = -1, _fitToScreen = true, g_frameBuffer = 1, g_depthRenderBuffer = 1, g_dynamicTextureID = 754, w = 2048, h = 2048, enabled = true, inited = true}, joystickAsMouse = false, updateMouse = true, frameOutputMode = false, overrideStartLayer = 0, overrideEndLayer = 0, secondaryTexturePath = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, eventQueue = {eventTimers = {<std::_List_base<EventTimer, std::allocator<EventTimer> >> = {_M_impl = {<std::allocator<std::_List_node<EventTimer> >> = {<__gnu_cxx::new_allocator<std::_List_node<EventTimer> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x7fff7b0427b0, _M_prev = 0x7fff7b0427b0}}}, <No data fields>}}, aspectX = 1680, aspectY = 1050, debugLogActive = true, viewOffX = 140, viewOffY = 0, vw2 = 480, vh2 = 300, center = {x = 400, y = 300, z = 0}, screenModes = {<std::_Vector_base<ScreenMode, std::allocator<ScreenMode> >> = {_M_impl = {<std::allocator<ScreenMode>> = {<__gnu_cxx::new_allocator<ScreenMode>> = {<No data fields>}, <No data fields>}, _M_start = 0xf16fc0, _M_finish = 0xf17014, _M_end_of_storage = 0xf17020}}, <No data fields>}, settings = {renderOn = true, runInBackground = false, updateOn = true, prebufferSounds = false}, dbg_numThreadDecoders = 2, static dbg_numRenderCalls = 4578, fpsDebugString = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, timeUpdateType = TIMEUPDATE_DYNAMIC, fixedFPS = 60, userDataFolder = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xdda348 "/home/tomreyn/.Aquaria"}}, grabInputOnReentry = 0, virtualOffX = 80, virtualOffY = 0, old_dt = 0.0333666615, current_dt = 0.0333666615, debugLogPath = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xdda2d8 "/home/tomreyn/.Aquaria/"}}, _hasFocus = true, lib_graphics = true, lib_sound = false, lib_input = false, clearColor = {x = 0, y = 0, z = 0}, updateCursorFromMouse = true, appName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xdda248 "Aquaria"}}, mouseConstraint = false, mouseCircle = 100, mouseConstraintCenter = {x = 400, y = 300, z = 0}, doScreenshot = false, baseCullRadius = 622.642761, afterEffectManagerLayer = 52, sortEnabled = false, cameraOffset = {x = 0, y = 0, z = 0}, avgFPS = {<std::_Vector_base<float, std::allocator<float> >> = {_M_impl = {<std::allocator<float>> = {<__gnu_cxx::new_allocator<float>> = {<No data fields>}, <No data fields>}, _M_start = 0xddcc60, _M_finish = 0xddccd8, _M_end_of_storage = 0xddccd8}}, <No data fields>}, sortTimer = 10, sortFlag = true, virtualHeight = 600, virtualWidth = 960, shuttingDown = false, quitNestedMainFlag = false, clearedGarbageFlag = false, nestedMains = 1, baseTextureDirectory = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xe15b18 "gfx/"}}, _logOut = <incomplete type>, nowTicks = 934496, thenTicks = 934496, _vsync = 1, _bpp = 32, _fullscreen = true, numSavedScreenshots = 0, _extraDataDir = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}, cursor = 0x1876360, cursorGlow = 0x18736f0, cursorBlinker = 0x187e630, overlay = 0x187b8c0, tfader = 0x187ab50, overlay2 = 0x187bbd0, overlay3 = 0x187a220, overlayRed = 0x187a530, sceneColorOverlay = 0x187a840, bar_left = 0x187c020, bar_right = 0x186eaa0, bar_up = 0x0, bar_down = 0x0, barFade_left = 0x1879790, barFade_right = 0xef1980, texCursor = 0xdf1690, texCursorSwim = 0x16e5a40, texCursorBurst = 0x18121c0, texCursorSing = 0x1750b60, texCursorLook = 0xdf35b0, game = 0x7fa6f7459010, loops = {bg = 0xf24210, bg2 = 0x0, roll = 0x0, charge = 0x0, shield = 0x0, current = 0x0, trip = 0x0}, subtitlePlayer = {subLines = {<std::_Vector_base<SubLine, std::allocator<SubLine> >> = {_M_impl = {<std::allocator<SubLine>> = {<__gnu_cxx::new_allocator<SubLine>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, curLine = 0, vis = false, hidden = false}, nagType = NAG_TOTITLE, elements = {<std::_Vector_base<Element*, std::allocator<Element*> >> = {_M_impl = {<std::allocator<Element*>> = {<__gnu_cxx::new_allocator<Element*>> = {<No data fields>}, <No data fields>}, _M_start = 0x291d430, _M_finish = 0x2928998, _M_end_of_storage = 0x292d430}}, <No data fields>}, firstElementOnLayer = {0x1b03bb0, 0x2a70580, 0x2abab30, 0x351de70, 0x359f4b0, 0x1e74140, 0x0, 0x0, 0x1e7d8b0, 0x0, 0x1e7e570, 0x1e7e8a0, 0x35878c0, 0x0, 0x0, 0x0}, entities = {<std::_Vector_base<Entity*, std::allocator<Entity*> >> = {_M_impl = {<std::allocator<Entity*>> = {<__gnu_cxx::new_allocator<Entity*>> = {<No data fields>}, <No data fields>}, _M_start = 0x3198b00, _M_finish = 0x3199300, _M_end_of_storage = 0x3199300}}, <No data fields>}, useFrameBuffer = true, continuity = {maxHealth = 8, health = 8, hudVisible = true, exp = 2042, seconds = 129046.289, itemSlots = {<std::_Vector_base<int, std::allocator<int> >> = {_M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, zoom = {x = 1, y = 1, z = 0}, naijaModel = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xdf92d8 "Naija"}}, form = FORM_NATURE, formUpgrades = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<FormUpgradeType const, bool> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<FormUpgradeType const, bool> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<FormUpgradeType, FormUpgradeType, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x2bf0930, _M_left = 0x2bf0930, _M_right = 0x2bf0930}, _M_node_count = 1}}}, songBank = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, Song> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, Song> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1cd6930, _M_left = 0xe480a0, _M_right = 0x11dd670}, _M_node_count = 12}}}, knowsSong = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, bool> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, bool> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1ebd7c0, _M_left = 0x1dbe110, _M_right = 0x1ebd520}, _M_node_count = 12}}}, songSlotsToType = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, int> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x11c61d0, _M_left = 0x1c87a00, _M_right = 0x1ea82b0}, _M_node_count = 12}}}, songTypesToSlot = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, int> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1a9f680, _M_left = 0x1b1df70, _M_right = 0x1911670}, _M_node_count = 11}}}, songSlotDescriptions = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x7fff7b042df0, _M_right = 0x7fff7b042df0}, _M_node_count = 0}}}, songSlotNames = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1b2b920, _M_left = 0x1b40ae0, _M_right = 0x11cbc30}, _M_node_count = 12}}}, songSlotVox = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1b322d0, _M_left = 0x1cc03d0, _M_right = 0x19878b0}, _M_node_count = 11}}}, entityFlags = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1cdc140, _M_left = 0x3193740, _M_right = 0xdfcdd0}, _M_node_count = 173}}}, toggleMoveMode = false, gems = {<std::_List_base<GemData, std::allocator<GemData> >> = {_M_impl = {<std::allocator<std::_List_node<GemData> >> = {<__gnu_cxx::new_allocator<std::_List_node<GemData> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x1f7f7a0, _M_prev = 0x1084450}}}, <No data fields>}, beacons = {<std::_List_base<BeaconData, std::allocator<BeaconData> >> = {_M_impl = {<std::allocator<std::_List_node<BeaconData> >> = {<__gnu_cxx::new_allocator<std::_List_node<BeaconData> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x1a63bc0, _M_prev = 0x31cf680}}}, <No data fields>}, voiceOversPlayed = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x1d5aa80, _M_finish = 0x1d5ad40, _M_end_of_storage = 0x1d5ae80}}, <No data fields>}, costume = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1ef9da8 "seahorse"}}, auraType = AURA_NONE, auraTimer = 0, unsortedOrder = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, recipes = {<std::_Vector_base<Recipe, std::allocator<Recipe> >> = {_M_impl = {<std::allocator<Recipe>> = {<__gnu_cxx::new_allocator<Recipe>> = {<No data fields>}, <No data fields>}, _M_start = 0x1dc6740, _M_finish = 0x1dc7598, _M_end_of_storage = 0x1dc7940}}, <No data fields>}, speedMult = 1, biteMult = 1, fishPoison = 1, defenseMult = 1, energyMult = 0, poison = 0, light = 0, petPower = 0, liPower = 0, speedMultTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, biteMultTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, fishPoisonTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, defenseMultTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, liPowerTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, invincibleTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, regenTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, tripTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, energyTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, poisonTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, poisonBitTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, webTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, webBitTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, lightTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, petPowerTimer = {endEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, startEvent = {e = 0x0, _evm = 0 '\000', stateToCall = false, actionMapperCallback = 0x0, actionValue = 0}, running = 0, timer = 0, time = 0}, speedMult2 = 1, naijaEats = {<std::_Vector_base<EatData, std::allocator<EatData> >> = {_M_impl = {<std::allocator<EatData>> = {<__gnu_cxx::new_allocator<EatData>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, petData = {<std::_Vector_base<PetData, std::allocator<PetData> >> = {_M_impl = {<std::allocator<PetData>> = {<__gnu_cxx::new_allocator<PetData>> = {<No data fields>}, <No data fields>}, _M_start = 0x1d499a0, _M_finish = 0x1d499c0, _M_end_of_storage = 0x1d499c0}}, <No data fields>}, ingredientDescriptions = {<std::_Vector_base<IngredientDescription, std::allocator<IngredientDescription> >> = {_M_impl = {<std::allocator<IngredientDescription>> = {<__gnu_cxx::new_allocator<IngredientDescription>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, worldMap = {gw = 0, gh = 0, worldMapTiles = {<std::_Vector_base<WorldMapTile, std::allocator<WorldMapTile> >> = {_M_impl = {<std::allocator<WorldMapTile>> = {<__gnu_cxx::new_allocator<WorldMapTile>> = {<No data fields>}, <No data fields>}, _M_start = 0x1db4450, _M_finish = 0x1db5250, _M_end_of_storage = 0x1db5450}}, <No data fields>}}, stringBank = {stringMap = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1ca7a90, _M_left = 0x206a2e0, _M_right = 0x30d4800}, _M_node_count = 239}}}}, treasureData = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, TreasureDataEntry> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, TreasureDataEntry> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1a4f730, _M_left = 0x3119cd0, _M_right = 0x20b6660}, _M_node_count = 33}}}, poisonBitTime = 1, poisonBitTimeAvatar = 2, lastMenuPage = MENUPAGE_SONGS, lastOptionsMenuPage = MENUPAGE_NONE, dualFormMode = 1, dualFormCharge = 0, foodSortType = 0, sortByType = {<std::_Vector_base<FoodSortOrder, std::allocator<FoodSortOrder> >> = {_M_impl = {<std::allocator<FoodSortOrder>> = {<__gnu_cxx::new_allocator<FoodSortOrder>> = {<No data fields>}, <No data fields>}, _M_start = 0xdfc3e0, _M_finish = 0xdfc5c0, _M_end_of_storage = 0xdfc6e0}}, <No data fields>}, sortByHeal = {<std::_Vector_base<FoodSortOrder, std::allocator<FoodSortOrder> >> = {_M_impl = {<std::allocator<FoodSortOrder>> = {<__gnu_cxx::new_allocator<FoodSortOrder>> = {<No data fields>}, <No data fields>}, _M_start = 0xdf1230, _M_finish = 0xdf1458, _M_end_of_storage = 0xdf1530}}, <No data fields>}, sortByIngredients = {<std::_Vector_base<FoodSortOrder, std::allocator<FoodSortOrder> >> = {_M_impl = {<std::allocator<FoodSortOrder>> = {<__gnu_cxx::new_allocator<FoodSortOrder>> = {<No data fields>}, <No data fields>}, _M_start = 0x11a3700, _M_finish = 0x11a3820, _M_end_of_storage = 0x11a3880}}, <No data fields>}, sortByUnsort = {<std::_Vector_base<FoodSortOrder, std::allocator<FoodSortOrder> >> = {_M_impl = {<std::allocator<FoodSortOrder>> = {<__gnu_cxx::new_allocator<FoodSortOrder>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, statsAndAchievements = 0xdfaff0, eats = {<std::_Vector_base<EatData, std::allocator<EatData> >> = {_M_impl = {<std::allocator<EatData>> = {<__gnu_cxx::new_allocator<EatData>> = {<No data fields>}, <No data fields>}, _M_start = 0xdfb340, _M_finish = 0xdfb620, _M_end_of_storage = 0xdfb740}}, <No data fields>}, speedTypes = {<std::_Vector_base<int, std::allocator<int> >> = {_M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, _M_start = 0xdf8760, _M_finish = 0xdf8780, _M_end_of_storage = 0xdf8780}}, <No data fields>}, story = 1, worldType = WT_NORMAL, items = {<std::_Vector_base<int, std::allocator<int> >> = {_M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, spells = {<std::_Vector_base<int, std::allocator<int> >> = {_M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, flags = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x1f94670, _M_left = 0x1d36560, _M_right = 0x1ca7bd0}, _M_node_count = 4}}}, intFlags = {0 <repeats 20 times>, 1, 350, 0 <repeats 79 times>, 7, 8, 11, 29, 1, 15, 12, 3, 1, 180, 2, 1, 0, 0, 1, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0 <repeats 64 times>, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 79, 90, 0, 0, 0, 0, 1, 0 <repeats 46 times>, 1, 0 <repeats 199 times>, 1 <repeats 18 times>, 0, 0, 1 <repeats 12 times>, 0 <repeats 68 times>, 601, 1, 1, 1, 1, 0 <repeats 45 times>, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1...}, stringFlags = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x7fff7b0445f8, _M_right = 0x7fff7b0445f8}, _M_node_count = 0}}}, ingredients = {<std::_Vector_base<IngredientData*, std::allocator<IngredientData*> >> = {_M_impl = {<std::allocator<IngredientData*>> = {<__gnu_cxx::new_allocator<IngredientData*>> = {<No data fields>}, <No data fields>}, _M_start = 0x1f20d30, _M_finish = 0x1f20e90, _M_end_of_storage = 0x1f20f30}}, <No data fields>}, ingredientData = {<std::_Vector_base<IngredientData*, std::allocator<IngredientData*> >> = {_M_impl = {<std::allocator<IngredientData*>> = {<__gnu_cxx::new_allocator<IngredientData*>> = {<No data fields>}, <No data fields>}, _M_start = 0x1812ba0, _M_finish = 0x1812e08, _M_end_of_storage = 0x1812fa0}}, <No data fields>}, ingredientDisplayNames = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x311b440, _M_left = 0x1c0f260, _M_right = 0x1b3ee00}, _M_node_count = 89}}}}, v = {maxSlowSwimSpeed = 300, maxSwimSpeed = 460, maxBurstSpeed = 700, maxDodgeSpeed = 1000, maxWallJumpSpeed = 1200, maxWallJumpBurstSpeed = 1200, maxDreamWorldSpeed = 200, autoSaveTime = 20, autoSaveFiles = 3, afterEffectsXDivs = 20, afterEffectsYDivs = 20, frictionForce = 160, maxSpringSpeed = 2000, grabSpringPlantVelCap = 600, springTime = 1, zoomStop = 1, zoomMove = 0.519999981, zoomNaija = 1.5, jumpVelocityMod = 20, dodgeTime = 0.100000001, initialId = 6.86814363e+35, initialEgo = 4.59163468e-41, initialSuperEgo = -8.43738732e+35, unusedFPSSmoothing = 30, defaultCameraLerpDelay = 0.100000001, maxOutOfWaterSpeed = 1500, entityDamageTime = 0.100000001, pushTime = 0.5, avatarDamageTime = 1.5}, emote = {emoteTimer = 0, lastVariation = 3, emotes = {<std::_Vector_base<EmoteData, std::allocator<EmoteData> >> = {_M_impl = {<std::allocator<EmoteData>> = {<__gnu_cxx::new_allocator<EmoteData>> = {<No data fields>}, <No data fields>}, _M_start = 0xdf16d0, _M_finish = 0xdf17c0, _M_end_of_storage = 0xdf1850}}, <No data fields>}}, profiles = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, currentProfile = {name = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xdda218 "save"}}}, screenTransition = 0x187ae60, precacher = {renderObjects = {<std::_Vector_base<RenderObject*, std::allocator<RenderObject*> >> = {_M_impl = {<std::allocator<RenderObject*>> = {<__gnu_cxx::new_allocator<RenderObject*>> = {<No data fields>}, <No data fields>}, _M_start = 0x1c387e0, _M_finish = 0x1c39c58, _M_end_of_storage = 0x1c3a7e0}}, <No data fields>}, cleaned = false, loadProgressCallback = 0x0, basedirOverride = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}, initScene = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, modIsSelected = 5, avStart = {x = 0, y = 0, z = 0}, scriptInterface = {baseState = 0x1750eb0, _sballoc = {_blocks = 0xddce20, _allblocks = {<std::_Vector_base<SmallBlockAllocator::Block*, std::allocator<SmallBlockAllocator::Block*> >> = {_M_impl = {<std::allocator<SmallBlockAllocator::Block*>> = {<__gnu_cxx::new_allocator<SmallBlockAllocator::Block*>> = {<No data fields>}, <No data fields>}, _M_start = 0x2b19f00, _M_finish = 0x2b1a040, _M_end_of_storage = 0x2b1a100}}, <No data fields>}, _blockSizeMin = 8, _blockSizeMax = 128, _blockSizeIncr = 8, _elemsPerBlockMin = 64, _elemsPerBlockMax = 2048}}, languagePack = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xddcec8 "english"}}, dialogueFile = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, elementEffects = {<std::_Vector_base<ElementEffect, std::allocator<ElementEffect> >> = {_M_impl = {<std::allocator<ElementEffect>> = {<__gnu_cxx::new_allocator<ElementEffect>> = {<No data fields>}, <No data fields>}, _M_start = 0x18127b0, _M_finish = 0x1812ac0, _M_end_of_storage = 0x1812b30}}, <No data fields>}, voiceOversEnabled = true, recentSaveSlot = 47, gameSpeed = {<Vector> = {x = 1, y = 0, z = 0}, data = 0x32d22b0}, inputMode = INPUT_MOUSE, lastVoiceFile = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, user = {system = {debugLogOn = 1, locale = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, devModeOn = 0, allowDangerousScriptFunctions = 0}, audio = {micOn = 0, octave = 0, voxvol = 0.634921014, sfxvol = 0.596825004, musvol = 0.446031988, subtitles = 1, deviceName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, prebuffer = 0}, video = {blur = 0, noteEffects = 0, fpsSmoothing = 30, resx = 1680, resy = 1050, full = 1, fbuffer = 1, bits = 32, vsync = 1, darkfbuffer = 1, darkbuffersize = 256, saveSlotScreens = 1, parallaxOn0 = 1, parallaxOn1 = 1, parallaxOn2 = 1, numParticles = 2048, displaylists = 0, worldMapRevealMethod = 0}, control = {joystickEnabled = 1, autoAim = 1, targeting = 1, joyCursorSpeed = 900, flipInputButtons = 0, actionSet = {inputSet = {<std::_Vector_base<ActionInput, std::allocator<ActionInput> >> = {_M_impl = {<std::allocator<ActionInput>> = {<__gnu_cxx::new_allocator<ActionInput>> = {<No data fields>}, <No data fields>}, _M_start = 0xe10b30, _M_finish = 0xe10e00, _M_end_of_storage = 0xe10e30}}, <No data fields>}}, s1ax = 0, s1ay = 1, s2ax = 4, s2ay = 3, s1dead = 0.300000012, s2dead = 0.300000012, toolTipsOn = 1}, demo = {warpKeys = 0, intro = 0, shortLogos = 0}, data = {savePage = 11, saveSlot = 47}, version = {settingsVersion = 1}, network = {masterServer = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}}, user_backup = {system = {debugLogOn = 0, locale = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, devModeOn = 0, allowDangerousScriptFunctions = 0}, audio = {micOn = 0, octave = 0, voxvol = 1, sfxvol = 1, musvol = 1, subtitles = 0, deviceName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, prebuffer = 0}, video = {blur = 1, noteEffects = 0, fpsSmoothing = 30, resx = 800, resy = 600, full = 1, fbuffer = 1, bits = 32, vsync = 1, darkfbuffer = 1, darkbuffersize = 256, saveSlotScreens = 1, parallaxOn0 = 1, parallaxOn1 = 1, parallaxOn2 = 1, numParticles = 2048, displaylists = 0, worldMapRevealMethod = 0}, control = {joystickEnabled = 0, autoAim = 1, targeting = 1, joyCursorSpeed = 4, flipInputButtons = 0, actionSet = {inputSet = {<std::_Vector_base<ActionInput, std::allocator<ActionInput> >> = {_M_impl = {<std::allocator<ActionInput>> = {<__gnu_cxx::new_allocator<ActionInput>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}}, s1ax = 0, s1ay = 0, s2ax = 0, s2ay = 0, s1dead = 0.300000012, s2dead = 0.300000012, toolTipsOn = 1}, demo = {warpKeys = 0, intro = 0, shortLogos = 0}, data = {savePage = 0, saveSlot = 0}, version = {settingsVersion = 1}, network = {masterServer = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}}, user_bcontrol = {system = {debugLogOn = 0, locale = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, devModeOn = 0, allowDangerousScriptFunctions = 0}, audio = {micOn = 0, octave = 0, voxvol = 1, sfxvol = 1, musvol = 1, subtitles = 0, deviceName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, prebuffer = 0}, video = {blur = 1, noteEffects = 0, fpsSmoothing = 30, resx = 800, resy = 600, full = 1, fbuffer = 1, bits = 32, vsync = 1, darkfbuffer = 1, darkbuffersize = 256, saveSlotScreens = 1, parallaxOn0 = 1, parallaxOn1 = 1, parallaxOn2 = 1, numParticles = 2048, displaylists = 0, worldMapRevealMethod = 0}, control = {joystickEnabled = 0, autoAim = 1, targeting = 1, joyCursorSpeed = 4, flipInputButtons = 0, actionSet = {inputSet = {<std::_Vector_base<ActionInput, std::allocator<ActionInput> >> = {_M_impl = {<std::allocator<ActionInput>> = {<__gnu_cxx::new_allocator<ActionInput>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}}, s1ax = 0, s1ay = 0, s2ax = 0, s2ay = 0, s1dead = 0.300000012, s2dead = 0.300000012, toolTipsOn = 1}, demo = {warpKeys = 0, intro = 0, shortLogos = 0}, data = {savePage = 0, saveSlot = 0}, version = {settingsVersion = 1}, network = {masterServer = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}}, saveSlotMode = SSM_NONE, inModSelector = false, doScreenTrans = false, selectedSaveSlot = 0x1ee8ec0, disableMiniMapOnNoInput = true, returnToScene = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, demo = {frame = 0, time = 0, timeDiff = 0, frames = {<std::_Vector_base<DemoFrame, std::allocator<DemoFrame> >> = {_M_impl = {<std::allocator<DemoFrame>> = {<__gnu_cxx::new_allocator<DemoFrame>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, mode = -1}, fpsText = 0x187b510, cmDebug = 0x0, console = 0x186fd30, versionLabel = 0x1870080, profRender = 0x0, menuSelectDelay = 0, timer = 0, mod = {mapRevealMethod = REVEAL_UNSPECIFIED, shuttingDown = false, active = false, hasMap = false, blockEditor = false, doRecache = 0, debugMenu = 0, enqueueModStart = 0, name = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, path = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, modcache = {renderObjects = {<std::_Vector_base<RenderObject*, std::allocator<RenderObject*> >> = {_M_impl = {<std::allocator<RenderObject*>> = {<__gnu_cxx::new_allocator<RenderObject*>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, cleaned = true, loadProgressCallback = 0x0, basedirOverride = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}}, modEntries = {<std::_Vector_base<ModEntry, std::allocator<ModEntry> >> = {_M_impl = {<std::allocator<ModEntry>> = {<__gnu_cxx::new_allocator<ModEntry>> = {<No data fields>}, <No data fields>}, _M_start = 0x11a4e40, _M_finish = 0x11a4ef0, _M_end_of_storage = 0x11a4f40}}, <No data fields>}, activePatches = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0xe11000, _M_left = 0xe11000, _M_right = 0xe10e40}, _M_node_count = 2}}}, selectedMod = 0, modSelectorScr = 0x0, achievement_text = 0x1877cb0, achievement_box = 0x18743f0, subtext = 0x18740e0, subbox = 0x1873dd0, font = {font = {header = {tex = 748, tex_width = 256, tex_height = 256, start_char = 32, end_char = 127, chars = 0x19edb20}}, scale = 1, loaded = true, fontTopColor = {x = 0.899999976, y = 0.899999976, z = 1}, fontBtmColor = {x = 0.5, y = 0.800000012, z = 1}, overrideTexture = 0x17508f0}, smallFont = {font = {header = {tex = 749, tex_width = 256, tex_height = 256, start_char = 32, end_char = 127, chars = 0x21c1290}}, scale = 0.600000024, loaded = true, fontTopColor = {x = 0.899999976, y = 0.899999976, z = 1}, fontBtmColor = {x = 0.5, y = 0.800000012, z = 1}, overrideTexture = 0x17508f0}, subsFont = {font = {header = {tex = 751, tex_width = 256, tex_height = 256, start_char = 32, end_char = 127, chars = 0x193a640}}, scale = 0.5, loaded = true, fontTopColor = {x = 1, y = 1, z = 1}, fontBtmColor = {x = 0.5, y = 0.800000012, z = 1}, overrideTexture = 0x17508f0}, goldFont = {font = {header = {tex = 752, tex_width = 256, tex_height = 256, start_char = 32, end_char = 127, chars = 0x1b09e10}}, scale = 1, loaded = true, fontTopColor = {x = 1, y = 0.899999976, z = 0.5}, fontBtmColor = {x = 0.600000024, y = 0.5, z = 0.25}, overrideTexture = 0x17508f0}, smallFontRed = {font = {header = {tex = 750, tex_width = 256, tex_height = 256, start_char = 32, end_char = 127, chars = 0x1d6adb0}}, scale = 0.600000024, loaded = true, fontTopColor = {x = 1, y = 0.899999976, z = 0.899999976}, fontBtmColor = {x = 1, y = 0.800000012, z = 0.5}, overrideTexture = 0x17508f0}, fontArialSmall = {font = 0x19ee430}, fontArialBig = {font = 0x21c1ba0}, fontArialSmallest = {font = 0x1d6b6c0}, arialFontData = 0xe90550 "", arialFontDataSize = 160552, routeShoulder = true, particleBank1 = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xdda278 "data/particles/"}}, particleBank2 = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, shotBank1 = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xdda2a8 "data/shots/"}}, shotBank2 = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}, dsq_filter = 0, difficulty = DSQ::DIFF_NORMAL, weird = 0, cutscene_bg = 0x1877fc0, cutscene_text = 0x18782d0, cutscene_text2 = 0x1878610, cutscenePaused = false, inCutscene = false, _canSkipCutscene = false, skippingCutscene = false, almb = 0xe10b30, armb = 0xe10b48, watchQuitFlag = false, watchForQuit = false, confirmDone = 0, cancel = 0x1ef7420, arrowUp = 0x1ef8da0, arrowDown = 0x1efaef0, noEffectTimer = 0, iter = 0x3198ec0, blackout = 0x1eae740, pecue = {<std::_Vector_base<PECue, std::allocator<PECue> >> = {_M_impl = {<std::allocator<PECue>> = {<__gnu_cxx::new_allocator<PECue>> = {<No data fields>}, <No data fields>}, _M_start = 0x357ce90, _M_finish = 0x357ce90, _M_end_of_storage = 0x357cf90}}, <No data fields>}, voxQueue = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, consoleLines = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0xedfd80, _M_finish = 0xedfe10, _M_end_of_storage = 0xedfe80}}, <No data fields>}, saveSlots = {<std::_Vector_base<AquariaSaveSlot*, std::allocator<AquariaSaveSlot*> >> = {_M_impl = {<std::allocator<AquariaSaveSlot*>> = {<__gnu_cxx::new_allocator<AquariaSaveSlot*>> = {<No data fields>}, <No data fields>}, _M_start = 0x1efbeb0, _M_finish = 0x1efbeb0, _M_end_of_storage = 0x1efbed0}}, <No data fields>}, expText = 0x6f, moneyText = 0x8ad9f0, menu = {<std::_Vector_base<RenderObject*, std::allocator<RenderObject*> >> = {_M_impl = {<std::allocator<RenderObject*>> = {<__gnu_cxx::new_allocator<RenderObject*>> = {<No data fields>}, <No data fields>}, _M_start = 0x1eb68c0, _M_finish = 0x1eb68c0, _M_end_of_storage = 0x1eb68e8}}, <No data fields>}, saveSlotPageCount = 0x1ef7110, shakeCameraTimer = 0, shakeCameraMag = 2, currentPortrait = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}}
        dsqParam = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}
        extraDataDir = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8b1838 <std::string::_Rep::_S_empty_rep_storage@@GLIBCXX_3.4+24> ""}}
        envPath = <optimized out>
tomreyn@atibox:~/aquaria$ 

Compatibility breaking changes that should be done at some point

Should do these in one go.

  • #30
  • #31
  • Save world map exploration data in base64-encoded binary only
  • Switch to Android-compatible Gem list in save file (see Continuity::saveFile()). Possibly autodetect the old format, since we want to stay forward compatible?
  • Update online mod repo: Re-upload affected mods with scripts adjusted to work with the compatibility script from #31

Add mod compatibility scripts to game files

Old mods made for v1.1.1 that use the old scripting interface are currently supported with a shim script that is packaged along with each mod. However that script tends to break with each release, so it would make sense to maintain one script along with the game for all mods that require it.

PS Vita port?

This is a comment more than an issue.
I know that there is a way to play this game in PSP -thanks to Andrew Church-.
This game would play better than the PSP port if we can play it natively on the PS Vita. Now with the Switch port already released maybe someone would do it for the PS Vita.

GNUCC flag -O2

Is there still a reason for gnucc getting -o2 compiler flag by default?

Setting it to -ofast really improves performance on the Pi4. I'd suggest either removing the -o2 flag or adding the info to the readme for low-performance systems.

Declutter resolution selector

Some systems have a HUGE number of entries in the option menu's list of supported screen resolutions since we include each combination of (width, height, framerate).
-> Move the frame rate to its own small box?

Untitled

Maybe grey out the frame rate when in windowed/desktop mode and just show the current frame rate when applicable?

SegF at Aquaria/ScriptInterface.cpp:4719

While swimming around with my nautilus companion and Li in the Abyss, I ran into a SegF on this (fully patched) Ubuntu 14.04 x86_64 system, running my own Debug build of the experimental branch (HEAD as of today).

A core file was written (due to ulimit -c unlimited), which I then analyzed:

tomreyn@atibox:~/aquaria$ gdb -q -n -ex "bt" -batch aquaria.debug-dynamic core

warning: core file may not match specified executable file.
[New LWP 19506]
[New LWP 19511]
[New LWP 19510]
[New LWP 19509]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./aquaria.debug-dynamic'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  l_entity_damage (L=0x3d76e00) at /home/tomreyn/SCM/aquaria/Aquaria/ScriptInterface.cpp:4719
4719            didDamage = e->damage(d);
#0  l_entity_damage (L=0x3d76e00) at /home/tomreyn/SCM/aquaria/Aquaria/ScriptInterface.cpp:4719
#1  0x00007fb9bf3d6f78 in luaD_precall (L=L@entry=0x3d76e00, func=0x3df90c0, nresults=nresults@entry=0) at ldo.c:320
#2  0x00007fb9bf3e16af in luaV_execute (L=L@entry=0x3d76e00, nexeccalls=nexeccalls@entry=1) at lvm.c:591
#3  0x00007fb9bf3d73cd in luaD_call (L=0x3d76e00, func=0x3df9090, nResults=<optimized out>) at ldo.c:378
#4  0x00007fb9bf3d66eb in luaD_rawrunprotected (L=L@entry=0x3d76e00, f=f@entry=0x7fb9bf3d2050 <f_call>, ud=ud@entry=0x7fffc4486f40) at ldo.c:116
#5  0x00007fb9bf3d755a in luaD_pcall (L=L@entry=0x3d76e00, func=func@entry=0x7fb9bf3d2050 <f_call>, u=u@entry=0x7fffc4486f40, old_top=32, ef=<optimized out>) at ldo.c:464
#6  0x00007fb9bf3d334d in lua_pcall (L=0x3d76e00, nargs=2, nresults=0, errfunc=<optimized out>) at lapi.c:821
#7  0x0000000000548eff in Script::doCall (this=0x318b970, nparams=nparams@entry=2, nrets=nrets@entry=0) at /home/tomreyn/SCM/aquaria/Aquaria/ScriptInterface.cpp:11287
#8  0x000000000054910d in Script::call (this=<optimized out>, name=name@entry=0x644d38 "update", param1=param1@entry=0x3dae2e0, param2=0, param2@entry=0,0333333276) at /home/tomreyn/SCM/aquaria/Aquaria/ScriptInterface.cpp:11337
#9  0x0000000000535297 in ScriptedEntity::onUpdate (this=0x3dae2e0, dt=0,0333333276) at /home/tomreyn/SCM/aquaria/Aquaria/ScriptedEntity.cpp:520
#10 0x00000000005cae26 in RenderObject::update (this=this@entry=0x3dae2e0, dt=dt@entry=0,0333333276) at /home/tomreyn/SCM/aquaria/BBGE/RenderObject.cpp:1116
#11 0x000000000049c1a3 in Entity::update (this=0x3dae2e0, dt=0,0333333276) at /home/tomreyn/SCM/aquaria/Aquaria/Entity.cpp:1173
#12 0x000000000059e9b6 in Core::updateRenderObjects (this=this@entry=0x7fffc4487260, dt=0,0333333276) at /home/tomreyn/SCM/aquaria/BBGE/Core.cpp:2776
#13 0x000000000040b972 in Core::main (this=this@entry=0x7fffc4487260, runTime=runTime@entry=-1) at /home/tomreyn/SCM/aquaria/BBGE/Core.cpp:3101
#14 0x0000000000409cc6 in main (argc=<optimized out>, argv=<optimized out>) at /home/tomreyn/SCM/aquaria/Aquaria/Main.cpp:113
tomreyn@atibox:~/aquaria$ 

Error at 33% when attempting make on RPi4

I have been attempting a build on the new Raspberry Pi 4 (Retropie). Following the instructions, I get the following error at 33%:

..Aquaria/BBGE/Base.cpp:1191:8:SIGTRAP was not declared in this scope raise(SIGTRAP)

and building halts.

EDIT: Adding signal.h to the includes of that file fixes it.

Multithreading

Aquaria is inherently a single-threaded game but there are some areas that can be MT'd.

I'd like to use tws instead of fumbling with threads directly. One IO thread, #cores worker threads.

List of ideas, to-be-extended:

  • Do NOT want to MT OpenGL. No GL function call on any other thread than main!

  • Texture batch loading. Loading PNGs takes forever. On game start and when a map is loaded, the game loads in a ton of textures. The IO should be done by an IO thread and then PNG decoding passed off to a worker. Requires glpng rework, see #74.

    • Optimization, if glMapBuffer() is available: Map a GPU buffer, kick off decoding PNG data into the buffer in a separate thread, when done do glTexImage2D() using that buffer as GL_PIXEL_UNPACK_BUFFER in the main thread. So the GPU can still do the texture prep in the background.
  • Rendering:

    • Layer traversal can be MT'd: One job per RenderLayer that accumulates objects to render in a list. One list per layer. Kick off lists in order once all are done. Not sure how much this is worth. Would greatly simplify future OpenGL decoupling if the renderer doesn't need to know about layers and object hierarchies and whatnot.
    • Minimap? Rendering the minimap seems to be quite expensive. Could prepare a vertex buffer in background.
    • GridRender? Could also recalc a vertex buffer whenever the map changes or the camera has moved far enough.
  • Pathfinding:

    • Simple pathfinding: Make Entity::moveToPos() kick off a background job and start to move a few frames later once the path has been calculated. Avoids lag spikes. Need to handle entity or map deletion while a job is active.
    • Advanced (not used by vanilla): See PathFinding::beginFindPath(). Can calculate the entire path in background instead of incremental updates per frame.
  • Schoolfish update: FlockEntity::updateFlockData()

Recipe list: Vedha sea crisp: Excess blank space

There appears to be an extra blank space in the "Any B_one" ingredient to Vedha sea crisp on the recipes list:

aquaria_recipes_typo_excess_blank_space

Indeed thats a super mini bug, but it still seems wrong and - I assume - will be easy to fix. I was looking at the text files in files/data but could not immediately spot what would be wrong there.

Consider automating builds using Travis (or other) CI

Continuous integration allows you to quickly tell whether or not your latest commits are building fine. You could also use it to build test builds for those willing to test but unable / unwilling to build themselves.

Travis CI is a free-for-free-software hosted platform which combines a central CI system with free (Ubuntu 12.04 LTS running in OpenVZ containers) build nodes, supporting several versions of gcc and clang, which integrates well with GitHub. (There are alternatives to Travis, some of which also provide free Windows builds - let me know if interested or just check the comparison on Wikpedia)

Getting started with Travis CI is easy. Here's an example .travis.yml file which is used to build MegaGlest using both gcc/cpp and clang/clang++:
https://github.com/MegaGlest/megaglest-source/blob/develop/.travis.yml
(You will find many more on GitHub.)

Your .travis.yml file needs to be placed in the main repository directory of the branches you wish to build. Then you can login at https://travis-ci.org/ (you can and must use your existing GitHub account via OpenID to do so), select what you want built, and that's it. On your next commit to any watched branch, your code will be automatically built and you will receive notifications as configured.

Here's an example Aquaria .travis.yml (and a Linux build script in case you prefer to place the build commands in the repository as a whole and just call this script when building - makes it easier to modify plus you get free versioning):
https://gist.github.com/tomreyn/2ed4ed1c4937a6f56bb0

bundled glfont2 is non-free (not redistributable in modified form)

According to the latest archived version of the original Brad Fish's glfont2 website (https://web.archive.org/web/20130511220912/http://students.cs.byu.edu/~bfish/glfont2.php#Distribution), it's not permitted to distribute modified copies of glfont2, and the copy included in Aquaria is modified. The license is thus incompatible with GPL version 2, under which most of Aquaria is licensed. I'd recommend porting the remaining uses of this API to FTGL, which is used elsewhere in the code already.

Please disregard the above if you have a written statement from Brad re-licensing the glfont2 code under a GPLv2-compatible license.

clicking is ignored (GOG's aquaria)

I just built Aquaria using instructions in README (I also had to sudo apt-get install libsdl1.2-dev libopenal-dev) and I'm running it with this script:

#!/bin/sh
export AQUARIA_DATA_PATH="$HOME/local/GOG Games/Aquaria/game"
exec "$HOME/vcs.upstream/Aquaria/cmake-build/aquaria"

Game seems to start fine, but all mouse clicks are ignored. I can move the mouse around and cursor does change when hovering above a button, but nothing happens when I click. All I can do is to hit Ctrl-Alt-F3 to switch outside X, log in and killall aquaria.

I tried to run from terminal as well but no interesting output is logged (just the hint about rumble). Also tried to change resolution and run in windowed mode; no avail.

This is Debian Jessie with Aquaria from GOG (v2.0.0.4 / 1.1.3).

Please let me know what info should I provide.

Make haptics optional

In the controllerfixup branch, SDL will fail to initialize if it was compiled without haptics support. IMO haptics should be initialized separately so it can fail gracefully and just not use them.

Non-existing textures are sometimes displayed (e.g. capes on constumes which don't have one)

Steps to reproduce:

  • Obtain a costume without a cape (e.g. seahorse) and wear it
  • Save the game and quit
  • Load the game again, an empty sprite appears as a cape:

2020123021150600-FD9C2C2EDC9ABCBFF4553C95203A203B

Root causes:

  • Costumes without a cape rely on a failure to load a non-existent sprite, gfx/naija/cape-costume_name.png. In general, relying of a failure handling mechanism for normal execution is buggy.
  • RenderObject::setTexture creates a texture even if the file is not found. This avoids crashes on missing textures, but on the other hand errors with missing textures are masked until the missing texture is clearly visible by the user.

A possible stop-gap fix is dimag0g@4238741

Rework Cmake files

Current CMakeLists.txt is long and messy and not suitable for generating proper project files one can work with.

Should be split into smaller files, into proper sub-projects, and reference header files properly.

#ifdef BBGE_BUILD_SDL2

Should get rid of #ifdef BBGE_BUILD_SDL2 at some point and replace those with #if SDL_VERSION_ATLEAST(2,0,0).
SDL2 can be autodetected at compile time, might as well make use of that.

-DAQUARIA_INTERNAL_TINYXML2=off build fails when tinyxml2 >= 5.0.0

Regressed by leethomason/tinyxml2@584af570860b, see also leethomason/tinyxml2#498.

Aquaria/Continuity.cpp:(.text+0x1684e): undefined reference to `tinyxml2::StrPair::GetStr()'
CMakeFiles/aquaria.dir/Aquaria/DSQ.cpp.o: In function `DSQ::loadModsCallback(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, long)':
Aquaria/DSQ.cpp:(.text+0x1014e): undefined reference to `tinyxml2::StrPair::GetStr()'
c++: error: linker command failed with exit code 1 (use -v to see invocation)

http://beefy9.nyi.freebsd.org/data/110amd64-default/444089/logs/aquaria-1.002.22_1.log

Bone collision mask with scaled bones

When a bone's scale factor (sz="...") is not (1, 1) and collision masks are generated, they appear to be wrong.

collisionmask

  • FIgure out whether the debug draw code or the generation code is broken
  • Aren't the circles supposed to be the same size no matter the size of the bone, since the mask generation is supposed to be equal-spaced? Might actually be the drawing code that's wrong because the circles are drawn using the bone's transform.

"many enhancements"

The repo description mentions many enhancements over the icculus repo. We should probably list those :)

Where can I find appropriate game assets?

Hello. Can I or can I not use data files downloaded from Steam with these sources? I have installed the game from FreeBSD port (version 1.002.22). The game starts and crashes after a few seconds (showing some startup cinematic). I suspect that the assets are from another version.

Do you maintain the game on Steam? Can you tell is there any difference?

Native resolution

In the options the native screen resolution is offered when you're choosing game resolution.
But if the native resolution is already known, why wouldn't the game just start in it?

Cocoa.mm fails building on Mac PPC

On iMac G5, Cocoa.mm fails with:

/Users/markh/Documents/C++Projects/Aquaria_clean/BBGE/Cocoa.mm:14: error: stray ‘@’ in program
/Users/markh/Documents/C++Projects/Aquaria_clean/BBGE/Cocoa.mm:15: error: stray ‘@’ in program
/Users/markh/Documents/C++Projects/Aquaria_clean/BBGE/Cocoa.mm:16: error: stray ‘@’ in program
/Users/markh/Documents/C++Projects/Aquaria_clean/BBGE/Cocoa.mm: In function ‘void cocoaMessageBox(const std::string&, const std::string&)’:
/Users/markh/Documents/C++Projects/Aquaria_clean/BBGE/Cocoa.mm:14: error: ‘autoreleasepool’ was not declared in this scope
/Users/markh/Documents/C++Projects/Aquaria_clean/BBGE/Cocoa.mm:14: error: expected `;' before ‘{’ token

Windres flags are wrong(?) in MinGW/MSYS

Windres can't add icons to Aquaria.exe

[  8%] Building RC object CMakeFiles/aquaria.dir/aquaria.rc.obj
/C/msys64/usr/bin/windres: invalid option -- p
Usage: /C/msys64/usr/bin/windres [option(s)] [input-file] [output-file]
 The options are:
  -i --input=<file>            Name input file
  -o --output=<file>           Name output file
  -J --input-format=<format>   Specify input format
  -O --output-format=<format>  Specify output format
  -F --target=<target>         Specify COFF target
     --preprocessor=<program>  Program to use to preprocess rc file
     --preprocessor-arg=<arg>  Additional preprocessor argument
  -I --include-dir=<dir>       Include directory when preprocessing rc file
  -D --define <sym>[=<val>]    Define SYM when preprocessing rc file
  -U --undefine <sym>          Undefine SYM when preprocessing rc file
  -v --verbose                 Verbose - tells you what it's doing
  -c --codepage=<codepage>     Specify default codepage
  -l --language=<val>          Set language when reading rc file
     --use-temp-file           Use a temporary file instead of popen to read
                               the preprocessor output
     --no-use-temp-file        Use popen (default)
  -r                           Ignored for compatibility with rc
  @<file>                      Read options from <file>
  -h --help                    Print this help message
  -V --version                 Print version information
FORMAT is one of rc, res, or coff, and is deduced from the file name
extension if not specified.  A single file name is an input file.
No input-file is stdin, default rc.  No output-file is stdout, default rc.
/C/msys64/usr/bin/windres: supported targets: pe-x86-64 pei-x86-64 pe-bigobj-x86-64 elf64-x86-64 elf64-l1om elf64-k1om pe-i386 pei-i386 elf32-i386 elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex
make[2]: *** [CMakeFiles/aquaria.dir/build.make:2763: CMakeFiles/aquaria.dir/aquaria.rc.obj] Error 1
make[1]: *** [CMakeFiles/Makefile2:70: CMakeFiles/aquaria.dir/all] Error 2
make: *** [Makefile:128: all] Error 2

Now, CMakeFiles\aquaria.dir\flags.make contains this line:
RC_FLAGS = -pipe -fsigned-char -fno-stack-protector
Assuming that -pipe is the -p windres complains about, I removed it and compilation went on, but at a later stage windres also complaint about -f, so I removed the second flag, and then the third (after another error). Removing all three results in aquaria.rc.obj, but it's wrong or something, since later I get this error:

[ 44%] Linking CXX executable aquaria.exe
CMakeFiles/aquaria.dir/objects.a: member CMakeFiles/aquaria.dir/objects.a(aquaria.rc.obj) in archive is not an object
collect2.exe: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/aquaria.dir/build.make:6127: aquaria.exe] Error 1
make[1]: *** [CMakeFiles/Makefile2:70: CMakeFiles/aquaria.dir/all] Error 2
make: *** [Makefile:128: all] Error 2

The only way I can compile is by removing line 351 in CMakeLists.txt [SET(OPTIONAL_SRCS ${OPTIONAL_SRCS} aquaria.rc)], which results in exe without icon. OFC, this is a minor issue, but still...

Get rid of ACTION_MENU*

Get rid of ACTION_MENULEFT & friends and replace with ACTION_SWIMLEFT & friends.
Result: Easier key setup, less keys to remember, less UI clutter, only one set of keys for UI and in-game navigation. (Why was this there to begin with...?)

Crashing when spamming ignis

Built on OSX 10.10.3:

Randomly crashes after using ignis (energy temple) after about 2 min.
Built using included Libs.

Process:               aquaria [19307]
Path:                  /Users/USER/Documents/*/aquaria
Identifier:            aquaria
Version:               0
Code Type:             X86-64 (Native)
Parent Process:        bash [19221]
Responsible:           Terminal [19216]
User ID:               501

Date/Time:             2015-09-13 15:58:06.643 -0700
OS Version:            Mac OS X 10.10.3 (14D136)
Report Version:        11
Anonymous UUID:        E3B2C8D0-D09D-A6CE-C9C4-DB68B601D52B

Sleep/Wake UUID:       CE9B514E-2575-4605-947E-3BF414AF19F2

Time Awake Since Boot: 47000 seconds
Time Since Wake:       1400 seconds

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGSEGV)
Exception Codes:       0x0000000000000000, 0x0000000000000000

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.driver.AppleIntelHD3000GraphicsGLDriver   0x0000123400071bf0 GHAL3D::CGen4IndirectStateMemoryManager::SetIndirectStateInactive() + 0
1   com.apple.driver.AppleIntelHD3000GraphicsGLDriver   0x00001234002ba489 GHAL3D::CGen6PrivateStateProcessor::BindIndirectState() + 361
2   com.apple.driver.AppleIntelHD3000GraphicsGLDriver   0x00001234002ba183 GHAL3D::CGen6PrivateStateProcessor::BindPipeline() + 131
3   com.apple.driver.AppleIntelHD3000GraphicsGLDriver   0x0000123400025222 glrAppleSyncState + 80
4   com.apple.driver.AppleIntelHD3000GraphicsGLDriver   0x000012340002501a GHALSendPrimitive + 347
5   GLEngine                        0x00007fff81b0c7fa glEnd_Exec + 58
6   aquaria                         0x000000010b91b813 Quad::onRender() + 867
7   aquaria                         0x000000010b920f59 RenderObject::renderCall() + 1577
8   aquaria                         0x000000010b7f04eb Element::render() + 331
9   aquaria                         0x000000010b92307e RenderObjectLayer::renderPass(int) + 542
10  aquaria                         0x000000010b8faf87 Core::render(int, int, bool) + 1303
11  aquaria                         0x000000010b8fa352 Core::SDL_main(float) + 2898
12  aquaria                         0x000000010b84fdbf SDL_main + 159
13  aquaria                         0x000000010ba54ee1 -[SDLMain applicationDidFinishLaunching:] + 49
14  com.apple.CoreFoundation        0x00007fff8e63045c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
15  com.apple.CoreFoundation        0x00007fff8e520634 _CFXNotificationPost + 3140
16  com.apple.Foundation            0x00007fff83a189d1 -[NSNotificationCenter postNotificationName:object:userInfo:] + 66
17  com.apple.AppKit                0x00007fff84f69b9b -[NSApplication _postDidFinishNotification] + 291
18  com.apple.AppKit                0x00007fff84f69906 -[NSApplication _sendFinishLaunchingNotification] + 191
19  com.apple.AppKit                0x00007fff84f66a56 -[NSApplication(NSAppleEventHandling) _handleAEOpenEvent:] + 574
20  com.apple.AppKit                0x00007fff84f66495 -[NSApplication(NSAppleEventHandling) _handleCoreEvent:withReplyEvent:] + 244
21  com.apple.Foundation            0x00007fff83a4b748 -[NSAppleEventManager dispatchRawAppleEvent:withRawReply:handlerRefCon:] + 290
22  com.apple.Foundation            0x00007fff83a4b5b9 _NSAppleEventManagerGenericHandler + 102
23  com.apple.AE                    0x00007fff8271434c aeDispatchAppleEvent(AEDesc const*, AEDesc*, unsigned int, unsigned char*) + 531
24  com.apple.AE                    0x00007fff827140c9 dispatchEventAndSendReply(AEDesc const*, AEDesc*) + 31
25  com.apple.AE                    0x00007fff82713fd3 aeProcessAppleEvent + 295
26  com.apple.HIToolbox             0x00007fff85dabc6e AEProcessAppleEvent + 56
27  com.apple.AppKit                0x00007fff84f5feb2 _DPSNextEvent + 2249
28  com.apple.AppKit                0x00007fff84f5ef68 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 346
29  com.apple.AppKit                0x00007fff84f54bf3 -[NSApplication run] + 594
30  aquaria                         0x000000010ba5553f main + 1295
31  libdyld.dylib                   0x00007fff826285c9 start + 1

Thread 1:: Dispatch queue: com.apple.libdispatch-manager
0   libsystem_kernel.dylib          0x00007fff88de6232 kevent64 + 10
1   libdispatch.dylib               0x00007fff8b300a6a _dispatch_mgr_thread + 52

Thread 2:
0   libsystem_kernel.dylib          0x00007fff88de04de mach_msg_trap + 10
1   libsystem_kernel.dylib          0x00007fff88ddf64f mach_msg + 55
2   com.apple.CoreFoundation        0x00007fff8e582eb4 __CFRunLoopServiceMachPort + 212
3   com.apple.CoreFoundation        0x00007fff8e58237b __CFRunLoopRun + 1371
4   com.apple.CoreFoundation        0x00007fff8e581bd8 CFRunLoopRunSpecific + 296
5   com.apple.AppKit                0x00007fff8502766b _NSEventThread + 137
6   libsystem_pthread.dylib         0x00007fff8178d268 _pthread_body + 131
7   libsystem_pthread.dylib         0x00007fff8178d1e5 _pthread_start + 176
8   libsystem_pthread.dylib         0x00007fff8178b41d thread_start + 13

Thread 3:: com.apple.audio.IOThread.client
0   libsystem_kernel.dylib          0x00007fff88de04de mach_msg_trap + 10
1   libsystem_kernel.dylib          0x00007fff88ddf64f mach_msg + 55
2   com.apple.audio.CoreAudio       0x00007fff89cc957e HALB_MachPort::SendMessageWithReply(unsigned int, unsigned int, unsigned int, unsigned int, mach_msg_header_t*, bool, unsigned int) + 98
3   com.apple.audio.CoreAudio       0x00007fff89cc950c HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int) + 42
4   com.apple.audio.CoreAudio       0x00007fff89cc7aa9 HALC_ProxyIOContext::IOWorkLoop() + 965
5   com.apple.audio.CoreAudio       0x00007fff89cc7612 HALC_ProxyIOContext::IOThreadEntry(void*) + 88
6   com.apple.audio.CoreAudio       0x00007fff89cc74e3 HALB_IOThread::Entry(void*) + 157
7   libsystem_pthread.dylib         0x00007fff8178d268 _pthread_body + 131
8   libsystem_pthread.dylib         0x00007fff8178d1e5 _pthread_start + 176
9   libsystem_pthread.dylib         0x00007fff8178b41d thread_start + 13

Thread 4:
0   aquaria                         0x000000010b94e1de OggDecoder::~OggDecoder() + 14
1   aquaria                         0x000000010b94d5ad OggDecoder::decode_loop(OggDecoder*) + 461
2   libSDL-1.2.0.dylib              0x000000010bbd0cf6 SDL_RunThread + 53
3   libSDL-1.2.0.dylib              0x000000010bbf22e2 RunThread + 9
4   libsystem_pthread.dylib         0x00007fff8178d268 _pthread_body + 131
5   libsystem_pthread.dylib         0x00007fff8178d1e5 _pthread_start + 176
6   libsystem_pthread.dylib         0x00007fff8178b41d thread_start + 13

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x00001234003702f0  rbx: 0x00007f8dbb833800  rcx: 0x0000000000000000  rdx: 0x0000000000000000
  rdi: 0x00007f8dbb447c90  rsi: 0x0000001f62000000  rbp: 0x00007fff544a22c0  rsp: 0x00007fff544a2298
   r8: 0x0000000000000040   r9: 0x0000000000005400  r10: 0x0000000000000000  r11: 0x0000000000002c00
  r12: 0x00007f8dbb833800  r13: 0x00007f8dbc08fa00  r14: 0x00007f8dbb833200  r15: 0x00007f8dbb452c10
  rip: 0x0000123400071bf0  rfl: 0x0000000000000202  cr2: 0x000000011a3f6008

Logical CPU:     0
Error Code:      0x00000000
Trap Number:     222


Binary Images:
       0x10b759000 -        0x10baf0fff +aquaria (0) <A0643F37-8718-3260-A684-2323910AFCDB> /Users/USER/Documents/*/aquaria
       0x10bbc3000 -        0x10bbfcff7 +libSDL-1.2.0.dylib (0) <6683A094-A8AC-3895-83B3-F8B31D758AAC> /usr/local/lib/libSDL-1.2.0.dylib
       0x10bc0e000 -        0x10bc34ff7  com.apple.audio.OpenAL (1.8 - 1.8) <B05578A8-FE08-310C-BF91-C1BDE10858CD> /System/Library/Frameworks/OpenAL.framework/Versions/A/OpenAL
       0x110e72000 -        0x110e7ffff  libGPUSupport.dylib (11.1.2) <CD0658F0-A1B3-3D12-8F60-D72849640B04> /System/Library/PrivateFrameworks/GPUSupport.framework/Versions/A/Libraries/libGPUSupport.dylib
       0x1117e3000 -        0x111a00ff3  com.apple.audio.units.Components (1.12 - 1.12) <AC14ADC7-587F-3E0F-92E7-9D8C07753C22> /System/Library/Components/CoreAudio.component/Contents/MacOS/CoreAudio
       0x111abc000 -        0x111ac0fff  com.apple.audio.AppleHDAHALPlugIn (272.18 - 272.18) <BCBCD7EE-C5ED-3558-8176-70BFC88925B1> /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn
    0x123400000000 -     0x12340036efff  com.apple.driver.AppleIntelHD3000GraphicsGLDriver (10.0.31 - 10.0.0) <9F684763-8916-3C35-8F81-CCA8E3B00B16> /System/Library/Extensions/AppleIntelHD3000GraphicsGLDriver.bundle/Contents/MacOS/AppleIntelHD3000GraphicsGLDriver
    0x7fff6c6ef000 -     0x7fff6c725837  dyld (353.2.1) <65DCCB06-339C-3E25-9702-600A28291D0E> /usr/lib/dyld
    0x7fff816f9000 -     0x7fff81743ff7  com.apple.HIServices (1.22 - 522.1) <E8BD41E4-7747-3CAF-807A-5CA9AD16B525> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
    0x7fff81744000 -     0x7fff8177ffff  com.apple.QD (301 - 301) <C4D2AD03-B839-350A-AAF0-B4A08F8BED77> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
    0x7fff81780000 -     0x7fff81789fff  libGFXShared.dylib (11.1.2) <0BAF2EA8-3BC4-3BF4-ABB6-A6E0A1F3F6A5> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
    0x7fff8178a000 -     0x7fff81793fff  libsystem_pthread.dylib (105.10.1) <3103AA7F-3BAE-3673-9649-47FFD7E15C97> /usr/lib/system/libsystem_pthread.dylib
    0x7fff81794000 -     0x7fff818d1fff  com.apple.ImageIO.framework (3.3.0 - 1237) <138A800C-14B7-36C2-AB04-E162602C97E3> /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
    0x7fff819af000 -     0x7fff819b1fff  com.apple.loginsupport (1.0 - 1) <DAAD7013-A19D-3858-BFF7-DE1DAF664401> /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport
    0x7fff819b2000 -     0x7fff81a26ffb  com.apple.securityfoundation (6.0 - 55126) <42589E18-D38C-3E25-B638-6E29740C224C> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
    0x7fff81af0000 -     0x7fff81c9ffff  GLEngine (11.1.2) <68FDFD73-F15C-3460-9984-10F5DEF79907> /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLEngine.bundle/GLEngine
    0x7fff81ca0000 -     0x7fff81fa2ffb  com.apple.GeoServices (1.0 - 1077.0.18) <2BBF8B44-DD46-3432-8C84-6D6AA004C233> /System/Library/PrivateFrameworks/GeoServices.framework/Versions/A/GeoServices
    0x7fff8203b000 -     0x7fff8223546f  libobjc.A.dylib (647) <759E155D-BC42-3D4E-869B-6F57D477177C> /usr/lib/libobjc.A.dylib
    0x7fff822c5000 -     0x7fff8232cff7  com.apple.framework.CoreWiFi (3.0 - 300.4) <19269C1D-EB29-384A-83F3-7DDDEB7D9DAD> /System/Library/PrivateFrameworks/CoreWiFi.framework/Versions/A/CoreWiFi
    0x7fff8232d000 -     0x7fff8234efff  com.apple.framework.Apple80211 (10.3 - 1030.71.6) <D3862426-2586-3DF7-BA75-9A184FCD74C4> /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211
    0x7fff8234f000 -     0x7fff82433fff  libcrypto.0.9.8.dylib (52.20.2) <977DA067-2588-3BF8-A7B2-F08FC6E9088F> /usr/lib/libcrypto.0.9.8.dylib
    0x7fff82434000 -     0x7fff82444ff7  libbsm.0.dylib (34) <A3A2E56C-2B65-37C7-B43A-A1F926E1A0BB> /usr/lib/libbsm.0.dylib
    0x7fff82551000 -     0x7fff82551ff7  libunc.dylib (29) <5676F7EA-C1DF-329F-B006-D2C3022B7D70> /usr/lib/system/libunc.dylib
    0x7fff82552000 -     0x7fff825a6fff  libc++.1.dylib (120) <1B9530FD-989B-3174-BB1C-BDC159501710> /usr/lib/libc++.1.dylib
    0x7fff825b2000 -     0x7fff82624fff  com.apple.framework.IOKit (2.0.2 - 1050.20.2) <09C0518C-90DF-3FC3-96D6-34D35F72C8EF> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x7fff82625000 -     0x7fff82628ff7  libdyld.dylib (353.2.1) <9EACCA38-291D-38CC-811F-7E9D1451E2D3> /usr/lib/system/libdyld.dylib
    0x7fff82666000 -     0x7fff826fbff7  com.apple.ColorSync (4.9.0 - 4.9.0) <9150C2B7-2E6E-3509-96EA-7B3F959F049E> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync
    0x7fff826fc000 -     0x7fff82700ff7  libGIF.dylib (1237) <0990002D-CA11-325D-A432-3A333F2CC088> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
    0x7fff82701000 -     0x7fff82709ff7  com.apple.icloud.FindMyDevice (1.0 - 1) <9CE67F85-2BA8-3093-97BA-07BF5C04A5D6> /System/Library/PrivateFrameworks/FindMyDevice.framework/Versions/A/FindMyDevice
    0x7fff8270a000 -     0x7fff82769fff  com.apple.AE (681.2 - 681.2) <181B3B06-2DC6-3E4D-B44A-2551C5E9CF6F> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
    0x7fff8276a000 -     0x7fff8276efff  libcache.dylib (69) <45E9A2E7-99C4-36B2-BEE3-0C4E11614AD1> /usr/lib/system/libcache.dylib
    0x7fff82817000 -     0x7fff8281bfff  libCoreVMClient.dylib (79.1) <201EF6DF-5074-3CB7-A361-398CF957A264> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
    0x7fff8281c000 -     0x7fff82825ff7  libsystem_notify.dylib (133.1.1) <61147800-F320-3DAA-850C-BADF33855F29> /usr/lib/system/libsystem_notify.dylib
    0x7fff82b65000 -     0x7fff82c74ff3  com.apple.desktopservices (1.9.3 - 1.9.3) <FEE11342-5BC4-37A7-8169-DA48BE17B9C9> /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
    0x7fff82ca3000 -     0x7fff82cbdff3  com.apple.Ubiquity (1.3 - 313) <DF56A657-CC6E-3BE2-86A0-71F07127724C> /System/Library/PrivateFrameworks/Ubiquity.framework/Versions/A/Ubiquity
    0x7fff82cd8000 -     0x7fff82cd8ff7  libkeymgr.dylib (28) <77845842-DE70-3CC5-BD01-C3D14227CED5> /usr/lib/system/libkeymgr.dylib
    0x7fff82cd9000 -     0x7fff82ce4fff  libGL.dylib (11.1.2) <BF99CC65-215A-3C7D-87D7-3F7EE6E9B3DD> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
    0x7fff82cf1000 -     0x7fff82d37ff7  libauto.dylib (186) <A260789B-D4D8-316A-9490-254767B8A5F1> /usr/lib/libauto.dylib
    0x7fff82dd1000 -     0x7fff82dd2ff7  libsystem_blocks.dylib (65) <9615D10A-FCA7-3BE4-AA1A-1B195DACE1A1> /usr/lib/system/libsystem_blocks.dylib
    0x7fff82dd3000 -     0x7fff82e75fff  com.apple.Bluetooth (4.3.4 - 4.3.4f4) <A1120885-F31B-3C13-9B0D-2589F391CC7A> /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
    0x7fff82e79000 -     0x7fff82e7aff7  com.apple.print.framework.Print (10.0 - 265) <3BC4FE7F-78A0-3E57-8F4C-520E7EFD36FA> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
    0x7fff82e7b000 -     0x7fff82eb2ffb  com.apple.LDAPFramework (2.4.28 - 194.5) <CAFB9695-000F-34EA-8DF5-09996929C26A> /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP
    0x7fff82eb3000 -     0x7fff82ed9fff  com.apple.ChunkingLibrary (2.1 - 163.6) <29D4CB95-42EF-34C6-8182-BDB6F7BB1E79> /System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary
    0x7fff82eda000 -     0x7fff82f58fff  com.apple.CoreServices.OSServices (640.4 - 640.4) <20121A5E-7AB5-3624-8CF0-3562F97C8A95> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
    0x7fff82f59000 -     0x7fff83109ff3  com.apple.QuartzCore (1.10 - 361.18) <ACA61D8F-9535-3141-8FDD-AC3EF6BF0806> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
    0x7fff8329d000 -     0x7fff832a2ff7  libmacho.dylib (862) <126CA2ED-DE91-308F-8881-B9DAEC3C63B6> /usr/lib/system/libmacho.dylib
    0x7fff832a3000 -     0x7fff83395fff  libxml2.2.dylib (26) <B834E7C8-EC3E-3382-BC5A-DA38DC4D720C> /usr/lib/libxml2.2.dylib
    0x7fff833e6000 -     0x7fff83410fff  GLRendererFloat (11.1.2) <87953360-E0E4-3523-8EC3-2062C26C7FD2> /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLRendererFloat.bundle/GLRendererFloat
    0x7fff83413000 -     0x7fff83415ff7  libsystem_coreservices.dylib (9) <41B7C578-5A53-31C8-A96F-C73E030B0938> /usr/lib/system/libsystem_coreservices.dylib
    0x7fff83416000 -     0x7fff8357dffb  com.apple.audio.toolbox.AudioToolbox (1.12 - 1.12) <5678FC94-456A-3F5F-BA9A-10EB6E462997> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
    0x7fff8357e000 -     0x7fff8370cfff  libBLAS.dylib (1128) <497912C1-A98E-3281-BED7-E9C751552F61> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
    0x7fff8373e000 -     0x7fff83766fff  libxpc.dylib (559.20.9) <D35D0DB2-D7BD-3BE4-8378-062BFE545E1D> /usr/lib/system/libxpc.dylib
    0x7fff8378c000 -     0x7fff83804ff7  com.apple.SystemConfiguration (1.14 - 1.14) <06A8405D-53BA-30A9-BA8A-222099176091> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
    0x7fff8389d000 -     0x7fff8389ffff  libsystem_sandbox.dylib (358.20.5) <4CF77128-6BE0-3958-B646-707FA9CE61B2> /usr/lib/system/libsystem_sandbox.dylib
    0x7fff838b7000 -     0x7fff8394bfff  com.apple.ink.framework (10.9 - 213) <8E029630-1530-3734-A446-13353F0E7AC5> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
    0x7fff83954000 -     0x7fff83995fff  libGLU.dylib (11.1.2) <4C54F0D1-2ADC-38A0-92D1-F479E9B99355> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
    0x7fff83a0e000 -     0x7fff83a10ffb  libCGXType.A.dylib (779.11) <51607E77-F183-3CC2-A78C-238AFBDF6262> /System/Library/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCGXType.A.dylib
    0x7fff83a11000 -     0x7fff83d42fff  com.apple.Foundation (6.9 - 1153.20) <F0FF3A5D-C5B7-34A1-9319-DE1EF928E58E> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
    0x7fff83d43000 -     0x7fff83d4bfff  libsystem_platform.dylib (63) <64E34079-D712-3D66-9CE2-418624A5C040> /usr/lib/system/libsystem_platform.dylib
    0x7fff83d61000 -     0x7fff83d6eff3  com.apple.ProtocolBuffer (1 - 228.0.1) <3429EB06-9F0E-355F-B9AB-F72879177398> /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer
    0x7fff83d6f000 -     0x7fff83d77fe7  libcldcpuengine.dylib (2.4.5) <0E9B5292-1EBC-379D-A706-83A27C05D742> /System/Library/Frameworks/OpenCL.framework/Versions/A/Libraries/libcldcpuengine.dylib
    0x7fff83d7b000 -     0x7fff84062ffb  com.apple.CoreServices.CarbonCore (1108.6 - 1108.6) <8953580E-7857-33B2-AA64-98296830D3A8> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
    0x7fff848b7000 -     0x7fff848c2ff7  com.apple.speech.synthesis.framework (5.3.3 - 5.3.3) <A5640275-E2A6-3856-95EF-5F0DC440B10C> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
    0x7fff848d2000 -     0x7fff84d02fff  com.apple.vision.FaceCore (3.1.6 - 3.1.6) <C3B823AA-C261-37D3-B4AC-C59CE91C8241> /System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore
    0x7fff84d51000 -     0x7fff84d52fff  libDiagnosticMessagesClient.dylib (100) <2EE8E436-5CDC-34C5-9959-5BA218D507FB> /usr/lib/libDiagnosticMessagesClient.dylib
    0x7fff84d53000 -     0x7fff84da1fff  libcurl.4.dylib (83.1.2) <462767FC-C7F2-39F1-8C10-DA4114945F55> /usr/lib/libcurl.4.dylib
    0x7fff84da2000 -     0x7fff84ec6ff7  com.apple.LaunchServices (644.56 - 644.56) <20AABB1C-9319-3E4D-A024-51B0DD5FCD3B> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
    0x7fff84ece000 -     0x7fff85a4fff7  com.apple.AppKit (6.9 - 1347.57) <B214D528-7D1C-39B2-BE36-821D417A0297> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
    0x7fff85a50000 -     0x7fff85a6cfff  com.apple.GenerationalStorage (2.0 - 209.11) <9FF8DD11-25FB-3047-A5BF-9415339B3EEC> /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage
    0x7fff85a6d000 -     0x7fff85d3cff3  com.apple.CoreImage (10.3.4) <C1AE8252-A95D-3BF4-83B8-BE85E979F2CB> /System/Library/Frameworks/QuartzCore.framework/Versions/A/Frameworks/CoreImage.framework/Versions/A/CoreImage
    0x7fff85d6b000 -     0x7fff86070ff3  com.apple.HIToolbox (2.1.1 - 758.7) <6711FAA9-904A-3B49-9665-FC8D13B93C42> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
    0x7fff861a6000 -     0x7fff861b1fff  libcommonCrypto.dylib (60061) <D381EBC6-69D8-31D3-8084-5A80A32CB748> /usr/lib/system/libcommonCrypto.dylib
    0x7fff861db000 -     0x7fff861f6ff7  libCRFSuite.dylib (34) <D64842BE-7BD4-3D0C-9842-1D202F7C2A51> /usr/lib/libCRFSuite.dylib
    0x7fff86201000 -     0x7fff862f3ff7  libiconv.2.dylib (42) <2A06D02F-8B76-3864-8D96-64EF5B40BC6C> /usr/lib/libiconv.2.dylib
    0x7fff862fa000 -     0x7fff86322fff  libRIP.A.dylib (779.11) <88434DA0-B6B8-304A-9DC0-41D3947E8734> /System/Library/Frameworks/CoreGraphics.framework/Versions/A/Resources/libRIP.A.dylib
    0x7fff864d1000 -     0x7fff865a7ff3  com.apple.DiskImagesFramework (10.10.1 - 396) <1149D3E1-CC6C-3177-916D-2BE066DC9344> /System/Library/PrivateFrameworks/DiskImages.framework/Versions/A/DiskImages
    0x7fff865a8000 -     0x7fff865d0fff  libsystem_info.dylib (459.20.1) <AEB3FE62-4763-3050-8352-D6F9AF961AE6> /usr/lib/system/libsystem_info.dylib
    0x7fff865d1000 -     0x7fff86617ff7  libFontRegistry.dylib (134.1) <CE41D8C2-BEED-345C-BC4F-3775CC06C672> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
    0x7fff8661c000 -     0x7fff86628ff7  com.apple.OpenDirectory (10.10 - 187) <1E07769D-68DE-3BF2-8E9E-A1E98BF70D1B> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
    0x7fff8681d000 -     0x7fff8682bff7  com.apple.opengl (11.1.2 - 11.1.2) <864B35BF-1E76-382B-8D5F-38C7282621E6> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
    0x7fff8682c000 -     0x7fff86833ff7  libcompiler_rt.dylib (35) <BF8FC133-EE10-3DA6-9B90-92039E28678F> /usr/lib/system/libcompiler_rt.dylib
    0x7fff8693a000 -     0x7fff86986fff  com.apple.corelocation (1486.17 - 1615.24) <8825B3E2-E053-3E01-AE31-793443962D06> /System/Library/Frameworks/CoreLocation.framework/Versions/A/CoreLocation
    0x7fff86987000 -     0x7fff86a25fff  com.apple.Metadata (10.7.0 - 917.35) <8CBD1D32-4F4B-3F9A-AC65-76F2B5376FBF> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
    0x7fff86a26000 -     0x7fff86a30ff7  com.apple.NetAuth (5.2 - 5.2) <2BBD749A-8E18-35B8-8E48-A90347C1CCA7> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
    0x7fff86ab4000 -     0x7fff86b1bffb  com.apple.datadetectorscore (6.0 - 396.1.1) <9B0B3198-DDBE-36C0-8BA9-3EC89C725282> /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
    0x7fff86ed1000 -     0x7fff86ed6fff  libsystem_stats.dylib (163.20.16) <FBC3F80F-A0FB-3BD6-9A7E-800DE45F092E> /usr/lib/system/libsystem_stats.dylib
    0x7fff86ed7000 -     0x7fff86fffff7  com.apple.coreui (2.1 - 308.6) <DEA5D3E1-D333-302B-A6CF-7643BFDFAED0> /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
    0x7fff87000000 -     0x7fff87011fff  libsystem_coretls.dylib (35.20.2) <6084A531-2523-39F8-B030-811FA1A32FB5> /usr/lib/system/libsystem_coretls.dylib
    0x7fff87012000 -     0x7fff87032fff  com.apple.IconServices (47.1 - 47.1) <E83DFE3B-6541-3736-96BB-26DC5D0100F1> /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices
    0x7fff87033000 -     0x7fff87063fff  com.apple.GSS (4.0 - 2.0) <A37BAF76-C262-3292-B82D-F004CAC5F333> /System/Library/Frameworks/GSS.framework/Versions/A/GSS
    0x7fff870c4000 -     0x7fff870effff  libc++abi.dylib (125) <88A22A0F-87C6-3002-BFBA-AC0F2808B8B9> /usr/lib/libc++abi.dylib
    0x7fff87109000 -     0x7fff87239fff  com.apple.UIFoundation (1.0 - 1) <466BDFA8-0B9F-3AB0-989D-F9779422926A> /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation
    0x7fff8723a000 -     0x7fff87247ff7  com.apple.SpeechRecognitionCore (2.1.2 - 2.1.2) <551322E2-C1E4-3378-A218-F362985E3E3C> /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore
    0x7fff87b8e000 -     0x7fff87bc8ffb  com.apple.DebugSymbols (115 - 115) <6F03761D-7C3A-3C80-8031-AA1C1AD7C706> /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
    0x7fff87bc9000 -     0x7fff87e48ff7  com.apple.CoreData (111 - 526.3) <5A27E0D8-5E5A-335B-B3F6-2601C7B976FA> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
    0x7fff87e49000 -     0x7fff87e4dfff  libpam.2.dylib (20) <E805398D-9A92-31F8-8005-8DC188BD8B6E> /usr/lib/libpam.2.dylib
    0x7fff87e4e000 -     0x7fff87e56fff  libsystem_dnssd.dylib (561.1.1) <62B70ECA-E40D-3C63-896E-7F00EC386DDB> /usr/lib/system/libsystem_dnssd.dylib
    0x7fff87e60000 -     0x7fff87e68ff3  com.apple.CoreServices.FSEvents (1210.20.1 - 1210.20.1) <84F79D3E-7B5E-3C93-8479-35794A3F125E> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
    0x7fff88035000 -     0x7fff88442ff7  libLAPACK.dylib (1128) <F9201AE7-B031-36DB-BCF8-971E994EF7C1> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
    0x7fff88443000 -     0x7fff88443fff  com.apple.ApplicationServices (48 - 48) <5BF7910B-C328-3BF8-BA4F-CE52B574CE01> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
    0x7fff889df000 -     0x7fff88b21fff  libsqlite3.dylib (168) <7B580EB9-9260-35FE-AE2F-276A2C242BAB> /usr/lib/libsqlite3.dylib
    0x7fff88b22000 -     0x7fff88cb1fff  libGLProgrammability.dylib (11.1.2) <E4FDCB86-E93C-36CC-B2EF-5FA0E96FF880> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib
    0x7fff88cb2000 -     0x7fff88d20ffb  com.apple.Heimdal (4.0 - 2.0) <7697A837-98B8-3BDB-A7D2-8ED4C9ABC510> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
    0x7fff88d21000 -     0x7fff88d30fff  com.apple.LangAnalysis (1.7.0 - 1.7.0) <D1E527E4-C561-352F-9457-E8C50232793C> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
    0x7fff88d9b000 -     0x7fff88da0fff  com.apple.DiskArbitration (2.6 - 2.6) <0DFF4D9B-2AC3-3B82-B5C5-30F4EFBD2DB9> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
    0x7fff88da1000 -     0x7fff88dcefff  com.apple.CoreVideo (1.8 - 145.1) <18DB07E0-B927-3260-A234-636F298D1917> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
    0x7fff88dcf000 -     0x7fff88decfff  libsystem_kernel.dylib (2782.20.48) <EAFD7BD0-0C30-3E7D-9528-F9916BA0167C> /usr/lib/system/libsystem_kernel.dylib
    0x7fff88ded000 -     0x7fff88e09ff7  libsystem_malloc.dylib (53.1.1) <19BCC257-5717-3502-A71F-95D65AFA861B> /usr/lib/system/libsystem_malloc.dylib
    0x7fff88e12000 -     0x7fff88e1aff7  com.apple.AppleSRP (5.0 - 1) <01EC5144-D09A-3D6A-AE35-F6D48585F154> /System/Library/PrivateFrameworks/AppleSRP.framework/Versions/A/AppleSRP
    0x7fff88e1b000 -     0x7fff88e1bff7  liblaunch.dylib (559.20.9) <FA89A113-696E-3271-8FE1-A0D7324E8481> /usr/lib/system/liblaunch.dylib
    0x7fff88e20000 -     0x7fff88eacff7  libsystem_c.dylib (1044.10.1) <86FBED7A-F2C8-3591-AD6F-486DD57E6B6A> /usr/lib/system/libsystem_c.dylib
    0x7fff88ead000 -     0x7fff88eaffff  com.apple.CoreDuetDebugLogging (1.0 - 1) <9A6E5710-EA99-366E-BF40-9A65EC1B46A1> /System/Library/PrivateFrameworks/CoreDuetDebugLogging.framework/Versions/A/CoreDuetDebugLogging
    0x7fff88eb0000 -     0x7fff88f21ffb  com.apple.ApplicationServices.ATS (360 - 375.2) <2338AF23-528F-359A-847F-8B04E49E2B84> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
    0x7fff88f22000 -     0x7fff88f34ff7  com.apple.CoreDuetDaemonProtocol (1.0 - 1) <CE9FABB4-1C5D-3F9B-9BB8-5CC50C3E5E31> /System/Library/PrivateFrameworks/CoreDuetDaemonProtocol.framework/Versions/A/CoreDuetDaemonProtocol
    0x7fff88f35000 -     0x7fff88f35fff  com.apple.Accelerate (1.10 - Accelerate 1.10) <F1B96A61-7E4B-31BD-A35B-BA7EF1F16EF4> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
    0x7fff88f36000 -     0x7fff88f3cfff  com.apple.speech.recognition.framework (5.0.9 - 5.0.9) <BB2D573F-0A01-379F-A2BA-3C454EDCB111> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
    0x7fff88f3d000 -     0x7fff88f48ff7  libkxld.dylib (2782.20.48) <28EF8328-E3E2-336A-974B-FB1BF119D55A> /usr/lib/system/libkxld.dylib
    0x7fff89298000 -     0x7fff89299fff  com.apple.TrustEvaluationAgent (2.0 - 25) <2D61A2C3-C83E-3A3F-8EC1-736DBEC250AB> /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent
    0x7fff8929a000 -     0x7fff8929cfff  libquarantine.dylib (76.20.1) <7AF90041-2768-378A-925A-D83161863642> /usr/lib/system/libquarantine.dylib
    0x7fff892cf000 -     0x7fff892fafff  com.apple.DictionaryServices (1.2 - 229) <F03DFAC6-6285-3176-9C6D-7CC50F8CD52A> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
    0x7fff892fb000 -     0x7fff89384ff7  com.apple.CoreSymbolication (3.1 - 57020.1) <85707039-0C8A-3409-B0B5-153431CC1841> /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
    0x7fff893c7000 -     0x7fff893d2ff7  libcsfde.dylib (471.20.7) <44E51549-CECC-3C7B-867B-01901CA9C756> /usr/lib/libcsfde.dylib
    0x7fff893d3000 -     0x7fff89457fff  com.apple.PerformanceAnalysis (1.0 - 1) <599AED3E-B689-3C40-8B91-93AD36C97658> /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
    0x7fff89458000 -     0x7fff894b2ff7  com.apple.LanguageModeling (1.0 - 1) <ACA93FE0-A0E3-333E-AE3C-8EB7DE5F362F> /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
    0x7fff894b3000 -     0x7fff894d8ff7  libPng.dylib (1237) <CFBF1344-36AB-3AAE-B2EB-9FC1369F967F> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
    0x7fff894f6000 -     0x7fff895b9ff7  libvMisc.dylib (516) <21497A28-8DCB-3EB8-BDAC-93C93382B0AA> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
    0x7fff895c9000 -     0x7fff895faff7  com.apple.ProtectedCloudStorage (1.0 - 1) <D0903EA8-D861-3488-BCF5-9D8E7C6D01FA> /System/Library/PrivateFrameworks/ProtectedCloudStorage.framework/Versions/A/ProtectedCloudStorage
    0x7fff89614000 -     0x7fff89615fff  liblangid.dylib (117) <B54A4AA0-2E53-3671-90F5-AFF711C0EB9E> /usr/lib/liblangid.dylib
    0x7fff896e6000 -     0x7fff896efff3  com.apple.CommonAuth (4.0 - 2.0) <BA9F5A09-D200-3D18-9F4A-20C789291A30> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
    0x7fff896f0000 -     0x7fff8970aff7  libextension.dylib (55.2) <3BB019CA-199A-36AC-AA22-14B562138545> /usr/lib/libextension.dylib
    0x7fff8971e000 -     0x7fff89812fff  libFontParser.dylib (134.2) <9F57B025-AB9C-31DD-9D54-2D7AB1298885> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib
    0x7fff89813000 -     0x7fff8984efff  com.apple.Symbolication (1.4 - 56045) <D64571B1-4483-3FE2-BD67-A91360F79727> /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
    0x7fff8988f000 -     0x7fff898dcff7  com.apple.print.framework.PrintCore (10.3 - 451.1) <DE992474-0841-38A1-B4F6-46D653E454D5> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
    0x7fff898dd000 -     0x7fff898deffb  libremovefile.dylib (35) <3485B5F4-6CE8-3C62-8DFD-8736ED6E8531> /usr/lib/system/libremovefile.dylib
    0x7fff898df000 -     0x7fff89970ff7  libCoreStorage.dylib (471.20.7) <ECD8903C-F131-3A9A-BBF4-E124DA028909> /usr/lib/libCoreStorage.dylib
    0x7fff89982000 -     0x7fff899cdfff  com.apple.CloudDocs (1.0 - 321.6) <4C54EDB7-4377-3722-8C47-F3C3D260FCBA> /System/Library/PrivateFrameworks/CloudDocs.framework/Versions/A/CloudDocs
    0x7fff899ce000 -     0x7fff899cefff  com.apple.Carbon (154 - 157) <9BF51672-1684-3FDE-A561-FC59A2864EF8> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
    0x7fff899d7000 -     0x7fff89a4dfe7  libcorecrypto.dylib (233.1.2) <E1789801-3985-3949-B736-6B3378873301> /usr/lib/system/libcorecrypto.dylib
    0x7fff89ae2000 -     0x7fff89b0dff3  libarchive.2.dylib (30) <8CBB4416-EBE9-3574-8ADC-44655D245F39> /usr/lib/libarchive.2.dylib
    0x7fff89b6b000 -     0x7fff89bb7ff7  libcups.2.dylib (408.2) <E8AD18F9-61E4-3791-B840-504468C25556> /usr/lib/libcups.2.dylib
    0x7fff89bc5000 -     0x7fff89bf5fff  libsystem_m.dylib (3086.1) <1E12AB45-6D96-36D0-A226-F24D9FB0D9D6> /usr/lib/system/libsystem_m.dylib
    0x7fff89c2c000 -     0x7fff89c98fff  com.apple.framework.CoreWLAN (5.0 - 500.35.2) <5E228544-77A9-3AA5-8355-E8F6626F50E7> /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN
    0x7fff89c9e000 -     0x7fff89ceffff  com.apple.audio.CoreAudio (4.3.0 - 4.3.0) <450293F7-DAE7-3DD0-8F7C-71FC2FD72627> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
    0x7fff89cf0000 -     0x7fff89cf0fff  com.apple.CoreServices (62 - 62) <C69DA8A7-B536-34BF-A93F-1C170E2C6D58> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
    0x7fff89cf1000 -     0x7fff89cf4fff  com.apple.help (1.3.3 - 46) <CA4541F4-CEF5-355C-8F1F-EA65DC1B400F> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
    0x7fff8a4e7000 -     0x7fff8a4feff7  libLinearAlgebra.dylib (1128) <E78CCBAA-A999-3B65-8EC9-06DB15E67C37> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
    0x7fff8a4ff000 -     0x7fff8a502fff  com.apple.IOSurface (97.4 - 97.4) <AE11CFBC-4D46-30F3-BEEC-4C8131079391> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
    0x7fff8a503000 -     0x7fff8a507fff  com.apple.CommonPanels (1.2.6 - 96) <F9ECC8AF-D9CA-3350-AFB4-5113A9B789A5> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
    0x7fff8a508000 -     0x7fff8a621ffb  com.apple.CoreText (352.0 - 454.6) <D45790B0-E1A3-3C7D-8BA2-AB71D2CFA7FB> /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
    0x7fff8a622000 -     0x7fff8a624fff  libRadiance.dylib (1237) <8F1E898B-74F6-3242-B929-CAF58AFCE319> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
    0x7fff8a6aa000 -     0x7fff8a6b2ffb  libcopyfile.dylib (118.1.2) <0C68D3A6-ACDD-3EF3-991A-CC82C32AB836> /usr/lib/system/libcopyfile.dylib
    0x7fff8a6b3000 -     0x7fff8a6cdff7  com.apple.Kerberos (3.0 - 1) <7760E0C2-A222-3709-B2A6-B692D900CEB1> /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
    0x7fff8a7a1000 -     0x7fff8a7a4fff  com.apple.xpc.ServiceManagement (1.0 - 1) <9E025823-660A-30C5-A568-223BD595B6F7> /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
    0x7fff8ab2a000 -     0x7fff8ab3cff7  libsasl2.2.dylib (194.1) <35371406-75EF-304A-A073-956C40373555> /usr/lib/libsasl2.2.dylib
    0x7fff8b0aa000 -     0x7fff8b0acfff  libsystem_configuration.dylib (699.1.5) <20F3B077-179D-3CB0-A3C1-C8602D53B4DB> /usr/lib/system/libsystem_configuration.dylib
    0x7fff8b0ad000 -     0x7fff8b2baff3  com.apple.CFNetwork (720.3.13 - 720.3.13) <69E15385-5784-3912-88F6-03B16F1C1A5C> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
    0x7fff8b2fc000 -     0x7fff8b326ff7  libdispatch.dylib (442.1.4) <502CF32B-669B-3709-8862-08188225E4F0> /usr/lib/system/libdispatch.dylib
    0x7fff8b702000 -     0x7fff8b71bffb  com.apple.openscripting (1.4 - 162.1) <E6B42781-A556-355A-8A49-82A8D2B347FF> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
    0x7fff8b71c000 -     0x7fff8b739fff  com.apple.MultitouchSupport.framework (263.9.1 - 263.9.1) <6ABD3AE2-DF6A-3AB2-994B-9C0FB42CE2B7> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
    0x7fff8b768000 -     0x7fff8b782fff  com.apple.AppleVPAFramework (1.4.3 - 1.4.3) <AE62A92E-EDA7-37AD-8AF0-7912E9381A1F> /System/Library/PrivateFrameworks/AppleVPA.framework/Versions/A/AppleVPA
    0x7fff8b783000 -     0x7fff8b876ff7  libJP2.dylib (1237) <A48C29E6-9E9F-3449-B873-160DE8E94008> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
    0x7fff8b877000 -     0x7fff8ba5cff7  libicucore.A.dylib (531.48) <3CD34752-B1F9-31D2-865D-B5B0F0BE3111> /usr/lib/libicucore.A.dylib
    0x7fff8ba80000 -     0x7fff8ba87fff  com.apple.NetFS (6.0 - 4.0) <1581D25F-CC07-39B0-90E8-5D4F3CF84EBA> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
    0x7fff8bb42000 -     0x7fff8bbb1fff  com.apple.SearchKit (1.4.0 - 1.4.0) <80883BD1-C9BA-3794-A20E-476F94DD89A9> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
    0x7fff8bbda000 -     0x7fff8bbe0fff  libsystem_trace.dylib (72.20.1) <840F5301-B55A-3078-90B9-FEFFD6CD741A> /usr/lib/system/libsystem_trace.dylib
    0x7fff8bbe1000 -     0x7fff8bbe1fff  libOpenScriptingUtil.dylib (162.1) <E0605012-0DDB-3150-8FD0-699376FA3CD0> /usr/lib/libOpenScriptingUtil.dylib
    0x7fff8bc8e000 -     0x7fff8bc93ff7  libunwind.dylib (35.3) <BE7E51A0-B6EA-3A54-9CCA-9D88F683A6D6> /usr/lib/system/libunwind.dylib
    0x7fff8bc9a000 -     0x7fff8bcd2fff  com.apple.RemoteViewServices (2.0 - 99) <C9A62691-B0D9-34B7-B71C-A48B5F4DC553> /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
    0x7fff8bfdf000 -     0x7fff8bff9ff7  liblzma.5.dylib (7) <1D03E875-A7C0-3028-814C-3C27F7B7C079> /usr/lib/liblzma.5.dylib
    0x7fff8cc45000 -     0x7fff8cca0ff7  libTIFF.dylib (1237) <690B205E-55D9-3F2C-B4EA-78B1AC3D3231> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
    0x7fff8ccac000 -     0x7fff8ccacfff  com.apple.Accelerate.vecLib (3.10 - vecLib 3.10) <B92888D0-ED3F-3430-8F3A-6E56FD16C5F1> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
    0x7fff8ccad000 -     0x7fff8ccd1ff7  com.apple.Sharing (328.16 - 328.16) <F96C7040-5FAF-3BC6-AE1E-5BF9CBE786C4> /System/Library/PrivateFrameworks/Sharing.framework/Versions/A/Sharing
    0x7fff8cceb000 -     0x7fff8ccf2ff7  libCGCMS.A.dylib (779.11) <5D33FF8C-AC74-3B7B-A602-4AA470FEAF79> /System/Library/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCGCMS.A.dylib
    0x7fff8ccf3000 -     0x7fff8cdb3ff7  com.apple.backup.framework (1.6.4 - 1.6.4) <A67CE7D7-AAE4-3AC0-86B7-EAF403853D09> /System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup
    0x7fff8cdb7000 -     0x7fff8cdc4fff  libxar.1.dylib (255) <7CD69BB5-97BA-3858-8A8B-2F33F129E6E7> /usr/lib/libxar.1.dylib
    0x7fff8d08f000 -     0x7fff8d0a0fff  libcmph.dylib (1) <46EC3997-DB5E-38AE-BBBB-A035A54AD3C0> /usr/lib/libcmph.dylib
    0x7fff8d0af000 -     0x7fff8d14ee27  com.apple.AppleJPEG (1.0 - 1) <6627DDD9-A8FE-3968-B23A-B6A29AA3919A> /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG
    0x7fff8d2d5000 -     0x7fff8d2d7fff  libCVMSPluginSupport.dylib (11.1.2) <6EFEC4A6-2EAC-3C27-820E-C28BE71B9FCB> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
    0x7fff8d41f000 -     0x7fff8d4b5ff7  com.apple.cloudkit.CloudKit (283.67.2 - 283.67.2) <79F5AD38-61D5-30E6-96DC-974351D4195B> /System/Library/Frameworks/CloudKit.framework/Versions/A/CloudKit
    0x7fff8d4b6000 -     0x7fff8d4cfff7  com.apple.CFOpenDirectory (10.10 - 187) <790ED527-EFD2-3EA6-8C97-A8C04E96EBA7> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
    0x7fff8d4d0000 -     0x7fff8d923fc7  com.apple.vImage (8.0 - 8.0) <33BE7B31-72DB-3364-B37E-C322A32748C5> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
    0x7fff8d924000 -     0x7fff8db8eff7  com.apple.security (7.0 - 57031.20.26) <6568520A-587D-3167-BB79-60CE6FEADC64> /System/Library/Frameworks/Security.framework/Versions/A/Security
    0x7fff8dbc2000 -     0x7fff8dbebffb  libxslt.1.dylib (13) <AED1143F-B848-3E73-81ED-71356F25F084> /usr/lib/libxslt.1.dylib
    0x7fff8dbec000 -     0x7fff8e447ff3  com.apple.CoreGraphics (1.600.0 - 779.11) <EFAB294A-B307-38C5-A3B0-159159B41057> /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
    0x7fff8e460000 -     0x7fff8e48fff7  com.apple.CoreServicesInternal (221.7.2 - 221.7.2) <B93D4775-149C-3698-B38C-9C50673D455C> /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal
    0x7fff8e4cd000 -     0x7fff8e4cdfff  com.apple.Cocoa (6.8 - 21) <EAC0EA1E-3C62-3B28-A941-5D8B1E085FF8> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
    0x7fff8e4ce000 -     0x7fff8e4d3ffb  libheimdal-asn1.dylib (398.10.1) <A7B6447A-6680-3625-83C3-993B58D5C43F> /usr/lib/libheimdal-asn1.dylib
    0x7fff8e4d4000 -     0x7fff8e4d6fff  com.apple.EFILogin (2.0 - 2) <3BA837D8-94F5-3240-9CF7-E40DC2808446> /System/Library/PrivateFrameworks/EFILogin.framework/Versions/A/EFILogin
    0x7fff8e4d7000 -     0x7fff8e4dbfff  com.apple.TCC (1.0 - 1) <CCA42EE2-3400-3444-9486-BC454E60D944> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
    0x7fff8e4dc000 -     0x7fff8e4e9ff7  libbz2.1.0.dylib (36) <2DF83FBC-5C08-39E1-94F5-C28653791B5F> /usr/lib/libbz2.1.0.dylib
    0x7fff8e4ea000 -     0x7fff8e4f5ff7  com.apple.CrashReporterSupport (10.10 - 631) <D87A64FA-64B1-3B23-BB43-ADE173C108C6> /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
    0x7fff8e510000 -     0x7fff8e8a8ff7  com.apple.CoreFoundation (6.9 - 1153.18) <5C0892B8-9691-341F-9279-CA3A74D59AA0> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7fff8e8a9000 -     0x7fff8e8baff7  libz.1.dylib (55) <88C7C7DE-04B8-316F-8B74-ACD9F3DE1AA1> /usr/lib/libz.1.dylib
    0x7fff8e8bb000 -     0x7fff8e927ff3  com.apple.MMCS (1.3 - 327.5) <FC998246-ED60-334D-9E94-453F35EF9C78> /System/Library/PrivateFrameworks/MMCS.framework/Versions/A/MMCS
    0x7fff8e92c000 -     0x7fff8e92dfff  libsystem_secinit.dylib (18) <581DAD0F-6B63-3A48-B63B-917AF799ABAA> /usr/lib/system/libsystem_secinit.dylib
    0x7fff8eaa6000 -     0x7fff8eaa7ff3  libSystem.B.dylib (1213) <CCEC13A5-D0D9-31C5-B0B0-1C564B4A20A6> /usr/lib/libSystem.B.dylib
    0x7fff8eac7000 -     0x7fff8eac9ff7  com.apple.securityhi (9.0 - 55006) <5DB5773C-FC07-302C-98FE-4B80D88D481A> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
    0x7fff8ee61000 -     0x7fff8ee63ff7  libutil.dylib (38) <471AD65E-B86E-3C4A-8ABD-B8665A2BCE3F> /usr/lib/libutil.dylib
    0x7fff8ee64000 -     0x7fff8eea4ff7  libGLImage.dylib (11.1.2) <260A4BF3-DC45-369C-A0CD-B667F9D17179> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
    0x7fff8eea5000 -     0x7fff8eea5fff  com.apple.audio.units.AudioUnit (1.12 - 1.12) <E5335492-7EFE-31EA-BE72-4A9CEE68D58E> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
    0x7fff8eea6000 -     0x7fff8eeb8ff7  com.apple.ImageCapture (9.0 - 9.0) <7FB65DD4-56B5-35C4-862C-7A2DED991D1F> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
    0x7fff8eeb9000 -     0x7fff8eedeff7  libJPEG.dylib (1237) <8AC8EFA6-2283-3725-9F28-01537DF51766> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
    0x7fff8eedf000 -     0x7fff8eef5ff7  libsystem_asl.dylib (267) <F153AC5B-0542-356E-88C8-20A62CA704E2> /usr/lib/system/libsystem_asl.dylib
    0x7fff8ef1f000 -     0x7fff8ef51ff3  com.apple.frameworks.CoreDaemon (1.3 - 1.3) <C6DB0A07-F8E4-3837-BCA9-225F460EDA81> /System/Library/PrivateFrameworks/CoreDaemon.framework/Versions/B/CoreDaemon
    0x7fff8ef52000 -     0x7fff8f00dff7  com.apple.DiscRecording (9.0 - 9000.4.2) <4655B4B8-523D-3AE6-92A0-8486A2258B3B> /System/Library/Frameworks/DiscRecording.framework/Versions/A/DiscRecording
    0x7fff8f03e000 -     0x7fff8f071fff  com.apple.MediaKit (16 - 757.2) <2912E5C2-085F-3FE2-8531-23B6E894B0F0> /System/Library/PrivateFrameworks/MediaKit.framework/Versions/A/MediaKit
    0x7fff8f072000 -     0x7fff8f0aafff  libsystem_network.dylib (412.20.3) <589A5F67-BE2A-3245-A181-0ECC9B53EB00> /usr/lib/system/libsystem_network.dylib
    0x7fff8f964000 -     0x7fff8f981ffb  libresolv.9.dylib (57) <26B38E61-298A-3C3A-82C1-3B5E98AD5E29> /usr/lib/libresolv.9.dylib
    0x7fff8f982000 -     0x7fff8f988ff7  libsystem_networkextension.dylib (167.1.10) <29AB225B-D7FB-30ED-9600-65D44B9A9442> /usr/lib/system/libsystem_networkextension.dylib
    0x7fff8f9a7000 -     0x7fff8f9baff7  com.apple.CoreBluetooth (1.0 - 1) <8D7BA9BA-EB36-307A-9119-0B3D9732C953> /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth
    0x7fff8fa52000 -     0x7fff8fd85ff7  libmecabra.dylib (666.7) <0ED8AE5E-7A5B-34A6-A2EE-2B852E60E1E2> /usr/lib/libmecabra.dylib
    0x7fff901d7000 -     0x7fff901f6fff  com.apple.CoreDuet (1.0 - 1) <36AA9FD5-2685-314D-B364-3FA4688D86BD> /System/Library/PrivateFrameworks/CoreDuet.framework/Versions/A/CoreDuet
    0x7fff911ba000 -     0x7fff91209ff7  com.apple.opencl (2.4.2 - 2.4.2) <4A9574ED-15CF-3EBB-B4C0-D30F644D6C74> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
    0x7fff9120a000 -     0x7fff91321fe7  libvDSP.dylib (516) <DFEDB210-49D1-3803-88A2-C61DB6A45C3D> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 3
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 305019
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=198.3M resident=198.7M(100%) swapped_out_or_unallocated=16777216.0T(8871116537856%)
Writable regions: Total=343.0M written=159.4M(46%) resident=231.6M(68%) swapped_out=0K(0%) unallocated=111.4M(32%)

REGION TYPE                      VIRTUAL
===========                      =======
CG backing stores                  4000K
CG shared images                    176K
Dispatch continuations             8192K
IOKit                              67.1M
Kernel Alloc Once                     8K
MALLOC                            235.1M
MALLOC (admin)                       32K
Memory Tag 242                       12K
Memory Tag 249                      156K
Memory Tag 251                        8K
STACK GUARD                        56.0M
Stack                              9824K
VM_ALLOCATE                        18.8M
__DATA                             15.9M
__GLSLBUILTINS                     2588K
__IMAGE                             528K
__LINKEDIT                         73.2M
__TEXT                            125.1M
__UNICODE                           552K
mapped file                        48.8M
shared memory                        68K
===========                      =======
TOTAL                             665.6M

Random segfaults when using energy form

I'm trying to play Aquaria on OSX using this open-source code from this repo. However, I'm running into repeated crashes, always while shooting projectiles using the energy form. I got through the entire intro up to the energy temple with no crashes, and then once I got the energy form, I started getting random crashes, anywhere from the very first energy shot I take after loading my game, to 20 minutes in. I've attached 3 backtraces provided by OSX when programs crash. All 3 seem to have different stack traces, so I'm not sure how useful they would be in debugging. Let me know if you want me to generate more backtraces or need any other info. I compiled the binary from commit 6971e78.

crash1.txt
crash2.txt
crash3.txt

Allow using shoulder/trigger buttons on the Xbox 360 controller

I’ve been playing Aquaria OSE 1.002 with my wireless Xbox 360 controller under Manjaro Linux, and so far I prefer playing it this way. (For me, moving around is better with the analogue stick than with the keyboard and mouse, and rumble support is the cherry on the cake.)

However, unlike in the proprietary version 1.1.3 (downloaded from GOG.com), the shoulder and trigger buttons can’t be used at all. Without the open source patch, the right shoulder button is at least automatically set to function the same way as the right mouse button, although this button can’t be mapped to anything else in the options menu.

After a little search, I’ve found this page. I’m wondering if the situation has changed since.

Abyss crabs leave behind lighted area when dead

This image isn't too great (ignore the raster, this is just due to the screen shot utility / OpenGl), but you can still see the lighted areas below Naija which are the remainders of two abyss crabs. These lights never fade - which seems to be a bug.

aquaria_lights_remain

Fix bug that messes up world map visited areas

So far only happens in our sequel mod. Got multiple reports. World map visited areas seem to get jumbled and exchanged between maps, seemingly at random. Not sure what triggers it or when it happens. Nothing more known on this bug for the time being.

Visual bug while wearing the urchin costume

In Aquaria OSE 1.002, there is a visual bug when I do the following:

  1. Put on the urchin costume (represented as a spiky helmet in the menu). Now Naija should be in the normal form and she is not wearing a cape.
  2. Switch to another form and switch back to normal or go to another area.
  3. Now a cape appears on Naija’s back, which has no textures and is completely white.

I’m on Manjaro Linux x64 and using the free AMD drivers.

Let me know if you need a save file and I'll attach it to my next comment.

Error!: Variables data not found! Aborting...

I build game on Ubuntu 20.04, and when i run it, the following error occurred: "Error!: Variables data not found! Aborting...". It seems that the 'data/variables.txt' file is missing, where can i find it?

Replace 3rd party libs

Easy, to be done first:

  • Remove iprof (was never used and is still in the repo) and related BBGE_PROF macro.
  • Replace Lua allocator with my new one
  • Replace old JPS with the improved version
  • Replace glm with a custom subset (Aquaria uses very little of what glm provides) and remove related BBGE_USE_GLM define. The math code from wfstd seems reasonably optimized and might be worth a try.

Later:

  • Replace OpenAL with SoLoud and remove the horrible FmodOpenALBridge. Maybe add a Lua API for some extra audio effects?
    • Delete ExternalLibs/AL headers + libs
  • Replace ttvfs with tio+vfs (when it's done)
  • Remove or rework glpng so that texture decoding and upload are separated. Decouple from OpenGL.
  • Remove pre-built SDL12 + SDL2 libs and the related headers from the repo
  • Delete the old vc90 project file and go full CMake (still relies on included SDL+AL libs)

Make sure ttvfs works with the arch linux pkgbuild

I plan to roll out another update soon. There has been some patching breakage in the 'experimental' branch that was reported to happen on OSX, but things worked fine on win32.
@smls Could you please test the "override" dir and the compiled in extra data dir when you have time? Checkout the 'experimental' branch. I hope things still work as they used to. If everything goes well i'll merge 'experimental' into 'master' sometime next week, so prepare to update your AUR pkgbuild if necessary.

Large number of warnings with Clang 3.7.0

As of OSE-v1.002 on

$ c++ -v
FreeBSD clang version 3.7.0 (trunk 242221) 20150808
Target: x86_64-unknown-freebsd11.0
Thread model: posix

with default *FLAGS that don't have any -Wfoo e.g.,

$ touch Aquaria/Avatar.cpp
$ ninja -v
[1/2] /usr/bin/c++   -DAQUARIA_BUILD_CONSOLE=1 -DAQUARIA_BUILD_SCENEEDITOR=1 -DBBGE_BUILD_ACHIEVEMENTS_INTERNAL=1 -DBBGE_BUILD_FMOD_OPENAL_BRIDGE=1 -DBBGE_BUILD_FRAMEBUFFER=1 -DBBGE_BUILD_OPENGL=1 -DBBGE_BUILD_OPENGL_DYNAMIC=1 -DBBGE_BUILD_SDL=1 -DBBGE_BUILD_SHADERS=1 -DBBGE_BUILD_UNIX=1 -DBBGE_BUILD_VFS=1 -DBBGE_SKIP_CONFIG_HEADERS=1 -DBBGE_USE_GLM=1 -DGL_GLEXT_LEGACY=1 -DHAVE_PUTENV=1 -DHAVE_STRCASECMP -DLUA_USE_ULONGJMP=1 -DNDEBUG -DTIXML_USE_STL=1 -DVFS_ENABLE_C_API=1 -O3 -DNDEBUG -IBBGE -IBBGE/GL -IExternalLibs/glpng/zlib -IExternalLibs/glpng/png -IAquaria -IExternalLibs/FTGL/include -IExternalLibs/freetype2/include -IExternalLibs/lua-5.1.4/src -IExternalLibs/libogg-1.3.0/include -IExternalLibs/libvorbis-1.3.3/include -I/usr/local/include/SDL -I/usr/local/include -I/usr/local/include/AL -IExternalLibs -IExternalLibs/ttvfs -IExternalLibs/ttvfs_zip -IExternalLibs/ttvfs_cfileapi -MMD -MT CMakeFiles/aquaria.dir/Aquaria/Avatar.cpp.o -MF CMakeFiles/aquaria.dir/Aquaria/Avatar.cpp.o.d -o CMakeFiles/aquaria.dir/Aquaria/Avatar.cpp.o -c Aquaria/Avatar.cpp
^C
ExternalLibs/ttvfs_zip/miniz.c:4020:5: warning: expression result unused [-Wunused-value]
    pFilename; return MZ_FALSE;
    ^~~~~~~~~
ExternalLibs/ttvfs_zip/VFSFileZip.cpp:146:11: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
    if(sz < 0)
       ~~ ^ ~
In file included from ExternalLibs/ttvfs/VFSTools.cpp:18:
/usr/include/sys/dir.h:39:2: warning: "The information in this file should be obtained from <dirent.h>" [-W#warnings]
#warning "The information in this file should be obtained from <dirent.h>"
 ^
/usr/include/sys/dir.h:40:2: warning: "and is provided solely (and temporarily) for backward compatibility." [-W#warnings]
#warning "and is provided solely (and temporarily) for backward compatibility."
 ^
Aquaria/AquariaMenuItem.cpp:631:10: warning: enumeration value 'INPUTSET_NONE' not handled in switch [-Wswitch]
                switch(inputSetType)
                       ^
Aquaria/CollideEntity.cpp:57:10: warning: enumeration value 'BOUNCE_NONE' not handled in switch [-Wswitch]
        switch (bounceType)
                ^
Aquaria/Avatar.cpp:391:12: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
        channel = BBGE_AUDIO_NOCHANNEL;
                  ^~~~~~~~~~~~~~~~~~~~
Aquaria/Avatar.cpp:559:13: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                channel = BBGE_AUDIO_NOCHANNEL;
                          ^~~~~~~~~~~~~~~~~~~~
Aquaria/Avatar.cpp:663:13: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                channel = BBGE_AUDIO_NOCHANNEL;
                          ^~~~~~~~~~~~~~~~~~~~
Aquaria/Avatar.cpp:918:9: warning: 9 enumeration values not handled in switch: 'FORM_NONE', 'FORM_NORMAL', 'FORM_BEAST'... [-Wswitch]
        switch(dsq->continuity.form)
               ^
Aquaria/Avatar.cpp:1327:10: warning: enumeration values 'EAT_NONE', 'EAT_DEFAULT', and 'EAT_MAX' not handled in switch [-Wswitch]
                switch(et)
                       ^
Aquaria/Avatar.cpp:1646:10: warning: enumeration values 'FORM_NONE' and 'FORM_MAX' not handled in switch [-Wswitch]
                switch(form)
                       ^
Aquaria/Avatar.cpp:2467:9: warning: enumeration values 'FORM_NONE', 'FORM_NORMAL', and 'FORM_MAX' not handled in switch [-Wswitch]
        switch(dsq->continuity.form)
               ^
Aquaria/Avatar.cpp:3146:9: warning: 8 enumeration values not handled in switch: 'FORM_NONE', 'FORM_NORMAL', 'FORM_BEAST'... [-Wswitch]
        switch(dsq->continuity.form)
               ^
Aquaria/Avatar.cpp:3249:9: warning: 5 enumeration values not handled in switch: 'FORM_NONE', 'FORM_NORMAL', 'FORM_SPIRIT'... [-Wswitch]
        switch(dsq->continuity.form)
               ^
Aquaria/Avatar.cpp:3278:24: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                        dsq->loops.charge = BBGE_AUDIO_NOCHANNEL;
                                            ^~~~~~~~~~~~~~~~~~~~
Aquaria/Avatar.cpp:3431:24: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                        dsq->loops.charge = BBGE_AUDIO_NOCHANNEL;
                                            ^~~~~~~~~~~~~~~~~~~~
Aquaria/Avatar.cpp:3670:21: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                dsq->loops.trip = BBGE_AUDIO_NOCHANNEL;
                                  ^~~~~~~~~~~~~~~~~~~~
Aquaria/Avatar.cpp:3689:21: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                dsq->loops.trip = BBGE_AUDIO_NOCHANNEL;
                                  ^~~~~~~~~~~~~~~~~~~~
Aquaria/Avatar.cpp:3802:22: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
        dsq->loops.shield = BBGE_AUDIO_NOCHANNEL;
                            ^~~~~~~~~~~~~~~~~~~~
Aquaria/Avatar.cpp:3807:22: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
        dsq->loops.charge = BBGE_AUDIO_NOCHANNEL;
                            ^~~~~~~~~~~~~~~~~~~~
Aquaria/Avatar.cpp:4194:23: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                dsq->loops.shield = BBGE_AUDIO_NOCHANNEL;
                                    ^~~~~~~~~~~~~~~~~~~~
Aquaria/Avatar.cpp:4199:24: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                dsq->loops.current = BBGE_AUDIO_NOCHANNEL;
                                     ^~~~~~~~~~~~~~~~~~~~
Aquaria/Avatar.cpp:4874:10: warning: enumeration values 'AURA_NONE', 'AURA_THING', and 'AURA_HEAL' not handled in switch [-Wswitch]
                switch(activeAura)
                       ^
Aquaria/Avatar.cpp:4937:23: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                dsq->loops.shield = BBGE_AUDIO_NOCHANNEL;
                                    ^~~~~~~~~~~~~~~~~~~~
Aquaria/Avatar.cpp:5003:10: warning: 7 enumeration values not handled in switch: 'FORM_NONE', 'FORM_NORMAL', 'FORM_BEAST'... [-Wswitch]
        switch (dsq->continuity.form)
                ^
Aquaria/Avatar.cpp:5174:21: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                dsq->loops.roll = BBGE_AUDIO_NOCHANNEL;
                                  ^~~~~~~~~~~~~~~~~~~~
Aquaria/Avatar.cpp:6178:28: warning: implicit conversion from 'double' to 'int' changes value from 1.5 to 1 [-Wliteral-conversion]
                                        chargeLevelAttained = 1.5;
                                                            ~ ^~~
Aquaria/Avatar.cpp:6172:12: warning: 6 enumeration values not handled in switch: 'FORM_NONE', 'FORM_NORMAL', 'FORM_BEAST'... [-Wswitch]
                        switch (dsq->continuity.form)
                                ^
Aquaria/Avatar.cpp:6696:25: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                        dsq->loops.current = BBGE_AUDIO_NOCHANNEL;
                                             ^~~~~~~~~~~~~~~~~~~~
Aquaria/Continuity.cpp:510:9: warning: enumeration values 'IET_NONE', 'IET_RANDOM', and 'IET_MAX' not handled in switch [-Wswitch]
        switch(useType)
               ^
Aquaria/Continuity.cpp:1231:9: warning: enumeration values 'FORM_NONE' and 'FORM_MAX' not handled in switch [-Wswitch]
        switch(form)
               ^
Aquaria/Continuity.cpp:1517:10: warning: 4 enumeration values not handled in switch: 'SONG_NONE', 'SONG_SONGDOOR2', 'SONG_ANIMA'... [-Wswitch]
                switch((SongType)num)
                       ^
Aquaria/DSQ.cpp:1923:9: warning: enumeration value 'INPUT_KEYBOARD' not handled in switch [-Wswitch]
        switch(inputMode)
               ^
Aquaria/DSQ.cpp:1937:9: warning: enumeration value 'INPUT_KEYBOARD' not handled in switch [-Wswitch]
        switch(inputMode)
               ^
Aquaria/DSQ.cpp:4453:11: warning: enumeration value 'INPUT_KEYBOARD' not handled in switch [-Wswitch]
                        switch(dsq->inputMode)
                               ^
Aquaria/MiniMapRender.cpp:585:13: warning: 13 enumeration values not handled in switch: 'PATH_NONE', 'PATH_CURRENT', 'PATH_STEAM'... [-Wswitch]
                                        switch(p->pathType)
                                               ^
Aquaria/SceneEditor.cpp:3013:9: warning: enumeration values 'ET_SELECTENTITY' and 'ET_MAX' not handled in switch [-Wswitch]
        switch(editType)
               ^
Aquaria/SceneEditor.cpp:3163:11: warning: enumeration values 'ET_PATHS', 'ET_SELECTENTITY', and 'ET_MAX' not handled in switch [-Wswitch]
                switch (editType)
                        ^
Aquaria/SceneEditor.cpp:3248:11: warning: enumeration values 'ES_ROTATING' and 'ES_MAX' not handled in switch [-Wswitch]
                        switch(state)
                               ^
Aquaria/SceneEditor.cpp:3299:11: warning: enumeration values 'ES_SELECTING', 'ES_SCALING', and 'ES_MAX' not handled in switch [-Wswitch]
                        switch(state)
                               ^
Aquaria/SceneEditor.cpp:3389:12: warning: incrementing expression of type bool is deprecated [-Wdeprecated-increment-bool]
                                        noSide++;
                                        ~~~~~~^
Aquaria/SceneEditor.cpp:3326:11: warning: enumeration value 'ES_MAX' not handled in switch [-Wswitch]
                        switch(state)
                               ^
Aquaria/Game.cpp:1208:18: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
        dsq->loops.bg = BBGE_AUDIO_NOCHANNEL;
                        ^~~~~~~~~~~~~~~~~~~~
Aquaria/Game.cpp:1209:19: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
        dsq->loops.bg2 = BBGE_AUDIO_NOCHANNEL;
                         ^~~~~~~~~~~~~~~~~~~~
Aquaria/Game.cpp:5774:20: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                        dsq->loops.bg = BBGE_AUDIO_NOCHANNEL;
                                        ^~~~~~~~~~~~~~~~~~~~
Aquaria/Game.cpp:6876:18: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
        dsq->loops.bg = BBGE_AUDIO_NOCHANNEL;
                        ^~~~~~~~~~~~~~~~~~~~
Aquaria/Game.cpp:8280:11: warning: 9 enumeration values not handled in switch: 'FORM_NONE', 'FORM_NORMAL', 'FORM_ENERGY'... [-Wswitch]
                switch (dsq->continuity.form)
                        ^
Aquaria/Game.cpp:9989:22: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                                dsq->loops.bg2 = BBGE_AUDIO_NOCHANNEL;
                                                 ^~~~~~~~~~~~~~~~~~~~
Aquaria/Game.cpp:10008:21: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                        dsq->loops.bg2 = BBGE_AUDIO_NOCHANNEL;
                                         ^~~~~~~~~~~~~~~~~~~~
Aquaria/SFXLoops.cpp:25:55: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
        bg = bg2 = roll = shield = charge = current = trip = BBGE_AUDIO_NOCHANNEL;
                                                             ^~~~~~~~~~~~~~~~~~~~
Aquaria/SFXLoops.cpp:44:11: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion]
                *loop = BBGE_AUDIO_NOCHANNEL;
                        ^~~~~~~~~~~~~~~~~~~~
BBGE/Base.cpp:56:9: warning: 6 enumeration values not handled in switch: 'DIR_NONE', 'DIR_UPLEFT', 'DIR_UPRIGHT'... [-Wswitch]
        switch(dir)
               ^
BBGE/Base.cpp:76:9: warning: 6 enumeration values not handled in switch: 'DIR_NONE', 'DIR_UPLEFT', 'DIR_UPRIGHT'... [-Wswitch]
        switch(dir)
               ^
BBGE/Base.cpp:97:9: warning: 6 enumeration values not handled in switch: 'DIR_NONE', 'DIR_UPLEFT', 'DIR_UPRIGHT'... [-Wswitch]
        switch(dir)
               ^
BBGE/Base.cpp:682:17: warning: address of array 'file->d_name' will always evaluate to 'true' [-Wpointer-bool-conversion]
                    if (file->d_name && strlen(file->d_name) > 4)
                        ~~~~~~^~~~~~ ~~
BBGE/Collision.cpp:93:10: warning: enumeration values 'NONE' and 'TRIANGLE' not handled in switch [-Wswitch]
                switch(collisionShape.getType())
                       ^
BBGE/Collision.cpp:89:10: warning: 4 enumeration values not handled in switch: 'NONE', 'AABB', 'TOP_HALF_CIRCLE'... [-Wswitch]
        switch (getType())
                ^
BBGE/Collision.cpp:208:9: warning: enumeration values 'NONE', 'TOP_HALF_CIRCLE', and 'TRIANGLE' not handled in switch [-Wswitch]
        switch(getType())
               ^
BBGE/Collision.cpp:393:10: warning: enumeration values 'NONE', 'TOP_HALF_CIRCLE', and 'TRIANGLE' not handled in switch [-Wswitch]
        switch (this->getType())
                ^
BBGE/Effects.cpp:82:11: warning: enumeration values 'FTX_NONE' and 'FXT_MAX' not handled in switch [-Wswitch]
                        switch(type)
                               ^
In file included from BBGE/RenderObject.cpp:29:
In file included from ExternalLibs/glm/glm.hpp:19:
ExternalLibs/glm/core/setup.hpp:138:16: warning: LLVM [-W#pragma-messages]
#       pragma message("LLVM")
               ^
In file included from BBGE/RenderObject.cpp:29:
In file included from ExternalLibs/glm/glm.hpp:72:
In file included from ExternalLibs/glm/./core/func_integer.hpp:159:
ExternalLibs/glm/core/func_integer.inl:91:96: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
                                return genUType(detail::highp_int_t(1) << detail::highp_int_t(32) + detail::highp_int_t(x) - detail::highp_int_t(y));
                                                                       ~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
ExternalLibs/glm/core/func_integer.inl:91:96: note: place parentheses around the '-' expression to silence this warning
                                return genUType(detail::highp_int_t(1) << detail::highp_int_t(32) + detail::highp_int_t(x) - detail::highp_int_t(y));
                                                                                                                           ^
                                                                          (                                                                        )
BBGE/SoundManager.cpp:446:9: warning: enumeration values 'SFX_NONE' and 'SFX_MAX' not handled in switch [-Wswitch]
        switch(effect){
               ^
BBGE/SoundManager.cpp:1561:9: warning: expression which evaluates to zero treated as a null pointer constant of type 'Buffer' (aka 'void *') [-Wnon-literal-null-conversion]
        return BBGE_AUDIO_NOCHANNEL;
               ^~~~~~~~~~~~~~~~~~~~
BBGE/Texture.cpp:279:41: warning: comparison of unsigned expression >= 0 is always true [-Wtautological-compare]
        if ((pos != std::string::npos) && (pos >= 0))
                                           ~~~ ^  ~
BBGE/SkeletalSprite.cpp:366:9: warning: enumeration values 'AC_SEGS_START' and 'AC_SEGS_STOP' not handled in switch [-Wswitch]
        switch(command)
               ^
ExternalLibs/glpng/zlib/inflate.c:1475:61: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
    if (strm == Z_NULL || strm->state == Z_NULL) return -1L << 16;
                                                        ~~~ ^
In file included from ExternalLibs/freetype2/src/cff/cff.c:24:
ExternalLibs/freetype2/src/cff/cffload.c:1258:38: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
    top->underline_position  = -100L << 16;
                               ~~~~~ ^
ExternalLibs/lua-5.1.4/src/lauxlib.c:577:61: warning: while loop has empty body [-Wempty-body]
   while ((c = getc(lf.f)) != EOF && c != LUA_SIGNATURE[0]) ;
                                                            ^
ExternalLibs/lua-5.1.4/src/lauxlib.c:577:61: note: put the semicolon on a separate line to silence this warning
CMakeFiles/aquaria.dir/ExternalLibs/lua-5.1.4/src/loslib.c.o: In function `os_tmpname':
ExternalLibs/lua-5.1.4/src/loslib.c:(.text+0x857): warning: warning: tmpnam() possibly used unsafely; consider using mkstemp()

Merge android scripts?

Android scripts should be merged.

  • they support save-anywhere mid-map (entity state preservation is not in core, not sure if this will ever happen, but having the script infrastructure already there might be a motivation to do it eventually)
  • those scripts use some new functions, add those if not present/compatible yet
  • less code-base divergence but that probably doesn't matter anymore at this point

Save screenshots in PNG instead of TGA format

Either use libpng, or pull in stb_image_write.

If stb_image_write is used: zlib, libpng, and glpng could be kicked and replaced with stb_image. Just need to generate mipmaps using the GL api in that case. For GL < 2 compat there should be some extension to generate mipmaps, instead of glGenerateMipmaps(), which is GL2+ only. Should speed up loading a good deal.

Caveat: Need to check up with OSX users if the changed gamma value that glpng uses changes the appearance if loaded without it.

See also http://www.g-truc.net/post-0256.html, https://community.amd.com/thread/114187

Header confusion

I've noticed that the bundled tinyxml2.h is still used even if you ask to use the system copy. This is because ExternalLibs is always in the include path. This header would need to be moved into a subdirectory.

I can't see any other instances where this would happen unless I unbundle GLPNG. The glpng.h header is normally placed in /usr/include/GL so the sources would be changed to #include <GL/glpng.h>. Putting the bundled header in ExternalLibs/GL would then hit the same problem so perhaps it should be ExternalLibs/glpng/GL.

There are other headers in ExternalLibs/GL but I'm not sure why. They are almost identical to the ones in BBGE/GL. Are they there for the partially bundled SDL? If not, I think they should go.

And before you moan about my unbundling, you'll be glad to know I'm not bothering to package BBGE and ttvfs separately now. 😉

not responsive menu (cant go ingame) RPI4

HI! I compiled this source code and tried to run the game on RPI4, it launches perfectly fine but the menu isn't responsive, I cant do anything (click on new game, etc)

also, I tried to emulate it with box86 and the framerate on the menu is significantly higher (and that wasnt expected)

hope you can help me

Indicate when trying to assign a 'wrong' shortcut

In the controllerfixup branch you can't assign keyboard shortcuts in the mouse column, etc. When you try anyway, nothing happens. There should be some visual or audible indicator when a wrong input set is used, like flashing the column header in red or a message.

Handle openGL context switch more gracefully

Use shared GL context creation flag with SDL2. Should hopefully get rid of the full and slow graphics reload on resolution change / Alt+Tab. Don't assume the GL context was lost if it wasn't.

(iirc it's not lost on win7and up. Need to text on XP, no idea about vista.)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.