[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 2810] Re: Smaller color



  こんにちは、川合です。


I.Tak. さんは 2001/12/28 15:29:51 の「[OSASK 2808] Re: Smaller c
olor」で書きました:

> 川合さんの提案を全て使った上でさらに縮めることに成功しました。

  なんと!

> まず、OpenTextBox,PutString, OpenTextBox,PutString という配列
>に統一したところ、圧縮率が向上しました。これは何も努力せずにできる
>とっても嬉しいダイエットです(^^ みなさん(誰?)試してみましょう。

  うむう、なるほど・・・。確かにtek0のアルゴリズムからすれば、そ
のとおりです。盲点でした・・・。

>今回の対戦結果はこちら。
>helloT2 141
>colorT5 175
>cnTdwn4 196
>総和が512!

  この総和が512というのはウケました。本仕様のOSASKフォーマットの
ファイルシステムでは1セクタに満たないファイルの扱いにも配慮され
ており、その時はこれらは同じセクタに収容されるでしょう(笑)。

  今はもちろんDOS互換フォーマットのみのサポートなので、これらは
ディスク上で1.5KBを消費してしまいますが(TOWNS版では3.0KB)。

  さてソースを見ました。colorは限界でしょう。tek0も256バイトを77
バイトにまでパックしています。30%のサイズにまでしているわけです
。

  helloやcountdownも、うーん、限界っぽいですね。

  サイズに関係ない突っ込みをしておくと、

(colorTより)
>.textwork:  resb 64+ textlength*8

これは、本来は誤りです。このテキストボックスのサイズは20*8なんで
すから、

 .textwork:  resb 64+ 20*8*8

が正しい表記です。しかしこれはバイナリーに1バイトの差違も生みま
せん。だからどうでもいいことです。

> よ〜く見ると、オリジナルのhelloとかは皆l2d3を使ってるようですね。
>せっかくだから、tek0を使いましょう。

  あれはかなり前に作りましたからねえ・・・。あのころはtek0がなか
ったのです。いつか改定する時があったら、tek0にしたいと思っていま
す。

  実はbim2bin1は完璧ではなく、tek0のままでさらに圧縮率を高められ
る可能性はあります。1バイトくらいは変わるかもしれません。しかし
それを簡単に見出すためのアルゴリズムがないので、僕には書けません
。

  さてそれでは、ぼやきページを更新することにしましょう。

  ・・・更新して気がついたのですが、helloT2のサイズは、win32/NAS
Mのちょうど1/4です。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/