Let's play x86 games!

Related (but sort of off topic), I just stumbled onto a reference to the VVVVVV source which was apparently just posted to github recently! I haven’t yet tried to build it, but this should allow us to have a custom Gameshell build of VVVVVV and not rely on box86 anymore. It will probably be faster, or maybe better for battery life as well. I’ll try to build this soon and see if it works…

Here is what I get:
./box86: /lib/arm-linux-gnueabihf/libc.so.6: version GLIBC_2.27' not found (required by ./box86) ./box86: /lib/arm-linux-gnueabihf/libc.so.6: version GLIBC_2.28’ not found (required by ./box86)

Sounds like you don’t have libstdc++ and libgcc. There’s a link to them in @slock’s original post in this thread. Those need to be copied in the same directory as the game files and box86.

I’ll put them again but that is the issue, they are there…

You might need to run this from ssh:
sudo apt-get install libc6

Like I say, I’ve grabbed a bunch of packages so I’m not sure what comes preinstalled on 0.4, or even on 0.5 at this point. I don’t remember installing much before trying this after my 0.5 upgrade, but it’s possible I installed something else that pulled in the library this is complaining about. :frowning:

That was it!
I was thinking that too. Before, on my old install, I had tried so many thing that I must have already installed the package somehow… The issue I have most of the time now in linux is when I see errors like this I never know the actual name of the package to call in sudo apt-get install from what it says in the error. Is there a trick?

Sadly, Linux can be pretty cryptic when it comes to errors. The way I found the package was to do a google search using what I thought was the important part of the error message:
"glibc_2.27 debian"

That led to:


https://packages.debian.org/sid/libc6

So luckily the package name was right there. Sometimes I don’t get so lucky! :wink:

So now, for MathildaCastilla is even more cryptic lol

