NintendoDS(NDS)非公式開発 Part3
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2008/04/08(火) 07:05:13ID:MngpkM4u初心者歓迎。質問歓迎。英語苦手な人歓迎。冷やかし歓迎。ネカマ歓迎。
資料、リンク等
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/1175812090/
0109名前は開発中のものです。
2008/05/10(土) 16:01:10ID:Dsk0ZCGW0110名前は開発中のものです。
2008/05/14(水) 20:17:47ID:HEb7Ld7s基本的には、ただコンパイルして新しいdswifiとリンクさせてやるだけでネット回りの問題は解決する模様
しかし相当前の(2006年ごろ)のlibndsで動くように作られていたのでdevkitarm r23対応が地味に面倒くさい
今、ttfフォントファイルを使用した実装にしてみようかと改造中・・・
0111名前は開発中のものです。
2008/05/15(木) 01:55:24ID:Y7BElhp0SpriteEntry内のattribute2のタイルインデックスについてお聞きしたいことがあります。
VRAM上の特定の位置にある画像を指定する為にタイルインデックスを指定させ、
画像を設定していますがその上限は10ビット(1024)となっていました。
それ以上の大きいインデックス値に存在する画像を扱いたい場合、
タイルインデックス以外の指定方法はあるのでしょうか?
それとも、必要に応じて書き換えを?
ご教授お願いいたします。
0112名前は開発中のものです。
2008/05/15(木) 04:09:12ID:9eTY5ohq基本的にはない。
変則的な方法だと
(1)別のBGに別のキャラクタベースを割り当て、そこに表示して合成する
(2)ラスタ割込みで、途中からキャラクタベースを書き換える
等があるが、
(1)はBGを無駄遣いする(空きBGがあるなら問題はないが)
(2)は同一ラスタ中で混在できない
という問題がある。
要するにキャラクタベースを切り替える方法。
だがそもそも、32x24=768 しか同時にキャラクタを表示できない(表示するスペースが
それしかない)のだから、1024で足りるじゃないか…って思う。
使う分だけ書き換えればいいじゃんって話。
あと揚げ足取りのようだがタイルインデックスの上限は1023。
0113名前は開発中のものです。
2008/05/15(木) 08:45:30ID:r+DVA4aK0114名前は開発中のものです。
2008/05/15(木) 09:56:18ID:KSCa8HQG>>113
情報ありがとうございます。 基本的にはないんですね、開発者の技量次第ですか。
BGについては、まだ将来どう使用するか未定なので今は利用できそうにはありません。
もう一つのラスタ割り込み、ということはIRQ_HBLANKですか。
こちらはそういう用途でも利用できたんですね。
パレット書き換えによる多色表現とかだけだと思ってました。
私はキャラクターがぬるぬる動くアクションゲームでもと思っており、
1キャラのアニメーション量が多いのでこんな質問をしました。
8ビットのプレイヤーキャラだけでインデックス使い切る
↓
4ビットまで減色
↓
プレイヤーキャラの画像領域を縮小して特定範囲だけを使用
↓
いや、知らないだけで実はスプライト用のバンク切り替えがあるんじゃないか?と思い >>111
このような流れです。
>タイルインデックスの上限は1023
0〜1023なので上限は確かに1023でしたね。 お恥ずかしい。
0115名前は開発中のものです。
2008/05/15(木) 11:49:15ID:o6NuskXP0116名前は開発中のものです。
2008/05/15(木) 14:41:27ID:cMc7dGA+最後まで続かないと思われ
0117名前は開発中のものです。
2008/05/15(木) 15:41:28ID:dIxlNCjsThere are a number of improvements
* binutils updated to 2.18.50
* gcc updated to 4.3.0
* grit updated to 0.8
* ndstool now uses default.arm7 from libnds directory
* newlib multibyte code enabled with C-UTF8 locale
release 23が出てるけどね
0118名前は開発中のものです。
2008/05/15(木) 17:45:22ID:993lGL+wアニメーションパターンが多いなら
表示するパターンだけVRAMに転送して毎回インデックスを更新すればいいんじゃない?
もしDISPLAY_SPR_2Dで作ってるならDISPLAY_SPR_1Dに切り替えた方が結果的に楽になると思うよ
0119名前は開発中のものです。
2008/05/15(木) 19:20:04ID:dNoJ3Z5k当初から1Dでやっており、つい数日前にご指摘なさっている手法に至って
プレイヤーキャラのアニメーションをまかなうようになりました。
VRAM_AやBの128キロバイトをフルに活用できると思っていただけに
タイルインデックスの使用上限にはかなりショックを受けています。
画像のビット深度が倍になるとインデックスの消費量も倍(?)になりましたし
「あー、だからDSになっても16色っぽい主人公がドラキュラ退治するのか」と
納得したような、しないような。
(それでも開発自体は本業より楽しいから問題は無いのですが)
0120名前は開発中のものです。
2008/05/15(木) 20:01:41ID:993lGL+wまぁ元々GBAと互換を保つための機能だからその名残が残ってるのは仕方ないよね
SpriteEntry内にインデックス拡張フラグを入れる余地は全く無いし
0121名前は開発中のものです。
2008/05/15(木) 20:43:59ID:9eTY5ohqごめん。スプライトの話だったんですね。
よく見るとSpriteEntryと書いてありましたね。
BGの話かと思って勘違いしてました。
0122名前は開発中のものです。
2008/05/15(木) 23:17:24ID:KSCa8HQG#include <nds/arm9/sprite.h>を覗いた上での
最後の悪あがき的な質問でしたから。
教えてくださる先達に横柄な態度はできませんよ。 こちらは無知ですし。
・・・まぁ、職場にいる先輩PGには慇懃無礼ですが(・∀・)
>>121
たとえ見当違いであっても、
お教えくださったその知識、知恵はありがたいものです。
いつか役立たせていただきます。
0123名前は開発中のものです。
2008/05/17(土) 21:44:28ID:meJQ1fpF0124名前は開発中のものです。
2008/05/20(火) 11:24:28ID:xIWP/ob70125名前は開発中のものです。
2008/05/20(火) 14:01:46ID:Mu+Z8Ipo0126名前は開発中のものです。
2008/05/20(火) 15:23:31ID:RWit6ryT凄い勢いで絵を描くから中身を作ってくれ
ってんなら協力者は出てくるかもしれないけどなw
0127名前は開発中のものです。
2008/05/20(火) 16:44:47ID:xIWP/ob7学習データが圧倒的に足りないんです、悲しいぐらいに。
とりあえず今はTomoeのデータ使わせてもらってるんだけど
素のTomoeのデータはとてもじゃないけど普通に使えるレベル
じゃないんです。
例えば、書き順がめちゃくちゃ
「止」「上」は、縦線から書くのがたぶん正しい書き順なんだろうけど
tomoeのデータだと、この2つは横線から始まってるし
かとおもったら「歩」に乗っかってる「止」の部分は縦線から始まってる。
「斗」と「科」の書き順も逆になってたり、バラバラで統一されてないし。
まぁ書き順はエンジンの方でなんとでもなるんだけど
もっと酷いのが「旨」
「ヒ」の横棒の部分、は右から左にはらうのが正しい書き方だとおもうんだけど
「指」と「旨」でバラバラだったり、こういうの直してるだけで泣きそうになる。
0128名前は開発中のものです。
2008/05/20(火) 16:47:13ID:xIWP/ob7まぁ出来る範囲でコツコツがんばるよ('A`)
0129名前は開発中のものです。
2008/05/20(火) 17:22:21ID:sqxB6/mF「止」「上」って上側の横線から書くんじゃないの?
0130名前は開発中のものです。
2008/05/20(火) 17:25:19ID:mzO2jUKQどっちが正しいか迷ったので、"カタカナ 書き順 ヒ"でぐぐってみた。
ttp://www.winttk.com/kakijun/katakana/10027.htm
右から左にはらうのが正しいようだけど、定着してない様子。
どっちからはらっても認識するようにしたほうがいいかも。
これ以外にもこういう文字はあるんだろうなぁ。
0131名前は開発中のものです。
2008/05/20(火) 18:23:20ID:mk1SjfwX市販DSソフトで全然認識しなくていらいらしたことがある
書き順が違ってたらしく書き順変えたらすぐ認識した
0132名前は開発中のものです。
2008/05/20(火) 21:09:22ID:xIWP/ob7せめてSDカードに学習データを保存できるぐらいまでに完成したら
ここで協力募って学習データ集めさせて、っていうのはありですか('A`)
それよりも泣きたいのは、素のTomoeの辞書データに
カタカナ・ひらがなの濁音拗音がぜんぜん無いンですヴヴヴっヴ
今、がんばってシコシコ作成中 orz
>>127
大漢語林っていう、重さ5kぐらいある鈍器みたいな辞書で調べたら
「上」「止」「歩」いずれも縦の方が筆順が先でした。
筆順なんて国とか時代で違うかもしれないし、本当かどうかはワカンネ
>>131
今考えてるのは、デフォルトの検索は、筆順強制で
それで認識されなければ、書き順フリーで検索して結果を学習
できれば、その学習データをクレクレ君('A`)
0133名前は開発中のものです。
2008/05/20(火) 21:41:56ID:mk1SjfwXDS版もSourceForgeでやってほしいわ
0134名前は開発中のものです。
2008/05/20(火) 22:08:14ID:3kt9IMadむしろうまくいかなくなると思われ
0135名前は開発中のものです。
2008/05/20(火) 23:53:39ID:xIWP/ob7正直、偉そうなこと言ってるけど、完成度低いんだよホントに・・・
実際に触ってみると分かるよ
ttp://www.mediafire.com/?pwfnmymd0x7
バグ多いけど目つぶってね orz
この流れが続くと痛いから、ぼちぼちROMに戻るデス
0136名前は開発中のものです。
2008/05/21(水) 03:37:24ID:bvk1AfAxメモリの空き容量を調べたいと思って、mallocとfreeを繰り返してNULLが帰ってくるまでループ回すってやり方を試してみたんですが、正しい結果が得られないみたいなんです。
何かいい方法はありますか?
0137名前は開発中のものです。
2008/05/21(水) 07:13:30ID:dwc8/njxメモリの空き容量っていうのが、曖昧でよくわからない
確保できる「最大の」容量が知りたいのか
確保できる「合計の」容量が知りたいのか
mallocとfreeを繰り返して、っていうのはつまりどういうこと?
メモリはmalloc/freeを繰り返すうちに断片化されていくから
最大の容量≠合計の容量になるのは分かるよね?
最大の容量がしりたいなら
for(size = 40000000; malloc(size) != NULL; size--);
これで調べられるとおもう。
合計の容量がしりたいなら、malloc(256)を何回繰り返せるかカウント
してみたらどうでしょう。
0138名前は開発中のものです。
2008/05/21(水) 07:25:04ID:dwc8/njxもし真ん中に曙0.2人分サイズの子供が座ってたら
空いてるスペースは曙2.8人分ぐらいだけれども
実際に座れるのは2人だよね。
malloc() free() を繰り返すっていっても
同じサイズで何度も繰り返すのか、それとも少しずつ
確保するサイズを増やすの、減らすの?
0139名前は開発中のものです。
2008/05/21(水) 08:28:21ID:bvk1AfAx今現在取得できる連続したメモリの空き容量ってことで、こんなのでやってました。
これで実行したら、場合によっては4194304以上の数字が出たりします。
んで、whileから抜けれて無いみたい。
char *m_ptr;
m_ptr=NULL;
int cnt=1;
while (1) {
m_ptr=(char*)malloc(cnt*1024);
if (m_ptr==NULL) break;
free(m_ptr);
m_ptr=NULL;
cnt++;
iprintf("mem:%d\n",cnt*1024);
}
iprintf("memfree:%d\n",cnt*1024);
0140名前は開発中のものです。
2008/05/21(水) 08:29:24ID:bvk1AfAx0141名前は開発中のものです。
2008/05/21(水) 09:13:18ID:WmlOwoHY物理メモリ境界をオーバーしてもNULLを返さないような実装になってんじゃね?
0142名前は開発中のものです。
2008/05/21(水) 11:39:45ID:dwc8/njxメインRAMで使える領域は、正確には4Mじゃなくて
後ろの方をシステムが使用してるから(4M - 4k)だよね
/devkitPRO/devkitARM/arm-eabi/lib/ds_arm9.ld を見ると
# MEMORY {
# rom : ORIGIN = 0x08000000, LENGTH = 32M
# ewram : ORIGIN = 0x02000000, LENGTH = 4M - 4k
# dtcm : ORIGIN = 0x0b000000, LENGTH = 16K
# itcm : ORIGIN = 0x01000000, LENGTH = 32K
# }
# __ewram_end = ORIGIN(ewram) + LENGTH(ewram);
# __eheap_end = ORIGIN(ewram) + LENGTH(ewram);
実際に、こう書いてあるし。
だから、2000000h 〜 3FFF800がmalloc()で確保される空間なんだろうが
/libnds/include/ipc.h をみると
# static inline
# TransferRegion volatile * getIPC() {
# return (TransferRegion volatile *)(0x027FF000);
# }
ヒープの後ろ4096kを、なんか無断でつかっちょる
前々から、これってmalloc()で27FF000h〜が確保されたら
ぐちゃぐちゃになるんじゃないかってヒヤヒヤしてるんだけど
どうなのこれ? 大丈夫なの?
0143名前は開発中のものです。
2008/05/21(水) 11:41:39ID:dwc8/njxじゃなくて
2000000h 〜 2FFF800
に脳内変換しておいてくだしあ orz
0144名前は開発中のものです。
2008/05/21(水) 17:00:30ID:oS9AT3QG消えてる?
0145名前は開発中のものです。
2008/05/21(水) 20:53:26ID:bvk1AfAxちょっと困っちゃったかもです。
考えてみます。
0146名前は開発中のものです。
2008/05/22(木) 00:11:54ID:0fQn8Ipy0147名前は開発中のものです。
2008/05/22(木) 01:40:27ID:UbCa5G5P使えるかどうかは知らん
0148名前は開発中のものです。
2008/05/22(木) 07:45:52ID:x3H0CM1wld が割り当てる RAM の容量は 4M-4k なんだけど、そうするとその空間は
02000000-023fefff じゃね?
これだと IPC のアドレスが変なんだけど、それは 02400000 からが RAM の
ミラーになってるからで、027ff000 は 023ff000 にあたるので問題無し
>>145
>>137 じゃだめなの?
0149名前は開発中のものです。
2008/05/22(木) 08:16:21ID:UEUlTLpOforの方は、4Mから徐々に確保する量を減らして、NULLが帰ってこなかったらそれが連続して取れるメモリ容量って意図だと思うんですが、
初めの確保できないはずの4Mの時点でNULLが帰ってこないので、ループが終わってしまいます。
256づつってのも、確保されたメモリが必ず連続したものとは限らないので、今回の趣旨には合いません。
0150Moonlight
2008/05/22(木) 18:31:31ID:GVceNApOsafemalloc_nocheck関数が、私がそれなりに安心して使えると信じて使っているmalloc関数です。
atypeっていうのは、バッファアンダー&オーバーラン、解放し忘れと二重解放を検出するために私が勝手に作った部分ですので、読み飛ばして頂いて問題ありません。
読みづらいと思いますが、もし参考になれば見てみてくださいませ。
DevKitProのmallocが信用できればこんなに苦労しないのに。標準関数をオーバーライドする技術があれば…。(苦笑
0151名前は開発中のものです。
2008/05/22(木) 19:33:07ID:0fQn8Ipyこんなに重いmalloc関数、使ってられないんじゃないか?
0152Moonlight
2008/05/22(木) 20:00:45ID:nu+6rnes仰る通り本当に重いです。でも安全性を最も気にしていることと、リソース絡みのバグは非常に見つけづらいこともあって、私はこのスタイルを愛用しています。
本当に処理速度が必要な一番内側のループで仕方なくmallocする必要があるときは、ある程度大きなブロックの最初で空きメモリを計算しておいて…あぁ面倒くさい。(苦笑
毎度毎度フラグメントしないようにmallocする順番を考えるのも面倒くさいですし。
メモリをぎりぎりまで使おうと思わなければ(例えば動的キャッシュなどを考えなければ)普通にmallocすれば大抵は動くと思うのですが…。
って愚痴っぽくなってきたので退散します。蛇足失礼しました。
0153名前は開発中のものです。
2008/05/22(木) 20:10:06ID:0fQn8Ipyなるほど、さすがに今まで苦労している人は違いますね。サンクス。
俺は今までmallocの問題を感じたことがなかったんだけど、
問題がどこにあるのか完全に切り分けることができれば、
new演算子や完全に独立したmalloc関数を作るのがいいんじゃないか?
0154136
2008/05/22(木) 20:43:09ID:UEUlTLpO試しに、プログラムにそのまま組み込んでみます。(当然変更する部分は変更して)
上手くいった場合、組み込んだままプログラム公開とかしても問題ないでしょうか?
0155Moonlight
2008/05/22(木) 21:28:14ID:nu+6rnesもちろんスタブをオーバーライドするのが一番いいのでしょうが、標準関数に手を加えるのはDKPがバージョンアップしたときにトラブルの元になりそうと思ってやめてしまいました。
libfatとかはfopenなどを上書きしていましたがなんとなく気持ち悪くて。(プログラマにあるまじき感覚的表現
DevKitProというか、libndsの更新リストが信用でき(ry
>>154
速度や安全性が十分に要求水準を満たすことを確認できたときは、自由に使っていただいてOKです。
私に報告することも、なにか表示する必要もありません。
atype絡みはばさっと切っちゃうが吉ですたぶん。
0156名前は開発中のものです。
2008/05/22(木) 22:45:41ID:x3H0CM1wmalloc のアルゴリズム以前の別の問題がある気がするんですが…
少なくともうちでは >>137 風のプログラムも >>139 も動いてます
環境は devkitARM release 23 b とそれでコンパイルした libnds 20071023
0157136
2008/05/22(木) 23:30:26ID:UEUlTLpOうちはDevkitPro release 21 (DevkitARM r21)なんで、そのせいとか?
ちなみに、>>139 のを実行したら、値がいくらって出てますか?
0158名前は開発中のものです。
2008/05/23(金) 06:04:27ID:lXYT/wckソースと r23b でコンパイルしたものをあげておきます
ttp://gamdev3.hp.infoseek.co.jp/cgi-bin/up/No_0271zip.html
0159136
2008/05/23(金) 08:34:48ID:XZvO7U4oDLして試してみたところ、こっちでr21でコンパイルしたものを実行したら4128768の値が出ました。(forのタイプ)
となると、今作ってるプログラムが怪しいってことなのかな?
プログラムでどこかシステムに関わるようなところを潰している?
根本的に何か間違ってる?
0160名前は開発中のものです。
2008/05/23(金) 09:03:10ID:gPnkFXwSmalloc と free のペアをコンパイラが認識して、最適化で潰されてるってことはない?
コンパイルついでにアセンブリを吐かせてみるとか。
0161名前は開発中のものです。
2008/05/23(金) 10:06:00ID:1BDliqaCmalloc()やfree()はコンパイラから見たら単なる関数呼び出しだから、最適化で消えることはない。
しかも、freeされないパスもあるわけだから、なおさら最適化で消えるはずはない。
0162名前は開発中のものです。
2008/05/23(金) 16:12:01ID:JQlc5Wg20163名前は開発中のものです。
2008/05/23(金) 16:19:54ID:GlW5b/3a0164名前は開発中のものです。
2008/05/23(金) 16:43:13ID:dp7Y5NLpGBAの方でスレ違いだけど
自分はこんな感じで作っています。
ttp://akkera102.sakura.ne.jp/test/mymem.txt
動的確保してないし
そのままだとコンパイルできないけど
参考までに見てやってください。
0165名前は開発中のものです。
2008/05/23(金) 17:22:32ID:JsGk0+Q70166名前は開発中のものです。
2008/05/23(金) 21:51:38ID:kcI1LowVもう手書き認識エンジンをC++つかって書いちゃったんですけど
もしかして、信頼性やばいとかいう話ですか・・・( ´Д⊂ヽゥエエェ
0167名前は開発中のものです。
2008/05/23(金) 22:05:41ID:kcI1LowVhttp://www.mediafire.com/?jl0zzomezig
認識精度と認識にかかる時間でけっこう苦しんだんですが
問題なく使えるレベルにまでなんとか持っていけたので
この土日に頑張れれば、ソース投下できる気がします。
ただし
相変わらず辞書にTomoeから引っ張ってきたデータを使っているので
カタカナが入っていません。ひらがなも濁音拗音が入っていません。
アルファベットも入っていません orz
0168136
2008/05/23(金) 22:20:09ID:XZvO7U4oうちのプログラムがおかしい可能性が大です。
外部関数等を色々引っ張ってきて組み込んだりしてたので、その影響なのかもしれません。
まだ解決には至ってませんが、あとは自分で頑張って調べてみたいと思います。
色々情報等ありがとうございました。
0169136
2008/05/24(土) 09:57:36ID:SU4ROGma自分のプログラムではmallocを使ってメモリを確保していたのですが、他から持ってきたソースがnewを使っていたみたいです。
newを使っていた部分をmallocに変更したら、正しい数値を返すようになりました。
色々とご迷惑をおかけしました。
0170名前は開発中のものです。
2008/05/24(土) 17:05:00ID:vwEWTo+E0171名前は開発中のものです。
2008/05/27(火) 10:41:54ID:YZ7IFeP9それとも、devkitではnewにはdelete、mallocにはfreeと使い分けてても駄目なのかな?
VC++とかは対応がしっかりしてれば平気なんだけど。
(もちろん、混在しないほうが問題を起こさないで済みますね。前に似たようなトラブルで痛い目に)
0172名前は開発中のものです。
2008/05/29(木) 13:34:28ID:yLtThVzs0173名前は開発中のものです。
2008/06/02(月) 20:30:47ID:WvDNfNGaHSP移植してみたけどこのスレ的には要らない子ですよね。
0174名前は開発中のものです。
2008/06/02(月) 23:33:18ID:ND3GH5J+wktk
要らない子だなんて言わないでさぁ。
0175名前は開発中のものです。
2008/06/03(火) 20:16:53ID:A0JtPb+mhttp://peppermint.jp/products/hsp/
スプライトとタイルエンジンが手抜きなのも一因なんですが
そもそものインタプリタの性能的にアクションゲームは厳しそうです
0176名前は開発中のものです。
2008/06/05(木) 01:58:55ID:2eUO7g6w0177名前は開発中のものです。
2008/06/05(木) 15:10:16ID:9maHgBmq0178名前は開発中のものです。
2008/06/08(日) 23:21:51ID:uru8nGCotypoあるよ。
郡 → 群
0179名前は開発中のものです。
2008/06/09(月) 22:02:37ID:ly2i6a0dthx。直しました。
0180名前は開発中のものです。
2008/06/12(木) 00:48:39ID:abLtMVX/できればサンプルコード、キボン
0181名前は開発中のものです。
2008/06/12(木) 03:05:39ID:Yl90CHys0182名前は開発中のものです。
2008/06/12(木) 03:26:37ID:ERHI+GZc片方はソフトでがんばるしかないんじゃないか?
0183名前は開発中のものです。
2008/06/12(木) 08:20:05ID:59gOD9Qcフレームレートは半分になるけど。
0184名前は開発中のものです。
2008/06/12(木) 10:02:00ID:Au+VrmBWググッてみたけどPAlibではR21以上では使えないみたいなのしか出てこなかった…PAlibは使ってないのに。
C:\devkitPro\examples\nds\Graphics\2D\hello_world>make
linking hello_world.elf
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.3.0/../../../../arm-eabi/lib/th
umb/ds_arm9_crt0.o: In function `CIDLoop':
(.init+0x2ac): undefined reference to `initSystem'
collect2: ld returned 1 exit status
make[1]: *** [/c/devkitPro/examples/nds/Graphics/2D/hello_world/hello_world.elf]
Error 1
make: *** [build] Error 2
0185名前は開発中のものです。
2008/06/12(木) 11:53:49ID:hPJuu01mアップデートしてmakeしてみた
D:\devkitPro\examples\nds\Graphics\2D\hello_world>make
main.cpp
arm-eabi-g++ -MMD -MP -MF /d/devkitPro/examples/nds/Graphics/2D/hello_world/buil
d/main.d -g -Wall -O2 -mcpu=arm9tdmi -mtune=arm9tdmi -fomit-frame-pointer -ffast
-math -mthumb -mthumb-interwork -I/d/devkitPro/examples/nds/Graphics/2D/hello_wo
rld/include -I/d/devkitPro/examples/nds/Graphics/2D/hello_world/build -I/D/devki
tPro/libnds/include -I/D/devkitPro/libnds/include -I/d/devkitPro/examples/nds/Gr
aphics/2D/hello_world/build -DARM9 -fno-rtti -fno-exceptions -c /d/devkitPro/exa
mples/nds/Graphics/2D/hello_world/source/main.cpp -o main.o
linking hello_world.elf
built ... hello_world.arm9
Nintendo DS rom tool 1.38 - May 15 2008
by Rafael Vuijk, Dave Murphy, Alexei Karpenko
built ... hello_world.nds
D:\devkitPro\examples\nds\Graphics\2D\hello_world>
0186名前は開発中のものです。
2008/06/13(金) 00:32:45ID:hTZLLvJH検証サンクス。
どうやらインストールに失敗していただけのようだ。
環境変数を弄くって再インストールしたらできた。
0187名前は開発中のものです。
2008/06/13(金) 01:25:41ID:I9zeYfhZチマチマ描いてるみたいですが、これが最速なんですかね。
それとも6144頂点で頭打ちするから描画速度を心配する必要はないのかな?
0188名前は開発中のものです。
2008/06/13(金) 23:43:19ID:edkaQlWT0189名前は開発中のものです。
2008/06/14(土) 09:45:26ID:bjLZXeDG0190名前は開発中のものです。
2008/06/14(土) 19:47:28ID:b5JMntJj0191名前は開発中のものです。
2008/06/16(月) 00:09:18ID:h5aN3++zわかた、ども
0192名前は開発中のものです。
2008/06/16(月) 20:07:21ID:Fi+4mDrr0193名前は開発中のものです。
2008/06/17(火) 22:49:31ID:QaaOCC1U教えて、エロイヒト!
0194名前は開発中のものです。
2008/06/19(木) 11:12:46ID:aMY2EDOcというかとりあえずそっちから理解するべき
0195名前は開発中のものです。
2008/06/20(金) 08:22:45ID:YtCEI6xK私は実機で毎回テストしているんですが、microSDカードの付け替えが面倒で、
出来ることならばエミュレータ上でテストしたいんですが、
エミュレータはアダプタに対応していないので困っています。
何かいい方法を実践されている方がいらっしゃれば、ぜひ教えてください。
0196名前は開発中のものです。
2008/06/20(金) 20:53:20ID:IKyKkzlUかなり前の記憶なので、よく覚えてない。
エミュ使わずに実機で試すってのなら、DSFTPとかでDS側にプログラム持ってくるとか。
金かけてもいいってのなら、DS-RAMアダプターも選択肢の一つかもね。
0197名前は開発中のものです。
2008/06/20(金) 22:22:14ID:X2WfPJnz0198名前は開発中のものです。
2008/06/21(土) 02:38:49ID:7hV1kaObスプライトの数が32個を超えると画像の一部が欠けてしまう。
特に32個に制限はなかったと思うけれど、何が原因かわかる人いますか?
0199名前は開発中のものです。
2008/06/21(土) 02:50:47ID:1eIWMQ3qSCALEしても規定範囲を超えないオブジェクトや、ROTATEではみ出た部分が重要でない場合は、DOUBLEフラグを外すのがお手軽な対応です。
ここらへんは(NDSはGBAとほぼ同じなので)正直日記さんを読むと詳しく書いてあるのでお勧めです。
HBLANK/VBLANK期間内のみVRAMにアクセスする設定にするのも道が開けるかもしれません。
BGを4枚使い切ることがないのであれば、巨大オブジェクトの一部をBG3/BG4に展開してしまうのも手だと思います。
0200名前は開発中のものです。
2008/06/21(土) 03:16:03ID:7hV1kaObあ、なるほど。32個ではなくて並びすぎだったのか。
情報ありがとうございます、ROTATEを外して対応してみます。
0201名前は開発中のものです。
2008/06/21(土) 13:56:37ID:TKydpBdAREG_DISPCNTのBIT23を0にしたときは1414ドット・・・のはず
DOUBLEフラグを付けると32ドットのスプライトならscaleに関わらず64ドット相当になり
64ドット*32個で2048ドットなのでオーバーした分が欠ける
0202名前は開発中のものです。
2008/06/21(土) 14:12:05ID:TKydpBdAREG_DISPCNTにスプライトVRAMを256Kまで使えるようにするフラグがある
インデックス自体は増やせないが、インデックスのポインタサイズを2〜8倍に出来るので
画像のビット深度を上げても低いときと同じ量のキャラクタ数が格納できる
0203名前は開発中のものです。
2008/06/21(土) 18:49:10ID:LaL2WHZAdesmumeの他にはideasもイケる
ideasの方はイメージファイルにr4tf.dldiをパッチして
PropertyからR4エミュレーションを有効にする必要が
あるけどな
0204名前は開発中のものです。
2008/06/21(土) 21:54:17ID:EDSbWPddDISPLAY_CRの別名だよね?
DISPLAY_SPR_1D_SIZE_〜?
0205名前は開発中のものです。
2008/06/22(日) 04:06:31ID:cwyntve3ATTR0_ROTSCALEを使っているんじゃないか?
ATTR0_ROTSCALEで一度に回転できるのは32個まで。なので、そのせいだと妄想。
すべて回転するには、ATTR1_ROTDATA(n)で回転するスプライトを入れ替えると
できるはず。
使っていればの話・・。
0206195
2008/06/22(日) 05:41:28ID:hOUiSeY70207名前は開発中のものです。
2008/06/22(日) 08:47:16ID:BkmplJLnそうそれ
DISPLAY_SPR_1D_SIZE_64だと256色スプライトを16色と同様のインデックスで扱えるようになる
レスとは関係ないがgbatekはでかすぎて使いづらいのでNDSの部分に絞って分割しといた
適当にお前らで活用してくれ
http://gamdev3.hp.infoseek.co.jp/cgi-bin/up/No_0294zip.html
0208名前は開発中のものです。
2008/06/22(日) 08:48:37ID:BkmplJLn■ このスレッドは過去ログ倉庫に格納されています