ゲームボーイアドバンス(GBA)非公式開発 Part2 at GAMEDEV
[2ch|▼Menu]
[前50を表示]
350:名前は開発中のものです。
06/01/13 03:32:37 tSWTdBS6.net
>>345
>>1

351:名前は開発中のものです。
06/01/13 22:46:41 EKsFivTw.net
あり

352:名前は開発中のものです。
06/01/14 22:06:30 gDUWjwe4.net
サウンドエンジンでなにか良いものは無いですか?
いままで小物を作る時にはAASを使っていました。
ただ、
- ロゴ表示やライセンスがらみが大変そう
- modのチャンネル制限とかを受け入れながらデータを作ってくれる人がいない
- リンカスクリプトとか自分の把握しきれないソースを付加されるのが気分的にあまりよくない
(うまくいえないけど「気持ち悪い」ってやつ?)
などの理由があって、もっと手軽なものは無いかと探しています。
とりあえず、Code WavesのGBA Module Playerを試しています
URLリンク(www.codewaves.com)
# oggとかでループができると嬉しいかも

353:名前は開発中のものです。
06/01/14 22:56:07 9Bbt7+hj.net
>>348
madrv

354:名前は開発中のものです。
06/01/15 01:32:04 mVMDPRul.net
#ここかNDSスレか迷ったけどこっちにしよ
任天堂がPalmOSのライセンスを買ったって本当か?
PalmはVisorの頃しか知らんが旧MacのToolboxに似たAPIを持ってたと記憶してる。
あんなライブラリが使えるのか・・・うらやましい

355:名前は開発中のものです。
06/01/15 15:43:47 eWml9L9Z.net
DevkitAdvanceのファイルをDLできないけど
他にDLできるとこないですか?

356:名前は開発中のものです。
06/01/15 16:16:01 eWml9L9Z.net
ちなみに基礎から学ぶサイトに
agb-win-core-r5.zip
agb-win-binutils-r4.zip
agb-win-gcc-r4.zip
agb-win-newlib-r4.zip
agb-win-libstdcpp-r4.zip
agb-win-patch-r4.zip
これをDLしろと書いてますが
このサイトからはDLできなかったので他のサイトで
agb-win-binutils-r5-beta-3.zip
agb-win-core-r5-beta-3.zip
agb-win-gcc-r5-beta-3.zip
agb-win-insight-r5-beta-3.zip
agb-win-libstdcpp-r5-beta-3.zip
agb-win-newlib-r5-beta-3.zip
これをDLしたのですが、これだけでいいのでしょうか?
基礎から学ぶサイトと違うので合ってるか分かりません
どなたかご指摘をお願いします

357:名前は開発中のものです。
06/01/15 16:54:13 eWml9L9Z.net
自己解決しました

358:名前は開発中のものです。
06/01/15 18:50:40 BMFeXR0R.net
oggを再生するには解凍しながら再生するわけだから
17メガヘルツ(だっけ?)のGBAではキツイかも。
音楽だけならともかくスプライトやら背景やらの表示で
処理落ちしそう。ゲーム部分の重さにもよるだろうけど。

359:名前は開発中のものです。
06/01/15 20:44:38 hHmhgK/M.net
基礎から学ぶサイトのStep 01 開発環境の通りにDLしたのですが、
その後の解凍のところで手詰まりになりました^^:
ダウンロードしたあと、それらのファイルを解凍ソフトを使って解凍したあとに
ひとつの「devkitadv」のなかにまとめます。と書いてますが、
解凍するたびに「devkitadv」フォルダが出てきて上書きになってしまいます。
これは全部上書きでいいのですか?
それとCOPYINGというファイルも複数出てくるので
これも上書きでいいのですか?
どなたか教えてください

360:名前は開発中のものです。
06/01/15 21:02:34 V0F91qmy.net
全部上書きで良いはず
駄目でも最初からやり直せば済む話だしなんでもやってみ

361:名前は開発中のものです。
06/01/15 22:07:52 SzmXDjQJ.net
全部上書きでやってみました。
また質問なんですが、
正しくインストールされたか確認するの項目の
部分がよく分からないのですが、
解凍したgcctestフォルダのgcctestをクリックでokですか?
これをクリックしてもこのサイトで
書かれてる文章が出てこないのです
何度もすみませんが教えてください

362:名前は開発中のものです。
06/01/15 23:20:24 jOSGvqrE.net
質問なんですが、bmpファイルをプログラム内で解析して、表示
(つまりbmpファイルをそのまま表示)することって出来るんですか?
なんか.gbaファイル以外はなにも生成されないので、無理っぽいのですが。。。

363:名前は開発中のものです。
06/01/15 23:31:45 xLvz9DEg.net
>>358
つ URLリンク(optimize.ath.cx)

364:名前は開発中のものです。
06/01/15 23:35:28 jOSGvqrE.net
>>359
どうもです^^

365:名前は開発中のものです。
06/01/16 15:19:06 T9mslL+x.net
初心者すぎるとだめですか
そうですか

366:名前は開発中のものです。
06/01/16 16:03:05 CTGsSkVi.net
そんなこと無いけどGBA研究所のBBSで聞いた方がいい
質問が多いみたいですね。あちらの方が丁寧に
教えてくれますよ。


367:名前は開発中のものです。
06/01/16 16:27:56 T9mslL+x.net
ごめんスレ間違った

368:名前は開発中のものです。
06/01/16 16:37:45 mOmX5K2f.net
パスが通ってねえだけだろ
DOS窓開いて
c:
cd \devkitadv\bin
gcc -v
と打て
バージョンが表示されたらパスの設定しなおし
されなかったらインストールのしなおし

369:357
06/01/16 18:44:54 CbJ6YI7c.net
C:devkitadv¥gcctest>gcc-V
‘gcc’は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されてません。
C:devkitadv¥gcctest>pause
続行するには何かキーを押してください、、、
と出ます

370:名前は開発中のものです。
06/01/16 21:53:17 YtT3zcKi.net
だから path 通せって・・

371:357
06/01/16 22:20:20 CbJ6YI7c.net
通してますよ
Pathを選び編集、編集値の最初か最後にC\devkitadv\bin:を入れてOKですよね?これやっているけどできないです・・・ちなみに最後に付けてます

372:名前は開発中のものです。
06/01/16 22:24:36 XED7qovj.net
単なるタイプミスかもしれないけど、それセミコロンじゃないよな

373:357
06/01/16 22:35:07 CbJ6YI7c.net
あのレスは自分で打ったので気にしないでください。登録に使ったのは基本から学ぶサイトのをコピーして貼ったか


374:ら間違いはないと思うのですが・・・



