In almost all cases, yes. Basically, there is a block of memory for the first monster, and all other monsters have another block with the exact same variables in the same relative spaces: so if the block was 41 bytes (I don't remember, it was 40 something) then every 41 bytes you would start on a new monster.
The exceptions are the few pieces of data that, for whatever reason, are stored somewhere else. I think this was because they needed more room for US names or something.
I just focus on the top spot codes, personally.
A side note: this means that they physically copy all the memory over when you move a pokémon, instead of switching pointers. A game that switched pointers would be harder to shark (take an extra week, maybe? or at least a few extra hours...)
"We research pokémon cards here at the Science Club, especially science pokémon cards! Science pokémon are exceedingly strong."
-Erik, Science Club member, Pokémon Trading Card Game