Home | Notifications | New Note | Local | Federated | Search | Logout
Note Detail
Blurry Moon@sun@shitposter.world (2026-09-18 10:42:03)
via my hdmi capture adapter! This is running on a dual-core 150Mhz ARM Cortex (M33?) with a little DVI video shim that has very limited capabilities. 520K of RAM. But I managed to squeeze a better-than-wolfenstein basic engine out of it, with like 12K of RAM left over.
---Attachments---
video: https://media.shitposter.world/shitposter.club/b4/20/f5/b420f5abe9e20ec02f12ef4d90534e48f33d735a1341fe86167772e1e832c207.mp4?name=zoKbig6Dfp1ctA.mp4
Reply
---Replies---
Blurry Moon@sun@shitposter.world (2026-09-18 11:04:55)
To be explicit about it: this renders over 4x the pixels of wolfenstein 3d in true color instead of paletted, and with additional depth shading, in less total RAM that it would take to hold one frame of its own graphics in a single-buffered framebuffer. A full frame of its own graphics would be like 600KiB but we only have 520KiB, which is shared between code and cached graphics and a line draw buffer.
instead of single-or-double-buffering an entire frame, which won't even fit on the device, I made a circular 64-line queue of lines to draw. We have a hard limit of doing all our work rendering a line at a time before the line is fully drawn onscreen and the next one starts. So you could say it's utilizing a similar trick as the Atari 2600, our game logic and rendering code is "racing the beam", although strictly speaking there is no actual "beam of light" like an analog tv anymore, but there still is a digital line-by-line drawing we have to stay in front of or everything gets fucked. the ring buffer gives us 2ms of padding however for worst-case scenarios.
currently we can only handle 3 enemies onscreen.
the color of the whole system is RGB565 16-bit full color, but to save space, sprites are 256 color palette of 16-bit colors and wall textures are 4-bit 16-color-max palette of 16-bit colors.
runs about 45FPS.