PC-6001シリーズのROM内のBIOSデータをPCで扱えるようにするには、 「フロッピーディスクやカセットテープにセーブして、それをPCで読み込む」というのが一般的な方法ですが、 そのようなメディアを使わずPCへ移そう、という趣旨のページです。
以前作成したツールから、以下のような点が改良されています。
必要なツールや、ファイル一式は、こちらからダウンロードしてください。
BinToMovie Color(PC-6001/mkII/SR版) / MovieToBin Color(Windows版)
https://www.tiny-yarou.com/files/P6_BIOSCAP_COLOR.zip
まず、PC-6001,PC-6001mkII,PC-6601,PC-6001mkIISR,PC-6601SRなど、BIOSを吸い出したい実機を用意します。
そして、ダウンロードした P6_BIOSCAP_COLOR.zip の中にある、それぞれの機種用のプログラムを、実機上で動かせるようにしましょう。
各機種用 BinToMovieColor プログラム名
機種 | BinToMovieColorプログラム本体 | CLOAD用音声ファイル/位相反転版 | エミュレーター用テープイメージ |
---|---|---|---|
PC-6001用 | b2mvc.bas (16Kまたは32K, PAGE1, 拡張BASIC対応) | b2mvc.wav/b2mvc_rev.wav | b2mvc.p6 |
PC-6001mkII/PC-6601用 | b2mvc_m2.bas (MODE5, PAGE4) | b2mvc_m2.wav/b2mvc_m2_rev.wav | b2mvc_m2.p6 |
PC-6001mkIISR/PC-6601SR用 | b2mvc_sr.bas (MODE6) | b2mvc_sr.wav/b2mvc_sr_rev.wav | b2mvc_sr.p6 |
BinToMovieColorはBASICプログラムなので、以下のような方法で実機で動かすことができます。
各機種用の BinToMovieColor を実機でRUNすると、ROMの選択メニューが表示されます。
Hashiさんのサイト(http://p6ers.net/hashi/suidashi.html)などを参考に、キャプチャーしたいROMの種類を選択してください。
※ディスクドライブが接続されている場合、 DSK1D.D88 あるいは DSK1DD.D88 という項目が表示され、これを選ぶとディスクイメージコピーモードになります。
次に1フレームごとのウエイトを聞かれますが、まずはそのままRETURNを押して、デフォルト値で試してみると良いでしょう。
(ちなみに、私の環境では「mkIIモード・ウエイト3」で100%成功するので、そのあたりまでは短くしても大丈夫かもしれません)
ウエイトを設定すると、マーカー画面になります(画面四隅の[1]~[4]と書いてあるのがマーカーです)。
そして、この画面以降を動画で保存することになります。
PCでキャプチャーする環境がある人は、録画を開始してください。
キャプチャー環境がない人は、デジカメでモニターを動画撮影しましょう。(ただし、カメラは最後まで絶対に動かないように、三脚等でしっかり固定してください)
録画が開始されたら、何かキーを押してください。
あとは自動的に、指定したROMのデータを可視化して画面に表示していきます。
このようにして、動画ファイルを作成してください。
動画ファイルの作成が終了したら、今度はPC側の作業になります。
ダウンロードしたファイルの中に、Windowsツールの MovieToBinC.exe というファイルがあるので、実行してください。
MovieToBin Color というアプリケーションが起動します。
最初に、[設定]ボタンをクリックして、縦横のドット数を指定します。
ドットの数は、各機種のテキストモードの最大文字数と同じで、機種別のプリセットボタンを押せば自動的に設定されます。
それ以外の項目については、とりあえずデフォルトで構いません。
次に、先ほど撮影した動画ファイルを、ウィンドウ上にドラッグ&ドロップしてください。
そして、その動画を、マーカー(画面の四隅に表示された「1」「2」「3」「4」の文字)が表示されているところまで早送りしてから、一時停止状態にしてください。
その状態で [マーカー位置設定]ボタンをクリックして、「1」から「4」までのマーカーの中心を、マウスで順にクリックしてください。
すべてのドットの位置に一つずつキャプチャーポイントが設定されれば問題ありません。
(キャプチャーポイントがずれる場合は、縦横のドット数が設定と違っている可能性があります。[設定]ボタンを押して正しい機種用の設定を行ってください)
そして、[キャプチャー開始]ボタンをクリックすると、自動的に動画の一時停止が解除され、ムービーからバイナリーデータへのデコードが始まります。
すべてのキャプチャーが終わるとムービーが停止するので、[ファイルに保存] を行ってください。
キャプチャーしたバイナリーデータは自動的には保存されません。必ず手動で保存してください。
うまくキャプチャーできない場合は参考にしてみてください。
PCに動画キャプチャー環境がある場合に、動画ファイルを作成せず、「キャプチャーツールのプレビューウィンドウ」を直接キャプチャーしてしまうという方法です。
動画ファイルを経由すると、どうしても画質が劣化したりタイミングが遅れたりするので、この方法を使うことで精度を上げられます。
ちなみに、枠の中に入っている画像をそのままキャプチャーするので、エミュレーターの画面や、Youtubeの動画などからもデコードすることができます。
PC側のデコード処理は、ムービーを一定間隔で静止画としてキャプチャーし、ドットのカラーコードを拾ってバイナリーデータに変換しています。
うまくキャプチャーできない場合は、MovieToBin Color の [設定] ウィンドウのパラメーターを変更することで、このタイミングを調整することができます。
まず、[キャプチャー間隔] ですが、これは動画をどれくらいのインターバルでキャプチャーするかを表します。1msだと1000分の1秒に一回、10msだと100分の1秒に一回、静止画としてキャプチャーし、解析します。
小さすぎると PC の処理負荷が上がって動画再生などがうまく行かない場合がありますし、大きすぎるとフレームをキャプチャーし損ねることがあるので、最適な値を見つけてください。
ちなみに、デフォルトは10ms(1/100秒)になっているので、基本的にはこれ以上速くする必要はないかと思います(NTSC信号の画面更新が1/60秒ですし…)。
次に、[キャプチャーウエイト] について説明します。
動画をキャプチャーした後、その画像を解析すべきかどうかは、画面右下の「更新マーカー」の変化を見ています。
「実機側は左上から描画を開始するので、右下の更新マーカーが更新されたら全画面更新終了」と判断しているのですが、動画のエンコーダーによっては、「更新マーカーは変化しても、画面全体はまだ不安定」という場合があります。
[キャプチャーウエイト] に 0以外を指定すると、更新マーカーが変化してからこの時間だけ待ってもう一度動画をキャプチャーし、その新しい画像を解析します。
動画を再生してみて、画面の模様が一瞬でパッ、パッと切り替わっていないようでしたら、この値を上げて試してみてください。
目視でハッキリと残像が見えるような場合は、200(0.2秒)くらいまで上げてみると安定する場合もあります(そこまで酷いと動画側にも問題があるのですが…)。
ここから先は、普通の人は基本的に読まなくて構いません(^_^;)
MovieToBin Color のマルチカラーモードでは、1バイトのデータを上位から「3ビット・3ビット・2ビット」に分け、それをカラーコードに変換して、3ドットとして表現しています。
例えば、「&HFB」というデータであれば、
&HFB = |111|110|11| = 7・6・3 = 白・シアン・黄
となり、この順にドットが並びます。
(P6準拠なので、他機種のカラーコードとは異なり、上位ビットから「BGR」となっています)
マルチカラーモードでの1フレームあたりの転送可能な情報量は以下のようになります。
機種 | 1フレームの文字(ドット)数 | チェックサム | 更新マーカー | 1フレームでの転送可能サイズ |
---|---|---|---|---|
PC-6001 | 32桁×16行=512ドット | 3ドット | 2ドット | (512-3-2)/3=169バイト |
PC-6001mkII/PC-6601 | 40桁×20行=800ドット | 3ドット | 2ドット | (800-3-2)/3=265バイト |
PC-6001mkIISR/PC-6601SR | 80桁×25行=2000ドット | 3ドット | 2ドット | (2000-3-2)/3=665バイト |
MovieToBin Color には、マルチカラーモードの他に、モノクロモードもあります。
マーカー位置設定時に画面がモノクロだった場合、自動的にモノクロモードに切り替わります(手動で変更することもできます)。
モノクロモードは、ドット1つが1ビットで、下位ビットから並んでおり、横に並んだ8ビットで1バイトを表しています。
例えば、「&HCB」というデータであれば、
&HCB = |1100 1011| → 下位ビットから並べる → 白・白・黒・白・黒・黒・白・白
となります。
モノクロモードでの1フレームあたりの転送可能な情報量は以下のようになります。
機種 | 1フレームの文字(ドット)数 | チェックサム | 更新マーカー | 1フレームでの転送可能サイズ |
---|---|---|---|---|
PC-6001 | 32桁×16行=512ドット | 8ドット | 8ドット | (512-8-8)/8=62バイト |
PC-6001mkII/PC-6601 | 40桁×20行=800ドット | 8ドット | 8ドット | (800-8-8)/8=98バイト |
PC-6001mkIISR/PC-6601SR | 80桁×25行=2000ドット | 8ドット | 8ドット | (2000-8-8)/8=248バイト |
マーカー画面には、開始アドレス・転送サイズ・ファイル名などの情報も埋め込まれていて、PC側でデコードする際にはこの情報を使用しています。
また、すべての色が規則的に並んでいるのにも意味があり、マーカー画面かどうかはそれを見て判断しています。
付属の実機用プログラムでは、フレームごとにデータの総和を計算し、下位1バイトをチェックサムとしてデータの最後に付加しています。
前バージョンの MovieToBin で出力した動画はチェックサムが付加されていないので、もしそのような動画を解析する場合は [設定] ウィンドウの解析設定を [チェックサムなし] に切り替えてください。
不具合やリクエストなどは twitter で @tiny_yarou までお気軽に!