コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2021年10月17日 >>> 2021年10月17日
link もっと後

2021年10月17日

Might and Magic Book OneのマップID情報

目次: Might and Magicファミコン版

解析というほどでもないですが、メモがてら残しておきます。アドレス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マスだけ訪れた場合の踏破済みフラグの値は下記のようになります。

  • X 0: 0x80 0x00, 1: 0x40 0x00, 2: 0x20 0x00, 3: 0x10 0x00,
  • X 4: 0x08 0x00, 5: 0x04 0x00, 6: 0x02 0x00, 7: 0x01 0x00,
  • X 8: 0x00 0x80, 9: 0x00 0x40, 10: 0x00 0x20, 11: 0x00 0x10,
  • X 12: 0x00 0x08, 13: 0x00 0x04, 14: 0x00 0x02, 15: 0x00 0x01,

踏破済みフラグが記録されている場所はマップの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/11/08 23:43)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2021年10月17日 >>> 2021年10月17日
link もっと後

管理用メニュー

link 記事を新規作成

<2021>
<<<10>>>
-----12
3456789
10111213141516
17181920212223
24252627282930
31------

最近のコメント5件

  • link 20年6月19日
    すずきさん (04/06 22:54)
    「ディレクトリを予め作成しておけば良いです...」
  • link 20年6月19日
    斎藤さん (04/06 16:25)
    「「Preferencesというメニューか...」
  • link 21年3月13日
    すずきさん (03/05 15:13)
    「あー、このプログラムがまずいんですね。ご...」
  • link 21年3月13日
    emkさん (03/05 12:44)
    「キャストでvolatileを外してアクセ...」
  • link 24年1月24日
    すずきさん (02/19 18:37)
    「簡単にできる方法はPowerShellの...」

最近の記事3件

  • link 24年4月12日
    すずき (04/16 00:12)
    「[台湾東部沖地震に寄付] ささやかではありますが台湾東部沖地震に寄付しました。日本の赤十字社→台湾の赤十字(正式名称...」
  • link 23年4月10日
    すずき (04/16 00:10)
    「[Linux - まとめリンク] 目次: Linuxカーネル、ドライバ関連。Linuxのstruct pageって何?Linu...」
  • link 22年9月3日
    すずき (04/16 00:08)
    「[MarkDownのその向こう] 目次: Linux簡単なドキュメントやメモはMarkDownで書くことが多いですが、気合を入...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 04/16 00:12