off chip data storage

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