NintendoDS(NDS)非公式開発 Part3
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2008/04/08(火) 07:05:13ID:MngpkM4u初心者歓迎。質問歓迎。英語苦手な人歓迎。冷やかし歓迎。ネカマ歓迎。
資料、リンク等
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/
0002名前は開発中のものです。
2008/04/08(火) 15:17:30ID:1g0GZlxn0003名前は開発中のものです。
2008/04/08(火) 15:31:26ID:r9D6SmNl0004名前は開発中のものです。
2008/04/08(火) 15:45:39ID:MngpkM4uNDSkybookMの作者のmonnlight氏 にお願いがあります
改造したいので最新版のソース公開をお願いします。
連絡方法が無かったのでここに書いときますね
0005名前は開発中のものです。
2008/04/08(火) 17:32:32ID:slCnosDD0006名前は開発中のものです。
2008/04/09(水) 00:14:40ID:H61oeKo90007名前は開発中のものです。
2008/04/09(水) 03:07:33ID:4IBrBpDHそれとも自作でしょうか
0008名前は開発中のものです。
2008/04/09(水) 06:54:57ID:Xhu8qp67ARM7とARM9の2CPU
32ビットx2だけどThumbといって16ビットとしても使える
>>7
お前作れ
0009名前は開発中のものです。
2008/04/09(水) 07:08:13ID:vdVDxp2qなんとか呼び出せないものなのかな
0010名前は開発中のものです。
2008/04/09(水) 16:39:13ID:Wnry4HT0文字入力ってソフトキーボードのことか。
あれはライブラリの形なんてしてないので呼び出しは不可
0011名前は開発中のものです。
2008/04/09(水) 17:40:08ID:vdVDxp2q任天堂提供のライブラリに存在してるのかな
0012名前は開発中のものです。
2008/04/10(木) 23:49:50ID:buPn7sckttp://headkaze.drunkencoders.com/
のKeyboardとかどうよ?
0013名前は開発中のものです。
2008/04/11(金) 03:37:11ID:XWQeXltfこれってコンピューター的には普通なん? プログラムする側には便利なんだけど・・・
0014名前は開発中のものです。
2008/04/11(金) 08:27:41ID:SdsPk1qXメモリマップドIOのことか
普通だよ
ARMにはIN OUT命令がないんじゃないかな
0015名前は開発中のものです。
2008/04/11(金) 12:34:48ID:wT0sV7d6RISCでは普通なんだね
IN OUT命令が必要ないからハードとのやり取りに特別な処理が必要ないんだね
OSが無い環境でのプログラミングって面白いね
*( uint32 *)0x600000 = 1 << 6 とか最初何かと思ったよ
ビット演算子ってこうやって利用するんだね
0016名前は開発中のものです。
2008/04/11(金) 15:55:21ID:SdsPk1qXvolatileとかWindowsのプログラムでは使わないしね
0017名前は開発中のものです。
2008/04/12(土) 00:56:19ID:8n/EoXt3んなこたないw
0018名前は開発中のものです。
2008/04/12(土) 02:53:34ID:ktXoF+sO0019名前は開発中のものです。
2008/04/12(土) 10:57:32ID:NrwO52bjC言語の基礎は他でやってくれ
0020名前は開発中のものです。
2008/04/15(火) 20:22:42ID:s+ai1MQzどうすればいいのでしょうか?
0x40001A8に、B7xxxxxxxx000000のコマンド送信しても
データが受け取れません。
アドレス0x8000000以降には実機だとアクセスできない(?)みたいだし……
0021名前は開発中のものです。
2008/04/15(火) 21:29:57ID:s+ai1MQz0022名前は開発中のものです。
2008/04/16(水) 22:27:41ID:4zCW00RZhttp://ds.spacemonkeymafia.com/downloads.php
http://www.dcemu.co.uk/vbulletin/showthread.php?p=2148047031
以外で。
0023名前は開発中のものです。
2008/04/17(木) 19:49:01ID:xs50DV4u役立たずのお前はもう書き込まなくていいよ
0024名前は開発中のものです。
2008/04/17(木) 22:27:23ID:Q+3j3GRUそういうこといわない!
0025名前は開発中のものです。
2008/04/17(木) 23:56:49ID:EV2Io6jqじゃあおまえは役に立ってるのかと小一時間(ry
0026名前は開発中のものです。
2008/04/18(金) 22:10:09ID:hCAsKzB6この程度も出来んのなら来るな
002721
2008/04/18(金) 23:25:16ID:qK96vfQ+大変ご迷惑をおかけしましたm(_ _)m
読み込み部に下のようなプログラムを組んでみました
for (i=0; i<size; i+=4) {
swiDelay(2);
j = srcaddr + i;
// 読み込みアドレス指定
*(u32*)0x40001AC = (j & 0xff);
*(u32*)0x40001A8 = ((j & 0xff00) << 16) | (j & 0xff0000) | ((j & 0xff000000) >> 16) | 0xB7;
// ROMCTRLを読み込み設定に
*(u32*)0x40001A4 = *(u32*)0x27ffe60 | BIT(24) | BIT(29) | BIT(31);
// データコピー
*((u32*)dest + (i>>2))= *(u32*)0x4100010;
}
NO$GBAであっさり読み込めたので、もしかしたら
聞くまでもないことなのかもしれないと思ったので、
あわてて自己解決したと書き込みました。
ですが……実機ではできませんでした。
他にも手続きが必要なのかもと現在調べていますが……
私にはどうやら敷居が高すぎるようです
0028名前は開発中のものです。
2008/04/19(土) 12:33:13ID:PwhlIjw2俺にもわからんから力になれない
解決したら教えてくれ
ROM吸出しのソースでもあれば参考になるだろうが
Rudolphに聞いてみたら
0029名前は開発中のものです。
2008/04/19(土) 17:01:02ID:en5yglr0*(u32*)0x40001AC = (j & 0xff);
*(u32*)0x40001A8 = ((j & 0xff00) << 16) | (j & 0xff0000) | ((j & 0xff000000) >> 16) | 0xB7;
↑
ソースきちんと読んでないけど、見るからに怪しいな
0030名前は開発中のものです。
2008/04/19(土) 17:46:40ID:yFoqwoJA0031名前は開発中のものです。
2008/04/19(土) 18:11:36ID:en5yglr0バスの幅が16bitsだと、転送で残りの部分にゼロが入ってしまう。
エミュだと動くけど実機では×ならたいていこれ
0032名前は開発中のものです。
2008/04/19(土) 22:12:06ID:57xPYUGEデフォルト値を期待しているとエミュと実機で動作が違ったりしたと思う。
003321
2008/04/19(土) 22:53:52ID:AP7/4/OD・NO$GBA, DeSmuMEでは正常動作
・iDeasでは10000h単位(?)で読みこまれる
・実機では強制的にROMの0x10200番地読み込み(?)
と、挙動がバラバラになりました
GBATekを見てみると、Key1, Key2で暗号化してあるとか、
暗号化回避法とか書いてありますが、この辺も関係あるのかなぁ?
003421
2008/04/19(土) 23:25:16ID:AP7/4/OD・iDeasでは参照アドレスを0x29350と指定すると、0x20050のようになる
→1000h, 100hは無効
・実機ではROMにはない情報が引き出される
ROMCTRLレジスタのデフォルト値をGBATekにあるのに変えてみたところ、
得られたデータに変化がありましたがROMにない情報でした
0035名前は開発中のものです。
2008/04/20(日) 08:54:07ID:mibeG7R0このあたりは、公式じゃないROMからどうやってプログラムをブートするかの
解説だから、ブート後のROMの読み込み方法じゃないとおも。
あたしは良く読まないで諦めちゃった人だから、頑張って欲しいんだけど
いずれにしても、戻ってくるデータストリームはKEY2で暗号化されてるし
コマンドそのものもKEY2で暗号化して送らないとダメって書いてない?
素直に B7aaaaaaaa000000h 送っても無効なコマンドで処理されそう。
(その場合はKEY2ストリームをビット反転させたものが延々と戻ってくるだけです)
ここからは想像なんだけど
結局ROMのデータを読み出すなら、KEY2の暗号シードが分からないわけで
そのKEY2の暗号シードを取得するには、いったん暗号モードをリセットして
最初から自分でKEY1、KEY2って設定していくしか方法がないんじゃない
かなーって気がします。
たぶんRudolphさんが読み込みにつかってるのはこの方法だと思います。
あるいは他の方法で暗号のシードを取得できたり
暗号化そのものを無効化できる方法があるのかなぁ・・・
003621
2008/04/20(日) 21:11:27ID:gpbemj1Vご指摘ありがとうございます。GBATek読んだらかなり細かく暗号化について
書いてあるんですね。今、暗号化プログラムを組んでいるところです
コマンド送信のバイト幅を8Bitにしレジスタ系を32Bitにしたら、
実機以外のエミュですべて正常動作しました。
あとは暗号化実装さえすれば動きそうな気がしますが……
KEY1の設定大変そうです;
0037名前は開発中のものです。
2008/04/21(月) 15:03:22ID:78g5n2kW命令長が32bitだろうと16bitだろうと関係ない。
Core2Duoの最短命令長は8bitだが、8bitCPUとは言わんだろ?
ARM命令とTHUMB命令の違いは関係なくMAIN,SUB両方とも32bitCPU。
ただし、今の時代何をもって何bitCPUと言うのかが微妙になっている。
昔はバス幅で言うのが普通だったが、キャッシュ導入以降は意味がなくなっている。
というか、何bitCPUという言い方自体にあまり意味がない。
0038名前は開発中のものです。
2008/04/21(月) 20:13:25ID:Ii0/LSnu■ このスレッドは過去ログ倉庫に格納されています