u/perfect_universal

Image 1 — OpenMW running natively at 32-bit on a Banana Pi BPI-M2 Ultra
Image 2 — OpenMW running natively at 32-bit on a Banana Pi BPI-M2 Ultra
Image 3 — OpenMW running natively at 32-bit on a Banana Pi BPI-M2 Ultra
Image 4 — OpenMW running natively at 32-bit on a Banana Pi BPI-M2 Ultra
▲ 94 r/OpenMW+1 crossposts

OpenMW running natively at 32-bit on a Banana Pi BPI-M2 Ultra

Hello, I'm not much of a poster but I thought I should post my findings so it might help someone else in the future that might try to attempt something similar.

So what I have done is gotten OpenMW to compile for 32-bit ARM. (armhf) as that is the only architecture the M2 Ultra supports.

I will try to keep the technical aspects to a minimum, You can find a link to an indepth summary at the bottom of the post. I will disclose that Claude was used to help with the compilation, debugging & writing the technical summary as I am not a software engineer.

So a little background, I got myself one of these SBC boards and wanted to know what games I could get it to run. Morrowind came to mind as it's old so maybe it might run? I tried to find a ready package from Flatpak and Pi-apps but there was none for 32-bit ARM. After some thought I realized that the game would not run on this board with translation layers like Wine, Box86 etc, so the best option is to get it to run natively.

I made sure to check that the card can run the appropriate OpenGL version: OpenGL 2.1 / GLES 2.0, GLSL 1.20. Once that was clear the project seemed possible so I emulated a Debian ARM environment on my Windows pc in WSL as compiling on the board would take hours.

First I tried OpenMW 0.46.0 which was a dud instantly, it needed Qt4 which wasn't available on the board.
Second attempt was 0.49.0, which I was able to compile and get past the main menu though the screen was black and only drew the cursor and character naming box.
Third attempt I went to 0.47.0 incase I could skirt some of the issues with 0.49.0 but it ended up the same way. I ended up ditching 0.47.0 eventually due to the Mali400 (GPU)(the "Utgard" architecture) has no genuine fixed-function hardware at all. I swapped to 0.49.0 as both versions were compiled and showing the same issue as they both use the same fixed-function OpenGL calls so it didn't matter which version was used. After getting 0.49.0 back to the same point we really brainstormed as to why the game wasn't drawing anything past hud elements. Eventually we tried to mess with "force per pixel lighting" setting and turning it "True" yielded results, the game started to draw geometry. (Shown in the 3rd & 4th picture) After tracing gpir failures we narrowed it down to we believe glass textures, so we disabled "env-map reflections" which miraculously fixed texture drawing and fps. Once the reflections were disabled I got the result that shows in the 1st & 2nd picture, the fps as you can see is quite low but that is to do with the sbc being quite weak and obsolete compared to modern computers.

The game has only 2 notable issues that I have noticed.
Water:
Water shows as white and mostly opaque, not a big issue generally, just visual
OpenMW F3 Overlay:
The overlay basically does not work at all, it's a jumbled mess as. I am not exactly sure why the overlay doesnt work correctly but best guess is that we clamped an absurd request that kept crashing and it could be that, not going to bother looking into it further as I can get the same data elsewhere.

So that is basically it, the game runs poorly but it runs and you could play it. The idea was to see if I could get the game to work, not to play the game like this. I didn't have high hopes for it but it turned out really good considering the circumstances.

Google Docs link to the comprehensive summary

u/perfect_universal — 16 hours ago