コグノスケ


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

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

2021年10月23日

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

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

Might and Magic TASのルートです。いくつか試したところこれが一番早く14m46sでした。

基本アイデア

エリアC1にある「魔力がみなぎる泉」(一時的に全員の魔法レベルMLが最大の7になる)を使い、魔法使いML3「ひこう」とML6「つうか」、僧侶ML6「まちへ」を利用して大幅にショートカットします。

大きな問題は6人パーティーにして盗賊と僧侶を除いた4人を魔法使いにしてもMPが不足し、後半「ひこう」が使えず大きなロスになります。解決策として5人パーティーにして一回「やすむ」でMPを回復させることにします。「魔力がみなぎる泉」に2回通うことになりますが、その分、デューム城を「つうか」でぶっ飛ばせるので、総合的にみると早くなります。

気を付けるべきは、初期魔法キャラのユーリエール、ガーデニアです。この2人は最初MP 10ですが「やすむ」とMP 6に下がる変な奴らです。MPを使ってから「やすむ」をしないと、MPが無駄になります。

GEMとFOOD

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

5人パーティーで3人「つうか」「まちへ」を使う場合、GEMを使う3人に「わりあい」を3にして分けると、2, 2, 4, 4, 4に分けられます。「わりあい」を変えたときの「わける」は挙動がバグっており、なぜか合計GEM数が減ります。今回のパターンだと1/5も消え(20 → 16個)ます。しかも1:1で分けても4, 4, 4, 4, 4になるので、魔法系キャラに渡せるGEM数が全く変わらず、「わりあい」を変えるだけ無意味です。面食らうバグですね……。

ソーピガルの転送おじさんは、基本的には先頭の人からGEMを1つ持っていきます。先頭の人がGEM 0だったら次の人から持っていきます。便利なんですけど、間違って「つうか」係の人からGEMを奪わないよう、並び順もしくはルートに気を付ける必要があります。今回、転送は3回使います。

FOODはギルドで転職すると20個もらえますから「わける」すればOK です。初期キャラはFOOD 0個なので、「わける」を忘れると「やすむ」で回復しません。罠としか思えない設定です。このゲームの難易度おかしいポイントの1つですね。

初期キャラは全員無一文&ほぼ手ぶらなのは不思議ですよね。かろうじて武器か道具を1つだけ持っていますが、装備すらしていません。冒険舐めすぎでしょ?

移動系魔法の配分

移動系魔法を使う回数は「ひこう」9回、「つうか」2回、「まちへ」1回です。内訳は、

ひこう
  • ゾムザム兄弟の後、B3 → C1(ゴールデンバウム、ルビーの笛)
  • ルビーの笛の後、C1 → B3(魔法の砦、金の鍵)
  • 金の鍵の後、B3 → A4(さんごの鍵)
  • さんごの鍵の後、A4 → C4(ボルカノ神殿)
  • ボルカノ神殿の後、C4 → A4(キーカード)
  • キーカードの後、A4 → A2(パルセラ、貴族のパスポート)
  • 貴族のパスポートの後、A2 → C1(回復、魔力がみなぎる泉)
  • 泉の後、C1 → A1(デューム城)
  • デューム城の後、A1 → E3(アラマー城)
つうか
  • A1: 迷路を省略する
  • デューム城: 壁の外に飛ばされる罠を全部(3つ)省略する
まちへ
  • 手紙の後、ダスク → アルガリー(ゾムザム兄弟)

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

下記では今回のTASで使った攻略ルートを簡単に説明します。まずは準備です。

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

メインクエスト(手紙、兄弟)

メインクエストを解く順番は以前と変わっています(貴族のパスポート、デューム城を後回し)、地上をちんたら歩いていた部分を「ひこう」で積極的にぶっ飛ばします。

手紙のクエスト(手紙 その1)
コリンブルッフ洞穴 →(ポータル)→ ソーピガル地下の経路で移動します。コーラックからクエストを受けます。テレポートで強制エンカウントのマスや壁を全部無視すると早いです。エルキューンのアガールに手紙を渡してくれと言われます。
  • ソーピガル地下 [1, 2]: コーラック
  • テレポート: コーラック行き、計1回
手紙のクエスト(手紙 その2)
ソーピガル地下 → ソーピガル →(転送)→ エルキューンの経路で移動します。転送というのは、ソーピガル [11, 3] にいるおじさんのこと(GEM 1個でどの町でも送ってくれる)です。エルキューンの宿屋の壁を通り抜けてアガールに手紙を渡すと、別の手紙を渡されてダスクのテルゴランに渡してくれと言われます。
  • エルキューン [4, 3]: アガール
  • GEM: 転送で1個消費(残り: 1, 4, 2, 4, 4)
