Prince of Persia open-source port based on the DOS version disassembly
github.com
github.com
EDIT: I googled for screenshots and I never knew how many different versions of the game there were! Every platform had completely different artwork! Pretty amazing.
https://en.m.wikipedia.org/wiki/Prince_of_Persia_(1989_video...
And honorable mention goes to Lode Runner[2] which doesn't have quite the fame as Pac-Man but has still managed to create a lasting legacy (pun intended).
https://en.wikipedia.org/wiki/Colossal_Cave_Adventure
Note that Pong and Space War were both ported before Pac-Man, as well, though Space War didn't get a home version before Pac-Man to my knowledge, it did get ported from mainframe hardware to an arcade cabinet before Pac-Man existed.
It is by far my favorite game.
https://www.reddit.com/r/dosgaming/comments/57egq3/prince_of...
In the binaries I have, CGA and EGA are bundled together, VGA is separated.
https://www.retrogames.cz/play_102-DOS.php?language=EN
https://classicreload.com/prince-of-persia.html (this page explains what keys and key combo's to use)
For anyone who got their appetite up for actual playing.
https://archive.org/details/msdos_Prince_of_Persia_1990
(as well as many many other games).
I don't know if this would hold up. Prince of Persia IP is far from dead or abandoned. I know it's not exhaustive, but a quick search on IMDB [0] shows a movie in 2010, and a video game as recently as 2008. Just because this particular game is old, doesn't mean the IP/Trademark is dead. Personally, I'd be wary of a legal battle, even though I think the project is pretty interesting.
[0] https://www.imdb.com/find?q=prince+of+persia&ref_=nv_sr_sm
"Is ReactOS legal?
Yes. ReactOS is fully legal.
Developers (devs) have not looked at Microsoft Windows™ source code. They have used the public documentation of Microsoft Windows OSes. They have made several tests to understand how Microsoft Windows works. In fact, ReactOS does the same things that Windows does but it does it differently as we don't have the same source code and it is all programmed by different developers. All code in ReactOS is released under the GNU GPL (General Public License). Is ReactOS based on Microsoft Windows™ original source code?
No! ReactOS consists only of clean-room engineered GNU GPL (General Public License) and GPL compatible licensed source code. "
In fact, ReactOS maintains a policy to prevent proprietary Windows source code (whether leaked or otherwise) from making its way to the ReactOS codebase [0]. When Windows source code leaked, in 2006, ReactOS did a complete codebase audit to ensure that it was not tainted.
> Clean room design is usually employed as best practice, but not strictly required by law. In NEC Corp. v Intel Corp. (1990), NEC sought declaratory judgment against Intel's charges that NEC's engineers simply copied the microcode of the 8086 processor in their NEC V20 clone. A US judge ruled that while the early, internal revisions of NEC's microcode were indeed a copyright violation, the later one, which actually went into NEC's product, although derived from the former, were sufficiently different from the Intel microcode it could be considered free of copyright violations.[1]
1. https://en.wikipedia.org/wiki/Clean_room_design
2. https://www.linux.com/news/reactos-suspends-development-sour...
Im definitely not taking shots at ReactOS here, I’m on their side and am fascinated with the project. You’re right I should have been clear that they shut down and has themselves audited instead of risking a court battle but I don’t think the difference matters much, either way they were gonna have a code audit to disprove these allegations. But in regards to them, there’s a lot of wrong information floating around this thread.
> claim was made on 17 January 2006 by developer Hartmut Birr on the ReactOS developers mailing list (ros-dev) that ReactOS contained code derived from disassembling Microsoft Windows.[25] The code that Birr disputed involved the function BadStack in syscall.S,[26] as well as other unspecified items.[27] Comparing this function to disassembled binaries from Windows XP, Birr argued that the BadStack function was simply copy-pasted from Windows XP, given that they were identical. Alex Ionescu, the author of the code, asserted that while the Windows XP binary in question was indeed disassembled and studied, the code was not merely copy-pasted, but reimplemented; the reason why the functions were identical, Ionescu claimed, was because there was only one possible way to implement the function
https://en.wikipedia.org/wiki/Clean_room_design
Apparently that may not be strictly required either, but it gives a good defense. I think I could disassemble a blob to figure out what the possible behaviors of a WinAPI call and then write my own implementation of those things.
Microsoft might bankrupt me before I won a court case, but there is nothing in copyright law as far as I know that says reading a copyright work forever contaminates your mind such that you would be incapable of creating a vaguely similar thing without infringing on it.
> No, but it's possible to write a specification based on the
> disassembly, and then write an implementation based on the specification.
Critically, the disassembly and spec should be done by one person, and the implementation by another.Um, Microsoft bought (what was then called) 86-DOS outright from another company, and ported it to the 8088 CPU used by the original IBM PC.
Same with OpenRCT2, which I've heard is also based on the disassembled original, yet people seem to turn a blind eye.
To be honest, the should claim same with PoP and I don't see any solicitor suing them, as it would be too much hustle to prove its a code copy instead of inspired by.
Wow that is really sad, we live in the world where this is even a discussion. Where a love project that will not be commercialized has to think about this bs :(
It reminds me of the old New Kind - Oolite - Elite shenanigans from years ago. Somehow Oolite powered through and stuck around, despite using most of the New Kind code originally (they translated the C game logic to Objective C if memory serves me), while New Kind was shut down by Braben for copyright infringement. The New Kind author - Christian Pinder I think was his name - did all the disassembly work originally. I don't think it was ever a big legal challenge there, more like "hey! take that down" and the author complied because he was a nice guy.
That's legal though. Stuff like that is the whole purpose of reverse engineering. You can't copy the code but you can learn how it works so you can do it yourself.
This part is definitely illegal. You can learn how it works but you cannot write the code yourself, you have to write the specs for someone else to do it, who hasn't done the reverse engineering.
https://torrentfreak.com/take-two-sues-enthusiasts-behind-gt...
> As the author and copyright holder of this source code, I personally have no problem with anyone studying it, modifying it, attempting to run it, etc. Please understand that this does NOT constitute a grant of rights of any kind in Prince of Persia, which is an ongoing Ubisoft game franchise. Ubisoft alone has the right to make and distribute Prince of Persia games.
But that’s just my total layperson reading.
Usually the definition of open source isn't what matters for all things legal though it's about what rights you were assigned and what those let you do as you point out. All the "what does open source mean" debate is just debate on the terminology of being able to view the source.
> if you ask someone of the FSF group what "open source" means and they'll say the obvious meaning is you can look at the source code
Extremely inaccurate. FSF's definition of open source matches the OSI's. Here are some words that are not the product of my imagination—what FSF actually has to say about the relationship between the two: "Among all programs that are open source, only a minuscule fraction are not free".
> The official definition of “open source software” (which is published by the Open Source Initiative and is too long to include here) was derived indirectly from our criteria for free software. It is not the same; it is a little looser in some respects. Nonetheless, their definition agrees with our definition in most cases. [n.b. the OSI definition agrees with that of free software not that OSS is interchangeable with FLOSS - hence the article and its title]
> However, the obvious meaning for the expression “open source software”—and the one most people seem to think it means—is “You can look at the source code.” That criterion is much weaker than the free software definition, much weaker also than the official definition of open source. It includes many programs that are neither free nor open source.
> Since the obvious meaning for “open source” is not the meaning that its advocates intend, the result is that most people misunderstand the term. According to writer Neal Stephenson, “Linux is ‘open source’ software meaning, simply, that anyone can get copies of its source code files.” I don't think he deliberately sought to reject or dispute the official definition. I think he simply applied the conventions of the English language to come up with a meaning for the term. The state of Kansas published a similar definition: “Make use of open-source software (OSS). OSS is software for which the source code is freely and publicly available, though the specific licensing agreements vary as to what one is allowed to do with that code.”
.
In regards to the material you quoted "Among all programs that are open source, only a minuscule fraction are not free". Yes, that the fsf thinks most OSS also happens to be FLOSS, not that the terms mean the same thing.
Completely wrong. FSF considers the “open source” term to have the meaning as ascribed to it by the OSI. The FSF does not want to use the term itself, precisely because it can lead to misunderstandings.
The definition of “open source” is universally agreed upon to have the OSI-defined meaning, except for some people:
1. Intelligence community people, who have long understood the term “open source” to mean a source of intelligence which is not itself secret.
2. People who, without having ever looked it up, assume it means that the source code is available for reading. These people are simply ignorant, and should be using the term “source available” instead, since it means exactly that.
3. People who want to be able to use the “open source” term for their software to gain goodwill, but don’t want to actually give all of the freedoms it should guarantee. These people are dishonest shills who try to confuse the debate in order to get away with fraudulent labeling.
From this page:
> The official definition of “open source software” (which is published by the Open Source Initiative and is too long to include here) was derived indirectly from our criteria for free software. It is not the same; it is a little looser in some respects. Nonetheless, their definition agrees with our definition in most cases.
>
> However, the obvious meaning for the expression “open source software”—and the one most people seem to think it means—is “You can look at the source code.” That criterion is much weaker than the free software definition, much weaker also than the official definition of open source. It includes many programs that are neither free nor open source.
We were discussing the term “open source”, not “free software”.
> From this page:
No, the text you cite is not present on that page. It is present on Why Open Source Misses the Point of Free Software; <https://www.gnu.org/philosophy/open-source-misses-the-point....>.
> Nonetheless, their definition agrees with our definition in most cases.
In context, they obviously mean “[The OSI’s] definition [of ‘open source’] agrees with [the FSF’s] definition [of “free software’] in most cases”. The FSF does not have an alternative definition of “open source”; they explicitly use the OSI definition.
> the obvious meaning for the expression “open source software”—and the one most people seem to think it means—is “You can look at the source code.”
Contrary to what you seem to be implying, they are arguing against that definition of the term “open source”. This is evident by their phrasing: “That criterion […] includes many programs that are neither free nor open source.”
edit: Ah. Now I get it, I think. You could distribute FF unchanged, which you could not do in this case.
Some ancient years ago, before I was an adult, I tried to help with this, even had MSN Messenger contact of Ecalot (he was leading the charge on such projects). And tried to contribute to a new map editor with integrated SDL-based engine, had to learn a lot back then, it was my first time seeing GAWK, and my first time seeing GDK, among other things.
Now people on this thread have some questions, I think I can answer, being involved in the community for a while.
1. Why?
PrincEd, the site mentioned there, is a map editor, after someone released that "Prince 4D" mod for the DOS version, PoP fans basically were amazed by it and it created a cool modding community, but the engine is seriously limited, a lot of things can't be done, thus people kept wanting a new updated engine, specially if we could port the graphics of the other versions to PC.
2. Why the DOS?
Probably because the first mod was Prince 4D for DOS, and all mods are for that version.
3. Won't Ubisoft be mad?
As far as I know this never been an issue, I believe as long we don't get tangled with the fourth-game and onwards that is the games made AFTER they bought the IP, seemly they don't care.
I've always wanted to learn some reverse engineering and eventually do this with a game. Unfortunately the ones I'd like to target are all written in C or C++, so I guess translating the disassembly would be even more meticulous than it already is with games originally written in assembly.
I reverse engineered major parts of Westwood’s Blade Runner for ScummVM. It was compiled with the Borland C++ compiler in 1997 and a lot of it was relatively easy to decompile. The most difficult parts were video decoding and character rendering. The video decoder was older Westwood code, clearly hand optimized, and the character renderer was also very optimized.
Currently I’m working on Cryo’s Dune which is all hand-written assembly code. The code jumps all over the place, parameters are passed in arbitrary registers and have to be traced over several calls. I’ve seen a function that, instead of using ret to return, jumped to the ret-instruction of a different function.
Code generated by an older compiler that doesn’t do too much optimization is vastly preferable.
But sometime later in 2000 I came to possess and old 386 HP desktop, and I tried running Prince on it, and I was surprised how easy it was: I have beaten it easily on the first try and later learned to run through it without dying at all.
PoP by comparison can be very stiff at time, it's all part of the fun.
https://github.com/NagyD/SDLPoP/blob/8a07f11bd5952b5e1b9558c...