過去の開発日誌

2005年

12月30日

数値変数と文字変数で、インデックスの指定が範囲外のときの処理を入れ ました。現在インデックスは 0 から 4095 まで取れますが、ONScripter では この範囲外を指定すると、共通の一時変数へのアクセスに置き換え続行する仕 様にします。

12月9日

zZzさんからのバグ報告を元に、テキスト表示の際に奇数個の半角数字の後 に空白・改行があると文字化けすることがあるバグを修正しました。

zZzさんからのパッチを取り入れ、キーイベントの SDLK_KP_ENTER も SDLK_RETURN と同様に扱うようにしました。

バグ報告「「ヒトナツの夢」の文字表示について」を元に、以下の縦書きモード時の不具合を修正しました。

縦書きかつルビ使用時に、テキスト行が文字間分右にずれていたバグ(?) を修正しました。しかし、getcursor の戻値にこのずれが反映されないのは本 家のバグだという気がします。

文字スプライトは、常に横書きで描画するようにしました。

スプライトの透過度を、ロードの際にリセットしないようにしました。

縦書きのときは、本家では setwindow の「縦の文字数」×「縦の文字数」 が文字表示領域になり、clickstr のクリック待ちと改ページの区別も「縦の 文字数」を基準に決めているようです。これもバグだと思いますが、現状のゲー ムはこの仕様の元に作成されているので、ONScripter もこれにならいます。

これまでバグって機能していなかった縦書き時の select 系コマンドに対 応しました。

11月15日

ScriptHandler::readToken() において、想定外の文字が現在バッファの先 頭に来たときに、スクリプトが不正にスキップされることがあるバグを修正し ました。昔は無かったのですが、パーサを書き換えたときにエンバグしたよう です。

にゃののん日記 によると、プログラム本体をアイコン登録すれば、Homeキーでホーム画面 に戻った後も、タスクバーのアイコンからゲームに復帰できるとあります。さっ そく試してみましたところ、VGA でしかやっていませんが、うまくいっている ようです。素晴らしい。ONScripter の配布パッケージに取り入れさせていた だきます。また、ONScripter-Resume は削除しました。

上の事情もあり、Zaurus 用パッケージのためにアイコンを作りました。今 までは碁のアイコンを流用していましたが、最近の Zaurus には入っていない ようです。私の Zaurus にはあるのですが、なぜかタスクバーには出てきませ ん。

11月2日

画面効果のモザイクイン・アウトに関してバグ修正を行いました。 onscripter-20051101 での修正ミスです。

11月1日

し〜くるさんからの「PSP 用のパッチ」を適用し、PSP 用の Makefile やキーバインドを追加しました。

画面効果のモザイクイン・アウトにおいて、解像度によってはセグメンテー ションフォルトを起こすバグを修正しました。そもそもモザイクの描画の仕方 が間違っていたので、そちらも修正しました。

10月13日

BPP16 を定義してコンパイルしたときに、奇数幅の画像を正常に扱えない ことがあるバグを修正しました。SDL_Surface で画像バッファの幅が 4byte に align されているのを忘れていました。

bar コマンド後の再描画領域が不正になることがあるバグを修正しました。

10月11日

バグ報告「歌月十夜」を元に、selnum コマンドにおいて、行をカウントする変数が正しく更新されないバグを修正しました。

10月10日

し〜くるさんからの修正「save_data_lenの初期化ミス?」を取り入れ、save_data_len が初期化されていないため ScriptParser::allocFileIOBuf 内の memcpy の挙動がおかしくなることがあるバグを修正しました。PSP 上で動作したそうです。

20051010a

erasetextwindow で 0 が指定されたときに、既にテキストが描画されてい るときのみ、画面効果に入ってもテキストの表示を継続するようにしました。 これまでは、画面効果に入ると強制的にテキストを表示するようにしており、 結果として意図しないテキスト枠が表示されることがありました。

10月8日

