Site hosted by Angelfire.com: Build your free website today!

ONScripter 開発日誌

Since: Feb. 6, 2002
Last updated: Sep. 22, 2002

過去の開発日誌

2002年

9月22日

αβεさんの patch を取り入れ、bgm, bgmonce を実装。

αβεさんの patch を参考に、selnum を実行した後に、次のコマンドに 正常に進めなかったバグをとる。

selectgosub や selnum の直後に、: で次のコマンドを続けられないバグを とる。

αβεさんの patch を取り入れ、savegame コマンドで、セーブ位置が 1 token 前(savegame の引数)にずれていたバグを直す。

なんと、MAD に周波数を半分にしてデコードするオプションがあった。MP3 は 44.1KHz で用意し、デバイスを 22.05 KHz で開いてこのオプションを使え ば、音切れが解消される可能性大。というわけで、Zaurus 環境では 22.05KHz をデフォルトとします。パッケージ更新。なお、bitrate は 64Kbps 等に落と しても構いません。

9月19日

SL-A300 で MP3 が途切れるという症状が二人以上で出ているようなので、 どうやら arm-linux-gcc で libmad を作る際に、StrongARM (SL-5500) には 最適化されているが、XScale (SL-A300)には最適化されていないコードを吐い ているようです。効果があるのかどうか分かりませんが、libmad を作る際に より一層の最適化をするようにしてコンパイルしました。ザウルスのパッケー ジのみ更新。

Googleで onscripter を検索した ときのヒット数が100を越えました。

9月15日

αβεさんの patch を取り入れ、SDL_DEBUG=1 でテストしているときにエ ラーメッセージを出さないように、SDL_BlitSurface の前に、 ButtonLink::no_selected_surface の NULL チェックをいれる。

αβεさんの patch を参考に、"csp-1" や "gosub*label" のようなスク リプトを解釈できるように修正。'-' は、私の理解している限りでは token の先頭にしか出てこないため、このように処理します。

1byte 文字表示に関するバグを修正。

NSA 用のアーカイブコンバータで、-e オプションで bmp 及び wav ファイ ルを nbz 圧縮するように改良。これを行うと、アーカイブの圧縮の種類を示 すフラグに ONScripter 独自の値を設定します。この独自拡張については、本 家が将来アーカイブの仕様を拡張したときにバッティングする可能性がありま すが、その時はそれを回避するようにコンバータを修正し、再コンバートする ことで解決できます。その場合でも、save file 等には一切影響がありません ですので、Zaurus で使用される方はこのオプションを付けてコンバートする ことをお勧めします。wav を bzip2 で圧縮するので、wav を多用するゲーム ではかなりアーカイバが小さくなります。デメリットとしては、bzip2 の復号 を行うため若干遅くなりますが、気がつかない程度です。

アーカイブコンバータで、変換する必要のないファイルを無意味に展開し ていたのを抑制。

アーカイブコンバータで、解像度をバイリニア変換で変更するように修正。 800x600 を縮めるときにましになります。

9月14日

SMPEG では演奏できるが MAD では演奏できない MP3 ファイルがあったが、 MP3 の frame header の資料と MAD のソースを付き合わせ原因を究明。 Emphasis が 2(resereved) に設定されていると、MAD は無効な frame として 弾いてしまうのが原因でした。0(none) として処理を続行するように変更する ことで直りました。更新はザウルスのパッケージのみ。これで、BGM が MP3、 音声 が WAV なゲームでも、音切れなく楽しめます(SL-5500 で確認)。

9月12日

tateyoko を実装。

getversion の戻値を 200 に変更。

clean up。

Intel(R) C++ Compiler 6.0 on Linux でコンパイルし、正常動作すること を確認。

SMPEG では演奏できるが MAD では演奏できない MP3 ファイルがある。ど うしたものか。

9月11日

アーカイブコンバート関連で色々不具合があったので修正。

それに関連し、SPB 圧縮の画像データを解凍するときに、PPM ではなく本 来の BMP で戻すようにする。

9月10日

Zaurus の 512M の CF に納まらないゲームをするために、archive 中の jpeg と bmp の大きさを半分にするコンバータを書く。数種類のゲームで確認。 コンバータの使い方は、アー カイブ圧縮についてを参照してください。

