BREW(Binary Runtime Environment for Wireless) 3 IMEDIAとかIWEBは握りっぱなしじゃまずいだろ
@以下のインスタンスは、サスペンド時に必ず解放しなければならない。 ・IFILE,IPOSDET,IKDDIPPP,IWEB,ISOCKET,INETMGR,IDNS,IMEDIA,ISOUND (通信系、サウンド系インタフェース全般) ・IKDDIPPP ・Extension A以下のインスタンスは、開放してはならない。 ・IFileCp,ITextCtl B以下の処理をしている場合は、必ずその処理を終了(停止)しなければならない。 ・サウンド(メロディ、ビープなど) ・アニメーション ・バイブレート ・バックライト ・ISHELL_SetTimer()したコールバック関数(キャンセルはISHELL_CancelTimer()) ・ファイル処理中[読み込み/書込み時](オープンされているファイルはクローズする) Cレジュームイベント中にしなければならない処理 ・レジューム要求”EVT_APP_RESUME”に対し、返却値として”必ず”TRUE”を返して下さい。 ”FALSE”を返却すると”EVT_APP_STOP”が送出されBREW アプリは終了してしまい、 BREW アプリは再起動されてしまします。
サービスガイドの「サスペンドとレジュームにおける留意点」を読んで判断せよ 少なくとも粘って言い張るとか言い訳を用意するとかそういうレベルの話じゃない
んだんだ。 最低限やらなきゃ行けない処理だけ施せばとりあえず検証は通る。 あとはレジューム時に上手くエラー処理しながら復元するぐらいかと。
int/long/int16/int32のsizeofを見て勘違いに気付く。Cで short または int といえば 'short int' のことで 2byte long といえば 'long int' のことで 4byte だと思ってたのでBREWでは int16(はshortだから) = int = 2byte int32(はlongだから) = 4byte であろうと… いやー int = long = 4byte だったとは。 4byteでありたい整数は律儀に全部 int32 と書いていたけどこれからは 普通に int でいいな。'int32'って書くの何か気持ち悪かったんだ実は。 …スンマセン 白状すると16bitCPU時代に身に付いたint=2byteの先入観がありました orz
あ"ぅーCPのチェックが通らないぃぃぃぃ 何でうちでチェックしたMAXヒープと向こうがチェックしたMAXヒープ違うんだ_| ̄|〇 しかも某チェックツールで確保したメモリも勝手に解放しちゃうし・・・ 某3Dくのいちゲーでも勝手に解放してたからBREW(というか某チェックツール?)の仕様なんじゃないかと・・・ しょうがない、もう一個の振る振るツールでチェックするか(;´Д⊂)
某チェックツールってのがK某だったら、奴はメモリ少なくなると落ちるぞ。 そういう時はS某を使うといいらしい。
909 :
デフォルトの名無しさん :05/03/04 18:48:26
ソフィアクレイドルのBREW圧縮ツールみたいなものを作りたいんですが、 それを作るために必要なBREW AEEの仕様みたいな資料は手に入らないでしょうか? ご存知の方いらっしゃいましたら、よろしくお願いします。
>>907 >>908 事前検証手順書、メモリ不足の備考欄。
退避起動でツールKが終了してしまう場合はツールSを使えと。
ツールSの振る舞いはサービスガイドP76に。
検証のメモリチェックはいくつかやればコツ覚えるから。がんばれ。
>>908 さん
>>910 さん
ありがとうございました。
やっぱりそれですよね。
ガイドとかサイトのFAQ読んでたんで知ってはいたんですが・・・
説明したらCPも納得したようなので問題解決です。
初回はすんなり検証通ったのに機種移植の段階でこんなに苦労するとは(;´Д⊂)
担当者がかわ(ごにょごにょ
担当者が可愛いのか。うらやますぃ。
913 :
デフォルトの名無しさん :05/03/05 01:29:08
1.ISHELL_SetTimer()でタイマーコールバックをセットする 2.別の処理Aを行う 3.処理Aの途中で1.でセットしたタイマーが作動する 4.3.で作動したコールバックが終了後、処理Aの途中から再開する タイマーを使えば普通にこういうことができると思ってたんですが、 処理Aの途中ではタイマーが作動しません。 イベントループに入って初めてタイマーが作動するようなんですが こういうものなんでしょうか。 もし1.〜4.のようなことができる方法ご存知でしたらお願いします。
914 :
デフォルトの名無しさん :05/03/05 01:32:16
できたらこまるでしょ
>>915 いやお恥ずかしい。
int32のtypedefがlongじゃなくてintだったら勘違いもなかったと思う。って言い訳だなw
アプリ内で生成したIBitmapオブジェクトをアプリ終了時にファイル保存し、 次回起動時にそのファイルを読み込んでIBitmapオブジェクトを得る、 という処理を考えています。やり方についてアドバイス願います。 読み込み時にISHELL_LoadBitmap()を使おうとする場合、IFILE_Write()の引数とする 「バッファとその長さ」と、保存しようとしているIBitmapの結び付けが思いつきません。 IBitmapを、ISHELL_LoadBitmap()で読み込める形のファイルで出力する場合、 どんなやり方になるでしょうか。 --- ISHELL_LoadBitmap()で読み込めるフォーマットってWindowsのBMP形式ですよね。 ということはIBitmapオブジェクトからWindowsのBMP形式を作り出して、それを保存 するということになりそうですが、手っ取り早くやるにはどうすれば… (実は上手い方法なんてなくて、皆さん自力で変換処理を組んでいるのでしょうか) また、読み込みでISHELL_LoadBitmap()にこだわらないなら、他にどのような やり方が考えられるでしょうか(どのインターフェイスが利用できるでしょうか)。
>>917 IBITMAP_QueryInterface()でIDIBを生成
IDIBからBMPファイルに保存する
って方法を取ってます
ヘッダを自分で生成したりしなくちゃいけないからめんどかったけど。。
>>913 割り込みじゃないからね。
Windowsのタイマーイベントだって基本的には同じでしょ。
それに、BREWは短い周期でフレームワークに処理を戻さないとウォッチドック
タイマに引っかかるからそれほど問題ないと思うし。
#もともとそんな高精度のタイマを期待しちゃいかんし
>>918 LoadBitmapとか使うのが前提じゃなければヘッダはなくてもいいんでない?
まあファイル読込処理は非同期で面倒だからヘッダ作ったほうが楽そうでは歩けど。
>>919 BREWの中だけでつかうのならヘッダはなくてもよかったのかな?
PC上で確認するためにはデータ部分だけじゃだめだったから
ヘッダ付与したりしてました・・・
ビルボードの作り方がわからない・・・_| ̄|○ 正方行列じゃないから逆行列使えないし。 どうすりゃいいんだろ?
>>922 ポイントスプライトってなんかまずいことないのん?重くなるとか。
DirectXとかだと汎用性があんまりないというかビルボードの方がいいとか言われてるっぽいんだが。
>>923 特に重いってことはないなぁ。
・自由変形ができない
・制御点がスプライトパターンの中心に固定
が不便じゃなきゃ、素直にポイントスプライトにしとくのが楽じゃないかなぁ。
頂点座標も計算しなくていいし、視点変換行列もワールドでいいし。
ちょっとお聞きしたいのですが、IMEDIA_Playで音楽を再生するときに かならず一瞬動作が遅くなるのですが、これはプログラムの書き方が 悪いからなのでしょうか? 勉強の一環でBREWでゲームをつくっているのですが、同時再生をする ことはできたのですが、効果音を鳴らすたびに一瞬動作が重くなるの はつらいので・・・
>>925 エミュレータ環境だとウチの所も曲のループの時とか処理落ちするね。
実機だったら、まず機種を言ってくれると助かる。
>>926 あ、やっぱりエミュレータだと処理落ちするみたいですね。
学生なので実機テストを行うことができませんので機種をいうことは
できないのですが、実機だとそのへんも普通に動くのでしょうか?
アイコンサイズって、26x26と16x16(一覧用)なの? アプリ選択時に表示される画像サイズは80x40くらい? いろいろ書かれてあって、どれが正しいのやらわからん。 BREW2.1以上だと、どのくらいですか?
端末仕様書とMIFエディタで表記違うのややこしいよね(´・ω・`) 余談だがアイコンサイズの限界に挑戦すると結構面白いぞ。 37ピクセルでOK、38ピクセルでNGとか訳わからん機種が結構ある。 Infobarは100ピクセルでも表示できる。 そーいうトコロだけ力入れんでも良いんだぞと。
>>929 ,930 みんなBREWの環境で苦労してんだね。
環境はまだまだ発展途上でしょ
>>927 とりあえず、ウチの所の実機では問題出てない。
>>928 BREW2.1になって今のところアイコンサイズは1種類で
対応できてるような気がする。
BREW2.0の時は2種類用意してたけど。
>>434 うーん、俺もデバッグできないな。
書いてあるとおりやってるんだが・・・
自分はVS .NET 2003。
「(パス)\BREW_Emulator.exe'にはデバッグ情報がありません。
続行する場合は[OK]を押してください」
のダイアログは俺も出た。
ソースはウィザードで作ったHelloBREW。
デバッガ起動すると、ブレークポイントがクエスチョンマークになる。
で、そこで止まってくれない。
BREWのバージョンはBREW SDK v2.1.1 Jaでつ。
アプレットディレクトリの変更を忘れてた・・・ あとmifを置くパスもサンプルと違った。解決。 チラシの裏日記でした(・∀・)
アドバイスありがとうございました。 ISHELL_LoadBitmap()は使わず、独自フォーマットのファイル読み書きで対処しました。 PCとのやり取りは不要なのでBMヘッダはなくても問題ありません。 基本的にはIBitmapから生成したIDIBをシリアライズして出力です。
>>933 そうですか、やっぱり実機テストができないとだめですね。
就職した先で必要となったらまたBREWを勉強しようと思います。
ありがとうございました。
939 :
デフォルトの名無しさん :05/03/10 15:19:28
>>933 A5502Kだと実機でも問題でましたよ;;
>>939 メモリ1M端末は相手にしn(ry
嘘です、ごめんなさい。
そういえばガイド読むとBREWフォルダ3M以上ならアプリサイズ600kまでオケー
3M以下なら300kだと思ったんだがタ○ムクラ○シスとか○言朱とかA5503SA(2M端末)で
300k超えてるんだけど・・・ええの?
ウチも最近アプリサイズが厳しいんだけど、300kの壁越えられるなら超えたい
>>940 大人の事情。本音と建前。
手っ取り早く300KBの壁を越えるための手段としてはgzip圧縮(IUnzipAStream)か。
リード&展開でローディング時間が増大、辞書のために瞬間的に40KBほどメモリ食うのが難点だけど。
.barファイルからだとgzip圧縮済みデータと展開後データで2重にメモリ使ってしまうのも嫌なところ。
逆にいえば.barからではなくファイルから直接読み込めば解決するけど、KDDIとしてはアプリ中で使う
データはできるだけ.barに置いて欲しいらしい。しかし絶対.barに収めなきゃいけないってわけでもないの
で交渉次第。
既にgzipまで組み込んでるならスマソ。
>>941 IUnzipAStream使ってみればわかるけど、展開は速いよ。
なんつーか、300kに抑える→300kなりのボリュームでつくる。 ってのが携帯ゲー製作のお手軽さ・楽しさじゃないかな? 少なくとも、うちみたいな弱小CPには、この制限はありがたいよ。
いいえ
>>941 さん
gzipですか。
たまに使いますが基本的に画像は絞りに絞ったPNG、数値データやテキスト系のデータはバイナリなのでほとんど圧縮されないので効果はイマイチなんですよね。
ファイルヘッダーの分だけ軽くなったりするけど劇的には減らないし・・・
>>943 さん
ゲームの種類によるんですよね。
パズルなんか300kもあれば十分なんですけどウチのジャンル的に
SRPGとかシミュレーション、ADVとかでリソースがデカイので苦戦中なんですよ。
PNGなんて使ったら、展開が遅くてかなわん。 BMP+gzipが一番バランスがいいと思った。微妙にサイズは増えるが。
947 :
デフォルトの名無しさん :05/03/11 17:35:34
>PNGなんて使ったら、展開が遅くてかなわん。 どんなアプリ作ってんの? ゲームでは問題ないけど。
>>948 起動に10秒待つのを問題があると考えるかどうか、だな。
>>949 なにそれ・・・
起動時にゆうに数十枚の画像開いて閉じてやってるが、
1秒もかかる機種見た事無いんだが。
pngの展開が遅いのも、gzipの展開が早いのも認めるが、
10倍以上も差がつくとは言えないと思う。
それ以前にやり方に問題があるに5000ガバス
>>950 いや、もちろん自分が作るものは、1秒かからず起動するように作るよ。
でも、作り方がまずくて10秒かかってるアプリを見ることもあるわけで。
ん〜? 俺はBMPでもPNGでも変わらないんだけど・・・ PNGの容量でもでかいのか?
>>951 その10秒の内訳が、PNG の展開処理であるのは確定なのか?
ソースを見れる立場ならば指摘してあげないのか?
このスレ的にはbciって使わないもの?
PNGもgzipも同じアルゴリズムなわけだが。
質問があるんだけどISHELL_BrowseURLを使ってアプリからwebブラウザに飛ばすのはどれが正しいの? urlto・ezurlto・ez2urltoがあるのは分かったのだが、どれを使えば分からない それとブラウザが起動したらSUSPENDが呼ばれるらしいんだが、呼ばれてないみたいだし… 実機で試せる環境じゃないからエミュで動かしてるんだけど、エミュだと詳しく分からないから教えてほしい…
>>951 フルスクリーンサイズのPNGをARM7端末で展開しても1秒間に10枚くらいはいけるけどね。
これで10秒って言うと100枚以上デコードさせてるってことかね?
ヒープが足りなくなる悪寒。
それ以前に10秒も処理占有したら、電源落ちる機種が大半だと思うが
普通は必要に応じて処理するよな 読み込み中でも同期とるようにするとか せめて"なぅろーでぃんぐ"ぐらいは出してるんだろな
すいません、質問です。 アプリ起動時のInitAppData()で、barからjpegファイルをロードするようにしているのですが、 jpegをロードするときはコールバック関数を使って、コールバック関数が呼ばれたら描画すると なってますよね(SONY端末以外はそんなことしなくても描画できますけど)。 複数jpegを起動時に一気読みしたいのですが、コールバック関数内で次のjpegをISHELL_LoadResImage() とIIMAGE_Notify()をする(を画像分コールバック関数用意して繰り返す)のではだめなのでしょうか。 実機で動かすと、リセット掛かるんですが・・・ よい方法がありましたら、教えてください。
追記です。 InitAppData()以外の場所(ある画面の描画時)に、コールバックで描画するのはでできました。 InitAppdata()内では、1画像だけコールバックで受け取るようにしてもリセットがかかりました。 よろしくお願いします・・・
全く自信ないが。 InitAppData()内でjpeg以外にbarから何か読み込み行ってるのとぶつかってるのかな・・?
いきなりInitAppdata()って言われても分からないぞw 多分スケルトンモデルで自動生成されるやつのことを言ってるのだろうけど。 で、それはCreateInstance()から呼ばれてるだろ。 この関数ってつまりコンストラクタだから、その中ではコールバックが必要な処理や 通信処理などはやらないもんだ。 起動時のタイミングでjpegが必要なら、(InitAppdata()を呼び出してる)CreateInstance() を抜けた後で読み込むようにするのが正解じゃないかな。
963さん> ありがとうございます。 barからの読み込みは、jpegロード以外に文字列を読み込んでいます。 でも、文字列ロード後にjpegをロードするようにしているので、ぶつかるということは ないかと思いますが、あっていますか? 964さん> たしかに!InitAppData()である必要は無いわけで・・・スマソ。 おっしゃるとおり、AEEClsCreateInstance()から呼ばれてます。 アドバイスのとおり、AEEClsCreateInstance()をAEE_SUCCESSで抜けたあとに処理を いれてみます。 場所としては、EVT_APP_STARTが適当ですかね。 ありがとうございました、結果はまたご報告します。
>>961 漏れの勘違いかもしれないが、機種によりぶつかる場合があるらしい。
状況が違うが、ファイルの読み込みとリソースの読み込みでぶつかった事ある。
AEE_SUCCESSに処理全部移して再現しないなら違うかな。
読み込みは非同期だったような…それで同時にアクセスして落ちてるのかな それはネットワーク関係だけだっけ?
終了時にどのメモリを解放するのか分からんorz 今までJavaやってきてメモリなんて気にした事ないからなぁ… MALLOCしたのは使わなくなったらFREE。イメージとかはRelease。 IWebはサスペンドの時にReleaseするとリジュム後に何故か使えなくなるorz ISHELL_CreateInstanceもどうすればいいのか分からんirz 誰かメモリ関係初心者に愛の鞭を…
969 :
デフォルトの名無しさん :05/03/15 01:32:42
プログラミングガイドでも読めば?
>>968 EVT_APP_SUSPENDでIWebをリリースした後、EVT_APP_RESUMEイベントで
ちゃんと、ISHELL_CreateInstance でIWebのインスタンスを作成している?
しかし、ヒープを理解していないのは BREWでは致命的。
そろそろ次スレの予感
>>970 >しかし、ヒープを理解していないのは BREWでは致命的
BREWどころかC系全般で致命的かと。
昔、JAVA上がりの香具師が作ったC++アプリを引き継いだらdeleteまったくして
なくて大変な目にあったよ…
むしろヒープがわからんとかってプログラマとして致命的だろう。 最近はJavaしか出来ないとかってPGが多いのか? っていうか、ソケットのコールバック、 インタフェース解放した後も呼ばれるんですが orz 解放→NULL代入→コールバック呼ばれる→NULLポインタにアクセス→リセット orz これってNULLで一度初期化するより、適当なデバッグ用関数に飛ぶようにしたほうがいいんじゃないだろうか?
コールバックでぬるぽチェックすりゃいいだけじゃね?
>>974 nullpoはチェックしてるけど、インスタンスをMALLOCで確保したりすると
解放した領域を他のとこで使われてnullpoじゃ無くなったりするじゃん?
こーいう場合はどうしようもないでしょ。
確認。 ISOCKET_Cancel 呼んでもダメって事?
>>973 うーん、ちょっとありえないですね。
ちなみに、ISocketのインスタンスを解放した時点で、ISocketに関する Connect、Readable、Writeableの
コールバックは解放されるはずです。(ISOCKET_Cancel()をコールする必要はないです。)
ただし、INetMgrレベルのコールバックはこの時点では解放されないので、INETMGR_OnEvent()の
SO_CLOSING/SO_CLOSED イベントは、旧ISocketポインタと共に通知されます。
(ここで通知されるISocketポインタの指す先は有効とは限らない、と3.1.2のAPIリファレンス
PFNNETMGREVENT のページに書いてあります)
>>977 エミュでは問題なく動いた(解放した後はコールバックが呼ばれない)
W21SAでは呼ばれる。
>>978 うーん、やっぱり「有り得ない」ですね。
どのコールバックが来ていますか?
IIMAGE_SetStream()とか、ISOURCEUTIL_SourceFromSocket()とかでリファレンスカウントが増えてたりしませんか?
>>979 Writeableだけ来るよ。
Refカウント増えてるんだったらエミュの時点で問題が出るはず。
>>980 いや、IImageのパフォーマンスとか実機とエミュで違うので、IImageの解放とISocketの解放の
順番が変わったりしているかと思いまして。
とりあえず、ISOCKET_Cancel( , NULL, NULL) を明示的に呼んで、あとリファレンスカウントが
本当に0になっているかどうかも戻り値で確認して、それでも直らないようであれば
BREWヘルプデスクに質問してください。
982 :
デフォルトの名無しさん :05/03/15 22:33:14
SUSPEND時についての質問です。 みなさん画像の開放してますか? ヒープ内の画像を全部開放してみたところ 着信時にて端末がおちるのですが・・・
>>982 画像を解放するかどうかはこのスレで同じ話出てるから読んでみて。
>着信時にて端末がおちるのですが・・・
画像を解放すること自体とは無関係。プログラムのどこか別の点に問題がある。
何とかエミュでI am Browser(URL付き)が表示されるようになったよ。 フォーラムを見てみたらエミュではurlto、実機ではez2urltoを使うといいみたいだな。 でも別の場所で問題っぽい事が起きて困っている。 ブラウザが起動する際にはSUSPENDが送られて、ブラウザを終了したらRESUMEされると思うんだが エミュでISHELL_BrowseURLを呼ぶとSUSPENDされて一度RESUMEに戻ってからSUSPENDされてブラウザが 起動してるみたいなんだ… ブラウザを起動させたらアプリを終了させたかったんだけど、過去ログを見ると無理っぽいから ブラウザから帰ってきてRESUMEされたらアプリを終了する形にしたいんだが 上記の動きをして望みの結果が得られない… 原因や対処方法が分かる人は教えて欲しい…
ブラウザ起動時に時間保存。2秒以上経ったら終了。ez2urltoは初期QVGA機は対応してないけどいいのかな。
なぁ、提出用の状態遷移表って、どんぐらい真面目に書けばいいもの? ゲーム中の状態とか、真面目に書いたらえらいことになるんだが・・・ ステート何百あると思ってるんだよ!!>KDDI
起動及び読み込み及び初期化→タイトル→ゲーム→ゲームオーバー ↓ ↓ クリア→エンディング→終了処理 ↓ タイトルへ戻る
細かく書け
>>986 マジでシューティングとかカードゲームとかRPGとか、まともに書いてると気が狂います。
987さんの遷移にエラー画面とサウンド処理を入れたレベルで何とかなりますよ。
全面ノーミスだと隠しステージとかいう鬼難易度の遷移を作ると デバッガーを泣かせることができるらしいという噂。
###2でNetDebugToolってのが起動するんですが(エミュでも確認できます) これの表示の意味ってどっかに載ってます? 色々探したけど見つからなくて・・・ ご存知の方いましたらよろしくです〜
誰か次スレを頼む
テンプレ自体は
>>1-6 (2除外)で変更ないかな
せっかくテンプレがあるので1にはテンプレを、 他いくつかコピっときました。 ミスってたらスマソ
ume
梅
998 :
産め :05/03/17 13:02:58
産め
999 :
膿め :05/03/17 13:03:19
膿め
1000っと
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。