Remix.run Logo
Reconstructed Commander Keen 1-3 Source Code(pckf.com)
101 points by deevus 11 hours ago | 16 comments
albertzeyer 5 hours ago | parent | next [-]

Very nice!

This is released under GPL.

I wonder, who is K1n9_Duk3? Does he have the rights to actually release this, and put it under GPL?

What does "reconstructed" mean? Is this disassembled? And if so, is it really ok to put this under GPL then?

viraptor 2 hours ago | parent [-]

It's not legal unless the person had the rights to begin with. It may be legal for a clean room reimplementation, but not a decompilation project like this. iD/Apogee can totally request a takedown, so I wouldn't recommend republishing that...

Randomno 2 hours ago | parent [-]

> It's not legal

Based on what? Afaik decompilation is a grey area and projects that enforce clean-room design do it to stay out of this grey area.

bluGill 27 minutes ago | parent [-]

Copyright violation. If you write a book and I translate it to a different language you own the copyright on my translation. (except poetry which is artistic enough that it cannot be translated and so your version inspires me but I can't just translate it ). Decompilation doesn't have enough creative work to call it anything other than a translation.

I'm not a lawyer. I'm reasonably sure I'm right so the above is good enough for discussion, but if you need legal advice see a lawyer.

geon 6 hours ago | parent | prev | next [-]

> I had to find names that would allow the variables to appear in the correct order. So after some trial and error, I wrote a small throw-away program that generated a bunch of variables with random names and ran that list of variables through the Turbo C++ compiler. Disassembling the generated .OBJ file showed me which order these variable names would produce

Nice puzzle!

Is the ordering the only thing that can be recovered from the binary? If the hash is available anywhere, it should be possible to brute force the exact original names.

viraptor 2 hours ago | parent [-]

If you throw away the debug info, and don't use any generated introspection magic, there's nothing preserved normally. Compiled C code doesn't need to know the names after all. There are various leaks though - for example asserts and other debug macros/prints often end up revealing the names.

kqr 6 hours ago | parent | prev | next [-]

> They used the same routines they wrote for their day jobs at Softdisk in the Keen code. [...] Most of the IDLIB.C code must have come directly from the PC version of Dangerous Dave. [...] there is some extremely strong evidence showing that the id founders used Softdisk's code in their own game. Sure, it's not the code responsible for the smooth scrolling, but it is code they probably didn't have the rights to use.

Huh, this is interesting. Is someone able to provide more detail?

The pace at which Id produced games has always been an inspiration for me. Large amounts of code reuse seems like an important clue as to how they were able to do that.[1] But how were they able to reuse code effectively to such a degree?

[1]: The other clues I have so far are Romero's legendary tool-making abilities, and Carmack's tendency to produce code that gets computers to do things they couldn't before.

ndepoel 3 hours ago | parent | next [-]

Id Software very much skirted the edge of legality by making Commander Keen outside of office hours while still employed by SoftDisk and using SoftDisk computers, and SoftDisk could have easily sued them if they wanted to. They managed to avoid that by striking a deal where the Id guys would continue to make games for SoftDisk while working on Keen and later Wolfenstein 3D.

There was a lot of code reuse between games. John Carmack is on record somewhere that the enemy navigation code from Doom and Quake still has its origins in some of the earliest 8-bit games he wrote in the 1980's.

firesteelrain 39 minutes ago | parent [-]

I thought I read something similar in Carmack’s Doom Guy book

arjie 6 hours ago | parent | prev [-]

In Masters of Doom they are depicted as taking work computers out of the office to go work on their side project. I doubt IP would be the thing they’d stand on.

To some degree this is amusing. For a decade or so, we people would talk about the “borrowed” PCs. Now hacker forums talk about who owns the IP. In my childhood I never would have guessed this culture shift towards IP maximalism but I imagine the lesson that copyleft licenses only work in a copyright enforced environment finally took!

_the_inflator 4 hours ago | parent [-]

Yes, interesting shift in perspective that hackers now kind of use blackhat-techniques to do forensic analysis in regards to ownership. In the earlier days we cracked games to hypocritical free them of their perceived handcuffs. Hence "Free Software". Code was free and can be used and reused by anybody.

Of course due to litigation and legal implications the statements in Masters of Doom are intentionally vague. The same goes for the founder's talks. No one lied or portrayed themselves in a ubermensch fashion, it was just talking in corporate language speak when you are not allowed to provide more details in public. There seems to be serious legal risk and maybe it got solved or not, but judging from the book's perspective, I believe that they solved the issue in combination with a non-disclosure agreement.

I think that the "Great artists steal" mantra is especially applicable to ID's early days. And code reuse is simply a variance - stealing from yourself.

In no way does the usage of third party libraries damage the ID myths. For example, owning IP and authorship is not the same. Also: one can use a programming framework for a below average app while another one builds an awesome app.

And this is what's MoD underlying theme: going your own way because you see a chance while staying in the current context. In the end, ID did what Softdisk did: developing and publishing games. One only with moderate success while the other conquered the world.

Latin alphabet epitomizes this day by day. 26 letters which seem laughable, but a fool with a great tool is still a fool. ;)

guidedlight 6 hours ago | parent | prev | next [-]

These games ran so well on IBM XT computers. Honestly, seeing these games made me realise PC’s could be used for gaming.

Carmack was a genius.

newsre4der 7 hours ago | parent | prev | next [-]

Can it help the progress of https://gitlab.com/Dringgstein/Commander-Genius ?

oaiey 7 hours ago | parent | prev | next [-]

Keeping commander keen alive should be a priority project for humanity!

bitwize 6 hours ago | parent [-]

Wouldn't be surprised if you see some PRs from Carmack on such a project.

GaryBluto 4 hours ago | parent | prev [-]

Site is intermittently becoming unavailable.