9月28日
ns3 を実装しました。nsaconv, nsadec にも -ns3 オプションを追加しました。
exbtn の移動指定(M)において、移動前の場所を再描画していなかったバグを修正しました。
解像度変換ルーチンの平滑化の幅を圧縮比によって可変にし、単純平均を取ることにしました。
Ogg Vorbis を使用しない場合にコンパイルが通らないバグを修正しました。
ns3 を実装しました。nsaconv, nsadec にも -ns3 オプションを追加しました。
exbtn の移動指定(M)において、移動前の場所を再描画していなかったバグを修正しました。
解像度変換ルーチンの平滑化の幅を圧縮比によって可変にし、単純平均を取ることにしました。
Ogg Vorbis を使用しない場合にコンパイルが通らないバグを修正しました。
tripodとiswebとのサービス統合に伴い、メインページの URL がhttp://ogapee.at.infoseek.co.jp/onscripter.htmlに変更になります。旧ページも12月までは新ページにフォワードされるそうですが、リンクを張られている方は変更をお願いします。
wave 系の命令における Ogg Vorbis 形式の演奏に対応しました。最初に全部デコードしてから演奏します。SDL_mixer でも Ogg Vorbis 形式に対応していますが、これだとよく BGM に使用される MP3 形式と同時に演奏できません。そのため、SDL_mixer を使わず自前でデコードし、wave 形式に変換してから SDL_mixer の channel に渡すようにしました。
nsaconv, sarconv において、jpeg の再圧縮時に、元の画像が小さいと再圧縮に失敗することがある場合に対処しました。再圧縮後のサイズを知る方法が分からないので、0x400 bytes 余計にバッファを確保するようにしました。
整数演算しか使用しない Ogg Vorbis Codec tremor_cvs_snapshot.tgz があったので、ザウルスではこちらを使用することにしました。ザウルス以外でも、これをインストールして Makefile を一部変更すればこちらを使用できます。また、onscripter-lib にこれを追加しました。
savescreenshot, savescreenshot2 を実装しました。ただし、両者の違いが分からなかったため実装は同じです。なお、現在書出しは BMP フォーマットのみに対応しています。これに伴い、圧縮アーカイブを使い --disable-rescale を指定していても、ファイルがアーカイブ内に無い場合には、画像ファイルを読み込み時に解像度変換する仕様にしました。
exbtn の移動指定(M)に対応しました。
ザウルスパッケージで、VGA 表示で圧縮アーカイブを使う場合のアイコンを追加しました。詳しくはONScripter を Qtopia 環境で動作させるための作業を参照してください。
以前公開したザウルス用 library パッケージ onscripter-lib_20030816_arm.ipk, onscripter-lib_20030829_arm.ipk ともに、20030704 時点の SDL をパッケージングしていました。さらに、T-nagi さんから御報告のあった A300 での不具合に対する修正も間違っていました。今回の onscripter-lib_20030830_arm.ipk で、T-nagi さんから不具合が修正されたという御報告を頂いているので、今度こそ直っているはずです。
スプライトの描画の際に、指定されたセル番号が最大セル数内に収まるようにクリップされていなかったバグを修正しました。
exbtn の音指定(S)に対応しました。
blt の画像サイズが変わる場合の変換ルーチンのバグを修正しました。セグメンテーションフォルトで落ちる場合がありました。
getinsert, getzxc を実装しました。
文字列スプライトで、アンチエイリアスに関する指定に対応しました。ただし解釈のみで反映されません。
getscreenshot を実装しました。
gettext で改行を含めないように修正しました。
ザウルス用ライブラリの onscripter-lib_20030816_arm.ipk で SL-A300 の不具合に対処したつもりでいたのですが、どうやら改善されていなかったようです。というわけで更新しました。ただし未検証です。
mousePressEvent か keyPressEvent が来たときに、automode 中なら automode を終了するように変更しました。
ボタン命令に関して、ボタンが重なっている場合に後から定義されたボタンが上下判定で上に来るように修正しました。
ボタン構造体のリンクリストの順序を反転したため、ショートカットキーでのボタン移動順も反転してしまったバグを修正しました。
αβεさんからのバグ報告を元に、movl で配列変数に正常に値を格納できないバグを修正しました。
回想モード時に、背景が適切に描画されないバグを修正しました。
getpage を実装しました。
mode_ext, automode, automode_time, menu_automode, isskip を実装しました。
btntime2 を正規に実装しました。
AVIWrapper があまりにもひどかったので修正しました。だいぶ再生がましになりましたが、たまに Segmentation fault で落ちることがあります(特に MPEG1 の再生)。
bar の画像生成処理に関するバグを修正しました。
isfull を実装しました。
value 宣言に対応しました。value 宣言付きのゲームスクリプトに関して、これより前のバージョンの ONScripter で保存したファイルは、これ以後の ONScripter では正常に読み込めませんのでご注意下さい。その場合は、ONScripter が書き出したファイルを全部消去してください。もっとも、現時点では value 宣言付きのゲームはほとんどないと思います。
define 節に飛ぶ前にラベルファイルを読み込むように修正しました。
T-nagi さんより、SL-A300 においてカーソルキーと画面上でのカーソルの動きが反対だという報告をいただきましたので、Zaurus 用の SDL library を修正しました。
上記のライブラリパッケージを生成するためのスクリプトをよく見たら、なんと古い SDL_mixer, SDL_image, SDL_ttf をパッケージングするようになっていました。というわけで、最新のライブラリを入れるように修正しました。
Avifile for Linux on ARM をなんとかクロスコンパイルし、libavifile-0.7_0.7-0.7.38_arm.ipk を作成しました。で、ONScripter を試そうと思ったら、AVIWrapper は YUV Overlay を使用するように作ったので、Zaurus 上では表示されませんでした……。YUV Overlay が使えない場合は、普通に描画するようにそのうち修正するかもしれません。結局、上のパッケージは動作確認していないので、そもそも動くのか、どの程度の性能が出るのかは全く不明です。YUV Overlay は、hardware acceleration が対応していない場合でも動作するようです。表示されないのは、ARM 用の Codec が全くないのが原因のようです。というわけで、avifile を使って Zaurus 上で再生するのはあきらめました。他の方法として単純に思いつくのは、MPlayer を子プロセスで起動して再生することですが、これではどうも面白くないのでどうしたものか思案中です。
スプライトのセル数が1個の場合でも、spbtn, exbtn においてマウスがボタンと重なったときに2個目のセルを前提に処理をしていたバグを修正しました。exbtn において描画がおかしくなる場合がありました。
音楽のループ演奏ができなくなっていたバグを修正しました。
lookbackbutton が効かなくなっていたバグを修正しました。
avifile library を利用して avi を実装しました。avifile-0.7-0.7.38 で動作確認しております。avifile library が利用できない環境にいる方は、Makefile.Linux を見て、USE_AVIFILE を定義せず、かつ AVIWrapper.o をリンクしないようにしてコンパイルしてください。avifile に関しては、Web を探してもサンプルプログラムが見つからず、SDL から動画が流せるようになるまで手間取りました。単純な wrapper class である AVIWrapper を作り、ONScripter から利用するとともに、これを使った単純な player (simple_aviplay)を同梱しました。SDL 上で非常に簡単に avi を再生できるので、参考にしてください。zaurus でも動くかと思いましたが、そもそも avifile の configure が cross compile 環境だとすんなり通らないので、こちらはとりあえず保留します。Linux with X 上では、画像と音が同期して正常に表示されるものの、avifile 謹製の aviplay と比較して若干カクカクするので、AVIWrapper にはまだ最適化の余地がありそうです。
exec_dll, getret, splitstring を暫定実装しました。dll を実行するわけではなく、用意した dll.txt に記述してある固定値を読み込みセットします。registry.txt と同じ要領です。使用例は ここを参照してください。
ラベルと同じ行に命令もしくはコメントがあった場合に、そのラベルが指す区間の下から一番目と2番目の行が解釈されないバグを修正しました。
exbtn において、指定スプライトが制御文字列内でも使用されている場合に表示がおかしくなるバグを修正しました。
maxkaisoupage を実装しました。
回想用バッファ用に確保した領域外にアクセスしてしまい落ちることがあるバグを修正しました。
Filelog の取り扱いに関して、アーカイブ情報に含める昔の方式と独立に ScirptHandler に持たせる現在の方式とがごっちゃになっており挙動がおかしかったバグを修正しました。
btnwait の初期状態で既にカーソルがボタン上にあるときに、ボタンが正しく表示されないバグを修正しました。
セーブファイルのバージョンを上げました。この ONScripter で生成したセーブファイルは以前のバージョンの ONScripter では読み込めません。逆はできます。
envdata ファイルの読み書きに対応しました。
標準で global variables を読み書きするファイル名を gloval.sav に変更しました。これが見当たらない場合は、global.sav を探しに行きます。
s1100089 さんの patch を参考に、-v オプション指定時にバージョンを表示するように修正しました。
えぼしさんからのバグ報告を元に、jpeg library 用のコールバック関数の戻値を修正しました。
NScrflog.dat において、アーカイブ内の順序に関係なく、画像のみ現れた順に記録するようにし、また filelog で読み込みを行うように変更しました。
setwindow で背景に画像が指定された場合に、画像の幅と高さを正しく扱っていなかったバグを修正しました。
defaultfont を仮実装しました。実際のフォントには反映されません。
マウスが移動する度に現在のマウス座標を格納する変数を更新するように修正しました。また、btndown でマウス押下が正しく扱われていなかったバグを修正しました。
非可視状態のスプライトボタンが btnwait 時に表示されないバグを修正しました。
s1100089 さんからのバグ報告を元に、スクロール効果が正常に表示されないバグを修正しました。
回想時のマウスホイール操作に対応しました。
その他内部状態に関する修正が多数あります。
sarconv, nsaconv で、縮小された画像の四隅のピクセル値が、縮小前の四隅の値を保つように修正しました。透過指定がうまく反映されない場合がありました。
阿川さんにお送りしたパッチを一部修正の上取り込んでいただいたので、それに基づいて zaurus 版のライブラリパッケージを更新しました。その修正に合わせて、zaurus 版の ONScripter を起動するときに、SDL_DSP_NFRAGMENTS を 18 に設定するように修正しました。