世界を動かす技術を、日本語で。

RP2350用の386 PC

2026年9月14日原文(github.com)

概要

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設定
  • キーボード入力不可
    • 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 を参照。