This is a doom port intended for the reMarkable 1.

Demo Video on rM 1 | Demo Video on rM 2 (not recommended)
It is composed out of a lot of different compontents:
The meat of the work was to port doom to rust (doomgeneric-rs) and dithering the image and doing that as fast as possible! The dither speed was achived through forcing better optimizations and caching the code. The dithering is actually done at compile time for a 320x200 source image and the results (for upscaling 4x) are put into the generated binary itself. The binary then just needs to decompress this and look up the results for each pixel.
The game currently runs at about 11-14 FPS on the device. It's not using the low latency drawing even though it's pretty simple to use since the image has no gray shades. The reason is that using an A2-Like refresh has less artifacts and ghosting. I personally find this worth the extra latency when playing.
The game currently runs fine but there are still some things to do:
/home/root on your reMarkable (e.g. using FileZilla or WinSCP)/home/root (more details)chmod +x doomarkablesystemctl stop xochitl and start it later using start instead of stop)./doomarkable (on the rM 2, you'll need rm2fb and prefix that command with rm2fb-client)RUST_LOG=debug before the commandIn general building should work on most toolchains. You generally wanna target armv7-unknown-linux-gnueabihf for any remarkable. But as with all things in life, stuff never works great on every setup.
That's why I recommend to nowadays build with the rust image from toltec-dev/toolchain. It is the most modern and the closest to the actual reMarkable system as you're gonna get as of now.
To make it easier to use, I found that you can use the rust image (ghcr.io/toltec-dev/rust:v3.2, all versions).
This is done using the Cross.toml file. So you should just need to run cross build --target=armv7-unknown-linux-gnueabihf --release and it will use the above image (or possibly newer if this readme gets out-of-date).
$ claude mcp add doomarkable \
-- python -m otcore.mcp_server <graph>