トップページgamedev
990コメント372KB

NintendoDS(NDS)非公式開発 Part2

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2007/04/06(金) 07:28:10ID:0HAbZjic
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/1113780562/
0087名前は開発中のものです。2007/05/23(水) 15:28:30ID:motUPcYL
>>86
http://www.helloworld.jp/~duke/nintendo_ds/nds_develop4.html
には
GBADEVフォーラムにおけるポストでは、DevKitPROでは、
ARM7実行可能コードは最大64KBに制限されると言及されました。
って書いてあるんだ。
0088名前は開発中のものです。2007/05/23(水) 15:34:36ID:motUPcYL
サウンドルーチンだけなのでコード部分は64Kあれば十分かな。
ただサウンドバッファ用のメモリをどうするかで悩んでました。

ところでVRAM_DはARM7からアクセスするときもワード単位ですかね。
0089Moonlight2007/05/23(水) 17:43:56ID:GSLlsCFn
横槍失礼します。

VRAMC/DはARM7からアクセスするときは8bit読み書きできて、普通にWRAMの増設に使えるので便利でした。
ARM7でmallocすると、WRAMのコード領域を除いたエリアから切り分けしてくれますが、普通の4MByteメモリをARM9でmallocしてIPCでARM7に渡してやれば、ARM7で自由に使えます。
malloc使わないで4MByteエリアを同時に使っても構わないのですが、メモリ管理が面倒なので普段はARM9からmallocするかな、くらいの感じです。

補足1。ARM9のデータキャッシュ(読み書き両方)さえ気を付けていれば、ARM7とARM9のデータ通信に4MByteエリアを使うことも出来ます。
補足2。4MByteエリアを同時にアクセスすると、どちらかのCPUがもう片方のCPUを待ちます。どちらのCPUが待つかはREG_WAIT_CR (*(vuint16*)0x04000204) で設定できます。
補足3。REG_WAIT_CRの設定はARM9側からしかできません。
補足4。DevKitProR20で正式採用されたARM7用WRAM96kbyte設定ですが、一部のファームウェアはこれを正しく扱えません。
問題があったときは(リンカスクリプトをいじるのは面倒なので)r17aかr19辺りを使うのが楽だと思います。SharedRAMを結合しないのでWRAMが64kbyteになります。
補足5。サウンドバッファを4MByteエリアに確保するときは、CPU優先設定をARM7優先にしておかないと、ARM9に負荷が掛かるたびにブツブツ切れます。
補足6。ARM7で大量のメモリをハンドリングするときは、VRAM_CとVRAM_Dを両方ともARM7に割り当てて(ついでに暇があればリンカスクリプトをいじってmallocをVRAM領域にして)256kbyte使うと便利です。
この場合はARM7優先設定する必要がありません。
補足7。libnds-20060719より前の基本ライブラリにはVRAM設定が不十分です。128kbyteまでしかdefineがありません。VRAMC/Dを256kbyte全部ARM7に割り当てるときは、libnds-20070127以降を使う必要があります。
defineを自分で定義すれば気にしなくても大丈夫だと思います。

長い上に箇条書きな補足ばかりですいませんです。

追記、C++を使うと(例外とか使わなくても)C++ライブラリが組み込まれるので、r18/r19b辺りを使うときは、ARM7でC++を使わない方がいいかも。
0090882007/05/24(木) 07:06:54ID:aj7YaroW
>>89
バイト単位で読み書きできるんですね
その他情報も参考になります
ありがとうございました。
0091名前は開発中のものです。2007/05/25(金) 03:43:00ID:4YzO8T1a
ありがとうございます。参考になりました。
なるほど、DevKitProR20はすでに共有WRAMもARM7に割り当てているのですか…
ファームによっては動かないのは困りますね。やはりVRAMをARM7に割り当てることにします。
そしてARM7のソースはCPPではなくCソースとしてコンパイルするようにしてみました。

頂いた情報を元にして色々弄ってみます。
0092名前は開発中のものです。2007/05/26(土) 14:07:43ID:prDWTsQK
すみませんが誰か助けていただきたく

