[WEB App] Atari 2600 Emulator — ブラウザで動くAtari 2600 (VCS) エミュレーター (MOS 6502コア・TIA・RIOT 6532・全マッパー・AudioWorklet TIAサウンド対応)

[WEB App] Atari 2600 Emulator — ブラウザで動くAtari 2600 (VCS) エミュレーター (MOS 6502コア・TIA・RIOT 6532・全マッパー・AudioWorklet TIAサウンド対応)

Atari 2600 Emulator

自作MOS 6502 CPUコア(6507仕様・非公式命令対応)をベースに、VRAMを持たない伝説の家庭用ゲーム機 Atari 2600 (VCS) のハードウェアをブラウザ上にエミュレート。

VRAMが存在せず、電子ビームの走査に合わせてレジスタをリアルタイム更新する「Racing the Beam」方式のTIA (Television Interface Adaptor) を忠実に再現。CPU命令の最終サイクルおよびI/Oフックによる1クロック単位のビーム同期処理を徹底しています。

さらに、128バイトRAMとインターバルタイマーを備えるRIOT 6532、Ron Fries方式アルゴリズムによるAudioWorklet TIAサウンド波形合成、多様なカートリッジマッパー(F8/F6/F4+SuperChip、FA、FE、3F、E0、E7等)のシグネチャ自動判別を搭載しています。

エミュレーターの起動方法

JS ATARI 2600 EMULATOR

以下、リンクを開くと起動します。

スタートメニューから起動

トップページのスタートメニューからも起動できます。

Atari 2600 Emulator — スタートメニュー

6502 EMULATOR PROJECT

スクリーンショット & 動作確認作品

Atari 2600の代表的なゲームタイトルおよび大容量特殊マッパー作品での動作検証を行いました。

Atlantis (Europe)

※ 各著作権および商標権は、Imagic社ならびに各権利所有者に帰属します。

ビーム同期レンダラーおよび15組のハードウェア衝突判定(CXラッチ)が正常に機能。PALカラーパレットへの自動切り替えや正確なHMOVE/スプライト位置調整を再現。

Atari 2600 Emulator // Atlantis Title Screen Atari 2600 Emulator // Atlantis Gameplay

動画

Atari 2600 Emulator // Atlantis Gameplay Animation

Atari VCS Myst “Demake”

※ Vince Weaver (deater) 氏が公開している16KB E7カートリッジ版MYSTのデメイク(v2.6)を使用しています。MYSTの商標および著作物はCyan社に帰属します。本作はCyan社の公式製品ではありません。

16KB E7マッパー(2K RAM+256B RAM切替、固定バンク指定)およびNMOS 6502非公式命令(LAX/SAX/DCP/NOP等)を正確に処理。画面フリーズを起こすことなく島内の移動やリンクブックの動作を完走。

Atari 2600 Emulator // MYST Title Atari 2600 Emulator // MYST Island Scene

動画

Atari 2600 Emulator // MYST Animation

特徴

  • カートリッジROMファイルローダー:
    コントロールパネルの「Load ROM (.bin/.a26/.e7)」ボタンからROMファイルを選択することで即座に実行。自動シグネチャ判定により適切なバンク切替方式を設定。

  • ビーム同期(Racing the Beam)グラフィックエンジン:
    CPU命令の最終サイクルで発生するレジスタアクセスを追跡。WSYNC同期、VSYNC/VBLANK検出による262/312スキャンライン動的フレーム確定を完全実装。

  • プレイフィールド & マルチスプライト合成処理:
    PF0/PF1/PF2の非線形ビット描画(非対称/鏡像)、スプライト(P0/P1)、ミサイル(M0/M1)、ボール(BL)の位置決め(RESP/HMOVE)、垂直遅延(VDEL)、拡大/複製(NUSIZ)に対応。

  • 15組のハードウェア衝突判定(CXラッチ):
    各ピクセル描画時に6オブジェクトの重なりを検出し、専用LUTを用いて衝突判定レジスタへ即時ラッチ。

  • AudioWorklet Ron Fries方式 TIAサウンド合成:
    4/5/9bitポリノミアルカウンターおよびDiv31分周回路を厳密に再現。NTSC/PALオーディオクロック切り替えとDCカットフィルターを通した高音質再生。

  • 多種多様なバンクセレクトマッパー対応:
    F8(8K), F6(16K), F4(32K), SuperChip RAM(+128B), FA(12K+RAM), FE(Activision), 3F(Tigervision), E0(Parker Bros), E7(M-Network/MYST) をサポート。

  • NMOS 6502 非公式命令(Illegal Opcodes)対応:
    LAX, SAX, DCP, ISB, SLO, RLA, SRE, RRA, NOP(メモリ読み取りを伴うアドレッシング)等を完全実装。

