[過去ログ] ゲームボーイアドバンス(GBA)非公式開発 Part2 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
403: 2006/02/12(日)17:33 ID:7Ys7XIFa(2/2) AAS
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
省18
404: 2006/02/12(日)20:32 ID:lQGmnJOY(1) AAS
>>402
>フレーム数を計ってプログラマーの方で手動で再生を切っているようですがそんな方法しかないのでしょうか
そんな方法しか無い
サウンドのサイズを自分で管理し
サイズ分転送したらDMAとサウンドの両方を止めれ
405: 2006/02/12(日)23:09 ID:Cgq3GpSK(1) AAS
わかりました・・・
頑張って自前で管理することにします
406(1): 2006/02/13(月)02:39 ID:Gtc5I6Df(1) AAS
ファイル長はすぐわかるね。
wav2gba.exeの吐き出した.binデータを右クリック、プロパティを開く
サイズ ???KB (????? バイト)
()内のバイトがファイルサイズ。
407(3): 2006/02/13(月)14:40 ID:eECtxr3h(1/5) AAS
次のゲームの画面を再現するにはどの画面モードで
各要素をどの画像で再現すればいいでしょうか?
1)SFCのころのドラクエ風戦闘画面
要素:
背景画像
インターフェース
文字
省9
408(1): 2006/02/13(月)14:41 ID:eECtxr3h(2/5) AAS
2)SFCのころのFF風戦闘画面
要素:
背景画像
インターフェース
文字
プレイヤーキャラクター
省10
409: 2006/02/13(月)16:11 ID:2pbmjWEa(1/2) AAS
主人公、モンスター、効果はスプライト。
BGの仕様を決めるのは難しい。
どういう演出をするのかによって変わる。
背景を拡大縮小する演出をするならモード12345。
しないなら絵がたくさん登録できるモード0。
表示する情報が少なく簡単にレイアウトできるなら0123のキャラクターモード、
多色を使って、8x8ドットに縛られたくないならモード345。
省7
410: 2006/02/13(月)16:17 ID:2pbmjWEa(2/2) AAS
そういえば文字の表示が大きな悩み。
日本語表示するのだろうから、VRAMにすべての文字を登録するのは
不可能。割り込み中に表示画面に必要な分の文字を転送するしかない。
あるいはダブルバッファリングできるモードを使う?
ということはビットマップモード4か5。キャラのモードの時は
意識して上の領域はA、そのとき見えない領域B
としてダブルバッファリンク゛することもできるけど。
省3
411: 2006/02/13(月)17:42 ID:eECtxr3h(3/5) AAS
GBA研究所は落ちてるんですよね…。
マップエディタが入手できず大弱りです。
412: 2006/02/13(月)19:45 ID:VY0KRAb6(1/3) AAS
>>407
インターフェースと文字は一緒に出来る
あと戦闘中の文字は平仮名カタカナしかないことに気づこう
BG0 背景
BG1 文字+枠
BG2 半透明エフェクト
SPR 敵+エフェクト
省12
413: 407 2006/02/13(月)19:55 ID:eECtxr3h(4/5) AAS
みなさん、アドバイス有難う御座います。
これでとりあえずの実装は出来そうです。
魔法別で悩んだらまた質問しますので
厳しくもやさしく教えてください。。。
414: 2006/02/13(月)20:19 ID:VY0KRAb6(2/3) AAS
俺のMAPエディタをうpしてやろうかと思ったけど
みなさんで一括りにされたからやめるか
415: 2006/02/13(月)20:34 ID:NZEWyj/P(1) AAS
心が狭いのね
狭くなくっちゃ、心も車も
416(1): 2006/02/13(月)20:59 ID:pe7jKuDW(1) AAS
文字表示の実装が全く分からないのですが、
分かりやすいサイトはないですか?
417: 407 2006/02/13(月)23:11 ID:eECtxr3h(5/5) AAS
414さまアップお願い致します。
418(1): 2006/02/13(月)23:53 ID:VY0KRAb6(3/3) AAS
>>416
タイルモードのときはタイルを順番に横に並べて
並べたタイルに文字データを転送するだけ
ビットマップモードのときはVRAMに直接書けばいいだけなので
PCでやるのとやり方は一緒
どっちにしても文字データは自分で用意しなくちゃ駄目
419: 2006/02/14(火)00:03 ID:Mc0x+HZh(1) AAS
>>406
wav2gbaはv1.01だと、バイナリの先頭に
2byte: type
2byte: stat
4byte: freq
4byte: loop
4byte: size ←これがデータ長
省1
420(2): 2006/02/14(火)00:06 ID:x7UBz7YU(1) AAS
>>418
自分の書き方が悪かったです。printf関数みたいな
感じでやりたいんです。
そもそもprintf関数の仕組みがよく分からない・・・
のぞいて見てもチンプンカンプンです。
421: 2006/02/14(火)00:34 ID:WgJRobF9(1/3) AAS
>>420
sprintfで文字列を作って
その文字列を表示する関数を作るんだ
printfは最初から無いものとして諦めろ
422: 2006/02/14(火)00:40 ID:945ce4fT(1) AAS
研究所のやつじゃなくてもいいので
使い勝手のいいマップエディタしりませんか?
ドラクエ風のワールドマップを作りたいのですが。。。。
423: 2006/02/14(火)00:51 ID:kJMSUOot(1) AAS
外部リンク[htm]:user.chem.tue.nl
この辺とかは?
424(7): [age] 2006/02/14(火)00:51 ID:DPfKwksc(1) AAS
sprintfって使えたっけ?devkitadv
自作snprintfで対応しちゃった
#あと文字が書いてあるbitmap背景の2本立て
425(1): 384 2006/02/14(火)00:59 ID:tYPhpHwC(1) AAS
俺もprintf関数もどき作りました。
全角の文字列を引数として受け取って、
その先頭のアドレスから、内容を4ビット(16進一桁、要するに文字コードの中の一桁)
ずつチェックしていき、最終的に文字コードとBGタイル番号をつき合わせて
BG一面に出力するようにしました
BGを一つ占領しちゃうんであまりよいやり方では無さそうですが
426: 2006/02/14(火)01:49 ID:WgJRobF9(2/3) AAS
>>424-425
自作するよりそっちの方が簡単だろうと思ってな
printf関数の仕組みが分からないとも書いてるし
もちろんsprintfはstring.hをincludeすれば使えるぞ
427(1): 2006/02/14(火)18:19 ID:KtOq4mfG(1/2) AAS
スプライトの表示数についてなんですが
最大128個でモード0〜2のVRAMのスプライトキャラクター領域は
32kバイトですよね?
32*32dotで16色のスプライトを扱う場合
下記の計算だと最大64個だと思うんですが
それ以上の表示が可能です。複数のエミュで確認したんですが
どれも表示できました。
省8
428: 2006/02/14(火)18:55 ID:WgJRobF9(3/3) AAS
画像データ領域(VRAM)とキャラクター領域(OAM)は分離して考えろ
>>427の例で言うと
OAMには128個登録できても
VRAMには64種類の画像しか収まらない
逆に言うと64種類の画像を128個表示できるということ
429(1): 429 2006/02/14(火)19:29 ID:KtOq4mfG(2/2) AAS
なるほど、つまりVRAMにおさまりさえすれば
64*64の画像を128個表示することができると
いうことなんですね。
430: 424 [age] 2006/02/14(火)21:44 ID:oQP7vhex(1) AAS
自作snpritnf(snprintf_mini)です。良かったらどうぞ
外部リンク[lzh]:49uper.com:8080
431: 420 2006/02/15(水)23:02 ID:UMaLkZ5l(1) AAS
ありがとうございます!
正直、よく分からないですが、参考にするか
もしくはそのまま使わせて頂きます!
432(1): 2006/02/16(木)00:00 ID:htR/zHvl(1) AAS
コンパイル出来たけど何も表示しまへん。
コンパイル用バッチファイル
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
どこがいかんのでしょう
みたとこ画像データが無いようですが。
433(2): 424 [age] 2006/02/16(木)09:40 ID:IJObToHy(1/3) AAS
うん、文字画像データは入ってないよ
あくまでもおいらが作ったsnprintfの実装(snprintf_mini)だから文字列を作るだけです。
main.cはちゃんと作れているかどうか確認している単体テスト用のプログラム
なのでdevkitadvのgcc(arm-agb-elf-gcc)じゃなくて普通(?)のgccを使って
snprintf実装例を確認してね。
GUIなデバッガがあればどんな感じで処理してるか追っかけられるでしょ
#VCだとsnprintfが使えないかも。そのときはsprintfで代用して確認してね
省3
434: 2006/02/16(木)09:44 ID:zo8+sFWC(1) AAS
AA省
435: 2006/02/16(木)18:36 ID:kz0iIF7u(1) AAS
>>433
これだけヒントを貰ってるのに文字表示すら自分で作れない香具師に
何をアドバイスしてやっても無駄だって。
436: 2006/02/16(木)20:06 ID:M6PXBfNk(1/2) AAS
>>433
親切すぎる。
漏れは呆れてレスする気がしなかったぐらいだってのに。
437: 424 [age] 2006/02/16(木)21:32 ID:IJObToHy(2/3) AAS
確認用に作った文字表示用プログラムです
外部リンク[lzh]:49uper.com:8080
VCとVisualBoyAdvanceの両方で動作確認できるようにちょっと細工してます
このフォントデータは多分ライセンス違反になると思います。
#外見はラスタフォント6x13そのままです。
#文字を表示した状態のスクリーンショットBMPからデータを作りました・・・
438(2): 2006/02/16(木)22:19 ID:M6PXBfNk(2/2) AAS
拙作
画像リンク[png]:gamdev.org
439: 2006/02/16(木)22:21 ID:kxrgDS8c(1) AAS
>>438
俺が流用してるフォントと同じのを使ってる・・・気がする
俺は8x8でやってるけど
440: 2006/02/16(木)22:53 ID:Jk3f3/1N(1) AAS
>>438
liarsoftさん?
441: 424 [age] 2006/02/16(木)23:55 ID:IJObToHy(3/3) AAS
へー、かっこいい
フリーのフォントって知らなかったけど調べてみたらいろいろあるんだな
とりあえず、FONTX形式にすればいいのだろうか?
442: 432 2006/02/17(金)16:40 ID:x9jBkP1z(1) AAS
サンプルありがとうございます。
私は420=431さんとは別人です、横入りすみません。
フリーのフォント、元GBA研究所のサンプルにあったものを
流用しようと・・問題有りますでしょうか
完全フリーなものが欲しいのですけどそうなるとなかなか
ありませんよね。フリーソフトのみとかメールでの通知義務とか。
443: 2006/02/17(金)18:32 ID:iAZtWxeh(1) AAS
外部リンク[html]:khdd.net
444: 424 [age] 2006/02/18(土)01:08 ID:uRwRaCgY(1) AAS
おお、サンクス
でもbdfフォーマットの仕様書はadobeの有料開発メンバじゃないと読めないのね・・・
で、探した結果、良さそうなページを発見
外部リンク[html]:hp.vector.co.jp
あとは日本語文字コードか、やれやれ。
445: 2006/02/18(土)02:27 ID:QKtp7HhO(1) AAS
DIRECTSOUNDをDMAで鳴らそうと
外部リンク: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の算出式がよくわかりません。
単純にデータサイズというわけではなさそうですが。。。
446(1): 2006/02/18(土)03:41 ID:4ZdB2i2h(1) AAS
データサイズで合ってる
cascade from time 0になっているということは
timer 0が桁あふれしたときにtimer 1が1つ進むということ
timer 0が桁あふれしたとき同時に何が起こっているのか考えてみればそのうち分かる
頑張れ
447(1): 2006/02/18(土)16:03 ID:1rrcgcm5(1) AAS
>>446
すみません、もう少し教えてください
データサイズが0xffffを超える場合はどう設定すればいいのでしょうか?
448: 2006/02/18(土)17:05 ID:ZbScaNGm(1) AAS
フリーの日本語ビットマップフォント一覧
外部リンク[html]:kappa.allnet.ne.jp
449: 2006/02/18(土)18:51 ID:iQRmZRdR(1) AAS
5つほど上に既に貼ってあるジャマイカ
450: 2006/02/18(土)21:15 ID:yUcx3isO(1) AAS
研究所が未だに復活しない件。
猫でもみたいなTips集的な使い方をしていたので、他所を探すのが以外に大変。
451: 2006/02/18(土)22:05 ID:q2PjLLP+(1) AAS
儂はウェブアーカイブで拾ってきたよ。zipファイルは保存してないからサンプルは取れないけど。
ヘッダとソースは見られる。makefileが無いのが難点。
452(2): 2006/02/19(日)01:10 ID:prU8DMPB(1/2) AAS
>>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;
省3
453: 452 2006/02/19(日)01:11 ID:prU8DMPB(2/2) AAS
間違ったスマソ
// (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
省1
454: 2006/02/19(日)02:00 ID:m3SmeD2S(1) AAS
>>452
了解しました。トライしてみます。
あと、timerを使わずに止める方法があるのならご教授プリーズ。
455(2): 2006/02/19(日)04:25 ID:iq15VETn(1) AAS
チョット違うことしてるのかな?一応
つdirecsoundサンプル
外部リンク[zip]:gamdev.org
456: 2006/02/19(日)10:19 ID:QSXlPkGt(1) AAS
>>455
BeLogicのサンプルみたく別タイマーで止めないとダメだとばかり思い込んでました。
このスレよく読み直したら過去にヒントが出てたんですね。。。orz
457: 2006/02/19(日)21:44 ID:oTR8sHnf(1) AAS
DarkFaderのMylibとかNylibとか入れてみようと思ってやってみたがダメだ…。
やり方が悪いのかサンプルmakeできなかった。
ライブラリ自体はすごそうだ。使ってる人いる?
458: 2006/02/20(月)03:17 ID:B+Dm9jGk(1) AAS
NyLibは任天堂の純正ライブラリそのものだから使わないほうがいいぞ
MyLibはゴミ
459(2): 2006/02/20(月)21:23 ID:bbMb17ur(1) AAS
1Dモードでスプライトの属性を指定します。
attr2(ゼロが最初)のキャラクタ番号(0-9ビットまで)に指定の番号をセットすると正しく表示されません。
2倍の値をセットすると正しく指定できました。
これってあってる? ゼロビット目がキャラクタ番号じゃないんじゃ、とか思います。
1Dのスプライトについて書かれているページとかありませんか?
460: 2006/02/20(月)21:39 ID:LHhnamaS(1/2) AAS
マジですか。コンパイルもようできんからgcc自分で持ってきてarm-elfで作ったりしたんだがなぁ。
最低限eloistのgba.hとgbatekとかのドキュメント、あとは自分でがんばるかね。
461: 2006/02/20(月)22:06 ID:LHhnamaS(2/2) AAS
>>459
スプライトが256色設定の場合は2倍で指定するらしいからそのせいではないかな?
462: 2006/02/21(火)00:33 ID:zwimk+yf(1) AAS
>>459
気になるならVBAのTile Viewerでタイル番号とアドレスを確認すれ
463(1): 2006/02/21(火)05:42 ID:uuzcpC5q(1) AAS
ボタンを押した瞬間を取得したいんですが
下記のソースがうまく動作しません。
何がいけないかわかりますか?
//ボタンに関する列挙型
typedef enum{UP,DOWN,RIGHT,LEFT,A,B,L,R,START,SELECT} KEY;
//スタティックグローバル変数
static u32 sgKey; /* キーセンス */
省21
464: 2006/02/21(火)07:28 ID:GiHvck/8(1) AAS
書き込みできるかテスト
465: 2006/02/21(火)08:22 ID:BSGVJJY5(1) AAS
>>463
それぞれの変数の値を出力してみろ
466(3): 2006/02/25(土)15:23 ID:LRNrnoNa(1/4) AAS
ある構造体に汎用的な配列を用意し、状況によって汎用配列部分に
別の構造体をキャストすることでいろいろ使い分けられるように
したいんですが下記(分けて書き込みます)のようなソースがうまく動きません。
「w->cnt = 5;」等の部分で値を代入しているのに正しい値がはいりません。
VC++では正しく代入できるようです。なぜだかわかりますか?
仕様なんでしょうか?
467(1): 2006/02/25(土)15:24 ID:LRNrnoNa(2/4) AAS
typedef struct{
u8use;/* 動作フラグ */
u16no;/* 自分自身のタスク番号 */
u8 phase;/* 動作フェーズ */
u8wrk[48];/* 汎用ワークエリア */
void*entryfunc;/* 実行関数 */
}TSKWRK;
省18
468: 2006/02/25(土)15:25 ID:LRNrnoNa(3/4) AAS
変数の型と変数名がつながっているのは書き込み時に
つながってしまったもので実際には正しく記述しています。
469(1): 2006/02/25(土)16:32 ID:ChwfFfDn(1/3) AAS
>>466-467
アライメントの勉強をしてみよう。
外部リンク:www.google.co.jp
この場合は u8 のアライメントしか持っていない wrk に
u16 としてアクセスしていることが原因。
GBA の CPU である ARM ではアライメント違反した書き込みはできない。
VC++ で正しく動作するように見えるのは CPU が違うから。
省1
470(2): 424 [age] 2006/02/25(土)17:25 ID:T5T+YA0I(1) AAS
こういう使い方をしたいときはunionを使うんだっけ?
使ったことないけど
471(1): 2006/02/25(土)17:28 ID:JLoubNl/(1/2) AAS
>>466
>>469を踏まえてこれでもう一度テストしれ
typedef struct{
u8 use;/* 動作フラグ */
u16 no;/* 自分自身のタスク番号 */
u8 phase;/* 動作フェーズ */
u8 wrk[48];/* 汎用ワークエリア */
省8
472(1): 2006/02/25(土)17:30 ID:JLoubNl/(2/2) AAS
>>470
この場合unionは全く関係ないし的外れ
473: 2006/02/25(土)17:32 ID:+k+s2zkt(1) AAS
メモリをダンプしてみろ
それからだ。
474(2): 2006/02/25(土)17:38 ID:ChwfFfDn(2/3) AAS
>>470,472
union 使ってアライメント確保する方法がある。
Cだとコレぐらいでいいんじゃないかな?
union
{
u8 size_holder[48];
void* pointer_align;
省8
475(1): 2006/02/25(土)18:20 ID:LRNrnoNa(4/4) AAS
みなさん、アドバイスありがとうございます。
アライメント自体の概念はわかりました。
実用についてはまだよくわからんのですこし調べてみます。
>>474
unionのサンプルの意味は
u8でサイズを決めつつ、何のデータを扱ってもいいように
void型のポインタと最大サイズの整数と浮動少数で
省5
476: 474 2006/02/25(土)18:33 ID:ChwfFfDn(3/3) AAS
>>475
サンプルの意味はそういうこと。
union 自体のアライメント要求がメンバの中で最大の物になることを利用したもの。
GBA のハードウェアで4バイト以上のアライメントを要求するものは
無かったと思うので、 GBA に限った動作だけを考えれば
u32 での置き換えで問題ないと言える。
477: 2006/02/26(日)00:08 ID:WfB5cmW7(1) AAS
関係ないけど
GBAって電源切ったとき画面の色が黒でなく白なのはなんでだろう?
478: 2006/02/26(日)00:10 ID:vz2qCRmn(1) AAS
白黒液晶ってのは黒色の文字を表示するものだから背景が黒かったらどうしようもないと
ここまで書いてGBAが白黒ではないという事実を思い出した
479(1): 2006/02/26(日)07:47 ID:e+6sQVje(1/2) AAS
>>381 ノベル制作ツール「のべ〜る」で
VisualBoyAdvanceでプログラムスタート直後に音割れする現象の対策
*TOP:
#play_wav 1 music0.bin
#page
■セロ弾きのゴーシュ;
ゴーシュは町の活動写真館でセロを弾く係りでした。#w ;
省9
480(1): 479 2006/02/26(日)07:53 ID:e+6sQVje(2/2) AAS
のべ〜るは>>380
でした。失礼。
481: 466 2006/02/26(日)15:39 ID:UpVKMws2(1) AAS
構造体のキャストで質問したものです。
とりあえず、みなさんのおかげで
スプライト制御が一段落したんで
経過をご報告します。
外部リンク[zip]:2ch-library.com
482(3): 2006/02/27(月)22:06 ID:KqQE3G30(1) AAS
くだ質で大変申し訳ないのですが、
C++でGBAのプログラミングはできないのでしょうか?
様々なサイトをググってみたのですが、すべてCでの開発で
C++を扱っているサイトを全く見かけません。
よろしければご教授をお願いします。
483: 2006/02/27(月)22:45 ID:NtZAdaLq(1) AAS
>>482 gcc なんだから、できるよ。
上下前次1-新書関写板覧索設栞歴
あと 519 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s