過去の開発日誌

2001年12月

12月30日

savename, savenumber, rmenu, menusetwindow を実装。

右クリックメニューとセーブの表示部分を実装。

─と…が UTF8 に無い(?)もしくは Qt で変換できないため表示されな いのを、drawLine で表示するようにした。

globalon を実装し、global.sav の globalon 時の読み込みと、終了時の書 出しを実装。

選択肢以外待ちを行わないモードにして、長時間耐久試験。なぜか、 qnscripter は一切リークしていないのに、XFree86 の確保メモリが 3MB/s く らいの速度で増えていっている。しばらくして、実メモリもスワップも全部食 い尽くしてしまったので、中断。原因不明。

12月24日

ld, cl の透過 a のみ実装。 alphaBlend を実装。これで、遅いもののク ロスフェードが出来るようになり、立ち絵の透過読み込みにも対応。ついでに、 text window の色味を下げる処理も、QBrush を使う方法から alphaBlend に 変更。これで、ほぼ一通り最後まで動くのではないのだろうか。

12月23日

select を全実装。マウス待ちは、btnwait と同じ機構。

12月19日

途中で落ちるのは、内部で %4020 とかを変数に使っていたからだった。 1000 までじゃないの???10000 に拡張する。

cmp を実装。

woody only 環境で動かす。apt-get install libqt3-mt-dev として、 setenv QTDIR /usr/share/qt として、正常にコンパイル&実行できた。

skip で、label をまたぐ場合を考慮していなかったのを修正。

12月20日

select を半分実装(複数行を正しく解釈し、SelectLink を作るところまで)。

12月18日

effectblank を実装。

Shutter effect を実装。ピクセルの輝度を変化させない effect は、簡単 に実装できる。問題は、最もよく使われる cross fade をどうするか。

12月17日

gosub と return を実装。プロローグの、途中まで一応行くようになった。

mov と br と '\\' を実装したら、オープニングの結構先まで進むように なった。だが、文字表示の感覚がおかしい。スペースも変?

inc, skip, mov, goto を実装。その他、bug fix。

タイトルを越え、その先のオープニングも OK。

setwindow を実装。これで、フォントの表示は大体良し。ただ、右端で切 れることがある。

12月16日

文字表示実装。日本語もばっちり。textCommand を半分くらい実装。

if, notif 実装に伴い、string_buffer の途中からでもコマンド解釈でき るようにし、また全てのコマンド実行を executeLabel から行うことにする。 これに結構時間を取られる。

ソースを印刷し、この時点でのバグを洗い出し。結構あった。

最初の画面が出るところまで行ったが。gosub を実装していないのでここ まで。

12月12日

qpixmap に対して qpainter と bitBlt を使えば、画像表示も文字表示も 全て解決する。なんとこんな解があるとは。すげー Qt。で、直したら、劇的 とも言えるパフォーマンスアップ。何しろ前回 60msec と言っていたのが、 0msec。つまり Qt の event loop と cache 能力を最大限に使うにはこうしろ ということらしい。素晴らしい。

12月11日

btnwait と reset を実装。後は、文字表示を入れれば bbndemo が完全に 動く。

12月10日

表示用の画像データを独自の配列で持ち、部分 copy や画面効果などは全部 自前で実装し、最後に widget にコピーするようにする。何故か X11 の waring もでなくなった。

無理やり setWFlags( WRepaintNoErase ) を設定して、再描画しないで draw するようにしていたが、180msec くらいかかる。QLabel を継承して、独 自に QLabel を継承して class を作ったら、何故か 60msec くらいでかなり スムーズになった。何故?

高速化のため、画像データを ButtonLink に直接持たせる。

12月8日

effect handler を一通り実装。DelayedEffectInfo で、即実行・遅延実行 に対応させる。

readStr で、alias を解決するようにする。

"effect", "arc", "bg", "btndef", "btn" を一応動作する程度に実装。機 能 (btn) を実装。ただ、Qt で画面の一部 windows に別の画像を張り付ける 方法が分からないため、表示はおかしい(全画面コピーになっている)。

さらにボタンの上を通過する度に、

X Error: 204 204
  Major opcode:  156
X Error: BadMatch (invalid parameter attributes) 8
  Major opcode:  156

が出る。

これで、NScripter の btndemo が半分動く。

12月7日

ScriptParser を書き始める。メモリに script を全部読み込み、各ラベル の index を作成し、一行づつ parse しながら、lookup table 形式でコマン ドに対応する class method を dispatch する仕組みを書く。

numaliasCommand と straliasCommand を先頭固定の link list として実 装。

QScripter_impl を ScriptParser から継承し、string_buffer などを共有 できるようにする。コマンドは、まず ScriptParser の parseLine で解析し、 解析できたらその内部で処理、解析できない場合(画面表示系)は QScript_impl の parseLine で解析して処理するようにする。

gosub に対応して、ラベルの状態を先端固定の link list で管理する。別 のラベルに移る時には、かならず event loop を経由するようにする予定。

12月5日

開発開始。

sar 形式のファイルを読み込む SarReader を書く。圧縮ファイルの中身を 見ていたら、フォーマットが分かってしまった。圧縮がかかっていなかったの で簡単に復元できた。ついでに、サンプルアプリケーションで arc.sar の中 身を全部展開する sardec を書く。

nscript.dat の暗号化方式も、web を探していたら分かってしまった。と りあえずスクリプトを復元する。

Qt で GUI を作る。一応メニューバー等を付け、背景がロード・表示でき ることを確認。MouseEvent と TimerEvent のハンドリングも書く。