Chad,
It's a combination of things. There's a couple ways to do it. First, it's not too hard to disassemble the code of those games. If you are an ASM expert, it will all make sense. Then you need only tweak a few numbers here and there in the original [rom] code.
Other technique is to "trap" output. What that means is the emulator is running the code exactly as original but you can add "traps" that look for certain things such as video output. You then render portions of it in different locations as you want. Or heck, the easy way would be to simply monitor the score registers and draw your own score wherever you want, using the exact same font data the original uses.
"Reprogrammed" means coded from scratch to look and play the same, but then you're left at the mercy of the coder's skill and faithfulness in reproducing the same experience on a different set of hardware. A programmer who doesn't care, or isn't paid enough, or who has an ass-hat supervisor might not bother to get every little nuance of a game programmed right.