375:名前は開発中のものです。
06/01/16 22:46:18 4iFikG75.net
・gcc-v と打っていないか? gcc -v だぞ
・ちゃんとPATH設定してるか?
環境変数エディタ eveで確認しる
URLリンク(www.munepi.com)
あとは、コマンドプロンプトで、echo %PATH%と打った出力をさらしてみるとか。

376:名前は開発中のものです。
06/01/16 22:52:01 mOmX5K2f.net
>>367
最後に入れる場合は ;C\devkitadv\bin; のほうが良いかもしれない
はっきり言ってこんなところでつまづいてるようじゃ先が思いやられる
あとお前は鼻で馬鹿にしてるんだろうが>>364もちゃんとやっとけよ

377:357
06/01/16 22:59:18 CbJ6YI7c.net
>>370-371
おぉできました
ありがとうございましたm(__)m
>>1に初心者歓迎と書いてたからやってみたくなったんです
本当にありがとうございましたm(__)m

378:名前は開発中のものです。
06/01/16 23:31:51 4iFikG75.net
>>372
できれば、どこが間違ってたかを晒しておくと、
後で、このスレみた初心者が同じところでつまづくことがなくなっていいぞ。

379:名前は開発中のものです。
06/01/17 00:42:17 9917DXoA.net
>>372
>>371氏の指摘してくれたこれに ;C\devkitadv\bin; を使ったらいけました


380:名前は開発中のものです。
06/01/17 01:45:50 Nc6+wOb/.net
俺様メモ:
moefs20040712の関数moe_getfilenum()内の
if(strcmpi(filepath,fn)==0)
{
return i;
}
の直下に
filepath[0] = '\0';
が必要…あれ?公開停止!?

381:名前は開発中のものです。
06/01/17 02:35:03 Nc6+wOb/.net
>>375
間違えた。
for()ループの先頭にあるべきだ。

382:名前は開発中のものです。
06/01/28 04:46:46 qHfVsUDg.net
ここでいいのかわからないけど。
空ロムにただのゲームボーイソフト突っ込んで、アドバンスでうごくの?

383:名前は開発中のものです。
06/01/28 05:27:44 qqUIY9F3.net
ゲームボーイの空ロムならうごくけど
アドバンスの空ロムには無理

384:名前は開発中のものです。
06/01/28 14:37:31 RRZH8vGq.net
8bit PCMのwavをwav2gbaとかで変換せずにそのまま鳴らすには
wavヘッダ解析した後に割り込みの中でunsigned→signed変換する
しかない?


385:名前は開発中のものです。
06/02/03 02:23:02 slbWlN2h.net
URLリンク(gamdev.org)

386:名前は開発中のものです。
06/02/06 21:06:46 T2WaEpGB.net
つTinyB2T v0.20
URLリンク(nagoya.cool.ne.jp)

387:名前は開発中のものです。
06/02/06 21:49:34 WwPe7cx3.net
すばらしい。
それでちょっと試してみたんですが、サウンドが音割れするみたい。
ここでいいのかわかりませんが一応ご報告。
>>URLリンク(gamdev.org)

388:382
06/02/06 21:50:38 WwPe7cx3.net
あ、382は >380へのレスです。

389:名前は開発中のものです。
06/02/09 10:13:49 Pyq5lHIe.net
(コメント以外で)日本語を含むプログラムを書いた人っていませんか?
今、GCC 2.9 が採用している文字コード表を探していまして
直接的には見つからなかったのですが、「(\バグ付の)不完全なシフトJIS」らしいので
シフトJISコード表を参考にプログラムしちゃっていいんでしょうか

390:名前は開発中のものです。
06/02/09 18:56:56 jiBYaVSU.net
「ソ」や「表」などの¥でエスケープすべき文字が分かっていればそれでいいよ。
EUCに代えるのも一つの手だとは思うけど。

391:名前は開発中のものです。
06/02/09 19:25:28 6fIFnbBj.net
>>384
―ソЫR噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭xx
んだけ

392:名前は開発中のものです。
06/02/09 19:59:06 BVk4/W+U.net
>>385-386
わかりました
どうもありがとうございます

393:名前は開発中のものです。
06/02/09 21:08:07 2FQ4gYWp.net
GBAプログラム研究所落ちてない?
なんでだろ。教えてエロい人。

394:名前は開発中のものです。
06/02/09 21:10:03 2FQ4gYWp.net
GBAプログラム研究所落ちてない?
なんでだろ。教えてエロい人。

395:名前は開発中のものです。
06/02/09 21:45:17 BVk4/W+U.net
ほんとだ
トップページは403 その他は404になってる
鯖落ちか何かじゃない

396:名前は開発中のものです。
06/02/10 00:31:48 IqPCQaO9.net
みんななんだかんだいって見てるんだね
最近BBSにも書き込みなかったみたいだけど

397:名前は開発中のものです。
06/02/11 00:08:16 BVtzYhDA.net
SFCのロムから吸い出したスプライトデータとかみると
24*32サイズのものが多い気がします。
これをGBAで利用するには32*32のスプライトを用意して
センター寄せで読み込ませるしかないんでしょうか?
それとも24*32サイズのスプライトを造ることができるんでしょうか?

398:名前は開発中のものです。
06/02/11 00:20:59 lrk8MfSr.net
24は無理
その前に吸出しデータを利用するな

399:名前は開発中のものです。
06/02/11 00:27:43 BVtzYhDA.net
すいません。キャラチップ作るのに時間をかけたくなかったので…。
RPGツクールのフリー素材とかも24*32なんですよね。
SFCでは24*32ってモードがあったんでしょうか?

400:名前は開発中のものです。
06/02/11 00:46:51 lPtUC7MP.net
ツクールの素材ってツクールにしか使えないやつがほとんどじゃない?
任意のサイズにしたかったら複数のスプライト組み合わせればいいじゃん

401:名前は開発中のものです。
06/02/11 01:42:14 5ZKNwKwC.net
32x32のスプライトをEDGEで縦3/4にするとか

402:名前は開発中のものです。
06/02/11 01:43:41 5ZKNwKwC.net
ロムから吸い出したデータなんか役に立つのかいな
色化けてるんじゃない?SFCはパレットじゃなくハイカラー以上なのか

403:名前は開発中のものです。
06/02/11 02:52:49 lrk8MfSr.net
>>394
SNESも24は無理
その程度の知識でよくROM吸い出来たな

404:名前は開発中のものです。
06/02/11 02:55:29 XLrbZqXi.net
>>392
どうしたらいいのか思いつかないようなヴァカには無理だからやめとけ

405:名前は開発中のものです。
06/02/11 03:47:31 lrk8MfSr.net
>>395の言うように8x32と16x32を組み合わせるか
右に8ドットの空白を足して32x32で使うかだな
前者はROMサイズとVRAMの節約
後者は手間とスプライトの節約
俺なら後者を取るがね

