PurrFX project update 8

Project status overview as of August 25, 2020.

Commits: August 25, 2020.

After collecting the data, the next logical step is to use it. To do this, I created a class that reads frame data from a file and prepares it for use. This class, like any other implementation of CFrameDataProducer, interacts with the emulation code object by attaching to it.
 
What happens inside the emulation code for playing frame data based sound resembles (as I think) the operation of a device called the “Game Genie”. As soon as it comes to the play function from the NSF file, the code is intercepted and redirected to the play function at $6000 address.

I cannot say that it is beautiful, but most likely there simply does not exist a more suitable way to use an arbitrary set of audio related instructions (in any required quantity, even in gigabytes).

This is what the log file looks like, demonstrating the operation of the play function at the $6000 address:
 
And here is how it sounds (using the data collected from the “Contra Force.nsf” file):

Did you notice it? There is something wrong with the playback of DPCM samples. Fortunately, the solution is very simple. It is enough to look into the log of the untouched "Contra Force.nsf" file:

Each time the DMC channel is turned off and on by writing bytes into the $4015 register. After repeating this trick in our play function, we get the correct sound:
 
And everything would be fine, but I am not satisfied with the fact that you still need existing NSF file, and preferably the original one...


Related information:

 

Comments