見出し画像

昔話~ISPRなんてソフトを作っていた頃の思い出~

今日は昔話です

長いことパソコン関連の世界にいると、色々なことを結果としてやってしまうことが多々あります。いや、別にやらかすとかそういうことではないですよ?単に色々なソフトを作って公開してきたなーってことです。
そして、その中でも割と自分の中ではヒットしたアプリ、ISPR についてちょっと話します。

ISPRとは?

今となっては歴史の中に埋もれてしまった太古のパソコン、X68000用に作ったリアルタイムの録画再生ソフトです。ん?リアルタイム録画?って思ったかもしれませんが、実際そういうソフトです。
これは、私が大学にいたころ(修士課程かな?)に作り始めたもので、足かけ何年も作っていたような気がします。多分、いわゆるTVとかVideoをリアルタイムで音声付きで長時間録画出来るソフトとしてはパソコンとしては初じゃないかな?まぁ、似たようなものはありましたが、メモリ上に録画するのが精一杯だったかな。そんな中、ISPR は HDD に直接録画するという機能で、普通に30分とか録画できてしまうと言う破壊力がありました。

X68000って?

聞いて驚け。10MHz で動く MC68000 という 16bit CPU と、メモリは標準で1MB。それだとしんどいので 2MB に拡張していた人は多かったと思う。なんにせよ、今から考えるとあり得ないぐらいに低いスペック。でも、当時としてはかなりすごいインパクトを与えたパソコンでした。

え?パーソナルワークステーション?アレは言いすぎだと思う。

ISPRでは

X68000には 64K色で 256x256 という変態解像度モードがあったんですが、ISPR はそれを活用していました。こうすることでデータサイズが減るけど、10MHz というクロック数ではまだ帯域が足りない。なので、更に 128x128 かそれよりももうちょっと低い解像度にした画像を 10fps で音声付きで録画できるようにしました。

一応、計算できる人は計算してくれればわかるのですが、この解像度での録画でメモリバス幅をほとんど使い切ります。逆に、X68000 の性能を絞りきったらこれぐらい出来るぞ!って話でもありました。まぁ、自分でも頑張ったなーと思います。

ちなみに、録画パフォーマンスを確保するため、HDDのFATを解析し、セクタが連続している領域を探し、そこにセクタ指定で動画データを書き込む!なんてこともしましたね。無茶したなぁ。

一応圧縮機能もありましたよ

データ圧縮もやってました。アダマール変換は整数演算とシフト演算だけで実装可能なので、それを使った圧縮。
256色に落としつつ、画像の色分布を考え(今で言うクラスタリングに近い)、画像に適切な256色を抽出。シーンが変わったら 256色を計算し直すということで無駄なパレット情報も保存しないからデータサイズをその分画像に回せる。あと、どうしても画像サイズが不定になるので、データの変化が少ないところだけ解像度を落としたりするなんてこともしてました。

さすがにリアルタイム圧縮は無理でしたが。これもまぁ、X68000 の限界に近かったかなーと思います。

他にも

いわゆるところの 3D NR なんてこともやってました。いや、懐かしい。何せ、アナログな画像ソースですからノイズがいっぱい。ホワイトノイズならば平均すれば消えるはず!ということで、時間方向にも平均をとることでホワイトノイズを消す!なんてこともしてました。

あぁ、何もかも懐かしい。

当然のように

ほとんどアゼンブラで組みます。Cも使いましたけど、動画再生部分は Cじゃ全然パフォーマンスでないし、そもそもスーパーバイザーでVRAMダイレクトに触るので、アゼンブラ使うしかなかったですね。
あと、CPU を使ったデータ転送はオーバーヘッドがきついので、DMAを使って GPU に書き込むなんてことも最終的にはしていました。アゼンブラの命令表の脇に書いてある実行に必要なクロック数なんてものも眺めつつ命令の組み合わせ考えたり。あと、ジャンプ命令なんてクロック喰うだけで生産性がないから可能な限りループも展開する!とか、今では化石どころの騒ぎでないこともたっぷり。1命令プリフェッチだからループ展開する方がちょっとだけ有利だよね!とか、こんな話題今の人がどれぐらいついてくることやら…

あと、モニターは当然アナログモニターなので、変なタイミングで更新すると画面に変な横線が出ます。そうならないように垂直同期信号をトリガとして画面描画を開始。描画が画像更新位置に追いつかないようなスピードで VRAM に書き込むなんてプレッシャーと戦う経験なんか、した人自体がもうレアですよね…

そんなアプリなので

すごいインパクトがあったみたいです。それをリリースした後、X68000 のイベントにふらっと行ったことがあるのですが、半分以上の X68000 で私のソフトが動いていたときはもの凄く嬉しかったですね。
うん、みんなこういうのが欲しかったんだろう?思う存分楽しんでおくれ。
そんな気分でした。

そして時代は流れ

今はこんなノウハウ持っていたところでなーんの役にも立たない世の中になりました。でも、ISPR 作ったおかげで、普通にアプリ作っているだけではわからない深い世界を経験できたことはもの凄く貴重な経験でした。
ノウハウは要らないけど、経験は役に立ちましたね。でも、似たような経験した人が居ないので、私が言うことをわかってもらえないという面もありましたが…なんか適当なことを言っているだけみたいに思われることも結構ありました。

ま、世の中こんなもんです。気にしちゃダメです。

そして、気がついたら私も老人会メンバーです。そりゃそうですよね。X68000 用のフリーソフト作ってました!なんて、最近の人にはこれっぽっちも通じない。
でもまぁ、未だに EBt 作ったり色々やってます。歳取ったら作れないなんて言う人いますが、んなこたない。やりゃできます。

おわりに

たまに語りたくなる昔話でした。勘弁してください。

この記事が気に入ったらサポートをしてみませんか?