[WEB App] Commodore 64 Emulator — ブラウザで動くC64エミュレーター (MOS 6510・VIC-II・reSID WASM・.D64/.PRG対応)
Commodore 64 Emulator
自作MOS 6502 CPUコアを拡張したMOS 6510コアをベースに、世界で最も売れた8ビットコンピューター Commodore 64 (C64) のハードウェアをブラウザ上にエミュレート。
Commodore 64 - Wikipedia
The Commodore 64, commonly known as the C64, is an 8-bit home computer introduced in January 1982 by Commodore International. It has been listed in the Guinness World Records as the highest-selling single computer model of all time.
en.wikipedia.orgPAL / NTSC のラスタタイミングを再現する VIC-II 描画エンジン、バッドライン(Bad Line)やスプライト取得時に発生するCPUサイクル奪取(DMA Steal)、$0001 オンチップI/Oポートによるメモリバンク切り替えを精密に再現。
さらに、2基の CIA (MOS 6526) タイマーとキーボードマトリクス制御、WebAssembly化された reSID と AudioWorklet によるジッターレスな高音質SID音源合成、KERNAL $FFD5 トラップによる .D64 ディスクイメージおよび .PRG ファイルの高速ロード機能を搭載しています。
エミュレーターの起動方法
JS COMMODORE 64 EMULATOR
以下、リンクを開くと起動します。
Commodore 64 Emulator — ブラウザで動くCommodore 64 (C64) エミュレーター
MOS 6510 1.023MHz / VIC-II Graphics / Dual CIA 6526 / reSID WASM Audio — .D64/.PRGロード対応
lain-lab.comスタートメニューから起動
トップページのスタートメニューからも起動できます。
6502 EMULATOR PROJECT
6502 EMULATOR PROJECT
フルスクラッチ JavaScript MOS 6502 コアと、その上に構築されたレトロシステムエミュレーター群
lain-lab.com使用ROM:Open ROMs
CommodoreのオリジナルROM(KERNAL / BASIC / 文字ROM)は今も著作権が生きているので使っていない。MEGA65プロジェクトが開発している互換ROM「Open ROMs」を使わせてもらった(LGPL-3.0、BASICの一部はMIT)。
MEGA65/open-roms
Free and open-source ROM replacements for the Commodore 64 / MEGA65
github.comスクリーンショット & 動作確認作品
C64の代表的な商用ソフトウェアおよびデモシーン作品での動作検証を行いました。
BASIC Startup & System Test
C64標準のBASIC v2環境。BASIC ROM、KERNAL ROM、CHARGEN ROMのメモリマッピングとRAMの動的切替が正確に動作。
Commercial Games (.D64 / .PRG)
VIC-IIのマルチカラースプライト合成、ラスタIRQによる背景スクロール、CIAタイマー割り込みが同期して作動。
itch.ioよりRGCD.DEV様の「TIGER CLAW(虎爪)」をお借りしています。
Tiger Claw by RGCD.DEV
A relentless beat 'em up game for the Commodore 64 and Commodore Amiga
rgcddev.itch.io
動画
itch.ioよりknifegrinder様の「Lester (C64)」をお借りしています。
Lester (C64)
The Space Station Factory orbiting the planet is undergoing an unprecedented mutiny.The main computer of the space station UNSS ASAMI has gone rougue during decommissioning and gained control of the guardian droids.
itch.io
動画
特徴
-
ディスクイメージ & PRG ローダー:
ドラッグ&ドロップまたは読み込みボタンから.D64や.PRGファイルを選択。KERNAL$FFD5ルーチンのフック処理により、1541ドライブの低速読み込みをスキップしてメモリへ即座に展開・ロード。 -
精密な VIC-II グラフィックエンジン:
PAL (63 cycles/line, 312 lines) / NTSC (65 cycles/line, 263 lines) の周期切り替えに対応。バッドライン(テキスト/グラフィック読み込み)時の40サイクルDMAスチール、スプライト1枚あたり2サイクルのCPU停止処理をサイクル正確に再現。 -
8枚のハードウェアスプライト & 特殊描画:
スプライトの横縦拡大(X/Y Expand)、マルチカラーモード、スプライト優先度、背景/スプライト間衝突検出、ボーダー開け(vBorderフリップフロップ制御)に対応。 -
双方向 CIA 1/2 (MOS 6526) エミュレーション:
タイマーA/Bによるカスケードカウント、ICR(Interrupt Control Register)割り込み、8x8 キーボードマトリクス走査、ジョイスティックポート入力を実装。 -
reSID (WASM) + AudioWorklet リアルタイムサウンド再生:
C++で記述された高品質SID音源エミュレーターreSIDを WebAssembly 化。CPU実行サイクルと精密に同期させ、AudioWorkletの 60ms バッファリングで音切れのない再生を実現。 -
$0001オンチップポートと動的メモリマッピング:
MOS 6510 の Direction / Port レジスタ($0000/$0001)を再現。BASIC ROM、KERNAL ROM、Character ROM、I/O領域($D000-$DFFF)のリアルタイムバンキングに対応。
使い方
1. ディスク / プログラムの読み込みと実行
- エミュレーターページ(
index.html)を開く - コントロールパネルの 「Load File (.d64 / .prg)」 ボタンをクリックし、ローカルの
.D64または.PRGファイルを選択(ドラッグ&ドロップにも対応) .PRGの場合はそのままアドレス先頭に配置され起動します。.D64の場合はディスク解析が行われ、ディレクトリ一覧または最初のプログラムが自動的にロードされます
2. 対応フォーマット
| 拡張子 / 種類 | 内容 | 処理 |
|---|---|---|
.d64 | Commodore 1541 ディスクイメージ | BAM(Block Availability Map)およびディレクトリセクタを解析し、プログラムを読み込み |
.prg | C64 実行可能バイナリ | 先頭2バイトのロードアドレス(通常 $0801)へ直接配置して高速実行 |
キーボード・操作方法
| 機能 | キー |
|---|---|
| C64 キーボード入力 | 英数字・記号キー(C64マトリクスへ動的変換) |
| ジョイスティック Port 2 | 矢印キー (Arrow Keys: Up / Down / Left / Right) |
| FIRE ボタン (Port 2) | Space / Z キー |
| RUN / STOP | Escape キー |
| PAL / NTSC 切替 | コントロールパネルの Model セレクトボックス |
モジュール構成
| モジュール名 | ファイル名 | 主要機能 |
|---|---|---|
| 本体制御 | C64_2.js | CPU/VIC-II/CIA/SIDの同期駆動、KERNAL LOADフック、ブート処理 |
| C64 Bus | C64Bus_5.js | $0001ポートによるバンク切り替え、I/O領域($D000-$DFFF)マッピング |
| VIC-II | Vic2_3.js | PAL/NTSCラスタ描画、表示モード、スプライト8枚、ラスタIRQ、DMAスチール |
| Dual CIA | Cia_2.js | MOS 6526 (CIA1/2)。タイマーA/B、ICR割り込み、キーボードマトリクス |
| SID Sound | C64Sid_2.js / sid-worklet_2.js | reSID WASM とのサイクル同期、AudioWorklet による遅延防止再生 |
| D64 Parser | D64.js | ディスクイメージ解析、BAM/ディレクトリ走査、セクタチェーン抽出 |
技術スタック
- JavaScript (ES6+ / Modules) — C64 System Bus, MOS 6510 CPU, VIC-II, Dual CIA, D64 Engine
- WebAssembly (C++ / reSID) — MOS 6581/8580 SID 高精度波形合成
- HTML5 Canvas (2D Context) — リアルタイム・ラスタ描画(PAL/NTSC)
- Web Audio API (AudioWorklet) — サイクル同期 SID オーディオレンダリング
- Astro — Webアプリケーション基盤
更新履歴
- [2026-09-23]: v1.0 初回公開。
- MOS 6510 CPU コアおよび
$0000/$0001オンチップポートの実装 - VIC-II ラスタ描画エンジン(バッドラインDMA、スプライト8枚、ラスタIRQ、ボーダー開け)の実装
- Dual CIA 6526 (タイマーA/B、割り込み、キーボードマトリクス、ジョイスティック) の実装
- reSID WASM + AudioWorklet による高品質 SID 音源合成の実装
- KERNAL
$FFD5トラップおよび.D64/.PRGファイルローダーの実装
- MOS 6510 CPU コアおよび
関連プロジェクト
Z80 EMULATOR PROJECT
Z80 EMULATOR PROJECT
フルスクラッチ JavaScript Z80 コアと、その上に構築されたレトロシステムエミュレーター群
lain-lab.com6502 EMULATOR PROJECT
6502 EMULATOR PROJECT
フルスクラッチ JavaScript MOS 6502 コアと、その上に構築されたレトロシステムエミュレーター群
lain-lab.com