Unable to find data for scbd_run.ani type ANI

Do you need help? Ask here!

Bug reporting belongs here: http://developer.wz2100.net/newticket
User avatar
Goth Zagog-Thou
Regular
Regular
Posts: 1582
Joined: 06 Jan 2007, 08:08
Location: Delta Base

Unable to find data for scbd_run.ani type ANI

Post by Goth Zagog-Thou »

A curious error indeed, since the file it is looking for IS actually where it's supposed to be.

And yes, this is attempt 15 of getting Cam 4 onto the 3.1 branch. 3.1_RC3 to be exact.

Here's the debug=wz output:

Code: Select all

--- Starting log [C:\Users\Christopher\Documents\Warzone 2100 3.1\logs\WZlog-0103_195157.txt]---
info    |07:51:57: [realmain:1133] Using C:\Users\Christopher\Documents\Warzone 2100 3.1\logs\WZlog-0103_195157.txt debug file
wz      |07:51:57: [check_Physfs:556] Compiled against PhysFS version: 2.0.1
wz      |07:51:57: [check_Physfs:558] Linked against PhysFS version: 2.0.1
wz      |07:51:57: [check_Physfs:572] [**] Supported archive(s): [ZIP], which is [PkZip/WinZip/Info-Zip compatible].
wz      |07:51:57: [check_Physfs:572] [**] Supported archive(s): [7Z], which is [LZMA (7zip) format].
wz      |07:51:57: [check_Physfs:572] [**] Supported archive(s): [GRP], which is [Build engine Groupfile format].
wz      |07:51:57: [check_Physfs:572] [**] Supported archive(s): [PAK], which is [Quake I/II format].
wz      |07:51:57: [check_Physfs:572] [**] Supported archive(s): [HOG], which is [Descent I/II HOG file format].
wz      |07:51:57: [check_Physfs:572] [**] Supported archive(s): [MVL], which is [Descent II Movielib format].
wz      |07:51:57: [check_Physfs:572] [**] Supported archive(s): [WAD], which is [DOOM engine format].
wz      |07:51:57: [realmain:1138] Warzone 2100 - Version SDL-3.1 rc3 (modified locally) - Built Oct  8 2012
wz      |07:51:57: [realmain:1139] Using language: 
wz      |07:51:57: [realmain:1140] Backend: SDL
wz      |07:51:57: [loadConfig:66] Reading configuration from C:/Users/Christopher/Documents/Warzone 2100 3.1/config
wz      |07:51:57: [setLanguage:349] Setting language to "System locale" ()
wz      |07:51:57: [setLocaleWindows:300] Requested locale "0"
wz      |07:51:57: [saveConfig:151] Writing prefs to registry "C:/Users/Christopher/Documents/Warzone 2100 3.1/config"
wz      |07:51:57: [registerSearchPath:204] registerSearchPath: Registering C:\Users\Christopher\Documents\Warzone 2100 3.1\ at priority 2
wz      |07:51:57: [rebuildSearchPath:357] *** Switching to multiplay mods ***
wz      |07:51:57: [registerSearchPath:204] registerSearchPath: Registering C:\Program Files (x86)/data/ at priority 3
wz      |07:51:57: [rebuildSearchPath:267] Cleaning up
wz      |07:51:57: [rebuildSearchPath:357] *** Switching to multiplay mods ***
wz      |07:51:57: [registerSearchPath:204] registerSearchPath: Registering C:\Program Files (x86)/share/warzone2100/ at priority 4
wz      |07:51:57: [rebuildSearchPath:267] Cleaning up
wz      |07:51:57: [rebuildSearchPath:357] *** Switching to multiplay mods ***
wz      |07:51:57: [registerSearchPath:204] registerSearchPath: Registering C:\Program Files (x86)\Warzone 2100-3.1_rc3\ at priority 5
wz      |07:51:57: [rebuildSearchPath:267] Cleaning up
wz      |07:51:57: [rebuildSearchPath:357] *** Switching to multiplay mods ***
wz      |07:51:58: [printSearchPath:248] Search paths:
wz      |07:51:58: [printSearchPath:251]     [C:\Users\Christopher\Documents\Warzone 2100 3.1\]
wz      |07:51:58: [printSearchPath:251]     [C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz]
wz      |07:51:58: [printSearchPath:251]     [C:\Program Files (x86)\Warzone 2100-3.1_rc3\mp.wz]
wz      |07:51:58: [printSearchPath:251]     [C:\Program Files (x86)\Warzone 2100-3.1_rc3\]
wz      |07:51:58: [printSearchPath:251]     [C:\Program Files (x86)\Warzone 2100-3.1_rc3\base.wz]
wz      |07:51:58: [scanDataDirs:690] gamedesc.lev found at C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz
wz      |07:51:58: [loadLevFile:149] Loading lev file: "gamedesc.lev", builtin
wz      |07:51:58: [loadLevFile:149] Loading lev file: "addon.lev", builtin
wz      |07:51:58: [loadLevFile:153] Loading lev file: "2c-Cam4M12TEST.xplayers.lev" from "maps/2c-Cam4M12TEST.wz"
wz      |07:51:58: [loadLevFile:153] Loading lev file: "2c-Grinder.xplayers.lev" from "maps/2c-Grinder.wz"
wz      |07:51:58: [loadLevFile:153] Loading lev file: "4c-ArizonaEqual.xplayers.lev" from "maps/4c-ArizonaEqual.wz"
wz      |07:51:58: [loadLevFile:153] Loading lev file: "4c-Equal-2.addon.lev" from "maps/4c-Equal-3.wz"
wz      |07:51:58: [loadLevFile:153] Loading lev file: "4c-Grinder2.xplayers.lev" from "maps/4c-Grinder2.wz"
wz      |07:51:58: [loadLevFile:153] Loading lev file: "4c-UrbanCloser.addon.lev" from "maps/4c-UrbanCloser.wz"
wz      |07:51:58: [loadLevFile:153] Loading lev file: "8c-ArizonaEqual.xplayers.lev" from "maps/8c-ArizonaEqual.wz"
wz      |07:51:58: [loadLevFile:153] Loading lev file: "8c-Equal-2.xplayers.lev" from "maps/8c-Equal-2.wz"
wz      |07:51:58: [loadLevFile:153] Loading lev file: "8c-K4X2-Mod-Scavs.xplayers.lev" from "maps/8c-K4X2-Scav.wz"
wz      |07:51:58: [loadLevFile:153] Loading lev file: "8c-UCE-Scavs.xplayers.lev" from "maps/8c-UCE-Scavs.wz"
wz      |07:51:58: [loadLevFile:153] Loading lev file: "8c-UrbanCloserEqual.addon.lev" from "maps/8c-UrbanCloserEqual.wz"
wz      |07:51:58: [loadLevFile:153] Loading lev file: "8c-UrbanEqual.addon.lev" from "maps/8c-UrbanEqual.wz"
wz      |07:51:59: [PlayList_Read:73] Reading...[directory: C:\Users\Christopher\Documents\Warzone 2100 3.1\] music/music.wpl
wz      |07:51:59: [radarInitVars:136] Resetting radar zoom to 16
wz      |07:51:59: [radarSize:128] radar=(1342,744) tex=(0,0) size=(0,0)
wz      |07:51:59: [resLoad:115] resLoad: loading [directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] wrf/frontend.wrf
wz      |07:51:59: [dataAudioCfgLoad:875] Reading...[directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] audio/frontaud.cfg
wz      |07:51:59: [strresLoad:107] Reading...[directory C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] messages/strings/names.txt
wz      |07:51:59: [cdAudio_OpenTrack:93] Reading...[directory: C:\Users\Christopher\Documents\Warzone 2100 3.1\] music/menu.ogg
info    |07:52:04: [seq_Play:565] unable to open 'sequences/cam1/c001.ogg' for playback
wz      |07:52:04: [frontendShutdown:732] == Shuting down frontend ==
wz      |07:52:04: [saveConfig:151] Writing prefs to registry "C:/Users/Christopher/Documents/Warzone 2100 3.1/config"
wz      |07:52:04: [levLoadData:635] Loading level CAM_1A hash 0000000000000000000000000000000000000000000000000000000000000000 ((null), type 0)
wz      |07:52:04: [levLoadData:654] ** Data set found is CAM_1A type 2
wz      |07:52:04: [levLoadData:713] Setting base dataset to load: CAM_4
wz      |07:52:04: [rebuildSearchPath:267] Cleaning up
wz      |07:52:04: [rebuildSearchPath:310] *** Switching to campaign mods ***
wz      |07:52:04: [rebuildSearchPath:339] * Failed to remove path C:\Users\Christopher\Documents\Warzone 2100 3.1\ again
wz      |07:52:04: [rebuildSearchPath:339] * Failed to remove path C:\Program Files (x86)/data/\ again
wz      |07:52:04: [rebuildSearchPath:339] * Failed to remove path C:\Program Files (x86)/share/warzone2100/\ again
wz      |07:52:05: [levLoadData:757] Calling stageOneInitialise!
wz      |07:52:05: [stageOneInitialise:781] == stageOneInitalise ==
wz      |07:52:05: [radarInitVars:136] Resetting radar zoom to 16
wz      |07:52:05: [radarSize:128] radar=(1342,744) tex=(0,0) size=(0,0)
wz      |07:52:05: [levLoadData:768] Loading base dataset CAM_4
wz      |07:52:05: [levLoadData:774] Loading [directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] wrf/vidmem.wrf ...
wz      |07:52:05: [resLoad:115] resLoad: loading [directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] wrf/vidmem.wrf
wz      |07:52:07: [levLoadData:774] Loading [directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] wrf/basic.wrf ...
wz      |07:52:07: [resLoad:115] resLoad: loading [directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] wrf/basic.wrf
wz      |07:52:07: [dataAnimLoad:894] Reading...[directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] anims/runanim.ani
wz      |07:52:07: [dataAnimLoad:894] Reading...[directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] anims/runflame.ani
wz      |07:52:07: [dataAnimLoad:894] Reading...[directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] anims/flamfall.ani
wz      |07:52:07: [dataAnimLoad:894] Reading...[directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] anims/fireknee.ani
wz      |07:52:07: [dataAnimLoad:894] Reading...[directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] anims/walkanim.ani
wz      |07:52:07: [dataAnimLoad:894] Reading...[directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] anims/blderik.ani
wz      |07:52:07: [dataAnimLoad:894] Reading...[directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] anims/cybd_run.ani
wz      |07:52:07: [dataAnimLoad:894] Reading...[directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] anims/cybdpjmp.ani
wz      |07:52:07: [dataAnimLoad:894] Reading...[directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] anims/cybdplnd.ani
wz      |07:52:07: [dataAnimLoad:894] Reading...[directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] anims/cybdprun.ani
wz      |07:52:07: [dataAnimCfgLoad:915] Reading...[directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] anims/anim.cfg
info    |07:52:07: [resGetDataFromHash:561] resGetDataFromHash: Unknown ID: 2f85069 Type: ANI
info    |07:52:07: [resGetDataFromHash:561] Assert in Warzone: frameresource.cpp:561 (psRes != __null), last script event: '<none>'
info    |07:52:07: [resGetData:577] resGetData: Unable to find data for scbd_run.ani type ANI
info    |07:52:07: [resGetData:577] Assert in Warzone: frameresource.cpp:577 (data != __null), last script event: '<none>'
info    |07:52:07: [anim_SetVals:303] Can't find anim scbd_run.ani
info    |07:52:07: [anim_SetVals:303] Assert in Warzone: anim.cpp:303 (false), last script event: '<none>'
wz      |07:52:07: [jsLoad:1025] jsload: script/rules.js
wz      |07:52:07: [levLoadData:774] Loading [directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] wrf/cam4.wrf ...
wz      |07:52:07: [resLoad:115] resLoad: loading [directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] wrf/cam4.wrf
wz      |07:52:07: [strresLoad:107] Reading...[directory C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] messages/strings/genstrings.txt
wz      |07:52:07: [strresLoad:107] Reading...[directory C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] messages/strings/resstrings.txt
wz      |07:52:07: [strresLoad:107] Reading...[directory C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] messages/strings/scrstrings.txt
wz      |07:52:07: [levLoadData:774] Loading [directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] wrf/audio.wrf ...
wz      |07:52:07: [resLoad:115] resLoad: loading [directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] wrf/audio.wrf
wz      |07:52:08: [dataAudioCfgLoad:875] Reading...[directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] audio/audio.cfg
wz      |07:52:08: [levLoadData:774] Loading [directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] wrf/piestats.wrf ...
wz      |07:52:08: [resLoad:115] resLoad: loading [directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] wrf/piestats.wrf
wz      |07:52:08: [levLoadData:774] Loading [directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] wrf/stats.wrf ...
wz      |07:52:08: [resLoad:115] resLoad: loading [directory: C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] wrf/stats.wrf
wz      |07:52:08: [strresLoad:107] Reading...[directory C:\Program Files (x86)\Warzone 2100-3.1_rc3\mods/autoload\cam4-wz31rc3-r15b.wz] messages/strings/names.txt
wz      |07:52:08: [stageTwoInitialise:961] == stageTwoInitalise ==
wz      |07:52:08: [levLoadData:915] Loading scenario file wrf/cam4/cam4-1.gam
wz      |07:52:08: [levLoadData:920] LDS_COMPLETE / LDS_CAMSTART
wz      |07:52:08: [gameLoad:2857] gameLoad
Anyone have an idea what's wrong and how to fix it? I very much appreciate any and all input. :)

[EDIT] I've attached the mod for anyone who wants to take a closer look. Please note that if you happen to get it working that it's not meant for prime time yet -- it's simply the prototype port to the 3.1 branch.

Download here (56mb)
User avatar
aubergine
Professional
Professional
Posts: 3462
Joined: 10 Oct 2010, 00:58

Re: Unable to find data for scbd_run.ani type ANI

Post by aubergine »

Physfs problem?
"Dedicated to discovering Warzone artefacts, and sharing them freely for the benefit of the community."
-- https://warzone.atlassian.net/wiki/display/GO
User avatar
Goth Zagog-Thou
Regular
Regular
Posts: 1582
Joined: 06 Jan 2007, 08:08
Location: Delta Base

Re: Unable to find data for scbd_run.ani type ANI

Post by Goth Zagog-Thou »

I thought it was physfs 2.0.2 that was the troublemaker? And I'm on Windows 8, meaning that I'm using the precompiled binary. :P
User avatar
NoQ
Special
Special
Posts: 6226
Joined: 24 Dec 2009, 11:35
Location: /var/zone

Re: Unable to find data for scbd_run.ani type ANI

Post by NoQ »

Just a thought: you can discover physfs troubles by changing the archive format from .zip to something else like .7z, right? Anyway, your log says v2.0.1. Downloading, will have a look.
User avatar
NoQ
Special
Special
Posts: 6226
Joined: 24 Dec 2009, 11:35
Location: /var/zone

Re: Unable to find data for scbd_run.ani type ANI

Post by NoQ »

You need to mention scbd_run.ani and scbd_run.pie in basic.wrf.
Then i silently crash. But that's another story ...

Code: Select all

Program: /home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100(warzone2100)
Command line: "/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100" 
Version: Version SDL-3.1 rc3 (modified locally) - Built Dec  3 2012
Distributor: UNKNOWN
Compiled on: Dec  3 2012 09:18:09
Compiled by: GCC 4.7.2
Compiled mode: Release build
Executed on: Fri Jan  4 10:17:14 2013
Operating system: Linux
Node name: 1225b
Release: 3.6.6-1-ARCH
Version: #1 SMP PREEMPT Mon Nov 5 11:57:22 CET 2012
Machine: x86_64

Pointers: 64bit

Compiled against PhysicsFS version: 2.0.3
Running with PhysicsFS version: 2.0.3

Misc Data:
[10:17:14]mod: cam4-wz31rc3-r15b.wz
[10:17:14]Video Mode 1280 x 720 (window)
[10:17:15]OpenGL Vendor: ATI Technologies Inc.
[10:17:15]OpenGL Renderer: AMD Radeon HD 6320 Graphics
[10:17:15]OpenGL Version: 4.2.11903 Compatibility Profile Context
[10:17:15]GLEW Version: 1.8.0
[10:17:15]OpenGL GLSL Version : 4.20
[10:17:15]Using Backend: SDL
[10:17:15]Using language: System locale
[10:17:18]mod: cam4-wz31rc3-r15b.wz

Dump caused by signal: SIGSEGV: Invalid memory reference: Address not mapped to object

