[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 03/03 08:20 / Filesize : 236 KB / Number-of Response : 805
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

NintendoDS(NDS)非公式開発 Part2



1 名前:名前は開発中のものです。 mailto:sage [2007/04/06(金) 07:28:10 ID:0HAbZjic]
NDSで何やら作ってみようという人の為のスレ。ライセンス不要。
初心者歓迎。質問歓迎。英語苦手な人歓迎。冷やかし歓迎。ネカマ歓迎。

資料、リンク等
nocash.emubase.de/gbatek.htm
www.bottledlight.com/ds/index.php/Main/HomePage
www.helloworld.jp/~duke/nintendo_ds/

開発環境
www.devkitpro.org/
sourceforge.net/project/showfiles.php?group_id=114505

関連スレ
ゲームボーイアドバンス(GBA)開発@ゲ製板(避難所)
bbs.gamdev.org/test/read.cgi/gamedev/1055111303/
ゲームボーイアドバンス(GBA)非公式開発 Part2
pc5.2ch.net/test/read.cgi/gamedev/1099119005/

前スレ
pc11.2ch.net/test/read.cgi/gamedev/1113780562/

17 名前:12 mailto:sage [2007/04/16(月) 09:28:52 ID:1IWCo6WN]
>>16
DLDIドライバが悪さしてたか。
あとは問題のソース、読ませたファイル、fgetcの戻り値、errnoとか


18 名前:10 mailto:sage [2007/04/16(月) 23:58:30 ID:SJmsxErn]
>>17
ソースは適当にこんなの。test.txtの中身は半角英数適当に。
全部255が帰ってくるわ。(DeSmuME 0.60)
根本的に何か間違ってるような気がする。
Live2chだと改行大杉でエラーになっちゃうんで、該当部分だけ。適当に補完してくんろ。

if ( !fatInitDefault() ) { iprintf("init error"); while(1); }

FILE *fp;
if ( (fp=fopen("test.txt","r"))==NULL ) { iprintf("file open error\n"); while(1); }
int i;
char ch;
for (i=0;i<10;i++) {
ch=fgetc(fp);
iprintf("%d ",ch); }

fclose(fp);



19 名前:名前は開発中のものです。 [2007/04/17(火) 07:36:56 ID:jhZOjVgZ]
>>18
同じくDeSmuMEでlibfatが使えないものです
fopen( )はできるんだけどfgets( )はNULLが返るしfreadも0バイトしか読み込めない
SDカードで実機テストは効率悪いです。
エミュのバージョン0.6.0と0.5.0でも試したけどだめでした

20 名前:12 mailto:sage [2007/04/17(火) 10:29:15 ID:IHSQkBqI]
>>18
確かにfread(),fgetc()とかは動きませんでした。
dirnext()は動作しているので動いているものと勘違いしていました。
というわけで実機以外ダメということになりました。

21 名前:名前は開発中のものです。 [2007/04/17(火) 12:51:47 ID:jhZOjVgZ]
>>20
ディレクトリは読めて表示も出来るんですがね
誰かエミュ用のDLDIを頼む

22 名前:名前は開発中のものです。 mailto:sage [2007/04/17(火) 13:27:01 ID:3bpgwEwp]
>>18
つttp://amponzi.googlepages.com/

23 名前:12 mailto:sage [2007/04/17(火) 13:53:20 ID:IHSQkBqI]
March 17, 2007 Build版でfread,fgetcも動いた

24 名前:名前は開発中のものです。 mailto:sage [2007/04/17(火) 16:05:12 ID:jhZOjVgZ]
>>23
読めますね
でも書き込み系はだめですね
まあ読み込めるだけでも助かります

25 名前:名前は開発中のものです。 mailto:sage [2007/04/17(火) 17:56:51 ID:X+tElrNz]
おまいら楽しそうだな



26 名前:名前は開発中のものです。 [2007/04/17(火) 23:24:39 ID:C1BCDQQc]
新スレで早くも挫折っぽいな

27 名前:名前は開発中のものです。 mailto:sage [2007/04/18(水) 19:31:10 ID:2iKKJuRD]
マイク使ってる人居る?
NitroTrackerぐらいしか見ないなーと思って

28 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 15:01:28 ID:W38vL8ue]
>>27
moonさんのお絵かきボイスチャット

