|
雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
4: 2007-11-23 (金) 14:54:00 |
5: 2007-11-23 (金) 19:41:16 |
| | | |
| ちょっと試しに、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の部分)って、元の色じゃなくて新たに黒で塗られちゃうの!??? |
| + | えーーーーーー!!! ダメじゃん!!! |
|