8月10日
バグ報告「split命令で落ちます」を元に、いただいたパッチを参考にして、split 命令で切り出された文字列が256バイト以上の場合にセグメンテーションフォルトを引き起こして落ちるバグを修正しました。
バグ報告「ループ位置を指定したBGMが指定位置でループしていない」を元に、整数演算のみを使用した Tremor を OGG Vorbis の再生に使用している Android 版において、BGM 命令で曲先頭からの時間を指定しても反映されないバグを修正しました。具体的には、Android 版 SDK で使用している SDL_mixer-1.2.11 の (1) ov_time_seek 関数の第2引数の型を間違えていたバグと、(2) 第2引数にミリ秒を指定するところを秒を指定していたバグを修正しました。前者の方は SDL_mixer-1.2.12 以降では修正されているようですが、後者の方は修正されていないようです。SDK に以下のパッチ(sdl_mixer.diff)を当ててました。iOS 版は SDL-1.2.12 を使用していますが、後者のバグは同様に修正する必要があります。
--- sdl_mixer.org/dynamic_ogg.h 2010-06-02 04:07:23.000000000 +0900
+++ sdl_mixer/dynamic_ogg.h 2015-08-08 22:41:09.000000000 +0900
@@ -36,10 +36,11 @@
ogg_int64_t (*ov_pcm_total)(OggVorbis_File *vf,int i);
#ifdef OGG_USE_TREMOR
long (*ov_read)(OggVorbis_File *vf,char *buffer,int length, int *bitstream);
+ int (*ov_time_seek)(OggVorbis_File *vf,ogg_int64_t pos);
#else
long (*ov_read)(OggVorbis_File *vf,char *buffer,int length, int bigendianp,int word,int sgned,int *bitstream);
-#endif
int (*ov_time_seek)(OggVorbis_File *vf,double pos);
+#endif
} vorbis_loader;
extern vorbis_loader vorbis;
--- sdl_mixer.org/music_ogg.c 2010-06-02 04:07:23.000000000 +0900
+++ sdl_mixer/music_ogg.c 2015-08-08 22:48:50.000000000 +0900
@@ -229,7 +229,11 @@
/* Jump (seek) to a given position (time is in seconds) */
void OGG_jump_to_time(OGG_music *music, double time)
{
+#ifdef OGG_USE_TREMOR
+ vorbis.ov_time_seek( &music->vf, time*1000.0 );
+#else
vorbis.ov_time_seek( &music->vf, time );
+#endif
}
#endif /* OGG_MUSIC */
バグ報告「gettag命令で落ちます」を元に、いただいたパッチを参考にして、gettag 命令で落ちる場合があるバグを修正しました。
バグ報告「「ダンジョン少女」の異常終了」を元に、Shift-JIS の漢字コードで、2バイト目が \ になっている場合に、LUA が正しくスクリプトを解釈できないバグを修正しました。
getmclick 命令を実装しました。また、NSLua の NSGetClick, NSGetMouse, NSDoEvents, NSSleep, NSSpCell, NSSp2GetInfo, NSSp2GetPos, NSSp2Load, NSSp2Move 命令を実装しました。
最新の SDK, NDK を使って Linux 上でコンパイルしてみました。android-ndk-r10e-linux-x86 の場合、内部で as, ld, ar に正しくソフトリンクが張られていないため、後にコンパイル途中でエラーになります。そのため、展開後に以下のように修正する必要があります。
> cd <path_to_ndk>/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/libexec/gcc/arm-linux-androideabi/4.8
> ln -s ../../../../bin/arm-linux-androideabi-as as
> ln -s ../../../../bin/arm-linux-androideabi-ld ld
> ln -s ../../../../bin/arm-linux-androideabi-ar ar
Android 版で、ダウンロードした zip ファイルの展開処理を高速化しました。以下のように、ZipInputStream の外側に BufferedInputStream を挿入したところ、10倍程度高速化されました。
private int extractZipEntry(String out_path, ZipInputStream zip, int total_size, String mes)
{
...
BufferedInputStream bis = new BufferedInputStream(zip);
...
int len = bis.read(buf);
1月2日
バグ報告「checkkey・bgmfadeout・bsp・delayの反応と設定のグローバル化」を元に、bgmfadeout 命令でフェードアウトの設定を行い、bgmstop 命令で音楽がフェードアウト中に、saveon 命令などによってセーブデータが作成されてそこからゲームを再開したときに、音楽が再生されてしまうバグを修正しました。
同じバグ報告を元に、マウスカーソルが画面外に出たときに、それを検知してボタンの表示状態を変更するようにしました。
同じバグ報告を元に、スキップ実行時もしくは CTRL キーを押した状態で、delay 命令で待ちが発生していたバグを修正しました。
同じバグ報告を元に、envdata に保存された kidokumode 命令による設定が、次回起動時に kidokuskip 命令で上書きされて反映されないバグを修正しました。setwindow2, textspeed 命令の設定につきましては、設定が保存されることはないように思いますが、勘違いをしているようでしたらご指摘下さい。
1月1日
Google Play で公開したアプリの総インストール数が4ヶ月間で 5000 を超えました。
バグ報告「bdownが機能しない」を元に、bdown 命令が正しく機能しないバグを修正しました。
バグ報告「未定義のlspにおけるbspの処理」を元に、bsp 命令で未設定のスプライト番号を指定した場合に無視するように修正しました。
バグ報告「未定義のlspにおけるspbtnの処理」を元に、spbtn 命令で未設定のスプライト番号を指定した場合に無視するように修正しました。
バグ報告「CTRLキーによる早送りでフリーズ」を元に、ループ処理内に bexec 命令もしくは textbtnwait 命令があり、かつキー入力などのイベントを見に行く命令が無い場合に、CTRL キーを押すと無限ループに陥るバグを修正しました。
バグ報告「画像の読み込みで落ちます」を元に、画像読み込み処理において、画像ファイルを正しく読み込めなかった場合の例外処理が不十分だったバグを修正しました。
バグ報告「動画再生後、CTRLを押してないのに早送りされる」を元に、いただいたパッチを適用し、CTRL キーを押した状態で SMPEG を使用した動画再生を開始し、動画再生中に CTRL キーを離した場合に、動画再生終了後もスキップ状態が続くバグを修正しました。
バグ報告「ScriptHandler.cpp にバッファオーバーフローがあります。」を元に、いただいたパッチを適用し、文字列のバッファがオーバーフローを引き起こすバグを修正しました。
バグ報告「スプライト番号0番のボタンが動作しません」を元に、bexec 命令でボタン番号に0を使用できないバグを修正しました。btnwait 命令ではボタン番号に0を使用できないことになっており、それと内部処理を共通化していたことが原因でした。
バグ報告「gameコマンドで落ちます」を元に、ラベルごとの先頭アドレスを管理する変数で、先頭の空白を含まないアドレスを格納するように修正しました。
バグ報告「checkkey・bgmfadeout・bsp・delayの反応と設定のグローバル化」を元に、bsp 命令の3番目の引数(マウスを押したときの処理)に対応しました。