最近になってdevkitProで遊び始めました
examplesのndsをmakeしまくったら全部動いたので、今度はデータを変えて動かしてみようと
SimpleSoundのrawデータを手持ちのwavをrawに変換して置き換えたところ
元のwavのそれっぽい音は鳴ったのですが同時にブチブチノイズが入って(´・ω・`)ショボーン
wavを8bit,16bitに変えたり周波数を変えてソースもそれに合わせて変えても同じでした

動作はエミュレータのdualisと実機で確認しました
wavはSoundEngineで編集、rawへの変換はHomebrewを参考にしてsoxを使いました
音量の制限とか特別なツールが要るとかなにかコツがあったら誰か教えて欲しいです

プログラムの話じゃなくてすみません
0093Moonlight2007/05/27(日) 21:05:25ID:MUD6Al/y
>>92

http://mdxonlinemirror.dyndns.org/sndtest.zip

A/B/X/Yボタンでそれぞれ違うフォーマットのサウンドファイルを再生するサンプルをでっち上げました。
変換にはSOXを使用しました。変換オプションはsndtest/arm9/data/convert/conv.batを参照してください。
DevKitProのcombinedサンプルをベースにしましたが、ARM7とARM9で8bit/16bitの設定方法が食い違っていたので、ARM7のtemplate.cを修正しました。
devkitPror20/nds-examples-20070327/templates/combined/arm7/source/template.cの10行目を、
SCHANNEL_CR(channel) = SCHANNEL_ENABLE | SOUND_ONE_SHOT | SOUND_VOL(vol) | SOUND_PAN(pan) | (format==1?SOUND_8BIT:SOUND_16BIT);
から、
SCHANNEL_CR(channel) = SCHANNEL_ENABLE | SOUND_ONE_SHOT | SOUND_VOL(vol) | SOUND_PAN(pan) | (format==0?SOUND_8BIT:SOUND_16BIT);
に変更してあります。
あと、ダミーの割り込みを有効にしないと、swiWaitForVBlankは使えないので、InitInterruptsで空の割り込みを有効にしてます。combinedサンプルはそのままじゃ動かない…ですよね?

ここから下は補足です。
NDSのサウンドチップは32768Hzをベースにしているので、これ以外の周波数を鳴らそうとすると量子化ノイズが入ります。
A/Bボタンの22kHz再生でチリチリ言うのがわかると思います。容量の問題ならもっと下げて16384Hzで二倍オーバーサンプリングするのが良いと思います。
ADPCMは未だになんだかよくわかりません。二種類のADPCMを使えるみたいですが。
ステレオデータを再生するときは、左右分離してデータを二つ用意して、パンを両端に振って同時に再生すればOKですが、libndsの標準関数を使うと1vsync(16ミリ秒)ずれるので、自分でステレオ再生用関数を作った方が良いと思います。
8bit/16bitは、平滑化フィルタを入れれば8bitでも充分かなと私は思っています。容量などを考えながらケースバイケースで使い分ける感じで。
ちなみに、DSMPlayは8bitデータで平滑化フィルタを使っています。sin波ボタンでON/OFFできるので、聴いてみたいだけなら試してみてください。
0094名前は開発中のものです。2007/05/28(月) 03:35:30ID:GoMQTjDv
量子化ノイズは振幅方向じゃないですか
0095Moonlight2007/05/28(月) 05:00:53ID:KQ4mCJx4
>>94

わ、確かにその通りです。慧眼お見それしました。量子化ノイズはAD変換かビット数変換時のノイズですよね。適当なこと書いてごめんなさい。
適切な表現がわからないのですが、周波数変換は(おそらく聴く限りでは)最近傍補完なので変換誤差が大きい、ということです。
モスキートノイズのようなものが入るのですが、こういう現象を表現する単語があったら教えて頂けると有り難いです。
0096名前は開発中のものです。2007/05/28(月) 10:03:54ID:2YHfuliX
なるほど、エミュレータの改造してて、サウンドの生成とかしてるので
参考になります。
ハードウェア側の基本周波数に合わせた周波数設定にしないと、
ハードウェアによる補完が発生→音質の低下が発生する
なんですね。

出来るだけ少ないデータで音質をあげたいので、参考になりました
0097名前は開発中のものです。2007/05/28(月) 20:28:54ID:3IWalm8E
>>95
ttp://www.groovecube.com/ja/tutorial/tech_alias.html
これでいいのかな
0098名前は開発中のものです。2007/05/29(火) 22:12:53ID:8czSWuso
16bit色背景を使ってるんですが、透過色にしたいときはそのドットのアドレスに何を入れればいいんですか?
0099名前は開発中のものです。2007/05/30(水) 07:17:31ID:T+UjS17y
>>98
0x8000じゃないですか
0100名前は開発中のものです。2007/05/30(水) 11:45:42ID:gnisP2wT
ありがとうございましゅ〜
0101名前は開発中のものです。2007/06/01(金) 12:30:36ID:WIXJ61jG
>>99
0x8000だと黒くなってしまうのですが。
0102992007/06/01(金) 17:36:25ID:7cHDqmoD
>>101
適当に書いただけだからごめんね
0103名前は開発中のものです。2007/06/02(土) 14:15:45ID:E7QBhPlx
>>92
ソースまで付けていただいてありがとうございます
おかげさまでwavをきちんと再生できるようになりました
結局soxの使い方が間違っていただけのようです(^^;

大きなデータを入れたらコンパイルが通らなかったので次はファイルシステムをいじってみようと思います
arm7は最大64KBの制限があるとの記述を見つけたのですが、arm9のサイズ制限っていくつでしょう?
0104名前は開発中のものです。2007/06/04(月) 08:26:57ID:QTKoOJgP
>>103
arm9はメインRAMに転送されるから4MBかな
0105名前は開発中のものです。2007/06/04(月) 10:38:44ID:+Dw64mCi
>>103
ARM7にそんな制約はない。
0106名前は開発中のものです。2007/06/04(月) 11:17:04ID:QTKoOJgP
>>105
ndsファイルから転送されるARM7プログラムが64KBまで
メインRAMにプログラムロードしてジャンプすればそれ以上も可能だけどARM9とのメモリ管理が大変だと思う
0107名前は開発中のものです。2007/06/04(月) 11:39:01ID:+Dw64mCi
だからそれはARM7の制約じゃないって。
0108名前は開発中のものです。2007/06/04(月) 12:41:16ID:AXHKpxL6
ARM7側って書けば良いんだろ。オマエ細かいことにこだわりすぎ
0109名前は開発中のものです。2007/06/04(月) 17:04:59ID:QTKoOJgP
>>107
そんな当たり前のことは前提で書いているのだと思った
0110名前は開発中のものです。2007/06/04(月) 18:02:12ID:uE7vHbRc
メインRAMをARM7側が占有しても何の問題も無いと思うが
0111名前は開発中のものです。2007/06/05(火) 01:05:28ID:KdmaRc3b
さすがage厨だ
0112名前は開発中のものです。2007/06/09(土) 03:57:55ID:3WhHJTTj
age厨うざいですよ
0113名前は開発中のものです。2007/06/10(日) 00:13:14ID:uiXXcFw3
タッチパネルを使ったプログラム作ってるんですが、時々ズレた座標を取得してるみたいなんです。
当然、タッチパネルのキャリブレーションは行っています。
出来るだけ誤差の少ない座標の取得方法ってあるのでしょうか?
ピクトチャットだと全然ズレないんで、ハードがおかしいってことは無いと思います。
0114名前は開発中のものです。2007/06/10(日) 05:50:40ID:pzGrWNqU
age厨って本当にウザいですね
死んでもらいたいものです
0115名前は開発中のものです。2007/06/10(日) 12:28:40ID:uTxkIh/P
>>114
ageても荒らしなんて来ないから安心しろ。
びびりすぎだぞ。
0116名前は開発中のものです。2007/06/10(日) 15:10:45ID:Yn+Hy7qH
age
0117名前は開発中のものです。2007/06/10(日) 17:19:02ID:aLDgBZvj
>113
サンプリング周期を短くして、16msといわず
5msくらいで・・NDSってタイマーとかあるでしょうか。
三個をくらべて一つだけ急に離れてるのを捨てる、とか、
三個の平均を16msの間のタッチ位置として扱うとか・・・

タイマー50msのマシンで16msのFPSを計りたいときのしくみに
似ているように思ったので。
0118名前は開発中のものです。2007/06/10(日) 22:41:08ID:J1iCwWbV
色々考えたんですが、前回取得した座標とプラスマイナス何ドット以内であれば有効という処理で、
ある程度有効な座標が取得出来る様になりました。
当然若干の誤差も拾ってしまいますけど、以前よりは格段に誤差を拾わなくなったのでOKとしました。
サンプリング回数を多くしたりすると、タッチして書いた線がガタガタになるとかそいう弊害がでたりしたので。
もっといい方法があると思うんだけど、思いつかなかった。
0119Yuki ◆YukiquDWwY 2007/06/20(水) 22:09:04ID:dNQ/54qe
Moonshellの開発したいのですがどのようにすればいいのでしょうか?:

Moonshell 1.7をdevkitARMr20でコンパイルしようとしましたが、
makefileがなくて、main.cをそのままコンパイルしようにも、
エラーがたくさん出るしで... _touch.hなんて入ってませんし。どのようにすればいいのでしょうか?
1.6のソースには_touch.hもmakefileもありますが、コンパイルエラーが出てしまいます...
0120名前は開発中のものです。2007/06/21(木) 08:27:30ID:r1ZNTRDh
Moonshellは昔のdevkitバージョンじゃないとコンパイルできなかったような
devkitも定数名とかバージョンによって変わってるからねー
バージョン会わないとそんな定数無いよとか言われるよ
0121名前は開発中のものです。2007/06/26(火) 20:57:47ID:B6+HckOx
PocketPCのEMUがほしいです
0122名前は開発中のものです。2007/06/26(火) 22:42:14ID:vhFQ0NHQ
>>121
欲しいけど無いから自分で作る、作ろうと努力する。
ここは、そういう人が集うスレです。
0123名前は開発中のものです。2007/06/28(木) 22:37:08ID:opyrYDS8
そうですよん。
依頼するところじゃないです。
0124名前は開発中のものです。2007/06/29(金) 20:45:49ID:mT9VFj6f
>>121
PocketPCを買えばいいよ
俺って頭良いな
0125名前は開発中のものです。2007/07/03(火) 18:26:00ID:Ftt0VCZo
PCエンジンのエミュ作ろうとしたけど
まったく手も足もでませんでした。
0126名前は開発中のものです。2007/07/06(金) 22:00:18ID:+OKmtdt0
DS ROMのヘッダ部に記載されているMaker Code2桁がどのメーカーなのか、という
リストってどこかにないですかね?
手持ちの分は調べたんですが5つ程度しか分かりませんでした・・・
0127名前は開発中のものです。2007/07/07(土) 10:11:51ID:d3FNx67E
http://www.patatersoft.info/nintendods.php
このサイトけっこう情報が載ってていけてる
0128名前は開発中のものです。2007/07/07(土) 18:09:14ID:uQIzJBz7
ついでに ttp://mdxonline.dyndns.org/
ここの人ここ見てたら‘突発性難聴‘でぐぐって
当てはまったら医者行った方が,(経験者
0129名前は開発中のものです。2007/07/08(日) 10:57:38ID:rDPYYRW1
ここの人ワロタ
0130名前は開発中のものです。2007/07/08(日) 17:38:42ID:XOi4/i3/
http://touch-ds.jp/mfs/kao_training/
このカメラのソースをなんとか使えるようにしたい
Wi-Fiでビデオチャットまでが目標
0131名前は開発中のものです。2007/07/08(日) 22:06:27ID:/1ouvdnD
ソース?
記事の情報源をどう使いたいんですか? ww
カメラのソースって何ww

ちゃんと言葉選んで書こうよw
低脳君www
0132名前は開発中のものです。2007/07/08(日) 22:08:44ID:+JKl0BdU
反応したら負けですか?
0133名前は開発中のものです。2007/07/08(日) 22:20:24ID:XOi4/i3/
タブン
0134名前は開発中のものです。2007/07/08(日) 22:25:09ID:/1ouvdnD
多分負け・・
0135名前は開発中のものです。2007/07/08(日) 22:27:07ID:/1ouvdnD
しかしこれがもし使えたとしても顎くらいしか映らないだろうしねえ・・
0136名前は開発中のものです。2007/07/08(日) 23:47:37ID:lUq6LYSy
・・・自演?
0137名前は開発中のものです。2007/07/09(月) 03:21:14ID:ymUEgIPd
>>131
言葉がおかしいのは確かだが、過剰に反応し過ぎだと思う。
まあ俺も突っ込もうかと思ったが…

「このカメラからのデータを映像ソースとして使いたい」ってことかな?
リアルタイムで動画エンコードできる性能があるとも思えないし、
何に対しての映像ソースにするのかはわからんが…
0138名前は開発中のものです。2007/07/09(月) 04:12:31ID:LmdhtBXu
ソースでおかしいか?
0139名前は開発中のものです。2007/07/09(月) 07:00:55ID:csAkfvzG
ソースって言葉の使い方を131は間違ってる。
0140名前は開発中のものです。2007/07/09(月) 07:56:53ID:RzAW5SZn
そーっすね。
0141名前は開発中のものです。2007/07/09(月) 10:11:53ID:ooePDXn1
過剰に反応し過ぎ
0142名前は開発中のものです。2007/07/09(月) 11:26:45ID:WKiykow2
そうだよそうだよソースだよ。うまいやきそばソースだよ!
0143名前は開発中のものです。2007/07/10(火) 16:09:47ID:1Xh4D4fu
色深度について質問ですが、

text型背景レイヤの色深度は、
4bit(16色)及び、8bit(256色)は実現できましたが、
rotation型背景レイヤは、8bit(256色)のみでしょうか?
4bit(16色)は仕様的に可能でしょうか?
0144Moonlight2007/07/10(火) 18:48:36ID:K23EWBI9
>>143

rotationというのは、アフィンモードですよね。
gbatekのNDSビデオ項目には4bitパレットBGは使えないと書いてありました。
一応自分でもトライしてみましたがやっぱりできませんでした。
いまだGBA/NDSのBGについて理解が足りない私が試したことなので、なにか他に方法があるのかもしれません。
役立たずレス失礼しましたです。

でもなんでAffine/Extendモードで4bitBGを使えなくしたんだろう? あまり使われないモードだからカットされたのかな…アドレッシング負荷とかゲート数とかで。NDS(特にビデオチップ)は謎仕様が多いです。
0145名前は開発中のものです。2007/07/10(火) 22:48:06ID:T+YSxXpV
80GのHDD二つあげるから、
ひぐらし解をちゃんとDSに移植してくれ……
ついでに40Gもつけるから


女なんてきらいだヽ(´ー`)ノ
何人も有能な人たちが女にダメにされてくのをみたよ…・・・


