bootpack.cのシートを探す関数(自分で関数化)を眺めていて気が付いたのですが、shtctlのmapを使って調べたら、ループで1つずつ調べるよりも早くシートを探せそうだなぁと思ったんです。
早速書いて(くだらない所でズッコケて1時間ほど悩みましたが)実行!
————————————————
int sid = shtctl->map[my * shtctl->xsize + mx
シート検索をもっと早く
12月 28th, 2006OSAkkie.info
12月 28th, 2006独自ドメイン「OSAkkie.info」を取得しました。
ValueDomainで安くドメインを取得できるのが残り数日だったので、つい……!
画像データ転送関数
12月 22nd, 2006画像データを転送する関数を作りました。画像データとは、マウスカーソルとかクローズボタンみたいなアレです。
アルファベットのa?pをパレット番号0?15に置き換えて描画するようにしたので、画像データもすべて作り直しました。ちなみに、OSAkkieカラーはrとsで対応していますし、透過色は’.’、何も転送しない場合は’ ‘などの適当な文字を入れればいいことになっています。
これのおかげで、50.5KB前後あったosakkie.sysが49.1KBにまで減りました。ソースも超スッキリになりましたよ?。多色対応でサイズがぶくぶく増える中で、似たような処理をまとめていくのは重要だなぁと思いました。
2次元配列になっている画像データの受け渡しに苦労しました。ポインタでやり取りする形で作ったものの、うまく画像が表示されなくて、2次元配列のまま受け渡しする方法を考えてみたり(これは色々決まりごとがあってダメだった)、秘儀・適当ポインタ(でたらめに色々なポインタを入れてみる技)を試したり、最後の手段でCSVVの時のように構造体でくるんでしまおうか考えたりしていましたが、結局、データの受け渡しと全然関係ないところを書き間違えていて、最初に作ったポインタ形でうまく画像が表示されました……。何が言いたいかというと、CSVVではできなかった2次元配列の関数間の受け渡しができるようになった、ということなのです。これもOS自作入門のおかげなのです!
さて、画像データ転送がうまくできたので、新たに画像を一つ増やして、OSAkkie三大野望の一つを実現しようかと思っています。そして、osakkie.sysのサイズがまた50KBを超える……。
OSAkkie Ver.0.1.03
12月 17th, 2006OSAkkie Ver.0.1.03をリリースしました。
・多色対応
・色コード変換関連API追加
osak_getbuflen(0x4004)
osak_getcolor(0x4005)
・各種APIの多色対応
osak_putstrwin(0x4100)
osak_boxfilwin(0x4101)
osak_point(0x4102)
osak_linewin(0x4103)
・asmhead.nasにて、解像度を第2候補まで選べるようにした。
・bootpack.cのマウス処理の改良
・マウスのメイク・ブレイクを検知するようにした。
・ナオミさんを右ドラッグで移動できるようにした。
・最小化ボタンの追加(未実装)
・日本語フォント読み込み後、OSAkkie半角フォントを上書きロードするように変更。
・壁紙表示から画像読み込み部分をpicture.cに分離
・画像読み込みAPI追加
osak_initpicture(0x4006)
osak_drawpicture(0x4007)
osak_freepicture(0x4008)
・サンプルアプリに「stbeep」を追加。
画像読み込み・表示API
12月 17th, 2006 今日は画像読み込み・表示のためのAPIを実装してみました。ついでに、壁紙表示でも同じ関数を呼び出すようにしたので、経済的になっています(?)。それで、APIで画像を表示させる手順はこんな感じです。
int pic,
ご無沙汰
12月 15th, 2006 すっかりご無沙汰になってしまいましたが、ぼちぼち開発を再開しています。
多色対応は、とりあえず出来上がりました。24bitに対応できるように、バッファはint型にしてみましたが、24bitでの動作確認はしていません(それでいいのか?!)。
多色対応にあたって、アプリの書きやすさのためにいくつかAPIを追加し、OSAkkieのほぼすべてのアプリでそれを使用しているため、他OSとの互換性はなくなっています。従来のAPIの互換性はキープしてありますが、多色で描画をする場合は、api_をosak_に置き換えて、16進数コードで色を指定することで可能になります。
現在は、bootpack.c内のマウスのメイク・ブレイクの実装、ウィンドウ最小化の実装に取り組んでいます。
マウスのメイク・ブレイクはほぼ出来上がりました。ついでにネストが異様に深い問題を解決して、ソースもすっきりです。マウスのメイク・ブレイクが分かることで、ウィンドウを閉じるときにマウスのメイクが来た時点ですぐに閉じるのではなく、ブレイクまで待ってから閉じられるようになりました。
最小化は仕様に悩み気味ですが、うまく実装していけたらいいなぁと思っています。
そういえば、osakkie.sysのサイズが50KBを超えました。なんとなくくやしいので、うまくサイズを縮められそうなところがあったら改善してみようと思います。例えば、ボタンの描画あたりで、*と@で表現するんじゃなくて、8bit色コードで表現するとかして、まとめて関数で処理できるようにしたりとか。
OSC2006-Okinawa終了
12月 5th, 2006OSC2006-Okinawaに行ってきました。
詳しいことはあっきぃ日誌に書いたので、そちらをご覧ください。
URL: http://d.hatena.ne.jp/Akkiesoft/20061202
こちらは報告だけということで?。
展示ブース編:
OSC来場者数が150人というのもあって、お客さんは少なめでした。「沖縄の人はシャイらしい」というウワサが本当なのか、会話はあまり弾まず……?(ごめんなさい、おいらも会話下手です)。CD-Rとチラシが最後まであまっていたのですが、ライトニングトークで強引に配りました(笑)。
OSAkkieミニセミナー編:
Kタンのセミナーの最後で話題振りしてもらいながら、プレゼンのデータが途中で終わっていた&実演しようとしたらVGAコネクタがうまく刺さらなくて続行不能に。つまり、大失敗してきました。プレゼンデータの確認をしていなかったのはおいらが100%悪いのですが、VGAケーブルが、VGAケーブルがぁぁぁぁ。
ライトニングトーク編:
トップバッターであることを忘れ(しかし元から全然意識していなかった?)、プレゼン用PCの電源を切っていました。しかも、社長にあまっていたCD-Rとチラシまでを配っていただいて、もう、本当にすみませんでした。なんと、緊張のあまり15分もずるずるやってしまったようでした。秋の東京よりも圧倒的に少人数だったのにアガってしまうとは、情けない。その後の懇親会では社長から「箇条書きのページは全部読むべからず」との指導を受けました。
結局のところ、シンプルを極めた高橋メソッドが(初心者には)やりやすいんじゃないかなぁ、と思いました。どうでしょう。
多色対応
11月 26th, 2006 OSC2006-Okinawaには間に合いませんが、多色対応に挑戦中です。
昨日は、はりぼて友の会のサンプルを見ながら実装を進めていたのですが、サンプルは1つの関数が8bitカラーと16bitカラーの2つに分かれてしまっていてなんだかもったいない(もっと「ちまっと」まとまりそうな)気がしました。色を定義していたCOL8_??????も16bit版ができて無駄っぽく感じたので、うまく1つにまとまるように、ついでに自動判別がたにしようとしたのですが、ポインタ周りで壮大な勘違いをしてしまい、また1からやり直しになってしまいました。
一つできたまとも(?)な実装は、asmhead.nasでVBEMODEを第2候補(第3候補まであったが、いらないと思ったのでやめた)まで選べるようにしたことです。……16ビットモードに切り替え失敗したら8ビットモードで開いてもらうような感じにできます。まぁ切り替え失敗なんてあんまりないとは思いますが。両方だめだった場合は320*200モードになります。
OSAkkie Ver.0.1.02
11月 26th, 2006OSAkkie Ver.0.1.02をリリースしました……昨日ですが。
Ver.0.1.01で入れ忘れていた、6×12サイズのフォントを作るためのコンバータを同梱しています。
自宅サーバーからxreaを移行
11月 22nd, 2006というわけで、書き込みテスト。