αβεさんの patch を取り入れ、game 命令のときに intlimit 命令の効 果を無効にしていたバグを修正。
αβεさんの patch を取り入れ、erasetextwindow の状態をセーブファイ ルに保存するよう修正。
clean up
未来のバージョンの save file を開かないようにする。
blackbrd さんからのバグ報告を元に、古い save file を読み込む際に gosub の入れ子状態を保存する変数の一部を初期化していなかったバグをとる。 20020616〜20020621 のバージョンで発生するバグで、古い save file を読み 込むと場合によって内部状態が壊れます。結構重大なバグ。
バグフィクスのバグフィクス。
ONScripter のテストを兼ねて、Zaurus で某ゲームのエンディングまでプ レイ。QVGA で絵がつぶれていること以外特に問題なし。解像度変更ルーチン は工夫するべき。
systemcall reset のときに、カーソルの状態を保存する変数をクリアして いなかったバグをとる。
以前使われていた番号のスプライトに別のスプライトを読み込んだときに、 変数が正しく初期化されていなかったバグをとる。
カーソル待ちのときだけではなくタイマー待ちのときにも、立ち絵・スプ ライトのアニメーションが行われるようにする。
中身が一行しかないラベルを越えて wait なしで次のラベルに移ったとき に、次のラベルの一番目の行が読み込まれず前のラベルの行が使われるバグを とる。ラベルをまたいだときに line_cache を無効にしていないバグです。
allspresume, allsphide が呼ばれたときに、その場で画面に効果が反映さ れないように挙動を変更。
ラベル情報のセーブに関するバグフィクス。
バグフィクスのバグフィクス。
昨日は嘘を書いてしまいました。define ラベルに入る前にすべての変数を 初期化し、gloval.sav があれば読み込む。start ラベルに入るときにローカ ル変数をすべて初期化する、というのがオリジナルの正しい挙動のようです。 検証スクリプトでローカル変数を使っていたので勘違いしてしまいました。失 礼しました。というわけで、同様の動作をするように修正しました。
textgosub を使用しかつ skip しているときに、テキスト文中で @ の後に 連続して命令が来ると命令がテキストとして解釈されるバグをとる。
textgosub を使用しかつ skip をしていないときに、@ の後で必ず改行し ていたバグをとる。
savetime を使ったときに、セーブ可能なデータ数がカスタマイズしない場 合の上限(デフォルト9)になっていたバグをとる。
Marv さんのバグ報告に基づくαβεさんの patch を参考に、グローバル 変数が格納されている global.sav ファイルを、start ラベルが読み込まれる 直前(game コマンドの時)に読み込むようにする。前は globalon コマンドの 時に読み込んでいました。
Marv さんより、FreeBSD での動作報告をいただきました。コンパイルの際 は Makefile.Linux を使ってください。
save/load/reset時に確認画面を表示する。
blt の拡大縮小に対応したつもり。あまり検証していません。
--root を指定したときに MIDI が演奏されないバグをとる。
ONScripter の開発をはじめて半年が立ちました。当初は、現実逃避の一環 として、某ゲームを Linux 上で楽しむための2週間限定プロジェクトのつも りだったのですが、始めてみれば2週間ではとても終わらず、一通り動かすの に一月程かかってしまいました(過去の開発日誌参照)。
その後、他のゲームにも対応したい、折角つくったのだから他の人にも使っ てもらいたい等々欲が出て、開発を続けるとともに公開に至りました。
しかし公開はしたもののつてが全くなかったので、千熊屋さんにお願いしてリ ンクを張ってもらったのですが、そうしたらその翌日くらいにさらしるさんのとこ ろで ONScripter が紹介されており、びっくりした覚えがあります。
その後、αβεさんを はじめ多くの方に協力していただき、当初は予想していなかった多くの環境・ ゲームに対応することができました。特に、ソースレベルの patch を送って もらえることは、開発・検証を分担できるという点で非常に助かっています。
アクセスログをとっていないため、どのくらいユーザがいるのかさっぱり 分からないのですが、google でヒット数がじわじわ増えていくのをみるとそ こそこユーザがいるのかなとも思い、それがやる気につながっています。バグ 報告だけではなく「使ってます」報告もいただけるとうれしいです。
まだ当面は開発を続けていきますので、今後もよろしくお願いします。
btndown, isdown, getmousepos を実装。
hachikun さんのバグ報告に基づくαβεさんの patch を参考に、monocro
の効果が反映されないバグをとる。monocro の効果は、
・次の画像描画・エフェクト系の命令
・次の改ページ
のいずれかが生じたときに反映されるのがオリジナルの挙動であり、文字描画
だけでは反映されないようです。
800x600 の QVGA 化に対応。
SDL_SoftStretch を使っていたら何故か落ちるので、画面の解像度を変更 するルーチンを自前で実装。
起動オプションの --root でゲームファイル(アーカイブ)のある場所を 指定できるように変更。
αβεさんの patch を取り入れ、click 後に event_mode を解除し忘れて いるバグを修正。
αβεさんの patch を取り入れ、ボタン選択モードで rmode が 0 の場合 に右クリックを正しく取り扱えないバグを取る。
αβεさんの patch を取り入れ、即値形式の透過モード指定に一部対応。
起動オプションの --arc でゲームファイル(アーカイブ)のある場所を指 定できるようにする。以降のファイルアクセスはその場所が起点になります。
--arc 指定時に、save file 一覧を正しく取得できないバグを取る。
Zaurus (SL-5500) のために、MP3 デコードエンジンとして MAD も選択で きるようにする。MPEG Audio Decoder Low-Level Demonstrationを参考に、SDL_RWops に対応し SMPEG のインター フェースに準拠した wrapper を書き、MP3_MAD を定義すれば MAD に差し換え て使われるようにする。もちろん、Zaurus 以外のプラットホームでも使えま す。その場合は Makefile.ARMLinux を参考に Makefile を書き換えてくださ い。
実装上の制限として、周波数変換を行わないので、MP3 の周波数とデバイ スの周波数が異なると音がおかしくなります。
Koske さんからのバグ報告を参考に、変数編集モードか否かの状態を表す 変数を初期化していなかったバグを取る。
Zaurus (SL-5500) に対応。SDL を移植 し、CD-Audio 演奏を除く ONScripter の全ての機能が動作します。ソースは 全く共通。素晴らしい。Save file も共通ですので、デスクトップでゲームを して続きを Zaurus でやるなんてこともできます。ただ、Zaurus (SL-5500) を買おうという粋狂な人は、現時点ではほとんどいないと思いますが。
setwindow コマンドの window の縦横の幅を save?.dat に格納する際に、 おかしい値を格納していたバグをとる。
MP3 演奏開始時にチャタリングすることがあるバグを直す。
αβεさんの patch を取り入れ、systemcall rmenu を追加。
なお、不具合修正 patch に関しては、こちらで不具合を検証した後に取り 込むことにしています。すぐに不具合が確認(再現)できないものについては 保留になりますので御了承下さい。
amsp の透明度省略時に透明度を0としていたバグをとる。
汎用のアニメーション機構を実装し、立ち絵・スプライト・カーソルのア ニメーションを同時に実行できるようにする。ただし、タイミングのとり方は 要改善。
アニメーション用に画像メモリを2倍余計に確保していた仕様をやめる。
clean up。
lookbacksp を実装。
erasetextwindow の取り扱いを修正。ただし、おそらく正しい挙動ではな いが、仕様がわからないのでなんとも。
SPB を解凍するときに、確保した領域を越えて値を格納し、後で segmentation fault を誘発することがあったバグを取る。
tablegoto, savetime を実装。
αβεさんの patch を参考に、bar, barclear, prnum, prnumclear を実 装。
αβεさんの patch を一部取り入れ、sar アーカイブ中の spb ファイル を取り扱えるようにする。ただし未検証です。
Save file を読み込むときに、Save file の無いスロットを選択するとハ ングアップするバグを取る。
save file に Magic number と Version を導入する。beta 版の間は、こ れで互換性を保ちつつ save file の構成を変えていきます。もはやそんなに 修正することはないと思いますが。
αβεさんの patch を取り入れ、font の縦幅と横幅が異なる場合に対処。
αβεさんの patch を取り入れ、表示文中の ASCII 英字大文字が小文字 になるのを抑制する。
αβεさんの patch にあった repaint を仮実装。ただ、仕様書やこちら で確認した範囲では、少なくともスプライトを消すのはおかしいと思うのです が。いまいち挙動がよく分からない命令なので、挙動がおかしい場合には再現 するサンプルスクリプトをお願いします。
αβεさんの patch を一部取り入れ、mode_saya を暫定実装。文字ウィン ドウが消えているときにスプライトの0から9を消す。しかし、オリジナルで 右クリックメニューでウィンドウを消す時以外にこの効果が現れる例が見つか らない。
画像読み込み時の m 指定に対応。
カーソル位置を絶対値で指定する場合に、絶対値であることを正しく扱っ ていなかったバグを取る。
開発環境を SDL-1.2.4, SDL_image-1.2.2, SDL_mixer-1.2.3, SDL_ttf-2.0.5 に移行。
SDL_mixer に playmidi が取り込まれているようだが、当方では動作未確 認。
αβεさんの patch を参考に複合ボタンの挙動を変更。
sprite の透明度をサポート。
lsp で sprite の透明度を正常に読み込めていなかったバグを取る。
select が複数行に渡るときに、行末にコメントがあると正しく解釈されな いバグを取る。
画面の特定領域を最描画する時に、文字スプライトにもクリッピングが適用 されるようにする。
menu_full, menu_window を実装。また、ショートカットキー f で full screen mode と window mode を切り替えられます。ただし、Linux の X のみ で動作を確認しています。Windows では変化なしでした。MacOS X では動くか も。
久々に Windows で動作確認したら、MIDI 演奏で SDL が落ちるようになっ ていた。timidity.tar.gz を展開したら鳴るようになった。おかしいな、以前 はこれをやらなくても鳴ったと思ったのだが。MacOS X 上の MIDI 演奏で落ち る件もこれが関係するかも。
quakex と quakey で、描画速度が遅くとも最低1周期に4回は描画するよ うにする。
quake 系で、テキスト表示時にはテキストを表示したまま揺れるようにす る。
ボタンを選択したあとで画面効果に行く場合、押された表示のまま画面効 果が始まるようにする。
上記の修正の結果 quake 時に無限ループに陥ることがあるバグを取る。
αβεさんの patch を取り入れ、defaultspeed を実装。
αβεさんの patch を取り入れ、btndef の読み込み画像を tag 対応にす る。
ONScripter の返すバージョンを 1.98 にする。
resotreTextBuffer で連続する半角文字が正しく復元されないバグを直す。
Linux の Frame Buffer Console で試したら問題なく動作した。
富田さんの御指摘により、drawString 内での半角スペースの取り扱いに関 するバグを直す。
αβεさんの patch を取り入れ、usewheel を解釈するようにする。ただ し、マウスの wheel が使えるようになるわけではありません。
αβεさんの patch を取り入れ、「goto*label」や「csp-1」のように書 かれているスクリプトに対処。
αβεさんの patch を取り入れ、btntime, getbtntimer を実装。
csel 系の選択肢表示時のセーブに対応。
その他 bug fix、改善多数。
富田さんの御指摘により、画面効果を処理した後にスクリプトの行読み込 みキャッシュを無効にしていなかったバグを修正。
ソースから assert を取り除く。
コードの clean up。
画面描画まわりを大幅に改善。accumulation_surface の役割を、背景+立 ち絵+スプライト+テキストウィンドウの状態保存としました。
csel 系を修正。ただし、依然 csel の選択肢が出ているときにセーブする とロード時に落ちます。
windowback を実装。
allsphide, allspresume を実装。
その他 bug fix 多数。
一行の中で、一文字毎もしくは一命令毎に readLine していたのを一回に する。
textgosub 時に、\@ の直後の同じ行に命令文があると、テキスト文として デコードされたものを命令文として解釈しようとして破綻するバグを直す。た だし、同じ行で最初に変数を設定しその後テキストとして使用すると、設定が 正確にテキストに反映されない。textgosub を設定しないとスクリプトエラー になるようなこんなトリッキーなことをするゲームが存在しないことを願う。
αβεさんの patch を一部取り入れ、skipoff を実装。patch のその他の 部分については今回は保留とさせてください。
外部音源で MIDI を演奏する際に、曲の切り替え時やループ時に正常に鳴 らないバグを取る。富田さんの元の patch では大丈夫だったのですが、私が 意図に気付かず別の理由で削っていました。
富田さんの patch を取り入れ、MIDI 演奏機能を追加。素晴らしい。今ま で BGM が鳴らなかったゲームで BGM が鳴るようになると、かなり感じが違い ます。
αβεさんの patch を取り入れ、csel, cselbtn, cselgoto, getcselnum, selectbtnwait を実装。的確な patch をいつもありがとうございます。ただ し、αβεさんも指摘されていますが、csel の選択肢が出ているときにセー ブすると次回ロード時に落ちます。他の場所でセーブすれば大丈夫です。原因 は分かっていますが、どう対処したものか…。
テキスト文中に英数字が来た場合に、命令ではなくテキストとして解釈す るように修正。