んで、映像素材の事をソースといわないこともない
0146名前は開発中のものです。2007/07/13(金) 17:51:57ID:IOm4/xlY
前スレの434と同じ疑問かどうかわからんけど、Exampleにも入っているbinって、どうやって作るの?
0147名前は開発中のものです。2007/07/13(金) 18:52:49ID:0LWs8OSz
>>145

いや、それならDSでnonscriptが走るようにすればいい。
0148名前は開発中のものです。2007/07/14(土) 08:21:51ID:PfN9PjnZ
今、DLDIを使ったプログラム作ってるんですけど、どのマジコン使ってるかって判断する方法はありますか?
マジコンがファイル書き込みに対応しているかの判断をしたいです。
GBA Movie Player (SD Card)とNinjapass X9が書き込み出来ないらしいので、それだけでも判ればと。
0149名前は開発中のものです。2007/07/14(土) 14:28:23ID:/KEJkMzs
それなら、ダミーでファイルを書き込みして
駄目だったらでOKでは?
0150名前は開発中のものです。2007/07/14(土) 18:50:52ID:2j8aQsFg
ttp://kjm.kir.jp/pc/?p=37210.jpg
結局誰かこういうの作らないのかな?
誰かがやってくれると期待してたんだが・・・

#どき魔女はおいといて
0151名前は開発中のものです。2007/07/14(土) 20:09:48ID:46zjj9L1
>>150

