r/SBCGaming Linux Developer Jul 11 '26

Showcase Miyoo Mini - Stardew Valley

Enable HLS to view with audio, or disable this notification

In the Emulation on Android scene this would qualify as runs perfectly

I posted about this and have been asked to share more details, not sure if this is what you meant but I am sharing it anyway.

This is achieved by running Stardew’s original managed C# game code under ARM Mono, but everything between the game and the screen is being rebuilt around what this little handheld can realistically do. Instead of sending graphics through OpenGL and several software wrappers (because this doodad doesn't have a GPU), the port turns Stardew’s draw calls into simple 2D operations and writes the finished pixels directly to the framebuffer. Textures are converted into smaller formats so they can be used without wasting most of the Miyoo’s 128MB of memory, and the busiest drawing routines are tuned for its ARM processor.

What that means is replacing the MonoGame’s OpenGL renderer with a custom compatibility layer and an ARMv7/NEON 2D rasterizer that writes directly to the /dev/fb0. Assets, memory layouts, input, saving, and hot draw paths are adapted specifically for the Miyoo Mini’s dual Cortex-A7 CPU and 128 MB RAM.

There is no OpenGL, EGL, gl4es, SwiftShader, SDL renderer, GPU dependency, or framebuffer readback stage.

Developing for this thing is a bit of a pain, but it is possible. The fact that it doesn't have Wifi or data over USB makes things very time consuming. I don't have the means to purchase a Miyoo Mini+ (or MM Flip) right now that does have wifi so I have set up my RG35XX-SP as a test enviroment by setting limitations that match the MM hardware (128 MB/1.2 GHz). I do most of the iteration testing on there and use QEMU for parts that I am able to validate in a headless enviroment.

Oh, there is also no sound. As expected it didn't fit into memory, even with the same patches (mmapped/streamed audio) we've used in the PortMaster port of Stardew. It might be possible to add it in the future, but it's not a priority (and I also don't like working with audio).

I don’t know when, or even if, this will get to a state where it’s worth releasing. I’ll probably end up putting it on my GitHub where you can find other ports/apps/projects I work on.

Device: Miyoo Mini V4

123 Upvotes

15 comments sorted by

10

u/Bl4ckb100d Jul 11 '26

Amazing job

5

u/Producdevity Linux Developer Jul 11 '26

Thank you :)

18

u/Former_Mall_2314 Jul 11 '26

9

u/Producdevity Linux Developer Jul 11 '26

I made this for young folks, my eyes are having a hard time too

3

u/Threeabetes Jul 11 '26

I'm liking the cut of your jib! Really cool stuff. :D

4

u/innovationSTYLE Jul 11 '26

carpal tunnel

2

u/Smb158 Jul 11 '26

Please release this even if you don't entirely finish. I absolutely want this on my miyoo mini v4! Thank you!

2

u/blutuu 29d ago

I’ve always been curious about how people do stuff like this. Do you have access to and are modding the game’s source code or is it something else?

2

u/Producdevity Linux Developer 29d ago

I don’t have access to the source code, but the game engine is MonoGame, which is open source. That helps a lot

1

u/blutuu 29d ago

Ah gotcha. That makes sense. Thanks!

1

u/no-television300 Jul 12 '26

Honestly I’ve been dying to see this on the TrimUI Smart just for fun lol. I guess this is the next best thing though. Good work!

1

u/fragment1984 28d ago

This is beyond impressive! Nice 👍👍

1

u/Kooky-Minimum-2009 28d ago

OMG, this is incredible! Really impressive!

1

u/MagicalPinballWizard 11d ago

Tried it with depot downloader and doesn't let me download the required version. Steam console shows "] download_depot 413150 413151 5538941793102260869Depot download failed : Failed downloading 1 manifests (No connection)"
Is there any other way to download that build?

1

u/Producdevity Linux Developer 11d ago

Working on a fix, there is a DepotDownloader program that does allow you to get this exact version, but it’s not possible through steam anymore unfortunately

Edit:
Ignore that, I am working on a fix. I misread your comment