tsutsuiの作業記録置き場

NetBSDとかPC-6001とかの作業記録のうち、Twitterの140字では収まらない内容や記事としてまとめるべき内容をとりあえず置いてみる予定

「タイニーあぴミクさんにせまられたかった。」 for PC-6001 バイナリ

前回の Tinyみずいろのバイナリ に続き、P6用タイニーあぴミクさんデモのバイナリもアップしました。

PC-6001(16KB)実機およびエミュレータで実行可能ですが、エミュレータでの実行の場合は実機と動作が異なる場合があります。

以下はダウンロードバイナリ付属の README.md の html版写し:
http://www.ceres.dti.ne.jp/tsutsui/p6/tiny_apimiku/README.html

タイニーあぴミクさんにせまられたかった。 for PC-6001

http://www.ceres.dti.ne.jp/tsutsui/p6/tiny_apimiku/tiny_apimiku.zip

これはなに?

ニコニコ動画にアップされていたマシンガンP のあぴミクさんつま先立ち動画のBGMをOSC京都のデモ用に耳コピしていて、ふと
MMDミクさんを PC-6001で表示したらどんな感じになるんだろ?」
と試してみたら意外とそれっぽかったので、ついこんなものを作ってしまいました。

ニコ動のデモ動画では PC-6001(32K) 用に作成したバイナリを動かしていましたが、このアーカイブに含まれるバイナリは16KB対応版です。

内容物

  • tiny_apimiku16k.wav :
    実機用テープセーブデータ音 wavファイル BASIC+機械語
  • tiny_apimiku16k-bas.P6 :
    エミュレータ用テープデータ P6 形式ファイル BASIC部分
  • tiny_apimiku16k-bin.P6 :
    テープロード速度変更可能なエミュレータ用テープデータ P6 形式ファイル 機械語部分
  • tiny_apimiku16k-bin-emu.P6 :
    テープロード速度変更不可のエミュレータ用テープデータ P6 形式ファイル 機械語部分
  • README.md :
    このファイル

実機デモ動画

実機デモ動画は以下のニコ動にアップしてあります。

エミュでの動かし方

  1. テープロード速度を変更可能なエミュレータ (PC6001VX等) の場合は、速度を 900bps 相当 (※1) にしてください
  2. 機種設定および起動時の MODE (機種選択) は PC-6001(16K) または PC-6001(32K) を選択
  3. How Many Page? は 2 を入力
  4. エミュレータのテープファイルとして tiny_apimiku16k-bas.P6 を選択 (※2)
  5. "CLOAD" で BASIC プログラムロード
  6. ロードが終わったら次のテープファイルとして
    tiny_apimiku16k-bin.P6 (テープロード速度変更可能なエミュレータの場合) または
    tiny_apimiku16k-bin-emu.P6 (テープロード速度変更不可のエミュレータの場合) を選択
  7. "RUN" で BASIC プログラムを実行 →機械語パートのロード開始
  8. デモスタート! (※3)

※1
このデモでは「テープをロードしながらPSGでBGMを演奏」を実現するために、
「テープセーブデータ中のストップビットを増やす」
という手法を使っています。
しかし、エミュレータ用の P6ファイルにはストップビット数に関する情報は記録されていないため、本来のデータだけをロードすると待ち時間が足りずに表示がおかしくなってしまいます。
エミュレータではテープのロード速度自体を変更することでズレを回避することが可能です

「テープセーブデータ中のストップビットを増やす」の手法については Tiny野郎さんのブログ記事 「P6イース2オープニングの作り方(6)」に解説があります。

※2
テープファイルの指定方法について、PC6001VX の場合は以下のとおりです

  • テープの P6ファイルをデフォルトの ~/.pc6001vx/tape 以下に置く
  • PC6001VX を起動 → マウス右クリックメニュー → 「TAPE」 → 「挿入」
  • 開いたファイル選択ダイアログで P6ファイルを選択して「Open」を押す

※3

  • 「テープロード速度変更不可のエミュレータ」用の tiny_apimiku16k-bin-emu.P6 ではストップビットが少ない分だけロードが速く終わってしまう対策として適当にダミーデータを挿入してあります。
  • テープロードおよび PSG音源ドライバの 2ms割り込み以外のROM内ルーチンは使用していないので、互換BASIC ROMでも特に問題なく動きます。

実機での動かし方 (いったんテープに録音)

  1. PCの音声出力端子(ヘッドホン端子等)とデータレコーダーの REC 端子を接続 (※4)
  2. 録音用カセットテープを入れてして適当に先頭の録音可能位置にセットして待機
  3. PC側でセーブデータ音 wav を再生すると同時にデータレコーダー側で録音を開始 (※5)
  4. テープが用意できたらテープが現物になる以外は「エミュでの動かし方」と同じです

※4
たいていの場合 PC側はステレオ、データレコーダー側はモノラルですが、L側だけの接続でも問題ありません。

※5
PCのオーディオドライバやプレーヤーによってはデータレコーダーのピーガー音をノイズと判断してミュートしてしまうものがあるようです。
その場合はマニュアルその他を確認してミュート等を無効に設定してください。
また、各種音響効果はロードに悪影響を及ぼすのですべて無効にしてください。


実機での動かし方 (wav直接ロード)

  1. PCの音声出力端子と本体に接続したデータレコーダーケーブルの再生端子を接続 (※6)
  2. 「エミュでの動かし方」の説明の "CLOAD" まで進めたら PC側で wav の再生を開始 (※7)
  3. CLOAD が終わって「カチッ」のリレー音がしたら PC側の wav 再生を一時停止
  4. "RUN" を実行して、再度「カチッ」のリレー音がしたら PC側での wav 再生を再開
  5. あとは「エミュでの動かし方」と同じです

※6
PC側のステレオ端子にデータレコーダーケーブルのモノラル端子を挿すとR側がGNDショート状態になります。
たいていのヘッドホン端子は地絡を考慮して保護抵抗が入っているので壊れることはないと思いますが心配な方はステレオプラグ⇔モノラルジャック変換ケーブルを用意してください。
また、PC音声出力端子を使うと再生音モニタができないため、リレー音で開始終了を判断してください。

※7
再生音量については適宜調整してください。
うまくロードができない場合は、「いったんテープに録音」の※5 の注記にあるとおりPC側のドライバや再生ソフトの設定も確認する必要があります。


実装解説

どうやって作ったの? についてはブログ記事にまとめています。

謝辞

  • マシンガンP様
    かわいいあぴミクさん動画に癒やされるだけでなく、こんなものを作るきっかけをいただきました。
  • TINY野郎さん
    なんでもピーガー、および、PSGドライバ用MMLコンパイラを活用させていただきました。
  • エミュレータ・ツール作者のみなさん
    この時代にP6がこんなに楽しめるのも各開発者の方々のおかげです。

みなさんありがとうございました!

作者について