Log message: info    |10:17:14: [realmain:1133] Using /home/noq/.warzone2100-3.1/logs/WZlog-0104_101714.txt debug file
Log message: error   |10:17:15: [loadLevFile:158] loadLevFile: File not found: addon.lev
Log message: info    |10:17:18: [seq_Play:565] unable to open 'sequences/cam1/c001.ogg' for playback

GLIBC raw backtrace:
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100[0x782154]
/usr/lib/libpthread.so.0(+0xf1a0)[0x7fbc244771a0]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100[0x6dd7f9]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100(_Z14visTilesUpdateP11BASE_OBJECT+0x140)[0x6de478]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100(_Z16buildingCompleteP9STRUCTURE+0x7d)[0x6c31cc]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100[0x576f7b]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100(_Z8loadGamePKcbbb+0x2442)[0x5661eb]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100[0x5e2fe8]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100(_Z12startMission10LEVEL_TYPEPc+0xe8)[0x5e1637]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100(_Z11levLoadDataPKcPK6Sha256Pc9GAME_TYPE+0xfad)[0x5c6d19]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100[0x5ceb80]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100[0x5cf02f]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100(_Z8mainLoopv+0x7c)[0x5cf14d]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100(_Z7wzMain3v+0x75)[0x7a0b86]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100(_Z8realmainiPPc+0xa20)[0x5cfb8a]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100(main+0x20)[0x79ead4]
/usr/lib/libc.so.6(__libc_start_main+0xf5)[0x7fbc209b3725]
/home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100[0x4e54e9]

