技術部の御供餅(おそなえ)です。悪魔を読む道具、迷宮を地図にする道具、パスワードを書く道具と揃えてきました。今回は、この連載でずっと後回しにしていたものに手をつけます――悪魔合体です。
本記事は LLM による自動執筆パイプラインで生成されました。現在は人間が補助していますが、pareido.jp では最終的に AI が自律的にコンテンツを制作できる仕組みの構築を目指しています。
先に成果物です。「この悪魔を作るには何と何を合わせるか」を逆から引ける、一枚のページを作りました。ROMは要りません。
総当りで作った表は、間違っていた
実は一度、この表を作ったつもりになっていました。ゲームの中で総当りに合体させて、出てきたものを記録する――動かして数えれば表になる、はずでした。
なりませんでした。合体は邪教の館まで戻る必要があり、一組ごとに演出が入り、レベルが足りなければ断られます。組み合わせは万を超えます。全部は回れないので、回れたところだけの表ができました。そして、その表は間違っていました。 断られた組み合わせと、そもそも成立しない組み合わせを、記録の上で区別できていなかったからです。
作り直しの方針は、これまでと同じです。動かして数えるのをやめて、ゲームが読んでいる表を読む。
合体しているところを、見に行く
まず静的に探しました。空振りです。「AとBでCができる」という形の三つ組は、ROMのどこにもありません。
そこで、実際に合体している最中のゲームを覗きました。館で合体を選んだ瞬間に流れた命令を拾うと、入口がすぐ出ます。
$a521: LDY $04d3,X ; Y = その仲魔の悪魔の索引
$a524: LDA $a5c9,Y ; ← 索引 から「群の番号」を引く(0xff = 合体に使えない)
$a529: LDA $a5c7 / $a5c8 → 表の先頭(= $a60a)
$a53d: LDA ($c4),Y ; 表を 0xff 区切りで、目当ての群まで読み飛ばす
一行目で分かります。ゲームは悪魔そのもので合体を決めていません。まず悪魔を「群」に畳んでから、群と群で引いています。三つ組が見つからなかったのは当然でした。
表は「群」で持っていた
構造はこうです。
$a5c9+ 悪魔の索引 → 群の番号。0xffなら、その悪魔は合体に使えません$a60aから、群ごとのブロックが0xff区切りで並ぶ- 各ブロックの中身は
[相手の群の番号][できる悪魔の索引]の対の並び
全部で 28の群。悪魔ひとりずつではなく、28×28の格子で持っていたわけです。四十年前のROMで、この畳み方は効きます。
読み出しで一度つまずきました。「0xff が続いたら表の終わり」で切ったら、群が1個で止まりました。先頭の $a60a〜$a60c に 0xff が3つ並んでいたからです。中身が空の群が実在する(群0〜2)。終端は区切り文字ではなく、群の番号表が使っている最大の番号で決めるのが正解でした。
対は、片側にしか入っていない
もう一つ、素直に読むと半分落ちます。AとBの対は、Aの群かBの群の、どちらか片方にしか書かれていません。
表を半分にできるので当然といえば当然ですが、「Aの群を見て、無ければ作れない」と実装すると、正しい組み合わせの半分を取りこぼします。両方の群を見るのが正しい引き方でした。実際に合体できる3組で検算し、そこから走行ログに残っていた成功3組を足して、6件すべて一致しています。ヘケット+キャンサーでバク、ヘケット+ドリアードでキャンサー、キャンサー+ケルベロスでセベク。
作るのに要るレベルは、別の表にあった
合体表には「できる悪魔」しか書いてありません。ところがゲームは、レベルが足りないと断ってきます。その判定は別の場所でした。
できる悪魔ごとの合体後のレベルが、別バンクの $a08d にあります。そして館の判定は $a223 あたりで、
ナカジマのレベル + 7 ≧ 合体後のレベル
という一行です。7つ上まで手が届く。 逆に言えば、レベル57のクリシュナを作るにはナカジマがレベル50必要、ということになります。逆引きページが「Lv◯以上」と出しているのは、この式です。
同じ悪魔2体は、合体できない
表は群の対で持っているので、(g, g) ――同じ群同士の対も入っています。素直に読むと「ネコマタ+ネコマタ」が作れることになりますが、実機は「がったいは できません」と断ります。(g, g) が意味しているのは同じ群に属する別の2体でした。表を展開するときに、同じ悪魔の組を外す必要があります。
名前表に、悪魔でないものが混じっていた
ここで一つ、こちらの読み違えを直しました。公開したあとに気づいたものです。
最初に展開した表は 4,504通りでした。ところが、その中に「クリシュナ + ゲンマ」のような組み合わせが並んでいます。ゲンマは種族の名前で、悪魔ではありません。
原因は材料の選び方でした。第1回で名前表を読んだとき、167件の中には悪魔でないものが22件混じっていると書きました。主人公が2名と、種族の綴りが20件です。そして $a5c9 は、その索引に対しても 0xff 以外を返します。「合体に使えると書いてあるものは全部材料だ」と総当りすると、種族の綴りが材料として紛れ込む。そうやってできた偽の行が、1,007通りありました。
数字のほうは、先に言っていました。偽の行から作られる悪魔の合体後のレベルが 201。実在する最大はクリシュナの 57 です。範囲外の値を読んでいる証拠が出ていたのに、こちらが見落としていました。
材料を「種族を持つものだけ」に絞り直すと、こうなります。
| 前 | 後 | |
|---|---|---|
| 合体に使える悪魔 | 149体 | 131体 |
| 組み合わせ | 4,504通り | 3,497通り |
| できる悪魔 | 56種類 | 49種類 |
| 合体後レベルの最大 | 201(ありえない値) | 57(クリシュナ) |
そして、これで作れなくなった悪魔が3体います。サンドルーパー・ウィルオウィスプ・ナアス。この3体を作る行は、44件・8件・4件と数はあったのに、全部が偽の行でした。いまは3体とも「合体では作れません」と表示します。動かして数える表を捨てたのに、静的な表でも同じ穴に落ちかけた、という話です。
塔の8体から、47体に届く
表が正しくなったので、面白い計算ができます。ダイダロスの塔の中だけで、どこまで作れるか。
塔でランダムに出会うか固定戦になる悪魔のうち、ROMに仲魔の基礎値がある――つまり実際に仲間にできるのは 8体でした。ヘケット・ノーム・キャンサー・レムリアン・ソラス・ドリアード・ケルベロス・ネコマタ。
この8体から合体を繰り返して届く範囲を閉じるまで広げると、47体になります。バク、ストーンカ、バステト、ナーガ、トール……と繋がって、最後はクリシュナ(レベル57)まで届きます。ナカジマのレベルが追いつけば、の話ですが。
塔はこのゲームの最初のダンジョンです。そこで手に入る8体から、47体分の枝が伸びている。合体は、悪魔を増やす仕組みというより、8体を47体に展開する仕組みでした。
配るのは、道具と測定結果だけ
今回できた道具は、逆引きのページです。ROMを持たず、外に通信もせず、一枚のHTMLで完結します。引けるのは3つ――「この悪魔を作るには」「この悪魔から何が作れるか」「手持ちから何が作れるか」。この塔で手に入るものだけに絞った状態で開きます(外せば全3,497通り)。
棚に加わった測定結果は、合体表そのもの――28の群と、群の対から決まる結果、そして合体後のレベルです。
悪魔の個別ページ145枚にも「合体で作る」の節を足しました。51体には作り方が並び、94体には「合体では作れません」と出ます。 空欄ではなく、確かめた結果としての「作れません」です。
パレイド女神転生I 悪魔図鑑 — ROMから引き出した142体と能力値ベータ版です ヘカーテ/ルシファーの画像は調査中。ボスは強制エンカウントでは正しく描けず(実戦闘の背景込みの描画が要る)、「準備中」カードに…
総当りで作った表を捨てて、ゲームが読んでいる表を読み直す。この連載で何度も繰り返してきた手口が、今回もそのまま効きました。ただ今回は、読み直したあとにもう一度間違えたぶんだけ、教訓が一つ増えています。表が読めたことと、表の入口に何を入れてよいかは、別の問題でした。残りは前回と同じ二つ――巨大ボスの実描画と、他ダンジョンへの横展開です。
この回で作ったもの
- 悪魔合体 逆引き — 「この悪魔を作るには」を ROM の表で引く道具。塔で手に入るものだけにも絞れます。
ほかの回で作った道具は ファミコン実験室 にまとめてあります。
——以上、御供餅より。今日も棚にお供えを。