Frame Speed Mod Code written by
leafgreen386
The frame speed is in the format of WWXXYYYY ZZZZZZZZ. WW is the character ID, XX is the first frame the frame change takes place on (in hex, so if you wanted a modification on frame 10 you would put 0A here), YYYY is the action or animation ID (action IDs use 0 for the first digit and animation IDs use 8, so the action ID for a dtilt would be 0029), and the Zs are the frame speed multiplier, in 32 bit hex floating point.
You'll probably need this site for converting decimal into floating point:
http://babbage.cs.qc.edu/IEEE-754/Decimal.html
Now, about the frame speed multiplier. A number greater than 1 will speed up the move, and a number less than 1 will slow it down. So at 3x speed, it would cause it to perform a frame, skip two frames, perform a frame, skip two frames, and so on, whereas at 0.5x speed it would cause every frame to repeat once.
Messing with frame speed during hitbox frames can be a bit tricky, since you risk skipping hitboxes. Now, a lot of times, you're only going to want to speed up or slow down a certain part of a move. If you're only messing with endlag, then you will only need one line, since the frame speed change goes on until the move finishes or a new frame speed change is loaded. But, if you want to edit something in the middle of the move, you will need two or more lines: one line for the frame speed change at where you want to edit, and then another to set it back to normal. Note that frame speed changes that occur LATER in the move will be placed ABOVE those that occur earlier in the code. So if you wanted to decrease the startup lag for something, you would first put the line of code that sets it back to normal at whatever frame you want the speedup to stop applying and THEN you would place your actual modification below that.
You can have as many frame speed changes on a move as you would like, but you should note that right now we are limited to 127 total lines for frame speed changes and going over that would be... bad, as then it starts spilling over into other codes. We're very close to the limit, and currently, we're waiting for almas to do his rewrite of the frame speed code to be far more memory efficient, effectively giving us unlimited lines.
Now, smashes have multiple IDs, which makes them even
trickier to work with. I'm currently investigating this to figure out exactly how the game handles it, but all we know so far as that there is an ID for the charge animation and two other IDs for the smash. From what we've seen so far, the last smash ID is always used for the hitbox frames, so the middle ID is probably pre-charge. Note that this means you can't just put whatever frame of the full animation you want the speedup to occur on and expect it to work, since with each ID change, the frame count starts over.
Anyway, one last and very important thing for making frame speed changes: in order for the game to actually read all of the changes, you need to edit the byte count. The first line of the code reads 065A9400 0000XXXX. The Xs are where you place the byte count for the code. Basically, just count up all of the lines EXCEPT the first line and multiply that number by 8, then convert the result to hex. That will be the byte count.
Also, I'm not really sure if this step is necessary or not, but given the problems we've been having lately, you should also place a line that reads 00000000 00000000 at the very end of the code (don't count it in the byte count). When the code was first released, spunit said that a line of full 0s like that ends the code, so it's something I try to follow when compiling codesets for myself, although the code seems to be working even without it, so... meh.
And that should completely cover it!