@rl_dane @cerement Currently, the graphics system uses 24-bit color, plus an alpha channel for transparency. It supports setting individual pixels, as well as basic image buffer rendering which supports nearest-neighbor scaling. Rotation is not supported, as I deemed it too high-level for this system; although, via negative scales, you can effectively flip the image 90° 180° etc.

This is in the standard Devices specification, and is implemented in the emulator.

@rl_dane @cerement I've considered doing paletted color instead of 24-bit color. Given that you usually don't need that much color, I might step the graphics down a bit to make it more minimalistic.

The sort of level of "low-tech" I'm going for is something like a computer with 1 -- 4GB RAM, one core at 0.3 -- 1GHz. Again this isn't for nostalgia and definitely not for historical accuracy; it's more for simpler computing with less bloat. And because I enjoy designing computers.

@golemwire @cerement

What about color cells? You can save a ton of VRAM and even bandwidth by having high res mono with color cells or raster tables (i.e. set BG=a, fg=b, starting at line 512)

@rl_dane @cerement SubSky's supposed to be easy to program for (in a low-level language), so I feel like color cells would be too hard to work with.
Here's a demo of the palette I have in mind. The colors have been rearranged since I made this demo image, but nonetheless there are a few short of 256 colors here so that'd be 1 byte per pixel.

@rl_dane Some notes on color indexes, from my bobcolor.s lib (for the videogame; it uses this palette):
A bobcolor color index can usually be interpreted as:
0 1 2 3 4 5 6 7
Brightness Saturation Type (often hue)
with Saturation descending (keeping RGB values generally ascending).
Type:
4-15: the 12 hues
0-3: other types

@rl_dane The SubSky CPU can only R/W one byte or four bytes at a time, so unfortunately I need to avoid e.g. 2 bytes per pixel, as well. (Still unsure about how to handle audio with this limitation...)

Sign in to participate in the conversation
Librem Social

Librem Social is an opt-in public network. Messages are shared under Creative Commons BY-SA 4.0 license terms. Policy.

Stay safe. Please abide by our code of conduct.

(Source code)

image/svg+xml Librem Chat image/svg+xml