Author Topic: Running a 64bit dwarf-fortress through qemu.  (Read 3369 times)

Geeber

  • Newbie
  • *
  • Posts: 22
    • View Profile
Running a 64bit dwarf-fortress through qemu.
« on: April 18, 2019, 04:11:13 pm »
Hi all

Don't know whether people will find this useful.

But I managed to get a 64bit dwarf-fortress to run through qemu's user space emulation software.

Dwarf fortress is an open source video game with no ARM64 port.

This was achieved by installing qemu-user, enabling amd64 archictechture, downloading the prebuilt 64bit linux binaries from the dwarf-fortress website, and installing the required 64 bit libraries.

Some of the 64 bit libraries could not be installed correctly. So for one of them libpulse0 I apt downloaded it and unpacked the .deb file and put the libs in the correct location where the dwarf-fortress looks for them.

For the rest of them I apt downloaded them and wrote a bash script that dpkg force installs them and then runs the dwarf-fortress binary through qemu-x86_64 and after the app closes purges the force installed packages.

Performance is not very good obviously. (creating the world took a few hours because I set it to large )

Loading times are long but once the world is created. The game itself is actually playable. but does hang up freqently depending on what it is loading and the back of the Gemini gets a bit hot as it is constantly running a 100% CPU thread.

It may not be all that viable to run 64bit binaries on the Gemini. but I thought it was more interesting as proof that 64bit or 32bit binaries can actually be run on an ARM64. Which maybe people knew already but what the hey. I thought it was worth trying out.

Its important to note that any applications required mulithreading will fail because ARM CPUs do not support mulithreading. (I know this because I attempted to run valve's steam client in the same way, but qemu fails with a signal 11, segmentation fault, core dumped. When I looked it up people said it was to do with multithreaded applications)

In theory if you actually had an ARM64 CPU that supported multithreading I don't see why it wouldn't be possible to run mulithreaded 64 or 32bit apps through qemu-user.

Also in theory it might be possible to run a 64bit Windows program through running 64bit wine through qemu-x86_64 same way as done above. Bearing in mind that applications requiring multithreading probably wouldn't work.
Of course performance might be so terrible that the application may be rendered pretty much unusable at that point.

I may test this at some point later if I have some time to spare on it.

See the attached screenshot to see it running:
 [ Invalid Attachment ]

Its kind of a lot of work for not that much payoff but I hope some people find this to be an interesting or worthwhile experiment at the very least.

Varti

  • Administrator
  • Hero Member
  • *****
  • Posts: 1279
    • View Profile
Running a 64bit dwarf-fortress through qemu.
« Reply #1 on: April 19, 2019, 05:38:09 am »
Well done, at least it is useful to know that 64bit binaries can be run under Gemian. The next step would be to make a arm64 port of it. From the screenshot it looks like it uses ncurses, so the port might not require a lot of effort.

Varti
Planet Gemini PDA WiFi/LTE with Mediatek x27
SL-C1000 running Arch Linux ARM May2017, K30225 Wi-Fi CF Card, 64GB SDXC card
and many other Zauruses!

Geeber

  • Newbie
  • *
  • Posts: 22
    • View Profile
Running a 64bit dwarf-fortress through qemu.
« Reply #2 on: April 20, 2019, 04:30:52 am »
Thanks.

My apologies. I have made a mistake the game is not actally open source.

The developer stated that he would release the source code if he was unable to maintan it anymore.

However an ARM64 port doesn't seem like it would be impossible but its up to the devs if they want to do it or not.

The game can also be run in a terminal directly by specifying PRINT:TEXT in the init.txt file. Could speed the game up a little maybe.

May give that a shot as well.