PDA を設定してコンパイルし、コンバート済アーカイブを使用する場合の ために、--disable-rescale オプションを追加。

しかし、アーカイブの中で音声ファイルの比重の高いゲームは厳しい……。

9月9日

kni さんから SL-A300 での動作報告をいただきました。以前のパッケージ では、画面表示が90度回転するという不具合があり、それに対処する修正を 行いこちらは正常に動いているようです。昔 SL-5500 を買う直前に導入し、 SL-5500 では要らないことが分かって速攻でリリース版から消してしまった 「表示・入力系90度回転機能」がほぼそのまま復活。

9月6日

effectcut を実装。

αβεさんの patch を取り入れ、getcursor, getenter, useescspc を実 装。

getenter と useescspc コマンドを無効にする --force-button-shortcut オプションを追加。ONScripter では、マウスクリックを return, space, esc キーに割り付けているため、getenter と useescspc がスクリプトで設定して ある場合、全ての操作をキーボードのみから行えなくなる可能性があります。 私のように普段極力マウスを使いたくない(キーボードとマウスを行ったり来 たりしたくない)人は、このオプションを使ってください。ただし、そんなこ とはまずないと思いますが、スクリプト側で前記のキーをゲーム進行上必須の 特殊用途に割り付けている場合は、このオプションを外してください。

αβεさんの patch を参考に、ラベルにジャンプした直後に文字列変数の テキスト表示があると解釈に失敗するバグを修正。

setwindow で、フォントサイズの変更が反映されないことがあるバグをと る。

exbtn で、スプライトが無効の時に残りの引数を処理していなかったバグ をとる。

ONScripter が途中で落ちたときにも save??.dat と global.sav その他と の同期がとれるように、save??.dat を保存するときに毎回 global.sav その 他を保存するようにする。

clean up。

8月24日

mayfifth さんからのバグ報告を元に、テキスト選択画面でセーブをすると 落ちるバグをとる。最近該当するゲームをしていなかったので、全然気づきま せんでした。

yamagu さんからのバグ報告を元に、スクリプト中でコマンドもしくはその 引数が後続のテキストとスペース無しで連続していた場合に、後続のテキスト が前者の一部として解釈されるバグをとる。

lsp, lsph のサイズ指定付き文字列が正常に解釈されていないバグをとる。

gettext を実装。

gettab, getfunction を実装。

btntime2 をとりあえず btntime と同じ挙動をとるように実装。要修正。

20020824a

αβεさんの patch を取り入れ、TTF_RenderGlyph_Blended() の返り値が NULL の場合に落ちるバグに対処。

パーサの修正。「bg black,1mov $1,"あいうえお"」「bg black,1あいうえ お」に対処。

8月21日

【LINUX】ザウルス国内はいつ?【SL5000】によると、SL-A300 でも SL-5500 と同様 swap を使えるらしい。

昨日ザウルスで swap 16MB にして某ゲームを遊んでいたら、1時間位して 途中で凍りました。ゲームによるだろうけど、32MB くらい取っておいたほう が安心かも。

うんすいさんに、Solaris9 on SPARC での動作報告をいただきました。

8月19日

Zaurus (SL-5500) で、swap memory を作ることでメモリ不足が解消される ことを発見。これで、Qtopia 上で固まることがなくなりました。というわけ で、価値のなくなった FB console 用のパッケージは公開を中止しました。し かし、SL-A300に 関するFAQのページには、
Q. SDカードなど外部メモリをSWAP領域として利用することは可能でしょうか?
A. SWAPはサポートしていません。
とあるから、SL-A300 では駄目なのかも。

Zaurus で便利なように、ショートカットキーで、よく使う s と o キーを 左矢印と右矢印に割り付ける。

フォントの取り扱いを若干変更。

8月18日

SMPEG では、一部の MP3 ファイルを演奏できず、その場合演奏開始時にハ ングする。48KHz 系が駄目?MAD なら問題ないので、SMPEG はやめて MAD を 標準採用するべきか。しかし、(あまりやる気無いけど)将来的には SMPEG を使って MPEG の動画再生も実装したいところだし、どうしたものか。

FB console on SL-5500 で動かすと、Qtopia 環境で動かすのに比べて、必 要メモリ量が 10MB も少なくて済む。

8月17日