君が作りなよ。
ここで言ったからには開発宣言と同じだぞ
0152名前は開発中のものです。2007/07/14(土) 23:21:41ID:NCjcxLUp
この手のは物量作戦にするしかないから個人で作るのは大変なんだよな・・・
0153名前は開発中のものです。2007/07/15(日) 02:18:35ID:pGZtAoqJ
>>152
物量と言うか、絵が描ける奴とかゲームデザインできる奴、コード書ける奴等、
専門的なことができる人達が必要だと思う。

でも無理だと思ってるなら、何故>>150のような書き込みをしたのだろうか?
0154名前は開発中のものです。2007/07/15(日) 10:11:36ID:KLtX2FLa
というか>>147が言ってるようにnonscriptが走るようにすればいい。
0155名前は開発中のものです。2007/07/15(日) 16:46:24ID:65iclc9l
>>153
いや当然必要な能力を持った人は集めなきゃいけないんだけどね。
タッチして反応を見るゲームって、反応は多ければ多いほどよいってなるんで、素材用意するのが大変だって話。
昔似たようなの作ったんだけど、
頑張って作った反応が数秒で消費されるのはなかなかさびしかったよw
0156名前は開発中のものです。2007/07/15(日) 18:25:42ID:qdL8jktT
>>150
5000万円で作ってやるぞ
0157名前は開発中のものです。2007/07/17(火) 11:38:34ID:9pOoLwKq
>156
作ってくれるかはわからんがDSはメーカーに頼んでも2000〜3000万だぞ
0158名前は開発中のものです。2007/07/17(火) 12:20:45ID:cgkPcDQZ
>>157
それと一体何の関係があるんだ?
0159名前は開発中のものです。2007/07/17(火) 14:40:12ID:u4IBKaEM
>>157
もうちょとかかるだろ
0160名前は開発中のものです。2007/07/17(火) 19:06:48ID:gqBnFapA
>>158
高いって言ってるんじゃない?
要するにもうちょっとまけろと。
でも価格交渉する奴が現れるとは…

