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