ザビタン開発日記
2009 | 01
2008 | 01 | 02 | 06 | 12
2007 | 10 | 11 | 12
10月 14 (日曜日) 2007
14:42
関数化できんかな
 
さて先日背景にパターンを置きました。

こんどはウィンドゥだーーー!

と思ったのですが、そこでも今回のように一定のパターンを敷き詰める

形になりますね。うーん。今回は簡単なfor文でできたけど、ウィンドゥ

や飾りバーなどもその都度計算式を考えるってのも・・・・



そこで、背景埋め尽くしをputfontみたいに関数化できないかと思い、

ちょっとやってみます。(うまくできるかな〜???)



モデルになるのはすぐ上にあったboxfill8かなぁ。

この関数は



  1. vramの番地は?

  2. 画面のx方向の幅は?

  3. 塗る色は?

  4. 開始点のx,y座標は?

  5. 終了点の  〃



こういうパラマータがいる関数だよね?



同じような関数を妄想し、必要なパラメータを考える・・



  1. vramの番地は?

  2. 画面のx方向の幅は?

  3. パターンを格納している番地は?

  4. パターンのx幅、Y高は?

  5. 敷く積める場所の開始点、終了点



・・・とりあえずこんなところかな?

graphic.cの下辺りにとりあえず置いてみて、init_screen8から呼んでみよう。





void ptboxfill8(char *vram, int xsize, int ysize){

int y2,x2;

for (y2=0; y2 <= ysize; y2=y2+4) {

if (y2 % 8 == 0){

x2=1;

}

else{

x2=3;

}

for(x2; x2 <=xsize; x2=x2+3){

vram[y2 * xsize + x2] = 0;

}

}



return;

}



・・・おぉ! うまくいったぞ!??

今はこんなふうに呼んでいるけど



ptboxfill8(vram,x,y);







static char *ptn[8][8] = {

"........",

"........",

"........",

"........",

"........",

"........",

"........",

"........"

};

ptboxfill8(vram,x,y,ptn);



こんなパターンで呼べないかなぁ。えとえと・・・・







あっれぇ〜クソ! 配列を渡すのってポインタじゃないのかな・・・

こんな基礎的な所で引っかかる俺って・・・・orz



・・・ん? まてよ??













 
name: @Guest  Comment:
10月 13 (土曜日) 2007
22:15
背景パターン
 
・・・こうしてみますた!

















void init_screen8(char *vram, int x, int y)

{

boxfill8(vram, x, COL8_FFFFFF, 0, 0, x - 1, y - 1);



int y2,x2;

for (y2=0; y2 <= y; y2=y2+2) {

for(x2=0; x2 <=x; x2=x2+2){

vram[y2 * x + x2] = 0;

}

}

:

:





・・・うーん・・・網目模様にはなったけど、なんかちょっと

色気ないなぁ・・・・





もうちょっとイジってみてと・・・・・













int y2,x2;

for (y2=0; y2 <= y; y2=y2+4) {

if (y2 % 8 == 0){

x2=1;

}

else{

x2=3;

}



for(x2; x2 <=x; x2=x2+3){

vram[y2 * x + x2] = 0;

}

















こうなりますたぁ!!! (^^)

 
name: @Guest  Comment:
16:11
まずは見た目
 
どっから手を入れていこうかっていうと・・・



ズバリ! 見た目!(笑



まあ復習と練習を兼ねてまずはそこいらへんからですな。



画面が広過ぎ



ウチのマシンだと、QEMUのVESAが思いっきり効きすぎちゃって

大きくなりすぎなんだよねぇ。800x600くらいがちょうどよさそう。

えーっと。画面の広さを定義してるのが・・・



/haribote/asmhead.nas で行われている。(P280辺り)



VBEMODE EQU を 0x103 (800x600x8bitカラー)に変更〜。



マウスポインタがちょっと・・・



マウスポインタをもうすこしカコヨクしたいなぁ・・・

えっと、マウスポインタは・・・

graphic.c で行われてるね。



"**************..",

"*OOOOOOOOOOO*...",

"*OOOOOOOOOO*....",

"*OOOOOOOOO*.....",

"*OOOOOOOO*......",

"*OOOOOOO*.......",

"*OOOOOOO*.......",

"*OOOOOOOO*......",

"*OOOO**OOO*.....",

"*OOO*..*OOO*....",

"*OO*....*OOO*...",

"*O*......*OOO*..",

"**........*OOO*.",

"*..........*OOO*",

"............*OO*",

".............***"





オリジナルはこうだけど、これを





"*...............",

"*O*.............",

"*OO*............",

"*OOO*...........",

"*OOOO*..........",

"*OOOOO*.........",

"*OOOOOO*........",

"*OOOOOOO*.......",

"*OOOOOOOO*......",

"*OOOOO*****.....",

"*OO*OO*.........",

"*O*.*OO*........",

"**..*OO*........",

"*....*OO*.......",

".....*OO*.......",

"......**........"





こうしますた!!



壁紙?をold Mac風? に・・・



背景。Win95風の単色カラーですが、これをパターンで塗りつぶしてみよう。



背景の緑の部分もシートとして管理されてたはずだよね?

ええと・・・どこだったかな??



あったあった。bootpack.cからinit_screen8をコールしてるね。これが

背景やニセタスクバーの描画をしている。

init_screen8はgraphic.c内にあるからここを書き換えよう。

一番最初の行のboxfill8でズドーンと背景を塗っている。まずは



boxfill8(vram, x, COL8_FFFFFF, 0, 0, x - 1, y - 29);



こんなことして背景を真っ白に。

で、Mac風のパターンで塗りつぶそう。

 
name: @Guest  Comment:
Referer  (11)
12:23
ツール類更新
 
えーっと。たしかz_tools内のツール類って、本発売の後に

いくつか更新されてなかったっけ?

さっそくチェック・・・

 
name: @Guest  Comment:
01:34
開発開始!
 
さてさて〜。

そんなわけで、THE-BBL OSの開発とまいりましょう。



OS自作本の最終形。harib27fをベースに少しづつ改造してゆこうと。



うーむ。そーいえばBBLって、SF.jpにアカウントもらってるんだよ

なぁ。どうしよう。いい機会だし、ちょっとだけバージョン管理機構

の活用にチャレンジしてみようかなぁ。ベイサイド氏もかなり

便利だと言ってたし・・・。



 
name: @Guest  Comment:
Referer  (1)
1 2 3 4 5 6 (7) » 

PopnupBlog V3 Denali created by Bluemoon inc.