ONScripter 開発日誌

Since: Feb. 6, 2002
Last updated: Dec. 23, 2013

2013年

12月23日

佐野さんからいただいたパッチを適用し、-DPDA_AUTOSIZE もしくは -DPDA_WIDTH を指定してコンパイルしたときにダイアログの文字が正しく描画されないバグを修正しました。また、-DBPP16 を指定してコンパイルしたときに、ダイアログの文字が正しく描画されないバグを修正しました。

バグ報告「savedir命令について」を元に、savedir を指定して envdata に反映されていても、起動直後はデフォルトの場所からファイルを読み込んでいたバグを修正しました。なお、savedir の情報は envdata に記録されますが、一度 envdata に記録されると後でスクリプトの savedir の情報を変更しても envdata は修正されません。さらに、スクリプトの savedir の情報よりも envdata の情報の方が優先されます。従って、開発中などにスクリプトの savedir を変更した場合は、envdata を削除してから実行してください。

11月3日セーブデータを手動で移動する必要がある場合があります

バグ報告「iOS 7に関する改善要望」を元に、iOS 版で、MAGIC_FILE を更新したときに内蔵ゲームデータのファイルが正しく上書き更新されるように修正しました。ユーザが作成したセーブデータなどは消されずに残ります。

また、Info.plist の設定で、View controller-based status bar appearance を NO にし、Status bar is initially hidden を YES にしました。さらに、iOS 7 から、iPad では UIActionSheet の外側をタップするとキャンセルボタンがなくてもキャンセルされるようになってしまったので、データダウンロード時に常にプログレスバーが表示されるように修正しました。

バグ報告「iOS 7に関する改善要望」を元に、iOS 版でセーブデータを Library/Caches/ONS/ の下ではなく、Documents/ONS/ の下に保存するように変更しました。これで、Caches フォルダが消去されてもセーブデータは残るはずです。

savedir 命令を実装しました。この命令を使用したゲームを実行していた場合には、セーブデータの保存場所が変わるので、事前にスクリプトの savedir 命令の引数で指定された場所に手動でセーブデータ(save*.dat, gloval.sav, kidoku.dat, NScrflog.dat, NScrllog.dat)を移動してください。

9月29日

バグ報告「LUA 5.2でのAPI変更対応」を元に、いただいたパッチを適用し、Lua 5.2 以降でコンパイルできない問題を修正しました。

バグ報告「apkが作成されない」を元に、最新の SDK (r22.2.1), NDK (r9) に基づいた apk の作成法について補足しました。Android SDK Manager で、Android SDK Platform-tools と Android SDK Build-tools がインストールされていることを確認してください。

8月12日

NOeSIS -嘘を吐いた記憶の物語-に続いてキミはキメラについても小説化の話が進んでいるようで楽しみです。

バグ報告「各種コマンド/形式の対応について」を元に、savescreenshot, savescreenshot2 命令において任意のファイル名を指定できるようにしました。本家では、これらの命令ではファイル名(拡張子)をどのように指定しても BMP 形式で画像が保存されます。ONScripter では、これまでは混乱をまねかないようにファイル名の拡張子が bmp のときのみ BMP 形式で画像を保存していましたが、今回からは本家にならって指定されたファイル名で(例え *.jpg であっても) BMP 形式で保存するようにしました。

iOS 版で動画再生に対応しました。ただし、MPMoviePlayerViewController を使って再生しているため、再生できるフォーマットは H.264, MPEG4 に限られます。スクリプトからは movie 命令で動画ファイルを指定してください。

4月11日

バグ報告「スキップされない」を元に、スキップ状態のときに bexec 命令が"SKIP"を返さないバグを修正しました。

3月17日

回想用テキストバッファの文字数が標準文字数より多い場合に、セーブファイルの読み込みに失敗するバグを修正しました。20130223 で発生したバグでした。

3月16日

文字列スプライトに対して spstr 命令が機能しないバグを修正しました。

2月23日

game 命令において、デフォルトカーソルを設定した後にカーソルをリセットしてしまい、デフォルトカーソルが読み込まれなかったバグを修正しました。

ルビを多用した場合などに、表示された文字が回想用のテキストバッファに納まらなくなり、その分が回想で表示されないことがあるバグを修正しました。

2月16日

バグ報告「NSLuaの動作不良」を元に、luacall reset を実装しました。

