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/
0328名前は開発中のものです。
2008/08/24(日) 20:02:54ID:8VfoSDG9CD-ROMに焼いたとか、量産できる媒体に対して著作権などが発生する
逆にソフトウェアそのものにはほぼそれらが発生しない。
>>325はそういうことが言いたかったんじゃないかな?
0329名前は開発中のものです。
2008/08/24(日) 23:51:10ID:xXzDezRGもちろん、DSに刺してそのまま動くような媒体で配布するのでなければ
なんら問題ないとは思っているよ
0330名前は開発中のものです。
2008/08/26(火) 21:05:40ID:UH3fc3I70331名前は開発中のものです。
2008/08/27(水) 07:53:51ID:+r6/O9dOお前が作れ
0332名前は開発中のものです。
2008/08/27(水) 19:59:55ID:0IBhzRAf期待してるぞ
0333330
2008/08/27(水) 20:21:54ID:NY8U1MXK0334名前は開発中のものです。
2008/08/28(木) 14:35:31ID:himZTe+50335名前は開発中のものです。
2008/08/28(木) 14:45:58ID:itYkETsy0336名前は開発中のものです。
2008/08/30(土) 18:10:45ID:OueHFlIwところで、PAlibの最新版が出てたんだ。
未だにr21のみの対応か、絶望した!
0337sage
2008/08/31(日) 12:53:15ID:NgWtUu+Wビットマップを追加するごとに毎回インクルードするのめんどくさいから、
ファイルをアーカイブするツール作って1個のbinにして中で解析してるんだけど、
なんかヘンだ…
00 00 FE 5D
のような並びにあって、FEの位置のポインタを
u8* p = bufとして取得したとして、
u16* plt = (u16*)p;
u16 color;
memcpy( &color, &plt[0], sizeof( u16 ) );
てすると
plt[0] -> FE00
color -> 5DFE
てなる…orz
0338名前は開発中のものです。
2008/08/31(日) 12:54:42ID:NgWtUu+W0339名前は開発中のものです。
2008/08/31(日) 13:05:48ID:RBkQ5Qjd何が問題?どういう動作を求めてる?
memcpyの動作は正しいよな。pltはアライメントかな?
0340名前は開発中のものです。
2008/08/31(日) 16:54:02ID:NgWtUu+W管理するクラスが#include "archive_bin.h"しつつ、
archive_binのそれぞれのファイルの先頭ポインタを保存する仕組みを作成していたんです。
とりあえず手始めにビットマップのコンバートからやってたのですが、
indexとpalleteのポインタをそのままSPRITE_PALETTEとSPRITE_GFXにdmcCopyしても、
なぜか絵がうまく出ないんです。(色が変だったり所々が欠けたような絵になります)
AGBGFXConverterで吐き出したソースと同じ様に配置したつもりなんですけど…
ちなみにAGBGFXConverterで同じ絵をコンバートして、
インデックスを両方1タイル分ずつprintfして見ているんですけど、
インデックスの並びは全く一緒でした。
なので色はバグってても同じ絵は出ると思ったのですが…
で今度はパレットの中身を見たらあれ?みたいな感じになったわけです。
0341名前は開発中のものです。
2008/09/01(月) 23:08:04ID:/cE8NRcOこんな感じで取得させていて、構造体の中にインデックスとパレットのポインタが入っています。
arc::bmp_info* bmp = arc::bmp_info((char*)"256color_test.bmp");
こんな感じだと正常に表示されました。
// ----------------------------------------------
u16 color[ 256 ];
memcpy( color, bmp->palette, sizeof( color ) );
for ( u32 i = 0 ; i < 256 ; ++i )
{
SPRITE_PALETTE[ i ] = color[ i ];
}
u32 size = ( ( 32 * 32 ) / 2 );
u16 index[ size ];
memcpy( index, bmp->index, sizeof( index ) );
for ( u32 i = 0 ; i < size ; ++i )
{
SPRITE_GFX[ ( 64 * 16 ) + i ] = index[ i ];
}
// ----------------------------------------------
0342名前は開発中のものです。
2008/09/01(月) 23:09:40ID:/cE8NRcO// ----------------------------------------------
u16 color[ 256 ];
memcpy( color, bmp->palette, sizeof( color ) );
dmaCopy( color, SPRITE_PALETTE, sizeof( color ) );
u32 size = ( ( 32 * 32 ) / 2 );
u16 index[ size ];
memcpy( index, bmp->index, sizeof( index ) );
dmaCopy( index, &SPRITE_GFX[ 64 * 16 ], sizeof( index ) );
// ----------------------------------------------
これもダメ(本来こうしたい)
// ----------------------------------------------
dmaCopy( bmp->palette, SPRITE_PALETTE, sizeof( u16 ) * 256 );
dmaCopy( bmp->index, &SPRITE_GFX[ 64 * 16 ], bmp->GetSize() );
// ----------------------------------------------
あとソースで
u32 size = ( ( 32 * 32 ) / 2 );
u16 index[ size ];
見たいな書き方してるんですけど、間違えて書いたら普通にビルドが通るので使ってました。
0343名前は開発中のものです。
2008/09/01(月) 23:19:54ID:JD3+KZZhメインメモリ4MBってつまり
libfat使わない限りはndsファイルのサイズつかプログラム+データを
4MBに収めないといけないってこと?
プログラムとメモリの関係が良くわからんです・・・
0344名前は開発中のものです。
2008/09/01(月) 23:25:31ID:v+MMQ4csつ swiCopy()
0345名前は開発中のものです。
2008/09/01(月) 23:29:46ID:wvhb43Poiprintf("bmp %x\n",bmp);
iprintf("%x\n",bmp->palette);
iprintf("%x, %x\n",bmp->index, bmp->GetSize() );
の実行結果見せて。
dkpr23bのdmaCopyはDMA_COPY_HALFWORDSで実装されてるから2byte単位になっていれば大丈夫なはずなんだけど。
ないとは思うけど、DMA3を別で使ってるところがないかどうかも確認したほうがいいです。
>>343
そうです。GBAカート時代のNDSマジコンは外部ROMとして使えたから便利だったんだけどね。
0346名前は開発中のものです。
2008/09/01(月) 23:35:25ID:XJAdcBTd0347名前は開発中のものです。
2008/09/01(月) 23:49:45ID:/cE8NRcOこっちでもアーカイブした中でもファイルによって正常に出るものがあったので、
アライメントをファイル内でそろえようとしていた所でした。
ちなみにアドレスをprintfした結果はこれです。
bmp 202c6900
200f7db
200f3bd, 400
0348名前は開発中のものです。
2008/09/02(火) 00:44:46ID:xhnSuTcgRAMとして扱えるのが4M
っ gbfs ndstool
0349名前は開発中のものです。
2008/09/02(火) 02:08:35ID:bvei474e>>343じゃないけど、R4とかだとできないよね?
0350348
2008/09/02(火) 08:38:04ID:xhnSuTcgまじで?
DSTTしかもってないしfat使ってるから実際に試したことは無かった
仕事終わったらちょっとやってみる
0351名前は開発中のものです。
2008/09/02(火) 10:42:55ID:PcRBassS4M以降に配置されるヤツはスロ1のマジコンではだめだったとおもうけど。
0352名前は開発中のものです。
2008/09/02(火) 15:30:28ID:bvei474e4M内ならgbfs使うメリットあんまないよね
0353名前は開発中のものです。
2008/09/02(火) 16:53:09ID:bEchRn3L0354343
2008/09/02(火) 21:04:24ID:9aalbRTR参考になりました。
音楽はメモリ食い虫なのでバッサリ切る事にしました。
ところで大量(数百〜)のオブジェクト扱うとなるとスプライト使えないんですね・・・
フレームバッファで直描きで良いんでしょうか?
2Dエンジンのグラフィックモードの意味がさっぱり理解出来ないので
ごり押しでソースかいてるんですがみなさんお勧めのモードとかありますか?
DirectXみたいに2Dゲーだけど描画自体は3Dでテクスチャーを平面で動かすとか
そういうのが主流だったりするんでしょうかね。
0355名前は開発中のものです。
2008/09/02(火) 22:42:52ID:WCYfR70y天然?真性?釣り?
0356343
2008/09/02(火) 23:27:25ID:9aalbRTR日本語のサイトは当たったのですが素で良くわかってません。
リアルタイムなプログラムは初めてな割りに変な知識だけ持ってしまったので。
やっぱとんちんかんなこと言ってますか。
って実機で試したら全画面αブレンド(自前計算)するだけで処理落ちしてる!
ndsの2Dのスペック最大30Mピクセル/秒て
VRAMに毎フレーム0.5Mピクセルぶんアクセス出来るって意味じゃないんですか?!
奥が深い・・・
0357名前は開発中のものです。
2008/09/02(火) 23:46:53ID:bvei474e大量のスプライト出したかったらスプライトダブラでぐぐればいいよ
多分GBA用の解説がすぐ見つかるだろ
0358343
2008/09/03(水) 00:12:57ID:Bl/fBETL水平割り込みか〜その発想は無かったわ。
安直に必要な数だけドット打ってもなんとかなるだろうと高をくくっていたが甘かったようです。
0359名前は開発中のものです。
2008/09/03(水) 00:16:04ID:sLvGkNcJ2Dは基本的にGBAと同じで、スプライトとタイルベースのBG。
BGをフレームバッファで使う場合は静止画のみが一般的。
3Dはlibnds経由でしか使ったことがないが、これはOpenGL
に似ている(というより制限は昔のMESAに近い)が、別物。
値域制限とAPIコール順の制限と帯域制限とに泣かされるw
まあ、とりあえずガンガレwww
0360名前は開発中のものです。
2008/09/05(金) 23:17:45ID:FS1IdIEW0361名前は開発中のものです。
2008/09/06(土) 14:45:49ID:cOB7URl00362名前は開発中のものです。
2008/09/09(火) 23:29:29ID:DL/yAEJj0363名前は開発中のものです。
2008/09/19(金) 23:25:16ID:eFBo0juohttp://www.gpara.com/kaigainews/eanda/2008091802/
0364名前は開発中のものです。
2008/09/20(土) 20:28:56ID:yq1ZRhT4DSでムジュラか時オカやりたいぜ
0365名前は開発中のものです。
2008/10/05(日) 16:18:34ID:E308TimE0366名前は開発中のものです。
2008/10/05(日) 16:19:13ID:E308TimE0367名前は開発中のものです。
2008/10/05(日) 16:44:07ID:Ll2+pPcY0368名前は開発中のものです。
2008/10/05(日) 17:15:56ID:E308TimEカメラ使うためのAPI(?)は公開されるのかねぇ?
0369348
2008/10/05(日) 18:04:25ID:Vc0IrAL90370名前は開発中のものです。
2008/10/05(日) 18:04:59ID:Vc0IrAL90371名前は開発中のものです。
2008/10/06(月) 03:15:32ID:taaAzVwLRAMとかグラフィックエンジンまわりとか結構強化されてそうな気がするんだが、
どうなんだろ。両面タッチだし、AACもハードサポートだったら...
わりと順当に次世代機(gc→wii的な)なんじゃね、と妄想
0372名前は開発中のものです。
2008/10/06(月) 10:41:50ID:Sfe+Bc3cそれは無いよねぇ
0373名前は開発中のものです。
2008/10/06(月) 16:49:35ID:+fanK/9E少なくとも内蔵メモリは増えてるだろう。白黒GBとGBcolorくらいの差かねえ。
homeblewでどれくらいhackされるかだなぁ。
0374名前は開発中のものです。
2008/10/07(火) 21:12:40ID:w8Xd+xBj必要に迫られてC++初めて三日くらいなんですが、
ゲームオブジェクトの管理は線形リスト使ってクラスでタスク管理するのが一般的らしいですが、
DSでもそれがセオリーなんでしょうか。
狭いメモリ空間でnewとかdeleteとか繰り返してたら面倒なことになりそうで怖いんですが。
全部構造体配列にしちゃって固定領域にして管理の方が安心できると思うのは素人考えですか?
0375名前は開発中のものです。
2008/10/07(火) 21:48:18ID:IVP3DQmnC++の恩恵も受けたいなら専用メモリマネージャーを書くのも手だよ。
固定サイズのクラスを大量に作成・削除する場合はかなり違う。
Efficient C++オススメ。
0376名前は開発中のものです。
2008/10/07(火) 23:03:26ID:omqMgnyg業務でやってる場合→素直に周りに合わしとけ
学業でやってる場合→指導している香具師に相談すれ
趣味でやってる場合→好きにしろ
newとかdeleteしないという手もあるけどなw
0377名前は開発中のものです。
2008/10/08(水) 00:13:31ID:NagLnHXNModern C++ Designオススメ
0378名前は開発中のものです。
2008/10/08(水) 00:19:32ID:1UMri7Pr断片化が怖けりゃplacement newという手もある。
・・・>>375と言ってること同じだな。
0379名前は開発中のものです。
2008/10/08(水) 19:29:19ID:K+Yf7Fpfとりあえずメモリ管理が怖いというか良くわかってないので
構造体+関数ポインタで乗り切ることにしました。
0380名前は開発中のものです。
2008/10/09(木) 03:27:36ID:tdzcvyWhレベル低いなー」とか煽ってんの見たことあるけど実際悩むよな
0381名前は開発中のものです。
2008/10/09(木) 07:44:25ID:zU0f5kHo技術レベルは高い低いじゃなくてベクトルが違う
0382名前は開発中のものです。
2008/10/09(木) 23:01:32ID:XZEfPKbk0383名前は開発中のものです。
2008/10/09(木) 23:12:03ID:MqpwjMOD話はそれからだ
0384名前は開発中のものです。
2008/10/09(木) 23:34:05ID:zxSbmjXPhttp://schiphol.2ch.net/test/read.cgi/gameurawaza/1221395085/
0385名前は開発中のものです。
2008/10/10(金) 16:28:00ID:5gz8zgTn4 :名無しさん@お腹いっぱい。[sage]2008/09/19(金) 12:32:46 ID:v1ChYlVo
ROMちょいと見てみた。
/book/book_*.bin
これらが本のデータで、それらの中身はそれぞれ15個のファイルから構成されている。
その他にも本の名前、著者などのデータも書き込まれている。
15個のファイルは、本の表紙画像、実際の本のデータなどが含まれる。
全てNARCファイルをLZ77符号化されたものであり、その中の6番目のデータに本の文章データが入っている。
文章データは基本的にShift-JISで、ひらがな、カタカナのみ再マッピングする必要がありそう。
ただ不安なのが、/book/book_*.binの先頭の16byte。
これらはもしかしたら正規のデータであるかのチェック用なのかもしれない・・
そうなると面倒ですね。
とりあえず書き換えは上の情報でできるので、誰かやってみてください。
7 :名無しさん@お腹いっぱい。[sage]2008/09/20(土) 09:55:35 ID:ZuRsuQAX
>>4追記
セーブデータの方も少し見てみました。
WIFI経由のセーブデータへの本のダウンロードでも全く同じファイル形式で保存されている模様。
けどセーブデータの前半部分(0x0000~0x11FF(奇) と 0x1200~0x23FF(偶))に暗号化が施されていて、その部分の解除が出来ない限り書き換えられなそう。
それからよく分からない16byteのことだけど、セーブデータ内にも同様に、大抵のセクションの先頭に付加されている。
やっぱり整合性を確認する物なのかも・・
私はそういうのは分からないのでとりあえず諦めました。
0386名前は開発中のものです。
2008/10/10(金) 16:47:56ID:67fEVH35honz_font_min18.NFTR
用意しました
0387名前は開発中のものです。
2008/10/10(金) 17:30:34ID:3obepL4z0388名前は開発中のものです。
2008/10/11(土) 21:09:40ID:PHecR/2c0389名前は開発中のものです。
2008/10/14(火) 18:19:23ID:Lglkm2KHてっきり二画面タッチパネル化と思い込んでたよ…
0390名前は開発中のものです。
2008/10/15(水) 00:55:14ID:s4W/zs3Ohttp://schiphol.2ch.net/test/read.cgi/gameurawaza/1220347905/573
マジコン界の重鎮に電凸よろ
0391名前は開発中のものです。
2008/10/16(木) 03:15:38ID:2kY41HM3いつの間にかサイト閉じててソース保存し忘れたのが残念だ
参考になりそうだったのに
0392名前は開発中のものです。
2008/10/21(火) 22:42:27ID:r2sngghD検索ワード自体がわかりません。
アドホック通信で核心に当たらなかったんですが
0393名前は開発中のものです。
2008/11/03(月) 22:46:31ID:d0Sl3CXv0394名前は開発中のものです。
2008/11/03(月) 23:04:24ID:NMUcMrRP現場に居るヤツの愚痴は面白いな
0395名前は開発中のものです。
2008/11/04(火) 02:34:46ID:49HVD2jG0396名前は開発中のものです。
2008/11/04(火) 02:36:50ID:49HVD2jG0397名前は開発中のものです。
2008/11/04(火) 09:10:41ID:3p6g22Jt0398名前は開発中のものです。
2008/11/04(火) 11:21:41ID:Cd01acmi0399名前は開発中のものです。
2008/11/08(土) 13:14:52ID:3w3zQ9cK0400名前は開発中のものです。
2008/11/08(土) 13:51:34ID:sy4NEbmA0401名前は開発中のものです。
2008/11/09(日) 19:22:03ID:CLJC61g5ttp://www.nicovideo.jp/watch/sm5197287
Hello Worldが残ってるくらいプロトタイプなのでソースは公開できませんが、
ある程度できあがってきたらDelphiのソースごと公開したいと思ってます。
やってることが低レベル(=なんかわからんができてる)なので参考になるかはわかりませんが。
WiFiでタッチパッド実現しようとしたらこんな感じになる、という参考としてご利用下さい。
タッチパッドがヌルヌル動くことを確認してもらえれば十分です。
0402名前は開発中のものです。
2008/11/11(火) 10:45:13ID:xT3IPl+xいいね。プロジェクタでプレゼンとかでも使えるかも。
0403名前は開発中のものです。
2008/11/12(水) 13:09:16ID:ABPWOzhf上画面と下画面、両方コンソールはできますか?
上Sub, 下Mainで構成しています。
両方ともconsoleInitDefaultで初期化(VRAMは適当に)するまではいいのですが、
どうやったら出力を上下切り替えればいいのでしょうか?
0404名前は開発中のものです。
2008/11/12(水) 21:28:22ID:Irex4HlZwrite_rを作ってdevoptab_listに設定するようにした。
同じような感じで、標準出力1と標準出力2を作ってAddDeviceすれば
いけるんじゃないかと思う。
0405名前は開発中のものです。
2008/11/13(木) 04:07:46ID:tSh4lFcCprintfのとこを真面目に作るんじゃなければ簡単だし自作しちゃうのが手っ取り早い気がする
自分の使いやすいようにできるしね
0406名前は開発中のものです。
2008/11/13(木) 04:13:44ID:PMMLpm0T0407名前は開発中のものです。
2008/11/13(木) 22:51:09ID:xuholqIR両画面表示ができるコンソールが公開されているのを見つけました。
ttp://meraman.dip.jp/index.php?NDS_Clmn1
いろんなアプローチがあるんですね!目から鱗です。
今回は上のコンソールも使わず、ただ単に諦めることにしましたw
(使っていいものかわかりませんし、自力で作るのは無理そうなため)
ありがとうございました!
0408名前は開発中のものです。
2008/11/14(金) 00:53:00ID:6N3LMOUt0409名前は開発中のものです。
2008/11/14(金) 10:34:05ID:rC8IZRbN0410名前は開発中のものです。
2008/11/15(土) 01:48:13ID:RfNDR2XM0411名前は開発中のものです。
2008/11/15(土) 07:38:58ID:IevcS/it0412名前は開発中のものです。
2008/11/15(土) 17:29:16ID:KbYyRJ/Nいろいろ問題が起きてうまくいってません。
みなさんはcygwin上でできているんでしょうか?
それともcygwin上ってのをあきらめたほうがよさげ?
今ぶつかってる問題は、ndstoolがdefault.arm7を
/d:evkitPro/libndsへ探しに行っちゃうこと
環境変数はDEVKITPRO=/devkitProとしてあります
0413名前は開発中のものです。
2008/11/15(土) 19:57:07ID:UeMILktP0414名前は開発中のものです。
2008/11/15(土) 23:08:30ID:oomo/59xつ cygwinとの決別
0415名前は開発中のものです。
2008/11/16(日) 05:20:47ID:qx7gPRSZcygwin周りってなんか罠が多そうだから深入りしたくなかったし・・・
DSで開発する時間を削ってでも勉強したいと思うなら諦めずにがんばればいいと思う
0416名前は開発中のものです。
2008/11/17(月) 04:57:23ID:empHggti市販ゲーでそんなに使ってるやつってあんの?
0417名前は開発中のものです。
2008/11/17(月) 05:27:40ID:Co9Qm5cS30FPSで1フレ4000ポリゴン、60fpsで2000ポリゴンでしょ。妥当じゃね?
0418名前は開発中のものです。
2008/11/17(月) 07:14:32ID:z2gXQpjD2000ポリゴンしか出せないけど60FPSで動くって感じ。
0419名前は開発中のものです。
2008/11/17(月) 18:10:28ID:K3xRwdOfトリッキーなハードだ
0420名前は開発中のものです。
2008/11/17(月) 20:02:41ID:i7TzQWLwあれ?3Dできるのメイン画面だけじゃないの?
0421名前は開発中のものです。
2008/11/17(月) 21:13:30ID:K3xRwdOf0422名前は開発中のものです。
2008/11/17(月) 21:45:21ID:5qiBRI+G規制巻き込まれ遅レスすんません
たしかに本題じゃないことに時間割くのは違いますね・・・
一応makeは通るようになったんですが、
動作しないndsファイルができたのであきらめましたw
おとなしくmingwでいきます
0423名前は開発中のものです。
2008/11/17(月) 22:16:43ID:iDQZx+7x同時には出来ないが、ということだな
0424名前は開発中のものです。
2008/11/17(月) 23:36:53ID:K3xRwdOf0425名前は開発中のものです。
2008/11/18(火) 03:01:24ID:kI4o23cf0426名前は開発中のものです。
2008/11/18(火) 17:47:36ID:VfbVyHaPつまづいているので助言お願いします。
フレームバッファを使って、タッチペンでタッチした場所に色を表示する
単純なプログラムを作っているのですが、
if(keysHeld() & KEY_TOUCH){
int address;
address = ((touchXY.py * SCREEN_WIDTH) + touchXY.px);
buf[address] = RGB15(0,0,0);
}
で、表示させることができたのですが、main関数のwhileループに入る前に
画面を白く塗りつぶすための、
for(i = 0; i < SCREEN_WIDTH * SCREEN_HEIGHT; i++)
*buf++ = RGB15(31,31,31);
を追加させると、画面はしろくなるのですが、
画面上でタッチした場所の色が変わりません。
かなり悩んでるんですが、周りに相談する人がいないので書き込みさせて
いただきました。
0427名前は開発中のものです。
2008/11/18(火) 18:27:37ID:viT1+w9Z■ このスレッドは過去ログ倉庫に格納されています