GDB extended backtrace:
GNU gdb (GDB) 7.5
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100...done.
Attaching to program: /home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100, process 10744
Reading symbols from /usr/lib/libz.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libz.so.1
Reading symbols from /usr/lib/libSDL-1.2.so.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libSDL-1.2.so.0
Reading symbols from /usr/lib/libpthread.so.0...(no debugging symbols found)...done.
[New LWP 10753]
[New LWP 10751]
[New LWP 10750]
[New LWP 10749]
[New LWP 10748]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Loaded symbols for /usr/lib/libpthread.so.0
Reading symbols from /usr/lib/libphysfs.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libphysfs.so.1
Reading symbols from /usr/lib/libpng15.so.15...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libpng15.so.15
Reading symbols from /usr/lib/libvorbisfile.so.3...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libvorbisfile.so.3
Reading symbols from /usr/lib/libvorbis.so.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libvorbis.so.0
Reading symbols from /usr/lib/libogg.so.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libogg.so.0
Reading symbols from /usr/lib/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libm.so.6
Reading symbols from /usr/lib/libtheora.so.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libtheora.so.0
Reading symbols from /usr/lib/libopenal.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libopenal.so.1
Reading symbols from /usr/lib/libfribidi.so.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libfribidi.so.0
Reading symbols from /usr/lib/libfreetype.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libfreetype.so.6
Reading symbols from /usr/lib/libfontconfig.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libfontconfig.so.1
Reading symbols from /usr/lib/libGL.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libGL.so.1
Reading symbols from /usr/lib/libGLU.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libGLU.so.1
Reading symbols from /usr/lib/libGLEW.so.1.8...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libGLEW.so.1.8
Reading symbols from /usr/lib/libQtNetwork.so.4...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libQtNetwork.so.4
Reading symbols from /usr/lib/libQtScript.so.4...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libQtScript.so.4
Reading symbols from /usr/lib/libQtCore.so.4...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libQtCore.so.4
Reading symbols from /usr/lib/libX11.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libX11.so.6
Reading symbols from /usr/lib/libXrandr.so.2...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXrandr.so.2
Reading symbols from /usr/lib/libstdc++.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libstdc++.so.6
Reading symbols from /usr/lib/libgcc_s.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libgcc_s.so.1
Reading symbols from /usr/lib/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libc.so.6
Reading symbols from /usr/lib/libdl.so.2...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libdl.so.2
Reading symbols from /lib/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux-x86-64.so.2
Reading symbols from /usr/lib/librt.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/librt.so.1
Reading symbols from /usr/lib/libbz2.so.1.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libbz2.so.1.0
Reading symbols from /usr/lib/libexpat.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libexpat.so.1
Reading symbols from /usr/lib/libXext.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXext.so.6
Reading symbols from /usr/lib/libatiuki.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libatiuki.so.1
Reading symbols from /usr/lib/libXmu.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXmu.so.6
Reading symbols from /usr/lib/libXi.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXi.so.6
Reading symbols from /usr/lib/libssl.so.1.0.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libssl.so.1.0.0
Reading symbols from /usr/lib/libcrypto.so.1.0.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libcrypto.so.1.0.0
Reading symbols from /usr/lib/libglib-2.0.so.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libglib-2.0.so.0
Reading symbols from /usr/lib/libxcb.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libxcb.so.1
Reading symbols from /usr/lib/libXrender.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXrender.so.1
Reading symbols from /usr/lib/libXt.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXt.so.6
Reading symbols from /usr/lib/libpcre.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libpcre.so.1
Reading symbols from /usr/lib/libXau.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXau.so.6
Reading symbols from /usr/lib/libXdmcp.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXdmcp.so.6
Reading symbols from /usr/lib/libSM.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libSM.so.6
Reading symbols from /usr/lib/libICE.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libICE.so.6
Reading symbols from /usr/lib/libuuid.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libuuid.so.1
Reading symbols from /usr/lib/gconv/UTF-16.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/gconv/UTF-16.so
Reading symbols from /usr/lib/libicui18n.so.50...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libicui18n.so.50
Reading symbols from /usr/lib/libicuuc.so.50...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libicuuc.so.50
Reading symbols from /usr/lib/libicudata.so.50...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libicudata.so.50
Reading symbols from /usr/lib/libXcursor.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXcursor.so.1
Reading symbols from /usr/lib/libXfixes.so.3...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXfixes.so.3
Reading symbols from /usr/lib/dri/fglrx_dri.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/dri/fglrx_dri.so
Reading symbols from /usr/lib/libatiadlxx.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libatiadlxx.so
Reading symbols from /usr/lib/libXinerama.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXinerama.so.1
0x00007fbc24476d97 in waitpid () from /usr/lib/libpthread.so.0
(gdb)    0x6dd7f9 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+85>:	mov    0x28(%rax),%eax
(gdb) #4  0x00000000006dd7f9 in doWaveTerrain (psObj=0x4c26010, recordTilePos=0x7fff52253a80, lastRecordTilePos=0x7fff52253a74) at visibility.cpp:138
138		const int sz = psObj->pos.z + MAX(MIN_VIS_HEIGHT, psObj->sDisplay.imd->max.y);
(gdb) Dump of assembler code for function doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*):
135	{
   0x00000000006dd7a4 <+0>:	push   %rbp
   0x00000000006dd7a5 <+1>:	mov    %rsp,%rbp
   0x00000000006dd7a8 <+4>:	sub    $0x55b0,%rsp
   0x00000000006dd7af <+11>:	mov    %rdi,-0x5588(%rbp)
   0x00000000006dd7b6 <+18>:	mov    %rsi,-0x5590(%rbp)
   0x00000000006dd7bd <+25>:	mov    %rdx,-0x5598(%rbp)

136		const int sx = psObj->pos.x;
   0x00000000006dd7c4 <+32>:	mov    -0x5588(%rbp),%rax
   0x00000000006dd7cb <+39>:	mov    0x10(%rax),%eax
   0x00000000006dd7ce <+42>:	mov    %eax,-0x5560(%rbp)

137		const int sy = psObj->pos.y;
   0x00000000006dd7d4 <+48>:	mov    -0x5588(%rbp),%rax
   0x00000000006dd7db <+55>:	mov    0x14(%rax),%eax
   0x00000000006dd7de <+58>:	mov    %eax,-0x555c(%rbp)

138		const int sz = psObj->pos.z + MAX(MIN_VIS_HEIGHT, psObj->sDisplay.imd->max.y);
   0x00000000006dd7e4 <+64>:	mov    -0x5588(%rbp),%rax
   0x00000000006dd7eb <+71>:	mov    0x18(%rax),%edx
   0x00000000006dd7ee <+74>:	mov    -0x5588(%rbp),%rax
   0x00000000006dd7f5 <+81>:	mov    0x30(%rax),%rax
=> 0x00000000006dd7f9 <+85>:	mov    0x28(%rax),%eax
   0x00000000006dd7fc <+88>:	mov    $0x50,%ecx
   0x00000000006dd801 <+93>:	cmp    $0x50,%eax
   0x00000000006dd804 <+96>:	cmovl  %ecx,%eax
   0x00000000006dd807 <+99>:	add    %edx,%eax
   0x00000000006dd809 <+101>:	mov    %eax,-0x5558(%rbp)

139		const unsigned radius = objSensorRange(psObj);
   0x00000000006dd80f <+107>:	mov    -0x5588(%rbp),%rax
   0x00000000006dd816 <+114>:	mov    %rax,%rdi
   0x00000000006dd819 <+117>:	callq  0x6dd085 <objSensorRange(BASE_OBJECT const*)>
   0x00000000006dd81e <+122>:	mov    %eax,-0x5554(%rbp)

140		const int rayPlayer = psObj->player;
   0x00000000006dd824 <+128>:	mov    -0x5588(%rbp),%rax
   0x00000000006dd82b <+135>:	movzbl 0x22(%rax),%eax
   0x00000000006dd82f <+139>:	movzbl %al,%eax
   0x00000000006dd832 <+142>:	mov    %eax,-0x5550(%rbp)

141		size_t i;
142		size_t size;
143		const WavecastTile *tiles = getWavecastTable(radius, &size);
   0x00000000006dd838 <+148>:	lea    -0x5530(%rbp),%rdx
   0x00000000006dd83f <+155>:	mov    -0x5554(%rbp),%eax
   0x00000000006dd845 <+161>:	mov    %rdx,%rsi
   0x00000000006dd848 <+164>:	mov    %eax,%edi
   0x00000000006dd84a <+166>:	callq  0x6e2cd1 <getWavecastTable(unsigned int, unsigned long*)>
   0x00000000006dd84f <+171>:	mov    %rax,-0x5520(%rbp)

144		int tileHeight, perspectiveHeight, perspectiveHeightLeeway;
145	#define MAX_WAVECAST_LIST_SIZE 1360  // Trivial upper bound to what a fully upgraded WSS can use (its number of angles). Should probably be some factor times the maximum possible radius. Is probably a lot more than needed. Tested to need at least 180.
146		int heights[2][MAX_WAVECAST_LIST_SIZE];
147		int angles[2][MAX_WAVECAST_LIST_SIZE + 1];
148		int readListSize = 0, readListPos = 0, writeListPos = 0;  // readListSize, readListPos dummy initialisations.
   0x00000000006dd856 <+178>:	movl   $0x0,-0x5578(%rbp)
   0x00000000006dd860 <+188>:	movl   $0x0,-0x5574(%rbp)
   0x00000000006dd86a <+198>:	movl   $0x0,-0x5570(%rbp)

149		int readList = 0;  // Reading from this list, writing to the other. Could also initialise to rand()%2.
   0x00000000006dd874 <+208>:	movl   $0x0,-0x556c(%rbp)

150		int lastHeight = 0;  // lastHeight dummy initialisation.
   0x00000000006dd87e <+218>:	movl   $0x0,-0x5568(%rbp)

151		int lastAngle = 0x7FFFFFFF;
   0x00000000006dd888 <+228>:	movl   $0x7fffffff,-0x5564(%rbp)

152	
153		// Start with full vision of all angles. (If someday wanting to make droids that can only look in one direction, change here, after getting the original angle values saved in the wavecast table.)
154		heights[!readList][writeListPos] = -0x7FFFFFFF-1;  // Smallest integer.
   0x00000000006dd892 <+238>:	cmpl   $0x0,-0x556c(%rbp)
   0x00000000006dd899 <+245>:	sete   %al
   0x00000000006dd89c <+248>:	movzbl %al,%edx
   0x00000000006dd89f <+251>:	mov    -0x5570(%rbp),%eax
   0x00000000006dd8a5 <+257>:	cltq   
   0x00000000006dd8a7 <+259>:	movslq %edx,%rdx
   0x00000000006dd8aa <+262>:	imul   $0x550,%rdx,%rdx
   0x00000000006dd8b1 <+269>:	add    %rdx,%rax
   0x00000000006dd8b4 <+272>:	movl   $0x80000000,-0x5510(%rbp,%rax,4)

155		angles[!readList][writeListPos] = 0;               // Smallest angle.
   0x00000000006dd8bf <+283>:	cmpl   $0x0,-0x556c(%rbp)
   0x00000000006dd8c6 <+290>:	sete   %al
   0x00000000006dd8c9 <+293>:	movzbl %al,%edx
   0x00000000006dd8cc <+296>:	mov    -0x5570(%rbp),%eax
   0x00000000006dd8d2 <+302>:	cltq   
   0x00000000006dd8d4 <+304>:	movslq %edx,%rdx
   0x00000000006dd8d7 <+307>:	imul   $0x551,%rdx,%rdx
   0x00000000006dd8de <+314>:	add    %rdx,%rax
   0x00000000006dd8e1 <+317>:	movl   $0x0,-0x2a90(%rbp,%rax,4)

156		++writeListPos;
   0x00000000006dd8ec <+328>:	addl   $0x1,-0x5570(%rbp)

157	
158		for (i = 0; i < size; ++i)
   0x00000000006dd8f3 <+335>:	movq   $0x0,-0x5528(%rbp)
   0x00000000006dd8fe <+346>:	jmpq   0x6dde6a <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1734>
   0x00000000006dde62 <+1726>:	addq   $0x1,-0x5528(%rbp)
   0x00000000006dde6a <+1734>:	mov    -0x5530(%rbp),%rax
   0x00000000006dde71 <+1741>:	cmp    %rax,-0x5528(%rbp)
   0x00000000006dde78 <+1748>:	setb   %al
   0x00000000006dde7b <+1751>:	test   %al,%al
   0x00000000006dde7d <+1753>:	jne    0x6dd903 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+351>

159		{
160			const int mapX = map_coord(sx) + tiles[i].dx;
   0x00000000006dd903 <+351>:	mov    -0x5560(%rbp),%eax
   0x00000000006dd909 <+357>:	mov    %eax,%edi
   0x00000000006dd90b <+359>:	callq  0x6dd19f <map_coord(int32_t)>
   0x00000000006dd910 <+364>:	mov    %eax,%ecx
   0x00000000006dd912 <+366>:	mov    -0x5528(%rbp),%rdx
   0x00000000006dd919 <+373>:	mov    %rdx,%rax
   0x00000000006dd91c <+376>:	add    %rax,%rax
   0x00000000006dd91f <+379>:	add    %rdx,%rax
   0x00000000006dd922 <+382>:	shl    $0x2,%rax
   0x00000000006dd926 <+386>:	mov    %rax,%rdx
   0x00000000006dd929 <+389>:	mov    -0x5520(%rbp),%rax
   0x00000000006dd930 <+396>:	add    %rdx,%rax
   0x00000000006dd933 <+399>:	movzwl (%rax),%eax
   0x00000000006dd936 <+402>:	cwtl   
   0x00000000006dd937 <+403>:	add    %ecx,%eax
   0x00000000006dd939 <+405>:	mov    %eax,-0x554c(%rbp)

161			const int mapY = map_coord(sy) + tiles[i].dy;
   0x00000000006dd93f <+411>:	mov    -0x555c(%rbp),%eax
   0x00000000006dd945 <+417>:	mov    %eax,%edi
   0x00000000006dd947 <+419>:	callq  0x6dd19f <map_coord(int32_t)>
   0x00000000006dd94c <+424>:	mov    %eax,%ecx
   0x00000000006dd94e <+426>:	mov    -0x5528(%rbp),%rdx
   0x00000000006dd955 <+433>:	mov    %rdx,%rax
   0x00000000006dd958 <+436>:	add    %rax,%rax
   0x00000000006dd95b <+439>:	add    %rdx,%rax
   0x00000000006dd95e <+442>:	shl    $0x2,%rax
   0x00000000006dd962 <+446>:	mov    %rax,%rdx
   0x00000000006dd965 <+449>:	mov    -0x5520(%rbp),%rax
   0x00000000006dd96c <+456>:	add    %rdx,%rax
   0x00000000006dd96f <+459>:	movzwl 0x2(%rax),%eax
   0x00000000006dd973 <+463>:	cwtl   
   0x00000000006dd974 <+464>:	add    %ecx,%eax
   0x00000000006dd976 <+466>:	mov    %eax,-0x5548(%rbp)

162			MAPTILE *psTile;
163			bool seen = false;
   0x00000000006dd97c <+472>:	movb   $0x0,-0x557a(%rbp)

164	
165			if (mapX < 0 || mapX >= mapWidth || mapY < 0 || mapY >= mapHeight)
   0x00000000006dd983 <+479>:	cmpl   $0x0,-0x554c(%rbp)
   0x00000000006dd98a <+486>:	js     0x6dde61 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1725>
   0x00000000006dd990 <+492>:	mov    0xab44fa(%rip),%eax        # 0x1191e90 <mapWidth>
   0x00000000006dd996 <+498>:	cmp    %eax,-0x554c(%rbp)
   0x00000000006dd99c <+504>:	jge    0x6dde61 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1725>
   0x00000000006dd9a2 <+510>:	cmpl   $0x0,-0x5548(%rbp)
   0x00000000006dd9a9 <+517>:	js     0x6dde61 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1725>
   0x00000000006dd9af <+523>:	mov    0xab44df(%rip),%eax        # 0x1191e94 <mapHeight>
   0x00000000006dd9b5 <+529>:	cmp    %eax,-0x5548(%rbp)
   0x00000000006dd9bb <+535>:	jge    0x6dde61 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1725>

166			{
167				continue;
   0x00000000006dde61 <+1725>:	nop

168			}
169			psTile = mapTile(mapX, mapY);
   0x00000000006dd9c1 <+541>:	mov    -0x5548(%rbp),%edx
   0x00000000006dd9c7 <+547>:	mov    -0x554c(%rbp),%eax
   0x00000000006dd9cd <+553>:	mov    %edx,%esi
   0x00000000006dd9cf <+555>:	mov    %eax,%edi
   0x00000000006dd9d1 <+557>:	callq  0x6dd1f5 <mapTile(int32_t, int32_t)>
   0x00000000006dd9d6 <+562>:	mov    %rax,-0x5518(%rbp)

170			tileHeight = psTile->height;
   0x00000000006dd9dd <+569>:	mov    -0x5518(%rbp),%rax
   0x00000000006dd9e4 <+576>:	mov    0x14(%rax),%eax
   0x00000000006dd9e7 <+579>:	mov    %eax,-0x5544(%rbp)

171			perspectiveHeight = (tileHeight - sz) * tiles[i].invRadius;
   0x00000000006dd9ed <+585>:	mov    -0x5558(%rbp),%eax
   0x00000000006dd9f3 <+591>:	mov    -0x5544(%rbp),%edx
   0x00000000006dd9f9 <+597>:	mov    %edx,%ecx
   0x00000000006dd9fb <+599>:	sub    %eax,%ecx
   0x00000000006dd9fd <+601>:	mov    -0x5528(%rbp),%rdx
   0x00000000006dda04 <+608>:	mov    %rdx,%rax
   0x00000000006dda07 <+611>:	add    %rax,%rax
   0x00000000006dda0a <+614>:	add    %rdx,%rax
   0x00000000006dda0d <+617>:	shl    $0x2,%rax
   0x00000000006dda11 <+621>:	mov    %rax,%rdx
   0x00000000006dda14 <+624>:	mov    -0x5520(%rbp),%rax
   0x00000000006dda1b <+631>:	add    %rdx,%rax
   0x00000000006dda1e <+634>:	mov    0x4(%rax),%eax
   0x00000000006dda21 <+637>:	imul   %ecx,%eax
   0x00000000006dda24 <+640>:	mov    %eax,-0x5540(%rbp)

172			perspectiveHeightLeeway = (tileHeight - sz + MIN_VIS_HEIGHT) * tiles[i].invRadius;
   0x00000000006dda2a <+646>:	mov    -0x5558(%rbp),%eax
   0x00000000006dda30 <+652>:	mov    -0x5544(%rbp),%edx
   0x00000000006dda36 <+658>:	mov    %edx,%ecx
   0x00000000006dda38 <+660>:	sub    %eax,%ecx
   0x00000000006dda3a <+662>:	mov    %ecx,%eax
   0x00000000006dda3c <+664>:	lea    0x50(%rax),%ecx
   0x00000000006dda3f <+667>:	mov    -0x5528(%rbp),%rdx
   0x00000000006dda46 <+674>:	mov    %rdx,%rax
   0x00000000006dda49 <+677>:	add    %rax,%rax
   0x00000000006dda4c <+680>:	add    %rdx,%rax
   0x00000000006dda4f <+683>:	shl    $0x2,%rax
   0x00000000006dda53 <+687>:	mov    %rax,%rdx
   0x00000000006dda56 <+690>:	mov    -0x5520(%rbp),%rax
   0x00000000006dda5d <+697>:	add    %rdx,%rax
   0x00000000006dda60 <+700>:	mov    0x4(%rax),%eax
   0x00000000006dda63 <+703>:	imul   %ecx,%eax
   0x00000000006dda66 <+706>:	mov    %eax,-0x553c(%rbp)

173	
174			if (tiles[i].angBegin < lastAngle)
   0x00000000006dda6c <+712>:	mov    -0x5528(%rbp),%rdx
   0x00000000006dda73 <+719>:	mov    %rdx,%rax
   0x00000000006dda76 <+722>:	add    %rax,%rax
   0x00000000006dda79 <+725>:	add    %rdx,%rax
   0x00000000006dda7c <+728>:	shl    $0x2,%rax
   0x00000000006dda80 <+732>:	mov    %rax,%rdx
   0x00000000006dda83 <+735>:	mov    -0x5520(%rbp),%rax
   0x00000000006dda8a <+742>:	add    %rdx,%rax
   0x00000000006dda8d <+745>:	movzwl 0x8(%rax),%eax
   0x00000000006dda91 <+749>:	cwtl   
   0x00000000006dda92 <+750>:	cmp    -0x5564(%rbp),%eax
   0x00000000006dda98 <+756>:	jge    0x6ddb06 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+866>

175			{
176				// Gone around the circle. (Or just started scan.)
177				angles[!readList][writeListPos] = lastAngle;
   0x00000000006dda9a <+758>:	cmpl   $0x0,-0x556c(%rbp)
   0x00000000006ddaa1 <+765>:	sete   %al
   0x00000000006ddaa4 <+768>:	movzbl %al,%edx
   0x00000000006ddaa7 <+771>:	mov    -0x5570(%rbp),%eax
   0x00000000006ddaad <+777>:	cltq   
   0x00000000006ddaaf <+779>:	movslq %edx,%rdx
   0x00000000006ddab2 <+782>:	imul   $0x551,%rdx,%rdx
   0x00000000006ddab9 <+789>:	add    %rax,%rdx
   0x00000000006ddabc <+792>:	mov    -0x5564(%rbp),%eax
   0x00000000006ddac2 <+798>:	mov    %eax,-0x2a90(%rbp,%rdx,4)

178	
179				// Flip the lists.
180				readList = !readList;
   0x00000000006ddac9 <+805>:	cmpl   $0x0,-0x556c(%rbp)
   0x00000000006ddad0 <+812>:	sete   %al
   0x00000000006ddad3 <+815>:	movzbl %al,%eax
   0x00000000006ddad6 <+818>:	mov    %eax,-0x556c(%rbp)

181				readListPos = 0;
   0x00000000006ddadc <+824>:	movl   $0x0,-0x5574(%rbp)

182				readListSize = writeListPos;
   0x00000000006ddae6 <+834>:	mov    -0x5570(%rbp),%eax
   0x00000000006ddaec <+840>:	mov    %eax,-0x5578(%rbp)

183				writeListPos = 0;
   0x00000000006ddaf2 <+846>:	movl   $0x0,-0x5570(%rbp)

184				lastHeight = 1;  // Impossible value since tiles[i].invRadius > 1 for all i, so triggers writing first entry in list.
   0x00000000006ddafc <+856>:	movl   $0x1,-0x5568(%rbp)

185			}
186			lastAngle = tiles[i].angEnd;
   0x00000000006ddb06 <+866>:	mov    -0x5528(%rbp),%rdx
   0x00000000006ddb0d <+873>:	mov    %rdx,%rax
   0x00000000006ddb10 <+876>:	add    %rax,%rax
   0x00000000006ddb13 <+879>:	add    %rdx,%rax
   0x00000000006ddb16 <+882>:	shl    $0x2,%rax
   0x00000000006ddb1a <+886>:	mov    %rax,%rdx
   0x00000000006ddb1d <+889>:	mov    -0x5520(%rbp),%rax
   0x00000000006ddb24 <+896>:	add    %rdx,%rax
   0x00000000006ddb27 <+899>:	movzwl 0xa(%rax),%eax
   0x00000000006ddb2b <+903>:	cwtl   
   0x00000000006ddb2c <+904>:	mov    %eax,-0x5564(%rbp)

187	
188			while (angles[readList][readListPos + 1] <= tiles[i].angBegin && readListPos < readListSize)
   0x00000000006ddb32 <+910>:	jmp    0x6ddb3b <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+919>
   0x00000000006ddb3b <+919>:	mov    -0x5574(%rbp),%eax
   0x00000000006ddb41 <+925>:	add    $0x1,%eax
   0x00000000006ddb44 <+928>:	cltq   
   0x00000000006ddb46 <+930>:	mov    -0x556c(%rbp),%edx
   0x00000000006ddb4c <+936>:	movslq %edx,%rdx
   0x00000000006ddb4f <+939>:	imul   $0x551,%rdx,%rdx
   0x00000000006ddb56 <+946>:	add    %rdx,%rax
   0x00000000006ddb59 <+949>:	mov    -0x2a90(%rbp,%rax,4),%ecx
   0x00000000006ddb60 <+956>:	mov    -0x5528(%rbp),%rdx
   0x00000000006ddb67 <+963>:	mov    %rdx,%rax
   0x00000000006ddb6a <+966>:	add    %rax,%rax
   0x00000000006ddb6d <+969>:	add    %rdx,%rax
   0x00000000006ddb70 <+972>:	shl    $0x2,%rax
   0x00000000006ddb74 <+976>:	mov    %rax,%rdx
   0x00000000006ddb77 <+979>:	mov    -0x5520(%rbp),%rax
   0x00000000006ddb7e <+986>:	add    %rdx,%rax
   0x00000000006ddb81 <+989>:	movzwl 0x8(%rax),%eax
   0x00000000006ddb85 <+993>:	cwtl   
   0x00000000006ddb86 <+994>:	cmp    %eax,%ecx
   0x00000000006ddb88 <+996>:	jg     0x6ddb9f <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1019>
   0x00000000006ddb8a <+998>:	mov    -0x5574(%rbp),%eax
   0x00000000006ddb90 <+1004>:	cmp    -0x5578(%rbp),%eax
   0x00000000006ddb96 <+1010>:	jge    0x6ddb9f <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1019>
   0x00000000006ddb98 <+1012>:	mov    $0x1,%eax
   0x00000000006ddb9d <+1017>:	jmp    0x6ddba4 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1024>
   0x00000000006ddb9f <+1019>:	mov    $0x0,%eax
   0x00000000006ddba4 <+1024>:	test   %al,%al
   0x00000000006ddba6 <+1026>:	jne    0x6ddb34 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+912>

189			{
190				++readListPos;  // Skip, not relevant.
   0x00000000006ddb34 <+912>:	addl   $0x1,-0x5574(%rbp)

191			}
192	
193			while (angles[readList][readListPos] < tiles[i].angEnd && readListPos < readListSize)
   0x00000000006ddba8 <+1028>:	jmpq   0x6ddd83 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1503>
   0x00000000006ddd83 <+1503>:	mov    -0x5574(%rbp),%eax
   0x00000000006ddd89 <+1509>:	cltq   
   0x00000000006ddd8b <+1511>:	mov    -0x556c(%rbp),%edx
   0x00000000006ddd91 <+1517>:	movslq %edx,%rdx
   0x00000000006ddd94 <+1520>:	imul   $0x551,%rdx,%rdx
   0x00000000006ddd9b <+1527>:	add    %rdx,%rax
   0x00000000006ddd9e <+1530>:	mov    -0x2a90(%rbp,%rax,4),%ecx
   0x00000000006ddda5 <+1537>:	mov    -0x5528(%rbp),%rdx
   0x00000000006dddac <+1544>:	mov    %rdx,%rax
   0x00000000006dddaf <+1547>:	add    %rax,%rax
   0x00000000006dddb2 <+1550>:	add    %rdx,%rax
   0x00000000006dddb5 <+1553>:	shl    $0x2,%rax
   0x00000000006dddb9 <+1557>:	mov    %rax,%rdx
   0x00000000006dddbc <+1560>:	mov    -0x5520(%rbp),%rax
   0x00000000006dddc3 <+1567>:	add    %rdx,%rax
   0x00000000006dddc6 <+1570>:	movzwl 0xa(%rax),%eax
   0x00000000006dddca <+1574>:	cwtl   
   0x00000000006dddcb <+1575>:	cmp    %eax,%ecx
   0x00000000006dddcd <+1577>:	jge    0x6ddde4 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1600>
   0x00000000006dddcf <+1579>:	mov    -0x5574(%rbp),%eax
   0x00000000006dddd5 <+1585>:	cmp    -0x5578(%rbp),%eax
   0x00000000006ddddb <+1591>:	jge    0x6ddde4 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1600>
   0x00000000006ddddd <+1593>:	mov    $0x1,%eax
   0x00000000006ddde2 <+1598>:	jmp    0x6ddde9 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1605>
   0x00000000006ddde4 <+1600>:	mov    $0x0,%eax
   0x00000000006ddde9 <+1605>:	test   %al,%al
   0x00000000006dddeb <+1607>:	jne    0x6ddbad <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1033>

194			{
195				int oldHeight = heights[readList][readListPos];
   0x00000000006ddbad <+1033>:	mov    -0x5574(%rbp),%eax
   0x00000000006ddbb3 <+1039>:	cltq   
   0x00000000006ddbb5 <+1041>:	mov    -0x556c(%rbp),%edx
   0x00000000006ddbbb <+1047>:	movslq %edx,%rdx
   0x00000000006ddbbe <+1050>:	imul   $0x550,%rdx,%rdx
   0x00000000006ddbc5 <+1057>:	add    %rdx,%rax
   0x00000000006ddbc8 <+1060>:	mov    -0x5510(%rbp,%rax,4),%eax
   0x00000000006ddbcf <+1067>:	mov    %eax,-0x5538(%rbp)

196				int newHeight = MAX(oldHeight, perspectiveHeight);
   0x00000000006ddbd5 <+1073>:	mov    -0x5538(%rbp),%eax
   0x00000000006ddbdb <+1079>:	cmp    -0x5540(%rbp),%eax
   0x00000000006ddbe1 <+1085>:	jle    0x6ddbeb <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1095>
   0x00000000006ddbe3 <+1087>:	mov    -0x5538(%rbp),%eax
   0x00000000006ddbe9 <+1093>:	jmp    0x6ddbf1 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1101>
   0x00000000006ddbeb <+1095>:	mov    -0x5540(%rbp),%eax
   0x00000000006ddbf1 <+1101>:	mov    %eax,-0x5534(%rbp)

197				seen = seen || perspectiveHeightLeeway >= oldHeight; // consider point slightly above ground in case there is something on the tile
   0x00000000006ddbf7 <+1107>:	cmpb   $0x0,-0x557a(%rbp)
   0x00000000006ddbfe <+1114>:	jne    0x6ddc0e <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1130>
   0x00000000006ddc00 <+1116>:	mov    -0x553c(%rbp),%eax
   0x00000000006ddc06 <+1122>:	cmp    -0x5538(%rbp),%eax
   0x00000000006ddc0c <+1128>:	jl     0x6ddc15 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1137>
   0x00000000006ddc0e <+1130>:	mov    $0x1,%eax
   0x00000000006ddc13 <+1135>:	jmp    0x6ddc1a <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1142>
   0x00000000006ddc15 <+1137>:	mov    $0x0,%eax
   0x00000000006ddc1a <+1142>:	mov    %al,-0x557a(%rbp)

198				if (newHeight != lastHeight)
   0x00000000006ddc20 <+1148>:	mov    -0x5534(%rbp),%eax
   0x00000000006ddc26 <+1154>:	cmp    -0x5568(%rbp),%eax
   0x00000000006ddc2c <+1160>:	je     0x6ddd7c <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1496>

199				{
200					heights[!readList][writeListPos] = newHeight;
   0x00000000006ddc32 <+1166>:	cmpl   $0x0,-0x556c(%rbp)
   0x00000000006ddc39 <+1173>:	sete   %al
   0x00000000006ddc3c <+1176>:	movzbl %al,%edx
   0x00000000006ddc3f <+1179>:	mov    -0x5570(%rbp),%eax
   0x00000000006ddc45 <+1185>:	cltq   
   0x00000000006ddc47 <+1187>:	movslq %edx,%rdx
   0x00000000006ddc4a <+1190>:	imul   $0x550,%rdx,%rdx
   0x00000000006ddc51 <+1197>:	add    %rax,%rdx
   0x00000000006ddc54 <+1200>:	mov    -0x5534(%rbp),%eax
   0x00000000006ddc5a <+1206>:	mov    %eax,-0x5510(%rbp,%rdx,4)

201					angles[!readList][writeListPos] = MAX(angles[readList][readListPos], tiles[i].angBegin);
   0x00000000006ddc61 <+1213>:	cmpl   $0x0,-0x556c(%rbp)
   0x00000000006ddc68 <+1220>:	sete   %al
   0x00000000006ddc6b <+1223>:	movzbl %al,%ecx
   0x00000000006ddc6e <+1226>:	mov    -0x5528(%rbp),%rdx
   0x00000000006ddc75 <+1233>:	mov    %rdx,%rax
   0x00000000006ddc78 <+1236>:	add    %rax,%rax
   0x00000000006ddc7b <+1239>:	add    %rdx,%rax
   0x00000000006ddc7e <+1242>:	shl    $0x2,%rax
   0x00000000006ddc82 <+1246>:	mov    %rax,%rdx
   0x00000000006ddc85 <+1249>:	mov    -0x5520(%rbp),%rax
   0x00000000006ddc8c <+1256>:	add    %rdx,%rax
   0x00000000006ddc8f <+1259>:	movzwl 0x8(%rax),%eax
   0x00000000006ddc93 <+1263>:	movswl %ax,%edx
   0x00000000006ddc96 <+1266>:	mov    -0x5574(%rbp),%eax
   0x00000000006ddc9c <+1272>:	cltq   
   0x00000000006ddc9e <+1274>:	mov    -0x556c(%rbp),%esi
   0x00000000006ddca4 <+1280>:	movslq %esi,%rsi
   0x00000000006ddca7 <+1283>:	imul   $0x551,%rsi,%rsi
   0x00000000006ddcae <+1290>:	add    %rsi,%rax
   0x00000000006ddcb1 <+1293>:	mov    -0x2a90(%rbp,%rax,4),%eax
   0x00000000006ddcb8 <+1300>:	cmp    %eax,%edx
   0x00000000006ddcba <+1302>:	cmovge %edx,%eax
   0x00000000006ddcbd <+1305>:	mov    -0x5570(%rbp),%edx
   0x00000000006ddcc3 <+1311>:	movslq %edx,%rdx
   0x00000000006ddcc6 <+1314>:	movslq %ecx,%rcx
   0x00000000006ddcc9 <+1317>:	imul   $0x551,%rcx,%rcx
   0x00000000006ddcd0 <+1324>:	add    %rcx,%rdx
   0x00000000006ddcd3 <+1327>:	mov    %eax,-0x2a90(%rbp,%rdx,4)

202					lastHeight = newHeight;
   0x00000000006ddcda <+1334>:	mov    -0x5534(%rbp),%eax
   0x00000000006ddce0 <+1340>:	mov    %eax,-0x5568(%rbp)

203					++writeListPos;
   0x00000000006ddce6 <+1346>:	addl   $0x1,-0x5570(%rbp)

204					ASSERT_OR_RETURN( , writeListPos <= MAX_WAVECAST_LIST_SIZE, "Visibility too complicated! Need to increase MAX_WAVECAST_LIST_SIZE.");
   0x00000000006ddced <+1353>:	cmpl   $0x550,-0x5570(%rbp)
   0x00000000006ddcf7 <+1363>:	setle  %al
   0x00000000006ddcfa <+1366>:	mov    %al,-0x5579(%rbp)
   0x00000000006ddd00 <+1372>:	movzbl -0x5579(%rbp),%eax
   0x00000000006ddd07 <+1379>:	xor    $0x1,%eax
   0x00000000006ddd0a <+1382>:	test   %al,%al
   0x00000000006ddd0c <+1384>:	je     0x6ddd7c <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1496>
   0x00000000006ddd0e <+1386>:	mov    $0x7ecc50,%ecx
   0x00000000006ddd13 <+1391>:	mov    $0x7ed1b4,%edx
   0x00000000006ddd18 <+1396>:	mov    $0x19,%esi
   0x00000000006ddd1d <+1401>:	mov    $0xcc,%edi
   0x00000000006ddd22 <+1406>:	mov    $0x0,%eax
   0x00000000006ddd27 <+1411>:	callq  0x770e55 <_debug(int, code_part, char const*, char const*, ...)>
   0x00000000006ddd2c <+1416>:	movq   $0x15cc120,(%rsp)
   0x00000000006ddd34 <+1424>:	mov    $0x7ecc98,%r9d
   0x00000000006ddd3a <+1430>:	mov    $0x7eccbf,%r8d
   0x00000000006ddd40 <+1436>:	mov    $0x7ecb38,%ecx
   0x00000000006ddd45 <+1441>:	mov    $0x7ed1b4,%edx
   0x00000000006ddd4a <+1446>:	mov    $0x19,%esi
   0x00000000006ddd4f <+1451>:	mov    $0xcc,%edi
   0x00000000006ddd54 <+1456>:	mov    $0x0,%eax
   0x00000000006ddd59 <+1461>:	callq  0x770e55 <_debug(int, code_part, char const*, char const*, ...)>
   0x00000000006ddd5e <+1466>:	movzbl 0xeee45b(%rip),%eax        # 0x15cc1c0 <assertEnabled>
   0x00000000006ddd65 <+1473>:	test   %al,%al
   0x00000000006ddd67 <+1475>:	je     0x6dde8d <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1769>
   0x00000000006ddd6d <+1481>:	mov    $0x5,%edi
   0x00000000006ddd72 <+1486>:	callq  0x4e4490 <raise@plt>
   0x00000000006ddd77 <+1491>:	jmpq   0x6dde8d <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1769>
   0x00000000006dde83 <+1759>:	jmp    0x6dde8d <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1769>
   0x00000000006dde85 <+1761>:	mov    %rax,%rdi
   0x00000000006dde88 <+1764>:	callq  0x4e3a90 <_Unwind_Resume@plt>

205				}
206				++readListPos;
   0x00000000006ddd7c <+1496>:	addl   $0x1,-0x5574(%rbp)

207			}
208			--readListPos;
   0x00000000006dddf1 <+1613>:	subl   $0x1,-0x5574(%rbp)

209	
210			if (seen)
   0x00000000006dddf8 <+1620>:	cmpb   $0x0,-0x557a(%rbp)
   0x00000000006dddff <+1627>:	je     0x6dde62 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1726>

211			{
212				// Can see this tile.
213				psTile->tileExploredBits |= alliancebits[rayPlayer];                            // Share exploration with allies too
   0x00000000006dde01 <+1629>:	mov    -0x5518(%rbp),%rax
   0x00000000006dde08 <+1636>:	movzwl 0x2(%rax),%edx
   0x00000000006dde0c <+1640>:	mov    -0x5550(%rbp),%eax
   0x00000000006dde12 <+1646>:	cltq   
   0x00000000006dde14 <+1648>:	movzwl 0xac4290(%rax,%rax,1),%eax
   0x00000000006dde1c <+1656>:	or     %eax,%edx
   0x00000000006dde1e <+1658>:	mov    -0x5518(%rbp),%rax
   0x00000000006dde25 <+1665>:	mov    %dx,0x2(%rax)

214				visMarkTile(psObj, mapX, mapY, psTile, recordTilePos, lastRecordTilePos);   // Mark this tile as seen by our sensor
   0x00000000006dde29 <+1669>:	mov    -0x5598(%rbp),%r8
   0x00000000006dde30 <+1676>:	mov    -0x5590(%rbp),%rdi
   0x00000000006dde37 <+1683>:	mov    -0x5518(%rbp),%rcx
   0x00000000006dde3e <+1690>:	mov    -0x5548(%rbp),%edx
   0x00000000006dde44 <+1696>:	mov    -0x554c(%rbp),%esi
   0x00000000006dde4a <+1702>:	mov    -0x5588(%rbp),%rax
   0x00000000006dde51 <+1709>:	mov    %r8,%r9
   0x00000000006dde54 <+1712>:	mov    %rdi,%r8
   0x00000000006dde57 <+1715>:	mov    %rax,%rdi
   0x00000000006dde5a <+1718>:	callq  0x6dd621 <visMarkTile(BASE_OBJECT const*, int, int, MAPTILE*, TILEPOS*, int*)>
   0x00000000006dde5f <+1723>:	jmp    0x6dde62 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1726>

215			}
216		}
217	}
   0x00000000006dde8d <+1769>:	leaveq 
   0x00000000006dde8e <+1770>:	retq   