29 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 22:02:38 ID:9tB1+O5n]
前スレ979辺りでフォントについて質問した者ですが、
レンダラの部分をフレームバッファに突っ込んでできました。ありがとうございました。
しかしvramSetMode(MODE_FB0);を使ってるとバックグラウンドが使えません。
何か指定することでできるようになりますか?
それかBG_GFXに文字をレンダリングするとして、2枚以上のバックグラウンドを表示させるにはどうすればいいんですか?

30 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 23:26:59 ID:2jDSNcy8]
>>29
前スレ980でフレームバッファに「見立てて」とあるわけだが。
あまり考えずにレスすると、やりたい事は多分出来ない。
フレームバッファじゃなくてタイルに書く。
例えば、10x10の文字を書こうとすると、右(2x8)と下(8x2)と右下(2x2)があふれる。
これを並べたときに隣接するタイルに書く。
文章だけだとややこしい。誰かフォローよろ。

# 3Dでビルボード重ねればできるかも?


31 名前:名前は開発中のものです。 [2007/04/20(金) 07:41:55 ID:KjZsdrCt]
>>29
自分はMODE5使ってる

videoSetMode(MODE_5_2D | DISPLAY_BG2_ACTIVE | DISPLAY_BG3_ACTIVE);
vramSetBankA(VRAM_A_MAIN_BG_0x06000000);
vramSetBankB(VRAM_B_MAIN_BG_0x06020000);

32 名前:名前は開発中のものです。 [2007/04/20(金) 07:55:19 ID:KjZsdrCt]
framebuffer型背景レイヤ
* 最もシンプルな背景レイヤ。直接ピクセルを操作する。
* キャンバスサイズは256x192固定。
* 背景レイヤは一つのみ。重ね合わせ処理不可。
* 色深度は16bit固定。
* サブ画面では使用不可。
* せっかくのDSの各種ハードウェアサポートが全く得られないので、framebuffer型を選択する利点はほとんど無いと思われる。

extended rotation型背景レイヤ
* 基本的にはframebuffer型背景レイヤと同じ。以下の点が違う。
o 名前の通り、回転拡大縮小が可能。
o 色深度は16bit/8bit選択可能。
o キャンバスサイズも選択可能。
o 複数背景レイヤが使用可能。重ね合わせ処理ok。

33 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 13:21:39 ID:q1lk0Smr]
gbalzssについて、moonlight氏のサイトを読んで気になったので検証してみたところ、
DSのBIOSコールでは展開不可(データが化ける)であることがわかりました。

gbalzssでは最初に辞書テーブルの先頭4078バイトを0xFFで埋めていますが
DSのBIOSルーチンでは辞書テーブルすら存在せず、ただ展開後のデータから
同じ部分をコピーするだけになっています。
(つまりデータの頭のほうで0xFFが圧縮されると展開時に不定のデータで埋められてしまう)
0xFFが潰されているのはこれが原因です。(dectestだとパレットが死んでますね)
とりあえずこんなところでしょうか。見当違いだったらごめんなさい。

34 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 12:06:37 ID:TfVa2cpF]
スリープ機能を実装しようと思って前スレに書いてあった7sleep.hとか参考に組んだんだけど
EZ5では動くもののR4とかでは動かない状況になった
ちょっと見てみたらarm9側でtouchReadXY()をコール後に停まってるみたい。
液晶閉じるとバックライトは消えるからarm7側は生きてるっぽい。
arm7側でIPCに設定する項目のIPC->heartbeatはコンパイラ通らないのでコメントアウトしてある。
注意する項目とかそういうないかな?

35 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 21:00:34 ID:NJ6jBP1q]
背景2枚使うときって2枚目の背景データはどこに入れればいいんですか?



36 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 23:00:17 ID:ul3qRtvV]
>>35
まずどの画面モードを使うかを聞かせてくれ。それからだ。


37 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 23:04:18 ID:NJ6jBP1q]
videoSetMode(MODE_5_2D | DISPLAY_BG2_ACTIVE | DISPLAY_BG3_ACTIVE);
vramSetBankA(VRAM_A_MAIN_BG_0x06000000);
vramSetBankB(VRAM_B_MAIN_BG_0x06020000);
です。1枚の時は
dmaCopy(haikei_Map, BG_GFX, haikei_Map_size);
dmaCopy(haikei_Palette, BG_PALETTE, haikei_Palette_size);
で表示してました。

