There are a plethora of really neat design choices made to get the most performance out of consoles & handhelds. The only downside is it can make writing emulators or porting said code to another platform quite difficult.
A documented disassembly followed by a reimplementation seems to be a viable way to get games ported to other platforms.
Its definitely a way to go about porting games, but its laborious and sometimes hard to fully document the program's existing behavior, especially with uncommented assembly.
Yeah, and reimplementation is, arguably, more difficult than tweaking source code and recompiling. 8)