仕様として、デフォルト(saveon 有効時)では改ページする度に(厳密には 少し違いますが)セーブデータのスナップショットをとっているのですが、こ れまではこれを tmpfile で生成したファイルに格納していました。今回、ス ナップショットをメモリ上に保存するように変更し、またセーブデータの実際 の読み書きも、メモリ上で全体を構築し fread, fwrite で一度に読み書きす るようにしました。ディスクアクセスの遅い環境では結構有効だと思います。 もしかしたら、セーブデータの読み書きに関してエンバグしている可能性があ るので、何か気づいた方は御報告下さい。

また、セーブファイル以外で読み書きを行うデータファイルについても、 同様に一気に読み書きするように変更しました。

10月4日

今まで、fgetc もどうせ内部でバッファリングされているんだろうから、 fread と読み込み速度はたいして変わらないだろうと思い込んでいたのですが、 実装にもよるのでしょうが、比較してみたら相当差があることが分かりました。 ScriptHandler::readScriptSub の処理時間を比較してみましたが、某ゲーム (nscript.dat が 5M 程度)で、fputc 版1秒、fread版(自前で 4K バッファ リング) 0.04秒でした。何がネックになっているのかしりませんが、ディスク アクセスが遅い環境だとかなり影響がありそうです。というわけで、fread で 実装したものに更新しました。

ついでに、アーカイブ読み込みルーチンも一部バッファリングするように しました。

memprof で見てみたら、ScriptHandler::ArrayVariable をコピーするとき と ScriptParser::loadStr で非常にわずかですがメモリークしていたので修 正しました。

10月1日

バグ報告「ルビの問題」を元に、文章がルビ付きの文字から始まっている場合に正常に描画されないバグを修正しました。

9月23日

バグ報告「レミュオールの錬金術師で商品が減らない」を元に、bar コマンドで現在値に負の数が指定されたときに、unsigned でキャストされ異常な値となり、その結果環境によっては落ちるバグを修正しました。

20050923a

データ読み込み時に、bar と prnum の初期化処理が不完全で落ちることが あるバグを修正しました。

9月16日

バグ報告「レミュオールの錬金術師で商品が減らない」で nyo さんからいただいたパッチを元に、puttext コマンドが '/' で終わる際に、不必要な改行が入るバグを修正しました。

9月13日

さっそく BPP16 を定義していたときに落ちるバグを発見し、修正しました。 単なる型の書き換え漏れです。Zaurus 用パッケージをお使いの方は必ず更新 してください。

20050913a

cselbtn コマンドで、csel で設定されていない番号が渡されたときに、無 視して続行するようにしました。これまでは強制終了していました。

9月12日

BPP16 を定義してコンパイルした場合に、内部画像を RGB 16bpp, alpha 8bpp で管理するようにし、最終出力も 16bpp となるようにしました。BPP16 を定義しない場合は、これまで通り RGBA 32bpp で管理します。これにともな い、画像処理関係を大幅に変更しました。エンバグして表示がおかしくなって いるかもしれませんので、お気づきの方はご報告下さい。

これまでは PDA を定義すると、画面サイズを QVGA にして最終出力である screen_surface のみを 16bpp で確保していましたが、今回からは PDA を定 義しても画面サイズが QVGA になるだけです。なお、PDA に加えて PDA_VGA も定義すると、最初に VGA を確保しにいき、失敗すると QVGA で確保しよう とします。Zaurus 用パッケージでは、PDA, PDA_VGA, BPP16 を全て定義して コンパイルしています。Zaurus では体感できる程には速くなりましたが、思っ たほどではありませんでした。また、BPP16 を指定すると、なぜか smpeg で mpeg1 動画の再生画面がノイズの様になります。

SDL_ACTIVEEVENT, SDL_VIDEOEXPOSE イベントが発生したときに、正しく画 面が再描画されない場合があるバグを修正しました。

