マルチエミュ ares v128リリース N64がかなりよくなったらしい

リリース情報マルチエミュレータ,ares

ares 公式サイト トップイメージ

私も最近お気に入りのマルチエミュ aresのv128がリリースされました。

常に最新の開発版を使っているとv127からそれほど変わってないような気もしてしまいますが、こうしてあらためて見るとかなり細かい部分が改良されている事に気付きます。

aresのダウンロード

aresの安定版は公式サイトからどぞ。

ares v128の更新内容

今回はN64とMSXのエミュレーション改善が最も大きな更新のようです。

ニンテンドー64エミュレーションの改善

互換性は他のエミュレータほど高くはありませんが、ほとんどのゲームが動作しますしこれらのテスト結果やゲームプレイを見る限りaresは発表時点で最も精度の高いNINTENDO64エミュレータだと言っていいと思います。

互換性は他のエミュほど高くないのに精度は最も高いとは…うごごご…とりあえず言葉の意味はわからんがとにかくすごい自信だ!みたいな感じでしょうか。

互換性は動作するゲームの数、精度は正確さという意味で言ってると思われます。

MSXエミュレーションの改善

MSXキーボードのサポートとマッパーの増加によってMSX1の互換性が飛躍的に向上したそうです。ただし、これまではC-BIOS(オープンソースのMSX用BIOS)を利用していたのが実機のBIOSが必須になるとの事。

MSX2に関してはまだまだこれからという状況なので当面はC-BIOSを使用するそうです。

ポータブルモード

v127以降の開発版で既にそうなってましたが、システムファイルがares本体と同じ場所に作成されるのがデフォになりました。尚、以前に作成したシステムフォルダとsettings.bmlを移動、または上書きする事でポータブルモードに移行可能です。

CHDのサポート

これもv127以降の開発版で既に実装されてましたが、プレイステーション・PCエンジン CD-ROM2・メガCDでCHDが利用出来る事を私も確認済みです。

ただし注意点としては

現在bin/cueから作成されたCHDは動作しますが、isoファイルから作成されたCHDは動作しないという制限があります。これは将来的に対処されますが、aresがisoファイルをロードできなかったので優先度は低いと考えられています。

という事です。

その他の修正

それ以外にもデスクトップUIやゲームボーイ・メガドライブ・スーパーファミコン・PCエンジンのコアに多くの変更・改良が施されているようです。

システム以外の名称についてはこんな感じっぽいです。

  • nall:C++ テンプレートライブラリとプラットフォーム抽象化レイヤ
  • hiro:クロスプラットフォームのユーザーインターフェイス抽象化レイヤ
  • ruby:クロスプラットフォームのハードウェアオーディオビジュアル抽象化レイヤ
  • mia:データベースとヒューリスティックで動くゲームアナライザー
  • m68000:プロセッサ
  • tms9918:表示用プロセッサ

デスクトップUI

  • ホットキーを追加して早送りを切り替え[LukeUsher]
  • SupergrafxとCDを一緒に使用するためのサポートを追加[LukeUsher]
  • デフォルトのフィルター/シェーダーは「ぼかし」ではなく「なし」に[LukeUsher]
  • aresがWindowsで「ポータブル」であることを確認[LukeUsher]
  • システムディレクトリが正しく作成されなかった問題を修正[LukeUsher]
  • 物理コントローラーのレイアウトに基づいてすべての入力を再マップ[LukeUsher]
  • msxのキーボードキャプチャを実装[LukeUsher]

ゲームボーイ

  • 表示タイミングを微調整、dmg-acid2とcgb-acid2を修正[LukeUsher]

ゲームボーイアドバンス

  • ディスプレイを私のGBASPに近づけるために赤みを少し減らす[LukeUsher]

メガドライブ

  • 電源投入時に欠落している初期化を追加[invertego]
  • 最近の変更後にCPU同期を再調整(Kolibri修正)[TascoDLX]
  • 更新タイミングの再実装[TascoDLX]
  • バスが取得された後vdpdma転送が遅延[TascoDLX]
  • 精度のためのvdpタイミング調整[TascoDLX]
  • vdpvscrollのバグが実装[TascoDLX]

MSX

  • キーボードエミュレーションの接続/修正[LukeUsher]
  • いくつかのメモリレイアウトの問題を修正[LukeUsher]
  • リニアカートリッジROMマッピングを修正[LukeUsher]
  • ROMタイプの検出を改善しボードタイプを追加[LukeUsher]
  • msx1用の適切なBIOSROMが必要[LukeUsher]

ニンテンドー64