406:名前は開発中のものです。
06/02/11 06:59:41 hZfjJeiU.net
>>392
センターよせが一番無難じゃないか?
回転させることとかも考えれば。
ところで、BoyScoutって公式トラッカーしかないの?
日本語環境だとレイアウトが微妙に崩れてて使いにくそうなんだが。

407:名前は開発中のものです。
06/02/12 17:28:27 7Ys7XIFa.net
だいぶ前にDirectSoundで音を鳴らそうとしていた>>318です。
「波平」と、サンプルソース( >>318と同じ処理 )を拾うことができたので、
あらためてチャレンジしてみたところ音が鳴るようになりました。
どうも、SoundEngineが原因だった様な気がします。

次にwavを複数登録しようとしたのですが、また壁に当たってしまいました。
複数のWavファイルをROMに格納しておいた場合、
指定してないファイルが勝手に再生されてしまうことがあります。
extern u8 test[]; // wav1
extern u8 data[]; // wav2
void AgbMain()
{
 play_dma((u32*)&data);
// play_dma((u32*)&test);
 while(1){}
}
こういうソースがあったとき、例えば data を指定して再生すると
data だけが再生されるのですが、 test を指定して再生すると
test の再生が終わった後、勝手に data の再生が始まるのです。
どうも、wavファイルの配列の先頭のアドレスは引数として渡されているけど
終端の方がチェックされていないので、ずるずると再生が続いてるような気がします。
>>322のソースでは、フレーム数を計ってプログラマーの方で手動で再生を切っているようですが
そんな方法しかないのでしょうか

408:名前は開発中のものです。
06/02/12 17:33:59 7Ys7XIFa.net
int play_dma(u32* sound_src){
// DirectSound設定 REG_SGCNT0_H = 0x0906;
*(u16*)0x4000082 = 0x0b0E; // sound control channel ( SGCNT0_H )
// 左右ボリュームの設定 1234 1234xLLL xRRR (0x77) REG_SGCNT0_L = 0xffff;0x0080;
*(u16*)0x4000084 = 0xffff; //sound enable ( SGCNT1 )
// *(u32*)0x40000BC =(unsigned long)&ROM_Sample; // the address of the source
// *(u32*)0x40000BC = (u32*)sound_src; // the address of the source
// Waveデータ転送アドレス設定
*(u32*)0x40000BC =(u32)sound_src; // the address of the source
// DMA→サウンド REG_SGFIFOA_L
*(u32*)0x40000c0 = 0x040000a0;// Dest DMA LOW&HIGH written (0x40000c0= DM1DAD_L )(0x040000a0=SGFIFOA_L)
// DMA有効,転送元増加,転送先固定,32ビット
// REG_DM1CNT_H = DMA_ENABLE(8000) | DMA_TIMMING_SOUND(3000) | // DMAイネーブル・サウンドFIFO要求
// DMA_IF_ENABLE(4000) | // 割り込み要求イネーブル
// DMA_CONTINUOUS_ON(0200) | // 連続モードON
// DMA_SRC_INC(0000) | DMA_DEST_FIX(0040) | // 転送元増加・転送先不変選択
// DMA_32BIT_BUS(0400); // 32ビット
// =e640
*(u16*)0x40000C6 = 0xB640; // サウンドFIFO要求を入れると音が鳴らない?
// タイマー0の値を設定 u16の−値がサンプリングレート(周波数)になる
// 11KHzの場合 -1520
*(u16*)0x4000100 = (u16)(-1520);
// タイマー0を設定、周期は1クロックで1進む
*(u16*)0x4000102 = 0x0080; //timer Control. Ingen IRQ eller nerdelning av CPU clockan.
}

409:名前は開発中のものです。
06/02/12 20:32:14 lQGmnJOY.net
>>402
>フレーム数を計ってプログラマーの方で手動で再生を切っているようですがそんな方法しかないのでしょうか
そんな方法しか無い
サウンドのサイズを自分で管理し
サイズ分転送したらDMAとサウンドの両方を止めれ

410:名前は開発中のものです。
06/02/12 23:09:14 Cgq3GpSK.net
わかりました・・・
頑張って自前で管理することにします

411:名前は開発中のものです。
06/02/13 02:39:56 Gtc5I6Df.net
ファイル長はすぐわかるね。
wav2gba.exeの吐き出した.binデータを右クリック、プロパティを開く
サイズ ???KB (????? バイト)
()内のバイトがファイルサイズ。

412:名前は開発中のものです。
06/02/13 14:40:33 eECtxr3h.net
次のゲームの画面を再現するにはどの画面モードで
各要素をどの画像で再現すればいいでしょうか?
1)SFCのころのドラクエ風戦闘画面
要素:
背景画像
インターフェース
文字
モンスター
攻撃&魔法エフェクト
僕の予想では
画面モードはモード0。
背景、インターフェースはタイル。
エフェクトはタイル?(全画面アニメがあるため)
モンスターはスプライト(ボスキャラ等はタイル+スプライト)
文字はスプライト(タイルのBG面が足りないため)
つぎのレスにつづく

413:名前は開発中のものです。
06/02/13 14:41:59 eECtxr3h.net

2)SFCのころのFF風戦闘画面
要素:
背景画像
インターフェース
文字
プレイヤーキャラクター
モンスター
攻撃&魔法エフェクト
僕の予想では
画面モードはモード3。
背景、インターフェース、モンスターはビットマップ。
プレイヤーキャラクター、エフェクト、文字はスプライト。
タイルモードかなと思ったんですがボスキャラが消えるときとか
キャラ画像の奇数ラインと偶数ラインがずれて消えるときとかあるので
あれをタイルモードで再現する方法がわかりませんでした。
あってますでしょうか?アドバイス御願いします。

414:名前は開発中のものです。
06/02/13 16:11:54 2pbmjWEa.net
主人公、モンスター、効果はスプライト。
BGの仕様を決めるのは難しい。
どういう演出をするのかによって変わる。
背景を拡大縮小する演出をするならモード12345。
しないなら絵がたくさん登録できるモード0。
表示する情報が少なく簡単にレイアウトできるなら0123のキャラクターモード、
多色を使って、8x8ドットに縛られたくないならモード345。
でもモード345は情報量が多く重くなる。ダブルバッファを使用するなら
モード4か5しかない
たしかBGが容量の大きいモードのとき、スプライトの登録数が圧迫されるんじゃ
なかったっけ。
全体のバランスを取るには、だいたいの仕様を決めて
サンプルを作って動かしてみるしかないんじゃない?
FFも3とか4とか決めてそれを目標にすれば、イメージも明確になるのじゃいか。