createBackground(), btnCommand() 等で、無駄に画像メモリを確保してい たバグを修正しました。

monocro, nega の効果が命令直後に反映されるようにしました。前はそう いう仕様では無かった気がするのですが……。

バグ報告「レミュオールの錬金術師で商品が減らない」を元に、MIDI ファイルの演奏を停止する際に、ループ演奏の有無を示す状態変数を誤って設定してしまうことがあるバグを修正しました。

バグ報告「レミュオールの錬金術師で商品が減らない」を元に、表示文の '/' の後の改行で、スクリプトの行カウンタが正しく増加しないバグを修正しました。

8月24日

tmkkさんからいただいたパッチを参考に、UTF8 ファイルシステム上の日本 語ファイル名の読み込みに対応しました。Linux では、デフォルトでは EUC を想定し、UTF8_FILESYSTEM を定義してコンパイルすると UTF8 を想定します。 MacOS X では、Makefile.MacOSXのデフォルトで UTF8_FILESYSTEM を定義して おり、UTF8 を想定しています。

OpenGL 関連のコードを削除しました。

今後ですが、Zaurus では framebuffer のフォーマットに合わせて内部画 像を RGB 16bpp, alpha 8bpp で管理し、使用メモリ量の低減と描画の高速化 を図ろうと思います。今までは RGBA 32bpp で管理していたので、結構効果が あると思います。9月中には実装する予定です。

8月19日

Zaurus で使用していて、右クリックからのロード・セーブの表示が遅いの で、TTF_RenderGlyph_Blended の結果を単純な LRU で30文字分キャッシュ することにしました。なぜ30文字かというと、これだけあればセーブ・ロー ド画面の文字がたいていの場合全部キャッシュに入りそうだからであまり深い 意味はありません。体感速度は上がっています。というか、私のは素の SL-C700なのですが、VGA だと画面描画が遅くて遊ぶ気がしません。リリース 前のテストに使っているだけです。カーネルを入れ替えたり新しい機種にすれ ば快適になるのでしょうか。

drawsp2, drawbg2 で使用する拡大縮小回転付きのアルファブレンディング 処理から、無駄な部分を省きました。下の布石です。

これまで、高速化のための試みとして OpenGL をバックエンドにした実装 を試してきましたが、非OpenGL版との互換性を保つことに限界を感じてきまし た。実装上の問題(バグ)以外のあからさまな問題は、nega, mono が効かな いことと1つのテクスチャメモリに乗らない大きな画像が扱えないことですが、 他にも、多くの画面効果が高速化の恩恵を被れない、OpenGL 側の出力がダブ ルバッファリングされていることやビデオチップ内でレイヤー合成をするのか メインメモリ上でレイヤー合成をするのかの違いから意図したとおりの描画が 難しい等々問題があります。このうちいくつかは、画像分割や GLSL で fragment shader を書くなどすれば解決しますが、OpenGL を使用するメリッ トが低下したり、なるべく多くの環境で使用してもらいたいという主旨から外 れてしまいます。本当は STL も使いたいのですが、同じ理由で敢えて使って いません。さすがに C で書く気はしませんが。そういうわけで、OpenGL 関連 のコードは現状 ifdef で完全に分離されていますが、可読性やメンテの問題 もあり、特に要望がなければ次回のリリースから OpenGL 関連コードを削除し ます。

8月18日

bgcopy, getspsize コマンドを実装しました。ただし、bgcopy は画像の保 存に未対応です。

bar_info, prnum_info で、セーブデータ読み込み時に初期化していなかっ たバグを修正しました。

btnwait 時に、スプライトのアニメーションが機能しないバグを修正しま した。

バグ報告「2byte ファイル名」を元に、アーカイブからではなくファイルシステムから直接ファイルを読み込む際に、LINUX が定義されている場合ファイル名を SJIS から EUC に変換するようにしました。

7月19日

