Nの世界

【 波形の変形に挑戦 】

●はじめに

細かい操作等に関しては、各ツールのReadme.txtを参照して下さい。
実験した結果、多少の波形の破損であれば、復元可能そうなので、
興味のある方のみお試し下さい。(難易度:高)
(流石に、数十%近く破損しているようであれば、諦めるしかありませんが・・・。)
なお、波形の変形は、波形の読み方を知らずに適当にやっても絶対上手く行かないので、
(過去挫折した時がそうでした。)注意して下さい。

●波形の読み方

実機では、2種類の音を用いてデータを記憶しています。
その2種類の音は、コンピュータの基本である2進数に対応しています。
つまり、その2種類の音の波形さえ理解すれば、波形をどう変形すれば良いかある程度
推測出来ますし、その波形の周辺データがどの文字を指しているか理解することができます。
2種類の音とは、以下のものを示します。
マーク信号(2進数で1を指す):2400Hzの音(幅の広い信号*2)
スペース信号(2進数で0を指す):1200Hzの音(幅の狭い信号*4)

< 波形の例(一部拡大図) >
波形の例

< スペース信号の例 >
スペース信号の例

< マーク信号の例 >
マーク信号の例

見ての通り、目視で波形の違いを見分けることが出来ます。
※Totalの波形の幅も同じであることも覚えておいて下さい。

●波形の変形

CMT8001を利用した波形の変形例です。
(N88系もCMT8001(JAVA版)を使えば同様の方法で可能です。)

以下のテープイメージ作成失敗wavファイルの波形の変形に挑戦します。
変換失敗(波形)

※真ん中の辺りの波形が明らかに崩れている部分が対象。

変換失敗(CMT-8001)

※変換に失敗したポイント情報。(上記波形に対応)

左側の波形は、訳が解からないので、まず、右側の壊れている波形から変形します。
最初の波形は、マーク信号であることは、間違いないのですが、最初の2波の振幅が
十分ではありません。

そこで、それ以前に正常に変換出来たマーク信号(4波全て)をコピーします。
(spwaveでは、コピー範囲を選択し、選択範囲上で右クリックし、[編集]->[コピー]を実行)
次に、コピーしたマーク信号を振幅が不足している波形に置換(4波全て)します。
(spwaveでは、上書き範囲を選択し、選択範囲上で右クリックし、[編集]->[置換]を実行)

実行した結果、下図のように奇麗な波形に変形することが出来ました。
変換例1

次の波形は、スペース信号ですが、念のため、正常に変換出来たスペース信号(2波全て)に
置換します。

その次の波形は、マーク信号であることは、間違いないのですが、最後の信号以外振幅が、
十分ではありません。(最初の2波は存在しないし・・・)
これも、上記のマーク信号置換方式で置換します。

そのまた次の波形は、判断が難しいのですが、前の波形との幅の差異から、スペース信号と
判断しました。
この波形も、上記のマーク信号置換方式(対象はスペース信号)で置換します。
ここまでの変形結果は下図です。これで残りは、完全に壊れた?!波形のみです。
変換例2

次に完全に壊れた?!波形の左側を見てみます。
最初の波形は、振幅は不充分ながら、横幅から、マーク信号と判断しました。
この波形も、上記のマーク信号置換方式で置換します。

完全に壊れた?!波形の横幅から考えて、あと1つ信号在りそうなのですが、
この状態では残念ながら波形を読むことは出来ません。
しかし、マーク信号かスペース信号の2択なので、ヤマカン(爆)でマーク信号と
判断しました。(失敗したら、スペース信号に置換すればいいので問題なし)
このような波形が2、3個続いた程度であれば、全パターンの波形変形を行う気力も
あるかと思いますが、10個以上続くようであれば、全パターンを試すには絶望的な
数になりますので、泣く泣く諦めて下さい・・・。(^^;
この波形も、上記のマーク信号置換方式で置換します。

とりあいずこれで波形の変形(下図参照)が完了しました。
変換例3

●波形変形の成果

波形を変形したwavファイルを用いて、早速テープイメージ作成に
挑戦してみました。見事に変換に成功したようです。
(後述の経験談にあるような現象が発生したりするなど、
 実際、成功までは色々と試行錯誤しています。)
最後のエラーは気にしないで下さい(^^;
成功!!

実際に、作成したテープイメージファイルをX88000上でロードして見ます。
テープイメージセット

ロード成功

最後に、ロードしたプログラムを動かしてみます。

FROG THE LIVELY

見事に動きました。実際に1面をクリア及びゲームオーバーまで遊んで
見たのですが、特に問題は見つかりませんでした。
このように、苦労はしますが、上手くいけば思入れあるゲームを復元することが出来ます。
テープに遊びたいゲームがあるが、テープイメージ変換ツールで上手く変換できず
困っていた方は、波形の挑戦することをお勧めします。
(88エミュレータ上で動いた時に、より深い感動を受けます。)

●経験談

波形変形時に経験した問題点等です。
変形に失敗する場合、もしかするとこの情報が役に立つかも知れません・・・。
1.波形を変形する際、信号の数を変えてはいけません。万一、信号の数が変えると、
以降の変換結果が全て信頼出来なくなるので、注意が必要です。
(実際、ロード途中でEOFを認識し、以降UnKnownヘッダとしてCMT-8001側で
認識する事象が発生しました。)

2.波形を読むには、各波形の横幅を見ます。その時、近くの波形と見比べてスペース信号か
マーク信号か見極めるのがベストです。離れた所の正常に変換出来ている波形と比べると
横幅が大きく違う場合があるので要注意です。

3.N-BASIC(600baud)のデータを波形変形するのであれば、「CMT-8001」がどこで波形の変形に
失敗したか判るし、直前の変換結果まで残るので、非常に判り易いのでお勧めです。
N88-BASIC(1200baud)は現在思案中です。(Wavファイルのどこで問題が起きたか?
理解出来る情報が・・・。)

4.アセンブラ及びBASIC(中間コード部分を含む)の知識があれば、恐く近くの命令を
見て類推して変換することが出来るはずです。(流石にそこまで行ってません・・・。)

5.実機でもよくロードに失敗していたテープも救えるのは極めて大きいです。
(実は今回のサンプルがそうだったりして・・・。(爆))



Return