Box86 - Linux Userspace x86 Emulator


Thanks @ptitSeb
I just build your latest revision of Box86 and tested with the free game of interaction studios "Christmas Eve Crisis" and it work almost fine on my CC @600 Mhz.

Maybe you could release a .pnd of that game just in time for Christmas.

cec-704x176.jpg
 
Thanks @ptitSeb
I just build your latest revision of Box86 and tested with the free game of interaction studios "Christmas Eve Crisis" and it work almost fine on my CC @600 Mhz.

Maybe you could release a .pnd of that game just in time for Christmas.

cec-704x176.jpg
I will not be able to create a pnd before Christmas. But I will later (or you can do one if you want). The Chicken Ivaders Christmas themed are also nice.
 
Has anyone tried to run the X86 Google Chrome linux browser in box86?

I want to watch Netflix and Hulu on my Pyra. Can it be done?
 
Don't you also need a VPN to appear as an American to the hulu service?

Quick edit: Oh, duh. You are one of them!

Edit2: Chromium do you any good. I'd guess debian has that but that's untested.
 
I haven't tried, but I don't it will for now. I'm still working on gtk integration (also, I haven't wrapped ffmpeg libs). But I would love to it running of course :) I'll add that on my to do list...
 
And here is new batch of screenshots and a video:

arkostraker2_02.png

Arkos Tracker 2, a PSG Tracker, works now (using gl4es too, but also using gtk for some dialogs)

beathazard01.png

Beat Hazard Ultra works, but a bit slow on the Pandora. Mostly playable.

brokenage01.png

Broken Age boots, but it doesn't like the small resolution of the Pandora

dontstarve01.png

Same for Don't Starve (that is also too slow just in this launcher screen).

dremor05.png

Dungeon of Dredmor works fine. It want 1024x768, so I used OMAPDSS driver of SDL1 (and there is no opengl here). The bottom of the picture is black, not white, I guess there is an alpha transparency that disturbed the frame capture. That's a game that should works fine on the Pyra (not tried yet).

littleinferno04.png

Little Inferno works also now. It's using an old libvorbis that needed to not be wrapped. It's too slow on the Pandora, but working fine on more powerfull devices

momodora03.png

Momodora: Reverie under the Moonlight is working, but too slow on the Pandora.


Waking Mars is running fine on the Pandora. Pretty smooth and playable on my Gigahertz model, as you can see in this video.
 
Last edited:
Nice, I backed broken age in the original kickstarter back in the day, but IIRC it would launch on my eeepc, it wouldn't run at an acceptable rate, so instead I watched a lets play of the game. Would be nice to get into it on my Pyra and actually play it now though, still. Stuff I backed since then wanted too high of an OpenGL for this machine, but Broken Age was happy with OGL2.0, just too slow at 1.6GHz x86 single core but hyperthreaded.
 
Don't Starve on Pyra would be awesome! It is a game I want to play, but would rather play in bed on a handheld rather than on my desktop.
 
Running on a pi4b+ overclocked to 2Ghz with custom cooling running Mesa 20.0.0-devel (git-6bafd230e3)
Cpu temp, core usage, ram usage on conky on the left.

Momodora (GOG) is a hit or miss.

2020-01-13-084205_1440x900_scrot.png


But some map are totally unplayable like this one, the second boss of the game drop the fps to 35~45 depending of what the boss does.
Putting Low or High Settings don't change the FPS on this map at all same for the resolution.

2020-01-13-084333_1440x900_scrot.png


On older Mesa build can't remember if it's the stock one from raspbian or one that i've compiled month's ago, the map where ptitSeb took the screen was running at only 23fps even with 2ghz, with latest mesa it's 60fps all the time, the fps drop is still present when you kill the mob ~ 35fps for 1 second due to how the particle pop.

vvvvvv make and play edition (vvvvvv what a name...) is working fine, I've also tested to load a custom level and 30fps constant.
However the dev uploaded the source of the entire game here: github (dot) com/TerryCavanagh/VVVVVV/ so you can play the entire version on ARM, I've compiled it and it's working perfectly, this should work on mostly anything I think.

2020-01-13-083706_1440x900_scrot.png


Regression *cough* Shovel Knight (GOG) is also working good, I always got 60fps when the game isn't broken xD (Press F for ptitSeb) (1440x900)

2020-01-13-084559_1440x900_scrot.png