ML7の泉
エルキューン → B1 → C1の経路で移動します。B1はエンカウント+逃げるの方が歩きより若干早いです。C1はテレポートを使って一時的に全員ML7(最大)になる「魔力がみなぎる泉」に行きます。泉のあるエリアは魔法が使えないので、エンカウント+逃げるで移動します。
  • C1 [9, 14]: 魔力がみなぎる(ML 7になる)泉
  • テレポート: 泉行き、計1回
オーラのクエスト
C1 → C2 → ソーピガルの経路で移動します。道すがらC2で占いオババと会いオーラの色を調べます。後のクエストで聞かれる(さんごの鍵)のでメモをお忘れなきよう。
  • C2 [8, 8]: 占いオババ
手紙のクエスト
ソーピガル →(転送)→ ダスクの経路で移動します。テルゴランは町の西側、迷路の先にいます。この町はテレポート無効なので地道に歩くしかありません。テルゴランに手紙を渡すとアルガリーのゾム、ポートスミスのザムの兄弟に会ってくれと言われます。
  • ダスク [8, 0]: テルゴラン
  • GEM: 転送で1個消費(残り: 0, 4, 2, 4, 4)
兄弟のクエスト
ダスク →(まちへ)→ アルガリー → ポートスミスの経路で移動し、兄弟に会います。歩いて会おうとすると大量の強制エンカウントで時間が掛かるので、テレポートで全部飛ばします。ゾムザム兄弟はどちらが先でも良いですが、ポートスミス → アルガリーだとポータルもなく移動も辛いので、アルガリー → ポートスミスがおススメです。
  • アルガリー [1, 1]: ゾム
  • ポートスミス [12, 2]: ザム
  • テレポート: ゾム、ザム、計4回
  • まちへ: ダスク → アルガリー、計1回
  • GEM: まちへ4個消費(残り: 0, 4, 2, 4, 0)
市民のパスポート、兄弟のクエスト(ルビーの笛)
ポートスミス → B3 →(ひこう)→ C1の経路で移動します。C1でゴールデンバウムという金ぴかの木を見て、ゾムザム兄弟の伝言通りに歩くと、ルビーの笛が沸いてきます。基本的に「さがす」しないとモノが手に入らないゲームですが、このクエストだけ「さがす」をする必要がありません。変なクエスト……。
  • C1 [5, 7]: 市民のパスポート(城に入るために必要)、馬車を調べるか?に「はい」その後に「さがす」
  • C1 [7, 7], [15, 15]: ゴールデンバウム、ルビーの笛
  • ひこう: B3 → C1、計1回
真のアラマー王のクエスト(金の鍵)
C1 →(ひこう)→ B3 → 魔法の砦の経路で移動し、魔法の砦B2の [3, 4] にいる犬の像まで行き、金の鍵をもらいます。デューム城で使います。行きはテレポートは2回+歩き、帰りはエンカウント+逃げるを使うと早いです。
  • B3 [14, 2]: 魔法の砦の入り口、ルビーの笛を2回鳴らす
  • 魔法の砦B2 [3, 4]: 犬の像、「さがす」と金の鍵
  • テレポート: B1, B2、計2回
  • ひこう: C1 → B3、計1回

メインクエストの流れとしては、このままデューム城に乗り込みたいところですが、今回はMPの配分の都合もあって別のクエストに寄り道します。

メインクエスト(オーラ)

もう一つのメインクエストですけど、オーラのクエストはストーリーとあまり関係ないです。ラストダンジョンの歯ごたえを増すためのクエストという感じです。

オーラのクエスト(さんごの鍵)
B3 →(ひこう)→ A4の経路で移動します。小島にいる老人に各キャラクターのオーラの色を答えます。オーラはエリアC2の占いオババに教えてもらった色です。正解すると [4, 2] に飛ばされるので、その場で旋回(移動しちゃダメ)、「さがす」で「さんごの鍵」を拾えます。初見殺しですよね……、これ。
  • A4 [4, 6]: 老人、オーラの色を答える
  • A4 [4, 2]: 旋回、「さがす」でさんごの鍵
  • テレポート: 老人の前へ、計1回
  • ひこう: B3 → A4、計1回
オーラのクエスト(金色のオーラ)
A4 →(ひこう)→ C4 → ボルカノ神殿の経路で移動します。ボルカノ神殿はちょっと特殊で、さんごの鍵を先頭の人が持っている必要があります。他の鍵は誰が持っていても良いのに……。ボルカノ神殿では火山の神の謎に答え「金色のオーラ」にします。ボルカノ神殿から出るとき、C4のボルカノ神殿がある島(魔法が使えない)から出るとき、ともにエンカウント+逃げるが早いです。
  • C4 [7, 2]: ボルカノ神殿入口、先頭の人がさんごの鍵を持っている必要がある
  • ボルカノ神殿 [7, 11]: 火山の神、「なぞ」答えは「にくしみ」、金色のオーラ
  • テレポート: ボルカノ神殿入口へ、計1回
  • ひこう: A4 → C4、計1回
