| ▲ | Show HN: demake – one source project compiles to any retro game console ROM(geosona.com) | |||||||
| 32 points by gste 5 hours ago | 8 comments | ||||||||
This started life as a graphics tool for a specific problem: gen AI can make retro-styled sprites but can't follow exact hardware constraints of pixels and colors. While building this I liked the idea that I can fan-out to any retro videogame console or handheld's specifications. I then devised my own declarative language - Demotic - to express the game you want to build as concisely and naturally as possible without implementation detail. To work on different machines, you use relative units, like vw, vh, vmin, vmax. It has a web UI, CLI and NPM package. Still a work in progress. | ||||||||
| ▲ | andai 2 hours ago | parent | next [-] | |||||||
I saw this cool article yesterday about edge aware pixelation. That might give better results when pixelizing AI generated pixel art. https://yogthos.net/posts/2025-12-11-edge-aware-pixelation.h... More broadly I often find pixel art that has been upscaled and I'm wondering if anyone knows a good way to convert that back into the original? In theory you just need to sample the middle of each blob, but I haven't found traditional image editors to be very helpful in this process. | ||||||||
| ▲ | bensyverson 3 hours ago | parent | prev | next [-] | |||||||
This is super cool! I like the idea of expressing the game declaratively, with a language that an LLM can easily understand. Do you have any other demos of what the language is capable of? I'm wondering if this could do a platformer or adventure style game. Are there any device capability guards, so more capable systems within a tier (like SNES vs NES) could attempt more complex graphics, sounds or interactions? What works on the Game Boy is different enough from what's possible on the SNES that you may want some way to express that. Or to make it dynamic, like "make the number of enemies the number of supported sprites - 2" | ||||||||
| ||||||||
| ▲ | Dwedit an hour ago | parent | prev | next [-] | |||||||
There seems to be a bug in the code for handling input, certain combinations of pressing or releasing left and right can cause the paddle to get stuck moving to the left or right, especially when Left and Right are held down simultaneously. | ||||||||
| ||||||||
| ▲ | anthk an hour ago | parent | prev | next [-] | |||||||
You can map this syntax to a Lisp (be Common Lisp or Scheme) with ease. Macros will do the 90% of the job for this. There's some Common Lisp package to code for the web: | ||||||||
| ▲ | benj111 2 hours ago | parent | prev | next [-] | |||||||
Interesting. How do you prevent rounding errors etc for different screen sizes? Some things could be 1 pixel in one version and 2x2 or 1x2 in another version. And why does it play top to bottom when the 'net' suggests it should be side to side? | ||||||||
| ▲ | anthk an hour ago | parent | prev [-] | |||||||
Also I'd love an Alan Wake PSX demake with the Resident Evil portview engine/graphics (easier, it has a WIP port for Scummvm) or the Parasite Eve one, which are really close. PE 1 used the FFVIII one I guess. Alan Wake in that style would be perfectly playable. On FX, the PS1 had torchlight effects since Alone in the Dark: The New Nightmare. The playability it's there, the scenaries mapped to single cameras would perfectly capture the environment. And, well, as for the in game audio/video... just use WAV/MPEG videos. | ||||||||