38 名前:名前は開発中のものです。 [2007/04/25(水) 11:37:03 ID:33OeOyDS]
>>37
自分で割り当てたメモリに書き込めむのでは
BG2_CR = BG_BMP8_256x256;

BG3_CR = BG_BMP8_256x256 | BG_BMP_BASE(8);

なら
dmaCopy(drunkenlogoBitmap, (void*)BG_BMP_RAM(0), 256*256); //BG2に書き込み
dmaCopy(drunkenlogoBitmap, (void*)BG_BMP_RAM(8), 256*256); //BG3に書き込み

39 名前:名前は開発中のものです。 mailto:sage [2007/04/25(水) 13:37:30 ID:gTKp5KH5]
ttp://mdxonlinemirror.dyndns.org/resources/20051007_nokia888.designawards2005.winner.avi

40 名前:Moonlight mailto:sage [2007/04/25(水) 16:41:02 ID:HxrT4e6P]
>>37

私も聞きたいです。
haikei_Paletteが見えるので8bitパレットモードを使っているようですが、二枚同時に表示できる画面モードがあったら教えて欲しいです。
拡張パレットエリアを使ってBG0/1とBG2/3で上下分割すれば(BG4枚使えば)表示できる、というところまでいったのですが分割するとアルファブレンドが使えません。
なんとかBG2枚だけで賄えたらいいのですが…。


41 名前:名前は開発中のものです。 mailto:sage [2007/04/25(水) 16:43:49 ID:9PTGEnxc]
パレットは1個しか使えないんですか?

42 名前:Moonlight mailto:sage [2007/04/25(水) 16:59:41 ID:HxrT4e6P]
>>41

NDSで追加された拡張パレットを使えばいけます。
アルファブレンドを使わないならば、普通に一枚ビットマップBG(BG2かBG3)を表示して、スプライト疑似ビットマップモード(勝手に銘々)でもう一枚使うのが簡単だと思います。


43 名前:名前は開発中のものです。 mailto:sage [2007/04/25(水) 22:40:25 ID:bi207Gqh]
素人考えで思いついたこと。
256x192ドットの画像をメインメモリに4枚持ち、2枚づつブレンドしてキャプチャ。
そのキャプチャした2枚の画像を更にBG上でブレンド。

実際にそんな事が出来るか試す技術もないけど、静止画程度なら出来るんじゃないかと考えてみたり。
多分処理に時間が掛かって、使い物にならないだろうけど。
素人の考える事なので多分上手くいかない。

44 名前:名前は開発中のものです。 mailto:sage [2007/04/26(木) 19:00:36 ID:jP033NAs]
BG3がVRAM_Fの拡張パレットを使うとして、それはBG3_CRにどう指定すればいいんですか?
あとパレットを書き込むときはVRAM_F_EXT_PALETTEでいいんですか?

45 名前:名前は開発中のものです。 mailto:sage [2007/04/26(木) 19:57:11 ID:vnhXkHDU]






46 名前:名前は開発中のものです。 mailto:sage [2007/04/26(木) 22:30:59 ID:1ufEd1K7]
拡張パレットの時に使用する拡張パレットスロット

BG0:0 or 2
BG1:1 or 3
BG2:2
BG3:3

と、手元の資料に書いてある。

47 名前:Moonlight mailto:sage [2007/04/26(木) 23:32:01 ID:ulX9vZIH]
>>44
BGx_CR関連のフラグがlibndsのヘッダファイルで定義されていますので、そこからコピペすればOKだと思います。
ちなみに、拡張パレットはCPUから直接読み書きできるエリアにマッピングされていませんので注意です。

>>46
拡張パレットは複数個持てる、とどこかに書いてあったような気がします。
改めて調べなおしてみます。示唆ありがとうございます。


48 名前:名前は開発中のものです。 mailto:sage [2007/04/27(金) 01:37:33 ID:E4LQ/b6I]
無線LANカード+DSダウンロードプレイで、
改造なしで実行できるらしいがそれで開発してる人いますか?

49 名前:名前は開発中のものです。 mailto:sage [2007/04/27(金) 01:56:43 ID:ps+Zsnff]
BG0〜2がどんな設定になってるか知らないから、適当に書いてみる。

VRAM-Fに拡張パレットのカラー設定をして、

