11月23日
Herbasさんからのバグ報告「splitの切り出す対象文字列の特定の文字処理」を元に、split 命令で指定した区切り文字が2バイト文字(漢字)の後半のバイトと一致した場合に、正常に切り出すことができないバグを修正しました。
Herbasさんからメールでいただいたバグ報告を元に、saveon 状態で pretext gosub 使用時に、pretext gosub に飛ぶ前にセーブされないバグを修正しました。
Herbasさんからのバグ報告「splitの切り出す対象文字列の特定の文字処理」を元に、split 命令で指定した区切り文字が2バイト文字(漢字)の後半のバイトと一致した場合に、正常に切り出すことができないバグを修正しました。
Herbasさんからメールでいただいたバグ報告を元に、saveon 状態で pretext gosub 使用時に、pretext gosub に飛ぶ前にセーブされないバグを修正しました。
Komatsuさんからのバグ報告「[全般]テキストに変な禁則処理が適用される」を元に、バックログや右クリックメニューからの復帰の際に正しく禁則処理が行われないバグを修正しました。ONScripterLabel::restoreTextBuffer() 内の単純ミスでした。
すとーむさんからのバグ報告「bg_infoの大きさ」を元に、背景に指定した画像の大きさがスクリーンの大きさよりも大きい場合に正しく処理できないバグを修正しました。
すとーむさんからのバグ報告「拡張スプライト番号」を元に、拡張スプライトの0番が描画されないバグを修正しました。
本家では、exbtn_d は exbtn 命令が同時に1つ以上使われないとその効果が表れないようです。そのように修正しました。
すとーむさんからのバグ報告「命令のバグ報告」を元に、クリックやスペースキーでテキストを飛ばした際に、クリック待ちの後もテキストを飛ばす状態が継続してしまうバグを修正しました。
すとーむさんからのバグ報告「windowchipの挙動」を元に、右クリックから windowerase を実行すると windowchip で指定したスプライトが消えないバグを修正しました。本家では、このときに windoweffect の効果が反映されるのですが、簡単に実装できないため ONScripter では当座は瞬間表示とします。
lsp, vsp など描画命令を実行する時に、erasetextwindow が 1 に設定されていない場合に leaveTextWindow() で文字を消すようにしました。現在の本家はたしかにこういう仕様ですが、昔からこんな仕様でしたっけ?これまでは、その後の print, ld, tal など画像効果を引数にとる命令に到達した時点で文字を消すようにしていました。
背景画像保持スプライト(bg_info)の大きさが、背景に指定された画像の大きさになっていたバグを修正しました。画面の大きさと等しくするのが正しいようです。
前回の更新からだいぶ時間があいてしまい、その間バグ報告をいただいた方にはたいへん申し訳ありませんでした。作業環境が大きく変わってしまったこともあり十分テストできておりませんが、実験版としてソースのみ更新します。なお、画面描画周りを大幅に修正したため、今まで正常に動いていた個所がおかしくなっている可能性があります。何かお気づきの点がありましたら、バグトラッキングシステムまでご報告ください。
すとーむさんからのバグ報告「windowchipの挙動」を元に、テキスト描画時に windowchip で指定していたスプライトが消えてしまうバグを修正しました。windowchip の動作を勘違いしていました。
tmkk さんからのバグ報告「Big endianな環境でOgg Vorbisが再生できない」でいただいたパッチを適用し、big endian な環境で Ogg Vorbis の再生がボリュームを変更した場合にうまくいかないバグを修正しました。ご指摘のとおり、decodeOggVorbis() の dst_buf に little endian 決め打ちで PCM を格納していたことが原因でした。native endian で格納するように修正しました。
すとーむさんからのバグ報告「draw系命令」を元に、drawsp2 命令が参照しているスプライトの情報を上書きしてしまうバグを修正しました。
GGB00161 さんからのバグ報告「monocro 命令の表示タイミング」を元に、monocro, nega 命令が実行された時点で効果が画面に反映されてしまうバグを修正しました。
すとーむさんからのバグ報告「命令のバグ報告」を元に、textspeed 命令によるテキスト表示速度指定の有無に関わらず、クリックやスペースキーでテキストが飛ばせないバグを修正しました。
すとーむさんからのバグ報告「for Win で最新の SDL 用のパッチ」を元に、最新の SDL ではキャプション表示に UTF8 文字列を要求するため、Windows 環境において文字列を UTF8に変換してからキャプション表示関数に渡す処理を追加しました。Makefile.Win で必要な定数を設定してください。なお Linux や MacOSX 環境での UTF8 変換には既に対応済です。
ひとつもりさんからのバグ報告「タグ中にある特定の文字が正常に認識されません」を元に、pretextgosub で使用するタグを読み取る際、タグ中の2バイト文字(漢字)の2バイト目がタグ終端' ]'と同じ値である場合に、正しく読み取ることができないバグを修正しました。
bgm 命令で ogg のストリーミング演奏をしている途中に dwave 命令等で ogg の復号をすると、ストリーミング演奏の情報を納めた構造体が破壊されるバグを修正しました。20080111, 20080112 での修正における単純な実装ミスでした。
ルビを表示する際に、その行でそれまでに表示された文字数とルビが指定された文字列の文字数の和が1行に表示可能な文字数を超えた場合に、ルビが指定された文字列を表示する前に改行が入らないバグを修正しました。
20080111 での修正が中途半端で、ボリュームの設定が正しく反映されないことがあるバグを修正しました。
すとーむさんからのバグ報告「命令のバグ報告」を元に、bgm 命令で ogg を再生する際に、ボリューム変更が反映されないバグを修正しました。
し~くるさんからのパッチを取り入れ、GP2X, iPhone, WinCE 用の変更と Makefile を反映させました。
すとーむさんからのバグ報告「命令文のバグ報告2」を元に、texton, textoff 命令実行時に windoweffect で指定した効果が描画されないバグを修正しました。
windowchip 命令を実装しました。
すとーむさんからのバグ報告「拡張スプライトで」を元に、ONScripterLabel クラスのサイズが大きくなり、PSP では main 関数の中でスタック上に確保しようとする時点で落ちてしまうようになったので、ONScripterLabel::sprite_info, ONScripterLabel::sprite2_info を動的に確保するようにしました。また、lsp2 コマンドにおいて、与えられた座標を中心座標ではなく左上座標として描画していたバグを修正しました。
vsp2 命令を実装しました。
henrich さんからのバグ報告「AVIWrapper.h:54: error: 'CImage' has not been declared」を元に、avifile ライブラリで使用する型や関数にネームスペース(avm::)を追加するパッチを当てました。当方の環境(Debian etch, libavifile-0.7.dev (1:0.7.44.20051021-2.2))では当てても当てなくてもコンパイルできますが、Debian Unstable 環境で最新の libavifile を使用するとビルドできなかったそうです。
すとーむさんからのバグ報告「logsp strsp 系について」を元に、PDA オプションを付けてコンパイルし解像度変換を行う場合に、logsp, strsp, movemousecursor, shadedistance 命令において解像度変換が反映されないバグを修正しました。
Ying-Chun Liu さんからのバグ報告を元に、ENABLE_1BYTE_CHAR と FORCE_1BYTE_CHAR を定義してコンパイルした際、右クリックメニューのセーブもしくはロードを実行中にバッファーオーバーフローで落ちることがあるバグを修正しました。
logsp 命令実行時にルビが正しく表示されないバグを修正しました。
savegame2, pagetag, gettaglog 命令を実装しました。
TextBuffer クラスを、tag の情報を含んだ Page クラスに変更しました。
maxkaisoupage を指定した際に、回想用のバッファ page_list の数が1つ少なくなるバグを修正しました。