415:名前は開発中のものです。
06/02/13 16:17:41 2pbmjWEa.net
そういえば文字の表示が大きな悩み。
日本語表示するのだろうから、VRAMにすべての文字を登録するのは
不可能。割り込み中に表示画面に必要な分の文字を転送するしかない。
あるいはダブルバッファリングできるモードを使う?
ということはビットマップモード4か5。キャラのモードの時は
意識して上の領域はA、そのとき見えない領域B
としてダブルバッファリンク゛することもできるけど。
GBA研究所の日本語表示サンプルを改造してドラクエ戦闘画面の
インターフェースみたいのをまず作ってみるべき。
ワールドマップとかはそのあとでもいい。まず日本語表示が難関。

416:名前は開発中のものです。
06/02/13 17:42:11 eECtxr3h.net
GBA研究所は落ちてるんですよね…。
マップエディタが入手できず大弱りです。

417:名前は開発中のものです。
06/02/13 19:45:25 VY0KRAb6.net
>>407
インターフェースと文字は一緒に出来る
あと戦闘中の文字は平仮名カタカナしかないことに気づこう
BG0 背景
BG1 文字+枠
BG2 半透明エフェクト
SPR 敵+エフェクト
>>408
BG0 敵
BG1 背景+文字
BG2 エフェクト
SPR 味方+エフェクト
FF6は
BG0 背景
BG1 背景+文字
BG2 半透明エフェクト
SPR 敵+味方+エフェクト
一部の魔法はBG2にウインドウ重ね掛けで
敵を消すときはタイルマップじゃなくてタイルを直接消してる

418:407
06/02/13 19:55:05 eECtxr3h.net
みなさん、アドバイス有難う御座います。
これでとりあえずの実装は出来そうです。
魔法別で悩んだらまた質問しますので
厳しくもやさしく教えてください。。。

419:名前は開発中のものです。
06/02/13 20:19:49 VY0KRAb6.net
俺のMAPエディタをうpしてやろうかと思ったけど
みなさんで一括りにされたからやめるか

420:名前は開発中のものです。
06/02/13 20:34:51 NZEWyj/P.net
心が狭いのね
狭くなくっちゃ、心も車も

421:名前は開発中のものです。
06/02/13 20:59:44 pe7jKuDW.net
文字表示の実装が全く分からないのですが、
分かりやすいサイトはないですか?

422:407
06/02/13 23:11:29 eECtxr3h.net
414さまアップお願い致します。

423:名前は開発中のものです。
06/02/13 23:53:36 VY0KRAb6.net
>>416
タイルモードのときはタイルを順番に横に並べて
並べたタイルに文字データを転送するだけ
ビットマップモードのときはVRAMに直接書けばいいだけなので
PCでやるのとやり方は一緒
どっちにしても文字データは自分で用意しなくちゃ駄目

424:名前は開発中のものです。
06/02/14 00:03:36 Mc0x+HZh.net
>>406
wav2gbaはv1.01だと、バイナリの先頭に
2byte: type
2byte: stat
4byte: freq
4byte: loop
4byte: size ←これがデータ長
なヘッダが付いてるので気を付けれ。

425:名前は開発中のものです。
06/02/14 00:06:53 x7UBz7YU.net
>>418
自分の書き方が悪かったです。printf関数みたいな
感じでやりたいんです。
そもそもprintf関数の仕組みがよく分からない・・・
のぞいて見てもチンプンカンプンです。

426:名前は開発中のものです。
06/02/14 00:34:47 WgJRobF9.net
>>420
sprintfで文字列を作って
その文字列を表示する関数を作るんだ
printfは最初から無いものとして諦めろ

427:名前は開発中のものです。
06/02/14 00:40:40 945ce4fT.net
研究所のやつじゃなくてもいいので
使い勝手のいいマップエディタしりませんか?
ドラクエ風のワールドマップを作りたいのですが。。。。

428:名前は開発中のものです。
06/02/14 00:51:24 kJMSUOot.net
URLリンク(user.chem.tue.nl)
この辺とかは?

429:名前は開発中のものです。
06/02/14 00:51:46 DPfKwksc.net
sprintfって使えたっけ?devkitadv
自作snprintfで対応しちゃった
#あと文字が書いてあるbitmap背景の2本立て

430:384
06/02/14 00:59:46 tYPhpHwC.net
俺もprintf関数もどき作りました。
全角の文字列を引数として受け取って、
その先頭のアドレスから、内容を4ビット(16進一桁、要するに文字コードの中の一桁)
ずつチェックしていき、最終的に文字コードとBGタイル番号をつき合わせて
BG一面に出力するようにしました
BGを一つ占領しちゃうんであまりよいやり方では無さそうですが

431:名前は開発中のものです。
06/02/14 01:49:16 WgJRobF9.net
>>424-425
自作するよりそっちの方が簡単だろうと思ってな
printf関数の仕組みが分からないとも書いてるし
もちろんsprintfはstring.hをincludeすれば使えるぞ

432:名前は開発中のものです。
06/02/14 18:19:17 KtOq4mfG.net
スプライトの表示数についてなんですが
最大128個でモード0〜2のVRAMのスプライトキャラクター領域は
32kバイトですよね?
32*32dotで16色のスプライトを扱う場合
下記の計算だと最大64個だと思うんですが
それ以上の表示が可能です。複数のエミュで確認したんですが
どれも表示できました。
私の計算方法がいけないんでしょうか?
それとも実機とは挙動が違うんでしょうか?

32*32dotのスプライトのデータサイズ
4bit(16色)*32dot*32dot=4096bit/8(byte換算)=512byte
VRAMのスプライトキャラクター領域
32kbyte=32768byte
16*32dotのスプライトの場合
32768byte(VRAM)/512byte(Sprite)=64個表示可能


433:名前は開発中のものです。
06/02/14 18:55:03 WgJRobF9.net
画像データ領域(VRAM)とキャラクター領域(OAM)は分離して考えろ
>>427の例で言うと
OAMには128個登録できても
VRAMには64種類の画像しか収まらない
逆に言うと64種類の画像を128個表示できるということ

434:429
06/02/14 19:29:47 KtOq4mfG.net
なるほど、つまりVRAMにおさまりさえすれば
64*64の画像を128個表示することができると
いうことなんですね。

435:424
06/02/14 21:44:12 oQP7vhex.net
自作snpritnf(snprintf_mini)です。良かったらどうぞ
URLリンク(49uper.com:8080)

436:420
06/02/15 23:02:19 UMaLkZ5l.net
ありがとうございます!
正直、よく分からないですが、参考にするか
もしくはそのまま使わせて頂きます!

