tutorial on recreating old graphics systems in monogame?

is there a video tutorial on how to go about recreating old graphics formats in monogame?
I have asked/tried many times to create this but doing it so that it runs well on the gpu is difficult.

basically I need a array of 8x8 indexed tiles that can be flipped and rotated like this…

I know that newer gpus don’t support indexed color mode but I would like to learn a way around that using shaders.
I am not good with shaders at all and have no idea what I am actually looking for or doing.

No matter what you have to do some work on the CPU (whether ahead of time or at runtime) as there are no texture formats with that low of a bit-count.

  • Convert to pixels entirely on the CPU, upload the texture-data, and be done with it
    • sounds like you really don’t want to do this for some-reason
    • this is the only way that will work with texture-filtering and/or mip-mapping
      • both will corrupt any indexing scheme when interpolating
  • Store palette as 1D lookup-texture, convert indexed image indices to pixel coords for the 1D index
    • (ubyte)(paletteIndex*255)
    • same as most color-correction
  • Remap indexed-texture to 1D indices as above but lookup color from a complete palette uploaded into a shader uniform/constant array
  • You could fork Monogame and add support for an integer texture format which would simplify the two above
    • Convert indexed format to the correct integer type

Unsure about specifically which format you’ll be using but towards the end of the lifetime of indexed-color there was a fair bit of RLE compression going on, if you have a compression scheme like that in w/e sprites then you have to deal with that on the CPU as well as the GPU isn’t suitable for dealing with RLE in any capacity other than “I know this is slow, but it’s a one-time only bake - I’m not doing this every-frame”. I think that was limited to PC games though.