ONScripter 開発日誌

Since: Feb. 6, 2002
Last updated: Aug. 17, 2014

2014年

8月17日

Google Play でアプリ ONScripter を公開しました。ONScripter on Android のページで公開しているアプリと同じものです。ちなみに、Google Play で公開するにあたって 512x512 のアイコンを用意する必要がありましたが、さいわい ONScripter アイコン ONS を作成したときの元ファイルが残っており、元ファイルでは文字はベクトルフォント、背景は 800x600 の画像だったため、高解像度のアイコンを簡単に作成することができました。このアイコンは元々 Linux Zaurus の ipk パッケージ用に作ったもので、元ファイルの更新日は2005年11月になっていました。まさか9年後に役に立つ日が来るとは思いませんでした。

エミュレータ上の Android L (Preview) の ART 環境で動画再生時に落ちてしまうバグを修正しました。

8月16日

Android 4.4 以降では、アプリからSD カードに原則書き込むことが出来なくなったようです。そのため、当サイトで配布するアプリを Android 4.4 以降で使う場合には、ゲームデータはSDカードではなく内部メモリに配置するようにしてください。なお、自作のゲームアプリの作成方法に変更はありません。

バグ報告「Android ART環境で一切動作しない」を元に、エミュレータ上の Android L (Preview) の ART 環境でアプリが動作するように ONScripter と SDK を修正しました。もちろん Dalvik 環境でも動作します。修正点は以下の3点です。

  • AndroidManifest.xml において、インストール場所を preferExternal から auto に変更しました。
          android:installLocation="auto"
    
  • JNI から Java の関数を呼び出すときに、CallIntMethod の2番目の引数(jobject)に、現在のネイティブ関数に渡された jobject を設定するようにしました。今までは、それよりも以前に呼ばれた別のネイティブ関数に渡された jobject を渡していました。
  • sprintf の第2引数に Shift-JIS でエンコードされた2バイト文字列を渡すと、2バイト文字が関数内部で削除?されてしまうため、ANDROID が定義されている場合には、ONScripter_rmenu.cpp の中で sprintf を自前の関数に置き換えるようにしました。

IdleTimeIdleTime 管理人様からのバグ報告を元に、画面解像度やグローバル変数の範囲などの情報がスクリプトの先頭行以外の場所に設定されている場合でも反映されるようにしました。また、グラフィックファイルのセルアニメーション指定で、":c/2,0,3;"の代わりに":c/2;"と指定できるようにしました。

Vitaly さんからのバグ報告を元に、btnwait やテキスト終端での待ちで trap 命令が誤って機能していたバグを修正しました。

6月29日

IdleTime 管理人様から PNaCl ONScripter についてご連絡をいただきました。PNaCl とは、仮想機械によってCPU非依存でソフトウェアを動作させる技術で、これを使うと ONScripter を Google Chrome 上で実行できます。実行方法については PNaCl ONScripter のバイナリパッケージに付属している README.txt を参照してください。

ゲームの構成ファイルのファイル名に日本語(2byte 文字)が含まれている場合には、Cygwin terminal を起動し、環境変数 LANG の設定が以下のようになっていることを確認してください。

$ env|grep LANG
LANG=ja_JP.UTF-8

LANG=ja_JP.SJIS となっている場合は、Options→Text→Character setを UTF-8 に設定して Cygwin terminal を再起動し、その後で tar ファイルを作成してください。当方が Windows 8.1 上の Google Chrome で試した範囲では、どのゲームも問題なく動作しています。NOeSIS02 も完全に動作しています。セーブ・ロード、MP3・Ogg Vorbis の再生なども問題なく、実行速度もネイティブと遜色のない速度でした。不具合?といえばマウスのホイールが(ブラウザに入力を取られて)効かないことくらいです。非常に素晴らしい取り組みだと思います。Chrome ウェブストアでアプリの公開もできるようです。

5月5日

バグ報告「iOS 7.1に関する改善要望」を元に、iOS 版において Xcode 5.1.1 + iOS 7.1.1 の環境でビルドできるように SDK を更新しました。

5月4日

バグ報告「「エクシア」アプリ終了」を元に、スクリプトにおいて、**label のように * が連続して現れる場合にラベル情報を正しく読み込むことができないバグを修正しました。

バグ報告「checkkey・bgmfadeout・bsp・delayの反応と設定のグローバル化」を元に、checkkey 命令が実装はされていたものの命令として解釈されていなかったバグを修正しました。

gcc を 4.7.2 にしたところ、コンパイル時に主に型変換関連の警告が大量に出るようになったため修正しました。

4月6日

バグ報告「Android4.1状況下でのムービー再生について」を元に、Android 版で外部の動画プレーヤーに渡す URL 名が正しくなかったバグを修正しました。アプリを作成される方は Android 版の SDK を更新してください。ただし、当方が所持している Android 端末のバージョンは 4.0.3 なので、4.1 で解決されているか確認していません。4.0.3 では修正前も修正後も問題なく動画を再生できます。

バグ報告「savegameで1000以上指定すると落ちる(android)、また、savegameで負の値を入れるとセーブされない」を元に、番号が符合付き32bitの範囲(-2,147,483,648~2,147,483,647)であればその番号で保存されるようにしました。本家では、-2,147,483,647 以下の指定は -2,147,483,647 に、2,147,483,647 以上の指定は 2,147,483,647 に解釈されるようですが、ONScripter では範囲を超えると巡回します。すなわち、ONScripter で 2,147,483,648 を指定すると、-2,147,483,648 に解釈されます。また、Android 版で 1000 以上の番号を指定すると落ちるバグも修正しました。

バグ報告「bgmのループ位置指定」を元に、bgm, mp3loop 命令において、"(曲先頭からの時間)ファイル名"形式に対応しました。ループ時に戻る点を指定できます。

バグ報告「skip 0 でフリーズする」を元に、skip 命令で 0 が指定されたときに無限ループに陥るバグを修正しました。

Mike さんからいただいたパッチを適用し、menu_click_def, menu_click_page 命令を実装しました。

Mike さんからいただいたパッチを適用し、textgosub で呼ばれた先に return *label 形式の命令があったときに、label に戻らないバグを修正しました。