PROGMEM: storing and retrieving unsigned long data

MAPGreen[][97] is two dimensional and I'm not sure why your example is specifying only one dimension. Anyhow, lets say you want MAPGreen[5][7], then you might do:

uint32_t cell_val = pgm_read_dword(&(MAPGreen[5][7]));
if (bitRead(cell_val, x)) {
   // la la la
}

You can combine the expressions, of course. I just split them out for clarity.