bsnes(ビーエスネス)は、フリーかつオープンソースで開発されている、スーパーファミコン、サテラビュー、およびスーパーゲームボーイのゲームエミュレータである。

対応プラットフォームはWindows、macOS、Linux、OpenBSD、FreeBSD。また、RetroArchでも利用できる。

なお、このソフトウェアは任天堂によって公認されたものではない。

## 概要

実機の高精度なエミュレーションを志向する、マルチプラットフォームに展開されるオープンソースのエミュレータで、Qt ベースのインタフェースを備えている。公式な正式版の最終リリースはv115で、現在は開発版(ナイトリービルド)を更新している。開発者のNearが2021年に亡くなった後も、コミュニティによって維持されている。

## 特徴

bsnesの開発者であるNear(元・byuu)はエミュレータの開発において、ソフトウェアの保存だけでなく、ハードウェア特性まで保存するために、実用性より再現精度を優先し全てのゲームやデバイスの挙動を完全再現できる、究極のエミュレータの完成を目指していた。そのため、互換性を基準にした開発方針がとられており、快適な動作には最低でもデュアルコア以上のプロセッサが必須となるなど、要求スペックが相対的に高いことも特徴である。

パフォーマンス、機能、使いやすさに焦点を当てて開発されている。

### 機能

#### 互換性

Lior Halphonが開発したSameBoyのコア部分を用いて、スーパーゲームボーイの動作に対応している。また、スーパーファミコンの特殊チップを搭載していたゲームも、全種類のチップに対応し動作する。それに限らず、サテラビューをはじめ、プロトタイプゲームを含むあらゆるカートリッジをサポートするためのカスタマイズ可能なバイト単位のゲームマッピングを備えている。CPUやスーパーFXチップのオーバークロックにも対応している。より古い非公式ソフトウェアとの互換性維持のために、古いエミュレータの動作欠陥を再現する機能も有する。

最小限の入力レイテンシのためのジャストインタイム入力ポーリング、内部ゲームエンジンの入力レイテンシを除去するための先行サポートなどにより、遅延を少なくする工夫も行われている。

#### 入力

すべての入力に複数のバインディングを可能にする高度なマッピングシステムを備える。

#### グラフィックス

DerKounにより開発された、オプションのスーパーサンプリング付きHDモード7グラフィックス、マルチスレッドPPUグラフィックスレンダラー、スムーズなオーディオ出力を保持するスピードモード設定(50%、75%、100%、150%、200%)、HQ2x(MaxStによる)やsnes\_ntsc(blarggによる)など、複数の組み込みソフトウェアフィルタ、OpenGLマルチパスピクセルシェーダー、Direct3D専用モードビデオのサポート、スプライト制限無効化サポートなどの特別な機能を備える。

スクリーンショットや画面録画にも対応し、マルチモニター出力も行える。

#### オーディオ

スーパーファミコンソフトでCD音源並みの音源の再生が可能になる「MSU1」に対応する。完璧なオーディオ・ビデオのアダプティブ同期とダイナミックレート制御や、WASAPI専用モードオーディオのサポート、キュービックオーディオ補間サポートなどの機能がある。

#### ファイル形式

7-zipの解凍サポート、BPS・IPS形式のソフトパッチのサポートなど多くのファイル形式を扱える。higanのゲームフォルダの構造にも対応する。

#### データベース

ゲームや内蔵チートコードについてのデータベースを備え、チートコード検索などに対応。

#### セーブ関連

スクリーンショットのプレビューと命名機能を備えた組み込みのセーブデータマネージャー、取り消しとやり直しのサポートで状態を保存したり(偶発的な保存とロードを元に戻すため)、定期的な自動セーブ、ゲームをアンロードするときの状態の自動保存、およびゲームをリロードするときの状態の自動再開に対応している。巻き戻しにも対応する。

## 派生版

オープンソースで開発されているため、いくつかのフォークが存在する。

### bsnes-hd

DerKounによって、2019年にリリースされた。

回転、スケーリング、または疑似遠近法の背景をより高い解像度でレンダリングすることができる。これには、新しいカスタム画像やアップスケーリングアルゴリズムは含まれない。また、シーンを歪めることなく、シーンを左右に拡張しワイドスクリーン表示させる機能も搭載する。いくつかの設定調整を行えば、他のシーンやゲームでも機能する。

それ以外にも非HD関連機能として、壁紙やソフトクロップのスクリーンショットの背景レイヤー、スプライト、ウィンドウエフェクトを無効にし、マップや静的アートを画面の側面から外す機能などがある。

bsnes-hdの機能は本家bsnesと重なる部分も多いものの、本家bsnesではわずかな画質改善しかできない一方で、こちらのフォークでは大きな画質改善やワイドスクリーン化が見込める点で大きく異なっている。

### bsnes-mt

垂直方向と水平方向の両方でピクセルパーフェクトな整数比スケーリングが行えたり、センターモードとスケールモードで、補正が有効になっている64:49ではなく4:3の正確なアスペクト比での表示が可能であったり、圧縮されていないBMPではなく、圧縮されたPNG形式でスクリーンショットを保存可能、ドライバーはクラッシュ後にリセットされず、明示的なリセットのためにコマンドラインオプションが提供される、など多くの機能改善が含まれるフォークである。

### bsnes-mercury

Snes9xのフォークや、Libretroフロントエンドの「minir」の開発者であるAlcaroによりリリースされた。このフォークは、以前のバージョンのbsnesで削除されたGambatteを使用して、HLE DSPチップエミュレーションやSGBエミュレーションなどの機能を復元し、エミュレーション精度に影響を与えない、いくつかの最適化が行えることを主眼としている。このフォークはLibretro Coreとしてのみ利用可能である。

### bsnes-classic

古いバージョンのQt GUIの機能を維持しながら、ヒガンの最新バージョンからエミュレーションの改善をバックポートすることを目的としたbsnes v073のフォーク。

その他にも多くのフォークが存在する。

## 歴史

エミュレータの開発は、2004年10月14日に始まった。最初のバージョンは2005年5月にWindows向けにリリースされ、ゲームの安定した実行には当時として高い性能を要したことから、論争が起こった。 その後、Linux、macOS、FreeBSDに移植されマルチプラットフォーム展開になった。当初はカスタムライセンスの下で開発され、後のリリースはGNU General Public Licenseのさまざまなバージョンの下でライセンスされた。2012年8月9日には、bsnesから発展する形で、多機種ソフトの動作に対応するhiganが登場した。

higanの開発は、そのエミュレーションにおける多くのオリジナルの成果と、スーパーファミコンの特殊チップ対応のようなリバースエンジニアリング開発において、資金、ハードウェア、専門知識を得る面で、スーパーファミコンエミュレーションの発達に大きく貢献することとなった。

2020年のv115のリリースがオリジナル開発者のbyuuが公開した最後のバージョンとなったが、その後新しい開発版として2023年現在に至るまでリリースそのものは続けられている。