tsutsuiの作業記録置き場

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

「Tinyみずいろ"Prologue" for PC-6001(32k)」を実機で動かすまで(1)



まずは予告通り Tinyみずいろを実機で動かすまで についてつらつら書こうと思います。

プロローグ

そもそもなぜP6をいじり始めたのかという話もあるのですが、そのへんの詳細はまた別エントリで書くとして、流れだけ。

ゴールデンウイーク中にP6修理情報を知る

FAQどおりタンタルコン交換で復活

TINY野郎さんのイース2OP動画を発見して衝撃を受ける

とりあえず32K改造してみる

「Tinyみずいろ」

P6本体の32K改造をテストするのに「PC-6001(32K)」で Google検索をして、その結果の中でたまたま見つけたように思います。

リンクを見たときは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化回路改修

TINY野郎さん作ドルアーガデモ

イース2オープニング

データレコーダー修理

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-6001MSXとで共通のようです。

P6のサブCPUが実際にどのような復調をしているかはわかりませんが、たとえば復調波形の立ち下がりエッジ間隔を測定して

  • エッジ間隔が 833us±X% だったら 1200Hz 判定、167us±X%だったら 2400Hz 判定
  • エッジ間隔が上記から外れていたり 2400Hz相当のエッジが1回しか来なかったら ?TR ERROR

みたいな判定をしているのではないかと思います。

wma形式

一方、 Tinyみずいろの配布形式(?)の wma は (詳細は把握していませんが) mp3 などと同様に

  • 圧縮率が高いこと
  • 人が聞いて違和感のないこと

を主眼にしたフォーマットと思われます。よって、人間の耳に感じられない部分については、本来のデータレコーダーの波形に求められる周波数成分および時間成分の再現性はあまり期待できないということが予想されました。

これは、Tinyみずいろそのものがエイプリルフールネタであり、ページの最下部にも

うそはうそて゛あると みぬけるひとて゛ないと、
(ハ゜ヒ゜コンをつかうのは)むす゛かしい。

とあることから、「ウソか本当かわからないよう、あえて実機やエミュレータですぐには確認できないフォーマットで公開された」ということだと思います。

この挑戦(?)に対して実際にデモとして動作させた方が過去にいたのかどうかはわかりませんが、動画公開後のTwitter上の反応で「動くデータだったのか…」というコメントもあったことから、多くの方には「あくまでもエイプリルフールネタ」と認識されていたようです。


とはいえ、Tinyみずいろ実行トライを始めたときはここで書いたような難しいことまで考えていたわけではなく、「波形が歪んでるなら適当なツールを持ってきて補正してやればいけるんじゃ」くらいの軽い気持ちでした。「動くかどうかわからないけどやってみたらできるかもしれない」ってのが一番面白いネタですからね!



前振りが多くて長くなってしまったので、具体的にどのような作業をしたのかについては次回以降のエントリで。