ONScripter 開発日誌

Since: Feb. 6, 2002
Last updated: Dec. 18, 2018

2018年

12月18日

Android 版以外の環境で MPEG1 動画の再生が終わったときに落ちることがあるバグを修正しました。

iOS 版 SDK を更新して、動画を再生すると画面の向きが強制的に LandscapeLeft に変更されてしまい、それまでの画面の向きが LandscaleRight だった場合に画面が180度回転してしまうバグを修正しました。

12月2日

レイヤーを使った MPEG1 動画の再生中における画面効果を改善しました。

Windows でビルドする手順を ONScripter on Windows にまとめました。また、Visual Studio 2017 用のソリューションファイルをソースパッケージに含めました。AVI 動画の再生はサポートしていませんが、それ以外の ONScripter の機能(Lua を含む)はすべてサポートしています。

11月28日

Android 版アプリのチェックが不十分で、古い Android OS では関数が見つからずに落ちることがありました。Android 版 SDK を修正して、Android 4.3, 4.4, 8.0 で動作することを確認しました。

レイヤーを使った MPEG1 動画の再生中に画面効果を実行すると、画面効果中は動画の内容が画面に反映されないバグを一部修正しました。ONScripter では、画面効果中の画像は静的な src 画像と dst 画像から生成していましたが、動画のフレームが更新されたときには dst 画像を作成し直すようにしました。これで以前よりはよくなりましたが、画面効果中は動画が遅れたように表示されます。src 画像も作成し直すと画面効果中も動画がスムーズに再生されるようになるはずですが、そのためには大幅に手を入れなければいけないため、今回はここまでにします。

11月23日

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版で、これまではメニューのバージョンを設定の下に配置していましたが、メニューの下に移動しました。

10月30日

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 のパッチを当てました。

ソフトウェアボタンを左右に配置したときに、メニューボタンが現れるようにしました。

4月9日

exec_dll 命令による fileutil.dll/mkdir を利用したディレクトリの作成に対応しました。Android アプリ側でも対応するために Android 版 SDK も更新しました。

4月7日

Android 版 SDK を更新し、アプリに M+ フォントで配布されている mplus-2m-medium.ttf を内蔵するようにしました。default.ttf がない場合は内蔵フォントを使用します。また、32bit Intel プロセッサ(x86)用のアプリをビルドして実行できるようにしました。

4月5日

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 に付属のコマンドプロンプトからビルドできるようにしました。

3月21日

pretextgosub 命令を使用しているときに、スクリプトの行の先頭以外でも pretextgosub 命令で指定したラベルに飛ばされるバグを修正しました。

android-ndk-r15b 以降では machine/cpu-features.h がなくなっているため、Android 版 SDKの jni/jpeg/jidctfst.S から該当する行をコメントアウトしました。