まあ開発費なんてピンからキリまで。
一般的な価格なんてあってないようなものだよ。
0161名前は開発中のものです。2007/07/17(火) 19:30:17ID:PMNATjj+
じゃあ、3000円くらいでお願いします。
あ、ポテトもセットで。
0162名前は開発中のものです。2007/07/17(火) 21:35:03ID:gqBnFapA
>>161
まあ受ける奴が居るならその値段でもありってこと。
受ける奴が居るならね。
0163名前は開発中のものです。2007/07/19(木) 14:22:30ID:PPLrnDbd
>>161
タイトル画面だけを表示させるのなら作ってあげてもいいよ
もちろん先払いね
0164名前は開発中のものです。2007/07/20(金) 00:41:52ID:N/dfadqc
>>163
ではまず適当な画像でいいから表示させるプログラム書いて何処かにUPし、
それが出来る技術を持っている事を証明してくれ。
0165名前は開発中のものです。2007/07/20(金) 01:58:23ID:eeqhonU/
>>164
それじゃあ技術の証明にならんだろ。
devkitProのサンプルプログラムにもあるけど、
たったの60ステップだぞ。
0166名前は開発中のものです。2007/07/20(金) 04:12:02ID:vHyBRiaj
サンプル弄るなら画像データ用意してビルドしなおすだけだよな
0167Moonlight2007/07/20(金) 20:25:55ID:H4HcI83W
読み返すと日本語が不自由なひとで恥ずかしいです。長文失礼します。