End of assembler dump.
(gdb) 
Thread 6 (Thread 0x7fbc1bb89700 (LWP 10748)):
#0  0x00007fbc24476a5d in nanosleep () from /usr/lib/libpthread.so.0
No symbol table info available.
#1  0x00007fbc246d96a3 in SDL_Delay () from /usr/lib/libSDL-1.2.so.0
No symbol table info available.
#2  0x00007fbc246d96d2 in ?? () from /usr/lib/libSDL-1.2.so.0
No symbol table info available.
#3  0x00007fbc24694fc6 in ?? () from /usr/lib/libSDL-1.2.so.0
No symbol table info available.
#4  0x00007fbc246d7329 in ?? () from /usr/lib/libSDL-1.2.so.0
No symbol table info available.
#5  0x00007fbc2446fe0f in start_thread () from /usr/lib/libpthread.so.0
No symbol table info available.
#6  0x00007fbc20a7831d in clone () from /usr/lib/libc.so.6
No symbol table info available.

Thread 5 (Thread 0x7fbc1820a700 (LWP 10749)):
#0  0x00007fbc24475920 in sem_wait () from /usr/lib/libpthread.so.0
No symbol table info available.
#1  0x00007fbc1a4f04ac in ?? () from /usr/lib/dri/fglrx_dri.so
No symbol table info available.
#2  0x00007fbc19ec6378 in ?? () from /usr/lib/dri/fglrx_dri.so
No symbol table info available.
#3  0x00007fbc19ec622d in ?? () from /usr/lib/dri/fglrx_dri.so
No symbol table info available.
#4  0x00007fbc2446fe0f in start_thread () from /usr/lib/libpthread.so.0
No symbol table info available.
#5  0x00007fbc20a7831d in clone () from /usr/lib/libc.so.6
No symbol table info available.

Thread 4 (Thread 0x7fbc17a09700 (LWP 10750)):
#0  0x00007fbc24475920 in sem_wait () from /usr/lib/libpthread.so.0
No symbol table info available.
#1  0x00007fbc1a4f04ac in ?? () from /usr/lib/dri/fglrx_dri.so
No symbol table info available.
#2  0x00007fbc19ec6378 in ?? () from /usr/lib/dri/fglrx_dri.so
No symbol table info available.
#3  0x00007fbc19ec622d in ?? () from /usr/lib/dri/fglrx_dri.so
No symbol table info available.
#4  0x00007fbc2446fe0f in start_thread () from /usr/lib/libpthread.so.0
No symbol table info available.
#5  0x00007fbc20a7831d in clone () from /usr/lib/libc.so.6
No symbol table info available.

Thread 3 (Thread 0x7fbc16a06700 (LWP 10751)):
#0  0x00007fbc24475920 in sem_wait () from /usr/lib/libpthread.so.0
No symbol table info available.
#1  0x00007fbc246d7558 in SDL_SemWait () from /usr/lib/libSDL-1.2.so.0
No symbol table info available.
#2  0x000000000079f054 in wzSemaphoreWait (semaphore=0x229c650) at main_sdl.cpp:397
No locals.
#3  0x0000000000553b31 in fpathThreadFunc () at fpath.cpp:85
        job = {propulsion = PROPULSION_TYPE_WHEELED, droidType = DROID_WEAPON, destX = 0, destY = 0, origX = 0, origY = 0, dstStructure = {map = {x = 0, y = 0}, size = 
    {x = 0, y = 0}}, droidID = 611152930, moveType = (unknown: 32700), owner = 0, blockingMap = 0x0, acceptNearest = 7, deleted = 112}
        result = {droidID = 0, sMove = {Status = MOVEINACTIVE, pathIndex = 0, numPoints = 0, asPath = 0x0, destination = {x = 0, y = 0}, src = {x = 0, y = 0}, target = 
    {x = 0, y = 0}, speed = 0, moveDir = 0, bumpDir = 0, bumpTime = 0, lastBump = 0, pauseTime = 0, bumpX = 0, bumpY = 0, shuffleStart = 0, iVertSpeed = 0}, retval = 
    FPR_OK, originalDest = {x = 0, y = 0}}
        __FUNCTION__ = "fpathThreadFunc"
#4  0x00007fbc24694fc6 in ?? () from /usr/lib/libSDL-1.2.so.0
No symbol table info available.
#5  0x00007fbc246d7329 in ?? () from /usr/lib/libSDL-1.2.so.0
No symbol table info available.
#6  0x00007fbc2446fe0f in start_thread () from /usr/lib/libpthread.so.0
No symbol table info available.
#7  0x00007fbc20a7831d in clone () from /usr/lib/libc.so.6
No symbol table info available.

Thread 2 (Thread 0x7fbc16205700 (LWP 10753)):
#0  0x00007fbc24473954 in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
No symbol table info available.
#1  0x00007fbc21dea7a7 in ?? () from /usr/lib/libQtScript.so.4
No symbol table info available.
#2  0x00007fbc21dea7d9 in ?? () from /usr/lib/libQtScript.so.4
No symbol table info available.
#3  0x00007fbc2446fe0f in start_thread () from /usr/lib/libpthread.so.0
No symbol table info available.
#4  0x00007fbc20a7831d in clone () from /usr/lib/libc.so.6
No symbol table info available.

Thread 1 (Thread 0x7fbc24d11780 (LWP 10744)):
#0  0x00007fbc24476d97 in waitpid () from /usr/lib/libpthread.so.0
No symbol table info available.
#1  0x0000000000782071 in gdbExtendedBacktrace (dumpFile=15, sigcontext=0x7fff5224e040) at exceptionhandler.cpp:560
        frame = 0x7fff52253a50
        gdbPipe = 17
        status = 0
        wpid = 0
        gdbCommands = "thread apply all backtrace full\nframe 4\ndisassemble /m\ninfo registers\nquit\n"
        pid = 10754
        instruction = 0x6dd7f9 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+85>
#2  0x00000000007822ca in posixExceptionHandler (signum=11, siginfo=0x7fff5224e170, sigcontext=0x7fff5224e040) at exceptionhandler.cpp:669
        allreadyRunning = 1
        dumpFile = 15
        signal = 0x8101b8 "SIGSEGV: Invalid memory reference: Address not mapped to object"
        btBuffer = {0x782154 <posixExceptionHandler(int, siginfo_t*, void*)+92>, 0x7fbc244771a0 <__restore_rt>, 
    0x6dd7f9 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+85>, 0x6de478 <visTilesUpdate(BASE_OBJECT*)+320>, 0x6c31cc <buildingComplete(STRUCTURE*)+125>, 
    0x576f7b <loadSaveStructure2(char const*, STRUCTURE**)+11021>, 0x5661eb <loadGame(char const*, bool, bool, bool)+9282>, 
    0x5e2fe8 <startMissionCampaignStart(char*)+97>, 0x5e1637 <startMission(LEVEL_TYPE, char*)+232>, 
    0x5c6d19 <levLoadData(char const*, Sha256 const*, char*, GAME_TYPE)+4013>, 0x5ceb80 <startGameLoop()+39>, 0x5cf02f <runTitleLoop()+245>, 0x5cf14d <mainLoop()+124>, 
    0x7a0b86 <wzMain3()+117>, 0x5cfb8a <realmain(int, char**)+2592>, 0x79ead4 <main(int, char**)+32>, 0x7fbc209b3725 <__libc_start_main+245>, 0x4e54e9 <_start+41>, 
    0x0, 0x0}
        gdmpPath = "/tmp/warzone2100.gdmp-XXXXXX"
        dumpFilename = "/tmp/warzone2100.gdmp-zqX1A0"
        btSize = 18
