Programming the ZX Spectrum's Bitmap Display
11 hours ago
- #assembly programming
- #bitmap graphics
- #ZX Spectrum
- The ZX Spectrum lacks a true text mode, using only a bitmap screen with direct memory access from $4000 to $5AFF for graphics and color.
- Color information is stored in a 32x24 grid at $5800-$5AFF, each byte defining foreground/background colors, brightness, and flash attributes for 8x8 pixel blocks.
- Bitmap data is stored at $4000-$57FF in a 1-bit-per-pixel format, with an unusual memory layout that groups slivers by adding/subtracting 256 within cells and 32 between thirds.
- Converting pixel coordinates to memory addresses involves bit manipulation, with sliver address bits derived from X and Y coordinates, and color addresses easily computed from sliver addresses.
- Drawing routines like PLOT for setting pixels can be implemented in Z80 assembly, with extensions for lines using Bresenham's algorithm, but circles and arcs rely on floating-point libraries.
- Hardware sprites are not supported, necessitating software blitting for sprite-like graphics, leveraging user-defined graphics for game animations.