コグノスケ


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

link もっと前
2021年10月17日 >>> 2021年10月4日
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 この記事にコメントする



2021年10月16日

Might and Magic Book Oneのルート大幅更新

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

Might and Magicの攻略サイトを眺めていたら、ゲーム進行を大幅に高速化できる仕掛けを見つけました。エリアC1にある「魔力がみなぎる泉」(一時的に全員の魔法レベルMLが最大の7になる)です。

エリアC1の攻略情報は何回も見ていたのに、全然気づいていませんでした。TASVideosに投稿した矢先にこんなことに気づくとは。うーむ。

ML7になると全魔法が使えるようになりますから、魔法使いML3「ひこう」とML6「つうか」、僧侶ML6「まちへ」を利用して大幅にショートカットできます。ML7になる効果は「やすむ」と消えますがTASでは「やすむ」必要がありません。マップ移動と戦闘では効果解除されないので、実質、ゲームクリアまでML7を維持できます。これは素敵だ。

MPが足りない!

問題はLv.1ゆえにMPが少ないことです。初期キャラの魔法使い、ユーリエール(MP 10)でも「ひこう(消費MP3)」と「つうか(消費MP6, GEM 4)」でMPがなくなります。MPを増やしたり回復する手軽な方法はなさそうなので、他のキャラクターも魔法使いに転職させ、なるべく高いMPの初期値(「ひこう」が2回使える、6以上)を引き、頭数でゴリ押ししかありません。

あと「ひこう」の欠点、町から町に飛べない点を補うため、僧侶も1人仲間に入れて、僧侶ML6「まちへ(消費MP6、GEM 4)」を使います。

時間が掛かるルートを潰すことを重視して「まちへ」を1回、「ひこう」を5回で試しました。内訳は、

  • 手紙の後、ダスク → アルガリー(ゾムザム兄弟)
  • ゾムザム兄弟の後、B3 → C1(ゴールデンバウム、ルビーの笛)
  • ルビーの笛の後、C1 → B3(魔法の砦、金の鍵)
  • 金の鍵の後、B3 → A2(パルセラ、貴族のパスポート)
  • 貴族のパスポートの後、A2 → A1(デューム城)
  • デューム城の後、A1 → E3(アラマー城)

GEMはコリンブルッフで20個手に入るので「つうか」「まちへ」「転送x6」でも消費数は14個で、十分お釣りが来ますが、GOLDと違ってGEMは足りない時に1人に集める方法がありません。所持数4個未満になる分け方をすると「つうか」も「まちへ」もGEM不足で使えなくなり(どちらも消費GEM 4)、GEMを持っている意味がなくなります。

魔法はGEMがないと「つかえません」と冷たく言われるだけですけど、ソーピガルの転送おじさんは挙動が違います。基本的には先頭の人からGEMを1つ持っていきますが、先頭の人がGEM 0だったら次の人から持っていくみたいです。分け方を気にしなくて良いんだ、便利じゃん……。

要検討項目

今回紹介するルートはおそらく最速ではないです。下記は思いついたアイデア。

  • 5人より6人の方が早そうだが、デメリット(ソーピガル宿屋、転職、オーラのクエストの時間が増える)分をメリットが超える必要がある。
  • 魔法使いか僧侶を1人増やすとして「ひこう」2回or「つうか」1回or「まちへ」1回のどれが良いか?
  • 「ひこう」2回: エリアB3 → A4とA4 → C4あたりが使いどころか?でもA4, C4は着地点が目的地から遠くて微妙。
  • 「つうか」1回: エリアA2, A1か、デューム城の [7, 5] で北に抜ければ、フック付きロープ要らない。
  • 「まちへ」1回: 使いどころがなさそう。
  • GEM 20個、6人でどう分けるか?取った直後に1 : 1 : 1 : 3 : 3 : 3に分ければGEM 4個持った人が3人作れる?

たぶん6人の方が早くなると思うんですけど、パーティー人数変えるときは、ほぼ最初からやり直しでしんどい(エンカウントの調整、タイミングのズレ修正が辛い)ので、まだ試していません。

攻略ルート更新版(序盤の準備)

下記では試作した更新版5人パーティーのTASで使った攻略ルートを簡単に説明します。まずは準備です。

5人パーティー
宿屋で4人(騎士ミラード、弓使いギデオン、魔法使いユーリエール、僧侶ガーデニア)を加えます。
盗賊への転職
ソーピガルの町の [X: 2, Y: 13] にあるギルドに行き、転職で主人公を盗賊にします。Lv.1クリアには盗賊が必須です。盗賊以外は扉の鍵が解除できず、先に進めません。Might and Magicはさ、どうぞどうぞ、と投げ出されたイベントアイテムにすら罠が仕掛けられている鬼畜仕様のため、アイテム拾いにも盗賊が必須です。
魔法使いへの転職
引き続き転職で魔法使い以外の2人(ミラード、ギデオン)を魔法使いにします。「ひこう」の回数を稼ぐため、MP 6以上を狙います。MP 9の方が嬉しいですが、転職で初期MP 9は出ないっぽい……。最初から魔法職のキャラクターはMP 10固定とLv.1にしてはMPが高いので、魔法使い、僧侶の2人(ユーリエール、ガーデニア)は転職させず使います。
  • 主人公: 騎士→盗賊
  • ミラード: 騎士→魔法使い(MP 6以上に調整)
  • ギデオン: 弓使い→魔法使い(MP 6以上に調整)
  • ユーリエール: 魔法使い(変更なし、最初からMP 10)
  • ガーデニア: 僧侶(変更なし、最初からMP 10)
ソーピガルからの脱出
ソーピガル → ソーピガル地下 [14, 0] → ノーザンバリアー洞穴 → 地上エリアC2の経路で移動し、町の外に出ます。ソーピガルの町の出口から出たいところですが、Lv.1で出口に行くと衛兵に「未熟者」と言われて追い返され、ソーピガルの町から出してくれません。
アイスプリンセスのクエスト(ダイヤの鍵)
C2 → C1 → B1 → B2の経路で移動し、[4, 4] にいるアイスプリンセスの問いに答えると、革袋がもらえて、中にダイヤの鍵が入っています。このクエストだけ、なぜか「さがす」必要はありません。ダイヤの鍵はテレポート20回分の魔法が込められていて、とても便利な移動手段です。C2 → B2は近道に見えますが、残念ながらアイスプリンセスに辿り着く道がありません。B3へはエンカウント+逃げるで南に抜けますが、2歩西に行ってテレポートが早いかな?微妙ですね。
GEMの入手
B2 → B3 → コリンブルッフ洞穴にいき、ダイヤの鍵を使ったテレポートで宝箱([1, 1] [0, 3] [1, 5] のどれでもOK)の真上に飛びます。アイテムはクリアに不要ですが、一緒に手に入るGEMは「つうか」「まちへ」の魔法、ソーピガルの転送おじさんなどに使います。クリア時間短縮に欠かせない存在です。
  • テレポート: 宝箱行き、ポータル行き、計2回

Might and Magicのメインクエスト(手紙、兄弟、真のアラマー王)

メインクエストを解く順番は変えていませんが、地上をちんたら歩いていた部分を「ひこう」で積極的にぶっ飛ばします。

手紙のクエスト(手紙 その1)
コリンブルッフ洞穴 → ソーピガル地下 [1, 2] へ行きコーラックからクエストを受けます。テレポートで強制エンカウントのマスや壁を全部無視すると早いです。エルキューンのアガールに手紙を渡してくれと言われます。
  • テレポート: コーラック行き、計1回
手紙のクエスト(手紙 その2)
ソーピガル地下 → ソーピガル →(転送)→ エルキューンの経路で移動します。転送というのは、ソーピガル [11, 3] にいるおじさんのこと(GEM 1個でどの町でも送ってくれる)です。宿屋の奥 [4, 3] にいるアガールに手紙を渡すと、別の手紙を渡されてダスクのテルゴランに渡してくれと言われます。
フック付きロープ
エルキューンの店で「ガラドリエルのめぐみ」を5000Gで売り払って「フック付きロープ」を10Gで買います。デューム城で使うので、その前に買えばOKですが、ソーピガルは店の近くに行かないし、ポートスミスは宿と店が遠くてイマイチ。
  • エルキューン [3, 9]: フック付きロープ
