Put a read-breakpoint on a monster HP parameter and see where it copies that for in-battle stats, then remove the original breakpoint and set another read one on the copied HP value (this should pause the game each frame). Activate Sense and see if there's an additional process accessing the HP copy value: that's 100% sure the Sense initiation code.
Not quite. You'd eventually find that after a lot of function returns, but by the time you're reading the HP, you've already looked up a battle text index and parsed it, then started looking for the values that fill it:
1. Activate Sense
2. Read Battle Text from the KERNEL
3. Find where special characters are
4. Retrieve values for characters *
5. Display string
You'd get to the * and you'd be able to step your way out of there back to where step 2 was called at least. Figuring out where that is though.... It might be easier to figure out where the ATB is stored for each character (It's bound to be where the character battle data is which is known) then see where the menu handler is, then the command handler, and then see where command "Sense" goes when it is activated.
UPDATE :
Kernel2 text is stored in memory at 0x9A13C8
Kernel2 file offsets are stored in memory at 0x9A7FC8
All data between those addresses is allocated for text from the kernel2 file.
THEREFORE: THE TOTAL SIZE OF THE UNCOMPRESSED DATA FROM THE KERNEL2 FILE, INCLUDING TEXT POINTERS, CAN BE NO LARGER THAN 27648 (27KB) BYTES IN SIZE!!!I say that in Billy Mays mode because there's always been some confusion about this. This will likely be written into the next WM version.