[WEB App] MSX Emulator v1 — ブラウザで動くMSXエミュレーター (Z80コア・VDP・SCC音源 実装)
MSX1 / MegaROM / SCC Emulator
Z80 CPUコアのエミュレーションから始まり、TMS9918 VDP、PPI、スロット機構、各種MegaROMマッパー、PSGおよび波形メモリ音源(SCC)までをブラウザ完結で実装したMSXエミュレーター。
オープンソースのC-BIOSを標準搭載しているため、環境構築なしでそのままカートリッジROM(.rom / .bin)を読み込んで実行可能。音声処理には Web Audio API の AudioWorklet を採用し、重い描画処理下でも音飛びの少ない低遅延なリアルタイムサウンド合成を実現している。
MSX1 EMULATOR
MSX Emulator v1 — ブラウザで動くMSXエミュレーター (Z80コア・VDP・SCC音源 実装)
MegaROMマッパー・PSG/SCC音源合成・AudioWorklet対応のWebブラウザMSXエミュレーター。
lain-lab.comZ80 EMULATOR PROJECT
Z80 EMULATOR PROJECT
フルスクラッチ JavaScript Z80 コアと、その上に構築されたレトロシステムエミュレーター群
lain-lab.comスクリーンショット
マッパー手動選択・自動判別メニュー
表示倍率・ウィンドウサイズの切り替え(Fit / 2x / 3x / 4x)
動作確認:The Menace from Triton(プレイ画面)
MSXdev’20: #07 – The Menace from Triton – MSXdev Contest
One could argue that for the recent years, an edition of MSXdev isn’t complete without contributions from certain long time contenders such as mister Santiago Ontañón of Brain Games.
www.msxdev.org
ギャラクシーマップ画面
自機装備・アップグレード画面
動画(GIF)
サンプルデータ
著作権フリーのC-BIOSは、「C-BIOS Association」様のサイトよりお借りしています。
MSXdev’20: #19 – Chambers of Thyrea – MSXdev Contest
C-BIOS is a BIOS compatible with the MSX BIOS
cbios.sourceforge.netフリーゲームROMはmsxdevさんのサイトからSantiago Ontañón (Brain Games)様作の「The Menace from Triton」をお借りしています。
MSXdev’20: #07 – The Menace from Triton – MSXdev Contest
One could argue that for the recent years, an edition of MSXdev isn’t complete without contributions from certain long time contenders such as mister Santiago Ontañón of Brain Games.
www.msxdev.org特徴
-
大容量MegaROMマッパー対応:
Konami (8KB)、Konami SCC (8KB)、ASCII 8KB、ASCII 16KB、および 32KB Flat ROMに対応。ヘッダーおよびサイズからの自動判別機能を備え、ドロップダウンでの手動切り替えにも対応。 -
PSG / SCC波形メモリ音源リアルタイム合成:
AY-3-8910 (PSG) の矩形波・ノイズ合成に加え、コナミの波形メモリ音源 (SCC) 5チャンネルの32バイト波形メモリのリアルタイム読み出し・ミックス処理に対応。 -
AudioWorklet による独立スレッド音声制御:
Web Audio API の AudioWorkletProcessor を利用し、描画スレッドから独立した高優先度オーディオスレッドで波形を生成。音飛び・遅延を最小限に抑える。 -
高精度VDP描画 & 0xD0 打ち切り再現:
TMS9918 の Screen 1/2 モードおよびスプライト描画に対応。アトリビュートテーブルの0xD0 (208)による走査打ち切り挙動を正確にエミュレート。 -
レスポンシブ & フルスクリーン対応:
4:3 のアスペクト比を維持しつつ、ウィンドウ幅に合わせた自動拡大(Fit)および固定倍率(2x / 3x / 4x)の選択が可能。HTML5 Fullscreen API をサポート。
モジュール構成
| モジュール名 | 主要機能 |
|---|---|
| Z80 CPU CORE | Z80A命令セット(全未定義命令・レジスタ・割り込みモード・遅延EI) |
| VDP (TMS9918) | Screen 1/2 プレーン描画、スプライト 0xD0 打ち切り、VRAM アクセス制御 |
| PPI & SLOTS | 8255 PPI によるプライマリスロット切り替え、キーボードマトリクス走査 |
| MAPPER ENGINE | Konami / Konami SCC / ASCII 8KB / ASCII 16KB / Flat メモリバンク制御 |
| PSG AUDIO | AY-3-8910 音源(3ch 矩形波 + 1ch ノイズ LFSR)合成 |
| SCC AUDIO | 波形メモリ音源 (5ch 32byte Waveform RAM) 合成 |
| AUDIO WORKLET | メインスレッドとの MessagePort 通信、独立スレッド波形レンダリング |
| DISPLAY CANVAS | ImageData ピクセルバッファ描画、4:3 レスポンシブ・倍率・フルスクリーン制御 |
使い方
1. アプリの起動
ページを開くと、組み込まれた C-BIOS が自動的に起動し、MSX 待ち受け画面が表示されます。
2. ROM ファイルの読み込み
下部UIの「Load ROM」ボタンをクリックするか、画面上へ直接 .rom または .bin ファイルをドラッグ&ドロップします。
3. マッパーの確認・切り替え
通常はヘッダー解析により「Mapper: Auto」で最適なマッパーが自動選定されます。特定の特異なタイトルの場合は、右下のドロップダウンメニューから手動でマッパー(Konami / Konami SCC / ASCII 8KB / ASCII 16KB / Flat)を指定できます。
4. 画面サイズ・フルスクリーンの変更
中央下のドロップダウンより「Fit」(画面幅最適化)または「2x / 3x / 4x」(ピクセル等倍指定)を選択できます。「Full Screen」ボタンで全画面表示に移行します。
キーボード操作
| MSX キー | PC キーボード |
|---|---|
| 方向キー (Up/Down/Left/Right) | カーソルキー () / WASD |
| SPACE (ボタン1) | スペースキー (Space) / Zキー |
| GRAPH (ボタン2) | 左Alt / Xキー |
| SELECT | Tabキー |
| STOP / ESC | Escapeキー |
| RETURN / ENTER | Enterキー |
技術スタック
- JavaScript (ES6+ / Modules) — エミュレーターコア・ロジック
- Web Audio API (AudioWorklet) — リアルタイム波形合成・オーディオノード管理
- HTML5 Canvas (2D Context / ImageData) — フレーム描画
- Astro — Webアプリケーション基盤
更新履歴
-
[2026-09-24]: v1.1 タイミング精度・割り込み処理の改善。
- 割り込みをレベルトリガ方式に変更(VDP の F フラグ × IE ビットを毎命令評価)。IE を無効にしている間の VBlank が消失していた問題を修正
- EI 直後の1命令遅延が機能していなかった問題を修正
- DD/FD CB 命令(
SET/RES/BIT n,(IX+d)など)のサイクル二重加算を修正(46T → 23T) LD A,(nn)/LD (nn),Aのサイクル数を修正(16T → 13T)EX (SP),IX/EX (SP),IYを実装(従来は HL と交換していた)- SCC レジスタのミラー領域(0x9890〜0x989F)に対応
- Z80 コアの修正は、共有コアを使う他のシステムにも反映
-
[2026-09-15]: v1.0 初回公開。
- Z80 CPU / TMS9918 VDP / PPI / C-BIOS 実装
- 32KB フラット ROM および 大容量 MegaROM マッパー(Konami / Konami SCC / ASCII 8KB / ASCII 16KB)への対応
- Web Audio API / AudioWorklet による PSG (AY-3-8910) および SCC 音源のリアルタイム波形合成
- VDP スプライト 0xD0 打ち切り処理の修正
- 4:3 アスペクト比固定レスポンシブ表示およびフルスクリーン表示対応
関連記事
[JavaScript] MSXエミュレーターを完成させる。MegaROMマッパー・PSG/SCC音源・AudioWorkletでのサウンド合成
MegaROMマッパー(Konami / SCC / ASCII)の実装、PSGおよびSCC音源のAudioWorkletによるリアルタイム合成、スプライト打ち切り挙動の修正までを解説。
lain-lab.comZ80 EMULATOR PROJECT
Z80 EMULATOR PROJECT
フルスクラッチ JavaScript Z80 コアと、その上に構築されたレトロシステムエミュレーター群
lain-lab.com6502 EMULATOR PROJECT
6502 EMULATOR PROJECT
フルスクラッチ JavaScript MOS 6502 コアと、その上に構築されたレトロシステムエミュレーター群
lain-lab.com