ML7の泉
エルキューン → B1 → C1の経路で移動します。テレポートを使って一時的に全員ML7(最大)になる泉に行きます。
  • C1 [9, 14]: 魔力がみなぎる(一時的に全員ML7になる)泉。
  • テレポート: 泉行き、計1回
オーラのクエスト
C1 → C2 → ソーピガルの経路で移動します。道すがら別のクエストを進めます。
  • C2 [8, 8]: 占いオババと会いオーラの色を調べます。後のクエストで聞かれる(さんごの鍵)のでメモをお忘れなきよう。
手紙のクエスト
ソーピガル →(転送)→ ダスクの経路で移動します。テルゴランは迷路の先 [8, 0] にいます。この町はテレポート無効なので、地道に歩きましょう。テルゴランに手紙を渡すとアルガリーのゾム、ポートスミスのザムの兄弟に会ってくれと言われます。
兄弟のクエスト
ダスク →(まちへ)→ アルガリー → ポートスミスの経路で移動し、兄弟に会います。歩いて会おうとすると大量の強制エンカウントで時間が掛かるので、テレポートで全部飛ばします。ゾムザム兄弟はどちらが先でも良いですが、ポートスミス → アルガリーだとポータルもなく移動も辛いので、アルガリー → ポートスミスがおススメです。
  • アルガリー [1, 1]: ゾム
  • ポートスミス [12, 2]: ザム
  • テレポート: ゾム、ザム、計4回
  • まちへ: ダスク → アルガリー、計1回
市民のパスポート、兄弟のクエスト(ルビーの笛)
ポートスミス → B3 →(ひこう)→ C1の経路で移動します。C1 [7, 7] でゴールデンバウムという金ぴかの木を見て、ゾムザム兄弟の伝言通りに歩き [15, 15] へ行くと、ルビーの笛が沸いてきます。基本的に「さがす」しないとモノが手に入らないゲームですが、このクエストだけ「さがす」をする必要がありません。変なクエスト……。
  • C1 [5, 7]: 市民のパスポート(城に入るために必要)を取る、馬車を調べるか?に「はい」、その後「さがす」です。
  • C1 [7, 7], [15, 15]: ゴールデンバウムとルビーの笛です。
  • ひこう: B3 → C1、計1回
真のアラマー王のクエスト(金の鍵)
C1 →(ひこう)→ B3 → 魔法の砦の経路で移動し、魔法の砦B2の [3, 4] にいる犬の像まで行きます。テレポート活用が吉です。犬の像と話した後に「さがす」と金の鍵が拾えます。デューム城で使います。
  • テレポート: B1, B2、計2回
真のアラマー王のクエスト(貴族のパスポート)
B3 →(ひこう)→ A2の経路で移動し、迷路の奥 [0, 15] にいるドルイドのパルセラの問いに「はい」と答えた後に「さがす」と貴族のパスポートが拾えます。アラマー城で使います。エリアA2はテレポートが使えないので地道に歩きましょう。
  • ひこう: B3 → A2、計1回
真のアラマー王のクエスト(ゴロスのめだま)
A2 →(ひこう)→ A1 → デューム城の石垣 → デューム城内部の経路で移動します。エリアA1もテレポートが使えないので、地道に歩きますが、[15, 10] を北向きに「つうか」でエンカウントと迷路をショートカットします。それでも結構長いです。
  • A1 [7, 14]: デューム城の石垣、内部への入り口です。
  • デューム城 [8, 5] [6, 6] [7, 10]: 壁の外に押し戻される罠(三カ所)、フック付きロープで飛び越えましょう。
  • デューム城 [7, 7]: 金の鍵を持たずに行くと扉に吹き飛ばされます。
  • デューム城 [7, 8]: 真のアラマー王と話した後「さがす」と「ゴロスのめだま」を拾えます。
  • ひこう: A2 → A1、計1回
  • つうか: [15, 10] → [15, 9]、計1回
ニセのアラマー王の正体クエスト
デューム城 → A1 →(ひこう)→ E3 → アラマー城の経路で移動します。アラマー城に入るにはハレーショにパスワードを聞いて、ライオンのレリーフに答える必要がありますが、テレポートで無視して入り口 [14, 7] に直行できます。必要なアイテムを所持していればニセのアラマー王に「正体を見破ったな」と言われ、イドの迷宮に飛ばされます。
  • 市民のパスポート: 持たずに入り口に行くと、衛兵に追い返されます。
  • 貴族のパスポート: 持たずに王の部屋の前に行くと、衛兵に追い返されます。
  • ゴロスのめだま: 持たずにニセのアラマー王に会うと、クリア不能クエストを押し付けられます(僧侶の「ちゅうし」でキャンセルするしかない)
  • テレポート: アラマー城の入口へ、計1回
  • ひこう: A1 → E3、計1回
イドの迷宮
英語版だとSoul Mazeですが、日本語版は「イドの迷宮」という全然違う名前で、ニセのアラマー王のセリフ「ソウルメイズの地に監禁」が意味不明に見えます。訳を間違ったのかなあ……?本来はマッピングしてパスワードを知ります。「いちをしる」魔法が使えないため、マッピングの難易度は高いです。しかしパスワードは固定なので正解を知っていれば瞬殺です。クリア後はソーピガルに戻されます。

以上がMight and Magicの世界に起こった事件と、その謎に迫るメインクエストを超スピード解決する手順となります。初めてプレイする方がこの手順でクリアすると、たぶん訳が分からないと思います。

お時間がある方は、攻略サイトを見ながらでも構わないので、金の板や町のヒント、囚人たちなどに出会い話すと、しっかり作られた世界感が味わえると思います。

Might and Magicのメインクエスト(オーラ、アストラル世界)

もう一つのメインクエストの流れです。オーラのクエストは、ストーリーにはあまり関係ないです。ラストダンジョンの歯ごたえを増すためのクエストという感じです。アストラル世界は全てのストーリーの終着点で、ああ、そういうことだったんだ!と思うはずです。

オーラのクエスト(さんごの鍵)
ソーピガル →(転送)→ ポートスミス → B3 → B4 → A4の経路で移動します。[4, 6] にいる老人に、各キャラクターのオーラの色を答えます。オーラはエリアC2の占いオババに教えてもらった色です。正解すると [4, 2] に飛ばされるので、その場で旋回(移動しちゃダメ)、「さがす」で「さんごの鍵」を拾えます。
  • テレポート: 老人の前へ、計1回
オーラのクエスト(金色のオーラ)
A4 → B4 → C4の経路で移動します。先頭のキャラクターにさんごの鍵を持たせて [7, 2] で南を向くと、ボルカノ神殿に入れます。ボルカノ神殿 [7, 11] の火山の神に「なぞ」を出してもらって、答えると「金色のオーラ」にしてもらえます。ボルカノ神殿の入り口のある島は、テレポートで入れますが、テレポートで出ることはできません。注意。
  • テレポート: ボルカノ神殿入口へ、計1回
オーラのクエスト(キーカード)
C4 → B4 → A4の経路で移動します。[4, 6] にいる老人に会うと、また [4, 2] に飛ばされるので、その場で旋回、「さがす」で「キーカード」を拾えます。
  • テレポート: 老人の前へ、計1回
アストラル世界
ゴロスのめだまを使ってアストラル世界に飛びます。壁がほぼすべて透明のバリアで構成されている鬼畜が考えたダンジョンです。迷ってしまったら敵から逃げれば、かならずスタート地点の [7, 0] に戻れるので、敵を倒すばかりでなくうまく使いましょう。
  • 5カ所の封印: [4, 6] [4, 10] [7, 14] [10, 10] [10, 6] にある封印を解除します。解除するたびに敵が出ます。
  • [7, 10]: ドア、キーカードで開きます。
  • [7, 8]: 「やすむ」と次に進みます。イドの迷宮をクリアしている必要があります。
  • [6, 7]: コーラックがいます。世界の果てに行けと言われ、ソーピガルに戻されます。
