#99 Article 245 Posted at 1992/04/23 08:07:09 by まる (MAP2055) [PRG.ML1]

Subject: Re:*4 参考用 ML1W.EXE ver.0.10 (PC98|286|386) /4889(#32) ... /4878(#32) /243

>unsigned char	vram[64000];
>	vram[16000*N + x + 160*y] = color; // N:小ML1番号
>みたいに扱ってるんだけど、
>	vram[x + 320*y] = color;
>な感じで扱えるように中身を変えるのをどうやるか、なのよね。

ポインタを配列で四つあらかじめ用意します。
unsigned short vram_offset[4];

  vram_offset[0] = 1枚目の開始座標; /*(  0,  0)=0           */
  vram_offset[1] = 2枚目の開始座標; /*(160,  0)=160         */
  vram_offset[2] = 3枚目の開始座標; /*(  0,100)=320*100     */
  vram_offset[3] = 4枚目の開始座標; /*(160,100)=160+320*100 */

んで、
      vram[vram_offset[N] +x + 320*y]=color;
                    (x,yは0~159,0~100ね)
とかやる。
 実際にはポインタ操作で、
     *(&vram[0] + *(&vram_offset[0]+N) + x + 320*y)=color;
の方が速いかな?それにロード時ならオフセットは小ML1を1枚処理中
はかわんないから、&vram_offset[0]+Nは固定化できるな。

(それぞれの先頭番地を直接配列にしておけばさらに足し算が減って速い
かな。)

普通にやる(毎回計算する)よりゃ簡単そうな気がします。

こういうのは(ポインタをあらかじめテーブルで持ってしまう)私は結構
使ってます(仕事でも^^;)。あたりまえのことかも知れませんが。
ちなみに動作保障は全く致しません(^^;)。勝手に言っているだけだよん。

アーギュメントは・・・いつも苦労してますよん。

       私はまぬけなOS屋さん(^^; MAP2055 まる