openMSXでチートする方法 - 魔城伝説II ガリウスの迷宮

2018-03-03
トピック: ゲーム

久々にMSXエミュレータ openMSX で遊ぶことにしました。名作「魔城伝説II ガリウスの迷宮」をやってみます。
これは面白いのですが、矢/お金/鍵は無限にしないとクリアに時間がかかってしまいますのでチートして楽しむことにします。

■操作方法
F1でメニュー。左右でサブ武器(矢など)を選ぶ。もう一度F1を押すとプレイ画面に戻る。天使の輪を持っている場合はこの画面でリターンを押すととある場所(スタート地点の少し上)に戻る。
十字キーの左右で移動
十字キーの上でジャンプ、梯子を登る、ワールドに入る
スペースで剣
mでサブ武器(矢など)

■重要な道具
天使の輪:スタート地点のすぐ左の画面で入手
ワールド1のグレートキー:スタート地点のすぐ右の画面で入手
赤い矢:スタートの右下に移動したところにある
ベル:ワールドの入り口付近に近づくと鳴る。赤い矢の下の左あたりの画面で入手
虫眼鏡:ワールドの中でパスワードをチェックできる


以下はチート方法のメモです。

環境はMacですがショートカットキーの違い以外は同一です。
https://openmsx.org/manual/user.html

まず、以下でコンソールを開きます。
PC: F10
Mac: Cmd+L
再度同コマンドを使ってコンソールを閉じることができます。


続いて、メモリの番地と値がわかっているのであれば以下でメモリを上書きできます。
poke 0xF123 55
これは、0xF123番地に55(10進数)を書き込むという意味です。MSXは8bitですので10進数で0~255あるいは16進数で0x00~0xFFを指定します。
16進数指定であれば以下のようになります。
poke 0xF123 0x37

(この時、数値が符号付か符号無しかで扱いが変わるのですが、実際のころほとんどの場合は符号無しなので上記のように行えば良いと思います。稀に符号有りだった場合は一番上の1ビットが符号になりますので-128~127 (0x80~0x7F)になります。)

番地がわからない場合、番地を探すことになります。
最初、以下コマンドでメモリのスナップショットを取ります。
findcheat -start

続いて、現在の値を以下で検索します。
findcheat 1
これは、現在メモリの値が"1"になっている番地を検索して候補を絞り込むコマンドです。



16進数指定もできます。
findcheat 0x10

候補が多い場合は以下コマンドで前回のfindcheatと変化がないメモリ番地のみに絞り込むことができます。何度か行っておくと絞り込みやすいです。
findcheat equal


ちなみに、MSXにはBCDという数値の扱い方があります。懐かしい響き!
普通、コンピュータは2進数ですので16進数ですので0~15の値がメモリに書き込まれますが、10~15を使わずに0~9だけを使ってメモリに保存していることがあります。これはゲームの種類にもよります。

ですので、画面上に 25 と表示されている時、それが16進数に変換されて0x19として保存されている場合もあれば、BCDとして 0x25で保存されている場合もあります。

findcheatコマンドを繰り返す度にリストが狭まっていきますので、やり直したい場合は findcheat -start に戻ります。

さて、実際のプレイで行ってみましょう。



プレイ直後です。
矢の数は0です。
findcheat -start で初期化し、findcheat 0 で検索します。

少しプレイして矢を入手します。10になりました。
再度、コンソールで検索します。



候補が3つです。findcheat equalコマンドを打ってもこの3つは変化ありません。どうやらこのうち何れかのようです。このくらいまで絞り込めれば、再度同じことをするよりは Try & Errorの方が早いです。

メモリを書き換えた後に矢を1つ入手してみれば正しく書き換えできたかどうかがわかりますので、矢を入手する直前で状態セーブし、メモリ書き換えてから矢を入手することで期待通りになるかどうかを確認します。

状態セーブ: PCはALT+F7 MacはCmd+S
状態ロード: PCはALT+F8 MacはCmd+R

