So, I rewrited a big part of the code. Now I just need clean up some stuff and you guys should be able to enjoy the new workflow.
Meanwhile, here's a somewhat crappy
encode of Bushido Blade 2. And here's the list of the 161 checkpoints for this 4minutes movie(with 15 "tolerable" frame desync):
{500, 1000, 1500, 1921, 2000, 2500, 2685, 2804, 2828, 2947, 3000, 3072, 3197, 3326, 3356, 3453, 3500, 3578, 3705, 3831, 3961, 4000, 4090, 4217, 4344, 4469, 4500, 4596, 4725, 4852, 4880, 4977, 5000, 5105, 5235, 5360, 5500, 5612, 5741, 5868, 6000, 6122, 6247, 6279, 6377, 6431, 6500, 6543, 6662, 6787, 6916, 7000, 7043, 7170, 7295, 7422, 7500, 7549, 7695, 7735, 7823, 7950, 8000, 8075, 8202, 8329, 8456, 8500, 8583, 8710, 8835, 8891, 9000, 9147, 9266, 9401, 9500, 9520, 9649, 9774, 9899, 10000, 10024, 10151, 10279, 10407, 10500, 10532, 10659, 10786, 10911, 11000, 11038, 11165, 11290, 11417, 11500, 11543, 11669, 11794, 11919, 12000, 12044, 12169, 12294, 12419, 12500, 12544, 12669, 12721, 12795, 12819, 12887, 12941, 12981, 13000, 13045, 13100, 13243, 13303, 13386, 13410, 13500, 13529, 13553, 13593, 13672, 13698, 13748, 13815, 13839, 13958, 13982, 14000, 14036, 14101, 14125, 14245, 14373, 14397, 14500, 14572, 14659, 14683, 14735, 14749, 14802, 14826, 15000, 15019, 15073, 15112, 15174, 15311, 15375, 15500, 15530, 15554, 15614, 15628, 16000}
Checkpoint at every 500 frame are obselete and should be removed soon(this way, we should be able to shorten the list by
around 33 checkpoints). But, since we got a case here to study here, I would like that you check the movie and listen and see if you can spot some weird sound glitch.
Maybe I never took the time to explain why all this weird sound happen, so let me explain. A minimal number of desync improve sound quality over visual frame, because when we "savestate" a frame from the TAS SPU plugin, the sound for that particuliar frame is kept in the memory. Then Eternal SPU has to handle sound and sometime SPU Eternal can't do much, since he can't get real info sound data from the past.
I should have kept a log of all the desync that has been "tolerated", but I can say that there is still a bunch.
That's why I believe that getting more "TAS-desyncproof-savestate" by lowering the value of "tolerable desync" at 1 is a bad idea if you don't want to lower the sound quality. All these cut in the sound memory make the audio sometime even less natural and annoying, even if it's still probably better than using TAS SPU all the way.
Right now, as long as we use TAS SPU savestate, we want to get the savestate list as short as possible, while still matching the movie to avoid these "sound cut" issue.
Thought, as I mentionned earlier as a future experimentation. It would be possible to fix *must* of these issue by using "Eternal savestate" at desync point, if they playback from a TAS savestate around ~30frame(1 second) or more(the longer affect the savestate "desyncless" lifetime), so they can have a chance to buffer the last music/SFX, etc..
Now the reason, why I said *must* is because sometime there won't be any effect, or worse it... I also fear that this might cause crash for some game... so that's why I would like that we try to encode some game with what we currently have. Breath of Fire, Symphony of Night, some 3D platformer, CD switch feature etc... all these kind of fame should be tested, first.
As I said, I'll try to get the code a bit more solid before release. If my shedule isn't to heavy, you can expect an update by the end of the week.