(*) Fixed initialization problem with tools causing stone axes to be thought of as ranged
'mscvcp140.dll missing' causing a failure for the .exe to load for me. Win7, 43.03 has been working fine.Spoiler (click to show/hide)
This is great. What is next? More fixes or work into the 64 bit version?
'mscvcp140.dll missing' causing a failure for the .exe to load for me. Win7, 43.03 has been working fine.Spoiler (click to show/hide)
'mscvcp140.dll missing' causing a failure for the .exe to load for me. Win7, 43.03 has been working fine.
'mscvcp140.dll missing' causing a failure for the .exe to load for me. Win7, 43.03 has been working fine.Spoiler (click to show/hide)
http://bay12games.com/dwarves/redist/msvcp140.dll
If you put this in the folder does it work, or does it give you another DLL that's missing? I tried it on three computers, but they all came with the proper DLLs I guess.
on visual studio go to Project tab -> properties - > configuration properties -> C/C++ -> Code Generation. on runtime library choose /MTd for debug mode and /MT for release mode.
This will cause the compiler to imbue the runtime into the app. The executable will be bigger, but it will run without any need of runtime dlls.
on visual studio go to Project tab -> properties - > configuration properties -> C/C++ -> Code Generation. on runtime library choose /MTd for debug mode and /MT for release mode.
This will cause the compiler to imbue the runtime into the app. The executable will be bigger, but it will run without any need of runtime dlls.
Does the legacy version have DLL problems for affected people? Apparently legacy was already compiled with /MT, where the sdl version was using /MD.
Getting the same issue here.'mscvcp140.dll missing' causing a failure for the .exe to load for me. Win7, 43.03 has been working fine.Spoiler (click to show/hide)
http://bay12games.com/dwarves/redist/msvcp140.dll
If you put this in the folder does it work, or does it give you another DLL that's missing? I tried it on three computers, but they all came with the proper DLLs I guess.
Not that person but had the same issue, tried reinstalling Visual C++ Redistributable but it didn't work.
After downloading and putting that DLL in the folder it asks for a VCRUNTIME140.dll.
Okay, I AM getting some weird shit here. DF seems to open and work fine so far, then AFTER I close it, a few seconds after I get...Spoiler (click to show/hide)
https://askleo.com/how_do_i_resolve_my_problem_with_appcompattxt/
According to the link, the Appcompat.txt has the "info" MS wants you to upload. The error is about the issue of uploading, and not necessarily about the app that you ran.
Getting the same issue here.'mscvcp140.dll missing' causing a failure for the .exe to load for me. Win7, 43.03 has been working fine.Spoiler (click to show/hide)
http://bay12games.com/dwarves/redist/msvcp140.dll
If you put this in the folder does it work, or does it give you another DLL that's missing? I tried it on three computers, but they all came with the proper DLLs I guess.
Not that person but had the same issue, tried reinstalling Visual C++ Redistributable but it didn't work.
After downloading and putting that DLL in the folder it asks for a VCRUNTIME140.dll.
It's possible Visual Studio 2015 has just given up on Windows XP, since they stopped supporting it a few years ago, but I have no idea right now.
Anyone seen soldiers with armor yet?
Oh really, that's the first confirmation of additional armor being worn. Was he a weapon lord or something perhaps?Anyone seen soldiers with armor yet?
The only soldier in the keep I started in had the usual breastplate and helm. He also had a mail shirt, chain leggings, and gauntlets. At least one of the goblin bandits I killed had leather armor and helm, not sure about side gear they didn't use to reliably wear.
Whee, experiments in animal glue shall ensue.
Oh really, that's the first confirmation of additional armor being worn. Was he a weapon lord or something perhaps?
'mscvcp140.dll missing' causing a failure for the .exe to load for me. Win7, 43.03 has been working fine.Spoiler (click to show/hide)
http://bay12games.com/dwarves/redist/msvcp140.dll
If you put this in the folder does it work, or does it give you another DLL that's missing? I tried it on three computers, but they all came with the proper DLLs I guess.
Not that person but had the same issue, tried reinstalling Visual C++ Redistributable but it didn't work.
After downloading and putting that DLL in the folder it asks for a VCRUNTIME140.dll.
...Sort of. It gives the security prompt, then launches and runs normally. But now after closing the program it pops up a "df_xp_test.exe has encountered a problem and needs to close." generic windows error message. Very similar to Random_Dragon's problem.
I'm getting this issue now, using the provided msvcp140.dll . Tried the new .exe offered in the SDL folder, but neither it nor the original .exe are working.
Would try the offered XP download, but I'm on win7.
I'm getting this issue now, using the provided msvcp140.dll . Tried the new .exe offered in the SDL folder, but neither it nor the original .exe are working.
Would try the offered XP download, but I'm on win7.
The XP exe should work for Win7+ as well as the first new exe did, but there are still DLL problems with the new exes in general? The new exe complains about the vcruntime140.dll?
See? Sorcery. ;w;I got the same error both on win7 x64 and XP x86 (running on a VirtualBox).
Makes sense with bandits, gonna generate an older world to increase the number of weapon lords and such, I assume that will have an influence, though that was actually a goblin soldier from a pit.
Everything working on Mac OS 10.7.5
The full armor look is a good one:Spoiler (click to show/hide)
Hmm.... so the hearthpeople are underequipped? Where was that screenshot from one that worked?
Hmm.... so the hearthpeople are underequipped? Where was that screenshot from one that worked?Here's one that worked someone else had. (http://i.imgur.com/uLhqVMs.png)
Or Toady One maybe has a different compile with static linking.Switching to the statically linked C runtime will actually cause some very significant problems for the modding community (specifically for DFHack), so we would be quite grateful if that particular option could be avoided. Installing the redistributable 32-bit MSVC 2015 runtime (or placing all of the necessary DLLs in the program directory) should be sufficient for all users.
on visual studio go to Project tab -> properties - > configuration properties -> C/C++ -> Code Generation. on runtime library choose /MTd for debug mode and /MT for release mode.
This will cause the compiler to imbue the runtime into the app. The executable will be bigger, but it will run without any need of runtime dlls.
Okay, I AM getting some weird shit here. DF seems to open and work fine so far, then AFTER I close it, a few seconds after I get...
(https://dl.dropboxusercontent.com/u/89427928/dwarven%20implosion.png)
edit: Oh, and the error message pops up when i close it.
http://bay12games.com/dwarves/redist/msvcp140.dll
http://bay12games.com/dwarves/redist/vcruntime140.dll
For the SDL version on the website, are those two files sufficient (put them in the folder with the exe), or does it give an additional DLL error? I'd like to find the smallest set I can include without forcing anybody to run an installer. I'll stay away from the /MT option if possible to keep DFHack running.
I have no idea what's going on with the exit crash... was that only happening on XP/Win7 in the SDL version?
My experience so far on Windows 10:
SDL 0.43.04: errors on launch about missing MSVCP140.dll and VCRUNTIME140.dll.
Legacy 0.43.04: no problems on launch or exit
"new df exe": no problems on launch or exit
"df xp test exe": no problems on launch or exit
http://bay12games.com/dwarves/redist/msvcp140.dll
http://bay12games.com/dwarves/redist/vcruntime140.dll
For the SDL version on the website, are those two files sufficient (put them in the folder with the exe), or does it give an additional DLL error?
I have no idea what's going on with the exit crash... was that only happening on XP/Win7 in the SDL version?
http://bay12games.com/dwarves/redist/msvcp140.dllUsing these gives me a missing "api-ms-win-crt-runtime-l1-1-.dll" error.
http://bay12games.com/dwarves/redist/vcruntime140.dll
For the SDL version on the website, are those two files sufficient (put them in the folder with the exe), or does it give an additional DLL error? I'd like to find the smallest set I can include without forcing anybody to run an installer. I'll stay away from the /MT option if possible to keep DFHack running.
I have no idea what's going on with the exit crash... was that only happening on XP/Win7 in the SDL version?
Ah, I figured it out, the problem everyone here is having must obviously be that they're using windows for some reason, so they should switch to linux, pretty sneaky, Toady, but I approve.
I don't know what that is.
Using these gives me a missing "api-ms-win-crt-runtime-l1-1-.dll" error.
Windows 8.1, but it might be because I had problems getting this (https://www.microsoft.com/en-us/download/details.aspx?id=48145) to work earlier and screwed something up.
Problem signature
Problem Event Name: BEX
Application Name: Dwarf Fortress.exe
Application Version: 0.0.0.0
Application Timestamp: 5768197e
Fault Module Name: Dwarf Fortress.exe
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 5768197e
Exception Offset: 018e65d4
Exception Code: c0000005
Exception Data: 00000008
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
api-ms-win-crt-convert-l1-1-0.dll
api-ms-win-crt-filesystem-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll
api-ms-win-crt-locale-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-string-l1-1-0.dll
api-ms-win-crt-utility-l1-1-0.dll
On Windows 7 SP1 x64, all 3 executables (plain Dwarf Fortress.exe, "new df exe", and "df_xp_test.exe") started successfully for me whether or not the 2 DLLs are present (since I apparently already have the 2015 runtime installed) [...]
Visual C++ Redistributable for Visual Studio 2015 (https://www.microsoft.com/en-us/download/details.aspx?id=48145)Installing the x86 version fixed the missing dlls problem.
Btw, old runtime DLLs can not be removed from DF package so that they don't cause confusion.
Quote from: mifkiBtw, old runtime DLLs can not be removed from DF package so that they don't cause confusion.
I couldn't parse this -- they can't be removed or they should be removed? I wasn't sure if one of my old fmod dlls somehow connected back to them or whatever nightmare scenarios come up.
I've been handling pre-64bit errors and warnings all day. I should know if a day or two how much trouble there will actually be will basic saving and loading and whatever else... then we can throw 64 bit dlls into this stew and work it all out.
Looking in Dependency Walker, the following DLLs appear to be required:On Windows 8.1, I saw errors for msvcp140.dll before downloading it, then vcruntime140.dll, and now api-ms-win-crt-runtime-l1-1-0.dll, so I'd guess they'll all need to be included unless we're expected to install something.
msvcp140.dll
vcruntime140.dll
api-ms-win-crt-convert-l1-1-0.dll
api-ms-win-crt-filesystem-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll
api-ms-win-crt-locale-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-string-l1-1-0.dll
api-ms-win-crt-utility-l1-1-0.dll
Allowed new citizens with some previously site-wide occupations to be reassigned
Allowed some site-wide occupations for dwarves
Derp on my part, I hadn't noticed that waaaaay back I had changed the [ARMOR_LEVEL:x] values for stuff while trying to see what effect it had, and upon changing them back to the vanilla ones I was able to get hearthpeople and such to generate with armor properly!
[...] now after closing the program it pops up a "df_xp_test.exe has encountered a problem and needs to close." generic windows error message. Very similar to Random_Dragon's problem.[...]
I have the 64 bit DF running! Without SDL so far, but I was able to share saves back and forth between 32 and 64 without immediate issues.
This causes us to die very early in textures.cpp before the main loop fires. I'm 98% sure at this point the crash on exit is caused by one of DF's dependencies and not DF itself. My gut wants me to suspect fmodex.dll, but it could be any of them due to the mscvrt mismatchs. I may try recompiling the ones I can tomorrow or later tonight depending on how I'm feeling. Fortunately, all of these are either recompilable, or have replacements in one of the ports.
I haven't experienced the exit crash myself (or at least any visible sign of it), so I can't jump in on the test/fix train with this one, unless I somehow can with the magic information you all possess.
I have the 64 bit DF running! Without SDL so far, but I was able to share saves back and forth between 32 and 64 without immediate issues. There are a few error logs, but if the SDL version also runs, maybe this won't take forever. Then we can play with linux... where I might need a new GCC? I don't even remember how that worked, but I have a giant PM to read about that.
Can we expect a halt on 32 bit DF once 64 bit is standard?
I would rather that, but given there's still plenty of people with 32 OS I think Toady will opt to support 32 bits longer.
I haven't experienced the exit crash myself (or at least any visible sign of it), so I can't jump in on the test/fix train with this one, unless I somehow can with the magic information you all possess.
I have the 64 bit DF running! Without SDL so far, but I was able to share saves back and forth between 32 and 64 without immediate issues. There are a few error logs, but if the SDL version also runs, maybe this won't take forever. Then we can play with linux... where I might need a new GCC? I don't even remember how that worked, but I have a giant PM to read about that.
The poll on bitness (http://www.bay12forums.com/smf/index.php?topic=158088.0) suggests that 3% (at most) run on a 32 bit OS, which goes along with my hunch that literally nobody is using a 32 bit CPU, just a few weirdoes like our chaotic firelizard are sticking with a 32 bit version of an OS for some reason.
Spoiler alert: 32 bit W7 is already ran into the ground. :p
I might have to ditch FMOD EX anyway since I don't have a 64-bit version of FMOD EX (the link dies since fmod.h uses a hack to ensure 32 bits which doesn't work on 64 bits, possibly among other things -- trying to patch it up on a lark, but will probably have to fall back to old fmod). I haven't looked at linux yet so I don't even remember why we were using it to begin with (I have some linux stuff in the fmod folder on the windows computer, but I don't remember if we ended up using OpenAL instead or whatever).
You play on a toaster with 1 GB of RAM?The poll on bitness (http://www.bay12forums.com/smf/index.php?topic=158088.0) suggests that 3% (at most) run on a 32 bit OS, which goes along with my hunch that literally nobody is using a 32 bit CPU, just a few weirdoes like our chaotic firelizard are sticking with a 32 bit version of an OS for some reason.
Spoiler alert: 32 bit W7 is already ran into the ground. :p
Mostly because some of us derps happen to have got a computer that came with Windows 7 64-bit, but not enough RAM for it. :V
The poll on bitness (http://www.bay12forums.com/smf/index.php?topic=158088.0) suggests that 3% (at most) run on a 32 bit OS, which goes along with my hunch that literally nobody is using a 32 bit CPU, just a few weirdoes like our chaotic firelizard are sticking with a 32 bit version of an OS for some reason.That was a poll on bitness of computer, not OS. There's still quite a few people running 32 bit Windows on their 64 bit computers. Almost no-one is using an actual 32 bit computer these days (and should therefore all install Linux to play 64 bit DF with..) 8)
Spoiler alert: 32 bit W7 is already ran into the ground. :p
You play on a toaster with 1 GB of RAM?
I assume my SDL is 32-bit specific as well.There are 64-bit versions here (SDL 1.2 and versions of SDL_image and SDL_ttf that work with SDL 1.2):
edit: or maybe it's worse than that. I'm getting a new group of linker errors for SDL... yeah, zlib and SDL aren't working either. It looks like the legacy version of fmod and zlib are fine, but the new ones are 32 only. I assume my SDL is 32-bit specific as well.
I suspect that FMOD Ex library has the same issue as the current one, though.
Oh I know it was supposed to be a poll on the computer bitness, but I would be surprised if 5 people* were actually using Pentium 4 era chips still, as that gen was the last 32 bit processor cycle for PC's, so I figure it is far more likely that they equated 32 bit OS with 32 bit CPU....Even if those 5 people were wrong, though, it doesn't mean there aren't another 50 who are actually running a 32 bit OS on their 64-bit processor and were savvy enough to answer the poll correctly. It doesn't prove anything one way or the other.
*Yes, even including everyone who didn't take the poll, trying to get any OS capable of running modern software, much less df itself, on a chip that old is a Sisyphean feat.
Oh I know it was supposed to be a poll on the computer bitness, but I would be surprised if 5 people* were actually using Pentium 4 era chips still, as that gen was the last 32 bit processor cycle for PC's, so I figure it is far more likely that they equated 32 bit OS with 32 bit CPU.
*Yes, even including everyone who didn't take the poll, trying to get any OS capable of running modern software, much less df itself, on a chip that old is a Sisyphean feat.
32 bit users are going to have to be cut off eventually. Or does everyone really imagine they'll be playing DF 1.0 on a 30-40 year old computer?
It depends on how much management it needs, but if it's enough to impact the schedule it'd be insane to keep ensuring 32 bit compatibility for the next 20 years. Why bother going 64 bit in the first place if there's no plans to ever take advantage of it?
Well, hopefully someone will eventually hack up a 64 bit XP clone for those insistent that it can't be beaten.
And...these companies need to run Dwarf Fortress. Because...?32 bit users are going to have to be cut off eventually. Or does everyone really imagine they'll be playing DF 1.0 on a 30-40 year old computer?
It depends on how much management it needs, but if it's enough to impact the schedule it'd be insane to keep ensuring 32 bit compatibility for the next 20 years. Why bother going 64 bit in the first place if there's no plans to ever take advantage of it?
Well, hopefully someone will eventually hack up a 64 bit XP clone for those insistent that it can't be beaten.
32-bit compatibility isn't going anywhere for the vast majority of things. There are tons of businesses with legacy DOS or win16 applications which can't run on 64-bit Windows which will keep it going for far longer than anyone would like.
On XP, There is a 64-bit version of Windows XP. "Windows XP Professional x64 Edition". (not to be confused with Windows XP for 64-bit Machines). x86_64 has some disinct advantages over 32-bit x86_32 because of the increased number of general availability registers that make programs faster.
However, in general (aka !x86), larger memory sizes cause slower performance; this is why you things like ARM THUMB mode for 16-bit code, or Thumb2 which allows mixing of 32-bit and 16-bit.
That being said, Windows XP is over a decade old. It's already put out to pasture. At some point, people either need to upgrade, or migrate.
And...these companies need to run Dwarf Fortress. Because...?
#ifdef WIN32
//NOTE: TO FIX SDL LINKER ERROR THAT CAME UP WITH VISUAL STUDIO 2015
extern "C" { FILE __iob_func[3] = { *stdin,*stdout,*stderr }; }
#endif
#ifdef WIN32
FILE _iob[] = {*stdin, *stdout, *stderr};
extern "C" FILE * __cdecl __iob_func(void)
{
return _iob;
}
#endif
I just did a bit of tracing through this crash-on-exit, and I've narrowed it down to the destructor for one of the globals - it appears to be calling a function through a pointer (where said pointer points into the data segment, causing the crash) and then closing 3 file handles, which are almost definitely STDIN, STDOUT, and STDERR.
enabler.cpp contains the following new code, which I can't help but suspect may be related to the crash:Code: [Select]#ifdef WIN32
//NOTE: TO FIX SDL LINKER ERROR THAT CAME UP WITH VISUAL STUDIO 2015
extern "C" { FILE __iob_func[3] = { *stdin,*stdout,*stderr }; }
#endif
[edit] Just did some more research, and I can 100% confirm that this is the cause of the crash - __iob_func is supposed to be a function which returns the array, not the array itself.
Ha ha, yeah, I just used the first thing I found which made it compile and not obviously crash (I still have no visible crash symptoms). I can switch it over with the next set of linker tests as I try to sort out this memory problem. I could try rebuilding SDL instead, but I'll probably find a way to screw that up.
[edit] Just did some more research, and I can 100% confirm that this is the cause of the crash - __iob_func is supposed to be a function which returns the array, not the array itself.
Ha ha, yeah, I just used the first thing I found which made it compile and not obviously crash (I still have no visible crash symptoms). I can switch it over with the next set of linker tests as I try to sort out this memory problem. I could try rebuilding SDL instead, but I'll probably find a way to screw that up.
On Windows 8.1, I saw errors for msvcp140.dll before downloading it, then vcruntime140.dll, and now api-ms-win-crt-runtime-l1-1-0.dll, so I'd guess they'll all need to be included unless we're expected to install something.
Also, on the topic of the runtime, here's what will probably fix it permamently: Go to "C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x86", copy and paste everything, and throw it into the DF folder. I can't test it easily, but that's all the files for the VC15 runtime. I'll post a zip in a moment.Yes, that set of libraries allows me to run DF. I'm not seeing an error message on exit, but it does return exit code 5.
EDIT: For anyone who wants to test or has runtime errors, grab http://dffd.bay12games.com/file.php?id=12184, and extract that zip into the same folder that you have DF 0.43.04 in.
EDIT 2: Here's the license from Microsoft on redistributing the DLLs in the runtime: http://go.microsoft.com/fwlink/?LinkId=524842
I am getting the error : The program can't start because you not have api-ms-win-crt-runtime-l1-1-0.dll in your computer.
Here are the test zips for SDL Windows:
http://bay12games.com/dwarves/redist/df_sdl_32_wintest.zip
http://bay12games.com/dwarves/redist/df_sdl_64_wintest.zip
If you use the 64 bit one, it would probably be best to stay away from the bug tracker and just post strange problems in here.
Here are the test zips for SDL Windows:
http://bay12games.com/dwarves/redist/df_sdl_32_wintest.zip
http://bay12games.com/dwarves/redist/df_sdl_64_wintest.zip
If you use the 64 bit one, it would probably be best to stay away from the bug tracker and just post strange problems in here.
Playing for a while on the 64 bits version, no crash. And the fps is the same in either version. (42 with 150 dwarves and about the same number of animals)
I'm gonna try running worldgen with identical seeds on 32 bit and 64 bit to see if there's any improvement...
64 bit has nothing to do with speeding up the game or multithreading. The fear was that using 64 bit would actually slow down the game. Which thankfully doesn't seem to be the case.Playing for a while on the 64 bits version, no crash. And the fps is the same in either version. (42 with 150 dwarves and about the same number of animals)
That was what I was afraid of; That, currently, there is no FPS/speed difference between the 32 and 64-bit versions. But then, it is still in development. Hopefully, the 64-bit branch will eventually make use of multithreading and multiple cores.I'm gonna try running worldgen with identical seeds on 32 bit and 64 bit to see if there's any improvement...
Please post your findings as they should be useful to the rest of us, either way.
Implementing 64bit isn't nearly as much work as adding multithreading. It would require a lot of the features to be rewritten, like pathfinding, though I guess the performance improvement would be quite big, because pathfinding for each creature can be split on multiple cores shortening the calculation time for each frame.
Yeah, I don't know that we'll ever have the different versions generating the same world. Compiler optimizations have shifted around the order of calls before in a way that I can't easily control.
edit from Linux land: "sorry, unimplemented: 64-bit mode not compiled in". Well, that was polite! So I guess I have to rebuild GCC? If I built it before, that was many many years ago. Last time, I appear to have simply typed
"sudo apt-get install build-essential libsdl1.2-dev libsdl-image1.2-dev libgtk2.0-dev scons"
on a terminal on my Ubuntu computer and it did everything, but I don't recall if there was more to do. I'm not sure if I should do something differently now.
sudo dpkg --add-architecture amd64
sudo apt-get install build-essential:amd64 libsdl1.2-dev:amd64 libsdl-image1.2-dev:amd64 libgtk2.0-dev:amd64 scons
http://bay12games.com/dwarves/redist/msvcp140.dll
http://bay12games.com/dwarves/redist/vcruntime140.dll
For the SDL version on the website, are those two files sufficient (put them in the folder with the exe), or does it give an additional DLL error? I'd like to find the smallest set I can include without forcing anybody to run an installer. I'll stay away from the /MT option if possible to keep DFHack running.
I have no idea what's going on with the exit crash... was that only happening on XP/Win7 in the SDL version?
Code: [Select]sudo dpkg --add-architecture amd64
Code: [Select]sudo dpkg --add-architecture amd64
"dpkg: unknown option --add-architecture"
Saw various posts online tangentially related, but not really clear what to do from here.
Brought to you from the ancient past:
------------
Linux:
dpkg --license: 1.14.20ubuntu1 (i386)
lsb_release -a: Ubuntu 8.10, codename intrepid
Mac:
sw_vers -productVersion: 10.5.6
system_profiler SPHardwareDataType:
Model Name: Mac mini
Model Identifier: Macmini2,1
Processor Name: Intel Core 2 Duo
Processor Speed: 1.83 GHz
Number Of Processors: 1
Total Number Of Cores: 2
L2 Cache: 2 MB
Memory: 1 GB
Bus Speed: 667 MHz
Boot ROM Version: MM21.009A.B00
SMC Version: 1.19f2
------------
Is there hope?
Tried to benchmark the 32 bit test versus the 64 bit test in world generation, on pre-history generation the 64 bit version was much faster with identical results, but even though the seeds were identical, their histories differed by a lot and I ended the test there, there though the 32 bit version didn't seem as left behind as earlier, but since the results differed I would take that with a few grains of salt.Do the 32-bit and 64-bit versions, within themselves, consistently generate the same world with the same seeds? The fact that 32-bit and 64-bit generated different worlds would be meaningless if they themselves weren't able to generate the same world twice.
Yeah, I don't know that we'll ever have the different versions generating the same world. Compiler optimizations have shifted around the order of calls before in a way that I can't easily control.Optimization should never affect the actual behavior of the code - they may reorder individual instructions in order to minimize the impact of memory/cache latency, but the actual operations should always be the same. If 32-bit and 64-bit code behave differently, then it's due to a bug in the code itself (possibly from data types being different sizes, though that isn't a problem on Windows like it is on Linux/Mac).
Ubuntu 10 or 11 ought work just fine, and they're both available in 64-bit (which is generally a prerequisite for x86/x64 multiarch support - building 32-bit binaries on a 64-bit system is easy, but building 64-bit binaries on a 32-bit system is a lot more work).
Yeah, I don't know that we'll ever have the different versions generating the same world. Compiler optimizations have shifted around the order of calls before in a way that I can't easily control.Optimization should never affect the actual behavior of the code - they may reorder individual instructions in order to minimize the impact of memory/cache latency, but the actual operations should always be the same. If 32-bit and 64-bit code behave differently, then it's due to a bug in the code itself (possibly from data types being different sizes, though that isn't a problem on Windows like it is on Linux/Mac).
Anyway, if you do end up having to rebuild compiler(s), my suggestion is to go with a newer GCC version (since GCC 4.5 is pretty unsupported) and the same version on both OSes that use it. Although if you can make the existing ones work, that's probably fine too.
64 bit has nothing to do with speeding up the game or multithreading.
The fear was that using 64 bit would actually slow down the game. Which thankfully doesn't seem to be the case.
...It would require a lot of the features to be rewritten, like pathfinding...
A 64-bit app has the potential to be significantly faster than a 32-bit counterpart because it allows programming tricks to do things faster. This includes reading and writing 64-bits of data in a single instructionWell, yes, but pointers (i.e. memory addresses) are 64 bits in a 64-bit program, so the speed of working with pointers shouldn't change. Other optimizations (e.g. working with two 32-bit integers at the same time) aren't nearly as common.
and letting different threads manipulate a shared variable at the same time. And, yes, a 64-bit app has the potential to take better advantage of multithreading and multiple cores than a 32-bit app.That's not true at all. There's no difference between what 32-bit and 64-bit programs can do with threads, or CPU cores.
The development of a 64-bit branch of any software project brings an expectation that it will be superior to the 32-bit version in some way. It should be more secure, more stable (i.e., less crashes due to running out of memory), run faster, or perform better in some way. Otherwise, what's the point? The move to 64-bits (not to mention maintaining separate 32-bit and 64-bit versions) is extra work.Well, the main motivation here was to stop crashes from DF hitting the memory limit, which have gradually become more common with large worlds in newer versions.
In the case of games, especially, a move to 64-bits is almost always done for either better performance or access to more than 4 GB of memory. Usually both.The performance difference is pretty small (as a couple people have pointed out already).
Just giving pathfinding a separate thread, alone, should see a huge boost in performance. It's been more-or-less proven that pathfinding in DF is the single biggest performance hit.It's not that simple. I don't know how much would have to be rewritten, but what people don't always realize is that pathfinding needs to be in sync with the rest of the events happening in-game, so it's unlikely that a single pathfinding thread and another "other processing" thread would both be running at maximum speed. Sure, a pathfinding thread could compute the paths of all dwarves in the fortress for the next 5 years while the game is paused or not much is going on, but if a dwarf's job changes or a map change blocks some of those paths, those paths will need to be recalculated. (There's also a lot of inter-thread communication that would need to be added, which doesn't exist at all currently and is tricky to get right.)...It would require a lot of the features to be rewritten, like pathfinding...
Pathfinding would have be modified, sure. But I seriously doubt it would have to be completely rewritten merely to migrate it to a separate thread.
14.04 is a LTS release so it'll be easier to keep going, the newest one is 16.04 (they're literally the year+april or october for ubuntu, oct 2015 was 15.10, etc) and you should be able to update the relevant compiler packages for a while.Quote from: QuietustUbuntu 10 or 11 ought work just fine, and they're both available in 64-bit (which is generally a prerequisite for x86/x64 multiarch support - building 32-bit binaries on a 64-bit system is easy, but building 64-bit binaries on a 32-bit system is a lot more work).
I don't currently know how to decide between 10 all the way up to 15. Would using 14.04/15.10 cut anybody out?
snipWell this is Toady we're talking about and trying to get him to multithreading won't happen just by telling him that its so much better, he already knows that he just needs to learn how to do it. The other matter is that it might take too much time just to get multithreading to work, hes pretty much said that he wouldn't want to stop making the game just to spend 2 years rewriting it so its multithreaded. Did hear that in the suggestion that just moving to 64 bit could end up with pathfinding being 5 times faster, though that might have been before running and jumping, its also early in so there might be more gains to come.
Did hear that in the suggestion that just moving to 64 bit could end up with pathfinding being 5 times faster, though that might have been before running and jumping, its also early in so there might be more gains to come.That's not true at all (see above). Where'd you hear that?
I just generated the same exact world twice in a row with the 64-bit Windows build, and history turned out differently each time - I used the seeds ABCDEFGHIJKLMNOPQRST + UVWXYZabcdefghijklmn + opqrstuvwxyz01234567 + 89ABCDEFGHIJKLMNOPQR on a MEDIUM REGION with a 100 year history, and while both worlds had the same geography and initial historical figures and sites/structures, history itself turned out completely differently. The problem may simply be that history is not deterministic, and the bug tracker (http://www.bay12games.com/dwarves/mantisbt/view.php?id=6934) confirms that this has been a problem since at least version 0.40.
Did hear that in the suggestion that just moving to 64 bit could end up with pathfinding being 5 times faster, though that might have been before running and jumping, its also early in so there might be more gains to come.That's not true at all (see above). Where'd you hear that?
Edit: "above" being the previous few pages, I guess.
__attribute__ ((target ("sse4.2")))
int foo(){
// foo version for SSE4.2
return 1;
}
__attribute__ ((target ("sse2")))
int foo(){
// foo version for SSE2
return 1;
}
int main() {
return foo();
}
__attribute__((target_clones("avx2","avx","sse4.2","sse2","default")))
int foo(){
return 1;
}
int main() {
return foo();
}
I remember some nightmare years ago that seemed to come down to some issue with what MSVC 6 was doing vs what I was getting elsewhere, but it has been long enough that I don't recall any details. Maybe that came down to a type issue too. In either case, I doubt I'll be able to clean up the code to the point where we can get reproducible worlds between OSs/bits.I remember that too, which was one of the reasons I reported it (wasn't it about the mac version though IIRC?
I just generated the same exact world twice in a row with the 64-bit Windows build, and history turned out differently each time - I used the seeds ABCDEFGHIJKLMNOPQRST + UVWXYZabcdefghijklmn + opqrstuvwxyz01234567 + 89ABCDEFGHIJKLMNOPQR on a MEDIUM REGION with a 100 year history, and while both worlds had the same geography and initial historical figures and sites/structures, history itself turned out completely differently. The problem may simply be that history is not deterministic, and the bug tracker (http://www.bay12games.com/dwarves/mantisbt/view.php?id=6934) confirms that this has been a problem since at least version 0.40.Yep tested and history do not seem to be deterministic.
Did you have rain shadows on? :VI did, now I do not, history is not deterministic either way on 64 bit, will soon know on 32 bit as that has been slower in compliting it's assigned tasks, will also try to remove periodic erodation of cliffs though I doubt that would be the issue.
It was in the suggestion for voting that mentioned that up it could improve pathfinding to be up to 5 times faster just from DF using the gains in performance from being 64 bit, though we're unlikely to see such gains or sometime soon.Did hear that in the suggestion that just moving to 64 bit could end up with pathfinding being 5 times faster, though that might have been before running and jumping, its also early in so there might be more gains to come.That's not true at all (see above). Where'd you hear that?
Edit: "above" being the previous few pages, I guess.
I'm still wanting to know if you eliminated orographic precipitation as a cause. D:Why should that have anything to do with deterministic world generation?
Just because DF can use 8 GB of memory (for example) for paths if it wants doesn't mean everyone suddenly has 8 GB of memory to throw at DF. If DF does start requiring huge amounts of memory on a normal basis, it will start swapping and become really slow for a lot of players. The main advantage of a 64-bit build is that people who do have large amounts of memory can play really large worlds (or do other memory-intensive things) without DF crashing because it's incapable of using that much memory.Did hear that in the suggestion that just moving to 64 bit could end up with pathfinding being 5 times faster, though that might have been before running and jumping, its also early in so there might be more gains to come.That's not true at all (see above). Where'd you hear that?
Edit: "above" being the previous few pages, I guess.
With 64-bit, memory ceases to be an issue, so paths can be cached to hell and back. It won't come immediately with the upgrade, but it is something to keep in mind.
I'm still wanting to know if you eliminated orographic precipitation as a cause. D:Why should that have anything to do with deterministic world generation?
lsb_release -a: Ubuntu 8.10, codename intrepid
I don't currently know how to decide between 10 all the way up to 15. Would using 14.04/15.10 cut anybody out?
Using a newer GCC might break compatibility for some people, but that should be relatively easy to fix by distributing the newer libstdc++ that comes with it. (
well, I would use ubuntu 16.04 LTS x64 for compiling. If older versions of linux are required, then I would use docker.
Also, it is definitely a good idea to produce several versions of binaries with different cpu instructions support (vanilla, SSE2, AVX, AVX2 - the only difference for you is just a compiler flag), because it does not take any (!) additional time, but may yield tens of percents of execution speed. This is valid for both Windows, Linux and OSX
Getting zlib1g-dev:i386 removed gcc from my computer, apparently...
edit: so I installed it again... and now it looks like 32 bit doesn't have the error message, but it's crapping out the same way 64 bit does. I'll see if I can get a smaller file built.
(gcc is 4.8.4)
g++ -o src/libgraphics.so -Wl,--as-needed -Wl,-rpath=\$ORIGIN -m32 -pthread -shared src/g_src/enabler.os src/g_src/basics.os src/g_src/command_line.os src/g_src/graphics.os src/g_src/init.os src/g_src/interface.os src/g_src/win32_compat.os src/g_src/music_and_sound_openal.os src/g_src/random.os src/g_src/textlines.os src/g_src/keybindings.os src/g_src/ViewBase.os src/g_src/textures.os src/g_src/files.os src/g_src/enabler_input.os src/g_src/GL/glew.os src/g_src/KeybindingScreen.os src/g_src/resize++.os src/g_src/renderer_offscreen.os src/g_src/ttf_manager.os src/g_src/find_files_posix.os -Llibs -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lglib-2.0 -lfreetype -lSDL -lSDL_image -lGLU -lz -lSDL_ttf
/usr/bin/ld: cannot find -lgtk-x11-2.0
/usr/bin/ld: cannot find -lgdk-x11-2.0
/usr/bin/ld: cannot find -latk-1.0
/usr/bin/ld: cannot find -lgio-2.0
/usr/bin/ld: cannot find -lpangoft2-1.0
/usr/bin/ld: cannot find -lpangocairo-1.0
/usr/bin/ld: cannot find -lgdk_pixbuf-2.0
/usr/bin/ld: cannot find -lcairo
/usr/bin/ld: cannot find -lpango-1.0
/usr/bin/ld: cannot find -lfontconfig
/usr/bin/ld: cannot find -lgobject-2.0
/usr/bin/ld: cannot find -lglib-2.0
/usr/bin/ld: cannot find -lfreetype
/usr/bin/ld: cannot find -lSDL
/usr/bin/ld: cannot find -lSDL_image
/usr/bin/ld: cannot find -lGLU
/usr/bin/ld: cannot find -lSDL_ttf
collect2: error: ld returned 1 exit status
scons: *** [src/libgraphics.so] Error 1
scons: building terminated because of errors.
Do I need more packages? I have the ones from before (libsdl1.2-dev etc.). Or is it something else?
Do I need more packages? I have the ones from before (libsdl1.2-dev etc.). Or is it something else?
libsdl1.2-dev:i386 : Depends : libcaca-dev:i386 but it is not going to be installed
Unable to correct problems, you have held broken packages.
wget https://releases.hashicorp.com/vagrant/1.8.4/vagrant_1.8.4_x86_64.deb
dpkg -i vagrant_1.8.4_x86_64.deb
apt-get install virtualbox
mkdir df_32 && cd df_32
vagrant init ubuntu/trusty32
vagrant up
vagrant is an old day, use docker for setting up 32bit environment and compiling
Does just installing libsdl-1.2:i386 work? It may be that the different headers are conflicting but the libraries themselves aren't (but I'm really not an expert on this).
I've done a lot of world generation using the 64 bit version and got a crash yesterday (probably not specifically related to 64 bit, but just the same as occasionally happened earlier as well). I've got the event report info and a crash dump. Are these of interest? If so, I can upload the dump and provide a link.
I've done a lot of world generation using the 64 bit version and got a crash yesterday (probably not specifically related to 64 bit, but just the same as occasionally happened earlier as well). I've got the event report info and a crash dump. Are these of interest? If so, I can upload the dump and provide a link.
Unfortunately, I don't know how to get anything out of those, and it's compounded by the discussion in the thread about worlds not generately the same way for the same seed. I should probably fix up that situation as soon as I can get to it.
Linux 64 linked, but I get a compression error trying to run it. Wrong zlib maybe? Not sure how to check which one it is using. Or I have some 64 bit problem with the file loading code itself that bothers linux and not windows.Are you saving and loading "long" variables anywhere? If so, that's going to cause major problems on Linux and Mac, because while "long" is 32 bits wide on Windows x86_64, it is 64 bits wide on Linux/OSX x86_64. You might need to go through and change them all to "int".
char file_compressorst::flush_in_buffer()
...
//WRITE IT
f.write((char*)&compsize,sizeof(long));
f.write(out_buffer,c_stream.total_out);
...
Yep, that's definitely going to be a problem.I really strongly recommend using explicit sizing whenever possible. 64bit processors have been around long enough, and with core speed and die limits being what they are, the move to 128bit is not too far in the future. Taking the time to shift to specific sizing now can make the next transition painless. See http://en.cppreference.com/w/cpp/types/integer When you use the type intptr_t or uintptr_t you will always get a size that matches the register size of the architecture and that will have the highest speed. There is a small speed loss on some operations on 64bit architecture when working with a 32bit integer, the same is true of 16bit on 32bit architecture. Making sure counter variables are sized to match the registers will keep the speed from being lost.Actually, that's mostly nonsense.
~/df_linux/libs$ ldd Dwarf_Fortress
linux-gate.so.1 => (0xf772a000)
libSDL-1.2.so.0 => /usr/lib/i386-linux-gnu/libSDL-1.2.so.0 (0xf7655000)
libgraphics.so => /home/na/df_linux/libs/./libgraphics.so (0xf7226000)
libstdc++.so.6 => /home/na/df_linux/libs/./libstdc++.so.6 (0xf7148000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf70f3000)
libgcc_s.so.1 => /home/na/df_linux/libs/./libgcc_s.so.1 (0xf70d8000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf6f22000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf6f05000)
libasound.so.2 => /usr/lib/i386-linux-gnu/libasound.so.2 (0xf6dee000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf6de9000)
...
Dynamically loading the OpenAL library failed, disabling sound
(Dwarf_Fortress:1537): Gtk-WARNING **: Error loading theme icon 'dialog-error' for stock: Unable to load image-loading module: /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so: /home/majiin/Downloads/df_linux/libs/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib64/libicuuc.so.57)
Initializing OpenAL failed, no sound will be played
The CXXABI error is caused by different GCC versions (my system is compiled with GCC 5.3.0). But despite those errors game worked fine, and after installing OpenAL both errors are gone.no appreciable speed difference in performance by using a smaller integer size than the CPU's bitnessSure it is only a few clock cycles. A few clock cycles times 200 billion operations is very noticeable. I always advocate learning and applying best practices and making them habit. Note that I suggested it for counter variables that are likely to be short lived registers instead of stored in RAM, which is where the greatest speed benefit is found.
As for "the move to 128bit is not too far in the future"Time will tell. I have been through transitions all the way from 8bit processors. The 8086 was a huge change in computers not only in instruction set but 16bit. It only took a decade (8086@1978 to 80386@1986) to move to 32bit. Sure memory capability was the strongest driving factor in those increases for data width. On current machines at 64bits the memory capacity is not likely to be exceeded for a long time, but as you noted we already find 64 bits of computational capacity to be limiting. I know what it is like to play with calculations on 8192 bit numbers, I wrote those for myself 20 years ago. There are many real world applications that will require 1024bit processors long before we need more addressable RAM than a 64bit number. It is very short-sighted to think that only the need for memory will drive computational power.
Use the fixed-size types (like int32_t) for pretty much everything.Thanks for the backup. Toady One stated that he has been employing specifically sized data elements for a long time and I might say that is in part due to my advocacy of doing so many years ago when the SDL port was done. If the portions of code that were taken over during that port are representative of Toady One's patterns prior to the port, then he used long and int randomly and the only size specific he used was char.
For Mac, I'm not sure where to start. There doesn't seem to be a reference to the number of bits in the script (linux had various -m32 and pentium arch stuff in place), just a minimum architecture version. Do I just add a -m64 and watch it break, or is that not even a valid option here? Also, gcc --version gives
i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1
from 2005. Not sure what to do with that. Too old for hope?
i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1
Well, you're definitely not using that in 0.43.03. Try gcc-4.5?
Are there more libraries I should include/not include? I don't know what the best set is for 64 bit Linux.I think the standard libraries are ok, no need to change what was working for 32bit build for such a long time. There are so many Linux distros out there, even if I can safely remove df_linux/libs/libstdc++.so.6 and libgcc_s.so.1 there is no guarantee it will work for others. Maybe users of more popular distros like Debian or Ubuntu should voice their opinion.
It would be good advice, if there was actually a multiple clock cycle difference in ops by register width. But there is not. Most integer ops are single cycle these days, regardless of operand size.Quote from: Thief^no appreciable speed difference in performance by using a smaller integer size than the CPU's bitnessSure it is only a few clock cycles. A few clock cycles times 200 billion operations is very noticeable. I always advocate learning and applying best practices and making them habit. Note that I suggested it for counter variables that are likely to be short lived registers instead of stored in RAM, which is where the greatest speed benefit is found.
Target: i686-apple-darwin9
/Users/tarnadams/gcc/gcc-4.5.1/libstdc++-v3/libsupc++/cxxabi.h
Removing that libstdc++ causes DF to fail to start, which means you're using something newer than GCC 4.2 (which is my system's default). (Basically, you need a libstdc++ that corresponds to the GCC version used to compile DF, or a newer libstdc++ - if you were using GCC 4.0, there would've been no need to distribute libstdc++ in the first place.)So there might be additional hope.
I think the standard libraries are ok, no need to change what was working for 32bit build for such a long time. There are so many Linux distros out there, even if I can safely remove df_linux/libs/libstdc++.so.6 and libgcc_s.so.1 there is no guarantee it will work for others. Maybe users of more popular distros like Debian or Ubuntu should voice their opinion.This is actually incorrect, having new, compatibility breaking versions of libraries under the same name as previous versions is extremely bad form in Linux (which does result in cluttered managers with lots of packages under similar names). Symlink libblargh.so.1 will always link to a library under version 1, libblargh.so.2 will always link to a library under the new, compatibility breaking version 2.
(Dwarf_Fortress:23514): Gtk-WARNING **: Unable to locate theme engine in module_path: "adwaita",
(Dwarf_Fortress:23514): Gtk-WARNING **: Unable to locate theme engine in module_path: "adwaita",
Didn't hurt anything though, just the message. I'll test more later, gonna rest a bit.
Target: i686-apple-darwin9
Means it doesn't have 64bit support. So you'll need to install something newer (if it turns out you're indeed using this gcc).
Right now Toady is on Mac OS 10.5 Leopard. I think 10.6 Snow Leopard is the first version of Mac OS X with full 64-bit support. (Snow Leopard has a 64-bit kernel.) It's also the newest version I would recommend running on a computer with less than 4 GB of RAM (i.e. Toady's Mac mini). Snow Leopard is the ultimate version for older machines.
And as Miuramir indicated, running an older version of OS X is needed in order to support players with older versions of OS X.
Worked fine here on Arch, though I got something which I think was a Kwin error.That's just GTK crying about the Adwaita theme missing. It's supposed to be a default theme though, so I wonder how you did that.Code: [Select](Dwarf_Fortress:23514): Gtk-WARNING **: Unable to locate theme engine in module_path: "adwaita",
Didn't hurt anything though, just the message. I'll test more later, gonna rest a bit.
(Dwarf_Fortress:23514): Gtk-WARNING **: Unable to locate theme engine in module_path: "adwaita",
It's worth noting that Toady would have to pay for 10.6. A quick search for "macmini2,1" turns up two models, both with 64-bit CPUs and only officially capable of running up to OS X 10.7, so assuming that's accurate, I don't see much need for Toady to upgrade if his current system is capable.
It's worth noting that Toady would have to pay for 10.6. A quick search for "macmini2,1" turns up two models, both with 64-bit CPUs and only officially capable of running up to OS X 10.7, so assuming that's accurate, I don't see much need for Toady to upgrade if his current system is capable.
That's just GTK crying about the Adwaita theme missing. It's supposed to be a default theme though, so I wonder how you did that.It's a weird old arch install that I had to rebuild due to the transfer from KDE workspace to Plasma Next, so it's working but there's stuff like that which just isn't in there. A lot of the paths are mid-transition too, I think nvidia-settings throws up similar errors actually. Nothing serious.
The question is whether the compiler can compile 64-bit versions (we haven't heard back).It's worth noting that Toady would have to pay for 10.6. A quick search for "macmini2,1" turns up two models, both with 64-bit CPUs and only officially capable of running up to OS X 10.7, so assuming that's accurate, I don't see much need for Toady to upgrade if his current system is capable.
I'm sorry, I misunderstood and thought it was only compiling 32-bit versions. Mac OS 10.5 Leopard is fine if it works.
True, it's not bad, but I don't think Toady wants to wait for a DVD to show up (and who knows where you could get one in person these days). It is an option, though, if 10.5 doesn't work out for some reason.It's worth noting that Toady would have to pay for 10.6. A quick search for "macmini2,1" turns up two models, both with 64-bit CPUs and only officially capable of running up to OS X 10.7, so assuming that's accurate, I don't see much need for Toady to upgrade if his current system is capable.
Just FYI, the 10.6 upgrade is $20. Only available on DVD.
I noticed when I attempt to launch the 64bit Linux test build I am still prompted to install 32-bit libraries (libSDL_image-1.2.so.0, for instance, is seen as missing).
32 bit started: 11:21:30, hit stop 11:24:30, finished 11:24:45 on year 184.
32 bit pops:
>56349 Dwarves
>30427 Humans
>48514 Elves
>11572 Goblins
>3913 Kobolds
>Total: 150775
64 bit started: 11:27:30, hit stop 11:30:30, finished 11:30:36 on year 186.
64 bit pops:
>59593 Dwarves
>33106 Humans
>42689 Elves
>12330 Goblins
>10884 Kobolds
>Total: 158602
Okay, that's probably where the build in ~/gcc/gcc-4.5.1 installed to. What does "/usr/local/bin/g++ --version" give you?
Linux 64 linked, but I get a compression error trying to run it. Wrong zlib maybe? Not sure how to check which one it is using. Or I have some 64 bit problem with the file loading code itself that bothers linux and not windows.Are you saving and loading "long" variables anywhere? If so, that's going to cause major problems on Linux and Mac, because while "long" is 32 bits wide on Windows x86_64, it is 64 bits wide on Linux/OSX x86_64. You might need to go through and change them all to "int".
It would be good advice, if there was actually a multiple clock cycle difference in ops by register width. But there is not. Most integer ops are single cycle these days, regardless of operand size.I just checked the latest version at http://www.agner.org/optimize/instruction_tables.pdf and am happy to see that only some old AMD models have that backwards speed hit, and then only on MOV. Of course that makes me feel really old. It is nice to be able to intentionally forget things because the knowledge is obsolete. Thanks.
I was just surprised that 64bit Linux DF complains about missing OpenAL while 32bit DF don't (OpenAL 32/64 was not installed at the time of testing)
┌[txtsd@dungeon-of-data]─[~/Downloads/df_linux] [16-06-28 16:28:29]
└─▶ ldd libs/Dwarf_Fortress
linux-vdso.so.1 (0x00007ffe47bb6000)
libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0x00007fd5881a1000)
libgraphics.so => /home/txtsd/Downloads/df_linux/libs/libgraphics.so (0x00007fd587b64000)
libstdc++.so.6 => /home/txtsd/Downloads/df_linux/libs/libstdc++.so.6 (0x00007fd587860000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007fd58755c000)
libgcc_s.so.1 => /home/txtsd/Downloads/df_linux/libs/libgcc_s.so.1 (0x00007fd587346000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fd586fa5000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fd586da1000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fd586b84000)
libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0x00007fd586542000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007fd5862f0000)
libSDL_image-1.2.so.0 => /usr/lib/libSDL_image-1.2.so.0 (0x00007fd5860d3000)
libGLU.so.1 => /usr/lib/libGLU.so.1 (0x00007fd585e53000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007fd585c3d000)
libSDL_ttf-2.0.so.0 => /usr/lib/libSDL_ttf-2.0.so.0 (0x00007fd585a36000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd58843a000)
libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x00007fd585780000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007fd58557c000)
libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x00007fd58536f000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00007fd58502d000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x00007fd584e27000)
libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x00007fd584c01000)
libcairo.so.2 => /usr/lib/libcairo.so.2 (0x00007fd5848d3000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x00007fd5846ad000)
libgio-2.0.so.0 => /usr/lib/libgio-2.0.so.0 (0x00007fd584327000)
libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x00007fd584112000)
libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x00007fd583ec6000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007fd583bb7000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00007fd583973000)
libffi.so.6 => /usr/lib/libffi.so.6 (0x00007fd58376a000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x00007fd5834f9000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007fd58322e000)
libbz2.so.1.0 => /usr/lib/libbz2.so.1.0 (0x00007fd58301e000)
libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007fd582de8000)
libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0x00007fd582b6c000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0x00007fd582962000)
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x00007fd58275f000)
libXi.so.6 => /usr/lib/libXi.so.6 (0x00007fd58254f000)
libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x00007fd582344000)
libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x00007fd582139000)
libXcomposite.so.1 => /usr/lib/libXcomposite.so.1 (0x00007fd581f36000)
libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x00007fd581d33000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x00007fd581b21000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007fd5818f8000)
libpixman-1.so.0 => /usr/lib/libpixman-1.so.0 (0x00007fd581650000)
libEGL.so.1 => /usr/lib/libEGL.so.1 (0x00007fd58141f000)
libxcb-shm.so.0 => /usr/lib/libxcb-shm.so.0 (0x00007fd58121b000)
libxcb-render.so.0 => /usr/lib/libxcb-render.so.0 (0x00007fd58100d000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007fd580e05000)
libresolv.so.2 => /usr/lib/libresolv.so.2 (0x00007fd580bee000)
libthai.so.0 => /usr/lib/libthai.so.0 (0x00007fd5809e5000)
libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007fd580772000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007fd580546000)
libxcb-dri3.so.0 => /usr/lib/libxcb-dri3.so.0 (0x00007fd580343000)
libxcb-present.so.0 => /usr/lib/libxcb-present.so.0 (0x00007fd580140000)
libxcb-randr.so.0 => /usr/lib/libxcb-randr.so.0 (0x00007fd57ff30000)
libxcb-xfixes.so.0 => /usr/lib/libxcb-xfixes.so.0 (0x00007fd57fd28000)
libxcb-shape.so.0 => /usr/lib/libxcb-shape.so.0 (0x00007fd57fb24000)
libxcb-sync.so.1 => /usr/lib/libxcb-sync.so.1 (0x00007fd57f91d000)
libxshmfence.so.1 => /usr/lib/libxshmfence.so.1 (0x00007fd57f71a000)
libglapi.so.0 => /usr/lib/libglapi.so.0 (0x00007fd57f4ec000)
libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0x00007fd57f2ea000)
libxcb-glx.so.0 => /usr/lib/libxcb-glx.so.0 (0x00007fd57f0ce000)
libxcb-dri2.so.0 => /usr/lib/libxcb-dri2.so.0 (0x00007fd57eec9000)
libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0x00007fd57ecc3000)
libdrm.so.2 => /usr/lib/libdrm.so.2 (0x00007fd57eab4000)
libgraphite2.so.3 => /usr/lib/libgraphite2.so.3 (0x00007fd57e888000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00007fd57e684000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007fd57e47e000)
libgbm.so.1 => /usr/lib/libgbm.so.1 (0x00007fd57e270000)
libwayland-client.so.0 => /usr/lib/libwayland-client.so.0 (0x00007fd57e061000)
libwayland-server.so.0 => /usr/lib/libwayland-server.so.0 (0x00007fd57de4f000)
libdatrie.so.1 => /usr/lib/libdatrie.so.1 (0x00007fd57dc47000)
┌[txtsd@dungeon-of-data]─[~/Downloads/df_linux] [16-06-28 16:28:42]
└─▶ ./df
Sound devices available:
OpenAL Soft
Picking OpenAL Soft. If your desired device was missing, make sure you have the appropriate 32-bit libraries installed. If you wanted a different device, configure ~/.openalrc appropriately.
Perfect OpenAL context attributes GET
Loading bindings from data/init/interface.txt
New window size: 640x300
Font size: 8x12
Resizing grid to 80x25
Resizing font to 8x12
Although it still uses 32-bit OpenALThe fact that that message says "32-bit" means absolutely nothing, because that's a custom message Toady added himself.Code: [Select]Picking OpenAL Soft. If your desired device was missing, make sure you have the appropriate 32-bit libraries installed. If you wanted a different device, configure ~/.openalrc appropriately.
Man, you're gonna go crosseyed doing all these OS updates in a row, it's great having them out of the way though.
Although it still uses 32-bit OpenALThe fact that that message says "32-bit" means absolutely nothing, because that's a custom message Toady added himself.Code: [Select]Picking OpenAL Soft. If your desired device was missing, make sure you have the appropriate 32-bit libraries installed. If you wanted a different device, configure ~/.openalrc appropriately.
I was thinking that the later years seemed to keep pace a bit better on 64 bit, but I couldn't tell if it was just my imagination or not.I'm not alone then. In my tests the latter years in world gen do not seem to be as laggy as it is on 32 bits.
Cleaned up my mistakes in the Mac script... now we appear to be compiling up to the end for 10.5, and have arrived at the expected fmodex/SDL/SDL_image missing x86_64 architecture part. I don't remember why we didn't go with OpenAL originally on Mac -- is there some issue there? I don't know if we'll be able to update fmodex now. I can try to sort the SDL myself.I have OpenAL in /System/Library/Frameworks/OpenAL.framework/. Is it there on 10.5?
edit: SDL seems to be resolved, so we're just down to sound and actually seeing if it runs.
Oh wow I can move around a fortress in adventure mode without waiting 5-10 seconds to move again, this seems to be a massive improvement.I was thinking that the later years seemed to keep pace a bit better on 64 bit, but I couldn't tell if it was just my imagination or not.I'm not alone then. In my tests the latter years in world gen do not seem to be as laggy as it is on 32 bits.
I have OpenAL in /System/Library/Frameworks/OpenAL.framework/. Is it there on 10.5?
edit: should I just cobble it together from the copy on linux or is something else more prudent? the download link I found for it did not work
There shouldn't be much difference between the two, so it's probably either the new compiler or the power of suggestion (or differences between worlds, bug fixes in the newer version, etc.).
How much of that is the 64-bit thing, and how much is the new compiler, though? 32-bit also runs faster.
There shouldn't be much difference between the two, so it's probably either the new compiler or the power of suggestion (or differences between worlds, bug fixes in the newer version, etc.).
Not quite. For one, the simple act of turning on 64-bit is quite possibly allowing the compiler to enable various CPU-specific optimizations it could not safely assume were available on 32-bit. In particular, every single x86_64 CPU ever made supports SSE2. That then permits a whole host of optimizations around vectorizing tight loops, which can cause very significant performance improvements.
I thought this might be relevant to the 64-bit discussion: https://reddit.com/r/sysadmin/comments/4qcayr/ubuntu_developers_discuss_again_about_dropping/
Basically, Ubuntu 16.04 LTS (this year's release, supported until 2021) will be the last Ubuntu to support 32-bit PCs, and 18.04 LTS (released in 2018, supported until 2023) will be the last to support 32-bit apps. By this schedule, the first Ubuntu release with no support for 32-bit apps will be 18.10, at the end of 2018. Anyone who releases any kind of Linux software has to have a 64-bit release ready for that date. People that use 32-bit only apps have until the 18.04 LTS support expires in 2023 to find alternatives, although they may find themselves wanting to upgrade sooner for other software (LTSs are often left with older software in their repositories for stability reasons).
https://github.com/erikd/libsndfile/releases
I've been running a single embark for a few hours, without reloading the game in between, using the 64-bit linux test build on Arch Linux and I've come across a memory leak. DF has been using 2.7GB of memory on a 1x1 embark with around 100 dwarves. After reloading the saved game, I had only 1.4GB memory usage.
I'll upload the save here shortly.
Edit: https://mega.nz/#!gh9ygJZS!UJd4XJVzvKnpAw-pc980aON9N45-CDU3o0ZWhy2sIT0
Got through the Mac 64-bit link, but running df script gives:
dyld: Library not loaded: @rpath/webp.framework/Versions/A/webp
Referenced from: /Users/tarnadams/Desktop/df_osx/libs/SDL_image.framework/Versions/A/SDL_image
Reason: no suitable image found. Did find:
/Users/tarnadams/Desktop/df_osx/libs/SDL_image.framework/Versions/A/Frameworks/webp.framework/Versions/A/webp: unknown required load command 0x80000022
I had copied the new sdl/image/ttf frameworks into the libs folder as I do with the 32 version, but something seems to be broken about that.
There are 64-bit versions here (SDL 1.2 and versions of SDL_image and SDL_ttf that work with SDL 1.2):
https://www.libsdl.org/download-1.2.php
https://www.libsdl.org/projects/SDL_image/release-1.2.html
https://www.libsdl.org/projects/SDL_ttf/release-1.2.html
I grabbed it from the libsdl.org links upthread -- their page says 10.5+, but maybe that wasn't accurate? The dmgs there have webp in them.There are 64-bit versions here (SDL 1.2 and versions of SDL_image and SDL_ttf that work with SDL 1.2):
https://www.libsdl.org/download-1.2.php
https://www.libsdl.org/projects/SDL_image/release-1.2.html
https://www.libsdl.org/projects/SDL_ttf/release-1.2.html
Try this https://www.dropbox.com/s/q6pfiziwkajjpax/SDL_image.framework.zip?dl=0 built it without webp support.
Looks like it worked -- is there something similar with FreeType or is that something I did wrong? I installed SDL_ttf from the same place.
dyld: Library not loaded: @rpath/FreeType.framework/Versions/A/FreeType
Referenced from: /Users/tarnadams/Desktop/df_osx/libs/SDL_ttf.framework/Versions/A/SDL_ttf
Reason: no suitable image found. Did find:
/Users/tarnadams/Desktop/df_osx/libs/SDL_ttf.framework/Versions/A/Frameworks/FreeType.framework/Versions/A/FreeType: unknown required load command 0x80000022
This time I get "Library not loaded: /usr/local/lib/libfreetype.6.dylib" referenced from the new SDL_ttf, Reason: image not found.
We have some new players entering the scene!
dyld: Library not loaded: /usr/local/opt/libpng/lib/libpng16.16.dylib
Referenced from: /Users/tarnadams/Desktop/df_osx/libs/SDL_ttf.framework/Versions/A/Frameworks/freetype.framework/Versions/2.6.3/freetype
Reason: image not found
I have other duties calling -- back in ~6.5 hrs.
64-bit version? Did Toady change his mind about making it?
Speaking of which, I'm getting that on the Mac now with the latest SDL_ttf. It tells me the png is not found, and then after a bit it tells me the application has quit unexpectedly.
I'm also confused on which fmodex dylib it should be using. Is libfmodexL.dylib the 64 bit one? Because it is asking for libfmodex.dylib. Is libfmodexL something unrelated?
I can build SDL_image with built-in png support, not using system libs, but that will take some time.
Hmm... now nothing works at all. This is before that SDL_image link in the previous post. It just doesn't seem to recognize the aliases in the frameworks anymore, and I can't make new ones. Compiling, I get a SDL_ttf/SDL_ttf.h not found with the latest SDL_ttf, but when I move in the old one it compiles fine. The aliases from the dropbox download are not recognized as aliases at all (it treats them like scripts for a terminal), but the ones in the old SDL_ttf are treated as aliases. But when I make new aliases (to directories like Headers), they show as 500K instead of the usual 4K, and from a terminal, I can "cd" into the old directory aliases, but the new ones I make give me "not a directory". I made my new aliases with right-click "Make Alias" -- they work when I click on them, but not in the terminal with cd. I have no idea what's going on.
Sleep now. We'll see what happens tomorrow.
Okay, I think we are back up to where we were before, and here's the requested not-working-for-me file:
http://bay12games.com/dwarves/redist/brokenpngosx64.tar.bz2
Okay, I think we are back up to where we were before, and here's the requested not-working-for-me file:
http://bay12games.com/dwarves/redist/brokenpngosx64.tar.bz2
As expected, it works for me (but you included i386 libstdc++.6.dylib instead of x64, which should be taken from <gcc location>/lib/gcc/x86_64-apple-darwin14.1.0/4.5.4/libstdc++.6.dylib).
I see this build uses my latest SDL_image framework. And it's still showing png not found for you?
Tileset not found
Not found: data/art/curses_640_300.png
Tileset not found
Yeah, running the df script from a terminal, I get the helpful message "libpng error: bad parameters to zlib" before the Tileset window pops up.
I couldn't find that folder for libstdc++... I think my gcc is the one in "/usr/local/bin", and it definitely took the library "/usr/local/lib/libstdc++.6.dylib". I did find "/usr/local/lib/x86_64/libstdc++.6.dylib", if that works.
Yeah, running the df script from a terminal, I get the helpful message "libpng error: bad parameters to zlib" before the Tileset window pops up.
Now there isn't a libpng or Tileset message, but it still tells me the application has quit unexpectedly.
http://www.bay12games.com/dwarves/redist/df_unexpected_osx.tar.bz2
Here's the report:
It looks a bit different:
New report:
Alright, I'm trying 44221. That looks like the end of a sequence from about halfway down the list. Not sure if I should go back further. Compile will be done in ~1.5 hrs.
I wasn't sure if they had changed the headers. Anyway, too late now!
44221 worked for me -- and it ran with sound! Here's the official test release for 64-bit OSX:
http://www.bay12games.com/dwarves/redist/df_64_test_osx.tar.bz2
I have various duties and so forth to catch up on now (including future of the fortress and your PM if I get there, I'll get there!). Then if this is still working by the time I get back, we'll have to decide on a course of action for Linux 32 bits.
Awesome! It's using 6 to 7 threads!0.43.03 uses around 10 for me - most of those are SDL or sound-related. (Probably not a secret threading addition, sorry.)
44221 worked for me -- and it ran with sound! Here's the official test release for 64-bit OSX:
http://www.bay12games.com/dwarves/redist/df_64_test_osx.tar.bz2
I have various duties and so forth to catch up on now (including future of the fortress and your PM if I get there, I'll get there!). Then if this is still working by the time I get back, we'll have to decide on a course of action for Linux 32 bits.
You definitely need just one version of the -dev packages, as those contain architecture independent headers and should therefore be the same for amd64 and i386.
It's not true for everything, but I don't think SDL headers vary across architectures (which is why OS X frameworks work with just one set of headers embedded in them).
Is that in the same fort?What do you mean 'same fort'? As I said I'm playing Adventurer in a massve city. Will quickly try 43.03 and 42.06 as I have both installed with worlds generated at the moment.
There's really no good reason for 64-bit DF to be that much faster. Is the new 32-bit version also faster? It could have something to do with the new compiler, which also happened since 0.43.03.
Burned most of the day trying to fix the worlds with the same seed that produce different results... it's hard to tell when it has been narrowed down.
Turning it off should result in more controllable, less complex rainfall conditions based on rainfall parameters as it adds a random element which can distort or otherwise mess up the climates on a pregenerated map.
I looked at the chroot stuff... and it just said "then you build the kernel as usual". I never did that (installed Ubuntu from an iso), so I don't really know what to do. I'm not sure I'm Linuxy enough to accomplish any of these methods.
And yet again, since I've had to point this out to someone else already: you DID already rule out Orographic Precipitation, right? To quote the wiki:QuoteTurning it off should result in more controllable, less complex rainfall conditions based on rainfall parameters as it adds a random element which can distort or otherwise mess up the climates on a pregenerated map.
The words about kernel in that post because the question was about building the kernel. You just "build df as usual".
I mean the same world. If the worlds aren't the same, a lot of things could be causing different performance.I don't carry over worlds from save to save so that's a hard one to test.
That's what the orographic precipitation is supposed to do, unless something else is going on.
I looked at the chroot stuff... and it just said "then you build the kernel as usual". I never did that (installed Ubuntu from an iso), so I don't really know what to do. I'm not sure I'm Linuxy enough to accomplish any of these methods.This reference might help: https://wiki.ubuntu.com/DebootstrapChroot
Burned most of the day trying to fix the worlds with the same seed that produce different results... it's hard to tell when it has been narrowed down.
Burned most of the day trying to fix the worlds with the same seed that produce different results... it's hard to tell when it has been narrowed down. I turned off trade and it went away, but that doesn't mean trade is responsible -- it could be something in how the goods are produced, or how the resource types are decided, or the populations creating the goods (those all seem not to be the cause, but it only happens 1 out of 4 times once trade is off, so it's difficult to pick up the right problem). And so on. It's hard to nail these down, but hopefully I can find the root cause and sort it out. Presumably there's some difference in initial conditions, some outside factor (like a clock call), or some out-of-bounds situation somewhere, but I haven't found anything obvious yet.
You definitely need just one version of the -dev packages, as those contain architecture independent headers and should therefore be the same for amd64 and i386.
That's just not true.
You definitely need just one version of the -dev packages, as those contain architecture independent headers and should therefore be the same for amd64 and i386.
That's just not true.
Ooops, sorry. I don't know how I got that mixed up. On Debian based distributions the -dev packages do indeed contain more than just headers - they also hold the static libraries, which of course are architecture dependent. But still, if one doesn't statically link, having one version of -dev packages should suffice.
Running a worldgen on Linux under Valgrind (http://valgrind.org/) I got a lot of "Conditional jump or move depends on uninitialised value", so it might be an unitialized memory problem. If you compile on Linux with the flags set to generate debugging info then you can get Valgrind to give you function names, file names and line numbers where it happens. Even if those aren't the cause of the bug you're looking at you should fix them anyways, since they might start causing bugs in the future.
...
test64
start: 10:38:30
stop: 10:54:01
finished: 10:54:34 (year 300)
16:04 total worldgen
64 bit pops:
>60553 Dwarves
>32485 Humans
>51199 Elves
>36119 Goblins
>5738 Kobolds
>Total: 186094
test32
start: 10:56:30
target: 11:12:01 (year 286)
stop: 11:13:24
finish: 11:14:05 (year 300)
18:05 total worldgen
32 bit pops:
>54795 Dwarves
>28097 Humans
>45384 Elves
>27181 Goblins
>8280 Kobolds
>Total: 163737
Did another bitness comparison with 25k pop cap instead of 15k like the first time, went to 300 years instead of running for a set time.Thanks Mat for the !!SCIENCE!! C:
...
Wound up with 23k higher population on the 64 bit world despite finishing nearly 2 minutes earlier than the 32 bit world. The extra two minutes were all from year 286 to 300, which is yet another data point towards the later years being faster on 64 bit.
I looked at the chroot stuff... and it just said "then you build the kernel as usual". I never did that (installed Ubuntu from an iso), so I don't really know what to do. I'm not sure I'm Linuxy enough to accomplish any of these methods.
sudo apt-get install ubuntu-dev-tools
mk-sbuild --arch=i386 trusty # Currently, first time it needs to be executed twice, unfortunately, please comment if you know how to omit this.
mk-sbuild --arch=i386 trusty
# Allowing the same home folder to be used
echo "$HOME /home/$USER none rw,bind 0 0" | sudo tee -a /etc/schroot/sbuild/fstab
schroot -c trusty-i386
After that command you should be in the same home directory, but in a different ubuntu "installation", where you can install a completely different set of packages (well, in that case it will be the same set, but with different arch) and should be able to build the game with the same script you've used before. But notice that it won't have sudo by default, you'll have to manage it with another command, executed from the main system, not inside the chroot (using a different tab or TTY for that may be convenient):sudo schroot -c source:trusty-i386 -u root
$ sudo du -sh /var/lib/schroot/chroots/
670M /var/lib/schroot/chroots/
(trusty-i386)~ $
http://www.bay12games.com/dwarves/redist/df_32test_linux.tar.bz2Seems to work for me on 32-bit Ubuntu Saucy (13.10), at least as well as the previous release did in terms of needed libs (SDL and audio do work).
I already followed the instructions before trusty replaced precise... hopefully that's not a huge issue.Not an issue at all for 9 months, until April 2017: https://wiki.ubuntu.com/Releases
This doesn't run from the 64-bit linux (can't find libSDL-1.2.so.0 and many others -- due to missing i386 versions? not sure). From inside the chroot, it only runs if I switch to TEXT mode, and the audio fails. I'm not sure how much of that has to do with the configuration of the chroot vs other problems, or what I can fix.It works great, including sound, world generation and embark tested on the same 64bit system with 32bit libraries I've used to play DF before. I'm sure it's the missing i386 libraries in your case. As for running in the chroot - yeah, because there's no graphical server (X server) in the chroot
Nah, I just wanted to post what I was seeing in case it was broken. So I guess that's it for 32? I'm messing around with valgrind some more for the day, and I can pull together a giant all-versions official release for tomorrowish to see how painful it is.
Did you try code analysis tool in VS?
Did you try code analysis tool in VS?
There's also various third-party C static code analysis tools, like PC-Lint/FlexeLint (http://www.gimpel.com/html/lintinfo.htm), Splint (http://www.splint.org/) and Clang (http://clang-analyzer.llvm.org/).