Using default BOX86_LD_LIBRARY_PATH: ./:lib/
Using default BOX86_PATH: ./:bin/
Counted 20 Env var
Looking for runner
Using emulated libstdc++.so.6
Using native(wrapped) libm.so.6
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) librt.so.1
Using emulated libgcc_s.so.1
Using native(wrapped) libz.so.1
Using native(wrapped) libXxf86vm.so.1
Using native(wrapped) libX11.so.6
Using native(wrapped) libXext.so.6
Using native(wrapped) libxcb.so.1
Using native(wrapped) libXau.so.6
Using native(wrapped) libXdmcp.so.6
Using native(wrapped) libGL.so.1
Using native(wrapped) libopenal.so.1
Using native(wrapped) libssl.so.1
Using native(wrapped) libdl.so.2
Using native(wrapped) libcrypto.so.1
Error: Symbol sendfile not found, cannot apply R_386_JMP_SLOT @0xb6c36170 (0x755c6)
Warning: Weak Symbol _ZGTtnaj not found, cannot apply R_386_JMP_SLOT @0xb6c361f8 (0x757e6)
Warning: Weak Symbol _ZGTtdlPv not found, cannot apply R_386_JMP_SLOT @0xb6c36560 (0x76586)
Error: Symbol SSL_CTX_set_default_passwd_cb_userdata not found, cannot apply R_386_JMP_SLOT @0x82a5130 (0x804dcc6)
Warning, function SSLv3_client_method not found in lib libssl.so.1
Error: Symbol SSLv3_client_method not found, cannot apply R_386_JMP_SLOT @0x82a5150 (0x804dd46)
Error: Symbol UI_OpenSSL not found, cannot apply R_386_JMP_SLOT @0x82a515c (0x804dd76)
Error: Symbol X509_LOOKUP_file not found, cannot apply R_386_JMP_SLOT @0x82a51a4 (0x804de96)
Error: Symbol SSL_read not found, cannot apply R_386_JMP_SLOT @0x82a51c4 (0x804df16)
Error: Symbol X509_verify_cert_error_string not found, cannot apply R_386_JMP_SLOT @0x82a51cc (0x804df36)
Error: Symbol SSL_CTX_set_verify not found, cannot apply R_386_JMP_SLOT @0x82a51d4 (0x804df56)
Error: Symbol SSL_connect not found, cannot apply R_386_JMP_SLOT @0x82a51dc (0x804df76)
Error: Symbol sk_pop_free not found, cannot apply R_386_JMP_SLOT @0x82a51e8 (0x804dfa6)
Error: Symbol RAND_add not found, cannot apply R_386_JMP_SLOT @0x82a51f4 (0x804dfd6)
Error: Symbol X509_EXTENSION_get_critical not found, cannot apply R_386_JMP_SLOT @0x82a51f8 (0x804dfe6)
Error: Symbol SSL_CTX_ctrl not found, cannot apply R_386_JMP_SLOT @0x82a5224 (0x804e096)
Error: Symbol SSL_CTX_use_certificate not found, cannot apply R_386_JMP_SLOT @0x82a5248 (0x804e126)
Error: Symbol SSL_CTX_get_cert_store not found, cannot apply R_386_JMP_SLOT @0x82a5260 (0x804e186)
Error: Symbol X509V3_EXT_print not found, cannot apply R_386_JMP_SLOT @0x82a5264 (0x804e196)
Error: Symbol SSL_peek not found, cannot apply R_386_JMP_SLOT @0x82a527c (0x804e1f6)
Error: Symbol X509_STORE_add_lookup not found, cannot apply R_386_JMP_SLOT @0x82a528c (0x804e236)
Error: Symbol ENGINE_get_next not found, cannot apply R_386_JMP_SLOT @0x82a5290 (0x804e246)
Error: Symbol RAND_status not found, cannot apply R_386_JMP_SLOT @0x82a5294 (0x804e256)
Error: Symbol SSL_CIPHER_get_name not found, cannot apply R_386_JMP_SLOT @0x82a5298 (0x804e266)
Error: Symbol SSL_CTX_set_cipher_list not found, cannot apply R_386_JMP_SLOT @0x82a52a4 (0x804e296)
Error: Symbol PKCS12_free not found, cannot apply R_386_JMP_SLOT @0x82a52bc (0x804e2f6)
Error: Symbol SSL_get_current_cipher not found, cannot apply R_386_JMP_SLOT @0x82a52c0 (0x804e306)
Error: Symbol X509_EXTENSION_get_object not found, cannot apply R_386_JMP_SLOT @0x82a52dc (0x804e376)
Error: Symbol SSL_ctrl not found, cannot apply R_386_JMP_SLOT @0x82a52e4 (0x804e396)
Error: Symbol DES_set_odd_parity not found, cannot apply R_386_JMP_SLOT @0x82a5304 (0x804e416)
Error: Symbol SSLeay not found, cannot apply R_386_JMP_SLOT @0x82a5308 (0x804e426)
Error: Symbol SSL_get_peer_cert_chain not found, cannot apply R_386_JMP_SLOT @0x82a5314 (0x804e456)
Error: Symbol BIO_free not found, cannot apply R_386_JMP_SLOT @0x82a5324 (0x804e496)
Error: Symbol RAND_egd not found, cannot apply R_386_JMP_SLOT @0x82a5334 (0x804e4d6)
Error: Symbol ENGINE_get_first not found, cannot apply R_386_JMP_SLOT @0x82a533c (0x804e4f6)
Error: Symbol SSL_SESSION_free not found, cannot apply R_386_JMP_SLOT @0x82a5368 (0x804e5a6)
Error: Symbol SSL_get_peer_certificate not found, cannot apply R_386_JMP_SLOT @0x82a5378 (0x804e5e6)
Error: Symbol ERR_get_error not found, cannot apply R_386_JMP_SLOT @0x82a53b8 (0x804e6e6)
Error: Symbol SSL_CTX_callback_ctrl not found, cannot apply R_386_JMP_SLOT @0x82a53d4 (0x804e756)
Error: Symbol SSL_free not found, cannot apply R_386_JMP_SLOT @0x82a5400 (0x804e806)
Error: Symbol X509_get_ext_d2i not found, cannot apply R_386_JMP_SLOT @0x82a5408 (0x804e826)
Error: Symbol GENERAL_NAMES_free not found, cannot apply R_386_JMP_SLOT @0x82a541c (0x804e876)
Error: Symbol EVP_PKEY_free not found, cannot apply R_386_JMP_SLOT @0x82a5420 (0x804e886)
Error: Symbol X509_get_serialNumber not found, cannot apply R_386_JMP_SLOT @0x82a5428 (0x804e8a6)
Error: Symbol ENGINE_finish not found, cannot apply R_386_JMP_SLOT @0x82a5450 (0x804e946)
Error: Symbol X509_get_pubkey not found, cannot apply R_386_JMP_SLOT @0x82a5460 (0x804e986)
Error: Symbol BIO_ctrl not found, cannot apply R_386_JMP_SLOT @0x82a5464 (0x804e996)
Error: Symbol ERR_peek_error not found, cannot apply R_386_JMP_SLOT @0x82a549c (0x804ea76)
Error: Symbol ERR_clear_error not found, cannot apply R_386_JMP_SLOT @0x82a54a0 (0x804ea86)
Error: Symbol X509_STORE_set_flags not found, cannot apply R_386_JMP_SLOT @0x82a54bc (0x804eaf6)
Error: Symbol RAND_bytes not found, cannot apply R_386_JMP_SLOT @0x82a54c0 (0x804eb06)
Error: Symbol SSL_CTX_add_client_CA not found, cannot apply R_386_JMP_SLOT @0x82a54c8 (0x804eb26)
Error: Symbol ENGINE_get_id not found, cannot apply R_386_JMP_SLOT @0x82a5500 (0x804ec06)
Error: Symbol SSL_get_error not found, cannot apply R_386_JMP_SLOT @0x82a551c (0x804ec76)
Error: Symbol SSL_get_privatekey not found, cannot apply R_386_JMP_SLOT @0x82a5528 (0x804eca6)
Error: Symbol SSL_new not found, cannot apply R_386_JMP_SLOT @0x82a5530 (0x804ecc6)
Error: Symbol X509_NAME_ENTRY_get_data not found, cannot apply R_386_JMP_SLOT @0x82a553c (0x804ecf6)
Error: Symbol PKCS12_PBE_add not found, cannot apply R_386_JMP_SLOT @0x82a5548 (0x804ed26)
Error: Symbol EVP_PKEY_copy_parameters not found, cannot apply R_386_JMP_SLOT @0x82a5550 (0x804ed46)
Error: Symbol BIO_new not found, cannot apply R_386_JMP_SLOT @0x82a5558 (0x804ed66)
Error: Symbol SSL_CTX_free not found, cannot apply R_386_JMP_SLOT @0x82a5580 (0x804ee06)
Error: Symbol sk_num not found, cannot apply R_386_JMP_SLOT @0x82a5598 (0x804ee66)
Error: Symbol ENGINE_set_default not found, cannot apply R_386_JMP_SLOT @0x82a559c (0x804ee76)
Error: Symbol ASN1_STRING_print not found, cannot apply R_386_JMP_SLOT @0x82a55a4 (0x804ee96)
Error: Symbol SSL_set_connect_state not found, cannot apply R_386_JMP_SLOT @0x82a55b0 (0x804eec6)
Error: Symbol RAND_file_name not found, cannot apply R_386_JMP_SLOT @0x82a55f4 (0x804efd6)
Error: Symbol d2i_PKCS12_fp not found, cannot apply R_386_JMP_SLOT @0x82a5604 (0x804f016)
Error: Symbol SSL_CTX_load_verify_locations not found, cannot apply R_386_JMP_SLOT @0x82a5640 (0x804f106)
Error: Symbol SSL_get1_session not found, cannot apply R_386_JMP_SLOT @0x82a5664 (0x804f196)
Error: Symbol BIO_s_mem not found, cannot apply R_386_JMP_SLOT @0x82a5668 (0x804f1a6)
Error: Symbol SSL_set_fd not found, cannot apply R_386_JMP_SLOT @0x82a566c (0x804f1b6)
Error: Symbol SSL_CTX_use_certificate_file not found, cannot apply R_386_JMP_SLOT @0x82a5680 (0x804f206)
Error: Symbol X509_STORE_CTX_get_current_cert not found, cannot apply R_386_JMP_SLOT @0x82a5698 (0x804f266)
Error: Symbol SSL_get_shutdown not found, cannot apply R_386_JMP_SLOT @0x82a56bc (0x804f2f6)
Error: Symbol X509_load_crl_file not found, cannot apply R_386_JMP_SLOT @0x82a56c0 (0x804f306)
Error: Symbol SSL_shutdown not found, cannot apply R_386_JMP_SLOT @0x82a56d4 (0x804f356)
Error: Symbol ASN1_INTEGER_get not found, cannot apply R_386_JMP_SLOT @0x82a56d8 (0x804f366)
Error: Symbol SSL_get_certificate not found, cannot apply R_386_JMP_SLOT @0x82a5704 (0x804f416)
Error: Symbol RAND_load_file not found, cannot apply R_386_JMP_SLOT @0x82a5730 (0x804f4c6)
Error: Symbol sk_value not found, cannot apply R_386_JMP_SLOT @0x82a5738 (0x804f4e6)
Error: Symbol ASN1_STRING_length not found, cannot apply R_386_JMP_SLOT @0x82a5760 (0x804f586)
Error: Symbol i2t_ASN1_OBJECT not found, cannot apply R_386_JMP_SLOT @0x82a5764 (0x804f596)
Error: Symbol SSL_CTX_use_certificate_chain_file not found, cannot apply R_386_JMP_SLOT @0x82a576c (0x804f5b6)
Error: Symbol SSL_CTX_set_default_passwd_cb not found, cannot apply R_386_JMP_SLOT @0x82a5770 (0x804f5c6)
Error: Symbol SSL_CTX_check_private_key not found, cannot apply R_386_JMP_SLOT @0x82a5784 (0x804f616)
Error: Symbol ENGINE_ctrl_cmd not found, cannot apply R_386_JMP_SLOT @0x82a578c (0x804f636)
Error: Symbol SSL_CTX_new not found, cannot apply R_386_JMP_SLOT @0x82a5790 (0x804f646)
Error: Symbol ENGINE_by_id not found, cannot apply R_386_JMP_SLOT @0x82a579c (0x804f676)
Error: Symbol X509_check_issued not found, cannot apply R_386_JMP_SLOT @0x82a57a8 (0x804f6a6)
Error: Symbol SSL_CTX_use_PrivateKey not found, cannot apply R_386_JMP_SLOT @0x82a57ac (0x804f6b6)