世界の果て
ソーピガル →(転送)→ エルキューン → B1の経路で移動します。[4, 15] にある世界の果てに行くとゲームクリアです。最後にBook Twoに続く!と出ますが、Book Twoはファミコンでは発売されませんでした。悲しい。スーパーファミコン版が発売されているようです。
編集者:すずき(2021/11/08 23:43)

コメント一覧

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



2021年10月15日

初めてTASVideosに投稿

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

そろそろ改善できそうな点がなくなったので、18m43s版をTASVideos(サイトへのリンク)に投稿(TASVideos submissions: #7229: katsuster's NES Might and Magic in 18:43.92)しました。

私もあまり詳しい訳じゃないし、TAS動画の集まる有名サイトってくらいの認識しかなくて、仕組みを知りませんでした。投稿にあたりHow toを読んだ限りでは、下記のような仕組みみたいです。

  • 投稿するとNew状態になる
  • フォーラムでサイトのメンバーが投票する(Yes, No, Mehの3つ)
  • フォーラムでは投票以外にも、質問とか、説明の不足などの指摘もあるとのこと
  • 欠陥があるTAS動画は落とされるらしい
  • イイね!となったらPublishされる

YouTubeにTASVideosの投稿者名でTAS動画が投稿されていますが、あれはPublishされた動画のみです。ま、そりゃそうか。

編集者:すずき(2023/09/24 12:31)

コメント一覧

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



2021年10月14日

Might and Magic Book One TASは移動が全て

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

Might and MagicのTAS動画を作るときは戦闘を全く行わない(全部逃げる)ので、いかに最速で移動するか?の勝負になります。もはやRPGとは何だったのか……?という感じですが、TASならこんなもんでしょう。キー入力の基本ルールとして、

  • キー入力可能区間と、禁止区間がある
  • キー入力後、入力禁止区間が始まる(長さは後述)。
  • キー入力可能区間なら、キーを1フレーム押してすぐ離せば認識される(複数フレームに渡って押し続ける必要がない)
  • 同じキーをもう一度入力するには、キー入力を認識する区間が始まった後「最低1フレーム以上空ける」必要がある

最後のルールがわかりにくいと思うんで、画像で紹介します。


1フレーム空けて(6523フレーム目)同じキー入力をすると認識する


1フレーム空けずに同じキー入力をすると認識しない


1フレーム空けなくても、違うキー入力ならば認識する

一番わかりやすい例を挙げると、開けたマスへ前向きに移動する場合です。↑キーでもBキーでも前に進めますが、ルールを勘案すると↑を連打、もしくは、Bを連打(1フレーム空けなければならない)より、↑とBを「交互に連打」した方が速いです。面白いですね。

前向き1マスの移動につき1フレームずつ差が出ます。微々たる差ですが、歩くシーンは多いため意外と効きます。

入力禁止期間

キー入力を受け付けた後に、何フレーム入力禁止になるか?をまとめておきます。先ほどの画像で言うと赤くなっているフレームの数です。

Might and Magicはキー入力チェックと画面描画が全く同期していないせいなのか、入力禁止期間が ±1フレーム変化します。しかも頻繁に変化します。通常プレイなら気に留める必要すらないことです。が、TASは1フレームしかキーを押さないので、1フレームズレるだけで入力が認識されなくなり、めっちゃウザいです……。

基本的な移動

まずは前後左右などの移動方法を紹介します。左右旋回は前後直進の倍時間が掛かります。特に入口、出口、イベントなどは特定の方向しか発生しない場合が多いので、なるべく旋回せずに済むルートを構築しましょう。

前へ移動(↑ or Bキー)
基本的な移動方法です。Might and Magicの歩きは意外に速くて、テレポートする時間で40マスくらい進めてしまいます。迷路、強制エンカウントなどのない場所なら、歩きが最速の移動方法です。
  • 障害物なし: 8〜9フレーム
  • 障害物あり: 3〜4フレーム(乱数振り直しが発生しない)
後ろへ移動(↓キー)
前向きと同じ速度ですが、↑とBを交互に押して速く移動する技は後ろ向きだと使えません。加えてドアや通り抜けられる壁を通過できませんので、基本的には使わないでしょう。テレポート後など、旋回せず交差点に行ける場合に使うことがあるくらい。
  • 障害物なし: 8〜9フレーム
  • 障害物あり: 3〜4フレーム(乱数振り直しが発生する)
左、右旋回(←、→キー)
どちらも同じ速度で、18〜19フレームです。遅いとは言いませんが、速くもないです。戦闘の前後、マップ移動の前後でパーティーの向きが変わらないことをうまく活用し、旋回する回数をなるべく減らしましょう。迷路のマップはどうしようもないですが……。
メッセージ(スキップなし)
スキップしない場合はGO AHEAD! のメッセージウインドウが閉じる、新たなメッセージウインドウが開く、というエフェクトを待つので88フレームほどかかります。意外と長いです。
  • 入力禁止: 5〜6フレーム
  • 閉じる: 24フレーム(スキップ可能区間)
  • 入力禁止: 24フレーム
  • 開く: 24フレーム(スキップ可能区間)
  • 入力禁止: 10フレームくらい、メッセージの長さに依存
メッセージ(スキップあり)
スキップ成功した場合はGO AHEAD! のメッセージが消え、新たなメッセージが上書きされる、という過程を経ます。GO AHEAD! が閉じようとするときにメッセージスキップできた場合が一番速いです。55フレームくらい(30フレーム高速化)です。
  • 入力禁止: 5〜6フレーム
  • スキップまで: 24フレーム以下(スキップ可能区間)
  • 入力禁止: 25フレームくらい、メッセージの長さに依存
マップ移動
メッセージ2回+エフェクトなので時間が掛かります。できるだけマップ移動は避けた方が早くなりますが、Lv.1は移動方法に制約が多く、どうしてもマップ移動が増えます。悩ましいです。

長距離移動その1: テレポート(ダイヤの鍵)

罠や壁を無視、強制エンカウントマスを無視して目的地に飛べます。歩きでは侵入できない場所にも行けるため、必須の魔法です。

  • メニューオープン: 1 + 32フレーム
  • アイテムメニュー選択: 6〜8フレーム(↓→ Aを最速で入力)
  • 使用者リストオープン: 15フレーム
  • 使用者選択: 2フレーム(Aが連続で押せない、1フレーム待たないとダメ)
  • 装備リストオープン: 39フレーム
  • カーソル移動: 16フレーム(↓を6回入力、毎回カーソル描画1フレーム発生)
  • バックパックリストオープン: 33フレーム
  • アイテム選択: 1フレーム(一番上にあると最速)
  • 魔法エフェクト: 53フレーム
  • 方角選択: 3〜12フレーム(↓↓↓Aなど、Aのみで済む「北向き」が最速)
  • 描画待ち: 11フレーム
  • 距離選択: 1〜16フレーム(↑↑↑ or ↓↓↓...Aなど、Aのみで済む「1ブロック」が最速、なぜか↑キーより、↓キーの方が1フレームずつ速い)
  • 移動エフェクト: 240フレーム

非常に便利な反面453〜フレームと長い時間を要するのが欠点です。迷路の構造によっては歩いたほうが速い時もあります。

長距離移動その2: エンカウント+逃げる

なんとLv.1で使える長距離移動の手段では最も速い(230〜フレーム)です。マップごとに固有の地点にしか行けないこと、乱数調整があるので必要フレーム数が不安定なことが欠点ですが、下手なテレポート+歩きよりずっと速いので、使える場所では積極的に使いましょう。

Might and Magicはエンカウント率がかなり低めなので、当てずっぽうだと1度エンカウントするだけで試行回数が数百回を超え、めっちゃしんどいです。正直やってられませんでした。リバースエンジニアリングしてエンカウント予測できるようなってからというもの、気軽にエンカウント+逃げが使えて、TAS作成時に非常に役立ちました。技術力の勝利。

  • 出会うまでの調整: 10〜フレーム(カウンタ次第で100フレームほどもありえる)
  • モンスターが近づいてきた: 130〜フレーム(移動方法により速度が違う、最速は後ろ向き移動で壁に激突)
  • 戦闘メニュー: 16フレーム
  • 逃げる選択: 7〜フレーム(カウンタ次第で失敗する、調整必要だが大抵10フレームあれば収まる)
  • 画面切り替え: 50フレーム

モンスターとの出会い方は3種類あります。

  • 戦うかどうか選択
  • 通常(逃げられる)
  • 「おそいかかってきた」メッセージ+強制的に戦う(ほぼ逃げられない)

通常エンカウントが最速です。選択肢が出るタイプは時間が掛かり、「おそいかかってきた」は逃げられません、どちらも論外です。3種を振り分けるルールが解析できていませんが、幸いにも通常戦闘の発生率が一番高いみたいで、さほど試行錯誤は必要ありませんでした。

編集者:すずき(2021/11/08 23:42)

コメント一覧

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



2021年10月12日

nostdlibとnostartfiles

目次: GCC

コンパイラの-nostdlibと -nostartfilesの効果についてメモしておきます。確認方法は簡単で、gccに -vオプションを付けるだけです。

結果が大量に出力されるので、collect2のオプションのみ抜粋して、さらに今回の話題と関係ない余計なオプションは省きます。

gcc -staticの場合
/usr/lib/x86_64-linux-gnu/crt1.o
/usr/lib/x86_64-linux-gnu/crti.o
/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginT.o
AAAAA.o
--start-group
  -lgcc
  -lgcc_eh
  -lc
--end-group
/usr/lib/gcc/x86_64-linux-gnu/9/crtend.o
/usr/lib/x86_64-linux-gnu/crtn.o

初期化を行うcrt1, crtiと、終了時の処理を行うcrtend, crtnが暗黙のうちにリンクされています。また -lgccや -lcといったCライブラリ系も暗黙のうちにリンクされます。

gcc -static -nostartfilesの場合
AAAAA.o
--start-group
  -lgcc
  -lgcc_eh
  -lc
--end-group

先ほどの結果と比べるとcrt何とかが全部消えましたが、-lgccなどは健在です。Cライブラリ関数は使えますが、crt何とかが呼んでくれていたmainが呼ばれなくなります。代わりに _startという関数を定義せよと言われます。

gcc -static -nostdlibの場合
AAAAA.o

暗黙のうちにリンクされるオブジェクトやライブラリが全てなくなりました。printfのようなCライブラリ関数も使えなくなります。

編集者:すずき(2023/09/24 11:45)

コメント一覧

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



2021年10月11日

freestandingとnostdlib

目次: GCC

コンパイラオプションで-ffreestanding -nostdlibを指定したときと、-nostdlibだけを指定したときの挙動の違いをメモしておきます。

テストプログラム
int printf(const char *a, ...);

void _start(void)
{
        printf("\n");
}

おそらくこの例がわかりやすいと思います。-ffreestanding -nostdlibの場合は「freestanding環境」をしてします。C言語の規格ではhostedとfreestandingの2つが定められていて、hostedは全ての標準ライブラリ関数が使える環境、freestandingは標準Cライブラリが存在しない環境(※)を意味します。OSのない環境などを想定しています。

このときprintf() は素直にprintf() 関数の呼び出しとしてコンパイルされます。したがって、

freestanding環境、nostdlibでのコンパイル、リンク結果
$ gcc -g -Wall -ffreestanding -nostdlib a.c

/usr/bin/ld: /tmp/ccclc296.o: in function `_start':
a.c:4: undefined reference to `printf'

リンクエラーも「printfがないよ」となります。これはnostdlibを指定しているので、暗黙のうちにリンクされる標準Cライブラリ(-lc)すらもリンクされないからです。

一方、ffreestandingを指定しない場合は、標準Cライブラリが存在するものとして最適化が働きます。この例で言えば、printf("\n"); はputchar('\n') に置き換えた方が良いね!という最適化が働きます。したがって、

hosted環境、nostdlibでのコンパイル、リンク結果
$ gcc -g -Wall -nostdlib a.c

/usr/bin/ld: /tmp/ccZ5E2Qq.o: in function `_start':
a.c:4: undefined reference to `putchar'

リンクエラーは「putcharがないよ」となります。

(※)標準ヘッダのうちfloat.h, iso646.h, limits.h, stdarg.h, stdbool.h, stddef.hのみ使えます。
正確な意味が知りたければ、C99 draft TC3 (N1256) 4.Conformanceの6. を参照ください。

どちらを使うか

どちらが良いとかではなくて、作りたいシステム次第です。

標準Cライブラリを使わず、CライブラリのAPIを前提とした最適化をされると困るなら、-ffreestandingを指定しなければなりません。コンパイラが抱えているCライブラリの代わりに、あえて別の標準Cライブラリ準拠のライブラリを使う(つまりfreestandingではない)ときは、-ffreestandingは使わず -nostdlibだけの方が実行速度などで有利だと思われます。

編集者:すずき(2023/09/24 11:44)

コメント一覧

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



2021年10月10日

Might and Magic Book One TASタイム短縮の記録

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

いくつか改善を盛り込んで19m30sになり、さらにもう一工夫で1分半以上早くなって18m43sにできました。YouTubeにも載せておきました([TAS] NES Might and Magic Book One (J) 18:43 - YouTube)。

基本的なルートは当初から変えていません。最初のバージョンからの変遷23m30s → 20m28s → 19m30s → 18m43sを見ると、5分くらい無駄を削ったことになりますね。

最初のバージョンを作ったときは、3〜4分は削れそうだけど19分切るのは無理かな〜?と思ってましたが、意外と早くなってびっくりです。でも、そろそろ限界を感じるのでここらで打ち止めにします。

改善点の解説

前のバージョン(19m30s版)では、持ち物が溢れるので2人パーティーでクリアしましたが、実は1人旅でも問題ありません。Might and Magicは必須アイテムでも容赦なく捨てられるからです。

例えば、ゴロスの目玉を手に入れるとき、フック付きロープはもちろん、その時点で用済みとなった必須アイテム(金のカギ、ルビーの笛)も捨てて構いません。

改善点の一覧はYouTubeの説明と同じになりますが19m30s版では、

  • 無駄にエルキューンに寄っていた箇所を削った
  • 2人パーティーにした(オーラ関連のクエストが短くなる)
  • メッセージスキップする個所を増やした

次の18m43s版では、

  • 1人パーティーにした
  • コリンブルッフ洞穴 → ソーピガルの町の地下に直接飛ぶようにした(町を経由する必要がない)
  • A4エリアのテレポートをやめた(歩きの方が早い)
  • 魔法の砦のテレポートを2回減らした(歩きの方が早い)

これ以上を目指すなら、劇的にルート改善するか、メインクエストを飛ばすようなバグがないと厳しそうです。

失敗の記録

Might and MagicのTASに挑みたいという奇特な方が居るとはあんまり思えないんですけど、将来の参考のために「やったけどダメだったこと」も残しておきます。

失敗その1、コリンブルッフ洞穴ではなく、エルキューンの町でGEMを取るルート。

エルキューンは宝物を「ぬすむ」とGEMが取れます。GEMを得るまでは早いんですが、エルキューンからソーピガルに帰る時間が掛かるので、総合では遅いです。Might and Magicは町同士が絶妙に離れた嫌らしい場所にありますね。良くできてるじゃん……。

失敗その2、コリンブルッフ洞穴 → デューム城のポータルでエリアA1を無視するルート。

エリアA1はテレポート使用不可のMAPで、迷路が非常に長くて時間が掛かります。コリンブルッフ洞穴からデューム城に行けば、大きく時間削減できるのでは?と期待しましたが、エリアA1の巧妙な仕掛けに阻まれて実現不可能でした。

デューム城はざっくりいうと外部と内部に分かれていて、クエストで用事があるのは内部です。コリンブルッフ洞穴のポータルから行くと外部に着きます。外部から内部には「つうか」の魔法があれば行けます。しかしながらLv.1のキャラクターで「つうか」の魔法を使う容易な方法はないです(少なくとも私は知らない)。

エリアA1に一度出て、デューム城内部に入ろうとしてもダメで、エリアA1の迷路開始点 [15, 7] を踏まないと、デューム城内部へ行く入り口(石垣の隙間 [7, 14])が出現しない仕掛けになっていました。コリンブルッフから来ても、エリアA1の迷路を歩かないと、デューム城内部には入れません。そうか、ズルは許さんってことね。良くできてるじゃん……。

編集者:すずき(2021/11/08 23:42)

コメント一覧

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



2021年10月9日

Might and Magic Book Oneのエンカウント処理が半々でわかった

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

引き続きMight and Magic TAS動画に挑んでいます。前回書いた通り、町以外のMAPではエンカウント判定用のカウンタ変化量が予測できません。しかしコントローラ入力後だけは、カウンタの変化量が必ず0もしくは1になることに気づきました。これを利用し、町以外のMAPのエンカウントが50%の確率で予想できるようになりました。

残念ながら今の知識ではエンカウント予想を100%にはできなさそうです。Might and Magicはキー入力チェックと画面更新が全く同期しないので、フレーム単位(=画面更新)しか動くタイミングがないTASのツールだと、うまく挙動が推定できません。技術的にはモヤっとしますが、動画を作る分にはこれでも十分です。

地上エリアA1やA2のように、歩きだと脱出に時間が掛かるMAPで「わざとエンカウント+逃げる」手段を使えるようになったので、格段に早く脱出できるようになりました。

他にも細かい点を更新して3分くらいタイムを更新し、20分28秒になりました。

謎のメッセージスキップ判定

メッセージスキップも、未だに仕組みは良くわからないものの、

  • A, Bボタンを1フレームごとに交互に連打
  • 24フレーム(=メッセージが開ききる時間)スキップできないなら、巻き戻す
  • 連打開始タイミングを1フレームずつ遅れさせてスキップできるか試す

とすると、比較的メッセージスキップが実現しやすいことが判明しました。

改善点の解説

もはや興味のある人はいないと思うので、自分向けのメモです。改善点は下記のとおりです。

  • 地上エリアA1, A2で「わざとエンカウント+逃げる」を使い高速に脱出
  • GEMを「ようせい」ではなく、コリンブルッフ洞穴で調達
  • テレポート回数を減らした(ダイヤのかぎ1つで済ませるため)
  • できるだけメッセージスキップした

TASなら戦闘結果も制御してなんぼだろ!?というご指摘はごもっともですけど、どうも良い乱数が引けず、極端に時間が掛かったり、ドロップアイテムのGEMが足りなくて詰んでしまったり、うまく行かないことが多いです。TASですら戦闘が鬼門なの?このゲーム……??

再現性が不安定すぎるので戦闘をルートから外し、GEMはコリンブルッフ洞穴で拾うことにしました。これでだいぶ安定します。動画をアップロードしてから気づきましたが、5人パーティになっていますが、戦闘しないならメンバーは2人でも良かったかな。うーん、まあいいか。

編集者:すずき(2021/11/08 23:41)

コメント一覧

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



2021年10月8日

初めての6502アセンブラに挑戦

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

引き続きMight and Magic TAS動画に挑んでいます。クリアタイムを縮めるには「わざとエンカウントして逃げる」「メッセージスキップ」の2点がほしいですが、メモリダンプを見ていても全く発生条件がわかりません。仕方ないのでファミコンのCPU 6502のアセンブラを読んでいます。もはやリバースエンジニアリングです。

命令が非常にシンプルで、レジスタ幅は8bit、レジスタ数はA, X, Yの3つしかありません。読んでいる分には面白いですが、これでソフト書くことを想像すると辛いです。昔の人はこんなん書いてたのかあ……。ま、それはさておいて、プログラムの解析を行った結果、エンカウントのルールが「半分だけ」分かりました。

基本
  • コントローラの状態を得るごとにカウンタが増減(アドレス0x523はデクリメント、0x524はインクリメントされる)
  • キー入力でもカウンタの初期値が大きく変更される
  • 移動用のキー入力(上下左右 とB)した「次のフレーム」でエンカウント判定
町の場合
256フレームでカウンタが1周(逆に言えば256フレーム以内にエンカウントチャンスがないなら、初期値変更の操作を入れる必要あり)

カウントの条件判定関数(アドレス0xE85Dとそのサブ関数)をLuaで書き直しました。BizHawkのLuaも初めて使ったので書き方がわからず、1回Pythonで書いてから移植するという無駄な行為をしました……。中心となる条件判定関数はこんな感じです。

カウント変数の値から敵とのエンカウント判定をする関数

function rol(v)
	local ncarry = (bit.band(v, 0x80) ~= 0)
	v = bit.lshift(v, 1)
	v = bit.band(v, 0xff)
	if (carry) then
		v = bit.bor(v, 0x1)
	end
	carry = ncarry
	return v
end

function ror(v)
	local ncarry = (bit.band(v, 1) ~= 0)
	v = bit.rshift(v, 1)
	v = bit.band(v, 0xff)
	if (carry) then
		v = bit.bor(v, 0x80)
	end
	carry = ncarry
	return v
end

function adc(v1, v2)
	v1 = v1 + v2
	if (carry) then
		v1 = v1 + 1
	end
	carry = (v1 > 0xff)
	return bit.band(v1, 0xff)
end

function sbc(v1, v2)
	v1 = v1 - v2
	if (not carry) then
		v1 = v1 - 1
	end
	carry = not (v1 < 0)
	return bit.band(v1, 0xff)
end

function judge(v0, v1, v2)
	local v24e = v0
	v523 = v1
	v524 = v2

	-- Addr: E8A1
	local v248 = 0x73
	local v249 = 0xc

	-- Addr: E8AB
	local v24a = v523
	local v24b = v524
	local v24c = v523
	local v24d = v524

	-- Addr: E8BF...E8D2
	for x = 7, 1, -1 do
		v24c = rol(v24c)
		v248 = ror(v248)
		if (carry) then
			carry = false
			ra = adc(v24a, v24c)
			v24a = ra
		end
	end

	-- Addr: E8D4
	carry = true
	v24a = sbc(ra, v24b)

	-- Addr: E8DD...E8F0
	for x = 4, 1, -1 do
		v24d = rol(v24d)
		v249 = ror(v249)
		if (carry) then
			carry = false
			ra = adc(v24b, v24d)
			v24b = ra
		end
	end

	-- Addr: E8F2
	carry = true
	v24b = sbc(ra, v24a)
	v524 = v24b

	-- Addr: E8FC
	carry = true
	v24a = sbc(v24a, v24b)
	v523 = v24a

	----------------------------------------------

	-- Addr: E871
	v24f = v24a
	ra = 0

	-- Addr: E87B ... E88F
	for x = 8, 1, -1 do
		v24f = rol(v24f)
		ra = rol(ra)
		carry = true
		ra = sbc(ra, v24e)
		if (not carry) then
			ra = adc(ra, v24e)
		end
	end

	-- Addr: E891
	v24e = ra
	v24e = v24e + 1

	return v24e
end

引数のv0には現在いるマップから決まる一定の値(アドレス0x6191の値)を渡し、引数v1, v2にはカウンタ0x523, 0x524の値を渡します。エンカウント判定の結果が1であれば敵とのエンカウントという意味になります。あとjudge() を呼ぶ前に、グローバル変数のcarry = falseにしておかないと結果が狂います。

内部でキャリークリアしとけ、って思われるかもしれませんがcarry = trueで呼ぶケース(今回は追っかけていませんが)もあるので、勝手にキャリークリアしてはいかんのです……。

話を元に戻すと、カウンタを255フレーム分、変化させながらこの判定関数を呼ぶと、今から何フレーム後にエンカウントするか予測できるわけです。


町マップのエンカウント予想

例えば、上記の画像だと(43, 157, 179)と出ています。これは43フレーム目にエンカウント処理が真と判定されるという意味です。ややこしいことに、Might and Magicのエンカウント判定は移動するボタン(前後左右、Bボタンのどれか)を押した「次のフレーム」に行われるため、42フレーム後に移動すると必ずエンカウントします。同様の理屈で156フレーム後、178フレーム後も移動すると必ずエンカウントします。

エンカウントを理解できたぞ、これならエンカウント楽勝だろ!と意気込んで地上MAPに行ってみたら、町以外(地上、ダンジョンなど)はカウンタの増減ルールが全く違っていて予測は微塵も機能しませんでした。ええ……そんな……。

予想以上の難解な動き

町だと1フレームに1回しかコントローラの状態を見ないため、カウンタも1しか変化しません。そのため予測が楽でした。ところが町以外のMAPはアイドル時間に全力でコントローラの状態を見るため、70〜80くらいカウントが一気に変わり、さらに嫌なことに毎フレーム変化量が違うので予測ができません。こりゃ無理ですね。

エンカウントと並ぶもう一方の難問「メッセージスキップ」のルールは全く分かりません。基本的にはボタンを押すとメッセージがスキップされるはずなのに、そうじゃない時間がかなりあります。プログラムを解析していると8フレームほど入力を全く見ていない瞬間が何カ所かあって、スキップと関連していそうでしたが、仕組みの解明には至りませんでした。

メッセージスキップを諦めるとかなり時間を食ってしまう(最速スキップで11〜16フレーム、スキップしないと160〜170フレーム)ので、困りましたね。

編集者:すずき(2021/11/03 10:20)

コメント一覧

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



2021年10月7日

Might and Magic Book Oneのメインクエスト紹介

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

ファミコン版Might and Magic Book Oneにはたくさんのクエストがありますが、クリアに必要なクエストはさほど多くありません。図示するとこんな感じです。


クエスト、アイテムの依存関係

なお、ファミコン版Might and Magic Book Oneの情報は、マイトアンドマジック1攻略情報 さんが非常に参考になります。地図がめっちゃ見やすいです。

メインクエスト紹介(手紙、兄弟、真のアラマー王)

クエストの位置など詳しい情報は攻略情報さんを見ていただくとして、下記ではTASで使った攻略ルートを簡単に説明します。

盗賊への転職
ソーピガルの町の [X: 2, Y: 13] にあるギルドに行って盗賊に転職します。Lv.1クリアには盗賊が必須です。盗賊以外を選ぶと扉の鍵が解除できなくて進めなくなります。Might and Magicはさ、どうぞどうぞ、と投げ出されたイベントアイテムにすら罠が仕掛けてある鬼畜仕様のため、アイテム拾うだけで盗賊が必須です。
ソーピガルからの脱出
ソーピガル → ソーピガル地下 [14, 0] → ノーザンバリアー洞穴 → 地上エリアC2の経路で移動し、町の外に出ます。ソーピガルの町の出口から出たいところですが、Lv.1で出口に行くと衛兵に「未熟者」と言われて追い返され、ソーピガルの町から出してくれません。
アイスプリンセスのクエスト(ダイヤの鍵)
C2 → C1 → B1 → B2の経路で移動し、[4, 4] にいるアイスプリンセスの問いに答えると、革袋がもらえて、中にダイヤの鍵が入っています。このクエストだけ、なぜか「さがす」必要はありません。ダイヤの鍵はテレポート20回分の魔法が込められていて、とても便利な移動手段です。C2 → B2は近道に見えますが、残念ながらアイスプリンセスに辿り着く道がありません。
GEMの入手
B2 → B3 → コリンブルッフ洞穴にいき、ダイヤの鍵を使ったテレポートで宝箱([1, 1] [0, 3] [1, 5] のどれでもOK)の真上に飛びます。アイテムはクリアに不要ですが、一緒に手に入るGEMは後で使います。GEMもクリア時間短縮に欠かせない存在です。
手紙のクエスト(手紙 その1)
コリンブルッフ洞穴 → ソーピガル地下 [1, 2] へ行きコーラックからクエストを受けます。エルキューンのアガールに手紙を渡してくれと言われます。
手紙のクエスト(手紙 その2)
ソーピガル地下 → ソーピガル →(転送)→ エルキューンの経路で移動します。転送というのは、ソーピガル [11, 3] にいるおじさんのこと(GEM 1個でどの町でも送ってくれる)です。宿屋の奥 [4, 3] にいるアガールに手紙を渡すと、別の手紙を渡されてダスクのテルゴランに渡してくれと言われます。
オーラのクエスト
エルキューン → B1 → C1 → C2 → ソーピガルの経路で移動します。道すがら別のクエストを進めます。
  • C2 [8, 8]: 占いオババと会いオーラの色を調べます。後のクエストで聞かれる(さんごの鍵)のでメモをお忘れなきよう。
手紙のクエスト
ソーピガル →(転送)→ ダスクの経路で移動します。テルゴランは迷路の先 [8, 0] にいます。この町はテレポート無効なので、地道に歩きましょう。テルゴランに手紙を渡すとアルガリーのゾム、ポートスミスのザムの兄弟に会ってくれと言われます。
兄弟のクエスト
ダスク → ダスクの地下 → ソーピガル →(転送)→ アルガリー → ポートスミスの経路で移動し、兄弟に会います。歩いて会おうとすると大量の強制エンカウントで時間が掛かるので、テレポートで全部飛ばします。ゾムザム兄弟はどちらが先でも良いですが、ポートスミス → アルガリーだとポータルもなく移動も辛いので、アルガリー → ポートスミスがおススメです。
  • アルガリー [1, 1]: ゾム
  • ポートスミス [12, 2]: ザム
市民のパスポート、兄弟のクエスト(ルビーの笛)
ポートスミス → B3 → B2 → B1 → C1の経路で移動します。C1 [7, 7] でゴールデンバウムという金ぴかの木を見て、ゾムザム兄弟の伝言通りに歩き [15, 15] へ行くと、ルビーの笛が沸いてきます。基本的に「さがす」しないとモノが手に入らないゲームですが、このクエストだけ「さがす」をする必要がありません。変なクエスト……。
  • C1 [5, 7]: 市民のパスポート(城に入るために必要)を取る、馬車を調べるか?に「はい」、その後「さがす」です。
  • C1 [7, 7], [15, 15]: ゴールデンバウムとルビーの笛です。
フック付きロープ
C1 → C2 → ソーピガルの経路で移動し、店で「フック付きロープ」を10Gで買います。ソーピガル以外にも売っていますので、ソーピガル以外でも構いません。デューム城で使うので、その前に買っておいてください。
真のアラマー王のクエスト(金の鍵)
ソーピガル →(転送)→ ポートスミス → B3 → 魔法の砦の経路で移動し、魔法の砦B2の [3, 4] にいる犬の像まで行きます。テレポート活用が吉です。犬の像と話した後に「さがす」と金の鍵が拾えます。デューム城で使います。
真のアラマー王のクエスト(貴族のパスポート)
B3 → B2 → A2の経路で移動し、迷路の奥 [0, 15] にいるドルイドのパルセラの問いに「はい」と答えた後に「さがす」と貴族のパスポートが拾えます。アラマー城で使います。エリアA2はテレポートが使えないので地道に歩きましょう。
真のアラマー王のクエスト(ゴロスのめだま)
A2 → B2 → B1 → A1 → デューム城の石垣 → デューム城内部の経路で移動します。エリアA1もテレポートが使えないので、地道に歩きますが、迷路がクッソ長くて辛いです。
  • A1 [7, 14]: デューム城の石垣、内部への入り口です。
  • デューム城 [8, 5] [6, 6] [7, 10]: 壁の外に押し戻される罠(三カ所)、フック付きロープで飛び越えましょう。
  • デューム城 [7, 7]: 金の鍵を持たずに行くと扉に吹き飛ばされます。
  • デューム城 [7, 8]: 真のアラマー王と話した後「さがす」と「ゴロスのめだま」を拾えます。
ニセのアラマー王の正体クエスト
デューム城 → A1 → B1 → C1 → C2 → ソーピガル →(転送)→ ダスク → E1 → E2 → E3 → アラマー城の経路で移動します。アラマー城に入るにはハレーショにパスワードを聞いて、ライオンのレリーフに答える必要がありますが、テレポートで全て無視して入り口 [14, 7] に直行できます。必要なアイテムを所持していればニセのアラマー王に「正体を見破ったな」と言われ、イドの迷宮に飛ばされます。
  • 市民のパスポート: 持たずに入り口に行くと、衛兵に追い返されます。
  • 貴族のパスポート: 持たずに王の部屋の前に行くと、衛兵に追い返されます。
  • ゴロスのめだま: 持たずにニセのアラマー王に会うと、クリア不能クエストを押し付けられます(僧侶の「ちゅうし」でキャンセルするしかない)
イドの迷宮
英語版だとSoul Mazeですが、日本語版は「イドの迷宮」という全然違う名前で、ニセのアラマー王のセリフ「ソウルメイズの地に監禁」が意味不明に見えます。訳を間違ったのかなあ……?本来はマッピングしてパスワードを知ります。「いちをしる」魔法が使えないため、マッピングの難易度は高いです。しかしパスワードは固定なので正解を知っていれば瞬殺です。クリア後はソーピガルに戻されます。

以上がMight and Magicの世界に起こった事件と、その謎に迫るメインクエストを超スピード解決する手順となります。初めてプレイする方がこの手順でクリアすると、たぶん訳が分からないと思います。

お時間がある方は、攻略サイトを見ながらでも構わないので、金の板や町のヒント、囚人たちなどに出会い話すと、しっかり作られた世界感が味わえると思います。

メインクエスト紹介(オーラ、アストラル世界)

もう一つのメインクエストの流れです。オーラのクエストは、ストーリーにはあまり関係ないです。ラストダンジョンの歯ごたえを増すためのクエストという感じです。アストラル世界は全てのストーリーの終着点で、ああ、そういうことだったんだ!と思うはずです。

オーラのクエスト(さんごの鍵)
ソーピガル → ポートスミス → B3 → B4 → A4の経路で移動します。[4, 6] にいる老人に、各キャラクターのオーラの色を答えます。オーラはエリアC2の占いオババに教えてもらった色です。正解すると [4, 2] に飛ばされるので、その場で旋回(移動しちゃダメ)、「さがす」で「さんごの鍵」を拾えます。
オーラのクエスト(金色のオーラ)
A4 → B4 → C4の経路で移動します。先頭のキャラクターにさんごの鍵を持たせて [7, 2] で南を向くと、ボルカノ神殿に入れます。ボルカノ神殿 [7, 11] の火山の神に「なぞ」を出してもらって、答えると「金色のオーラ」にしてもらえます。ボルカノ神殿の入り口のある島は、テレポートで入れますが、テレポートで出ることはできません。注意。
オーラのクエスト(キーカード)
C4 → B4 → A4の経路で移動します。[4, 6] にいる老人に会うと、また [4, 2] に飛ばされるので、その場で旋回、「さがす」で「キーカード」を拾えます。
アストラル世界
ゴロスのめだまを使ってアストラル世界に飛びます。壁がほぼすべて透明のバリアで構成されている鬼畜が考えたダンジョンです。迷ってしまったら敵から逃げれば、かならずスタート地点の [7, 0] に戻れるので、敵を倒すばかりでなくうまく使いましょう。
  • 5カ所の封印: [4, 6] [4, 10] [7, 14] [10, 10] [10, 6] にある封印を解除します。解除するたびに敵が出ます。
  • [7, 10]: ドア、キーカードで開きます。
  • [7, 8]: 「やすむ」と次に進みます。イドの迷宮をクリアしている必要があります。
  • [6, 7]: コーラックがいて、世界の果てに行けと言われ、ソーピガルに戻されます。
世界の果て
ソーピガル →(転送)→ エルキューン → B1の経路で移動します。[4, 15] にある世界の果てに行くとゲームクリアです。最後にBook Twoに続く!と出ますが、Book Twoはファミコンでは発売されませんでした。悲しい。スーパーファミコン版が発売されているようです。

この他にも諸侯のクエスト、全く関係ないクエストなど、たくさんありますので、ぜひ遊んでみてください。全体的に良くできたゲームシステムだと思うんですけど、難易度の高さ(敵が強すぎる……)に、挫けそうになるのがイケてないポイントではあります。

編集者:すずき(2022/04/04 05:52)

コメント一覧

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



2021年10月6日

Might and Magic Book Oneで初めてのTASに挑戦

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

子ども時代のトラウマ難易度ゲームMight and Magic Book Oneに、大人になってから挑みましたが、変わらず撃沈しました。やっぱり難しいです。でもエミュレータなら、Lv.1で最速クリアする動画を作れるんです。いわゆるTAS(Tool Assisted Speed-run)動画です。

TASするにあたっては、定番のBizHawkというエミュレータを使います。ROMをロードしてTool - TAStudioを選ぶと、フレーム単位でキー入力を選べる画面が出現します。


BizHawk TAStudio

操作に自信があるならRecording modeを使って自分の操作を記録し、あとでファインチューンすると良いでしょう。私は操作にあまり自信がなかったので、1フレームずつチマチマとマウスで入力しました。

TAS第一弾

とりあえずエンディングまで辿り着いたので、YouTubeにもアップロード([TAS] NES Might and Magic Book One (J) 23:30 - YouTube)しました。YouTubeのアップロード側機能は初めて使いましたが、とても使いやすいですね。

TASとしてのクオリティはあまり良くないです。攻略ルートがかなり適当で、これより早くクリアできる動画は簡単に作れると思います。容易に改善できそうなところは、

  • メッセージスキップしてない(スキップ条件が良くわからなかった)
  • 「ようせい」との戦闘に2ターン掛けてる
  • 「ガラドリエルのめぐみ」取りに行くのが無駄(Gemは「ようせい」が落とした7つで足りてた)
  • ダスクの町の店で物を売る必要がない(金は足りてる)
  • 地上エリアA2(火山地帯)からの脱出が遅い
  • 「さんごのかぎ」の受け渡しが無駄(先頭の人が持てるルートに変えた方が良い)
  • 5人もパーティーに入れている

5人パーティーだとオーラのクエストが長いし、戦闘で行動できない人が出やすく無駄が多いので避けたいですが、4人パーティーだと「ようせいx 3」が出ないので、妥協しました。

あとMight and Magicの大きな特徴として、敵から逃げるとMAPの特定の位置に必ず戻される仕様があります。わざとエンカウントし逃げれば、歩くよりも早く移動ができる可能性があります。TASではぜひとも活用すべき事項ですが、エンカウントのルールがわからず、エンカウント確率もかなり低いため、総当たりだと全然エンカウントしません。これは厳しい。ギブアップ。

とまあ、色々諦めたしょぼいTAS動画を作っただけで非常に疲れました……。世の中のハイレベルTAS動画の作者さんは凄いですわ〜。

補足

Might and Magicファミコン版は日本語版と英語版があります。このうち英語版のTASは既に存在していて、クリアタイムがたったの8分[TAS] NES Might and Magic by Dammit in 08:07.72 - YouTube)です!超早ですね。

