The mistubishi chip is a speech synth with ROM data.
Same with the NEC/Jaleco chip. Sample quality seems to be higher than the 2A03 DPCM, but you're restricted to the samples loaded on the built-in ROM from the factory*, which are generally vocal sound effects and nothing relating to music, as far as I know.
*With software emulation you can potentially use different samples, but you won't be able to use those samples on the real thing.
According to the DK3 arcade manual, DK3 uses two main Z80 processors, one for computation and one for DMA. At the bottom right-hand of the board is located two 2a03's connected to state machines, a ROM, and RAM.
Technically you could hack the Z80 code ROM's reset line to just call the sound engine; then hack each 2A03 sound ROM with custom data.
Afterward just add the CRCs of the ROMs into the dkong.c driver, recompile MAME, rename your zip to what you called it in the driver code, and then load your custom dual-2a03 music.
~~~~~~~~~~~~~~~~~~~~~~~~
But yeah, VGM export would be easier, jsr.
Also, I believe the Punch Out! (Arcade) NSF is "ripped" too. Not sure if Super Punch out! (Arcade) or Arm Wrestling (Arcade) are ripped. They are likely incomplete too since they all use a VLM5030 (a vocoded decoder chip) output and write to $4011 for PCM sound as well.
I'd be very interested in "beyond NSF" features in FamiTracker. Staying within the boundaries of real hardware is fun and great for making authentic-sounding stuff (look at all the stuff virt has done for commercial projects with FT!), but dang it sometimes I just wanna have stereo sound and longer waveforms, things like that. A sort of general-purpose chiptune tracker.
So I say go for it! Let's have A DOZEN 2A03s. (that would sound awful.)
A neat consideration is that if FamiTracker(s) or DefleMask support Donkey Kong 3 mode that you could have an entire 2a03 to write for a PCM sample engine without bogging on main FamiTracker / DefleMask sound engine. Would be a rather simple engine too that could be a SuperNSF hackjob. mukunda might not care about supernsf engine merging with other code if you ask him. Codes could be edited and the SuperNSF routine could be forked into the mainloop of FamiTracker to point to the code residing. Like the arcade machine has, a Z80 would delegate instruction and pathway between the two 2a03s and their respective RAMs and ROMs. In this case the engine code needs not be ripped and used from source. It'd be more considerate of resources to just make your own from scratch. Wouldn't see the code for just forking into the two and providing work RAM, initializing, addressing, and timing code very difficult to write.
Potential funness indeed. :D
The arcade machine used one 2a03 for the PCM crowd noise too. Helped out to have control of its volume too; so the crowd noise sounded more realistic.
Well I guess if you wanted to be accurate you could always borrow MAME code to have the vocoder chip to play with as well. :O
No hardware emulated platforms that support Donkey Kong 3 VGMs but it's definitely possible. You could totally socket and replace the ROMs for the Z80 and the 2a03s; drop in a quarter (like your engine routine requires) and start to play your jams/tunes. Would look pretty sick if you got your own DK3 machine.
Honestly, I'd love to see a tracker that can handle emulating arcade hardware from Nintendo's early cabinets, but there's still something to consider; as much as the NES' sound hardware is well documented, it's still a complex feat to accomplish in software. The arcade hardware's also well documented, but owing to the architecture, it's going to be slightly more complex in terms of trying to emulate (especially when you're also going to try & integrate both the console & arcade emulation into one single emulator).
Now, granted that MAME & MESS has accomplished this pretty well, it's out of the question to try & integrate this into FamiTracker without a complete rewrite, owing to the fact that most projects don't use the same sound engine(s). Sure; programmers try to make it easier to integrate their engines into other projects written from scratch, but the fact remains that each engine is custom-made & none are easy to drop into existing projects.
_______________________
Technology: the one thing that's hated & cursed at by all engineers, technologists, scientists & technicians!
A complete rewrite is entirely unnecessary. Especially given the modular nature of the secondary processors. If anything it would just need slightly more emulator host resources to be emulating two 2a03 environments simultaneously; while emulating the Z80 that times the two and handles the additional hardware.
The MAME engine already emulates the full set of these; and the GUI would hardly have to be modified aside from another PCM instrument interface for importing and macros; and its channel(s).
The PCM routine of the additional 2a03 could be written from scratch, and as I said before potentially borrowed.
The Punchout configuration could be done similarly.
You make it sound more simple than it sounds, as FamiTracker emulates the 2A03 as the only CPU; the 2A03 in this case is NOT a secondary processor. In the arcade machine, though, the Z80 is the CPU & the two 2A03 chips are peripherals of the Z80; the Z80 itself doesn't simply multiply the number of 2A03 chips by 2, nor does it make one of the 2A03 chips an expansion chip to complement the other. The Z80 & 2A03s communicate with the two chips in a similar way that a 386 CPU communicates to a UART chip in order to establish serial port communication to an external device.
By what I understand from you (& I may be misunderstanding you,) you feel that FamiTracker should be able to emulate the second 2A03 chip like an expansion chip, while the Z80 chip is something minor; sure, it's minor in terms of a user being able to produce music & you can make a user interface that shows this, but the Z80 is a major oart of the backend because it ultimately controls how the two 2A03 chips behave. In other words, you can't simply add an extra 2A03 chip into the tracker's engine as if it were an expansion chip. You'd have to add the ability to emulate the Z80, as well as some logic for the engine to be able to differentiate between an NES-centric & arcade-centric mode (i.e.: FamiTracker would need to know whether it's emulating a single 2A03 as the main CPU, or if it's supposed to be emulating the Z80 as the main CPU, thus emulating the two 2A03 as peripherals).
_______________________
Technology: the one thing that's hated & cursed at by all engineers, technologists, scientists & technicians!
Well the good thing about VGM is that you don't have to care about CPUs and hardware and stuff, all that's needed is a second set of 2A03 channels. It would be extremely simple to add.
If, at a later point, anyone would want to run things on the actual arcade hardware, then I'm sure that's possible to handle at that time. But before that I see no reasons to make things more complicated than necessary.
Yeah, it's a fun pipe dream, but in the end it's super simple to just layer nsfs over each other and call it good. I don't think most people care about a tracker specifically for an arcade machine, even if it shares some hardware with a NES console.