The latest script tends to be here, I believe.
The Multitrack.lua script has a rather steep learning curve, as evidenced by the fact that adelikat told me himself. I'll take his word for it, considering how much effort I was putting into explaining things.
As of the latest revision, it only works with FCEUX 2.1.2. Earlier versions of FCEUX doesn't have all the fixes and latest lua functions that this script uses.
Anyway, time for instructions...
Basic edits:
When you run the script, a message from the script itself lets you know you've started running it. You'll also see a mostly white bunch of symbols, with the middle of these symbols surrounded by a green rectangle. Whatever could they mean? This is the input display for the frames surrounding the current frame. You can move this around by using the mouse, just drag it around with the left mouse button! I'll explain this display later.
This script uses up to as many as 26 buttons off your keyboard! However, I'll start with 8 of them. By default, the arrow keys, "J", "K", "L", and "O" are linked to the joypad buttons. If you tap one of these keys, you'll note that some red symbol inside the box turned green. It's letting you know that, if you frame advance, these buttons will be pressed. If you don't like these buttons, change them in the script itself. I will refer to them as script-joypad buttons.
Try out frame advance for a bit! As you do so, you'll notice the white above the box turns red. Your green stuff may scroll upwards through the display as well. The script also has rewind built-in, default key being "R", so you can back up as well, conveniently. The white symbols mean the script has yet to even see that frame. The red means the particular button wasn't pressed, and the green means it was.
Already, with the 8 buttons, frame advance, and rewind, this is a rather powerful editing tool. Keep playing around with the buttons a bit, get yourself used to it a bit.
Oh, wondering how to access player 2 through this script? The player switch is default to "S", and hitting it will change some displayed number to 2. This will let the script buttons affect player 2 now. Hit it again, and if you haven't changed the script, it will display both players' input. Once more to get back to player 1. If you need player 3 or 4, edit the script, find "local players=", and change the number you see there.
Control:
Now, there are ways to change how the control works. Hold "space". You'll see a bunch of words show up. Tap any of the 8 script-joypad buttons, and you'll see a word change. These words mean stuff as follows:
"Both": Default setting. Uses both "Keys" and "List" logic.
"Keys": The script will react to the script-joypad buttons.
"List": The script will read its own list to determine button-presses.
"Off": The script will not interfere with the button.
This is for individual players, so "Both" for player 1 doesn't mean "Both" for player 2. Changing these to "List" or "Off" prevents the script buttons from working, good for avoiding mistakes or just turning off control of the script buttons. Changing to "Keys" or "Off" makes the script ignore its list, good for getting rid of input you don't want recorded.
Finally, there's the "home" and "end" keys. The script does allow for the normal joypad input through the emulator's own set-up. In fact, the controller can also negate stored input in the script's list. By tapping "end", you prevent the controllers from adding to the input list, or allowing it once again. By tapping "home", the same for removing input from the list.
Display:
As I already said, you can use the mouse to move the display around. With numlock on, you can also use "numpad2", "numpad4", "numpad6", and "numpad8" to move the display a bit more precisely.
You can change how much input is shown with "numpad1", "numpad3", "numpad7", and "numpad9".
Tapping "pageup" or "pagedown" will change how opaque the display is. If you don't want to see the display, you can do that.
That's about all that needs to be said. It helps to see what you're doing, so make sure you adjust whatever is needed!
Odds and ends:
Buttons I didn't mention until now goes here.
"numpad5" will set whether the script will immediately apply changed input to its list. For the most part, all it really does is turn that center box white. However, if you want to change things while rewinding, this will ensure that your script-joypad button presses will stick to the input list as you're going backwards.
"insert" and "delete", as my default assignment suggests, will insert or delete frames from the input list. This will shove input aside so that if you really needed your input through frames 254~497 to actually be on 255~498, a single press of "insert" at frame 254 is all you need.
Finally, I should have covered every button the script uses. Remember, they're all defaults, and I recommend opening the script to change the keys around to suit your needs.
Silly little tricks:
Stuff that I found is rather neat the script works that way is put here.
You don't actually need to run a movie to run this script. I'm not sure how often the need will arise, but the possibility is there. However, the script has no long-term way of storing what you put in there, so if you do want to keep what you did, you had better darn well record a movie through FCEUX's usual features!
The script will always record button presses as the emulator plays out. Whether through player input or movie, everything gets added into the list. As such, you can play a movie on read-only, run this script, then let the movie play out while you allow the script to gather its input. You could also start at any point -- Starting the script at frame 0 is entirely optional.
Thanks to inserts and the fact the script picks up input on movie read-only, you can make a pseudo-macro by playing out a loop you want done, set the movie on read-only, go to start of loop, then hit "insert" a few times. Once you've inserted enough blank frames for exactly one loop, let the read-only fill in the blanks. Re-load, repeat. Nowhere near as convenient as actual macros, but it's a solution, should you need it.
Remember, the script's primary purpose is its editing powers. You can record some silly movie, play it back with the script running, then make pinpoint edits as needed. The secondary purpose is multitrack recording. Yes, it's called multitrack.lua, but apparently, the multitrack part is its secondary purpose.
Well... It's about time I documented how to use the darn script. I'm probably still missing some stuff, but I hope this helps...