tsutsuiの作業記録置き場

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

「Tinyみずいろ」を動かしてみよう

前回までの記事 では実際の作業ベースで手順を書いているので、今になって見直すと冗長な操作が結構あります。今回は「とにかく手っ取り早く Tinyみずいろを試したい!」という人のために手順をまとめました。

「エイプリルフールのネタバレなんて……」というご意見もあるかと思いますが、さすがに公開から 12年(!?)の月日が経過しているという状態ですので、これを機会に多くの人に試していただくほうが価値があるでしょう、ということで……

用意するもの

P6エミュレータの設定

PC6001V および PC6001VW のインストールおよび各種設定についてはそれぞれのエミュレータのドキュメントを参照してください。「ROMイメージファイル をどのフォルダに置くか」というところくらいかと。

P6実機からの ROM の吸い出しについては PC-6001/mkII Emulator “iP6 for Windows” のページにある 「PC-6001初代機からROMを吸い出す」のページ や B型同盟さんの「BIOS吸出し手順」のページを参照してください。

「P6実機なんて持ってないよ……」という場合も、 秋川さん による「PC-6001用互換BASIC」および B型同盟さんの「PC-6001エミュレータ用オリジナルcgrom」 の 2つの互換ROMを使用すれば動作するのではないかと思います。が、こちらの環境では今のところ未確認です 追記: 互換BASICでも動きました

Tinyみずいろデモファイルのダウンロード

Tinyみずいろ のページから店頭デモ版リンクの wma をダウンロードして、適当な作業用フォルダに保存してください。

ここでの説明では元ファイル名のまま tiny_mizuiro_prologue.wma で保存したものと仮定します。

えこでこツールによる wav 変換

えこでこツールの現時点の最新版 v1.14 の Windowsバイナリを えこでこツールのダウンロードページ からダウンロードします。えこでこツールにはインストーラは存在せず、ダウンロードした zip を展開して、展開されたフォルダ中の EcoDecoTooL.exe をそのままダブルクリックして実行すれば OKです。

えこでこツールを起動すると以下のウインドウが出ます。


「8bit モノラルの wav」に変換するために以下を設定します。

  • 「出力:wav」を選択 (デフォルトのまま)
  • 「wav 出力音質」で「音質を指定」をチェック
  • 「音質を指定」の横の「...」を押して、「Set Wav Format」で
    「周波数: 44,100Hz」(=元の wma と同じ周波数)
    「ビット数: 8bit」 「チャンネル数: モノラル(1ch)」
    をそれぞれ選択して「OK」を押す




「出力先フォルダ」については各自の作業状況に応じて設定してください。

上記の設定をしたら、先にダウンロードしておいた tiny_mizuiro_prologue.wma を「えこでこツール」のウインドウ上にドラッグアンドドロップします。

変換ウインドウが表示されるとともに変換が開始され、「チン」という完了音とともに指定したフォルダに tiny_mizuiro_prologue.wav の名前で wav ファイルが作成されます。

cmt8001 による wav 補正

使用する Windows PC に Java がインストールされていない場合は Javaのページ から環境に対応する Javaインストーラをダウンロードしてインストールします。インストールに際して特殊な設定は必要ありませんが、 Amazon なんちゃらプラグイン等々の余計なスポンサーツールがインストールされないようにインストールウインドウの説明をよく読んでチェックを外しておくくらいです。

次に HAL 8999 さんの PC-8001のページ から cmt8001 をダウンロードして展開します。配布ファイルは昔なつかし(?)の lzh ですが、 Windows 10 であれば右クリックメニューで「すべて展開」の展開ツールがあるのでそれを選択すればOKです。

展開したらフォルダ内の cmt8001.jar をダブルクリックして起動します。


開いた cmt8001 のウインドウに 8bit モノラル変換した tiny_mizuiro_prologue.wav をドラッグ・アンド・ドロップします。各パラメータについては Fsk2Cmt 以下のボーレートについて 「1200 baud (-x2:2400)」をチェックします。

各設定の詳細は 「Tinyみずいろ"Prologue" for PC-6001(32k)」を実機で動かすまで(2) の記事を参照

メニューの [File] → [Save 'mod.wav'] を選択して補正後の wav ファイルをセーブします。


補正後の wav ファイルは tiny_mizuiro_prologue.mod.wav の名前で保存されます。

P6DatRec による P6バイナリ変換

P6DatRec.lzh のバイナリアーカイブP6DatRecのページ からダウンロードして展開し、展開したフォルダ内にある P6DatRec.exe のバイナリをダブルクリックして実行します。

P6DatRec を起動すると左の図のようなデータレコーダーウインドウが開くので、まずウインドウ上で右クリックして設定画面を出します。





設定画面一番上にある「0 の 1 に対する判読敷居値」について、デフォルトの「0.25」から「0.5」に変更し、「OK」を押して設定ウインドウを閉じます。














前項の cmt8001 で補正した wav ファイルの tiny_mizuiro_prologue.mod.wav を P6DatRec のデータレコーダーウインドウ上にドラッグ・アンド・ドロップすると P6バイナリ変換が行われ、 tiny_mizuiro_prologue.mod.P6 の名前で P6バイナリが保存されます。

なお、 tiny_mizuiro_prologue.mod.rep は変換レポートで、その最後を見ると

最も不確かな0は pos = 2574369 の val = 50 でした。
最も不確かな1は pos = 2574369 の val = 50 でした。
この val が敷居値 ( 50 ) に近い場合、本変換は信頼できません。

と言われていたりしますが、気にせずそのまま進めます。 全体的に val = 40〜60 の値がかなり多く、デフォルトのしきい値 0.25 ではまともに変換できないという罠が