#3  <signal handler called>
No symbol table info available.
#4  0x00000000006dd7f9 in doWaveTerrain (psObj=0x4c26010, recordTilePos=0x7fff52253a80, lastRecordTilePos=0x7fff52253a74) at visibility.cpp:138
        radius = 1024
        size = 208
        perspectiveHeight = 1265976
        readListSize = 22
        __FUNCTION__ = "doWaveTerrain"
        sx = 16512
        writeListPos = 16
        lastHeight = 1265976
        sy = 5760
        tiles = 0x4b45f40
        readListPos = 20
        readList = 1
        sz = 80
        i = 208
        tileHeight = 296
        perspectiveHeightLeeway = 1734856
        heights = {{-468880, -476560, 468880, 1581804, -468880, -476560, 3282496, 2393040, 1883100, 1251008, 939024, 714840, -468880, 914316, 1024604, 1265976, 
    1251008, -582480, -568640, -532320, -484640, -532320, -568640, -582480, -568640, -532320, -484640, 486220, 2517810, -568640, -561720, -407736, -292608, 0, 153400, 
    585552, 611248, 625504, 583395, -484640, -163748, 35412, -139832, -95200, -83664, 205965, -493695, -459425, 736736, 757728, 621000, -274400, -275920, -274400, 
    -270000, -263120, -254240, 244160, 244944, -290800, -279040, -265760, -251920, -238000, 0, 0, 8424224, 0, 0, 0, 3, 0, 256, 0, 10, 0, 548364503, 32700, 0, 0, 0, 0, 
    1, 0, 1378150715, 32767, 28768144, 0, 0, 32767, 0, 0, 0, 0, 357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 548364503, 32700, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1378151080, 32767, 8, 
    0, 550715200, 32700, 256, 0, 0, 0, 8424227, 0, 1378149664, 32767, 2, 0, 0, 0, -1, 32767, 0, 0, 10, 0, 0, 0, 0, 0, 608661840, 32700, 1378150688, 32767, 1378150971, 
    32767, 28768144, 0, 0, 0, 1, 0, 0, 0, 1378149667, 32767, 40, 48, 1378151296, 32767, 1378151104, 32767, 256, 0, 548364503, 32700, 0, 0, 608661840, 32700, 
    1378150800, 32767, 0, 0, 0, 0, 1378151336, 32767, 0, 0, 550715200, 32700, 256, 0, 0, 0, 8424768, 0, 1378149920, 32767, 2, 0, 0, 0, -1, 0...}, {-468880, -502160, 
    -521680, 1581804, 1617636, -468880, -502160, -521680, 3282496, 4299096, 3243308, 2393040, 1883100, 1251008, 939024, -521680, -502160, -468880, -502160, -521680, 
    -50216, -468880, -613600, -650240, -613600, -555680, -493200, 1081470, 2562816, -208672, 0, 426836, 585552, 611248, 625504, 312608, 390144, 491280, -285752, 
    -163748, 35412, -414004, -337500, -176640, -139832, -137200, -114984, -83664, 1153416, 742368, 732888, 757728, -287280, -290800, -287280, -280640, -271440, 
    -260480, -248480, -236080, -239040, 0 <repeats 115 times>, 17, 0, -1918954240, -1048788395, 1378176480, 32767, 7761381, 0, 0, 0, 0, 0, 70215900, 0, 1378176528, 
    32767, 0, 0, 16777216, 16842798, 8, 1, 1, 2, 512, 256, 256, 21, 0, 0, 17, 45, 70215900, 0, 0, 0, 22866080, 0, 70215200, 0, 1163281740, 76, 0 <repeats 102 times>, 
    83886080, 0, -1, -1, 0, 0, 64, 0, 1378157600, 32767, 1378156480, 32767, 24, 0, 32, 0, 1378157616, 32767, 547258994, 32700, 909391411, 3682360, 
    0 <repeats 64 times>, 547258431, 32700, 0, 0, 7, 0, 0, 0, 0, 0, 100, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1378157531, 32767, 28768144, 0 <repeats 17 times>, 
    548364503, 32700, 0, 0, 0, 0, 1, 0, 0, 0...}}
        rayPlayer = 7
        angles = {{11, 16, 18, 21, 45, 50, 51, 79, 80, 81, 83, 85, 86, 113, 118, 120, 80, 83, 87, 92, 96, 108, 112, 117, 121, 126, 130, 135, 131, 135, 116, 117, 119, 
    121, 124, 126, 129, 133, 135, 279, 135, 480, 481, 486, 494, 495, 266, 272, 279, 409, 418, 423, 432, 436, 445, 454, 460, 469, 475, 481, 464, 471, 479, 486, 495, 
    0 <repeats 677 times>, 443270129, 32700, 48, 0, 120, 0, 1378163680, 32767, 104, 0, 1378163936, 32767, 0, 0, 0, 0, 0, 0, 16, 6816513, -559087616, 2, 0, 0, 
    1378163936, 32767, 0, 104, 1378163680, 32767, 120, 6292225, 11, 0, 1378163840, 32767, 443263011, 32700, 16, 6816513, -559087616, 2, 104, 81920, 21, 0, 0, 65536, 
    0 <repeats 16 times>, 443270129, 32700, 48, 0, 120, 0, 1378163936, 32767, 104, 0, 1378169216, 32767, 0, 0, 34161504, 0, 443221776, 0, 16, 6816515, -559087616, 2, 
    0, 0, 1378169216, 32767, 0, 104, 1378163936, 32767, 120, 6292227, 11, 0, 1378164096, 32767, 443263285, 32700, 16, 6816515, -559087616, 2, 104, 268441600, 21, 43, 
    0, 2900, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0...}, {5, 9, 13, 21, 25, 39, 43, 47, 51, 73, 75, 78, 80, 81, 83, 85, 89, 93, 111, 115, 123, 
    127, 131, 114, 124, 129, 134, 136, 258, 280, 121, 123, 126, 129, 131, 136, 128, 131, 136, 479, 480, 487, 477, 483, 485, 492, 493, 494, 496, 398, 402, 409, 418, 
    426, 442, 450, 459, 466, 473, 480, 487, 496, 2, 0, 0, 1378166576, 32767, 0, 104, 1378166320, 32767, 120, 6292225, 11, 0, 1378166480, 32767, 443263011, 32700, 16, 
    6816513, -559087616, 2, 104, 81920, 21, 0, 0, 65536, 0 <repeats 16 times>, 443270129, 32700, 48, 0, 120, 0, 1378166576, 32767, 104, 0, 1378171856, 32767, 0, 0, 
    34161504, 0, 443221776, 0, 16, 6816515, -559087616, 2, 0, 0, 1378171856, 32767, 0, 104, 443270129, 32700, 48, 0, 120, 0, 1378166688, 32767, 104, 0, 1378166944, 
    32767, 0, 0, 104, 268441600, 21, 0, 16, 6816513, -559087616, 2, 0, 0, 1378166944, 32767, 0, 104, 1378166688, 32767, 120, 6292225, 11, 0, 1378166848, 32767, 
    443263011, 32700, 16, 6816513, -559087616, 2, 104, 81920, 21, 0, 0, 65536, 0 <repeats 16 times>, 443270129, 32700, 48, 0, 120, 0, 1378166944, 32767, 104, 0, 
    1378172224, 32767, 0, 0, 34161504...}}
        lastAngle = 125
#5  0x00000000006de478 in visTilesUpdate (psObj=0x4c26010) at visibility.cpp:297
        recordTilePos = {{x = 108 'l', y = 18 '\022', type = 1 '\001'}, {x = 107 'k', y = 18 '\022', type = 1 '\001'}, {x = 107 'k', y = 17 '\021', type = 1 '\001'}, {
            x = 108 'l', y = 17 '\021', type = 1 '\001'}, {x = 109 'm', y = 18 '\022', type = 1 '\001'}, {x = 108 'l', y = 19 '\023', type = 1 '\001'}, {x = 107 'k', 
            y = 19 '\023', type = 1 '\001'}, {x = 106 'j', y = 18 '\022', type = 1 '\001'}, {x = 106 'j', y = 17 '\021', type = 1 '\001'}, {x = 107 'k', y = 16 '\020', 
            type = 1 '\001'}, {x = 108 'l', y = 16 '\020', type = 1 '\001'}, {x = 109 'm', y = 17 '\021', type = 1 '\001'}, {x = 110 'n', y = 18 '\022', type = 
    1 '\001'}, {x = 109 'm', y = 19 '\023', type = 1 '\001'}, {x = 108 'l', y = 20 '\024', type = 1 '\001'}, {x = 107 'k', y = 20 '\024', type = 1 '\001'}, {x = 
    106 'j', y = 19 '\023', type = 1 '\001'}, {x = 105 'i', y = 18 '\022', type = 1 '\001'}, {x = 105 'i', y = 17 '\021', type = 1 '\001'}, {x = 106 'j', y = 
    16 '\020', type = 1 '\001'}, {x = 107 'k', y = 15 '\017', type = 1 '\001'}, {x = 108 'l', y = 15 '\017', type = 1 '\001'}, {x = 109 'm', y = 16 '\020', type = 
    1 '\001'}, {x = 110 'n', y = 17 '\021', type = 1 '\001'}, {x = 111 'o', y = 18 '\022', type = 0 '\000'}, {x = 110 'n', y = 19 '\023', type = 1 '\001'}, {x = 
    109 'm', y = 20 '\024', type = 1 '\001'}, {x = 108 'l', y = 21 '\025', type = 0 '\000'}, {x = 107 'k', y = 21 '\025', type = 0 '\000'}, {x = 106 'j', y = 
    20 '\024', type = 1 '\001'}, {x = 105 'i', y = 19 '\023', type = 1 '\001'}, {x = 104 'h', y = 17 '\021', type = 1 '\001'}, {x = 105 'i', y = 16 '\020', type = 
    1 '\001'}, {x = 106 'j', y = 15 '\017', type = 1 '\001'}, {x = 107 'k', y = 14 '\016', type = 1 '\001'}, {x = 108 'l', y = 14 '\016', type = 1 '\001'}, {x = 
    109 'm', y = 15 '\017', type = 1 '\001'}, {x = 110 'n', y = 16 '\020', type = 1 '\001'}, {x = 111 'o', y = 17 '\021', type = 0 '\000'}, {x = 112 'p', y = 
    18 '\022', type = 0 '\000'}, {x = 111 'o', y = 19 '\023', type = 0 '\000'}, {x = 110 'n', y = 20 '\024', type = 0 '\000'}, {x = 109 'm', y = 21 '\025', type = 
    0 '\000'}, {x = 108 'l', y = 22 '\026', type = 0 '\000'}, {x = 107 'k', y = 22 '\026', type = 0 '\000'}, {x = 106 'j', y = 21 '\025', type = 0 '\000'}, {x = 
    105 'i', y = 20 '\024', type = 1 '\001'}, {x = 103 'g', y = 18 '\022', type = 0 '\000'}, {x = 103 'g', y = 17 '\021', type = 0 '\000'}, {x = 104 'h', y = 
    16 '\020', type = 1 '\001'}, {x = 105 'i', y = 15 '\017', type = 1 '\001'}, {x = 106 'j', y = 14 '\016', type = 1 '\001'}, {x = 107 'k', y = 13 '\r', type = 
    0 '\000'}, {x = 108 'l', y = 13 '\r', type = 0 '\000'}, {x = 109 'm', y = 14 '\016', type = 1 '\001'}, {x = 110 'n', y = 15 '\017', type = 1 '\001'}, {x = 111 'o', 
            y = 16 '\020', type = 0 '\000'}, {x = 112 'p', y = 17 '\021', type = 0 '\000'}, {x = 113 'q', y = 18 '\022', type = 0 '\000'}, {x = 112 'p', y = 19 '\023', 
            type = 0 '\000'}, {x = 111 'o', y = 20 '\024', type = 0 '\000'}, {x = 110 'n', y = 21 '\025', type = 0 '\000'}, {x = 109 'm', y = 22 '\026', type = 
    0 '\000'}, {x = 108 'l', y = 23 '\027', type = 0 '\000'}, {x = 107 'k', y = 23 '\027', type = 0 '\000'}, {x = 106 'j', y = 22 '\026', type = 0 '\000'}, {x = 
    105 'i', y = 21 '\025', type = 0 '\000'}, {x = 102 'f', y = 18 '\022', type = 0 '\000'}, {x = 103 'g', y = 16 '\020', type = 0 '\000'}, {x = 104 'h', y = 
    15 '\017', type = 1 '\001'}, {x = 105 'i', y = 14 '\016', type = 1 '\001'}, {x = 106 'j', y = 13 '\r', type = 0 '\000'}, {x = 107 'k', y = 12 '\f', type = 
    0 '\000'}, {x = 108 'l', y = 12 '\f', type = 0 '\000'}, {x = 109 'm', y = 13 '\r', type = 0 '\000'}, {x = 110 'n', y = 14 '\016', type = 0 '\000'}, {x = 111 'o', 
            y = 15 '\017', type = 0 '\000'}, {x = 112 'p', y = 16 '\020', type = 0 '\000'}, {x = 113 'q', y = 17 '\021', type = 0 '\000'}, {x = 114 'r', y = 18 '\022', 
            type = 0 '\000'}, {x = 113 'q', y = 19 '\023', type = 0 '\000'}, {x = 112 'p', y = 20 '\024', type = 0 '\000'}, {x = 111 'o', y = 21 '\025', type = 
    0 '\000'}, {x = 110 'n', y = 22 '\026', type = 0 '\000'}, {x = 109 'm', y = 23 '\027', type = 0 '\000'}, {x = 108 'l', y = 24 '\030', type = 0 '\000'}, {x = 
    107 'k', y = 24 '\030', type = 0 '\000'}, {x = 106 'j', y = 23 '\027', type = 0 '\000'}, {x = 105 'i', y = 22 '\026', type = 0 '\000'}, {x = 104 'h', y = 
    21 '\025', type = 0 '\000'}, {x = 102 'f', y = 19 '\023', type = 0 '\000'}, {x = 102 'f', y = 16 '\020', type = 0 '\000'}, {x = 103 'g', y = 15 '\017', type = 
    0 '\000'}, {x = 104 'h', y = 14 '\016', type = 0 '\000'}, {x = 105 'i', y = 13 '\r', type = 0 '\000'}, {x = 106 'j', y = 12 '\f', type = 0 '\000'}, {x = 107 'k', 
            y = 11 '\v', type = 0 '\000'}, {x = 108 'l', y = 11 '\v', type = 0 '\000'}, {x = 109 'm', y = 12 '\f', type = 0 '\000'}, {x = 110 'n', y = 13 '\r', type = 
    0 '\000'}, {x = 111 'o', y = 14 '\016', type = 0 '\000'}, {x = 112 'p', y = 15 '\017', type = 0 '\000'}, {x = 113 'q', y = 16 '\020', type = 0 '\000'}, {x = 
    114 'r', y = 17 '\021', type = 0 '\000'}, {x = 115 's', y = 18 '\022', type = 0 '\000'}, {x = 114 'r', y = 19 '\023', type = 0 '\000'}, {x = 113 'q', y = 
    20 '\024', type = 0 '\000'}, {x = 112 'p', y = 21 '\025', type = 0 '\000'}, {x = 111 'o', y = 22 '\026', type = 0 '\000'}, {x = 110 'n', y = 23 '\027', type = 
    0 '\000'}, {x = 109 'm', y = 24 '\030', type = 0 '\000'}, {x = 108 'l', y = 25 '\031', type = 0 '\000'}, {x = 107 'k', y = 25 '\031', type = 0 '\000'}, {x = 
    106 'j', y = 24 '\030', type = 0 '\000'}, {x = 105 'i', y = 23 '\027', type = 0 '\000'}, {x = 104 'h', y = 22 '\026', type = 0 '\000'}, {x = 102 'f', y = 
    15 '\017', type = 0 '\000'}, {x = 103 'g', y = 14 '\016', type = 0 '\000'}, {x = 104 'h', y = 13 '\r', type = 0 '\000'}, {x = 105 'i', y = 12 '\f', type = 
    0 '\000'}, {x = 106 'j', y = 11 '\v', type = 0 '\000'}, {x = 107 'k', y = 10 '\n', type = 0 '\000'}, {x = 108 'l', y = 10 '\n', type = 0 '\000'}, {x = 109 'm', y = 
    11 '\v', type = 0 '\000'}, {x = 110 'n', y = 12 '\f', type = 0 '\000'}, {x = 111 'o', y = 13 '\r', type = 0 '\000'}, {x = 112 'p', y = 14 '\016', type = 0 '\000'}, 
    {x = 113 'q', y = 15 '\017', type = 0 '\000'}, {x = 114 'r', y = 16 '\020', type = 0 '\000'}, {x = 115 's', y = 17 '\021', type = 0 '\000'}, {x = 115 's', y = 
    19 '\023', type = 0 '\000'}, {x = 114 'r', y = 20 '\024', type = 0 '\000'}, {x = 113 'q', y = 21 '\025', type = 0 '\000'}, {x = 112 'p', y = 22 '\026', type = 
    0 '\000'}, {x = 111 'o', y = 23 '\027', type = 0 '\000'}, {x = 110 'n', y = 24 '\030', type = 0 '\000'}, {x = 109 'm', y = 25 '\031', type = 0 '\000'}, {x = 
    106 'j', y = 25 '\031', type = 0 '\000'}, {x = 105 'i', y = 24 '\030', type = 0 '\000'}, {x = 104 'h', y = 23 '\027', type = 0 '\000'}, {x = 103 'g', y = 
    22 '\026', type = 0 '\000'}, {x = 102 'f', y = 14 '\016', type = 0 '\000'}, {x = 103 'g', y = 13 '\r', type = 0 '\000'}, {x = 104 'h', y = 12 '\f', type = 
    0 '\000'}, {x = 105 'i', y = 11 '\v', type = 0 '\000'}, {x = 106 'j', y = 10 '\n', type = 0 '\000'}, {x = 109 'm', y = 10 '\n', type = 0 '\000'}, {x = 110 'n', y = 
    11 '\v', type = 0 '\000'}, {x = 111 'o', y = 12 '\f', type = 0 '\000'}, {x = 112 'p', y = 13 '\r', type = 0 '\000'}, {x = 113 'q', y = 14 '\016', type = 0 '\000'}, 
    {x = 114 'r', y = 15 '\017', type = 0 '\000'}, {x = 115 's', y = 16 '\020', type = 0 '\000'}, {x = 115 's', y = 20 '\024', type = 0 '\000'}, {x = 114 'r', y = 
    21 '\025', type = 0 '\000'}, {x = 113 'q', y = 22 '\026', type = 0 '\000'}, {x = 112 'p', y = 23 '\027', type = 0 '\000'}, {x = 111 'o', y = 24 '\030', type = 
    0 '\000'}, {x = 110 'n', y = 25 '\031', type = 0 '\000'}, {x = 105 'i', y = 25 '\031', type = 0 '\000'}, {x = 104 'h', y = 24 '\030', type = 0 '\000'}, {x = 
    103 'g', y = 23 '\027', type = 0 '\000'}, {x = 101 'e', y = 14 '\016', type = 0 '\000'}, {x = 102 'f', y = 13 '\r', type = 0 '\000'}, {x = 103 'g', y = 12 '\f', 
            type = 0 '\000'}, {x = 104 'h', y = 11 '\v', type = 0 '\000'}, {x = 105 'i', y = 10 '\n', type = 0 '\000'}, {x = 110 'n', y = 10 '\n', type = 0 '\000'}, {
            x = 111 'o', y = 11 '\v', type = 0 '\000'}, {x = 112 'p', y = 12 '\f', type = 0 '\000'}, {x = 113 'q', y = 13 '\r', type = 0 '\000'}, {x = 114 'r', y = 
    14 '\016', type = 0 '\000'}, {x = 115 's', y = 15 '\017', type = 0 '\000'}, {x = 114 'r', y = 22 '\026', type = 0 '\000'}, {x = 113 'q', y = 23 '\027', type = 
    0 '\000'}, {x = 112 'p', y = 24 '\030', type = 0 '\000'}, {x = 103 'g', y = 24 '\030', type = 0 '\000'}, {x = 102 'f', y = 23 '\027', type = 0 '\000'}, {x = 
    101 'e', y = 13 '\r', type = 0 '\000'}, {x = 102 'f', y = 12 '\f', type = 0 '\000'}, {x = 103 'g', y = 11 '\v', type = 0 '\000'}, {x = 112 'p', y = 11 '\v', type = 
    0 '\000'}, {x = 113 'q', y = 12 '\f', type = 0 '\000'}, {x = 114 'r', y = 13 '\r', type = 0 '\000'}, {x = 68 'D', y = 10 '\n', type = 0 '\000'}, {x = 69 'E', y = 
    11 '\v', type = 0 '\000'}, {x = 70 'F', y = 12 '\f', type = 0 '\000'}, {x = 36 '$', y = 107 'k', type = 0 '\000'}, {x = 35 '#', y = 108 'l', type = 0 '\000'}, {x = 
    34 '"', y = 109 'm', type = 0 '\000'}, {x = 25 '\031', y = 109 'm', type = 0 '\000'}, {x = 24 '\030', y = 108 'l', type = 0 '\000'}, {x = 23 '\027', y = 107 'k', 
            type = 0 '\000'}, {x = 23 '\027', y = 98 'b', type = 0 '\000'}, {x = 24 '\030', y = 97 'a', type = 0 '\000'}, {x = 25 '\031', y = 96 '`', type = 0 '\000'}, 
    {x = 34 '"', y = 96 '`', type = 0 '\000'}, {x = 35 '#', y = 97 'a', type = 0 '\000'}, {x = 36 '$', y = 98 'b', type = 0 '\000'}, {x = 63 '?', y = 33 '!', type = 
    0 '\000'}...}
        lastRecordTilePos = 0
        __FUNCTION__ = "visTilesUpdate"