Zaurus (SL-5500) 用の FB コンソールで動作するバイナリパッケージを公 開。こちらは問題なく動作しますが、Zaurus 起動時にコンソールに降りる必 要があるため、おそらくキーボードのない SL-A300 では動かすことができな いと思います。

8月16日

SL-5500 で Qtopia 上から実行しようと試行錯誤しているが、途中までは 実行できるものの、メモリが少ない旨の警告ウィンドウが出ようとすると ONScripter がハングしてしまう。使用メモリ量が大きくなるとダメ。-qws オ プションを付けて Qtopia と並列に実行すれば、Qtopia のメモリ不足の警告 ウィンドウが出ても無視して続行できるので、メモリは足りているが警告ウィ ンドウとデッドロック状態になってハングしているようだ。しかしちょっと対 策を思いつかない。ハングしたらリモートログインして kill するしかないの で現状では実用にならない。ちなみに、Qtopia を立ち上げない状態で console から立ち上げれば問題なく動作します。

とりあえず、ONScripter の必要メモリを少なくする努力を始める。

無駄な select_surface を廃止。代わりに、ButtonLink にもたせる。

SL-5500 用で、無意味に smpeg にリンクしていたのでやめ、無駄を省いて SDL_mixer を作り直す。

Zaurus (SL-5500, SL-A300) の Qtopia 環境で動作するバイナリパッケー ジを公開。ただし、上記の通り現状ではメモリ不足ですぐハングするので、試 験的なリリースだと思ってください。SDL on Zaurus (SL-5500) のページからダウンロードできます。ただし、SL-A300 では未検証なので、試してみた方は動作報告をお願いします。

8月2日

vortex さんからのバグ報告を元に、puttext の引数を再 parse すると表 示がおかしくなることがあるバグや、puttext が改行扱いにならないバグを修 正。しかし、puttext まわりはまだまだおかしい。取り扱い方を根本的に変え ないとだめかも。

clean up。

7月28日

blackbrd さんからのバグ報告を元に、save file に gosub の入れ子構造を 正しく格納していなかったバグをとる。

kidokuskip, kidokumode を実装。

7月27日

20020723 の大幅改良の際に、予想以上にエンバグしていました。 experimental と注意書を書いておくべきでした。ですが、そろそろ安定して きたと思います。

vortex さんからのバグ報告を元に、selgosub が正しく機能していないバ グを修正。

readToken を強化。行末で " が浮いている(閉じられていない)行 儀の悪い状態に対応。

mp3 "" に対応。

select の2行目以降で、文字変数をテキスト文として解釈するバグを直す。

空行をテキスト行として扱わないようにする。

7月26日

αβεさんの patch を取り入れ、autoclick 時にカーソルが消えないバグ を修正。

autoclick が0より大きい時に、クリック待ちの時のクリックを無効にす る。

7月25日

αβεさんの patch を参考に、sentence_font 再初期化時の修正ミスを直 す。

Vusual C++ 付属のコンパイラで通るように若干修正。

puttext で特殊文字(例えば _,/,@,\ など)を処理できるようにする。

textgosub 時に、同じ行で最初に変数を設定しその後テキストとして使用 すると、設定がテキストに正確に反映されないバグをとる。20020723 の段階 で取れていました。(例:mov $1,"だめ"@ mov $1,"よい" は$1)

readToken がまだまだ練れていないため、使用頻度の少ない構文パターン では色々挙動が異なります。

20020725a

puttext で上記特殊文字を使用している際にデータを保存した場合に、正 しく保存と復元が行えるようにする。

20020725b

save file 読み込み後の挙動が正常でない部分を調整。

7月24日

マスク画像読み込みに関するバグ修正。

単語切り出しのバグ修正。

7月23日

αβεさんの patch を取り入れ、立ち絵が消えるタイミングで透過度を 255 に戻す処理を追加。

αβεさんの patch を取り入れ、nsadir を実装。

αβεさんの patch を取り入れ、ofscpy を実装。

αβεさんの patch を取り入れ、文字列スプライト定義時に、文字サイズ を反映するように修正。

αβεさんの patch を参考に、reset 時に sentence_font を初期化。

αβεさんの patch を取り入れ、bar, prnum 命令の表示位置に関する修 正。

