Talk:Famicom/NES Sound Driver List

From Game Developer Research Institute
Jump to: navigation, search

After Burner

I would need an NSF rip to figure this one out. It sounds like a few different sound engines such as Tengen, Sculptured Software, and Marionette. The percussion makes me believe it was Tengen, but Brad Fuller said he doesn't remember this title.

Cross Fire/Shinobi/Wrath of the Black Manta

The frequency registers are the same for both games. They probably share a/the same developer.

Nintendo Drivers

I just wanted to leave some documentation for my work on the Nintendo sound drivers section. There's a fair bit of guesswork here, such as who exactly wrote which versions of the drivers. MobyGames credits Kaneoka with porting some of the earliest NES games from arcade, so it is assumed he wrote the driver used by the games under his name. This driver is very interesting because depending on the game (and channel, as some games use different encodings for different channels) it shows characteristic features of BOTH the later Tanaka engines AND the later Kondo/Nakatsuka engines - features that only 1 of the 2 successor engines continued to use. As a result I believe that ALL of Nintendo's early-mid engines are derived from Kaneoka's engine, though there may be some later engines that are completely new codebases. The last NES game Kaneoka is believed to have worked on is Excitebike, and indeed the driver used in it shows no noteworthy differences with the earliest versions such as in Donkey Kong.

The question of when exactly Kaneoka's engine became the Tanaka or other engines is complicated because of the lack of reliable credits and the fact that both Kaneoka and Tanaka worked on some of Nintendo's earliest games together. The earliest NES games Tanaka worked on that it is not believed Kaneoka worked on are Wild Gunman, Urban Champion, and Duck Hunt (which are noteworthy as they precede Excitebike). All of these use a driver that is clearly based on Kaneoka's but already show distinctive differences. In particular it separates the channels into separate pointers, removing the Kaneoka engine limit that the entire track must fit in 256 bytes; it also introduces the loop commands that are unique to Tanaka's engines and eliminates the combined length/note byte format that is present in Kaneoka's, Kondo's, and Nakatsuka's engines.

Some games defy characterization, however. 3 games I left credited to Kaneoka - namely Clu Clu Land, Soccer, and Volleyball - show the addition of a mysterious opcode 01 that seems to do odd game-specific things, and I do not understand them without fully reverse-engineering the engines. Per MobyGames Clu Clu Land was composed by Nakatsuka, but programmed by Tanaka (??), while Soccer and Volleyball have music composed by Kondo. It is possible MobyGames is wrong about Tanaka and Clu Clu Land (I've found a number of other games that use the Kaneoka driver even though they're not attributed to him). It is possible this represents the first very early version of what would become Kondo or Nakatsuka engines.

Donkey Kong 3 is also mysterious. It separates its channel pointers like Tanaka engines, but does not support loops. It's possible this is a very early prototype version of the Tanaka engine.

As for the Tanaka series of engines, here are some of the distinctive features of the different versions:

Version 1:

  • Settle on separate set length/note commands and eliminate 5/3 combined encoding
  • Loop commands
  • Increase track size limit from 256 bytes to 256 bytes per channel

Version 2:

  • Volume envelopes
  • Change the set length command format to allow $58 key codes rather than $40

Version 3:

  • Per-channel block/playlist structure for multi-level loops, more than 256 bytes per channel, etc.
  • Set note length table offset and set timbre commands
  • Pitch envelopes

Version 4:

  • DMC sound support (up to 3 for 4a e.g. Mother and 7 for 4b e.g. Dr. Mario)
  • Set transpose command
  • Additional pitch envelopes
  • New volume envelope format

--Quantam (talk) 03:28, 31 May 2022 (UTC)