NintendoDS(NDS)非公式開発 Part3
1 :
名前は開発中のものです。 :
2008/04/08(火) 07:05:13 ID:MngpkM4u
セックスフレンドのコンバーター作ってくださいね♥
いつのまにか次スレになってた
YABO NDSkybookのndsuser2006氏 NDSkybookMの作者のmonnlight氏 にお願いがあります 改造したいので最新版のソース公開をお願いします。 連絡方法が無かったのでここに書いときますね
なんだ、このクズ
ちょっとききたいんだけどnintendoDSって何ビットなの?
文字入力をDSで実装する必要がある時、みなさん何かライブラリを使ってます? それとも自作でしょうか
>>6 ARM7とARM9の2CPU
32ビットx2だけどThumbといって16ビットとしても使える
>>7 お前作れ
BIOSには文字入力機能が内蔵されてるよね なんとか呼び出せないものなのかな
>>9 文字入力ってソフトキーボードのことか。
あれはライブラリの形なんてしてないので呼び出しは不可
でも一部ゲームでは同じようなソフトキーボードを備えてるんだよね 任天堂提供のライブラリに存在してるのかな
DSはレジスタやらVRAMやら入力やらIPCやらがメモリ上に全てマッピングされてるけど これってコンピューター的には普通なん? プログラムする側には便利なんだけど・・・
>>13 メモリマップドIOのことか
普通だよ
ARMにはIN OUT命令がないんじゃないかな
メモリマップドIOについて調べた RISCでは普通なんだね IN OUT命令が必要ないからハードとのやり取りに特別な処理が必要ないんだね OSが無い環境でのプログラミングって面白いね *( uint32 *)0x600000 = 1 << 6 とか最初何かと思ったよ ビット演算子ってこうやって利用するんだね
>>15 volatileとかWindowsのプログラムでは使わないしね
そもそもvolatileはポーリング以外での使い道ってあるの?
最近始めた者ですが、カートリッジROMからデータを受け取るには どうすればいいのでしょうか? 0x40001A8に、B7xxxxxxxx000000のコマンド送信しても データが受け取れません。 アドレス0x8000000以降には実機だとアクセスできない(?)みたいだし……
自己解決しました
>>23 じゃあおまえは役に立ってるのかと小一時間(ry
質問して自己解決したのであれば解決法くらい書いとけ この程度も出来んのなら来るな
27 :
21 :2008/04/18(金) 23:25:16 ID: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であっさり読み込めたので、もしかしたら
聞くまでもないことなのかもしれないと思ったので、
あわてて自己解決したと書き込みました。
ですが……実機ではできませんでした。
他にも手続きが必要なのかもと現在調べていますが……
私にはどうやら敷居が高すぎるようです
>>27 俺にもわからんから力になれない
解決したら教えてくれ
ROM吸出しのソースでもあれば参考になるだろうが
Rudolphに聞いてみたら
// 読み込みアドレス指定 *(u32*)0x40001AC = (j & 0xff); *(u32*)0x40001A8 = ((j & 0xff00) << 16) | (j & 0xff0000) | ((j & 0xff000000) >> 16) | 0xB7; ↑ ソースきちんと読んでないけど、見るからに怪しいな
素直に1バイトずつにした方が良いんじゃない。
いや、1バイトでも4バイトでも駄目で2バイトずつにしなきゃいけないと思う。 バスの幅が16bitsだと、転送で残りの部分にゼロが入ってしまう。 エミュだと動くけど実機では×ならたいていこれ
コントロールレジスタ系を明示的に設定しないとだめな気がする。 デフォルト値を期待しているとエミュと実機で動作が違ったりしたと思う。
33 :
21 :2008/04/19(土) 22:53:52 ID:AP7/4/OD
コマンド送信のところを16Bitにしたところ、 ・NO$GBA, DeSmuMEでは正常動作 ・iDeasでは10000h単位(?)で読みこまれる ・実機では強制的にROMの0x10200番地読み込み(?) と、挙動がバラバラになりました GBATekを見てみると、Key1, Key2で暗号化してあるとか、 暗号化回避法とか書いてありますが、この辺も関係あるのかなぁ?
34 :
21 :2008/04/19(土) 23:25:16 ID:AP7/4/OD
訂正 ・iDeasでは参照アドレスを0x29350と指定すると、0x20050のようになる →1000h, 100hは無効 ・実機ではROMにはない情報が引き出される ROMCTRLレジスタのデフォルト値をGBATekにあるのに変えてみたところ、 得られたデータに変化がありましたがROMにない情報でした
暗号回避法ってのは、PassMe/PassThroughとかのことかな? このあたりは、公式じゃないROMからどうやってプログラムをブートするかの 解説だから、ブート後のROMの読み込み方法じゃないとおも。 あたしは良く読まないで諦めちゃった人だから、頑張って欲しいんだけど いずれにしても、戻ってくるデータストリームはKEY2で暗号化されてるし コマンドそのものもKEY2で暗号化して送らないとダメって書いてない? 素直に B7aaaaaaaa000000h 送っても無効なコマンドで処理されそう。 (その場合はKEY2ストリームをビット反転させたものが延々と戻ってくるだけです) ここからは想像なんだけど 結局ROMのデータを読み出すなら、KEY2の暗号シードが分からないわけで そのKEY2の暗号シードを取得するには、いったん暗号モードをリセットして 最初から自分でKEY1、KEY2って設定していくしか方法がないんじゃない かなーって気がします。 たぶんRudolphさんが読み込みにつかってるのはこの方法だと思います。 あるいは他の方法で暗号のシードを取得できたり 暗号化そのものを無効化できる方法があるのかなぁ・・・
36 :
21 :2008/04/20(日) 21:11:27 ID:gpbemj1V
>>35 ご指摘ありがとうございます。GBATek読んだらかなり細かく暗号化について
書いてあるんですね。今、暗号化プログラムを組んでいるところです
コマンド送信のバイト幅を8Bitにしレジスタ系を32Bitにしたら、
実機以外のエミュですべて正常動作しました。
あとは暗号化実装さえすれば動きそうな気がしますが……
KEY1の設定大変そうです;
>>8 命令長が32bitだろうと16bitだろうと関係ない。
Core2Duoの最短命令長は8bitだが、8bitCPUとは言わんだろ?
ARM命令とTHUMB命令の違いは関係なくMAIN,SUB両方とも32bitCPU。
ただし、今の時代何をもって何bitCPUと言うのかが微妙になっている。
昔はバス幅で言うのが普通だったが、キャッシュ導入以降は意味がなくなっている。
というか、何bitCPUという言い方自体にあまり意味がない。
汎用レジスタのビット数じゃね
>>38 考え方としては賛成だが、メーカー公称はそうでもないんだよね。
例えば、
68000はレジスタは32bitだが、16bitCPU(とモトローラが言っている)。
8086は16bitCPUだが8088は8bitCPU(とIntelが言ってる)。
ただし、8088を搭載した初代IBM PCは16bit PCと誇大広告を…
データバスの幅によってそうなっているのだが、
だからと言って初代Pentiumが64bitCPUかと言うとそれはない。
何bitCPUという言い方自体に意味がなくなっているからどうでもよくなってる。
40 :
SunDarkness :2008/04/22(火) 13:58:50 ID:fwWjNZ2K
NDScripterつくっつた奴。Source公開しないか? R4に移植は簡単だと思うのだが。
まずはお前から公開するべきだ。
移植が簡単なら本人がやるだろ。 素直にソース下さいって言えよw
43 :
SunDarkness :2008/04/23(水) 09:11:31 ID:8ypD7EyW
すんませんどすた。
40みたいなのがいるから やる気なくなるんだよな
45 :
名前は開発中のものです。 :2008/04/30(水) 20:21:55 ID:dZTwB0pd
sourceforge.net死んでる? devKitPro落とせないんだけど…
ソースの公開はそんなに嫌なものか?
当たり前
あたまわるっ
ふーん でも開発ツールはオープンソースのものを使ってるんだよね ちょっとは還元しようと思わないの?
>>50 その理屈はおかしい。
オープンソースはオープンソースプログラム拡大の為に
GPL・LGPL等の厳しいライセンス制約を課している。
それを満たした上でどう使おうが、他人が口を挟める問題ではない。
まぁ強制はしないけどさ ギブアンドテイクが出来ないなら廃れるだけだよ 狭い界隈だし、協力しあったほうが色々と楽だと思うんだけどねぇ
>>52 だからその理屈はおかしいっての。
何でも公開するような義務を作ったら、それこそ一発で廃れるから、
廃れないように絶妙のバランスを保つためのオープンソースライセンスなんだよ。
>>52 おまえ何か出したのか?おまえが件の開発ツールとやらを作って公開してるのか?
何もしてないやつが「ギブアンドテイク」だとか語ってソースを公開させるのは全くギブアンドテイクになってないと思うんだ。
100歩譲っておまえの意見が正しかったとして、おまえが何か公開してからそういうこと言わなきゃ意見が矛盾してることになるんじゃまいか?
世の中には一方的に拾っていくばかりの人が大勢だってことを頭に入れた上で意見を言ったほうがいいぜ?
巨大なお世話かもしれんけどさ。
PC-ATは仕様が公開されているのでWindowsもソースを公開すべきです!みたいな論理だなw まずは、ソースコードはおろかソフトすら公開していないやつが何を言ってもなぁw
確かにDSじゃまだ作り始めたばかりだけど 他の分野でソース付で公開してる そこまで必死になって嫌がる理由が分からない 将来的に販売するなどの目的があるなら別だけど みんなでワイワイやったほうが楽しいと思うんだよね
>>56 だから公開してからいえや
他の分野で公開ってどこだよ、見に行ってやるから言えよ
こうやって当人が何も言ってないのに的はずれな議論もどきが進んで既成事実になってしまいます
「ソース見せ合ったほうが楽しいんじゃない?」という程度の意見なのに、 勝手に「ソースは公開すべき」という意見だと曲解した上で必死で否定する人たちって…
毎度毎度過疎板の過疎スレで熱心なことだなw
>>59 >>56 が何らかのソースを公開したらみんなで楽しもうじゃないか
多分二度とこないと思うけどな。
>「ソース見せ合ったほうが楽しいんじゃない?」という程度の意見なのに、 すごいこというな・・・ こういう人のために作者は自分の時間を使ってたのか・・・かわいそう
なんでここにはバカが多いの?
どうも話が噛み合ってないと思ったら、
>>40 =
>>47 だと思ってるから必死で否定してるのか。
たしかに
>>40 みたいなあからさまな乞食は論外だが、
>>47 はただ、ソースの公開は嫌なものなのか?って皆に聞いてるだけじゃん。
>>64 はぁ?必死なのは「ソース見せ合ったほうが楽しいんじゃない?」とかほざいたお前だろ?
お前がな……はっ! 公開して欲しいと人に頼むなら、自分が公開してから言えってのは同意。 それを踏まえて公開したい人は公開すればいいんじゃね? 求めるだけじゃ誰も答えんよ。
論点を見事にずらされた希ガス 今俺が希望するのは56のソース公開だけだ 実に楽しみだ、きっとみんなで共有できるはずなのに 当人が一切公開しようとしないんだから困ったものだw 結局そういうもんだよw
>>67 それには全面的に同意なんだが、
>>56 の皆でワイワイやったほうが楽しいという意見も納得できるので、
ちょいと口を挟んでみたのだが…どうも言わんとしてるところがうまく伝わらなかったようだな。
というか、俺が
>>56 だと勘違いされてる?
>>70 そういうやり方は、公開したくないといってるのと同じだ。
>>71 sourcefourgeのプロジェクトなんて個人特定したも同じじゃねーか。
たかが名無しの煽りのためだけに、個人情報に近いものを晒したくはないだろうよ。
>ちょっとは還元しようと思わないの? >ギブアンドテイクが出来ないなら廃れるだけだよ みたいにネガティブな論調、悪意から始めておいて、その態度等に文句を付けられると >ワイワイやる方が・楽しいんじゃない? というポジティブで同意を求めやすい善意的な論調にすり替えます。 するといつの間にか自分は公明正大な発言者であると大きな顔が出来るわけですよ
まぁ、いいからゴチャゴチャ言う前に
>>56 はソースを公開するべきだな。
「sourcefourgeに公開してある」ではなくて、
これから新たにうpろだにでも公開するといいと思うよ。
IDでもテキストに書いていれておけば、証拠にもなるしな。
自分のプログラムを堂々と晒すこともできずに 「俺は公開している」なんてよくも言えたもんだな。 恥ずかしくないのかね
なんだかなぁ。
オープンソースを信奉するならまず自分から公開しろというのには賛成なんだが、
ここまで煽りまくるとかえって公開しづらいだろうに…。
と思ってたが
>>70 のやり方見たらどっちもどっちという気がしてきた。
あんたえらいな。
プログラムなんてやったことなくても 意見いったり批判はしていいとおもうけどな どんな人が書いたかよりも 内容で読んだ方が
>>78 乙、参考になります。
…って、元A○CCの方じゃないでつか?
82 :
35 :2008/05/05(月) 02:34:17 ID:Uak3Varh
久しぶりに来てみたら荒れててワロスw 実機でROMカートリッジの内容を読み込むの成功したんだけど この雰囲気だと叩かれそうだw 先に結論から言うと、実機でROMを読み込んでも無駄です。 スロットに刺さってるのはマジコンのカートリッジなんだから この状態で読み込んでも、読み込まれるのは・・・・・ なんでこんな単純なことに気がつかなかったんだろう orz
DSの開発するとき頼りになるのはサンプルのソースだけど
ソースの公開されてる自作ソフトがあると非常に助かるのは事実
>>82 ROM吸出しソフトはすでにあるよ
皇帝ルドルフとか言う人が作ってた
プログラム実行したらカートリッジ差し替えるんだよ
84 :
35 :2008/05/05(月) 08:25:36 ID:Uak3Varh
ROMを吸い出したいんじゃなくて データを、コードに直接埋め込んだりlibfatを使わずに カートリッジから直接読み込みたいっていうことじゃないかな? まぁ結局、素直にlibfat使いなさいていうことですね・・・
Slot1を読み込みたいならSlot2のマジコンを使えばいい。 Slot2を読み込みたいならSlot2のマジコンを使えばいい。 読み込みたい方と別のSlotからブートすれば何も問題はなかろう。せっかく2つあるんだから。 使えるマジコンは限定されるけど。
開発時はlibfat+dldiを使ってテスト、リリース時には結合したデータを gbfsで読み込むよう切り替えたいんだが、なんかいい方法はない?
尻ませんけど有ると重い増すよ
>>82 起動中にDSカード抜くと一発でフリーズするんだね、残念。
PSみたいに途中でメディアを入れ替えられるようになっていれば、
GBAスロットの拡張メモリに一旦転送するとかできどうだけど。
それとも特定のAPIでメディアとの接続を切ったりできるのかな?
>>88 フリーズするのは主に商用のカートリッジだけですよ?
カートリッジの抜き差しでハードウェア割り込みが発生するので
公式の開発ツールは、カートリッジ割り込みを拾ったらフリーズするように
作られてるんでしょうきっと。
ためしにhomebrewなソフトで抜き差ししてみるといいです。
>>89 だとすると、割り込みハンドラを登録すればフリーズしないってことだな。
irqSet(IRQ_CARD_LINE, func);
のようにして、まずはテスト用のハンドラを登録して動作を試してみたらいいんじゃないか?
91 :
つくりませんか :2008/05/07(水) 18:23:39 ID:p5xOjkEB
完全に丸投げしているのか 同好の士を募集しているのか 募集しているにしても何を求めているのか それとも単なる自己紹介なのか さっぱり分からんな
93 :
つくりませんか :2008/05/07(水) 19:11:22 ID:p5xOjkEB
>>92 つくってください・・・・・じゃなくて、
ただ単にゲームをつくりたいです。
求めているものは、教えあえることです。
95 :
つくりませんか :2008/05/07(水) 21:38:50 ID:p5xOjkEB
>>95 依存する気100%で「教えあう」と言われても。
98 :
つくりませんか :2008/05/07(水) 22:47:22 ID:p5xOjkEB
>>94 全部教えてくださいというのはどういう意味ですか??
>>98 「教えあえることです。」の教えられる部分に決まってるだろjk
何でゲ板は日本語の不自由な奴が多いんだ?
まずはどういったものを作りたいのか示せるか? それも決まってないようだと、話にならんが。
>>93 どんな内容をやりとりするの?
ここや、他のサイトや掲示板でやらず
特定の人たちと情報交換するなら、
明確な目的とかルールを決めておかないと続かないぞ
プログラムメインの情報交換なのか
ゲーム内容メインの情報交換なのかとかさ
情報交換の内容も
初心者と一口にいっても
開発環境の揃え方から教えあうとか
基礎は出来てて一人じゃどうしても分からないことだけ教えあうのかとかも
考えてから募集したほうがいいんじゃない?
2ちゃんで一緒に作ろうといって出来たためしがない 1人でこつこつやるしかない
104 :
つくりませんか :2008/05/09(金) 01:54:09 ID:m4y4FI3h
なんか夢を失ったので、一人でコツコツつくります。 ありがとうございました。
本人なら最低だな こいつに関わった人カワイソ
まだ始まってすらいないのに関わった人カワイソ 電波もいいとこ
>>104 具体的に何を作るかくらい示さないと釣りとしか思われませんよ。
爆釣りしませんか?
まじめに答えた人カワイソ
ndskybookの無線まわりがうちのDSで動かないので、色々なところを直してみた 基本的には、ただコンパイルして新しいdswifiとリンクさせてやるだけでネット回りの問題は解決する模様 しかし相当前の(2006年ごろ)のlibndsで動くように作られていたのでdevkitarm r23対応が地味に面倒くさい 今、ttfフォントファイルを使用した実装にしてみようかと改造中・・・
最近DSのHomebrewの開発を始めた日曜プログラマーなのですが、 SpriteEntry内のattribute2のタイルインデックスについてお聞きしたいことがあります。 VRAM上の特定の位置にある画像を指定する為にタイルインデックスを指定させ、 画像を設定していますがその上限は10ビット(1024)となっていました。 それ以上の大きいインデックス値に存在する画像を扱いたい場合、 タイルインデックス以外の指定方法はあるのでしょうか? それとも、必要に応じて書き換えを? ご教授お願いいたします。
>>111 基本的にはない。
変則的な方法だと
(1)別のBGに別のキャラクタベースを割り当て、そこに表示して合成する
(2)ラスタ割込みで、途中からキャラクタベースを書き換える
等があるが、
(1)はBGを無駄遣いする(空きBGがあるなら問題はないが)
(2)は同一ラスタ中で混在できない
という問題がある。
要するにキャラクタベースを切り替える方法。
だがそもそも、32x24=768 しか同時にキャラクタを表示できない(表示するスペースが
それしかない)のだから、1024で足りるじゃないか…って思う。
使う分だけ書き換えればいいじゃんって話。
あと揚げ足取りのようだがタイルインデックスの上限は1023。
ラスタ割り込み、ファミコンでは基本テクニックだったな
>>112 >>113 情報ありがとうございます。 基本的にはないんですね、開発者の技量次第ですか。
BGについては、まだ将来どう使用するか未定なので今は利用できそうにはありません。
もう一つのラスタ割り込み、ということはIRQ_HBLANKですか。
こちらはそういう用途でも利用できたんですね。
パレット書き換えによる多色表現とかだけだと思ってました。
私はキャラクターがぬるぬる動くアクションゲームでもと思っており、
1キャラのアニメーション量が多いのでこんな質問をしました。
8ビットのプレイヤーキャラだけでインデックス使い切る
↓
4ビットまで減色
↓
プレイヤーキャラの画像領域を縮小して特定範囲だけを使用
↓
いや、知らないだけで実はスプライト用のバンク切り替えがあるんじゃないか?と思い
>>111 このような流れです。
>タイルインデックスの上限は1023
0〜1023なので上限は確かに1023でしたね。 お恥ずかしい。
今DevkitPro r21を使ってるんだけど、r22に更新すると何かメリットとかある?
それくらい自分で調べられないと 最後まで続かないと思われ
>>115 There are a number of improvements
* binutils updated to 2.18.50
* gcc updated to 4.3.0
* grit updated to 0.8
* ndstool now uses default.arm7 from libnds directory
* newlib multibyte code enabled with C-UTF8 locale
release 23が出てるけどね
>>114 アニメーションパターンが多いなら
表示するパターンだけVRAMに転送して毎回インデックスを更新すればいいんじゃない?
もしDISPLAY_SPR_2Dで作ってるならDISPLAY_SPR_1Dに切り替えた方が結果的に楽になると思うよ
>>118 当初から1Dでやっており、つい数日前にご指摘なさっている手法に至って
プレイヤーキャラのアニメーションをまかなうようになりました。
VRAM_AやBの128キロバイトをフルに活用できると思っていただけに
タイルインデックスの使用上限にはかなりショックを受けています。
画像のビット深度が倍になるとインデックスの消費量も倍(?)になりましたし
「あー、だからDSになっても16色っぽい主人公がドラキュラ退治するのか」と
納得したような、しないような。
(それでも開発自体は本業より楽しいから問題は無いのですが)
なにこの打てば響く完璧なレスw まぁ元々GBAと互換を保つための機能だからその名残が残ってるのは仕方ないよね SpriteEntry内にインデックス拡張フラグを入れる余地は全く無いし
>>114 ごめん。スプライトの話だったんですね。
よく見るとSpriteEntryと書いてありましたね。
BGの話かと思って勘違いしてました。
>>120 #include <nds/arm9/sprite.h>を覗いた上での
最後の悪あがき的な質問でしたから。
教えてくださる先達に横柄な態度はできませんよ。 こちらは無知ですし。
・・・まぁ、職場にいる先輩PGには慇懃無礼ですが(・∀・)
>>121 たとえ見当違いであっても、
お教えくださったその知識、知恵はありがたいものです。
いつか役立たせていただきます。
m3さくらはmoonさんが作ってるの?
この流れを見てると2chで協力つのるのは鬼門なのかね('A`)
基本的にプログラムしか出来ない人ばかりな板だしなぁ 凄い勢いで絵を描くから中身を作ってくれ ってんなら協力者は出てくるかもしれないけどなw
手書き文字認識モジュールつくったんだけど 学習データが圧倒的に足りないんです、悲しいぐらいに。 とりあえず今はTomoeのデータ使わせてもらってるんだけど 素のTomoeのデータはとてもじゃないけど普通に使えるレベル じゃないんです。 例えば、書き順がめちゃくちゃ 「止」「上」は、縦線から書くのがたぶん正しい書き順なんだろうけど tomoeのデータだと、この2つは横線から始まってるし かとおもったら「歩」に乗っかってる「止」の部分は縦線から始まってる。 「斗」と「科」の書き順も逆になってたり、バラバラで統一されてないし。 まぁ書き順はエンジンの方でなんとでもなるんだけど もっと酷いのが「旨」 「ヒ」の横棒の部分、は右から左にはらうのが正しい書き方だとおもうんだけど 「指」と「旨」でバラバラだったり、こういうの直してるだけで泣きそうになる。
せめてDSブラウザぐらいには漢字認識できるようにしたいね まぁ出来る範囲でコツコツがんばるよ('A`)
>>127 「止」「上」って上側の横線から書くんじゃないの?
書き順認識はプログラムするほうからは強制したいけどユーザからは無いほうがいいんだよな 市販DSソフトで全然認識しなくていらいらしたことがある 書き順が違ってたらしく書き順変えたらすぐ認識した
まぁ、あれです
せめてSDカードに学習データを保存できるぐらいまでに完成したら
ここで協力募って学習データ集めさせて、っていうのはありですか('A`)
それよりも泣きたいのは、素のTomoeの辞書データに
カタカナ・ひらがなの濁音拗音がぜんぜん無いンですヴヴヴっヴ
今、がんばってシコシコ作成中 orz
>>127 大漢語林っていう、重さ5kぐらいある鈍器みたいな辞書で調べたら
「上」「止」「歩」いずれも縦の方が筆順が先でした。
筆順なんて国とか時代で違うかもしれないし、本当かどうかはワカンネ
>>131 今考えてるのは、デフォルトの検索は、筆順強制で
それで認識されなければ、書き順フリーで検索して結果を学習
できれば、その学習データをクレクレ君('A`)
フリーのDS用日本語手書き文字認識ができたらすごいな DS版もSourceForgeでやってほしいわ
souceforgeじゃなくていいな むしろうまくいかなくなると思われ
初歩的な質問ですみません。 メモリの空き容量を調べたいと思って、mallocとfreeを繰り返してNULLが帰ってくるまでループ回すってやり方を試してみたんですが、正しい結果が得られないみたいなんです。 何かいい方法はありますか?
>>136 メモリの空き容量っていうのが、曖昧でよくわからない
確保できる「最大の」容量が知りたいのか
確保できる「合計の」容量が知りたいのか
mallocとfreeを繰り返して、っていうのはつまりどういうこと?
メモリはmalloc/freeを繰り返すうちに断片化されていくから
最大の容量≠合計の容量になるのは分かるよね?
最大の容量がしりたいなら
for(size = 40000000; malloc(size) != NULL; size--);
これで調べられるとおもう。
合計の容量がしりたいなら、malloc(256)を何回繰り返せるかカウント
してみたらどうでしょう。
曙が3人座れるサイズの長椅子があったとして、 もし真ん中に曙0.2人分サイズの子供が座ってたら 空いてるスペースは曙2.8人分ぐらいだけれども 実際に座れるのは2人だよね。 malloc() free() を繰り返すっていっても 同じサイズで何度も繰り返すのか、それとも少しずつ 確保するサイズを増やすの、減らすの?
あいまいな書き方ですみませんです。 今現在取得できる連続したメモリの空き容量ってことで、こんなのでやってました。 これで実行したら、場合によっては4194304以上の数字が出たりします。 んで、whileから抜けれて無いみたい。 char *m_ptr; m_ptr=NULL; int cnt=1; while (1) { m_ptr=(char*)malloc(cnt*1024); if (m_ptr==NULL) break; free(m_ptr); m_ptr=NULL; cnt++; iprintf("mem:%d\n",cnt*1024); } iprintf("memfree:%d\n",cnt*1024);
うぁ、コピペしたら変な改行はいった・・・
libcが物理メモリと関係なく、確保できるぶんだけ確保するとか、 物理メモリ境界をオーバーしてもNULLを返さないような実装になってんじゃね?
完全に推測でしかないんですが メインRAMで使える領域は、正確には4Mじゃなくて 後ろの方をシステムが使用してるから(4M - 4k)だよね /devkitPRO/devkitARM/arm-eabi/lib/ds_arm9.ld を見ると # MEMORY { # rom : ORIGIN = 0x08000000, LENGTH = 32M # ewram : ORIGIN = 0x02000000, LENGTH = 4M - 4k # dtcm : ORIGIN = 0x0b000000, LENGTH = 16K # itcm : ORIGIN = 0x01000000, LENGTH = 32K # } # __ewram_end = ORIGIN(ewram) + LENGTH(ewram); # __eheap_end = ORIGIN(ewram) + LENGTH(ewram); 実際に、こう書いてあるし。 だから、2000000h 〜 3FFF800がmalloc()で確保される空間なんだろうが /libnds/include/ipc.h をみると # static inline # TransferRegion volatile * getIPC() { # return (TransferRegion volatile *)(0x027FF000); # } ヒープの後ろ4096kを、なんか無断でつかっちょる 前々から、これってmalloc()で27FF000h〜が確保されたら ぐちゃぐちゃになるんじゃないかってヒヤヒヤしてるんだけど どうなのこれ? 大丈夫なの?
2000000h 〜 3FFF800 じゃなくて 2000000h 〜 2FFF800 に脳内変換しておいてくだしあ orz
難しすぎてよくわかりませんが、先に書いた方法では上手くいかないんですね・・・ ちょっと困っちゃったかもです。 考えてみます。
どうすればいいんだ?自分でnewハンドラを実装が一番楽かな
mallinfo() 使えるかどうかは知らん
>>142 ld が割り当てる RAM の容量は 4M-4k なんだけど、そうするとその空間は
02000000-023fefff じゃね?
これだと IPC のアドレスが変なんだけど、それは 02400000 からが RAM の
ミラーになってるからで、027ff000 は 023ff000 にあたるので問題無し
>>145 >>137 じゃだめなの?
>>148 forの方は、4Mから徐々に確保する量を減らして、NULLが帰ってこなかったらそれが連続して取れるメモリ容量って意図だと思うんですが、
初めの確保できないはずの4Mの時点でNULLが帰ってこないので、ループが終わってしまいます。
256づつってのも、確保されたメモリが必ず連続したものとは限らないので、今回の趣旨には合いません。
http://mdxonline.dyndns.org/imgview111_memtool.txt safemalloc_nocheck関数が、私がそれなりに安心して使えると信じて使っているmalloc関数です。
atypeっていうのは、バッファアンダー&オーバーラン、解放し忘れと二重解放を検出するために私が勝手に作った部分ですので、読み飛ばして頂いて問題ありません。
読みづらいと思いますが、もし参考になれば見てみてくださいませ。
DevKitProのmallocが信用できればこんなに苦労しないのに。標準関数をオーバーライドする技術があれば…。(苦笑
>>150 こんなに重いmalloc関数、使ってられないんじゃないか?
>>151 仰る通り本当に重いです。でも安全性を最も気にしていることと、リソース絡みのバグは非常に見つけづらいこともあって、私はこのスタイルを愛用しています。
本当に処理速度が必要な一番内側のループで仕方なくmallocする必要があるときは、ある程度大きなブロックの最初で空きメモリを計算しておいて…あぁ面倒くさい。(苦笑
毎度毎度フラグメントしないようにmallocする順番を考えるのも面倒くさいですし。
メモリをぎりぎりまで使おうと思わなければ(例えば動的キャッシュなどを考えなければ)普通にmallocすれば大抵は動くと思うのですが…。
って愚痴っぽくなってきたので退散します。蛇足失礼しました。
>>152 なるほど、さすがに今まで苦労している人は違いますね。サンクス。
俺は今までmallocの問題を感じたことがなかったんだけど、
問題がどこにあるのか完全に切り分けることができれば、
new演算子や完全に独立したmalloc関数を作るのがいいんじゃないか?
154 :
136 :2008/05/22(木) 20:43:09 ID:UEUlTLpO
>>Moonlight氏 試しに、プログラムにそのまま組み込んでみます。(当然変更する部分は変更して) 上手くいった場合、組み込んだままプログラム公開とかしても問題ないでしょうか?
>>153 もちろんスタブをオーバーライドするのが一番いいのでしょうが、標準関数に手を加えるのはDKPがバージョンアップしたときにトラブルの元になりそうと思ってやめてしまいました。
libfatとかはfopenなどを上書きしていましたがなんとなく気持ち悪くて。(プログラマにあるまじき感覚的表現
DevKitProというか、libndsの更新リストが信用でき(ry
>>154 速度や安全性が十分に要求水準を満たすことを確認できたときは、自由に使っていただいてOKです。
私に報告することも、なにか表示する必要もありません。
atype絡みはばさっと切っちゃうが吉ですたぶん。
うーん、RAM 容量以上でも NULL が返ってこないのは何か
malloc のアルゴリズム以前の別の問題がある気がするんですが…
少なくともうちでは
>>137 風のプログラムも
>>139 も動いてます
環境は devkitARM release 23 b とそれでコンパイルした libnds 20071023
157 :
136 :2008/05/22(木) 23:30:26 ID:UEUlTLpO
環境依存なの?
うちはDevkitPro release 21 (DevkitARM r21)なんで、そのせいとか?
ちなみに、
>>139 のを実行したら、値がいくらって出てますか?
159 :
136 :2008/05/23(金) 08:34:48 ID:XZvO7U4o
>>158 DLして試してみたところ、こっちでr21でコンパイルしたものを実行したら4128768の値が出ました。(forのタイプ)
となると、今作ってるプログラムが怪しいってことなのかな?
プログラムでどこかシステムに関わるようなところを潰している?
根本的に何か間違ってる?
>>159 malloc と free のペアをコンパイラが認識して、最適化で潰されてるってことはない?
コンパイルついでにアセンブリを吐かせてみるとか。
>>160 malloc()やfree()はコンパイラから見たら単なる関数呼び出しだから、最適化で消えることはない。
しかも、freeされないパスもあるわけだから、なおさら最適化で消えるはずはない。
BGのパレット0が透明にならないようにする方法ってある?
一番奥に持っていけばいい
C++で開発したいけどアロケーターというかnewの信頼性って...Devkitだとどんなもんなんだろ...
エエエエなにこの流れは もう手書き認識エンジンをC++つかって書いちゃったんですけど もしかして、信頼性やばいとかいう話ですか・・・( ´Д⊂ヽゥエエェ
いちお手書き認識デモのROMイメージ
http://www.mediafire.com/?jl0zzomezig 認識精度と認識にかかる時間でけっこう苦しんだんですが
問題なく使えるレベルにまでなんとか持っていけたので
この土日に頑張れれば、ソース投下できる気がします。
ただし
相変わらず辞書にTomoeから引っ張ってきたデータを使っているので
カタカナが入っていません。ひらがなも濁音拗音が入っていません。
アルファベットも入っていません orz
168 :
136 :2008/05/23(金) 22:20:09 ID:XZvO7U4o
>>166 うちのプログラムがおかしい可能性が大です。
外部関数等を色々引っ張ってきて組み込んだりしてたので、その影響なのかもしれません。
まだ解決には至ってませんが、あとは自分で頑張って調べてみたいと思います。
色々情報等ありがとうございました。
169 :
136 :2008/05/24(土) 09:57:36 ID:SU4ROGma
原因が多分わかりました。 自分のプログラムではmallocを使ってメモリを確保していたのですが、他から持ってきたソースがnewを使っていたみたいです。 newを使っていた部分をmallocに変更したら、正しい数値を返すようになりました。 色々とご迷惑をおかけしました。
セックスフレンドのコンバーター作ってくださいね♥
newで確保したメモリをdeleteでなくfreeで開放してたって事でしょうか。 それとも、devkitではnewにはdelete、mallocにはfreeと使い分けてても駄目なのかな? VC++とかは対応がしっかりしてれば平気なんだけど。 (もちろん、混在しないほうが問題を起こさないで済みますね。前に似たようなトラブルで痛い目に)
ニトロエミュレーター要らない
J2ME移植してた人どうしてますか? HSP移植してみたけどこのスレ的には要らない子ですよね。
>>173 wktk
要らない子だなんて言わないでさぁ。
NDScripterどなたか再アップロードしていただけませんか?
セックスフレンドのコンバーターどなたか作っていただけませんか?
上画面と下画面とで同時に3D画面を表示するのってどうやんの? できればサンプルコード、キボン
え、できるの?
3D対応なのはEngineA だけだから、どうしてもやりたいなら 片方はソフトでがんばるしかないんじゃないか?
いやキャプチャしつつ毎フレームlcdSwapで可能。 フレームレートは半分になるけど。
devkitARM R23bでサンプルがコンパイルできないんだけど設定が悪いのかな?それとも仕様? ググッてみたけどPAlibではR21以上では使えないみたいなのしか出てこなかった…PAlibは使ってないのに。 C:\devkitPro\examples\nds\Graphics\2D\hello_world>make linking hello_world.elf c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.3.0/../../../../arm-eabi/lib/th umb/ds_arm9_crt0.o: In function `CIDLoop': (.init+0x2ac): undefined reference to `initSystem' collect2: ld returned 1 exit status make[1]: *** [/c/devkitPro/examples/nds/Graphics/2D/hello_world/hello_world.elf] Error 1 make: *** [build] Error 2
>>184 アップデートしてmakeしてみた
D:\devkitPro\examples\nds\Graphics\2D\hello_world>make
main.cpp
arm-eabi-g++ -MMD -MP -MF /d/devkitPro/examples/nds/Graphics/2D/hello_world/buil
d/main.d -g -Wall -O2 -mcpu=arm9tdmi -mtune=arm9tdmi -fomit-frame-pointer -ffast
-math -mthumb -mthumb-interwork -I/d/devkitPro/examples/nds/Graphics/2D/hello_wo
rld/include -I/d/devkitPro/examples/nds/Graphics/2D/hello_world/build -I/D/devki
tPro/libnds/include -I/D/devkitPro/libnds/include -I/d/devkitPro/examples/nds/Gr
aphics/2D/hello_world/build -DARM9 -fno-rtti -fno-exceptions -c /d/devkitPro/exa
mples/nds/Graphics/2D/hello_world/source/main.cpp -o main.o
linking hello_world.elf
built ... hello_world.arm9
Nintendo DS rom tool 1.38 - May 15 2008
by Rafael Vuijk, Dave Murphy, Alexei Karpenko
built ... hello_world.nds
D:\devkitPro\examples\nds\Graphics\2D\hello_world>
>>185 検証サンクス。
どうやらインストールに失敗していただけのようだ。
環境変数を弄くって再インストールしたらできた。
devkitproのサンプルを見ると、glBeginとglEndの間はglTexCoord2t16やglVertex3v16で チマチマ描いてるみたいですが、これが最速なんですかね。 それとも6144頂点で頭打ちするから描画速度を心配する必要はないのかな?
ディスプレイリストのサンプルみたいにコマンドパックをDMAで送った方が早いと思う。
まぁなんのためのGFXFIFOなのかと
ちょ、Moonlightさん何やってんのwww さくらはwww
>188-189 わかた、ども
ndsで自分のソフトに組み込めるファイラってある?
libndsのGL_FOGの使い方、さっぱりワカンネ 教えて、エロイヒト!
OpenGLでフォグの知識があればわかると思う というかとりあえずそっちから理解するべき
みなさん、DLDI(FAT)を使ったプログラムを作った時のテストってどうしています? 私は実機で毎回テストしているんですが、microSDカードの付け替えが面倒で、 出来ることならばエミュレータ上でテストしたいんですが、 エミュレータはアダプタに対応していないので困っています。 何かいい方法を実践されている方がいらっしゃれば、ぜひ教えてください。
R4互換で動くエミュがあったはず。 かなり前の記憶なので、よく覚えてない。 エミュ使わずに実機で試すってのなら、DSFTPとかでDS側にプログラム持ってくるとか。 金かけてもいいってのなら、DS-RAMアダプターも選択肢の一つかもね。
desmume 0.8はlibfat経由でファイルI/Oできてる
Scale&Rotateのスプライトを使ってプログラムしているんだけれど、 スプライトの数が32個を超えると画像の一部が欠けてしまう。 特に32個に制限はなかったと思うけれど、何が原因かわかる人いますか?
正確なピクセル数は忘れましたが、横一直線にオブジェクトが並ぶとスキャンラインの仕様でオブジェクトの一部が処理されなくなります。 SCALEしても規定範囲を超えないオブジェクトや、ROTATEではみ出た部分が重要でない場合は、DOUBLEフラグを外すのがお手軽な対応です。 ここらへんは(NDSはGBAとほぼ同じなので)正直日記さんを読むと詳しく書いてあるのでお勧めです。 HBLANK/VBLANK期間内のみVRAMにアクセスする設定にするのも道が開けるかもしれません。 BGを4枚使い切ることがないのであれば、巨大オブジェクトの一部をBG3/BG4に展開してしまうのも手だと思います。
>>199 あ、なるほど。32個ではなくて並びすぎだったのか。
情報ありがとうございます、ROTATEを外して対応してみます。
DSのスプライトが横一直線に表示できるのは透過色も含めて1018ドット REG_DISPCNTのBIT23を0にしたときは1414ドット・・・のはず DOUBLEフラグを付けると32ドットのスプライトならscaleに関わらず64ドット相当になり 64ドット*32個で2048ドットなのでオーバーした分が欠ける
遅レスだが
>>119 REG_DISPCNTにスプライトVRAMを256Kまで使えるようにするフラグがある
インデックス自体は増やせないが、インデックスのポインタサイズを2〜8倍に出来るので
画像のビット深度を上げても低いときと同じ量のキャラクタ数が格納できる
>>195 desmumeの他にはideasもイケる
ideasの方はイメージファイルにr4tf.dldiをパッチして
PropertyからR4エミュレーションを有効にする必要が
あるけどな
>>202 DISPLAY_CRの別名だよね?
DISPLAY_SPR_1D_SIZE_〜?
205 :
名前は開発中のものです。 :2008/06/22(日) 04:06:31 ID:cwyntve3
>>198 ATTR0_ROTSCALEを使っているんじゃないか?
ATTR0_ROTSCALEで一度に回転できるのは32個まで。なので、そのせいだと妄想。
すべて回転するには、ATTR1_ROTDATA(n)で回転するスプライトを入れ替えると
できるはず。
使っていればの話・・。
206 :
195 :2008/06/22(日) 05:41:28 ID:hOUiSeY7
皆さんありがとうございました。desmume 0.8で問題なく動かすことができました。
俺Wiiで趣味の開発してるんだけど、いいなこのスレ Wii版立てたら需要あるかしら
>>213 もっとWiiの開発資料が集まらないと皆やる気でないんじゃないか?
DeSmuMEを使ってみたけど、dldiに対応しているのは嬉しいね。 でもprintfで表示しているfontが欠けるんだけど、 どの設定を変更すれば直るだろう?
本家DeSmuMEはウインドウのサイズ調整に問題があって多分本来より縦横が縮小されてた記憶があるので ちょっと広げてやると見えないかな
>>217 なるほど、うちの環境では
上のWindowメニューが2段になってしまっているから
それできちんと表示できなかったわけですね。
原因分かってすっきりしました、ありがとう
そうなんだー
DeSmuMEの、ウィンドウが縮小されてしまう問題の解決策を 一応ここにも書いておきます。 ソースが公開されているので、自分でソースを修正するのが一番ですが ・ソースのコンパイルにはPerlのXML::Parserが必要;msys上でのインストールは面倒 ・ソース中にWinAPIでAdjustWindowRectExを使っているので、メニューバーの高さの計算が面倒 というわけでソースをいじるよりはリソースをいじった方が早そうに感じました。 Resource Hackerというフリーのツールで、Menu/MENU_PRINCIPAL/1033のメニューから &Emulatorの部分を&Emuに書き換えました。 (なお、配布版のDeSmuMEはUPXで圧縮されているので、UPXで解凍してからResource Hackerで処理します) これでメニューが折れることなく、フォントが潰れることなく表示出来ます。 ご参考までに。
>>194 Fogは他でよく使っているだけにハマってしまった
libndsではglFogみたいなAPIが充実してないから
Fogに必要な値は直接流し込まないとダメなんだw
よろしくお願いします。
質問よろしいでしょうか。 最新のdevkitProを入れたんですが、devkitARM\includeにファイルがありません。 これが通常ですか? VC++2008Expressで開発したいんですが、一部IntelliSenseが効かないです。 C:\devkitPro\libnds\includeとC:\devkitPro\devkitARM\includeはインクルードディレクトリに指定済みです。 他に指定しなければならないものがあるのでしょうか? (irq~は補完してくれますが、video~や、vram~,iprintf等は無理です。)
>>223 devkitARM\includeは俺のも空だよ
インテリセンスはサブフォルダも全部指定しないとだめなんじゃないかな
225 :
223 :2008/06/27(金) 17:44:04 ID:ih9Lx+ZJ
>>224 devkitARM\includeはなくてもOKなんですね。
C:\devkitPro\libnds\include以下のディレクトリ全部指定しても補完してくれませんでした・・・
>>225 VC++2005でやってみたけど同じだね
#include <nds/arm9/video.h>
のように直接インクルードすれば反映されるようだ
227 :
223 :2008/06/27(金) 18:46:18 ID:wtcjxR28
>>226 #include <nds/arm9/video.h>
試してみましたが、だめでした。
nds.hが、関連するものはすべてインクルードしてるはずですよね?
BuildLogに以下のようにかかれているのが気になりますが、ビルドはできています。何なんでしょうか。
コマンド ライン 一時ファイル "D:\forXP\TMP\BAT00000118883252.bat" を作成しています。内容 :
[
@echo off
make -r 2>&1 | sed -e 's/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/'
if errorlevel 1 goto VCReportError
goto VCEnd
:VCReportError
echo Project : error PRJ0019: ツールはエラー コードを返しました : "メイクファイル プロジェクト動作を実行しています。"
exit 1
:VCEnd
]
コマンド ライン "D:\forXP\TMP\BAT00000118883252.bat" を作成しています。
>>223 IntelliSenseが効かないだけなら、ここより専門のがあるんじゃない?
230 :
223 :2008/06/28(土) 15:05:16 ID:egOCuvJR
>>229 nds.hファイル内の”#ifdef ARM9”と”#ifdef ARM7”及び対応するendifをコメントアウトしさえすれば
IntelliSenseは効くようです。コメントアウトせずに済み方法があればいいんですが、スレ違いですね。
インクルード内でifdefで囲まれているインクルード対象をIntelliSenseに対応させる方法探します。
>>228 使ってみたんですが、エラーコードの原因はどうやって特定するんでしょうか?
GBAのノウハウってDSに引き継げんの?
>>230 おいおい、objdumpでVCのエラーなんてわからないだろ、常考
objdumpはできあがったバイナリを調べるのに使うんだよw
Makefileの中身のどの箇所でエラーとなっているかは
自分で突き止めるんだ
コマンドラインからなら通るのか、そのmake?
つかエラーじゃないよそれ
234 :
223 :2008/06/29(日) 00:28:40 ID:EnkXWu9V
>>232 .nds(正常に動作する)は出力されてるのでmakeはできてると思います。
>>233 では、VCのバグですか?
IntelliSenseの方は分からないけど、
>>227 のBuildLogなら
単にmakeを実行する一時バッチファイルの中身が表示されてるだけ
とにかく少なくともここで話す内容じゃない 簡単に言うとスレ違い プリプロセッサならdefineすれば良いんじゃないのと適当に返してみる
>>234 VCのバグとか・・・すれ違いにもほどがある。
C言語をVCで始めからやり直してから来た方がいいような気がする。
basicでも大丈夫ですか?
やれるもんならやってみ
moonshellの中の人、どうしちゃったんだろう・・・。
>>240 間違いなくM3さくらのせいだろうな
プライド高そうな人だったし気が触れちゃったんじゃねーの?
まさかあの騒動がここまで影響出るとはね
動画エンコーダアップロードとMDXOnlineだけでも復活してくれねーかな・・・
moonlight氏かえってこないかな〜
あの人縁を切ると決めたら頑なっぽいからなあ…
精神的にちょっとおかしい人だからね 才能があれば&リアルで自分と関わりがなければ全然問題ないけど
死亡説が出ないのが不思議だ
>>244 お前のが確実におかしいよ
精神的にちょっとおかしいと思っても、普通なら口に出して言わない
天才と○○○は紙一重
ちょっと質問なんですが、 BG面で256色モードと16色モードの混在って出来るのでしょうか? 出来るのであれば、パレットはどういった扱いになるのでしょうか?
>>250 モードはなに?
使っているのはどのBG?
詳しく書かないとわからないよ。
言わんとすることはわかる気がするけどな 回答はしりませんすんまそん
iモード
>>250 モード0, 1なら、BGxCNTレジスタのbit7を設定すれば一応可能。
ただし、パレットデータは共用される(256個分の領域しかないのだから当たり前)。
つまり、うまくやらないと混在させるのは難しい。
素直に256色モードに統一したほうが楽だと思う。
DSluaってスレチ?
>>255 DSLuaでの開発についてはスレ違いだが、
DSLuaの内部の実装とかならOKだと思う。
MDXONLINEって、どーなっちゃうのかな・・・。 このままフェードアウトは、余りに寂しい。 とつぶやきつつ、devkitのサンプルソースを読む俺。 なんか、ndsのnscriptをテスト動作させている動画とか出てきた・・。 昔、中の人がアップした奴かな
>257 アングラサイトの終り方なんてだいたいそんなもん
アングラて
258さんはアングラと言う言葉を最近知り、使いたくてたまらなかったんですよ
HelloWorldとかのタッチしている位置が表示されるサンプルプログラム を実機で動かして、画面をタッチペンでぐりぐりしてると、 時々タッチ位置が一瞬意図しない位置にズレる事があるのですが、皆さんのDSでは タッチ位置がズレることはありますか? 調べてみたところ、以下のような結果が出ました。 タッチ位置のずれ HelloWorld あり 既製ゲームのおまけのお絵かき機能 あり ピクトチャット なし タッチ位置の瞬間的なズレはDSの仕様で、ピクトチャットのみがそれを補正しているように感じるのですが、 実際のところどうなのかわかる方教えていただきたいです。
moonlightの人のblogでそういう話出てた 今見られないので詳細はかけないが、要約すると諦めて自分で 補正考えろって結論だったと思う
>>262 ありがとうございます。
自分のDSがおかしい訳ではないようですね。
libfatを使ってfopen()する際にLFNを指定して開こうとしたんだが、 Linux版のdesmume 0.8ではダメだった。 これって他の環境では問題なく動作するもの? それともshort file nameを逆引きする(やり方知らないけど)とかして fopen()しないとダメ?
どれもFATが不完全 なによりWrite出来ないし ああイメージは例外だけど
セキュリティ考えるとWriteがダメってのは助かるけどな
>>268 保護シールは貼ってない状態での話です。
>>269 静電気で飛ぶんだったけか?
昔パーム系の開発サイトで補正のノウハウを見たような気が
するが忘れてしまったなw
HELD中の履歴をとっておいて単位時間内に大きく履歴から
外れた座標が来たら無視するとかはどうよ?
>>270 一応そんな感じで無視するようにしてありますが、
どれくらい飛んだら処理するか細かい調整が必要がみたいです。。
若干のタイムラグ(数フレーム)があってもいいのなら… 自分の場合、ARM7側で6フレーム分のタッチ位置情報を随時バッファに入れていって更新させる。 ARM9側でタッチ位置情報が必要になったら、バッファの一番古い情報から取り出す。 ただし、KEY_TOUCHがOFFからONに変わった時に、先頭4フレーム分は無効データとする。 取得したX・Y座標とも0でない場合に、それをタッチ位置として使ってる。 4フレーム以上連続してタッチしていないと、タッチしたことにならないって方法。 リアルタイムで処理させるのには向かないかもしれないけどね。
セックスフレンドDSおねがいします
glPolyFmtでPOLY_FORMAT_LIGHT0〜3設定したら、 以降のglColorは無効となるので、色指定にはglMaterialfを 使わなければならないでFA?
OK ただし頂点ごとにglColor指定していればそちら優先
あかん寝起きでそっけなく書いた DSの3Dはいろいろ特殊で ライトを設定しても法線がないと意味がないのと 法線があってもglColorを全ての頂点に設定しているとカラーの色が優先されたりするんだったきがする 曖昧ですまん
>>278 自作ソフトで金取ったら捕まるんじゃね?
なんで捕まるのかね?
>>278 > マジコンにこういう使い方があるとは・・・
って書いてあるけど、Homebrewを動かすのって、
建前上は一番基本的な使い方のはずなんだが。
Moonlightがさくらで数百万稼いで、悠々自適に暮らしてるのに、たかが同人ゲーで捕まるわけないだろ
>>276-277 d
逆にNormalが指定してあるのにLightを指定してないと実機では真っ黒になるとか、
libndsのglRotatefの回転方向が普通のOpenGLと逆とか、いろいろ謎杉
あと、NDSならではっぽいPolygon IDもイマイチ理解できないYO!
誰かNDSでのShadow Volumeのサンプルソース、プリーズ。
実機のデバックに詰まって、no$gbaのデバッカー付きを買おうと思ったら paypal中止しててお金送れず・・・ ううむ
残念でしたー^^
あげないよ
夏休みと言う事をすっかり忘れてた。
そういや結局NDScripterってどうなったの? 見ている限り2年前のはにはに+夏kanon動作確認動画からバージョンうpしてないようなのだが・・・ ONSをDSで動かすにはかなり大変なようだし・・・なんだかなぁ
>>284 俺も同じ経験がある。
3か月くらい前の話だが、既にダメだった。
スプライト関連の質問です。 スプライトの ATTR0_ROTSCALE_DOUBLE 使用時は、 ATTR1_FLIP_X の併用はできないのでしょうか? ATTR1_FLIP_X を使わない場合は通常通り表示されているグラフィックが ATTR1_FLIP_X を使った時に限り単色塗りつぶし矩形として表示されてしまいます。 同じような現象に遭った方、いらっしゃいませんでしょうか?
無理。拡大回転時のそこは拡大回転用パラメータになるので反転は出来ない
そうなんですか・・・そこを何とか上手く出来ませんか?
変換行列でフリップしたらいかんの?
devkitproのサンプル"rotscale_text"でこれはテキストだけど
SUB_BG3_XDX = ( angleCos * scaleX )
>>8 ;
SUB_BG3_XDY = ( -angleSin * scaleX )
>>8 ;
SUB_BG3_YDX = ( angleSin * scaleY )
>>8 ;
SUB_BG3_YDY = ( angleCos * scaleY )
>>8 ;
の所を
SUB_BG3_XDX = ( -angleCos * scaleX )
>>8 ;
SUB_BG3_XDY = ( -angleSin * scaleX )
>>8 ;
SUB_BG3_YDX = ( -angleSin * scaleY )
>>8 ;
SUB_BG3_YDY = ( angleCos * scaleY )
>>8 ;
ってやったら反転できた。スプライトも似たようなもんだから
こんな感じで出来るかも
×これはテキストだけど ○これはBGだけど
296 :
290 :2008/07/29(火) 16:45:46 ID:ka3ZdjYg
ご意見、情報ありがとうございます ご指摘の方法を試してみた所、望んでいた処理結果となりました。 当方、行列や微分積分を習わない学科に籍を置いていたため、 「変換行列でフリップをしてみては?」という意見が出ていても なかなか理解できなくて困っていたのでとても助かりました。 ありがとうございました。
wifilibでwepなしのルーターに接続ってできますか?
298 :
名前は開発中のものです。 :2008/08/02(土) 03:07:01 ID:3KgJL95d
グラフィックス機能をラップしたライブラリありませんか?
palibやglib
補足。glibはMoonlight氏のフリーウェアには必ずといってもいいほどの高頻度で使われているグラフィックライブラリ。C++専用でクラスを多用している。 毎回微妙に違うから最新版は目覚まし時計のソースから引っ張ってきたらいいが、単体でアップされていたglibに付属ツール群が同梱されていたので、Windows用ツールは単体glibから使うのがお勧めだ。 一発画面初期化関数と、CglCanvasは便利すぎる。
301 :
名前は開発中のものです。 :2008/08/02(土) 21:28:31 ID:3KgJL95d
>>300 ありがとうございます!
さっそく使わせてもらいます。
302 :
名前は開発中のものです。 :2008/08/05(火) 06:08:08 ID:pz5K41tp
Moonlight氏のページが落ちているのですが、どうされたのでしょう
任天堂から訴えられたんじゃねーの
昔自殺未遂してるしページと一緒に消えたか
あーあれな。忍者でウェブキャッシュしてるからどっかに画像あるけど、一瞬グロ踏んだかと思ったもんな。 俺が読んだ話だと、M3さくらで大金貰ったからバカバカしくてやめたらしい。(ソースはさくらスレ) けど最後の日記を見るとそうは思えないんだよな−−− でかサクラ関係なのは間違いないんだろう。良い人を亡くしたよ。
Programmer's Notepad でrunでエミュレータを起動させるため 関連付けするにはどうすればいいでしょうか?
____
/⌒ ⌒\ ホジホジ
/( ●) (●)\
>>305 /::::::⌒(__人__)⌒::::: \ <で?
| mj |ー'´ |
\ 〈__ノ /
ノ ノ
308 :
名前は開発中のものです。 :2008/08/07(木) 04:59:45 ID:3S2Xa5LT
DirectX等の使いやすいライブラリに慣れてるとDSはわけがわからりませんね(^^) バンクとかビデオモードって何?ってかんじです(^^)
PCと比べると激しくリソースが制限されてるし GBからの歴史的経緯で妙な事になってたりするからな 単に携帯機でプログラム書きたいならPSPもありだと思う
まぁ携帯機器ってどれも対して変わらんと思うが
iPhone/touchは携帯物の割に開発ラクらしいな マック必須とか俺的には無いが
Mac必須よりも、Objective-Cとかいう言語を習得する方が面倒だ
マジコン検出ってどうやってんのかな バカな俺がちょっと疑問に思ってみた。
>>314 あくまで俺の予想、ウソ度80%。手っ取り早いのは「DeSmuME うぃずぱっち」がやってるようなことじゃん?
ネットに流れてるROMは実際のものとヘッダが違うのでそこを調べる。
つかネットに流れてる奴って暗号化がすでに解かれてるんだろ?調べれば一発じゃん。
もっと詳しく調べたいならマジコンが置かれる領域をあらかじめ調べ
現物があるか調べる、但しこれは本来禁止されている行為(DSの意図しない領域へのアクセス)
なのでやる可能性は低い。それ以外だと昔ながらの方法で直にROM領域に書き込んでみるとか。
しかしROM領域に書き込む方法は無かったはず・・。
ちなみにその理論で行くと、どーやっても任天堂の許可なしのプログラム、 というのは常に非合法、となってしまうわけか? やり口うまいなぁ。 ちなみにNScriptなんかも危険なのかね?(エロゲ移植楽勝的な意味で
その辺はスレチなので別所で。非公式だが非合法ではないぞ。
確かカートリッジの形が特許だか意匠登録だかがされているから マジコンの販売は全部非合法のはず ソフトの開発を完全に制限すると独禁法に引っかかるから制限していない (1社につき何本、などはあり)
任店893の脅しで販売中止に追い込まれたエロゲは合法なんだよね・・・
983は573だぜ
それって業者と一体化してる(と取れる宣伝をした)ことが見つかって資格取消されただけでそ? ブースでマジコン自体を売ろうとしてたという話もあるし そりゃさすがにマズいだろという
>>319 そりゃただのねつ造 ニンテンは圧力かけてないだろ
devkitで作ったromなら売ってもダイジョーブだよん
'ROMイメージ'ならな
焼いて売ればカートリッジによっては意匠権の侵害になる devkitだろうとなんだろうとな
そこがソフトウェアのややこしいところでね、
CD-ROMに焼いたとか、量産できる媒体に対して著作権などが発生する
逆にソフトウェアそのものにはほぼそれらが発生しない。
>>325 はそういうことが言いたかったんじゃないかな?
325=327でな もちろん、DSに刺してそのまま動くような媒体で配布するのでなければ なんら問題ないとは思っているよ
PALIBの関数について日本語で解説とかしてるサイトってないですか?
333 :
330 :2008/08/27(水) 20:21:54 ID:NY8U1MXK
作ってもいいんだけど、使い方を先に教えてくれ
教えたらそれをコピペしただけで作ったと言い出しそうだな
もうちょっと触ってから質問しようぜ
PAlibの使い方が知りたいならサンプルを読めばいい。 ところで、PAlibの最新版が出てたんだ。 未だにr21のみの対応か、絶望した!
337 :
sage :2008/08/31(日) 12:53:15 ID:NgWtUu+W
誰かデータ用にバイナリ作ってそれをdataフォルダに突っ込んで使っている人いない? ビットマップを追加するごとに毎回インクルードするのめんどくさいから、 ファイルをアーカイブするツール作って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
名前をsageしてしまったorz
>>337 何が問題?どういう動作を求めてる?
memcpyの動作は正しいよな。pltはアライメントかな?
全てのデータをまとめてarchive.binというものを作成して、 管理するクラスが#include "archive_bin.h"しつつ、 archive_binのそれぞれのファイルの先頭ポインタを保存する仕組みを作成していたんです。 とりあえず手始めにビットマップのコンバートからやってたのですが、 indexとpalleteのポインタをそのままSPRITE_PALETTEとSPRITE_GFXにdmcCopyしても、 なぜか絵がうまく出ないんです。(色が変だったり所々が欠けたような絵になります) AGBGFXConverterで吐き出したソースと同じ様に配置したつもりなんですけど… ちなみにAGBGFXConverterで同じ絵をコンバートして、 インデックスを両方1タイル分ずつprintfして見ているんですけど、 インデックスの並びは全く一緒でした。 なので色はバグってても同じ絵は出ると思ったのですが… で今度はパレットの中身を見たらあれ?みたいな感じになったわけです。
すみません経過です。 こんな感じで取得させていて、構造体の中にインデックスとパレットのポインタが入っています。 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 ]; } // ----------------------------------------------
これはダメ // ---------------------------------------------- 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 ]; 見たいな書き方してるんですけど、間違えて書いたら普通にビルドが通るので使ってました。
最近ndsのプログラムを始めたのだが メインメモリ4MBってつまり libfat使わない限りはndsファイルのサイズつかプログラム+データを 4MBに収めないといけないってこと? プログラムとメモリの関係が良くわからんです・・・
バス幅間違ってない?8bitでコピーすると正しくて16bit/32bitでコピーすると化けるのは大抵アライメントが原因です。
iprintf("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として使えたから便利だったんだけどね。
つかアライメントだろ
ああああ直りました!ありがとうございます! こっちでもアーカイブした中でもファイルによって正常に出るものがあったので、 アライメントをファイル内でそろえようとしていた所でした。 ちなみにアドレスをprintfした結果はこれです。 bmp 202c6900 200f7db 200f3bd, 400
>>343 RAMとして扱えるのが4M
っ gbfs ndstool
350 :
348 :2008/09/02(火) 08:38:04 ID:xhnSuTcg
>>349 まじで?
DSTTしかもってないしfat使ってるから実際に試したことは無かった
仕事終わったらちょっとやってみる
メモリ4M内のgbfsは大丈夫だろ? 4M以降に配置されるヤツはスロ1のマジコンではだめだったとおもうけど。
いやまぁ4M内なら可能だろうけど 4M内ならgbfs使うメリットあんまないよね
なるほど、がんばってみますね。
354 :
343 :2008/09/02(火) 21:04:24 ID:9aalbRTR
ありがとうございます。 参考になりました。 音楽はメモリ食い虫なのでバッサリ切る事にしました。 ところで大量(数百〜)のオブジェクト扱うとなるとスプライト使えないんですね・・・ フレームバッファで直描きで良いんでしょうか? 2Dエンジンのグラフィックモードの意味がさっぱり理解出来ないので ごり押しでソースかいてるんですがみなさんお勧めのモードとかありますか? DirectXみたいに2Dゲーだけど描画自体は3Dでテクスチャーを平面で動かすとか そういうのが主流だったりするんでしょうかね。
356 :
343 :2008/09/02(火) 23:27:25 ID:9aalbRTR
え〜、真性ですね。 日本語のサイトは当たったのですが素で良くわかってません。 リアルタイムなプログラムは初めてな割りに変な知識だけ持ってしまったので。 やっぱとんちんかんなこと言ってますか。 って実機で試したら全画面αブレンド(自前計算)するだけで処理落ちしてる! ndsの2Dのスペック最大30Mピクセル/秒て VRAMに毎フレーム0.5Mピクセルぶんアクセス出来るって意味じゃないんですか?! 奥が深い・・・
まぁDSで3D触ったことないしちゃんと調べたことも無いからそっちは知らんが 大量のスプライト出したかったらスプライトダブラでぐぐればいいよ 多分GBA用の解説がすぐ見つかるだろ
358 :
343 :2008/09/03(水) 00:12:57 ID:Bl/fBETL
目からうろこが・・・と思ったらコンタクトレンズだった。 水平割り込みか〜その発想は無かったわ。 安直に必要な数だけドット打ってもなんとかなるだろうと高をくくっていたが甘かったようです。
>>356 2Dは基本的にGBAと同じで、スプライトとタイルベースのBG。
BGをフレームバッファで使う場合は静止画のみが一般的。
3Dはlibnds経由でしか使ったことがないが、これはOpenGL
に似ている(というより制限は昔のMESAに近い)が、別物。
値域制限とAPIコール順の制限と帯域制限とに泣かされるw
まあ、とりあえずガンガレwww
セックスフレンドのコンバーター作ってくださいね♥
くらっしゅ☆みぃー
fjuL"GgPVplU|Q/tKIA8Qw1O}W#DrVjXZc{>^B@r1ciN*y|z8vy2[d~$D)^Dse]=ou^M6B,K#L
そろそろ、スレ再開しようよ。
なんか、俺のIDかこいい...
もうすぐDSiが出るよ
>>367 カメラ使うためのAPI(?)は公開されるのかねぇ?
369 :
348 :2008/10/05(日) 18:04:25 ID:Vc0IrAL9
その前にhomebrew対策はいるんじゃないか?
なんか残ってた
スレチだが、DSi、カメラで取り込んだもの弄ったりって、 RAMとかグラフィックエンジンまわりとか結構強化されてそうな気がするんだが、 どうなんだろ。両面タッチだし、AACもハードサポートだったら... わりと順当に次世代機(gc→wii的な)なんじゃね、と妄想
市販のが動かなくて自作のは動く・・・だとありがたいんだけど それは無いよねぇ
今まで拡張メモリが必要だったoperaが、ダウンロードするだけで動くってことは、 少なくとも内蔵メモリは増えてるだろう。白黒GBとGBcolorくらいの差かねえ。 homeblewでどれくらいhackされるかだなぁ。
ぶったぎりお悩み相談。 必要に迫られてC++初めて三日くらいなんですが、 ゲームオブジェクトの管理は線形リスト使ってクラスでタスク管理するのが一般的らしいですが、 DSでもそれがセオリーなんでしょうか。 狭いメモリ空間でnewとかdeleteとか繰り返してたら面倒なことになりそうで怖いんですが。 全部構造体配列にしちゃって固定領域にして管理の方が安心できると思うのは素人考えですか?
組み込みだしそれもアリ。 C++の恩恵も受けたいなら専用メモリマネージャーを書くのも手だよ。 固定サイズのクラスを大量に作成・削除する場合はかなり違う。 Efficient C++オススメ。
>>374 業務でやってる場合→素直に周りに合わしとけ
学業でやってる場合→指導している香具師に相談すれ
趣味でやってる場合→好きにしろ
newとかdeleteしないという手もあるけどなw
そこを敢えて部分適用テンプレートで書くのが漢 Modern C++ Designオススメ
自分の安心出来る設計で作るのは悪いことじゃないよ。
断片化が怖けりゃplacement newという手もある。
・・・
>>375 と言ってること同じだな。
勉強になります。 とりあえずメモリ管理が怖いというか良くわかってないので 構造体+関数ポインタで乗り切ることにしました。
PC系のプログラマが「コンシューマの奴はメモリ管理なんかで悩んでんのか レベル低いなー」とか煽ってんの見たことあるけど実際悩むよな
どうかんがえても抽象度レベル低いだろ 技術レベルは高い低いじゃなくてベクトルが違う
ndsybookのフォントってds文学全集なフォントにできないのか?
まずds文学全集なフォントを用意しろ 話はそれからだ
>>382 4 :名無しさん@お腹いっぱい。[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のことだけど、セーブデータ内にも同様に、大抵のセクションの先頭に付加されている。
やっぱり整合性を確認する物なのかも・・
私はそういうのは分からないのでとりあえず諦めました。
>>383 honz_font_min18.NFTR
用意しました
Tahaxanで解凍したnarcファイルの中身のファイル名が文字化けしてるのですがどうすればいいのでしょうか?
388 :
名前は開発中のものです。 :2008/10/11(土) 21:09:40 ID:PHecR/2c
しらんがな(´・ω・)
DSiってタッチパネル片面だったのか。 てっきり二画面タッチパネル化と思い込んでたよ…
そんなくだらない揉め事持ってきて欲しくないんだが・・・ いつの間にかサイト閉じててソース保存し忘れたのが残念だ 参考になりそうだったのに
wi-fiじゃない直接通信って出来ないんでしょうか・・・ 検索ワード自体がわかりません。 アドホック通信で核心に当たらなかったんですが
393 :
名前は開発中のものです。 :2008/11/03(月) 22:46:31 ID:d0Sl3CXv
moonlightが復活してるな
完璧の愚痴だけどな 現場に居るヤツの愚痴は面白いな
相当ヘコんでるようだ。可哀想に…。ウチの会社も乗っ取られかけたし特アに関わるとろきゅなことないね。まーがんばれ。
すいません、ろきゅ→碌です。
かわいいからおk
ろきゅ萌え
(´・ω・`) < ろきゅなことないね
早速DSiがハックされたようだけどファーム書き換えかな?
DSLiteをタッチパッド化するプロトタイプを作って動画にしたのでよければどうぞ
ttp://www.nicovideo.jp/watch/sm5197287 Hello Worldが残ってるくらいプロトタイプなのでソースは公開できませんが、
ある程度できあがってきたらDelphiのソースごと公開したいと思ってます。
やってることが低レベル(=なんかわからんができてる)なので参考になるかはわかりませんが。
WiFiでタッチパッド実現しようとしたらこんな感じになる、という参考としてご利用下さい。
タッチパッドがヌルヌル動くことを確認してもらえれば十分です。
>>401 いいね。プロジェクタでプレゼンとかでも使えるかも。
質問させてください。開発環境はdevkitPro+NDSLite+R4です。 上画面と下画面、両方コンソールはできますか? 上Sub, 下Mainで構成しています。 両方ともconsoleInitDefaultで初期化(VRAMは適当に)するまではいいのですが、 どうやったら出力を上下切り替えればいいのでしょうか?
コンソールに日本語を出すために、libndsのconsole.cをベースに write_rを作ってdevoptab_listに設定するようにした。 同じような感じで、標準出力1と標準出力2を作ってAddDeviceすれば いけるんじゃないかと思う。
ソース読んでないけど、あのコンソールって複数箇所で使うようにはできて無いんじゃないの? printfのとこを真面目に作るんじゃなければ簡単だし自作しちゃうのが手っ取り早い気がする 自分の使いやすいようにできるしね
printfなんてsnprintfでいいじゃん。可変引数をラップすれば終わりだ。
教えて頂いたキーワードでググったところ、勝手に使っていいものかはわかりませんが、
両画面表示ができるコンソールが公開されているのを見つけました。
ttp://meraman.dip.jp/index.php?NDS_Clmn1 いろんなアプローチがあるんですね!目から鱗です。
今回は上のコンソールも使わず、ただ単に諦めることにしましたw
(使っていいものかわかりませんし、自力で作るのは無理そうなため)
ありがとうございました!
DSで再生してるムービーって形式は何なの
市販ソフトなら大体actimagine社のvxかmodsか
くまたんちはなんだったっけ
DSはムービーはdpgだと思ってた
cygwinでbuildscriptからdevkitProをビルドしたんですが いろいろ問題が起きてうまくいってません。 みなさんはcygwin上でできているんでしょうか? それともcygwin上ってのをあきらめたほうがよさげ? 今ぶつかってる問題は、ndstoolがdefault.arm7を /d:evkitPro/libndsへ探しに行っちゃうこと 環境変数はDEVKITPRO=/devkitProとしてあります
そのままmingwで使ってるからわかんね
以前挑戦しかけたけど、解らないことばっかりで調べることが多すぎて面倒になって速攻で挫折 cygwin周りってなんか罠が多そうだから深入りしたくなかったし・・・ DSで開発する時間を削ってでも勉強したいと思うなら諦めずにがんばればいいと思う
DSって秒間12万ポリゴンが最大みたいだけど 市販ゲーでそんなに使ってるやつってあんの?
>>416 30FPSで1フレ4000ポリゴン、60fpsで2000ポリゴンでしょ。妥当じゃね?
4000ポリゴン出せるけど30FPSになるんじゃなくて、 2000ポリゴンしか出せないけど60FPSで動くって感じ。
30fps1フレ4000ポリゴンにしても、1画面2000ポリゴンなのは変わらんしな トリッキーなハードだ
>>419 あれ?3Dできるのメイン画面だけじゃないの?
メインへの出力をDISPCAPCNTでサブに転送すれば両方で3D出来る
>>413-415 規制巻き込まれ遅レスすんません
たしかに本題じゃないことに時間割くのは違いますね・・・
一応makeは通るようになったんですが、
動作しないndsファイルができたのであきらめましたw
おとなしくmingwでいきます
しょゆこと
サガフロ1や2程度ならDSに移植出来そうだ
DSのプログラムを1から勉強しているのですが、3日前からフレームバッファで つまづいているので助言お願いします。 フレームバッファを使って、タッチペンでタッチした場所に色を表示する 単純なプログラムを作っているのですが、 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); を追加させると、画面はしろくなるのですが、 画面上でタッチした場所の色が変わりません。 かなり悩んでるんですが、周りに相談する人がいないので書き込みさせて いただきました。
*buf++でbufの指してるアドレス変わってない?
>>426 buf++が何をしているか考えてみろよ
そこはbuf[i]でいいよ
>>427 >>428 素早い返信ありがとうございます。
レス見て、あっと思いました。修正したところ無事
表示させることができました。ありがとうございました。
なんだこりゃ
まだ開発途中だと思うが、AceKardとCycloDSがDSiで動き出したらしい。 今後、Homebrewも動くようになって、メモリ16MとSDカードへのアクセスがフルで出来るようになったら、色々と出来ることが増えそうだ。 DSiはCPUも早くなってるとか聞いたけど、その恩恵も得られるのかな?
チップのコード変わってるんだけどね
NTR B のような改版チップではなく TWL という別チップなので何かは変わってるんだろうけどね
64とDSってポリゴン表示数どっちが多いわけ?
メモリ少ないしポリゴン数多くても意味無いと思う
N64も標準では4MBだし、VRAMの分DSの方が多いような気もする
圧縮技術とかは今の方が進んでるし 解像度も画面も小さいからテクスチャは誤魔化しがきくな てかカートリッジなんだからロードがネックだったPSやSSの移植もっとやればいいのに
DSでもPSPでも携帯電話でも、続編商法ならぬ移植商法はもういいよ 任天堂もよほど売れそうなタイトル以外は企画突き返してんじゃないかねぇ もっとDSだからこそのゲームを考えろって言って 実は丁度さ、DSの機能をよく使ったゲームって何なのか考えてたんだ 例えばタッチパネルって温度センサにもなってるんだよな 推理ADVで指乗っけて嘘発見器にならんのかとか WiiFitが売れて、じゃぁDSで体脂肪計れたら脳を鍛える以上にヒットすんじゃね? とか思ったら万歩計って、周辺機器同梱はずるいだろとか 頭いっぱい使ったから寝るぜ
なんかキャラクターメイキングが自由にできますとか言って すごく細かいパラメータをいじくらないといけないやつを 身長体重を測って適当に見繕ってくれたらいいなと思ったりした
DSって64よりポリゴン数多く描画できるのか てことはPS1より上なのか
Homebrew BOF
ゲーム機など開発環境が公開されていないハード、及びマイナーハード開発者の集いを企画しています。
日時:コミケ(12/28-30)前後 当日なら17-19時くらい + 宴会
場所:東京都区内
費用:会場実費(0-数百円?)
たぶん日本全体で100人もいないんじゃないかと思いますが、
コミケで上京する人もいるでしょうからその時期を予定しています。
http://www27.atwiki.jp/homebrew/ マルチすまん
先人の知恵を借りたい的な初心者も参加OKですか?
>445 む、bero氏が参加するのか。 行ってみたい気が。
Moonlightって女性なの?
>>445 楽しそうだなあ
でもWiiとかは更に少ないだろうな
>>445 これは、主要プログラマーたちが
任天堂から一斉摘発。。
>>451 プログラム作るなという制約は無いはずだが
>>445 行ってみたいが…
話についていけずにポツーンとしてそうだ…
DSあまりいないね…GBAの人だけかな Nintendo DSでプログラミングの人に何か講演してほしいな
DSってCPUはどの程度の速さなわけ
メイン ARM9 66MHz サブ ARM7 33MHz
>>455 速さは、CPUと呼ぶか否かに影響しない。
devkitProで開発してるんだけど……sleepって使えないの?
sleepでどうしたいの? 用途によって処理が違うから。
待ちたいだけです。 クレジット画面で1500ミリ秒くらい待ちたい、という用途です。
横槍だが、1/60秒ごとのVBlankを待って for(int i = 0; i < 1500/(1000/60); i++) { swiWaitForVBlank(); } これじゃだめ?「くらい」ならこれで十分っぽいけど
>>462 書き込んだ後にも考えてたら同じことを思いついたが、もっとエレガントな方法を待ってた。
……んだけど、別に問題ないからこれにするわ。ありがとう!
BGのマップチップ化とかBGのスクロール どうやってやればいいのかまったく分からない…
465 :
460 :2008/12/10(水) 00:26:10 ID:6Pi7shf8
>>463 エレガントてwww
static volatile bool sSleepingFlag;
void SleepPoolHandler(void)
{
sSleepingFlag = false;
}
...
sSleepingFlag = true;
irqSet(IRQ_TIMER0,SleepPoolHandler);
TIMER0_DATA = 0x10000 - ( ( 0x2000000 * 1.5 ) / 1024 );
TIMER0_CR = TIMER_DIV_1024 | TIMER_IRQ_REQ | TIMER_ENABLE;
while(sSleepingFlag == true)
{
swiWaitForIRQ();
}
...
動作確認してないがこんな風に強制的にCPUを寝かせるとかか?
ファミコン以降、日本のハードなのに外人の方が活発なのは何故なんだろう
メーカーの手が及びにくいからでしょ
それとメーカーの資料がことごとく英語だから。 他言語では英語力のある誰かが翻訳したものを公開しないと、 英語得意でないプログラミングはそこそこできるメインクリエーター層が作れない。 仕事でやってるのに家でもやりたい英語力のあるプログラマなどそういない。
470 :
459 :2008/12/10(水) 14:59:07 ID:W0j1zly8
技術資料に英語力というほどのものは必要ないんだがなぁ 日本語ベーシックで組んでるわけじゃねーんだし… さいあく動かしてみて結果みりゃいい。 どっちかというと英語アレルギーな人が多そうだ。
単に母数の差だろ
>>466 とりあえずそこを参考にがんばってみるd
474 :
459 :2008/12/11(木) 12:43:27 ID:RCslEvU8
最終的にこれでやることにしました。引数はms、実際は100ms単位。 void sleep(int ms){ int ms_100 = 6*(ms/100); for(int i=0; i<ms_100; i++){ swiWaitForVBlank(); } }
100ms=1デシ秒だから引数はds としなかったのは褒めてやる
デシ秒……初めて聞いたw
デシリットルなら聞いたことあるだろ
自分で書いた関数名にsleepとか使わんだろ
おまえの気にすることなの?
devkitpro 1.4.8きてたのでインスコしたら、手持ちのソースがコンパイル通らなくなったw ヘッダが変わってるのか?
>>480 ソレは試してないが、CVSでおとしたlibndsとかはかなり変わってたな…
そんときは、タッチペンとサウンド周りとvramのBGあたりの修正でとおった。
ヒマできたら1.4.8おとさねーとな…
>>480 一昨日それ体験した。
ConsoleInitDefault()がConsoleDemoInit()になってたり、コンソールウィンドウが取り入れられたり。
(デフォルトフォントも256文字→128文字になってる?)
ほかにもWiFiを使うのが相当容易になってて(知らなかっただけ?)、サンプルソースも今回はある。
あと、タッチパッドの位置取得方法も変わってる。
というわけで変更点多いのでサンプルやヘッダ見ることを強く勧める。
>>467 人口比で言えば健闘してるんじゃね?
欧州 5億
米国 3億
日本 1億
一応、
中国 13億
インド 11億
484 :
名前は開発中のものです。 :2008/12/17(水) 22:03:03 ID:vkLdz7pK
〉481 〉482 サンクス。 週末にでもサンプル読んでいじってみるわ
maxmod使ってみたヒト、どんな感じ?
ところでさ、
>>483 見て思ったんだけど
インド人ってゲーム作らないの?
全く聞かないんだけど。欧米の下請けしかできないの?
きっとゲームよりもっと凄いもんを作ってるに違いない
ゲームを出来る余裕のあるインド人が少ないから無理。
あの人たち凄く記憶力いいらしいから 常に右においときたい
全員が良い訳じゃないよ
やっぱりインド人は右だよなあ
インド人は右に ハンドルは左に
マジコンチェックってどういう仕組みなんですか? スレチかもしれませんがここが1番適切だと思いました。
ここはそう言うスレではない
DSの裏を見るとすぐに分かるらしい
丑年の来年は日本を凌駕するコンテンツがインドから発信される模様
>>495 なら、何処のスレが適切なのでしょうか?
ご教示いただければ幸いです。
499 :
名前は開発中のものです。 :2008/12/29(月) 10:30:45 ID:AKOsyeJz
冬休みすぎだろw
マジコンチェックって市販のヤツ?それならソフトによるだろうし解析せんとわからんだろ 興味ないけど 単純にマジコンかどうか確認したいって意味なら、 あんまりマジコンよりの部分興味ないからよく覚えてないけど 特定の領域の値読んだりしてマジコンの機種自動認識させたりしてるソースみたことあるなぁ fatとかマジコン直接叩いてるようなライブラリのソースあたってみりゃ良いんじゃね
でもマジコンやエミュ作ってる人間はメーカーに対策されるのを避けるために 実機かマジコンやエミュかどうかを判別する特殊な機構は実装しないと思うんだけどなー。 実際にソース見たことある人がいるならあるんだろうけど。
別に判別するための機構じゃないよ たとえばSDカード読み書きとかそういう機能をマジコンが持ってて、 ファームとかからそれを叩ける以上実機とは違う動作をするだろ? そういうのを集めりゃある程度機種判断できたりするんだよ、たぶん。 実際何見てたかは覚えて無いんだけどさ 仕様もなしに完璧に同じ動作するもの作るのって楽じゃないんだぜ だったらパッチ当てちまうほうが楽ってのが現状だろ、どうせイタチゴッコになんだし つか自作ソフト作って遊んでる身としてはこの辺はまるで興味なくてつまんね
>>503 それもか。悪い意味で今年はMoonlightの年だったな
MoonといえばMoonshell MoonshellのMIDIサウンドフォントの高音質版誰か譲ってくれぬか?
来たのではなく、moonさんが作った
うへー久しぶりにdevkitProアップデートしたらすげぇ色々変わってるのなw 初期化とかその辺が偉くすっきりしてるし、サンプルも結構ある。 音周り、ストリーミングとか手軽にできるっぽいのが楽しそう。 今まで作ってたのが軒並みコンパイル通らないのが残念だけどなw
ストリーミング手軽ってもmodって、すでに終了してねぇ? 個人的にはlibndsのIPC依存度が上がってて、今までみたいに自由いじるとARM7方面の挙動がおかしくなるのがなんとも。 devkitproってダウングレードできるん?
>>510 一旦アンインストールしてからインストールし直したほうが安心ですね。
でも、評価してみて使いやすそうだったら移行したいような…
個人的には更新止まってたソフトの開発を再開するいい機会かもと思ってます。
今月、入院する可能性が高いので暇ができそうだしね…
R4iも発売されましたな。19.99ドル。 秋葉原ではその4倍で売ってましたが。
板違い
516 :
sage :2009/01/07(水) 17:56:53 ID:veYDi1SQ
sageですけどもなにか
>>515 どうでもいいんだが、
> Moonlight (2009年4月 1日 00:00)
未来の記事かよwと思った。
お前らARMの逆アセンブラは何を使ってるの?
>>520 あと、devkitPro付属のobjdump(arm-eabi-objdump)もね。
使ったことないや… みんなどういうときに使ってるの?
arm-eabi-objdump.exeはマストバイ必須アイテムです。
>>522 なんだかわかんないけど動かなくなったとき!(笑
見当つけて脳内ステップ実行します。
524 :
518 :2009/01/08(木) 07:07:53 ID:eez9fI6/
みんなありがとう。 arm-eabi-objdumpは知らなかった。試しに使ってみようと思ってemuhasteでダンプしたファイルを arm-eabi-objdump -d dump.bin としてみたがファイルフォーマットが認識されませんって言われる・・・
>>519 あれテキストで保存することが出来ないから面倒じゃない?
>>522 デバッグとか解析とかにね。
あと、使う必要ないなら知らなくていいことだと思うよ。
因みに俺は、他人が作ったソフトの解析にはNDSDIS2、
自分が作ったソフトのコードを覗きたいときにはarm-eabi-objdumpを使っている。
>>524 arm-eabi- と頭についていることからもわかるように、eabiのオブジェクトじゃないと使えない。
arm-eabi-objdump は.oまたは.elf に対して使う。
1つの.oに対してピンポイントで逆アセンブルできるので、自作ソフトに対しては便利。
DSiに関する情報は何かありませんかね
結構デバッグに使うんだなぁ ミニゲームとか小物しか作らんから出番なかったのかな… 逆アセ使ってる人の具体的な使用例とか聞いてみたいです
httpでパソコンからNDSファイル落として起動してくれるプログラムはどこ…? この前発見したがDSFTPでいいやとか思ってお気に入りもせずに消してしまったorz やっぱり( ゚д゚)ホスィ…
今のところsHTTPdというフリーソフトと組み合わせると非常にいい感じです。
簡単なプログラムならWireless Multibootでやったりするな 無線LANカードいるけど
PCのデーモン⇔DSのhomebrewでTCP通信してて、前は30パケット/秒で受信してたのに、 今日久々にやってみたら1パケット/秒とか1パケットに3秒とか掛かるようになってしまった……。 (まとめられて送られるようになってしまった。送信側は前から60送信/秒) リアルタイム性が求められるアプリ作ってるんで困ってるんだが……。 パソコンの調子が悪かったからリカバリしてついでにセキュリティーソフト周りを 変えたんだが(FWから総合ソフトに。ZoneAlerm→kingsoft)、それが原因だろうか? どう考えてもQoSやMTUみたいな値が変わってると思うんだが、 これはdswifiライブラリの設定変更でなんとかなる? それともやっぱりパソコンの設定を弄る必要がある?
補足: ・DS→PCへのTCP送信のみ ・垂直同期割り込みでタッチペンの位置を取得しJSONで送信 ・垂直同期割り込み(60回/s)ごとに英字8文字程度送信
そうゆうのはVMでテスト環境作っときなよ。
>>526 なるほど。
どうもありがとうございました。
旧バージョンのdevkitProでプログラム作ってて、気まぐれで最新版にアップデートしたら、 見事にビルドできなくなって吹いた。 最新版にアップデートした後もBG0_CRとかを直接叩くには、 自分で定義してやらないとダメなんかなぁ。
>>538 REG_BG0CNTとかって定義かえられてるだけだよ。
#include <nds/registers_lt.h>
で通ると思うけど、使わないでって書いてある。
includeみながら置き換えてけばいいんじゃないかな。
>>539 なるほど。
#include <nds/registers_lt.h>は初めに試したけど、ダメだった。
まあ、素直に1から勉強するつもりで色々検証してみる。
助言ありがとう。
定義名変わってるだけだから、それに変更すればいいと思うよ。 ワシは面倒くさいので devkitarm r21 libnds-20071023.tar.bz2 libfat-nds-20070127.tar.bz2 をダウンロードしてきて環境作っちゃったけど。
失礼、なぜか539-540に気付かなくて書き込みしてしまいました。
>>542 いやいや、お気遣いありがとう。
BGの定義方法が
int bg3 = bgInit(3, BgType_Bmp8, BgSize_B8_256x256,0,0);
みたいに変わったのは良いね。
コーディングによってはかなり修正が必要だったけど、
新たに組んだり、他の人に説明するときはわかりやすくなったかも。
電源LEDを状態を変更するプログラム書いてたんだけど、DSLiteでは電源LEDが点滅するのに、同じのをDSiで動かしたら電源LED点滅しなかった。 電源LEDの制御がDSLiteとDSiで違うのかな?
DSi関連の話はI/O含めほとんど出ていないので不明
546 :
544 :2009/01/14(水) 19:49:15 ID:EH/fta3T
バックライト消すのはうまくいってたんで、電源LEDの制御(シーケンス?)がうまくいってないだけなのかもしれない。 もちょっと調べてみます。
moonさんは中国を信用してるから騙される 中国と仕事するんなら、まず最初に対価的なものを受け取ってから動き始めなきゃダメだよ 分割払いであれば支払いが滞ったらこっちも即停止。払わなきゃもう作らないと強く言うべき あいつらに優しさなんて必要ない
誰か開発引き継いでくれないかなぁ
devkitPro1.4.9でコンパイルしたプログラムで、タッチパッド入力が 実機では反応するんだが、エミュだと反応しないんだが 十字キーやABXYLRは反応してる 試したエミュは、iDeaS 1.0.2.8とDeSmuME 0.3.6 付属のタッチ入力のサンプルプログラムも入力反応しないし、どうしたもんか テストするたびに転送するのはめんどい
551 :
549 :2009/01/20(火) 13:00:06 ID:zIYougVO
>>550 thanks。no$gbaで動作確認できました
転送の手間が省けました
552 :
DS :2009/01/25(日) 22:09:17 ID:TeO2jy9P
すみませんがDSTTのセーブデータをacekard2iにセーブデータ移動はできますか? お金がかかる方法でもいいので教えてください。 どうしてもやりたいんです
マジレスすると この動画の絵を描くのと同じくらいの努力が必要
>>553 絵は描けるんだな?
だったらここは絵描きとプログラマに別れて分業しようぜ。
素材(絵)公開してくれたらコーディングする人がでるかもしれない。
かくいう俺もコーディングするかもしれない一人。
(まあリズム天国やったことないんだけどな……。本気で作ろうとしたら参考に買う)
絵描けないDTM使えない人間にとっては、自由に使っていい素材を提供してくれるのはすごく助かる。
>>553 もしその動画作成者に使用許可をもらえたならば、一週間あればそれらをゲーム化できると思う
リズム天国のようなリズムゲーは、プログラム自体は比較的簡単 素材がほとんど全てだよ
プログラミングが全くできないレベルなら、DSでのプログラミングはお勧めしない
CやC++について学んで、簡単なゲームプログラミングができるようになった後、
まずはGBAで作ってみると良いよ 情報がたくさんあるし、DSよりは比較的簡単に作れる
俺、そういうリズムゲー作ってみたいと思ったことはあるけど、絵が全く描けないのよ
だからもしゲームにしたくなるような素材を提供してくれるなら、共同制作してみたい
絵が描ける人、作曲できる人、うらやましい〜
DSのゲームってC言語で作られてんの?
>>558 YES,高須クリニック!
正しくは「DSのほとんどのゲームはC言語かC++言語でできている。」
(まあARM7,9用のコンパイラさえあれば何言語でもできるよ。)
SFCの頃はアセンブラだった 光栄が他のサード向けにCコンパイラを販売してたり
>>558 機械語でもアセンブラでも作りたければ作れるよ。
今はLuaでも出来るみたいだけど。
>>557 動画作成者にやっとたどり着きました…。
今許可申請&できればゲーム制作の協力をお願いしています。
自分絵はかけない・プログラミングもできない全くのダメ人間ですので・・・
>>562 GJ!(・ω・)b
ニコ動ってうp主に連絡とれないのが不便だよね。ああ、他も同じか……
コメント読んでもらえるとは限らないし。
>>562 まずDXライブラリとかを使うゲームプログラミングの基礎本を買って覚えると良いと思う
プログラムの文法や仕様は違えど、発想や仕組みはどこにでも流用できるから
じゃあ諦めて自作するしかないな。 自作がんばれ。
test
アク禁ようやく解除された。。。
>>565 557だけど、それは残念だな〜
俺もあの動画を観て、すごくゲームにしてみたかったから
ともあれ、交渉お疲れさまでした
内心、それじゃあ仕方ないから、あくまでも自分一人だけが楽しむリズムゲーを作るために、
その動画を素材として使わせてもらおうかなと思っていたりする
てか、実は若干フライングしていて、すでにプログラミングしていたりする
仕方ないね。でも、まあ絵もその気になればそれっぽく描けるものさ
AAでいいじゃない
>>568 同様に動画を素材にして自分もがんばってみようと思います。
プログラミングに詳しい知りあいから聞いたのですが、GBAやGBはプログラミング
初心者にはうってつけだそうで。
できたらまた報告したいと思います。
初心者にうってつけとはまた酷い嘘を刷り込まれたものだな
アセンブラで作られたDSゲームってあるんだろうか。
>>571 リズム天国はGBA版のをちょっとだけやったことがある程度なんだけど、
とりあえず動画の中でタッチするところなのかなと思った場所に判定実装中
確かリズムが外れて失敗したら、例えば蹴った球があまり飛ばなかったりすると記憶してるけど、
動画をそのまま使うので、そこまではさすがに無理だね
ちなみに動画が最後までいくと、点数が表示されるようにしようと思ってる
>>572 さんが言ってるように、GBAは全然初心者向けじゃないですよ
その前に、DX使って窓で動くプログラムをいくつか組んでみた方が良いと思うよ
まぁ俺もこのスレの中では底辺プログラマーだから、偉そうなこと言えないんだけど
>>572 >>574 ええっ!?Σ(゜Д゜;)まじですか・・・。
今度問い詰めておかねば・・・。
動画で出てない分は少しいじるしかないですね。
それか動画作成者以外に書いてくれる人がいればいいんですが。
>>575 ちゃんとプログラミング覚えたい初心者向けだと思うよ。
環境ととのえるまでが初心者向けじゃないし、とりあえず動く物が
作りたい初心者向けでもないが。
初心者はWindowsでCのプログラミングでもしたらいい
まずはCからだな。
私はHSPとFlashをちょっとかじっただけの初心者で、DSで始めて日も浅いですが思うところは 細かい解説がGoogle先生で見つからない分、他より面倒臭いです・・ 今、consoleIniti と併せて bgInit の使い方をサンプルから推測してます。 グラフィックモードの設定とかメモリ領域とかコントロールレジスタ?がよくわからんです。 サンプルを読んで機能を推し量る事は、諸先輩方にとってはアタリマエなのかもしれませんが、ハードルが高いと感じます
>>579 俺も最初はDSゲーム作るのはチンプンカンプンだったけど、
海外のチュートリアルを読んでいるうちに、そこそこ機能は理解できたよ
>>579 組み込みのプログラムみたいなもんだからハードの知識も必要
メモリマップやらI/Oやらでとても初心者向きとはいえない
まぁでもこんなもんだと思いながら勉強してみればなんとでもなる気もするよ 人のソース読んだり改造したりしながら覚えることになるから、 Cの文法ぐらいは先にざっと把握してないときついだろうけど
そうね。 習うより慣れろで、とりあえず弄ってみるのをお勧めする。
人のソースを読んで理解出来ることが最低条件だがな
何日もかけて調べながらじっくり理解すればいいさ
俺はWiiでグラフィック周りを遊んでるんだがTEVってユニットで 法線マップをやろうとして特許関係の書類をあさりまくった 解体新書が訳されたときオランダ語のある単語が「眉毛」を意味 だとわかるのに数日かかったって話があるがまさにそんな感じ 非公式開発ってのは基本的に地味にコツコツやるものよ
こうして数日かかったのか
>>575 WindowsプログラミングだとOSやライブラリ等の必要な前提が多すぎたり
無制限にリソースを使えることで何でもできる反面どこまでできるかわからんから
GBAぐらいのプログラミングのほうが入門向きというようなことはどこかで読んだけど…
昔のマイコン世代の感想の気がする。
Hello, Worldからハードの仕様を理解して必要に応じて叩けるくらいまで一通り勉強しようと思ったら、Windowsから入ると巨大すぎるかもな そういう意味ではGBAくらいが良いのではないかというのは分からないでもない でもなあ…趣味で適当にソフト作る上でそこまで覚えなきゃダメかっていうとそうでもない気がするなあ…
絵が描きたかったらVRAMに直接叩き込めばOKって言うのはとても解りやすいと思うよ 低レベル過ぎてめんどうだけどね ま、趣味ならやってみて詰まれば別のやり方すりゃいいだけっしょ 最初はどうやっても覚えることはたくさんあるんだし 最終的にうごけばいいんだ、うごけば
初心者がアラインとかで詰まると大変そうだ
低能なマイクロソフトのAPIに悩まされる心配がないところは 初心者向けで良いかもしれない。
DxLibとかHSPあたりが無難では・・・ 自分は基本設計をDxLibで書いてDSに移植したが それでもDSの動作にずいぶん悩まされたぞ。
>それでもDSの動作にずいぶん悩まされたぞ。 どういうところで悩んだか書いた方が参考になるんじゃね。
596 :
594 :2009/02/03(火) 21:28:08 ID:6dVd6NJi
以前スプライトダブラをここで教えてもらった者です。 水平割り込み中に次の処理走ってて描画前のスプライト書き換えてたのが一番苦戦したが それ以前にあほみたいに実行しながらデバッグ出来るVS環境とかはどう考えても楽。 職業マならデバッグは脳内で済ませるのが理想だが ゼロからで趣味なら実行しながらデバッグ出来る環境が良いと思う。
arm-eabi-gdbとgdb対応エミュの組み合わせで十分じゃね?
スプライトダブラーつくるような人がエミュ使うかな
どなたかyabo_ndskybookをうpしてくださいませんか 本家からはなぜかおとせないんです
601 :
名前は開発中のものです。 :2009/02/05(木) 23:23:00 ID:VNiyRODT
すみません、質問です。 一部をUVマップかけた3Dデータをimd、icaにはできるんですが、 その後コンバートすると動かなくなっちゃうんです。 テクスチャ全部剥がす→動く テクスチャべた貼り→動く と言う結果から、原因はUVマッピングか、もしくは 一つのTGAファイル(4x4)から手足など 5箇所にテクスチャ貼り付けてる事かなあ、と思うんですけど、 イマイチ上手くいきません。 皆さんのオススメのテクスチャの張り方って、教えていただけませんか。
>>601 imdとかicaがよーわからんけど、テクスチャなら
TXTURE_PACK(floattot16(UV.u*サイズ,UV.v*サイズ))
を頂点情報とかと一緒にcalllistにつっこんでglCallListで表示できてるよ。
NDSさわりはじめて数ヶ月なんでこれがオススメかどーかわからん。
>>605 実機じゃないとファイル関係はうまく作動しないことが多い。
なるほど、ありがとうございます Devkitをアップデートする前は動いていたので、何かあるのかと思ったのですが R4からは動いたのでとりあえずスルーする事にします。
>>601 使っている3Dエンジンとかの前提条件が抜けてるw
もしかして公式?
おいらは最近NitroEngineの評価を始めたが、
2画面3Dとかもサポートしててなかなかいい具合だ
ただしモデル変換ツールがMD2限定というのが難点
MQOや3DSとかからの変換は自力か。。。orz
結局のところ4M以上のROMを作るのってできないんでしょうか…
無理らしい…
自分で作ったROMのサイズは7MBあった。 まぁ一度に扱えるサイズは4MB以内だけれども。
4MByte以上のROMは存在するよ。 homebrewで4MByteをオーバーしているのは少ないけど。 ただ、メモリの都合で3.8MByteくらいまでしかメモリにロードできないだけだと思う。 GBAスロットを使えばもっと増えると思うけど、そうする必要も特に感じない。 そのメモリをうまく利用すれば、何とかなると思うんだが。 どうしても足りないときは色々不都合があるけど外部に一時ファイルを用意して使ってもいいし。
>>611 方法キボン!
今はnitroFS使って見かけ上だけ4M超やってるけど出来れば素の巨大ROM作りたい
>613 いや、ROMのサイズ質問だったから、そう答えただけで〜 実際やってることは、たぶん君と同じような感じ。 (nitroFSライブラリは使ったこと無いので憶測) 自分はndstoolでndsにデータファイル追加して、GBAカセット領域にマッピングされる環境ならソコからリード。 GBAカセット領域にマッピングされない環境なら、DLDIで自分自身のndsにファイルアクセスしてデータファイル取り出してる。 だから、一度に扱えるサイズは4MB以内だけれども。
>>DLDIで自分自身のndsにファイルアクセスしてデータファイル取り出してる 無茶言うな。起動する度に全NDSファイルのMD5検索でもする気か? 32bit程度のID埋め込みさえ、100個もNDSファイルがあれば無理だろうな。
nitroで自分自身のndsにアクセスやってるよ。 某テトリスがROM名変更すると動かなくなってたのはそれのせい。
やっぱりできないんですね… 一応nitroFSとかは見てたんですが、結局DLDIで読み込んでるのがすっきりしなくて。 これができない理由、自分で調べても良く理解できなかったんですが、 DSのプロテクトの関係でデモを動作させるモードで動いてるとかそんな理解でいいんでしょうか。
仕方ないね
615ー616の書き込み見たら、NASAの宇宙で使えるボールペン開発と一方ロシアは鉛筆を・・・の話を思い出したw
>>617 出来ない理由はおそらくlibNDS開発チームがそこを実装するより
FATの方が色々出来て便利じゃね?と考えたからだと推測
デモ云々みたいな制限は無いのでlibNDS自作するくらいの気合があれば技術的には可能のはず
そりゃどうも。
>>620 あ、可能なんですか…。
まあ市販のROMが動いてるみたいですし、そりゃそうか。
また自分のレベルがあがったら再挑戦しようと思います。
リンカとかその辺も勉強しなきゃいけなさそうで難しいです。
でも現状データの置き場に困りますよね。
ルートにおいてくれって書いとけばいいんでしょうけど。
623 :
608 :2009/02/11(水) 05:30:50 ID:QkgVk7QO
エミュでしか確認できてないけどとりあえずMQOから変換が
できたっぽいので、NitroEngine評価中の同志へ。
ttp://www1.axfc.net/uploader/File/so/18457 生成されているのはDISPLAYLISTなので、NitroEngine以外
でも使えるかも?
時間と知識不足でテクスチャとシェーディングは未対応。
Normalの扱いもちょっと疑問な点があるので、誰かコード
レビューしてくれるとありがたい。
じゃ、おやすみ〜zzz
624 :
名前は開発中のものです。 :2009/02/11(水) 18:49:37 ID:xUUFvkK/
NDSでいうスプライトとはDirectXのようなバッファの好きな所に好きなだけ画像を描画できる機能では無く、 毎フレーム単一の画像だけ格納して拡大や縮小を加えて表示するレイヤーのようなものですか?
625 :
名前は開発中のものです。 :2009/02/11(水) 19:32:23 ID:xUUFvkK/
わかりにくくて済みません。 つまりNDSにもイメージを描画する関数、 draw(Image,x,y,src_x,src_y,width,height,rotation,zoom_x,zoom_y) のようなものがあるのかと思ったのですが、 どうもチュートリアル等を見ていると、 バンクと言われるVRAMに画像データを書き込んだ後、 拡大や回転を司るレジスタに値を設定してるだけです。 レジスタを設定したあと、肝心のバッファにデータを書き込んでいる節がありません。 ということは、バンクの画像は1フレームごとに呼び出される何らかの関数の中で画面に反映され、 ハードウェアの拡大回転機能を利用する場合は、 1フレームで描画できるスプライトの数はバンク数に制限されるということでしょうか。
626 :
608 :2009/02/11(水) 19:41:29 ID:hRzOTkDt
>>624-625 ・レイヤーは複数持てる
・レイヤーのサイズは決められたサイズから選ぶしかない
・画像の格納場所とレイヤーとは別途関連付けが必要
という前提のもと、後者の理解でOK
直接VRAM描画もできるけど、アクションゲームとかを
作るのならスプライトを活用するべき。
あとチュートリアルより、nds-exampleのコードを読む方が
理解は早いと思う。
>>626 ありがとうございます。
無数にスプライトを描画したいときは自前でVRAMに描けばいいのですね。
nds-exampleも読んでみます。
sprite.h に便利な構造体が用意されてて変更後に updateOAM();で実際の画面に反映されますね 私もスプライトダブラーなるものを最近知って驚嘆した初心者ですが VRAMに直接書くなら、もうスプライトじゃなくないですか??
OAMってObjectAttributeMemoryか 任天ハードはスプライトをオブジェクトって言うんだよな 懐かしい
というかさ、BG使うとしても日本語フォント全部VRAMに突っ込むわけにはいかないから 結局直接書き込まなきゃいけない罠
>>624 同じところで引っかかっとるな。
128個以上スプライトが出る想定なら
スプライトダブラでぐぐると良いらしい。
GBAで弾幕出してる先駆者がいます。
直接VRAMに描画すると遅くてお話にならない。
弾幕といえば東方
久々にライブラリ周りを更新したら エラーやらウォーニング出まくりで絶賛修正中なのですが、 ATTR1_FLIP_X や ATTR1_FLIP_Y はどこで設定すればいいのでしょうか? ヘッダを見る限り、oamSet() には それらしいパラメータを渡せる箇所あるようには思えませんでした
635 :
634 :2009/02/12(木) 01:49:57 ID:EH35Vigu
色々考えて個人的に答えらしきものを出したのですが、 これで本当にいいのか非常に判断に困っています。 pSpriteEntry *pOam = &oamMain.oamMemory; pOam[ 0 ]->attribute[ 1 ] |= ATTR1_FLIP_X; これで一応反転は確認できましたが、 他に方法がありましたらそのご教授のほどお願いいたします。
(´・ω・) 知らんがな
637 :
608 :2009/02/13(金) 01:22:02 ID:Ienu2n/m
>>623 MQO_2_BIN.cppの245行目と345行目、_v[a]に代入している
point[a]をpoint[2-a]に要修正orz
638 :
608 :2009/02/14(土) 00:11:32 ID:8cZ2bk/l
ポリゴンは全くわからんが乙
640 :
名前は開発中のものです。 :2009/02/16(月) 16:10:36 ID:D6f4gD/M
あらかじめ復号して良いのであれば余裕 そのままだと無理
なんで普通に描画する関数無いの? DirectXみたいに2D描画をハードウェアで高速化できないの?
ハードウェアで高速に描画するためのスプライトやBGなんじゃないのか あとメモリ節約
マジで?
携帯機でリソース足りないから。 つうか今のDirectGraphicsって2D描画も全部3Dポリゴンで 仮想的に対応してるんじゃなかったっけ?
そうだよ DSは2D用の高速エンジン積めばいいのに
( ゚д゚)ポカーン
そもそもハードの設計思想がPCやPSPとは違うんで、 そういう系統のプログラミングをしたければ、 そっちに走るしかない。
つかむしろこの制限が楽しくてやってる人ばっかりだと思ってたぜ スプライトあるハード弄ったのはDSが初めてです
そもそもDirectXが出てくる時点で(ry
2Dにも使える高速3Dエンジンを搭載しているんだがな line,tri,quad,texture他に何が必要なんだ?
なんで高速3Dエンジンがあるのに旧世紀の遺物のスプライトがあるの?
>>653 GBAとの互換性のため
3Dがさっぱりな俺のため
結局DSiでGBA切り離したし 任天堂ってやることがいちいちうざいな
DSiメニューにハッキングできたらな 内蔵フラッシュからhomebrewを起動したい
>>653 あと3Dって基本片方の画面だけだからな
そのおかげでもう片方の何に使うかは皆苦労するみたいだけれども
へえ そいつは凄いや
>>655 好きなの買ってこい
GBA
GBASP
GBAmicro
DS
DSLite
soundPlaySample(const void* data, SoundFormat format, u32 dataSize, u16 freq, u8 volume, u8 pan, bool loop, u16 loopPoint); こいつでフリーズする・・・ これを使って音楽鳴らすだけのサンプル作ったら動作したのだが 実際の処理に組み込んだ途端この関数を呼ぶタイミングで固まる。 arm9から無理にアクセスしてるのが原因かと推測するが 誰か同じような目にあってない?&どうやって解決した?
そっちじゃねーよw あんたは根本的なとこで間違えている
soundPlaySampleでフリーズしたのはエミュにideas使った時だけだなぁ テストで簡単なゲーム作ったけど問題なく動作したよ
根本的なとことはどこでしょう? この行だけコメントアウトすれば普通に動くんですが(当然音は出ないが・・・)
調べないズルをせずに、自分のプログラムの方を一行ずつコメントアウトして、何が悪いのか怪しいのか調べなよ。
上のPSPでビーマニっての見て思ったんだが、 DSってタッチパネルで複数の箇所を同時押しとか出来るのか? 反応速度もそんなに良くないみたいだし。
>>665 無理不可能
ここ と ここ をタッチすると
↓ ↓
○ ◎ ○
↑
ここを押したことになる
667 :
660 :2009/02/18(水) 20:38:59 ID:FEj3mrZu
irqInitするとFifoの割り込みがつぶされるのが原因でした。 arm7の機能をarm9から簡単アクセスしたい場合はirqinit使っちゃだめなんですね。
668 :
608 :2009/02/20(金) 19:39:10 ID:2DMYgGyo
>>638 万が一、使用している人がいれば使用中止してください。
・左右非対称のモデルの展開がおかしい
・テクスチャの貼り付けがおかしい
の2件の問題があります。
修正の目処はついているので、近日中に修正&公開予定。
>>639 d
やってみたら意外と簡単ですYO!
670 :
608 :2009/02/21(土) 21:05:24 ID:0EjIkX44
修正版。 axfcが使えなかったので、 かりんと大57364 パスはメ欄。 添付のndsはAボタンでモデルが切り替わるので 試してみて欲しい。 mikoto対応のmqoでもうまくモデルが表示される よう変更してみた。 あとαは今ひとつ扱いに困ったので停止させてある。 なにかアドバイスがあればお願いしたい。
ベラボーマンはダウンロードできないのか・・・
マリオ64移植できてるってことはDSの方が性能上なのか
性能上のところもあれば下のところもある (解像度やテクスチャの問題もあるが) 将来的にSNESとN64を完全に再現出来る携帯機が欲しいところ
675 :
名前は開発中のものです。 :2009/02/22(日) 15:07:28 ID:PC4UB1Nx
開発環境の構築について教えて頂きたい事があるのですが、
参考サイト等に記載のやり方でやってもまったく上手くいきません。
例えば
>>78 氏のサイトにあるような1.4.4をインストールしても
レミングス等はコンパイル不可でした。("SOUND_8BIT"が定義されていない、とか関数の引数がおかしい、とか)
最新の1.4.9も同様で、Palibフォルダ内のexamplesフォルダのテキスト"Hello World"等もコンパイル出来ないです。
(構造体メンバの"aux"が無いとか)
どうやったらちゃんと開発環境出来ますか?
(ちなみに当方WinVISTAです)
677 :
675 :2009/02/22(日) 22:34:35 ID: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の定義がおかしいだのでエラーです。
組み合わせるバージョンの指定は厳しいんですね・・・。
・・・もしかしてdevkitPRO 1.4.9を入れた上からdevkitARM r21を上書きした?
679 :
675 :2009/02/23(月) 00:29:52 ID:4p6+MeQR
>>678 いえ、devkitPRO 1.4.9入れてからです。
devkitARMをリネームして退避 → r21を導入。
という流れです。
libndsのバージョン合わせてないオチじゃないよな?
>>680 libndsのバージョン合わせまで必要なんですか?
(そこまで言及してる解説サイト様も無かったので・・・・)
結局のところ、コンパイルするやつに合わせてバージョン変えるしかない、ですか・・?
かなり、不便なんですね・・・。
682 :
675 :2009/02/24(火) 00:44:19 ID:hxRbqK/7
>>680 書き忘れましたが、ご指摘されたlibndsについて libnds-20071023 等も試してみましたが、
fat.hが無い等のI/Fエラーで結局コンパイル出来ません。
もう何が正しいやらサッパーリです(TヘT)
libfatインスコしてないやんけ。
環境構築すら人に頼らないとできない時点で、 この先の困難さを思い知ったほうがいいなw
ぽまいら冷たいお(´;ω;`)
>>683 libndsフォルダをリネーム退避 → ゲットしたlibndsを導入で、消えてたみたいです。
結局のところ、どのソフトのどのバージョンを入れるのが正解なんですか?
どのバージョン使ってるか作者も把握してないのはよくあること。
むしろどのライブラリのどのバージョンの組み合わせでどのバージョンのHomebrewをコンパイルできたか情報もらえたら助かる。
なんかいろいろ酷くて疲れたわ。
ぽまいら死ねぇぇ(´;ω;`)
ID:l7+IouWcが一番何もしてない件
単発が言う件
6cmの奴がうるさいぜ
DSLua(v0.7)のソケット関数が使えないんだが、未実装なの? Wifiの初期化は出来るみたいなんだが
過疎り杉ワロタw
元からこんなんじゃ
DSってサウンドは普通にいいな DQ4やDQ5も結構音質よくてクオリティよかったし
スピーカーはだめ イヤホンだとそれが判る
700 :
名前は開発中のものです。 :2009/02/26(木) 23:06:26 ID:LTHzrsdh
soundPlaySample(const void* data, SoundFormat format, u32 dataSize, u16 freq, u8 volume, u8 pan, bool loop, u16 loopPoint); この関数を使用して、1分程度のPCMを再生しようとするのですが、 20秒程度で停止してしまいます 容量制限などあるのでしょうか?ご存知の方、お教えいただけないでしょうか ポインタもサイズも渡してるんでメモリなめてるだけだと思ってるんですが…
メモリ足りてる?
(;^ω^)
703 :
名前は開発中のものです。 :2009/02/27(金) 02:16:05 ID:w0XRUM04
近ごろはライブラリ部分を疑って、自分のプログラム部分は疑わないのがトレンディ? そういう質問が続くよね。
7度デバッグしてから人を疑えと祝一平が言ってた
皆ってどんな思いでプログラムしてる? 1.漠然と解析して動かしたい(ex.動かしたら満足) 2.DSという媒体をいかして遊びたい (ex.タッチペン等を使ったアイディアを生かし任天堂に企画持込) 3.オリジナルでゲーム作りたい(ex最終目標は販売) 4.同人でゲーム作りたい(exコミケで販売)
>>705 1と2。
だけど、任天堂に企画を持ち込む気はない。
Nスクの不完全再現 実現出来れば多くのアレがアレできるので個人的に嬉しい しかし道は長い
仮に販売できる作品が出来たとしても、客はマジコンを持ってることが前提になる?
そのレベルのスキルの持ち主なら、普通にwinで作って堂々と販売すればいいじゃない
何かとマジコン問題視されてるし、 非公式開発用の代用品があればなぁ。
ゲーム作ったものの配布するかどうかで結構迷ったな まだ弄れるところがあるってことで結局見送ったけど 実機での動かし方とか質問されても答えにくい…
公開してる人は使い方の分かる人だけとか書いてるし 特に動かし方は何も書かなくておk 何か質問されたらグーグルのアドレスを貼る
いずれにしても金儲けは出来そうにないよな
その昔ジーコサッカーというのがあってだな・・・
>>670 くっ、消えてたか。
どのくらいのポリゴンまで使えるのかな・・・(メタセコのデータサイズ的に)
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ぐらいじゃないかな?
>>716 なるほど・・・。ありがたう。
その辺に落ちている初音ミクとかDSに、とかは全然無理って事だな。
60fpsで動かそうとすればな… 今市場に出ているDSの3Dゲーはほとんど30fpsで 3Dと3Dキャプチャとの合成をよく使う
フォントを入れてみて、SJISの漢字を表示できるようにしてみたのですが、 漢字のファイル名も使えるファイラーを作ろうと思ったところ、 diropen、dirnextで取ってくる2バイトコードば不規則に壊れているように思えるのです。 (最初の18バイトは3バイトごとに0xC2が入り込み、その後 0x20 なども入り込む) この理由って何でしょうか? なにか対処法とか知ってる方いらっしゃいますか?
>>719 お前がSJISと思い込んでるだけでファイル名は実はUTF-8で書かれていたりする
721 :
719 :2009/03/06(金) 12:22:56 ID:TOXTdHLF
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に変換してるんじゃないの
バージョンで違うかもと思って昔のソース見たらやっぱり違ってたわ 昔のは変換処理が無かった
724 :
719 :2009/03/06(金) 13:11:00 ID:TOXTdHLF
>>722-723 ありがとうございます。
なるほどlibfatのバージョン上げるとUTF-8に変換してくれると・・・
でも既にSJISの表示ができてるので、まぁ今のままでいいかなとw
(0xC2の除去は簡単にできましたので)
8.3形式で収まるファイル名はそのまま書き込まれ それに収まらないファイル名はロングファイルネームとしてUnicodeで格納される FAT関係のフォーマット解説あさった方がいい
>>726 ほとんどプリレンダの動画だな
ゲーム画面は1分もないじゃないか
まあDSにしては頑張ってるんだろうけど
728 :
724 :2009/03/08(日) 17:48:39 ID:H3Gxp9K9
>>725 そのとおりでした。
エミュ(ideas)で開発していたら、単にSJISにC2のゴミが入るだけでしたが、
実機ではUnicodeに変換されているようです。
素直に変換プログラムを組んでみます・・・・
729 :
724 :2009/03/08(日) 17:50:21 ID:H3Gxp9K9
ちなみに、実行ターゲットって取得できないものでしょうか・・・・ エミュではC2除去したSJIS表示、 実機ではUnicode表示と切り替えたいとも思うのですけど、
それこそC2入ってたらエミュとかでいいんでないの
731 :
724 :2009/03/08(日) 21:14:06 ID: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の方がビット幅が広いので、
テーブルが虫食い状態になるのをどうしよう
ハッシュテーブルにしてもどうしたら均一になる取り方が思いつかない・・・・・
他のツール作者さんたちはどうやってるんだろう
733 :
724 :2009/03/09(月) 04:10:07 ID:omb2zf0w
>>732 ヒントになりました。ありがとうございます。
あくまで推測の範囲ですが、
データを見る限り、2バイト区切りになっているのでUnicodeビット⇒SJISのデータを格納しているように見える。
かなりの多くのかたまった0x00があるので、圧縮やハッシュ化はしていない模様。
2バイト区切りだとすると、65536文字ほどの空間を保持していることになるが、
10万文字を超えるといわれるUnicodeの空間すべてをテーブルを持っているわけでなく、
日本語や中国語などの漢字(SJISに載っている)部分だけのテーブルと思われる。
2バイト区切りではありそうだが、SJISの生データではない。
Unicodeの漢字部分がこの程度(128kbytesに収まる)なら、
まず自分でやってみて確認してみたいと思います。
ありがとうございました。
734 :
724 :2009/03/09(月) 04:11:44 ID: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は読み込むデータ分の空き容量へのポインタ)
735 :
732 :2009/03/09(月) 21:30:46 ID:SXSH5WYs
>734
それはlibfatを使ったときの話ですよね。
ndsファイルとGOTHIC24.DATを別々に用意して読み込むっていう。
そうではなくて、devkitproのexample/embedded_gbfsみたいに、
ndsファイル内に埋め込めるファイルシステムを商用のndsファイルは
使ってると理解してるんですが、その形式・方式ってどうなってんのかな、
というのを知りたいんです。1ファイルに全部入れたいな、と。
embedded_gbfsでは、ndsヘッダのFATデータにもファイルテーブルにも
何も書かれないので目的のものとはちょっと違うと思ってます。
最終的には、過去ログの
>>609-614 にあるような、自身のndsファイルを
開くのではなくて、nds内の必要なデータだけメモリにロードするような
方式が知りたいんです。
個人で楽しむ範囲で市販のROMを解析してみれば。
737 :
734 :2009/03/09(月) 23:06:08 ID:omb2zf0w
>>735 そうでしたか。なんか当たり前の事を講釈してしまってすいませんm(_ _)m
ふと思いついたのが、ndsプログラムから、自分のndsをfopenして、
fseekして目的の位置だけをfreadとかできないかなぁと。
ファイルポインタは4GB制限はないだろうと。
(もしかしたら自分は開けないのかもしれないけど)
4GBオーバーしたndsを通常起動しても、
おそらく4GBまでロードして、エントリポイントからプログラムが動き始める
4GB周辺のデータはスタックに壊されながら使われる。
このときデータが壊されることよりもスタック周辺データでプログラムが不安定な動きをしないように
予めスタック周辺のデータはNULL(0)を入れておく(念のため)
あとはリンカにマップファイルを読み込ませて、ヒープ領域を明示的に指定しておく
(もしかしたらスタック領域も指定しないといけないかもしれない)
(もちろんデータ読み込み用アドレスをマップファイルで指定してもいいけど)
こうすればスタック、ヒープ以外にとっておいた空き領域に
読み込ませて起動できるのではないかと
あくまで全部推測ですけど・・・・
(ちなみにファイル名UTF8をSJISに変換して漢字表示できました。ありがとうございました。)
738 :
732 :2009/03/10(火) 00:17:00 ID:FyCLTQRk
過去ログの
>>609-614 がまさに自ファイルをfopenして、目的のデータだけを
freadして4MB以上のndsファイルを実現しているって話みたいです。
リンカの制御についてちょっとお勉強してみます。
あと、ndsファイルももうちょっと調査してみます。
(ちょっと確認したところでは、FATデータには、各アドレスの
先頭アドレス(4Byte)がずらずら格納されているだけのようでした。)
739 :
732 :2009/03/10(火) 00:23:24 ID:FyCLTQRk
書き忘れました。 自ファイルをopenしてfreadするやり方だと、ndsファイル名を変更できないし、 ファイルを置く場所も固定になってしまうので嫌だなあと思ってるだけです。 fopen("./hoge.nds", ...)みたいにカレントディレクトリ指定でopenきれば まだいけるのですが... ごちゃごちゃ言っているうちに、なんか興味がわいてきたので調べてみます。
スタートアップのmain()のargvで自分自身の名前が返ってくりゃスッキリするのにな。
以下、転載
OCNがアクセス規制だったのでこっちで…。気付かなかったら気にしない。(笑
To 737
実行中のNDSプログラムから自分自身のファイル名を知る方法はないと思います。
(一応コマンドラインから受け取れるようになっているようですが、それを渡してくれるように作られたファームウェアを(私は)知りません)
それができればたくさんのデータファイルをコピーさせなくても自作アプリが公開できるのですが…。
(これ以下はリンクで
ttp://home.att.ne.jp/blue/moonlight/to737.html
ちょっと思いついた自分自身のndsを見つける強引な方法ですが、 現在のディレクトリをdiropenで開いて、 dirnextで次々と開いてファイルサイズを調べて、同じ大きさなら自分のnds ファイルサイズの調べかたですが、fseekでSEEK_ENDを指定して、 ファイル終端にファイルポインタを設定して、 ftellで得られると思います。 まぁ、片っ端から調べるんなら、ndsファイルヘッダでも何か固有情報は埋められるような気もしますが・・・・
それならファイル終端に識別子入れたほうが楽
744 :
732 :2009/03/10(火) 23:30:35 ID:FyCLTQRk
ndstoolのソースを見ると、NDSファイルのヘッダにあるFATテーブル
がどういう形式なのかわかりました。
「ファイルの先頭アドレス(4byte), ファイルの最後のアドレス+1(4byte)」
がずらずら並んでいるようです。
>741の内容(ファイルを全部メモリにロードしてSWI0(soft reset)する)と、
http://nocash.emubase.de/gbatek.htm#biosresetfunctions を見ると、要するにBIOSがNDSヘッダを読んでよきに計らってくれるのだ
と理解しました。
ということは、NDSヘッダにFATデータもBIOSを使ってうまく取り回せるの
かな、と思うのですが・・・これ以上は資料も見つけられず・・・
やっぱりlibfat使って自ファイルをfreadするとか、うまいこと面倒を見る
ランチャ(というかシェルと呼んだ方がいいのかな?実現可能かも不明)
を作るとか、が現実的かもしれないですね。
MoonShell2のバグトラックに 「フォルダ名またはファイル名の先頭に「蟲」を含むとき、ディスクチェックが停止するバグがある。」 とあるが、FATではファイル名の先頭の0xE5は削除されたことを表すから、 その0xE5がShift_JISの第1バイトと重なってしまうため、 FATの日本語ファイル名では0xE5の代わりに0x05を使用している、 という話を聞いたことがある。 もしかしたら、0xE5と0x05辺りのバグかもしれない。 以下問題ありそうな文字リスト 蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋 藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬 蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓 蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢 蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃 裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞
>>745 FATのlfnはUCS2だから0xE000-0xE8FFは私用領域で使われてない
8.3形式の話だと思うが
FATを調べたけどファイル名の1バイト目に意味があるのはロングファイルネームに対応していないFATでファイル名には英数文字しか使えない ロングファイルネームに対応しているVFATではファイル名は2バイト目から始まるようだ
749 :
名前は開発中のものです。 :2009/03/11(水) 23:43:28 ID:Zqyue3/y
M3さくら日本語版ではv5しか起動できません。 v6 v6.1 v6.1fix を読み込むとローディングのまま黒画面で停止する・・バグ?
やっぱ手書き入力が欲しいなぁ 挑戦してみようかなぁ
ちょっと表示について質問させてください メイン、サブ共に16ビットグラフィックを使いたくて、 どちらもMODE_5_2Dで、VRAM_AとVRAM_Cを使ってBG3を表示させているのですが、 製作時はやはりデバッグ表示もしたくて consoleDemoInitのようなテキスト表示を使いたいのです。 しかしconsoleDemoInitだと強制的にVRAM_Cを壊してサブ画面をMODE_0_2Dに してしまいます。 consoleInit関数ならモード変更させずに、BG0,BG3重ね表示はできたのですが、 VRAM領域が同じために、画面描画しているうちに、フォント領域やテキストスクリーン領域 を壊してしまって表示がおなしくなります。 (2k,16kのbaseによる小さい移動はできたのですが結局同じ領域なので) BG0,BG3に別々のVRAM領域の割り当てがいくら調べてもわかりません・・・・ どなたかご存知の方がおりましたらご教授ください。m(_ _)m
>>752 VRAM_Bとかつかってないところにコンソール用の領域を用意して
bgInitでmapbaseをソコにすればいいだけじゃない?
あ、コンソールはmapbase0でグラフィック用をずらす方がよかったかもしれない。
>>753 助言ありがとうございます。
グラフィック用のmapbaseをずらすことで対応できました。
しかし、
いろいろやったのですが結局VRAM_Bは活用できませんでした・・・
VRAM_Bが活用できなかったってのがよくわからんなぁ こういう話? videoSetMode(MODE_5_2D); vramSetBankA(VRAM_A_MAIN_BG); vramSetBankB(VRAM_B_MAIN_BG); bg3 = bgInit(3, BgType_Bmp16, BgSize_B16_256x256, 8, 0); // 後半128k(16k*8)使用 dmaCopy(img_bin, bgGetGfxPtr(bg3), img_bin_size); // 適当に画像データ読み込ませる con = *consoleInit(0, 0, BgType_Text4bpp, BgSize_T_256x256, 31, 0, true); consoleSelect(&con);
756 :
名前は開発中のものです。 :2009/03/16(月) 16:01:19 ID:I+GA/8Ir
MoonShell2 v7だが、Bボタンを押しても上位のフォルダに移動できなくなった。 上位階層のフォルダを選択してAボタンを押しても、ピーと音が鳴るだけ。 どうやってもその階層から外に出られないorz 強制的にルートに戻す裏機能とかない?
>>756 それ、俺もなったことがある。原因不明だけどフォルダ名とかに関係するのかな?
ただ、しばらくは普通に動いてて、あるとき急に上のフォルダへ移動できなくなってしまった。
完全なデッドロック状態。moonshelを全部消して入れ直して復帰したけど。
外出中なので書けたらいいな 元に戻せない状態になってしまったら、L+R+A+Bボタンを押しながら起動すると、MoonShell2の設定をすべて標準に戻してから起動します。(設定変更部分だけではなく、プレイリストや壁紙、スキンなども標準状態になります) 操作手詰まりになってしまうバグのようなので、できれば原因追求して直したいと思います。 暇で暇で仕方がないとかあったら、気まぐれで一通だけでもいいのでレポートメール頂けたら嬉しいです。それでは。
759 :
名前は開発中のものです。 :2009/03/16(月) 19:53:18 ID:r6dRqUJi
>>758 私もたまになることがありますので、今度現象が発生したらL+R+A+Bボタンを押しながら起動を試してみますね。
761 :
756 :2009/03/17(火) 12:02:22 ID:OkVTHgYh
>>758 L+R+A+Bボタンを押しながら起動で見事階層から脱出成功しました。ありがとうございました。
取りあえず何も環境を変えずにまた使い始めてますが、今のところまだ問題はないです。
NDS雑談242
http://changi.2ch.net/test/read.cgi/download/1237195975/788 788 名前:[名無し]さん(bin+cue).rar[sage] 投稿日:2009/03/18(水) 21:26:36 ID:7bnC9PI80
【NDSのROMやPSPのISOを爆速でダウソする方法】
1. FocalPriceでアカウントを作りログオンする。
http://Google.zz.tc/FocalPrice 2. Keyword PSP を入れて検索する。
3. 最後から3番目の商品のレビューを見る(状況により順番が変わる可能性あり)
4. KMCのSuper MemberのIDとパスワードをゲット!!
5. KMC(
http://www.jpmp3.com )に4.で得たIDでログイン。
6. Super Memberの特権でGame Zone(ゲーム配信) スレへ入ることができる。
7. [NDS] ★★★ NDSロム アップロード専用トピック [NDS Software only] ★★★その2 へGO!
8. DSのROMが腐るほど置いてあるわ。ウマーwww
※ PSPのROMの場合は7.で [PSP] ★★★ PSPロム アップロード専用トピック [PSP Software only] ★★★ その2 へGO!
あぁ春休みだっけ?
soundPlaySampleでSEを鳴らしているんですけど、 再生終了しているかどうかをチェックできないものですかねぇ・・・ (sound.hを見てもなさそう)
>>764 割り込みハンドラも使わずfifoに投げてるだけだからむりっぽ。
めらまんとこにSEドライバが・・と思ったら未完成だった。
つーわけで自分で書け
>>765 情報ありがとうございます。
なんか調べてもわからないことだらけで、
終了はファイル長から22050Hzで割って推測することにしました。
ただ、新たな問題が・・・・
約300Kbyte以下は再生できるのに、それより長くなると
途中まで(それもほんの最初の50KByteほど)だけしか再生してくれない・・・
soundPlaySample内でどんなことしているか知りたいよ〜
>766 libndsはソース公開されてるど。
なんか言ってることぽまえら難しすぎ いまどきRAMとかSEEKとかアホくさい BASICみたいな言語無いの? テキトーにハナクソほじりながらなんか作りたい
おかえりくださいw
771 :
名前は開発中のものです。 :2009/03/22(日) 13:13:50 ID:PUMXIKn4
日本語見れないけどDSLuaでいいじゃん
772 :
766 :2009/03/23(月) 16:25:30 ID:gM4i9RQ9
>>765 ,767
ソースのおかげでなんとなくわかってきたのですが、
ARM7ってFIFOで裏でいろいろやってたのですね。
PowerManagement、SOUND、SystemInputMsg(おそらくキー入力)、WIFI、MMDS(これも音関係?).
ARM7のmain関数(おそらく\devkitPro\examples\nds\templates\combined\arm7\source\template.c と同じもの)
内でFIFOに登録されたものがFIFOコマンドとして働いて、
ARM7は割り込みでコマンドがあると参照されている関数ポインタを処理している。
で結局、サウンド関連はsoundDataHandler内で
SCHANNEL_SOURCE、SCHANNEL_REPEAT_POINT、SCHANNEL_LENGTH
SCHANNEL_TIMER、SOUND_FREQ、SCHANNEL_CR(channel)、
などのレジスタを設定している・・・・
しかし300KByte以上が再生できない理由はいまだわからずw
やっぱりソース眺めるだけじゃなく、
ARM7のコードも自分でコンパイルして組み込まないといけませんかね・・・
これは詰みか?諦めるしかないのか?
とりあえず、単純に鳴らすだけのシンプルなプログラムを書いてみたら。
775 :
766 :2009/03/23(月) 17:59:40 ID:gM4i9RQ9
一応状況がわかってきました。 SOUNDxLEN レジスタで指定しているBit0-21なのでファイルの長さには十分足りていると思っていましたが、 SOUNDxLENでは8bitサンプリングで18ビットしか使えていないようです。 0x0003FFFFが最長で0x00040000だと無音となりました。 0x00040000を超えるものは、上位ビットがカットされた長さの再生となりました。 audio.cやaudio.hを見る限り、0x040004XCのレジスタにただ書き込んでいるようなので、 使えると思っていた18〜21bitが何に使われているかは、まだよくわかりませんw あきらめて2つの音声に分けて再生させたいと思います。
昔書いた自前のプログラムは、レジスタ直書きで8bit11khzのサイズ800kbyteとか普通に鳴ってた。
長さをレジスタに書くときは
>>2 とかしないとダメだけど、そこら辺は?
777 :
766 :2009/03/23(月) 19:31:03 ID:gM4i9RQ9
私は8bit22.050Hzですけど、11kHzでもレジスタ指定のサイズは変わらないはずなので、 800kbyteでも鳴ってたってのは不思議ですね レジスタ直書きってのはARM7側からですよね ARM9側からは参照もできないはずですよね。 やっぱりARM7(〜〜フレンドw)側のコード書かなきゃいけないってことですかねぇ・・・・ 一応、音声データの入ったメモリを0x00020000ずつ2つに分けて、 ループ再生にして交互に鳴っていないほうにdma転送することで 長い台詞もしゃべられられるようにできました。 おそらくファイル転送と組み合わせて、microSDに入る限りの長い音声も再生できそうです。
>>777 あぁ、
>>2 って、このスレのレス番じゃなくて、2ビット右シフトねw
当方がレジスタ指定したのはarm7でおkよ。
しかし何だろね。
ワロタ
moonshel8マダー??
誰もマジコン販売してないよ? そんな勇み足だから、いつも失敗しちゃうん。
が
あれ、書き込まれてなかった。 昨日から始めた者ですが、 画面に画像を表示させるにはどうすればいいのですか? gritつかって、〜.hを作ったのですが、表示させることができません。 というかビルドできません。 場所はnds直下なのであってます。
>>784 サンプルがビルドできるようになったらおいで
>>784 サンプルはビルドできます。
makefileの横にmake.exe置いて実行させてます。
>>786 devkitProだよね
画像を表示させるサンプルがあるだろ
>>788 ありがとうございます。
それのソース眺めながら頑張ってみます。
また詰まったときはお願いします
>>789 大丈夫、キミはきっと途中で投げ出すことになるから。
普通msys\binにパス通してるからmake.exeを横におく必要もない 一緒についてたなんとかノートパッドは使ってないのか
つーか、devkitPro installerで勝手にパス通すから、 サンプルのMAKEFILE流用すれば何も難しいことは無いと思うんだが。 (ある程度細かいことやろうと思ったら自分で書いたほうがいいけど)。 256色PNG(256x256)だったら、dataフォルダに画像とgritファイル置いて、 生成されたヘッダファイルをインクルードして、bgInit()で定義して、 あとはサンプルプログラムと同じようにDmaCopyでVRAMに転送すれば 普通に画面に表示されると思う。
ありがとうございます
ほっしゅ
セックスフレンドのコンバーター作ってくださいね♥
質問。 NDSのポリゴン描画なんだけど、 ・テクスチャマッピングしたモデル ・フラットシェーディングのモデル が共存できないみたいな気がするんだが、 オイラの気のせいかな?
共存っていうのが判らん
判らんやつが分からん DISP3DCNTにTextureのenableビットがあるから 1フレーム以内にどちらかしか選択出来ないという疑問に見えるが
共存にそんな意味があったのか 勉強になったよ
>>799 気のせいじゃなかったのか。。。
完成間近だったのに根本から設計変更だな orz
オイラの気づいたNDSで3Dを使うとき独特の癖っぽいものを列挙しておく。
・TEXTUREを貼るときもDIF/AMB/SPE/EMIの設定が必要
・glNormalするとライトの設定が必要になる
・glTexCoordの値は他のレジスタ設定に連動している
・R25以前はglRotateの回転がOpenGLのそれと逆
他にもあったような気がするがとりあえず、これだけ。
上二つはライトを使う場合限定かな glNormalでカラー設定が上書きされるのでライトが無いと見えなくなるから
ついでにもう一個、見当違いならスルーで glBindTextureの第二引数に0を指定でフラットらしくなるけどこれじゃ駄目かね GL_TEXTURE_FORMATレジスタに0でもいいけど DSはどこでもテクスチャパラメータ変更できるから意外と厄介
>>802 オイラも前は「ライトを使う場合限定」という認識だったんだけど、
examplesのTexture_Quadの
・glMaterialf4つ
・glMateiralShinyness
をコメントアウトするとglNormalの設定によらずテクスチャが
消えてしまう。
R25からなのかもしれないけどネ。
libfatが思うように動かなくなったのはツラいけど、回転方向が
GL準拠になったんで、もうR25より前には戻れないYO!
最近いじってなくて思い出しながらなので変なことを書かないか不安 一応ビルド確認して書いてるけどね >examplesのTexture_Quadの >・glMaterialf4つ >・glMateiralShinyness >をコメントアウトするとglNormalの設定によらずテクスチャが >消えてしまう。 glColorがないと駄目みたい。
誰かドット絵エディタ作ってくだしあ><
もち。
DSで描いたドット絵をまぁセーブできたとして 何に使うか不思議だ
むしろピクトチャットのカオスっぷりを保存できるツールがほしいわけだ。 楽引き辞書からピクチャが展開できるんなら、その要領でピクチャを展開した後データをpngとかgifとかで保存できそうな気もするんだけどなぁ…。
>>810 PC使えば保存できるよ。pictosnifでググれ。
非公式開発したDSマジコン向けゲームって シェアウェアで売っていいのかな?
>>813 知らなかったけど、
検索して読んだ感じだと、これってコミケの規約違反しただけだよね?
実際に任天堂からの圧力(邪魔、営業妨害)ってあったのだろうか・・・・
ってゆうか普通のシェアウェアソフトみたいに
ダウンロード販売すればいいのに
moonlight氏が遙か昔に「シェアウェア化しないの?」って質問に答えたことがあって、 ・そもそも利用できるユーザーがものすごい限定されてる ・そこからシェアウェアのお金を払ってくれる人はさらに限定される ・そうしてユーザーを限定してでも幾ばくのお金を得たとして、今度はその後の サポートにフリーウェアだったころよりはるかに質の高いサポートが求められる という理由からシェアウェアなんて考える気も起きないという旨のことを書いていた。 実際シェアウェア化して採算がとれるものなんてあると思う?
カンパウェアならアリじゃないかと思ってますが アフェの方が現実的かも知らない程に、貢ぐ人いないんだろうね
そもそもね、自作ソフトでお金をもらいたいならなんでDSでやる必要があるの?と 採算とかを度外視した本人の趣味でなければまず続けられないよ。
シェアにしても手間が増えるだけ。 責任は開発厨に押しつけておけばいい
PSPFilerが一時寄付した人のみの公開になって面倒なことになったからなぁ
使い手のモラルが低くなっちゃうのは、しょうがないしな
Updater 1.5.0を適用したら、ndsd.jpさんのlibjconsoleが動かなくなってしまった。 誰か、移植してくれー!
>>823 元 ndsd.jp のものです。
調べてみたんですが、devkit の新しいものでは
newlib の仕様が変わったのか、
0x80 以上の文字列が扱えないような感じになっていました。
すぐに直して上げなおそうと思いましたが、
僕の能力不足もあって、ソースを追いかけるのに時間がかかりすぎるので
途中でやめてしまいました。。すみません。
printf を使わないで、独自の文字列描画機能を作った方が
お手軽に日本語を出せそうです。
(これはまだライブラリとしてダウンロードできる形にはできていませんが…)
なんとも。。。本当に乙です
なるほど
devkitProのdswifiってニンテンドーwifiUSBコネクタには接続できない?
>>830 Moonlight氏が何年か前にそれが原因で匙を投げていたよ
>>831 無理か…
あとソケットってwindowsとかのプログラムと同じもの?
WinSockでやるようなことを書けば普通に一台の端末としてネットワークに参加できるの?
>>827 823でつ。
激しく感謝。
サブ画面にうまく表示できないのは、
オイラがなにか設定をミスってるから
だな。。。
添削希望。
ttp://www1.axfc.net/uploader/File/so/24166 昔WonderWitch用にえむかい氏が提供していた
タスクシステム&シューティングのサンプルを
Updater 1.5.0環境下で動くようにしてみたんだけど、
スプライト周りってこのコーディングで正解?
実機で動けばOKという気がしなくもないけど、
oamAllocateGfx()で16x16と8x8を混在させると
戻り値アドレスが変な点に特に納得いかない。。。
DSiのバックライト変更コードってある?
836 :
名前は開発中のものです。 :2009/06/04(木) 23:12:34 ID:UEoQ2r1A
まず服を脱ぎます
>>828 できれば手書き入力ライブラリをお願いします・・・・
でも断る
死ねって画面にでっかく表示するソフト誰か作ってください せっかくDS買ったのに兄貴に占有されて腹立つ
>>839 作るのは簡単だけど、問題はどうやって兄貴にそのソフトをプレイさせるかだな
折角だしつくってみようぜ サンプルプログラムの画像差し替えるだけでできるから 何も知らなくてもやる気さえあれば1日でできるよ!
>>839 GBAでいいなら数年前に作ったのあるよ
GBAのROMくれっていうスレを立てたバカがいて、作った
てか、自分で作れよ
つうかDevkitProのサンプルの画像差し替えればOKって レベルだから作るってほどのことでもない
guiの作ってよ
画面にマジックで書け
____ / \ /\ キリッ . / (ー) (ー)\ 画面にマジックで書け / ⌒(__人__)⌒ \ | |r┬-| | \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // だっておwwwwwwwwwwwwwwwwwww | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / バ | | l||l 从人 l||l l||l 从人 l||l バ ン ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ン ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
>>839 が俺の弟で無いことを祈る
マジックだけは勘弁してくれよw
>>839 そういうイタズラ的なアイデアこそ、他力本願じゃダメだろ。
だいたい、マジコンがありゃカスタマイズするだけで、
ソフト作らなくてもほぼやりたいことが実現可能だろ。
改造コードをサーチしたいのですが、no$gba debugger以外でメモリの書き込み読み込み時に プログラムをブレークさせる方法があれば教えてください。
そういや、9月に発売されるDS-10 PLUSをDSiで使うと音源部分が2倍になるらしいな。 DSモードからどのようにしてDSiで動いているか判定するか、 DSのハードウェアをフル活用するかが気になるな
853 :
851 :2009/07/02(木) 05:43:31 ID:dUlswWg6
ideasにうさみみでメモリブレークかけてブレークしたところでレジスタ参照すれば同じようなことが出来ましたふみー
dswifi、libfatを使ったプログラムのテストをエミュでやりたいんですが それぞれどうすればできますか?
早く教えてください!
ニトロなんとかってのを使えば出来るかもしれない
nitrofsは組み込み用のファイルシステムですよね。 やっぱエミュから別のファイルにアクセスするのは無理か… あとlibfatで相対パスって使えないんですか?
nitrofs使ってエミュでファイル読み込みのテストができるようになったのはいいんですが これ実機では使えないんですか? devkitProのサンプルすらエラーが出るんですが。 環境はSuperCard DS(ONE) SDHCで、DLDIパッチも当ててみました。
>>859 ROMも読み込ませたいファイル名も半角です。
そもそもnitroFSInit()自体が成功しません。
ROM名とmain.cの中のdefineで定義してるFILENAMEの名前は同じになってる?
2つのftpサーバー試したんですが、大きなファイルを送ると とまってしまいます。
>>861 devkitProのサンプルでは定義されてないのですが
FILENAMEをdefineしてどこで使うのですか?
>>863 なんでnitrofsのテストでdevkitProのサンプルが出てくるのかよくわからんが
もしかして最近のバージョンだとdevkitProの中にnitrofsが入ってるのか?
nitrofsのサンプル見たらnitroFSInit(FILENAME)って呼んでるんだがバージョン違うのか
>>864 最新のdevkitProではexamplesにnitrofsのサンプルが入っていたのでその話だと思っていました。
どうも実機では初期化が成功しないようですね…
引数を取るInitはNitrotstprojectv0.6-turboですか?
includeしてるのにnitroFSInit(char const*)が宣言されていないというエラーが出てコンパイルできない…
またごちゃごちゃライブラリが変更&パワーアップされているのか・・・ 見なかったことにしよう。
[devkitARM] Version=26 [libnds] Version=1.3.5 [ndsexamples] Version=20090531 [libndsfat]Version=1.0.4 [defaultarm7]Version=0.5.4 [filesystem]Version=0.9.2 です。この環境で実機でnitrofs使えてる人いませんか?
僕は使ったことないですが、 nitroFSって扱いが難しかった気がします。 libfat使って、ideasのR4プラグイン入れて R4のDLDIパッチ当てて実験するのが手っ取り早いように思います。 Wifiの方は、うちの環境ではエミュレータ上でうまく動かなかったので、 実機に何回も転送して実験しましたw
870 :
864 :2009/07/08(水) 19:01:51 ID:1y4fZ+NG
>>865 最新版チェックせずに見当はずれなこと言ってすまんかった
>>868 とりあえず、libnds 1.3.5はobsoluteされてる
ただ、Forumに出ているlibnds 1.3.6の動作報告にもSuperCardは
なかった気がする
nitrofsの話ではないが、libnds1.3.4からLinux版Desmume 0.9.2と
相性が悪くて、生成したバイナリがまともに動いてくれないのは
どうしたもんだか。。。
>>869 blogにあったクロスリファレンスの話だけど、GNU globalってのは
ご存知?
>>868 遅レスですが、、、
filesystemは、argvに対応したマジコンでないとダメかと思われます。
対応していない場合は、homebrewmenu.ndsを使えばargvがセットされます。
homebrewmenu.ndsはdevkitproのsvnから拾ってコンパイルします。
http://devkitpro.svn.sourceforge.net/viewvc/devkitpro/trunk/projects/nds/HomebrewMenu/ ちなみに、iDeasもDeSumuMEもlibfatの読み込みに対応してます。
iDeasはR4の、DeSumuMEはmpcfをDLDIパッチします。
起動したndsファイルがあるフォルダがルートになります。
desmumeなら、ディスクイメージを作れば書き込みにも対応してます。
イメージは適当なイメージツールでベタイメージ作成すればOK。
コマンドラインでイメージを指定しつつ起動。
スイッチは --cflash=イメージファイルフルパス を指定。
873 :
871 :2009/07/16(木) 01:22:08 ID:x/ELzY+m
Desmume 0.9.4でlibnds 1.3.6との相性の悪さが改善された 開発チーム乙
よろしく
あの?まだですか?
独自ソフト使ってるとやたら電池の消耗が激しいと思ったら、 本体の蓋を閉じても休止モードになっていませんでした。 休止モードにするにはどうすればよいのですか?
本体の蓋を閉じる。
MoonShellのこと?
めらまんさんの電力制御ライブラリ使えば?
MoonShellは、本体の蓋を閉じても休止モードにならないんですか?
881 :
878 :2009/08/26(水) 12:55:57 ID:iM0GfFpG
スタンバイモードになるよ。俺の勘違いでスマン。普通の自作ゲームのことか
エミュで開発を始めたいんですが、おすすめの環境はありますか?
>>882 いろんなので確認したほうがいいよ
iDeasとかNO$とか
>>883-884 言い方が悪かったですね。エミュではなく、eclipseとかVC++といったような開発環境のことです。
無いなら無いでTeraPadとコマンドプロンプトでやるつもりですが・・・
コンパイラって何でもいいんでしょうか?
>>886 devkitProでいいんじゃないの
ってゆーかちょっとは自分で調べたのかよ?
>コンパイラって何でもいいんでしょうか? の時点で何も調べてないことが判明したんだから ほっときゃいいのに
>>886 統合環境よりも、普通にシェルからmake使ったほうが使いやすくない?
892 :
名前は開発中のものです。 :2009/08/29(土) 16:25:16 ID:LxLK5I5P
コンパイラは好きなの使え。
>>890 クリック一発でmakeしたりエミュレータ立ち上がったりするから結構便利だよ
シンタックスチェックやインデントも自動でやってくれるし
やってることはmakeファイル呼び出してるだけなんだけどね
俺はVC++とgeanyをdevkitProにあわせて設定して使ってる
俺は〇×で使ってるとかhogehogeを作ってるとかいうけどなんで生成物がでてこないんだ?俺のアンテナが低いだけか?
devkitPro入れました。 ありがとうございました。
hogehoge(笑)
俺はchomechomeを作ってるぜ
898 :
名無しさん@そうだ選挙に行こう :2009/08/30(日) 19:46:42 ID:oonVFQpU
UNIX信者乙w
>>894 HelloWorldとかでも公開したほうがいいのかな
聞かないと駄目かそれは
どうせなら物凄いインパクトのあるHelloWorldで頼む
実行したらDSが壊れるHell Worldとかどうかね
実行したらボタンが吹っ飛んだりしたら物凄いインパクトあるが、フラッシュ書き換えで起動不可なんて今更だし全然インパクトなんて無い
インパクトはないがMicroSD破壊は地味に効く
初心者だけど…何から手をつければいいのかサッパリ☆分かりません!
>>905 ・開発環境のセットアップ(devkitPro、動作検証用のDSエミュレータなど)
・サンプルのコンパイル&動作確認
・サンプルコードの改造
これくらいで1週間は時間がつぶせるかな
その間にC++の勉強も平行してやるとか
っていっても俺もこのレベルの初心者なんだけどね
>>906 サンクス!
まずはHelloWorldやってみます。
HelloWorldやってみるというか、やってみたいんだけど… @C++?でプログラム書く Aそのプログラムを.nds形式にコンパイラ?する Bエミュで動作検証する この流れでいいのかな?
まずはnds-exampleを読んで動かしてみたら?
ま、この板の他のスレをみてわかるように
「プログラムが書ける」と「ゲームを作れる」の間
には大きな壁があるんだけどなw
>>894 歌って踊れるプログラマは珍種ってことだよw
オレの場合は作りたいものを作りたいように作っ
てるだけなんで基本的に身内に見せてお終い
気が向けばろだにうpしてるけどな
worldofsand-0.1というhomebrewのソースを落としてきました。
このゲームはシュミレーションゲームに近く、砂を落としたり水を流したりして遊ぶものです。
例えば水+塩=塩水みたいなことや、水+火=水蒸気のようなこともできます。
最終的にはこれを改造して水を出そうとしたら塩水が出るような感じにしたいのです。
worldofsand-0.1\common\majic.itcm.cの一部を書き換えまして、makeが成功してndsを実行したら塩水が出せるはずのところまで来ました。
ですがなぜかmakeに失敗します。
少々長くなりましたが簡単に言えばmakeがうまくできないということです。
devkitProを使用しています。
C:\devkitPro\examples\ndsをmakeしたらすべてうまくいきました。
worldofsandのフォルダの中やその下の階層にヘッダファイルがあったので、
それをdevkitProのincludeやlibndsのフォルダあたりに入れるのかと思いましたが、どこがどこだか分りません。
makeできない原因をどうか教えてください。
worldofsandのソースはこれです↓
http://testmoonshellartwork.web.fc2.com/a/worldofsand-0.1-src.tar.gz
えすぱーさん翻訳お願い
>>911 devkitProをインストールしました
examplesの中のやつは全部コンパイルできる
拾ってきたソースがコンパイルできない
フォルダの中にヘッダファイルがあったがどこかに入れたりしないといけないのか
ということです。意味不明ですいません。お願いします。
エラー読め。 バージョンによってしょっちゅう呼び出し方とか変わったりするから 作った時と同じモノでないと9割何か出る
だから古いDevkitProを入れないと、そのままじゃコンパイル出来ないんだって タイムスタンプが2007年5月だからそれ以前のを入れときゃコンパイル出来るだろ SourceForgeにきっとあるから探せ
趣味レーション
趣味レーション
devkitProUpdater-1.4.10からではmakeができませんでした devkitProUpdater-1.3.6以下ではmirrorlist.htmlのダウンロードでループします なので1.3.6以下は試すことができません ちょっとあきらめようかと思います
>>918 俺は普通にダウンロードできたけどな。諦めるならそれでよし
>>919 ちょっと前のlibndsで行われたIPCの仕様変更とグラフィックレジスタ定義の変更で
引っかかっているみたいだね
最近の環境で動かしたいなら、makeのログでerrorとなっている箇所を先頭から
丹念に潰していくしかないよ
おちついてやれば大丈夫
>>921 printfしかできないような輩にできるわけが無いだろ
923 :
910 :2009/09/16(水) 02:08:42 ID:vB+Gh1Ry
エミュでは動くけども、実機では動かないってのは良くあること? エミュのiDeasでは動いたけど、R4(パチモン)、DSTTi、EZ-FlashVi、acekard2i、M3izero で検証 ROM選択後ホワイトアウトや、始まって即フリーズ、画面がバラバラ(うまく説明できない)などが起きるんだが
>>923 俺も奇数バイトにアクセスできないのに気づかずに悩んだことがあった
その状況を再現する状態を考えるのすら面倒
こまめに実機で確認すればいいのに ついでに言うと、実機でのみ動く場合も結構あるよ
確かにdldiのは実機でしか動かなかったな
>>923 ゲームの動作不良は治しても、Homebrewでよく使われる機能は後回しにされてるんじゃないか?
ARM7環境、電源管理、IPC通信、IRQなどが該当しそうだ。
929 :
910 :2009/09/17(木) 01:01:36 ID:VMnapNPn
libndsの中身を全部消してlibnds-20071023の中身と入れ替えたらそのままのソースファイルで通ったけどもやはり変わらず。
ROM選択後ゲーム画面でたところでフリーズする。
>>924 それかもしれない。
けど何も弄ってないソースすらコンパイルできないからまだ考え中
>>929 default.arm7の版は合わせたか?
931 :
910 :2009/09/18(金) 01:10:58 ID:Pi/b/NCB
>>930 default.arm7はどこか指定されたディレクトリに入れるのでしょうか
それともdevkitProのフォルダの中に元々あるものなのでしょうか
検索かけましたが見当たらなかったもので
やはり初心者がいきなりやるのは少し無茶だったみたいです。
Cと並走して基本からやっていこうと思います。
ソースを1から書き上げる感じでやってみます。
932 :
910 :2009/09/18(金) 20:20:49 ID:Pi/b/NCB
>>Moonlightさん アドバイスありがとうございます。 今の私にはとてつもなく無謀ということがわかりました。 今一度基本からやり直し、一通りできるようになってからやろうと思います。 GBAも実機の環境があるので、やれるようになったらそこから試してみようと思います。 皆様、アドバイスありがとうございました。
がんばれよ
ndsファイルはARM9とARM7のコード両方を含みますがこれはどういうことでしょうか? 二つのCPUを切り替えたりする事があるのでしょうか?
両方同時に動いてんだよ
マルチスレッドのようなものですか?
最近のlibndsだと、凝ったことをしようと思わなければ arm9のコードだけ書いてればOK
>>936 マルチスレッドじゃなくてマルチプロセス
スレッド間だとデータ共有できるけどプロセス同士はプロセス間通信という手段でデータをやり取りしないといけない
いや共有RAMあるよ
DSの中に、小人さんが二人(arm7とarm9)いて、別々の部屋で働いてんだよ。 んで、二人は情報の交換に小さいメモ紙(共有RAM)使ってやり取りすんだよ。 どうだ?わかったか?わからんだろ?
943 :
名前は開発中のものです。 :2009/09/20(日) 00:15:36 ID:CK+iir6j
小人さんが好き勝手に暴れるから、ゲーム作れないよ。
暴れる小人さんを倒すゲームを作るんだな
945 :
934 :2009/09/20(日) 13:05:16 ID:ZFPEdgoY
なるほど。 どうもありがとうございました。
小人さんの小さい方も大きい方の部屋を使うことが出来るけど、 大きい方に断ってからにした方が良い
大きい方が小さい方をたべちゃったらどうしますか
冥福を祈りましょう
日本にはDSiモードのHomebrew開発に着手した猛者はいないのか?
DSiの日本版本体で、HomebrewをDSiモードで起動させる方法ってもうあるの? 海外版のDSi本体では出来るらしいが、リージョン絡んでて日本版の本体では出来ないって聞いたけど。
DSiを持ってない俺には無関係
おまじない 0x04004000 & 3 = 1 DSi = 0 D S・DSL
さいきん、なにもないね
954 :
名前は開発中のものです。 :2009/11/05(木) 02:55:42 ID:k4kbZ3Qw
ゲームレジェンドで源平討魔伝DSが展示されていたのでさわってきた。 よくできてた。
Moonshell 2.06 stable
20年前 スプライトというものを初めて知ったときには あまりの便利さに感激し脳内アドレナリンが出たものなのだが いまではウザイだけの代物になったか
2Dのグラフィック機能を愛してるから次世代機で3Dに完全移行されたら泣く。 このままサターンのような2D/3Dが共存した形を維持して欲しい (サターンのは変形スプライトで3D表現してるんだっけ?)
プレステ・サターンあたりはもうただのフレームバッファなんじゃないか
>>959 サターンのをWikipediaで見て来た。
>VDP1は変形スプライトやポリゴン、ポリライン、ラインなどを描画するデバイスで、
>(略)
>4MビットのVRAMと2Mビット×2個のフレームバッファを接続しており、
>(略)
>旧来のゲーム機において標準的だったラインバッファによる横方向の表示制限はなく、
>フレームバッファ上に描画して出力する構造である。
なるほど確かに。
ドントマインド
gritを使い[.o]に変換した画像ファイルは、元の形式に戻すことは可能ですか。 もし可能なら何を使えば良いのでしょうか。
エミュで動かしてスクリーンショットでもとればいいんじゃね
965 :
963 :2010/01/26(火) 20:31:36 ID:mEVp7n4g
基本的には出来ないってことですね。 ありがとうございます。
つ objdump
>>967 元々のソースが最近頂いたr21で何の苦もなくmake出来てしまってw
いくつかの項目を追加したりなど順調です。ありがとうございます。
worldofsand-0.1\arm9\data\の.binをバイナリでいじって画像編集してますが、
さすがに無理が。
>>966 .oをobjdumpを使って試しましたが、元画像には戻せないみたいで。
>>969 pixディレクトリに「結合→bin」する前のpngが揃っているように思うが?
gameboy advance developmentのところに置いてあるPNG2GBAというツールで.bin化が出来ました。 ハッシュ値も合っているので多分このまま使えると思います。 アドバイスくれた方ありがとうございます。
DSiの解析は難しいのかね スペックうpだからいくらか出来ることが増えるかと思うが
>>972 規制にまきこまれている間に解決したようで、なにより。
map.binをみればタイルのレイアウトも判るし。
そういえばpixにはtitleがなかったね。
ちなみにdevkitARMではgritを使うのが常套手段。
961の書き込みもオイラなんだけど、機種依存性の低い
chipmunk physicsに乗り換えたんで、放置中なんだが、
まだbox2dの需要ある?
PAlibを使ってるんだけど 日本語を表示させる方法無い?
DSLua.nds(0.7)をDeSmuME(0.9.5)で走らせると Failed to initialize IO devices... と表示されフォルダ一覧的なものが表示されません。 フォルダ配置は DeDmuME(フォルダ) ├DeSmuME.exe ├DSLua.nds └scripts(フォルダ) └main.lua のような状態です。 ちなみにDeSmuMEのGBA slot の設定は 「Compact Flash」にして 〜\DeSmuME\ と 〜\DeSmuME\scripts\ の両方を試しました。 「CompactFlash」に設定してからはIOエラーは出なくなったのですが Hello from DSLua のあと、ブラックアウトしてしまって進みません。 試しに DeSmuMEフォルダにmain.luaを置いてみたりもしましたがだめでした。 sccf.dldi や mpcf.dldiをDSLua.ndsにパッチしてみましたが 結果は変わりませんでした。 原因分かる方いましたら教えて下されば幸いです。 ちなみに実機(DSi 1.4j マジコン:M3i)では問題なくmain.luaが読み込まれ そこからHello World.luaなどが正常に動作しました。
.
.