The VF2 has a pretty powerful GPU. It really does - but the driver is, for this GPU, broken. OpenGL does not work with designs that exceed 256 colors, or it does not work at all. I guess there must have been a physical design flaw within the BXE-4-32 and OpenGL only sort of worked due to a workaround that is no longer feasible due to design constrains – in short, the driver can not be developed further unless it’s “broken”.
Having said that, the gpu does support OpenGL for embedded systems, which is a completely different beast, from what I’m reading it thinks more in voxels and does not do vertices and quads..? In any case, it supports OpenGL ES3, 3.2 in fact. OpenGLES2 support is also there, but negligible because GLES3 is where the money is: it is used by Android. So thinking this, if there are any projects that support both linux and android builds, and use “SDK2,” they should be usable on this machine.
So in short, ignore OpenGL, lean heavily on GLES. Look for projects built with SDK2 and preferably QT5/6 technology. (Be an iPhone?)
Here are some results of thinking in this direction (keep in mind, for compatibility, that I am using kernel 6.12, SwayWM, 8 GB of RAM and have uninstalled and disabled most of gnome’s crust, idling at roughly 480 MB RAM usage):
(also, initially I was going to post links to each individual project, but I am now typing this on my phone and the process is much too taxing. Just search for app name + github on google, instead)
Luanti - this is in the repositories, but it never worked for me. Turns out it can be made to work with GLES3 by disabling both OpenGL and legacy GL options on compile time. Windowed it’s pretty smooth, but set max fps to 30, turn off post-production and you’ll be able to go fullscreen. Takes a while to generate a world when heavy on mods.
Sonic the Hedgehog (RSDKv5 & family) - Sonic Mania and CD will work when set to use SDL2 as retro backend in compiler options, and they work perfectly except for some slowdown in Mania’s special stages - still it’s bizzare to see a Nintendo Switch game run on this device. Taxman’s widescreen Sonic 1 and 2 have to be built to use a software renderer and need you to disable start menu in settings.ini – and then you can never escape once you pause the game, you can only kill the app because the un-pause functions have been disabled with the menu. TLDR mania and mobile sonic cd good, sonic 1 and 2 work but no.
Quake II (yQuake2) - mentioning this because you need to immediately do “make” and not fiddle with any cmakes. I think it was LivingLinux who mentions it somewhere? In any case, works fine.
Quake III (ioQuake3) - this, however, does not work. In order to at least get it to build, I needed to use the latest source (and not any of the million ‘optimized for embedded’ options), and then its render engines fail to refresh screen on 3d spaces. Sure enough, it’s in the official repository, but that version just does not work with me, same as Luanti. Mentioning it here to ask – did anyone get this to work on VF2’s GPU and the new PVR driver?
Doom I & II (sdl-doom) - this was the only Doom I was able to get to work, until, again, LivingLinux pointed out Crispy Doom working, somewhere. This is a nice, straightforward Doom port with no camera and trinkets, it’s just what it says on the tin.
Heretic & Hexen (Crispy Doom) - works like magic on regular DOOM and will work fine for Hexen and Heretic where the mouse camera thing makes more sense.
Hexen II (Hammer of Thyrion) - this one is slightly weird. Software versions work well enough. Hardware accelerated ones display a garbled picture, BUT the first time I was able to run the accelerated hexenworld executable it was okay, then never again, for some reason.
Nintendo DS (MelonDS) - somehow too slow to be playable
Arcade (final burn neo) - this is awesome as a standalone app and works just as well as a libretro core. Show the VF2 off with some Third Strike. But I can’t seem to set any controls.
snes9x2010 - is a libretro core you’ll be able to build to emulate SNES. Like FBNeo it has very few (slowdown, frame drop) issues, if any, fullscreen or otherwise. It’s kind of perfect. The problem with these cores is they’re made for RetroArch and RA kind of does not work well on VF2, or at all, if you get your build options wrong. RetroArch is also needlesly gigantic. So you’ll need a lightweight client, a random SDK2 application like
Haiyajan - this works great except there is no documentation and no external folder support. How am I supposed to point to PSX bios files, for instance? Or setup control options? Still, in a pinch, it does it job.
GenesisPlusGX - is a retro core I use to emulate Sega CD on this machine . It had no issue finding bios files, it somehow does have a problem with speed unless I make it fullscreen before the bios logo animation ends - at this point you’ll have some slowdown/desync once BG scrolling starts. On PAL Sonic CD this usually passes, on US it tends to persist with the game getting desynced every now and often. Regular MD/Genesis roms work here just as well as on any other toaster.
Atari Falcon & co. (Hatari) - surprisingly slow, but works.
Basilisk II and SheepShaver: the former will build and work fine, BUT DONT GO OVER 256 COLORS in MacOS desktop settings. The emulator will simply hang and CDs, isos and disk images set to use more than 256 colors will just not work. You’ll never be able to change the color back to 256 or less using this virtual machine, either!
Heroes of Might and Magic II (fheroes2) - works just fine, like it was written for the VF2 and its opaque and unusual stack of graphic systems.
Heroes of Might and Magic III (VCMI) - doesn’t work as well, you have to use x11 and, at least in SwayWM, manually set window dimensions or it will appear as tiny as a stamp (fullscreen works). Using x11 (with accelerated wayland cursors) makes the in-game cursor look wonky, so all in all it looks kind of broken, but in the end works fine … just not as perfectly fine as Heroes II.
Diablo (DevilutionX) - works very well, though when fullscreening you might not want to go full resolution, but a step below to ensure smooth frame rates.
Diablo 2 (OpenDiablo2) - builds fine, but I haven’t had a chance to try it yet due to a missing CD (yes I am an 80s child with this stuff on chips on CDs in a box).
Carmageddon (Dethrace) - GL accelerated build does not work, but the software build works just as well as it did on my old 386
Kind of playable, if you squint your eyes.
Oddworld (alive_reversing) - works perfectly
Jazz Jackrabbit (OpenJazz) - works perfectly (aww no trippy menu colors tho)
Jazz Jackrabbit 2 (Jazz2 Resurrection) - builds but does not work: black screen.
Gish (FreeGish) - builds but does not work: black screen.
Fallout 2 (Falltergeist) - crashes when ran, sometimes it resets your GUI altogether. I used to use ti to corrupt and disable Pipewire because that sometimes made the broken jack output work normally (gave up on the jack since).
8 bit SEGA systems (MEKA) - builds but does not work: black screen. Amusingly works for a short second if ran remotely from an X11 desktop.
Tomb Raider (OpenLara) - works famously well. A linux 5.15 kernel / older PVR driver version, build on CWT’s arch linux, not only still works, it displays shadows and water effects where it didn’t before, so it might be useful as a gauge or something. Just build it with -Release tag – I didn’t, and it might be the reason Lara shoots _away_ from the animals like some sort of masochistic pacifist in my build.
Super Mario 64 (PC) - a standard “does my GPU still work” testing application. You’ll immediately know when it doesn’t.
Zelda III & Super Mario World (C remakes) - widescreen Zelda works well. Super Mario World doesn’t. Go figure.
Cave Story (nxengine-evo) - works perfectly
schismtracker - I like when an ancient app writes “using wayland”
VVVVVV - works perfectly
-– useful apps
Fuzzel - after having to deal with Gnome’s “workflow”, I appreciate the ability to run any application or content really damn quickly
PCManFM-QT - looks and works ludicrously well compared to Nautilus. Having some trouble mounting iso images - there are other tools beside gnome-image-mounter you know
-– wishlist
Dreamcast (Flycast) - I can get only get it to build part-way. I remember having to sweat blood to build it for arm64 on my RK3399 back in 2019, but I’ve no idea what I did back then. The GPU should be able to handle it. (This PVR tech is even the same, only much newer!)
Gamecube (Dolphin) - should be possible because of GLES 3.2. Like Flycast, all it seems to need is some tweaking and then an arcane and complex make command, same as yesterday’s arm64 gnu apps. And yes, again, the GPU should be able to handle it: 3D is in general slower on rk3399 than it is on JH7110 when it works, and dolphin with Pikmin 2 works fine on rk3399…
Zelda V (Shipwright) - used to build with 5.15 kernel, but I never could get it to run faster than seconds-per-frame.
Doom III (dhewm3) - this would have been a great showoff. Much like ioquake3, only the official repo version builds for me, except dhewm3 does not run at all and reports doing something too fast during boot.
Serious Sam - another one to show off, but again it defaults to OpenGL when built, when I find a version that does build.
TES III: Morrowind (OpenMW) - it’s in the repo, but built to expect an OpenGL driver, which I find a dirty move (“hey don’t tease me like that”) – but from what I’ve seen, there are Android builds which incorporate the gl4es library. Maybe… some day.