>>148

DLDIからキャパシティを取得するときは、リージョンIDをメインメモリ全域から32bit単位で検索してDLDI本体を探しだし、そこを基点にして0x64バイト目にFEATUREフラグセットが32bit値で入っているので、そこを読み込めばOKです。
リージョンIDは、リトルエンディアンの32bit定数で(0xBF8DA5ED)です。
検索する際、自分自身はスキップしてくださいね。
DLDIパッチファイルから直接取得するなら、ファイル先頭から同じく0x64バイト目になります。
DLDIフォーマットの詳細についてはDLDIテンプレートか、
http://chishm.drunkencoders.com/DLDI/
の'Default (No device)'辺りのソースの'/specs/dldi_crt0.s'か、'/source/default.s'を見てみてください。

一応フラグの意味だけ抜き出すと、
#define FEATURE_MEDIUM_CANREAD (0x00000001)
#define FEATURE_MEDIUM_CANWRITE (0x00000002)
#define FEATURE_SLOT_GBA (0x00000010)
#define FEATURE_SLOT_NDS (0x00000020)
こんな感じになっています。

とりあえず、バイナリエディタで開いてみて0x64バイト目を見たら概要が掴めるかもです。
ちなみに、オフセット0x60から32bit値がデバイスID(MPCFとかM3CFとか)になります。
libfatを書き換えて細かくDLDIをコントロールするのとどっちがスマートかは微妙です…。
0168名前は開発中のものです。2007/07/21(土) 13:54:01ID:6aH41BHA
>>167
ソース見ると、
GBA Movie Player (SD Card)
NEO Flash MK5 (NAND Flash)
Ninjapass X9
は FEATURE_MEDIUM_CANWRITE bitが0だね。