437:名前は開発中のものです。
06/02/16 00:00:45 htR/zHvl.net
コンパイル出来たけど何も表示しまへん。
コンパイル用バッチファイル
SET PATH=c:\devkitadv;c:\devkitadv\bin;c:\devkitadv\tools:$PATH;
gcc -o main.elf main.c utils.c -mthumb-interwork
objcopy -O binary main.elf main.gba
どこがいかんのでしょう
みたとこ画像データが無いようですが。

438:424
06/02/16 09:40:13 IJObToHy.net
うん、文字画像データは入ってないよ
あくまでもおいらが作ったsnprintfの実装(snprintf_mini)だから文字列を作るだけです。
main.cはちゃんと作れているかどうか確認している単体テスト用のプログラム
なのでdevkitadvのgcc(arm-agb-elf-gcc)じゃなくて普通(?)のgccを使って
snprintf実装例を確認してね。
GUIなデバッガがあればどんな感じで処理してるか追っかけられるでしょ
#VCだとsnprintfが使えないかも。そのときはsprintfで代用して確認してね
作った文字列をVisualBoyAdvanceで表示するには文字列表示用の処理と文字データを
自分の環境用につくらないと出来ないです。
まず、putcみたいな1文字表示用の関数を作ってみてはどうでしょうか?

439:名前は開発中のものです。
06/02/16 09:44:32 zo8+sFWC.net
       ◆◆,,,,_    /⌒;
       /*' 3 `*ヽーっ   /<ワンワン,ツウツウ,スリィスリィ,フォウフォウ
    ⊂二  。 ゚  ⌒_つ/     ガンガン ズンズン グイグイ 上昇
       `、   ⌒_つ /
        `'ー-‐'''''"  /
            /_/
            ///


.         _____
.         `ヽ  ,」_ァ'"´ 
.      f'て}. ̄ rY   ト、  __ 
.     | r个 √`>‐.k } f゙)ヾ> 
      }l r ''"`ァ'゙  ,ノ、ム'^'ァ'゙
     人.ヒ,ィ゙ ァ弌__,,>'´゙ヽ
     い,  `'<,   ,r'^  ,ノ
.   }⌒'‐\ ,、    ゙'くョr.''"´
    い弌-、  \   }. ゝ-、
.    `'ー'  ゙'ー‐--‐'⌒''''''゙

440:名前は開発中のものです。
06/02/16 18:36:32 kz0iIF7u.net
>>433
これだけヒントを貰ってるのに文字表示すら自分で作れない香具師に
何をアドバイスしてやっても無駄だって。


441:名前は開発中のものです。
06/02/16 20:06:45 M6PXBfNk.net
>>433
親切すぎる。
漏れは呆れてレスする気がしなかったぐらいだってのに。

442:424
06/02/16 21:32:19 IJObToHy.net
確認用に作った文字表示用プログラムです
URLリンク(49uper.com:8080)
VCとVisualBoyAdvanceの両方で動作確認できるようにちょっと細工してます
このフォントデータは多分ライセンス違反になると思います。
#外見はラスタフォント6x13そのままです。
#文字を表示した状態のスクリーンショットBMPからデータを作りました・・・

443:名前は開発中のものです。
06/02/16 22:19:46 M6PXBfNk.net
拙作
URLリンク(gamdev.org)

444:名前は開発中のものです。
06/02/16 22:21:45 kxrgDS8c.net
>>438
俺が流用してるフォントと同じのを使ってる・・・気がする
俺は8x8でやってるけど

445:名前は開発中のものです。
06/02/16 22:53:00 Jk3f3/1N.net
>>438
liarsoftさん?

446:424
06/02/16 23:55:24 IJObToHy.net
へー、かっこいい
フリーのフォントって知らなかったけど調べてみたらいろいろあるんだな
とりあえず、FONTX形式にすればいいのだろうか?

447:432
06/02/17 16:40:32 x9jBkP1z.net
サンプルありがとうございます。
私は420=431さんとは別人です、横入りすみません。
フリーのフォント、元GBA研究所のサンプルにあったものを
流用しようと・・問題有りますでしょうか
完全フリーなものが欲しいのですけどそうなるとなかなか
ありませんよね。フリーソフトのみとかメールでの通知義務とか。

448:名前は開発中のものです。
06/02/17 18:32:26 iAZtWxeh.net
URLリンク(khdd.net)

449:424
06/02/18 01:08:37 uRwRaCgY.net
おお、サンクス
でもbdfフォーマットの仕様書はadobeの有料開発メンバじゃないと読めないのね・・・
で、探した結果、良さそうなページを発見
URLリンク(hp.vector.co.jp)
あとは日本語文字コードか、やれやれ。

450:名前は開発中のものです。
06/02/18 02:27:52 QKtp7HhO.net
DIRECTSOUNDをDMAで鳴らそうと
URLリンク(belogic.com)
を参考にしてるんですが、演奏を止めるためのTM1設定
REG_TM1CNT_L=0x7098; //0xffff-the number of samples to play
REG_TM1CNT_H=0xC4; //enable timer1 + irq and cascade from timer 0
のthe number of samples to playの算出式がよくわかりません。
単純にデータサイズというわけではなさそうですが。。。

451:名前は開発中のものです。
06/02/18 03:41:17 4ZdB2i2h.net
データサイズで合ってる
cascade from time 0になっているということは
timer 0が桁あふれしたときにtimer 1が1つ進むということ
timer 0が桁あふれしたとき同時に何が起こっているのか考えてみればそのうち分かる
頑張れ

452:名前は開発中のものです。
06/02/18 16:03:02 1rrcgcm5.net
>>446
すみません、もう少し教えてください
データサイズが0xffffを超える場合はどう設定すればいいのでしょうか?

453:名前は開発中のものです。
06/02/18 17:05:13 ZbScaNGm.net
フリーの日本語ビットマップフォント一覧
URLリンク(kappa.allnet.ne.jp)


454:名前は開発中のものです。
06/02/18 18:51:03 iQRmZRdR.net
5つほど上に既に貼ってあるジャマイカ

455:名前は開発中のものです。
06/02/18 21:15:59 yUcx3isO.net
研究所が未だに復活しない件。
猫でもみたいなTips集的な使い方をしていたので、他所を探すのが以外に大変。

456:名前は開発中のものです。
06/02/18 22:05:41 q2PjLLP+.net
儂はウェブアーカイブで拾ってきたよ。zipファイルは保存してないからサンプルは取れないけど。
ヘッダとソースは見られる。makefileが無いのが難点。

457:名前は開発中のものです。
06/02/19 01:10:26 prU8DMPB.net
>>447
どうしてもtimerを使って止めたいならtimer 2を使えばいい
お勧めしないが。。。
// (0xXXXX * 0xYYYY = datasize)
REG_TM1CNT_L=0x10000 - 0xXXXX;
REG_TM1CNT_H=0x84; //enable timer1 + cascade from timer 0
REG_TM1CNT_L=0x10000 - 0xYYYY;
REG_TM1CNT_H=0xC4; //enable timer2 + irq and cascade from timer 1
REG_IE=0x20; //enable irq for timer 2
REG_IME=1; //master enable interrupts

458:452
06/02/19 01:11:38 prU8DMPB.net
間違ったスマソ
// (0xXXXX * 0xYYYY = datasize)
REG_TM1CNT_L=0x10000 - 0xXXXX;
REG_TM1CNT_H=0x84; //enable timer1 + cascade from timer 0
REG_TM2CNT_L=0x10000 - 0xYYYY;
REG_TM2CNT_H=0xC4; //enable timer2 + irq and cascade from timer 1
REG_IE=0x20; //enable irq for timer 2
REG_IME=1; //master enable interrupts

459:名前は開発中のものです。
06/02/19 02:00:16 m3SmeD2S.net
>>452
了解しました。トライしてみます。
あと、timerを使わずに止める方法があるのならご教授プリーズ。


460:名前は開発中のものです。
06/02/19 04:25:56 iq15VETn.net
チョット違うことしてるのかな?一応
つdirecsoundサンプル
URLリンク(gamdev.org)

461:名前は開発中のものです。
06/02/19 10:19:03 QSXlPkGt.net
>>455
BeLogicのサンプルみたく別タイマーで止めないとダメだとばかり思い込んでました。
このスレよく読み直したら過去にヒントが出てたんですね。。。orz

462:名前は開発中のものです。
06/02/19 21:44:01 oTR8sHnf.net
DarkFaderのMylibとかNylibとか入れてみようと思ってやってみたがダメだ…。
やり方が悪いのかサンプルmakeできなかった。
ライブラリ自体はすごそうだ。使ってる人いる?

463:名前は開発中のものです。
06/02/20 03:17:45 B+Dm9jGk.net
NyLibは任天堂の純正ライブラリそのものだから使わないほうがいいぞ
MyLibはゴミ

464:名前は開発中のものです。
06/02/20 21:23:56 bbMb17ur.net
1Dモードでスプライトの属性を指定します。
attr2(ゼロが最初)のキャラクタ番号(0-9ビットまで)に指定の番号をセットすると正しく表示されません。
2倍の値をセットすると正しく指定できました。
これってあってる? ゼロビット目がキャラクタ番号じゃないんじゃ、とか思います。
1Dのスプライトについて書かれているページとかありませんか?

465:名前は開発中のものです。
06/02/20 21:39:23 LHhnamaS.net
マジですか。コンパイルもようできんからgcc自分で持ってきてarm-elfで作ったりしたんだがなぁ。
最低限eloistのgba.hとgbatekとかのドキュメント、あとは自分でがんばるかね。

466:名前は開発中のものです。
06/02/20 22:06:12 LHhnamaS.net
>>459
スプライトが256色設定の場合は2倍で指定するらしいからそのせいではないかな?

467:名前は開発中のものです。
06/02/21 00:33:12 zwimk+yf.net
>>459
気になるならVBAのTile Viewerでタイル番号とアドレスを確認すれ


468:名前は開発中のものです。
06/02/21 05:42:06 uuzcpC5q.net
ボタンを押した瞬間を取得したいんですが
下記のソースがうまく動作しません。
何がいけないかわかりますか?
//ボタンに関する列挙型
typedef enum{UP,DOWN,RIGHT,LEFT,A,B,L,R,START,SELECT} KEY;
//スタティックグローバル変数
static u32 sgKey; /* キーセンス */
static u32 sgKeyhit; /* キー押した瞬間 */
//メインループの頭でボタンの状態を一括取得
void UpdateKeySense(void)
{
static u32 keyold = 0;
sgKey = (u32)(*KEYS);
sgKeyhit = sgKey & (~keyold);
keyold = sgKey;
}
//特定のキーが今押されたかを調べる
u8 KeyHit(KEY key){
switch(key){
case A:
if(!(sgKeyhit & KEY_A)) return 1;
else return 0;
case B:
if(!(sgKeyhit & KEY_B)) return 1;
else return 0;
}
return 0;
}