英語版はアイテムを別のアイテムに化けさせるバグがあって、そのバグを突くとゴミから終盤のクエストでもらえるはずのアイテムを錬成でき、ほぼ全てのクエストを無視してラストダンジョンに挑めます。

日本語版ではバグが修正されているほか、クエストの仕様も違うため、少なくとも同じ攻略法ではクリアできません。

編集者:すずき(2021/11/08 23:40)

コメント一覧

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



2021年10月5日

久しぶりにファミコンのMight and Magic Book Oneをやってみたい

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

Nintendo Switch Onlineに加入すると、ファミコンやスーパーファミコンのソフトでも遊べるので、子供の時に挫折したゲーム(最近だとファミコンウォーズ、スーパーピクロス)をやっています。グラフィクスは近年のゲームと比べるまでもなくショボいですけど、今も名作は名作です。面白いですね。

子どもの時に挫折したゲームはいくつもありますが、ナンバーワンがMight and Magic Book One : the Secret of the Inner Sanctumです。この時代に流行ってたWizardryみたいな3D風の迷路を歩いていく海外製RPGです。難易度が異常に高くて有名で、小学生の私はLv.2すら拝むことなく諦めました。

この手のSwitchには収録されていないソフトも遊びたいなあ?と思って、ニューファミコンを物色していたのですが、結構でかくて邪魔そうだし、中古の割に高いです。今でも人気なのか……侮ってましたね。

