[osask 6930] Jenny8.

  こんにちは、川合です。

  Jenny8をベータリリースしました。

  変更点は次の2点です。

・TOWNS版にI.Tak.さんのパッチを導入
  → 漢字ROM読み込みは速いし、32768色表示はすごくきれいで、TOWNS
     っていいなあとしみじみ思いました。パッドパッチも入れたつも
     りですが、テストしてないのでちゃんと入っているかどうかは分
     かりません。おかしかったら早めに教えてください。

・アーカイブ機能を追加
  → とりあえずwin32のように実行ファイルにデータファイルを埋め込
     むテクニックだと思ってください。詳細は下で。

  osa_dir2でベータ版を試したい人は、jenny8aをダウンロードして、
OSASK.EXEに改名して、osa_qemuのOSASK.EXEを上書きしてください。こ
れだけでOKです。常にディスクイメージ(OSAIMGAT.BIN)内のOSASK.SY
Sは使われないのでこれを気にする必要はありません。

  さて今回の目玉のアーカイブ機能についての説明です(まあTOWNS版
にとってはI.Tak.さんパッチのほうがはるかに大きな目玉ですが)。

  たとえばteditcや聖人さんのkaodun、さらにベイサイドさんのwabaな
どでは、専用設定ファイルや専用データファイル、専用ライブラリファ
イルが別途必要になっています。これは仕様としてはとてもよく、バイ
ナリを変更しなくても、データファイルをいじるだけでカスタマイズす
ることができますし、一般に開発もやりやすくなります。

  しかし一方で、これはユーザにとってはちょっと面倒でもあります。
どのファイルがどのファイルを必要としているのかで混乱することもあ
りますし、よく分からなくてデータファイルなどを不用意にいじったり
消したりしておかしくなるかもしれません。また、ファイルリストが長
くなってイライラすることもあるかもしれません。

  ということで、普通の発想としてはここでOSASKにディレクトリサポ
ートをつけようということになるのですが、ディレクトリにしてもフ
ァイルが整理できるだけで、結局細かいファイルがバラバラと存在す
るのには変わりありません。

  一方win32の実行バイナリには、任意のデータファイルをリンク時に
くっつけてしまう仕組みを持っています。これはいいなと僕は思いまし
た。ということで、今回はディレクトリではなく、この機能をつけまし
た。

  説明はまだまだ続くのですが、とりあえずこの辺で一つサンプルを見
せます。

    http://k.hideyosi.com/kdun00b.lzh  (44.4KB)

これは1ファイルになったkdun00aです。Jenny8以降でないと実行できま
せん。1ファイルなので、qemuで遊ぶ場合は、z_osabinにkdun00b.binを
置いて、「run kdun00b」とするだけで遊べます。データファイルなど
がある場合は、!run_opt.txtを編集しなければいけないのですが、1フ
ァイルになったのでそんなことをしなくても手軽に遊べるようになった
わけです。

  この機能は、アプリのソースやバイナリをまったく改変する必要があ
りません。edimgでsf16_40s.ld3に
    ARCINFO0.TXT
    KDUN00A.BIN
    KAODUN.BG
    KAODUN.CHR
    KAODUN.ETC
をcopyしただけです(詳細はedimgのドキュメントの例-5を参照)。こ
のとき、これらのファイルは無圧縮形式である必要があります。そして
このままでは当然大きいので、できたディスクイメージをbim2binで圧
縮します。kdun00b.binはそうやって作ったものです。

  OSASKは、このようなアーカイブを実行しようとすると、ARCINFO0.TX
Tを解釈してどれがデータファイルでどれが実行ファイルかを知り、適
切に動作します。ファイルオープン要求があれば、アーカイブとディス
クの中を捜して、ARCINFO0.TXTに記述された優先順位判定をして、ふさ
わしいほうを渡します。

  こういう仕組みなので、APIは増えていません。また、KAODUN.BGがデ