オーラのクエスト(キーカード)
ボルカノ神殿 → C4 →(ひこう)→ A4の経路で移動します。[4, 6] にいる老人に会って「さがす」で「キーカード」を拾えます。
  • A4 [4, 6] [4, 2]: 老人、「さがす」でキーカード
  • テレポート: 老人の前へ、計1回
  • ひこう: C4 → A4、計1回

これで寄り道終わりです。メインクエストに戻ります。

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

TASでは無視できるものは全て無視して、最速で解きますけども……。本来、真のアラマー王とアストラル世界のクエストは、他のクエストや金の板(ヒントが書いてある)を見ないと答えがわからない作りになっています。全てのストーリーの終着点となっていて、ああ、そういうことだったんだ!と思う作りです。

真のアラマー王のクエスト(貴族のパスポート)
A4 →(ひこう)→ A2の経路で移動し、迷路の奥にいるドルイドのパルセラの問いに答え、貴族のパスポートをもらいます。アラマー城で使います。エリアA2はテレポートが使えないので地道に歩きましょう。
  • A2 [0, 15]: パルセラ、「はい」と答えて「さがす」で貴族のパスポート
  • ひこう: A4 → A2、計1回
ML7の泉、再び
A2 →(ひこう)→ C1の経路で移動します。これでMPが全員尽きたはずなので「やすむ」で回復します。C1ではテレポートを使って再び「魔力がみなぎる泉」に行きます。泉のある森は魔法が使えないので、森から出て「ひこう」で脱出します。
  • C1 [9, 14]: 魔力がみなぎる(ML 7になる)泉
  • テレポート: 泉行き、計1回
  • ひこう: A2 → C1、計1回
真のアラマー王のクエスト(ゴロスのめだま)
C1 →(ひこう)→ A1 → デューム城の石垣 → デューム城内部の経路で移動します。エリアA1もテレポートが使えないので、地道に歩きますが、[15, 10] を北向きに「つうか」でエンカウントと迷路をショートカットします。それでも結構長いです。デューム城の仕掛けも [7, 5] を北向きに「つうか」して全部無視します。デューム城から出るときはエンカウント+逃げるが早いです。
  • A1 [7, 14]: デューム城の石垣、内部への入り口
  • デューム城 [8, 5] [6, 6] [7, 10]: 壁の外に押し戻される罠(三カ所)、「つうか」で無視可能
  • デューム城 [7, 7]: 金の鍵を持たずに行くと扉に吹き飛ばされます。
  • デューム城 [7, 8]: 真のアラマー王と話した後「さがす」と「ゴロスのめだま」を拾えます。
  • ひこう: A2 → A1、計1回
  • つうか: A1 [15, 10] → [15, 11]、デューム城 [7, 5] → [7, 6]、計2回
  • GEM: つうか2回8個消費(残り: 0, 0, 2, 0, 0)
ニセのアラマー王の正体クエスト
デューム城 → A1 →(ひこう)→ E3 → アラマー城の経路で移動します。アラマー城に入るにはハレーショにパスワードを聞いて、ライオンのレリーフに答える必要がありますが、テレポートで無視して入り口 [14, 7] に直行できます。必要なアイテムを所持していればニセのアラマー王に「正体を見破ったな」と言われ、イドの迷宮に飛ばされます。
  • 市民のパスポート: 持たずに入り口に行くと、衛兵に追い返されます。
  • 貴族のパスポート: 持たずに王の部屋の前に行くと、衛兵に追い返されます。
  • ゴロスのめだま: 持たずにニセのアラマー王に会うと、クリア不能クエストを押し付けられます(僧侶の「ちゅうし」でキャンセルするしかない)
  • テレポート: アラマー城の入口へ、計1回
  • ひこう: A1 → E3、計1回
