このプロジェクトについて

JSNESは、JavaScriptで書かれたフル機能のニンテンドーエンターテインメントシステム(NES)エミュレータです。ブラウザとNode.js環境の両方で動作し、Webベースのレトロゲームプロジェクト、組み込みエミュレータ、サーバーサイドツールに適しています。 このライブラリは、主に2つのエントリポイントを提供します: - `jsnes.Browser` — キャンバス描画、Web Audio API再生、キーボードとゲームパッド入力、フレームタイミングを自動的に処理する高レベルラッパーです。URLまたは生データからROMを読み込むことができ、スクリーンショット、一時停止/再開、クリーンアップのメソッドを提供します。 - `jsnes.NES` — カスタム統合用の低レベルコアです。コールバックを介して生のフレームバッファ(256×240 ARGB Int32Array)とオーディオサンプルを出力し、タイミング、レンダリング、入力処理は開発者に委ねられます。 主な機能は以下の通りです: - 設定可能なキーバインド(localStorageに保存)を備えた標準NESコントローラ(2人プレイ)のサポート。 - 最新コントローラ向けのGamepad APIサポート。 - ザッパーライトガンエミュレーション。 - セーブ状態用のコールバックを介したバッテリーバックアップSRAM永続化。 - セーブ/ロード状態のシリアライズ(`toJSON`/`fromJSON`)。 - 調整可能なフレームレートとFPSモニタリング。 - Reactコンポーネントの例が含まれています。完全なReactフロントエンドは`web/`ディレクトリにあります。 インストールはnpm(`npm install jsnes`)またはunpkg CDNのスクリプトタグで直接行えます。ビルドはPrettierフォーマットを使用し、テストスイートが含まれています。 JSNESはJames SandersのvNESに由来し、Matt WescottのJSSpeccyに触発されました。現在も積極的にメンテナンスされており、インターネット経由のマルチプレイNES向けNEStationなどのプロジェクトで使用されています。