MZTイメージ化に関するメモ

 カセットテープやQDに入ったプログラムをMZT形式のイメージファイルに変換する際の覚え書きです。
 AKDさんのページも参考に。

MZ-700

AUTOCRACY

Hu-BASICを起動。 AUTOCRACYのテープをセットして
POKE 3688, 30
LOAD "AUTOCRACY"
POKE 3688, 20
空きテープをセットして
SAVE "AUTOCRACY"
AUTOCRACYのテープをセットして
POKE 3688, 30
LOAD "MU"
POKE 3688, 20
空きテープをセットして
SAVE "MU"
"AUTOCRACY" がタイトル画面と操作説明のHu-BASICプログラム、"MU" がゲーム本体のHu-BASICプログラムです。
セーブした "AUTOCRACY", "MU" をMZT化し、2つのMZTファイルを連結する。Hu-BASIC上で "AUTOCRACY" を実行すると、ゲーム開始。
(タイトル画面が不要なら、"MU" だけでも問題なくプレイできます)

【補足】ゲーム自体はオールBASICですが、データの開始を示す部分の仕様がちょっとだけ変えられてテープに記録されているため、通常のHu-BASICからはロードできません。本体の前にあるマシン語プログラムがHu-BASICにパッチを当てていて、これを読めるようにし、ついでにSHIFT+BREAKやLISTを無効にしています。というわけで、ちょっとだけ変更したフォーマットでBASICプログラムをロードし、普通のフォーマットに戻してセーブすればOKです。

パックマン

エミュレータ(MZ700Win)上で実行するとコーヒーブレイクで止まる症状を回避するパッチです。MZTファイルのヘッダ部分に以下のパッチを当ててください。

・通常版

0040  50 41 54 3A 74 1D 02 00 00 FF FF

・PCG版

0040  50 41 54 3A 79 1D 02 00 00 FF FF

QIX

・1段目
 通常の方法でイメージ化。

・2段目
 1段目のプログラムを実行せずに1200hからロードした後、モニタから以下のコマンド(文字の部分)を打ち込み、パッチを当てて実行します。

*M13A7
13A7 11 30
*M213C
213C 21 18
213D 00 FE
*J1200
 実行するとテープからのロードが再開し、しばらくして停止します。停止したらリセットし、3000h〜6817h の範囲をセーブ。セーブした2段目をイメージ化し、1段目の末尾に2段目のデータ部を追加。
 MZTイメージファイルのヘッダを書き換え、ファイルサイズ(オフセット0012h)を 1110h → 4938h に変更する。
 MZTイメージファイルのオフセット 0E25h〜 (データ部の 0DA5h〜) に以下のパッチを当てる。
0E25  21 10 23 11 00 11 01 18 38 ED B0 C3 2C 0F

キャリーラボもの

 キャリーラボものは特殊なフォーマット(WICS?)の2段目をロードする構造のものが多いようなので、イメージ化支援プログラムを作成してみました。

 CarryLabFiler Download

 実機で CarryLabFiler.mzt を実行すると "SET TAPE AND PRESS ANY KEY" と表示されるので、テープをセットして何かキーを押してください。ロードとパッチが完了すると "SET BLANK TAPE AND SAVE AS FOLLOWS" と表示され、その下にセーブ用の Sコマンドが表示されます。新しいテープをセットし、表示された Sコマンドの行の上で [CR] を押してテープにセーブしてください。新しくセーブしたテープは通常の方法でイメージ化できます。なお、「プロ野球」のようにゲーム開始後もテープの読み書きを行うものには対応できません。

・動作確認に使用したソフト


その他のテープの構造

I: インフォメーションブロック
D: データブロック(カッコ内はサイズ)
タイトルメーカー構造
暴走!オリエント急行エニックスI+D+D(3900)
ビルディングホッパータスクフォーツ高知I+D+D(9D9F)
サブマリンシューターハドソンI+D+D(504E)
ぐしゃハドソンI+D+D(57C7)
3Dスペースドライブ富士音響マイコンセンターRAMI+D+D(0500)+D(4E00)
ガタ・ゴト富士音響マイコンセンターRAMI+D+D(0500)+D(1820)
バドミントン富士音響マイコンセンターRAMI+D+D(0500)+D(2A00)
本将棋富士音響マイコンセンターRAMI+D+I+D+D(7700)
PCGモンスターパニックマーベルコンピュータ(COSMOS明石)I+D+I+D+I+D
アンドロメダプランヒロセマイコンプラザI+D+D(003D)+D(5D95)
※ソフトウェアのバージョンの違いによって、ここに挙げた情報と異なることがあるかもしれません。あくまで参考まで。

