Skip to content

shippoiincho/p6mk2emulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PC-6001mkII Emulator for Raspberry Pi Pico

Boot Menu NEC PC-6001mkII のエミュレータです。 以下の機能を実装しています。

  • メイン RAM(64KB)
  • テープ
  • PSG

とっても重要なことですが、音声合成はサポートしていません。 せっかくの PC-6001mkII ですがしゃべりませんし歌いません。 talk 文はエラーにはなりませんが、何も起きません。

SR にも対応しましたが、十分なテストを行っていないので、ほかのモードより動作が不安定かと思います。 なお FD は未実装です。


配線など

16色表示に対応するために VGA の接続が変更になっています。

  • GPIO0 VGA:H-SYNC
  • GPIO1 VGA:V-SYNC
  • GPIO2 VGA:Blue0 (330 Ohm)
  • GPIO3 VGA:Blue1 (680 Ohm)
  • GPIO4 VGA:Red0 (330 Ohm)
  • GPIO5 VGA:Red1 (680 Ohm)
  • GPIO6 VGA:Green0 (330 Ohm)
  • GPIO7 VGA:Green1 (680 Ohm)
  • GPIO10 Audio

VGA の色信号は以下のように接続します(三色とも)

Blue0 --- 330 Ohm resister ---+
                              |
                              |
Blue1 --- 680 Ohm resister ---+---> VGA Blue

このほかに VGA、Audio の GND に Pico の GND を接続してください。


FM 音源

PSG および YM-2203 のエミュレーションに fmgen を使うことができます。 fmgen 使用時は出力に I2S DAC を使うことができます。(PCM5102A でテスト済)

  • GPIO14 DATA
  • GPIO15 BCLK
  • GPIO16 LRCLK

キーボード

Pico の USB 端子に、OTG ケーブルなどを介して USB キーボードを接続します。 USB キーボードに存在しないキーは以下のように割り当てています。

  • STOP → Pause/Break
  • MODE → ScrollLock
  • PAGE → PageUp
  • カナ → カタカナ・ひらがな
  • GRAPH → ALT

また F12 でメニュー画面に移ります。 テープイメージの操作ができます。


VGA

今回は 16 色対応になっているので、1 pixel 1 バイト使用しています。 一応 64 色出ることになっているので、初代 PC-6001 の色をエミュレートするモードもあります。

mk2 の実装を残したまま SR 対応を行ったため、解像度切り替え時に PIO を再設定します。 SR モードで 40 桁(screen2) と 80桁(screen3) を切り替えると少し時間がかかります。

全画面の書き換えに時間がかかるために、高速に画面を切り替えるタイプのソフトでは動作が遅くなります。 #define USE_REDRAW_CORE1 を有効にすると、画面の書き換え処理を省略して CPU の動作を優先します。


テープ

いつもと違って、UART 入出力に対応していません。 LittleFS 上の CAS / P6 形式のファイルをロード・セーブに用います。

デフォルトでは、csave/cload の終了後にファイルクローズを行いません。 これは、BASIC とマシン語を一つの CASファイルに入れている場合に対応しています。

LittleFS の扱い方については、 こちらの記事を参照してください。


ROM など

いつものように純正ROM が必要です。

  • BASICROM.62
  • VOICEROM.62
  • CGROM60.62
  • CGROM60m.62
  • KANJIROM.62

p6mk2rom_dummy.hp6mk2rom.h にコピーしたのち、 以上のファイルのデータを入れてください。

なお実機の ROM がなくても、以下の互換 ROM & フォントで BASIC まで起動することを確認しています。

SR モードで使うには、冒頭の #define USE_SR を有効にしてください。 この場合、p6srrom.h に以下のデータが必要です。

  • SYSTEMROM1.64 または SYSTEMROM1.68
  • SYSTEMROM2.64 または SYSTEMROM2.68
  • CGROM68.64 または CGROM68.68

なお、PC-6001mk2SR と PC-6601SR は内部の機種判別フラグで切り替えているだけで、ROM の中身は同じです。 #define USE_P66SR を有効にすると、メニュー画面が PC-6601SR になります。


コンバイル済みバイナリ

Pico SDK がわからなくてビルドできないという声をいただきましたので、コンパイル済みバイナリを prebuild ディレクトリ以下に置きました。

  • p6mk2emulator.uf2 PC-6001mk2 用(I2S 無効)
  • p6mk2sremulator.uf2 PC-6601mk2SR 用(I2S 有効)

各 uf2 を、Pico に書き込むのと合わせて、ROM ファイルを Pico に置きます。

picotool を使う場合は、以下の通りで行けると思います。 (picotool は pico-sdk に含まれています)

mk2 の場合
$ picotool load -v -x BASICROM.62 -t bin -o 0x10060000
$ picotool load -v -x VOICEROM.62 -t bin -o 0x10070000
$ picotool load -v -x CGROM60.62  -t bin -o 0x10074000
$ picotool load -v -x CGROM60m.62 -t bin -o 0x10078000
$ picotool load -v -x KANJIROM.62 -t bin -o 0x10068000

mk2SR の場合
$ picotool load -v -x SYSTEMROM1.64 -t bin -o 0x10058000
$ picotool load -v -x SYSTEMROM2.64 -t bin -o 0x10068000
$ picotool load -v -x CGROM68.64    -t bin -o 0x10078000

制限事項

  • 最初に起動する際に LittleFS のフォーマットで固まることがあります。(リセットでOK)
  • Pico SDK 2.0 ではうまく動かないかもしれません。(TinyUSB が固まる?)
  • 音声合成割り込みが未実装ですので、SR モードで talk 文を使うと固まるかもしれません。

ライセンスなど

このエミュレータは以下のライブラリを使用しています。


Gallary

GAME P6mode3 GAME P6mode4 GAME MK2

About

NEC PC-6001mk2 / SR emulator for Raspberry Pi Pico

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published