2006年
10月25日
GGB00161さんからのバグ報告「puttext命令が無効になっています」を参考に、puttext 命令で表示ができなくなっていたバグを修正しました。また、通常の文字表示および puttext での文字表示において、文字列の最後が半角奇数文字の場合に誤って改行されるバグを修正しました。
し~くるさんからのパッチ「画面解像度の自動設定パッチ」を取り入れ、コンパイルオプションに PDA_AUTOSIZE を定義することによって、画面解像度を自動設定できるようにしました。また、Makefile.iPodLinux をいただいたものに差し換えました。
し~くるさんからのパッチ「Makefile.PSPの修正」を取り入れ、Makefile.PSP を更新しました。
追加機能のご要望「矢印キーでの操作」を参考に、矢印キーの上下で選択項目を循環できるようにしました。これに関連して、ショートカットキーの割り当てを見直しました。気付かなかったのですが、本家では矢印キーで選択項目間の移動ができるようなので、ONScripter で矢印キーの上下をマウスホイールの上下に割り付けるとバッティングしてしまいます。そこで、矢印キーの上下は選択項目の移動に、矢印キーの左右をホイールの上下に割り付けるように変更しました。くわしくは、キーボードショートカットをご覧ください。
hiyuh さんからのパッチ「Exceed MAX_SPRITE_NO in ONScripterLabel_command..cpp」を参考に、csp コマンドで有効ではないスプライト番号を指定されたときにセグメンテーションフォルトを引き起こすことがあるバグを修正しました。
本家との互換性を保つため、ONS のセーブファイルのバージョンを上げました。過去のセーブファイルももちろん問題なく読み込めます。
8月26日
すとーむさんからのバグ報告「returnについて」を参考に、return コマンドの引数にラベルをとれるようにしました。
テキスト回想画面と回想から復帰した画面で禁則処理が働かないバグを修正しました。20060813 でセーブファイルの構造を変えたときにエンバグしていました。
8月13日
今まで、btnwait と select コマンドにおいて、event queue を空にするということをしていました。そのため、Seung Park さんからご報告をいただいていたのですが、keydown した後の keyup がクリアされると、キーが押しっぱなしであると判断され不具合が起こることがありました。20030616 でこの処理を入れているようですが、なぜ入れたのか当時の開発日誌を見ても分かりません。とりあえず削除します。
本家との互換性を保つため、ONS のセーブファイルのバージョンを上げました。過去のセーブファイルももちろん問題なく読み込めます。
8月12日
すとーむさんからのバグ報告「処理速度」によると、処理速度が半分以下になる場合があるそうですが、現状ではいい解決策が思いつきません。原因は、バグ報告「タイトルは特殊な状況下でのエフェクト」への対処として、画面出力用の画像バッファを内部的に毎回2種類生成するようにしたためです。そのため、いただいたスクリプトのように瞬間表示でひたすら描画を繰り返す演出では処理時間がほぼ倍になります。ただし、通常の画面効果は以前と同じ処理速度で動作しますし、文章を読み進めていく場面では体感速度はそれほど低下しないと思います。今回、2種類目の生成効率を少し上げたので、若干改善していると思います。
Seung Park さんのパッチを取り入れ、big endian な環境で OggVorbis ファイルが正常に再生されるようにしました。ただし、当方では未確認です。
8月5日
バグ報告「タイトルはテキストウィンド」を元に、setwindow および setwindow3 の挙動がおかしいバグを修正しました。内部的には、next_display_mode 変数を削除し、現在の描画状態の取り扱いを単純化しました。描画関係がおかしくなっている可能性があるので、もし何かお気づきの点がありましたら御報告下さい。
nscripter.insani.orgで配布されているパッチのコメント(ONScripterLabel_sound.cpp)を見ると、こちらで配布しているソースでは、MacOS X ppc などの big endian の環境で OggVorbis の再生がうまくいかないとのことなのですが、これどなたか確認していただけないでしょうか。具体的には、以下のスクリプトを走らせ、ストリーミング有りと無しの両方の場合でどうなるかを御報告頂ければ幸いです。
*define
game
*start
mp3vol 100
bgm "test.ogg"
ストリーミング有り\
stop
voicevol 100
dwave 0,"test.ogg"
ストリーミング無し\
end
上記の件、パッチ作成者の Seung Park さんにメールで尋ねたところ、すぐにテストをしていただき返事をいただきました。どちらの場合でも不具合が出るそうです。勘違いしていたのですが、どうやら ov_read のエンディアン指定は、マシンのエンディアンとは関係なく、OggVorbis ファイル中のデータのエンディアンを指定するようで、これは通常 little endian にすればよいようです。次回のリリースで修正します。
8月3日
すとーむさんさんからのバグ報告「命令のバグ報告」を元に、erasetextwindow 0 が設定されている場合には、btnwait コマンド処理時にもテキスト表示を継続するように修正しました。
8月2日
バグ報告「タイトルは特殊な状況下でのエフェクト」を元に、テキスト表示状態から非テキスト表示状態に移るとき、もしくは非テキスト表示状態からテキスト表示状態に移るときに、未描画のスプライトが強制的に描画されてしまうバグを修正しました。バグ報告「エフェクト」での修正は根本的な解決になっていなかったので、この修正は元に戻しました。今回の修正では、accumulation_surface と補完的に用いる画面状態保存用のバッファ(サーフェス)を、メモリ使用量がなるべく少なくなるように1枚だけ追加しました。おそらく本家とは異なる実装になっていると思いますが、たいていの場合挙動は一致すると思います。
すとーむさんからのバグ報告「命令のバグ報告」を元に、文字スプライトの幅を1文字分広く取っていたバグを修正しました。
すとーむさんからのバグ報告「命令のバグ報告」を元に、btndown 設定時に、入力待ちではないときにボタンを離すと、離したことがボタン状態変数に反映されないバグを修正しました。
btnwait コマンド処理内で event queue を空にする flushEvent を実行していたのですが、マウスボタンを素早くクリックすると、ボタンを離したイベントまで消されてしまうという不具合が以前からありました。上記の修正のついでに、今回 flushEvent をコメントアウトしました。もはや覚えていませんが、理由があって flushEvent を入れたはずなので、何か不具合があるかもしれません。
7月29日
すとーむさんからのバグ報告「命令のバグ報告」を元に、getspsize コマンドが縮小されたアーカイブを正しく扱えないバグを修正しました。
すとーむさんからのバグ報告「命令のバグ報告」を元に、textbtnwait で autoclick が効かないバグを修正しました。
バグ報告「エフェクト」を元に、テキスト表示状態から非テキスト表示状態に移るとき(windoweffect が適用されるとき)に、未描画のスプライトが強制的に描画されてしまうバグを修正しました。
6月18日
hiyuhさんからのバグ報告「Fix strict aliasing warnigs.」を元に、コンパイル時に warning が出る問題に対処しました。また blt コマンドの第3・4引数に負の値を取れるようにしました。
すとーむさんからのパッチを元に、sarconv, nsaconv に -j -q オプションを追加しました。また、jpeg 圧縮でデフォルトでベースライン最適化を行うようにしました。
5月30日
きさらさんのご厚意で、バグトラッキングシステムを運用して頂けることになりました。たいへん感謝しています。旧バグトラッキングシステムのバグ報告も全て移行し、現在のところメール通知機能が無効になっていること以外は以前とほぼ同じ使い勝手になっていると思います。ぜひご活用下さい。
5月4日
すとーむさんからのご指摘に基づき、文字スプライトボタンの画像面積を、FontInfo で指定された縦横幅分確保していたバグを修正しました。20060503 でエンバグしていました。これが原因で、キーボードショートカットでのボタン移動が正しく機能していませんでした。
5月3日
バグトラッキングシステムへの spam がひどく、αβεさんと連絡がとれないため、使用を中止します。当座は、バグは直接メールで送ってください。どなたか代わりにバグトラッキングシステムを運用してくださる方はいらっしゃらないでしょうか。
strsp, drawsp3 コマンドを実装しました。
すとーむさんからのご指摘に基づき、本家にならいスキップモードの際に return キーおよび space キーでも停止するようにしました。return キーや space キーでは停止できないと勘違いしていました。失礼しました。
hiyuhさんからのパッチ「crosses initialization of 'SDL_KeyboardEvent ke'」を取り入れ、gcc-4.xでコンパイルエラーになるバグを修正しました。
4月15日
NSCRIPTER.INSANI.ORGで公開されているパッチの一部を取り入れ、getbgmvol, getmp3vol, getsevol, getvoicevol コマンドを実装しました。
NSCRIPTER.INSANI.ORGで公開されているパッチの一部を取り入れ、BPP32 版の AnimationInfo::blendBySurface() の alpha blending 計算が間違っていたバグを修正しました。
NSCRIPTER.INSANI.ORGで公開されている Seung Park さんのパッチの一部を取り入れ、英語版の右クリックメニューの表記をよりふさわしい英語に直しました。
NSCRIPTER.INSANI.ORGで公開されている Seung Park さんのパッチを参考に、日本語版・英語版ともに、右クリックメニューからファイルの読み込み・保存を行う際に、分の表記が常に2桁(1桁の場合は0埋め)になるようにしました。1: 3 の場合は1:03 となります。
NSCRIPTER.INSANI.ORGで公開されている Seung Park さんのパッチを参考に、systemcall reset が呼ばれた後でキャンセルされた場合に、正しく続行出来ないバグを修正しました。
すとーむさんからのご指摘を参考に、スキップモードの際に、マウスの右クリックでも停止するようにしました。
4月9日
キーボードショートカットの割り当てを変更しました。カーソルキーの上下でマウスホイールの代わりに、左右で選択肢の移動になります。また、vi 風に hjkl で左上下右になります。今までのキーに慣れていた方には申し訳ありませんが、マウスホイールを直感的に扱えるようにするにはこの方がいいだろうと思い変更させていただきました。詳しくはキーボードショートカットをご覧ください。
すとーむさんからのパッチを参考に、ジョイスティックのレバーに対応しました。キーバインドは、上の修正にともない変えてあります。
し~くるさんからのパッチ「iPodLinux 用のパッチ(音声無効パッチ含む)」のうち、iPod 用のキー変換を実装しました。
し~くるさんからのパッチ「iPodLinux 用のパッチ(音声無効パッチ含む)」のうち、SDL_mixer と smpeg の関数をコメントアウトしてライブラリがリンクされないようにする個所は、もっといい方法はないのでしょうか。機能しないにしろ、SDL_mixer と smpeg (もしくは MAD) が iPod 用にコンパイル+リンクできればいいのですが。
20060409a
し~くるさんより、スレッドを無効にし Audio/Joystick/CDROM を有効にした SDL と SDL_mixer, MAD の組合わせで、iPod 上で ONScripter(20060409) が動作したとのご報告「iPodLinux 用のパッチ(音声無効パッチ含む)」をいただきました。その際に使用した Makefile.iPodLinux をいただいたので、同梱します。
20060409b
し~くるさんからのバグ報告「英文字を含んだバージョンの表示」にあるとおり、20060409a でバージョン番号にアルファベットを足したらコンパイルエラーが出るようになっていました。単純なミスで、修正しました。いつもはコンパイルがとおるかチェックをするのですが、20060409a は修正点が軽微だったのでさぼっていました。申し訳ありません。
4月8日
すとーむさんからのバグ報告「drawbg2 と for 命令」を元に、drawsp2, drawsp, drawbg2 命令で、画面解像度変更が反映されていないバグを修正しました。
し~くるさんからのパッチ「iPodLinux 用のパッチ(音声無効パッチ含む)」を参考に、画面の大きさの指定方法を変更しました。今までは、コンパイル時に PDA_VGA, PDA_PSP などの文字列を指定していましたが、これからは PDA_WIDTH に画面の横幅を直接指定する方法に変えます。VGA の場合は、PDA_WIDTH=640、PSP の場合は PDA_WIDTH=360 などになります。なお、PDA_WIDTH は PDA を定義したときにのみ有効になり、PDA_WIDTH を指定しない場合は 320 (QVGA)になります。
し~くるさんからのパッチ「iPodLinux 用のパッチ(音声無効パッチ含む)」を参考に、sarconv,nsaconv で、変換先の画像サイズを直接指定するようにしました。詳しくはアーカイブ圧縮をご覧ください。
し~くるさんからのご報告を参考に、ipod nano などマルチスレッドが使えず SDL_AddTimer が NULL を返す場合でも処理を続行できるようにしました。
+で文字列を連結する機能に対応しました。また、取り扱える文字列の長さを全角で1024文字未満に制限しました。
3月9日
たいへん対応が遅くなりましたが、春男さんからのご要望「CDDA 演奏で mp3 以外の形式(wav,ogg)にも対応」にしたがい、CDaudio 演奏の振り替えにおいて、mp3 以外に ogg, wav 形式に対応しました。mp3, ogg, wav の順でファイルを探します。
Sofiya猫さんの OS/2 用のパッチを取り入れました。
hiyuhさんからのバグ報告「CDDA 演奏振り替えでSIGSEGV」を元に、CDDAの振り替え演奏において、ループするときにセグメンテーションフォルトで落ちるバグを修正しました。20060227でエンバグしていました。
おそらく20051209以降で、ENABLE_1BYTE_CHAR 指定(英語モード)時に半角文字が表示されないバグがあり、修正しました。
3月5日
Sofiya猫さんが OS/2 版バイナリを公開してくださったので、リンクを張りました。
Sofiya猫さんからのバグ報告を元に、OGG 再生を無効にしてコンパイルした場合に、openOggVorbis 関数が不正に NULL ではない値を返し、落ちることがあるバグを修正しました。
hiyuhさんからのバグ報告「no effect was found [3000]」を元に、エフェクト番号が0から255の範囲を超えて指定されたときに、0とみなして続行するようにしました。
hiyuhさんからのパッチ「Fix warning for 20060224 and 20060227」を適用し、コンパイル時の warning を抑制しました。
hiyuhさんからのバグ報告「-DLINUX - DUTF8_FILESYSTEM でウインドウタイトルの文字化け」を元に、Linux でロケールがUTF8の場合に、ウィンドウタイトルが文字化けする問題に対処しました。ただし、こちらでは検証できないため、コンパイルが通ることは確認しましたが、文字化けの有無については未確認です。
2月27日
bgm 系の命令で OGG の Streaming 再生を可能にしました。ONScripter では音の再生に SDL_Mixer を使っていますが、SDL_Mixer の仕様上、1つの Streaming 可能な音楽(mp3, ogg)と複数の Streaming 不可能な音楽(wave)を同時に再生することしかできません。つまり、dwave で複数チャネルの OGGStreaming 再生に対応することは現状では難しく、dwave で OGG を再生する場合には、全体をいったん wave 形式に復元してから再生します。
上記の変更にともない、音楽再生回りを大きく変更しました。エンバグしている可能性もあるため、何かお気付きの点がございましたらご報告ください。また、今まで bgm 系命令において無駄に繰り返しメモリを確保していた問題が修正されています。
setwindow3 コマンドを実装しました。
2月24日
hiyuhさんからのバグ報告「ONScripterLabel_image::makeMonochromeSurface でSIGSEGV」を元に、描画処理のクリッピングを見直し、指定した描画範囲がスクリーン外の場合に makeNegaSurface, makeMonochromeSurface がセグメンテーションフォルトを起こすバグを修正しました。
すとーむさんからいただいたパッチを元に、 コンパイル時に PDA_PSP2 を定義することによって 384x288 の画面サイズで表示できるようにしました。
1月31日
すとーむさんからのバグ報告「改ページ処理」を元に、linepage, linepage2 の挙動がおかしいバグを修正しました。20051209 からバグが発生していたようです。
1月28日
hiyuhさんからのバグ報告「横書の選択肢が縦書になるバグ」を元に、cselbtn で表示するテキストの横の文字数が1になっていたバグを修正しました。20051209 からバグが発生していたようです。
横書きでルビを使用する時に、文字の表示位置が上にずれるバグを修正しました。
hiyuhさんからのパッチ「横書の選択肢が縦書になるバグ」を取り入れ、コンパイル時に型の不一致で警告が出る問題を修正しました。
exbtn, spbtn 命令でスプライトを範囲指定付きで消すときに、セルの番号が強制的に0に設定されるバグを修正しました。
1月15日
20060104 で文字のキャッシュサーフェスへの描画法を変えましたが、RGB
の計算が間違っていたので修正しました。
すとーむさんからの要望「キーボードショートカットにホイールアップを」を元に、ホイールアップと等価のキーボードショートカットとしてLキーを割り当てました。
dyob さんからの要望「mpeg 再生中プログラムが終了しない」を元に、MPEG および AVI 再生において、Window の終了ボタンを押したときにプログラムが終了するようにしました。
複合ボタンの"c100-150"に対応しました。
getspmode コマンドを実装しました。
1月4日
Linux と Zaurus 版の Makefile で、-fomit-frame-pointer を指定するようにしました。これだけで1割くらい速くなった気がします。
これまでは、文字の描画に TTF_RenderGlyph_Blended を使っていましたが、これを TTF_RenderGlyph_Shaded に変えました。TTF_RenderGlyph_Blended の RGB 部分は単なるベタ塗りであり、TTF_RenderGlyph_Shaded でアルファ成分だけもらった方が、(1)文字キャッシュのヒット率の向上、(2)文字キャッシュの必要メモリの低減、(3)文字の描画処理の高速化といいことすくめであることに気がつきました。この結果、文字描画だけみれば数割は速度が向上していると思います。
文字のキャッシュサーフェスへの描画方法を工夫しましたが、性能はほとんど変わらないようです。