469:名前は開発中のものです。
06/02/21 07:28:21 GiHvck/8.net
書き込みできるかテスト

470:名前は開発中のものです。
06/02/21 08:22:43 BSGVJJY5.net
>>463
それぞれの変数の値を出力してみろ

471:名前は開発中のものです。
06/02/25 15:23:38 LRNrnoNa.net
ある構造体に汎用的な配列を用意し、状況によって汎用配列部分に
別の構造体をキャストすることでいろいろ使い分けられるように
したいんですが下記(分けて書き込みます)のようなソースがうまく動きません。
「w->cnt = 5;」等の部分で値を代入しているのに正しい値がはいりません。
VC++では正しく代入できるようです。なぜだかわかりますか?
仕様なんでしょうか?

472:名前は開発中のものです。
06/02/25 15:24:22 LRNrnoNa.net
typedef struct{
u8use;/* 動作フラグ */
u16no;/* 自分自身のタスク番号 */
u8 phase;/* 動作フェーズ */
u8wrk[48];/* 汎用ワークエリア */
void*entryfunc;/* 実行関数 */
}TSKWRK;
TSKWRKts[10];/* 実体 */
/* 構造体 */
typedef struct{
u16 cnt;
u8 x;
u8 y;
u32 tmp;
}TEST;
//メイン処理
int main(void)
{
TSKWRK *tp = &ts[0];
TEST *w = (TEST*)&tp->wrk[0];
  w->cnt = 5;
  w->x = 4;
w->y = 9;
w->tmp = 1;
}

473:名前は開発中のものです。
06/02/25 15:25:34 LRNrnoNa.net
変数の型と変数名がつながっているのは書き込み時に
つながってしまったもので実際には正しく記述しています。

474:名前は開発中のものです。
06/02/25 16:32:04 ChwfFfDn.net
>>466-467
アライメントの勉強をしてみよう。
URLリンク(www.google.co.jp)
この場合は u8 のアライメントしか持っていない wrk に
u16 としてアクセスしていることが原因。
GBA の CPU である ARM ではアライメント違反した書き込みはできない。
VC++ で正しく動作するように見えるのは CPU が違うから。
x86 系ではアライメント違反した書き込みはパフォーマンスが落ちるだけ。

475:424
06/02/25 17:25:32 T5T+YA0I.net
こういう使い方をしたいときはunionを使うんだっけ?
使ったことないけど

