アーロンの新ビデオシステム概観

Aaron氏が今回のビデオシステムの更新についていろいろまとめています:

0.106サイクルではいろいろな変更がありましたが、0.107のリリースまではまだ何週間かかかるでしょう。ここで、ビデオ設定オプションについて少し掘り下げた話をしたいと思います。

9年前にMAMEが登場したころ、MAMEのビデオシステムはユーザ側の表示解像度を変更するモードがデフォルトになっていました。5年前にコアシステムがWindowsへ移行してからは、グラフィックカードを使って必要な解像度へ拡大する方法がデフォルトでした。

現在のオプションを駆使して時間をかけて自分好みのビデオ表示をしている人も多いでしょう。しかし、時には一歩退いたところから現在の状況を見直す必要があります。現在のビデオシステムは5年もの間、特に大きな変更もなく使われてきました。今回の書き直しにより、これまでの設定方法を見直す必要が出てくることになります。

大別すると、新システムの設定は3種類に分けられます。自分がどのカテゴリなのかを見極めることが、ベストな設定を行うための第一歩です。

カテゴリ1:全部ありシステム 比較的新しめのシステムで、ほどほどの性能のビデオカードを使っている人はこのカテゴリになります(ここでいうほどほどとは、VRAMが16MB以上あるここ5年以内の製品のことで、超最新カードという意味ではありません)。MAMEの単純な画面表示なら、ほどほどのカードならどれでも十分に動作します。デスクトップの設定を好きなように設定して、MAMEにその解像度を使うように設定します(LCDのような固定解像度以外では、できれば1024x768以上の解像度で、リフレッシュレートも高めが望ましいです)。以下で説明するカテゴリ3の場合を除いて、最近は解像度を変更する機会や理由はほとんどないといえるでしょう。このモードでは、アートワークについてもフル解像度に拡大してアルファブレンディングも完全に動作させることができます。ベクターゲームもくっきりと表示できて、かっちょいいフォントを使ったり、グラフィック・タイルマップビューアを最大限に表示できます。このモードはDirect3Dを使うので、次のように設定します:

-video d3d -noswitchres [-triplebuffer] [-nofilter]

-noswitchresオプションはMAMEで現在の解像度を維持する設定です。もちろん、別な解像度を指定することも出来ますが、D3Dモードではほとんど意味がありません。いっそのこと解像度設定を取り外してしまうかもしれません。画面表示が裂ける現象を抑えるには、-triplebufferオプションも合わせて使うとよいです。ただし、ゲーム自体のリフレッシュレートよりもモニタのリフレッシュレートが高いことを確認してください。画面のぼやけた表示が好みではない場合は、-nofilterを付ければバイリニアフィルタリングを無効にできます。この代わりに-prescaleオプションを最後に追加することもできます。

カテゴリ2:むかし風 個人的にはこのモードは全くサポートしたくなかったのですが、一部の有力MAMEDev氏がうるさかったので残しました。このカテゴリに入るケースは、旧バージョンのMAMEがうまく動作していた古いシステムや、Direct3Dレンダリングがうまく動作しない場合です(注意してほしいのは、たとえばスペースインベーダーをフルスピードで動作させたときに、DirectDrawでは2000fpsで動き、D3Dでは1000fpsだったとしても、通常の60fps動作のときにD3Dが重大な問題となるわけではないことです。ですから、確信が持てない場合はDirect3Dでしばらくテストしてみてください)。このモードでは、MAMEはゲーム画面とアートワークをゲーム自体の解像度で描画します。MAME 0.106以前と同じ方法です。しかしながら、-artcropなどのアートワーク用オプションはうまく動作しません。さらに、アートワークのアルファブレンディングモードも特にオーバーレイが動作しません。MAMEはビデオカードの拡大機能を使って正しいアスペクト比で表示します。

-video ddraw -hwstretch [-switchres] [-triplebuffer]

ここでは-switchresは任意です。使っているビデオカードが本当に大昔のもので、デスクトップの解像度までさえも拡大出来ないときにONにします。表示裂けを防ぐためには、-triplebufferを指定した方がよいですが、同様にゲームよりも画面のリフレッシュレートが高いのを確認してください(-switchresは自動でこのように設定します)。画面表示がぼやける場合は、-prescaleオプションを最後に指定してください。

カテゴリ3:おまけのビデオモード これは主に、自作筐体などを使っていて、オリジナルのビデオモードに近づけるようにCRTモードを手動で設定したりする人用です。この場合、MAME側で手動調整したCRTモードを使う必要があるので、オリジナルゲームの1ピクセル毎に対応して画面にも1ピクセル毎に描画します。ピクセルを正しいところに描画する以外のことはしませんが、一応MAMEにも設定の余地があります:

-video ddraw -nohwstretch -switchres [-triplebuffer]

このケースでは明らかに-switchresが必要です。完全な1対1のピクセルマッピングが必要ならば、ハードウェアストレッチも不要です。トリプルバッファについては、システムによるでしょう。

というわけで、これらの3つをベースの設定にして調整していくことをおすすめします。上のオプションと一緒に使える設定に-prescaleがあります。引数は1から8の整数で、最終的な描画の前に、あらかじめどれくらいゲーム画面のピクセルを拡大するか指定します。なぜこれが便利なのでしょうか?動作速度への影響は?その答えは、使用するビデオモードによって違ってきます。

カテゴリ1(-video d3d)の場合、-prescaleによってあらかじめゲーム画面のピクセルをビデオカードで拡大してからスクリーンに描画します。ビデオカードの種類によりますが、大抵はパフォーマンスの改善は少しですが、意味がないわけでもありません。-prescaleの利点は、ピクセルのぼやけを減らすことにあります。-prescale 1はデフォルトで拡大しません。-prescale 2は各ピクセルを2倍に拡大、-prescale 3は3倍に拡大、という具合です。私の考えでは、-prescale 2がちょうどいいと思いますが、高解像度なディスプレイではもっと高い値の方が良いかもしれません。

次にカテゴリ2(-video ddraw -hwstretch)では、指定した拡大サイズがMAME自体の画面グラフィックサイズになります。これは残念ながらソフトウェア処理ですが、アートワーク、フォント、グラフィックビューアなどは拡大することで、使えるレベルになります。結果としては、カテゴリ1同様に画面ボケを減らしたり、高解像度のアートワークとフォント表示、グラフィックビューアの表示領域拡大などとなります。

カテゴリ3(-video ddraw -nohwstretch)では、未加工の画面を-prescaleで拡大したサイズに合うビデオモードをMAMEが選択します。拡大処理はソフトウェアで行います。利点については、ピクセルのボケがない以外はカテゴリ2と同じです。

最後に、スキャンラインなどの“エフェクト”はどうなるのかと思っているかもしれません。これは何とかします。ただし、新ビデオシステムには今のところエフェクト機能自体がありません。近いうちに追加する予定もないです。

Aaron Giles' Home Page

前の記事
次の記事