N-EMU · レトロゲームエミュレーターv1.10.1
開発の話投稿日 thorv1.10.0

BIOSファイルなしで入れるPlayStationディスク

複数BINを1本にまとめ、CHDや複数ディスクを扱う方法と、基準となる最も遅いAndroid端末で確認してJITを使わなかった判断を紹介します。

クローズドベータテスト

1.10.0のPlayStationには、ARM向けに開発され、ホストコードによるHLE BIOSを持つPCSX-ReARMedを選びました。N-EMUはこの起動経路だけを使います。Sony BIOSの取り込みメニューも、代わりのファームウェアイメージもありません。HLEはすべてのゲームの互換性を保証するものではありません。

ディスクの取り込みは拡張子を増やすだけでは済みません。1つのCUEが複数のBINを参照するからです。CUEと参照ファイルをすべて選ぶと、トラック順に読みながら1つのイメージにまとめ、新しいCUEを書きます。BINが51個でもライブラリでは1本です。全体をメモリに載せず、読みながらハッシュを計算します。

元のCUEに書かれたパスはコアに渡しません。検証したトラック表から作る仮想CUEと、結合した仮想BINの2つだけを見せます。入力されたパスをたどって別のファイルを開かせない境界です。CHDは原本のまま保存し、仮想CHDを1つ渡します。

CHDは既にPSPで使っていました。拡張子だけで振り分けると、PSPのゲームをPS1へ送ってしまいます。最初のトラックが生のCDトラックかを確かめてPS1を判別し、PSP用のトラックやDVDは従来のPSP検査へ渡します。拡張子を共有しても、区別のために変換する必要はありません。

M3Uと各ディスク、または(Disc 1)、(Disc 2)のような名前のファイルをまとめて選ぶと1本になります。一時停止メニューで交換し、1つのメモリーカードとステート履歴を使い続けます。ステートを読むと当時のディスクに戻ります。ゲームごとのDualShockは2本のスティックと振動に対応し、L1、R1、SELECTでアナログモードを切り替えます。

AndroidでJITを使うかは測定後に決めました。2026年10月21日、基準端末で最も遅いGalaxy Tab A8で最適化した測定ビルドを1倍速で動かし、所有者が画面のフレーム数が安定していると確認しました。連続フレーム時間の記録ではなく、全ゲームの速度には広げられません。遅い場合だけ有効にする基準に従い、PS1はAndroidもiOSもJITを使いません。

  1. 開発の話v1.9.0クローズドベータテスト

    3DSのステートを更新後も開くために

    Azaharの統合ではステートをインストールごとに署名しました。その制限を保ちながら、アプリの更新だけで読み込めなくならないよう互換性の基準を分けました。

  2. 開発の話v0.2.0初期開発

    複数のゲーム機を1つのアプリに

    機種が変わっても同じライブラリでゲームを選び、セーブデータを管理できるよう、複数のエミュレーターコアを組み合わせました。

一覧に戻る対応機種と機能