雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
4: 2007-11-23 (金) 14:54:00 ソース バックアップ No.4 を復元して編集 現: 2024-01-06 (土) 22:39:11 ソース 編集
Line 54: Line 54:
      p[i] = 0x6;       p[i] = 0x6;
    }     }
 + 
  io_out8(0x03c4, 0x0102);  //00000001   io_out8(0x03c4, 0x0102);  //00000001
  for ( i = 0; i <= 512*1; i=i++)   for ( i = 0; i <= 512*1; i=i++)
Line 60: Line 60:
      p[i] = 0x6;       p[i] = 0x6;
    }     }
 + 
  io_out8(0x03c4, 0x0202);  //00000010   io_out8(0x03c4, 0x0202);  //00000010
  for ( i = 0; i <= 512*1; i=i++)   for ( i = 0; i <= 512*1; i=i++)
Line 66: Line 66:
      p[i] = 0x6;       p[i] = 0x6;
    }     }
 + 
  io_out8(0x03c4, 0x0302);  //00000011   io_out8(0x03c4, 0x0302);  //00000011
  for ( i = 0; i <= 512*1; i=i++)   for ( i = 0; i <= 512*1; i=i++)
Line 84: Line 84:
  io_out8(0x03ce, 0x0700);  //色番号7をセット   io_out8(0x03ce, 0x0700);  //色番号7をセット
  io_out8(0x03ce, 0xff08);  //描画データのマスク   io_out8(0x03ce, 0xff08);  //描画データのマスク
 + 
  for ( i = 0; i <= 512*2; i++){   for ( i = 0; i <= 512*2; i++){
  p[i] = 0x6;   p[i] = 0x6;
Line 101: Line 101:
  io_out8(0x03ce, 0x05);  //書き込みモードを0に   io_out8(0x03ce, 0x05);  //書き込みモードを0に
  io_out8(0x03cf, 0x00);   io_out8(0x03cf, 0x00);
 + 
  io_out8(0x03ce, 0x01);  //全プレーンをenableに   io_out8(0x03ce, 0x01);  //全プレーンをenableに
  io_out8(0x03cf, 0x03);   io_out8(0x03cf, 0x03);
 + 
  io_out8(0x03ce, 0x00);  //色番号7をセット   io_out8(0x03ce, 0x00);  //色番号7をセット
  io_out8(0x03cf, 0x07);   io_out8(0x03cf, 0x07);
 + 
  io_out8(0x03ce, 0x08);  //描画データのマスク   io_out8(0x03ce, 0x08);  //描画データのマスク
  io_out8(0x03cf, 0xff);   io_out8(0x03cf, 0xff);
 + 
  for ( i = 0; i <= 512*2; i++){   for ( i = 0; i <= 512*2; i++){
  p[i] = 0x6;   p[i] = 0x6;
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の部分)って、元の色じゃなくて新たに黒で塗られちゃうの!???
 +えーーーーーー!!! ダメじゃん!!!
 +
 +**俺はハンパでナンパな男なんだよ! (ヴオォォォォ!!) [#la742295]
 +
 +うーーん。8の倍数でないx座標だとどうしてもこうなってしまう・・・
 +#ref(q2.jpg)
 +もともとある色を崩さずに書き込む方法ってないのかなぁ・・・
 +(OSASKのフォント描写の方法がヒントのようだがいまだにラッチがなんなのかよくわからない・・・)
 +
 +「ラッチに背景色を読み込んでおいて・・・」とある。
 +
 +このラッチという場所に色のデータを読み込ませる・・・(この場合は背景の緑色)
 +
 +ラッチに色を読み込ませるにはリードすればいい???
 +
 +え? じゃ、たとえば、 aaa = 0xa0001;  とか、そういう意味????
 +
 +・・・やっぱ違うよなぁ・・・・
 +
 +
 +    io_out8(0x03ce, 0x08);  //描画データのマスク
 +    io_out8(0x03cf, 0xff);  //マスクなし
 + 
 +    //psetmodeに・・・
 +    io_out8(0x03ce, 0x03);
 +    io_out8(0x03cf, 0x00);
 + 
 +    tmp = vram[( i * xsize / 8 ) + (i2 / 8) ] ;  //読み込んでラッチに・・・?
 +    vram[ ( i * xsize / 8 ) + (i2 / 8) ] = maskx;
 +
 +
 +**あっれぇ? ちょっとまてよ!?? [#eb2e4716]
 +
 +・・・こゆことか!? こーゆーこーとーかーーーーぁ!!
 +
 +*わかったあぁぁぁぁ!!!!!!!!!!! [#z831b124]