4: 2007-11-23 (金) 14:54:00 |
現: 2024-01-06 (土) 22:39:11 |
| 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++) |
| 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++) |
| 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++) |
| 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; |
| 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; |
| | | |
| ちょっと試しに、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] |