Yes, I figured out how to jump from a subroutine to some empty area in the ROM, add code, and then jump back. For the simple hacks I've done such as low gravity it's not necessary, but for more complicated ones (such as the insane tackle stuff), it's useful because I can set multiple registers or what not to act as multipliers or other arithmetic functions. The trick was finding out what the ROM address was in RAM (which turned out to be simply 80000400 - ROM address + 1000).
I was trying to find out where the tackle animations were stored, and how certain ones are chosen. Like I mentioned earlier, they are set by the random number generator. I was trying to find how exactly it was being used, but the problem is there are many functions being called to that random number generator all the time, so it's difficult to isolate the various tackles. The other issue is that because this function is used for all "chance" events in the game, you can't simply turn it off, or else it breaks the gameplay. Well, it doesn't break it, but it makes it quite different - WRs always catch the ball, no fumbles, perfect interceptions, etc. It's actually kind of interesting, and could be useful to hack this function in the future when trying to have the top WRs have better "luck".
A few weeks ago I was getting closer but got busy with other things. I think being able to jump in/out of routines will be imperative for the "Tackles on command" idea. I also am pretty sure I found the function that writes text on the screen, so you could hypothetically add a function to call new text to the screen at different times.