悦楽舎 © 2002 hoshi
2025/05/31 (2025/06/08加筆)

GBA勝手移植の効果音/BGM制作の裏話 pt.2

PC98/Winゲームの勝手移植のお手伝いで、FM音源の効果音&BGMをGBAのGB音源に落とし込んだりしたやつの裏話、パート2

(6/1 動画音声のミス修正) (6/4 とっ散らかってた余談や技術の話を読みやすく加筆・修正) (6/8 “16”は8bitで桁上り!とか書いてて頭4bitだったのを修正、慌てすぎ)


悦楽舎は今日で16周年

15周年記事が2024年前半のまとめっぽかったので、最初は後半の記事を年末に公開するつもりで書いてたけど……いつの間にか時間が……とかそういうことはありません!ありませんからね!(


技術の話もあるけど今回はオリジナル(FM音源)とGBAに備わったGB音源(以下GB-PSG)版の聴き比べ中心です。聞けば分かる、かも

目次

  1. GBA勝手移植の効果音/BGM制作をお手伝いしました
  2. 作品ごとの制作振り返り
  1. あとがき


つーわけで

ここ1年でGBA開発wikiakkera102さんの「GBA勝手移植」をもう3本お手伝いをしました!

遊ぶには元のゲームデータが必要です、が、それとは別に音の確認用に使っていたテストROMも公開中です。自分が担当した所の音は全部聞けます。


とりあえずまとめて紹介 ↓

犯罪行為は犯罪です 犯罪行為は犯罪です

↑ Rookies for GBA


Rookiesは自称・探偵のおっさん(30歳)が用務員となって潜入する系ノベルゲーです。

今ではおっさんが(転生とかして)おっさん視点で語られる作品は一般的になったけど、これ約30年前の作品です。


Rookies for GBA」用の効果音(360Tick)テストROM(No.123)に追加済で、前回の「カナン ~約束の地~ for GBA」、「夢幻夜想曲 for GBA」の効果音と一緒に入ってます。



↑ 左: Viper GTS for GBA 右: Viper V16 RISE for GBA


Viperシリーズはアニメーションを見る感じのゲームです。よく動きます。そしてフルボイス!


Viper GTS for GBA」以降はテストROMもゲーム毎に分けました。テストROM(No.126)BGM(VBlank割込)用にサウンドドライバを改良してフェードアウトとかを勝手に付けました(


Viper V16 RISE for GBA」のBGM(VBlank割込)テストROM(No.129)に入ってます。再生中に波形メモリを編集できる機能があったりするけど本当は制作用で無効にするのを忘れてただけです(


テストROMにはサウンドドライバのソースや効果音/BGMの変換前の生データ(APUログ)、gPSG変換スクリプトも一緒に入ってます。よかったらどうぞ。今回はちゃんと整頓してあります。




ここまでで「360Tick?VBlank?gPSG?何……?」って人は、パート1の記事↓を読めば謎の単語のことが分かるかもしれないし、分からないかもしれません(ぉぃ

これ書いたの遥か昔のよう……まだ1年前!?


作品ごとの制作振り返り

「Rookies for GBA」の効果音制作

まず数が多く(63+12個、カナンは24、夢幻は4)、“車のロードノイズ”や“雀の鳴き声”もあって激ヤバでした(

とにかく量が多くてひたすら作るしかなかったです(上のは除外してもらって最終的に作ったのは66個)

仮完成したら調整の為にakkeraさんから感想をもらって……の段階でも量があって向こうも大変そうでした。


で、元がFM音源(FM4音)の効果音をGB-PSG(矩形波2音+波形メモリ+ノイズ)で“再現”するのに正解があるはずもなく、OKになった後も改善の余地がまだ残ってる気がしてずーっと調整してました。

最終締切を迎えてもあれで良かったのか?と心残りがありました……!!!


パタン


自分でボタンを押して再生するのではなく、ゲームで使われた瞬間なんか良い感じになってる!!?!?


よく聞くと作りながら散々聞いた音と同じなのに、何故かもの凄いしっくりくる!?……なんで?????

…………まぁ、心残りはなくなったしいいか。うん、いいよね(


ハッピーエンド

こういう感じで作られています(裏話)

効果音聴き比べコーナー

FM音源のオリジナルと、GBASP実機で再生した自作のやつの聴き比べコーナー!

比較しやすいよう最低限のマスタリング済。実機録音にノイズが乗ってるのは仕様です(

SOUND 08 (オノマトペ・ドキッ!の音)

2番目に使用箇所が多い効果音。図星でドキッ!です。ギクッ!ではなくドキッ!

SOUND 09 (オノマトペ・ひらめいた時の音)

1番使用箇所が多い効果音。「グラスを弾いたような音」なので“反響”を再現したかった。

SOUND 10 (オノマトペ・疑問の音)

これも使用箇所が多い効果音(4番目)。“疑問”っぽさを意識してアレンジ。

SOUND 11 (オノマトペ・とほほの音)

4つあるオノマトペは難しかったけど、どれも作ってて楽しかったです。

SOUND 15 (モチーフ・学校のチャイム)

現実のチャイムは場所や時間など、聞いた環境で音が変わってきます。

最初は反響させまくってた(山に囲まれたド田舎育ち特有)けど、控えめに(朝の教室のイメージ)になりました。

SOUND 14 (モチーフ・踏切)

これは遠くを見つめて「どこからか踏切の音が聞こえた」シーン専用の効果音。

踏切っぽくて一番小さい音量にしたけどまだ「踏切待ち」くらいの距離な気がする。これ以上無理(

SOUND 29 (モチーフ・熱したフライパンに水)

ジュー


(余談)Rookiesのストーリーについて語ると少々長くなるが(ネタバレを含む)

正直に言うと、各要素の接続や不足の確認まで手が回らなかったんだろうなって感想にはなる(特に序盤)けど、後半に進むにつれて書きたいものやテーマがハッキリしてきて全体としてはとても良かったです。


何のきっかけもなく被害者の娘から、幸香に名前表示が変わる 安直なセリフだな浅野ぉぉぉ

左: すぐ話を聞きに行くだろうと思ってた“被害者の娘”だが、主人公と会話するシーンはなく完全放置の舞台装置。

右: “因縁”のライバル・浅野。登場から明らかに黒幕で、出るたびにヘイトを稼いでいく。それがラストまで続く。


探偵モノか?と聞かれたら学園内で起こる事件に巻き込まれて振り回され続けるのでたぶん違います(


そして主人公に学園内で落ち着ける場所はなく、浅野がいつ攻撃してくるかも分からないので、常に浅野の動向が気になり、♥成人向け♥シーン中も浅野が何か仕掛けてくるかも……と、プレイヤーまでも浅野のことばかり気になって仕方なくなってきます(

最初は素っ気ない感じだった浅野も話が進むにつれて主人公と相思相愛(嫌悪)なことも判明し……ホモエンド、はありません、念の為( ヒロインの個別ルートがまずありません


で、強引な辻褄合わせとか色々気になる点もあったけど、最後に向けて“エンジンがかかる瞬間”があります。


“浅野を見るとすぐ冷静さを失う主人公”は裏を返せばその度に掘り下げがあって充分だったのと、諦めそうになった時積み重ねてきた仲間の信頼で復活、最後は仲間が集結!と少年誌的な王道が上手くハマってました。

性格が終わってる主人公を信じてくれる聖人 目が覚めるのが遅いとかは気にするな

左: 俺を信じるお前を信じる! ( ≒ お前を信じる俺を信じろ!) ここの時間の重みを感じさせる演出がとても良かった。

右: 終盤に味方が増え、勝利に近づいた……と思いきや


浅野はかなり用意周到でやたらと手数が多く相当にしつこいです。

しつこすぎて勝ちへ向けてフルスロットルになった後「終わったな、いやまだか」「終わったよな?まだあんのか」「終わってないだろうな、あれ……終わりか」みたいな感じにエンストしながら決着がつきます(


まぁでも主人公は“夢”であった探偵の仕事を曲がりなりにもやり遂げたし、

“応援してくれる人はいる”ってテーマがしっかりしてました。読んだ後の満足感も大きかったです。


百合 ある意味王道

左: 潜入パートで一時的に主観となるキャラが切り替わることも(ところで男がいると成立しないジャンルがあるよね?)

右: お手本のような「くっ・・・」


作画が良くてキャラデザもそんなに古く感じないしキャラ設定や全体の構成は良かった、けど最後に明かされる設定に繋がる伏線が少なくその分浅野が過剰にヘイトを集めて印象に残りすぎたのが勿体ない作品でした。

……って約30年前の作品に今の感覚で感想を書いて良いのだろうか(今更)


・ おまけ

麻雀 麻雀2

タテチン(6)ピンフ(1)リャンペーコー(3)ドラ(1)ドラ(1)は合計12翻、数え役満(13)に1つ足りないの意

タテチンはメンチン(門前の清一色)の別称らしい(チンイツ(清一色)は副露(ポンとかチー)で5翻に下がるため区別して呼ぶ)

謎の「小喜色」は「小四喜」の誤植?西を鳴いて字一色とでダブル役満になるのは小四喜のみ。


学園なのに賑やかで楽しい雰囲気のシーンは何も知らなかったこの時くらい(


「Viper GTS for GBA」のBGM制作

なんといってもフルボイスです。ボイスはADPCMじゃないと流せない(※力技を除く)ので、いままでだいたいBGMをADPCMで、効果音をGB-PSGだった状態から色々変わりました。↓

1. VBlank割込で再生

まず、データは今までの仕様(LSDj/MusicROM 360Tick)ではなく一般的な仕様(VBlank 60Tick)で作ってほしい、ってリクエストでした。


(LSDjのkitなどを使わない普通の曲に)360Tickは正直過剰なので削っても大丈夫です、たぶん。

大きな変更じゃないしサクッと済ませられるだろう、と思ってました(

2. サクッとはいかなくて試行錯誤

360TickなAPUログを雑に間引いて1/6に → ガッタガタでちゃんと鳴らない(一部コマンドは360Tick動作だし当然)

LSDjを60Tick(処理速度を1/6)に改造して曲も調整 → マシになったけどまだガタガタ

(ガタガタは例えば1Tick毎に音程が変化するビブラートが、変換で0~2Tick間隔になって混ざってしまった状態)


で、調査するとBPMを作り出しているTimer割込とVBlank割込の周期が噛み合ってないことが原因でした。

たぶん今までlsdpackで出力したデータは全部ガタガタで、処理速度が1/6になったことで顕著化しました(

360Tickならほぼ誤魔化せていたのかと言えばYes。MusicROMで音が変になる原因もこれ(発生が稀で特定できてなかった)


今回からVBlank割込だけの仕様なので、ここでTimer割込が無くても大丈夫!にしておかないと地獄です(

3. VBlank割込と同期可能なBPMを作ってLSDjに追加

“VBlank 60Tick”と書いてるけど、正確には59.72750057Hz(=リフレッシュレート)です。

この微妙な数値と相性がいいBPMを探して再生すると……ガタガタ回避率が99.9%くらいになります(

0.1%に当たったらAPUログの手動編集です(


で、相性がいいBPMは、表を使って探します。

同期可能なBPMの表

まず一番上の行、(無改造)LSDjのBPM120(.0018)再生は、1小節当たり119.4531784回のVBlank割込でした。

こういう曲はループさせる時、曲の“最後”と“戻り先”が小数点以下何回分ズレているかちゃんと把握して補正する処理を入れておかないと、数曲あったら何曲かは確実にガタつきそうでかなり嫌です(

なので、それを気にしなくていい割込回数が整数になるBPMを探してみます(黄色の列に手入力、計算式は……省略!)


割込120回はBPM119.4550、割込119回はBPM120.4588で、どっちも微妙に120から離れてます。

間を取って119.5回ならBPM119.9548。VBlankと同期可能でいい感じなのはこれ!(ただし曲の小節数が2の倍数か要確認。そして2小節ごとに239Tickで揃っているか変換時にチェック。ズレていたり聞いてどこか変だったら手動で(以下略))


同期可能!と言いながら手動編集の可能性が残る理由はグレーの列にあって、

グレーの三列は左のLSDj用の16進数→10進数に変換→BPMと、BPMを計算しています。式を変えて割込回数(Tick)→BPM→10進数と計算していく時に“整数”を期待する10進数の欄に小数が来てしまいました。仕方なく10進数→四捨五入→16進数と計算してLSDjに入れます。で、四捨五入の影響で最終的な挙動はBPM(REAL)、Tick(REAL)です。

割込119.5回ではなく119.50239234回になってしまった……1回ガタッが起こらないことを祈りましょう(


……と、“逆方向”から計算したBPMを使うようになりました。よく分かんないですね

でもこれでVBlank割込だけで再生できるデータが作れるので今後音を扱いやすくなりそうです(容量も小さくなったし)

ただしLSDjの画面に小数BPMを出すのが面倒で制作がGBだけで完結しなくなりました(

3. 曲作り

前準備が終わっていよいよ……

効果音は音を重ねてそれっぽい音の響きを再現してましたが、そんな贅沢な使い方曲ではできません()


PSG2音+波形メモリ+ノイズでだいたい4.5音分詰め込めるけど、FM3音+SSG3音なので時々足りません()


だいたい形になってから↑のVBlank化をしたため、LSDjのV,Pコマンドは挙動が1/6倍速になりました()


和音はオクターブかパワーコードに“逃げ”ていたら、暗いので明るくしてほしいって要望が来ました()


「V,Pコマンドが1/6倍速」はにパラメータが復活したような感じで楽しく、無限に時間が溶けました()

これらの微調整が可能になったのはそれなりに大きな変化で、使い勝手が若干良い気がする音になった

4. ヘッドホン・スピーカーモード

ゲームにも採用されたオプション「ヘッドホン・スピーカーモード」は作業中に「ぷにる」を見て、急にメトロイドフュージョンをやりたくなり、設定にあったから真似した(謎)

GBA実機でもヘッドホンと本体スピーカーで音が違うのはどうしようもないので、どっち付かずな中間の音にするより選べた方が良い気がして分けました。


スピーカーモード ヘッドホンモード

↑ 左: スピーカーモードの波形メモリ(GBA用)、右: ヘッドホンモードの波形メモリ(GBA用)


差は波形メモリの4バイトだけです。今はペラペラのスマホや豆粒みたいなイヤホンでもまともな音が出て忘れがちだけど小型本体は低音が出なくて音がスカスカになる弱点があります。なのでこれで低音(ベースやキック)に含まれる高音を強調して「何も鳴ってない」を回避してます。これで上手く誤魔化せます。

つまり、低音(の高音)ブースト機能ってのがスピーカーモードの正体です。


今までヘッドホンで制作そのまま録音だったので、本体スピーカーも想定して作ったのは初です。てな感じで一応、実機+ヘッドホンはヘッドホンモード。それ以外(エミュ含む)スピーカーモードがオススメです。

二択ではなく四段階のブーストにする案もあったけどUIが面倒でやめた

5. 最後にBPM変更

テストROMに同じ効果音が2つずつ入っていて混乱したかもしれません……(


完成バージョン 最終バージョン


早いほう(ファイル名に-)は元のBPM(?)とほぼ同じか少し早い、曲単体で作っていた時の完成バージョン、

遅いほう(-じゃないほう)は“完成”から1.5-2.0%遅くした、ゲームで使っている最終バージョンです。


ゲームで流すと体感で早く聞こえる謎現象が公開直前に発覚し、調整したのが最終バージョンです(

どういう原理(か作業ミス)でこうなったのか未解明で、次のRISEでは起きてないので迷宮入りしました まぁ起きてないならいいか(

BGM聴き比べコーナー(GTS)

録音は「早いほう+ヘッドホンモード+SP実機(AGS101)+安物変換ケーブル」です。

あと、お手伝い告知ツイーヨする直前に……これ初めてのGBA音源チップチューンなのでは?と気付きました(

GTS06 - title-tattle

タイトル曲、FM音源からGB音源になるとこんな感じだよ~みたいな挨拶曲です(謎)

GTS02 - shadow

(名前がshadowだし)暗い曲かと思ってたらそうじゃなくて“バブル時代のギラギラ感”だった曲。

そのままだと暗くなるので暗い成分を抹消するためにほぼ総当たりで使える和音を探しました(

GTS03 - blow hot and cold

今度こそ暗い曲、キックが重要なので再生中の波形編集機能やヘッドホン/スピーカーモードを実装したのはこの曲の作業中でした。

GTS07 - wishy-washy

音の響き方が似せられそうだったので可能な限り似せた曲、明るい曲作ったのいつぶりだろう(


「Viper V16 RISE for GBA」のBGM制作

こっちもフルボイスでよく動きます。バトルもします。

で、GTSの7曲からほぼ倍の13曲、同じFM3音+SSG3音でもSSGっぽい音作りだったGTSから急にFM音源の表現力を発揮した曲が10曲以上です(

新しい技術とかなくただひたすら気合で13曲作りました(


ガンガン和音使うとか、メロディがないも同然とか(メロディがあれば音が足りなくても格好は付く)、ドラムを押し出してくるとか

そういうのの再現は困難なのでチープすぎず自然に聞こえるようにどうにか落とし込みました。

GTS風にデチューンしてそれをGB-PSGにって頭では考えてたけど出来てるかは知らん

BGM聴き比べコーナー(V16 RISE)

BGM移植?いいえ、アレンジ集です(開き直り)

K06 - バトル

バトル用かと思ったらタイトルでも使われていて最初に流れる曲。

(RISEで多用される)SSGを1chディレイに割り当てるのを再現する余裕は基本ないけどタイトルなので付けた。

K04 - サキのひらめき

「なにこのポコポコ音!?」等、この曲にしかない変な音が多くなかなか仮完成にたどり着けなかった曲(

これに限らずメロディが乏しい曲はどんなに困難でも音色のそれっぽさを上げるしかないので大変でした。

V16は開発中に作曲環境が変わってどんな音が出るか実験した後(直前のK03は欠番)、気に入った音を使ったんじゃないか説ある

K11 - 決心

逆に迷いもなく即完成した曲。こういう曲は自分もゲームボーイも得意。

K10 - 離して!

5音必要な曲、単体ならバレないけど聴き比べると音が抜けてるのがすぐバレるので比べないでください(

どうでもいいけどペーパーマリオRPGの月面基地がずっと頭から離れなかった。ヤァー!ハッ!ピロリン 014029!

K13 - 逃避不可避

ボス戦BGMかも?と勝手に想像してたけど別にそんなことはなかった曲(

ノリノリで作ったらギャンギャンうるさすぎたのでほどほどに抑えました。BGMはForegroundに出てきたらダメ(


あとがき

つーわけで、年末に公開しそこねたGBA勝手移植の特集記事でした(

気付いたら既に5本もお手伝いしてます、2024年に4本なので開発ペースヤバすぎですね。

締切目標があるとモチベ維持が比較的楽なので、巻き込んでもらってとっても助かってます、本当に。


で、16周年は初の桁上り!(16進数では)。次は256周年まで無い!……ので、なにか完成させたいけど……


テストROMのgPSG PlayerをそのままGBに持ってきたバージョンのMusicROMを作ってみるか……とか

効果音の同時再生も付けて、ゲーム用サウンドエンジンの形にしたいな……とか

本格的にGBAチップチューンを始めるなら2つあるADPCMの片方はドラム用かな……とか

GBA用サウンドドライバは弄れてるけど自作ソフトはwiki見て1から覚えなきゃ……とか


いつも通りアイデアばっか増えてて時間がアレなので何か出来たら出ます(


年末に公開しそこねた理由?

急に学マスにハマったからです(

千奈ちゃん

ライブシーンを撮りまくる機能があって楽しい(オトカドール撮影難民)

ソシャゲなのにゲームもちゃんと面白くて、ローグライクカードゲームは画面解像度が低くてもいけそうだからゲームボーイでもいけるかも


で、ローグライクと言えば……

強いアイテムはなかなか落ちてなくて拾ったもので臨機応変、油断すると事故って緊急事態なシレン。

対して必須カードは難なく拾えて事故も少なく、最終結果に響く時はリトライ可の学マス、蓄積プレイヤーレベルでカード解禁やソシャゲ特有の延命インフレ(新ガチャが当然強い)があって、新しいのを試すのは楽しい。


1000回遊べるダンジョンに対して、1000回周回しても苦にならないソシャゲっていう表現が合う気がする。

一周の時間や難易度的にもシレン2の初級を周回して多種多様な装備を作ってる感じ。定期公演「初」って名前は果たして偶然だろうか? そしてカードをカスタムできるNIA編は中級(マゼルン)で、次実装のHIF編は恐らくお金大好きなことねが大喜び(黄金の間)だろう


とまぁ、自分の最初のゲームはアクション以外でも良いんじゃないかって一通り考えたりしてたけど……

実物の出来がやたら良くて入手してしまったちびぐるみ

ゲームはいつ完成しますの?(笑)


どこぞの女児ゲーと違ってもはや把握しきれないほど、滝のようにグッズが出てて羨ましい!これが巨大コンテンツ……!!

千奈ちゃんは(髪色が)セイナちゃんとよく似てるけどイメージカラーが(“青”や)“緑”ではなく何故“オレンジ”なのか?を考え始めると記事一つ分くらい増そうなので自重します( ちゃおで千奈ちゃんが主人公の漫画が連載しててもおかしくないし、冬のHIFでプリマジスタ プリマドンナ プリマステラになるまでの話早く読みたい。漫画とHIF編と初星コミュSEASON2で三回くらい読みたい(強欲)


名刺1 名刺2

↑ 左「ここすき」(私服、異様に手が込んでて高級感が出てて良い) 右「きほんはまる」(“壁”をゲームで撮影するのに苦労した)


ただでさえゲームが1周30~60分なのに、カスタム名刺でこういう変なの作ってると時間溶けます(

単純図形をこねくり回して絵を描いたり、文字は名前とコメントの2つしか入れられないのに書いたりは特に


親密度10

はやくこうなりたい


おしまいですわ