I thought I got MathildaCastilla to work with the version of box86 that was posted above, but I might have been using a newer version. It seems like the author of box86 is making improvements almost daily now, and every time I rebuild and try it more stuff works. I’d post a binary here, but it’s going to be out of date shortly after I post it. :frowning:

Here’s the latest build I have on my Gameshell. It’s just the box86 file, so you’ll need to copy that into wherever it was before.

Note that sometimes things break in the newer builds. I ran a quick check to see if MathildaCastilla works with this one and it does, but I’m not sure if sound is working – seemed silent on mine. It was fast once the game got going though.

I also just posted a native build of VVVVVV for Gameshell on that other thread. I’d recommend using it instead of the box86 version, since it should be faster and more stable.

Its something else, I get the exact same long list of errors…

I get a bunch of errors like that too – it’s just unimplemented things in box86, but the game seems to be playable. You have the assets directory from the game in there, right? The next thing I get in my log after the errors is the loading of the assets:

[stuff before this removed because post was too long]

Error: Symbol SSL_CTX_use_PrivateKey not found, cannot apply R_386_JMP_SLOT @0x82977ac (0x804f6c6)

***************************************
*     YoYo Games Linux Runner V0.1    *
***************************************	 
CommandLine: -game game.unx
ExeName= /home/cpi/apps/Menu/22_Box86/MalditaCastilla/runner
MemoryManager allocated: 5601
RunnerLoadGame: game.unx
RunnerLoadGame() - assets/game.unx
Checking if INIFile assets/options.ini Exists
assets/options.ini file contents: [Linux]
DisplayName="Maldita Castilla"