ボタン選択時に、あるボタンからフォーカスが外れたら、別のボタンに連 続してフォーカスが移る場合にも常に exbtn_d の中身を実行するようにしま した。また、exbtn の P 指定でセルの番号を指定しない場合には、セル番号 を0にするようにしました。

7月17日

if コマンドの fchk, lchk で、"*label" 形式の引数を扱えなかったバグ を修正しました。

exbtn コマンドにおいて、C 指定でボタン自身のスプライト番号を指定し た場合に、非表示にならないバグを修正しました。

spi, soundpressplgin コマンドにおいて、nbzplgin.dll が指定されたと きのみ復号を関連づけるようにしました。

~を通過するときに、現在行が1つ余計にカウントされていたバグを修正し ました。

効果番号1のときに、全画面を再構築するのではなく、dirty な領域のみ 再構築するようにしました。小さなスプライトを print 1 で連続的に動かす ような演出が高速化されます。

セーブデータのバージョンが2未満のときに、古い形式のテキスト履歴の 読み込み方に問題があり落ちることがあるバグを修正しました。

puttext コマンドによるテキスト描画の際は、ゲーム状態を保存しないよ うにしました。

*start 直後で必ずゲーム状態を保存するようにしました。

7月16日

exbtn コマンドの M 指定(移動)の際に、非表示だったスプライトが表示状 態にならないバグを修正しました。

saveoff コマンド実行時に、ゲーム状態を保存しないようにしました。

csel コマンド実行時に、テキストモードに入らないようにしました。

pretextgosub の飛び先に行く前にゲーム状態を保存していたのを、 pretextgosub の飛び先から帰ってきてテキスト描画に入る前に保存するよう にしました。

OpenGL 使用時に、文字の描画等が乱れるバグを修正しました。ただし、無 条件でトップに描画されない不具合があります。

7月1日

バグ報告「ひぐらし を nsaconv 時の途中停止」を元に、nsaconv, sarconv において、Windows bitmap フォーマットの1画素あたりの bit 数が8の場合(パレットカラー)の縮小に対応しました。ただし、bit 数が1と4の場合には未対応です。

6月29日

バグ報告「文字表示領域の背景位置がずれる」を元に、setwindow の状態をセーブデータから復元する際に、背景画像ファイル名が NULL でない場合に無条件でそれを設定していたバグを修正しました。

6月16日

Seung Park さんからいただいたパッチを参考に、X11 以外の環境で SDL_WM_ToggleFullScreen, SDL_WM_ToggleFullScreen が機能しない問題で、 代替コードを入れました。これで、Windows や MacOSX の環境でも起動後に画 面モードの切り替えが出来るようになりました。

Seung Park さんの修正を採り入れ、SDL_QUIT イベントを補足し endCommand を実行するように修正しました。

OpenGL を有効にし SMPEG を使用して MPEG1 動画を再生する際に、これま ではビデオサーフェスを毎回 SDL_SWSURFACE に切り替えていたのですが、 OpenGL サーフェスのまま再生するように修正しました。動画の再生前後で画 面を切り替えが発生し見苦しい問題と、Win32 環境でフルスクリーンで動画を 再生した後にマウスが復帰しない問題を解決しました。なお、SDL-1.2.6, SDL-1.2.7 には Overlay の初期化コードにバグがあり、落ちます。最新の SDL をお使い下さい。

6月2日

バグ報告「紅刻の唄 第壱話で無限ループ」を元に、おそらくだいぶ前から if 文中の lchk 命令が機能しなくなっていたバグを修正しました。

5月24日

Zaurus 用パッケージでは、キーボードでマウス操作を代行できるように -- force-button-shortcut オプションを指定して起動するようになっているので すが、いつの頃からかこのオプションが機能していませんでした。まともに操 作できなかったゲームが多数あったと思われます。機能するように修正しまし た。

5月23日

monocro の効果が発生するレイヤや humanz の初期値を修正しました。 「レイヤ描画順」を開発メモにまとめ ました。

