ONScripter 開発日誌

Since: Feb. 6, 2002
Last updated: Jun. 30, 2003

2003年4月~6月

6月30日

sarconv, nsaconv で、縮小された画像の四隅のピクセル値が縮小前の四隅の値を保つように修正しました。透過指定がうまく反映されない場合があったためです。

6月29日

αβεさんの patch を取り入れ、date が返す年数の桁数を修正しました(西暦4桁から西暦下2桁に)。

zaurus 版において、右クリックメニューの際に、一瞬メニューが表示された後すぐに戻ってしまう問題に対処しました。低速PCにおいても生じていたと思われます。

SL-C750 上で、画面とスタイラスの位置関係が180度ずれる・MP3 演奏において音切れが生じるとの不具合報告をいただいたので、ザウルス版のSDLライブラリにおいて対処し、パッケージを更新しました。

20030629a

そ~かむさんからのバグ報告を元に、sarconv, nsaconv を big endian のマシンで実行したときに、short, long の値を正しく書き込んでいなかったバグを修正しました。

6月22日

下記の理由から、ONScripter の Zaurus 版を阿川さんの SDL へのパッチをベースにした SDL 上で動くようにしました。私が以前に公開していたライブラリでは正常に動かなくなります。

  • 日本の Linux Zaurus においては、阿川さんがパッチを当てて公開されている SDL パッケージが SDL としてほぼ標準となっており、これと互換性のない別の SDL パッケージを使うとユーザが不便
  • SL-C750, SL-C760 を買う予定がないのでサポートするのがたいへん
  • 阿川さんのパッチには、私の以前のパッチにおける修正が全て取り入れられている

そこで、阿川さんのlibsdl_1.2.5-slzaurus20030622_arm.diffのパッチをもらってこちらで libSDL-1.2.so.0.0.5 を作成して試したのですが、色々問題があるので、別途パッチをあてました。主な改良点は以下の4点です。

  1. SL-5500 への対応
  2. 32bit aligned ではない画像転送への対応(一部)
  3. マウスカーソルを warp させたときに発行されるSDL_PrivateMouseMotion の座標の変更
  4. フレームバッファとアプリケーションが指定する画像の向きが異なるときのマウス座標設定時のマージンの取り扱いの修正

手元の SL-5500(ROM 3.1)(QVGA) と SL-C700(VGA,QVGA) では ONScripter は正常に動いておりますし、他のエミュレータもおそらくそのまま動くと思います。ただし、他のエミュレータについては未確認です。詳しくは SDL on Zaurus (SL-5500, SL-A300, SL-C700) 開発環境 のページを参照してください。

なお、この修正に伴い ONScripter 本体に施した修正は以下の一点のみであるため、今回はソースは更新しません。

Makefile.ARMLinux から -DSCREEN_ROTATION を消去
ONScripterLabel.cpp: 236行目に
    mouse_rotation_mode = MOUSE_ROTATION_NONE;
を追加

6月16日

影付き文字の描画の際に、二重に flush していたバグを修正しました。

処理が重くて時間が間に合っていない場合でも、今までは他のイベント(音楽演奏等)を処理するために遅延が必要な命令間に最低 10msec の wait を入れていましたが、直に timerEvent を eventLoop のキューの最後に入れることによって遅延を減少させるようにしました。イベントを取りこぼすことがなくなりました。

スプライトボタン生成時に、ButtonLink に surface を格納せずに、実体を sprite_info に持たせるようにしました。同じボタンの生成を頻繁に行うゲームでは、毎回生成せずに済むので高速になります。

その他、effect の前後処理を高速化しました。

6月14日

exbtn で既に解放されたスプライトを描画しようとして落ちる場合があるバグを修正しました。

アニメーションの進行が1フレームずれていたバグを修正しました。

文字スプライトボタンの描画を高速化しました。

その他、冗長に flush していた箇所を最適化しました。

6月1日20030528~20030531 を使っている人は要差し換え

ファイル名等の文字列を格納する変数に対する操作関数に関して、20030528 以降でエンバグしていたため修正しました。結構重大なバグでした。

5月31日