INI DisplayName=Maldita Castilla
Reading File assets/game.unx
Loaded File assets/game.unx
IFF wad found
Get Resolution
Get Header Information
InitGMLFunctions
HighScore..SavePrePend /home/cpi/.config/maldita_castilla_arcade_cabinet/ 
Game..Math..Graphic..Action..File..Resource..Interaction..3D..Particle..Misc..DS..Sound..DPlay..Physics..Gamepad..GAMEPAD: Initialising Ubuntu support
GAMEPAD: 4 axis values (last) at 0x3bbfb20
GAMEPAD: 4 axis values (last) at 0x3bc0008
GAMEPAD: 4 axis values (last) at 0x3bc0158
GAMEPAD: 4 axis values (last) at 0x3bc0820
Buffers..Networking..Shaders..YoYo..Fini
Code_Load()
VARI_Load()
ID_STRG
Create Window
Display Size(Pixels): 320,240
GameDisplayName=Maldita Castilla
XF86VidModeExtension-Version 2.2
Got Doublebuffered Visual!
glX-Version 1.4
Icon: w=64 h=64
WindowCentre: 0,8
Depth 24
Congrats, you have Direct Rendering!
Set Fullscreen 1
sync = 1
**** GLX Extensions ***

(There’s plenty more after that, but the post here was too long.)

