ゲームボーイアドバンス(GBA)非公式開発 Part2

■ このスレッドは過去ログ倉庫に格納されています
04/10/30 15:50:05ID:XmInH8YR
GBAで何やら作ってみようという人の為のスレ。ライセンス不要。
初心者歓迎。質問歓迎。英語苦手な人歓迎。冷やかし歓迎。ネカマ歓迎。

資料、リンク等
http://www.devrs.com/gba/
http://www.gbadev.org/
http://www.vsync.org/agb/
http://nocash.emubase.de/gbatek.htm
http://www.bomber.co.jp/chaola/docs/ARM/

開発環境
DevkitAdvance http://devkitadv.sourceforge.net/index.html
DevkitARM http://www.devkit.tk/
VisualHAM http://visualham.console-dev.de/
DragonBasic http://jm-basic.com/dragon/index.php

GBA Wiki
http://cgi.f26.aaacafe.ne.jp/~gbawiki/pukiwiki/pukiwiki.php
【GBA】Linuxから目覚めるぼくらのゲームボーイ!
http://pc5.2ch.net/test/read.cgi/linux/1070983168/

ゲームボーイアドバンス(GBA)開発@ゲ製板(避難所)
http://bbs.gamdev.org/test/read.cgi/gamedev/1055111303/
前スレ
http://pc5.2ch.net/test/read.cgi/gamedev/1013750899/
2007/12/07(金) 00:00:25ID:zCCzBOkw
super card上でデータを保存するにはどうすればいいんでしょうか
sramに書いたあと、自分でメニュー呼んでSDに保存できればいいのですが、どうパッチをあててもできず。
自作ソフトには付けられないんですかね、パッチ。

また、同じくsuper cardで新しめのファームウェアだと起動すらしないのですが、アプリ側でできる対処法などご存知の方いませんか
2008/02/02(土) 06:07:02ID:9JCHDRiH
誰かwww.agbdev.netで配布してたデモ(Nok_Keysupd.zip、sprite.zipとか)
持ってる人いる?どんな中身か知りたいんだけどサイトが潰れちゃってさ。
2008/03/04(火) 04:09:00ID:ajlkIhCi
すいません。この本「Linuxから目覚めるぼくらのゲームボーイ!」
を読みながら、第2章のbox_tile.cまで進んだんですが、
サンプルプログラムをそのまま使用して、
コンパイルまでできたのですが、VBAで実行させると画面が真っ暗なままで
何も起こりません。これは実機でないと動作しないのでしょうか?
2008/03/04(火) 12:37:05ID:23nZbsqP
半分あたり
その本はメモリからブートすることを前提にしているので
ROMからブートすることを前提にしているエミュだとそのままでは動作しない
VBAで動かすにはbox_tile.mb.binに名前を変えてあげな
2008/03/04(火) 21:25:47ID:ajlkIhCi
>>701
レスありがとうございます。
ファイル名を変えてやってみましたがうまくいきませんでした。。
代わりにリンカスクリプトでプログラムの開始アドレスを0x08000000に変えたら動きました!
おかげで挫折する期間が延びましたwありがとうございました。
しかしbox_tile.cより前に出てくるプログラムは何で内部メモリブートでもうまくいったのかなあ
2008/03/08(土) 22:06:12ID:IYGGmug3
すいません。「Linuxから目覚めるぼくらのゲームボーイ!」
を第3章まで読み進めたのですが、clock.cがうまく動作しません。
割り込みハンドラの中でvolatile修飾したグローバル変数の値を書き換えているのに
全く値が変わりません。なにか考えられる原因はありますか?
ちなみに割り込みハンドラ自体が実行されていることは自作のprintf文の実行結果から
画面に文字が出力されるので間違いありません。
2008/03/09(日) 00:32:24ID:9hgngbOa
>ちなみに割り込みハンドラ自体が実行されていることは自作のprintf文の実行結果から
>画面に文字が出力されるので間違いありません。
釈然としない
どう出力されたからそう思ったの?
ちょっと貼ってみてよ
2008/03/09(日) 01:09:00ID:gfwS1uas
該当部分のソースを張ります。
これでタイマー0がオーバーフローしたときに下記関数が実行されて、
VBAver1.7.2だとなぜか0110100100111010が常に表示されます。

volatile int tmr0_cnt = 0x0000;

void int_handler(void){
int flag;
int i;

register(INT_IME) = INT_IME_OFF;
flag = register(INT_IF);

if(flag & INT_TMR0){
tmr0_cnt++;
draw_str("タイマーわりこみ", 0, 13, BG_1);
for(i=0; i<16; i++){
if(((tmr0_cnt >> i) & 0x0001) == 1){
draw_str("1", 16-i, 1, BG_1);
}
else{
draw_str("0", 16-i, 1, BG_1);
}
}
}
register(INT_IF) = flag;
register(INT_IME) = INT_IME_ON;
}

2008/03/09(日) 01:10:28ID:gfwS1uas
ちなみにメイン関数の方では下記処理を行っており、
タイマ0のカウンタは正常にカウントアップしていることが画面表示から確認できました。
何か分かりますでしょうか。よろしくお願い致します。

while(1){
sec = register(TMR_COUNT0);
for(i=0; i<16; i++){
if(((sec >> i) & 0x0001) == 1){
draw_str("1", 16-i, 0, BG_1);
}
else{
draw_str("0", 16-i, 0, BG_1);
}
}
}
2008/03/09(日) 01:16:20ID:gfwS1uas
あと、リンカスクリプトを書き換えて、テキストセクションの開始アドレスを
0x80000000にしているのですが、このことが何か関係があるのでしょうか。。
2008/03/09(日) 05:29:51ID:9hgngbOa
ひょっとして全て理解した上でからかってる?
>>707はたしかに関係ある
テキストセクションを0x08000000に置いたあと以降の
連続した領域にBSSセクションとデータセクションを置いているので
グローバル変数に書き込みたくてもROMだから書きこめない
今までよく動いてたな。。。
2008/03/09(日) 09:31:57ID:gfwS1uas
リンカスクリプトについての理解が不十分でした。
下記ホームページを参考にリンカスクリプトを書き換えたら、
見事1秒ごとにtmr0_cntが0からカウントアップされるようになりました。
おかげで挫折する期間が延びました。ありがとうございました。
http://www.nextappli.com/index.php?GBA%2FROM%B2%BD#content_1_0
2008/03/09(日) 19:34:43ID:I/rPhsey
例えば
mov r1, #128
strh r1, [r3, #0]
ldrh r3, [r2, #0]

を実行するのに、何クロック掛かるか・・という事を説明してくれる
本やサイトご存知内ですか?
2008/03/11(火) 00:29:05ID:IfG+az6x
音の多重再生をするにはどうしたらいいのですか
2008/03/11(火) 00:36:17ID:IfG+az6x
数十曲の音楽データをROMに格納したいのですが容量が足りません。
何か工夫が必要なのでしょうか。
マザー3なんかは100曲ものBGMが入ってましたがあれはどうやって実現しているのでしょうか。
2008/03/11(火) 00:38:46ID:IfG+az6x
すいません。100曲でなく250曲の間違いでした。
2008/03/11(火) 01:46:18ID:UWuqXy/S
譜面データと、音源データを分けて持っているから、かな?
MIDI見たいな感じで。

それに、要所要所でPCMをかぶせれば
大抵の曲は再現できそう。

あとは、圧縮をかけるだね。
(譜面データにたいして、また、ADPCMとは言わないが適当な圧縮形式で。)
2008/03/11(火) 09:34:19ID:IfG+az6x
そんなのは俺の手に負えねえ。ここで挫折しまするわ。
2008/03/12(水) 17:36:52ID:Us8flhJs
ここでGBの事聞いても大丈夫かな?
バンク切り替えの事について調べてるんですけど
MBC2のバンク切り替えについてすずめさんところのウェブアーカイブと
お受験に出るゲームボーイのページを調べてみたんですけどMBC2に関する情報が載っていなくて…
恐らく0x2000番地への書き込みだと思うんですけどどこか正確な情報がある場所ってないでしょうか?
それと現在自分がどのバンクを操作しているのか判別する方法があるかないかご存知の方いらっしゃいますか?
もしかしてバンクの位置情報はどこにも展開されず完全に自分で管理する必要があるんでしょうか?
デバッグの際にバンク情報がないと調べるのが大変で…
2008/03/12(水) 17:53:19ID:Jo1vXsg5
スレ違い
ttp://www.geocities.co.jp/Playtown/2004/gmbspecj.txt
ttp://fms.komkon.org/GameBoy/Tech/Software.html
エミュレータのソースも併せて読むといい
2008/03/12(水) 18:12:53ID:Us8flhJs
すみません該当するようなスレが無かった物で。
挙げて頂いた上記サイト等も参考にしてみます。
エミュのソースをみれば確かに内部動作はカンペキに把握できますね。
GBのエミュも大分こなれてる様なのでその辺も参考にしてみます。
ご親切にどうもありがとうございました。スレ汚し失礼しました。
2008/03/13(木) 15:11:16ID:d99ZfhW7
>>712-715
GBA用のFreeのMODライブラリでも使って組み込めばそれで終わり。
問題は、MODを作れるかどうかだがw
2008/03/16(日) 06:19:18ID:RXPkoV7l
devkitProを使ってGBAでゲームを作っているのですが、
const int hoge1 = 1 ;
const int hoge2 = hoge1 ;
のようにすると、「initializer element is not constant」と出てしまいます。
VC++だと普通にコンパイルが成功しました。
Cではこういう事は出来ないのでしょうか?
2008/03/16(日) 12:05:58ID:0SBCpDyI
>>720
スレ違いだが回答。

C言語とC++のconst修飾子の動作の違いのために起きる問題。

const int hoge1 = 1 ;
がC言語では変数として定義されるのに対し、C++では定数として定義される。
このため、
const int hoge2 = hoge1 ;
がエラーとなる(初期値つき変数に定数以外を指定したから)。

結論:C++でなくC言語で書くなら、定数はマクロやenumで定義しましょう。


余談だが、const修飾子には他にも違いがあり、グローバル変数をconst修飾した場合に、
C言語ではデフォルトで外部リンケージ(要するにextern)になるのに対し、
C++では内部リンケージ(要するにstatic)となる。
2008/03/16(日) 12:18:17ID:0SBCpDyI
>>721
スレ違うというか板違いでしたね。
あと、一応補足。

当たり前だけどC++でグローバルな
const int hoge0 = 1;
static const int hoge1 = 1;
extern const int hoge2 = 1;

を定義すると、hoge0とhoge1は定数、hoge2は変数となる。
2008/03/16(日) 15:31:08ID:3fassPpA
>>722
変数と定数と、どう言い分けてるの?
挙げられた例だと全部定数式として使えるはずだよ。
2008/03/17(月) 02:10:37ID:xMktvNUH
>>723
スマン。内容に不足があった。

×hoge2は変数となる
○hoge2は定数であると同時に外部リンケージの変数も定義される
725720
垢版 |
2008/03/17(月) 03:34:16ID:C1jKoyjP
なるほど、そもそもCとC++じゃconstの仕様が違うのですね。
良く分かりました。
板違いの質問に答えて頂き、ありがとうございました。
2008/03/17(月) 10:01:08ID:7F2zgz+N
>>724
やっぱり変数と定数の意味に無理があるだろ。どこで
そんなネタ仕込まれたんだ?

722 の3つは全部 const int 型変数の定義。
const int 型変数が定数式で初期化されていれば、
それもまた定数式となる。

リンケージはそれぞれ決まっているし、外部リンケージ
じゃなければ初期化が必須だったりするけど、それらは
定数式として使えるかどうかとは別の話。
2008/03/24(月) 05:51:58ID:UCF17QKn
GB音源(例えばチャンネル1)でエンベロープをハードウェアでは無く自力でやりたい場合、
SOUND1CNT_Hのbit12-15をいじって、
SOUND1CNT_Xのbit15を立てて初期化するしかないのでしょうか?
これだと発音中の波形の状態も最初に戻ってしまうらしく、
音が自然にならないので困っています。
何か良い方法をご存知の方はいらっしゃらないでしょうか?
2008/03/24(月) 08:16:50ID:bI8PsKud
その方法しか無いがチャンネル1と2は必ず発音がリセットされるので実質使えない
チャンネル3はリセットされないからソフト制御可能
2008/03/24(月) 13:22:21ID:o6pWhQxB
GBAのスペックに
サウンド:アナログ(パルス波2ch+波形メモリ1ch+ノイズ1chの音源、従来機と同様)+デジタル(PCM)2ch
ってあるけどこれと同時発音数は別の話だよね
もっと沢山鳴らしてるようなメガデモはあるし、実際は何音までなんでしょ
2008/03/24(月) 16:23:44ID:bI8PsKud
それで全部だけど?
2008/03/24(月) 18:13:20ID:o6pWhQxB
では同じトラック三つコピペして全部違うPCMにしても
音切れがないのはどういう仕組み?
2008/03/24(月) 18:22:44ID:+9oLoWUN
>>731
複数の音をリアルタイムに合成すればいいんじゃないの?
2008/03/24(月) 18:22:59ID:bI8PsKud
自分でPCMと書いてるじゃん・・・
2008/03/24(月) 18:32:15ID:o6pWhQxB
デジタル(PCM)2chって書いてあるけど
合成すればいいってんなら何音まで?
2008/03/24(月) 21:01:23ID:+9oLoWUN
>>734
好きなだけ重ねればいいんじゃないかな。
あとは処理時間を見て4音や8音などに制限していくとか。
「GBA PCM 合成」でググってみるといいかもよ。
736727
垢版 |
2008/03/25(火) 03:27:18ID:XMS5LhkT
>728
うへぇそうなんですかorz レスありがとうございます。
こんなキッツイ制限があるのにGBのゲームには一杯名曲があるというのが信じられません。
というかFCよりもキツイですねこれは。
FCミニとか、エミュレーターとかも結構苦労して再現してそうですね。
737名前は開発中のものです。
垢版 |
2008/03/25(火) 21:01:25ID:cUljzw0d
Raylight Studios - Resident Evil GBA + Bonus
http://jp.youtube.com/watch?v=DBHNtTNPzV0


やっぱ出なかったのは容量の問題かな
2008/03/25(火) 22:32:13ID:DSvlIXZK
すげえな
739名前は開発中のものです。
垢版 |
2008/04/04(金) 05:56:12ID:hXz7vhFd
GBAよりスーファミの方が開発意欲がそそられる
2008/04/27(日) 02:28:18ID:BegmYBqI
devkitProを使ってみようかと思ってるのですが、
コレを使ってGBAソフトを作ってネットで配布する場合、
ソースも配布可能にしなきゃいけないのでしょうか?
2008/04/27(日) 09:09:17ID:gOa+IOAb
ライブラリを改変しなければ配布しなくてもよかったと思います。
2008/04/27(日) 14:36:38ID:gA0/oGVB
>>740
ソースクレクレ厨が出てきたら、改変して売りつける悪質な業者だと思ったほうがいいよ
配布には十分注意しる

まぁ、GBAだからもう居ないと思うけどね・・・
743740
垢版 |
2008/04/28(月) 03:52:19ID:fpXnuQEH
>>741
そのまま組み込めば、配布しなくてもOKって事ですか、分かりました。
教えていただきありがとうございます。

>>742
配布しなくちゃいけなくなった場合に、そういう輩も出てくるんじゃないかと
懸念していたのですが、どうやら大丈夫みたいですね。
2008/06/22(日) 12:06:27ID:/JClv6am
>>50
サイト消えてる・・・
2008/07/22(火) 08:08:44ID:UkA+4UPJ
海外ソフトの和訳ハックとか作れますか?
もし可能性が少しでもあるなら頑張ってみようかなと・・・
予備知識ゼロだけど・・・orz
2008/10/15(水) 19:46:04ID:BTWkaFv3
GB伊次郎ってどっかで手に入らないものだろうか…
2008/10/20(月) 09:28:59ID:udn3EoyF
>>746
GBXchangerと任天堂パワーのGB用カートリッジがあれば、似たようなことができると思う
2008/10/21(火) 00:04:47ID:Izk3rpBS
それが手に入れば苦労はしないっての…
2008/10/21(火) 09:46:42ID:weSdSC9r
この手のものは時期逃すと手に入りにくいからなあ・・・
数年前なら、数少ないが売っている店はあった

あとは今あるとしたらオークション
2008/10/22(水) 12:38:33ID:nJuXMnla
ヤフオクで1点だけ見かけた
2008/11/01(土) 00:24:39ID:Tvk5Kt8k
GBのマジコンって今でも需要あるんだね
KOMAKUYAはもうスターターキット出さないのかな
2008/11/16(日) 05:12:20ID:yRHdgsS9
void line(hword Xa, hword Ya, hword Xb, hword Yb, hword color) {
 hword x, y;

 int j = Ya;
 int e = 0;
 for(x = Xa; x < Xb; x++) {
  draw_point(x, j, color);
   e = e + (Yb-Ya);
   if((Xb-Xa)< e) {
    e = e - (Xb - Xa);
    j = j + 1;
    }
   }
  }

このメソッドがどのように動いて斜線を引いているか分かり易く教えていただけないでしょうか?

draw_pointメソッドは指定された(x,j)座標にcolorで指定した色のドットを表示するメソッドです。
斜線の範囲は(Xa, Ya)から(Xb, Yb)です。
2008/11/16(日) 12:27:42ID:yRHdgsS9
void line(hword Xa, hword Ya, hword Xb, hword Yb, hword color) {
 hword x, y;

 int j = Ya;
 int e = 0;
 for(x = Xa; x < Xb; x++) {
  draw_point(x, j, color);
   e = e + (Yb-Ya);
   if((Xb-Xa)< e) {
    e = e - (Xb - Xa);
    j = j + 1;
    }
   }
  }

このメソッドがどのように動いて斜線を引いているか分かり易く教えていただけないでしょうか?

draw_pointメソッドは指定された(x,j)座標にcolorで指定した色のドットを表示するメソッドです。
斜線の範囲は(Xa, Ya)から(Xb, Yb)です。
2008/11/16(日) 18:17:08ID:9y44eiNe
ブレゼンハムでググれ
こんなところで聞くよりいい解説がどこかにある
2008/11/17(月) 12:01:38ID:M2eDLwwk
デジタル微分解析(DDA)でググ・・・ったら余計わからんくて俺が吹いた
2008/11/17(月) 22:21:48ID:0FeRBUS+
厳密に考えるとやっかいなところは多々あるが
2Dで直線や多角形描くぐらいならただの差分方程式だろ
2008/11/18(火) 22:54:21ID:35X+8Y/i
GBAで1〜10までのランダム値を取ろうと思ったらどうすればよいのでしょうか?
rand()は使えませんよね
2008/11/19(水) 03:13:42ID:iECaJTAb
>>757
rand() % 10 + 1

…ってスレ違いだね。
プログラミング初心者向けのスレに行くといいよ。
2008/12/03(水) 21:17:08ID:ZUsaZJd3
Homebrew BOF

ゲーム機など開発環境が公開されていないハード、及びマイナーハード開発者の集いを企画しています。

日時:コミケ(12/28-30)前後 当日なら17-19時くらい + 宴会
場所:東京都区内
費用:会場実費(0-数百円?)

たぶん日本全体で100人もいないんじゃないかと思いますが、
コミケで上京する人もいるでしょうからその時期を予定しています。

http://www27.atwiki.jp/homebrew/

マルチすまん
760名前は開発中のものです。
垢版 |
2009/01/09(金) 21:44:01ID:JmGx4bkn
age
761名前は開発中のものです。
垢版 |
2009/01/09(金) 21:54:46ID:JmGx4bkn
おtingting
762名前は開発中のものです。
垢版 |
2009/01/09(金) 22:02:00ID:JmGx4bkn
マジキチ動画(ββ)
2009/01/17(土) 21:22:00ID:/uotE80P
GBAでMP3を再生する方法を教えてください
2009/01/18(日) 02:54:34ID:eSDINTKa
市販プレーヤー買った方が手間取らない
2009/01/18(日) 05:28:35ID:vCC7QsmR
プレイやん
2009/01/18(日) 13:23:24ID:F84aYW6Z
サウンドプレイヤーを自作したいと思っています。20曲程入れたいんですが何らかの形で圧縮して組み込みことが必要だと思うのですがどうしたらいいですか。
2009/01/18(日) 14:23:20ID:+OkZIPbY
PCでそのプログラムは作ってみた?
2009/01/18(日) 14:26:28ID:F84aYW6Z
PCではDXライブラリを使えばMP3の再生ができるので作れることが分かっています。
2009/01/19(月) 01:08:21ID:4HQkQlpM
じゃ、DXライブラリ使わずにmp3再生できるように頑張れ
770名前は開発中のものです。
垢版 |
2009/02/06(金) 17:43:16ID:6cgXmSA9
じゃあ脳内再生しかないな
2009/02/06(金) 19:56:14ID:BaBBx5bc
GBAの性能じゃmp3プレイヤーは厳しくないか?
2009/02/15(日) 02:31:54ID:boVc3Mdt
DMA1&2とTIMER0&1を使って、ダイレクトサウンドA&Bで同時に音を鳴らしたいのですが
片方しか音が鳴りません。
VBAのIOViewerでFIFOが変化しているのは確認したのですが
何も音がしない理由としては、どんな事が考えられますか?
SGCNT0_H(0x4000082)
SGCNT1(0x4000084)
の音量他もちゃんと値が入ってます。

2009/02/15(日) 05:26:13ID:PZvLdBG/
本当に値が正しいなら
あとはVBA側でDirect Sound A,Bのどちらかがオフになってる位しか無いな
774772
垢版 |
2009/02/15(日) 06:41:13ID:boVc3Mdt
レスありがとうございます。
VBAの設定も間違いなかったみたいです。

あれから色々試してました。
実は多重再生の為に、FIFOにコピーするバッファはサウンドデータと別にしていて、
TIMERのハンドラ内で手動でDMAを使ってFIFOにコピーをしてました。
鳴らないのはダイレクトサウンドAの方(BGM用)で、
ダイレクトサウンドB(効果音用)が鳴った時に何故かAも鳴ったので
調べてみると、効果音用のTIMER1が動くと鳴ると解りました。
とりあえず、AとBのFIFOコピーにどちらもTIMER1を使用することで一応解決しました。
タイマーを分けると鳴らなくなる理由がわからないままですが。
もしやDSOUNDCTRL(0x4000082)以外にも、
TIMERとダイレクトサウンドを関連付けるレジスタがあるのでしょうか?
775772
垢版 |
2009/02/15(日) 08:59:40ID:boVc3Mdt
原因が解りました…。
DSOUNDCTRLの初期化にor演算子しか使っていなかったこと
(タイマーを指定するのに、DSOUNDCTRL |= DSOUNDCTRL_ATIMER(0)としかやってませんでした)
自分の使っているgba_sound.hのDSOUNDCTRL_ARESETが
0x0400と定義されていた事(実際は0x0800。0x0400はタイマーの指定に使用)
が原因でした…。
お騒がせしてしまってすみませんでした。
2009/02/20(金) 20:47:15ID:Oxql6lkt
GBAとかファミコンは開発環境が強力じゃないから
そういう所でハマっちゃうと、抜けるの大変だよね
2009/03/10(火) 20:46:38ID:yBs8MUSr
GBAではないですが、GBCの板が見当たらなかったので試しに書いてみます。

ttp://nagasaki.cool.ne.jp/xor-a/

ユーザーアプリがロッピーとかで配信出来たらなぁと思うのは愚痴ですが。
2009/03/20(金) 18:11:44ID:RqzCAhzX
GBCの板は昔あったんだが、過疎すぎて落ちちゃった

VCとかに配信できたら面白そうだけどね>自作ゲーム
2009/03/31(火) 03:30:28ID:LhzYAQbh
今まではメインループの始めにV-Blankを待って、それから各処理を行っていたのですが、
開発が進むにつれてV-Blank中だけじゃ処理が間に合わなくなってしまいました。
そこでゲーム処理と描画関係の処理にわけて

while( V_COUNT != 0 ){}
GameProc() ; // ゲーム処理
while( V_COUNT < 160) {}
GraphicProc() ; // 描画関係の処理

と、二つに分けてやる事にしました。
表面上はうまく動いているように見えるのですが、
こういう事をやってしまっても大丈夫なのでしょうか?
2009/03/31(火) 12:58:22ID:WlDU8zsj
分けること自体は問題ないけど
ゲーム処理でV_COUNT != 0を待つ意味は無いよ
描画が終わったらすぐに処理を始めていい

while( V_COUNT < 160) ;
GraphicProc();
GameProc();
781779
垢版 |
2009/04/01(水) 03:36:13ID:2baejuDU
>780
おおなるほど。
確かにそうした方が処理時間をより多くさけますね。
レスありがとうございます。
2009/04/23(木) 20:20:06ID:jG2DENZH
ここってまだ人いますかね……

自分で作ったプログラムをPogoShellから起動する場合,「終了してPogoShellに戻る」
という機能をつけると便利だと思うんですが,やりかたがさっぱりわかりません.
どこで調べればいいのかご存知のかた,教えてくださいませ.
2009/04/23(木) 23:16:10ID:GrL4nFHE
Pogoshell resetでググってみた。

ttp://boards.pocketheaven.com/viewtopic.php?p=52627&sid=a2b1ee533e1a9b52029d305b2c611034
になんか書いてあるような気がする。

あとは自分でガンバレ
2009/04/24(金) 08:02:45ID:7kCUCgG4
カートリッジのバンクセレクタを元に戻してswi 1, swi 0の順でリセットかければおk
Visoly系(F2A)とEZ/XG-Flashはlibpogoのrestart.Sを使えばいいよ
2009/04/24(金) 08:52:53ID:oh9KlDGe
おお,回答ありがとうございます.
リブート自体はbiosコールでできるのかなとは思ってたんですが,
バンクセレクタ云々というのが俺がよくわかってない点のようですね.

F2Aを使ってるので,とりあえずrestart.sを見てみます.
実はC言語しか知らないので時間がかかりそうですが.
2009/08/16(日) 22:24:12ID:DZlUccKL
圧縮した音楽ファイルはどうやって再生すればいいのでしょうか。wavじゃサイズ大きすぎる。
2009/08/17(月) 12:45:32ID:SfTpCTHN
何で圧縮した音楽ファイル?まずはそこからだけど。
mp3は再生できないよ。
2009/08/17(月) 17:31:39ID:SHxtq19H
そもそも、サンプリングされた音の再生がGBAじゃ無理だと思うんだが
スペックが足りない
2009/08/18(火) 04:34:22ID:GgRqyFMU
それはさすがにGBAなめすぎ。
44kHzで16トラック合成出来るくらいのスペックはあるよ。
2009/08/29(土) 13:25:09ID:ajW9NjPM
>>786
> wavじゃサイズ大きすぎる

というのはちょっと理解が足りないと思います。
wavやaviは単なる入れ物なので、中身が問題。
多分、PCM(非圧縮)のことを言ってるのですよね?

同じwavでも中身がmp3だったりADPCMだったりするならサイズは小さくなります。
IMA ADPCMなら約1/4になるし、デコード処理も軽いのでオススメ。
また、Windows付属のサウンドレコーダーでデータが作成できるので手軽。

http://wiki.multimedia.cx/index.php?title=Microsoft_IMA_ADPCM
http://wiki.multimedia.cx/index.php?title=IMA_ADPCM

が参考になります。
wav内での格納形式は前者のURL、デコード処理は後者のURLを参照して作ってください。
データはwav内のブロック単位で処理し、ブロック内でデータは完結します。
デコード処理はURLに書かれている4行の処理が全てです(最適化についても書かれていますが)。

また、sox等のソースも参考になります。
2009/09/18(金) 03:08:25ID:si+yuBJ2
効果音の周波数って、どれくらいが良いんでしょうか?
アクションゲームを作っているのですが、
現在8000kHzで同時再生させる為に自力合成で結構処理が重いです。

2009/09/25(金) 03:10:20ID:JAA61hM3
77.8MHzがオススメだよ。
793791
垢版 |
2009/09/26(土) 02:31:51ID:IAonhfHR
>>791の8000kHzは8000Hzの間違いでしたw
>>792
77.8MHzという事は77800000Hzですか。
8000Hzでヒーコラ言ってるので自分では無理っぽいですね。
2009/09/27(日) 16:50:00ID:fPKTk+yY
>>792
ZIP-FMか!

>>793
ネタをネタと(ry
795791
垢版 |
2009/09/30(水) 04:44:16ID:BCNooBfe
なん・・・だと?
出来るかわかりませんが市販のゲームを調べてみます。
2009/10/01(木) 00:00:06ID:NOpZROc8
8kHzくらいで重くなるってことはほとんど無いから
なにかやり方間違ってるんじゃないの?
DirectSoundからサウンド要求があるたびに割り込んでたりとか
797791
垢版 |
2009/10/03(土) 05:07:24ID:UpJ1HpGL
やっぱり8000Hzは低い部類になるって事ですね。
現在は、合成用バッファを1フレームで消費する量の2倍確保して、
前半を再生中なら後半に書き込み、後半を再生中なら前半を書き込む処理を
1フレームに一度呼び出す方法を取っています。
2チャンネル同時再生するとHBlankの数値が30弱くらいの重さです。
やっぱり何かやり方が間違ってそうなので、ソース見直して見ます。
■ このスレッドは過去ログ倉庫に格納されています