I've been back to trying to figure out how to modify player speeds. I will post addresses with variables and necessary info that I find that works. I'm doing all this using cheat engine and nemu64 to try and find out what addresses write to what.
QB speed (behind line of scrimmage)
802D386C --> float gives a value of varying magnitude when moving left or right (faster speeds = larger values); moving left the value is negative, moving right value is positive. Vertical motion does not affect it, therefore there must be another address related to the vertical speed.
When the QB is moving laterally (left or right), this value is written to from 802f7fd4. Therefore, I think that it is this address that would need to be changed (probably a multiplier to scale the speed of QB up).
Fortunately there are a few math commands above it (at least I think, based on my very naive understanding of assembly language), so I was able to do a quick and dirty multiplier. directly above this line is:
802F7FD0 MUL.S F0,F20,F0 (the actual memory value is 4600A002)
I assumed this was doing some sort of math function to determine the lateral speed of the QB. right above this address is 802F7FCC, which is NOP. I took the same exact memory 4600A002 and replaced that NOP (which is just 00000000) and it increased the lateral QB speed 2-fold. i.e. It did indeed act as a "multiplier". However, I noticed that the value only changes when you hold turbo.
So the original addresses will look like this:
802F7FCC NOP
802F7FD0 MUL.S F0, F20, F0
802F7FD4 SWC1 F0, 0x0014 (S0) <--- this is what does the actual writing to QB lateral speed
whereas the quick modification would look like:
802F7FCC MUL.S F0, F20, F0
802F7FD0 MUL.S F0, F20, F0
802F7FD4 SWC1 F0, 0x0014 (S0)
and once again, the actual array of bytes to do the MUL.S F0, F20, F0 command is 4600A002.
I then just scrolled up the address list and looked for the next SWC1 command. It was located at 802F7B0. Once again, above it was yet another MUL.S command (although not directly above it; it was 3 addresses up) with a NOP address as above it. I did the same thing here replacing:
802F7FA0 NOP
802F7FA4 MUL.S F0,F20,F0
802F7FB0 SWC1 F0, 0x000C (S0)
with:
802F7FA0 MUL.S F0,F20,F0
802F7FA4 MUL.S F0,F20,F0
802F7FB0 SWC1 F0, 0x000C (S0)
which resulted in the QB vertical speed to increase with turbo! So it seems these two commands can at least affect the speed of the QB with turbo.
The way I'm changing the speed is pretty rough. Ideally, it would be better to be able to tune the "multiplier" so that it's not so fast - with these hacks on, the QB speed is even higher than in Blitz 2001. I think if it was just a bit slower it would be better. Problem is, I don't know how to multiply a random constant (which I assume in the above case would be what ever is stored in F20) to the SWC1 value.
I will post more as I go along. Hopefully this makes sense, I'm thinking about taking screen shots to help illustrate the process I'm using so if others are interested then they can take a stab at it too.