This is a pretty interesting app. I’m already compiling a list of games that I want to test on it. The ideas I have so far are Freedom Planet, OneShot, Just Shapes and Beats, kuso, and Crossniq+. I’ll also check to see if there are Linux ports of Sonic Mania, Indie Pogo, Spark the Electric Jester, and Sonic CD (2012).

Yep, assets folder is there. Used your box86, chmod everything, tried with and without Lima.
No Luck.

Also, I get the same results with every single games you listed. :frowning:

So it sounds like the only difference is you’re running 0.4 and I’m running 0.5. I honestly don’t know what is different between them but I had issues with 0.4 on a lot of things, which is why I reflashed to 0.5.

For the free games, I might set up a warehouse. I’m not sure how OS versioning is going to be handled with that, though. But I could put working setups for 0.5, at least. The warehouse feature isn’t even on 0.4 so I guess as long as it doesn’t break with future OS versions (not something I’d necessarily want to bet on!) it might be ok.

I attempted to run GalaxyTrail Games’ Sonic-inspired indie platformer, Freedom Planet. It takes some time to load, and the gameplay itself is slowed down, but it plays just fine. Controls can be rebound in the menu, though the screen size must be set to “Full” first. You will need either the GOG or Humble Bundle version, as Steam’s DRM doesn’t play well with Box86. Sorry about the awful camera quality, by the way.

1 Like

Ok thanks, I’ll try to find time to flash OS0.5 this weekend.
I’ll report back.

So I just got a game working via box86 that I’ve been wanting to play on a handheld since I first stumbled onto it in 2008! :flushed:

Here’s a video: (not mine, but it shows the gameplay)

Thankfully, it was still available as a Linux 32bit build on http://farbs.org/ (all the way down near the bottom). Unfortunately it was shell script, so I had to install a 32bit Ubuntu under VirtualBox, and then run the script to install it, and archive the files so I could bring it over to Gameshell.