MZ-1500

Lode Runner

イメージ化支援プログラムを作成してみました(要データレコーダ)。イメージ化したものは“テープ版(要RAMファイル)”になりますので、エミュレータ上ではQDとしてではなくカセットテープとして起動してください。

LRfiler.zip Download

【補足】Lode RunnerはQDのB面を独自のフォーマットで使っており、ROMモニタを使わずに自分で直接アクセスするので、MZ700WINとは相性がよくありません。そこで、B面のデータをRAMファイル(MZ-1R18)に入れておき、QDへのアクセスをRAMファイルへのアクセスに置き換えるパッチを当てて動かしています。

ミルキーウェイ

A面は、QDファイル名にコントロールコードが含まれている場合の読み込み方法などを参考にイメージ化します。イメージ化したMZTファイルのヘッダ部分に以下のパッチを当てます。
0040  50 41 54 3A 2F 6C 31 CD 39 5A D3 E3 CD 00 FA D3
0050  E1 F5 E5 D5 C5 21 F0 10 11 FC 58 06 40 4E 1A 77
0060  79 12 23 13 10 F7 1E 7C 06 1A 4E 1A 77 79 12 23
0070  13 10 F7 C1 D1 E1 F1 C9 C5 6B 02 F0 10 FF FF 00
B面は普通のフォーマットですので、通常どおりの方法で各ファイルをイメージ化し、連結します。各ファイル名が元のQDのものと一致していないといけない点にだけ注意。実機とイメージでモニタのQDコマンドの結果が同じになっているかどうか確認しましょう。

【補足】ミルキーウェイのプログラムは、ROMモニタ9Z-502M内のQDIOドライバと全く同じ内容でアドレスだけ変更したものを内部に持っていて、これを呼び出してQDをアクセスしています。このため、MZ700WINがQDへのアクセスを引っかけられず、QDからの読み出しが正しく動きません。 そこで、ミルキーウェイのQDIO用のワークと、9Z-502MのQDIO用のワーク(に相当するアドレス)の中身を交換したうえで9Z-502MのQDIOを呼び出し、再び交換して元に戻す、というパッチを当てています。

ばってんタヌキの大冒険

 QDファイル名にコントロールコードが含まれている場合の読み込み方法のプログラムを使ってA面をロードすると、英大文字と小文字がひっくり返った変な状態になりますが、もう一度 "j1000" でロードすると元に戻ります。([CTRL]+[E]でも戻るそうです。情報提供: AKDさん)

・A面
 上の方法でロードし、イメージ化します。イメージ化したMZTファイルのヘッダ部分に以下のパッチを当てます。

0040  50 41 54 3A 0C 14 18 21 00 10 CD 1E 02 21 00 10
0050  01 00 A0 CD 21 02 C3 00 10 ED F4 01 ED F4 02 FF
0060  FF

・B面
 上の方法でA面をロードします。ロード後、モニタから以下のコマンド(文字の部分)を打ち込み、A面のプログラムにパッチを当てて実行します。

*M13CE
13CE 38 18
13CF 03 FE
*M143B
143B 10 20
*JEF66
 B面をセットして[CR]を押すと、B面をロードして停止します。リセットして、2000h〜BFFFhの範囲をセーブし、イメージ化してください。

できたイメージはテープ版になりますので、エミュレータ上ではQDではなくカセットテープとして起動してください。「B面をセットして〜」のところで "Set Load Tape" のメニューからB面のテープをセットします。なお、A面とB面のMZTイメージを連結すれば、テープイメージの入れ替えは不要になります。

【補足】ばってんタヌキのB面は独自フォーマットのようなので、A面のプログラムにロードしてもらった直後に止めてイメージ化しています。エミュレータ上での2段ロードは、手抜きしてMZ700WINのテープパッチ用特殊命令を使っています(バンクの状態とか何も考えなくていいので…)。テープ版になってしまっているのはそのせいです。


戻る