476:名前は開発中のものです。
06/02/25 17:28:03 JLoubNl/.net
>>466
>>469を踏まえてこれでもう一度テストしれ
typedef struct{
u8 use;/* 動作フラグ */
u16 no;/* 自分自身のタスク番号 */
u8 phase;/* 動作フェーズ */
u8 wrk[48];/* 汎用ワークエリア */
void *entryfunc;/* 実行関数 */
}


477: __attribute__ ((packed)) TSKWRK; typedef struct{ u16 cnt; u8 x; u8 y; u32 tmp; } __attribute__ ((packed)) TEST;



478:名前は開発中のものです。
06/02/25 17:30:14 JLoubNl/.net
>>470
この場合unionは全く関係ないし的外れ

479:名前は開発中のものです。
06/02/25 17:32:36 +k+s2zkt.net
メモリをダンプしてみろ
それからだ。

480:名前は開発中のものです。
06/02/25 17:38:12 ChwfFfDn.net
>>470,472
union 使ってアライメント確保する方法がある。
Cだとコレぐらいでいいんじゃないかな?
union
{
 u8 size_holder[48];
 void* pointer_align;
 long long integer_align;
 long double floating_point_align;
} wrk;
C++ だとメンバ変数・関数ポインタを追加。
>>471
packed はパフォーマンス落としたりバイナリ互換に問題が発生したりするんで
気をつけて使う必要がある。非標準になるしね。
その例だと TSKWRK に packed は必要ない。

481:名前は開発中のものです。
06/02/25 18:20:18 LRNrnoNa.net
みなさん、アドバイスありがとうございます。
アライメント自体の概念はわかりました。
実用についてはまだよくわからんのですこし調べてみます。
>>474
unionのサンプルの意味は
u8でサイズを決めつつ、何のデータを扱ってもいいように
void型のポインタと最大サイズの整数と浮動少数で
共用体を定義しているということでよろしいでしょうか?
あと、私が書き込んだソースを下記のように修正したら問題なく
動くようになったんですがこのまま使い続けるのは
問題あるでしょうか? 
u8 wrk[48] → u32 wrk[12]

482:474
06/02/25 18:33:56 ChwfFfDn.net
>>475
サンプルの意味はそういうこと。
union 自体のアライメント要求がメンバの中で最大の物になることを利用したもの。
GBA のハードウェアで4バイト以上のアライメントを要求するものは
無かったと思うので、 GBA に限った動作だけを考えれば
u32 での置き換えで問題ないと言える。

483:名前は開発中のものです。
06/02/26 00:08:14 WfB5cmW7.net
関係ないけど
GBAって電源切ったとき画面の色が黒でなく白なのはなんでだろう?

484:名前は開発中のものです。
06/02/26 00:10:13 vz2qCRmn.net
白黒液晶ってのは黒色の文字を表示するものだから背景が黒かったらどうしようもないと
ここまで書いてGBAが白黒ではないという事実を思い出した

485:名前は開発中のものです。
06/02/26 07:47:46 e+6sQVje.net
>>381 ノベル制作ツール「のべ〜る」で
VisualBoyAdvanceでプログラムスタート直後に音割れする現象の対策
*TOP:
#play_wav 1 music0.bin
#page
■セロ弾きのゴーシュ;
ゴーシュは町の活動写真館でセロを弾く係りでした。#w ;
けれどもあんまり上手でないと評判でした。#w ;
……
スクリプト開始のしょっぱなに何より先に#play_wavし、
直後に#pageします。これでなぜか音割れ現象が発生しなくなります。
なぜこれでうまくいくのかはよく分かりません。
ちなみに実機やその他のエミュでは試していません。
もしかしたら割り込み内でサウンドの処理より画像の処理を
先にやってるのかなとか思ったり・・見当ハズレなら作者さまスマソ。
これで使える。ヤター!

486:479
06/02/26 07:53:54 e+6sQVje.net
のべ〜るは>>380
でした。失礼。

487:466
06/02/26 15:39:57 UpVKMws2.net
構造体のキャストで質問したものです。
とりあえず、みなさんのおかげで
スプライト制御が一段落したんで
経過をご報告します。
URLリンク(2ch-library.com)

488:名前は開発中のものです。
06/02/27 22:06:09 KqQE3G30.net
くだ質で大変申し訳ないのですが、
C++でGBAのプログラミングはできないのでしょうか?
様々なサイトをググってみたのですが、すべてCでの開発で
C++を扱っているサイトを全く見かけません。
よろしければご教授をお願いします。

489:名前は開発中のものです。
06/02/27 22:45:37 NtZAdaLq.net
>>482 gcc なんだから、できるよ。

490:名前は開発中のものです。
06/02/27 23:07:51 yy1S2zAQ.net
>>482
つ Tennodai Bunko

491:482
06/02/28 00:35:45 jBhKnEbd.net
>>484氏に紹介いただいたサイトを見る限り、DevkitAdvanceで普通にできそうですね。
早速試してみようと思います。
どうもありがとうございました。

492:名前は開発中のものです。
06/02/28 09:22:37 1wwrrnAa.net
GBAプログラミング研究所のBMP2RGB.exeで256色の出力のとき、
255番のパレットを指定したドットが0x00になり、
255番のパレット自体も0x0000になって出力されるんだけど
何か意味があるのでしょうか。


493:名前は開発中のものです。
06/02/28 13:47:49 ykuetkSe.net
確証は無いけど透明色じゃないの?

494:名前は開発中のものです。
06/03/01 17:29:46 CwoNSWML.net
ソースレベルデバッグをしたいんですが
MAPPY VMとVHAM&DevkitAdvanceの組み合わせの場合
どのようにすればよいのでしょうか?
また、NO$GBAとMAPPY VMだとどの程度違いますか?


495:名前は開発中のものです。
06/03/02 21:30:54 yUNPC8aZ.net
Insight + VBA(devel版) で*.elf読ませる方が楽っぽくね?

496:名前は開発中のものです。
06/03/02 22:48:33 LnIoHKvJ.net
arm-agb-elf-insightつかってデバッグするときにVisualBoyAdvanceの画面の状態を
確認しながらデバッグするにはどうしたらいいのですか?
File-TargetSettingからConnection-TargetをSimulatar選んでからOptionをVBAの
GDB接続待ちPortの数字にあわせればいいのですか?
InsightデバッガからRun-ConnectTargetはSucessfully connectedってでるから
成功したのかな?
でも、VBA側の接続待ち状態ダイアログが消えないから違うんだろうなぁ


497:名前は開発中のものです。
06/03/02 23:52:12 fFp03F4Q.net
>>490
漏れの環境ではVBA-SDLでしかInsightと接続できないorz