Unreal Tournament (play (dot) it) is also working, but for some reason I can't take screenshot of him but it's running at ~45 in battle. (640x480 Low Settings)

Didn't know Beat Hazard Ultra but this look fun to play for killing a bit of time, he remain me of Geometry Wars 3, sadly he was bugged even on 'standard' Linux and the build was outdated compared to Windows.

A bit of offtopic for game running without box86:
Celeste (Steam version where I've kicked the DRM entirely) is running good in mono, the 3D map where you select the level is running ~34fps, and the level themselves are running 60fps. (1440x900)
Stardew Valley (Steam) is also running 60fps all the time. (1440x900)

I can't test at more than 1440x900 my second monitor (1920x1080p) don't want to work on this board, problem on EDID.

Note: the spam filter like betching at something this remind me of the buggy filter from Unity forum where posting a picture/url was flagging yourselves as spammer :'(
Edit: Just like Unity forum editing yourself and putting the picture after works.
 
Last edited:
Yeah, for the record, I tend to break Shovel Knight every time I touch too much the Dynarec Core.
First I broke ground-main character colision and the main character was going through the ground...Then I broke it again not too long ago and the textures were not loaded correctly...
 
Sorry for the slightly off topic post (I don't own a Pyra), but I just wanted to thank you for all your work on this, @ptitSeb. I discovered the project over on another forum, for the ClockworkPi GameShell, and I've been getting various things to run on that device. It's even more challenging than using the devices discussed here, since it has no touch screen, and only a 320x240 display. Some games I've tried work well, but are still unusable for those reasons. ;)

I'm not sure if it will help, but here's a link to the list of games I've tried on GameShell, along with the results. Most of these have been mentioned in this thread already, but I think some may not have been mentioned (or perhaps tried yet). [edit: I tried to post the link but the forum software flagged it as spam, so I removed it] Slightly farther down from that post, I mention (and provide a link to) ROM Check Fail. It's an old game by Farbs that I've always been fascinated with, and it works with box86! It's designed for a small screen, but I expect it would scale and be fun on the Pyra too.

I've had a major problem with getting any game that requires mono to run. I managed to build mono from the unity sources, but I haven't been able to get any games that require it to work, even ones that have been mentioned here. For instance, Beatbuddy, which I saw mentioned in this thread, starts up but then crashes for me, and the log output doesn't seem to be all that useful.

-----
Using default BOX86_LD_LIBRARY_PATH: ./:lib/:lib32/:x86/
Using default BOX86_PATH: ./:bin/
Counted 24 Env var
Looking for Beatbuddy.x86
Using native(wrapped) libdl.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) librt.so.1
Using native(wrapped) libGLU.so.1
Using native(wrapped) libGL.so.1
Using native(wrapped) libX11.so.6
Using native(wrapped) libXcursor.so.1
Using emulated /usr/lib/i386-linux-gnu/libstdc++.so.6
Using native(wrapped) libm.so.6
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux.so.2
Using emulated /usr/lib/i386-linux-gnu/libgcc_s.so.1
Warning: Weak Symbol _ZGTtnaj not found, cannot apply R_386_JMP_SLOT @0xb605719c (0x6b506)
Warning: Weak Symbol _ZGTtdlPv not found, cannot apply R_386_JMP_SLOT @0xb6057478 (0x6c076)
Error: Symbol glob64 not found, cannot apply R_386_JMP_SLOT @0x9178554 (0x804fec6)
Set current directory to /home/cpi/apps/Menu/22_Box86/Beatbuddy
Found path: /home/cpi/apps/Menu/22_Box86/Beatbuddy/Beatbuddy.x86
Using emulated /home/cpi/apps/Menu/22_Box86/Beatbuddy/Beatbuddy_Data/Mono/x86/libmono.so
Error: Global Symbol data_start not found, cannot apply R_386_GLOB_DAT @0xb5c01bbc ((nil))
Error: Global Symbol __data_start not found, cannot apply R_386_GLOB_DAT @0xb5c01d48 ((nil))
Mono path[0] = '/home/cpi/apps/Menu/22_Box86/Beatbuddy/Beatbuddy_Data/Managed'
Mono path[1] = '/home/cpi/apps/Menu/22_Box86/Beatbuddy/Beatbuddy_Data/Mono'
Mono config path = '/home/cpi/apps/Menu/22_Box86/Beatbuddy/Beatbuddy_Data/Mono/etc'
-----

