αβεさんの patch を取り入れ、 arc でアーカイブファイルが見つからなくても処理を継続するように修正しました。
αβεさんの patch を取り入れ、reset で一時的にテキストが残ってしまうことがある不具合を修正しました。
αβεさんの patch を参考に、menusetwindow で背景色が省略されている場合(デフォルト値: #999999)の対応を追加しました。
αβεさんの patch を取り入れ、Ctrl キーでのスキップ機能を追加しました。
αβεさんの patch を取り入れ、Shift+'Q'で強制的に end を実行するように拡張しました。これは前から入れたかったのですが、簡単に押せるキーだと間違って押してしまう可能性があり、どうしようかと思っていたところでした。
そ〜かむさんの patch を参考に、MacOS X での MIDI 演奏に対応しました。現在の SDL on MacOSX では MIDI が演奏できないため、別途そ〜かむさんに作成していただいた ONScripter ランチャのMIDI再生補助機能に対応するための修正を行いました。これは SDL での不具合が解消されるまでの暫定的な処置になります。この ONScripter ランチャを含んだバイナリについては、ONScripter for MacOS X(かつらさん)からダウンロードできるようになる予定です。
そ〜かむさんの patch に関連して、私が誤った修正をしてしまった箇所を直しました。
効果番号15番が正常に描画されなくなっていたバグを修正しました。
alpha blending を書き直し高速化しました。
文字のクリッピングに関するバグを修正しました。
PDA および blt 用の画像の解像度変更ルーチンを、3x3 平滑化フィルタ+ bi-linear 補間に変更しました。さらに、コンバータとルーチンを共通化しました。これでかなり綺麗に縮むようになりました。PDA でアーカイブを圧縮している人は、今回のコンバータで圧縮し直すことをお勧めします。ただし、補間をしている関係上、アルファ付き画像の縁が線として見えたり、特定色で抜いているカーソル画像の特定色境界が見えたりしますが、これはトレードオフなので我慢してください。デスクトップマシンでも、-DPDA 付きでコンパイルすることで、効果を試すことができます。
s1100089さんからのバグ報告をもとに、goto の引数が文字列変数($で始まる)の場合、正しく扱えていなかったバグを修正しました。parser を変更したときにエンバグしたようです。
s1100089さんからのバグ報告をもとに、行のそれ以前に2byte文字(テキスト)が無い状態で@が現れたときに改行していたバグを取りました。
だいぶ遅くなりましたが、beroさんに報告していただいたバグを修正しました。また、ONScripter for Dreamcastへのリンクを追加しました。
beroさんにDreamcastでの動作報告をいただきました。同時に報告していただいたバグについては、近日中に修正したものをリリースいたします。
かつをのえぼしさんに、ONScripter のWindows バイナリを公開していただきました。本来 Windows 上では製品付属のNScripterを使用すればよいのですが、ONScripter とNScripterとではセーブファイルに互換性が無いため、例えば外では PDA(SLシリーズのザウルス)、家では Windows でやりたいという方にはお勧めです。
ADPCM の wave ファイルを bgm, mp3 で演奏できるように修正しました。
soundpressplgin, spi に暫定対応しました。指定された拡張子を NBZ 復号するようにします。そもそも、spi や soundpressplgin によるデコード処理はアーカイブ側でやるべきではないのですが、ONScripter ではどのみち DLL を使用できないため、NBZ を仮定して便宜上アーカイブ側で復号するようにしています。
命令後の@や\の取り扱いや、#(色指定)のみの行の取り扱いの不具合を修正しました。
試しにとったhttp://galileo.spaceports.com/~ogapee/onscripter.htmlが、なぜかαβεさんに補足されています。しかし、ここはさしあたり更新しません。現行のスペースが使えなくなった場合にバックアップとして使用します。
ページ公開から一周年です。
かつらさんに ONScripter for MacOS X を公開していただきました。Mac OS X ユーザの方でONScripterのコンパイルに苦労されている方は是非お試し下さい。
かつらさんからのバグ報告を元に、20030128以降でセーブファイルが正常に作成されない不具合を修正しました。たいへん申し訳ありませんが、20030128 および 20030202 で作成したセーブファイルは破棄して下さい。
遠藤さんからのバグ報告を元に、puttext 後の改行に関する不具合を修正しました。
αβεさんの patch を取り入れ、getreg の不具合を修正しました。
mask 指定の不具合を修正しました。
アーカイブ圧縮時に、左上もしくは右上のピクセルを透過色に指定している画像の場合に、補間の影響によって透過色が正しく反映されない場合があったため、補間方法を従来の bi-linear に戻しました。
nsaconv, sarconv の画像解像度変更ルーチンにおいて、メモリを正しく確保していないバグを修正しました。
A.Bさんからの報告を元に、(条件ファイル名)"TRUE文字列""FALSE文字列"の解釈におけるバグを修正しました。
αβεさんの patch を参考に、lsp で mask や string 指定を解釈する際のバグを取りました。プログラムが終了してしまう重大なバグなので、20030126 を使っている人は必ず更新してください。
αβεさんの patch を取り入れ、ファイル直接読み込み(DirectReader)時に ファイルが見付からなければ、ファイル名を大小文字区別せずに検索して読み込むよう修正しました。(Win32 以外) (注: ディレクトリ名を区別しないようにはなってません。 その辺にも対応するとしたら、 もっとまともな実装方法にする必要があります)
αβεさんの patch を参考に、ファイル直接読み込み(DirectReader)時にファイルが無圧縮の場合のファイルサイズを正しく扱えていなかったバグを修正しました。
αβεさんの patch を参考に、nsa で arc.nsa が見付からない場合に続行するように修正しました。
αβεさんの patch を取り入れ、reset 時に font の色を reset しないように修正しました。
αβεさんの patch を参考に、readToken で、現状態がテキストではない場合、'\'や'@'を区切りとして解釈するように変更しました。goto 等で指定ラベルの後に '\' 等の ゴミがあった場合に対する修正です。
数字の式( mov %0,1+(2*%4+(5-3 mod 2)) など)に対応しました。parser にかなり大掛かりな変更を加えました。エンバグしている可能性があります。
以下は内部関数の説明です。
nsaconv を圧縮後 640x480 モードに対応しました。-e オプションを組み合わせることにより、640x480→640x480 もしくは 800x600→640x480 の変換でよく縮みます。
-e 付き 640x480 にしてギリギリ512MBのCFに収まるゲームをやってみました。swap を 64MB とって、なんとか正常に動きました。ただし、無視できますが、メモリー不足というウィンドウが頻繁に出ます。free で見ると、used が瞬間最大風速 Mem: 29604, Swap: 57684, Total 87288 までいきます。このゲームは特に同時使用画像量が多いと思うのですが、一般にVGA だとデータ量も半端ではないので、使われていない画像データを一時的に解放する機構を実装しないときついかもしれません。画面は非常に綺麗です。
640x480→640x480 の場合は、onscripter-cf, onscripter-sdのアイコンを使ってください。800x600→640x480の場合は、対応するアイコンを作ってないので、コンソールから以下のように実行してください。そのうちに launcher を作ります。
onscripter --root /mnt/cf/nscr --force-button-shortcut --disable-rescale
free.prohosting.comは一回限りだという支払いをしないとアカウントを抹消される可能性が濃厚なので、tripod.co.jpに移転しました。
藤田さんが ONScripter の Free BSD Ports を公開してくださったので、リンクを張りました。
sarconv, nsaconv の解像度変更を、2x2近傍バイリニア補間から4x4近傍重み付きバイリニア補間に変更しました。少しはきれいになったでしょうか?
Zaurus で入力を受け付けなくなる現象ですが、Frame Buffer Driver のロックに関するSDL on Qtopiaの不具合が原因でした。SL-C700以外ではこの不具合はでないようなので、VGAとQVGAの切り替えに関する部分と干渉していたのだと思います。
以下は探求の軌跡です。
ONScripterLabel::eventLoop{ SDL_WaitEvent SDL_PumpEvents qApp->processEvents qt_fbdpy->getEvent (Frame Buffer Driverからイベントを受け取る) qwsProcessEvent (widgetへイベント発行) widget->###event(widgetのイベント処理) SDL_Private####(SDL のイベントをキューへ) select (時間制限つきイベント待ち) widget->event(widgetへイベント発行) widget->###event(widgetのイベント処理) SDL_Private####(SDL のイベントをキューへ) SDL_PeepEvents(SDL イベントキューからイベントを取り出す) ONScripter でのSDLイベントの処理 }
ONScripterLabel::flush() SDL_UpdateRect() QT_NormalUpdate() SDL_QWin::repaintRect(const QRect& rect)
文字列スプライトの描画で一文字ずつ flush していたのを、文字列全体で一回 flush するように変更しました。
いつのまにか SL-5500 で Home が効くようになっていてびっくりしました。