使い方

1. ROMファイルの読み込みと起動

  1. エミュレーターページ(index.html)を開く
  2. コントロールパネルの 「Load ROM (.bin/.a26/.e7)」 ボタンをクリックして、ローカルの ROM ファイルを選択
  3. ファイルがセットされると自動的にヘッダー/シグネチャ解析が行われ、即座に起動します

2. 対応フォーマット

拡張子 / 種類内容処理
.a26 / .binAtari 2600 カートリッジROM容量およびシグネチャ判定(F8/F6/F4/SC/FE/3F/E0/E7)によりマッパーを自動設定
.e7 / .f8 等明示的マッパー指定拡張子拡張子に対応するマッパー構造体を優先割り当てして実行

キーボード・操作方法

機能キー
ジョイスティック (SWCHA)矢印キー (Arrow Keys: Up / Down / Left / Right)
FIRE ボタン (INPT4)Space / Z キー
GAME RESET (SWCHB bit0)Enter キー
GAME SELECT (SWCHB bit1)Shift キー
ステップ実行 / デバッグコントロールパネルの Step 1 Instruction ボタン

モジュール構成

モジュール名主要機能
MOS 6502 CPU CORE6502/6507 CPU命令セット(1.19MHz動作、非公式命令対応、サイクル正確なステップ実行)
A2600 BUS / MAPPERアドレスデコード、7種以上のカートリッジバンク切替マッパー、シグネチャ自動判別
TIA RENDERERビーム同期(228カラークロック/76サイクル)、PF/スプライト/ミサイル/ボール合成、CX衝突ラッチ
RIOT 6532128B RAM、SWCHA/SWCHB I/Oポート、アンダーフロー回り込み対応1/8/64/1024タイマー
TIA AUDIO PROCESSORAudioWorkletによるRon Fries方式アルゴリズム(4/5/9bitポリ、Div31分周、DCカット)

技術スタック

  • JavaScript (ES6+ / Modules) — 6502コア・Bus・TIA・RIOT・マッパーロジック
  • HTML5 Canvas (2D Context) — アスペクト比補正(640×456)レンダリング
  • Web Audio API (AudioWorklet) — サイクル同期 TIA サウンド合成
  • Astro — Webアプリケーション基盤

更新履歴

  • [2026-09-23]: v1.0 初回公開。
    • 6502/6507 CPUコアおよび非公式命令(Illegal Opcodes)の実装
    • TIA ビーム同期レンダラー(PF、スプライト、HMOVE、VDEL、衝突判定)の実装
    • RIOT 6532 (128B RAM、タイマーアンダーフロー、I/O) の実装
    • AudioWorklet による Ron Fries 方式 TIA サウンド合成の実装
    • F8/F6/F4/SC/FA/FE/3F/E0/E7 各種カートリッジマッパーおよび自動判別の実装
    • ROM ローダー (.a26/.bin/.e7) の実装

技術記事

Z80 EMULATOR PROJECT

6502 EMULATOR PROJECT