[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) のハードウェアをブラウザ上にエミュレート。
Atari 2600 - Wikipedia
The Atari 2600 is a home video game console developed and produced by Atari, Inc. Released c. September 1977 as the Atari Video Computer System (Atari VCS), it popularized microprocessor-based hardware and games stored on swappable ROM cartridges.
en.wikipedia.orgVRAMが存在せず、電子ビームの走査に合わせてレジスタをリアルタイム更新する「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 — ブラウザで動くAtari 2600 (VCS) エミュレーター
MOS 6507 1.19MHz / TIA Beam-Sync Graphics / RIOT 6532 / AudioWorklet TIA Sound — ROM(.a26/.bin/.e7)ロード対応
lain-lab.comスタートメニューから起動
トップページのスタートメニューからも起動できます。
6502 EMULATOR PROJECT
6502 EMULATOR PROJECT
フルスクラッチ JavaScript MOS 6502 コアと、その上に構築されたレトロシステムエミュレーター群
lain-lab.comスクリーンショット & 動作確認作品
Atari 2600の代表的なゲームタイトルおよび大容量特殊マッパー作品での動作検証を行いました。
Atlantis (Europe)
※ 各著作権および商標権は、Imagic社ならびに各権利所有者に帰属します。
ビーム同期レンダラーおよび15組のハードウェア衝突判定(CXラッチ)が正常に機能。PALカラーパレットへの自動切り替えや正確なHMOVE/スプライト位置調整を再現。
動画
Atari VCS Myst “Demake”
※ Vince Weaver (deater) 氏が公開している16KB E7カートリッジ版MYSTのデメイク(v2.6)を使用しています。MYSTの商標および著作物はCyan社に帰属します。本作はCyan社の公式製品ではありません。
Atari VCS Myst "Demake"
How much of MYST can you run on a 16k Atari 2600 cartridge?
deater.net16KB E7マッパー(2K RAM+256B RAM切替、固定バンク指定)およびNMOS 6502非公式命令(LAX/SAX/DCP/NOP等)を正確に処理。画面フリーズを起こすことなく島内の移動やリンクブックの動作を完走。
動画
特徴
-
カートリッジ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ファイルの読み込みと起動
- エミュレーターページ(
index.html)を開く - コントロールパネルの 「Load ROM (.bin/.a26/.e7)」 ボタンをクリックして、ローカルの ROM ファイルを選択
- ファイルがセットされると自動的にヘッダー/シグネチャ解析が行われ、即座に起動します
2. 対応フォーマット
| 拡張子 / 種類 | 内容 | 処理 |
|---|---|---|
.a26 / .bin | Atari 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 CORE | 6502/6507 CPU命令セット(1.19MHz動作、非公式命令対応、サイクル正確なステップ実行) |
| A2600 BUS / MAPPER | アドレスデコード、7種以上のカートリッジバンク切替マッパー、シグネチャ自動判別 |
| TIA RENDERER | ビーム同期(228カラークロック/76サイクル)、PF/スプライト/ミサイル/ボール合成、CX衝突ラッチ |
| RIOT 6532 | 128B RAM、SWCHA/SWCHB I/Oポート、アンダーフロー回り込み対応1/8/64/1024タイマー |
| TIA AUDIO PROCESSOR | AudioWorkletによる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) の実装
技術記事
[JavaScript] Atari 2600エミュレーターを自作。真っ黒画面からTIA・RIOT・バンク切替を積み上げてMYST Demakeが動くまで
自作MOS 6502 CPUコアを流用してAtari 2600 (VCS) をJavaScriptで再現。ビーム同期型TIA、RIOTタイマーの回り込み、Ron Fries方式TIAサウンド、E7等の各種マッパーと非公式命令までの全実装記録。
lain-lab.comZ80 EMULATOR PROJECT
Z80 EMULATOR PROJECT
フルスクラッチ JavaScript Z80 コアと、その上に構築されたレトロシステムエミュレーター群
lain-lab.com6502 EMULATOR PROJECT
6502 EMULATOR PROJECT
フルスクラッチ JavaScript MOS 6502 コアと、その上に構築されたレトロシステムエミュレーター群
lain-lab.com