こんにちは、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/