古いゲーム音楽のテンポとVSYNC

いにしえのゲーム(ハードによるが)はビデオ出力の垂直同期信号に合わせた割り込み(VSYNC割り込み)を使っていることが多く、音楽関係もその割り込みでタイミングをとっているものが多い。

ナムコのアーケードゲームでいうとSystem I (87) まではVSYNCを使っていて、System II はVSYNCとは別の割り込み(約122.67Hz)を使うようになった模様。

で、VSYNC割り込みというと普通は60Hz(1/60秒間隔の割り込み)なのだけれど、ナムコの古いやつは伝統的に約60.6Hz。ギャラクシアンの回路を見るとHSYNCが16kHzで、それを264分周してVSYNCを作っていて (16000 / 264 = 60.60606…)、おそらく、その後もこれが引き継がれている。VSYNCが普通の60HzになったのはNA-1からだと思うけれど、System IIの後なので、この時期はもう音楽にVSYNCは使っていない。

そういえば、ナムコのF/Aの最初のサントラ(ビクターのやつ)はテンポが速いんだけれど、あれは開発中はSystem II(約122.67Hz)で音楽を作っていた(それを収録した)ので、製品であるNA-1 (120Hz) がむしろ遅いということらしい。VSYNCじゃないけど。さすがに、新しい方のサントラは製品に合わせてある。

話を古い方(NA-1もたいがい古いがw)というかVSYNCに戻すと、System I 以前のナムコ曲を MUCOM88 で再現する場合は、t199 にしてやると %1 の長さが約1/60.8秒なので、まあまあ近い感じになる。あとは C でテンポを変えるというか全音符の長さを指定してやれば良い。C を半端な値にすると正確に指定できる音符長に制限が出るけれど、%1 単位でない音符は存在しないので問題ないはず。(このへんのは、t199 C64 でうまくはまる。)

オールドナムコでない普通の60Hzのやつなら、t198%1 が約1/59.8秒なので、同じ要領でいけるかと。

家庭用ゲームの世界だと、海外版でPAL(VSYNCが50Hz)のハードへNTSC (60Hz) で作ったものをそのままもっていったせいで、テンポが異常に遅いのがあるとかいう話もあった。