I feel like I'm missing a trick to get games that rely on mono working. (Hopefully I didn't miss something obvious!)

Anyhow, just wanted to let you know you've got some fans following your progress over on another, smaller platform. :)
 
Hi @adcockm and welcome here :)

It's a nice thread over the clockworkpi forum! lot of testing and succeess story, I like that :D

Now, on your question, you should note that, the games you are trying to run are not Mono games, but Unity Engine games. There is a difference. Mono games can be just mono+sdl2 (like Hammerwatch), or Mono+XNA/MonoGame. In either case, you can, most of the time, run them "natively" using Mono. Look in the article I wrote there some time: https://magazine.odroid.com/article/playing-modern-fna-games-on-the-odroid-platform/ .It's a bit out of date for certains things, like mojoshader repo (use stuff dirrectly from https://github.com/FNA-XNA now, not from icculus original repos).
Unity Games are not supported for now on Box86. I hope to get them running, are there a lot of title made with Unity, and some of them are good, but now, I'm aware it doesn't work.

("BeatBuddy" hasn't been mentionned here IIRC, only "Beat Hazard" has been, different game using different technology).

The ROM Check Fail looks like an interresting game, that would be worth packaging on the Pandora (along with the planned Garaudan and Maldita Castilla, when I take some time to do it).

(You'll be able to post link on the forum soon, don't worry).
 
Ah, my mistake -- sorry for the "Beat" confusion. I actually did get Beat Hazard working on GameShell (but it required too large a resolution). I'd swear I couldn't get a known working game listed here working though -- I'll have to dig back through the thread and check at some point.

I suspect Farbs never really promoted Rom Check Fail much because of the obvious copyright issues that could come up with it. While it's a completely original game (as far as I know) in terms of design, it uses all those familiar characters which seem to be pixel perfect representations. While I'd like to think the game could exist as a parody or tribute, I'm not even sure it could survive without legal issues today, if it was widely known. Unfortunately, the only reason it works as well as it does is because of those familiar characters! It's a joy (and frustration, in a good way!) to play, if you grew up playing the games it's based on. I'm not sure if there's any more performance tweaking that could be done on box86 for it, but at least on GameShell it tends to slowdown a bit (more of a hiccup) when the game does it's (intentional) glitch effect and switches modes. It would be great to see it running smoothly one day. :)

Thanks so much for the information and links about Mono! Looks like I've got a lot of building ahead of me to get the XNA stuff working, but it's exciting that such a thing is possible and I'm looking forward to it.
 
There are still some room for optimizations in Box86. For example, the x86 flags handling in the dynarec is far from optimal. Gettting a better one could boost the performances (probably up to like 20%, so not bad). Also, maybe some instruction are missing in the Dynarec, and it fall back to the interpretor. That's the most common slowdown (well, less and less common because more and more opcode are beeing added to it). To check that, launch your cames with "BOX86_DYNAREC_LOG=1", and you'll see on the console if dynarec have some unimplemented opcodes. In that case, open a ticket on github, or give my the hex code here and I'll try to add them...

Good luck with the XNA stuffs, there is also many good games using that engine (FEZ, Stardew Valley, Chasm, Celeste, Bastion to name just a few)
 
That's great there there is still room for improvement! I'll try the logging option and share anything interesting I might find. (To be honest, I haven't used any of the supported environment variables so far!)

Hmm, it appears that TheoraPlay-CS.git (again, I was unable to post the full link) is gone. Has the support for LibTheoraPlay moved somewhere else? And while I downloaded the TheoraFile code, it gave me build errors (invalid operand for some codes, and some impossible constraints). Everything else seemed to build fine, so I ended up with:
libfmodex.so
libfmod.so
libGL.so.1
libmojoshader.so
libSDL2-2.0.so.0
libXNAFileDialog.so

Hopefully those Theora* libraries aren't too commonly used!
 
Hmm, it appears that TheoraPlay-CS.git (again, I was unable to post the full link) is gone. Has the support for LibTheoraPlay moved somewhere else? And while I downloaded the TheoraFile code, it gave me build errors (invalid operand for some codes, and some impossible constraints).
Try here: https://github.com/FNA-XNA/Theorafile
(it used often for intro video and things like that).

*EDIT*: Mmmm yeah, you are right, the repo is gone, no traces of it anywhere... I wonder why?!
 
Back
Top