PROGMEM Missing Data!

Hi!
I am using Program Memory to store a 2D 5x8 array of bytes, seen here:

const PROGMEM byte logos[5][8]={
  {//1:Set Time
    0b00111000,
    0b01010100,
    0b10010010,
    0b10011010,
    0b10000010,
    0b01000100,
    0b00111000,
    0b00000000
  },
  {//2:Brightness
    0b10010010,
    0b01010100,//MISSING
    0b00000000,//MISSING
    0b11010110,//MISSING
    0b00000000,
    0b01010100,
    0b10010010,
    0b00000000
  },
  {//3:Pong
    0b10000000,
    0b10000000,//MISSING
    0b10100001,//MISSING
    0b10000001,//MISSING
    0b00000001,//MISSING
    0b00000001,
    0b00000000,
    0b00000000,
  },
  {//4:Sleep
    0b00111110,
    0b00000100,
    0b00001000,
    0b00011111,
    0b00000000,
    0b11110000,//MISSING
    0b00100000,//MISSING
    0b01111000//MISSING
  },
  {//5:Logo
    0b00000000,
    0b00100010,
    0b01100110,
    0b00000000,
    0b00000000,
    0b00010010,
    0b00001100,
    0b00000000
  }
};

However, when I go to access this memory, only some of the bytes contain data (others are 0 filled, the ones labeled “missing”).
These bytes are not consecutive throughout the memory, nor in the same place within the array.
They are, however, consistently placed between uploads.

Here is how I am accessing this array:

void drawLogo(byte logo[8],char xPos,char yPos,byte scale=1,uint16_t foreground=0){
  for(byte x=0;x<8;x++){
    for(byte y=0;y<8;y++){
      if(logo[(byte)y]==0)continue;
      if(bitRead(pgm_read_byte(logo+y),7-(x)))
        tft.fillRect(x*scale+xPos,y*scale+yPos,scale,scale,foreground);
    }
  }
}

I’m new to progmem (other than F() ), so thanks in advance!

I figured out the problem.

if(logo[(byte)y]==0)continue;

Should've been

if(pgm_read_byte(logo+y)==0)continue;

I guess I was comparing the memory after the pointer to see if it was zero...
Sorry :smiley: