IPB

Welcome Guest ( Log In | Register )

2 Pages V  < 1 2  
Reply to this topicStart new topic
Thyme, a Generals ZH reimplementation project.
Blade
post 28 Jan 2017, 17:34
Post #26



Group Icon

Group: Members
Posts: 16
Joined: 11 January 2017
Member No.: 14208



Stalker, yeah that is right, currently the thyme code calls the existing code where functions aren't yet reimplemented. Currently that is most of them, but as more and more functions are done, less will be called from the original until none are and thyme can run on its own. Currently I'm working on the file system handling so loading big files and such and the abstraction needed to open from it or the normal file system.

Bruce, unless rotr uses a hacked exe already with some custom functions, it should work as is when thyme is complete. I hope to be able to have it load original generals content as well if provided with generals game files instead of zh files, but I'm not sure what differences in the engines exactly I'll need to account for.
Go to the top of the page
 
+Quote Post
Chappi55
post 18 Feb 2017, 9:58
Post #27


Particle effects since 2004'
Group Icon

Group: Members
Posts: 101
Joined: 7 March 2012
From: Poland
Member No.: 9029
Skype - chappeh55



It's really inspiring seeing you do this kind of thing despite generals age :v (I thought I'm one of the few guys stuck in the nostalgia zone doing stuff with generals).

I'd gladly help however I'm pretty much java programmer at this point and this actually allows me to appreciate your work even better seeing how java is a piece of cake compared to C and C++. How did you start all of this? (Technically speaking, was it trial and error or did you find some technical documentation about the internal engine shenanigans?)


--------------------
Woo Particle effects!
Go to the top of the page
 
+Quote Post
Blade
post 18 Feb 2017, 16:11
Post #28



Group Icon

Group: Members
Posts: 16
Joined: 11 January 2017
Member No.: 14208



One of the guys I was working on RA++ with was checking all C&C related files and binaries to try and find left over bits of debug information and came across files that contained more or less complete sets of function symbol information for Generals and Zero Hour. Its only with that that it became feasible enough for me to try and map the windows exe to start one of these "bit at a time" re-implementation projects. Drop in on the dev chat on freenode, channel #thyme if you want to chat about it in more detail.
Go to the top of the page
 
+Quote Post
Jet02
post 19 Feb 2017, 15:09
Post #29



Group Icon

Group: Members
Posts: 191
Joined: 10 September 2016
From: Malaysia
Member No.: 13185



How about smart units? Would that be possible?

There are a lot of things that can be improved upon in this game but that's the only stuff i can think of so far.

This post has been edited by Jet02: 19 Feb 2017, 15:23
Go to the top of the page
 
+Quote Post
Blade
post 2 Mar 2017, 14:53
Post #30



Group Icon

Group: Members
Posts: 16
Joined: 11 January 2017
Member No.: 14208



Made an interesting discovery, it seems that the game was written against STLPort rather than the standard c++ library that comes with MSVC and we think we've identified the version they used so with a bit of massaging to get it compiling, we have an ABI compatible C++ library implementation making it much easier to implement and test functions one at a time, even those that rely on STL containers which we didn't think we could touch until later.
Go to the top of the page
 
+Quote Post
(USA)Bruce
post 2 Mar 2017, 18:23
Post #31


The Forums American Hotshot Flyboy
Group Icon

Group: Tester
Posts: 2452
Joined: 22 November 2012
From: The foundation of modern freedom and Liberty;United States of America.
Member No.: 9500





No offence ment but what does this mean? x)

This post has been edited by (USA)Bruce: 2 Mar 2017, 18:23


--------------------
Go to the top of the page
 
+Quote Post
Chappi55
post 2 Mar 2017, 20:52
Post #32


Particle effects since 2004'
Group Icon

Group: Members
Posts: 101
Joined: 7 March 2012
From: Poland
Member No.: 9029
Skype - chappeh55



