ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

NDS開発 in Japanコミュのフリーの開発環境

  • mixiチェック
  • このエントリーをはてなブックマークに追加
http://j-gbadev.hp.infoseek.co.jp/ds/index.htm
いつの間にか出てたみたいですね。
早速遊び倒すぜー!
と行きたいとこですが忙しくって着手できませんw

環境について色々と情報交換しましょう。

コメント(18)

はじめまして。yasuhoと申します。

おお、GBAプログラミング研究所の方が発表されたのですね!
まずはエミュレータで開発してみようかな。
実機で動かすには、やはりPassMeを作る必要があるのですよね。
ハード工作、苦手なんだよなあ。

どうぞよろしくです。
PassMe、手に入ったので 自作デモを動かそうと
ちょこちょこいじってますが、エミュでは動いても実機で動作しない・・・。

なかなか難しいです。ハイ。
ども〜。
コミュ作ったのに放置しててスイマセン(汗

開発が本格的に出来てからで、いいかな〜と思ってたんですけど、これから動きがありそうなのでがんばっていきましょう!

たぶん問題は、bootのmainではないでしょうか?
こんな感じですよね〜。

int main(int argc, char ** argv) {
LoadBin(GETRAW(arm9_bin), 0x02004000, GETRAWSIZE(arm9_bin));
LoadBin(GETRAW(arm7_bin), 0x02380000, GETRAWSIZE(arm7_bin));

*(volatile unsigned int *)0x027FFE24 = 0x02004000;

CallARM7();
while (1) ;
return 0;
}
修正したら実機でも動きました!!!
すげぇぇぇ〜〜〜!!
ぼくも同じところで引っかかりました。^^;
NDSDevのサンプル、なおしておいて欲しいなあ。
 開発環境を作るところで苦労しています。
http://www.aaronrogers.com/nintendods/ndsdevenv.php
のWeb-based Installer 2.4.0 (170KB)をダウンロードして、
オンラインインストールをしました。

 そして、templateをmakeしたところ、
arm-elf-g++.exe: ds_arm7cart.specs: No such file or directry
のエラーが出まして、いろいろ調べて、dsctrls1.zipをダウンードし、中のds_arm7cart.specs等を\arm-elf\lib下にコピーしました。
 これでエラーは出なくなりましたが、実機に持っていっても白画面のままです。
 そこで、yasuhoさんが公開しているvramtestのソースをコンパイルしたところ、コンパイルされたvramtest.ndsはエミュレータ上で動作しますが、vramtest.nds.gbaを実機に持っていっても、やっぱり白画面の状態です。
 バイナリを比べると、yasuhoさんのvramtest.nds.gbaと私のコンパイルしたvramtest.nds.gbaはサイズも違います。
 何か上手く動かない原因は考えられますでしょうか。

 みなさま、よろしくお願いいたします。

 ちなみに、私がコンパイルしたvramtest.ndsとyasuhoさんが作製したvramtest.ndsもサイズが違っています。でも、両方ともエミュレータでは動いています。
>たろサさん

あれー?動きませんかー。
アーカイブに添付したvramtest.nds.gbaもダメですか?
私のPassMeでは動作しましたが。

ちなみに私はNDSDevEnv 2.3.0を使いました。
サイズの違いはそのへんかな?
>おにいさん、はじめまして。
 そうboot辺りなんです。loader.binをヘッダとしてくっつけてしまえばいいのですか。今日帰宅したら試してみます。
 ありがとうございます。

>yasuhoさん、こんにちは。
yasuhoさんアーカイブのvramtest.nds.gbaはちゃんと実機でどうさします。大丈夫です。
 NDSDev 2.3.0って、どこかに有りましたでしょうか?探しきれていないです。
>たろサさん

ありゃー。なんかもう2.3.0はないみたいですね。
おにいさんの方法でうまくいくといいですが。
 たろサです。
 がーん。
 ndslib/examples/tools/というフォルダがありませんでした。当然loader.binもありません。c:/ndsdev以下を検索かけましたが、見つかりませんでした・・。

 ただいま、思案中。
 loader.binがprojectsフォルダの下にあるサンプルの中にありました。
 検索ミスってたようです。まだ、成功していませんが、もう少しトライしてみます。
 ようやく、2.4.0環境で動きそうなので報告します。

 基本はおにいさんの言われたとおり、ndsファイルにヘッダをコピーする方法です。
 ただし、ヘッダとなるloader.binが見つかっても、うまく動作しなかったので、自分でヘッダを作りました。やったことは、2.4.0のprojectsに付属しているtetrisのtetris.ds.gba(これは実機で動く)の先頭0x0000〜0x06FFまでをヘッダとして切り出しました。これをloader.binとして使っています。
 これは、tetris.dsとtetris.ds.gbaを比較した結果、この先頭1791Bが違っていたという理由です。
 でも、この部分が何をやっているかは、調べていません。
 これで、しばらく様子をみてみます。
 3代目・あるふぉんすさん、こんにちは。
 初めまして。

 devkitproとndsdevが違うものだっていうことを、3代目・あるふぉんすさんの書き込みで気がつきました(^^;。

 私は最初、ndsdevを使っていて、今はdevkitproを使っていますが、devkitproの方がとっつきやすい感じです。基本的にarm7のことは気にしないで組めます。

 自作ソフトをおいていたりするので、いじってやってください。
http://www.geocities.jp/momoonga/
放置気味ですいません。
例のイベントに向けてゲーム作っているので、開発のメモとか適当に投下していきますー。
自分用に書いているのですが、何かの参考になれば幸いです。
とりあえずLinuxでの開発環境のセットアップしたときのです。
最新のバイナリにあわせて、少し直してみました。


■■■LinuxのNDS開発環境セットアップメモ■■■

環境 : Vine Linux 3.2 (Ducru Beaucaillou)
Kernel 2.4.31-0vl1.8smp on an i686

■devkitPro
コンパイラとか開発環境

devkitARM_r19a.tar.bz2をダウンロード
http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=124207&release_id=423401

■libnds
NDSのライブラリ
libnds をダウンロード
http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=151608&release_id=433318


■展開
$ tar --directory=/usr/local/ -xvf devkitARM_r19-linux.tar.bz2
$ mkdir /usr/local/devkitARM/libnds
$ tar --directory=/usr/local/devkitARM/libnds -xvf libnds-20060719.tar.bz2

■実行確認
$ /usr/local/devkitARM/bin/arm-eabi-gcc -v
Using built-in specs.
Target: arm-eabi
Configured with: ../../gcc-4.1.1/configure --enable-languages=c,c++ --with-cpu=arm7tdmi --enable-interwork --enable-multilib --with-gcc --with-gnu-ld --with-gnu-as --disable-shared
--disable-threads --disable-win32-registry --disable-nls --disable-debug --disable-libmudflap --disable-libssp --target=arm-eabi --with-newlib --prefix=/usr/local/devkitPro/devkit
ARM
Thread model: single
gcc version 4.1.1 (devkitARM release 19)


■その他のビルドに必要なツールのコンパイル
・ndstool
ARM7とARM9 のコードを結合してDSで実行できるようにする

$ cvs -d:pserver:anonymous@devkitpro.cvs.sourceforge.net:/cvsroot/devkitpro co tools/nds/ndstool
$ cd tools/nds/ndstool

Makefileの編集 以下2行追加(あらかじめPATHを通していれば必要なし)
#---------------------------------------------------------------------------------
+ export DEVKITARM=/usr/local/devkitARM/
+ export DEVKITPRO=/usr/local/devkitARM/
PATH := $(PATH):$(DEVKITARM)/bin

$ make
$ cd ..
$ cp -R ndstool /usr/local/devkitARM/


・dsbuild
GBAカートからNDSモードで実行できるバイナリを作成

$ cvs -d:pserver:anonymous@devkitpro.cvs.sourceforge.net:/cvsroot/devkitpro co tools/nds/dsbuild

tools/nds/dsbuild/Makefileの編集 以下2行追加

+ export DEVKITARM=/usr/local/devkitARM/
+ export DEVKITPRO=/usr/local/devkitARM/
PATH := $(PATH):$(DEVKITARM)/bin

$ make
$ cp -Rf dsbuild DefaultLoader/ /usr/local/devkitARM/bin/



一応、これで環境の設置完了

■サンプルコードをコンパイルする
nds examples 20060621をダウンロードして、適当な場所に展開
http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=159894

中のMakefileを自分好みにアレンジする。(devkitPROを設置したパスの設定等)
以下、一例。

$ cat Makefile

DEVKIT=/usr/local/devkitARM

NDSLIB_INC=$(DEVKIT)/libnds/include
NDSLIB_LIB=$(DEVKIT)/libnds/lib

BINDIR=$(DEVKIT)/bin
LIBDIR=$(DEVKIT)/lib
INCDIR=$(DEVKIT)/include

PREFIX=arm-eabi-

all: demo1.nds.gba

arm7_main.o: arm7_main.cpp
$(BINDIR)/$(PREFIX)g++ -g -Wall -O2 \
-mcpu=arm7tdmi -mtune=arm7tdmi \
-mthumb-interwork -I$(NDSLIB_INC) -DARM7 \
-c arm7_main.cpp -o arm7_main.o

arm7.elf: arm7_main.o
$(BINDIR)/$(PREFIX)g++ -g -mthumb-interwork -mno-fpu -specs=ds_arm7.specs \
arm7_main.o -L$(NDSLIB_LIB) -lnds7 -o arm7.elf

arm7.bin: arm7.elf
$(BINDIR)/$(PREFIX)objcopy -O binary arm7.elf arm7.bin

arm9_main.o: arm9_main.cpp
$(BINDIR)/$(PREFIX)g++ -g -Wall -O2 \
-mcpu=arm9tdmi -mtune=arm9tdmi \
-mthumb-interwork -I$(NDSLIB_INC) -DARM9 \
-c arm9_main.cpp -o arm9_main.o

arm9.elf: arm9_main.o
$(BINDIR)/$(PREFIX)g++ -g -mthumb-interwork -mno-fpu -specs=ds_arm9.specs \
arm9_main.o -L$(NDSLIB_LIB) -lnds9 -o arm9.elf

arm9.bin: arm9.elf
$(BINDIR)/$(PREFIX)objcopy -O binary arm9.elf arm9.bin

demo1.nds: arm7.bin arm9.bin
$(DEVKIT)/ndstool/ndstool -c demo1.nds -9 arm9.bin -7 arm7.bin

demo1.nds.gba: demo1.nds
$(BINDIR)/dsbuild demo1.nds -o demo1.nds.gba

clean:
rm -f *.bin
rm -f *.elf
rm -f *.o
rm -f *~
rm -f *.nds
rm -f *.nds.gba



このままmakeしてもコンパイルエラーになる。
DISP_SRが定義されていないとでる。
DISP_SRは libnds/include/nds/registers_alt.hに定義されている。
そのため /usr/local/devkitARM/libnds/include/nds.h を修正して以下のように加える。

#include <nds/timers.h>
+ #include <nds/registers_alt.h>

とりあえずmakeはエラーにならない。
しかし重複定義のwarningが出る。
てっとりばやくコンパイルする方法なので、あとで自分のプログラムをコンパイルする際は、
直す必要があると思われる。
 devkitPro 1.3.5に、DSwifi 0.3aが追加されましたね。

 まだ、使ったことがないので良くわかりませんが・・・。

ログインすると、残り3件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

NDS開発 in Japan 更新情報

NDS開発 in Japanのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング