"What emulator are you using?"
I use Gens Tracer.
Here's a link to a guide: http://codehut.gshi.org/GensTracerGuide.txt
Here's a link to a download: https://gamehacking.org/downloads/Gens2.12aR2Tracer.zip
Gens Tracer may not be the most modern Genesis debugger, but I find it very useful. A quick guide: Press "/" to start and stop the assembly trace log (it sends it to a text file called Trace.log). Keep in mind that by default, it only records each instruction once. So if you have a routine that is run several times, the trace log will only show you the first time it was run. You'll find instructions on how to trace everything in the hook_log.txt file under Tips. If you log everything, be prepared for a HUGH file. You'll find that logging instructions only once works out just fine most of the time.
Press "," to start and stop the memory logger (it sends it to a text file called Hook.txt). Instructions for setting up the memory logger are in the guide. The memory logger is basically how you do breakpoints.
"Did you change NoHope's attributes in the register/RAM mid game? If yes, how?"
I changed his stats using Game Genie codes (set all of them to 1) to verify I had the right stats.
You can change part of his stats (probably mid game) by using these 2 RAM codes: FFEBFB:FF and FFEC0F:FF. Interestingly, I used several different values with those 2 RAM codes and they all had the same effect (NoHope kicked farther (64 yards)). I used these RAM codes with Gens Tracer and they worked fine, but they probably won't work with Kega Fusion emulator (the codes for Fusion would be slightly different).
There are a few things I didn't dig far enough to figure out. Why are there 2 RAM addresses that come from 2 separate but identical routines and both have the same value? Why are both RAM addresses needed to make any changes to NoHopes performance? (using either code by itself doesn't seem to make any difference). And, why can I use seemingly any value in those RAM codes but still get the same result (he kicks 64 yards). The answers are there, but too much time involved to figure it out.
"When specifically did you look at the code? Did you set a breakpoint? Or just break right before kickoff? or..?"
I made the assembly trace log by turning on the asm logger at the screen where you choose your teams (aka the screen where you set the Game Mode, Qtr Length, etc). Any player stats would be loaded after that screen. For the initial log, I didn't set any breakpoints. I found that routine by searching for the ROM address of NoHope's stats. I open the asm log with WordPad and just use the "Find" feature.
EDIT: wrote and posted this before I saw your edit. ugh. lol.
Only question I have is: when it says
What does that mean exactly? Is that a RAM address? Physical? I've tried going to the addresses listed after each A and am not seeing anything that resembles NoHope's attributes.
A0:000B96C2 is a ROM address, and it looks like it's a pointer. The pointer address is 000B95E4.
EDIT3: You'll find some interesting values at that address (000B95E4). I'm just looking at them with a hex editor, so I have no idea what they're for, but you may want to investigate.