>>135
ある程度、憶測+元イメージ重視で答えますので、
マズいと思われる箇所については、適当に解釈されるか
ご指摘ください。
とりあえず思いついたのは以下の通りです。

**方法1**
マップチップサイズを32*32のみにして組み合わせ。データ量4倍。
あるいは16*16のみにして組み合わせ。データ量16倍。
あるいは8*8にして組み合わせ。データ量64倍、等。
と、メモリ節約のために、
MapTableの要素をビットで持つ。
他の手軽な方法として、当たり判定処理が必要ない領域の
マップデータをあらかじめ用意する(あるいは、そもそも扱わない)等。

**方法2**
マップチップ構造体{ サイズ; int フラグ; その他; };

マップチップ構造体 MapTable[MAX_MAP_SIZE];

for(int i = 0; i < MAX_MAP_SIZE; i++){
if(MapTable[i].フラグ){
当たり判定処理(&MapTable[i].サイズ, その他いろいろ);
}
}

**方法3**
マップナンバー別に判定処理用のコードを書く。
ただし、ここまで複雑な処理呼び分けの責任を
マップチップに持たせるのが妥当かどうかは、大いに疑問。