Reversing MOO2
Posted: Fri Jan 19, 2007 8:34 am
Hello everybody.
About year ago, I posted some sources on xspace.ru forum regarding possibility of getting debug information from DOS version of MOO2 into something readable. At that time, I came up with cludgy tool, which can lookup symbol name for specific address. Also, I had idea to create remake of MOO2. However, because of real life problems I had to abandon it.
Now I had few spare hours to play with Watcom debugging format and I came up with small tool that dumped symbol names + their types (if possible) to text file. Unluckily, none of dynamic structures (player, planet, colony, etc) was dumped, as their structure is not present in debug information. Also, Watcom debugging format is little bit ugly (even OpenWatcom guys said that no one should use it anymore), so it's impossible to get name for a specific data type.
Regarding possibility of remake: after playing with assembly + symbol names, I think it is NOT worth to do remake of MOO2. It will be much more convinient to recreate MOO2 from scratch and, maybe, simulate AI behaviour.
Why? Quite simple. MOO2 was done... err... badly. For example, static arrays for planets (250 max), limited amount of planets per star (number is hardcoded inside of star structure), hardcoded UI's, hardcoded screen handling, etc. If we talking about multiplayer/singleplayer, for each screen in update (render) routine, there's call to Mox_Net_Update_, which plainly sucks.
Funny thing, though. Seems like some of the source file names was named after programmer that was responsible for it. For example: ERICNET, JIM, KEN, HAROLD, ERIC, ERICHELP, RUSS, BILL, BILLHELP, etc.
About year ago, I posted some sources on xspace.ru forum regarding possibility of getting debug information from DOS version of MOO2 into something readable. At that time, I came up with cludgy tool, which can lookup symbol name for specific address. Also, I had idea to create remake of MOO2. However, because of real life problems I had to abandon it.
Now I had few spare hours to play with Watcom debugging format and I came up with small tool that dumped symbol names + their types (if possible) to text file. Unluckily, none of dynamic structures (player, planet, colony, etc) was dumped, as their structure is not present in debug information. Also, Watcom debugging format is little bit ugly (even OpenWatcom guys said that no one should use it anymore), so it's impossible to get name for a specific data type.
Regarding possibility of remake: after playing with assembly + symbol names, I think it is NOT worth to do remake of MOO2. It will be much more convinient to recreate MOO2 from scratch and, maybe, simulate AI behaviour.
Why? Quite simple. MOO2 was done... err... badly. For example, static arrays for planets (250 max), limited amount of planets per star (number is hardcoded inside of star structure), hardcoded UI's, hardcoded screen handling, etc. If we talking about multiplayer/singleplayer, for each screen in update (render) routine, there's call to Mox_Net_Update_, which plainly sucks.
Funny thing, though. Seems like some of the source file names was named after programmer that was responsible for it. For example: ERICNET, JIM, KEN, HAROLD, ERIC, ERICHELP, RUSS, BILL, BILLHELP, etc.