#6  0x00000000006c31cc in buildingComplete (psBuilding=0x4c26010) at structure.cpp:5483
        __FUNCTION__ = "buildingComplete"
        prevState = 0
#7  0x0000000000576f7b in loadSaveStructure2 (pFileName=0x7fff522565f0 "wrf/cam4/cam4-1/struct.ini", ppList=0x11be9c0 <apsStructLists>) at game.cpp:4963
        psRepair = 0xa
        psReArmPad = 0x4b2a1f0
        statInc = 24
        found = 1
        player = 3
        psFactory = 0x4c22b40
        psResearch = 0x492c9c0
        capacity = 1
        researchId = 0
        rot = {direction = 0, pitch = 0, roll = 0}
        psStats = 0x469b4d8
        psModule = 0x469b588
        psStructure = 0x4c26010
        id = 1534
        pos = {x = 16512, y = 5760, z = 0}
        name = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 20}, alloc = 0, size = 0, data = 0xac3ffa <QString::shared_null+26>, clean = 
    0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 1}, alloc = 0, size = 0, 
            data = 0x7fbc21c628fa <QString::shared_empty+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 
    0x4caca80, static codecForCStrings = 0x1b5daa0}
        i = 142
        __FUNCTION__ = "loadSaveStructure2"
        ini = {<WzConfigHack> = {<No data fields>}, <QSettings> = {<No data fields>}, <No data fields>}
        list = {<QList<QString>> = {{p = {static shared_null = {ref = {_q_value = 21}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x4c15730}, d = 
    0x4c15730}}, <No data fields>}
#8  0x00000000005661eb in loadGame (pGameToLoad=0x23dae00 "wrf/cam4/cam4-1.gam", keepObjects=false, freeMem=true, UserSaveGame=false) at game.cpp:2303
        droidMap = {{d = 0x2bba170, e = 0x2bba170}}
        i = 0
        __FUNCTION__ = "loadGame"
        fileExten = 16
        fileSize = 204
        pFileData = 
    0xd6d1e0 <fileLoadBuffer> "arizona_decals,29\n18\n37\n45\n46\n47\n49\n50\n51\n52\n55\n56\n57\n58\n59\n60\n61\n62\n63\n64\n65\n66\n67\n68\n69\n70\n71\n72\n73\n75\n"
        player = 11
        inc = 45696040
        j = 1378182932
        psCurr = 0x4922b50
        missionScrollMinX = 0
        missionScrollMaxY = 0
        structMap = {{d = 0xac4020 <QMapData::shared_null>, e = 0xac4020 <QMapData::shared_null>}}
        aFileName = 
    "wrf/cam4/cam4-1/struct.ini\000\000\000\000\000\000@6\323 \274\177\000\000\070\305\240 \274\177\000\000\004\000\000\000,\000\000\000\240\350j\004\000\000\000\000\000\000\000\000\001\000\000\000\241\365U\000\000\000\000\000\000\000\000\000\001\000\000\000\244f%R\377\177\000\000\210\000\000\000\000\000\000\000\240\350j\004", '\000' <repeats 12 times>"\200, \350j\004\000\000\000\000 tF$\274\177\000\000\000\000\000\000\000\000\000\000\021", '\000' <repeats 15 times>, " \351j\004", '\000' <repeats 12 times>, "\021\000\000\000\000\000\000\000\311\217$$\274\177\000\000\000\000\000\000\000\000\000\000\ni$$\274\177\000\000\004\000\000\000\000\000\000\000 g%R\377\177\000\000\n\000\000\000\000\000\000\000\216"...
        missionScrollMinY = 0
        missionScrollMaxX = 0
#9  0x00000000005e2fe8 in startMissionCampaignStart (pGame=0x23dae00 "wrf/cam4/cam4-1.gam") at mission.cpp:1228
        __FUNCTION__ = "startMissionCampaignStart"
#10 0x00000000005e1637 in startMission (missionType=LDS_CAMSTART, pGame=0x23dae00 "wrf/cam4/cam4-1.gam") at mission.cpp:446
        loaded = true
        __FUNCTION__ = "startMission"
#11 0x00000000005c6d19 in levLoadData (name=0xd65ca0 <aLevelName> "CAM_1A", hash=0x11b4983 <game+259>, pSaveName=0x0, saveType=GTYPE_SCENARIO_START) at levels.cpp:921
        psBaseData = 0x23f0d00
        psChangeLevel = 0x0
        i = 0
        bCamChangeSaveGame = false
        __FUNCTION__ = "levLoadData"
        psNewLevel = 0x23dad50
#12 0x00000000005ceb80 in startGameLoop () at main.cpp:769
        __FUNCTION__ = "startGameLoop"
#13 0x00000000005cf02f in runTitleLoop () at main.cpp:958
        __FUNCTION__ = "runTitleLoop"
#14 0x00000000005cf14d in mainLoop () at main.cpp:1001
No locals.
#15 0x00000000007a0b86 in wzMain3 () at main_sdl.cpp:1257
        event = {type = 6 '\006', active = {type = 6 '\006', gain = 0 '\000', state = 1 '\001'}, key = {type = 6 '\006', which = 0 '\000', state = 1 '\001', keysym = {
              scancode = 196 '\304', sym = SDLK_UNKNOWN, mod = KMOD_NONE, unicode = 0}}, motion = {type = 6 '\006', which = 0 '\000', state = 1 '\001', x = 708, y = 
    361, xrel = 0, yrel = 0}, button = {type = 6 '\006', which = 0 '\000', button = 1 '\001', state = 0 '\000', x = 708, y = 361}, jaxis = {type = 6 '\006', which = 
    0 '\000', axis = 1 '\001', value = 708}, jball = {type = 6 '\006', which = 0 '\000', ball = 1 '\001', xrel = 708, yrel = 361}, jhat = {type = 6 '\006', which = 
    0 '\000', hat = 1 '\001', value = 0 '\000'}, jbutton = {type = 6 '\006', which = 0 '\000', button = 1 '\001', state = 0 '\000'}, resize = {type = 6 '\006', w = 
    23659204, h = 0}, expose = {type = 6 '\006'}, quit = {type = 6 '\006'}, user = {type = 6 '\006', code = 23659204, data1 = 0x0, data2 = 0x0}, syswm = {type = 
    6 '\006', msg = 0x0}}
#16 0x00000000005cfb8a in realmain (argc=1, argv=0x7fff52257c38) at main.cpp:1332
        utfargv = 0x7fff52257c38
        __FUNCTION__ = "realmain"
        engine = {<QAbstractFileEngineHandler> = {<No data fields>}, <No data fields>}
        w = 1280
        buf = 
    "Using language: System locale\000\000\000\003\000\000\000GNU\000\350h%R\377\177\000\000\006\000\000\000\262%\220\070\000\000\000\000\000\000\000\000Hj%R\377\177\000\000\000\000\000\000\000\000\000\000\n\000\000\000\200\000\000\000\n\n\t\t\n\n\t\t\n\tfigntconfig", '\000' <repeats 11 times>, ".", '\000' <repeats 15 times>, "/\000\000\000\060\000\000\000\062", '\000' <repeats 11 times>, "4", '\000' <repeats 11 times>, "5\000\000\000\066\000\000\000\000\000\000\000\067\000\000\000\070\000\000\000\071\000\000\000\000\000\000\000:\000\000\000<\000\000\000>", '\000' <repeats 11 times>"\340"...
        utfargc = 1
        h = 720
#17 0x000000000079ead4 in main (argc=1, argv=0x7fff52257c38) at main_sdl.cpp:24
No locals.
(gdb) #4  0x00000000006dd7f9 in doWaveTerrain (psObj=0x4c26010, recordTilePos=0x7fff52253a80, lastRecordTilePos=0x7fff52253a74) at visibility.cpp:138
138		const int sz = psObj->pos.z + MAX(MIN_VIS_HEIGHT, psObj->sDisplay.imd->max.y);
(gdb) Dump of assembler code for function doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*):
135	{
   0x00000000006dd7a4 <+0>:	push   %rbp
   0x00000000006dd7a5 <+1>:	mov    %rsp,%rbp
   0x00000000006dd7a8 <+4>:	sub    $0x55b0,%rsp
   0x00000000006dd7af <+11>:	mov    %rdi,-0x5588(%rbp)
   0x00000000006dd7b6 <+18>:	mov    %rsi,-0x5590(%rbp)
   0x00000000006dd7bd <+25>:	mov    %rdx,-0x5598(%rbp)

136		const int sx = psObj->pos.x;
   0x00000000006dd7c4 <+32>:	mov    -0x5588(%rbp),%rax
   0x00000000006dd7cb <+39>:	mov    0x10(%rax),%eax
   0x00000000006dd7ce <+42>:	mov    %eax,-0x5560(%rbp)

137		const int sy = psObj->pos.y;
   0x00000000006dd7d4 <+48>:	mov    -0x5588(%rbp),%rax
   0x00000000006dd7db <+55>:	mov    0x14(%rax),%eax
   0x00000000006dd7de <+58>:	mov    %eax,-0x555c(%rbp)

138		const int sz = psObj->pos.z + MAX(MIN_VIS_HEIGHT, psObj->sDisplay.imd->max.y);
   0x00000000006dd7e4 <+64>:	mov    -0x5588(%rbp),%rax
   0x00000000006dd7eb <+71>:	mov    0x18(%rax),%edx
   0x00000000006dd7ee <+74>:	mov    -0x5588(%rbp),%rax
   0x00000000006dd7f5 <+81>:	mov    0x30(%rax),%rax
=> 0x00000000006dd7f9 <+85>:	mov    0x28(%rax),%eax
   0x00000000006dd7fc <+88>:	mov    $0x50,%ecx
   0x00000000006dd801 <+93>:	cmp    $0x50,%eax
   0x00000000006dd804 <+96>:	cmovl  %ecx,%eax
   0x00000000006dd807 <+99>:	add    %edx,%eax
   0x00000000006dd809 <+101>:	mov    %eax,-0x5558(%rbp)

139		const unsigned radius = objSensorRange(psObj);
   0x00000000006dd80f <+107>:	mov    -0x5588(%rbp),%rax
   0x00000000006dd816 <+114>:	mov    %rax,%rdi
   0x00000000006dd819 <+117>:	callq  0x6dd085 <objSensorRange(BASE_OBJECT const*)>
   0x00000000006dd81e <+122>:	mov    %eax,-0x5554(%rbp)

140		const int rayPlayer = psObj->player;
   0x00000000006dd824 <+128>:	mov    -0x5588(%rbp),%rax
   0x00000000006dd82b <+135>:	movzbl 0x22(%rax),%eax
   0x00000000006dd82f <+139>:	movzbl %al,%eax
   0x00000000006dd832 <+142>:	mov    %eax,-0x5550(%rbp)

141		size_t i;
142		size_t size;
143		const WavecastTile *tiles = getWavecastTable(radius, &size);
   0x00000000006dd838 <+148>:	lea    -0x5530(%rbp),%rdx
   0x00000000006dd83f <+155>:	mov    -0x5554(%rbp),%eax
   0x00000000006dd845 <+161>:	mov    %rdx,%rsi
   0x00000000006dd848 <+164>:	mov    %eax,%edi
   0x00000000006dd84a <+166>:	callq  0x6e2cd1 <getWavecastTable(unsigned int, unsigned long*)>
   0x00000000006dd84f <+171>:	mov    %rax,-0x5520(%rbp)

144		int tileHeight, perspectiveHeight, perspectiveHeightLeeway;
145	#define MAX_WAVECAST_LIST_SIZE 1360  // Trivial upper bound to what a fully upgraded WSS can use (its number of angles). Should probably be some factor times the maximum possible radius. Is probably a lot more than needed. Tested to need at least 180.
146		int heights[2][MAX_WAVECAST_LIST_SIZE];
147		int angles[2][MAX_WAVECAST_LIST_SIZE + 1];
148		int readListSize = 0, readListPos = 0, writeListPos = 0;  // readListSize, readListPos dummy initialisations.
   0x00000000006dd856 <+178>:	movl   $0x0,-0x5578(%rbp)
   0x00000000006dd860 <+188>:	movl   $0x0,-0x5574(%rbp)
   0x00000000006dd86a <+198>:	movl   $0x0,-0x5570(%rbp)

149		int readList = 0;  // Reading from this list, writing to the other. Could also initialise to rand()%2.
   0x00000000006dd874 <+208>:	movl   $0x0,-0x556c(%rbp)

150		int lastHeight = 0;  // lastHeight dummy initialisation.
   0x00000000006dd87e <+218>:	movl   $0x0,-0x5568(%rbp)

151		int lastAngle = 0x7FFFFFFF;
   0x00000000006dd888 <+228>:	movl   $0x7fffffff,-0x5564(%rbp)

152	
153		// Start with full vision of all angles. (If someday wanting to make droids that can only look in one direction, change here, after getting the original angle values saved in the wavecast table.)
154		heights[!readList][writeListPos] = -0x7FFFFFFF-1;  // Smallest integer.
   0x00000000006dd892 <+238>:	cmpl   $0x0,-0x556c(%rbp)
   0x00000000006dd899 <+245>:	sete   %al
   0x00000000006dd89c <+248>:	movzbl %al,%edx
   0x00000000006dd89f <+251>:	mov    -0x5570(%rbp),%eax
   0x00000000006dd8a5 <+257>:	cltq   
   0x00000000006dd8a7 <+259>:	movslq %edx,%rdx
   0x00000000006dd8aa <+262>:	imul   $0x550,%rdx,%rdx
   0x00000000006dd8b1 <+269>:	add    %rdx,%rax
   0x00000000006dd8b4 <+272>:	movl   $0x80000000,-0x5510(%rbp,%rax,4)

155		angles[!readList][writeListPos] = 0;               // Smallest angle.
   0x00000000006dd8bf <+283>:	cmpl   $0x0,-0x556c(%rbp)
   0x00000000006dd8c6 <+290>:	sete   %al
   0x00000000006dd8c9 <+293>:	movzbl %al,%edx
   0x00000000006dd8cc <+296>:	mov    -0x5570(%rbp),%eax
   0x00000000006dd8d2 <+302>:	cltq   
   0x00000000006dd8d4 <+304>:	movslq %edx,%rdx
   0x00000000006dd8d7 <+307>:	imul   $0x551,%rdx,%rdx
   0x00000000006dd8de <+314>:	add    %rdx,%rax
   0x00000000006dd8e1 <+317>:	movl   $0x0,-0x2a90(%rbp,%rax,4)

156		++writeListPos;
   0x00000000006dd8ec <+328>:	addl   $0x1,-0x5570(%rbp)

157	
158		for (i = 0; i < size; ++i)
   0x00000000006dd8f3 <+335>:	movq   $0x0,-0x5528(%rbp)
   0x00000000006dd8fe <+346>:	jmpq   0x6dde6a <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1734>
   0x00000000006dde62 <+1726>:	addq   $0x1,-0x5528(%rbp)
   0x00000000006dde6a <+1734>:	mov    -0x5530(%rbp),%rax
   0x00000000006dde71 <+1741>:	cmp    %rax,-0x5528(%rbp)
   0x00000000006dde78 <+1748>:	setb   %al
   0x00000000006dde7b <+1751>:	test   %al,%al
   0x00000000006dde7d <+1753>:	jne    0x6dd903 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+351>

159		{
160			const int mapX = map_coord(sx) + tiles[i].dx;
   0x00000000006dd903 <+351>:	mov    -0x5560(%rbp),%eax
   0x00000000006dd909 <+357>:	mov    %eax,%edi
   0x00000000006dd90b <+359>:	callq  0x6dd19f <map_coord(int32_t)>
   0x00000000006dd910 <+364>:	mov    %eax,%ecx
   0x00000000006dd912 <+366>:	mov    -0x5528(%rbp),%rdx
   0x00000000006dd919 <+373>:	mov    %rdx,%rax
   0x00000000006dd91c <+376>:	add    %rax,%rax
   0x00000000006dd91f <+379>:	add    %rdx,%rax
   0x00000000006dd922 <+382>:	shl    $0x2,%rax
   0x00000000006dd926 <+386>:	mov    %rax,%rdx
   0x00000000006dd929 <+389>:	mov    -0x5520(%rbp),%rax
   0x00000000006dd930 <+396>:	add    %rdx,%rax
   0x00000000006dd933 <+399>:	movzwl (%rax),%eax
   0x00000000006dd936 <+402>:	cwtl   
   0x00000000006dd937 <+403>:	add    %ecx,%eax
   0x00000000006dd939 <+405>:	mov    %eax,-0x554c(%rbp)

161			const int mapY = map_coord(sy) + tiles[i].dy;
   0x00000000006dd93f <+411>:	mov    -0x555c(%rbp),%eax
   0x00000000006dd945 <+417>:	mov    %eax,%edi
   0x00000000006dd947 <+419>:	callq  0x6dd19f <map_coord(int32_t)>
   0x00000000006dd94c <+424>:	mov    %eax,%ecx
   0x00000000006dd94e <+426>:	mov    -0x5528(%rbp),%rdx
   0x00000000006dd955 <+433>:	mov    %rdx,%rax
   0x00000000006dd958 <+436>:	add    %rax,%rax
   0x00000000006dd95b <+439>:	add    %rdx,%rax
   0x00000000006dd95e <+442>:	shl    $0x2,%rax
   0x00000000006dd962 <+446>:	mov    %rax,%rdx
   0x00000000006dd965 <+449>:	mov    -0x5520(%rbp),%rax
   0x00000000006dd96c <+456>:	add    %rdx,%rax
   0x00000000006dd96f <+459>:	movzwl 0x2(%rax),%eax
   0x00000000006dd973 <+463>:	cwtl   
   0x00000000006dd974 <+464>:	add    %ecx,%eax
   0x00000000006dd976 <+466>:	mov    %eax,-0x5548(%rbp)

162			MAPTILE *psTile;
163			bool seen = false;
   0x00000000006dd97c <+472>:	movb   $0x0,-0x557a(%rbp)

164	
165			if (mapX < 0 || mapX >= mapWidth || mapY < 0 || mapY >= mapHeight)
   0x00000000006dd983 <+479>:	cmpl   $0x0,-0x554c(%rbp)
   0x00000000006dd98a <+486>:	js     0x6dde61 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1725>
   0x00000000006dd990 <+492>:	mov    0xab44fa(%rip),%eax        # 0x1191e90 <mapWidth>
   0x00000000006dd996 <+498>:	cmp    %eax,-0x554c(%rbp)
   0x00000000006dd99c <+504>:	jge    0x6dde61 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1725>
   0x00000000006dd9a2 <+510>:	cmpl   $0x0,-0x5548(%rbp)
   0x00000000006dd9a9 <+517>:	js     0x6dde61 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1725>
   0x00000000006dd9af <+523>:	mov    0xab44df(%rip),%eax        # 0x1191e94 <mapHeight>
   0x00000000006dd9b5 <+529>:	cmp    %eax,-0x5548(%rbp)
   0x00000000006dd9bb <+535>:	jge    0x6dde61 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1725>

166			{
167				continue;
   0x00000000006dde61 <+1725>:	nop

168			}
169			psTile = mapTile(mapX, mapY);
   0x00000000006dd9c1 <+541>:	mov    -0x5548(%rbp),%edx
   0x00000000006dd9c7 <+547>:	mov    -0x554c(%rbp),%eax
   0x00000000006dd9cd <+553>:	mov    %edx,%esi
   0x00000000006dd9cf <+555>:	mov    %eax,%edi
   0x00000000006dd9d1 <+557>:	callq  0x6dd1f5 <mapTile(int32_t, int32_t)>
   0x00000000006dd9d6 <+562>:	mov    %rax,-0x5518(%rbp)

170			tileHeight = psTile->height;
   0x00000000006dd9dd <+569>:	mov    -0x5518(%rbp),%rax
   0x00000000006dd9e4 <+576>:	mov    0x14(%rax),%eax
   0x00000000006dd9e7 <+579>:	mov    %eax,-0x5544(%rbp)

171			perspectiveHeight = (tileHeight - sz) * tiles[i].invRadius;
   0x00000000006dd9ed <+585>:	mov    -0x5558(%rbp),%eax
   0x00000000006dd9f3 <+591>:	mov    -0x5544(%rbp),%edx
   0x00000000006dd9f9 <+597>:	mov    %edx,%ecx
   0x00000000006dd9fb <+599>:	sub    %eax,%ecx
   0x00000000006dd9fd <+601>:	mov    -0x5528(%rbp),%rdx
   0x00000000006dda04 <+608>:	mov    %rdx,%rax
   0x00000000006dda07 <+611>:	add    %rax,%rax
   0x00000000006dda0a <+614>:	add    %rdx,%rax
   0x00000000006dda0d <+617>:	shl    $0x2,%rax
   0x00000000006dda11 <+621>:	mov    %rax,%rdx
   0x00000000006dda14 <+624>:	mov    -0x5520(%rbp),%rax
   0x00000000006dda1b <+631>:	add    %rdx,%rax
   0x00000000006dda1e <+634>:	mov    0x4(%rax),%eax
   0x00000000006dda21 <+637>:	imul   %ecx,%eax
   0x00000000006dda24 <+640>:	mov    %eax,-0x5540(%rbp)

172			perspectiveHeightLeeway = (tileHeight - sz + MIN_VIS_HEIGHT) * tiles[i].invRadius;
   0x00000000006dda2a <+646>:	mov    -0x5558(%rbp),%eax
   0x00000000006dda30 <+652>:	mov    -0x5544(%rbp),%edx
   0x00000000006dda36 <+658>:	mov    %edx,%ecx
   0x00000000006dda38 <+660>:	sub    %eax,%ecx
   0x00000000006dda3a <+662>:	mov    %ecx,%eax
   0x00000000006dda3c <+664>:	lea    0x50(%rax),%ecx
   0x00000000006dda3f <+667>:	mov    -0x5528(%rbp),%rdx
   0x00000000006dda46 <+674>:	mov    %rdx,%rax
   0x00000000006dda49 <+677>:	add    %rax,%rax
   0x00000000006dda4c <+680>:	add    %rdx,%rax
   0x00000000006dda4f <+683>:	shl    $0x2,%rax
   0x00000000006dda53 <+687>:	mov    %rax,%rdx
   0x00000000006dda56 <+690>:	mov    -0x5520(%rbp),%rax
   0x00000000006dda5d <+697>:	add    %rdx,%rax
   0x00000000006dda60 <+700>:	mov    0x4(%rax),%eax
   0x00000000006dda63 <+703>:	imul   %ecx,%eax
   0x00000000006dda66 <+706>:	mov    %eax,-0x553c(%rbp)

173	
174			if (tiles[i].angBegin < lastAngle)
   0x00000000006dda6c <+712>:	mov    -0x5528(%rbp),%rdx
   0x00000000006dda73 <+719>:	mov    %rdx,%rax
   0x00000000006dda76 <+722>:	add    %rax,%rax
   0x00000000006dda79 <+725>:	add    %rdx,%rax
   0x00000000006dda7c <+728>:	shl    $0x2,%rax
   0x00000000006dda80 <+732>:	mov    %rax,%rdx
   0x00000000006dda83 <+735>:	mov    -0x5520(%rbp),%rax
   0x00000000006dda8a <+742>:	add    %rdx,%rax
   0x00000000006dda8d <+745>:	movzwl 0x8(%rax),%eax
   0x00000000006dda91 <+749>:	cwtl   
   0x00000000006dda92 <+750>:	cmp    -0x5564(%rbp),%eax
   0x00000000006dda98 <+756>:	jge    0x6ddb06 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+866>

175			{
176				// Gone around the circle. (Or just started scan.)
177				angles[!readList][writeListPos] = lastAngle;
   0x00000000006dda9a <+758>:	cmpl   $0x0,-0x556c(%rbp)
   0x00000000006ddaa1 <+765>:	sete   %al
   0x00000000006ddaa4 <+768>:	movzbl %al,%edx
   0x00000000006ddaa7 <+771>:	mov    -0x5570(%rbp),%eax
   0x00000000006ddaad <+777>:	cltq   
   0x00000000006ddaaf <+779>:	movslq %edx,%rdx
   0x00000000006ddab2 <+782>:	imul   $0x551,%rdx,%rdx
   0x00000000006ddab9 <+789>:	add    %rax,%rdx
   0x00000000006ddabc <+792>:	mov    -0x5564(%rbp),%eax
   0x00000000006ddac2 <+798>:	mov    %eax,-0x2a90(%rbp,%rdx,4)

178	
179				// Flip the lists.
180				readList = !readList;
   0x00000000006ddac9 <+805>:	cmpl   $0x0,-0x556c(%rbp)
   0x00000000006ddad0 <+812>:	sete   %al
   0x00000000006ddad3 <+815>:	movzbl %al,%eax
   0x00000000006ddad6 <+818>:	mov    %eax,-0x556c(%rbp)

181				readListPos = 0;
   0x00000000006ddadc <+824>:	movl   $0x0,-0x5574(%rbp)

182				readListSize = writeListPos;
   0x00000000006ddae6 <+834>:	mov    -0x5570(%rbp),%eax
   0x00000000006ddaec <+840>:	mov    %eax,-0x5578(%rbp)

183				writeListPos = 0;
   0x00000000006ddaf2 <+846>:	movl   $0x0,-0x5570(%rbp)

184				lastHeight = 1;  // Impossible value since tiles[i].invRadius > 1 for all i, so triggers writing first entry in list.
   0x00000000006ddafc <+856>:	movl   $0x1,-0x5568(%rbp)

185			}
186			lastAngle = tiles[i].angEnd;
   0x00000000006ddb06 <+866>:	mov    -0x5528(%rbp),%rdx
   0x00000000006ddb0d <+873>:	mov    %rdx,%rax
   0x00000000006ddb10 <+876>:	add    %rax,%rax
   0x00000000006ddb13 <+879>:	add    %rdx,%rax
   0x00000000006ddb16 <+882>:	shl    $0x2,%rax
   0x00000000006ddb1a <+886>:	mov    %rax,%rdx
   0x00000000006ddb1d <+889>:	mov    -0x5520(%rbp),%rax
   0x00000000006ddb24 <+896>:	add    %rdx,%rax
   0x00000000006ddb27 <+899>:	movzwl 0xa(%rax),%eax
   0x00000000006ddb2b <+903>:	cwtl   
   0x00000000006ddb2c <+904>:	mov    %eax,-0x5564(%rbp)

187	
188			while (angles[readList][readListPos + 1] <= tiles[i].angBegin && readListPos < readListSize)
   0x00000000006ddb32 <+910>:	jmp    0x6ddb3b <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+919>
   0x00000000006ddb3b <+919>:	mov    -0x5574(%rbp),%eax
   0x00000000006ddb41 <+925>:	add    $0x1,%eax
   0x00000000006ddb44 <+928>:	cltq   
   0x00000000006ddb46 <+930>:	mov    -0x556c(%rbp),%edx
   0x00000000006ddb4c <+936>:	movslq %edx,%rdx
   0x00000000006ddb4f <+939>:	imul   $0x551,%rdx,%rdx
   0x00000000006ddb56 <+946>:	add    %rdx,%rax
   0x00000000006ddb59 <+949>:	mov    -0x2a90(%rbp,%rax,4),%ecx
   0x00000000006ddb60 <+956>:	mov    -0x5528(%rbp),%rdx
   0x00000000006ddb67 <+963>:	mov    %rdx,%rax
   0x00000000006ddb6a <+966>:	add    %rax,%rax
   0x00000000006ddb6d <+969>:	add    %rdx,%rax
   0x00000000006ddb70 <+972>:	shl    $0x2,%rax
   0x00000000006ddb74 <+976>:	mov    %rax,%rdx
   0x00000000006ddb77 <+979>:	mov    -0x5520(%rbp),%rax
   0x00000000006ddb7e <+986>:	add    %rdx,%rax
   0x00000000006ddb81 <+989>:	movzwl 0x8(%rax),%eax
   0x00000000006ddb85 <+993>:	cwtl   
   0x00000000006ddb86 <+994>:	cmp    %eax,%ecx
   0x00000000006ddb88 <+996>:	jg     0x6ddb9f <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1019>
   0x00000000006ddb8a <+998>:	mov    -0x5574(%rbp),%eax
   0x00000000006ddb90 <+1004>:	cmp    -0x5578(%rbp),%eax
   0x00000000006ddb96 <+1010>:	jge    0x6ddb9f <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1019>
   0x00000000006ddb98 <+1012>:	mov    $0x1,%eax
   0x00000000006ddb9d <+1017>:	jmp    0x6ddba4 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1024>
   0x00000000006ddb9f <+1019>:	mov    $0x0,%eax
   0x00000000006ddba4 <+1024>:	test   %al,%al
   0x00000000006ddba6 <+1026>:	jne    0x6ddb34 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+912>

189			{
190				++readListPos;  // Skip, not relevant.
   0x00000000006ddb34 <+912>:	addl   $0x1,-0x5574(%rbp)

191			}
192	
193			while (angles[readList][readListPos] < tiles[i].angEnd && readListPos < readListSize)
   0x00000000006ddba8 <+1028>:	jmpq   0x6ddd83 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1503>
   0x00000000006ddd83 <+1503>:	mov    -0x5574(%rbp),%eax
   0x00000000006ddd89 <+1509>:	cltq   
   0x00000000006ddd8b <+1511>:	mov    -0x556c(%rbp),%edx
   0x00000000006ddd91 <+1517>:	movslq %edx,%rdx
   0x00000000006ddd94 <+1520>:	imul   $0x551,%rdx,%rdx
   0x00000000006ddd9b <+1527>:	add    %rdx,%rax
   0x00000000006ddd9e <+1530>:	mov    -0x2a90(%rbp,%rax,4),%ecx
   0x00000000006ddda5 <+1537>:	mov    -0x5528(%rbp),%rdx
   0x00000000006dddac <+1544>:	mov    %rdx,%rax
   0x00000000006dddaf <+1547>:	add    %rax,%rax
   0x00000000006dddb2 <+1550>:	add    %rdx,%rax
   0x00000000006dddb5 <+1553>:	shl    $0x2,%rax
   0x00000000006dddb9 <+1557>:	mov    %rax,%rdx
   0x00000000006dddbc <+1560>:	mov    -0x5520(%rbp),%rax
   0x00000000006dddc3 <+1567>:	add    %rdx,%rax
   0x00000000006dddc6 <+1570>:	movzwl 0xa(%rax),%eax
   0x00000000006dddca <+1574>:	cwtl   
   0x00000000006dddcb <+1575>:	cmp    %eax,%ecx
   0x00000000006dddcd <+1577>:	jge    0x6ddde4 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1600>
   0x00000000006dddcf <+1579>:	mov    -0x5574(%rbp),%eax
   0x00000000006dddd5 <+1585>:	cmp    -0x5578(%rbp),%eax
   0x00000000006ddddb <+1591>:	jge    0x6ddde4 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1600>
   0x00000000006ddddd <+1593>:	mov    $0x1,%eax
   0x00000000006ddde2 <+1598>:	jmp    0x6ddde9 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1605>
   0x00000000006ddde4 <+1600>:	mov    $0x0,%eax
   0x00000000006ddde9 <+1605>:	test   %al,%al
   0x00000000006dddeb <+1607>:	jne    0x6ddbad <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1033>

194			{
195				int oldHeight = heights[readList][readListPos];
   0x00000000006ddbad <+1033>:	mov    -0x5574(%rbp),%eax
   0x00000000006ddbb3 <+1039>:	cltq   
   0x00000000006ddbb5 <+1041>:	mov    -0x556c(%rbp),%edx
   0x00000000006ddbbb <+1047>:	movslq %edx,%rdx
   0x00000000006ddbbe <+1050>:	imul   $0x550,%rdx,%rdx
   0x00000000006ddbc5 <+1057>:	add    %rdx,%rax
   0x00000000006ddbc8 <+1060>:	mov    -0x5510(%rbp,%rax,4),%eax
   0x00000000006ddbcf <+1067>:	mov    %eax,-0x5538(%rbp)

196				int newHeight = MAX(oldHeight, perspectiveHeight);
   0x00000000006ddbd5 <+1073>:	mov    -0x5538(%rbp),%eax
   0x00000000006ddbdb <+1079>:	cmp    -0x5540(%rbp),%eax
   0x00000000006ddbe1 <+1085>:	jle    0x6ddbeb <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1095>
   0x00000000006ddbe3 <+1087>:	mov    -0x5538(%rbp),%eax
   0x00000000006ddbe9 <+1093>:	jmp    0x6ddbf1 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1101>
   0x00000000006ddbeb <+1095>:	mov    -0x5540(%rbp),%eax
   0x00000000006ddbf1 <+1101>:	mov    %eax,-0x5534(%rbp)

197				seen = seen || perspectiveHeightLeeway >= oldHeight; // consider point slightly above ground in case there is something on the tile
   0x00000000006ddbf7 <+1107>:	cmpb   $0x0,-0x557a(%rbp)
   0x00000000006ddbfe <+1114>:	jne    0x6ddc0e <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1130>
   0x00000000006ddc00 <+1116>:	mov    -0x553c(%rbp),%eax
   0x00000000006ddc06 <+1122>:	cmp    -0x5538(%rbp),%eax
   0x00000000006ddc0c <+1128>:	jl     0x6ddc15 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1137>
   0x00000000006ddc0e <+1130>:	mov    $0x1,%eax
   0x00000000006ddc13 <+1135>:	jmp    0x6ddc1a <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1142>
   0x00000000006ddc15 <+1137>:	mov    $0x0,%eax
   0x00000000006ddc1a <+1142>:	mov    %al,-0x557a(%rbp)

198				if (newHeight != lastHeight)
   0x00000000006ddc20 <+1148>:	mov    -0x5534(%rbp),%eax
   0x00000000006ddc26 <+1154>:	cmp    -0x5568(%rbp),%eax
   0x00000000006ddc2c <+1160>:	je     0x6ddd7c <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1496>

199				{
200					heights[!readList][writeListPos] = newHeight;
   0x00000000006ddc32 <+1166>:	cmpl   $0x0,-0x556c(%rbp)
   0x00000000006ddc39 <+1173>:	sete   %al
   0x00000000006ddc3c <+1176>:	movzbl %al,%edx
   0x00000000006ddc3f <+1179>:	mov    -0x5570(%rbp),%eax
   0x00000000006ddc45 <+1185>:	cltq   
   0x00000000006ddc47 <+1187>:	movslq %edx,%rdx
   0x00000000006ddc4a <+1190>:	imul   $0x550,%rdx,%rdx
   0x00000000006ddc51 <+1197>:	add    %rax,%rdx
   0x00000000006ddc54 <+1200>:	mov    -0x5534(%rbp),%eax
   0x00000000006ddc5a <+1206>:	mov    %eax,-0x5510(%rbp,%rdx,4)

201					angles[!readList][writeListPos] = MAX(angles[readList][readListPos], tiles[i].angBegin);
   0x00000000006ddc61 <+1213>:	cmpl   $0x0,-0x556c(%rbp)
   0x00000000006ddc68 <+1220>:	sete   %al
   0x00000000006ddc6b <+1223>:	movzbl %al,%ecx
   0x00000000006ddc6e <+1226>:	mov    -0x5528(%rbp),%rdx
   0x00000000006ddc75 <+1233>:	mov    %rdx,%rax
   0x00000000006ddc78 <+1236>:	add    %rax,%rax
   0x00000000006ddc7b <+1239>:	add    %rdx,%rax
   0x00000000006ddc7e <+1242>:	shl    $0x2,%rax
   0x00000000006ddc82 <+1246>:	mov    %rax,%rdx
   0x00000000006ddc85 <+1249>:	mov    -0x5520(%rbp),%rax
   0x00000000006ddc8c <+1256>:	add    %rdx,%rax
   0x00000000006ddc8f <+1259>:	movzwl 0x8(%rax),%eax
   0x00000000006ddc93 <+1263>:	movswl %ax,%edx
   0x00000000006ddc96 <+1266>:	mov    -0x5574(%rbp),%eax
   0x00000000006ddc9c <+1272>:	cltq   
   0x00000000006ddc9e <+1274>:	mov    -0x556c(%rbp),%esi
   0x00000000006ddca4 <+1280>:	movslq %esi,%rsi
   0x00000000006ddca7 <+1283>:	imul   $0x551,%rsi,%rsi
   0x00000000006ddcae <+1290>:	add    %rsi,%rax
   0x00000000006ddcb1 <+1293>:	mov    -0x2a90(%rbp,%rax,4),%eax
   0x00000000006ddcb8 <+1300>:	cmp    %eax,%edx
   0x00000000006ddcba <+1302>:	cmovge %edx,%eax
   0x00000000006ddcbd <+1305>:	mov    -0x5570(%rbp),%edx
   0x00000000006ddcc3 <+1311>:	movslq %edx,%rdx
   0x00000000006ddcc6 <+1314>:	movslq %ecx,%rcx
   0x00000000006ddcc9 <+1317>:	imul   $0x551,%rcx,%rcx
   0x00000000006ddcd0 <+1324>:	add    %rcx,%rdx
   0x00000000006ddcd3 <+1327>:	mov    %eax,-0x2a90(%rbp,%rdx,4)

202					lastHeight = newHeight;
   0x00000000006ddcda <+1334>:	mov    -0x5534(%rbp),%eax
   0x00000000006ddce0 <+1340>:	mov    %eax,-0x5568(%rbp)

203					++writeListPos;
   0x00000000006ddce6 <+1346>:	addl   $0x1,-0x5570(%rbp)

204					ASSERT_OR_RETURN( , writeListPos <= MAX_WAVECAST_LIST_SIZE, "Visibility too complicated! Need to increase MAX_WAVECAST_LIST_SIZE.");
   0x00000000006ddced <+1353>:	cmpl   $0x550,-0x5570(%rbp)
   0x00000000006ddcf7 <+1363>:	setle  %al
   0x00000000006ddcfa <+1366>:	mov    %al,-0x5579(%rbp)
   0x00000000006ddd00 <+1372>:	movzbl -0x5579(%rbp),%eax
   0x00000000006ddd07 <+1379>:	xor    $0x1,%eax
   0x00000000006ddd0a <+1382>:	test   %al,%al
   0x00000000006ddd0c <+1384>:	je     0x6ddd7c <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1496>
   0x00000000006ddd0e <+1386>:	mov    $0x7ecc50,%ecx
   0x00000000006ddd13 <+1391>:	mov    $0x7ed1b4,%edx
   0x00000000006ddd18 <+1396>:	mov    $0x19,%esi
   0x00000000006ddd1d <+1401>:	mov    $0xcc,%edi
   0x00000000006ddd22 <+1406>:	mov    $0x0,%eax
   0x00000000006ddd27 <+1411>:	callq  0x770e55 <_debug(int, code_part, char const*, char const*, ...)>
   0x00000000006ddd2c <+1416>:	movq   $0x15cc120,(%rsp)
   0x00000000006ddd34 <+1424>:	mov    $0x7ecc98,%r9d
   0x00000000006ddd3a <+1430>:	mov    $0x7eccbf,%r8d
   0x00000000006ddd40 <+1436>:	mov    $0x7ecb38,%ecx
   0x00000000006ddd45 <+1441>:	mov    $0x7ed1b4,%edx
   0x00000000006ddd4a <+1446>:	mov    $0x19,%esi
   0x00000000006ddd4f <+1451>:	mov    $0xcc,%edi
   0x00000000006ddd54 <+1456>:	mov    $0x0,%eax
   0x00000000006ddd59 <+1461>:	callq  0x770e55 <_debug(int, code_part, char const*, char const*, ...)>
   0x00000000006ddd5e <+1466>:	movzbl 0xeee45b(%rip),%eax        # 0x15cc1c0 <assertEnabled>
   0x00000000006ddd65 <+1473>:	test   %al,%al
   0x00000000006ddd67 <+1475>:	je     0x6dde8d <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1769>
   0x00000000006ddd6d <+1481>:	mov    $0x5,%edi
   0x00000000006ddd72 <+1486>:	callq  0x4e4490 <raise@plt>
   0x00000000006ddd77 <+1491>:	jmpq   0x6dde8d <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1769>
   0x00000000006dde83 <+1759>:	jmp    0x6dde8d <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1769>
   0x00000000006dde85 <+1761>:	mov    %rax,%rdi
   0x00000000006dde88 <+1764>:	callq  0x4e3a90 <_Unwind_Resume@plt>

205				}
206				++readListPos;
   0x00000000006ddd7c <+1496>:	addl   $0x1,-0x5574(%rbp)

207			}
208			--readListPos;
   0x00000000006dddf1 <+1613>:	subl   $0x1,-0x5574(%rbp)

209	
210			if (seen)
   0x00000000006dddf8 <+1620>:	cmpb   $0x0,-0x557a(%rbp)
   0x00000000006dddff <+1627>:	je     0x6dde62 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1726>

211			{
212				// Can see this tile.
213				psTile->tileExploredBits |= alliancebits[rayPlayer];                            // Share exploration with allies too
   0x00000000006dde01 <+1629>:	mov    -0x5518(%rbp),%rax
   0x00000000006dde08 <+1636>:	movzwl 0x2(%rax),%edx
   0x00000000006dde0c <+1640>:	mov    -0x5550(%rbp),%eax
   0x00000000006dde12 <+1646>:	cltq   
   0x00000000006dde14 <+1648>:	movzwl 0xac4290(%rax,%rax,1),%eax
   0x00000000006dde1c <+1656>:	or     %eax,%edx
   0x00000000006dde1e <+1658>:	mov    -0x5518(%rbp),%rax
   0x00000000006dde25 <+1665>:	mov    %dx,0x2(%rax)

214				visMarkTile(psObj, mapX, mapY, psTile, recordTilePos, lastRecordTilePos);   // Mark this tile as seen by our sensor
   0x00000000006dde29 <+1669>:	mov    -0x5598(%rbp),%r8
   0x00000000006dde30 <+1676>:	mov    -0x5590(%rbp),%rdi
   0x00000000006dde37 <+1683>:	mov    -0x5518(%rbp),%rcx
   0x00000000006dde3e <+1690>:	mov    -0x5548(%rbp),%edx
   0x00000000006dde44 <+1696>:	mov    -0x554c(%rbp),%esi
   0x00000000006dde4a <+1702>:	mov    -0x5588(%rbp),%rax
   0x00000000006dde51 <+1709>:	mov    %r8,%r9
   0x00000000006dde54 <+1712>:	mov    %rdi,%r8
   0x00000000006dde57 <+1715>:	mov    %rax,%rdi
   0x00000000006dde5a <+1718>:	callq  0x6dd621 <visMarkTile(BASE_OBJECT const*, int, int, MAPTILE*, TILEPOS*, int*)>
   0x00000000006dde5f <+1723>:	jmp    0x6dde62 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+1726>

215			}
216		}
217	}
   0x00000000006dde8d <+1769>:	leaveq 
   0x00000000006dde8e <+1770>:	retq   

