[WEB App] Amstrad CPC Emulator — ブラウザで動くAmstrad CPC 464エミュレーター (Z80コア・CRTC 6845・Gate Array 27色・PPI 8255・SNA/DSK対応)
Amstrad CPC Emulator
自作Z80 CPUコアをベースに、欧州で大ヒットした8bit名機 Amstrad CPC 464(1984)のハードウェアをブラウザ上にエミュレート。
Amstrad CPC - Wikipedia
The Amstrad CPC (short for Colour Personal Computer) is a series of 8-bit home computers produced by Amstrad between 1984 and 1990. The CPC 464 was the first model, featuring 64 KB RAM, a built-in cassette tape deck, and a dedicated monitor.
en.wikipedia.orgCRTC 6845とGate Arrayの連携による非線形VRAMアドレス変換、5ビット指定による27色ハードウェアパレット、Mode 0(160×200/16色)・Mode 1(320×200/4色)・Mode 2(640×200/2色)のマルチレゾリューション描画に対応。
さらにPPI 8255を介したAY-3-8910 PSGバス制御(BDIR/BC1)とキーボードマトリクス入力、SNAスナップショットおよびDSKディスクイメージのドラッグ&ドロップローダーを搭載しています。
ゲームの起動方法
JS AMSTRAD CPC EMULATOR
以下、リンクを開くと起動します。
Amstrad CPC Emulator — ブラウザで動くAmstrad CPC 464エミュレーター
Z80A 4.0MHz / CRTC 6845 & Gate Array / AY-3-8910 PSG / PPI 8255 — SNA / DSKドラッグ&ドロップローダー対応
lain-lab.comスタートメニューから起動
トップページのスタートメニューからも起動できます。
Z80 EMULATOR PROJECT
Z80 EMULATOR PROJECT
フルスクラッチ JavaScript Z80 コアと、その上に構築されたレトロシステムエミュレーター群
lain-lab.comスクリーンショット & 動作確認作品
Amstrad CPCの優秀なHomebrew作品および実機タイトルでの動作検証を行いました。
Locomotive BASIC
起動直後のLocomotive BASIC画面。PPI 8255経由でのキーボード入力と、Gate ArrayによるMode 1(320×200/4色)テキスト描画が正常に機能。
BASICコードを実行。
動画
DEAD BY DAWN // Malcolm Kirk
Malcolm Kirk様作の「DEAD BY DAWN」。
Homebrew.AT // DEAD BY DAWN // Malcolm Kirk
Bruce Charcoal accidentally invoked a horde of demons in our dimension. You'll have to guide him to retrieve the twelve pages of the book of spells scattered in a gloomy house but also the lair of the monsters to ban them in this game inspired by the fantasy movie Evil Dead 2 from Sam RAIMI.
homebrew.amstradtoday.com
動画
LALA THE MAGICAL PROLOGUE // The Mojon Twins
The Mojon Twins様作の「LALA THE MAGICAL PROLOGUE」。
Homebrew.AT // LALA THE MAGICAL PROLOGUE // The Mojon Twins
Second title from the Mojon Twins using their engine named The churrera, LALA PROLOGUE capitalize on the idea of the quest for items which SIR ABABOL had already used. you are Lala, a clumsy witch apprentice who scattered to the four corners of the school her mistress potions.
homebrew.amstradtoday.com
動画
特徴
-
ドラッグ&ドロップ ファイルローダー:
SNAスナップショット(.sna)やディスクイメージ(.dsk)を画面に直接ドロップすることで即座にロード・実行可能。 -
CRTC 6845 & Gate Array 複合描画エンジン:
CRTC 6845のレジスタ生成アドレスとVRAMのインタリーブ(8スキャンライン周期)を再現。Mode 0/1/2の各ピクセル構造(ビット散在型フォーマット)をリアルタイムデコード。 -
Gate Array 27色カラーパレット:
5ビット値から27色のカラーパレット(RGB各3段階)へのハードウェアマッピングを完全再現。 -
PPI 8255 経由 PSG & キーボード制御:
Z80から直接ではなく、PPI 8255 (Port A / Port C) を介したBDIR / BC1プロトコルによるAY-3-8910 PSG操作およびキーボードマトリクスのスキャンを実装。 -
CPUサイクル同期 AY-3-8910 PSG 音声再生:
レジスタ更新をタイムスタンプ付きで AudioWorklet へ送信し、ノイズのないクリアなBGM・効果音再生を実現。
使い方
1. ファイルのロード
- エミュレーターページを開く
- 画面上にCPC用ファイル(
.snaスナップショット または.dskディスクイメージ)をドロップ - 自動判定され、スナップショットの場合は即時実行、DSKの場合はディスクがセットされます(BASIC画面から
RUN"DISK等で起動)
2. 対応フォーマット
| 拡張子 / 種類 | 内容 | 処理 |
|---|---|---|
.sna | SNAスナップショット | CPU/RAM/VRAMレジスタ状態を復元して即起動 |
.dsk | DSKディスクイメージ | ドライブA:にマウント |
キーボード操作
| 機能 | キー |
|---|---|
| CPC キーボード入力 | キーボードの各キー(英数字・記号) |
| ジョイスティック (Port 1) | 矢印キー + Z / X または Space |
| CLR / DEL | Backspace |
| ENTER | Enter |
モジュール構成
| モジュール名 | 主要機能 |
|---|---|
| Z80 CPU CORE | Z80A命令セット(4.0MHz動作、Gate Array 52/100us割り込み同期) |
| CRTC 6845 | VRAM非線形アドレス生成・同期信号タイミング制御 |
| GATE ARRAY | 27色パレット、Mode 0/1/2ピクセル展開、RAMバンク切替・INT制御 |
| PPI 8255 | I/Oポート制御(PSGバス操作・キーボード行選択・カセット) |
| AY-3-8910 PSG | 3音+ノイズ合成、CPUサイクル同期書き込みによるサウンド再生 |
| UI | Canvas描画、SNA/DSKドラッグ&ドロップローダー |
技術スタック
- JavaScript (ES6+ / Modules) — Z80コア・CRTC 6845・Gate Array・PPI 8255
- HTML5 Canvas (2D Context / ImageData) — フレームバッファ描画
- Web Audio API (AudioWorklet) — サイクル同期AY-3-8910 PSG再生
- Astro — Webアプリケーション基盤
更新履歴
- [2026-09-21]: v1.0 初回公開。
- CRTC 6845およびGate Array描画エンジンの実装
- Gate Array 27色パレットおよびMode 0/1/2ピクセルデコードの実装
- PPI 8255を介したAY-3-8910 PSG制御とキーボードマトリクスの実装
- サイクル同期AudioWorkletによるPSGサウンド再生の実装
- SNAスナップショットおよびDSKディスクイメージローダーの実装
技術記事
[JavaScript] 自作Z80コアでAmstrad CPC 464エミュレーターを実装。27色パレット・CRTC 6845描画・PPI 8255経由PSG制御から学んだ8bitPCアーキテクチャの泥臭さ
CRTC 6845の非線形VRAMアドレス生成・Gate Array 27色パレット・PPI 8255間接アクセスPSG制御の実装全記録。
lain-lab.com