vramSetBankF(VRAM_F_BG_EXT_PALETTE);

VRAM_F_CR |=(vuint8)0x08;


こうやったら、VRAM-Fに設定したカラーが、BG拡張パレットスロット2と3に設定された。
>>46 にも書いたけど、BG2とBG3が使う拡張パレットスロットは固定。
BG3_CRは標準パレット使ってた時と同じ設定。

50 名前:名前は開発中のものです。 [2007/04/27(金) 07:50:40 ID:vQAonU6X]
ちょっとbookmark
www.dev-scene.com/NDS/Tutorials
ranekov.tir.jp/ndn

51 名前:名前は開発中のものです。 mailto:sage [2007/04/28(土) 00:00:44 ID:5RL/W00i]
>>48
wifimeは昔のDSじゃないとできないんじゃなかったかな

52 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 13:58:59 ID:FnWZvnH2]
DSの自作ソフト開発をしたいのですがR4やM3 DS Simplyを買えばできるのでしょうか?

53 名前:名前は開発中のものです。 mailto:sage [2007/05/01(火) 08:16:03 ID:SB3umWqP]
>>52
出来る
他にもSuperCardとかあるよ


54 名前:名前は開発中のものです。 mailto:sage [2007/05/01(火) 16:23:58 ID:Xh0zyFlr]
その前にエミュで遊んでみてからでもいいんじゃない?

55 名前:名前は開発中のものです。 mailto:sage [2007/05/02(水) 18:38:51 ID:OD2Plci2]
オプティマイズのカメレオンUSBとDS-RAMアダプタを試してみた。
ファイルアクセスしないようなプログラムだと全く問題なさそうだけど、DS-RAMアダプタ経由のPC上のファイルアクセスになると遅すぎ。
ファイルのアクセス方法によっては、これ止ってんじゃね?って思うほど。

PC上のファイルアクセスに期待してたんだけど、ちょっと期待はずれかな...
リセット信号線つけたら、自動で再起動してくれるとかは便利なんだけどね。



56 名前:名前は開発中のものです。 mailto:sage [2007/05/04(金) 19:07:56 ID:2UmfDvtL]
WiFiMeを使って自作プログラムの実行はできますか?

57 名前:名前は開発中のものです。 mailto:sage [2007/05/05(土) 01:02:08 ID:fIbkcnTP]
2年前からタイムスリップしてきた御方が降臨なさったぞ!

58 名前:名前は開発中のものです。 mailto:sage [2007/05/06(日) 02:22:22 ID:+OsIRxhX]
あきらめたw


59 名前:名前は開発中のものです。 mailto:sage [2007/05/07(月) 07:01:19 ID:o4/cQJiO]
DSMPlay Ver0.1

R4とSC LiteとSC SDで起動しない・・・
MicroSDが悪いのと思って変えたけどだめですた。

フォント Loasdで止るし・・

60 名前:名前は開発中のものです。 mailto:sage [2007/05/08(火) 00:06:14 ID:hPGMHvWN]
R4とSCDSで普通に動いてる
明らかにお前のmicroSDが悪い

61 名前:名前は開発中のものです。 mailto:sage [2007/05/08(火) 01:03:48 ID:D70iJ7rj]
うちもR4だけど うごくで?
ただ、画面から動画がはみ出してるけど\(^o^)/

62 名前:61 mailto:sage [2007/05/08(火) 01:07:20 ID:D70iJ7rj]
おっと訂正 最後の1フレーズで飛んでフリーズだわ

63 名前:名前は開発中のものです。 mailto:sage [2007/05/08(火) 01:24:05 ID:ooYgEOtg]
>>59
置く場所間違ってるだけじゃね?


64 名前:名前は開発中のものです。 mailto:sage [2007/05/08(火) 06:05:46 ID:bToGIqLO]
microSDは a-data 東芝で動かなかった・・・orz


65 名前:名前は開発中のものです。 mailto:sage [2007/05/08(火) 07:18:14 ID:bToGIqLO]
up3.viploader.net/mini/src/viploader136244.zip

動いたー

っ すきん



66 名前:名前は開発中のものです。 mailto:sage [2007/05/08(火) 10:22:42 ID:cd24JBcZ]
細かいことを言うとあれだが、本家WMPだと
再生中に「一時停止ボタン」が表示されて
一時停止中に「再生ボタン」が表示されるんだよね
ボタンの機能を表示するか、現在のステータスを表示するかなんだけどね

