I haven't had much time to mess around with it recently (I was getting in some last minute modifications to NFL Blitz for a superbowl party I went to), but I did indeed find the address for the timer. Freezing it stopped time from running, but this was also just in regulation, not overtime. Like you said, this address is most likely going to be the same one for each period, just that what it's being set to is different depending on if regulation or overtime.
The other issue is that for some reason the ROM I have doesn't open in nemu64...it gives me some error. this is a problem because it undoubtedly has the best debugging tools. It runs fine in project64 which is what I was able to use to find the timer address (using cheat engine to watch for a decreasing variable), but tracing how it's set will be a problem if I can't get it to work in nemu. Hopefully this week I can figure it out and get working on it. I will keep you posted as I (hopefully) figure it out.
February 10, 2016, 12:10:44 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
I found the function that writes to the time variable (that if viewed as a float is the exact amount of seconds left in the period), however I haven't been able to find out how to modify the value that it is set to for overtime. Before any of the periods begin (and overtime), a BEQ command writes to it checking to see if R0, R0 = some address. I assume this is what is checking to see the time needed and sets it.
The timer starts out at 41F00000 (30 seconds) in overtime, and as soon as the puck drops it gets written to by a SWC1 F16 command. I would think I just need to find what is setting the timer to 41F0000. In regular periods where the timer is at 2:00, the value is 42F00000 (120 seconds). Therefore, the function is checking to see what value is necessary and fetching that number from somewhere. Problem is I just haven't been able to find where that somewhere is.
I was thinking that because it's a float, the starting time (30 seconds in the case of overtime) would be set by LUI XX $41F0, where XX is a register (AT maybe)? I did a search for LUI AT, $41F0 to see if I could find anything that affected the gameplay but was unsuccessful. I would just do a search for 41F0, but there are hundreds of possible addresses related to this string.
February 10, 2016, 12:10:56 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
I found the function that writes to the time variable (that if viewed as a float is the exact amount of seconds left in the period), however I haven't been able to find out how to modify the value that it is set to for overtime. Before any of the periods begin (and overtime), a BEQ command writes to it checking to see if R0, R0 = some address. I assume this is what is checking to see the time needed and sets it.
The timer starts out at 41F00000 (30 seconds) in overtime, and as soon as the puck drops it gets written to by a SWC1 F16 command. I would think I just need to find what is setting the timer to 41F0000. In regular periods where the timer is at 2:00, the value is 42F00000 (120 seconds). Therefore, the function is checking to see what value is necessary and fetching that number from somewhere. Problem is I just haven't been able to find where that somewhere is.
I was thinking that because it's a float, the starting time (30 seconds in the case of overtime) would be set by LUI XX $41F0, where XX is a register (AT maybe)? I did a search for LUI AT, $41F0 to see if I could find anything that affected the gameplay but was unsuccessful. I would just do a search for 41F0, but there are hundreds of possible addresses related to this string.