本帖最后由 n805 于 2026-3-13 21:38 编辑
9 D: y$ x0 r# l6 p
: ~" ^% t: \& u+ B% K% Q5 @; d$ {Alpha Denshi (ADK) NEO-GEO MML 音乐驱动程序 解剖和 Z80 汇编 3 W, r2 d( C3 w6 ~3 Q M
& r; O6 d& h2 H6 o技术前的狂热: ' @0 [( Y& k4 l8 T
在最早的Neo-Geo发行游戏中,最让我印象深刻的是由 Alpha Denshi Corporation (ADK) 发布的。ADK的游戏通常拥有大型、彩虹色调、丰富阴影的图形 (有些确实有点刺眼),而SNK开发的游戏则规模较小,有时艺术风格具有喜剧效果,音乐则令人难忘。 的确, 'Nam-1975 (由SNK开发)有着出色的音乐,但 SNK的其他早期Neo-Geo作品表明他们尚未完全掌握硬件。同时,ADK在该系统上的首个作品,幻魔大战,令人印象深刻,让人不禁怀疑SNK当时在抽什么; 而且,嗯,ADK的家伙们抽的又是什么呢。
- T% g7 [8 [# p; J6 Y. k6 X事实上,Neo-Geo硬件大部分 是ADK的成果,由ADK开发并由SNK生产,类似于Hudson-NEC为PC-Engine安排的 arrangement。虽然早期的Neo-Geo库的音乐和声音非常具有90年代的特点(比如或 超级间谍),ADK的音乐——有一些例外——并没有真正随着时间而过时,每一部作品都比前一部更好。 魔术师有合成器幻想主题;蓝色之旅,钢鼓雷鬼主题;剑与魔法,剑与魔法配部落鼓的管弦乐大片;以及激战赛车,一些不错的SEGA赛车摇滚曲目的仿制品。
- Z+ {; q: i+ l0 f4 |1 u
; |2 c8 ]" |8 Z y9 G( b/ h z5 j上述游戏中系统上有一些我最喜欢的音乐,所以当我看到最佳ADK作品 tend 要有一个人名叫渡边由香(或“由加”)作为唯一的(或共同)作曲家时,我并不感到惊讶。 久贺制作的“lesser” ADK作品中还有其他两个名字,除了精彩的Thrash Rally。(Ninja Combat的音乐非常糟糕,所以你可以明白我的意思。)无论如何。有一天,我正在用十六进制编辑器浏览游戏的音效ROM时,我被发现ADK的游戏大多有未编码的MML音乐数据所吸引。6 ^( Q( l2 N1 Y( e
3 P4 N' a: ~: x3 s5 Z* Z+ XMML... 什么? 3 c& v6 B) R) P$ u, @
嗯,这在西方不太为人知,但MML是一种家庭计算机的音乐记谱语言,在80年代得到了日本公司的广泛支持。它也是日本电子游戏世界中主要的作曲方法,就像PC/Amiga音乐世界中的.MODs/追踪器一样重要。因此,在Z80 ROM中找到MML表示法就像是在游戏ROM中找到BASIC语句一样:你可以轻松地读取它,并且通过一点努力可以理解它。所以这就是我所做的:我反汇编了Z80音乐ROM,将其反汇编到Magician Lord,并试图弄清楚ADK解释器使用的特殊MML语句如何映射到“现代”MML(尽管MML似乎在当今也没有标准化和清晰的解释...)
" P% ?2 I% F- e- I7 ?这是关于Neo-Geo的ADK早期音乐驱动程序的一些元数据:, H$ D9 `$ z( e0 S' e2 c) u
4 o" g; W9 b6 f7 s& }如你所见,ADK MML驱动器经过了几轮修订,虽然 当我比较1.2版本和7.3版本时,似乎没有很大的不同,也没有更多的代码。也许其他人可以参与并说明这些驱动器版本中究竟发生了什么变化。ADK开发的声卡驱动程序超出了上面列出的范围: World Heroes和 后来有128K的数据,并且有更多的银行切换,但我不太可能在其他日子处理这些游戏。同样有趣的是,许多Alpha的预Neo-Geo游戏在Z80 ROM中也有类似的未编码MML数据,等待提取和解释。如果许多其他视频游戏,无论是家用机还是街机,都有运行声卡驱动程序的MML解释器,我一点也不感到惊讶——可能的是音符数据是未压缩的,但以某种方式编码成无意义的字符。不管怎样,这是一条值得研究的有趣途径。
6 b3 b2 X9 J# M# s" I2 J+ P2 e1 ~ g$ E' V. x
- d. d1 g# m3 F9 Y7 t3 g. Y- V$ f
Neo-Geo 使用 YM2610 FM/ADPCM/SSG 音频芯片来产生所有音效和音乐。 该芯片有15个音效通道,分为4个FM,3个PSG,1个噪声,6个ADPCM-A, 和1个ADPCM-B通道。每种类型的ADPCM采样在YM2610上使用自己的总线。ADPCM-A采样通道以12位数据产生固定18.5 Khz的采样率,而ADPCM-B通道可以产生广泛的采样率,具有16位输出和采样循环。8 ], Z; i: S0 B$ p8 s8 Q0 e
因此,Neo-Geo系统能够通过努力产生从最简单的 Sega Master System风格方波 PSG 哔声到长达几分钟的流式采样音轨的声音。显然,由于1990年代初掩膜ROM的成本,大多数游戏都局限于使用FM音乐轨道,采样用于打击乐、一些乐器、人声和音效。从1990年代中期开始,许多Neo-Geo游戏的音轨变成了简单的长单音采样,这在一定程度上失去了YM2610硬件的独特特性。; w% L3 O1 z# a) E5 V9 e- R
Neo-Geo内部的Z80 CPU负责管理所有的YM2610音频、端口写入和音乐驱动软件。尽管所有15个通道可以同时使用,但SNK自己的驱动中YM芯片的SSG(3 PSG,1 noise)部分大多被忽视和偶尔使用。ADK音频驱动可能甚至无法将SSG声音作为 主音乐数据的一部分使用(尽管作为音乐上层的声音效果,这是可能的)。由于西方人通常会对FM声音生成尖叫着跑开,自制Neo-Geo驱动程序避而不谈FM,只专注于PSG和PCM。所以也许这个页面能帮助将FM通道重新引入未来的Neo-Geo音乐和自制创作中。
. U9 ?- |6 e) n7 O; Z
: x: P; b* h3 m1 C' V2 |" [ADK的MML格式 * Y+ x4 G4 ~6 S: o9 Q
由于这个音乐驱动程序需要处理各种声音硬件通道(FM、PCM、SSG)并允许作曲家更改其参数、乐器和效果,ADK的MML驱动程序的命令相比现代MML有所扩展。ADK驱动程序基本上包含4个独立的MML解释器/引擎,每个解释器处理FM、ADPCM-A、ADPCM-B和SSG声音单元之一。在主要的音符数据部分,解释器依次处理4条FM轨道、6条ADPCM轨道,然后是最后一条ADPCM-B轨道。看起来SSG轨道由Z80代码中的音效部分单独处理。一些ADK的MML命令在现代版本中没有可比较的内容。现代MML对音符和其他命令可能是不区分大小写的,而ADK的驱动程序则是非常区分大小写。许多额外的命令占用了可用的小写和大写字母的范围。小心!在 MML 命令需要额外参数 "n" 的情况下,ADK MML 版本总是用十六进制表示的一个字节,而现代 MML 参数则以十进制形式写在 ASCII 中。我想指出,这些信息是不完整的,所以如果有任何其他技术知识的人想要更详细地了解,请去做吧!!!
: z t8 x# f8 n5 n, K2 i, M* s. o+ I |