This repository contains a Dockerfile and build script for compiling the m8c (DirtyWave M8 Headless Client) and necessary kernel modules for use with Knulli custom firmware on the Anbernic RG35XX* family of embedded Linux handheld retro console devices.
Note: I have only tested this on an Anbernic RG35XXSP, but others in the Discord community have basically run this on other RG35XX* devices
The idea behind this is to provide a platform that makes it relatively easy for most people to compile a runnable executable of the M8 Tracker software for handheld gaming consoles. With a bit more tinkering, this could be made more flexible so that it's easy to build m8c for other devices and/or other firmware.
This version builds using:
v4.9.170
rg35xx-plush-sdk-20240421/aarch64-buildroot-linux-gnu_sdk-buildroot
v1.7.8
Clone this repository:
git clone https://github.com/jamesMcMeex/m8c-rg35xx-knulli.git
Go into the directory:
cd m8c-rg35xx-knulli
Build the Docker image:
docker build -t m8c-knulli .
Run the Docker container to start the build process:
For Windows (PowerShell):
docker run -v ${pwd}/output:/build/compiled m8c-knulli
For Mac/Linux:
docker run -v $(pwd)/output:/build/compiled m8c-knulli
After the build process completes, you'll find the compiled files in a new output/
directory located inside inside the source directory (m8c-build-environment
).
Dockerfile
: Sets up the build environment with necessary dependencies.build_script.sh
: Automates the process of building m8c, compiling kernel modules, and preparing the startup script.The build process includes the following steps:
After a successful build, you'll find the following in the output
directory:
m8c
with the m8c
executable and the compiled kernel modules (cdc-acm.ko
, snd-hwdep.ko
, snd-usbmidi-lib.ko
, snd-usb-audio.ko
) insidem8c.sh
startup scriptroms/ports
folder in the partition used to store ROMs (this will either be the SHARE
volume when using a single SD card setup, or on the second SD card, if you've set up Knulli on your device this way)m8c
folder and the m8c.sh
script into this locationgamelist.xml
file to make it a bit more pretty in the Knulli UIYou could modify the Dockerfile
and build_script.sh
to adjust the build process according to your needs. For example, you can change the kernel version, the toolchain used for , or M8C repository URL.
If you encounter any issues during the build process:
If problems persist, please open an issue in this repository with detailed information about the error you're experiencing. I will try to help but I am a frontend engineer and a Linux noob!
Contributions to improve the build process or extend functionality are welcome. Please fork the repository, make your changes, and submit a pull request.