以前から気になっていた windowback で text が背後に表示されないバグを修正しました。副次的効果として、アニメーションカーソルがテキストと重なっていた場合に、テキストがクリップされていた(透過表示にならない)バグも修正されました。

5月28日

alphaBlend 処理中に、確保した領域外に書き込む可能性があるバグを修正しました。

NULL が設定された文字変数により segmentation fault が引き起こされることがあるバグを修正しました。

5月27日

SDL_ttf で TTF を使う場合には、異なる文字サイズごとに TTF_OpenFont を実行する必要があります。この Open された font を一括管理して、文章表示用 font や文字列スプライト等で共有するように修正しました。

cell で有効セル数を越えてセル番号を指定した場合に、有効な最大セル番号を設定するように修正しました。

SDL_ACTIVEEVENT 発生時の flush で、dirty_rect の情報が消されていたバグを修正しました。

5月25日

cell で指定したセル番号が有効であるのかどうかをチェックするようにしました。

fileexist, spclclk を実装しました。

セーブファイルの内部的な取り扱いを修正しました。セーブファイル数の上限を撤廃しました。

ボタン選択時のスプライトボタンの表示を高速化しました。

5月19日

再描画する必要のある箇所のみ frame buffer に書き込む(flush)ようにして、表示の高速化を図りました。また、ofscpy 後の effect における挙動も正常になったはずです。描画回りを結構いじったため、とりあえず experimental 版として置いておきます。試してくださる方は、以前と挙動が異なる場合にはご報告下さい。

5月10日

Blackbrd さんからのバグ報告を元に、画像の解像度変更処理において、確保したメモリ領域が不十分で segmentation fault を起こす場合に対処しました。

αβεさんの patch を取り入れ、スプライトの透過モード指定が不正な場合の回避処理を追加しました。

αβεさんの patch を取り入れ、goto* label や goto * label の表記を解釈するために readToken を修正しました。

ONScripterLabel_rmenu.cpp を、ONScripterLabel_rmenu.cpp と ONScripterLabel_file.cpp に分割しました。

bg で画面サイズより背景画像のサイズが小さい場合は、背後を黒で塗り潰すように修正しました。

テキスト文中の' 'と'\t'を読み飛ばすように修正しました。

必要メモリ量を削減するために、background_surface を廃止しました。

他にも色々いじっていたのですが、時間がかかりそうなので一旦ロールバックしてリリースしました。

4月9日

αβεさんの patch を取り入れ、input を仮実装しました。常にデフォルト値を入れます。

αβεさんの patch を取り入れ、dwaveplay, dwaveplayloop のバグを修正しました。

αβεさんの patch を取り入れ、EXTERNAL_MUSIC_PLAYER が define されている時、mp3*, bgm* を環境変数 PLAYER_CMD で指定された外部プログラムを使用して再生するようにしました。その場合、ボリューム設定は無効になります。PLAYER_CMD が設定されていない場合は、従来通りの動作になります。(※ 実験的実装です。.wma ファイルを BGM に使っているものがあったため)

αβεさんの patch を取り入れ、menusetwindow で背景色が省略されている場合(ただし、","(コンマ)はある)の対応を修正しました。元々いただいていた patch が正しいものでした。

αβεさんの patch を取り入れ、readStr() で "" の stralias を検索しないように修正しました。コメントに、(※ 他に上記に対する回避方法があれば、この修正は入れない方が良いかも知れません。)とありましたが、これは何ででしょう?直感的にはこの修正で問題ないように思えるのですが。

αβεさんの patch を取り入れ、";mode400",";mode320" に対応しました。

αβεさんの patch を取り入れ、命令の直後に空白無しで"-"や"/"があった場合に、区切られなかったバグ(例えば、"csp-1"や"skipoff/")を修正しました。

αβεさんの patch を参考に、四則演算で演算子の右側に数字がない場合(命令の列の最後が数字+'/'の場合など)は、その演算子を無視するように修正しました。これで、新旧のゲームに対応できると思います。

αβεさんの patch を取り入れ、命令を誤って mod 演算子として解釈してしまう場合がある不具合を修正しました。

20030409a

αβεさんの patch を取り入れ、sarconv, nsaconv で、width=1 あるいは height=1 の画像を変換しようとすると SEGV が発生することがある問題を修正しました。