My definition of "porting" is taking the source code to an application designed to run on one platform, and making all the modifications needed for it to run on a different platform. Technically anything can be ported. Of course the amount of effort required can range from very little, to a Herculean total rewrite. There are of course many factors that determine the amount of effort required, such as the programming language(s) used, what API it uses for sound, graphic and filesystem access, the graphical elements may have to be redesigned for a smaller display, etc.<br><br>Obviously then, the original source code is required to make a port. If the source code is available legitimately, then porting is usually one of the main purposes of having released it in the first place. So it is legal. An excerpt of an email from John Carmack regarding Pocket Quake: "I am still happy to see your work -- things like this are exactly what I envisioned for making the code available."<br><br>Now, projects like Exult (the Ultima7 engine clone) is not a port, but a totally new engine written to make use of the Ultima data files. A complete rewrite is required because the source code to Utlima7 hasn't been released. However, making Exult run on a Pocket PC would be considered a port - of Exult, not Ultima7.

<br><br>Dan East