概要
FRANK 386 は、Raspberry Pi Pico 2(RP2350)向けのi386 PCエミュレータ。 VGA/HDMI出力、SDカード、PS/2・USBキーボード/マウス、NESゲームパッド、音声出力に対応。 Tiny386 をベースにし、DOSやWindows 95など多様なOSを起動可能。 設定・ディスク管理は Win+F11/F12 でリアルタイムに変更可能。 複数のRP2350搭載ボードに対応し、詳細なGPIOピン配置も公式で公開。
FRANK 386概要
- 公式サイト: frank.rh1.tech(全FRANKボード・ファームウェアのハブ)
- 対応ハード: RP2350(Raspberry Pi Pico 2)搭載ボード
- FRANK, Murmulator(M1/M2), Olimex PICO-PC, Waveshare RP2350-PiZero
- 主な特徴
- i386完全エミュレーション(一部i486/i586対応)、x87 FPUオプション
- 最大8MB RAM(8MB PSRAM利用時)
- VGA/HDMI出力(最大640x480、テキスト・グラフィック両対応)
- サウンド(AdLib OPL2, Sound Blaster 16, PC Speaker, Tandy, Covox, Disney Sound Source)
- SDカード(フロッピー・HDD・CD-ROMイメージ対応)
- PS/2・USBキーボード/マウス、NESゲームパッド(マウスエミュレーション可)
- DOS, Windows 3.x, Windows 95, Linux 等のOS起動実績
ハードウェア要件
- 必須
- Raspberry Pi Pico 2(RP2350)または互換ボード
- 8MB PSRAM(拡張メモリ用)
- VGAまたはHDMIコネクタ
- SDカードモジュール(SPIモード)
- PS/2キーボードまたはUSBキーボード(USB Host利用)
- オプション
- オーディオ出力(I2S DACまたはPWM)
GPIOピン配置(例: M1/M2)
- VGA/HDMI, SDカード, PS/2キーボード/マウス, NESゲームパッド, I2S Audio用に詳細なピン割り当て
- 公式ドキュメント参照
SDカード構成・BIOSファイル
- SDカード直下に 386/ ディレクトリ作成
- 必須ファイル: config.ini(設定), bios.bin(SeaBIOS), vgabios.bin(VGA BIOS)
- ディスクイメージ(例: dos622.img, boot.img)を格納
- BIOSファイルは SeaBIOS公式リリース またはサンプルから取得
設定ファイル例(config.ini)
[pc]
mem=8M
bios=bios.bin
vga_bios=vgabios.bin
[frank-386]
cpu_freq=504
psram_freq=166
ディスクイメージ作成・管理
- フロッピー: 1.44MB(1474560バイト)イメージ
- 作成例:
dd if=/dev/zero of=floppy.img bs=512 count=2880
- 作成例:
- HDD: 最大2GBの生イメージ
- 作成例:
dd if=/dev/zero of=hdd.img bs=1M count=512
- 作成例:
- CD-ROM: 標準ISO 9660形式
- 起動時: config.iniで指定
- 実行中: Win+F12でディスクマネージャ起動、矢印キーでドライブ選択・イメージ挿入/取り出し
- 変更内容は自動でconfig.iniに保存
ショートカット・操作方法
- Win+F12: ディスクマネージャ起動
- Win+F11: 設定メニュー起動
- Ctrl+Alt+Delete: ゲストOSリセット
設定メニュー(Win+F11)
- メモリ容量(1-8MB)
- CPU世代(386/486/586)
- FPUエミュレーションON/OFF
- サウンドデバイス選択(AdLib, SB16, PC Speaker, Tandy, Covox, MPU-401, DSS)
- マウス入力(PS/2/USB/NESマウスモード切替)
- CPU/PSRAMクロック・電圧設定
- 設定内容はconfig.iniに保存・再起動後反映
ビルド方法
- 前提
- Raspberry Pi Pico SDK(v2.0+)
- ARM GCCツールチェーン
- ビルド手順
- リポジトリクローン:
git clone https://github.com/rh1tech/frank-386.git - 標準ビルド:
./build.sh - M1ボード用:
./build.sh -M1 - USBキーボード対応:
./build.sh --usb-hid - カスタムビルド:
./build.sh -b M1 -c 504 -p 166 --debug
- リポジトリクローン:
- 主なビルドオプション
- -b, --board <M1|M2|PC|Z2>:ボード指定
- -c, --cpu <MHz>:CPUクロック
- -p, --psram <MHz>:PSRAMクロック
- --usb-hid:USBキーボード有効化
- --hdmi:HDMI強制出力
- --debug:デバッグ出力有効
- CMakeオプション も公式ドキュメント参照
ファームウェア書き込み
- BOOTSELモードで
picotool load build/frank-386.uf2実行 - または
./flash.shスクリプト利用
トラブルシューティング
- Windows 95セットアップで「0 bytes of memory」
setup /imでメモリチェック回避
- Windows 95起動時「Protection error」
- patcher9x利用
- SDカードをネットワークドライブ(H)としてマッピング
- config.iniの
redirector = 1設定
- config.iniの
- キーボード入力不可
- PS/2の場合:接続・GPIO確認
- USBの場合:--usb-hidビルド確認
- SDカード未認識
- FAT32でフォーマット、配線・386/ディレクトリ存在確認
ライセンス・著作権
- MIT License (詳細はLICENSE参照)
- 主な開発者: Mikhail Matveev & DnCraptor(frank-386移植・開発、2026年)
- リポジトリ: https://github.com/rh1tech/frank-386
主要な利用オープンソースプロジェクト
- Tiny386 (Chunhui He、BSD 3-Clause): i386エミュレータコア
- Pico-286 (xrip、MIT): RP2350統合・VGAドライバ
- QuakeGeneric (DnCraptor、GPL v2): ハード統合・PS/2マウス
- QEMU: PC周辺機器エミュレーションコード
- MAME: AdLib(OPL2)サウンドエミュレーション
- inih: シンプルなINIファイルパーサ
- SeaBIOS: x86 BIOS・VGA BIOSファームウェア
- FatFs: SDカード用FATファイルシステムモジュール
- Raspberry Pi Pico SDK: SDカード通信用PIO SPIドライバ
FRANK 386 は、RP2350搭載ボードで本格的なレトロPC体験を実現するための強力なエミュレータ。 豊富な周辺機器対応・柔軟な設定・オープンソースの活用が特徴。 詳細や最新情報は 公式ページ frank.rh1.tech を参照。