こんにちは、I.Tak.です。
From: rakkyo <rakkyo-taro !Atmark! nifty.com>
Subject: [OSASK 5073] LIBR_BMP 0.2
Date: Sun, 29 Sep 2002 00:20:07 +0900
> BMPデータ ->graphbox用データ
このルーチンをちょっと読んでみました。それで気が付いたことを
いくつか。
bmp_info構造体へのポインタを返すようになっていますが、その構造体
は静的に置いてあるんですよね?それならグローバル変数を用意してもら
って、「勝手に書き換えます」ということでいいんじゃないかと。
川合さんのmtlはそういう引数をとりますし。
あるいは、構造体のポインタを引数にしてそこへ書き込むとか(これが
普通だと思いますが)。
それから、圧縮bmpの展開で、00 02 hh vv というデータをみつけたら
素直にジャンプするようになっていますよね。これ、graphicboxとしては
相当にマズいはずです。なぜなら、mallocした領域の初期値は不明だから
です……OSASK/ATや98は死にます(OSASK/TOWNSだと、そういうデータには
ファンシーな色が出るだけですが)。
あと、要らないcmpが多いとか……例えば、
dec cl
cmp cl, 0
jz bmp_type16r_start
というのがありますが、このcmpは要りません。たぶんASKAが吐いた部分で
dec EBX
jne @GL0000000C
こうなってるようにすればそれでOKです。これは
EBX--;
}while(==0)
とかいうのに対応しています。
もうちょっと踏み込むと、フラグがでてきちゃうんですけど……
命令によって一部のフラグに影響しないとか面倒なので、とりあえず
このへんで。
I.Tak. <g240845 !Atmark! mail.ecc.u-tokyo.ac.jp>
http://user.ecc.u-tokyo.ac.jp/~g240845/