ザビタン開発日記
2009
| 01
10月 15 (月曜日) 2007 | ||
09:34
|
多次元配列の受け渡し
|
|
うわー! わかった〜!!!
なまじポインタを理解したつもりになってたのでよけいややこしいく 考えちゃって迷宮めぐりになってしまった!! orz えっと。まず、配列を関数で渡す定番の方法。
この例ではわかるよね?。配列としてaを丸ごと渡している。これで 受け手である関数testkansuuは配列aを受け取れる。 あとはtestkansuu内で普通に配列として取り出せるわけ。 で、これどういうことかって言うと、 実は hairetu[] は *hairetu と同じ意味になる。 つまり、ポインタによって、配列変数aが格納されているアドレスが やり取りされているわけ。 そこで気をよくして、多次元配列を送ってみた。
エラーになっちゃうんだよねぇ・・・ いろいろとこね回したり検索してみると、こういうことすればOKだということが解った。
わかる? testkansuuでの引数の定義のところで、配列の後ろのほうの値をあらかじめ設定しておけばコンパイルできるようになる。 ・・・でもさぁ。これじゃ、呼び出すMain側からは、a[][]を自由に 設定できないよね。a[2][2]にしたい時もあるかもしれない。 そんな時、いちいち関数の定義を書き換えるってのは・・・。 面倒なだけじゃなくて、バグやミスのいい温床になっちゃうよね? そこで考え方を変えてみることにした。 そもそも多次元配列なんて存在しないのだ!! たとえば
こうしたとしよう。仮に変数aが0x100から格納され、変数bは0x200から格納されたと仮定すると・・・
このように、メモリ内部への格納にはなんの差もないのだ!! だったら、渡された先であるtestkansuu内部では単なる普通の配列 (多次元ではない)と考え、要素数を自前で計算させちゃったって 同じ値が取り出せるんじゃない?。要素の数を引数ででも渡しちゃえばいいんじゃない?? そんなわけで、呼び出し先であるtestkansuuの内部で、a[4][3]を 取り出したいとすると、これでOKとなるよね?
これで結果は同じことになり、当然コンパイラはエラーを吐かない。 わーーーい!!! ばんざーーい! ・・・あ” スマソ要素数を渡してあげる必然性ないよねこの例では・・・(^^; tesukansuu内で連続して取り出したいとかそういう場合の話ね。 |
||
10月 14 (日曜日) 2007 | ||
14:42
|
関数化できんかな
|
|
さて先日背景にパターンを置きました。
こんどはウィンドゥだーーー! と思ったのですが、そこでも今回のように一定のパターンを敷き詰める 形になりますね。うーん。今回は簡単なfor文でできたけど、ウィンドゥ や飾りバーなどもその都度計算式を考えるってのも・・・・ そこで、背景埋め尽くしをputfontみたいに関数化できないかと思い、 ちょっとやってみます。(うまくできるかな〜???) モデルになるのはすぐ上にあったboxfill8かなぁ。 この関数は
こういうパラマータがいる関数だよね? 同じような関数を妄想し、必要なパラメータを考える・・
・・・とりあえずこんなところかな? graphic.cの下辺りにとりあえず置いてみて、init_screen8から呼んでみよう。
・・・おぉ! うまくいったぞ!?? 今はこんなふうに呼んでいるけど
こんなパターンで呼べないかなぁ。えとえと・・・・ あっれぇ〜クソ! 配列を渡すのってポインタじゃないのかな・・・ こんな基礎的な所で引っかかる俺って・・・・orz ・・・ん? まてよ?? |
||
10月 13 (土曜日) 2007 | ||
22:15
|
背景パターン
|
|
・・・こうしてみますた!
・・・うーん・・・網目模様にはなったけど、なんかちょっと 色気ないなぁ・・・・ もうちょっとイジってみてと・・・・・
こうなりますたぁ!!! (^^) |
||
16:11
|
まずは見た目
|
|
どっから手を入れていこうかっていうと・・・
ズバリ! 見た目!(笑 まあ復習と練習を兼ねてまずはそこいらへんからですな。 画面が広過ぎウチのマシンだと、QEMUのVESAが思いっきり効きすぎちゃって 大きくなりすぎなんだよねぇ。800x600くらいがちょうどよさそう。 えーっと。画面の広さを定義してるのが・・・ /haribote/asmhead.nas で行われている。(P280辺り) VBEMODE EQU を 0x103 (800x600x8bitカラー)に変更〜。 マウスポインタがちょっと・・・マウスポインタをもうすこしカコヨクしたいなぁ・・・ えっと、マウスポインタは・・・ graphic.c で行われてるね。
オリジナルはこうだけど、これを
こうしますた!! 壁紙?をold Mac風? に・・・背景。Win95風の単色カラーですが、これをパターンで塗りつぶしてみよう。 背景の緑の部分もシートとして管理されてたはずだよね? ええと・・・どこだったかな?? あったあった。bootpack.cからinit_screen8をコールしてるね。これが 背景やニセタスクバーの描画をしている。 init_screen8はgraphic.c内にあるからここを書き換えよう。 一番最初の行のboxfill8でズドーンと背景を塗っている。まずは
こんなことして背景を真っ白に。 で、Mac風のパターンで塗りつぶそう。 |
||
12:23
|
ツール類更新
|
|
えーっと。たしかz_tools内のツール類って、本発売の後に
いくつか更新されてなかったっけ? さっそくチェック・・・ |
||
01:34
|
開発開始!
|
|
さてさて〜。
そんなわけで、THE-BBL OSの開発とまいりましょう。 OS自作本の最終形。harib27fをベースに少しづつ改造してゆこうと。 うーむ。そーいえばBBLって、SF.jpにアカウントもらってるんだよ なぁ。どうしよう。いい機会だし、ちょっとだけバージョン管理機構 の活用にチャレンジしてみようかなぁ。ベイサイド氏もかなり 便利だと言ってたし・・・。 |
||
« 7 8 9 10 11 12 13 14 15 16 (17) »  |
PopnupBlog V3 Denali created by Bluemoon inc. |