これだけ見るといけそうな気がするけど、DLDIドライバって複数組み込めたよね?
その場合、使っているものだけ見つけられるものなのかな?
DLDIの初期化に失敗したドライバのリージョンID部分を書き換えてくれるなら(例えば0で)
大丈夫なんだが…
実際は複数組み込むとうまく動かないのでそういう使われ方はしないのが普通だけどね。
0169名前は開発中のものです。2007/07/21(土) 14:38:41ID:wsjVnS+Q
>>167
DLDIを検索する際の自分自身をスキップってのが良く判らないんだけど、
メモリ上から探すって事?
起点と終点の判別がわからない、、、orz

ひょっとして、、、
最近のマジコンが実装しているDLDI自動パッチって、同じ事やってるんかな?
0170名前は開発中のものです。2007/07/21(土) 16:31:46ID:NcB9M1bM
そだよん
0171Moonlight2007/07/21(土) 16:44:58ID:cvcTQ57t
>>168

手持ちのDLDIドライバの情報をまとめてみました。
というかMoonShellのインストールログです。
http://mdxonline.dyndns.org/a.txt
プログラマやメーカー名は私が入力した情報なので間違っているかもしれません。
キャパシティはDLDIドライバの自己申告なので、CanWriteなのに書けないときが結構あります。SCLiteSDドライバとか。
DLDIドライバを複数組み込んだときは、どれが何番目のドライバなのか判断できません。(わかるのはメモリ配置順くらいです)
もちろん複数組み込むことはできますが、パッチソフトとFATライブラリ、両方に手を加えないとダメだと思います。
私がパッチソフトに手を加えるなら、リージョンIDをユニークなIDにするのが楽かなと思います。

>>169

DSの実行メモリから直接情報を取り出すので、ふつうに検索すると常にリージョンIDが二つ以上見つかることになります。(検索ルーチンで使う定数と、DLDIドライバの定数です)

const unsigned int RegionID=0xBF8DA5ED;
ではなく、
volatile unsigned int RegionID=0xBF8DA5ED-1;
RegionID++;
という感じで定数を定義すれば検索ルーチンに(0xBF8DA5ED)が存在しなくなるので大丈夫…だと思います。このまま使うときは確認してから使って下さいね。

ちなみに、一応ドライバ自身のサイズを定義する情報もありますが、制作者の手入力なので信用しない方がいいと思います。
参考までにリファレンスドライバには'Log [base-2] of the size of this driver in bytes.'と書いてありました。
0172名前は開発中のものです。2007/07/23(月) 11:38:45ID:xLtcRO1E
自作ソフト開発はPSPのほうが活発なのかな?
0173名前は開発中のものです。2007/07/24(火) 18:09:13ID:KU9qqJrp
>>172
PSPの方が高性能だし、追加投資もいらないからな。
NDSは敷居が高い上に性能も悪い。
PSPの方が変な仕様も少なく扱いやすいし。
0174名前は開発中のものです。2007/07/24(火) 20:46:28ID:UcFCuIUl
ただ、PSPは頻繁にソニーが対策してるな
0175名前は開発中のものです。2007/07/25(水) 00:16:11ID:SoWo+QP+
>>173
PSPはBGとかスプライトがない代わりにCPU性能が高い。
だからPC用のエミュレータを移植するのは楽。
ビットイメージ描画のところさえうまく作ればかなり近い動作をする。