ですが、我々にはPCとエミュレータがあるじゃないですか。幸いなことに、ファミコンソフトそのものはそんなに高くないので、ROMダンパーでROMを吸い出して、PCで遊ぶことにしました。


レトロダンパー

私はレトロダンパー(メーカーのサイト)を使っています。クライアントを起動して、認識ボタンを押し、吸い出すだけでOKなので便利です。

Might and Magic Book One購入

早速、中古のカセットを購入しました。外観は割とズタボロというか、年季入った姿です。ま、動けば良いのさ。


ファミコン版Might and Magic Book Oneのカセット

GAKKENのロゴの通り、なぜか日本語ローカライズは学習研究社(学研)が行っています。今見ると不思議です。教科書作ってる学研が、なぜゲームの移植を……。


レトロダンパーにカセットを挿した状態

レトロダンパーさんで吸い出すときはこんな感じになります。吸い出したROMをエミュレータに放り込んでみたところ、正常に動作しているようです。良きかな良きかな。

ゲームの感想

まずは普通に遊んでみました。今なら意外とクリアできるのでは?と思ったのも束の間、あっ、無理でした。調子乗ってすみませんでした。在りし日の絶望が蘇りました。

  • 攻撃がほぼ当たらない
  • 敵から逃げられない
  • Lv2が果てしなく遠い
  • 罠解除役(盗賊)が宝箱の罠に掛かる
  • パーティーがすぐ全滅、タイトルに戻される

