解析というほどでもないですが、メモがてら残しておきます。アドレス0x9eに現在のマップIDが書かれています。マップIDとマップの名前の対応は下記のとおりです。
マップID | マップ名 | マップID | マップ名 |
---|---|---|---|
0x00 | - | 0x20 | E2 |
0x01 | ソーピガル | 0x21 | E3 |
0x02 | ポートスミス | 0x22 | E4 |
0x03 | アルガリー | 0x23 | デューム城 |
0x04 | ダスク | 0x24 | ホワイトウルフ城 |
0x05 | エルキューン | 0x25 | アラマー城 |
0x06 | ソーピガルの地下 | 0x26 | ブラックリッジノース城 |
0x07 | ノーザンバリアー洞穴 | 0x27 | ブラックリッジサウス城 |
0x08 | ポートスミスの地下 | 0x28 | ドラガデューン城 |
0x09 | エルキューンの地下 | 0x29 | ドラガデューン城B1 |
0x0a | ダスクの地下 | 0x2a | ドラガデューン城B2 |
0x0b | コリンブルッフ洞穴 | 0x2b | ドラガデューン城B3 |
0x0c | ボルカノ神殿 | 0x2c | 魔法の砦B1 |
0x0d | 鷹の目洞穴 | 0x2d | 魔法の砦B2 |
0x0e | ホワイトウルフ洞穴 | 0x2e | 森のあばら屋B1 |
0x0f | A1 | 0x2f | 森のあばら屋B2 |
0x10 | A2 | 0x30 | レイバン砦B1 |
0x11 | A3 | 0x31 | レイバン砦B2 |
0x12 | A4 | 0x32 | エルドラドB1 |
0x13 | B1 | 0x33 | エルドラドB2 |
0x14 | B2 | 0x34 | エルドラドB3 |
0x15 | B3 | 0x35 | エルドラドB4(※) |
0x16 | B4 | 0x36 | アストラル世界(※) |
0x17 | C1 | 0x37 | イドの迷宮(※) |
0x18 | C2 | 0x38 | - |
0x19 | C3 | 0x39 | - |
0x1a | C4 | 0x3a | - |
0x1b | D1 | 0x3b | - |
0x1c | D2 | 0x3c | - |
0x1d | D3 | 0x3d | - |
0x1e | D4 | 0x3e | - |
0x1f | E1 | 0x3f | - |
エミュレータなどメモリ書き換えできるツールであれば、地上のマップが切り替わる地点に行って、0x9eを行きたいマップに書き換えてから移動する(C2の [12, 0] を南下するなど)と、任意のマップに飛ばせてIDとマップの対応が楽に確認できます。無効なマップ(0x00や0x38以上)には、そもそも移動できなかったりハングしたりバグったりします。
(※)0x35以上のマップはオートマッピング不可
Might and Magicのオートマッピングの踏破フラグは1マス1ビットで、0が未踏破、1が踏破済みの意味です。1マス1ビット、16ビット(2バイト)でY: 1行分、32バイトで1マップ(16 x 16)分を表しています。並び順はマップで見たときの左上から右下に向かって並んでいます。
左上からデータを並べるときは、画像処理で良く見かける座標の取り方(左上がX: 0, Y: 0、右下に向かいX, Yが増える)を良く見かけますが、Might and Magicは数学と同じ座標の取り方(左下がX: 0, Y: 0、右上に向かいX, Yが増える)なので、マップの左上は [X: 0, Y: 15] です。
このようにYの降順(15 -> 0の順)で行単位に並んでいます。Xの小さい側がアドレスの小さい側に対応、バイト内でいうとMSB側に対応します。例えば、あるX座標1マスだけ訪れた場合の踏破済みフラグの値は下記のようになります。
踏破済みフラグが記録されている場所はマップのIDがわかれば計算できます。IDがNだとすると0x6880 + (N - 1) * 0x20です。
マップID | アドレス | マップ名 | マップID | アドレス | マップ名 |
---|---|---|---|---|---|
0x00 | - | - | 0x20 | 0x6c60 | - |
0x01 | 0x6880 | ソーピガル | 0x21 | 0x6c80 | - |
0x02 | 0x68a0 | ポートスミス | 0x22 | 0x6ca0 | - |
0x03 | 0x68c0 | アルガリー | 0x23 | 0x6cc0 | デューム城 |
0x04 | 0x68e0 | ダスク | 0x24 | 0x6ce0 | ホワイトウルフ城 |
0x05 | 0x6900 | エルキューン | 0x25 | 0x6d00 | アラマー城 |
0x06 | 0x6920 | ソーピガルの地下 | 0x26 | 0x6d20 | ブラックリッジノース城 |
0x07 | 0x6940 | ノーザンバリアー洞穴 | 0x27 | 0x6d40 | ブラックリッジサウス城 |
0x08 | 0x6960 | ポートスミスの地下 | 0x28 | 0x6d60 | ドラガデューン城 |
0x09 | 0x6980 | エルキューンの地下 | 0x29 | 0x6d80 | ドラガデューン城B1 |
0x0a | 0x69a0 | ダスクの地下 | 0x2a | 0x6da0 | ドラガデューン城B2 |
0x0b | 0x69c0 | コリンブルッフ洞穴 | 0x2b | 0x6dc0 | ドラガデューン城B3 |
0x0c | 0x69e0 | ボルカノ神殿 | 0x2c | 0x6de0 | 魔法の砦B1 |
0x0d | 0x6a00 | 鷹の目洞穴 | 0x2d | 0x6e00 | 魔法の砦B2 |
0x0e | 0x6a20 | ホワイトウルフ洞穴 | 0x2e | 0x6e20 | 森のあばら屋B1 |
0x0f | 0x6a40 | - | 0x2f | 0x6e40 | 森のあばら屋B2 |
0x10 | 0x6a60 | - | 0x30 | 0x6e60 | レイバン砦B1 |
0x11 | 0x6a80 | - | 0x31 | 0x6e80 | レイバン砦B2 |
0x12 | 0x6aa0 | - | 0x32 | 0x6ea0 | エルドラドB1 |
0x13 | 0x6ac0 | - | 0x33 | 0x6ec0 | エルドラドB2 |
0x14 | 0x6ae0 | - | 0x34 | 0x6ee0 | エルドラドB3 |
0x15 | 0x6b00 | - | 0x35 | 0x6f00 | (以降、キャラクターのステータス格納場所) |
0x16 | 0x6b20 | - | 0x36 | 0x6f20 | - |
0x17 | 0x6b40 | - | 0x37 | 0x6f40 | - |
0x18 | 0x6b60 | - | 0x38 | - | - |
0x19 | 0x6b80 | - | 0x39 | - | - |
0x1a | 0x6ba0 | - | 0x3a | - | - |
0x1b | 0x6bc0 | - | 0x3b | - | - |
0x1c | 0x6be0 | - | 0x3c | - | - |
0x1d | 0x6c00 | - | 0x3d | - | - |
0x1e | 0x6c20 | - | 0x3e | - | - |
0x1f | 0x6c40 | - | 0x3f | - | - |
マップIDと対比しやすくするため、あえて詰めず同じ並びにしておきました。オートマッピングが無効なマップは2つのグループがあって、1つ目はバーン地上エリア全域20マップです。このメモリ領域は別の用途に使われているようですが、何の用途か良く知りません。もう1つのグループはエルドラドB4、アストラル世界、イドの迷宮で、キャラクターステータスの格納場所となっています。
< | 2021 | > | ||||
<< | < | 10 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | - | 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | - | - | - | - | - | - |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.2.15.
using GD bundled (2.1.0 compatible)(png support.)