ゲーミングモニタでLR2を高リフレッシュレート動作させる方法


Adventなやつに間に合わなかった記事。

遅延を低減し、動きが滑らかになる謳われているゲーミングモニタ。
ゲーミングモニタの登場により、高リフレッシュレートでモニターを動作させることが可能になりました
リフレッシュレートが高いと動作が滑らかになり、FPSなどのゲームで有利になると言われていますが、
大体のゲームは高リフレッシュレートには対応していないので、リフレッシュレートを調整できる機能はそれこそ一部ゲームに限定されてしまいます。

この機能、LR2などの一部bmsプレイヤーでリフレッシュレートを設定することによりスクロールがある程度滑らかになります。
その手法をここに書きためておきます。

【動作条件】

  • 120hz以上対応のゲーミングモニター(倍速補間モニタは対象外)
  • DualLink接続のDVIもしくはDP接続必須 (DVI-I・VGAは不可)
    • HDMIはバージョン2.0以上必須。主に市場で主流のHDMIのバージョンは1.4では動かすことができない、
      また、HDMI接続での120hz動作はモニタが対応していなかったり正常に動作しなかったりするので非推奨。
  • 上記の必須端子が搭載されたビデオカード(3DVision対応のGeforceもしくはここ最近のRADEON)
    • Haswell以降の内臓ビデオカード(Intel HD Graphics)でも120hzまでならいけるらしいけど未検証

ここに使用ソフトの例としてLR2を挙げます。
LR2ではそれこそソフトウェア内部に120hzを設定する機能はありませんが、
システム、すなわちDirectXでリフレッシュレートを上書きすることで120hz以上の動作が可能になります。
ウィンドウモードの場合は選択中の解像度のリフレッシュレートを120hz以上にするだけで解決しますが、
フルスクリーンの場合は少々厄介な設定が必要となります。

やり方としてはレジストリエディタを起動してレジストリの設定を弄ります。
これが少々面倒だしいろいろと危険を伴うので、事前にバックアップを取っておきましょう。

Vista, 7 以降の環境で LR2 をリフレッシュレート 120Hz で動かす方法 (GeForce, RADEON 共通)

こちらの記事を参考に、下記の通りにDWORD値を入れていきましょう。

32bit の場合 (と、64bit の場合のネイティブ 64bit アプリ向け)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw に ForceRefreshRate (DWORD) を作成。値は固定したいリフレッシュレート。

64bit の場合の 32bit アプリ向け (LR2 の場合はこちら)
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw に ForceRefreshRate (DWORD) を作成。同上。

DWORD値を使用しているモニターに合わせて設定します。
DWORDの値は16進数で求められるので、モニタに応じて下記の通りに数値を設定しましょう。
(一応10進数にも切り替えることはできます)

60hzに固定したい場合: 3C (10進数で60)
120hzに固定したい場合: 78 (10進数で120)
144hzに固定したい場合: 90 (10進数で144)

設定後に再起動する必要はありません。

これで準備は完了です。
ですがGeForceの場合、これとは別にもうひとつ設定が必要になります。

LR2の動作解像度は640×480、Geforce内部にはこの解像度を120(144)hzで動作させる設定がなぜか搭載されていません。
このままフルスクリーンでLR2を起動しても60hzとして動作します。

この問題はカスタム解像度を設定することで回避できます。

  • デスクトップを右クリックしてメニューを開き、「NVIDIA コントロール パネル」を選択
  • 左リストの「ディスプレイ」の項目から「解像度の変更」を選び、「カスタマイズ」ボタンを押す
  • カスタマイズウィンドウが出たら、「カスタム解像度の作成」ボタンを押す
  • 「カスタム解像度の生成」のウィンドウが出たら下記の通りに設定する

水平ピクセル:640
垂直ライン:480
リフレッシュレート:120hzで動作させたい場合は120、144hzで動作させたい場合は144

設定後、テストボタンを押します。
このテスト画面ではデスクトップが640×480に切り替わるので、
ほかのアプリケーションを起動している場合はテストボタンを押す前にウィンドウを閉じておきましょう(いろいろと大変なことになります)
640×480の状態で画面が表示できれば成功。あとはテスト表示の確認ダイアログで「はい」ボタンを押せば完了です。
完了後はカスタム解像度の一覧に640×480 120hz(144hz)が追加されているか確認してください。

あとはLR2を起動するだけ。起動の際は垂直同期を必ず切ってください。付けると効果が得られません。
120hz以上で起動していると、主にスクロールの面で違いがはっきりわかるはずです。

ちなみにこの手法は、DirectDrawと呼ばれる古い2DのDirectXエンジンで動作するゲームであれば大体効果が得られます。
MixWaverやnazobmplayなどの古いbmsプレイヤーでも有効です。
(ここ近年のbmsプレイヤーでこの手法が有効かどうかは調べていません)

注意点としては「リフレッシュレートを変更することにより逆に動作がおかしくなるゲームが出てくる」という点です。
システムレベルでリフレッシュレートを固定する関係で、すべてのゲームで影響が出てきます。

垂直同期でゲームのスピードを管理しているアプリでは正常に動作しません。
その一例としてbeatmaniaIIDX INFNITAS、KOF13などが挙げられます。
前者は同期がとれずスクロールがガクつき、後者は60hzを基準にリフレッシュレートを上げた分倍速で動作します

これらの解決方法は固定したリフレッシュレートのレジストリ値を削除することで解決します。
当然ながらレジストリを削除した後にLR2を起動すると60hzで動作します。

ゲームを起動するたびにリフレッシュレートを変更するのは面倒なので、
その手間を省くためにregファイルを作り、常に切り替えられるようにしておきましょう。

もともとリフレッシュレート固定はそれこそブラウン管のモニタ時代でできた手法でしたが、
ゲーミングモニタが登場するまでの一般的な液晶モニターは最大60~75hzまでしか対応していないので、
普及に伴って使われなくなり、レガシー機能の一つとなりました。
こんな形で昔の知恵を使うとはいろいろと感慨深いと同時に、古い機能をその気になれば動かせるWindowsというOS自体がいろいろと驚きです。

ちなみに120hz以上のゲーミングモニタなら、スペックとか選ばなければ2~3万円ぐらいで買えます。
参考資料とかそういうのは別のブログ記事を参考にどうぞ。

FPSにおすすめの120Hz・144Hzモニター 比較

【補足】

  • G-SYNCやAMD FreeSyncの併用での動作は未検証。
  • 160hz以上を搭載しているモニターでの動作はそもそも所持していないので未検証。
  • Windows10で動作検証済み。ちなみにWindowsVista以降でリフレッシュレートを変更したい場合大体この手法でなんとかなる。
  • リフレッシュレートの変更はそれこそWindowsXPあたりまでソフトウェアで設定可能だったものの、今はレジストリでないとできない模様
  • LR2HDあたりの高解像度のゲームにおいては普通に対応しているので、わざわざカスタム解像度を作らなくても動作します
  • 動作が滑らかになったからという理由でゲームの腕が上がるかは個人差です