コアを大幅に書き直す。いままでと比較して、ゲームをする上での見掛け の違いはありません。ただ、未実装部分をオリジナルに添った形で実装しやす いように、スクリプト読み込みと単語切り出し(parse)部分の処理を変え、さ らに独立させています。大きな違いは、スクリプト中で 2byte ある改行コー ドは 1byte として読みこむ・行単位ではなく単語単位で読み込み及び解釈を 行う・改行を単語として解釈する・無駄な再読み込を減らす・冗長部分を削る、 といった地味な内容ですが、これで懸案の textgosub 時の同じ行の変数設定 が表示に反映されない問題, kidokuskip, puttext の実装等は解決できそうで す。

kidokuskip 実装中。

20020723a

getreg の再実装ミスを修正。他にも色々エンバグしているかも。

単語切り出しのバグをとる。

ちなみに本 beta 版以降で、以前の古い savefile を読み込んだときに、 運が悪いと若干位置ずれすることがあります。これは、保存した場所が表示文 の行でかつその中で変数を使用している場合に起こります。この部分の互換性 を厳密に保つのは大変なので、もうしわけないのですがそうなったら運が悪かっ た思ってあきらめてください。ゲームの進行に影響することはまずないと思い ます。本 beta 版以降で保存したものについては大丈夫です。

7月21日

αβεさんの patch を取り入れ、tal 命令を再実装。20020712 では検証 を怠ったため、いただいた patch を改悪して取り込んでしまいました。失礼 しました。

スクリプトの読み込み&解釈部分を大幅に書き直し中。進捗8割くらい。 ようやく、某ゲームは一通り遊べそう。ただし、save と load はまだ。とい うか、save file の内容の変更に伴い互換性を持たせる部分が手付かず。

7月20日

スクリプトの読み込み&解釈部分を大幅に書き直し中。進捗5割くらい。 ようやく、某ゲームのタイトル画面まではいくようになった。

7月12日

島本さんからのバグ報告を元に、nsa アーカイブ中に nbz 圧縮されたファ イルがあったときに復号されないバグをとる。島本さん、いろいろと情報提供 ありがとうございました。

αβεさんの patch を参考に、tal を実装。仕様書(msp の項)によると、 tal は内部状態を変更するだけで、その場では効果は現れないようです。ただ し未検証。

αβεさんの patch を取り入れ、setwindow2 を実装。ただし未検証。

αβεさんの patch を参考に、savefileexit を実装。ただし未検証。

最近はあまり検証せずブィルターと化しているので、おかしなところはど んどん突っ込んでください。

7月7日

αβεさんの patch を取り入れ、(not)if の条件式を文字列比較に対応。

αβεさんの patch を取り入れ、reset 命令時のスプライト消去処理を追 加。

αβεさんの patch を参考に、文字スプライト指定形式の新形式 ":s/<幅 >,<高さ>,<間隔>;#<色1>...<文字列>" に対応。

αβεさんの patch を取り入れ、dwave, dwaveloop 命令時に無条件で DEFAULT_WAVE_CHANNEL(ch=1) の音を 停止していたバグを修正。

αβεさんの patch を取り入れ、filelog 命令が sar, nsa 命令よりも前 にあると前回の filelog を維持できなかったバグを修正。

7月6日

αβεさんの patch を取り入れ、nega を実装。

αβεさんの patch を取り入れ、savefile のバージョン番号の計算法が 誤っていたバグをとる。おおぼけ。

色が大文字の A から F を使って指定されていた場合に正しく解釈されな いバグをとる。

文字描画のクリッピングに関するバグをとる。文字が表示されないことが ありました。

exbtn で cell の番号を指定したときに表示されないことがあるバグをと る。

repaint、もしくは mouse がスプライトボタンの上を移動したときに、テ キストモードでなくともテキストウィンドウを描画していたバグをとる。ひと かたや某ゲームの音楽鑑賞画面で挙動がおかしかったのが直っています。

7月2日

αβεさんの patch を取り入れ、clickvoice, selectvoice, menuselectvoice を実装。αβεさんも私もオリジナルの実装を確認していな いため、本来のものと動作が異なるかもしれません。menuselectvoice の 5 番目の音(できない操作をしたときの警告)は、未だ用法が不明なので保留となっ ています。

clean up