[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[WitchTech 00858] Re: カラーでの縦画面表示について



Rinjianです。

> わんだらぁです。
> WitchではAUTO変数の配列の初期化は、正しく行えなかった
> と思うので(例のDS!=SSです) 
> >  unsigned long linedata[] = {
> >   0,0,0,0,0,0,0,0,
> >  };
> ここが拙いと思います。
> staticにすれば一応解決しますが、今度はColorFontCnvRightAngle
> 呼び出しのたびに初期化されないので、配列linedataの初期化を
> 関数の先頭で、forループで明示的に行うようにしてみたら
> どうでしょうか?
ご指摘ありがとうございます。
早速修正したところうまくいきました。
関連する過去のメールを(WitchTech367-379)読み直しました。
これまで、たまたまそれなりに動いていたせいか、
DS!=SSを意識していませんでした。

> あと、横<->縦変換するループも、16色パックドカラーモード用
> ですよね?正しく変換されてないように思えますけど、どうでしょう
> か?
パックトではなく、従来の拡張としての16色カラーモード用なので
これで良いんです。
と言いたいところですが、確かに正しく変換できていませんでした。
これでは右に90度ではなく、左に90度回転されます。
というわけで、結局下記のように落ち着きました。

void ColorFontCnvRightAngle3(unsigned long *p)
{
 int line,row;
 unsigned long *lwp;
 unsigned long tmp,longdata,mask;
 unsigned long linedata[8];

 for(line=0; line<8; line++){
  linedata[line] = 0;
 }

 lwp = p;
 for(line=0; line<8; line++){
  mask = 0x80808080;
  longdata = *lwp;
  for(row=0; row<8; row++){
   tmp = (longdata&mask)>>(7-row);
   tmp = tmp<<line;
   linedata[row] |= tmp;
   mask = mask>>1;
  }
  lwp++;
 }
 lwp = p;
 for(line=0; line<8; line++){
  *lwp = linedata[line];
  lwp++;
 }
}

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:
Rinjian
E-mail: rinjian@hotmail.com
:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:






ML Archives