BREW(Binary Runtime ..
[2ch|▼Menu]
263:249
04/11/09 14:00:18
>>259-261
なるほどサスペンドなんかを考えなければいけなかったんですね。

ありがとうございました!

264:デフォルトの名無しさん
04/11/09 15:40:20
>>256-257  少しばかりの一覧表  外出か?
URLリンク(www.au.kddi.com)

265:デフォルトの名無しさん
04/11/09 16:00:19
>>262
まあそうなんだが(Cコンパイラでプリプロセッサだけかけるって手もあるしね)コンパイラ
自体が機能を持ってないから他人/他社と連携するときに色々面倒だ。
スレ違いなんでこの辺にしておくが、C++派の漏れとしては、まあとりあえずSymbianかbrewに
がんばってほしいところ。

266:デフォルトの名無しさん
04/11/10 22:05:06
もう2ch製APIとかつくりゃええやん

267:デフォルトの名無しさん
04/11/11 11:42:48
お忙しい所申し訳ありません。
質問が御座います。

モード選択でモードA・Bの二つを
上下キーで選択する処理を行いたいのですが、
「A1402S」のジョグダイアルにて
キーが取得出来ない様なのです。
(端末が手元に無い為、動作確認出来ません;;

ジョグダイアルの上下キー取得は
AVK_UP・AVK_DOWNで問題無かったでしょうか?
また、タイマー速度が速すぎると
キーを取りこぼしたりはするのでしょうか?
参考にタイマー速度を幾つに設定しているか等
教えていただけると幸いです。
因みに、現在のタイマー速度は80_秒に設定しています。

何卒、よろしくお願い致します。

268:デフォルトの名無しさん
04/11/11 12:24:36
>>267
AVK_UPとDOWNでおk。
ジョグダイアルって一瞬でPRESSとRELEASEのイベントが来るからそのせいじゃないのかな?

269:デフォルトの名無しさん
04/11/11 14:01:05
>>267
ラボ行って試せ。がんばれ

BREW ディベロッパー ラボ 無料
URLリンク(www.brewjapan.com)


270:デフォルトの名無しさん
04/11/11 14:38:46
>>266
ここの住人が結集してフレームワーク作るってことか?

271:デフォルトの名無しさん
04/11/11 15:44:10
>>267
タイマーって何ぞや?
普通にキーイベントを取得するだけなら、タイマーとか必要ない筈だが。
アプリのHandleEventで、eCode==EVT_KEY、wParam==AVK_UPとかを検出すれば出るはず。
そこにブレークポイントかDBGPRINTF置いて、処理がそこに行ってないようであれば、
キーイベント検出の前に何かのコントロールのハンドルイベントでTRUEを返してる可能性有り。
ちなみに俺はW21Sなんだが、ジョグダイヤルでもちゃんと検出できてるぞぃ。

272:デフォルトの名無しさん
04/11/11 15:44:32
>>267
タイマーって何ぞや?
普通にキーイベントを取得するだけなら、タイマーとか必要ない筈だが。
アプリのHandleEventで、eCode==EVT_KEY、wParam==AVK_UPとかを検出すれば出るはず。
そこにブレークポイントかDBGPRINTF置いて、処理がそこに行ってないようであれば、
キーイベント検出の前に何かのコントロールのハンドルイベントでTRUEを返してる可能性有り。
ちなみに俺はW21Sなんだが、ジョグダイヤルでもちゃんと検出できてるぞぃ。

273:デフォルトの名無しさん
04/11/11 16:22:25
>>267
俺の方は70msでちゃんとキーイベントが来てたからタイマーの間隔は大丈夫だと思う。

>>271
タイマーコールバックを短い間隔で回すとキーイベントが来ないことがあるってなかったっけ?

274:271
04/11/11 16:50:35
>>273
ん〜タイマーは数秒以上でしか使ってないからわからん。
後は任せた。

275:267
04/11/11 16:58:36
>>268
>AVK_UPとDOWNでおk。
それだけ分かっただけで助かります。
ありがとうございました。
原因は別の所に…;

>>269
>ラボ行って試せ。がんばれ
それが一番なんですが、何せここは北海道…
もうすぐ雪が降りますわ…_| ̄|○

>>271-272
>タイマーって何ぞや?
製作中のアプリがゲームなので、
ゲームループ回すのにタイマーを使用してるんですよ。
んで、ループの頭で押しっぱなしやらを判定してます。

>ハンドルイベントでTRUEを返してる可能性有り。
他機種の上下キーによる動作は大丈夫なんで、
問題は無いかと…。

アドバイスからすると取得は問題なさそうなので、
違う箇所を検証してみます。
また何かあれば宜しくお願い致します。

276:デフォルトの名無しさん
04/11/11 17:20:39
>>267
あー、たぶんキーを押したとかのフラグ処理が悪い。
RELEASEのときに押したっていう情報は残らないで
そのキーが押されていない状態になるっていう処理になってないか?

277:デフォルトの名無しさん
04/11/11 17:26:40
質問させてください
Brewでゲームを開発しているのですが
「A5503SA」にてIWebで通信後、ゲームのスピードが重くなる
現象がでます。
他の機種(A5501T等)では、ゲームスピードが変わることはないので
リリースのミスなどはないと思うのですが
同じような現象で対応策などありましたら情報を宜しくお願いします。

278:デフォルトの名無しさん
04/11/11 17:33:39
>267
端末仕様書を見れ
どのキーがどのイベントに対応してるか載ってますよ

あと時間を窮する質問は掲示板ではしない法がよいかと思われ

279:デフォルトの名無しさん
04/11/11 17:57:04
>>267
BREWはキー押しっぱなしだとEVT_KEYイベントが断続的に発生するから

キー押されたらフラグ上げる
→タイマーイベントでフラグをチェック+処理
→フラグをクリア
→タイマーセット

でいいと思うが。
わざわざRELEASE拾う必要なくね?


280:267
04/11/11 17:58:53
>>276
>RELEASEのときに押したっていう情報は残らないで
>そのキーが押されていない状態になるっていう処理になってないか?
あー、ビンゴです…;
要は

EVT_KEY_PRESS  押したキーフラグ取得
EVT_KEY_RELEASE 放したキーフラグ開放
だと、
ゲームループ内で押しっぱなし等の確認処理を行う前に
フラグが消えている _| ̄|○|||

ってことでOKですか?

281:デフォルトの名無しさん
04/11/11 18:15:06
大体ソースが見えたな。
タイマーにかからないタイミングでキー連打したら、
全く動かないゲーム作ってるって事かw


282:デフォルトの名無しさん
04/11/11 18:15:56
>>267
そゆことだな。

283:デフォルトの名無しさん
04/11/11 18:39:43
>>270
欲しいなそれ。
むしろ作りかけの物をとりあえず公開して、
ああしようこうしような風に仕上げていっても良いかも試練。

へっぽこなモンだったら漏れも公開できますが。w

284:デフォルトの名無しさん
04/11/11 18:50:31
全てはへっぽこから始まる

285:デフォルトの名無しさん
04/11/11 23:05:04
いいね、フレームワーク。
皆でやっちゃいますか?

286:デフォルトの名無しさん
04/11/11 23:29:11
賛成。
STLPortの移植も…

287:デフォルトの名無しさん
04/11/11 23:37:45
ちっちゃい独自関数でもあると便利なんてのもありですな

288:デフォルトの名無しさん
04/11/12 00:01:17
今更かもしれないけど、自分はジョグだけはEVT_KEYで取ってた

289:デフォルトの名無しさん
04/11/12 02:07:16
BREWのバイナリサイズに上限はありましたっけ?
STLPortのライブラリをリンクすると結構でかくなりそうな気がするんですが

290:デフォルトの名無しさん
04/11/12 05:02:38
>>289
mod,sig,bar等とアプリが作成するファイル
全部含めて200KB(QVGA対応機は300KB)。

291:デフォルトの名無しさん
04/11/12 10:21:41
>>289-290
ストレージも、シェアも・・・
関係するファイルサイズ全て含めて200,300KBですよね。

292:デフォルトの名無しさん
04/11/12 14:14:07
>>289>>291はサービスガイドと開発ガイドを全然読んでないだろ。

293:デフォルトの名無しさん
04/11/12 16:07:17
タイマーのコールバック間隔とキーイベント破棄の関係について
サービスガイドに載ってる注意書きから抜粋。参考までに。

※ BREW2.1 対応機種では、50ms 程度の短いタイマ間隔でコールバックを繰り返すとキープレスイベ
ントが破棄される場合があります。
タイマ間隔を長くするなどのアプリ側でのチューニングが必要となりますのでご注意ください。

294:デフォルトの名無しさん
04/11/13 00:10:09
modてギャクコンできないのかな
うっかり古いソースを上書きしてもうた

295:デフォルトの名無しさん
04/11/13 00:18:52
一般にオブジェクトコードからCレベルのソースを復帰するのは至難の業。

296:デフォルトの名無しさん
04/11/13 13:10:30
とっとと思い出してコーディングした方が速い

っというか、仕事でやってるならバックアップぐらい
とっとけよ

297:デフォルトの名無しさん
04/11/15 12:43:46
>>293
30フレーム/秒は不可能というわけか。

298:デフォルトの名無しさん
04/11/15 15:28:48
良い機会だからCVSの導入または、毎日一回自動でバックアップを取るバッチを作るといいと思うよ。
ちなみにそう言うときはファイル名は backup-yyyymmdd.zip みたいにしてある程度世代管理してもファイル名がかぶらないようにすると良い。

299:デフォルトの名無しさん
04/11/15 15:32:07
>>297
可能だと思う。処理しきれない速度でイベントが到達すると、
many callbacks pending とか何かでイベントが破棄されるだけ。

だから、一回の処理が10〜30ms程度で完了するのであれば、30fpsは実現可能。

>>293の言ってるキープレスが破棄されるってのは、イベント処理待ちが多すぎて、
せっかく届いたキーイベントが無視されるってわけ。

だからタイマー間隔が長くても、一回の処理が遅すぎると結局キーイベントを取りこぼす可能性大。

300:デフォルトの名無しさん
04/11/15 17:23:05
エンドキーって終話キーとはちがうのですか?

301:デフォルトの名無しさん
04/11/15 17:45:05
Windowsみたいにメッセージをメインループ側から受け取る事ってできるっけ?

「秒間30フレーム」は可能かもしれないけど、
タイマー使うメッセージループて時点で「1/30秒で回ってくるメインループ」は
不可能な気がするんだが。処理が追いつく前提でも。


302:デフォルトの名無しさん
04/11/15 22:02:12
>>300
エンドキー=終話キーで、多分あってると思う。

>>301
確かに。出来たとしても、なんちゃって30fpsだな。w

303:デフォルトの名無しさん
04/11/15 22:48:01
Smallフォント対応機種向けのBREWアプリで、
Smallフォントを使用する方法はあるのでしょうか?

enumで定義されてる
AEE_FONT_〜
らには、それらしきものはないので、無理かと思いましたが、
どこかでエクストラスモールフォントを使用する方法を
見かけたような気がして……。

304:デフォルトの名無しさん
04/11/15 23:33:01
>>303
FAQだったはず

305:デフォルトの名無しさん
04/11/15 23:35:50
スマンカッタ、FAQだけだとわけわからんな
開発支援サイトのFAQと端末仕様のpdfを参照すれ
どれかのフォントと排他なんで使いづらいかもよ

306:デフォルトの名無しさん
04/11/16 00:08:17
プログラミングガイド50ページ以降嫁

307:デフォルトの名無しさん
04/11/16 00:43:23
>>304-305
ありがとうございます!助かりました。
既存フォントと差し替える形で使うのですね。


>>306
すみません、目視&検索で探しては見たのですが、
読み落としてしまったみたいです_| ̄|...○

308:デフォルトの名無しさん
04/11/16 10:04:36
そうなんだよ、一度読破しておかないとダメなんだよ。
検索や目視でひっかからないことがおおい。
「どこかにそんなこと書いてあったなぁ」というのだけが頼り。

309:デフォルトの名無しさん
04/11/16 12:53:34
>>301 >>302
マルチタスクの環境(BREWもカーネルがアプリの実行をスケジュールしてるから
これにあたるよね)でなんちゃってじゃないFPS管理なんてできないでしょ。
なんちゃってでも、処理速度が追いついてれば概ねその通りに動くんだから普通は30fpsといえると思うが。
#まあ実際現状の端末では30fpsでまともな処理は難しいと思うが

ちなみにBREWのコールバックって種類が多すぎ&統一性があまり無いから困るね。
さらにタイマーとか優先度が高いコールバックがあると、imageのデコード終了とかのコールバックは後回しになっちゃったりするし。
いっそのことVxWorksでも入れてくれると良かったんだが。

310:デフォルトの名無しさん
04/11/16 14:46:52
検証項目?のMALLOC後の戻り値を見るってやつなんですが
みなさまどういう実装してます?

これ後から気づいて。。

いま

char *a() {
    return (char *)MALLOC(128);
}

のような関数あるんですが。。どうしよう。。

311:デフォルトの名無しさん
04/11/16 15:12:08
オールBREW端末にらんで〜日立ソフトBREW GUI開発ツール
URLリンク(www.itmedia.co.jp)

世界初、日立ソフトがクアルコムのBREWR3.1対応
携帯電話向けGUI開発支援ツールを販売
〜携帯電話端末への組込み型BREWアプリケーション開発の生産性を飛躍的に向上〜
URLリンク(www.hitachi-sk.co.jp)

キタ━━(゚∀゚)━━!!!!

312:デフォルトの名無しさん
04/11/16 15:13:28
日立ソフト:アプリケーション開発フレームワークanyWarp
URLリンク(hitachisoft.jp)

313:デフォルトの名無しさん
04/11/16 15:18:53
URLリンク(k-tai.impress.co.jp)

314:デフォルトの名無しさん
04/11/16 15:23:20
>>310
ぬるぽだったら終了させればいいんじゃねーの?

315:デフォルトの名無しさん
04/11/16 15:23:37
ITmedia記事より。

> 価格は年間使用権契約で、1ライセンスあたり100万円弱を想定している。
> キャリアや端末メーカーから、アプリケーション開発やコンサルティングを
> 受託し、初年度5億円の売上げを目指す。

えーと...。


316:デフォルトの名無しさん
04/11/16 15:24:32
>>314
ガッ

317:デフォルトの名無しさん
04/11/16 15:39:09
KDDIのアプリ企画審査って厳しいんですか?
普通に動けばいいってもんじゃない?


318:デフォルトの名無しさん
04/11/16 16:04:16
この流れで1分でガッされるのか・・・

319:315=316
04/11/16 16:09:19
すみません、315書いてリロードしたらすぐ上のカキコが目に入ったもので脊髄反射で...。

320:310
04/11/16 16:12:17
ぬるぽで終わらせたいんですが
メッセージ出してうんぬんかんぬん。。。だとかなり直さないといけないので
どうしたものかと思ったのですが〜

やはり地道に書くしかないみたいですねー


321:315=316
04/11/16 16:25:36
>>320
今度もガッ

よく分かりませんがエラー発生時にメッセージ出さずにいきなり終了はNGですよ。
メッセージ出してなんかボタン押されたら糸冬了ってシーケンスにしとかないと。

>>317
そりゃもう。

322:デフォルトの名無しさん
04/11/16 16:28:22
基本的に何処のルーチンに於いても、
エラー検出して異常終了(再開)できる出口用意しといた方がいいと思う。
つかそれが普通だと思う。
ぬるぽ検出したら、上の出口につなげるだけ。

MALLOC以外にも、動的にメモリ確保する箇所は山ほどできるぞ。
つーかpngなりjpeg使う時点でヒープ使うし

323:310
04/11/16 16:47:27
むー結構大変ですねー
とりあえず終了用のclassを改造してみます。

ありがとうございまっした

324:デフォルトの名無しさん
04/11/16 16:52:05
>>322
(´-`).。oO(終了メッセージ出すとこでぬるぽしたらどうするんだろう)

325:デフォルトの名無しさん
04/11/16 16:58:32
>>324
終了用ダイアログ(IDialogでは断じてない)は最初に用意しておく、が正解。
最初にそれすら確保できないようなケースは知らん。

326:310
04/11/16 18:15:40

a = MALLOC(1);
b = MALLOC(2);
c = MALLOC(3);

例えばこんなコードでcでエラーが起きた場合、
aとbもFREEしないといけないんですよね。。。

めんどーひ

327:デフォルトの名無しさん
04/11/16 19:15:09
BREWのFONTって、文字の横幅は固定なのでしょうか?
固定っぽいけど、それは機種依存になるのかな?
今後、それは変わらないのでしょうか?

だれか教えてください  ペコリ

328:327
04/11/16 19:22:50
言葉足らずなので追記
可変長フォントなんてのがあり得るのか、知りたいのです。

329:デフォルトの名無しさん
04/11/16 20:28:12
固定ピッチかプロポーショナルかってことなら、固定ピッチだ。
また、LARGEは何ドット、NORMALは何ドット、という規定値もない。
具体的なドット数は機種によってバラバラなので端末仕様書で確認する。

330:327
04/11/16 20:58:32
>>329
ありがとう。
今後、プロポが導入されたとして、
デフォルトがプロポになると困るなぁ・・・って思ってたんだ。

331:デフォルトの名無しさん
04/11/16 21:34:12
URLリンク(www.k-mb.biz)

332:デフォルトの名無しさん
04/11/16 23:05:46
>>302
>エンドキー=終話キーで、多分あってると思う。
そうですよねthx。
でも検証のPDFのどっかのページに終話キーと
エンドキーが同じページに書いてあるんでつよ

検証の方法も検証してくださいこのバグヤロー

333:デフォルトの名無しさん
04/11/17 00:32:45
>>326
MALLOCを生で使うつもりなのか?
やめておくべきじゃないかと。

334:デフォルトの名無しさん
04/11/17 00:38:52
>>333
ゴムつけないとダメ?

335:デフォルトの名無しさん
04/11/17 00:52:42
>>333
使わないか?

336:デフォルトの名無しさん
04/11/17 01:25:43
>>334
ええ。何か(変な中断とか)あった時、(1つ1つ解放する)セキニンとるのは鬱陶しいしー

337:310
04/11/17 11:16:17
えーじゃぁゴム付きってどう書くんですか?

338:デフォルトの名無しさん
04/11/17 12:25:19
>>337
typedef struct _MyData {
 char* hogedata;
 char* foodata;
 ...
} MyDatal;

アロケートした領域は↑みたいな奴(開始時は0で初期化)に覚えておいて、
ヤバイときにまとめて開放する関数を用意しておくようにするだけ。
実行途中で細かくアロケートが必要な場合は、
最初にまとめてMALLOCした中から自力で切り出すのも大アリ。
(実行途中で「メモリが足りません」なんてかっこ悪杉)

339:デフォルトの名無しさん
04/11/17 13:11:57
男なら生だろ!

340:デフォルトの名無しさん
04/11/17 13:23:18
>>332
大半が使えないキーコード一覧見ると、「AVK_END」と「AVK_POWER」と別にあるよ。
エミュじゃ終話キー押したら即アプリ終了して、キーイベント発生しなかったけど。
端末仕様書には、この点何も書いていない。

つまるところ、「使うな」と言っているように思えるんだが…
使う必要あるの・・?

341:310
04/11/17 13:25:16
大変参考になりました。ありがとうございます。


342:デフォルトの名無しさん
04/11/17 14:15:27
>>340
プログラミングガイドのわかりにくい場所に書いてなかった?
EVT_KEYのイベントをきっちりかけばいいはず

343:デフォルトの名無しさん
04/11/17 18:42:19
byte a;

while(flg)
{
  a = MALLOC(1);
  FREE(a);
}

344:デフォルトの名無しさん
04/11/17 18:58:56
>>343
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /


345:デフォルトの名無しさん
04/11/17 19:30:18
終話キーのキーコードはアプリに通知されないので
割り当てられたAVK_XXXの値を意識する必要はない。

終話キーを押した場合、アプリにはEVT_APP_STOPイベントとして通知されるので
そこからアプリの終了処理を呼んでおしまい。
従ってEVT_KEYイベントで「終話キーが押された場合は…」といった処理は書かない(書けない)。

蛇足だが終話キーはキーリピートも発生しない。

>>344
パクッと行け!パクッと!

346:344
04/11/17 20:16:07
>>343
              \   ∩─ー、
                \/ ● 、_ `ヽ
                / \( ●  ● |つ
                |   X_入__ノ   ミ   a = MALLOC(1); でコンパイルエラー ・・・
                 、 (_/   ノ
                 \___ノ゙
                 / 丶' ⌒ヽ:::
                / ヽ    / /:::
               / /へ ヘ/ /:::
               / \ ヾミ  /|:::
              (__/| \___ノ/:::


347:デフォルトの名無しさん
04/11/17 21:08:42
>>343
         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   それと無限ルークマ―
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ

348:デフォルトの名無しさん
04/11/18 18:57:53
>>345
訂正ありがと。カンチガイしてた。
つーかまたBREWやりたいんだけど、しばらくできそうにないや

349:デフォルトの名無しさん
04/11/19 12:35:15
BREW2.1で3Dをする場合は何が必要になるのですか?

OpenGL ESは3.0からですよね?
2.1だとI3Dを使うと思うんですが、どこにもstruct _I3Dの実体が見つからないのですが。

350:デフォルトの名無しさん
04/11/19 13:19:43
ちとすまん、機種依存情報って何処らへんに載ってたっけ?
いつしかExcelの資料見た覚えがあるんだが…手持ちに無いOrz
どうもA5505SAでIDISPLAY_MeasureText()が正常な値を返して来ないっぽいんだが。。。


351:350
04/11/19 13:42:07
解決しますた。
どうも全角でも半角の幅が帰ってきてるっぽいんで、
半角のサイズ×2で誤魔化した。
他の機種は大丈夫だったかな… 何か情報あったらお願いします。


352:デフォルトの名無しさん
04/11/19 15:05:34
>>349
I3Dをサポートする端末は国内に無い
なお、I3Dは"AEEINTERFACE(I3D)"というマクロで定義されている

OpenGL ESは別にBREWのバージョンとは関係なく端末でライブラリを実装すれば
2.1でも動く
しかしいずれにせよエイチアイのMascot CapsuleがBREW上に実装されている以上
これらのライブラリを直接呼ぶ必要性は普通は無い

353:デフォルトの名無しさん
04/11/19 18:42:02
>>352

つまり、現状で3Dを使ったアプリを作る場合は
Mascot Capsuleを使うしかなようですね。
ありがとうございました。

354:デフォルトの名無しさん
04/11/19 20:00:15
>>350
A5505SAでIDISPLAY_MeasureText使いまくりのアプリを
作ったけれど、そんなバグはなかったし、検証も通ったよ。
他機種でも同一バイナリで問題なく動いているしなあ。

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

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

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

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

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


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

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

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


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

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

ご迷惑おかけしますた。

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

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

366:デフォルトの名無しさん
04/11/21 03:09:13
URLリンク(www.geocities.jp)

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

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

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


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

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

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


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


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


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


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

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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


382:デフォルトの名無しさん
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:デフォルトの名無しさん
04/11/26 18:36:34
>>382
検証3回目からは20万円(税別)

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

405:デフォルトの名無しさん
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
04/12/02 18:56:27
う〜ん、ほんのちょっとだけ ITRANSFORM_TransformBltSimple() の方が楽そうだなぁ・・・

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

ちなみにIGRAPHICS_StretchBlt()はバグありなのでその意味でも使えません。
URLリンク(brewforums.qualcomm.com)

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

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

WARNING: App Callback Pending(数字)

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

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

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

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

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

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

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

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

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

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

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

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

415:デフォルトの名無しさん
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
04/12/04 16:46:29
>>414
4. は、412 氏が上手くできなかった SUSPEND 時保存の改善案。

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

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

417:412
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
みんな頑張れよ

URLリンク(next.rikunabi.com)

420:デフォルトの名無しさん
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:デフォルトの名無しさん
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:デフォルトの名無しさん
04/12/08 20:06:50
エミュレータでは問題なく動いてるアプリが
実機でいきなりMemory Accessで落ちるんですけど
原因って何でしょう?

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

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

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

430:デフォルトの名無しさん
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:デフォルトの名無しさん
04/12/09 03:09:57
>>431
とりあえずMIFは?

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

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


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5396日前に更新/284 KB
担当:undef