keendreams / keen

Keen Dreams on Greenlight!
http://steamcommunity.com/sharedfiles/filedetails/?id=315040793
GNU General Public License v2.0
1.93k stars 173 forks source link

Some issues and thoughts #3

Open DerekTurtleRoe opened 9 years ago

DerekTurtleRoe commented 9 years ago

So first of all, I am really excited about this release. I have find a lot of fun in porting things and changing games for modern systems and such. I have a few issues and some things I wanted to bring up, just for discussion and general interest.

First, the way you have to compile it. There are multiple versions of Borland C++, and many companies have owned it, changed it, etc. Even with a version number and compiler name, it is proprietary and commercial, and I didn't want to go searching for different versions and such as I'm not sure who owns what and what versions are good or popular. It is very confusing. My recommendation with this is to go with something more easily accessed for free, like Visual Studio, GNU C compiler, Eclipse, NetBeans, anything really. I'm not sure how porting project and build files would work, whether it would be a simple task or whether it would take re-writing parts of the project. I would be willing to help in any way that I can. Even so, I think for any future endeavors, changing compilers may be a good idea. Unless there is something I am missing and I'm just stupid. :laughing:

Another thing is the PIRACY.SCN file. I was curious as to how this worked. It looks like a bunch of characters that doesn't make any logical sense as far as I can tell.

Also, what are the various branches for? They are fairly recent, so I assume they have a good reason. The README is the same though...

Lastly, is there documentation on the files needed for the full game, as well as the file formats used in said game? I don't own the game physically, and I haven't checked the files but I assume it would be useful to know if the graphics files were this, the audio was this, etc.

Thanks for doing this, and I hope good things will come because of the source release! :smile:

Blzut3 commented 9 years ago

Interesting use of the issue tracker here. :)

The Borland C++ version that I used to test every version can be found by searching for the Wolfenstein 3D source release. I assume Borland permitted free use of the version typically provided on those websites. Borland may have been transferred between companies and restarted the version count a few times, but from what I can tell the product name has always changed slightly with it. Borland C, Borland C++, Borland Turbo C++, Borland C++ Builder, etc. Where there are true conflicts it seems the operating system differs. http://en.wikipedia.org/wiki/Borland_C%2B%2B

Porting the game to another compiler is not usually a matter of making a new project file. I'm not sure if there's a strictly standards compliant C/C++ compiler out there, and certainly Borland was not one of them. Visual C is likely highly compatible, but even then expect to have to fix a few issues where Borland was being overly permissive. Even then, you need an old version of Visual C which supports the x86-16 memory model extensions. In any case, the purpose of this source release was to release the source as given minus cosmetic changes (license header providing the static data outside of the OBJ form).

This repository is unlikely to see any further changes. If you were to do something with this source code, then I would definitely encourage looking into modern compilers. Better yet start from sulix/keen-dreams-sdl2 (which should be the repository for the new official port) or NY0012/refkeen. Both of which have already done the work of porting the code from 16-bit x86 to portable C.

The PIRACY.SCN is an ANSI screen. http://www.shikadi.net/moddingwiki/B800_Text

The branches are actual branches throughout development. This source release contains the source for every version of Keen Dreams that exists. It didn't have a linear development history and technically speaking 1.20 shareware was the last version released. 1.93 is the last registered release, and 1.05 was the last CGA release (it's based of 1.91 despite being released after 1.92). The README was constructed specifically for this release and thus is the same in every commit.

DerekTurtleRoe commented 9 years ago

Well, first I must apologize. For some reason I had forgotten the lack of 32-bit CPU's back then. :smile:

In regards to PIRACY.SCN, I figured SCN would be some sort of screen info like in Duke 1 and 2. I was interested in what the screen actually says, I suppose I should've told you I was basing it on was what I was seeing in a hex editor and in IDA Pro. :smile: I will have to get the game files and try everything locally. Also, I should probably start doing research on maybe getting all of the file formats and such documented if they aren't already.

Cool thing you did with the branches, I had no idea they were functionally different, I figured they were just squashed (like with a zlib DOS equivalent or something, I don't know), compressed, or just lacked levels or detail. I'm glad all the source was released so we had some options.

In regards to the Borland C++ compiler, I will keep researching and see if I can find specific versions that will work. In the meantime, I will definitely watch and contribute to the new SDL build. I have a lot of SDL experience from emulators and games, so that's good. I can't find NY0012/refkeen, what is that? Is it another build with some other goal?

So what is done in the SDL build and what isn't? Also, should we make a list of features and extra stuff that will be added so that when it is done in Git we can reach a "milestone" and release after rigorous testing and such?

Blzut3 commented 9 years ago

Sorry, mistyped NY00123's username: https://github.com/NY00123/refkeen He's taking a conservative approach to try to create a "reference build" (think Chocolate Doom). So contributions there would be mostly fixing portability issues or emulating bugs that happen due to the way Borland compiled the code. Compare that to sulix's port which is mostly about improving the experience.

You would need to ask sulix and NY00123 for more information on the status of their projects. They can both be found in the pckf IRC channel irc.foonetic.net #pckf. I know both have done public builds.

DerekTurtleRoe commented 9 years ago

Are you personally involved with either of the projects? Or are you just a part of the team that got the source code and everything? Just curious, really.

UPDATE: I am getting some errors trying to compile with Borland C++ versions stated in the readme, so I am going to do some more research, if you could post exactly what version you have all tried specifically, that would be great.

Blzut3 commented 9 years ago

I have made some contributions to sulix's project.

As for the errors, what kind of errors are you getting? Did you configure your directories in Borland? Did you run the batch file provided to compile the static data? As a side note, I've found compilers to be finicky in DOSBox, so the builds were tested on a Windows 98SE machine.

DerekTurtleRoe commented 9 years ago

Oh, I am running the Borland compiler directly on Windows 8.1 Pro...

The compiler seems to run fine in compatibility mode. Let me try VirtualBox and see if that helps at all. I will try other versions too. Yes, I compiled the static data and configured my directories.

Maybe I would have had better luck with DOSBox? Not sure about that.

The errors I get seem to be conflicts with files or directories or something. "File not compatible" comes up a lot. Let me try defragmenting the files as well.

Blzut3 commented 9 years ago

It should be impossible to run Borland C++ 3.1 on Windows 8.1 unless you have a 32-bit version of 8.1? Borland C++ 3.1 is a DOS program.

Errors regarding files sounds like you didn't go into the options and configure the Borland include and library directory. (Sorry I can't pull up specific instructions since I don't use my Windows 98 machine often.)

Edit: Here's where I got the compiler: http://www.brlowe.co.uk/