[過去ログ] ゲームボーイアドバンス(GBA)非公式開発 Part2 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
665: 2007/09/18(火)13:11 ID:X/1lrDkx(1) AAS
>>663
8bitの時代からある技法だよ。
666: 2007/09/19(水)03:28 ID:/41S7z44(1) AAS
Macで作ってる人居ますか?
667: 2007/09/25(火)03:48 ID:Wtxosh+4(1) AAS
ゲームボーイのプログラム・改造マニュアル
ゲームボーイプログラミング入門
両方吸出し機とかの方に力入れてて全然役に立たなかった。
特に後者はGBAを表紙に入れておきながら殆ど触れていない。
一緒に買ったC言語超入門―Windowsでゲームボーイのプログラムを作ろう!は使えたなぁ。
668: 2007/09/28(金)04:26 ID:3PURGaCN(1/2) AAS
すいません、質問させて下さい。
typedef unsigned char u8;
typedef unsigned short u16;
typedef signed char s8;
#define USE_SPRITE_NUM 8
typedef struct{
u8 tileno ; // 使用するタイル番号
省15
669(1): 2007/09/28(金)07:29 ID:MwwoigrE(1/2) AAS
境界揃えようとするから。
&graphicpat_t->sprites[0] でアドレス出力してみりゃいい。
typedef struct{
u16 tileno ; // 使用するタイルデータ番号
u8 usespritenum ; // 使用するスプライトの数
ここにダミーが1バイト
spritedata_t sprites[USE_SPRITE_NUM] ; // スプライトの情報
省4
670(1): 2007/09/28(金)07:54 ID:S2twr9xc(1) AAS
詳しいことはこちら。
外部リンク[html]:www.jp.arm.com
対処法はこんな感じで。
#define __PACKED __attribute__ ((__packed__))
typedef struct{
u16 a;
u8 b;
省2
671(1): 2007/09/28(金)10:15 ID:MwwoigrE(2/2) AAS
dummy[1] を上に移動するだけでもいいよ。
672: 2007/09/28(金)17:57 ID:3PURGaCN(2/2) AAS
>>669-671
あれから自分でもパディングの事を調べてみたんですが、
パディングって構造体の最後だけじゃなくてメンバの途中にも入るんですね。
メンバがu8一つだけの構造体のサイズを調べると2バイトになっていたり、
u8二つの構造体のサイズは4バイトだったりするのが謎だったりで
まだちゃんと理解できてはいないのですがとりあえず
graphicpat_tのdummy[1]をusespritenumnumの次にする事でうまくいってます。
省1
673: 2007/09/29(土)19:37 ID:Yyp6PcC5(1/2) AAS
.cファイルに書いた場所(順番)によって、ポインタが指す場所が変わるのですが、
原因がわかる方はいらっしゃいますか?
具体的には
const u8 hogebindata[HOGE_SIZE] ; // .oファイルから
HOGE* pHoge1 = &hogebindata[0] ; // HOGE構造体のポインタ
HOGE* pHoge2 = &hogebindata[0] ;
これでpHoge1とpHoge2の指す場所が変わったのですが。
674(1): 2007/09/29(土)20:45 ID:/Cn9Hphu(1) AAS
その現象は確認したことがないので
お役に立てないかも。
指す場所が変わったというけれど
1,2バイト程度のズレなのか、全然無関係な
アドレスを見ているのか気になります。
前者ならコンパイラの最適化の影響?
volatile修飾子つけてみてはどうでしょうか。
省5
675: 2007/09/29(土)22:41 ID:Yyp6PcC5(2/2) AAS
>674
レスありがとうございます。ズレも定義する位置毎に変わったり、
さらには他の部分の関数等の量(?)にも変わったりするので良く解りません。
とりあえず、今まではグローバルで定義と初期化をしていたのですが、
初期化をAgbmain()の冒頭にしたら見かけ上はうまく行きました。
原因が解らないのが気持ち悪いところではありますが…。
676(1): 2007/09/30(日)13:48 ID:2cArtL+Y(1) AAS
・u8型なのに、HOGE*型で参照しようとするので
キャストがおかしくなっているのかもしれない。
・Agbmain関数と聞いて、開発環境が
DevkitAdvanceではないかと思いました。
もしそうならばdevkitProに変えてみるといいかも。
・最終手段で、バグのままの状態でプロジェクト一式
アップしてみるとか(ぉ。
省2
677(1): 2007/09/30(日)14:47 ID:3pf8Eidk(1) AAS
全部じゃなくても、そちらの環境で再現する最小限のソースをうpしてみなよ。
678: 2007/10/01(月)06:09 ID:47UHIi+z(1) AAS
>676
片方が駄目で、片方は普通に使えるというのが謎なんですよね。
コンパイラの最適化関係で、何かされているのでしょうか。
makefileは他のサンプルをそのまま使っているので、
その辺のオプションは弄くれていないのでそういう事もあるかも知れないです。
それとお察しの通り、DevkitAdvanceを使ってます。
自分もdevkitProに変えたいのですが、いまいちやり方がわからず…。
省5
679: 2007/10/03(水)14:03 ID:XInTGgcu(1) AAS
コンパイラはDEVKITのどのバージョンですか
680(1): [age] 2007/11/01(木)03:19 ID:zUdctaSC(1/2) AAS
2バイトパレットってBIT15は未使用のはずなのに、
ゲームによってはBIT15が1で、+8000hされてる色が
稀に使用されていたりして、用途がさっぱり解らないんだけど
誰かわかります?
色違いキャラなどで、同じ色が使用されている時に片方のみ
+8000hされてるなんて事はないから
意図的な設定なんだろうけど
681: [age] 2007/11/01(木)03:21 ID:zUdctaSC(2/2) AAS
同じ色が含まれている、の間違いです
682(1): 2007/11/01(木)03:57 ID:bsWY8rCq(1) AAS
なんの根拠もないが、なんかのフラグで使ってるんじゃないか?
たとえば、パレットアニメの対象外にする時にビットを立てておくとか。
683: 2007/11/01(木)05:48 ID:ep0Z0ILK(1) AAS
>662
変なのー。
周りのやる気をなくさせようという気がまんまんだね。
言ってることとやってることが違うと何だか腹立つ。
…やってること自体は簡単だから、「すごい」とか騙されては駄目だよ。
一介のプロのつもりなんだろうけど、むしろ手抜きが目立つね。
サウンドも背景もちゃんと凝った方が全体の評価は高い。
684: 2007/11/01(木)09:42 ID:ihkhmp1x(1) AAS
>>680
GBAだと使用しないけど、NDSだとBIT15は透過フラグになってて、モードによってはそのBITを立てて使う。
NDSのプログラムでも使えるようにしてるか、git(データの変換)なんかでフラグ立てる設定で
変換したのを間違ってそのまま使ってるんじゃないかな。
685(1): 2007/11/02(金)17:34 ID:mn9t6mJD(1) AAS
透過フラグの存在は初耳です。
でもキャラスプライトに二つ以上の透過色が
必要な使われ方はしてなかったようです。
何かのフラグが残ったままって可能性はありそう。
>>682
そういうケースもありそうですが、
パレットアニメが使われてた様子はないっぽいです
686: 2007/11/02(金)22:13 ID:IwsTzJ5B(1) AAS
聞いたことないけど
もし'何かある'としたらブレンドモードだと思う。
どんな状況で表示されてるスプライトなんだ?
687: 2007/11/03(土)10:22 ID:gtw8DYou(1) AAS
>>685
NDSはスプライトにはタイルだけじゃなく、ビットマップも使えるようになってる。
ビットマップだと0番パレットみたいな透過色の代わりに、BIT15立てることによって透過を実現してるんじゃない。
688: 2007/11/05(月)08:24 ID:WSMZViqh(1) AAS
俺にもビット15が0で色が表示されないと悩んでた時期があった
689: 2007/11/15(木)20:19 ID:LZz2LXH5(1) AAS
携帯電話の液晶を再利用したボードPC「DVIEW」
外部リンク[pl]:slashdot.jp
スプライトは使えないけど、オイラ的には実機でも動かしてみたいからこれ買うつもり
性能的にはこんなもん
CPU: ARM7TDMI Core (81MHz)
メモリ: On-Chip 40Kb SRAM (外部SD, FlashROMが利用可能)
ディスプレイ: 320x240、32K(RGB555)色
省3
690: 2007/11/16(金)05:22 ID:FnKxVSr6(1/2) AAS
メモリ 40Kbで、一体なにができるんだw
691: 2007/11/16(金)06:49 ID:oFaiRmep(1/2) AAS
40KBの間違いだろ
692(1): 2007/11/16(金)07:05 ID:FnKxVSr6(2/2) AAS
40KBでも同じこと
693: 2007/11/16(金)12:22 ID:oFaiRmep(2/2) AAS
>>692
最初に買ったパソコンはRAM16KBだったがいろいろ出来たぞ
694(1): 2007/12/05(水)01:08 ID:q7aGDUhk(1) AAS
全くの初心者なんですが質問させてください
既存のゲームをベースにポケモンやメダロットやFFなんかを、
テキストやら音楽やら絵やらパーツやらモンスターやらを追加したり差し替えたりして作りたいと思っているのですが
おおまかな手順と必要な知識を教えてください
695: 2007/12/05(水)02:10 ID:FhM2zJFq(1) AAS
簡単に言うと板違い。
gameurawazaに行って下さい。
難しく言うと
差し替え→コンスタント領域から該当箇所を見つけてリプレース
追加→コード領域からコンスタント領域参照部分を見つけて分岐もしくはテーブル書き換え
必要な知識→各種データフォーマット・LZ77圧縮法・ARM7インストラクション
696: 2007/12/05(水)17:45 ID:qkiwd5QC(1) AAS
算数知らないのに数学の教えを乞うようなモン
質問でもなんでもない
と書こうとしたら695が親切すぎて泣いた
697: 2007/12/06(木)19:07 ID:+3Rk8p3E(1) AAS
>>694
GBAは難しいからファミコンで練習するといいんじゃない。
698: 2007/12/07(金)00:00 ID:zCCzBOkw(1) AAS
super card上でデータを保存するにはどうすればいいんでしょうか
sramに書いたあと、自分でメニュー呼んでSDに保存できればいいのですが、どうパッチをあててもできず。
自作ソフトには付けられないんですかね、パッチ。
また、同じくsuper cardで新しめのファームウェアだと起動すらしないのですが、アプリ側でできる対処法などご存知の方いませんか
699: 2008/02/02(土)06:07 ID:9JCHDRiH(1) AAS
誰かwww.agbdev.netで配布してたデモ(Nok_Keysupd.zip、sprite.zipとか)
持ってる人いる?どんな中身か知りたいんだけどサイトが潰れちゃってさ。
700: 2008/03/04(火)04:09 ID:ajlkIhCi(1/2) AAS
すいません。この本「Linuxから目覚めるぼくらのゲームボーイ!」
を読みながら、第2章のbox_tile.cまで進んだんですが、
サンプルプログラムをそのまま使用して、
コンパイルまでできたのですが、VBAで実行させると画面が真っ暗なままで
何も起こりません。これは実機でないと動作しないのでしょうか?
701(1): 2008/03/04(火)12:37 ID:23nZbsqP(1) AAS
半分あたり
その本はメモリからブートすることを前提にしているので
ROMからブートすることを前提にしているエミュだとそのままでは動作しない
VBAで動かすにはbox_tile.mb.binに名前を変えてあげな
702: 2008/03/04(火)21:25 ID:ajlkIhCi(2/2) AAS
>>701
レスありがとうございます。
ファイル名を変えてやってみましたがうまくいきませんでした。。
代わりにリンカスクリプトでプログラムの開始アドレスを0x08000000に変えたら動きました!
おかげで挫折する期間が延びましたwありがとうございました。
しかしbox_tile.cより前に出てくるプログラムは何で内部メモリブートでもうまくいったのかなあ
703: 2008/03/08(土)22:06 ID:IYGGmug3(1) AAS
すいません。「Linuxから目覚めるぼくらのゲームボーイ!」
を第3章まで読み進めたのですが、clock.cがうまく動作しません。
割り込みハンドラの中でvolatile修飾したグローバル変数の値を書き換えているのに
全く値が変わりません。なにか考えられる原因はありますか?
ちなみに割り込みハンドラ自体が実行されていることは自作のprintf文の実行結果から
画面に文字が出力されるので間違いありません。
704: 2008/03/09(日)00:32 ID:9hgngbOa(1/2) AAS
>ちなみに割り込みハンドラ自体が実行されていることは自作のprintf文の実行結果から
>画面に文字が出力されるので間違いありません。
釈然としない
どう出力されたからそう思ったの?
ちょっと貼ってみてよ
705: 2008/03/09(日)01:09 ID:gfwS1uas(1/4) AAS
該当部分のソースを張ります。
これでタイマー0がオーバーフローしたときに下記関数が実行されて、
VBAver1.7.2だとなぜか0110100100111010が常に表示されます。
volatile int tmr0_cnt = 0x0000;
void int_handler(void){
int flag;
int i;
省17
706: 2008/03/09(日)01:10 ID:gfwS1uas(2/4) AAS
ちなみにメイン関数の方では下記処理を行っており、
タイマ0のカウンタは正常にカウントアップしていることが画面表示から確認できました。
何か分かりますでしょうか。よろしくお願い致します。
while(1){
sec = register(TMR_COUNT0);
for(i=0; i<16; i++){
if(((sec >> i) & 0x0001) == 1){
省7
707(1): 2008/03/09(日)01:16 ID:gfwS1uas(3/4) AAS
あと、リンカスクリプトを書き換えて、テキストセクションの開始アドレスを
0x80000000にしているのですが、このことが何か関係があるのでしょうか。。
708: 2008/03/09(日)05:29 ID:9hgngbOa(2/2) AAS
ひょっとして全て理解した上でからかってる?
>>707はたしかに関係ある
テキストセクションを0x08000000に置いたあと以降の
連続した領域にBSSセクションとデータセクションを置いているので
グローバル変数に書き込みたくてもROMだから書きこめない
今までよく動いてたな。。。
709: 2008/03/09(日)09:31 ID:gfwS1uas(4/4) AAS
リンカスクリプトについての理解が不十分でした。
下記ホームページを参考にリンカスクリプトを書き換えたら、
見事1秒ごとにtmr0_cntが0からカウントアップされるようになりました。
おかげで挫折する期間が延びました。ありがとうございました。
外部リンク[php]:www.nextappli.com
710: 2008/03/09(日)19:34 ID:I/rPhsey(1) AAS
例えば
mov r1, #128
strh r1, [r3, #0]
ldrh r3, [r2, #0]
を実行するのに、何クロック掛かるか・・という事を説明してくれる
本やサイトご存知内ですか?
711: 2008/03/11(火)00:29 ID:IfG+az6x(1/4) AAS
音の多重再生をするにはどうしたらいいのですか
712(1): 2008/03/11(火)00:36 ID:IfG+az6x(2/4) AAS
数十曲の音楽データをROMに格納したいのですが容量が足りません。
何か工夫が必要なのでしょうか。
マザー3なんかは100曲ものBGMが入ってましたがあれはどうやって実現しているのでしょうか。
713(1): 2008/03/11(火)00:38 ID:IfG+az6x(3/4) AAS
すいません。100曲でなく250曲の間違いでした。
714(1): 2008/03/11(火)01:46 ID:UWuqXy/S(1) AAS
譜面データと、音源データを分けて持っているから、かな?
MIDI見たいな感じで。
それに、要所要所でPCMをかぶせれば
大抵の曲は再現できそう。
あとは、圧縮をかけるだね。
(譜面データにたいして、また、ADPCMとは言わないが適当な圧縮形式で。)
715(1): 2008/03/11(火)09:34 ID:IfG+az6x(4/4) AAS
そんなのは俺の手に負えねえ。ここで挫折しまするわ。
716: 2008/03/12(水)17:36 ID:Us8flhJs(1/2) AAS
ここでGBの事聞いても大丈夫かな?
バンク切り替えの事について調べてるんですけど
MBC2のバンク切り替えについてすずめさんところのウェブアーカイブと
お受験に出るゲームボーイのページを調べてみたんですけどMBC2に関する情報が載っていなくて…
恐らく0x2000番地への書き込みだと思うんですけどどこか正確な情報がある場所ってないでしょうか?
それと現在自分がどのバンクを操作しているのか判別する方法があるかないかご存知の方いらっしゃいますか?
もしかしてバンクの位置情報はどこにも展開されず完全に自分で管理する必要があるんでしょうか?
省1
717: 2008/03/12(水)17:53 ID:Jo1vXsg5(1) AAS
スレ違い
外部リンク[txt]:www.geocities.co.jp
外部リンク[html]:fms.komkon.org
エミュレータのソースも併せて読むといい
718: 2008/03/12(水)18:12 ID:Us8flhJs(2/2) AAS
すみません該当するようなスレが無かった物で。
挙げて頂いた上記サイト等も参考にしてみます。
エミュのソースをみれば確かに内部動作はカンペキに把握できますね。
GBのエミュも大分こなれてる様なのでその辺も参考にしてみます。
ご親切にどうもありがとうございました。スレ汚し失礼しました。
719: 2008/03/13(木)15:11 ID:d99ZfhW7(1) AAS
>>712-715
GBA用のFreeのMODライブラリでも使って組み込めばそれで終わり。
問題は、MODを作れるかどうかだがw
720(2): 2008/03/16(日)06:19 ID:RXPkoV7l(1) AAS
devkitProを使ってGBAでゲームを作っているのですが、
const int hoge1 = 1 ;
const int hoge2 = hoge1 ;
のようにすると、「initializer element is not constant」と出てしまいます。
VC++だと普通にコンパイルが成功しました。
Cではこういう事は出来ないのでしょうか?
721(1): 2008/03/16(日)12:05 ID:0SBCpDyI(1/2) AAS
>>720
スレ違いだが回答。
C言語とC++のconst修飾子の動作の違いのために起きる問題。
const int hoge1 = 1 ;
がC言語では変数として定義されるのに対し、C++では定数として定義される。
このため、
const int hoge2 = hoge1 ;
省5
722(1): 2008/03/16(日)12:18 ID:0SBCpDyI(2/2) AAS
>>721
スレ違うというか板違いでしたね。
あと、一応補足。
当たり前だけどC++でグローバルな
const int hoge0 = 1;
static const int hoge1 = 1;
extern const int hoge2 = 1;
省1
723(1): 2008/03/16(日)15:31 ID:3fassPpA(1) AAS
>>722
変数と定数と、どう言い分けてるの?
挙げられた例だと全部定数式として使えるはずだよ。
724(1): 2008/03/17(月)02:10 ID:xMktvNUH(1) AAS
>>723
スマン。内容に不足があった。
×hoge2は変数となる
○hoge2は定数であると同時に外部リンケージの変数も定義される
725: 720 2008/03/17(月)03:34 ID:C1jKoyjP(1) AAS
なるほど、そもそもCとC++じゃconstの仕様が違うのですね。
良く分かりました。
板違いの質問に答えて頂き、ありがとうございました。
726: 2008/03/17(月)10:01 ID:7F2zgz+N(1) AAS
>>724
やっぱり変数と定数の意味に無理があるだろ。どこで
そんなネタ仕込まれたんだ?
722 の3つは全部 const int 型変数の定義。
const int 型変数が定数式で初期化されていれば、
それもまた定数式となる。
リンケージはそれぞれ決まっているし、外部リンケージ
省2
727(1): 2008/03/24(月)05:51 ID:UCF17QKn(1) AAS
GB音源(例えばチャンネル1)でエンベロープをハードウェアでは無く自力でやりたい場合、
SOUND1CNT_Hのbit12-15をいじって、
SOUND1CNT_Xのbit15を立てて初期化するしかないのでしょうか?
これだと発音中の波形の状態も最初に戻ってしまうらしく、
音が自然にならないので困っています。
何か良い方法をご存知の方はいらっしゃらないでしょうか?
728(1): 2008/03/24(月)08:16 ID:bI8PsKud(1/3) AAS
その方法しか無いがチャンネル1と2は必ず発音がリセットされるので実質使えない
チャンネル3はリセットされないからソフト制御可能
729: 2008/03/24(月)13:22 ID:o6pWhQxB(1/3) AAS
GBAのスペックに
サウンド:アナログ(パルス波2ch+波形メモリ1ch+ノイズ1chの音源、従来機と同様)+デジタル(PCM)2ch
ってあるけどこれと同時発音数は別の話だよね
もっと沢山鳴らしてるようなメガデモはあるし、実際は何音までなんでしょ
730: 2008/03/24(月)16:23 ID:bI8PsKud(2/3) AAS
それで全部だけど?
731(1): 2008/03/24(月)18:13 ID:o6pWhQxB(2/3) AAS
では同じトラック三つコピペして全部違うPCMにしても
音切れがないのはどういう仕組み?
732: 2008/03/24(月)18:22 ID:+9oLoWUN(1/2) AAS
>>731
複数の音をリアルタイムに合成すればいいんじゃないの?
733: 2008/03/24(月)18:22 ID:bI8PsKud(3/3) AAS
自分でPCMと書いてるじゃん・・・
734(1): 2008/03/24(月)18:32 ID:o6pWhQxB(3/3) AAS
デジタル(PCM)2chって書いてあるけど
合成すればいいってんなら何音まで?
735: 2008/03/24(月)21:01 ID:+9oLoWUN(2/2) AAS
>>734
好きなだけ重ねればいいんじゃないかな。
あとは処理時間を見て4音や8音などに制限していくとか。
「GBA PCM 合成」でググってみるといいかもよ。
736: 727 2008/03/25(火)03:27 ID:XMS5LhkT(1) AAS
>728
うへぇそうなんですかorz レスありがとうございます。
こんなキッツイ制限があるのにGBのゲームには一杯名曲があるというのが信じられません。
というかFCよりもキツイですねこれは。
FCミニとか、エミュレーターとかも結構苦労して再現してそうですね。
737: 2008/03/25(火)21:01 ID:cUljzw0d(1) AAS
Raylight Studios - Resident Evil GBA + Bonus
外部リンク:jp.youtube.com
やっぱ出なかったのは容量の問題かな
738: 2008/03/25(火)22:32 ID:DSvlIXZK(1) AAS
すげえな
739: 2008/04/04(金)05:56 ID:hXz7vhFd(1) AAS
GBAよりスーファミの方が開発意欲がそそられる
740(2): 2008/04/27(日)02:28 ID:BegmYBqI(1) AAS
devkitProを使ってみようかと思ってるのですが、
コレを使ってGBAソフトを作ってネットで配布する場合、
ソースも配布可能にしなきゃいけないのでしょうか?
741(1): 2008/04/27(日)09:09 ID:gOa+IOAb(1) AAS
ライブラリを改変しなければ配布しなくてもよかったと思います。
742(1): 2008/04/27(日)14:36 ID:gA0/oGVB(1) AAS
>>740
ソースクレクレ厨が出てきたら、改変して売りつける悪質な業者だと思ったほうがいいよ
配布には十分注意しる
まぁ、GBAだからもう居ないと思うけどね・・・
743: 740 2008/04/28(月)03:52 ID:fpXnuQEH(1) AAS
>>741
そのまま組み込めば、配布しなくてもOKって事ですか、分かりました。
教えていただきありがとうございます。
>>742
配布しなくちゃいけなくなった場合に、そういう輩も出てくるんじゃないかと
懸念していたのですが、どうやら大丈夫みたいですね。
744: 2008/06/22(日)12:06 ID:/JClv6am(1) AAS
>>50
サイト消えてる・・・
745: 2008/07/22(火)08:08 ID:UkA+4UPJ(1) AAS
海外ソフトの和訳ハックとか作れますか?
もし可能性が少しでもあるなら頑張ってみようかなと・・・
予備知識ゼロだけど・・・orz
上下前次1-新書関写板覧索設栞歴
あと 257 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.025s