2022年4月11日月曜日

PCSXRで描画された文字が消えずに表示され続けてしまう現象はOpenGLのOffset drawingをStandardにすれば解消する


背景

PCSXRとはPlay Station(1)のエミュレータです。
数年ぶりに遊んだところ、環境が変わったためか文字が消えずに残る不具合に遭遇しました。
試行錯誤したところ解消したので、備忘録を兼ねて対応方法を共有します。

使ったもの

PCSXR
Ubuntu20.04のaptコマンドでインストールできるPCSXRです。

ゲームで遊ぶには別途ゲームのROM(isoやpbpファイル)の確保が必要です。

対応: OpenGL DriverのOffset DrawingをStandardにする

GraphicドライバーとしてOpenGLが選ばれているのを確認


Configuration -> Plugins & BIOSを選びます。


GraphicsとしてOpenGL Driverが選ばれているのを確認します。


ちなみに、OpenGL以外だとXVideo Driverというのを選べるのですが、これを実行すると「RGB & YUV not found.」というエラーが出て、自分の環境では実行できませんでした。


Offset DrawingをStandardにする

Configuration -> Graphicsもしくはモニタマークを選んで、OpenGLの設定画面を開きます。


この設定画面はエミュレータ一時停止中は開けないので、編集する場合は(必要であればゲームをセーブしてから)Emulator -> Shutdownを選ぶかPCSXRを再起動してください。

設定画面のCompatibilityタブにOffset drawingの項目があります。
標準は速度を重視するためかNoneになっていますが、これだとゲームによっては古い情報が意図せず表示され続ける挙動が発生します。


このOffset drawingをStandardにすることで、自分が遊びたいゲームは意図しない表示が無くなり、期待通りに動くようになりました。


おわり

文字表示領域の古い情報は読み飛ばして更新されたものだけを読み取るというイレギュラーな処理を強いられていましたが、試行錯誤によってOffset DrawingをStandardにすれば良いと分かり、期待通りに表示できるようになって良かったです。

参考

Ubuntuのpcsxrの情報です。
pcsxr package in Ubuntu

別の問題はCPUを有効化したら動くようになったと情報がありましたが、今回は違いました。
pcsx assert failure: pcsx: ../libpcsxcore/ix86_64/ix86-64.c:158: MEMADDR_OP: Assertion `!isreg || reg != 0' failed.

0 件のコメント :