最初から難しすぎます。基本的には1バトルごとに休憩+セーブって感じです。攻撃が当たらないのも辛く、一方的にボコられて死んでしまいます。死んだら復活させるお金がないのでリセットです。

さらにWikipediaを見てびっくりしたのは、次の一文です。
「ファミコン版は(中略)やや簡単に調整された部分が多い」
えっ?これで?嘘だろ……??オリジナル版はどれだけ鬼畜難易度なの?

息抜きにYouTubeで攻略動画を見ていると、ラストダンジョン(イドの迷宮、アストラル世界)の音楽がとてもカッコ良いですね。何とか辿り着きたいですが、最初の町(ソーピガルの町)から脱出できていない身からすると、果てしなく遠いです。

編集者:すずき(2021/11/08 23:39)

コメント一覧

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



2021年10月4日

Might and Magicファミコン版 - まとめリンク

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

TASに挑んだ記録。

解析したときの情報。その他。

リンク集

Might and Magicの攻略、解析の参考になるサイトです。

編集者:すずき(2024/03/26 03:14)

コメント一覧

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



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

管理用メニュー

link 記事を新規作成

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

最近のコメント5件

  • link 21年9月20日
    すずきさん (11/19 01:04)
    「It was my pleasure.」
  • link 21年9月20日
    whtさん (11/17 23:41)
    「This blog solves my ...」
  • link 24年10月1日
    すずきさん (10/06 03:41)
    「xrdpで十分動作しているので、Wayl...」
  • link 24年10月1日
    hdkさん (10/03 19:05)
    「GNOMEをお使いでしたら今はWayla...」
  • link 24年10月1日
    すずきさん (10/03 10:12)
    「私は逆にVNCサーバーに繋ぐ使い方をした...」

