The
FCEU sync history has version 0.98.16 in a separate section by itself. That version has a well-documented AVI dumping problem: Video is blank, but audio is intact (sources:
1,
2,
3,
1337). I ran into this issue while replacing some old AVI encodes, such as
[1026] NES Chip 'n Dale: Rescue Rangers "2 players" by dragonxyk in 09:29.22. It also happened with 0.98.16's multitrack version. The advice in the posts linked above about using version 0.98.15 worked for that run; I also used 0.98.28 successfully. The question comes up about whether there is some run made with 0.98.16 that does not sync in any earlier or later versions, as the sync history implies there may be. Another question is just what the problem is with 0.98.16's AVI dumping.
I investigated that second question by comparing some source files between 0.98.16 and 0.98.28, hereafter referred to as .16 and .28, respectively.
src\drivers\win\aviout.c in .28 has an
#ifdef _USE_SHARED_MEMORY_ block at the beginning that does something with the palette. It's not there in .16. Replacing the aviout.c file in .16 with the one from .28 allows non-blank AVI dumps.
There's another problem in .16, however. If you open the Config -> Video window and then close it, the palette gets corrupted. This happens even if you don't make any changes to the video configuration. I compared
src\drivers\win\video.c between the two versions and found that the one in .28 uses a variable in the
InitializeDDraw function with this comment:
//only init the palette the first time through
Sure enough, replacing .16's video.c with the one from .28 eliminates the palette glitch. However, this also requires a change to
src\video.c: Adding an
#ifdef _USE_SHARED_MEMORY_ block around the
if(XBuf) statement in the
FCEU_KillVirtualVideo function. Otherwise, I get a compilation error about
mapXBuf being undefined.
NOTE: I compared the versions of aviout.c and video.c between .16 and .28, and I don't believe that just replacing the files like I described will cause problems. I don't know C++, however, so someone may want to verify that.
Here's an archive See below for two fixed versions of .16:
fceu-avifix.exe fixes just the AVI dumping, and
fceu-avipalfix.exe fixes both the AVI dumping and the palette.
Do you want the sources to one or both?
EDIT:
Updated archive with the compiled files and source is
here.