1 名前:名前は開発中のものです。 mailto:sage [04/10/30 15:50:05 ID:XmInH8YR] GBAで何やら作ってみようという人の為のスレ。ライセンス不要。 初心者歓迎。質問歓迎。英語苦手な人歓迎。冷やかし歓迎。ネカマ歓迎。 資料、リンク等 www.devrs.com/gba/ www.gbadev.org/ www.vsync.org/agb/ nocash.emubase.de/gbatek.htm www.bomber.co.jp/chaola/docs/ARM/ 開発環境 DevkitAdvance devkitadv.sourceforge.net/index.html DevkitARM www.devkit.tk/ VisualHAM visualham.console-dev.de/ DragonBasic jm-basic.com/dragon/index.php GBA Wiki cgi.f26.aaacafe.ne.jp/~gbawiki/pukiwiki/pukiwiki.php 【GBA】Linuxから目覚めるぼくらのゲームボーイ! pc5.2ch.net/test/read.cgi/linux/1070983168/ ゲームボーイアドバンス(GBA)開発@ゲ製板(避難所) bbs.gamdev.org/test/read.cgi/gamedev/1055111303/ 前スレ pc5.2ch.net/test/read.cgi/gamedev/1013750899/
703 名前:名前は開発中のものです。 mailto:sage [2008/03/08(土) 22:06:12 ID:IYGGmug3] すいません。「Linuxから目覚めるぼくらのゲームボーイ!」 を第3章まで読み進めたのですが、clock.cがうまく動作しません。 割り込みハンドラの中でvolatile修飾したグローバル変数の値を書き換えているのに 全く値が変わりません。なにか考えられる原因はありますか? ちなみに割り込みハンドラ自体が実行されていることは自作のprintf文の実行結果から 画面に文字が出力されるので間違いありません。
704 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 00:32:24 ID:9hgngbOa] >ちなみに割り込みハンドラ自体が実行されていることは自作のprintf文の実行結果から >画面に文字が出力されるので間違いありません。 釈然としない どう出力されたからそう思ったの? ちょっと貼ってみてよ
705 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 01:09:00 ID: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; }
706 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 01:10:28 ID: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); } } }
707 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 01:16:20 ID:gfwS1uas] あと、リンカスクリプトを書き換えて、テキストセクションの開始アドレスを 0x80000000にしているのですが、このことが何か関係があるのでしょうか。。
708 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 05:29:51 ID:9hgngbOa] ひょっとして全て理解した上でからかってる? >>707 はたしかに関係ある テキストセクションを0x08000000に置いたあと以降の 連続した領域にBSSセクションとデータセクションを置いているので グローバル変数に書き込みたくてもROMだから書きこめない 今までよく動いてたな。。。
709 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 09:31:57 ID:gfwS1uas] リンカスクリプトについての理解が不十分でした。 下記ホームページを参考にリンカスクリプトを書き換えたら、 見事1秒ごとにtmr0_cntが0からカウントアップされるようになりました。 おかげで挫折する期間が延びました。ありがとうございました。 www.nextappli.com/index.php?GBA%2FROM%B2%BD#content_1_0
710 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 19:34:43 ID:I/rPhsey] 例えば mov r1, #128 strh r1, [r3, #0] ldrh r3, [r2, #0] を実行するのに、何クロック掛かるか・・という事を説明してくれる 本やサイトご存知内ですか?
711 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 00:29:05 ID:IfG+az6x] 音の多重再生をするにはどうしたらいいのですか
712 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 00:36:17 ID:IfG+az6x] 数十曲の音楽データをROMに格納したいのですが容量が足りません。 何か工夫が必要なのでしょうか。 マザー3なんかは100曲ものBGMが入ってましたがあれはどうやって実現しているのでしょうか。
713 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 00:38:46 ID:IfG+az6x] すいません。100曲でなく250曲の間違いでした。
714 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 01:46:18 ID:UWuqXy/S] 譜面データと、音源データを分けて持っているから、かな? MIDI見たいな感じで。 それに、要所要所でPCMをかぶせれば 大抵の曲は再現できそう。 あとは、圧縮をかけるだね。 (譜面データにたいして、また、ADPCMとは言わないが適当な圧縮形式で。)
715 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 09:34:19 ID:IfG+az6x] そんなのは俺の手に負えねえ。ここで挫折しまするわ。
716 名前:名前は開発中のものです。 mailto:sage [2008/03/12(水) 17:36:52 ID:Us8flhJs] ここでGBの事聞いても大丈夫かな? バンク切り替えの事について調べてるんですけど MBC2のバンク切り替えについてすずめさんところのウェブアーカイブと お受験に出るゲームボーイのページを調べてみたんですけどMBC2に関する情報が載っていなくて… 恐らく0x2000番地への書き込みだと思うんですけどどこか正確な情報がある場所ってないでしょうか? それと現在自分がどのバンクを操作しているのか判別する方法があるかないかご存知の方いらっしゃいますか? もしかしてバンクの位置情報はどこにも展開されず完全に自分で管理する必要があるんでしょうか? デバッグの際にバンク情報がないと調べるのが大変で…
717 名前:名前は開発中のものです。 mailto:sage [2008/03/12(水) 17:53:19 ID:Jo1vXsg5] スレ違い ttp://www.geocities.co.jp/Playtown/2004/gmbspecj.txt ttp://fms.komkon.org/GameBoy/Tech/Software.html エミュレータのソースも併せて読むといい
718 名前:名前は開発中のものです。 mailto:sage [2008/03/12(水) 18:12:53 ID:Us8flhJs] すみません該当するようなスレが無かった物で。 挙げて頂いた上記サイト等も参考にしてみます。 エミュのソースをみれば確かに内部動作はカンペキに把握できますね。 GBのエミュも大分こなれてる様なのでその辺も参考にしてみます。 ご親切にどうもありがとうございました。スレ汚し失礼しました。
719 名前:名前は開発中のものです。 mailto:sage [2008/03/13(木) 15:11:16 ID:d99ZfhW7] >>712-715 GBA用のFreeのMODライブラリでも使って組み込めばそれで終わり。 問題は、MODを作れるかどうかだがw
720 名前:名前は開発中のものです。 mailto:sage [2008/03/16(日) 06:19:18 ID:RXPkoV7l] devkitProを使ってGBAでゲームを作っているのですが、 const int hoge1 = 1 ; const int hoge2 = hoge1 ; のようにすると、「initializer element is not constant」と出てしまいます。 VC++だと普通にコンパイルが成功しました。 Cではこういう事は出来ないのでしょうか?
721 名前:名前は開発中のものです。 mailto:sage [2008/03/16(日) 12:05:58 ID:0SBCpDyI] >>720 スレ違いだが回答。 C言語とC++のconst修飾子の動作の違いのために起きる問題。 const int hoge1 = 1 ; がC言語では変数として定義されるのに対し、C++では定数として定義される。 このため、 const int hoge2 = hoge1 ; がエラーとなる(初期値つき変数に定数以外を指定したから)。 結論:C++でなくC言語で書くなら、定数はマクロやenumで定義しましょう。 余談だが、const修飾子には他にも違いがあり、グローバル変数をconst修飾した場合に、 C言語ではデフォルトで外部リンケージ(要するにextern)になるのに対し、 C++では内部リンケージ(要するにstatic)となる。
722 名前:名前は開発中のものです。 mailto:sage [2008/03/16(日) 12:18:17 ID:0SBCpDyI] >>721 スレ違うというか板違いでしたね。 あと、一応補足。 当たり前だけどC++でグローバルな const int hoge0 = 1; static const int hoge1 = 1; extern const int hoge2 = 1; を定義すると、hoge0とhoge1は定数、hoge2は変数となる。
723 名前:名前は開発中のものです。 mailto:sage [2008/03/16(日) 15:31:08 ID:3fassPpA] >>722 変数と定数と、どう言い分けてるの? 挙げられた例だと全部定数式として使えるはずだよ。
724 名前:名前は開発中のものです。 mailto:sage [2008/03/17(月) 02:10:37 ID:xMktvNUH] >>723 スマン。内容に不足があった。 ×hoge2は変数となる ○hoge2は定数であると同時に外部リンケージの変数も定義される
725 名前:720 mailto:sage [2008/03/17(月) 03:34:16 ID:C1jKoyjP] なるほど、そもそもCとC++じゃconstの仕様が違うのですね。 良く分かりました。 板違いの質問に答えて頂き、ありがとうございました。
726 名前:名前は開発中のものです。 mailto:sage [2008/03/17(月) 10:01:08 ID:7F2zgz+N] >>724 やっぱり変数と定数の意味に無理があるだろ。どこで そんなネタ仕込まれたんだ? 722 の3つは全部 const int 型変数の定義。 const int 型変数が定数式で初期化されていれば、 それもまた定数式となる。 リンケージはそれぞれ決まっているし、外部リンケージ じゃなければ初期化が必須だったりするけど、それらは 定数式として使えるかどうかとは別の話。
727 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 05:51:58 ID:UCF17QKn] GB音源(例えばチャンネル1)でエンベロープをハードウェアでは無く自力でやりたい場合、 SOUND1CNT_Hのbit12-15をいじって、 SOUND1CNT_Xのbit15を立てて初期化するしかないのでしょうか? これだと発音中の波形の状態も最初に戻ってしまうらしく、 音が自然にならないので困っています。 何か良い方法をご存知の方はいらっしゃらないでしょうか?
728 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 08:16:50 ID:bI8PsKud] その方法しか無いがチャンネル1と2は必ず発音がリセットされるので実質使えない チャンネル3はリセットされないからソフト制御可能
729 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 13:22:21 ID:o6pWhQxB] GBAのスペックに サウンド:アナログ(パルス波2ch+波形メモリ1ch+ノイズ1chの音源、従来機と同様)+デジタル(PCM)2ch ってあるけどこれと同時発音数は別の話だよね もっと沢山鳴らしてるようなメガデモはあるし、実際は何音までなんでしょ
730 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 16:23:44 ID:bI8PsKud] それで全部だけど?
731 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 18:13:20 ID:o6pWhQxB] では同じトラック三つコピペして全部違うPCMにしても 音切れがないのはどういう仕組み?
732 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 18:22:44 ID:+9oLoWUN] >>731 複数の音をリアルタイムに合成すればいいんじゃないの?
733 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 18:22:59 ID:bI8PsKud] 自分でPCMと書いてるじゃん・・・
734 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 18:32:15 ID:o6pWhQxB] デジタル(PCM)2chって書いてあるけど 合成すればいいってんなら何音まで?
735 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 21:01:23 ID:+9oLoWUN] >>734 好きなだけ重ねればいいんじゃないかな。 あとは処理時間を見て4音や8音などに制限していくとか。 「GBA PCM 合成」でググってみるといいかもよ。
736 名前:727 mailto:sage [2008/03/25(火) 03:27:18 ID:XMS5LhkT] >728 うへぇそうなんですかorz レスありがとうございます。 こんなキッツイ制限があるのにGBのゲームには一杯名曲があるというのが信じられません。 というかFCよりもキツイですねこれは。 FCミニとか、エミュレーターとかも結構苦労して再現してそうですね。
737 名前:名前は開発中のものです。 [2008/03/25(火) 21:01:25 ID:cUljzw0d] Raylight Studios - Resident Evil GBA + Bonus jp.youtube.com/watch?v=DBHNtTNPzV0 やっぱ出なかったのは容量の問題かな
738 名前:名前は開発中のものです。 mailto:sage [2008/03/25(火) 22:32:13 ID:DSvlIXZK] すげえな
739 名前:名前は開発中のものです。 [2008/04/04(金) 05:56:12 ID:hXz7vhFd] GBAよりスーファミの方が開発意欲がそそられる
740 名前:名前は開発中のものです。 mailto:sage [2008/04/27(日) 02:28:18 ID:BegmYBqI] devkitProを使ってみようかと思ってるのですが、 コレを使ってGBAソフトを作ってネットで配布する場合、 ソースも配布可能にしなきゃいけないのでしょうか?
741 名前:名前は開発中のものです。 mailto:sage [2008/04/27(日) 09:09:17 ID:gOa+IOAb] ライブラリを改変しなければ配布しなくてもよかったと思います。
742 名前:名前は開発中のものです。 mailto:sage [2008/04/27(日) 14:36:38 ID:gA0/oGVB] >>740 ソースクレクレ厨が出てきたら、改変して売りつける悪質な業者だと思ったほうがいいよ 配布には十分注意しる まぁ、GBAだからもう居ないと思うけどね・・・
743 名前:740 mailto:sage [2008/04/28(月) 03:52:19 ID:fpXnuQEH] >>741 そのまま組み込めば、配布しなくてもOKって事ですか、分かりました。 教えていただきありがとうございます。 >>742 配布しなくちゃいけなくなった場合に、そういう輩も出てくるんじゃないかと 懸念していたのですが、どうやら大丈夫みたいですね。
744 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 12:06:27 ID:/JClv6am] >>50 サイト消えてる・・・
745 名前:名前は開発中のものです。 mailto:sage [2008/07/22(火) 08:08:44 ID:UkA+4UPJ] 海外ソフトの和訳ハックとか作れますか? もし可能性が少しでもあるなら頑張ってみようかなと・・・ 予備知識ゼロだけど・・・orz
746 名前:名前は開発中のものです。 mailto:sage [2008/10/15(水) 19:46:04 ID:BTWkaFv3] GB伊次郎ってどっかで手に入らないものだろうか…
747 名前:名前は開発中のものです。 mailto:sage [2008/10/20(月) 09:28:59 ID:udn3EoyF] >>746 GBXchangerと任天堂パワーのGB用カートリッジがあれば、似たようなことができると思う
748 名前:名前は開発中のものです。 mailto:sage [2008/10/21(火) 00:04:47 ID:Izk3rpBS] それが手に入れば苦労はしないっての…
749 名前:名前は開発中のものです。 mailto:sage [2008/10/21(火) 09:46:42 ID:weSdSC9r] この手のものは時期逃すと手に入りにくいからなあ・・・ 数年前なら、数少ないが売っている店はあった あとは今あるとしたらオークション
750 名前:名前は開発中のものです。 mailto:sage [2008/10/22(水) 12:38:33 ID:nJuXMnla] ヤフオクで1点だけ見かけた
751 名前:名前は開発中のものです。 mailto:sage [2008/11/01(土) 00:24:39 ID:Tvk5Kt8k] GBのマジコンって今でも需要あるんだね KOMAKUYAはもうスターターキット出さないのかな
752 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 05:12:20 ID: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)です。
753 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 12:27:42 ID: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)です。
754 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 18:17:08 ID:9y44eiNe] ブレゼンハムでググれ こんなところで聞くよりいい解説がどこかにある
755 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 12:01:38 ID:M2eDLwwk] デジタル微分解析(DDA)でググ・・・ったら余計わからんくて俺が吹いた
756 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 22:21:48 ID:0FeRBUS+] 厳密に考えるとやっかいなところは多々あるが 2Dで直線や多角形描くぐらいならただの差分方程式だろ
757 名前:名前は開発中のものです。 mailto:sage [2008/11/18(火) 22:54:21 ID:35X+8Y/i] GBAで1〜10までのランダム値を取ろうと思ったらどうすればよいのでしょうか? rand()は使えませんよね
758 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 03:13:42 ID:iECaJTAb] >>757 rand() % 10 + 1 …ってスレ違いだね。 プログラミング初心者向けのスレに行くといいよ。
759 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 21:17:08 ID:ZUsaZJd3] Homebrew BOF ゲーム機など開発環境が公開されていないハード、及びマイナーハード開発者の集いを企画しています。 日時:コミケ(12/28-30)前後 当日なら17-19時くらい + 宴会 場所:東京都区内 費用:会場実費(0-数百円?) たぶん日本全体で100人もいないんじゃないかと思いますが、 コミケで上京する人もいるでしょうからその時期を予定しています。 www27.atwiki.jp/homebrew/ マルチすまん
760 名前:名前は開発中のものです。 [2009/01/09(金) 21:44:01 ID:JmGx4bkn] age
761 名前:名前は開発中のものです。 [2009/01/09(金) 21:54:46 ID:JmGx4bkn] おtingting
762 名前:名前は開発中のものです。 [2009/01/09(金) 22:02:00 ID:JmGx4bkn] マジキチ動画(ββ)
763 名前:名前は開発中のものです。 mailto:sage [2009/01/17(土) 21:22:00 ID:/uotE80P] GBAでMP3を再生する方法を教えてください
764 名前:名前は開発中のものです。 mailto:sage [2009/01/18(日) 02:54:34 ID:eSDINTKa] 市販プレーヤー買った方が手間取らない
765 名前:名前は開発中のものです。 mailto:sage [2009/01/18(日) 05:28:35 ID:vCC7QsmR] プレイやん
766 名前:名前は開発中のものです。 mailto:sage [2009/01/18(日) 13:23:24 ID:F84aYW6Z] サウンドプレイヤーを自作したいと思っています。20曲程入れたいんですが何らかの形で圧縮して組み込みことが必要だと思うのですがどうしたらいいですか。
767 名前:名前は開発中のものです。 mailto:sage [2009/01/18(日) 14:23:20 ID:+OkZIPbY] PCでそのプログラムは作ってみた?
768 名前:名前は開発中のものです。 mailto:sage [2009/01/18(日) 14:26:28 ID:F84aYW6Z] PCではDXライブラリを使えばMP3の再生ができるので作れることが分かっています。
769 名前:名前は開発中のものです。 mailto:sage [2009/01/19(月) 01:08:21 ID:4HQkQlpM] じゃ、DXライブラリ使わずにmp3再生できるように頑張れ
770 名前:名前は開発中のものです。 [2009/02/06(金) 17:43:16 ID:6cgXmSA9] じゃあ脳内再生しかないな
771 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 19:56:14 ID:BaBBx5bc] GBAの性能じゃmp3プレイヤーは厳しくないか?
772 名前:名前は開発中のものです。 mailto:sage [2009/02/15(日) 02:31:54 ID:boVc3Mdt] DMA1&2とTIMER0&1を使って、ダイレクトサウンドA&Bで同時に音を鳴らしたいのですが 片方しか音が鳴りません。 VBAのIOViewerでFIFOが変化しているのは確認したのですが 何も音がしない理由としては、どんな事が考えられますか? SGCNT0_H(0x4000082) SGCNT1(0x4000084) の音量他もちゃんと値が入ってます。
773 名前:名前は開発中のものです。 mailto:sage [2009/02/15(日) 05:26:13 ID:PZvLdBG/] 本当に値が正しいなら あとはVBA側でDirect Sound A,Bのどちらかがオフになってる位しか無いな
774 名前:772 mailto:sage [2009/02/15(日) 06:41:13 ID:boVc3Mdt] レスありがとうございます。 VBAの設定も間違いなかったみたいです。 あれから色々試してました。 実は多重再生の為に、FIFOにコピーするバッファはサウンドデータと別にしていて、 TIMERのハンドラ内で手動でDMAを使ってFIFOにコピーをしてました。 鳴らないのはダイレクトサウンドAの方(BGM用)で、 ダイレクトサウンドB(効果音用)が鳴った時に何故かAも鳴ったので 調べてみると、効果音用のTIMER1が動くと鳴ると解りました。 とりあえず、AとBのFIFOコピーにどちらもTIMER1を使用することで一応解決しました。 タイマーを分けると鳴らなくなる理由がわからないままですが。 もしやDSOUNDCTRL(0x4000082)以外にも、 TIMERとダイレクトサウンドを関連付けるレジスタがあるのでしょうか?
775 名前:772 mailto:sage [2009/02/15(日) 08:59:40 ID:boVc3Mdt] 原因が解りました…。 DSOUNDCTRLの初期化にor演算子しか使っていなかったこと (タイマーを指定するのに、DSOUNDCTRL |= DSOUNDCTRL_ATIMER(0)としかやってませんでした) 自分の使っているgba_sound.hのDSOUNDCTRL_ARESETが 0x0400と定義されていた事(実際は0x0800。0x0400はタイマーの指定に使用) が原因でした…。 お騒がせしてしまってすみませんでした。
776 名前:名前は開発中のものです。 mailto:sage [2009/02/20(金) 20:47:15 ID:Oxql6lkt] GBAとかファミコンは開発環境が強力じゃないから そういう所でハマっちゃうと、抜けるの大変だよね
777 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 20:46:38 ID:yBs8MUSr] GBAではないですが、GBCの板が見当たらなかったので試しに書いてみます。 ttp://nagasaki.cool.ne.jp/xor-a/ ユーザーアプリがロッピーとかで配信出来たらなぁと思うのは愚痴ですが。
778 名前:名前は開発中のものです。 mailto:sage [2009/03/20(金) 18:11:44 ID:RqzCAhzX] GBCの板は昔あったんだが、過疎すぎて落ちちゃった VCとかに配信できたら面白そうだけどね>自作ゲーム
779 名前:名前は開発中のものです。 mailto:sage [2009/03/31(火) 03:30:28 ID:LhzYAQbh] 今まではメインループの始めにV-Blankを待って、それから各処理を行っていたのですが、 開発が進むにつれてV-Blank中だけじゃ処理が間に合わなくなってしまいました。 そこでゲーム処理と描画関係の処理にわけて while( V_COUNT != 0 ){} GameProc() ; // ゲーム処理 while( V_COUNT < 160) {} GraphicProc() ; // 描画関係の処理 と、二つに分けてやる事にしました。 表面上はうまく動いているように見えるのですが、 こういう事をやってしまっても大丈夫なのでしょうか?
780 名前:名前は開発中のものです。 mailto:sage [2009/03/31(火) 12:58:22 ID:WlDU8zsj] 分けること自体は問題ないけど ゲーム処理でV_COUNT != 0を待つ意味は無いよ 描画が終わったらすぐに処理を始めていい while( V_COUNT < 160) ; GraphicProc(); GameProc();
781 名前:779 mailto:sage [2009/04/01(水) 03:36:13 ID:2baejuDU] >780 おおなるほど。 確かにそうした方が処理時間をより多くさけますね。 レスありがとうございます。
782 名前:名前は開発中のものです。 mailto:sage [2009/04/23(木) 20:20:06 ID:jG2DENZH] ここってまだ人いますかね…… 自分で作ったプログラムをPogoShellから起動する場合,「終了してPogoShellに戻る」 という機能をつけると便利だと思うんですが,やりかたがさっぱりわかりません. どこで調べればいいのかご存知のかた,教えてくださいませ.
783 名前:名前は開発中のものです。 mailto:sage [2009/04/23(木) 23:16:10 ID:GrL4nFHE] Pogoshell resetでググってみた。 ttp://boards.pocketheaven.com/viewtopic.php?p=52627&sid=a2b1ee533e1a9b52029d305b2c611034 になんか書いてあるような気がする。 あとは自分でガンバレ
784 名前:名前は開発中のものです。 mailto:sage [2009/04/24(金) 08:02:45 ID:7kCUCgG4] カートリッジのバンクセレクタを元に戻してswi 1, swi 0の順でリセットかければおk Visoly系(F2A)とEZ/XG-Flashはlibpogoのrestart.Sを使えばいいよ
785 名前:名前は開発中のものです。 mailto:sage [2009/04/24(金) 08:52:53 ID:oh9KlDGe] おお,回答ありがとうございます. リブート自体はbiosコールでできるのかなとは思ってたんですが, バンクセレクタ云々というのが俺がよくわかってない点のようですね. F2Aを使ってるので,とりあえずrestart.sを見てみます. 実はC言語しか知らないので時間がかかりそうですが.
786 名前:名前は開発中のものです。 mailto:sage [2009/08/16(日) 22:24:12 ID:DZlUccKL] 圧縮した音楽ファイルはどうやって再生すればいいのでしょうか。wavじゃサイズ大きすぎる。
787 名前:名前は開発中のものです。 mailto:sage [2009/08/17(月) 12:45:32 ID:SfTpCTHN] 何で圧縮した音楽ファイル?まずはそこからだけど。 mp3は再生できないよ。
788 名前:名前は開発中のものです。 mailto:sage [2009/08/17(月) 17:31:39 ID:SHxtq19H] そもそも、サンプリングされた音の再生がGBAじゃ無理だと思うんだが スペックが足りない
789 名前:名前は開発中のものです。 mailto:sage [2009/08/18(火) 04:34:22 ID:GgRqyFMU] それはさすがにGBAなめすぎ。 44kHzで16トラック合成出来るくらいのスペックはあるよ。
790 名前:名前は開発中のものです。 mailto:sage [2009/08/29(土) 13:25:09 ID:ajW9NjPM] >>786 > wavじゃサイズ大きすぎる というのはちょっと理解が足りないと思います。 wavやaviは単なる入れ物なので、中身が問題。 多分、PCM(非圧縮)のことを言ってるのですよね? 同じwavでも中身がmp3だったりADPCMだったりするならサイズは小さくなります。 IMA ADPCMなら約1/4になるし、デコード処理も軽いのでオススメ。 また、Windows付属のサウンドレコーダーでデータが作成できるので手軽。 wiki.multimedia.cx/index.php?title=Microsoft_IMA_ADPCM wiki.multimedia.cx/index.php?title=IMA_ADPCM が参考になります。 wav内での格納形式は前者のURL、デコード処理は後者のURLを参照して作ってください。 データはwav内のブロック単位で処理し、ブロック内でデータは完結します。 デコード処理はURLに書かれている4行の処理が全てです(最適化についても書かれていますが)。 また、sox等のソースも参考になります。
791 名前:名前は開発中のものです。 mailto:sage [2009/09/18(金) 03:08:25 ID:si+yuBJ2] 効果音の周波数って、どれくらいが良いんでしょうか? アクションゲームを作っているのですが、 現在8000kHzで同時再生させる為に自力合成で結構処理が重いです。
792 名前:名前は開発中のものです。 mailto:sage [2009/09/25(金) 03:10:20 ID:JAA61hM3] 77.8MHzがオススメだよ。
793 名前:791 mailto:sage [2009/09/26(土) 02:31:51 ID:IAonhfHR] >>791 の8000kHzは8000Hzの間違いでしたw >>792 77.8MHzという事は77800000Hzですか。 8000Hzでヒーコラ言ってるので自分では無理っぽいですね。
794 名前:名前は開発中のものです。 mailto:sage [2009/09/27(日) 16:50:00 ID:fPKTk+yY] >>792 ZIP-FMか! >>793 ネタをネタと(ry
795 名前:791 mailto:sage [2009/09/30(水) 04:44:16 ID:BCNooBfe] なん・・・だと? 出来るかわかりませんが市販のゲームを調べてみます。
796 名前:名前は開発中のものです。 mailto:sage [2009/10/01(木) 00:00:06 ID:NOpZROc8] 8kHzくらいで重くなるってことはほとんど無いから なにかやり方間違ってるんじゃないの? DirectSoundからサウンド要求があるたびに割り込んでたりとか
797 名前:791 mailto:sage [2009/10/03(土) 05:07:24 ID:UpJ1HpGL] やっぱり8000Hzは低い部類になるって事ですね。 現在は、合成用バッファを1フレームで消費する量の2倍確保して、 前半を再生中なら後半に書き込み、後半を再生中なら前半を書き込む処理を 1フレームに一度呼び出す方法を取っています。 2チャンネル同時再生するとHBlankの数値が30弱くらいの重さです。 やっぱり何かやり方が間違ってそうなので、ソース見直して見ます。
798 名前:名前は開発中のものです。 mailto:sage [2009/10/03(土) 21:37:39 ID:5IuFgICN] 重いというからどれほどかと思ったら2音合成でHBlank30ライン分か。 チューニングしてなければ、それくらいはいくかもね。 軽くポイントだけ。 7884Hzにしろ8121Hzにしろバッファのサイズは4の倍数なのでループを4回分展開出来るな。 10512Hzだと16の倍数になるから、16回展開出来る分更に速いかもしれない。 どっちにしてもDuff's Deviceを使えばいい。 効果音は1フレーム単位のサイズに揃えれば、終了判定は毎フレ1回/チャンネルに抑えられる。 これをやった上でそれ以上速くしたかったら、既成のライブラリを検討した方がいいかもしれないよ。
799 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 23:37:24 ID:vY9mcI2T] void mixAudio(); // プロトタイプ宣言 void mixAudio() { ... } // コード があるとして void mixAudio() IWRAM_CODE; IWRAM_CODE void mixAudio() { ... } にして、そのソースを-marmでコンパイルするだけで、おそらく負荷が1/3になる。 手元で軽く組んでみたが馬鹿正直に作って2チャンネル合成でHBlank30弱だったのが IWRAM_CODEにしたら10弱になった。
800 名前:791 mailto:sage [2009/10/05(月) 04:23:04 ID:6seh3Jx2] >798 ループの展開…?forループを全部べた書きするという事なのか…?と思いつつ、 「Duff's Device」というのを知らなかったのでググって見たのですが、 これは凄いですね。こんな方法は自分では絶対に思いつかないです。 >799 わざわざ検証して頂いてありがとうございます。 IWRAM_CODEという存在は知っていたのですが、 効果音再生よりも重い処理があったら困るので、 これは最後の切り札にしようと思ってました。
801 名前:名前は開発中のものです。 mailto:sage [2009/10/05(月) 18:42:46 ID:71pb6xEM] ループで成り立っている高負荷な処理は、切り札と言わず全てIWRAM_CODEにすればいいよ。 ぶっちゃけループ展開はする必要ない。 俺はPCM合成の他にアニメーション処理や当たり判定をIWRAM_CODEにしてる。
802 名前:wKpZsteMsIgntl mailto:g0g4hpm8.@gmail.com [2009/10/23(金) 02:07:30 ID:D5BMcRYR] This guy was lying in bed, tossing and turning and groaning, and finally he sits up, opens his mouth, and shoots a six-foot flame across the room. ,
803 名前:名前は開発中のものです。 mailto:s [2009/11/23(月) 03:07:00 ID:mfSHcmeu] 300