雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
4: 2007-11-23 (金) 14:54:00 ソース バックアップ No.4 を復元して編集 5: 2007-11-23 (金) 19:41:16 ソース バックアップ No.5 を復元して編集
Line 159: Line 159:
ちょっと試しに、harib01g で同じ動作をするbox関数を作ってみるか・・・ ちょっと試しに、harib01g で同じ動作をするbox関数を作ってみるか・・・
 +
 +**試作boxfill8関数でけたー! [#sd7644b1]
 +おっしゃぁ! 出来た! これでどうじゃろ!???
 +
 + void boxfill8(unsigned char *vram, int xsize, unsigned char c, int x0, int y0, int x1, int y1)
 + {
 +  int i,i2,i3;
 +  int xx0,xx1;
 +  unsigned char maskx;
 +
 +  io_out8(0x03ce, 0x00);io_out8(0x03cf, c);    //色番号をセット
 +
 +  //x(横)の始点と終点を8で丸める
 +  if ( x0 % 8 == 0 )
 +   {
 +     xx0 = x0;
 +   }
 +  else
 +   {
 +     xx0 = x0 - ( x0 % 8);
 +   }
 +
 +  if ( x1 % 8 == 0 )
 +   {
 +     xx1 = x1;
 +   }
 +  else
 +   {
 +     xx1 = x1 + ( x1 % 8) - 8;
 +   }
 +
 +  for ( i = y0; i <= y1; i++)
 +   {
 +     for ( i2 = xx0; i2 <= xx1; i2=i2+8)
 +    {
 +      //xの先頭部分との修正
 +      if (i2 == xx0)
 +        {
 +       maskx = 0xFF;
 +       maskx = maskx >> (x0 % 8 );
 +
 +       io_out8(0x03ce, 0x08);  //描画データのマスク
 +       io_out8(0x03cf, maskx);  //描画データのマスク
 +        }
 +      //xのお尻の部分の修正
 +      if ( i2 == xx1 )
 +        {
 +          maskx = 0xFF;
 +          maskx = maskx << (8 - (x1 % 8));
 +
 +          io_out8(0x03ce, 0x08);  //描画データのマスク
 +          io_out8(0x03cf, maskx);  //描画データのマスク
 +        }
 +
 +      //頭でもお尻でもなければ・・・
 +      if ( i2 != xx0 && i2 != xx1 )
 +        {
 +       io_out8(0x03ce, 0x08);  //描画データのマスク
 +       io_out8(0x03cf, 0xff);  //マスクなし
 +        }
 +
 +      vram[ ( i * xsize / 8 ) + (i2 / 8) ] = 0xff;
 +
 +    }
 +
 +   }
 +
 +  return;
 + }
 +
 +**あれえぇ??? [#af97836a]
 +まってまって!?
 +
 +マスクって、覆ったところ(0の部分)って、元の色じゃなくて新たに黒で塗られちゃうの!???
 +えーーーーーー!!! ダメじゃん!!!