QUOTE ((USA)Bruce @ 2 Mar 2017, 18:23) *
--image snip--

No offence ment but what does this mean? x)



I'm sorry man I just had to.

As for what it means - it means that their life just got easier.


--------------------
Woo Particle effects!
Go to the top of the page
 
+Quote Post
Blade
post 2 Mar 2017, 22:18
Post #33



Group Icon

Group: Members
Posts: 16
Joined: 11 January 2017
Member No.: 14208



Part of the standard C++ is a library of data structures and algorithms such as std::vector or std::map, the behaviour of which is mandated by a standard. However the underlying implementation isn't defined so different compilers implement them differently. The implementation even changes between compiler versions. Provided your program is self contained and doesn't try and pass these data structures between dll's or anything the fact that the implementation can change over time doesn't matter though because the version your program uses is set in stone when you compile it.

However when you are trying to hook into an older existing binary where some functions do pass them around and some of the data structures contain them, the differences basically mean things don't line up correctly when you try and re-implement them so functions that theoretically would match the original in behaviour don't match at a binary level, you need to use the same implementation as the original. Part of the reimplementation is working out the layout of the data structures for things like the INI file parser and the big file loader so they can interoperate with the original code and having the correct C++ implementation makes that much easier.
Go to the top of the page
 
+Quote Post
Blade
post 13 Mar 2017, 9:08
Post #34



Group Icon

Group: Members
Posts: 16
Joined: 11 January 2017
Member No.: 14208



I've just about finished reimplementing the functions for initialising the big files. I understand that the -mod command can't override everything in the big files, possibly because it loads mod files somewhat later in the process after already loading some things from the default. Would a new "-root /path/to/stuff" type command line parameter that sets the games whole working directory to somewhere other than the games install directory be useful? Currently the game loads all bigs from the ZH binary directory, then the Generals install directory, then a little further into the init process, it loads the big files in the directory specified by -mod. I could change that to load from the specified root directory, then the ZH install directory, then the Generals install directory then finally the -mod directory.
Go to the top of the page
 
+Quote Post
Zeke
post 13 Mar 2017, 16:21
Post #35


The X General
Group Icon

Group: Project Leader
Posts: 1937
Joined: 7 June 2009
From: Philippines
Member No.: 73
Uniqueness is Overrated



QUOTE (Blade @ 13 Mar 2017, 16:08) *
Would a new "-root /path/to/stuff" type command line parameter that sets the games whole working directory to somewhere other than the games install directory be useful?


You can actually write the full directory of the mod big file to load a mod from outside the default directory.

The bigger problem is that the -mod function only works for a single .big file at a time.

Most mods these days use multiple .big files, because it is more stable and easier to update.


--------------------
Go to the top of the page
 
+Quote Post
Blade
post 13 Mar 2017, 16:27
Post #36



Group Icon

Group: Members
Posts: 16
Joined: 11 January 2017
Member No.: 14208



If you provide -mod with a directory path and not a single .big file name, the code for it suggests it will load all the big files from that directory, not just one. However my understanding was that this can't override some things.
Go to the top of the page
 
+Quote Post
Zeke
post 13 Mar 2017, 17:38
Post #37


The X General
Group Icon

Group: Project Leader
Posts: 1937
Joined: 7 June 2009
From: Philippines
Member No.: 73
Uniqueness is Overrated



QUOTE (Blade @ 13 Mar 2017, 23:27) *
If you provide -mod with a directory path and not a single .big file name, the code for it suggests it will load all the big files from that directory, not just one. However my understanding was that this can't override some things.


I remember someone mentioning that as well, though I never really got around to testing it.

Well if you can make it so that whatever is in -mod will always get loaded last, then that would be helpful.


--------------------
Go to the top of the page
 
+Quote Post

2 Pages V  < 1 2
Reply to this topicStart new topic
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members:

 



Lo-Fi Version Time is now: 27 March 2017 - 7:45