トップページgamedev
981コメント326KB

NintendoDS(NDS)非公式開発 Part3

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2008/04/08(火) 07:05:13ID:MngpkM4u
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/1175812090/
0639名前は開発中のものです。2009/02/14(土) 00:18:09ID:hXgxPfxx
ポリゴンは全くわからんが乙
0640名前は開発中のものです。2009/02/16(月) 16:10:36ID:D6f4gD/M
東方
ttp://www4.uploader.jp/user/mai2012/images/mai2012_uljp00001.png
ttp://www4.uploader.jp/user/mai2012/images/mai2012_uljp00002.png
ttp://www4.uploader.jp/user/mai2012/images/mai2012_uljp00003.png
ttp://www4.uploader.jp/user/mai2012/images/mai2012_uljp00004.png
0641名前は開発中のものです。2009/02/16(月) 19:01:37ID:W0HG2SDf
PSPでビーマニのようなゲームを作る【5曲目】
http://schiphol.2ch.net/test/read.cgi/gameurawaza/1213503678/


ここでDSでBMSって話が出てたけど、
性能的には可能なのかね。
0642名前は開発中のものです。2009/02/16(月) 20:06:51ID:9MszuW7D
あらかじめ復号して良いのであれば余裕
そのままだと無理
0643名前は開発中のものです。2009/02/16(月) 21:15:32ID:gKFMF8Ae
なんで普通に描画する関数無いの?
DirectXみたいに2D描画をハードウェアで高速化できないの?
0644名前は開発中のものです。2009/02/16(月) 21:22:20ID:9R2tMRhy
ハードウェアで高速に描画するためのスプライトやBGなんじゃないのか
あとメモリ節約
0645名前は開発中のものです。2009/02/16(月) 23:31:37ID:+xvha/Ch
マジで?
0646名前は開発中のものです。2009/02/16(月) 23:36:57ID:TTXzFhmk
携帯機でリソース足りないから。
つうか今のDirectGraphicsって2D描画も全部3Dポリゴンで
仮想的に対応してるんじゃなかったっけ?
0647名前は開発中のものです。2009/02/17(火) 00:19:39ID:glRJZgCh
そうだよ
DSは2D用の高速エンジン積めばいいのに
0648名前は開発中のものです。2009/02/17(火) 00:23:49ID:cJCVLpBA
( ゚д゚)ポカーン
0649名前は開発中のものです。2009/02/17(火) 00:52:59ID:lxCWJsYg
そもそもハードの設計思想がPCやPSPとは違うんで、
そういう系統のプログラミングをしたければ、
そっちに走るしかない。
0650名前は開発中のものです。2009/02/17(火) 06:40:17ID:98N4Azzj
つかむしろこの制限が楽しくてやってる人ばっかりだと思ってたぜ
スプライトあるハード弄ったのはDSが初めてです
0651名前は開発中のものです。2009/02/17(火) 11:13:59ID:7F1cTAxW
そもそもDirectXが出てくる時点で(ry
0652名前は開発中のものです。2009/02/17(火) 12:01:44ID:YdMRZ2fK
2Dにも使える高速3Dエンジンを搭載しているんだがな
line,tri,quad,texture他に何が必要なんだ?
0653名前は開発中のものです。2009/02/17(火) 13:02:26ID:6ifU8rUt
なんで高速3Dエンジンがあるのに旧世紀の遺物のスプライトがあるの?
0654名前は開発中のものです。2009/02/17(火) 13:17:46ID:CYgZ2Ha2
>>653
GBAとの互換性のため
3Dがさっぱりな俺のため
0655名前は開発中のものです。2009/02/17(火) 17:34:19ID:+gJCRER9
結局DSiでGBA切り離したし
任天堂ってやることがいちいちうざいな
0656名前は開発中のものです。2009/02/17(火) 17:54:12ID:CYgZ2Ha2
DSiメニューにハッキングできたらな
内蔵フラッシュからhomebrewを起動したい
0657名前は開発中のものです。2009/02/17(火) 18:26:20ID:98N4Azzj
>>653
あと3Dって基本片方の画面だけだからな
そのおかげでもう片方の何に使うかは皆苦労するみたいだけれども
0658名前は開発中のものです。2009/02/17(火) 18:33:53ID:gvnaSd9X
へえ
そいつは凄いや
0659名前は開発中のものです。2009/02/17(火) 18:41:17ID:4kZeiqJz
>>655
好きなの買ってこい

GBA
GBASP
GBAmicro
DS
DSLite
0660名前は開発中のものです。2009/02/17(火) 20:42:24ID:Wvxt0Lcq
soundPlaySample(const void* data, SoundFormat format, u32 dataSize, u16 freq, u8 volume, u8 pan, bool loop, u16 loopPoint);
こいつでフリーズする・・・

これを使って音楽鳴らすだけのサンプル作ったら動作したのだが
実際の処理に組み込んだ途端この関数を呼ぶタイミングで固まる。
arm9から無理にアクセスしてるのが原因かと推測するが
誰か同じような目にあってない?&どうやって解決した?
0661名前は開発中のものです。2009/02/17(火) 21:08:03ID:9keTwm9l
そっちじゃねーよw
あんたは根本的なとこで間違えている
0662名前は開発中のものです。2009/02/17(火) 21:43:46ID:98N4Azzj
soundPlaySampleでフリーズしたのはエミュにideas使った時だけだなぁ
テストで簡単なゲーム作ったけど問題なく動作したよ
0663名前は開発中のものです。2009/02/17(火) 21:57:29ID:Wvxt0Lcq
根本的なとことはどこでしょう?
この行だけコメントアウトすれば普通に動くんですが(当然音は出ないが・・・)
0664名前は開発中のものです。2009/02/18(水) 05:35:08ID:jvIOLsTR
調べないズルをせずに、自分のプログラムの方を一行ずつコメントアウトして、何が悪いのか怪しいのか調べなよ。
0665名前は開発中のものです。2009/02/18(水) 18:57:18ID:vVcHPw4L
上のPSPでビーマニっての見て思ったんだが、
DSってタッチパネルで複数の箇所を同時押しとか出来るのか?
反応速度もそんなに良くないみたいだし。
0666名前は開発中のものです。2009/02/18(水) 19:30:07ID:ZSKmh/q4
>>665
無理不可能

ここ と ここ をタッチすると
 ↓    ↓
 ○ ◎ ○
    ↑
ここを押したことになる
06676602009/02/18(水) 20:38:59ID:FEj3mrZu
irqInitするとFifoの割り込みがつぶされるのが原因でした。
arm7の機能をarm9から簡単アクセスしたい場合はirqinit使っちゃだめなんですね。
06686082009/02/20(金) 19:39:10ID:2DMYgGyo
>>638
万が一、使用している人がいれば使用中止してください。
・左右非対称のモデルの展開がおかしい
・テクスチャの貼り付けがおかしい
の2件の問題があります。
修正の目処はついているので、近日中に修正&公開予定。

>>639
d
やってみたら意外と簡単ですYO!
0669名前は開発中のものです。2009/02/20(金) 23:45:53ID:B1PJ8AXs
ニンテンドーDS用MASTER,20G,DEATH,SHIRASE
操作系(背景さえ)もTGM,TAP,TIから選択可能。
http://rs314.rapidshare.com/files/142297349/NDS_TGM_20080815.zip
開発終了までにソースが公開されなかったことが悔やまれる。

NDS_TGMの作者が実験で作った音ゲー?
http://www.nicovideo.jp/watch/sm2388469
マジ、自分のニンテンドーDSで遊びたい。

やりまん氏の弟子作
DS版ベラボーマン
http://www.nicovideo.jp/watch/sm5112692
06706082009/02/21(土) 21:05:24ID:0EjIkX44
修正版。
axfcが使えなかったので、
かりんと大57364
パスはメ欄。

添付のndsはAボタンでモデルが切り替わるので
試してみて欲しい。

mikoto対応のmqoでもうまくモデルが表示される
よう変更してみた。
あとαは今ひとつ扱いに困ったので停止させてある。
なにかアドバイスがあればお願いしたい。
0671名前は開発中のものです。2009/02/22(日) 00:07:52ID:HFKbZOsM
>>669
TGMとM原の信者乙
0672名前は開発中のものです。2009/02/22(日) 00:25:50ID:wOpJ9pB4
ベラボーマンはダウンロードできないのか・・・
0673名前は開発中のものです。2009/02/22(日) 07:31:34ID:VExqFJq1
マリオ64移植できてるってことはDSの方が性能上なのか
0674名前は開発中のものです。2009/02/22(日) 12:53:44ID:8un20adA
性能上のところもあれば下のところもある
(解像度やテクスチャの問題もあるが)
将来的にSNESとN64を完全に再現出来る携帯機が欲しいところ
0675名前は開発中のものです。2009/02/22(日) 15:07:28ID:PC4UB1Nx
開発環境の構築について教えて頂きたい事があるのですが、
参考サイト等に記載のやり方でやってもまったく上手くいきません。

例えば>>78氏のサイトにあるような1.4.4をインストールしても
レミングス等はコンパイル不可でした。("SOUND_8BIT"が定義されていない、とか関数の引数がおかしい、とか)

最新の1.4.9も同様で、Palibフォルダ内のexamplesフォルダのテキスト"Hello World"等もコンパイル出来ないです。
(構造体メンバの"aux"が無いとか)

どうやったらちゃんと開発環境出来ますか?
(ちなみに当方WinVISTAです)
0676名前は開発中のものです。2009/02/22(日) 16:02:25ID:uwaKrkXC
レミングスDSは公式にDevKitPro r20と書いてあるだろう
ここからr20を探して入れろ
http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=124207

Palibも同様に080823版を使う場合はr21を入れろ
06776752009/02/22(日) 22:34:35ID:PC4UB1Nx
>>676
devkitPRO 1.4.9
devKITARM r21
Palib 080823
の組み合わせでも不可です。

C:/devkitPro/palib/lib/include/nds/arm9/PA_General.h:402: warning: 'getIPC' is deprecated (declared at c:/devkitPro/libnds/include/nds/ipc.h:64)
C:/devkitPro/palib/lib/include/nds/arm9/PA_General.h:402: error: 'TransferRegion ' has no member named 'aux'
C:/devkitPro/palib/lib/include/nds/arm9/PA_General.h:403: warning: 'getIPC' is deprecated (declared at c:/devkitPro/libnds/include/nds/ipc.h:64)
C:/devkitPro/palib/lib/include/nds/arm9/PA_General.h:403: error: 'TransferRegion ' has no member named 'aux'
In file included from C:/devkitPro/palib/lib/include/nds/PA9.h:58, from c:/devkitPro/palib/examples/Text/Normal/HelloWorld/source/ main.c:3:
C:/devkitPro/palib/lib/include/nds/arm9/PA_Keyboard.h: At top level:
C:/devkitPro/palib/lib/include/nds/arm9/PA_Keyboard.h:45: error: 'Keyboard' redeclared as different kind of symbol
c:/devkitPro/libnds/include/nds/arm9/keyboard.h:113: error: previous declaration of 'Keyboard' was here

という感じで、auxが無いだの、Keyboardの定義がおかしいだのでエラーです。


組み合わせるバージョンの指定は厳しいんですね・・・。
0678名前は開発中のものです。2009/02/23(月) 00:00:14ID:Ie1BTwA3
・・・もしかしてdevkitPRO 1.4.9を入れた上からdevkitARM r21を上書きした?
06796752009/02/23(月) 00:29:52ID:4p6+MeQR
>>678
いえ、devkitPRO 1.4.9入れてからです。
devkitARMをリネームして退避 → r21を導入。

という流れです。
0680名前は開発中のものです。2009/02/23(月) 03:33:49ID:DlqqnuXR
libndsのバージョン合わせてないオチじゃないよな?
0681名前は開発中のものです。2009/02/24(火) 00:28:19ID:hxRbqK/7
>>680
libndsのバージョン合わせまで必要なんですか?
(そこまで言及してる解説サイト様も無かったので・・・・)

結局のところ、コンパイルするやつに合わせてバージョン変えるしかない、ですか・・?
かなり、不便なんですね・・・。
06826752009/02/24(火) 00:44:19ID:hxRbqK/7
>>680
書き忘れましたが、ご指摘されたlibndsについて libnds-20071023 等も試してみましたが、
fat.hが無い等のI/Fエラーで結局コンパイル出来ません。

もう何が正しいやらサッパーリです(TヘT)
0683名前は開発中のものです。2009/02/24(火) 01:00:03ID:9qOCdOaY
libfatインスコしてないやんけ。
0684名前は開発中のものです。2009/02/24(火) 01:17:29ID:GC6o6RLt
環境構築すら人に頼らないとできない時点で、
この先の困難さを思い知ったほうがいいなw
0685名前は開発中のものです。2009/02/24(火) 01:30:53ID:l7+IouWc
ぽまいら冷たいお(´;ω;`)
0686名前は開発中のものです。2009/02/24(火) 01:44:08ID:GC6o6RLt
あったくしょうがねぇな
ほらよw
ttp://forum.palib.info/index.php?PHPSESSID=b8d07f5e567d8f3cd592ab1f8fefa6ac&topic=6319
0687名前は開発中のものです。2009/02/24(火) 01:49:19ID:hxRbqK/7
>>683
libndsフォルダをリネーム退避 → ゲットしたlibndsを導入で、消えてたみたいです。

結局のところ、どのソフトのどのバージョンを入れるのが正解なんですか?
0688名前は開発中のものです。2009/02/24(火) 07:38:19ID:9o3pnbz7
どのバージョン使ってるか作者も把握してないのはよくあること。
0689名前は開発中のものです。2009/02/24(火) 07:42:34ID:9o3pnbz7
むしろどのライブラリのどのバージョンの組み合わせでどのバージョンのHomebrewをコンパイルできたか情報もらえたら助かる。
0690名前は開発中のものです。2009/02/24(火) 14:06:11ID:9qOCdOaY
なんかいろいろ酷くて疲れたわ。
0691名前は開発中のものです。2009/02/24(火) 15:01:15ID:l7+IouWc
ぽまいら死ねぇぇ(´;ω;`)
0692名前は開発中のものです。2009/02/24(火) 15:34:21ID:yD6D+5sj
ID:l7+IouWcが一番何もしてない件
0693名前は開発中のものです。2009/02/24(火) 17:53:30ID:6cmZpWTE
単発が言う件
0694名前は開発中のものです。2009/02/24(火) 18:13:58ID:jZRLhqc7
6cmの奴がうるさいぜ
0695名前は開発中のものです。2009/02/25(水) 06:27:33ID:rYtUGQFi
DSLua(v0.7)のソケット関数が使えないんだが、未実装なの?
Wifiの初期化は出来るみたいなんだが
0696名前は開発中のものです。2009/02/26(木) 00:46:51ID:KPhZLOYY
過疎り杉ワロタw
0697名前は開発中のものです。2009/02/26(木) 08:42:13ID:w5iYbh+j
元からこんなんじゃ
0698名前は開発中のものです。2009/02/26(木) 10:02:08ID:Jd9bcMX/
DSってサウンドは普通にいいな
DQ4やDQ5も結構音質よくてクオリティよかったし
0699名前は開発中のものです。2009/02/26(木) 10:50:13ID:w5iYbh+j
スピーカーはだめ
イヤホンだとそれが判る
0700名前は開発中のものです。2009/02/26(木) 23:06:26ID:LTHzrsdh
soundPlaySample(const void* data, SoundFormat format, u32 dataSize, u16 freq, u8 volume, u8 pan, bool loop, u16 loopPoint);
この関数を使用して、1分程度のPCMを再生しようとするのですが、
20秒程度で停止してしまいます
容量制限などあるのでしょうか?ご存知の方、お教えいただけないでしょうか
ポインタもサイズも渡してるんでメモリなめてるだけだと思ってるんですが…
0701名前は開発中のものです。2009/02/27(金) 02:01:00ID:wr3mrhBf
メモリ足りてる?
0702名前は開発中のものです。2009/02/27(金) 02:08:04ID:G1JMczya
(;^ω^)
0703名前は開発中のものです。2009/02/27(金) 02:16:05ID:w0XRUM04
近ごろはライブラリ部分を疑って、自分のプログラム部分は疑わないのがトレンディ?
そういう質問が続くよね。
0704名前は開発中のものです。2009/02/27(金) 12:47:20ID:l9Udippu
7度デバッグしてから人を疑えと祝一平が言ってた
0705名前は開発中のものです。2009/02/27(金) 19:33:44ID:8EIL6nuq
皆ってどんな思いでプログラムしてる?

1.漠然と解析して動かしたい(ex.動かしたら満足)
2.DSという媒体をいかして遊びたい
  (ex.タッチペン等を使ったアイディアを生かし任天堂に企画持込)
3.オリジナルでゲーム作りたい(ex最終目標は販売)
4.同人でゲーム作りたい(exコミケで販売)
0706名前は開発中のものです。2009/02/27(金) 22:12:19ID:wkWc0+ir
>>705
1と2。
だけど、任天堂に企画を持ち込む気はない。
0707名前は開発中のものです。2009/02/27(金) 22:14:48ID:lHmooKwd
Nスクの不完全再現
実現出来れば多くのアレがアレできるので個人的に嬉しい
しかし道は長い
0708名前は開発中のものです。2009/02/28(土) 01:19:19ID:Uk8XxPzh
仮に販売できる作品が出来たとしても、客はマジコンを持ってることが前提になる?
0709名前は開発中のものです。2009/02/28(土) 03:06:41ID:YWGCCuBr
そのレベルのスキルの持ち主なら、普通にwinで作って堂々と販売すればいいじゃない
0710名前は開発中のものです。2009/02/28(土) 07:12:29ID:IJaRMG7X
何かとマジコン問題視されてるし、
非公式開発用の代用品があればなぁ。
0711名前は開発中のものです。2009/02/28(土) 12:51:37ID:OixSpQER
ゲーム作ったものの配布するかどうかで結構迷ったな
まだ弄れるところがあるってことで結局見送ったけど
実機での動かし方とか質問されても答えにくい…
0712名前は開発中のものです。2009/02/28(土) 17:13:12ID:9WcANibW
公開してる人は使い方の分かる人だけとか書いてるし
特に動かし方は何も書かなくておk
何か質問されたらグーグルのアドレスを貼る
0713名前は開発中のものです。2009/02/28(土) 17:41:38ID:Uk8XxPzh
いずれにしても金儲けは出来そうにないよな
0714名前は開発中のものです。2009/02/28(土) 18:43:28ID:8f7b0xkm
その昔ジーコサッカーというのがあってだな・・・
0715名前は開発中のものです。2009/02/28(土) 21:12:53ID:8s2n0430
>>670
くっ、消えてたか。
どのくらいのポリゴンまで使えるのかな・・・(メタセコのデータサイズ的に)
0716名前は開発中のものです。2009/03/01(日) 01:32:11ID:Mf/Aa5l/
4000604h - RAM_COUNT - Polygon List & Vertex RAM Count Register (R)

0-11 Number of Polygons currently stored in Polygon List RAM (0..2048)
12-15 Not used
16-28 Number of Vertices currently stored in Vertex RAM (0..6144)
13-15 Not used

の制限は超えられないと思うよ

ttp://blog.livedoor.jp/orenos/archives/cat_50041571.html
をみると2000ぐらいじゃないかな?
0717名前は開発中のものです。2009/03/01(日) 08:53:29ID:NCPT6IzU
>>716
なるほど・・・。ありがたう。
その辺に落ちている初音ミクとかDSに、とかは全然無理って事だな。
0718名前は開発中のものです。2009/03/01(日) 09:43:01ID:FCLhxfXA
60fpsで動かそうとすればな…
今市場に出ているDSの3Dゲーはほとんど30fpsで
3Dと3Dキャプチャとの合成をよく使う
0719名前は開発中のものです。2009/03/06(金) 04:12:52ID:TOXTdHLF
フォントを入れてみて、SJISの漢字を表示できるようにしてみたのですが、
漢字のファイル名も使えるファイラーを作ろうと思ったところ、
diropen、dirnextで取ってくる2バイトコードば不規則に壊れているように思えるのです。
(最初の18バイトは3バイトごとに0xC2が入り込み、その後 0x20 なども入り込む)

この理由って何でしょうか?
なにか対処法とか知ってる方いらっしゃいますか?
0720名前は開発中のものです。2009/03/06(金) 11:22:53ID:yjbnJ68z
>>719
お前がSJISと思い込んでるだけでファイル名は実はUTF-8で書かれていたりする
07217192009/03/06(金) 12:22:56ID:TOXTdHLF
>>720
文字コード表で比較したのですがUTF-8ではないと思うのですが・・・
http://ash.jp/code/unitbl1.htm
というか単に1バイト文字列として判定しながら、
最上位ビットが立っていると、自動的にその直前に「0xC2」を追加しているだけ
のように見える。

もうちょっと調査してみます。
0722名前は開発中のものです。2009/03/06(金) 12:51:34ID:yjbnJ68z
libfatのソース見たけど
〜\libfat-src-1.0.3\source\directory.c
if (_FAT_directory_ucs2tombs (entry->filename, lfn, MAX_FILENAME_LENGTH) == (size_t)-1) {
// Failed to convert the file name to UTF-8. Maybe the wrong locale is set?
return false;
}
UTF8に変換してるんじゃないの
0723名前は開発中のものです。2009/03/06(金) 13:00:17ID:yjbnJ68z
バージョンで違うかもと思って昔のソース見たらやっぱり違ってたわ
昔のは変換処理が無かった
07247192009/03/06(金) 13:11:00ID:TOXTdHLF
>>722-723
ありがとうございます。
なるほどlibfatのバージョン上げるとUTF-8に変換してくれると・・・
でも既にSJISの表示ができてるので、まぁ今のままでいいかなとw
(0xC2の除去は簡単にできましたので)
0725名前は開発中のものです。2009/03/06(金) 15:34:15ID:s9e7Y5/A
8.3形式で収まるファイル名はそのまま書き込まれ
それに収まらないファイル名はロングファイルネームとしてUnicodeで格納される

FAT関係のフォーマット解説あさった方がいい
0726名前は開発中のものです。2009/03/07(土) 12:15:01ID:Spw06Iei
Kingdom Hearts 358/2 Days - Special Trailer
http://www.youtube.com/watch?v=rYRXf5DDrn8

DSって凄いんだな
0727名前は開発中のものです。2009/03/07(土) 15:22:32ID:P2NlkDFd
>>726
ほとんどプリレンダの動画だな
ゲーム画面は1分もないじゃないか
まあDSにしては頑張ってるんだろうけど
07287242009/03/08(日) 17:48:39ID:H3Gxp9K9
>>725
そのとおりでした。
エミュ(ideas)で開発していたら、単にSJISにC2のゴミが入るだけでしたが、
実機ではUnicodeに変換されているようです。

素直に変換プログラムを組んでみます・・・・
07297242009/03/08(日) 17:50:21ID:H3Gxp9K9
ちなみに、実行ターゲットって取得できないものでしょうか・・・・

エミュではC2除去したSJIS表示、
実機ではUnicode表示と切り替えたいとも思うのですけど、
0730名前は開発中のものです。2009/03/08(日) 20:35:07ID:3YB+hXPZ
それこそC2入ってたらエミュとかでいいんでないの
07317242009/03/08(日) 21:14:06ID:H3Gxp9K9
>>730
確かに!
調べてみたら、C2付きに置き換えられたSJIS(C28xxx,C29xxx,C2Exxx,C2Fxxx)
に対応するUTF-8コード(SJIS内)はないのでエミュ起動とみなして良いようです。
http://ash.jp/code/unitbl21.htm

UTF-8⇒SJIS変換プログラムを探したけど、
結局自分でUTF8⇒SJISテーブルを持たないとダメそう
(nkfのソースとかは見たけどわけわからんw)

Windowsのツールならすぐ作れるし、
7630文字の3バイトなので、データ容量としてもDSに十分入ると思うんだけど、
UTF8の方がビット幅が広いので、
テーブルが虫食い状態になるのをどうしよう
ハッシュテーブルにしてもどうしたら均一になる取り方が思いつかない・・・・・

他のツール作者さんたちはどうやってるんだろう
0732名前は開発中のものです。2009/03/09(月) 00:39:57ID:SXSH5WYs
>731
思いっきりはずしてるかもだけど、MoonShellのunicode/sjis.tblが
何かヒントになるかも?
http://mdxonline.dyndns.org/


ところで...
http://www35.atwiki.jp/hikipuro/pages/33.html
http://www.bottledlight.com/ds/index.php/FileFormats/NDSFormat
ここに書いてあるNDSファイルフォーマットの、「FAT オフセット」に
セットされているアドレスにはFATデータがあるんだろうけど、
このFATのフォーマットはどうなってんの?
解説したサイトとかある?

ファイル名テーブルや実ファイルデータをどうやって
管理しているのかよくわからない...

ここがわかれば、1つのNDSファイルだけで4MBを超えられる
方法がわかるような気がするんだけど。
07337242009/03/09(月) 04:10:07ID:omb2zf0w
>>732
ヒントになりました。ありがとうございます。

あくまで推測の範囲ですが、
データを見る限り、2バイト区切りになっているのでUnicodeビット⇒SJISのデータを格納しているように見える。
かなりの多くのかたまった0x00があるので、圧縮やハッシュ化はしていない模様。
2バイト区切りだとすると、65536文字ほどの空間を保持していることになるが、
10万文字を超えるといわれるUnicodeの空間すべてをテーブルを持っているわけでなく、
日本語や中国語などの漢字(SJISに載っている)部分だけのテーブルと思われる。
2バイト区切りではありそうだが、SJISの生データではない。

Unicodeの漢字部分がこの程度(128kbytesに収まる)なら、
まず自分でやってみて確認してみたいと思います。
ありがとうございました。
07347242009/03/09(月) 04:11:44ID:omb2zf0w
>>732
ちなみに私はフォントのビットデータなどを別ファイルで読み込ませていますが、
特にフォーマットやファイル名に規則はないように思います。
まだ特にフォーマットを決めてないので生データをそのまま読ませています。

  // FAT初期化.
  if ( !fatInitDefault() ) {
    iprintf( "Cant't Init Fat !" );
    return -1;
  }
  // 読み込み
  FILE* file = fopen( "FAT1:/GOTHIC24.DAT", "rb" );
  if( file != NULL ){
    fread( byFont24Data, FONT24FILESIZE, 1, file );
    fclose( file );
  } else {
    iprintf( "File Load false !" );
  }

で読み込めてます。
(byFont24Dataは読み込むデータ分の空き容量へのポインタ)
07357322009/03/09(月) 21:30:46ID:SXSH5WYs
>734
それはlibfatを使ったときの話ですよね。
ndsファイルとGOTHIC24.DATを別々に用意して読み込むっていう。

そうではなくて、devkitproのexample/embedded_gbfsみたいに、
ndsファイル内に埋め込めるファイルシステムを商用のndsファイルは
使ってると理解してるんですが、その形式・方式ってどうなってんのかな、
というのを知りたいんです。1ファイルに全部入れたいな、と。

embedded_gbfsでは、ndsヘッダのFATデータにもファイルテーブルにも
何も書かれないので目的のものとはちょっと違うと思ってます。

最終的には、過去ログの>>609-614にあるような、自身のndsファイルを
開くのではなくて、nds内の必要なデータだけメモリにロードするような
方式が知りたいんです。
0736名前は開発中のものです。2009/03/09(月) 22:23:03ID:FcNM6iim
個人で楽しむ範囲で市販のROMを解析してみれば。
07377342009/03/09(月) 23:06:08ID:omb2zf0w
>>735
そうでしたか。なんか当たり前の事を講釈してしまってすいませんm(_ _)m

ふと思いついたのが、ndsプログラムから、自分のndsをfopenして、
fseekして目的の位置だけをfreadとかできないかなぁと。
ファイルポインタは4GB制限はないだろうと。
(もしかしたら自分は開けないのかもしれないけど)

4GBオーバーしたndsを通常起動しても、
おそらく4GBまでロードして、エントリポイントからプログラムが動き始める
4GB周辺のデータはスタックに壊されながら使われる。
このときデータが壊されることよりもスタック周辺データでプログラムが不安定な動きをしないように
予めスタック周辺のデータはNULL(0)を入れておく(念のため)

あとはリンカにマップファイルを読み込ませて、ヒープ領域を明示的に指定しておく
(もしかしたらスタック領域も指定しないといけないかもしれない)
(もちろんデータ読み込み用アドレスをマップファイルで指定してもいいけど)

こうすればスタック、ヒープ以外にとっておいた空き領域に
読み込ませて起動できるのではないかと
あくまで全部推測ですけど・・・・

(ちなみにファイル名UTF8をSJISに変換して漢字表示できました。ありがとうございました。)
07387322009/03/10(火) 00:17:00ID:FyCLTQRk
過去ログの>>609-614がまさに自ファイルをfopenして、目的のデータだけを
freadして4MB以上のndsファイルを実現しているって話みたいです。

リンカの制御についてちょっとお勉強してみます。
あと、ndsファイルももうちょっと調査してみます。
(ちょっと確認したところでは、FATデータには、各アドレスの
先頭アドレス(4Byte)がずらずら格納されているだけのようでした。)
■ このスレッドは過去ログ倉庫に格納されています