Although it is a little slow at times, it runs pretty well under the current version of box86. Amusingly enough, it’s actually LOWER resolution than the Gameshell, but after running it the first time and exiting, you can hack the config file (at /home/cpi/.ROMCFAIL/ROMCFAIL.ini) to force it to fullscreen by editing the ScreenMode value and changing it from 0 to 1.

Since the game is (still) freely available on farbs.org, I’m assuming it will be ok to repackage it for the Gameshell here.

That zip file includes all the necessary RomCheckFail files, and the latest box86 which I just built a few hours ago.

I’m thinking my next step will be to create a warehouse to host Gaurodan, EFMB, Maldita Castilla, Super Crate Box, Super Crate Box Together, VVVVVV, and RomCheckFail with all the supporting files and box86 binaries so each can run standalone. Since they are all freeware I’m guessing it will be ok to do that, as long as I include a readme file of some sort pointing to the source websites, etc.

1 Like

I created a new warehouse for the 6 freeware games I’ve gotten running under box86.

github.com/madcock/warehouse
capture

capture-2

All of these work on my system under the official 0.5 OS.

It would be helpful if others tested on their Gameshells though, as I may have forgotten to include necessary libraries or something else. I think everything is self contained in the packages I made, but let me know and I can fix something if it’s broken. (I just did fix one thing not shown here – I added spaces to the names of the games!)

There was no way to add credits or links to the original sources inside the warehouse feature, so I just added some README.md files to the github.

There are known issues with the following three games:

  • Maldita Castilla - may not have working sound
  • Super Crate Box - sometimes crashes on start; unfortunately the only way to continue is to either kill the process from ssh, or power down the Gameshell. I almost didn’t include it, but when it doesn’t crash, it works great!
  • Super Crate Box Together - I’ve never seen this crash, but it’s quite slow compared to Super Crate Box. Plus, it has untested (by me on Gameshell) network play that should theoretically work.

There’s also a missing/hidden feature on Rom Check Fail, since it required an edit to a config file. Editing /home/cpi/.ROMCFAIL/ROMCFAIL.ini after the game has run once will allow you to change ScreenMode from 0 to 1, and you’ll get fullscreen the next time you run it.

3 Likes

You champ!! This is exactly what I wanted to see happen with the warehouse! I tip my hat to you my good sir.

Edit: I just installed them on a fresh 0.5 installation.
Endless forms runs, just without sound.
Garuden seems to run perfectly.
The rest don’t appear to run, without installing any extra dependencies etc.
I’m about to edit the ini file for rom check fail. Running if booted me to the launcher as expected, however a .romcfail directory doesn’t appear to have been generated.

1 Like

Thanks! I considered making entries for some of the commercial games I’ve gotten working under box86, but I don’t think that would work well with the warehouse model, since I couldn’t include all the files needed to make them work. That would pretty much guarantee disappointment if someone tried them and didn’t know they needed to add files (or have information on where to put them.). :frowning:

A few commercial games run exceptionally well, including Super Hexagon and Undertale, but sadly there aren’t demo/freeware versions that could be used to showcase them.

At some point I might try to put the best examples into a warehouse entry though. I could add something to the startup script for the game(s) to check if certain files exist, and if they don’t, to display some kind of message saying the commercial game files are needed and where to put them. For games like Undertale, you really only need the assets directory and the “runner” executable, but others have a lot of files. Some files may not have the right permissions set, depending on how someone got them onto the device, so it just seems like a source of problems and confusion. I’ve tried to document the process I used in the thread above though, so hopefully others can play around with this.

I never played Undertale all the way through, though I bought it and checked it out back in the day. I may try to play all the way through it on the Gameshell. It really feels like it belongs on such a device, even with some of the text being difficult to read. Super Hexagon is ideal on the device too, I just wish it started up faster.

That seems to be a downside to box86. Once it gets going, assuming it implements everything and the game doesn’t crash, it ends up being very fast. But it takes a while to start up and get going, before the game launches.