シオンさんがゲームオーバー時に追加した処理は、マップ番号最大値(MAX_MAP)を減らす処理ですね。 つまり、仮にマップ番号5でミスした場合、 「現在のマップ番号は5のままで、マップ番号最大値(MAX_MAP)を4にする」 という処理になります。 そして、ちょっとコードを読んでみましたが、マップ描画処理の際、現在のマップを示す変数「MAP」と、マップの最大値である「MAX_MAP」について、チェックをしていないみたいですね。 (※このチェックは、マップ選択処理の際に行っているようなので、普通は問題になりません) つまり、マップ番号最大値が4になっていたとしても、マップ番号5を指定した場合、マップ番号5のマップが描画されてしまいます。 これが、「ミスしても前のマップに戻らない」理由ですね。