一方NDSはPCやPSPと同じやり方でやろうとするとCPU性能が足りない。
BGやスプライトをうまく使えば性能は出るが、新規に作らなければならない。
また、機能が足りない場合には動作上の制約になってしまう。
ただし、うまく作ればCPUの負荷はだいぶ減らせる。
0176名前は開発中のものです。2007/07/25(水) 02:28:52ID:dUVV1wCg
>>175
>ただし、うまく作ればCPUの負荷はだいぶ減らせる。
ここを詳しく!!
0177名前は開発中のものです。2007/07/25(水) 10:37:11ID:BKua7ePN
snesDSとかだな
0178名前は開発中のものです。2007/07/25(水) 13:18:59ID:OsJTeEcI
>>176
画面のスクロールはハードに任せる
0179名前は開発中のものです。2007/07/25(水) 13:33:17ID:SoWo+QP+
>>176
それを
> BGやスプライトをうまく使えば性能は出る
って書いてる。

BGやスプライト等をうまく使う = 必要な処理をハードにやってもらう

なので、ソフトで何でもやらなければならないPCより負荷はだいぶ減らせる
可能性がある。

考えてみればわかるけど、ショボいCPUを搭載したファミコンであれだけの
画面を作れるのはBGとスプライトのおかげ。
0180名前は開発中のものです。2007/07/27(金) 01:29:35ID:aseqcjYK
ttp://www.nintendo.co.jp/ds/ykoj/index.html?link=txt

拡張カメラが気になる今日この頃。
0181名前は開発中のものです。2007/07/27(金) 02:25:11ID:Yb8k/6mH
お、libmad抜きでONscripterのmakeが通っちゃったよw
SDL for NDS様々だな
ま、このまま動くとも思えないがナー
0182名前は開発中のものです。2007/07/28(土) 00:58:57ID:3+9eaQZ1
他に見当たらないからここでNDScripterの質問しても良いかな?
ただ単純に data2 以下に00.txtとndscr.iniを入れてるんだけど、
それでpack.batして出来たndscr.ndsを実機で走らせても

NDScripter
not found "ndscr.ini"
Error

って出ちゃうんだけど何でかな?
デコード後エンコしたアーカイブズを同梱しても一緒。
R4だから対応してるのかはわからないけどSD上にフォルダ作ってndscr.iniで指定してみても一緒。
そもそもndscr.iniが見つからないってエラーだから見つからないんだろうけどなんでだろう?
何かしら分かる方アドバイスしていただければ光栄です。
もしスレ違いでしたら誘導していただければ助かります。
よろしくお願いします。
0183名前は開発中のものです。2007/07/28(土) 02:36:13ID:3+9eaQZ1
エミュだと問題なく動作するんだけどな。
R4と相性悪いのかね。
スマンね。
0184名前は開発中のものです。2007/07/28(土) 04:08:33ID:+POT5eki
はじめてみようと思ったけどやっぱ頭痛い
日本語で詳しく解説しているサイト・・ないですよね・・・
とりあえずコンパイルとかして動かしてみるものの
何がどーでどーして動いてるのかわからない・・・
0185名前は開発中のものです。2007/07/28(土) 05:15:38ID:f0GLBAZm
383 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2007/07/28(土) 02:40:06 ID:kAQ4l4GW
R4でNDScripterって動かせないの?
エミュだと正常に起動できるのに実機だと

NDScripter
not found "ndscr.ini"
Error

ってエラーがでてしまう。
間違いなく同梱されてるndscr.iniが見つからないって事はR4と相性が悪いのかと思ったんだけど。
dldi化しようと思ったけど勿論dldi対応じゃないから出来なかった\(^o^)/
誰かできた人居たりする?
0186名前は開発中のものです。2007/07/28(土) 08:02:45ID:pwyzN0QP
英語がわからないならコードを読めばいいじゃない

案外なんとかなるよw
■ このスレッドは過去ログ倉庫に格納されています