[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 09:27 / Filesize : 284 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

BREW(Binary Runtime Environment for Wireless) 3



1 名前:デフォルトの名無しさん mailto:sage [04/09/24 15:07:03]
BREW(Binary Runtime Environment for Wireless)についてのスレ

QUALCOMM BREWホーム
www.qualcomm.com/brew/ja/
www.qualcomm.com/brew/

BREW JAPAN .COM|BREW増強計画
www.brewjapan.com/

前スレ
pc5.2ch.net/test/read.cgi/tech/1076511398/
関連情報>>2-18

■過去スレ
02 pc5.2ch.net/test/read.cgi/tech/1076511398/
01 pc2.2ch.net/test/read.cgi/tech/1011078904/


355 名前:デフォルトの名無しさん mailto:sage [04/11/19 20:32:47]
>>350
俺もA5505SAでIDISPLAY_MeasureText使ってたけど検証は通ったよ。
自分で実機では見てないけど変なとこあったら言われてるだろうし。
違うところに原因があるんじゃないかなぁ・・・。

356 名前:デフォルトの名無しさん mailto:sage [04/11/19 20:37:08]
>>350
ついでだけどA5505SAの機種依存でIDISPLAY_MeasureTextのはなかった。

357 名前:デフォルトの名無しさん mailto:sage [04/11/19 22:55:16]
まさかAECHAR型を渡してないってオチじゃないよな?

358 名前:350 mailto:sage [04/11/19 23:10:22]
あれれ・・? ソース抜粋してみる。

int fontW, fontH;
AECHAR str[] = {'※', '\0'}; //※…全角一文字

fontH = IDISPLAY_GetFontMetrics(a->m_pIDisplay, AEE_FONT_NORMAL, NULL, NULL);
fontW = IDISPLAY_MeasureText(a->m_pIDisplay, AEE_FONT_NORMAL, str);
DBGPRINTF("フォントサイズ:H=%d,W=%d", fontH, fontW);

これだけなんだが、出力結果はH=18、W=9だった・・・

エミュ、A5506T(だったはず)では正常な値が帰ってくるのを確認済み。
なので機種依存かと思ったんだが・・・
プログラミングガイドの何処か見落としたヨカーン


359 名前:350 mailto:sage [04/11/19 23:20:47]
追伸。
strの定義からfontH求めるまで20行ほど省略してるが、この間変数には一切触れてない。
'※' を全角スペースや、他の全角文字も幾つか調べてみたが軒並みアウト。
ついでにIDISPLAY_MeasureTextExも試してみたが、結果は同じく9ピクセルが帰ってきた。

で、半角文字を入れても9ピクセルが帰ってきたんで、それを2倍して対応しますた。
ここで取ったフォントサイズを元にメッセージボックスやら何やら作ってたんで致命的だったのよTT


360 名前:デフォルトの名無しさん mailto:sage [04/11/20 00:39:33]
>AECHAR str[] = {'※', '\0'};

チカラ抜けたよ… ダメに決まってんだろー

361 名前:350 mailto:sage [04/11/20 01:16:37]
何が悪いのかわかってないんで、ダメな理由教えていただけると…


362 名前:デフォルトの名無しさん mailto:sage [04/11/20 03:22:03]
プログラミングガイドやAPIリファレンスで文字列描画について再確認するとともに
この辺を見るのもいいかと。
www.itmedia.co.jp/mobile/0311/14/n_bapp.html

363 名前:350 mailto:sage [04/11/20 13:48:54]
あー、なるほど。
先の初期化方法だと、全角文字はバイト列逆に入力されちゃうのか。
いやむしろAECHARが逆に扱ってるというべきか…
デバッグ出力でも確認できたんで納得した。
S5506Tもエミュもタマタマ動いていただけっぽいな。

ご迷惑おかけしますた。



364 名前:350 mailto:sage [04/11/20 13:50:34]
書き忘れ。
>>360,362
夜遅くまで付き合ってくれてサンクス。
助かったよ〜

365 名前:357=360=362 mailto:sage [04/11/20 14:40:32]
>>350 なにかと面倒なことは多いけどがんばれー

366 名前:デフォルトの名無しさん mailto:sage [04/11/21 03:09:13]
ttp://www.geocities.jp/messenger4nis/

367 名前:デフォルトの名無しさん mailto:sage [04/11/22 11:22:40]
IMEDIA_SetAudioDevice(pMe->m_pMedia, AEE_SOUND_DEVICE_CURRENT)で
EUNSUPPORTEDが帰ってきます。

これを設定できなくても一応実機エミュともに正常っぽく音がなっているので
ほったらかしてるんだけど、まずいですか?

しかしSDKドキュメントのIMEDIA_SetMediaData()と
IMEDIA_SetAudioDevice()の説明って何で同じなんだ・・・


368 名前:デフォルトの名無しさん mailto:sage [04/11/22 12:07:00]
>>367
設定しなくていいんじゃね?

KDDIの事前検証チェックシートには
AEE_SOUND_DEVICE_CURRENTか指定しない状態にしろって
書いてあるっぽい。

369 名前:デフォルトの名無しさん mailto:sage [04/11/22 14:12:35]
>>368
ありがとうございますー。心置きなく無設定にすることにします。


370 名前:デフォルトの名無しさん [04/11/22 15:07:37]


371 名前:デフォルトの名無しさん mailto:sage [04/11/22 17:12:26]
>>363
つーかエンディアンがどうこう言う前に、AECHARの中身の文字コードは端末依存だぞと。
ちゃんとSTREXPAND使って変換しないと危険だと思うが。


372 名前:350 mailto:sage [04/11/22 17:47:00]
>>371
心配かけて申し訳ない。
>>358のソースは文字サイズ取るためだけに使ってるんで、ああいう初期化をしただけ。
なので他の場所ではSTREXPAND()使ってるから問題なし。
今はISHELL_LoadResString()で遊んでます。


373 名前:デフォルトの名無しさん mailto:sage [04/11/24 11:50:52]
>>371
いやそれでも問題だと思うが。
SJISで全角コードを設定してもそれが半角文字になってしまう可能性は否定しきれないだろう。
まあ固定ピッチフォントである保証もないので、突き詰めると色々問題ありな分けだが。

特定の端末でうまく動けば良いということなら止めはしないが、個人的にそういうのは余り好きじゃないな。
#そういう考え方で作られたプログラムを別プラットフォームにコンバージョンするという仕事を何度もやらされたんで




374 名前:350 mailto:sage [04/11/24 15:21:45]
>>373
多分>>372のアンカーミスだよな・・・
対処は351に書いたが、全角のsjisコード書いたなんて言った覚えは無いぞ。
固定ピッチでなくなったケースなんぞ知らん。

てかそういう仕様なんで、こちらとしてはどうしようもない。
別プラットフォームも最初から想定していないから大丈夫だと思う。
そう思いたい ○| ̄|_

375 名前:デフォルトの名無しさん mailto:sage [04/11/24 18:41:39]
武竜を使いこなすには約五年間に渡る苦行を修める必要があります

376 名前:デフォルトの名無しさん mailto:sage [04/11/24 19:09:46]
武竜って生まれてどれくらい経ってるっけ・・?

377 名前:デフォルトの名無しさん mailto:sage [04/11/25 13:28:46]
>>374
ごめ、アンカーミスってたね^^;

>AECHAR str[] = {'※', '\0'};
って普通にWindowsで書いてコンパイルしたらSJISコードが入ると思うが。
で、エンディアンの修正とかやってもコードは変わらないと思う。
普通にchar配列として初期化してSTREXPANDしたほうがいいと思うよ。

>固定ピッチでなくなったケースなんぞ知らん。
現状は存在しないと思うが、将来にわたってそうだという保証は無い。
まあ、おまいさんが今動けばよいというのは良いのだが、想定以上に長いことソースが使われることは良くあること。
で、現状ではOKって考えで作られたソースを後から直す羽目になる人のことも考えといたほうが良いぞというのが漏れのアドバイス。
#結局自分で治す羽目になることだってあるわけだし

つまるところ、サブルーチン一つ作って、常に描画文字列の幅を測定してから適切な位置に描画するようにすれば良いだけだし。
そういうのがスマートなコーディングだと漏れ的には思うが。

まああくまで私見なので、気に入らなければ無視してつかーさい。

378 名前:350 mailto:sage [04/11/25 17:09:33]
言っている事には全く同意なんだが…
AECHAR str[] = {' ', '\0'}; //←半角スペース
こうした。
'※'を表示したいんじゃなくて、全角文字の幅が欲しかっただけなので、
半角で得た幅に2を掛けておしまい。
…とはちゃんと書いてなかったか、説明不足スマソ。
他の箇所は先にも書いたとおりSTREXPAND使ってる。

で、何故この幅が必要かというと、
画面サイズと文字サイズを基準にテキストボックスを作ってるから。
テキストボックスの画像はバラバラのパーツなので、これを基準には出来ない。
画面サイズのみ基準に計算すると半角文字が1文字はみ出る可能性があるので、
それを予防する為の全角文字サイズ確保ってトコなんですわ。

固定ピッチでなくなると、この仕様そのものが使えなくなる。
と言うか半角1文字のズレを許容範囲とするなら、このままでもほぼ問題ない。

画像サイズ基準にして画像差し替えだけで対応できるのがベターなのかもしれないが、
漏れの力ではこれ以上の仕様変更は無理○| ̄|_


関係ないが
>無視してつかーさい
何便?

379 名前:デフォルトの名無しさん [04/11/25 17:59:13]
>>377
諸々わかってて「でも今回のこの仕様ならこれでOK」って感じで例外的なコードを書くのは
構わないんじゃないか?固定ピッチかどうかなんて画面デザインにもはねるんだから、
現状の端末を仮定して当然だと思う。

ただ、>>358 のコードはそういう判断の結果出てきたものでは全くないし(現に正常動作しない)、
これがたまたま動いてしまう環境もあるあたり性質が悪いかも・・・

>>378
依然としてエンディアンに依存するコード・・・でも普通は動くだろうけど。
AECHARの半角のコードに自然じゃないエンディアン使う端末ってあまり想像できないし。
一行 STREXPAND 書くだけでLEでもBEでもShift_JISでもeuc-krでもgb231でも動くのに・・
コードサイズがキツキツとか?極小の中の人かな。

380 名前:350 mailto:sage [04/11/25 19:02:09]
そもそもHelloBrewでああいう初期化がされているので、
諸悪の根源と思っていない
&1バイト文字でエンディアンに依存にするケースが想定できない
&無駄と思えるコードは最小限に抑えたい(趣味)
というのが変更したくない理由。

何かトラブルメーカーみたいなんで、素直にSTREXPANDに変更しときます。
まだちゃんと納得してないけど…
ご迷惑おかけしますた。


381 名前:デフォルトの名無しさん mailto:sage [04/11/25 19:20:30]
>>378
結局半角x2にしたんならそれほど問題はないと思う。
#とはいえ特に問題なければSTREXPANDしといたほうがベターだとは思うが
この部分が分からなかったので「全角コードでのAECHAR初期化は危ない」と言いたかっただけだから。
固定ピッチ依存についてもそういった理由があるのならまあ現状仕方ないかと思う。

>>379
>諸々わかってて…
程度の問題だろうね。
上でも書いたように、半角ASCIIでAECHAR初期化とか固定ピッチ依存とはいえクリティカルでない
のなら漏れもそれで良いと思うよ。
いまやってる仕事で端末性能に依存したゲームのコンバージョンやらされてて、動きが早すぎるとか言われ、
「じゃあ理想FPS教えて」と言っただけで逆ギレされたりしていたんで、端末依存に過敏に反応しちゃったかも。

>一行 STREXPAND 書くだけで…
同感。
ちなみに漏れはC++使ってるんで、文字列クラス作って自動変換されるようにしてる。


382 名前:デフォルトの名無しさん mailto:sage [04/11/25 23:08:47]
BREWを実機に落とせるようにするにはKDDIに認められなきゃならない事はわかったけど
一体いくらかかって、どういった壁があるんでしょうか?

383 名前:デフォルトの名無しさん [04/11/26 01:05:31]
ほしゅ



384 名前:デフォルトの名無しさん [04/11/26 17:55:33]
>>382
ケーブル2000円
ARMコンパイラ15万円
KDDIに企画申請プライスレス

385 名前:デフォルトの名無しさん mailto:sage [04/11/26 18:36:34]
>>382
検証3回目からは20万円(税別)

386 名前:デフォルトの名無しさん mailto:sage [04/11/26 19:11:47]
>>385
検証2回までは無料、3回目でブラックリスト?

387 名前:デフォルトの名無しさん mailto:sage [04/11/26 19:33:32]
提出するバイナリはちゃんとARMコンパイラ買ってコンパイルしないといけないんでしょうか。

388 名前:デフォルトの名無しさん mailto:sage [04/11/26 21:07:57]
>>386
GCCでもおけぃ。
ただしモジュールサイズでかめ気味になるかも。


389 名前:デフォルトの名無しさん mailto:sage [04/11/26 21:08:36]
おぅ388は
>>387でした

390 名前:デフォルトの名無しさん mailto:sage [04/11/26 21:56:49]
>>388
 ありがとうございました。GCCで行きます。

391 名前:デフォルトの名無しさん mailto:sage [04/11/27 20:36:28]
CPとしては検証に落ちることそのものが論外、理由は開発支援サイト見れ。
たとえ発売時期が遅れたとしても、可能な限り完璧にしておこう。

392 名前:デフォルトの名無しさん [04/11/28 02:54:49]
は?

393 名前:デフォルトの名無しさん mailto:sage [04/11/28 12:23:48]
しおりないのはやっぱつらい・・。



394 名前:デフォルトの名無しさん mailto:sage [04/11/29 08:22:47]
エミュレータで起動中にMemory クラプション?クランプション? 
エラーというのが発生してリセットされます。

これってどういう時に起きるエラーなんでしょうか?( ´・ω・`)

395 名前:デフォルトの名無しさん mailto:sage [04/11/29 11:18:54]
>>394
メモリ壊してる(確保していないアドレスに書き込んでる)ってことじゃないかと。
#メッセージは詳しく覚えてないけど


396 名前:デフォルトの名無しさん mailto:sage [04/11/29 12:09:05]
エラーメッセージは忘れたがエミュレータ起動中のエラーならこういう可能性も。
− mifはあるけどdllがない
− mifとdllを置くフォルダ構成が正しくない
− mifとdllでファイル名が違う

397 名前:デフォルトの名無しさん mailto:sage [04/11/29 12:17:52]
>>395-396
ありがとうございました。

>>396
確かに何かを壊しているんじゃないかという雰囲気はしてました( ノω・`)

>>396
そういう場合も発生するエラーなのですか・・・。

今回の場合、アプリにある機能を増やすまでは発生せず、
追加した関数(配列を頻繁に使用している)で発生してるっぽいので、
どうも配列外にはみ出して読み書きしている可能性が多そうです。

398 名前:396 mailto:sage [04/11/29 16:03:51]
>>397
いや、「エミュレータで起動中に」とあったのでメニューからアプリを選んで
起動したとたんに起こるエラーを挙げてみただけ。
>>397を見るとどうやらアプリ「実行中」のエラーのようだから>>396のことは無関係だ。

399 名前:デフォルトの名無しさん mailto:sage [04/11/29 16:42:38]
>>397

>追加した関数(配列を頻繁に使用している)で発生してるっぽいので、

ちなみに、実機ではスタックがかなり小さいのである程度で買いサイズの配列を
スタックに採っているとリセットかかる。
MALOC等でヒープに確保しないとダメ。

ただ、エミュではそんなこともない(普通にWindowsのスタックサイズ制限になる)
ので原因はそこではないと思うが。
原因であろう関数がほぼ特定できているなら(そしてエミュで問題が発生するのなら)
普通にステップ実行すればどこでおかしくなっているかは分かると思うが。


400 名前:デフォルトの名無しさん mailto:sage [04/11/29 18:24:05]
>>399
重ね重ねありがとうございます。

心当たりの関数は、ヒープに確保してあるデータテーブルから
ループで順々にデータの読み書きをしていくものです。

何かの変数が、ある範囲のとき、どこかのテーブル参照で
ループオーバーかデータ取得異常をおこしてる予感が
ひしひししています。

虫の生息域はきっとその関数内なので、地道に虫探しに行ってきます。
テーブル多いよ大きいよ ○| ̄|_

401 名前:デフォルトの名無しさん mailto:sªge [04/12/01 01:10:15]
APIのドキュメントを読んだけど、
スレッドの生成方法がよくわからない。
どうやって生成するのか知ってる人教えてください。

402 名前:デフォルトの名無しさん mailto:sage [04/12/01 01:16:11]
>>401
2.1じゃサポートしてないんじゃなかったっけ?

フォーラムに載ってた気がする。一度確認することを
勧める

403 名前:ロロ mailto:sage [04/12/01 01:42:50]
>>402
2.1 でスレッド使えるよ。undocumented だけど。
2.0 は使えない。



404 名前:デフォルトの名無しさん [04/12/02 12:55:37]
// goto使えるんだね
hage:
goto hage;

405 名前:デフォルトの名無しさん mailto:sage [04/12/02 18:51:14]
JPEGファイルの縮小表示を行いたい場合って、やっぱり

JPEG ファイルを IImage として読込
-> IImage のサイズを調べる
-> 同じサイズの IBitmap(1) を作成
-> IDisplay のレンダリング先を上記 IBitmap(1) に設定
-> IImage_Draw() を使用して IBitmap(1) に描画
-> 目的のサイズの IBitmap(2) を作成
-> IDisplay のレンダリング先を上記 IBitmap(2) に設定
-> IGraphics_StrechBlt() を利用して、上記 IBitmap(2) に描画
-> IDisplay_DetachDestination() とか IBitmap_Release() とかとか

こういうかったるいことをやらなくちゃどーにもならないのだろうか。

406 名前:405 mailto:sage [04/12/02 18:56:27]
う〜ん、ほんのちょっとだけ ITRANSFORM_TransformBltSimple() の方が楽そうだなぁ・・・

407 名前:デフォルトの名無しさん mailto:sage [04/12/02 22:17:28]
>>405-406
IGRAPHICS_StretchBlt()に指定できるビットマップソースはIBitmapやIDIBではなく
WindowsBitmapなのでこの目的には使えません。
# IDISPLAY_BitBlt()はIBitmapやIDIBをとりますが。
なのでITransformを使うしかありません。

ちなみにIGRAPHICS_StretchBlt()はバグありなのでその意味でも使えません。
brewforums.qualcomm.com/ja/showthread.php?s=&threadid=237

408 名前:デフォルトの名無しさん mailto:sage [04/12/03 01:11:56]
Blt周りは特にグッチャングッチャンの設計だな。

409 名前:デフォルトの名無しさん mailto:sage [04/12/03 11:02:54]
エミュレータの出力ウィンドウに表示される
警告の意味がわかりません。
↓の内容なんですがどなたかわかりますか?
アプレット起動したときに表示されます。

WARNING: App Callback Pending(数字)

410 名前:デフォルトの名無しさん [04/12/03 18:39:32]
ファイルシステム残量チェックと
ヒープ残量チェックって関数あります?

411 名前:デフォルトの名無しさん mailto:sage [04/12/03 21:00:57]
IFILEMGR_GetFreeSpace
IHEAP_GetMemStats

412 名前:デフォルトの名無しさん mailto:sage [04/12/04 02:31:40]
JavaアプリをBREWに移植中。描画方法でアドバイスが欲しい。

このJavaアプリは処理ループごとに差分描画で画面を描いている。
BREWでサスペンド→リジュームが起こったとき、差分描画の方法では
サスペンド発生時の画面全体の描画内容が復元できない。

サスペンド発生時に画面内容を、画面と同サイズのビットマップに描画、
リジューム時にそれを画面に描画し直せば元通り…と思って試したら
サスペンドに入るときの砂時計マークまで描画されててダメ。
(サスペンドが発生すると、まず端末側が砂時計を描画して、それから
 アプリにサスペンドが通知される模様)

サスペンド時の画面を復帰させるのに、皆さんはどうやってますか?
1.差分描画しないで常に画面全体を描画している。
2.オフスクリーン(画面サイズのビットマップ)を用意してそこへ
 描画(差分描画)、それ全体を画面(デバイスビットマップ)へ転送。
 …これだと文字を書くのにどうするか?
3.差分描画を基本とするが、リジューム時はシーンごとに個別対応で
 画面全体を描画し、その後また差分描画を続行する。
4.その他。

413 名前:デフォルトの名無しさん mailto:sage [04/12/04 03:24:58]
>>410
ヘルプを読むと、GETFSFREE()、GETRAMFREE() も使えるのかも?
BREW 2.1 以降だし、使ったことないけど。

>>412
1、問題外。
2、IDISPLAY_SetDestination() を使用すれば文字も描画できるのでは?
3、シーン毎っちゅーのが分からんが、漏れならこっちでやるなあ。
4、砂時計が描画される部分だけ描画時毎に保存して...(w



414 名前:412 mailto:sage [04/12/04 07:52:31]
>>413
>2、IDISPLAY_SetDestination() を使用すれば文字も描画できるのでは?
それはそうなのだが、デバイスビットマップを入れ替えるとクリッピングや透過色の指定が
クリアされるので、それらを使っていると面倒なことになる。
また、タイミング悪く、入れ替えてる間に砂時計が描かれてしまうこともあり得る。<考え過ぎか?
何とかIDISPLAY_SetDestination()を使わない方法を考えているがうまくいかなくて…

>3、シーン毎っちゅーのが分からんが
ステージ開始したとき、クリアしたとき、ゲームオーバーになったとき、など、
描画内容が大きく変わる区切りを指す。説明不足スマン。
これは確かな方法だと思うが、上記シーンごとに画面復元の処理を入れていくことになり、
作業量が増えるのでちょっと躊躇ってる。<ヨワッ でもやはりこの方法なのかな。

>4、砂時計が描画される部分だけ描画時毎に保存して
砂時計が描かれてからEVT_APP_SUSPENDが通知されるので、そのときには
砂時計が描かれた状態を保存してしまっていて結局ダメで…

413さんthx. 他の方のアドバイスもいただきたいです。

415 名前:デフォルトの名無しさん mailto:sage [04/12/04 15:22:45]
>>412
漏れは2の方法で復帰させてる。てか1と2の複合か。
(ゲームじゃないが、画面全体が頻繁にスクロールが発生するアプリでスクロール分を差分描画)

1.IDISPLAY_SetDestination()でオフスクリーンを指定
2.クリッピング、描画など
3.IDISPLAY_SetDestination()でディスプレイを指定
4.オフスクリーンをディスプレイに描画
5.IDISPLAY_UpdateEx()で画面更新

の繰り返しで。
砂時計はディスプレイに描画されるので、オフスクリーンの方は大丈夫。
結局毎回画面全体を更新している訳だけど、DDBの上書きだけなら結構な速度が出るよ。
S5505SAで約20フレーム確認。それ以上は試す必要なかったんで計ってない。スマソ


416 名前:413 mailto:sage [04/12/04 16:46:29]
>>414
4. は、412 氏が上手くできなかった SUSPEND 時保存の改善案。

(1) アプリ側の描画時に砂時計がでるはずの部分だけ保存
(2) SUSPEND 時で全画面保存
(3) RESUME 時に (2) で保存したものを描画
(4) 同じく RESUME で (1) で保存したものを (3) に上書き

問題は、各機種毎に砂時計の出る位置やサイズが違う気がする
ってことかなあ?…速度的には悪くないと思うけど。

417 名前:412 mailto:sage [04/12/04 19:10:18]
415氏、416=413氏、具体的な内容で参考になりました。助かります。
>>413の2番をふまえて>>415の方向で考えてみます。

変に考えが凝り固まっててオレの頭がサスペンド中ってオチなのか…

418 名前:デフォルトの名無しさん [04/12/05 21:55:19]
透過処理とかの絡みでDDBitmapを直接弄ってるけど遅い。
asmで書き直してる人とか多い?

419 名前:デフォルトの名無しさん [04/12/06 12:29:56]
みんな頑張れよ

ttp://next.rikunabi.com/tech/docs/ct_s03100.jsp?p=lw1061&f=impress&__m=1

420 名前:デフォルトの名無しさん mailto:sage [04/12/06 17:46:23]
EVT_APP_NO_SLEEPから復帰するタイミングを見たいときは
何をチェックしたらいいんでしょうか?


EVT_APP_RESUMEやEVT_APP_STARTではないみたいだし・・・。

421 名前:デフォルトの名無しさん [04/12/07 18:42:33]
サウンドでspfファイル使ってる人いる〜?

422 名前:デフォルトの名無しさん [04/12/07 18:51:10]
>>421

てか、それしかサウンド使ったことない・・・。

423 名前:デフォルトの名無しさん [04/12/07 20:42:13]
qcp使ってる



424 名前:デフォルトの名無しさん mailto:sage [04/12/07 20:53:17]
移植性とか考えると音はやっぱSPFの四音同時が妥当なのかね。
日本の端末じゃMIDI+QCP×4とか出来ないようだし…。

どうやってますよ?オマイラ

425 名前:デフォルトの名無しさん [04/12/07 22:56:12]
着うたフル

426 名前:デフォルトの名無しさん [04/12/08 10:18:13]
>>425
BREW2.0端末で200kb
2.1で300kbじゃなかったか?

427 名前:デフォルトの名無しさん mailto:sage [04/12/08 20:06:50]
エミュレータでは問題なく動いてるアプリが
実機でいきなりMemory Accessで落ちるんですけど
原因って何でしょう?

処理を全部コメントにしてreturnしていても
場所によってエラーになるんですが。。

428 名前:デフォルトの名無しさん mailto:sage [04/12/08 22:31:22]
>>427
奇数番地をまたいでのwardアクセスとかじゃないか?

429 名前:デフォルトの名無しさん [04/12/08 23:35:19]
タイムクライシスで半透明やってるんだけどどうやってんですか!

430 名前:デフォルトの名無しさん mailto:sage [04/12/08 23:40:02]
>>427
ありがちなのが、ヒープ足りなくなってる状態でMALLOCとかが失敗しているのに
エラーチェックしないで書き込んでるとか、ポインタ操作をミスってるとか。
あと、実機用はmakefileで、すべての依存関係が記述できているとは限らないか
らクリーンしてみると挙動が変わったりすることもある。

ちなみに実機でしか再現しないリセット系エラーを追及するには、ログをファイ
ルに吐くような手を使わないとダメです。
#DBGPRINTFなんかはバッファされるのであてにならない

431 名前:デフォルトの名無しさん [04/12/09 01:12:14]
IShell_CreateInstance()関数を使ってINetMgrのインスタンスのインスタンス
を生成しても戻り値がSUCCESSとならないんですが、どんな原因が考えられます
か?コンパイルはできます。ちなみに
IShell_CreateInstance(pMe->m_applet.m_pIShell, AEECLSID_NET, (void**) &app->pINetMgr)
という感じにしてます。






432 名前:デフォルトの名無しさん mailto:sage [04/12/09 03:09:57]
>>431
とりあえずMIFは?

433 名前:427 mailto:sage [04/12/09 11:11:31]
>>428
初歩的質問でもうしわけないのですが
奇数番地をまたいでのwardアクセスってなんでしょう。。。

>>430
ヒープは残っててMALLOCの戻り値もチェックしてます。
クリーンしてみたのですが変わらず。。



434 名前:デフォルトの名無しさん mailto:saga [04/12/09 11:57:09]
デバッガについて質問です。
エミュレーター上でVC++のデバッガーを使いたいと思い
ttp://www.s-cradle.com/developer/technicalqas/tqbr/index.html#q0049
に書かれている方法を試したのですが
'(パス)\BREW_Emulator.exe'にはデバッグ情報がありません。続行する場合は[OK]を押してください。
というメッセージボックスが表示されてしまい、続いて
1つ以上のブレークポイントが設定できませんでした。これらのブレークポイントは無効です。実行プログラムはプログラムの始めで停止します。
というメッセージボックスが表示され、デバッグできません。
プロジェクト(P) -> 設定(S) -> リンク - カテゴリ - 一般 のデバッグ情報を生成する(G) にはチェックが入っています。
どうしたらステップ実行等が可能になりますか?
環境はVisual C++ 6.0 BREW SDK 2.1.1jです。
宜しくお願いします。

435 名前:デフォルトの名無しさん [04/12/09 12:49:19]
>>434
プロジェクト→設定→デバッグでデバッグセクション実行可能ファイルに
エミュ.exeを入れればおk


あと質問なのですが
みなさんリソースファイルに埋め込んだ音声ファイルは
どのようにして再生してますか?

436 名前:デフォルトの名無しさん mailto:sage [04/12/09 14:51:41]
>>433
wardはwordの書き間違いでそ。

アライメントの問題。バイト(8bit)アクセスならどんな
アドレスでもアクセスできるけど、ハーフワード(16bit)は
2の倍数、ワード(32bit)は4の倍数のアドレスでしかアクセス
できない。
ARMはこれを間違えると例外が発生する。x86はアライメント
気にしないでも処理は一応動く。
# ちなみに、ARMでも例外発生しないものもある

437 名前:427 mailto:sage [04/12/09 17:09:49]
うーむ。
メモリまわりは全く知識が無いのでチンプンカンプンです。。
いま途中まで動いてる部分はまぐれっぽいですね。

大変そうだ

438 名前:デフォルトの名無しさん mailto:sage [04/12/09 17:34:32]
>>437
アライメントと決まったわけじゃないしな。
単純にメモリ壊しているだけかもしれん
アライメント問題はこんな感じ

----
uint16 buf1[10];

uint8 *p1 = (uint8 *)buf1; *p1 = 0;
p1にアクセスするのはOK

uint16 *p2 = buf1; *p2 = 0;
p2にアクセスするのはOK
----
uint8 buf2[10];

uint8 *1 = buf2; *p1 = 0;
p1にアクセスするのはOK

uint16 *p2 = (uint16 *)buf2; *p2 = 0;
p2にアクセスするのはNG★

例え動いたとしても、偶然buf2が2の倍数のアドレスに
配置されてたってだけ
コレをやりたい場合は、アドレス調べてうまくいくよう
自分の処理を調整するか、_packed、PACKEDとかでコン
パイラに教えてあげる必要がある


439 名前:デフォルトの名無しさん mailto:sage [04/12/09 23:59:42]
>>431
MIF ファイルに権限がないとか良くありがちな罠。

440 名前:デフォルトの名無しさん mailto:sage [04/12/10 00:10:52]
てかメモリ周りわかんないでどうやってC書くんだ?

441 名前:デフォルトの名無しさん [04/12/10 03:15:29]
>>435
https://secsvr.net/brewjapan.com/tech/form.html
ここの「BREW Technical Tips」に載ってる
【リソースファイルにサウンドデータを格納するには】の
サンプルを参考にさせてもらってる。


442 名前:デフォルトの名無しさん mailto:sage [04/12/10 05:05:25]
427とそれへのレスを見て思ったのだが、
情報が足りてない質問に憶測で答えていても解決は遠いと思う。

「エミュレータで動いて実機でMemory Accessエラー、原因は何?」とか
「処理を全部コメントにしてreturnしていても場所によってエラーになる」とか
ソースを出さずに言われても意味不明。

エミュレータで期待通りの動作をして実機で動かないなら、ビルド環境の問題
かもしれないし。(←と、当てずっぽうになってしまうわけだ、情報が足りないと)

427はせめてその疑ってる付近のソースを(可能な範囲で)晒してみたり、
ARMかgccか、makefileはBREW Addinsの自動生成のか、自前で書いたものか、
とかの情報を出してみてはどうか。

443 名前:427 mailto:sage [04/12/13 11:47:48]
ごめんなさい解決しました。。。
なんと問題はフラグの初期化し忘れでした。情けない。
int型をとってTRUEかFALSEかで使ってた部分で落ちてました。

メモリについての知識もほとんどないので
難しいコードも組んでないし、メモリ周りのエラー起きないですよね。

皆様たいへん勉強になりました。
ありがとうございました。



444 名前:デフォルトの名無しさん mailto:sage [04/12/13 15:02:15]
なんか、ISocket での通信が妙に遅い(1kbpsとかしか出ない)んだけど、一回の送信データって何バイトぐらいが良いんだべか。
ちなみに今は、512バイト単位で送ってる。
au網のパケット長は128バイトだった気がしたが、ヘッダを除いた際の適正サイズがわからん。

buf = new byteBuffer(512);
socket->Write( buf.GetBuffer(), (short)buf.GetSize() );

445 名前:444 [04/12/13 15:08:33]
あぁ、サービスガイド見たら、1秒間での ISocket_Write() は2回までって書いてあるな。
普通に128バイトで送ったら2kbpsじゃん。

送信サイズでっかくして再挑戦してみま。

446 名前:デフォルトの名無しさん mailto:sage [04/12/13 15:10:08]
>>443
難しいコードが>>438で挙げてある程度のコードを指すのだとしたら、油断しすぎか経験
少なすぎ。Cである以上メモリ処理はついてまわるし(特に携帯みたいにヒープの少ない
環境だとね)、知識がほとんど無いとか言ってる場合じゃないかと。

>>434
「デバッグ情報がありません〜」のメッセージは出る。「次回から表示しない」のチェックを
入れてメッセージボックス自体を殺してしまってOKなはず(これはEmulator.exeのシンボル
ファイルが無い、という警告なので出て当たり前)。
あとはビルドがリリースモードになってないか確認。

447 名前:デフォルトの名無しさん mailto:sage [04/12/13 21:18:57]
サーバから落ちてくるpng画像を読み込む方法って、
一度ファイル名つけて保存→ISHELL_LoadImage() しかないかな?
今まで同一フォルダにプロジェクトと実行ファイルまとめてたんでメンドクサイ(ノД`)


448 名前:デフォルトの名無しさん [04/12/13 22:08:16]
>>447
IMemAStream 使えばいいんじゃないか?

449 名前:デフォルトの名無しさん mailto:sage [04/12/13 22:19:50]
>>448
お、使えそう! サンクス!!


450 名前:デフォルトの名無しさん mailto:sage [04/12/14 01:03:49]
久しくやってないのでうろ覚えだけどISourceをIAStreamに変換
できなかったっけ?
ISOURCEUTIL(間違ってるかも)とかで

451 名前:447=449 mailto:sage [04/12/14 02:09:28]
>>450 情報サンクス。
ダウンロード完了するまで待ってISourceからbyte配列にデータ格納するクラス作っちゃったんで、
IMemAStreamの方が都合よさそうです。
調査不足を痛感・・・頑張らんとなぁ

452 名前:435 [04/12/14 13:34:30]
>>441
遅くなりましたがありがとうございましたです。

453 名前:デフォルトの名無しさん [04/12/14 13:44:39]
もしかしてBREWってExtern使えないの!?



454 名前:デフォルトの名無しさん mailto:sage [04/12/14 14:57:39]
使えてるけど?extern

455 名前:デフォルトの名無しさん mailto:sage [04/12/14 21:03:51]
ところでしーばらくBREWから離れているんだけど、少しは環境よくなりました?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<284KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef