にゃごすwiki

DS開発情報収集

DS開発情報を集める

いじっていて、気づいた事などを書き留めてみる。
勘違い等あったら、こっそり教えてくれるとうれしかったり。

<< 2024-3 >>
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

2010-4-28

  libndsドキュメント翻訳

適当に翻訳してみるテスト中...
video.h 位しか出来てないけど
いちいち、レジスタの内容をgbatechを見るの面倒なので、
gbatechの内容も取り込んでしまえたらいいなぁなんて、妄想中。

http://ngs.no.coocan.jp/libnds/

2010-3-20

  HomebrewMenuから起動


vramDをarm7に指定してるとうまく起動出来ないみたい。
変なことをしていると、だめなのかな。

2010-3-12

  HomebrewMenuとかfilesystemとか

HomebrewMenuの新しいバージョンがでてた。R4とかのブートローダーまで用意してくれている。argvに関してはこのメニューを使えってことで終了なのかな。

そういえば、いつの間やらプログラムの終了が出来るようになってたのね。R4ではHomebrewMenuから起動してmainを終了するとHomebrewMenuに戻るのを確認できた。ttdsでは終了で止まってしまうみたい。これからは無限ループはやめてプログラムを終了するようにしないといかんな。

DeSmuMEがargvに対応したのでデバッグもしやすいし、(最近のsvnじゃないとダメっぽい)やっとfilesystemを使う環境が整った感じかな。

DeSmuMEをコマンドラインで起動するとfilesystemの初期化でこけることがあるんだけど、コマンドライン起動の場合、「ROMパスを最後に選択したROMのパスにする」が効かないようで、CFのパスがROMパスとずれてしまい初期化に失敗している模様。なので--cflash-pathスイッチでCFのフォルダをROMフォルダに必ず指定するようにすればいいみたい。
あふだとこんな感じ

〜\DeSmuME_dev.exe "$P\$F" --cflash-path="$P"

HomebrewMenuをいじって俺専用メニューでも作ってみるかな。

2010-2-22

  DeSmuMEのiDeasデバッグ出力

DeSmuMEでiDeasのデバッグ出力に対応したって書いてあったんだけど、やっぱり出力されないなーと。DeSmuMEのソースを確認したところprintfしているので、標準出力に出力されるはずなのだが、、、

続きを読む...

2010-2-16

  filesystemをハック(ってほどのことでもないが)

filesystem(元efslib)だけど、相変わらず、argv対応されたメニューじゃないと起動出来ない。(HomebrewMenuとか)すぐに何らかの対応がされると思って待ってたんだけど、結局そのままなのでなんとかならないかと調べてみた。

続きを読む...

  ndstoolではまった

maxmodを試してみようと、サンプルのmakeしてみると、ndstoolがエラーになった。

Nintendo DS rom tool 1.46 - Nov 30 2009
by Rafael Vuijk, Dave Murphy, Alexei Karpenko
failed to open input file
make[1]: *** [/c/devkitPro/nds-examples-20091201.tar/audio/maxmod /streaming/streaming.nds] Error 1
make: *** [build] Error 2

うーむ、また64bitの呪いか〜と萎えていた。

続きを読む...

2009-6-26

 libnds 更新

更新されてました。
2009/6/24 libnds-1.3.6
2009/6/24 default_arm7 0.5.5
2009/6/25 current

default_arm7は修正はいってないのにバージョンだけ上がってる。libndsと同期してバージョンあがるのかな?
current?ってなんぞやと思いきや、ポーティングされたライブラリが入るみたい。
pngとzlibがポーティングされたようです。
ってことは、libndsにpng読み込みが組み込まれたのか?
と期待したけど、libndsはfifo関連と、スプライトのモザイクのバグ修正のみのようです。
むー、pngのサポートはPSPだけなのかな。
今まさに、pngのライブラリをいじってたことろだったから、いいタイミングだと思ったのになぁ。

2009-6-12

 libndsまたまたバージョンアップ

このところ、頻繁ですねぇ。
更新内容はまだ見てません。
2009/6/11 libnds 1.3.5
2009/6/11 dswifi 0.3.9
2009/6/11 default arm7 0.5.4

 ideasのデバッグメッセージにバグが、、、

前に書いたideasのデバッグメッセージにバグがありました。
mallocした文字バッファの開放を忘れてました。

iDeasMessage関数の最後に以下を追加して下さい。
 free( buf );
元の記事も修正済みですので、完全ソースはこちらをご覧下さい。

申し訳ありませんでした。

2009-6-2

  libndsなど更新されてた

libnds 1.3.4
maxmod 1.0.5
dswifi 0.3.8
default_arm7 0.5.3
nds-examples-20090531
こんなところかな。
またまたfifo関係がかなり弄られているっぽい。

2009-5-3

  gnuboyDSテスト

gnuboyを弄ってます。というか、ました。って感じだけど。
fmsxDSを弄っていて、もう少し速度が上げられないかと思っていたのだが、考えるられるのが、アセンブラ化とか、最適化とか動的コンパイルとかあるけど、どれもハードル高くて。もうひとつ、DSならでは(ってほどのことではないけど)の高速化として、ハードウェアをハードウェアでエミュレーションってのがある。要するにスプライトはスプライトで表示するようにするってこと。移植するソースはwindows用なので、1フレームごとに1画面描画するのでDSには重荷だったりします。さてやってみようかと思ったところ、どこから手をつけたらよいやら。そこで、GBとDSなら親和性高そうなので結構簡単にエミュできるんじゃないかと
スプライトとBGはとりあえず、表示できるようになった。(カラーとか全然ダメだけど。)後は、割り込み関係ができればいいんだけど。ってところで止まってます。

※割り込み関連が入っていないので、スクロールしたときなどに激しくちらついたりします。UIとか入っていないしゲームもろくに動きませんので、常用などできるレベルではありませんので、ソースがみたいとかどのくらい動くのか知りたい奇特な方だけどうぞ。

ndsファイルにDLDIパッチして、SDのルートにコピーしてください。ゲームはmario.gbというファイル名にリネームしてSDのルートにコピーしてください。

ソース(バイナリ付)
gnuboyDS_000.zip(785)

  devkitARM バージョンアップ


devkitARMがr26にバージョンアップしています。
更新内容は、、、、分からん。
filesystemが0.9.2にバージョンアップしてます。
今回はディレクトリ一覧取得関連のバグフィックスのようなので速攻アップデートしておきましょう。
アップデートのついでにfilesystemを弄ってみたんだけど、エミュレーターでは動いてるんだけど、実機では初期化が成功しない。argv[0]がセットされないからダメなのかな。argvセットしてくれるランチャとかならいけると思うんだけど、あるんかいな。

サンプルソース
efs_libとほとんど同じ。
test_fs.zip(625)

続きを読む...

2009-4-5

 devkitproのバージョン上がってた


うーむ、チェックしていたはずだったんだけどなぁ。

今回は何が変わったんだろうなぁ。
じっくり見てないけど、目につくところでは、efs_libがfilesystemって改名したのか。
あとは、バグフィックスがメインかなぁ。

2009-3-15

  iDeaSでデバッグメッセージ

DSは2画面あるのでデバッグメッセージの表示に困ることは少ないけど、両方の画面を使うアプリだと、面倒なことになってくるでしょう。iDeasでconsole表示ができそうなので、デバッグメッセージの表示を試してみた。
デバッグメッセージの出力先にお困りの方は使ってみてください。

続きを読む...

2009-1-3

 maxmodのバージョンあがってる

サウンドドライバのmaxmodのバージョンが25日にあがってた。
libwifiも微妙にバージョンあがってたのね。
年末にlibndsをバージョンアップするってgbadevのフォーラムにあったと思ったんだけどなぁ。

あ、これこれ、間に合わなかったのかな。
http://forum.gbadev.org/viewtopic.php?t=16263

2008-12-12

 DevkitPro r24

やっと、新バージョンリリースですねぇ。
全更新なので、updater使ったほうが簡単です。
まだ、ちょこっとexample見ただけだけど、ARM7とARM9のやりとりはIPCからFIFOに変更されてる。libfatからインストール済みのドライバが削除されたり(Desmumeでのデバッグが面倒に)I/O直だったのが、関数が用意されてかなりシンプルにかける様になってるっぽい。
起動パラメータはダメだったのかな〜。

2008-10-8

 DSLuaマニュアル翻訳中


何となく、DSLuaを弄ってみようかと思いきやマニュアルの翻訳見つからないなぁ。つーことで適当に翻訳しながら覚えるかなぁと。まぁ、必要ないと思うけど。
なんでエラーが表示されないんだろうと思ってたんだけど、文字色おかしいんじゃないか?
みんな、スクリプトのデバッグどうやってるんだろうねぇ。

横のメニューからどうぞ。

2008-7-20

 LuaDSちょっと更新


一つ一つ関数を用意するの面倒なので、メモリを直接いじる関数を追加しました。
これだけあれば、BGだってスプライトだって好き勝手し放題。
あとファイル一覧の関数も追加してみた。
BG,スプライトのサンプルとファイル一覧のサンプルを作ってみた。

続きを読む...

2008-7-19

 SD→microSD変換アダプタ


さすがに実機でのテストでいちいち細かいmicroSDを出し入れするのにうんざりしていたし、マジコンのmicroSDスロットが壊れるんじゃないかと不安を感じてたんだけど、AKIBA PC HOTLINEでSD→microSD変換アダプタを見つけたので早速買ってきてみた。

続きを読む...

2008-7-2

 libnds cvs版

libfatをコンパイルするついでに、libndsを更新したところ、
IPCでワーニングがぽろぽろ出る様に。<deplicated>だって?、使っちゃダメってか?
arm7でタッチパネルのデータセットできないと思うんだけどなぁ。
ライブラリでそこまでやってくれるようになるのかなぁ。

  libfatライブラリにR4のドライバ追加

お、新しいideas dldiの起動が早くなったっぽいですねぇ。
てなことで、libfatを更新したついでに、R4のドライバをライブラリに組み込んでみた。ideasでテストするのにいちいちdldiパッチ当てるの面倒ですからねぇ。
makefileにdldiパッチまで書けばいいじゃんて思われた方には必要ありません。

続きをよむ...

2008-6-30

 Devkitpro r23b

いつの間にやら出てたんですなぁ。
rename問題も解消したいみたいね。

 libfat20080530

いつの間にやら、こっちもアップデートされてたのでアップデートしてみた。
バイナリないところをみると、wiiのためのリリースなんだな。libndsをCVSから落とさないと、argv関連でコンパイルできない。
そろそろ、libndsリリースしてほしいなぁ。
で、コンパイルしてみたところ、ディレクトリの取得でフリーズしてしまう現象が。少し前にCVSから落としたやつで同じ状態だったんだけど、どうせライブラリのバグなんだろうと放置してた。ほかの人には特に問題なってないということは、おいらのソースの問題なのかと目をこらして見直してみたところ、やっとわかった。
dirnext()の第2パラメータファイル名が入るんだけど、utf-8対応でサイズが256バイトから3倍の768バイトに拡張されてた。長いファイル名のファイルなんてないから問題ないだろうとチェックしてなかったのが、いけなかったか。
というか、MAX_FILENAME_LENGTHがfat.hに定義されてないのがそもそも、、、、
なんか前にもこんなことがあった様な気もするなぁ。

void printdir( char * path ){
	char fname[768];    ←256から変更
	struct stat st;
	DIR_ITER * dir;

	dir = diropen( path );
	if( dir != NULL ){
		while( dirnext(dir, fname, &st)==0 ){
			iprintf( "%s\n", fname );
		}
		dirclose(dir);
		iprintf( "--------------\n");
	}else{
		iprintf( "diropen error!! %s\n", path );
	}
}

2008-6-29

 luaでテキストエディタを作ってみる。

fmsxDSからfmsxを削除して、luaだけ動く様にしてみた。
名前は、luaDSとでもしておく(紛らわしいことこのうえないな。)。
まぁ、すでにDSLuaがあるので、今更することもないんだけど。実際にどこまでのソフトがluaで作れるのか試しに、手頃?かどうかはわからんけど、エディタでも作ってみるかと。ま、この手の開発でやりたくなることの一つだしね。

基本的なエディットはできる様になったかな。
もうちょっとで、簡単な変換くらいはできそうな予感。

使い方は面倒なので、また今度。

ダウンロード

バイナリLuaDS_001b.zip(776)
ソースLuaDS_001s.zip(735)

エディタスクリプトedit001.zip(731)

スクリーンショット

LuaDS.png

2008-5-20

 プロファイル その2

ヒントがプロファイラのソースに書かれていた。

no_instrument_function アトリビュート?を関数につけるとその関数は
プロファイル対象から外れるって寸法です。

つーことで、HblankHandlerを元のソースに戻して、
プロトタイプ宣言にアトリビュートを追加します。

void HblankHandler(void)
    __attribute__ ((no_instrument_function));

ついでに、cyg-profile-Sys.cに以下のプロトタイプ宣言を追加。

int Sys_FileOpenWrite (char *path)
    __attribute__ ((no_instrument_function));
int Sys_FileWrite (int handle, void *data, int count)
    __attribute__ ((no_instrument_function));
void Sys_FileClose (int handle)
    __attribute__ ((no_instrument_function));

makefileの CFLAGSN とcyg-profile-Sys.cのルールを削除します。

HBlankハンドラを移動しないですむのでちょっと楽になったかな。

サンプル(修正)
test_profile.ZIP(518)


過去の情報

 DeSmuMEでFlashのイメージを使う

DeSmuMEはndsファイルのフォルダをFATカレントフォルダとしてエミュレートされるけど、ファイルの書き込みができない。
0.7.1あたりからイメージファイルに対応している。

  • イメージファイルを作る

ネタ元からFATImageApp.jarを落としてくる。
javaなので、コマンドラインから以下で起動

java -jar FATImageApp.jar

ウィンドウが開くので File - Create FAT Image でイメージの作成。
できたJFATMADExxxを選択して、Add contentボタンでファイル選択で追加していく。

  • DeSmuMEをスイッチ付きで起動(xxxxは作成したイメージファイル)
DeSmuME.EXE --cflash=xxxx

ネタ元:http://forums.desmume.org/viewtopic.php?id=102

 insightでデバッグする

DeSmuMEとinsightでソースコードデバッグ可能らしいので、ためしてみる。
insightのバイナリを落とす。(最新が欲しければ、ソースから自分でコンパイルする。)
[http://sourceforge.net/project/showfiles.php?group_id=114505]

  • DeSmuMEをスイッチ付きで起動する。(xxxxはポート番号)
DeSmuME.EXE --arm9gdb=xxxx  (ARM9)
            --arm7gdb=xxxx  (ARM7)
  • nds起動(DeSmuME)
File - Open  でデバッグするndsを開く
  • insightを起動
insight\bin\arm-eabi-insight.exe
  • ターゲット設定(insight)
File - Target Settings
  Target  : Remort/TCP
  HostName: localhost
  Port    : xxxx        (DeSmuMEで指定したポート番号) 
  • elfファイルを実行(insight)
File - Open で*.elfファイルを開く
  • ターゲットに接続(insight)
Run - Connect to target

Successflly Connected. ダイアログが表示されれば、接続完了。
エラーになる場合は、接続できていないのでポートが開いているか(ファイヤーウォール、アンチウィルスソフト等)を確認する。開いている場合は、何度かinsightを起動し直したりすると接続できたりする。(謎)

  • デバッグする
_startで止まっているので、ツールバーの左プルダウンリストから、ソースを選択
行番号の左の-をクリックすると赤四角が表示され、ブレイクポイントが設定できる。
ツールバーのcontinueをクリック。設定したブレイクポイントまで実行される。
Step、Next等でデバッグする。

 luaライブラリ

単にlua 5.1.2をライブラリにアーカイブしただけです。
fmsxDS ver.0.08からこれが必要です。
ま、lua本家からソース拾ってきてリンクすればいいんだけど。
2バイト(SJIS?)不具合対応のパッチをあててあるはず。

libLua_512.zip(686)

 bitmapサンプル

MAINに2枚重ね、SUBに1枚表示してみる。


 起動パス

まだ、argvに値がセットされていないのね。
起動パスは拾えないのかー。

 Vistaでは

devkitARMはVistaではうまく動作しないみたい。仕方なくVirtualPCで。
→なんとpathを追加するだけでOKでした。以下はおいらのパス指定。

c:\ndsdev\devkitARM\arm-eabi\bin
c:\ndsdev\msys\1.0.11\bin
c:\ndsdev\devkitARM\bin
c:\ndsdev\devkitARM\libexec\gcc\arm-eabi\4.1.1

 fatライブラリ

gba_nds_fat(旧)とlibfat(新)がある。混同しないように気をつけましょう。
devkitARM r20からlibfatが標準装備された。

 dldiドライバ

.ndsファイルを直接書き換えることで、新しく出てきたマジコンのドライバに対応させてしまおうというすばらしい仕組み。nds_fat_lib、libfatの両方で使える。

 libfatを使ってみる。

インストール

  • libfatは別アーカイブなので、適宜ダウンロードする。
  • fat.h をlibnds\includeにコピー
  • libfat.a をlibnds\libにコピー
  • Makefileにlibfatを追加 libndsより先に書かないとライブラリがエラーになる。
LIBS= -lfat -lnds9

記述

  • fatInitDefault()を実行後、ファイル関数は標準関数(fopenとかfreadとか)が使用できる。
if( fatInitDefault() != NULL ){
   fp = fopen( "test.txt","r" );
   fread( buf, 1, 10, fp );
  • バイナリとテキストの区別はないみたいなことが書いてあったかな。(未確認)
  • DSスロットとGBAスロットは別パーテーションとして管理されているので、両方のスロットに挿してあっても使用できる。ファイル名の指定時にいわゆるドライブ名のごとくfat0:〜fat3:を指定する。fat:とfat0:は起動時のスロットがセットされるので、DSのスロットとGBAスロットを意識せずに記述できる。現状では、DSスロットのマジコンが主流なのでGBAスロットを考慮する必要があるかは微妙だけど、、、
指定パーテーション
fat: fat0:起動したスロット(DSスロットかGBAスロット)
fat1:DSスロット
fat2:GBAスロット
fat3:カスタムスロット(その他のデバイス用?wifiとかdldiドライバ書けばいけるってことか?)

対応ドライバ

以下のドライバは入っているので、そのままつかえる。

ドライバ対応機種
MPCFムービープレイヤー
SCCFSuper Card CF
SCSDSuper Card SD
M3CFM3 CF
M3SDM3 SD
EFA2
FCSRSRAM?
NJSDninjaDS
NMMC
これ以外のマジコンの場合は、dldiで書き換える必要がある。

 サンプルソース