498:名前は開発中のものです。
06/03/04 11:46:20 m5qLcxRB.net
ところでGBAゲームでセーブデータってどうやって作るんですが?
研究所にはあったみたいだけど落ちてて見れない・・・

499:名前は開発中のものです。
06/03/04 13:52:52 x3hAFwv9.net
>>492
VBAでGBAファイル起動

500:名前は開発中のものです。
06/03/04 14:06:07 KUpila9P.net
>>455
このサンプルでDirectSoundの再生方法を試しているんですが
サウンド再生関数を1回目に実行した際には音がならず
2回目の実行で音がなります。
これ以外のDirectSoundのサンプルでも同様の現象が起きます。
455のサンプルに関してはソースをまんまでコンパイルしても
同様の現象になります。
付属のロムデータでは正しく動作しているようですが
何がいけないかわかりますか?


501:名前は開発中のものです。
06/03/04 17:16:26 KUpila9P.net
やっとこさゲームらしくなってきたんですけど
サウンドがなるとめっさ重いんですよね。
GBAってこんなもんなんでしょうか?
それともプログラムがヘボイだけ?
URLリンク(2ch-library.com)

502:名前は開発中のものです。
06/03/04 17:18:01 vi0lIxtr.net
AGBがまともにサウンドを鳴らせないほど非力なのは仕様です

503:名前は開発中のものです。
06/03/04 17:34:40 KUpila9P.net
まじですか!?
じゃあ、GB互換音源を使うしかないんですね。
研究所が消滅してコンバーターの入手も難しいし
こまったもんだ…。

504:492
06/03/04 21:18:52 m5qLcxRB.net
>>493
いや、そういう意味じゃなくて、
自作したゲームにセーブデータを作らせようと思ったらどうすればいいんですか?

505:名前は開発中のものです。
06/03/04 21:53:58 Msh9zdwX.net
>494
キーを入力しないと鳴らないんです。
main.cをコレで鳴るんじゃない?
mu_wok = 0;// 再生の直前に++のため、0からの値になります。
se_wok = 0;
PlayMusic(mu_wok,PLAY_LOOP_ON); //※追加
while(1)
{
>497
4つもの機能のちがう音源を制御するのが重そう。
ゲーム部分を軽くすることは出来ないでしょうか…

506:名前は開発中のものです。
06/03/04 22:08:24 Msh9zdwX.net
GBAプログラミング研究所って結局どうなりました?
どこかへ移転したとか…
日本のGBA開発に欠かせないサイトだったし、あれほどみんなが
利用していたのに突如閉鎖というのは有り得ない。

507:名前は開発中のものです。
06/03/04 22:30:48 ega3649d.net
>>498
SRAM(0x0E000000〜)に数値書き込めばいい

508:名前は開発中のものです。
06/03/05 10:53:06 bBYTbtx/.net
>>500
管理人が捕まったとか

509:名前は開発中のものです。
06/03/05 11:16:39 JLfn0Pan.net
>>502
iswebからアマゾンの広告かなんかに警告出されたとかいうこと書いてなかったっけ?
それ放置してたら消されたとか?

510:名前は開発中のものです。
06/03/05 16:30:00 vg84cSdA.net
>>503
怒られたので消しました、って更新履歴にあったような気が?
今となっては確認が難しいが。

511:名前は開発中のものです。
06/03/05 22:27:41 aIloybH9.net
”捕まった”とか言うとデマに発展しそうな気がしてイヤンな感じ
広告掲載の方法についてサーバーの提供元から警告が来たので広告を消した、
というような更新が最後だった希ガス
確かにGBAの方は更新がほぼ止ってたような気がしないでもないが
DS用のページも作ってたみたいだし(DSの方はやってないのでよく知らないが)
更新意欲がなくなってそのままフェードアウトした感じではないのだが・・・

512:名前は開発中のものです。
06/03/05 22:32:48 ZGr9k1wh.net
DSの方の掲示板は業者スパムだらけだったな

513:名前は開発中のものです。
06/03/07 00:19:36 2maRPTXR.net
ソニックザヘッジホッグやロックマンとかの横スクロールアクションで
地形、足場の当たり判定をどのように持つかについて質問なんですが
素人考えだと
@タイルごとに当たり判定の属性を持つ。
A当たり判定のある背景だけを一つのBGに分けて
 背景色以外の部分に当たり判定を持つ。
だと思うのですが
@だとタイル単位でしか扱えないため斜めの坂などの複雑な地形を作れません。
Aだと坂とかも表現できるとおもいます。
でも、ロックマンゼロとかのマップデータをVBAで確認してみると
当たり判定がある部分と無い部分の背景が一枚のBGに描かれています。
この場合、どのように当たり判定を持っているのでしょうか?
作成するゲームによって当たり判定の持ち方は変わってくると思いますが
上記のようなゲームを作る場合はどのように当たり判定を持つのが一般的でしょうか?
参考になるサイトとかあれば教えてもらえないでしょうか?


514:名前は開発中のものです。
06/03/07 01:50:52 TN1OAFRk.net
>>480
URLリンク(gamdev.org)


515:名前は開発中のものです。
06/03/07 07:32:50 P11agiDo.net
>>507
当たり判定だけのマップを作る
そのマップが視覚的に見えてる必要は無い

516:名前は開発中のものです。
06/03/07 07:35:16 jNiGJUSI.net
>>507
BGにとらわれずに、マップのパラメータを配列の変数として持てばいいんじゃね?
床と傾斜の違いも同じく。

517:名前は開発中のものです。
06/03/07 22:33:51 GCKxwI5B.net
>>507のAは草の上を歩く場合、困ったことに…葉っぱ一枚の上にも


518:謔チかってしまう。 >>509 510のやり方をになると想像。チップごとに当たり判定がある@の方法。 チップごとに次のような判定をする。 0…当たり判定無し  □□□□  □□□□  □□□□  □□□□ @…当たり判定あり。  ■■■■  ■■■■  ■■■■  ■■■■ A…当たり判定ありで次のような判定をする  ■□□□  ■■□□  ■■■□  ■■■■ B…当たり判定ありで次のような判定をする。  □□□■  □□■■  □■■■  ■■■■ 白い□の部分は当たり判定が無い。背景チップ番号を取得して0〜Bの場合に 分けて当たり判定。当たり判定の種類をもっと増やすこともできる。 これでマリオ風の坂道をなだらかに歩いて降りる表現もできるようになる。 チップ内の当たり判定だけど、上は4x4マスにしたけど、8x8ドットで 判定するなら8x8マスでの当たった/当たらない判定になる。 やったことないので想像です、スマソ。




次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

298日前に更新/260 KB
担当:undef