ZSNES 制作 zsKnight & _Demo_ ZSNES はアセンブラで書かれた Super Nintendo Entertainment System の エミュレータです。ZSNES は互換性やサウンドの再現性にまだ不十分な点も ありますが、市販の SNES 用のゲームをサウンド付きで再現することができます。 私たちは ZSNES の制作を進めてきた中で Snes9X の開発チームにたびたびお世話に なりました。Snes9X というすばらしいエミュレータも含めて、彼らに感謝したいと 思います。Snes9X の開発がより良く進むことをお祈りしています。 --------------------------------------------------------------------------- 目次 --------------------------------------------------------------------------- 0.) 日本語版翻訳に関して Information of translated version 1.) 最新情報 2.) 免責並びに否認事項 3.) システム必要条件 4.) ZSNES に関して知っておいて頂きたいこと(v0.600 時更新) 5.) 開発状況 6.) 今後の開発課題 7.) ZSNES の初期状態のキー操作 8.) ポップアップメニュー(F1 メニュー) 9.) 設定ファイル(ZSNES.CFG) 10.) チートコード 11.) 特別な機能(SNES Mouse・Super Scope・SuperFX・MultiTap) 12.) 連絡情報 13.) デバッガ 14.) 協力 --------------------------------------------------------------------------- 0.) 日本語版翻訳に関して Information of translated version --------------------------------------------------------------------------- 翻訳は工藤慎介が行いました。この翻訳に zsKnight と _Demo_ は全く無関係です。 This document translated by Shinsuke Kudo. zsKnight and _Demo_ are not concernd in this translated version. 翻訳ミスがある可能性があります。最新のファイルは工藤慎介ホームページ http://www.intio.or.jp/sdobsx/ で公開しています。また、工藤慎介への連絡は sdobsx@intio.or.jp までお願いします。 --------------------------------------------------------------------------- 1.) 最新情報 --------------------------------------------------------------------------- WHATSNEW.TXT をご覧ください。 --------------------------------------------------------------------------- 2.) 免責並びに否認事項 --------------------------------------------------------------------------- zsKnight と _Demo_ はこのソフトウェアの使用によるいかなる損害にたいして 責任を負うことはありません。このソフトウェアを ROM と一緒に配布することを 禁じます。 --------------------------------------------------------------------------- 3.) システム必要条件 --------------------------------------------------------------------------- ZSNES の動作に最低限必要な構成(実際の使用には全くお勧めできません): - 386 プロセッサ(New Graphics Engine の使用には 486 プロセッサが必要) - 8MB の RAM(最低 6MB の空き容量が必要) - VGA カード ある程度使用をお勧めできる環境 : - 486 100MHz のプロセッサ - 最低 8MB の RAM(最低 6MB の空容量が必要、2MB を超える ROM は使用不可) - VGA カード お勧めする環境 : - Pentium プロセッサ(P100 以上) - 16MB の RAM(最低 12MB の空き領域) - SVGA カード - Sound Blaster 16 または完全互換カード 65536 色モードでの推奨環境 : - Pentium プロセッサ(P166 以上) - 16MB の RAM(最低 12MB の空き容量) - 320x240x65536 または 640x480x65536 の画面モードをサポートする SVGA カード - Sound Blaster 16 または完全互換カード SFX チップを使用するのに推奨する環境 : - Pentium プロセッサ(P200 以上) - 16MB の RAM(最低 10MB の空き容量) - VGA カード - Sound Blaster 16 または完全互換カード * 48MBit(6MByte)の ROM を使用するには 10MB の RAM が必要です。 * New Graphics 16bit Engine を使用するには 11MB の RAM が必要です。 SuperFX チップの再現には 10MB 以上の RAM が必要です。 --------------------------------------------------------------------------- 4.) ZSNES に関して知っておいて頂きたいこと(v0.600 時更新) --------------------------------------------------------------------------- - 透過処理は 65536 色モードでのみ動作します。 - 320x240 モードは 640x480 モードよりも高速に動作します。320x240 で 動作しない場合や、640x480 モード特有の機能が使いたい場合のみ 640x480 モードを使用してください。 - 種々の理由で New Graphics 16bit Engine は Old Graphics Engine よりも 透過処理が遅くなってしまいました。今後解決してゆくつもりです。 - New Graphics 16-bit Engine はしばらくの間 320x240x65536 モードでのみの 動作となります。 - New Graphics 16-bit Engine はあまり多くの画面効果に対応していませんので、 New Graphics 16-bit Engine を使用すると、多くのゲームで画面を正確に 表示できなくなります - 512 ドットモードを正しく表示するには 640x480 モードを使用してください。 ごく希に 512 ドットモードを使用しているゲームがあります。ゲームが 512 ドットを使用する場合、文字がつぶれたように見えることがあります。 - PC 側における 512 ドットモードでは、640x480x65536 モードでの Interpolation(画素差補完)、non-scanline モードは使用できません。 - 512 ドットモードを 640x480 モードで使用すると画面にムラが現れます。 これは、左右のドットをフレーム毎に交互に書き換えているためです。 - 640x480 モードでの画像は 320x240 時と同じサイズに見えるように 引き伸ばして表示されます。640x480 モードは Scanlines が使いたいとき、 Interpolation が使いたいとき、または 320x240 モードで動かない場合のみ 使用してください。 - SuperFX チップを使用したゲームのエミュレートは遅くなる傾向にあります。 これは、SNES 自体のエミュレートのほかに SuperFX チップの中にある 10 または 20MHz の CPU のエミュレートも行わなければならないためです。 - 画面のスナップショットおよびフレームレートの表示はエミュレーション中に F1 キーを押したときに表示されるメニューで選ぶことができます。 - 画面のスナップショットは現在のところ 256 色時は Image.PCX、65536 色時は Image.BMP で記録されます。これは将来改善される予定です。 - フレームレート表示は今のところ Auto Frame Rate が ON になっているときのみ 動作します。OFF 時の動作は、そのうち余裕があれば対応させます。 - Cheat 機能を使うには、ROM を読み込んでおく必があります。 - もし Cheat コードが動かないときはチートコードを作成したときに使用した バージョンの ROM を手に入れてみてください。それでも動かなければ、それは 恐らく他の種類のチートコードからの変換ミスなどが原因です。 - Game Genie は HiROM を使ったゲームではもうしばらくの間対応できません。 - ZSNES の VGA 初期設定は ModeQ になっていますが、たまに ModeQ をサポート できないビデオカードやモニタがあると思います。その場合、ZSNES を 起動するときに -v 0 とオプションを加えてください。もし、-v 0 が 動作しなければ、-v 2 としてください(VESA 2 が必要です)。 - Pitch Modulation などの Sound DSP のいくつかの特徴はまだサポートされて いません。 - ZSNES を 65536 色で動かす場合、65536 色モードと低解像度モードをサポート するために SciTech Display Doctor(v5.3+)が必要です。 www.scitechsoft.com で手に入ります。もし、あなたのビデオカードが上記の 2 つのモードに対応しているならばドライバを入手する必要はありません。 - 65536 色モード使用時の全画面加色・減色透過処理には 15-bit カラー パレット(32768 色)の代わりに 13-bit カラーパレット(8192 色)を ZSNES は使用しています。 - ZSNES にはいまだに多くのバグが残されており、プレーしたいと思うゲームが すべて動くとは限りません。 - VSync はフレームスキップを指定しておかないとうまく動作しません(例 -f 0)。 ですが、この機能は高いマシンパワーを要求します(Pentium II など)。 - サウンドバッファリングはまだしばらくの間バグが解消できないと思います。 初期設定では OFF になっています。コマンドラインで -Q オプションを つけることでのみ動作します。 - SNES Mouse は、スピード設定などいくつかの機能にまだ対応していません。 - Fast Forward キーを押している間は、ZSNES はフレームスキップを 9 にした 状態で動作しています。 - もし、ZSNES があなたの PC で動かないことがあれば、Snes9X、ESNES、NLKSNES、 SNEESE、SNEMUL などのほかのエミュレータを使いましょう。ZSNES を 使っているとしても、これらのエミュレータも使ってみましょう! --------------------------------------------------------------------------- 5.) 開発状況 --------------------------------------------------------------------------- 提供する機能 : - 完璧な 65816 命令 - SRAM サポート - LoROM と HiROM のサポート - SlowROM と FastROM のサポート - すべての DMA サポート - HIRQ/VIRQ/NMI の割り込み - 多くの SNES ROM ファイル形式のサポート - マルチファイルのサポート(.1、.2、.3、A.、B.、C.) - Interleave フォーマットのサポート - PAL/NTSC タイミングのサポート Old Graphics Engine の提供する機能 : - Graphics Engine に基づく Line by Line - 0、1、2、3、4、5、6、7 のグラフィックスモード - 8x8、16x16、32x32、64x64 のスプライトのサポート(全方向への反転) - モザイク効果 - 8x8、16x16 のタイル - 32x32、64x32、32x64、64x64 のタイルモード - 背景の波打ちのための完全な HDMA 効果のサポート、Mode 7 の面白い効果、など - Mode 7 の回転・拡大縮小効果 - Singe 並びに Dual Windowing ルーチン - 背景の重ねあわせ - スプライトの重ねあわせ - バックエリアの加色減色透過処理 - 16-bit グラフィックスのサポート - タイルのオフセットモードのサポート(Mode 2・垂直のみ) - 水平方向 512 ドットのサポート 16-bit モードで提供する機能 : - 画面中部でのパレット変更 - 画面加色透過(全画面並びに半画面) - 画面減色透過(全画面) - 加色・減色透過処理 - 処理色のためのウィンドウクリッピング New Graphics Engine 8-bit の提供する機能 : - Graphics Engine に基づく line by line とタイルの組み合わせ - 0、1、2、3、4、5、6、7 のグラフィックスモード - 8x8、16x16、32x32、64x64 のスプライトのサポート(全方向への反転) - 8x8、16x16 のタイル - 32x32、64x32、32x64、64x64 のタイルモード - 背景の波打ちのための完全な HDMA 効果のサポート、Mode 7 の面白い効果、など - Mode 7 の回転・拡大縮小効果 - 背景の重ねあわせ - スプライトの重ねあわせ - モザイク効果 - タイルのオフセットモードのサポート(Mode 2・垂直のみ) - 512 ドット高解像度モードと垂直 448・478 ドットモードのサポート New Graphics Engine 16-bit の提供する機能 : - Graphics Engine に基づく line by line とタイルの組み合わせ - 256 色バッファでのグラフィックスの地塗り - 0、1、2、3、4、5、6、7 のグラフィックスモード - 8x8、16x16、32x32、64x64 のスプライトのサポート(全方向への反転) - 8x8、16x16 のタイル - 32x32、64x32、32x64、64x64 のタイルモード - 背景の波打ちのための完全な HDMA 効果のサポート、Mode 7 の面白い効果、など - Mode 7 の回転・拡大縮小効果 - 背景の重ねあわせ - スプライトの重ねあわせ - バックエリアの加色減色透過処理(まだ遅く不正確) - 加色・減色処理(不正確でウィンドウ表示に問題を生じる) サウンド機能 : - 16-bit デジタルステレオサウンド - SPC700 サウンド CPU - DSP サウンドプロセッサ - エコー効果 - FIR フィルタ - ADSR ボリューム効果 - GAIN ボリューム効果 - ノイズ効果 特殊機能 : - Super NES Mouse のサポート - Super NES Super Scope のサポート - SuperFX のサポート - MultiTap(Multi Player 5)のサポート ZSNES の特殊機能 : - Game 状態のセーブ(F2=セーブ、F3=選択、F4=ロード) 警告 : ファイルは一つにつき 260KB のハードディスク容量を使用します! - 安定した動作速度を確保するための最大 9 までの自動フレームスキップ - 設定ファイルのサポート(ZSNES.CFG) - 2 プレイヤーのサポート、ジョイスティック・ジョイパッドのサポート 現在対応していない機能 : - ピッチモジュレーションなどの DSP の特徴 - Mode 7 での水平方向の反転と extbg モード - 半画面の減色透過(New Graphics 16bit Engine を除く) - 水平 512 ドット、16x16 のタイル(New Graphics 8-bit Engine を除く) - 疑似水平 512 ドット - 垂直 448・478 ドットの SNES インターレース解像度(New Graphics 8-bit Engine を除く) - 幾つかのオフセットモードの動作 - メイン画面の後ろでのウィンドウ表示 - ダイレクトカラーモード 動かない(または正しく動かない)もの : - Star FOX や Stunt Race FX などの SuperFX ゲーム - Mario Kart や Pilot Wings などの DSP ゲーム - Megaman X2 や Mario RPG などの特殊なチップを使用したゲーム - 独特なサウンドチェック機構を持ったゲーム(サウンドが出ない場合) - 有効なヘッダを持たないゲーム(-L か -H オプションで動くようになります) - 運悪く 65816・PPU・SPC700・DSP エミュレーションのバグ部分に当たるゲーム。 - 特別なタイミングを要求するゲーム --------------------------------------------------------------------------- 6.) 今後の開発課題 --------------------------------------------------------------------------- 私たちの今後の目標がきっと気になるところだろうと思います。ここに私たちの 今後の目標をあげておきます。ですが、これはわれわれが将来のリリースで これらの機能を搭載する事を保証するものではありません。そのことには 注意してください。 - ピッチモジュレーションのサポート - SuperFX 関連の不正確さの改善への挑戦(ウィンドノイズ他) - SuperFX 関連のバグの解消(もし可能なら)並びに効率化。 - メイン画面の裏でのウィンドウ表示 - オフセットモードのバグ改修・効率化 - Mode 7 の完成 - 65816 エミュレータの書き換え(タイミングの修正並びにスピードアップ) - 高速化 - New Graphics 8-bit Engine の完成並びに Old Graphics Engine の廃止 - New Graphics 16-bit Engine の改修 - 通信ゲームサポート - サウンドバッファリングの書き直し並びに AWE32 のサポート - MMX 対応バージョンの ZSNES の制作(おそらく New Graphics 16bit Engine でのサポート) - その他 --------------------------------------------------------------------------- 7.) ZSNES の初期状態のキー操作 --------------------------------------------------------------------------- ZSNES の初期状態でのキー操作を載せておきます。これらのキー操作は F1 メニューや ESC メニューなどの GUI でエミュレーション中にも変更できます。 背景 1、2、3、4 の表示無効 = 1、2、3、4 スプライト表示無効 = 5 パニックキー(すべて有効) = 6 SNES Mouse と Super Scope を有効にする = 7 New Graphics Engine を有効にする = 8 ウィンドウ表示を無効にする = 9 オフセットモードを無効にする = 0 超加速キー = ~ ポップアップメニュー = F1 状態セーブ = F2 状態スロット変更 = F3 状態ロード = F4 サウンド無効 = F5〜F12 中断 = ESC 次にゲームプレイ時の初期設定キー(GUI で変更していない場合)を紹介します プレイヤー 1 : 上下左右 : Num Pad のカーソルキー(普通のカーソルキーも使えますが、 Num Pad のカーソルキーを使う事を強くお勧めします) A、B、X、Y : Home、End、Insert、Delete L、R : Page Up、Page Down Start、Select : Enter、Right Shift プレイヤー 2 :(プレイヤー 2 を有効にしておく必要があります) 上下左右 : K、M、N、< A、B、X、Y : D、X、S、Z L、R : F、C Start、Select : Ctrl、Alt エミュレータを実行するには、ZSNES とタイプして ください。 サウンド付きで実行するには、ZSNES -s とタイプして ください。 16-bit モードで実行するには(VESA 2 と 320 x 240 x 65536 をサポートする ビデオカードが必要です)、ZSNES -v 3 と タイプしてください。 また、サウンドを付ける場合はZSNES -v 3 -s と タイプしてください。 --------------------------------------------------------------------------- 8.) ポップアップメニュー --------------------------------------------------------------------------- Save Snapshot - スナップショットを記録します。記録は 8-bit 時は .PCX、 16-bit 時は .BMP で行われます。 Show/Hide FPS - 一秒間あたりの描画回数の表示を ON/OFF します。表示は画面の 左下に行われます。Auto Frame Rate が ON になっているときのみ 動作します。 Save SPC Data - これを選択すると次の曲の先頭を検索し、.SRM ファイルと同様に .SPC ファイルに書き込みます。曲をキャプチャする時は、 次の曲が始まる大体 2 秒くらい前に行う事をお勧めします。 いつでも実行できますが、失敗する可能性があります。この機能は New Graphics Engine 使用時には動作しません。 Sound Buffer Dump - この機能はフィルタも含む ZSNES のサウンドバッファを 空きスペースにダンプします。サウンドバッファは ZSNES で 演奏できるようにサウンドメモリから解凍されたサンプルが 入っています。ZSNES がサウンドをバッファするときの方法が 原因で、この機能は時に不正確な結果を出す事があります。 --------------------------------------------------------------------------- 9.) 設定ファイル --------------------------------------------------------------------------- ほとんどすべての項目が GUI で設定できるようになりました。 --------------------------------------------------------------------------- 10.) チートコード --------------------------------------------------------------------------- 現在 ZSNES は Game Genie、Pro Action Replay、Gold Finger に対応しています。 以下にチートコードを使用する手順を示します : 1.) パッチを当てたい ROM を読み込みます。 2.) GUI を起動し、チートメニューを選んでチートコードを入力します。 3.) 入力が終わったら、コードを有効にするために ZSNES を RESET します。 この作業は必要無い場合もあります。 メモ : いくつかのチートコードは違うバージョンのゲームを誤って指している事が あります。もしチートコードが動かなければ、Game Genie と Pro Reaction Replay の両方を試しましょう。 --------------------------------------------------------------------------- 11.) 特別な機能(SNES Mouse・Super Scope・SuperFX・MultiTap) --------------------------------------------------------------------------- SNES マウスを有効にするには、7 キーを押してください。一度押すとプレーヤー 1、 二度押すと プレイヤー 2 に有効になります。 Super Scope を有効にするには 7 キーを 3 回押してください。 これらを無効にするには、6 を押すか、7 キーを「disabled」のメッセージが 出るまで押してください。 Super Scope の操作方法 : 発射 = 左マウスボタン カーソルモードボタン = 右マウスボタン 停止 = キーボードの Back space 自動発射の有効・無効 = キーボード上の Back space の左にある =、+ キー ZSNES は ROM のヘッダに SuperFX がある事を確認すると、自動的に SuperFX の エミュレーションを有効にします。SuperFX のエミュレーションをすると 顕著なエミュレーションの速度低下を招きますが、これは SuperFX の 10MHz(Ver1)または 20MHz(Ver2)のチップのエミュレーションを 行っているためです。また、SuperFX のエミュレーションには未解決のバグが 残されており、多くのゲームは正しく動作しません。 時に、ゲームとマルチタップが両立できない事があります。もしそのような事が 起こったなら、GUI の Multitap でプレイヤー 3 と 4 の「Input Device」を 「none」にしてください。 --------------------------------------------------------------------------- 12.) 連絡情報 --------------------------------------------------------------------------- ZSNES のホームページは http://www.csoft.net/~zsnes です。 もし ZSNES に関する事で ZSNES.FAQ、README.TXT、GUINOTES.TXT を読んでも 分からない事があれば、 http://www.csoft.net/~zsnes/board/ に書き込んでください。ただし「ROM をくれ」といった旨のメッセージや、 新バージョンへの質問などは書き込まないでください。 必ずルールを読んでください。ZSNES のトップページからルールへのリンクが あります。 作者に直接連絡を取りたい場合は、 zsknight@usa.net に E-mail を送ってください。 E-mail は内容によって _Demo_ または Pharos に転送されます。指名して いただいてもかまいません。ただ、私たちは普段忙しい身なので、必ずしも 返事が出来るとは限らないと思います。 --------------------------------------------------------------------------- 13.) デバッガ --------------------------------------------------------------------------- * メモ : デバッガは ZSNES の起動時に -d オプションを付けない限り 無効になっています。 キー操作を紹介します : 1 : spc700 表示の有効・無効 2 : 65816 表示の有効・無効 T : トレース(65816 opcode) B : 65816 Break Point S : SPC Break Point C : カウンタクリア M : 65816 モディファイ A : SPC モディファイ D : Debug Dump(SPC/DSPRam Dump のみ) W : シグナルでストップ(プログラマ・オンリー) F1 : デバッガ終了、ゲーム続行 F2 : 状態セーブ F4 : 状態ロード ESC : プログラム終了 --------------------------------------------------------------------------- 14.) 協力 --------------------------------------------------------------------------- まず、ZSNES の開発に多大なサポートをしてくれた wnelson に感謝し、この場で お礼を述べさせていただきます。彼無しで ZSNES の今は有り得ません。 YOSHi の貴重な情報もとても助かりました。 その他、協力いただいた方々 : The_Teach(Snes9X)… すばらしい情報とチートに関する協力を頂きました。 Trepalium(Snes9X)… 多大な協力と情報提供をしていただきました。 Gary(Snes9X)、Steve Snake(KGen)… サウンド解凍に関するソース情報を いただきました。 Gary(Snes9X)… TCall と PCall に関するソース情報をいただきました。 MrGrim … すばらしいサポートをいただきました。 Crono … サウンドブラスター関連のプログラミング情報をいただきました。 Aquis … ZSNES のロゴを作っていただきました。 Alucard … 65816 関連の協力を頂きました。 Vertigo … 互換性リストを作っていただきました。 EFX … 頼もしいサポーターになっていただき、たくさんの助言と素材を いただきました。 Zophar … 頼もしいサポーターになっていただき、ミラーサイトのメンテナンスを していただきました。 Chris Hickman … ZSNES の Web サイトのデザインをしていただきました。 Csoft … Web Page のホストをしていただいています。 Marius Fodor … Vsync、Sidewinder、Gamepad Pro のコードを 書いていただきました。また、プログラムを最適化する情報もいただきました。 Sardu … すばらしい情報とお手伝いをいただきました。 Lord Esnes … すばらしい手助けをしてくれました。 Robbert Grubbs … Sidewinder に関する情報をいただきました。 Nerlaska … プログラム最適化へのアドバイスといろいろな助けをいただきました。 Diskdude … チートコードに使用する sneskart を作っていただきました。 DarkForce … すばらしい手助けをしていただきました。 Pharos … キーボードのコードの助言をいただきました。 Lestat(Snes9X)、Feenix65(Snes9X)… 彼らの SuperFX に関する情報とコード、 HiROM、SuperFX などの Interleave フォーマット、タイル別オフセットモード、 FIR フィルタ、spc700 に関する情報、hdma のバグレポートなどを含む たくさんの貴重な情報を提供していただきました。 WolfWings ShadowFlight … いくつかの nasm に関する問題に協力して いただきました。 その他大勢のドキュメントを送ってくださった方、助けてくださった方、 サポートしてくださっている方、バグ報告をしてくださった方に感謝します。 Hucard、Kaiden、#ZSNES efnet の方々、そして書き忘れたすべての方々に 感謝します。 ベータテスタの皆さんに感謝します。 _DEMO_ より、以前に #snesemu にいた tgenius と 4999 へ、 65816 エミュレーション・ハックに関して感謝します。 256 x 256 x 256 のスキャンラインモードのソースを提供してくださったのは MAME です。MAME に感謝します。 最後に、Snes9X、Nlke SNEeSe SNEMul などの SNES エミュレータを作っている方々、 TheSE 開発に携わっている方々の今後のご幸運をお祈りいたします。