トップページgamedev
981コメント326KB

NintendoDS(NDS)非公式開発 Part3

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2008/04/08(火) 07:05:13ID:MngpkM4u
NDSで何やら作ってみようという人の為のスレ。ライセンス不要。
初心者歓迎。質問歓迎。英語苦手な人歓迎。冷やかし歓迎。ネカマ歓迎。

資料、リンク等
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/
0068名前は開発中のものです。2008/05/03(土) 16:36:40ID:aXSpfdPa
論点を見事にずらされた希ガス

今俺が希望するのは56のソース公開だけだ
実に楽しみだ、きっとみんなで共有できるはずなのに
当人が一切公開しようとしないんだから困ったものだw

結局そういうもんだよw
0069名前は開発中のものです。2008/05/03(土) 16:45:09ID:C2A5UDgG
>>67
それには全面的に同意なんだが、>>56の皆でワイワイやったほうが楽しいという意見も納得できるので、
ちょいと口を挟んでみたのだが…どうも言わんとしてるところがうまく伝わらなかったようだな。
というか、俺が>>56だと勘違いされてる?
0070名前は開発中のものです。2008/05/03(土) 17:21:04ID:Pq8hwf/6
>>68
http://sourceforge.jp

ここのどれかだ。
これ以上知りたければお前の氏名とプロバイダのメールアドレスをココに書きな
0071名前は開発中のものです。2008/05/03(土) 17:49:48ID:9aaHDGgY
>>70
そういうやり方は、公開したくないといってるのと同じだ。


0072名前は開発中のものです。2008/05/03(土) 18:17:04ID:5+bJ1NHd
>>71
sourcefourgeのプロジェクトなんて個人特定したも同じじゃねーか。
たかが名無しの煽りのためだけに、個人情報に近いものを晒したくはないだろうよ。
0073名前は開発中のものです。2008/05/03(土) 18:30:54ID:My0lu+Sx
>ちょっとは還元しようと思わないの?
>ギブアンドテイクが出来ないなら廃れるだけだよ

みたいにネガティブな論調、悪意から始めておいて、その態度等に文句を付けられると

>ワイワイやる方が・楽しいんじゃない?

というポジティブで同意を求めやすい善意的な論調にすり替えます。
するといつの間にか自分は公明正大な発言者であると大きな顔が出来るわけですよ
0074名前は開発中のものです。2008/05/03(土) 20:39:50ID:79Xkme1V
まぁ、いいからゴチャゴチャ言う前に>>56はソースを公開するべきだな。

「sourcefourgeに公開してある」ではなくて、
これから新たにうpろだにでも公開するといいと思うよ。
IDでもテキストに書いていれておけば、証拠にもなるしな。
0075名前は開発中のものです。2008/05/03(土) 20:53:45ID:aXSpfdPa
自分のプログラムを堂々と晒すこともできずに
「俺は公開している」なんてよくも言えたもんだな。
恥ずかしくないのかね
0076名前は開発中のものです。2008/05/03(土) 21:59:35ID:C2A5UDgG
なんだかなぁ。
オープンソースを信奉するならまず自分から公開しろというのには賛成なんだが、
ここまで煽りまくるとかえって公開しづらいだろうに…。

