I have made a ghost script of the same kind as the one Dromiceius wrote, but for Super Metroid. It consists of two parts, a recorder and a player. One runs the recorder one time for each movie one wants to compare with. It writed files with position, room transition and hitbox data. One then runs the player script, which reads these files, and superimposes hitboxes on the run you want to compare the others to.
The recorder has only one option: The smv file to record for. Each time you run the recorder, you must edit the line at the top of the file specifying this.
The player has several options. You must first specify which smv will be the main movie, i.e. the one that snes9x will run now, and that the others will be compared to. Next, you can specify a list of smvs to compare it with. The recorder must have been run for all of these. The colors option specifies which colors should be used for the hitboxes of the other smvs.
The most interesting options are the ingame and room options. With ingame = 0, you will see all frames. With ingame = 1, frames where the ingame time does not change are not displayed, but realtime is still used for synchronization. Finally, ingame = 2 uses ingame time both for deciding which frames to display, and for synchronization. Since we have runs that focus on both realtime and ingame time, this option is quite handy.
The room option specifies whether room comparison mode should be used. If room = 0, things will be synchronized by using the absolute frame number, while with room = 1, it will find the closest matching room transition, and sync from the start of that, so in this mode, all the movies will enter each room at the same time, and you can compare how they traverse each room.
If moviefile is undefined, a main smv file is not loaded, and you can play while comparing to others (this is usually a depressing experience :P). Savestates should work, and not mess up sync, and fast forwarding and frame advance, too.
I made this script on a slightly modified snes9x, but I don't think I use any non-standard lua calls here. It would be nice if somebody could test, though.
The files are at
http://folk.uio.no/sigurdkn/recorder.lua and
http://folk.uio.no/sigurdkn/player.lua.
Ps. The initialization during player.lua takes a bit of time (about 2-3 s per comparison movie, on my computer). All of these scripts load the smv files themselves, so do not load them manually.
Pps. I have also made a modified version of snes9x which plays several movies concurrently, and superimposes graphics from all but one of them on the last one. It basically works like this script, but with all sprites instead of just hit boxes. It, does not support savestates or frame skipping, though, and will be much work to port to windows, so I probably won't finish it.