SDL surface の RGBA の並びを、TTF_RenderGlyph_Blended が返すものと そろえ、文字描画を高速化しました。その他、alphaBlend の loop 内の高速 化等で、systemcall load の描画が 4% 程(Linux Desktop)速くなりました。

文字は、描画時には他のレイヤを無視して必ずトップに書くように修正し ました。

5月20日

し〜くるさんからのバグ報告「フルスクリーンモードについて」を元に、SDL_WM_ToggleFullScreen() が実装されていない環境(X11 以外)で --fullscreen を指定して起動したときに、フルクリーンモードになるように SDL_SetVideoMode に SDL_FULLSCREEN を渡すようにしました。また、ウィンドウモードで起動する --window オプションを追加しました。

春男さんからのバグ報告「選択肢表示中ホイール上下を繰り返すと Access violation」を元に、--enable-wheeldown-advance オプションを使用した状態で、select コマンドからマウスホイールの上で回想画面に入りそこから復帰するときに、落ちることがあるバグを修正しました。

今回は Zaurus では使わない機能に関する修正なので、Zaurus 版パッケー ジの更新はありません。

20050520a

上の回想画面から復帰するときに落ちる問題で、別の問題とのからみを考 え修正箇所を変えました。

5月14日

もう beta 版ということもないだろうと思い、バージョン表記から beta を取ることにしました。今後、通常のリリースは onscripter-20050514.tar.gz (バージョン 20050514)、実験版のリリースは onscripter-exp-20050514.tar.gz (バージョン exp-20050514)という表記にし ます。ソースのディレクトリにもバージョン番号を付けるようにしましたので、 バイナリパッケージを作成されている方はご注意ください。

なお実験版とは、大きな修正の結果エンバグしている可能性が高い場合や、 要望によって私が試すことの出来ない環境での動作変更を行った場合にリリー スし、私や他の人が十分にテストをした上で問題がなければ通常版に取り込ま れます。

5月7日20050504 を使っている人は、要差し換え。セーブデータが正しく書き込まれていません。

20050504 では、スクリプトの現在行の計算を間違えており、現在の状態が 正しくセーブデータに保存されません。20050507 以降に差し換えてください。

春男さんからのバグ報告「未初期化変数2件」を元に、フォントや文字位置の状態を管理するクラスで横書き・縦書きの状態を初期化していなかったバグと、テキスト処理における文字カウンタを初期化していなかったバグを修正しました。

春男さんからのバグ報告「マウスのホイールアップで回想モードに入れません」を元に、テキスト終端のクリック待ちの際に、マウスのホイールアップで回想モードに入れなかったバグを修正しました。ついでに、rmenu が定義されていないときに、右クリックでテキストを消すようにしました。

春男さんからいただいたご要望「ホイールダウンで読み進めたい」を採り入れ、起動時に --enable-wheeldown-advance オプションを指定すると、テキスト終端でのクリック待ちの際に、マウスのホイールダウン操作をクリック操作として扱うようにしました。textgosub でクリック待ちをカスタマイズしているときには効果はありません。最初は、本家とは挙動が違うものの ONScripter の標準仕様にしようと思ったのですが、上記のホイールアップでの回想モードと組み合わせて回想モードと行ったり来たりしているときに、間違って意図せず読み進めてしまうことがあったので、オプション扱いにしました。

画面効果 16, 17 のモザイクで、解像度によってはセグメンテーションフォ ルトを引き起こすバグを修正しました。

起動時に、コンソールに常にバージョン番号を表示するようにしました。

5月4日

zenkakko 命令使用時に、[]でくくられた箇所が gettag で取得されるよう に修正しました。また、pretextgosub に関する挙動の細かいバグを修正しま した。

画面効果の描画ルーチンを若干高速化しました。

今までは puttext の引数を強引にテキスト扱いにしていたのですが、 pretextgosub 内でうまく機能するように通常のコマンドと同様に扱うように 修正しました。

