12月15日
しばらく ONScripter のページにアクセスしていなかったら、いつの間にか https://onscripter.osdn.jp/ に接続できなくなっていたので、ホストを https://ogapee.github.io/www/ に変更しました。
しばらく ONScripter のページにアクセスしていなかったら、いつの間にか https://onscripter.osdn.jp/ に接続できなくなっていたので、ホストを https://ogapee.github.io/www/ に変更しました。
HTML を HTML4 から HTML Living Standard (HTML5) に変更しました。
ONScripter::alphaBlend と AnimationInfo::setupImageAlpha のマスク画像へのアクセスに関するバグを修正しました。
ONScripter on Windows の関連ライブラリのソースを更新し、PlatformToolset を v142 (Visual Studio 2019) に変更しました。
みかんはっさくさんからのバグ報告に基づき、effect 命令の 15, 18 番でマスク画像を指定したときに、画像の右半分をアルファチャンネルとして読み込んでしまうバグを修正しました。このバグは以前からありましたが、今回アプリが落ちることによって表面化しました。
ソースファイルや SDK を https://github.com/ogapee で公開することにしました。また、ソースファイルを .clang-format を使用して整形することにしました。
Android 版 SDK を更新し、compileSdk と targetSdk を 34 にしました。
HTML の文字コードを EUC-JP から UTF-8 に変更しました。
iOS 版 SDK を更新し、Apple シリコンを搭載した Mac の Ventura v13 でビルドできるようにしました。libmad-0.15.1b 付属の config.sub と config.guess が古く Apple シリコンに対応していなかったため、最新の config.sub と config.guess に差し替えました。USE_SELECTOR を使用したゲームの選択は、XCode からアプリを実行してインストールした場合でないと活用できないようです。TestFlight によって内部テストでは、ゲームデータをインターネットからダウンロードすることはできました。
Android 版 SDK を更新し、compileSdk と targetSdk を 33 にしました。Android 13 (API 33)以降では、ActivityCompat.requestPermissions で WRITE_EXTERNAL_STORAGE を要求すると常に false を返すようになったようなので、Android 13 以降ではこの処理を飛ばすようにしました。NDK は 24.0.8215888、Android Gradle Plugin は 7.2.2、Gradle は 7.4 を使用しています。
Android 版アプリで起動時にゲームを選択して実行する場合、ファイルを開くときにディレクトリの有無をキャッシュし、ディレクトリが存在しない場合には ONScripter.java の findFile 関数を呼ばないことによってファイルの読み込みを高速化しました。findFile で使用している ContentResolver.query は、ファイル名のフィルタを指定する第3,4引数が無視されるようです。そのため、これまではアーカイブ内にあるファイルを読み込む際に、アーカイブ外にはファイルが存在しないことを確認するために、ディレクトリ内の全ファイルを一つずつ照合していたため、時間がかかっていました。
しばらく前から、Android 版アプリで一部のファイルの読み込みに失敗する問題がありましたが、ONScripter.java の findFile 関数で大文字と小文字を区別してファイル名を照合しており、スクリプト内のファイル名とファイルシステムのファイル名に大文字・小文字の違いがある場合にファイルが存在しないと判定されていたことが原因でした。Android 版 SDK を更新し、String.equalsIgnoreCase を使って判定するようにして解決しました。リリース前にいくつかのゲームで動作確認をするのですが、それらのゲームではこの問題が発生しなかったため気づきませんでした。