★テープアクセス時のみ高速動作するXM7
(XM7B)
== 説明 ==
XM7でテープゲームを遊ぼうとすると、実機と同等の読み込み時間がかかってしまい、なかなか気軽に「遊ぶかな!」という気になれません(^^;
これは、XM7が実機動作を忠実にエミュレーションしている結果であり、その点においてはすばらしい再現性なわけです。
そういうわけなんですが、やっぱりテープゲームで遊びたい。そこで、PI.さんが公開してくださったXM7 V1.0L10のソースを元にチョコチョコっと変更を加え、テープにアクセス時のみ最高速動作するXM7を作ってみました(どのくらい早くなるかはこのページの最後をご覧下さい)。
オリジナルと混同しないよう、名前はXM7Bとしてあります。Bには特に意味はありません(ちなみに、別の目論見を実現するためにXM7Aが水面下で開発中)。
このたび、オリジナルXM7の製作者であるPI.さんから転載の許可をいただけましたので、ここに公開いたします(Win32版)。
PI.さん。ありがとうございましたm(__)m
しかし、このXM7B。当然のことながら十分なCPUパワーがないと意味がありません。もともとPentium 200MHzクラスのPCでは実スピード動作でいっぱいいっぱいくらいのイメージですから、Pentium II 400MHzくらいのCPUパワーがないと高速化が実感できないかもしれません。
現在はXM7 V2, V3がこれと同等の機能を搭載していますので、あまりXM7Bを使用するメリットはありません。
== 使用方法 ==
ん〜。オリジナルと同じ。
== 動作詳細 ==
私の解析によると(←信頼性低し...)XM7は10ms毎のインターバルタイマにより実行許可状態を管理しています。実行許可状態であると判断した場合にCPU動作を10ms分進めるようなスケジューラになっています(V1.0 L10)。
これを、カセットのテープモーターのON時には実行許可/不許可を無視して、常にCPUをフル回転するように変更したものが今回のXM7Bです。
ですので、ゲーム中にいたずらに(無意味に)テープモーターがONになるようなゲームがあった場合、(それがFD版であっても)その間は最高速で動作してしまいとてもゲームになりません。これはバグではなく、仕様ですのであらかじめご了承願います。
== その他(余談) ==
・もっとはやく!
どうしてもCPUパワーが足りないという人は、サウンド再生のレベルを落としてみてください。少しは負荷が軽く出来るかもしれません。
HudsonソフトのHuVoice(テープカウンタ2009でロード完了)を使用してロード時間を計測してみました。
計測環境はAthlon 500MHz、Windows 2000です。
条件 | ロード時間 | オリジナルとの速度比 |
オリジナルXM7 | 84秒 | 1.00 |
XM7B(44.1KHz, FM音源あり) | 27秒 | 3.10 |
XM7B(サウンド再生無し) | 23秒 | 3.65 |
・ゲームの動作速度を上げるには
将棋ゲームなど、速度は速ければ早いほどよいというゲームの場合(あるいは、アクションゲームの速度をめちゃめちゃ上げて遊びたい場合)、以下の方法を使えばゲームが早くなります(ディスク版のみ)
1.ディスクをマウントしないでXM7を起動する
当然ROM BASICが立ち上がる
2.カセットモーターをONにする
MOTOR ONコマンドを実行する
3.ディスクをマウントする
4.再起動する
ここでリセット(F12)を押してしまってはカセットモーターがOFFになってしまい、意味がありません。そこで、
EXEC &HFE00を実行して、ブートROMからワームブートさせます。
これでゲームが早くなります。ただし、ゲームによっては起動後にカセットモーターをOFFにするゲームもあります.この場合はこの手順を踏んでも早くはなりません。