まずは予告通り Tinyみずいろを実機で動かすまで についてつらつら書こうと思います。
プロローグ
そもそもなぜP6をいじり始めたのかという話もあるのですが、そのへんの詳細はまた別エントリで書くとして、流れだけ。
ゴールデンウイーク中にP6修理情報を知る
「PC-6001 の電源を入れても画面が真っ白で起動しない」という症状について「基板の電源コネクタ直近12Vのタンタルコンデンサを交換すると直る」という情報がある。
— Izumi Tsutsui (@tsutsuii) 2016年5月6日
うちの 6001 は真っ白ではなく CRTC未初期化みたいな緑地に謎パターン模様が出るのだけれど同じ症状なのか否か
FAQどおりタンタルコン交換で復活
すてらのなぱぴこーん(微妙に違います)
— Izumi Tsutsui (@tsutsuii) 2016年5月6日
……というわけで起動しました。うはは pic.twitter.com/97w8JKpnpP
TINY野郎さんのイース2OP動画を発見して衝撃を受ける
YS2のオープニングをPC-6001(32K)で作ってみた https://t.co/Qtj0g8VBH2
— Izumi Tsutsui (@tsutsuii) 2016年5月8日
これは……。いわゆる「パピコンに不可能はない」というやつなのか……。(良い物を見たので寝よう)
とりあえず32K改造してみる
データバス8本も配線してこれで完成のはず。取り付け場所の問題で予想よりちと面倒くさかった…… pic.twitter.com/THwa7rH8SU
— Izumi Tsutsui (@tsutsuii) 2016年5月14日
「Tinyみずいろ」
P6本体の32K改造をテストするのに「PC-6001(32K)」で Google検索をして、その結果の中でたまたま見つけたように思います。
Tinyみずいろ とは…… https://t.co/KaIo0X3O9o
— Izumi Tsutsui (@tsutsuii) 2016年5月14日
?TR ERROR
になるのはやっぱりネタということなのだろうか
リンクを見たときは「tripodってまだ生きとったんかワレ!!」という感じでしたが、このエントリを書いている時点でもまだ http://bn-x.tripod.com/02tinymizu/ はちゃんと存在しています。
で、ページの中ほどに「☆店頭デモ版ダウンロード」のリンクがあるわけですが……
このリンク先、 wav ファイルでも zip でもなく、 wma 形式です。この「Tinyみずいろ」自体がエイプリルフールネタとして作成されたものということなので、この wma 形式もネタのうちということだったのでしょう。
この wma ファイルを Windows Media Player上で再生して、ノートPCのヘッドホン出力を直接CMTケーブルにつないでP6初代実機に読ませてみると、最初の "t2b" のファイル名は認識するものの、リンクの説明通り(?)で 2,3秒で ?TR ERROR になってしまいます。再生音量をいじると多少エラーの出るタイミングは変わるものの、全体の再生時間からすると小手先でなんとかなるような雰囲気ではありませんでした。
このときはとにかく動作確認できるソフトを探すことが優先だったのでこれ以上の深追いはせず、P6月間に向けて TINY野郎さんのドルアーガデモのテスト、32K改造回路の改修、データレコーダーの修理、そしてTINY野郎さんのイースデモの実機テープ動作トライ等々を進めました。
32K化回路改修
デジタル回路は電気的につながってさえいればいいんだよ的むりやり工作 pic.twitter.com/VVQfRBCmZJ
— Izumi Tsutsui (@tsutsuii) 2016年5月17日
TINY野郎さん作ドルアーガデモ
PC-6001初代実機起動キタ━━━━(゚∀゚)━━━━!! pic.twitter.com/8s4OWUfcw3
— Izumi Tsutsui (@tsutsuii) 2016年5月17日
イース2オープニング
TINY野郎 (@tiny_yarou ) さん作の「YS2のオープニングをPC-6001(32K)で作ってみた」をP6初代実機で実行してみたのでとりあえず撮影。
— Izumi Tsutsui (@tsutsuii) 2016年5月21日
動画で見たあの映像と音楽を目の当たりにして改めて感動です……! pic.twitter.com/1hUBQ4qDBP
データレコーダー修理
このヘッドを上下させる部品の軸受けのグリスが固着してヘッドが下がらない、とか難易度高過ぎる……。いろいろ格闘してスムーズに動くようにはなったけれど、こんなところまでバラして果たして元に戻るのかという問題 pic.twitter.com/RgZ6JoWZ4F
— Izumi Tsutsui (@tsutsuii) 2016年5月27日
P6イース実機デモ
で、無事P6初代実機で動作させることができたイース2オープニング・イース3オープニング・イース2エンディングの動画が以下の投稿です。
これで当初の目的は達成という感じではあったのですが、せっかくのP6月間ということで、以前保留にしたTinyみずいろを再びチェックしてみることにしたのでした。
データレコーダー形式
PC-6001のデータレコーダーでは、速度は(標準では)1200bpsで、実際の音としては 0/1 のデータが 1200Hz / 2400Hz の矩形波として記録されます。これだけを見ると 0/1 のデータが周波数変調されている=復調でも周波数を見て 0/1 を判別すればいいように感じてしまうのですが、実際は 1200bps (ビット/秒) の速さで 1200Hz の音を使って1ビットを記録するので、波形としては1ビット中にエッジが1回だけ来ることになります。2400Hzなら2回です。なので、実際のデータレコーダの復調では、周波数を見ているのではなくエッジの間隔を計測することでデータの 0/1 を復調していると考えられます。
実際の変調イメージは MSX2の「テクハンwiki化計画」にある「2章 カセット・インターフェイス」が参考になります (このページは TINY野郎さんに教えていただきました)。PC-6001の場合はボーレートが 600bps と 1200bps であること、ストップビットが 3ビットであること、ロングヘッダ長が半分の 3.4秒 (2400Hz×8000波?) であるらしいこと、復調はサブCPUが行うこと (MSXではメインCPUで計測?) 等々の違いはあるようですが、変調波形としての考え方は共通でよいと思います。なお、BASICのファイルヘッダ形式 (D3h が10バイト連続した後に6バイトのファイル名が置かれる) についても PC-6001とMSXとで共通のようです。
P6のサブCPUが実際にどのような復調をしているかはわかりませんが、たとえば復調波形の立ち下がりエッジ間隔を測定して
- エッジ間隔が 833us±X% だったら 1200Hz 判定、167us±X%だったら 2400Hz 判定
- エッジ間隔が上記から外れていたり 2400Hz相当のエッジが1回しか来なかったら ?TR ERROR
みたいな判定をしているのではないかと思います。
wma形式
一方、 Tinyみずいろの配布形式(?)の wma は (詳細は把握していませんが) mp3 などと同様に
- 圧縮率が高いこと
- 人が聞いて違和感のないこと
を主眼にしたフォーマットと思われます。よって、人間の耳に感じられない部分については、本来のデータレコーダーの波形に求められる周波数成分および時間成分の再現性はあまり期待できないということが予想されました。
これは、Tinyみずいろそのものがエイプリルフールネタであり、ページの最下部にも
うそはうそて゛あると みぬけるひとて゛ないと、
(ハ゜ヒ゜コンをつかうのは)むす゛かしい。
とあることから、「ウソか本当かわからないよう、あえて実機やエミュレータですぐには確認できないフォーマットで公開された」ということだと思います。
この挑戦(?)に対して実際にデモとして動作させた方が過去にいたのかどうかはわかりませんが、動画公開後のTwitter上の反応で「動くデータだったのか…」というコメントもあったことから、多くの方には「あくまでもエイプリルフールネタ」と認識されていたようです。
JOTさんのネタ、動くデータだったのか…>「Tinyみずいろ"Prologue" for PC-6001(32k)」にBGMを付けて実機で動かしてみた (11:40) https://t.co/z5JgowiFIZ #sm29127382
— ワンニャーHashi@ナゴヤボーイ (@Hashi6001) 2016年6月26日
とはいえ、Tinyみずいろ実行トライを始めたときはここで書いたような難しいことまで考えていたわけではなく、「波形が歪んでるなら適当なツールを持ってきて補正してやればいけるんじゃ」くらいの軽い気持ちでした。「動くかどうかわからないけどやってみたらできるかもしれない」ってのが一番面白いネタですからね!
前振りが多くて長くなってしまったので、具体的にどのような作業をしたのかについては次回以降のエントリで。