The last time I wrote a 2.5D engine was over 25 years ago so please be gentle
The last time I wrote a 2.5D engine was over 25 years ago so please be gentle
And that's for monochrome. (Pure black and pure white.)
To have more colors, you add more of these "bit planes" on top of each other.
So if you have say, 32 colors and want to update a single pixel, you have to write four bytes, changing only the one bit in every one of these four bytes.
This is not very nice when you try to sweep textures on a 3D-ish mesh.
(But very good for 2D graphics with large chunks bobbing up and down.)
The Amiga (except some early 1000s) also had a Extra Half Brite mode that has 6 bitplanes, 64 colours with the second 32 being half the brightness of the others.
https://en.wikipedia.org/wiki/Amiga_Halfbrite_mode
The extra data fetching does slow things down.
https://eab.abime.net/showthread.php?t=102990#:~:text=And%20....
The panel at the bottom looks like it uses the copper to have a different palette to the rest of the screen. That is a very common effect.
https://codetapper.com/amiga/sprite-tricks/shadow-of-the-bea...
And of course 4096 in HAM mode, but the mode has severe limitations and is completely impractical for textured 3D-games.
https://www.youtube.com/watch?v=wbWGAFIkA5E&list=PLRdmatuCYA...
A small correction, you have to write 5 bytes (or 16-bit words, same performance).
4 bytes changed gets you only 16 colors.
1. simulates texture filtering and dithering hiding low resolution and low number of colors in textures, and
2. renders two or four columns at once.
Amiga had planar graphics, which did not support setting individual pixels. To set a pixel you'd have to set appropriate bit in up to 6 bytes (64 colors max) scattered around in memory. Writing one byte modified one bit of 8 adjacent pixels, which was terrible for textured 3D graphics.
I think it's a similar technique to Sonic 3D's Intro FMV on the Genesis/Megadrive (https://www.youtube.com/watch?v=VTawyLNoRhU).
The original image is squashed vertically, so that you only compute half the pixels and then you stretch it back up. When you do this, you can't have the usual dither patters, so you end with something like this (unless you cheat shift every other line, like in Sonic 3D, but then you have dither patterns everywhere).