12月18日
Android 版以外の環境で MPEG1 動画の再生が終わったときに落ちることがあるバグを修正しました。
iOS 版 SDK を更新して、動画を再生すると画面の向きが強制的に LandscapeLeft に変更されてしまい、それまでの画面の向きが LandscaleRight だった場合に画面が180度回転してしまうバグを修正しました。
Android 版以外の環境で MPEG1 動画の再生が終わったときに落ちることがあるバグを修正しました。
iOS 版 SDK を更新して、動画を再生すると画面の向きが強制的に LandscapeLeft に変更されてしまい、それまでの画面の向きが LandscaleRight だった場合に画面が180度回転してしまうバグを修正しました。
レイヤーを使った MPEG1 動画の再生中における画面効果を改善しました。
Windows でビルドする手順を ONScripter on Windows にまとめました。また、Visual Studio 2017 用のソリューションファイルをソースパッケージに含めました。AVI 動画の再生はサポートしていませんが、それ以外の ONScripter の機能(Lua を含む)はすべてサポートしています。
Android 版アプリのチェックが不十分で、古い Android OS では関数が見つからずに落ちることがありました。Android 版 SDK を修正して、Android 4.3, 4.4, 8.0 で動作することを確認しました。
レイヤーを使った MPEG1 動画の再生中に画面効果を実行すると、画面効果中は動画の内容が画面に反映されないバグを一部修正しました。ONScripter では、画面効果中の画像は静的な src 画像と dst 画像から生成していましたが、動画のフレームが更新されたときには dst 画像を作成し直すようにしました。これで以前よりはよくなりましたが、画面効果中は動画が遅れたように表示されます。src 画像も作成し直すと画面効果中も動画がスムーズに再生されるようになるはずですが、そのためには大幅に手を入れなければいけないため、今回はここまでにします。
Android 版アプリの targetSdkVersion が 24 以上の場合、file:// で始まる URI を Intent で共有しようとすると android.os.FileUriExposedException が発生します。ONScripter では、動画を再生する際に、Intent により外部の動画プレーヤーを利用して動画を再生していますが、Android 7 以降では再生できなくなっていました。FileProvider を使う方法では任意の場所にある動画ファイルを再生できないため、以下のようにして、Intent を呼ぶときだけ URI のチェックを無効にすることが回避しました。Android 版 SDK を更新しました。
Intent i = new Intent(Intent.ACTION_VIEW); i.setDataAndType(uri, "video/*"); StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); StrictMode.VmPolicy policy = StrictMode.getVmPolicy(); StrictMode.setVmPolicy(builder.build()); startActivityForResult(i, -1); StrictMode.setVmPolicy(policy);
Android版で、デフォルトで 32bit (armeabi-v7a) と 64bit (arm64-v8a) 兼用のアプリを生成するようにしました。
Android版で、これまではメニューのバージョンを設定の下に配置していましたが、メニューの下に移動しました。
11月1日以降は targetSdkVersion が 26 未満の Android アプリをリリースできなくなるため、アプリの targetSdkVersion を 26 に変更しました。今回から、Android Studio でのアプリの作成方法のみをサポートします。Windows でのアプリの作成方法やLinux でのアプリの作成方法は、最新の環境ではアプリを作成できないため、今後はサポートしません。Android 版 SDK を更新しました。
これまでは、戻り値を持つ C の関数で return; としてあっても特に問題はなかったのですが、最新の NDK ではこのようにすると実行時に落ちてしまうため、return に必ず値を設定するようにしました。
zip で圧縮したゲームーデータをダウンロードする際に、org.apache.http を使わずに java.net.HttpURLConnection を使うように変更しました。
jpeg の ARM 用 asm 命令を使うとビルドエラーを起こすようになったので、asm 命令を使わないようにしました。
smpeg の huffmantable.cpp がビルドエラーを起こすようになったので、340_gcc6.diff のパッチを当てました。
ソフトウェアボタンを左右に配置したときに、メニューボタンが現れるようにしました。
exec_dll 命令による fileutil.dll/mkdir を利用したディレクトリの作成に対応しました。Android アプリ側でも対応するために Android 版 SDK も更新しました。
Android 版 SDK を更新し、アプリに M+ フォントで配布されている mplus-2m-medium.ttf を内蔵するようにしました。default.ttf がない場合は内蔵フォントを使用します。また、32bit Intel プロセッサ(x86)用のアプリをビルドして実行できるようにしました。
Android Studio 用 SDK の配布を開始しました。また、Android Studio でのアプリの作成方法を追加しました。今回 Google Play でリリースしたアプリ(32bit ARM プロセッサ用(armeabi-v7a))は Android Studio で作成しました。64bit Intel プロセッサ(x86_64)用と 64bit ARM プロセッサ(arm64-v8a)用のアプリをビルドして実行できることも確認しています。
Windows でのアプリの作成方法を修正し、Android Studio を使わずに Windows で Android 版アプリを作成する場合に、Cygwin を使わずに、Windows に付属のコマンドプロンプトからビルドできるようにしました。
pretextgosub 命令を使用しているときに、スクリプトの行の先頭以外でも pretextgosub 命令で指定したラベルに飛ばされるバグを修正しました。
android-ndk-r15b 以降では machine/cpu-features.h がなくなっているため、Android 版 SDKの jni/jpeg/jidctfst.S から該当する行をコメントアウトしました。