67 名前:名前は開発中のものです。 mailto:sage [2007/05/08(火) 22:18:05 ID:1OObYo6q]
DSで動く、日本語(漢字など)も使えるエディタは作れないものか

68 名前:名前は開発中のものです。 [2007/05/08(火) 22:28:12 ID:SsfRj51a]
>>67
ATOKとかMS-IMEみたいな漢字変換ライブラリを作ってくれたら作れるよ

69 名前:名前は開発中のものです。 mailto:sage [2007/05/08(火) 23:14:14 ID:cjZWy55g]
Linuxとかで使われてるのならオープンソースでフリーのがあるよ

70 名前:名前は開発中のものです。 mailto:sage [2007/05/09(水) 00:53:30 ID:7zdYh5y4]
>>69
任せた

71 名前:名前は開発中のものです。 mailto:sage [2007/05/09(水) 02:15:50 ID:BYMV35Oq]
DSMPで再生中完全フリーズするのは、動画側のエラーなんかな?
物によっては完走するので


72 名前:名前は開発中のものです。 mailto:sage [2007/05/09(水) 08:23:16 ID:B4n4WDrd]
再現したことがないのでわかりません

73 名前:名前は開発中のものです。 mailto:sage [2007/05/11(金) 23:47:22 ID:4e1ivnnK]
えろげこんばぁたぁまってますよ

74 名前:名前は開発中のものです。 mailto:sage [2007/05/12(土) 10:56:26 ID:Jej5bFNf]
まずははじるすですよ

75 名前:名前は開発中のものです。 mailto:sage [2007/05/13(日) 23:07:47 ID:XBYGxj8Z]
up3.viploader.net/mini/src/viploader137808.zip.html
fmsxDS 0.6 DLDI対応 アンオフィシャルテスト版
う〜ん自分には無理かも…



76 名前:名前は開発中のものです。 mailto:sage [2007/05/14(月) 04:36:41 ID:mEyOEgzk]
>75

77 名前:名前は開発中のものです。 mailto:sage [2007/05/14(月) 04:38:17 ID:mEyOEgzk]
>>75
しまったPASSはdldi

78 名前:名前は開発中のものです。 mailto:sage [2007/05/14(月) 12:15:28 ID:Mb4m3oBs]
とりあえずDeSmuMEのFAT部分をどうにかしようと考え中
今のところDSMPlayとかMoonshellとか動いてる状況

79 名前:名前は開発中のものです。 mailto:sage [2007/05/14(月) 13:03:26 ID:iunJLtuy]
3g2とか再生できると熱いよね

80 名前:名前は開発中のものです。 mailto:sage [2007/05/16(水) 05:17:45 ID:h4OBkN9Q]
OPLLのエミュレーションをARM7でやらせようとしたら、コードだけで0x8000越えてる罠。

81 名前:名前は開発中のものです。 mailto:sage [2007/05/16(水) 06:53:31 ID:h4OBkN9Q]
ARM7用バイナリから、OPLLエミュのソースをはずしてコンパイルしても、容量空かない。
ndslibだけで容量食われてる?
色々情報集めてみます…

82 名前:名前は開発中のものです。 [2007/05/22(火) 15:19:25 ID:Lr8LbkHm]
devkitProのdevkitARMでプログラムしてます
ARM7のスタックとヒープエリアはWRAMですよね
特に意識してプログラムしなくてもARM9と干渉することはないと考えてよいでしょうか

83 名前:名前は開発中のものです。 mailto:sage [2007/05/23(水) 07:45:05 ID:idMNbs3F]
>>82
ARM7のプログラムが置かれるWRAMは専用の領域だそうです。
ttp://www.bottledlight.com/ds/index.php/Memory/Layout
のPrivate RAM(0x03800000〜0x0380FFFF:64 KB)

Shared RAM(0x037F8000〜0x037FFFFF:32 KB)
を、ARM9からWRAM_CR = 3を実行してARM7に割り当てようとしたんですが

84 名前:名前は開発中のものです。 mailto:sage [2007/05/23(水) 07:49:34 ID:idMNbs3F]
すみません途中できれました。
(続き)
ARM7からShared RAMの部分をアクセスしたらフリーズしてしまいます。
しょうがないので、VRAM_DをARM7のメモリ空間に指定して使ってます。
(desmumeのソースを参考にしました)