ィスクの中にある場合は、アーカイブ内のものは利用せず、ディスクに
あるほうを優先するようにできるわけです。そしてkdun00b.binではそ
ういう設定にしてあります。常にアーカイブ内を優先する設定にもでき
ます。外部にファイルがあればそれを自動で優先できるというところは
、win32の実行ファイルよりも柔軟性があると僕は思います。

  専用APIが不要なので、開発時は今までどおり多ファイルで開発して
最後のリリースのときだけアーカイブ化すればいいでしょう。それにア
ーカイブ化はソースをいじる必要がないので、仮に開発者がアーカイブ
化をしてくれなくても、アーカイブ化は誰にでもできます。ソース非公
開アプリであってもOKです。bim2binとedimgを使えば、アーカイブの中
身を確認したりファイルを取り出すこともできます。

  さてこのアーカイブ機能はこれだけではありません。実行ファイルを
含まず、データファイルだけをまとめてアーカイブする使い方もありま
す。

  これはいい例があまりないので、現在開発中のshibai1で説明します
。shibai0は大量のBMPファイルを必要としていました。shibai1では、
これにJPEGも利用できるようになり、どの画面でどの画像ファイルをど
こに表示するか、などをごく単純なスクリプトで記述するようになって
います。

  このうざったいファイル群を一つにまとめようと思えば、shibai1.bi
nをベースにして、スクリプトも画像ファイルも全部まとめてしまう、
という方法があります。しかしこれはPowerPointの実行ファイルにPowe
rPointのデータをくっつけてしまうようなものであり、いかにもかっこ
悪いです。できることなら、実行ファイルは実行ファイルにしておいて
残りのデータファイルだけをまとめたいと思うわけです。

  ということで、スクリプトファイルをベースにして、画像群をくっつ
けて1つのアーカイブにできます。shibai1のスクリプトファイル指定画
面で、普通のスクリプトファイルを指定する代わりにこのアーカイブを
指定すると、それ以後はそのタスクからのファイルアクセス要求はアー
カイブを対象にするようになるというわけです。もちろんここでも優先
順位設定は可能で、アーカイブ外に同名のファイルがあればそれを優先
させることもさせないこともできます。

  このアーカイブは考えようによってはプレゼンテーションファイルと
みなすこともできます。もちろんshibai1用にまともなプレゼンテーシ
ョンファイルフォーマットを考えるほうが絶対に効率はいいですが、面
倒なときはとりあえずこのアーカイブで代用してしまうこともできるわ
けです。

  このデータファイルのみのアーカイブ化はshibai1に限りません。た
とえば仮に誰かがhtmlブラウザを作ってくれたら、htmlをベースに画像
データをくっつけたアーカイブを作ることができます。これで1ページ
が1ファイルになるわけです。さらに、index.htmlをベースにしてリン
ク先のhtmlも入れてしまうと、一つのサイトをまるまる1ファイルにす
ることも可能です。そしてこれをユーザが意識して解凍したりすること
なく、あたかも「1サイトwebデータファイル」というフォーマットのよ
うに扱えるわけです。

  そしてもし自己解凍型というか、自己再生型のデータにしたければ、
これらのデータアーカイブにブラウザやshibai1などのビューアをくっ
つけて、アーカイブを作り直せばいいわけです。実行ファイル埋蔵型か
、データファイルのみの結合にするかは、ユーザが用途に合わせて選べ
ばよいわけです。

  現在edimgをバージョンアップ中で、これができるとアーカイブをも
っと作りやすくなったり、解凍しやすくなったりします。特にアーカイ
ブ内ではtek0圧縮がかかっていてはいけないという規則のせいで、アー
カイブ化したいファイルが圧縮されたものなのかどうかを確認するのが
面倒です。これを自動化して、圧縮されていたら展開してコピーすると
いうコマンドをつけようと思います。他にもいくつか機能を増やします
。

  最後に、OSASK ver.4.5の予定ですが、とりあえず5/5くらいまで動作
報告を待って、問題がなさそうならディスクイメージのベータ版を作り
5/10に一般公開したいと思っています。

  ARCINFO0の書き方などは、また後日説明します。

  それでは。

--
    川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! osask.jp
Homepage http://osask.jp/

ML番号でジャンプ
ML単語検索