と思ってたが>>70のやり方見たらどっちもどっちという気がしてきた。
0077名前は開発中のものです。2008/05/03(土) 22:03:18ID:h7+eVHMM
>>70 != >>56
だろう常識的に(ry
0078名前は開発中のものです。2008/05/04(日) 00:17:02ID:uuRP6Trs
じゃこの流れを変えるためにも、俺が自作を公開してみます
DS素人な上にゲーム制作の経験もないけど、
一番最初の入門者にとって参考になれば…と思ってます。
ttp://void-main.org/dsprogram/
全然更新していないんだけど、意見あればよろしく。
0079名前は開発中のものです。2008/05/04(日) 01:20:28ID:OhsOp0+3
あんたえらいな。
0080名前は開発中のものです。2008/05/04(日) 01:55:59ID:EKIuBmQb
プログラムなんてやったことなくても
意見いったり批判はしていいとおもうけどな

どんな人が書いたかよりも
内容で読んだ方が
0081名前は開発中のものです。2008/05/04(日) 02:30:47ID:/JCIQP6n
>>78
乙、参考になります。
…って、元A○CCの方じゃないでつか?
0082352008/05/05(月) 02:34:17ID:Uak3Varh
久しぶりに来てみたら荒れててワロスw
実機でROMカートリッジの内容を読み込むの成功したんだけど
この雰囲気だと叩かれそうだw

先に結論から言うと、実機でROMを読み込んでも無駄です。
スロットに刺さってるのはマジコンのカートリッジなんだから
この状態で読み込んでも、読み込まれるのは・・・・・

なんでこんな単純なことに気がつかなかったんだろう orz
0083名前は開発中のものです。2008/05/05(月) 07:34:21ID:uyVcAzjN
DSの開発するとき頼りになるのはサンプルのソースだけど
ソースの公開されてる自作ソフトがあると非常に助かるのは事実
>>82
ROM吸出しソフトはすでにあるよ
皇帝ルドルフとか言う人が作ってた
プログラム実行したらカートリッジ差し替えるんだよ
0084352008/05/05(月) 08:25:36ID:Uak3Varh
ROMを吸い出したいんじゃなくて
データを、コードに直接埋め込んだりlibfatを使わずに
カートリッジから直接読み込みたいっていうことじゃないかな?

まぁ結局、素直にlibfat使いなさいていうことですね・・・
0085名前は開発中のものです。2008/05/05(月) 12:08:41ID:CmhX5RoD
Slot1を読み込みたいならSlot2のマジコンを使えばいい。
Slot2を読み込みたいならSlot2のマジコンを使えばいい。
読み込みたい方と別のSlotからブートすれば何も問題はなかろう。せっかく2つあるんだから。
使えるマジコンは限定されるけど。
0086名前は開発中のものです。2008/05/05(月) 15:17:08ID:rp/LnXOc
開発時はlibfat+dldiを使ってテスト、リリース時には結合したデータを
gbfsで読み込むよう切り替えたいんだが、なんかいい方法はない?
0087名前は開発中のものです。2008/05/05(月) 17:43:12ID:Wi/Q4iyL
尻ませんけど有ると重い増すよ
0088名前は開発中のものです。2008/05/05(月) 19:44:29ID:I85x8lIo
>>82
起動中にDSカード抜くと一発でフリーズするんだね、残念。
PSみたいに途中でメディアを入れ替えられるようになっていれば、
GBAスロットの拡張メモリに一旦転送するとかできどうだけど。

それとも特定のAPIでメディアとの接続を切ったりできるのかな?
0089名前は開発中のものです。2008/05/06(火) 02:18:31ID:nbRAn1xU
>>88
フリーズするのは主に商用のカートリッジだけですよ?
カートリッジの抜き差しでハードウェア割り込みが発生するので
公式の開発ツールは、カートリッジ割り込みを拾ったらフリーズするように
作られてるんでしょうきっと。

ためしにhomebrewなソフトで抜き差ししてみるといいです。
0090名前は開発中のものです。2008/05/06(火) 03:34:18ID:xOcS/gYs
>>89
だとすると、割り込みハンドラを登録すればフリーズしないってことだな。
irqSet(IRQ_CARD_LINE, func);
のようにして、まずはテスト用のハンドラを登録して動作を試してみたらいいんじゃないか?
0091つくりませんか2008/05/07(水) 18:23:39ID:p5xOjkEB
だれかゲームをつくりませんか?

初心者ですが、お願いします。

自分で作ったソフトとか
http://www.geocities.jp/takahumi1102/nds.html
0092名前は開発中のものです。2008/05/07(水) 19:00:29ID:E+5aTInZ
完全に丸投げしているのか
同好の士を募集しているのか
募集しているにしても何を求めているのか
それとも単なる自己紹介なのか
さっぱり分からんな
0093つくりませんか2008/05/07(水) 19:11:22ID:p5xOjkEB
>>92
つくってください・・・・・じゃなくて、
ただ単にゲームをつくりたいです。
求めているものは、教えあえることです。
0094名前は開発中のものです。2008/05/07(水) 19:31:57ID:Vb4M9it7
>>93
とりあえず全部教えてください
0095つくりませんか2008/05/07(水) 21:38:50ID:p5xOjkEB
>>94
???????
0096名前は開発中のものです。2008/05/07(水) 21:41:15ID:qEv9eqFr
>>95
依存する気100%で「教えあう」と言われても。
0097名前は開発中のものです。2008/05/07(水) 22:11:19ID:Vb4M9it7
>>95
池沼なんだね
0098つくりませんか2008/05/07(水) 22:47:22ID:p5xOjkEB
>>94
全部教えてくださいというのはどういう意味ですか??
0099名前は開発中のものです。2008/05/07(水) 23:35:21ID:Vb4M9it7
>>98
「教えあえることです。」の教えられる部分に決まってるだろjk
0100名前は開発中のものです。2008/05/07(水) 23:52:12ID:5piMHBxw
何でゲ板は日本語の不自由な奴が多いんだ?
0101名前は開発中のものです。2008/05/08(木) 02:19:41ID:/70xYc+4
まずはどういったものを作りたいのか示せるか?
それも決まってないようだと、話にならんが。
0102名前は開発中のものです。2008/05/08(木) 02:38:50ID:+FSp5Ju9
>>93
どんな内容をやりとりするの?
ここや、他のサイトや掲示板でやらず
特定の人たちと情報交換するなら、
明確な目的とかルールを決めておかないと続かないぞ

プログラムメインの情報交換なのか
ゲーム内容メインの情報交換なのかとかさ

情報交換の内容も
初心者と一口にいっても
開発環境の揃え方から教えあうとか
基礎は出来てて一人じゃどうしても分からないことだけ教えあうのかとかも
考えてから募集したほうがいいんじゃない?

0103名前は開発中のものです。2008/05/08(木) 06:49:45ID:CP6QXV5y
2ちゃんで一緒に作ろうといって出来たためしがない
1人でこつこつやるしかない
0104つくりませんか2008/05/09(金) 01:54:09ID:m4y4FI3h
なんか夢を失ったので、一人でコツコツつくります。
ありがとうございました。
0105名前は開発中のものです。2008/05/09(金) 11:12:20ID:b3Fzpyi8
本人なら最低だな
こいつに関わった人カワイソ
0106名前は開発中のものです。2008/05/09(金) 14:08:33ID:iLaxCFqV
まだ始まってすらいないのに関わった人カワイソ
電波もいいとこ
0107名前は開発中のものです。2008/05/09(金) 15:11:34ID:K5p3Vw/W
>>104
具体的に何を作るかくらい示さないと釣りとしか思われませんよ。
0108名前は開発中のものです。2008/05/09(金) 20:39:54ID:C6IOMuha
爆釣りしませんか?
0109名前は開発中のものです。2008/05/10(土) 16:01:10ID:Dsk0ZCGW
まじめに答えた人カワイソ
0110名前は開発中のものです。2008/05/14(水) 20:17:47ID:HEb7Ld7s
ndskybookの無線まわりがうちのDSで動かないので、色々なところを直してみた
基本的には、ただコンパイルして新しいdswifiとリンクさせてやるだけでネット回りの問題は解決する模様
しかし相当前の(2006年ごろ)のlibndsで動くように作られていたのでdevkitarm r23対応が地味に面倒くさい
今、ttfフォントファイルを使用した実装にしてみようかと改造中・・・
0111名前は開発中のものです。2008/05/15(木) 01:55:24ID:Y7BElhp0
最近DSのHomebrewの開発を始めた日曜プログラマーなのですが、
SpriteEntry内のattribute2のタイルインデックスについてお聞きしたいことがあります。

VRAM上の特定の位置にある画像を指定する為にタイルインデックスを指定させ、
画像を設定していますがその上限は10ビット(1024)となっていました。

それ以上の大きいインデックス値に存在する画像を扱いたい場合、
タイルインデックス以外の指定方法はあるのでしょうか?
それとも、必要に応じて書き換えを?

ご教授お願いいたします。
0112名前は開発中のものです。2008/05/15(木) 04:09:12ID:9eTY5ohq
>>111
基本的にはない。

変則的な方法だと
(1)別のBGに別のキャラクタベースを割り当て、そこに表示して合成する
(2)ラスタ割込みで、途中からキャラクタベースを書き換える
等があるが、
(1)はBGを無駄遣いする(空きBGがあるなら問題はないが)
(2)は同一ラスタ中で混在できない
という問題がある。
要するにキャラクタベースを切り替える方法。
だがそもそも、32x24=768 しか同時にキャラクタを表示できない(表示するスペースが
それしかない)のだから、1024で足りるじゃないか…って思う。
使う分だけ書き換えればいいじゃんって話。

あと揚げ足取りのようだがタイルインデックスの上限は1023。
0113名前は開発中のものです。2008/05/15(木) 08:45:30ID:r+DVA4aK
ラスタ割り込み、ファミコンでは基本テクニックだったな
0114名前は開発中のものです。2008/05/15(木) 09:56:18ID:KSCa8HQG
>>112
>>113
情報ありがとうございます。 基本的にはないんですね、開発者の技量次第ですか。
BGについては、まだ将来どう使用するか未定なので今は利用できそうにはありません。

もう一つのラスタ割り込み、ということはIRQ_HBLANKですか。
こちらはそういう用途でも利用できたんですね。
パレット書き換えによる多色表現とかだけだと思ってました。

私はキャラクターがぬるぬる動くアクションゲームでもと思っており、
1キャラのアニメーション量が多いのでこんな質問をしました。

8ビットのプレイヤーキャラだけでインデックス使い切る

4ビットまで減色

プレイヤーキャラの画像領域を縮小して特定範囲だけを使用

いや、知らないだけで実はスプライト用のバンク切り替えがあるんじゃないか?と思い >>111

このような流れです。


>タイルインデックスの上限は1023
0〜1023なので上限は確かに1023でしたね。 お恥ずかしい。
0115名前は開発中のものです。2008/05/15(木) 11:49:15ID:o6NuskXP
今DevkitPro r21を使ってるんだけど、r22に更新すると何かメリットとかある?
0116名前は開発中のものです。2008/05/15(木) 14:41:27ID:cMc7dGA+
それくらい自分で調べられないと
最後まで続かないと思われ
0117名前は開発中のものです。2008/05/15(木) 15:41:28ID:dIxlNCjs
>>115
There 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
>>114
アニメーションパターンが多いなら
表示するパターンだけVRAMに転送して毎回インデックスを更新すればいいんじゃない?
もしDISPLAY_SPR_2Dで作ってるならDISPLAY_SPR_1Dに切り替えた方が結果的に楽になると思うよ
0119名前は開発中のものです。2008/05/15(木) 19:20:04ID:dNoJ3Z5k
>>118
当初から1Dでやっており、つい数日前にご指摘なさっている手法に至って
プレイヤーキャラのアニメーションをまかなうようになりました。

VRAM_AやBの128キロバイトをフルに活用できると思っていただけに
タイルインデックスの使用上限にはかなりショックを受けています。
画像のビット深度が倍になるとインデックスの消費量も倍(?)になりましたし

「あー、だからDSになっても16色っぽい主人公がドラキュラ退治するのか」と
納得したような、しないような。
(それでも開発自体は本業より楽しいから問題は無いのですが)
0120名前は開発中のものです。2008/05/15(木) 20:01:41ID:993lGL+w
なにこの打てば響く完璧なレスw
まぁ元々GBAと互換を保つための機能だからその名残が残ってるのは仕方ないよね
SpriteEntry内にインデックス拡張フラグを入れる余地は全く無いし
0121名前は開発中のものです。2008/05/15(木) 20:43:59ID:9eTY5ohq
>>114
ごめん。スプライトの話だったんですね。
よく見るとSpriteEntryと書いてありましたね。
BGの話かと思って勘違いしてました。
0122名前は開発中のものです。2008/05/15(木) 23:17:24ID:KSCa8HQG
>>120
#include <nds/arm9/sprite.h>を覗いた上での
最後の悪あがき的な質問でしたから。

教えてくださる先達に横柄な態度はできませんよ。 こちらは無知ですし。
・・・まぁ、職場にいる先輩PGには慇懃無礼ですが(・∀・)

>>121
たとえ見当違いであっても、
お教えくださったその知識、知恵はありがたいものです。
いつか役立たせていただきます。
0123名前は開発中のものです。2008/05/17(土) 21:44:28ID:meJQ1fpF
m3さくらはmoonさんが作ってるの?
0124名前は開発中のものです。2008/05/20(火) 11:24:28ID:xIWP/ob7
この流れを見てると2chで協力つのるのは鬼門なのかね('A`)
0125名前は開発中のものです。2008/05/20(火) 14:01:46ID:Mu+Z8Ipo
>>91は協力ではなく単なるクレクレ
0126名前は開発中のものです。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
せめてDSブラウザぐらいには漢字認識できるようにしたいね
まぁ出来る範囲でコツコツがんばるよ('A`)
0129名前は開発中のものです。2008/05/20(火) 17:22:21ID:sqxB6/mF
>>127
「止」「上」って上側の横線から書くんじゃないの?
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:mk1SjfwX
フリーのDS用日本語手書き文字認識ができたらすごいな
DS版もSourceForgeでやってほしいわ
0134名前は開発中のものです。2008/05/20(火) 22:08:14ID:3kt9IMad
souceforgeじゃなくていいな
むしろうまくいかなくなると思われ
0135名前は開発中のものです。2008/05/20(火) 23:53:39ID:xIWP/ob7
SourceForgeとかwwwうえww
正直、偉そうなこと言ってるけど、完成度低いんだよホントに・・・
実際に触ってみると分かるよ

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
>>136
メモリの空き容量っていうのが、曖昧でよくわからない
確保できる「最大の」容量が知りたいのか
確保できる「合計の」容量が知りたいのか
mallocとfreeを繰り返して、っていうのはつまりどういうこと?

メモリはmalloc/freeを繰り返すうちに断片化されていくから
最大の容量≠合計の容量になるのは分かるよね?
最大の容量がしりたいなら
for(size = 40000000; malloc(size) != NULL; size--);
これで調べられるとおもう。

合計の容量がしりたいなら、malloc(256)を何回繰り返せるかカウント
してみたらどうでしょう。
0138名前は開発中のものです。2008/05/21(水) 07:25:04ID:dwc8/njx
曙が3人座れるサイズの長椅子があったとして、
もし真ん中に曙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:bvk1AfAx
うぁ、コピペしたら変な改行はいった・・・
0141名前は開発中のものです。2008/05/21(水) 09:13:18ID:WmlOwoHY
libcが物理メモリと関係なく、確保できるぶんだけ確保するとか、
物理メモリ境界をオーバーしても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 〜 3FFF800
じゃなくて
2000000h 〜 2FFF800
に脳内変換しておいてくだしあ orz
0144名前は開発中のものです。2008/05/21(水) 17:00:30ID:oS9AT3QG
http://neimod.com/dstek/
消えてる?
0145名前は開発中のものです。2008/05/21(水) 20:53:26ID:bvk1AfAx
難しすぎてよくわかりませんが、先に書いた方法では上手くいかないんですね・・・
ちょっと困っちゃったかもです。
考えてみます。
0146名前は開発中のものです。2008/05/22(木) 00:11:54ID:0fQn8Ipy
どうすればいいんだ?自分でnewハンドラを実装が一番楽かな
0147名前は開発中のものです。2008/05/22(木) 01:40:27ID:UbCa5G5P
mallinfo()
使えるかどうかは知らん
0148名前は開発中のものです。2008/05/22(木) 07:45:52ID:x3H0CM1w
>>142
ld が割り当てる RAM の容量は 4M-4k なんだけど、そうするとその空間は
02000000-023fefff じゃね?
これだと IPC のアドレスが変なんだけど、それは 02400000 からが RAM の
ミラーになってるからで、027ff000 は 023ff000 にあたるので問題無し

>>145
>>137 じゃだめなの?
0149名前は開発中のものです。2008/05/22(木) 08:16:21ID:UEUlTLpO
>>148
forの方は、4Mから徐々に確保する量を減らして、NULLが帰ってこなかったらそれが連続して取れるメモリ容量って意図だと思うんですが、
初めの確保できないはずの4Mの時点でNULLが帰ってこないので、ループが終わってしまいます。

256づつってのも、確保されたメモリが必ず連続したものとは限らないので、今回の趣旨には合いません。
0150Moonlight2008/05/22(木) 18:31:31ID:GVceNApO
http://mdxonline.dyndns.org/imgview111_memtool.txt

safemalloc_nocheck関数が、私がそれなりに安心して使えると信じて使っているmalloc関数です。
atypeっていうのは、バッファアンダー&オーバーラン、解放し忘れと二重解放を検出するために私が勝手に作った部分ですので、読み飛ばして頂いて問題ありません。
読みづらいと思いますが、もし参考になれば見てみてくださいませ。
DevKitProのmallocが信用できればこんなに苦労しないのに。標準関数をオーバーライドする技術があれば…。(苦笑
0151名前は開発中のものです。2008/05/22(木) 19:33:07ID:0fQn8Ipy
>>150
こんなに重いmalloc関数、使ってられないんじゃないか?
0152Moonlight2008/05/22(木) 20:00:45ID:nu+6rnes
>>151
仰る通り本当に重いです。でも安全性を最も気にしていることと、リソース絡みのバグは非常に見つけづらいこともあって、私はこのスタイルを愛用しています。
本当に処理速度が必要な一番内側のループで仕方なくmallocする必要があるときは、ある程度大きなブロックの最初で空きメモリを計算しておいて…あぁ面倒くさい。(苦笑
毎度毎度フラグメントしないようにmallocする順番を考えるのも面倒くさいですし。
メモリをぎりぎりまで使おうと思わなければ(例えば動的キャッシュなどを考えなければ)普通にmallocすれば大抵は動くと思うのですが…。
って愚痴っぽくなってきたので退散します。蛇足失礼しました。
0153名前は開発中のものです。2008/05/22(木) 20:10:06ID:0fQn8Ipy
>>152
なるほど、さすがに今まで苦労している人は違いますね。サンクス。

俺は今までmallocの問題を感じたことがなかったんだけど、
問題がどこにあるのか完全に切り分けることができれば、
new演算子や完全に独立したmalloc関数を作るのがいいんじゃないか?
01541362008/05/22(木) 20:43:09ID:UEUlTLpO
>>Moonlight氏
試しに、プログラムにそのまま組み込んでみます。(当然変更する部分は変更して)
上手くいった場合、組み込んだままプログラム公開とかしても問題ないでしょうか?
0155Moonlight2008/05/22(木) 21:28:14ID:nu+6rnes
>>153
もちろんスタブをオーバーライドするのが一番いいのでしょうが、標準関数に手を加えるのはDKPがバージョンアップしたときにトラブルの元になりそうと思ってやめてしまいました。
libfatとかはfopenなどを上書きしていましたがなんとなく気持ち悪くて。(プログラマにあるまじき感覚的表現
DevKitProというか、libndsの更新リストが信用でき(ry

>>154
速度や安全性が十分に要求水準を満たすことを確認できたときは、自由に使っていただいてOKです。
私に報告することも、なにか表示する必要もありません。
atype絡みはばさっと切っちゃうが吉ですたぶん。
0156名前は開発中のものです。2008/05/22(木) 22:45:41ID:x3H0CM1w
うーん、RAM 容量以上でも NULL が返ってこないのは何か
malloc のアルゴリズム以前の別の問題がある気がするんですが…

少なくともうちでは >>137 風のプログラムも >>139 も動いてます
環境は devkitARM release 23 b とそれでコンパイルした libnds 20071023
01571362008/05/22(木) 23:30:26ID:UEUlTLpO
環境依存なの?
うちはDevkitPro release 21 (DevkitARM r21)なんで、そのせいとか?
ちなみに、>>139 のを実行したら、値がいくらって出てますか?
0158名前は開発中のものです。2008/05/23(金) 06:04:27ID:lXYT/wck
r23b で 4128768、r21 で 4145152 でした
ソースと r23b でコンパイルしたものをあげておきます
ttp://gamdev3.hp.infoseek.co.jp/cgi-bin/up/No_0271zip.html
01591362008/05/23(金) 08:34:48ID:XZvO7U4o
>>158
DLして試してみたところ、こっちでr21でコンパイルしたものを実行したら4128768の値が出ました。(forのタイプ)
となると、今作ってるプログラムが怪しいってことなのかな?
プログラムでどこかシステムに関わるようなところを潰している?
根本的に何か間違ってる?
0160名前は開発中のものです。2008/05/23(金) 09:03:10ID:gPnkFXwS
>>159
malloc と free のペアをコンパイラが認識して、最適化で潰されてるってことはない?
コンパイルついでにアセンブリを吐かせてみるとか。
0161名前は開発中のものです。2008/05/23(金) 10:06:00ID:1BDliqaC
>>160
malloc()やfree()はコンパイラから見たら単なる関数呼び出しだから、最適化で消えることはない。
しかも、freeされないパスもあるわけだから、なおさら最適化で消えるはずはない。
0162名前は開発中のものです。2008/05/23(金) 16:12:01ID:JQlc5Wg2
BGのパレット0が透明にならないようにする方法ってある?
0163名前は開発中のものです。2008/05/23(金) 16:19:54ID:GlW5b/3a
一番奥に持っていけばいい
0164名前は開発中のものです。2008/05/23(金) 16:43:13ID:dp7Y5NLp
>>136
GBAの方でスレ違いだけど
自分はこんな感じで作っています。
ttp://akkera102.sakura.ne.jp/test/mymem.txt

動的確保してないし
そのままだとコンパイルできないけど
参考までに見てやってください。
0165名前は開発中のものです。2008/05/23(金) 17:22:32ID:JsGk0+Q7
C++で開発したいけどアロケーターというかnewの信頼性って...Devkitだとどんなもんなんだろ...
0166名前は開発中のものです。2008/05/23(金) 21:51:38ID:kcI1LowV
エエエエなにこの流れは
もう手書き認識エンジンをC++つかって書いちゃったんですけど
もしかして、信頼性やばいとかいう話ですか・・・( ´Д⊂ヽゥエエェ
0167名前は開発中のものです。2008/05/23(金) 22:05:41ID:kcI1LowV
いちお手書き認識デモのROMイメージ
http://www.mediafire.com/?jl0zzomezig

認識精度と認識にかかる時間でけっこう苦しんだんですが
問題なく使えるレベルにまでなんとか持っていけたので
この土日に頑張れれば、ソース投下できる気がします。

ただし
相変わらず辞書にTomoeから引っ張ってきたデータを使っているので
カタカナが入っていません。ひらがなも濁音拗音が入っていません。
アルファベットも入っていません orz
■ このスレッドは過去ログ倉庫に格納されています