イドの迷宮
英語版だとSoul Mazeですが、日本語版は「イドの迷宮」という全然違う名前で、ニセのアラマー王のセリフ「ソウルメイズの地に監禁」が意味不明に見えます。訳を間違ったのかなあ……?本来はマッピングしてパスワードを知ります。「いちをしる」魔法が使えないため、マッピングの難易度は高いです。しかしパスワードは固定なので正解を知っていれば瞬殺です。クリア後はソーピガルに戻されます。
アストラル世界
ゴロスのめだまを使ってアストラル世界に飛びます。壁がほぼすべて透明のバリアで構成されている鬼畜が考えたダンジョンです。迷ってしまったら敵から逃げれば、かならずスタート地点の [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はファミコンでは発売されませんでした。悲しい。スーパーファミコン版が発売されているようです。
  • B1 [4, 15]: 世界の果て、ゲームクリア
  • GEM: 転送で1個消費(残り: 0, 0, 1, 0, 0)

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

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

編集者:すずき(2023/09/07 14:46)

コメント一覧

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



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 この記事にコメントする



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

管理用メニュー

link 記事を新規作成

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

最近のコメント5件

  • 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の...」
  • link 24年1月24日
    KKKさん (02/19 02:30)
    「追伸です。\nネットで調べたらマイクロソ...」
  • link 24年1月24日
    KKKさん (02/19 02:25)
    「私もエラーで困ってます\n手動での回復パ...」

最近の記事20件

  • link 24年3月25日
    すずき (03/26 03:20)
    「[Might and Magic Book One TASのその後] 目次: Might and Magicファミコン版以前(...」
  • link 21年10月4日
    すずき (03/26 03:14)
    「[Might and Magicファミコン版 - まとめリンク] 目次: Might and Magicファミコン版TASに挑...」
  • link 24年3月19日
    すずき (03/20 02:52)
    「[モジュラージャックの規格] 古くは電話線で、今だとEthernetで良く見かけるモジュラージャックというコネクタとレセプタク...」
  • link 23年4月10日
    すずき (03/19 11:48)
    「[Linux - まとめリンク] 目次: Linuxカーネル、ドライバ関連。Linuxのstruct pageって何?Linu...」
  • link 24年3月18日
    すずき (03/19 11:47)
    「[画面のブランクを無効にする] 目次: LinuxROCK 3 model CのDebian bullseyeイメージは10分...」
  • link 24年3月3日
    すずき (03/19 11:07)
    「[解像度の設定を保存する] 目次: LinuxRaspberry Pi 3 Model B (以降RasPi 3B)のHDMI...」
  • link 24年3月14日
    すずき (03/16 23:03)
    「[JavaとM5Stamp C3とBluetooth LE - Bluetoothデバイスとの通信] 目次: ArduinoM...」
  • link 24年3月8日
    すずき (03/16 23:03)
    「[JavaとM5Stamp C3とBluetooth LE - BluetoothデバイスとServiceの列挙] 目次: A...」
  • link 23年6月2日
    すずき (03/16 21:11)
    「[Arduino - まとめリンク] 目次: Arduino一覧が欲しくなったので作りました。 M5Stackとesp32とA...」
  • link 23年5月15日
    すずき (03/16 00:57)
    「[車 - まとめリンク] 目次: 車三菱FTOの話。群馬県へのドライブ将来車を買い替えるとしたら?FTOのオイル交換とオイル漏...」
  • link 24年3月9日
    すずき (03/16 00:56)
    「[車のバッテリー完全に死亡で交換かと思いきや] 目次: 車またまた車のバッテリーが干上がって死にました。写真は撮っていませんが...」
  • link 24年3月10日
    すずき (03/15 03:34)
    「[誕生日] 早いもので41歳になりました。昨年の日記(2023年3月10日の日記参照)を見ると、コロナの流行を心配していました...」
  • link 24年3月6日
    すずき (03/12 01:18)
    「[Raspberry Pi 3 model Bの代わりにROCK 3 model C] 目次: Arduino最近、M5Sta...」
  • link 24年3月4日
    すずき (03/06 00:09)
    「[volatileをnon-volatileで参照してはいけない] 目次: GCC過去の日記(2021年3月13日の日記参照)...」
  • link 20年6月2日
    すずき (03/06 00:06)
    「[GCC - まとめリンク] 目次: GCCGCCについて。GCCを調べる - その1 - ビルドGCCを調べる - その2 ...」
  • link 15年5月9日
    すずき (03/05 03:00)
    「[自作ARMエミュレータ - 今さら気づいたブートローダのバグ] 目次: Linuxずっと気づいていなかった自作ARMエミュレ...」
  • link 23年6月1日
    すずき (03/05 02:59)
    「[自宅サーバー - まとめリンク] 目次: 自宅サーバーこの日記システム、Wikiの話。カウンターをPerlからPHPに移植日...」
  • link 15年5月3日
    すずき (03/05 02:59)
    「[GRUB2が起動しなくなってしまった] 目次: 自宅サーバーサーバにインストールしていたDebian 32bit版 のJes...」
  • link 15年5月2日
    すずき (03/05 02:58)
    「[systemdを使うのをあきらめた] 目次: 自宅サーバー独自ビルドのカーネルだと/sys/fs/cgroupが無いと言われ...」
  • link 15年4月30日
    すずき (03/05 02:56)
    「[Debian 8.0 Jessie] 目次: 自宅サーバーDebianのアップデートが来ていたので、試しに職場のPCをアップ...」
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

最終更新: 03/26 03:20