85 名前:82 [2007/05/23(水) 11:58:16 ID:motUPcYL]
>>83
ARM7はプログラム自体がWRAMに置かれるのですね
それでプログラムサイズの制限が64Kだったんだ
私もVRAM_Dを使うことにします




86 名前:名前は開発中のものです。 mailto:sage [2007/05/23(水) 14:29:57 ID:CBYIFONF]
それって高速動作が必要な関数だけじゃないの?
プログラム全部で64kてしょぼすぎる。

87 名前:名前は開発中のものです。 mailto:sage [2007/05/23(水) 15:28:30 ID:motUPcYL]
>>86
www.helloworld.jp/~duke/nintendo_ds/nds_develop4.html
には
GBADEVフォーラムにおけるポストでは、DevKitPROでは、
ARM7実行可能コードは最大64KBに制限されると言及されました。
って書いてあるんだ。


88 名前:名前は開発中のものです。 [2007/05/23(水) 15:34:36 ID:motUPcYL]
サウンドルーチンだけなのでコード部分は64Kあれば十分かな。
ただサウンドバッファ用のメモリをどうするかで悩んでました。

ところでVRAM_DはARM7からアクセスするときもワード単位ですかね。


89 名前:Moonlight mailto:sage [2007/05/23(水) 17:43:56 ID: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++を使わない方がいいかも。


90 名前:88 [2007/05/24(木) 07:06:54 ID:aj7YaroW]
>>89
バイト単位で読み書きできるんですね
その他情報も参考になります
ありがとうございました。

91 名前:名前は開発中のものです。 mailto:sage [2007/05/25(金) 03:43:00 ID:4YzO8T1a]
ありがとうございます。参考になりました。
なるほど、DevKitProR20はすでに共有WRAMもARM7に割り当てているのですか…
ファームによっては動かないのは困りますね。やはりVRAMをARM7に割り当てることにします。
そしてARM7のソースはCPPではなくCソースとしてコンパイルするようにしてみました。

頂いた情報を元にして色々弄ってみます。

92 名前:名前は開発中のものです。 [2007/05/26(土) 14:07:43 ID:prDWTsQK]
すみませんが誰か助けていただきたく

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

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

プログラムの話じゃなくてすみません

93 名前:Moonlight mailto:sage [2007/05/27(日) 21:05:25 ID:MUD6Al/y]
>>92

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できるので、聴いてみたいだけなら試してみてください。


94 名前:名前は開発中のものです。 mailto:sage [2007/05/28(月) 03:35:30 ID:GoMQTjDv]
量子化ノイズは振幅方向じゃないですか

95 名前:Moonlight mailto:sage [2007/05/28(月) 05:00:53 ID:KQ4mCJx4]
>>94

わ、確かにその通りです。慧眼お見それしました。量子化ノイズはAD変換かビット数変換時のノイズですよね。適当なこと書いてごめんなさい。
適切な表現がわからないのですが、周波数変換は(おそらく聴く限りでは)最近傍補完なので変換誤差が大きい、ということです。
モスキートノイズのようなものが入るのですが、こういう現象を表現する単語があったら教えて頂けると有り難いです。




96 名前:名前は開発中のものです。 mailto:sage [2007/05/28(月) 10:03:54 ID:2YHfuliX]
なるほど、エミュレータの改造してて、サウンドの生成とかしてるので
参考になります。
ハードウェア側の基本周波数に合わせた周波数設定にしないと、
ハードウェアによる補完が発生→音質の低下が発生する
なんですね。

出来るだけ少ないデータで音質をあげたいので、参考になりました

97 名前:名前は開発中のものです。 mailto:sage [2007/05/28(月) 20:28:54 ID:3IWalm8E]
>>95
ttp://www.groovecube.com/ja/tutorial/tech_alias.html
これでいいのかな

98 名前:名前は開発中のものです。 mailto:sage [2007/05/29(火) 22:12:53 ID:8czSWuso]
16bit色背景を使ってるんですが、透過色にしたいときはそのドットのアドレスに何を入れればいいんですか?

99 名前:名前は開発中のものです。 [2007/05/30(水) 07:17:31 ID:T+UjS17y]
>>98
0x8000じゃないですか

100 名前:名前は開発中のものです。 mailto:sage [2007/05/30(水) 11:45:42 ID:gnisP2wT]
ありがとうございましゅ〜

101 名前:名前は開発中のものです。 mailto:sage [2007/06/01(金) 12:30:36 ID:WIXJ61jG]
>>99
0x8000だと黒くなってしまうのですが。

102 名前:99 [2007/06/01(金) 17:36:25 ID:7cHDqmoD]
>>101
適当に書いただけだからごめんね

103 名前:名前は開発中のものです。 mailto:sage [2007/06/02(土) 14:15:45 ID:E7QBhPlx]
>>92
ソースまで付けていただいてありがとうございます
おかげさまでwavをきちんと再生できるようになりました
結局soxの使い方が間違っていただけのようです(^^;

大きなデータを入れたらコンパイルが通らなかったので次はファイルシステムをいじってみようと思います
arm7は最大64KBの制限があるとの記述を見つけたのですが、arm9のサイズ制限っていくつでしょう?


104 名前:名前は開発中のものです。 [2007/06/04(月) 08:26:57 ID:QTKoOJgP]
>>103
arm9はメインRAMに転送されるから4MBかな

105 名前:名前は開発中のものです。 mailto:sage [2007/06/04(月) 10:38:44 ID:+Dw64mCi]
>>103
ARM7にそんな制約はない。



106 名前:名前は開発中のものです。 [2007/06/04(月) 11:17:04 ID:QTKoOJgP]
>>105
ndsファイルから転送されるARM7プログラムが64KBまで
メインRAMにプログラムロードしてジャンプすればそれ以上も可能だけどARM9とのメモリ管理が大変だと思う

107 名前:名前は開発中のものです。 mailto:sage [2007/06/04(月) 11:39:01 ID:+Dw64mCi]
だからそれはARM7の制約じゃないって。

108 名前:名前は開発中のものです。 mailto:sage [2007/06/04(月) 12:41:16 ID:AXHKpxL6]
ARM7側って書けば良いんだろ。オマエ細かいことにこだわりすぎ

109 名前:名前は開発中のものです。 [2007/06/04(月) 17:04:59 ID:QTKoOJgP]
>>107
そんな当たり前のことは前提で書いているのだと思った

110 名前:名前は開発中のものです。 mailto:sage [2007/06/04(月) 18:02:12 ID:uE7vHbRc]
メインRAMをARM7側が占有しても何の問題も無いと思うが

111 名前:名前は開発中のものです。 mailto:sage [2007/06/05(火) 01:05:28 ID:KdmaRc3b]
さすがage厨だ

112 名前:名前は開発中のものです。 mailto:sage [2007/06/09(土) 03:57:55 ID:3WhHJTTj]
age厨うざいですよ

113 名前:名前は開発中のものです。 mailto:sage [2007/06/10(日) 00:13:14 ID:uiXXcFw3]
タッチパネルを使ったプログラム作ってるんですが、時々ズレた座標を取得してるみたいなんです。
当然、タッチパネルのキャリブレーションは行っています。
出来るだけ誤差の少ない座標の取得方法ってあるのでしょうか?
ピクトチャットだと全然ズレないんで、ハードがおかしいってことは無いと思います。

114 名前:名前は開発中のものです。 mailto:sage [2007/06/10(日) 05:50:40 ID:pzGrWNqU]
age厨って本当にウザいですね
死んでもらいたいものです

115 名前:名前は開発中のものです。 mailto:sage [2007/06/10(日) 12:28:40 ID:uTxkIh/P]
>>114
ageても荒らしなんて来ないから安心しろ。
びびりすぎだぞ。



116 名前:名前は開発中のものです。 [2007/06/10(日) 15:10:45 ID:Yn+Hy7qH]
age

117 名前:名前は開発中のものです。 mailto:sage [2007/06/10(日) 17:19:02 ID:aLDgBZvj]
>113
サンプリング周期を短くして、16msといわず
5msくらいで・・NDSってタイマーとかあるでしょうか。
三個をくらべて一つだけ急に離れてるのを捨てる、とか、
三個の平均を16msの間のタッチ位置として扱うとか・・・

タイマー50msのマシンで16msのFPSを計りたいときのしくみに
似ているように思ったので。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<236KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef