GBAプログラミング跡地スマートフォン用の表示で見るGBAプログラミング跡地この広告は、90日以上更新していないブログに表示しています。(大雑把な説明2)サンプルにバグがあったので修正しました。申し訳ないのですが昨日、ダウンロードした方は落とし直してください。次にGBAで使う書式を覗いてみることにします。1sec.raw無音の1秒ファイルをsoxに掛けた結果、0x00で埋まった16,384サイズのファイルが出来上がりました。8bit(符号付き)」形式で鳴らす予定なのでヘッダがない、素のデータのみ、ということがわかると思います。具材の準備は整ったので早速サンプルコードを見ていきましょう。音を鳴らす為、GBAの機能(vblank割り込み、タイマー、DMA、FIFO)をたくさん使います。決まりごとの部分が多いので難易度は相当低いと思います。TRUE);}初期化処理(snd_arm.cの16行目)です。ポイントはやはりREG_TM0CNT_L、REG_TM1CNT_Lでしょう。0の方はBGM、1の方はSE(効果音)を担当させるため、同じようなことを2回書いています。0xfbffとなります。サウンドレート」の意味することはなんでしょうか。GBAは1秒を16,777,216クロックという単位で動いており、その基準に合わせないといけません。サウンドデータは1秒を16,384分割したデータであり、別の言い方をするなら1秒の間に16,384バイトのデータを流し込む必要があります。1024Hz1024Hzの間に1バイトづつ、16384回流し込めばうまくいく寸法です。引き算をしているわけです。うまい仕組みですよね。次のREG_SOUNDCNT関連の3行はお決まり事なので説明は飛ばします。TRUE);については、音楽を鳴らす関数となっています。気になる引数は-6でしょうか。SND_ACT_START;}p->frameSizeは、音を停止させる数値が入っています。単位はvblankです。vblankは1秒に60回。adjustは0とするとなり、60。vblank毎に値を減らしていき、0になったらサウンドを停止させる、という仕組みになります。細かい事はソースコードを読んでください。adjust)」というのはvblank回数を意図的に減らす仕組みのことです。必要なのか覚えていないのですが(^^;音のお尻の部分を削っているわけなので終端に何かあるのでしょう・・・。ノイズが乗ったらちょっと弄ってみてください。普段は0でいいかもしれません。0;}vblank内での再生、停止処理ですが、これもハードウェア的お決まりなのでこれはこういうもんだと思ってください。ハードウェアの仕様がソースコードを固定させちゃったものです。順番を変えるだけでも破綻する可能性があるのでご注意ください。コンパイル環境があるのでしたらsnd_arm.hの11行目。1024)を以下のどちらかに変えてみてください。意図する結果になるかぜひ確認してみることをオススメします。18:13広告を非表示にする関連記事2016-03-05GBAのスリープメモsataさんの日記から転記しました。(大雑把な説明1)サンプルを作ったのでダウンロードしてください。)はてなブログをはじめよう!akkera102さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。