ザビタン開発日記
2009
| 01
12月 23 (日曜日) 2007 | ||
13:16
|
「バードミサイル!」と言ってハザードを押すな!
|
|
久々に復習コーナー。
えっと・・・キーボードからの入力。
|
||
11:07
|
5人? 2人でMAXじゃなかったの!?
|
|
さて。BBLははりぼてから大きく仕様変更してしまったAPI郡がある。
ウィンドゥ関係だ。 以下が元々あったものを仕様変更したもの。
で、仕様変更によって直接ウィンドゥに書き込むことができなくなったのでブロック単位でメモリを転送するapiを1個追加してある。
で! インベーダーをゴニョゴニョ作っている最中に、さらにこんなapiがほしくなったのであります。 api_blockgetblocksendの逆。ウィンドゥのある領域を変数に取り込む api_pointgetblockgetのドット単位版 api_blockmoveアプリ側に変数を用意せず、直接ウィンドゥ内である領域を別の位置に移動させる。 api_scrollwinblockmoveでも出来るが出来るだけコードを短くしてすこしでも反応をよくしたいので専用に設置 api_slidewin横方向のスクロール。同上 ・・・もしかしたら助長かもしれませんが、まあとりあえずはこのあたりがあると便利かな〜なんて・・・(^^ |
||
12月 21 (金曜日) 2007 | ||
20:17
|
怪我の功名争い
|
|
「横道もいいとこ」とはじめた新インベーダーですが、プログラムそのものが
楽しいのとは別に、大改造した描画APIのボロをどんどん叩き出してくれます。 また、「こんなAPIがあったらもっと便利なのに・・・」なんてのも。 新インベーダーが完成することには、各APIももうすこしまともになってるかな?? |
||
12月 19 (水曜日) 2007 | ||
21:23
|
行き止まりだと解ったからいいんでありますよ!
|
|
はうあ〜・・・
やっとこさ方向がまとまってきた・・・ 各APIもほぼ出来上がってきて、アプリ郡の改造も進んでるけど・・・ インベーダーの改良はムリ!!! でもそれじゃくやしいので作り直しております <横道もいいとこ! |
||
12月 15 (土曜日) 2007 | ||
12:46
|
こーほーかくほ〜 「うわーー!このぉ!」
|
|
なんとか管理の分離はできたしマウス直下のシートを設置することもできた・・・。さて問題は、アプリが作ったウィンドゥ。
シート・・・ シート内にはバッファがある。vramに直接データを書くのではなく、 まずこのバッファと名づけられたメモリに描画する。 で、それらを元に実際にvramにデータを書くのはシステムの仕事。 アプリが作ったシートにも当然バッファがあるんだけど、この場合、そのアプリの権限でのメモリ。まあこれはいい。 問題はそのシートがウインドゥだった場合、タイトルバーやらだけはOSが管理しなくちゃいけないんじゃないかと思うわけ。 (たとえば今だと、シートのバッファ全てがアプリに管理されている。っということは、アプリ側からタイトルバーを壊したりができるわけ。これがどうしても出来ない。そういうふうにすべきではないかと・・・) すぐに思いつくのが、ひとつのウィンドゥでシートを二枚使うこと。二枚をピッタリ重ねて一枚のようにする。で、後ろ側をシステムが管理してタイトルバーやらを書き込む。アプリが確保したバッファはウィンドゥのクライアント領域だけ! ・・・しかし、どうなんだろう。かなり描画が遅くなりそうな悪寒・・・ ・・・まてよおぉぉ?? 例えばだけど、これまでのシート。仮に100x100ドットだとするよね? そーすると、どっち道、10000回メモリを書き換えないといけない。 シートを丸々2枚だと20000回の書き換えだから倍になっちゃうけど、 クライアント領域の座標の時だけは読み込む元を切り替えればすこしif判断が入るだけなのでそんなに遅くならない・・・ってふうにできないかな・・・ ちといろいろやりそうなので、例によってここいらへんにて妄想開始。 |
||
12月 14 (金曜日) 2007 | ||
17:37
|
扉を開いて
|
|
そーいえば、ウィンドゥの扱いがちょっと変化したのでapi_openwin関数をちょっと改良しないといけないなぁ・・・
えっと。現在は
・・・ふむ・・・こんな感じだよね? う〜む・・・レジスタが足りない・・・ おっし。じゃ、EBPを属性として、ビットごとにっていうことにしよっか。(つーかそれしかないでしょこれじゃ)
・・・こんなところかな・・・ おぉ! リザーブだって! なんかカコイイ!! ←バカ ・・・あ"〜・・・そっかぁ。バッファの扱いかぁ・・・・ 現在の状況だと、新しいmake_window関数はシステムとしてバッファのメモリを確保しちゃうんだ。 こりゃまずいよなぁ。アプリはあくまでもアプリ用のメモリ内でバッファを確保せんといかんわけで・・・ うーん・・・どーしよう・・・・ |
||
11:32
|
なんぴとたりとも俺の前を走らせねぇ
|
|
田んぼチャージャー・・・・ (ボソっ)
えっとぉ〜。ちょーっと問題が出てしまったでゴンス。 今のBBLはシートの重ね順がはりぼてと違う(つーか、追加されてる) そのための除外処理が甘かったようだなぁ。
しかし、今の状態だと新しいアプリを起動したりした時(新しいシートというかウィンドゥが加わった時)この順列が狂ってしまう。 bballがsht_menuの上に来たりしてはいけないのでする! えーっと・・・そうなると・・・ まず、はりぼてだと、構造体SHTCTL内に256個のsheets・sheets0があるよね。 shtctl_initで初期値を設定している。256個のsheets0に「未使用だよ」とマークし、さらにtopを-1としている。これがシートが一枚もないという状態。 sheet_allocで未使用のsheets0を探して使用中だよとマークして確保する。 しかしまだこの状態だと、この確保したsheets0の高さは-1。つまり非表示の状態。それだけしかやっていない。裏を返すと使用中にシートが何枚あろうと、表示していない限りはtopは-1のまんま。 出来上がったsiheets0を、sheet_updown関数に通すことで始めて表示が行われる。sheet_updown関数は高さの変更だけではなく、表示・非表示の制御も行っているのだ。 top変数もまた、この関数内で制御される。 ・・・っということは・・・・・ マウスやメニュー等、一度設定したらもう二度と高さが変更されないシート。これらが設定される前と後でtop変数の扱いを変えたらどうだろう?? ・・・いや。これはこれで。 それより、アプリ関係(つまりシステム以外)のウィンドゥの高さを専門にあつかう関数を新設してみた。どんなもんじゃろ・・・? リビジョン114
|
||
12月 13 (木曜日) 2007 | ||
22:16
|
サロンパスG〜♪サロンパスG〜。
|
|
いけた〜♪。
WindowsやMACみたいに、窓の下の可変ポイントをつまむと びよ〜ん! ウィンドゥの大きさが変えられる〜!!!! ・・・ような感じに見えるだけです・・・・・orz まだ心臓部をまったく搭載していないんですよ。 つか、こんな「見た目」だけでもオイラのようなタコにはきつかった〜。 試行錯誤の連続であやうくソースがごっちゃごちゃになりかけました。(いや〜。SVNって偉大だなぁ(^^; いよいよ、実際にウィンドゥが伸縮できるようなエンジンに手をつけます。・・・つか、早く完成させないと・・・そろそろ飽きてきた・・・・ リビジョン113
|
||
12月 07 (金曜日) 2007 | ||
12:42
|
初号機もATフィールドを展開
|
|
ちょっと思ったのだが、現在のはりぼての設計だと、ウィンドゥを作ったりする場合の数字があいまいだと感じ始めた。
・・・っというのは、たとえばオイラが100x100のウィンドゥを作りたくて命令を書いたとする。その場合、100x100の、オイラが自由にできる領域が出来上がるよね? でも、その場合、タイトルバーやウィンドゥの枠、フッター等がこの100x100に入り込んではいけない・・・というか、まずいと。 それはOS側が一括で管理し、統一できないとまずいような気がしてきた。 そんなわけで、そういう部分にちょっと手を入れてみよう。 いやなに、そんな御大層なことじゃない。単に「100x100のウィンドゥをくれ!」と命令すると自動的にタイトルバー等を付加した状態の窓ができあがると、そんなところ。 |
||
12月 06 (木曜日) 2007 | ||
15:09
|
ブライシンクロンマキシム
|
|
(1) 2 »  |
PopnupBlog V3 Denali created by Bluemoon inc. |