最近の記事20件

  • link 23年4月10日
    すずき (11/15 23:48)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 24年11月6日
    すずき (11/15 23:47)
    「[Ubuntu 24.04 LTS on ThinkPad X1 Carbon Gen 12] 目次: Linux会社ではTh...」
  • link 24年11月11日
    すずき (11/15 23:26)
    「[Pythonのテストフレームワーク] 目次: Python最近Pythonを触ることが増えたのでテストについて調べようと思い...」
  • link 24年11月2日
    すずき (11/15 23:25)
    「[Python - まとめリンク] 目次: Python一覧が欲しくなったので作りました。 スクリプト言語始めました(Pyth...」
  • link 20年5月10日
    すずき (11/15 23:24)
    「[Pythonの文字置換APIは変な名前] 目次: PythonPythonの文字列置換は "string".replace(...」
  • link 24年2月7日
    すずき (11/15 23:23)
    「[複数の音声ファイルのラウドネスを統一したい] 目次: PythonPCやデジタル音楽プレーヤーで音楽を聞いていると、曲によっ...」
  • link 13年7月2日
    すずき (11/15 23:22)
    「[スクリプト言語始めました(PythonとRubyでNクイーン問題)] 目次: ベンチマーク目次: Pythonスクリプト言語...」
  • link 23年9月18日
    すずき (11/15 23:22)
    「[一覧の一覧 - まとめリンク] 一覧の一覧、まとめのまとめが欲しくなったので作りました。OS、アーキテクチャ系。目次: An...」
  • link 13年10月1日
    すずき (11/15 23:21)
    「[JetBrains PyCharm 3.0リリース] 目次: PythonPyCharmがメジャーアップデートされ PyCh...」
  • link 22年7月8日
    すずき (11/08 23:28)
    「[マンガ紹介 - まとめリンク] 目次: マンガ紹介面白かった漫画の紹介です。知名度はあまり気にせず紹介します。5作品乙女ゲー...」
  • link 24年10月31日
    すずき (11/04 15:17)
    「[DENSOの最終勤務日] 最終勤務日でした、入門カードや会社のPCを返却してきました。在籍期間はNSITEXE(品川のオフィ...」
  • link 24年10月30日
    すずき (11/02 20:33)
    「[マンガ紹介] 目次: マンガ紹介お気に入りのマンガ紹介シリーズ。最近完結した短めの作品を紹介します。マイナススキル持ち四人が...」
  • link 19年3月28日
    すずき (11/02 13:27)
    「[マンガ紹介] 目次: マンガ紹介お気に入りのマンガ紹介シリーズ。こわもてかわもて(全2巻、2019年)(アマゾンへのリンク)...」
  • link 21年6月20日
    すずき (11/02 13:22)
    「[読書一生分が93万円?] 目次: マンガ紹介書籍通販のhontoがこんなキャンペーンをやっています。honto読書一生分プレ...」
  • link 17年10月27日
    すずき (11/02 13:11)
    「[異世界&最強系漫画の種類] 目次: マンガ紹介少し前にアニメ化されて盛り上がって(おそらく負の方向に…)いた「...」
  • link 24年10月28日
    すずき (10/30 23:49)
    「[Linuxからリモートデスクトップ] 目次: Linux開発用のLinuxマシンの画面を見るにはいろいろな手段がありますが、...」
  • link 24年10月24日
    すずき (10/25 02:35)
    「[ONKYOからM-AUDIOのUSB DACへ] 目次: PCかれこれ10年以上(2013年3月16日の日記参照)活躍してく...」
  • link 24年7月25日
    すずき (10/25 02:24)
    「[OpenSBIを調べる - デバイスツリーの扱い(別方法)] 目次: LinuxOpenSBIのブート部分を調べます。Ope...」
  • link 24年8月7日
    すずき (10/25 02:23)
    「[Debian独自の挙動をするQEMUとbinfmt_misc] 目次: Linux前回はbinfmt_miscの使い方や動作...」
  • link 24年9月9日
    すずき (10/25 02:22)
    「[GDBの便利コマンド] 目次: LinuxGDBは便利ですが、少し使わないでいるとあっという間にコマンドを忘れます。便利&使...」
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

最終更新: 11/19 01:04