globalon 命令が実行されている場合でも definereset 命令を実行するとグローバル変数が初期化されてしまうバグを修正しました。globalon 命令が実行されている場合は definereset 命令の先頭でグローバル変数を gloval.sav に書き出し、また gloval.sav が存在すれば definereset 命令の最後で読み込むようにしました。

Lua を有効にしている場合に、definereset 命令の最後で system.lua を読み込むようにしました。

スプライトの透過度に 0 ~ 255 以外の値が指定された場合に、0xff との論理積を透過度として使用するようにしました。

2月3日

バグ報告「iOS版のビルドに失敗する」を元に、iOS 版の SDK において dev_iPhoneSimulator.sh のコンパイラのファイル名が間違っていたバグを修正しました。また、SDK を更新して最新の Xcode 4.6 + iOS 6.1 に対応しました。

2月2日

checkkey 命令を実装しました。

NSLua の NL_dofile, NSGetSkip, NSGetWindowSize, NSTimer, NSGetKey, NSUpdate, NSSpClear, NSSpGetInfo, NSSpGetPos, NSSpLoad, NSSpMove, NSSpVisible 命令を実装しました。

ただし、NSTimer は、本来は Windows が起動してからの経過時間を返しますが、ONScripter では SDL_GetTicks() の戻値、すなわち SDL が初期化されたとき(=プログラム実行開始時)からの経過時間を返します。

Android NDKを r8d に更新したところ、libjpeg の jidctfst.S のコンパイルに失敗するようになりました。調べたところ、jidctfst.S に元々文法の間違いがあったようで、以下のように修正したところ無事にコンパイルできるようになりました。この修正を加えて Android 版の SDK を更新しました。

--- onscripter_android_old/jni/jpeg/jidctfst.S	2010-06-02 04:07:23.000000000 +0900
+++ onscripter_android/jni/jpeg/jidctfst.S	2013-02-02 20:56:02.000000000 +0900
@@ -63,7 +63,7 @@
 
 
 jpeg_idct_ifast:
-    PLD     (r2, #0)
+    PLD     [r2, #0]
     stmdb   sp!, {r4,r5, r6,r7, r8,r9, r10,r11, r12,lr}
     ldr     r4, [sp, #4*10]
     sub     sp, #local_SIZE
@@ -256,7 +256,7 @@
 
 HLoopStart:
     // reset pointers
-    PLD     (sp, #off_WORKSPACE)
+    PLD     [sp, #off_WORKSPACE]
     add     ip, sp, #off_WORKSPACE
     ldr     r10, local_RANGE_TABLE
 
@@ -268,7 +268,7 @@
     str      r0, local_OUTPUT_BUF
     add      fp, r2, r1
 
-    PLD      (ip, #32)
+    PLD      [ip, #32]
     ldmia    ip!, {r0-r7}
 
     cmp      r1, #0

1月20日

タイマが2つ以上同時に作動し、アニメーションの周期が速くなることがあるバグを修正しました。20130112 で発生したバグでした。

1月19日

xddd1 さんからのバグ報告を元に、definereset 命令でグローバル変数が古い内容で上書きされてしまうバグと、reset 命令でテキストが消去されないバグを修正しました。

1月12日

バグ報告「NSLuaの動作」を元に、本体の処理と Lua の処理が干渉してしまいご指摘の通り正しく処理されない場合があったため、イベントループ周りの処理を修正しました。おそらく解決しているのではないかと思います。

禁則処理によって改行するときに、表示だけではなくテキストバッファでも改行していたバグを修正しました。

yesnobox, okcancelbox 命令において、ボタンの上にカーソルが来るとボタン画像が変化するようにしました。ボタンとして実装したので、ショートカットキーでカーソルを移動できます。

Android 版の SDK に lua-5.1.5 を追加し、Lua を使えるようにしました。当サイトで配布している Android 版のアプリは Lua が有効になっています。ただし、本家の全ての機能が使えるわけではありません。不具合や要望などがありましたら BTS までご報告下さい。なお、lua-5.1.5/src/llex.c:181-183 行目を以下のように修正する必要がありました。

  /*struct lconv *cv = localeconv();*/
  char old = ls->decpoint;
  ls->decpoint = '.'; /*(cv ? cv->decimal_point[0] : '.');*/