logsp コマンドで、ログ用スプライト画像の横幅を対象ログの全文字数分 確保していたバグを修正しました。

5月2日

テキスト用の制御命令でその行が終了するときに、次のテキスト行の先頭 で pretextgosub が効かないバグを修正しました。

画像解像度変更ルーチンの平滑化の部分を高速化しました。getscreenshot 命令や実行時の解像度変更処理・アーカイブ中の画像解像度を変更するプログ ラムが高速になります。

4月29日

mp3 系で再生された wav フォーマットの音が、stop 命令で消音されない バグを修正しました。

し〜くるさんからいただいたパッチを取り込み、 USE_GL_TEXTURE_RECTANGLE をコンパイル時に定義することで、2の冪乗以外 の幅を持つテクスチャを直接読み込めるようにしました。これによって、実装 系によってはだめかもしれませんが、必要なテクスチャメモリの量が期待値半 分になるはずです。

し〜くるさんにご提案いただき、フルスクリーンの状態で起動可能にする -- fullscreen オプションを追加しました。

exbtn の制御文字列で、コマンドが小文字の場合に対応しました。

itoa2, logsp2, cellcheckexbtn, spreload, sp_rgb_gradation, zenkakko, loadgosub を実装しました。

btndef 時に、exbtn_d の内容が消されていなかったバグを修正しました。

textclear 後に、行の解釈がおかしくなるバグを修正しました。

3月8日

前からおかしいと思っていたのですが、特に小さな文字で輪郭にエッジの ようなものが出て汚く描画されていたバグを修正しました。文字描画の際に、 アルファ値を二重に掛けていたせいでした。

文字スプライトを使用時に、文字列が途中で改行されないように修正しま した。

コマンドラインに出力されるメッセージを一部抑制しました。

tattsuu さんにご指摘いただき、以前 Linux Zaurus への機種依存部分を 吸収するために組み込んだマウスの座標変換回りのコードを削除しました。 20030622 以降で機種依存部分の処理を SDL ライブラリ側でやってもらうこと にしたため、現在では使われていませんでした。このあたりの経緯については、 20030622 の開発日誌を参照してください。

にゃののんさんからのバグ報告に基づき、音楽再生のチャンネル管理のバ グを修正しました。今回調べて分かったのは、stop 命令は、play 系, wave 系, mp3 系には効果がありますが、loopbgm, dwave 系には効果がありません。 また、dwave 系は、save, load, reset によって消音されることはありません。 このあたりを曖昧に処理していたため、鳴るべき音が消されてしまうことがあ りました。ちなみに、いつも りなざうテクノウを拝見しております。

2月18日

スクリプト中で配列変数の要素をさらに配列変数で指定している時に、参 照された配列の値を格納する構造体が、親子の配列変数から同時に上書きされ てしまい、正しい値の取得ができなかったバグを修正しました。

ファイルが存在しない場合の表示色指定が反映されないバグ、デフォルト の文字色が間違っていたバグ、右クリックメニューの表示色が間違っていたバ グを修正しました。

今までこの機能に気付かなかったのが自分でも不思議ですが、SDL_ttf の TTF_SetFontStyle 関数を使うと太字(bold)表示に対応できます。しかし、今 まで使用していたフォントが、太字になったらかなり見ずらくなってしまいま した。この太字の機能は、フォントファイルの情報とは無関係に SDL_ttf が 独自に実現しているせいか、特に大きなサイズのフォントでつぶれが目立ちま す。そのため、実装はしましたが無効にしてあります。試したい方は、 ONScripterLabel::drawGlyph 関数中の #if 0 を外してください。また、なぜ か太字にすると、embedded bitmap を含む TrueType font において、 embedded bitmap を使用するサイズで文字を描画しようとすると落ちるように なりました。太字にしなければ落ちませんが、標準の SDL_ttf では embedded bitmap を正しく描画できないので、そもそもユーザの方がこういったフォン トを使用しているとは考えられず実害はないと思います。

