[過去ログ] ゲームボーイアドバンス(GBA)非公式開発 Part2 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
660: 2007/06/06(水)23:28 ID:sfjb+KuV(1) AAS
ありがとう
661: 2007/07/11(水)15:37 ID:yUK6R5E5(1) AAS
lfwgewreheh

hjyjrwyjwj

ryuklryul

ryeyet

ylflily
省2
662
(3): 2007/09/15(土)13:41 ID:KXWFvYd6(1) AAS
GBA で弾幕 1024 発
外部リンク[html]:gba.pqrs.org

弾幕ゲー
外部リンク[ja]:gba.pqrs.org
外部リンク[ja]:gba.pqrs.org
663
(1): 2007/09/15(土)18:35 ID:odGWNMQb(1) AAS
>>662
前に見たけど、
今見ると、スプライトダブラーすごいよなあ
他の発売されたソフトでもやってたんかな?
664: 2007/09/17(月)23:06 ID:01k7iDJx(1) AAS
>>662
何か知らんがやる気が湧いてきた。ありがとー。
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 ; // 使用するタイル番号
  u8 sizetype ; // スプライトの形状とサイズ。
  s8 posx ; // 座標X
  s8 posy ; // 座標Y
省12
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] ; // スプライトの情報
  u8 dummy[1] ;
 ここにダミーが3バイト
} graphicpat_t ;
省1
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;
u16 c;
} __PACKED ST_TEST;
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の次にする事でうまくいってます。
レスありがとうございました。
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修飾子つけてみてはどうでしょうか。

もしくは
HOGE* pHoge1;
HOGE* pHoge2;
省2
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に変えてみるといいかも。

・最終手段で、バグのままの状態でプロジェクト一式
 アップしてみるとか(ぉ。

これぐらいしか思いつくことはないので
後は傍観させていただきます。
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に変えたいのですが、いまいちやり方がわからず…。
もうちょい弄ってみます。
ソースは上げられませんが、HOGEの中身はu16 data[8]だけです。

>677
省2
679: 2007/10/03(水)14:03 ID:XInTGgcu(1) AAS
コンパイラはDEVKITのどのバージョンですか
1-
あと 323 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.030s