さすがに今回の目玉だけあって多いですねぇ。

  • デフォルトでアドレスエラーをアクティブに[rasky]
  • 32ビットモードで無効な64ビットアドレスのアドレスエラーを追加[rasky]
  • mameRDPSSE2実装用の不足しているファイルを追加[rasky]
  • 個別のCIC7102検出を追加[bigbass1997]
  • 自作固有の特別なヘッダーフラグのサポートを追加[rasky]
  • 無効なTLBの場合のTLBロジックを(再度)修正[rasky]
  • Jオペコードの64ビットPC計算を修正[rasky]
  • 32ビットアドレスを使用していたいくつかのメモリアクセスオペコードを修正[rasky]
  • SP_STATUSへの書き込みで競合するビットの動作を修正[rasky]
  • RAをテストするときのBGEZAL/BGEZALLオペコードを修正[rasky]
  • 物理アドレスを使用するようにキャッシュを修正[rasky]
  • PIFリファクタリング後のコントローラー入力を修正[rasky]
  • COP0構成の初期ステータスを修正[rasky]
  • cop0LL書き込みマスクを修正[rasky]
  • 64ビットPCを正しく処理するようにCPUコアを修正[rasky]
  • MMIOレジスタのデュアルアクセスを修正[rasky]
  • TLBが無効なページで、asidが一致しない場合の例外の種類を修正[rasky]
  • 無効なページマスクの処理を修正[rasky]
  • RAにジャンプするときのJALRを修正[rasky]
  • LL / SC / LLD/SCDオペコードを修正[rasky]
  • COP0コンテキスト/xcontextのマスキングを修正[rasky]
  • RAのテスト中のRSPBGEZAL/BLTZALを修正[rasky]
  • RSPDMAラップアラウンドを修正[rasky]
  • すべてのアクセスサイズでRSPDMEM/IMEMアクセスを修正[rasky]
  • コーナーケースのRSPLTVオペコードを修正[rasky]
  • RSPMTC2およびLFVオペコードを修正[rasky]
  • すべての場合でRSPPCが12ビット以内にとどまるように修正[rasky]
  • SSE4.2がサポートされていない場合の起動時のSIGILLを修正[rasky]
  • 非グローバルエントリのTLBロジックを修正[rasky]
  • 有線>31の場合のTLBランダムレジスタを修正[rasky]
  • カートリッジスペースからのバグのあるバイト/ハーフ読み取りを実装[rasky]
  • 取得されていない遅延スロットに例外を実装[rasky]
  • RSPにLWUオペコードを実装[rasky]
  • IOビジービットを使用して適切なPIバス書き込みを実装[rasky]
  • 文書化されていない壊れたRSPオペコードを実装[rasky]
  • 正しいCOP0ステータスでアドレス例外を改善[rasky]
  • サイドケースでのベクトルロードオペコードのエミュレーションを改善[rasky]
  • TLBレジスタマスキングを改善[rasky]
  • PIDMAのタイミングを少し増やす[rasky]
  • TLBエントリのphysicalAddressレジスタの内部マスク[rasky]
  • TLBエントリが電源時に正しく初期化されていることを確認[rasky]
  • ドメイン1アドレス3ゾーンをメインメモリマップにマップ[rasky]
  • PIFチップを独自のクラスにリファクタリング[rasky]
  • 遅延スロット内のジャンプの正しい動作を実装[rasky]
  • RSPセマフォレジスタの精度を微調整[rasky]
  • 内部デッドゾーンのサイズとジオメトリを変更[kev4cards]

PCエンジン

  • CD-ROMシステムのブラムを初期化[LukeUsher]

スーパーファミコン

  • 「SuperFXボクセルデモ」のデータベースエントリを追加して32kではなく64kのRAMサイズを指定[jbo-85]
  • 2の累乗ではないSuperFXROMのROM/RAMアドレス指定をサポート[jbo-85]
  • Satallaviewコンテンツをロードするときのハングを修正[LukeUsher]
  • bsxフラッシュをメモリカートの最小サイズにパッド[LukeUsher]

m68000

  • 割り込み/例外タイミングの調整[TascoDLX]
  • グループ2の例外プリフェッチを修正(CHK、ゼロ除算)[TascoDLX]
  • CMPAおよびTSTの不正なアドレッシングモードを省略[TascoDLX]

tms9918

  • テキストモードを実装[LukeUsher]

hiro

  • gtk3でメニューバーの可視性を修正[AmatCoder]

nall

  • 環境に基づいてデスクトップパスを決定[LukeUsher]
  • Windowsで非ASCII文字を使用してCHDパスを処理[invertego]
  • priority_queue削除機能を最適化[rasky]
  • chdメモリリークを防止し、サポートされていないトラックタイプを許可しない[LukeUsher]
  • lto=trueのハードコーディングを削除[LukeUsher]

mia

  • CHD圧縮CD-ROMイメージのロードのサポート[LukeUsher]
  • 古いリソースを更新[invertego]
  • sfcボードデータベースとヒューリスティックを更新[LukeUsher]

ruby

  • pulseaudioはイベントをブロックしない[AmatCoder]

上記以外

  • トップレベルのMakefileを追加[rasky]
  • Windowsコマンドプロンプトからのビルドを修正[invertego]
  • Windowsのクリーンターゲットを修正[invertego]
  • zlibインクルードパスを修正[invertego]
  • macOSでビルドした後のcodesignバイナリ[rasky]

ares v128の更新内容でした

よーく見ると何か意味おかしくね?みたいなのが混じってるような気もしますが、そういうのは逆にそれを修正または対応しました的なものじゃないかなと思います…たぶん。

という事で今後もaresの更新に注目していきたいと思います。