« 買っちゃいました(^^; | トップページ | さらに高速化&最新版へ »

2009年10月 4日 (日)

ちょっとだけ高速化

えっと、例によってひっそりと公開(^^;。あくまでもNetWalker専用です。

「onscripter_20090822-5-1-0ubuntu1_armel.deb」をダウンロード

※エフェクトの方向が反対になってる、というバグがあったので公開停止

変更点は

・αブレンド処理を高速化。各種エフェクトがかなりなめらかになりました。
・最適化オプションをつけてビルドしてみました。

ということです。で、注意事項に追加。

・「mpegplay」命令が有効ということは、libmadを使っていないということです。というわけで、MP3の処理は重くなっていますので、ogg形式を利用する方がお得かも。
・スキップ状態やオートモードのまま「mpegplay」命令が実行されると、かなりの高確率でONSが落ちます。ソースに手を入れてもいいんですが、互換性のこともあるので、「mpegplay」命令の前には「skipoff」を記述することをお勧めします。
・「自動起動するアプリ」の「アップデート通知」は、必要がなければオフにしておいた方がいいです。スキップしてるときに急に重くなったりしますので。

注意事項終わり。以下、雑談。

NetWalkerでONSを動かすと、なかなか凄いんですね、これが。いや、PDA用に圧縮かけたりしなくても、パソコン用のアーカイブがそのまま使えます。ひぐらしのデータをそのままコピー&起動してみて、サークルロゴがあっさりと表示されてしまったのには正直驚きました。

でも、やっぱり重い。サークルロゴもさすがに画像と音声の同期は取れません、画像の方が遅れます。それに、画面サイズがでかい分だけ、各種エフェクトも少々つらくなっています。というわけで、高速化に取り組んでみようと思ったわけです。

んでもって、ONSとSDLのソースを見てみたんです。そしたら、ONSの大部分の画面処理はSDLに依存しているので、SDLの方に手を入れなきゃいけないことが分かりましたが、そっちは最低でもインラインアセンブラが必要そうなので、現時点では断念。何せ、ARMのアセンブリ言語は全くいじったことがないので・・・。

で、ONSが内部で処理しているαブレンド処理がC++でも十分に最適化の余地があったので、定番ですが、除算の排除やループ回数&演算回数の減少、といった手法で最適化してみました。実際の効果はというと、前バージョンでは瞬間表示になってしまっていた、200ミリ秒でのマスク付きのフェードアウト&フェードインがきちんと表示されるようになりました。見た目ではっきり分かるくらいには高速化されたので、個人的には満足(^^)。

【おまけ】

意味があるかどうかは正直不明ですが、SMPEGのソースを見たら、やっぱり最適化オプションで使われていないものがあったので、あれこれつけてビルドしてみました。もしかしたら、公式のものより少々軽くなっているかもしれません。興味がある人のためにおいておきます。これも当然ですが、あくまでもNetWalker専用です。

「libsmpeg0_0.4.5+cvs20030824-2.2_armel.deb」をダウンロード

|

« 買っちゃいました(^^; | トップページ | さらに高速化&最新版へ »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/139339/46390241

この記事へのトラックバック一覧です: ちょっとだけ高速化:

« 買っちゃいました(^^; | トップページ | さらに高速化&最新版へ »