Possibility of x86 emulation?

I’m really hyped for GameShell’s release, was thinking about making a retro console out of a RasPi 3 just as I saw the Kickstarter, so of course I backed it! Building a library of games to play on it at the moment :smile:

Considering the open source nature of GameShell’s hardware and software, I’m trying to see if I can get some modern classic sidescrollers (Shovel Knight and Axiom Verge, for example) to run on GameShell. The hardware should be more than capable of running pixel graphics, but most games I’m looking at are compiled for x86 CPUs while the GameShell runs an ARM one.

There’s a program called ExaGear Desktop (linked below) which was designed to run x86 programs on ARM CPUs, but I’m unsure if it’s the best solution to the problem (or even a viable one). Anyone used this software? Or does anyone with enough computer science knowledge know if this is efficient enough to run 8- or 16-bit games? Thanks! :blush:

https://eltechs.com/product/exagear-desktop/

1 Like

I have tried ExaGear on a couple of devices, but without success. The again, my hope is usually to get FTL working, which may well be heavier than what you’re looking for. If you ask their support team, they usually allow you to try Exagear with your preferred hardware and software combination on the promise you’ll get the money back if it doesn’t do what you want it to do (and you let them know about this within

I have not played with ExaGear but from my experience on bochs and qemu when running on a proper PC (in linux) a few years back, I just about got DOS running with DOS games (DOOM, Wolfenstein 3D, Civilization 1 etc). You might get Windows XP running at a push but I wouldn’t expect anything like windows 7,8 or 10 or modern games or 64-bit because this is an embedded 32-bit ARM CPU (all be it 4 cores) with 512MB of RAM and the host linux OS will take a chunk of the system resources.

It is probably better to get bochs or qemu going first as they are free in source and binary format and have FreeDOS images freely available and ready to go. So, yes you should be able to get classic 16-bit DOS and earlier 32-bit games running.

I guess we will find out when they arrive in a few months or a VM is made available.

…just my 2p worth

Thanks for that, I actually wasn’t aware of free alternatives like bochs or QEMU! Will be interesting to see if they’ll run on GameShell.

You’re probably right about the efficiency, emulators of any kind often have access to less than half of a system’s hardware resources (in my experience), so probably won’t be practical unless there’s a whole OS built around the emulation. That said, I’m looking at games which consistently use around 100MB of RAM and not much processor power, so maybe it’ll still work out? I guess we’ll only know once the hardware is out.

Also, any word on whether they managed to upgrade to 1GB of RAM? Was planned during the Kickstarter but no word in backer updates. Doubling the available RAM would definitely make the system more capable (probably a big hardware feat, though, the Pi Zero only has 512MB)

There are other ways to emulate PC games. For example most of the classic graphic adventures run on a proprietary system called SCUMM and there is a free version in the name of SCUMMVM. This will run the graphic adventures directly without the need for emulating the x86.
It looks like SCUMMVM has been ported to android on ARM so it should be theoretically be possible to target the particular the ARM variant in the clockworkPi.
The DOOM engine has also been open sourced and ported to ARM.

In both cases (SCUMM and DOOM engine) you just need the data files from the games

For DOS games, there’s of course DOSBox, which runs many games wonderfully, even without any further x86 emulation.

I don’t know bochs, but QEMU is full processor emulation. Exagear is supposed to be more of a hybrid approach and thus might get better performance. Of course, I haven’t been successful in getting things to run well on it, so I can’t really say if that’s true.

A moajor difference between ARM linux and ARM android is that the former is far less likely to have drivers that properly use the video chip, so there’s still a gap between the two, even on the same hardware.

Regarding the graphics drivers, I don’t know about clockwork pi, but on the raspberry pi the broadcom GPU drivers were open sourced by broadcom to help with the development of the project. Here’s hoping we are as lucky for the clockwork pi

The Clockwork has a video chip from the Mali 400 line, which is what most Raspberry competitors have and is infamous for their poor driver support.

The Mali 400 has been mainlined by Free Electrons: Mali OpenGL support on Allwinner platforms with mainline Linux - Bootlin's blog

Now, to use that, this board would need to be running mainline Linux. Usually board sellers like this tend to get ancient Android/Linux images from the SoC manufacturer(Allwinner). According to the linux-sunxi wiki, the R16 is pretty mainline-y: Linux mainlining effort - linux-sunxi.org

So there’s a definite possibility that Mali will hashtag_just_work with the GameShell (if they put in some development time).

In addition to the big names already mentioned, there’s also the qemu userspace instruction translation (qemu-user-static). I tried it once or twice for running x86 stuff on ARM, but in general, you’ll be lucky to run x86 bins ten times slower than a native ARM bin.

– Ben

1 Like

That’s great to hear. It’s a binary blob, and it only provides OpenGL support (not, for instance, video playback - which not so much relevant to this discussion, but is definitely on my personal wishlist) so it’s still rather far from perfect, but it’s still very good to hear.

Thanks for all this incredible information! I’m very excited about working with the GameShell. I can see I have a lot to learn. I hear that understanding these things can take some time. I haven’t programmed a game in years; I made a card game in C++, and before that, I made a few simple games in True Basic Bronze edition.

If you can’t port it, make it! The game pad controls will enable some really exciting possibilities between the input peripheral and the game functionality.

SCUMMVM will definitely run on that platform, it run on virtually any hardware that is 32bit and have enough memory (it run on the Nintendo DS, PSP, GameCube, any type of linux with any type of CPU, Windows, Mac OS and Mac OS X, …) and there is no need for GPU for it, not OpenGL, a simple 2D framebuffer is enough, at least for the non 3D engines which is the main purpose of SCUMMVM.

Exagear being a commercial product targeted to the Raspberry Pi, I doubt it will come to an unknown and obscure core as the clockworkpi, but who knows maybe?

DOSBox will run, but don’t expect stellar performances, I would say nothing higher than a 66/100Mhz 486 would run well here. Don’t expect any Windows based games, don’t expect WINE to run here. bochs is slow as hell and qemu is second to it.

Almost definitely will work, it’s just a question of how well it will work with the software you want to run. Exagear has builds for many boards other than the Pi and also have a “Generic ARMv6” build and a “Generic ARMv7” build.

I wouldn’t know how to relate it to the older processors, but I have been using Dosbox without much trouble on the CHIP (which has the same amount of RAM and a 1 GHz single core processor). Games like the original Prince of Persia, Dangerous Dave and Supaplex (you need a mouse for the main menu in the last one, though) run quite well. There are occasional minor hiccups, but while it’s noticeable, it’s not too annoying.

1 Like

Thanks for all the input, everyone! It seems x86 emulation will be too inefficient to run the games I’m looking at, but I plan on testing them on my Raspberry Pi 2 B+ as soon as I can. The Pi has a slower processor, so if anything works on that then it’s more than likely to work on GameShell!

I should note that I’m looking at linux games compiled for x86, not windows games (that adds another level of emulation that definitely wouldn’t be feasible!). DRM-free versions of games like Shovel Knight can be loaded onto a linux distro without Steam, so those would be the main things I’m looking at.

Well Prince of Persia (1989-1990), Dangerous Dave (1988) and Supaplex (1991) are all games from the 386/486 era, so that the type that should works reasonably well. I would not expect Quake 1 which need a beefy 486 (DX2/6) at absolute minimum and a Pentium to be comfortable to run well in DOSBox on an ARM platform.

And ok for Exagear.

For Linux based games that are not opensource and are build for x86, you can have a look at qemu-user ( https://wiki.debian.org/QemuUserEmulation ) but same don’t expect super high performance, using it to run ARM binary on x86 cpu have a visible performance impact (but most of the case was, back in the day, better than running on the real hardware, can be useful for cross compilation)
The advantage compare to normal qemu is that it does not emulate the full system, and just run the binary in an emulated CPU, and translate all syscall into the native one, so the emulation is less heavy than if it was emulating the whole system including the OS.

That is a similar method that Apple was using with Rosetta to run PowerPC binary on Intel Macintosh.

Edit: after looking deeper, it seems that exagear is just a layer on top of qemu, don’t know if it is really worth the expense.

1 Like