まるくんの趣味プログラミング日記

最初はUnityを使っていたんだけど、業務から離れてしまったので、ゲーム/エミュレーターよろずについて書いていきます。

mz1500emのルーツ

今週も何かと慌ただしく、リリースできる進捗はありませんでした。楽しみにして下さっている方々には、申し訳ありません。
今回はmz1500emのルーツをお話したいと思います。

まず大もととして、このブログをお読みの方ならご存じであろう、MZ700Winが存在します。
そこから更に、昔懐かしSHARPPDA「MI-Zaurus」シリーズ向けに移植した、MZ-700/1500 on MI-Zaurus “MZ-Memories”というものが作られました。
Zaurusのアプリ配布形態は、今で言うApp StoreGoogle Playに近いもので(ただしもっと緩い)、公開にはシャープの審査が必要でした。 当時のシャープ様は、その扱いに相当困ったことが想像できますが、当然のようにリジェクトされまして、バイナリでの配布を諦め、ソース配布で自前でビルドしてね!という形に落ち着きました。
流れ流れて、私の仕事はレトロPC/レトロゲーム復刻マンになってしまったので、権利関係のデリケートさ、扱いの難しさが、今さらですがわかるようになりました。現状、個人で続ける限りは、メーカー様の黙認をもって地味に続けていくのが無難なのでしょう。
個人的には、ちゃんとした形で世にだしてやりたいと何度も考えましたが、ハードルは高く。
噂では、けっこう現実的な提案をしたけどやっぱりダメだったという話もあります。噂ですけどね!う・わ・さ!

それはともかく、次はそのMI-Zaurus版のソースを元にして、Mac用の「MZ-1500/700 on Mac OS X “MZ-Memories"」が生まれました。 自分ではけっこううまく出来たと思っていますが、Mac OSのバージョンアップにともない、現代のMac OSではビルドできなくなっていたのです!
最近、仮想環境に古いOSを入れ、ビルド環境の再整備を試みていますが、何故かOSのブートでKernel Panicを起こしてしまい、OSがインストールできません。それがうまくいかずに困っていたのが、今週の流れでした。

そのソースを元に、emscriptenを使い、Webブラウザに移植したのが、今回のmz1500emというわけです。
以前にもJavaアプレットFlashに移植しましたが、どちらも廃れてしまい、今ではJavaFlashも動作しなくなってしまいました。Flashはかろうじてまだ生きていますが、自分の使っている環境ではほぼダメだったため、今回のWebAssembly版を作ったのです。

今まで私の作ってきたエミュレーターには、「エミュレーション精度が適当でもそれらしく動いているように見せる」という設計思想があります。
MZ700Winが生まれたのは、PCのCPUがMMX Pentium 200Mhzとかのころ。今から見たらスマホよりも圧倒的に低いスペックで動かさなければいけなかったのです。

近年のCPU速度の進歩はめざましく、速度にものを言わせて、より精度の高いエミュレーションが可能になっていて、実際、武田俊也さんをはじめ、他の作者の方々が、より高精度のエミュレータを発表されています。
将来的には、私自身でも高精度のエミュレーションに挑戦してみたいと考えます。その時は、何か別の名前になるか、バージョン番号が突然上がるか、そんな事になるでしょう。

現状のMZ700Winも、地味なメンテナンス的バージョンアップを予定しています。
・決めうちだったXInputコントローラーのキーコンフィグ
DirectInputにによるゲーム対応とキーコンフィグ
などです。

現実的にはどうかわかりませんが、構想としてはそんな事を考えているよ!とお伝えしておきますね。