バイナリ修正

上記の手順で変換したバイナリにおいてもデータ化けが補正しきれていない部分が残っているので、それをバイナリエディタで修正します。

バイナリエディタとして Bz を使用する場合は Bz の github の Release ページ から「ポータブル版」の BzXXXXPortable.zip をダウンロードして展開し、展開されたフォルダ内の Bz.exe を起動します。


開いた Bz のウインドウ上に前項で作成した をドラッグ・アンド・ドロップして、メニューの「編集」→「リードオンリ(R)」のチェックを外して編集可能な状態にします。

ウインドウ右下の「書禁」をクリックして「上書」の状態に変更する、でもOK

以下のアドレスのデータについてそれぞれ修正します。

  • 01B2: 02 → 82
  • 3003: DF → FF
  • 3C73: FE → FF

修正の操作においては、ターゲットのアドレスのデータ上にカーソルを持って行って値をキーボードから入力すると (挿入ではなく) 1バイト単位での上書きで編集されます。

1つ目の 01B2h のデータは 「Tinyみずいろ"Prologue" for PC-6001(32k)」を実機で動かすまで(3) のエントリで書いた BASIC リスト中の NEXT 文に相当するデータです。

2つ目と3つ目のデータは 「Tinyみずいろ"Prologue" for PC-6001(32k)」を実機で動かすまで(4) で書いたグラフィックデータの表示に影響するランレングス記号関連の修正です。エントリでも解説していますが、グラフィック表示全体に影響しないランレングス以外のドット単位のデータ化けについてはここでは考慮していません。が、ここで記載した変換手順のほうがより適切なデータになっているような気も

修正が完了したら、メニューの「File」→「名前を付けて保存(A)」で tiny_mizuiro_prologue.mod.fix.P6 等の別名を付けて保存します。

その他の修正

BASIC リスト中の DATA 文中に、本文として気になる部分があったりしますが、修正するかしないかはお好みで……。

エミュレータ上で実行

エミュレータの設定として、 PC-6001(32K) のために事前に初代 PC-6001 の「拡張RAM」を有効 (On) の状態にしておきます。 PC6001V および PC6001VW ではデフォルトで有効のようです

エミュレータを起動したら、最初の How many pages? に対しては 2 を入力します。
手持ちの機材 (ROM) の都合で mkII や SR のエミュレータで起動する場合は、 Page 選択の前に PC-6001(32K) に対応する MODE を選択してください。

BASIC の Ok プロンプトが出たら、前項までで作成した tiny_mizuiro_prologue.mod.fix.P6 ロード用テープファイルとして設定します。 PC6001V や PC6001VW では P6 ファイルをエミュレータ上にドラッグ・アンド・ドロップすればOKです。

あとは

  • CLOAD リターン (F2 キー を押して DEL を押してリターン、が定番)
  • RUN (F5 キー)

でデモが実行されます。

実機ロード用テープ wav 作成

P6ファイル分割

修正後の P6 ファイルを実機でテープからロードする場合には、 前回 「Tinyみずいろ"Prologue" for PC-6001(32k)」を実機で動かすまで(4) の記事中でも書いたように、 P6バイナリについて前半の BASICリスト部分と後半のグラフィックデータ部分との 2つに分割して wav ファイル化する必要があります。

分割のやり方はいろいろあると思いますが、ここまでで設定した環境を流用するのであれば

  • 作成した tiny_mizuiro_prologue.mod.fix.P6tiny_mizuiro_prologue.mod.fix_01.P6 および tiny_mizuiro_prologue.mod.fix_02.P6 のように名前を変えて 2つのファイルにコピーする
  • コピー後のそれぞれのファイルを Bz で開き、リードオンリーを解除し、不要な部分を範囲選択 (SHIFT + PageDown 等を使用) して DEL で削除して、上書き保存する

とするのが手っ取り早いかと思います。

それぞれの選択範囲は

  • 前半 BASIC 部分は 0000h 〜 185Ch まで
    (BASICリストが 1852h までで、残り 10バイトの 00h が終了マーク)
  • 後半グラフィック部分は 1968h 〜 59BAh まで
    (BASICリスト後の 00h 連続に続く D3h ヘッダ 〜 C3hヘッダ 〜 元ファイルの最後)

でよいと思います。

テープロード用 wav 変換

P6バイナリ → wav 変換には なんでもピーガー を使用します。ダウンロードした「なんでもピーガー」の zip を展開して、その中のフォルダ内の NandemoPiGa.exe をダブルクリックして起動します。


なんでもピーガーはドラッグアンドドロップには対応していないようなので、「ソースファイル」の「参照」ボタンで変換元の P6 バイナリを選択します。「WAVファイル出力フォルダ」も適当に設定します。

前半 BASIC ファイル部分の P6ファイルは「BASICファイル・データファイル」を選択して変換します。
後半グラフィックデータ部分の P6ファイルは「バイナリーファイル」を選択して変換します。

下の方にある「通信速度」「サンプリングレート」 「空送り」「ヘッダマーク」「ストップビット」はデフォルトのままで問題ありません。ロード時間を極力短くするなら、「空送り」は (テープへの録音時に調整することにして) ほぼ 0 にして、「ヘッダマーク」は 2秒くらいにしてもいいかも

終わりに

すべての謎(?)を解明した後で再現手順を整理すると「なんだあっさり動くじゃん」という感じがしてしまうのですが、ここまでのエントリで書いたように「ここまでたどり着くにはかなりの苦労があったのです」ということで……。こういった部分は Twitter だけでは書けない

次回以降は前回の予告通り BGM追加改造についてぼちぼちまとめます。