Let's drop the "and free" for a moment: Did Nintendo back then have a policy against authorized developers offering packaged engines or other middleware to other authorized developers? I doubt it. I know nowadays, a Unity license comes with the standard devkit.In [url=https://forums.nesdev.com/viewtopic.php?p=217681#p217681]this post[/url], koitsu wrote:nobody at that time was making generic and free tools for making NES games. Nintendo probably would have sued them anyway
It might be possible to tell whether middleware was used by comparing the binaries and compensating for anything that moved around, such as absolute or direct page addresses or parts that may have been ifdef'd out. In the past, I've suggested this as a way of demonstrating to the public that a modern-era platformer with all original code is not a hack of a commercial-era beat-em-up.
But it could also identify graphics engines that were adapted for use in a later game, such as Spiritual Warfare using a retooled version of the engine that Color Dreams had used for three prior Boulder Dash clones (I don't remember where I read this). And there are a couple known instances of cross-company middleware reuse during the classic era, such as Action 52 using a music engine developed by Sculptured Software, as kevtris discovered in 2011, which may have actually been licensed from Sculptured if Mario Gonzalez's recollection is anywhere near accurate. Likewise with Id licensing the engine of Wolfenstein 3D to Wisdom Tree.
There are also code snippets allegedly from the example programs that Nintendo provided to licensed developers, such as the following useless code in many licensed games that runs after palette updates:
Code: Select all
lda #$3F
sta $2006
lda #$00
sta $2006
sta $2006
sta $2006
It's been common throughout the modern era to reuse music engines, such as MUSE, FamiTone2, GGSound, and Pently. And with Shiru's neslib, cppchriscpp's nes-starter-kit, and NESmaker, modern-era NES middleware is set to take off.
There is a tool called nsfid to find shared audio drivers, but it takes manual definition of "signatures", as with antivirus, to identify these drivers. Might there be a tractable way to identify shared code across games in general?