最初を試してみます。
poke 0xE046 0x99
このゲームのこの値はBCDなのでこのように16進数で指定します。これで矢の数が99になった筈です。表示上はそのままですが、矢を入手すれば数が増えるので期待通りに動いていることがわかります。

せっかくですので100の位も変えたいですよね。
メモリは隣同士であることがほとんどなので、同じように候補を絞り込んでもいいのですが、上の番地の1つ後に書き込んでみましょう。
poke 0xE047 0x09
もちろん poke 0xE047 9 でも同じこと。

MSXのCPUはZ80で、Intelの86系統なので上の位と下の位がメモリでは引っくり返るというような懐かしい知識を持って来なくても、どうせ隣のどちらかなのだから前か後ろを試してみればどちらかが当たりです。

こうして以下が判明しました。

矢の数の100の位を9にするコマンド: poke 0xE047 0x09
ゴールドの数の100の位を9にするコマンド: poke 0xE049 0x09
鍵の数の100の位を9にするコマンド: poke 0xE04B 0x09

コンソールでは上下キーでコマンドのヒストリが出せますので数が減ってきたら定期的に同コマンドを打つことで数が再設定できます。

これで楽しく遊べます。

■Macでのファンクションキー
ちょっと罠なのが、このゲームに限らず F1~F5を使いたいときにMacだとデフォルトだとMac用機能が優先されて、エミュレータのF1~F5が動作しないことがあります。こんな時はMacのキーボード設定を開いて「F1, F2などのキーを通常のファンクションキーとして使用」にチェックを入れるか、あるいはFnキーで使います。(私の外付け純正キーボードにはFnキーはないですが)

■呪文
WORLD1 YOMAR
WORLD2 ELOHIM
WORLD3  HAHAKLA
WORLD4  BARECHET
WORLD5  HEOTYMEO
WORLD6  LEPHA
WORLD7  NAWABRA
WORLD8  ASCHER
WORLD9  XYWOLEH
WORLD10  HAMALECH

■見つけ辛いアイテムのメモ
法衣 右上の緑背景のマップと、その左に繋がっている赤背景の境目にある緑背景の画面の敵を全滅させる。効果は、WORLD8のキー操作が普通になる。
サーベル WORLD6クリア以降に入手可能。WORLD7の画面から右に1つ、下に2つ行った画面の敵を全滅させる。効果は、攻撃力2倍
壷 ワールド8の画面の1つ左、2つ下、1つ左の画面で剣を右に3回、剣を左に3回、続いて3回ジャンプ。効果は、経験値2倍
短剣 ワールド8の画面の1つ左、2つ下、2つ右の画面で移動する足場に乗ったままカーソルを右・下・左・上の順に押す。効果は、UMBRELLAと入力することでコウモリ全滅させる。
キャンドル WORLD5の下の画面の敵を全滅させる。WORLD5の透明な床のマップを表示させる効果があるが、これがなくても問題なくクリアできる。
十字架 WORLD3の画面の1つ下、1つ左、2つ下の画面で足場から壁を打ち込み、透明な通路に入る。一度ここに入ると壁が出来てしまって、失敗時にはコンティニュー或いはWORLD往復しないと再挑戦できないが、エミュレータであれば状態Save/Loadで問題なくリトライできる。透明な通路の中に落とし穴があるので注意。これがないとラスボスにダメージを与えることができない。


そして、サクッとクリアです。矢/鍵/ゴールドが無限になるだけで現代ゲームになって十分に楽しめます。




ちなみに、openMSXをダウンロードしたばかりの状態ではC-BIOS (Compatible BIOS, 互換性BIOS)が入っており、日本語に問題があったりディスクが使えなかったりして微妙なので、パッケージの中のshare/systemromsにどこかからダウンロードしてきてこの中に置くと実機のBIOSが使えます。私はとりあえず PanasonicのWSXにしてあります。どれでも大差ないとは思いますが同機種を持っていたのでなんとなくこれを選んでしまいます。 BIOSを変えずにC-BIOSのままだと動作が微妙に遅いような? さすが実機BIOSの方が動きが良いですね。



トピック: ゲーム