Yeah, I redid Let It Go, and it looks much better with the audio in sync and the end frames not missing.
The packer isn't very user friendly... when it reports the audio bytes left, that was meant to give me a hint whether I had things lining up. There are three possibilities.
First is that it reports 0 bytes left, but before that it reports that it ran out of data too early. In this case, your audio stream is shorter than the video stream, and the end of it is going to be screwed up (and possibly out of sync, depending on how early it died).
Second case is it reports 0 bytes left, but did not warn. The odds are that you did not actually get exactly the correct number of bytes, more likely it ran out of data during the last frame. This usually has no ill effect.
Final case is you have bytes left. As long as that's less than 1544, you can be sure there is less than a single frame of audio omitted, and all is probably well. If it's more, you didn't do your math for the audio conversion right. You can decide how many frames it's off by and whether you care.
Now.. how to play.. that's a harder one. The new release of Classic99 has a #define in the source code to enable a dummy device. This dummy device streams a large amount of data through >7FFF, and resets the stream when >6000 is accessed. (I hope to build this device eventually
). It's not enabled by default because it could interfere with cartridges (the byte at >7FFF would be wrong for a normal cart). But rather than forcing everyone to rebuild Classic99, I'll post a hacked version here.
The other alternative is if you want to make a cartridge, assuming it will fit. 2MB is our current maximum size, but the naïve bankswitch tech we are using can theoretically go up to 32MB (as there are 12 bits of address available for banking, 4096 pages). Classic99 doesn't support more than 2MB at this time though.
Anyway... the cart-based version of the playback routine that I build expects a single frame per 8k page, so there's another tool in the package to reformat the output file into that alignment, which may or may not work well (I did Spaceballs pretty much manually). You could write a smarter playback function, but I was worried about the overhead of checking the page more frequently. That version is also far less careful on the cycle counting, it was just a quick hack. If someone needs to go there we can talk better tools later.
Instead, for now, here's a build of Classic99 with the large-device hack enabled - drop into the Classic99 folder and run it from a command line, passing in the filename of that big file you want it to use. You can check in the debug output that it successfully found and loaded it.
After that, build, load and run videoblaster.a99 from the distribution package (EA#3, program name MAIN), and your video should play.