NintendoDS(NDS)非公式開発 Part2
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2007/04/06(金) 07:28:10ID:0HAbZjic初心者歓迎。質問歓迎。英語苦手な人歓迎。冷やかし歓迎。ネカマ歓迎。
資料、リンク等
http://nocash.emubase.de/gbatek.htm
http://www.bottledlight.com/ds/index.php/Main/HomePage
http://www.helloworld.jp/~duke/nintendo_ds/
開発環境
http://www.devkitpro.org/
http://sourceforge.net/project/showfiles.php?group_id=114505
関連スレ
ゲームボーイアドバンス(GBA)開発@ゲ製板(避難所)
http://bbs.gamdev.org/test/read.cgi/gamedev/1055111303/
ゲームボーイアドバンス(GBA)非公式開発 Part2
http://pc5.2ch.net/test/read.cgi/gamedev/1099119005/
前スレ
http://pc11.2ch.net/test/read.cgi/gamedev/1113780562/
0385Moonlight
2007/11/19(月) 04:04:16ID:m1125lP2長文失礼します。
単にある区切りの時間を調べるだけなら、次のような感じでどうでしょうか。
__attribute__((noinline)) static void PrfStart(void)
{
TIMER0_CR=0;
TIMER0_DATA=0;
TIMER0_CR=TIMER_ENABLE | TIMER_DIV_1;
TIMER1_CR=0;
TIMER1_DATA=0;
TIMER1_CR=TIMER_ENABLE | TIMER_CASCADE;
}
__attribute__((noinline)) static u32 PrfEnd(void)
{
vu32 t0d=TIMER0_DATA;
vu32 t1d=TIMER1_DATA;
u32 clk=(t1d<<16) | t0d;
double dus=clk/((double)33513982/1000/1000);
_consolePrintf("prf %6dus %dclk.\n",(u32)dus,clk);
return(clk);
}
(改行多すぎで怒られたのでもう一つ追加します)
0386Moonlight
2007/11/19(月) 04:05:11ID:m1125lP2TIMER_DIV_1で長時間だと16bitオーバーフローするのでカスケードで使いました。最長約128秒まで計測できるはずです。
時間表示はマイクロ秒(1/1000000秒)単位で、ベースクロックは約33MHz単位です。
たぶん50クロック分くらいオーバーヘッドがあると思いますので、BIASは+2マイクロ秒くらいになると思います。
全ての関数の出入りをトラップして入れ子OKなプロファイラも作ってみたのですが、それなりな規模でギリギリまで最適化しなきゃいけないプロジェクトがないので使いませんでした。
様子見だけなら次のURLを流し読みしてみて下さい。使い道がありそうならソース公開します。
http://mdxonline.dyndns.org/archives/2007/10/post_1964.shtml
■ このスレッドは過去ログ倉庫に格納されています