M5Stack:MZ-700 エミュレータの使い方

エミュレータを使うための壁は、実機ROMとゲームなどのイメージファイルの入手の難しさです。基本的に実機や、ゲームのメディアを入手する必要があるため、なかなか手が出ないところです。


MZ-700では、有志の方によって純正ROMとほぼ同じ動作が可能な「互換ROM」が作成・公開されています!ゲームイメージについても、フリーで公開してくれている方がいらっしゃいます!

MZ-700を過去に使っていた方も、その世代のパソコン(マイコン)に触れたことのない方も、みなさまぜひとも遊んでみましょう。


モニタROMファイル

MZ-700/80K/C/1200用互換モニタ MZ-NEW MONITOR
http://retropc.net/mz-memories/mz700/kyodaku.html

上記サイトで使用許諾条件に同意した後、ダウンロードしてください。

NEWMON7.ROM:MZ-700(日本国内バージョン)用 MZ700-NEW MONITOR ROMイメージ
NEWMON.ROM:MZ-80K/C/1200 用 MZ-NEW MONITOR ROMイメージ

→上記サイトは現時点では閉鎖になっているみたいなので、こちらから入手してくださいー。

MZ700WIN関連ファイル再配布所
http://mzakd.cool.coocan.jp/mz-memories/mz700win.html##6

フォントファイル

現時点で、フォントファイルを入手できていたページが閉鎖/リニューアル中のようなので、作成できるツールを用意しました。テキスト形式フォントデータと、バイナリ生成するPythonスクリプトです。

fontgen700
http://shikarunochi.matrix.jp/wp-content/uploads/2019/03/fontgen700.zip
(フォントファイルをバイナリで配布するのと違いは無いのかも…とは思いますが、各自で生成お願いします。)

Pythonスクリプトは、NibbleLabさんがMZ-80フォント用に作成されていたものをMZ-700用に改変しました。

Pythonが使える環境で、

fontgen700.py mz700fon.txt

を実行すると、MZ700FON.JPが生成されます。

テープイメージファイル

MZ-80C / MZ-700と同世代のPC-8001/PC-8801は、ROMにBASICが入っていて、電源ONすればすぐにBASICが使えました。しかし MZ-80C / MZ-700は、ROMには最小限のモニタ機能しか持たず、BASIC等はテープからロードする形式でした。クリーンコンピュータと呼んでました。今のPCと同じ形式ですね。先進的!

なので、モニタROMを起動しただけでは何もできません。読み込むテープのイメージファイルが必要です。

下記サイトで、イメージファイルがダウンロード可能です。イメージファイルは MZT の拡張子になります。

ZEPLISシリーズ
http://www.maroon.dti.ne.jp/youkan/mz700/zeplis/

ワンダーハウス / ビルディングホッパー
http://retropc.net/mz-memories/mz700/tfk.html

KM-BASIC
https://www.recfor.net/blog/mycom/?itemid=866

エミュレータ側でカセットへの書き込みを実装してないので、BASICプログラム保存はできないです。

TINYIMAS
https://github.com/marukun700/tinyimas700_v1_src

MZ-700 Game and Tools/Game System
http://www.openspc2.org/download/

MZT形式ではないので、そのままでは使えないのですが、こちらのツールで変換が可能です。

古旗一浩氏が公開されている700用バイナリデータをmz700win用に変換するツール
http://www.retropc.net/mz-memories/mz700/mz700tips.html#furuconv


モニタROMファイル、フォントファイル、テープイメージファイルが揃いましたら、SDカードにこれらのファイルを入れてください。

こういう感じで、
/MZROM/ の下にモニタROMファイル(実機ROMをお持ちの方はそれも)とフォントファイル
/MZROM/MZTAPE/ の下に MZTファイルを入れてください。

MZ-700エミュレータ

コンパイル済みの bin ファイルを用意しました。移植元バージョンは、メインスレッド/画面表示スレッド/キー入力スレッドのマルチスレッドで動作していたのですが、何本かエミュレータを移植した感じ、M5Stackにはシングルスレッドの方が向いてそうなので、シングルスレッドバージョンも作成しました。…が、結果としては、体感できるほどの変化は出なかったです。なので、どちら使っても問題ないですー。

https://github.com/shikarunochi/m5z80/tree/master/bin
m5z700.bin
m5z700SingleThread.bin (シングルスレッド版)

binファイルをSDカードに入れておけば、LovyanLauncher から読み込み可能です。

LovyanLauncher
https://github.com/lovyan03/M5Stack_LovyanLauncher

LovyanLauncherについては、こちらの解説が詳しいです。

初心者向けM5Stackの始め方(M5Burner/LovyanLauncher編)
https://raspberrypi.mongonta.com/howto-start-m5stack-m5bunner-lovyanlauncher/

エミュレータソースも公開してありますので、ソースからコンパイルしてもOKです!最新はシングルスレッド版になっています。

https://github.com/shikarunochi/m5z80/tree/master/m5z700


エミュレータの旧バージョンでは、各種設定はWi-Fi接続してWebブラウザ経由で行う形式だったのですが、現バージョンでは、メニュー画面を用意してM5Stack本体だけで完結するようになってます。)

SDカードにファイルを準備してエミュレータを起動すると、

こういう画面になると思います。起動時には「NEWMON7.ROM」を読み込みます。

「B」ボタンを押すと、MZTファイル選択の画面になります。/MZROM/MZTAPE/ に入れてあるファイル一覧が表示されます。適当なファイルを選択してください。ファイルがカセットにセットされます。

「C」ボタンを押すとメニュー画面になります。モニタROMを選択してリセットする機能、PCGとSOUNDのON/OFF機能、”LOAD”の文字を自動入力する機能があります。

PCGがナニモノかについては、こちら参考です。

MZ-700用PCGユニット・PCG-700
http://19xx-s-rank.seesaa.net/article/405900679.html

音は結構うるさいです。ボリューム調整もできないので、ONにするときはお気を付けを。夜は避けたほうがいいですね。


MZT ファイルを選択すると、メモリに読み込まれて自動実行されます。
起動後 2回目からは、メモリに直接読み込まず、テープイメージを順に読み込みます。2段ロードや、BASIC本体を読み込んだ後にBASICプログラムを読み取る動作を想定しています。

 

このあたりからは、キーボードが無いと遊べないですね。キーボードを持ってない場合は、USBでPCと接続してシリアルコンソール経由でもキー入力可能です。

M5Stackのオプションユニットを組み合わせて作成した簡易ジョイパッドにも対応しています!

M5Stack:ジョイスティック&ボタンユニット
http://shikarunochi.matrix.jp/?p=2737

M5Stack:MZ-700 でジョイパッド
http://shikarunochi.matrix.jp/?p=2773


ああー!ファイル一覧で、imas が aimas になっていた…。スペルミス失礼しました。



このエミュレータが実行可能なのは、2019/03/20 時点では M5Stack FIRE のみです!


Amazonリンク貼りつつ、なんですけど、海外からの通販に抵抗が無い場合は、本家M5Stack の AliExpress で購入してみるのもいいかと思います。販売されている商品の種類も多くて、価格も少し安めです。ただし、到着まで半月~1ヶ月ぐらいかかります。