2月14日

tokuhirom さんからのパッチを参考に、CD-ROM ドライブが複数ある場合に、 使用するドライブを指定するオプション --cdnumber を追加しました。

tokuhirom さんにご指摘いただき、古賀さんが公開されている Debian Woody 用のパッケージへの apt line を更新しました。

tokuhirom さんからのパッチを取り入れ、キーボードショートカットにお いて、カーソルの上下移動を k と j キーでできるようにしました。vi のキー バインドです。

tattsuu さんからのバグ報告を元に、ogg vorbis ファイルを wave フォー マットに復号するときに、ヘッダの「サンプルあたりのビット数」の指定が間 違っていたバグを修正しました。

1月31日

ld, tal, humanorder コマンドにおいて、位置指定が不正な場合でも落ち ない仕様に対応しました。

1月30日

tmkkさんからの patch を取り入れ、MacOS X 上の SDL-1.2.8 環境におい て、SDL_WM_SetCaption関数に仕様変更があったため、引数に UTF-8 の文字列 を渡すように修正しました。この環境に該当する方は、コンパイル時にリンカ オプション -liconv を指定してください。

tmkkさんからの patch を取り入れ、libmad を使用して MP3 を再生する際 に、時々ノイズが乗る問題を修正しました。MadFixedToUshort関数にクリップ の処理を追加しました。

FORCE_1BYTE_CHAR 設定時に、文の最後の単語に対してワードラップが機能 していなかったバグを修正しました。

効果描画時に、クリッピング処理を間違えていたため、画像の一部が効果 中描画されないことがあるバグを修正しました。

1月27日

ScriptParser::loadStr( FILE *fp, char **str ) でファイルから文字列 を読み込む際に、途中で EOF になると無限ループに陥るバグを修正しました。 対象ファイルが古いプログラムからの生成物で情報が足りない場合に起こるよ うですが、続行するようにしました。また、この関数内で毎回一時バッファを 確保していたので、バッファをクラス変数に持たせるようにしました。

1月26日

画像ファイルのタグ指定の読み込み部分を強化しました。アニメ指定が不 正な場合に、その部分は読み飛ばしてファイル自体は読み込むようにしました。

sin, cos, tan コマンドを実装しました。

セーブファイル読み込み後に、非テキストモードで再開するように修正し ました。読み込み後に、間違ってテキストウィンドウが表示されることがある バグへの対処です。

chendoさんの patch を参考に、FORCE_1BYTE_CHAR 設定時に、ワードラッ プされるようにしました。つまり、単語の途中で行をまたぐ場合に、その単語 の前で改行されるようになります。

1月15日

コンパイル時にENABLE_1BYTE_CHARが指定され、かつスクリプト中で`(back quote)を使用し 1byte 文字列であることを指定している場合に、文字数が奇 数個であると直後に半角スペースが挿入されることがある状態を修正しました。 英語ノベルを作ろうという人以外には影響の無い修正のはずですが、文字描画 処理をかなり変更したので、副作用でエンバグしている可能性もあります。な にか問題がありましたらご報告ください。

1月11日

chendo さんからのバグ報告に基づき、セーブデータ読み込み時に wave ファ イルが鳴りっぱなしになる場合があるバグを修正。

for ループ中の break から次の next までに現われるコマンドや変数を読 み飛ばす際に、変数を評価していたバグを修正。例えば mov ?1[%1], 1 とい うコマンドを読み飛ばす際に、?1[%1]という変数を評価すると、本来このコマ ンドが実行されないことを想定して %1 に配列の範囲外の値が入っていた場合 にエラーになります。オープニングロゴが重い某ゲームで落ちることがありま した。

Hayashi さんより、Tru64 UNIX 5.1B(pk4), Compaq C++ V6.5-042 におけ るコンパイルエラーと対処法を報告していただき、修正しました。