ドルアーガの塔(MSX)を改造しよう

「ドルアーガの塔」の各フロアのマップは、乱数のシード値を1つ与えているだけで、あとはプログラムで自動的に迷路を作っている

…というのは有名な話ですが、実は MSX版の「ドルアーガの塔」は乱数など使わず、マップデータが全てそのままROMに載っています。

ファミコン版のマップをそのままコピーしているらしいのですが、なぜか 49階 に 50階のデータがコピーされており、これは明らかに開発時のミスのような気がします。

というわけで、49階をファミコンと同じ形状にする改造です。

「ドルアーガの塔」のROMイメージを吸い出して、先頭からのオフセットが +6C4DH 以降を赤字のように書き換えます。

OFFSET 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ---------------------------------------------------------- +6C40H 09 09 09 0A 09 0A 09 09 0A 09 09 09 0B 00 01 02 +6C50H 01 02 01 02 01 01 01 01 01 01 01 01 01 03 04 10 +6C60H 16 11 0E 11 13 0D 15 11 11 14 12 14 15 11 06 05 +6C70H 0D 0D 1A 18 0C 15 11 0F 13 1A 0E 14 16 0E 13 07 +6C80H 04 11 11 0F 0F 0F 0E 18 12 10 1A 18 1A 11 13 15 +6C90H 06 04 0E 13 0D 15 14 16 18 15 11 13 16 0F 13 15 +6CA0H 0E 06 04 0E 14 15 0E 0E 14 16 18 0C 12 14 0D 19 +6CB0H 17 16 06 04 0E 0E 13 16 13 16 11 0F 0F 11 13 12 +6CC0H 0F 11 11 06 08 0A 0A 09 09 09 09 0A 09 09 0A 09 +6CD0H 09 09 0A 0A 0B 00 01 01 01 01 01 01 02 01 02 01

これで 49F がファミコン版と同じ形状になります。エミュレーターや FLASH ROM に焼くなどしてお楽しみください。

マップデータについて

マップチップ

各フロアのマップデータは、以下のチップ(00H-1AH)の組み合わせで作られます。
00 01 02 03
04 05 06 07
08 09 0A 0B
0C 0D 0E 0F
10 11 12 13
14 15 16 17
18 19 1A

マップデータのROMアドレス

各フロアのマップデータは、以下のアドレスに横17x縦8の136バイトずつ格納されています。
OFFSETフロア
+52CDHFLOOR 1
+5355HFLOOR 2
+53DDHFLOOR 3
+5465HFLOOR 4
+54EDHFLOOR 5
::
+6C4DHFLOOR 49
+6CD5HFLOOR 50
::
+7115HFLOOR 58
+719DHFLOOR 59
+7225HFLOOR 60

FLOOR 1 のデータ

0002010101010102010202010101010203
040F140D0D15110F110F0F101510150F06
04110E10151816101A14191513191A1007
051A180D160F14150E0F0F0E14160E1007
040E130D0D1916181614150E0E14161106
040F10190D1712130D160E131618121307
0512141611101511100D16100D0C121007
08090A090A090A0A09090909090A09090B

DEEP! P6! DEEP! MSX! に戻る