My question is whether I'm correctly using the pgm_read_byte command. I'm reading values from an array of hex values, and the "spi_transfer" should send these specific hex values to my display. For some reason, the values being sent to the display are only correct if they are 0x00 or 0xFF.
The array was generated with the tool provided in KS0108 GLCD library (although my code does not use that library). Then I modified the information to declare the array slightly.
My concern comes from the fact that I get what appears to be a smudge or smear on my ChLCD array instead of the actual image. I'm guessing that I'm not reading hex values and passing hex values to the display's RAM.
Well, the PROGMEM is redundant as it's already incorporated into the prog_uint8_t type, but I don't think that's really the problem (doesn't hurt to try without it though).
Try reading the array out and printing it to the screen with Serial.println first. It's possible the problem is with the interface to the LCD, not the PROGMEM part. That part actually looks right.
Yes, I just solved the problem. It looks like I'm reading correctly from the PROGMEM, but you need to load the memory with the correct data. In my case, I found out that the KS0108 library tool writes hex values vertically, and I needed them horizontally for the Kent Display (ChLCD) that I was using.