GB your solution of crunching the data is intriguing, but i think its a little above my level at the time, i will defiantly come back to that idea when i have a bit more programming skill.
Bit packing is straightforward, and probably less complex than getting the off-chip storage to work.
for example, you could have something like
boolean maze[31][31];
unsigned long mazebits[31]; // same number of values as maze[31][32]void setup() {}
void loop ()
{
int row = 7;
int column = 23;
boolean val;maze[row][column] = true;
bitWrite(mazebits[row], column, true);maze[row][column] = false;
bitWrite(mazebits[row], column, false);val = maze[row][column];
val = bitRead(mazebits[row], column);maze[row][column] = val;
bitWrite(mazebits[row], column, val);
}
Use bitWrite(), and bitRead() to handle a boolean value in the "row" of values.
mazebits[] is only 31*4 (size of long) = 124 bytes because each value of true or false is packed into 1 bit.
HTH
GB