End of assembler dump.
(gdb) rax            0x21	33
rbx            0x0	0
rcx            0x7fff52253a80	140734571559552
rdx            0x0	0
rsi            0x7fff52253a80	140734571559552
rdi            0x4c26010	79847440
rbp            0x7fff52253a40	0x7fff52253a40
rsp            0x7fff5224e490	0x7fff5224e490
r8             0x7fbc21c57c60	140445997169760
r9             0x39	57
r10            0x0	0
r11            0x72007500740063	32088649863790691
r12            0xa	10
r13            0x11	17
r14            0xe	14
r15            0x7fbc2425fc29	140446037048361
rip            0x6dd7f9	0x6dd7f9 <doWaveTerrain(BASE_OBJECT const*, TILEPOS*, int*)+85>
eflags         0x246	[ PF ZF IF ]
cs             0x33	51
ss             0x2b	43
ds             0x0	0
es             0x0	0
fs             0x0	0
gs             0x0	0
(gdb) A debugging session is active.

	Inferior 1 [process 10744] will be detached.

Quit anyway? (y or n) [answered Y; input not from terminal]
Detaching from program: /home/noq/.tmp/warzone2100-3.1_rc3/src/warzone2100, process 10744
User avatar
Goth Zagog-Thou
Regular
Regular
Posts: 1582
Joined: 06 Jan 2007, 08:08
Location: Delta Base

Re: Unable to find data for scbd_run.ani type ANI

Post by Goth Zagog-Thou »

Wow. o.O Something amiss far more than I expected.

The same map compile works flawlessly on 2.3.9. Strange.

Looks like I'll be going with plan B.
User avatar
aubergine
Professional
Professional
Posts: 3462
Joined: 10 Oct 2010, 00:58

Re: Unable to find data for scbd_run.ani type ANI

Post by aubergine »

Did someone create a ticket for this bug?
"Dedicated to discovering Warzone artefacts, and sharing them freely for the benefit of the community."
-- https://warzone.atlassian.net/wiki/display/GO
User avatar
NoQ
Special
Special
Posts: 6226
Joined: 24 Dec 2009, 11:35
Location: /var/zone

Re: Unable to find data for scbd_run.ani type ANI

Post by NoQ »

What sort of bug are you seeing here? Crash due to a broken mod? Necessity of adding things to wrf files?