It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
I don't have time to read the whole thing right now, but it seems that you've gone really far in your reverse-engineering of the game! I'm marking this thread as favorite to stay up-to-date. Keep up the good work! :)
Just to keep everyone updated. I'm currently disassembling the files, and slowly getting there. Found the code which loads in the crime data, so hopefully will find out what the bytes mean soon. Let's just say IDA is fantastic!

Still not found where the mission sets are held, but probably won't be too long until I find it. (Famous last words?)
Good news! I've found where the missions sets are held in memory. It looks like we can actually get these to consist of up to 7 crimes, which is interesting as the built-in mission sets only do 3 crimes (except for the first tutorial set which is just one mission).

The next step is to change one of the crime numbers to 0D (referencing the file CRIME13.DTA which doesn't exist yet) to see if it can handle extra crimes without any other changes. Then the next step will be to figure out where it gets the names of various strings for the mission set and adjusting these.

i'm away for most of the weekend, so I'll only get to play with this in a couple of days, however we might be getting close to making new missions. One issue is that there's not really enough space to create extra mission sets, so unless I change every reference in the code to this block of data to a larger empty space, we're stuck with 16 sets. But if we make these more involved, it'll make an fun 'expansion' pack ;)

I also am figuring out some details about the different exe files used. A nice mixture of overlays and automatically run exes. I'll post the details when I find some more out.
Another small patch that would be nice is one that skips the startup config questions with standard answers.. vga/adlib/keyboard, most likely, and possibly another with joystick and skips the calibration with standard values.
Should be simple; will give it a shot when I get back home
Here's a replacement for Intro which selects the default options of:

VGA, Adlib Sound, and Keys

Let me know if anyone wants one with other options selected. I could actually make this work via command line arguments if there's demand.

Rename the old intro.exe to something like intro.exe.orig, and then put this in the directory. Run covert as normal

https://dl.dropboxusercontent.com/u/101876491/covert%20action/auto_intro/intro.exe
Some interesting things found in my research:

----------------------------------------

PLOT.TXT works as follows:

This displays text that your boss says to you at the start and end of each case. These are up to 5 pages, which are denoted by string ID. This ID is of the form: *PL<MISSION SET ID x2 bytes><CRIME NUMBER x1 byte><SPECIAL>

When you successfully complete a crime, then it displays the pages noted by special going from 0 to 4. If you fail a crime, then it displays the pages noted by special going from 5 to 9.

At the start of a crime, if you failed the previous one, then it displays the messages noted by special going from A-F. Finally, at the start of a mission set, you get the messages stored in: *PL<MISSION SET ID>9<0 to 5>

Note that several IDs can be associated with the same block of text.

----------------------------------------

Looking into how it picks the crime, there's a big list in the exe of the mission sets, where it holds the crime ids, a name for the mission set (which is seemingly unused - possibly from their own mission editor?), and a list of references to two strings: VICTIM and OBJECT. These are used to replace $VICTIM and $OBJECT in event messages. $VICTIM is also used in the high score table to help describe the case (along with a short name of the crime type).

So, changing the mission set requires this list to be altered, along with changing the VICTIM and OBJECT text, and then these pointers to the text. All quite cool!

----------------------------------------

If the number of crimes in a mission set ever gets to 7 (the maximum) then it sets the "VICTIM" of the crime to be your apartment, where the "OBJECT" the crime is about is set to a "Mattress full of cash". Really looks like deleted content! But cool, and could be used in a longer mission set (as the current game only has 3 crimes per mission set)

----------------------------------------

On both the practice screen and the training screen, there's text for a "STAMINA" choice. Tweaking a byte makes this appear in the list; however it appears to do nothing in either case. I'm guessing it probably allowed you to take more hits. Interesting to see anyway.

----------------------------------------

Getting closer to the weird participant data - I've got the locations where they're used. Now to figure out exactly what they affect. I've also found the places where it creates thoes mini-clues (so things like car X assigned to person Y). The logic seems a little disconnected to the data, but I should be able to get it in a few days of analysing.

I've tested increasing the number of crimes, and it works beautifully. However, it really doesn't look possible to increase the number of mission sets. That's ok, as there's enough of them - it just means any 'mission expansion' will just have to replace the current ones. I'm really excited by being able to make the mission sets more interesting however!
Post edited February 09, 2014 by deanolium
avatar
deanolium: Here's a replacement for Intro which selects the default options of:
Rather interesting, your exe is only ~500 bytes while the original was several kb - so I assume this is a complete replacement instead of patching a few bytes? I kinda expected you to just replace interrupt calls with modification of ax or something.. =)
I went the easy route and just rolled my own.

How Intro.exe works is that it collects the inputs and stores them into a shared data segment (where the address is stored in 0000:04F0/4F1). So rather than get it to jump forwards through the text displaying code et al, it was just easier to instead probe 4F0, get the shared data segment, and then push the generated values into the right areas.

So basically just me being lazy ;)
Post edited February 10, 2014 by deanolium
More Info - this time about the Clues file

This file lists the random clues, such as X gun is connected to person Y, etc. This list is actually split into two parts, clues where the message key has two numbers, and clues where the message key has four numbers.

For the two numbers (so *C00, etc), the two numbers are picked seemingly at random (Need to fully check). This creates a generic clue, which are always in packs of four:

CX0 reveals just a suspect
CX1 reveals a suspect's name
CX2 reveals the suspect's organizatoin
CX3 reveals the suspect's city

For the four numbers, these are clues which are connected to a particular crime. The message key is of the form:

*CXXYY

XX is the number of the crime (following the crimeXX.dta file naming)

YY seems to be the ID of the suspect. This means that these clues connect to a particular person. However, I need to double check this part in the code.

So if my assumptions are correct, to make a new crime, you just have to alter the four digit *C messages to include the appropriate clues and job's a good 'un.

-----------------------

I've managed to dissamble FINAL.EXE to a reasonable degree, and I can tell know what's going on. Interestingly, a lot of the clue generation code is in there, despite it being used in GAME.EXE (which just copies these functions). My current job is to go and disassemble GAME.EXE where clues and participants are concerned, so I can figure out what those weird numbers mean.

-----------------------

On further other news, I'm figured out the rough part of the WORLDX.DTA files. Here's the rough gist:

ofs | datatype | description
----+----------+------------
0 | word | Number of cities
2 | word | Number of organizations
4 |34 bytes| Each city is set as below
224h| 36 bytes | Each Organization set as below

City Data
ofs | datatype | description
----+----------+------------
0 |13 bytes| ASCIZ City name
13 |13 bytes| ASCIZ Country name
26 | 1 word | mystery
28 | 1 word | mystery
30 | 2 words| 00h
34 | 1 byte | X coord of city
35 | 1 byte | Y coord of city

Note that the game determines travel time based on the distance between coords!

Org Data
ofs | datatype | description
----+----------+------------
0 | 6 bytes| ASCIZ short name
6 |20 bytes| ASCIZ long name
26 |3 words| Mystery
32 |1 word | Unique ID
34 |1 word | Mystery (FF is 32 is FF)
36 |2 words| Mystery

The organization unique ID is used to determine the organizations that a master mind can be from. If it's set to FF then the mastermind can't be in it (which includes CIA, Mossad and KGB). One thing to notice is that same named groups have the same ID.

In theory you can actually add new organizations by using a new ID. The game will need a byte changed so that the random number generator can go that high when picking the organization for the mastermind, but that's it. However, you'll also have to add the name to the lists in the exes, which could be annoying (but it's all tables, so you could just point to an unused bit of ram).

Enjoy!
Post edited February 11, 2014 by deanolium
Wow guys, your work is amazing.

This game is still great!
avatar
RafaelLopez: Wow guys, your work is amazing.

This game is still great!
Thanks dude, really appreciated!
Hope you guys manage some kind of graphics mod. To see this game with updated graphics would be pretty much all I need. I can always play my own music on the pc in the background.
Post edited October 21, 2014 by Socratatus
Hi there guys,

Was any more work done on this? Sorry if this is a major necro, just was encouraging to see some work made on the game. I'd be interested in making some new cases if it's possible.
Interesting...

Sadly the files for this game appear to be beyond my skills.

So, i would like to ask here if anyone has figured out if it is possible to get more skill selections than default. I would like to be able to play with the higher difficulty level, but not have the "action games" bumped too high(once electronics gets high i keep getting literally impossible to solve ones, sometimes maybe as often as 1/3(and then sometimes not at all for a long time), which gets really annoying).

So for example, most of all i would like to max the skill for Electronics and Combat, the former is my standard skill, while the latter is a must have, and the slightly sluggish responsiveness of running the game in an emulator and the issue with controls makes it very hard(and i could manage on hardest level with the original game on my 286, if barely, with the emulator i´m sometimes having trouble even on easiest).
Cryptography i don´t mind the level of and i never use Driving at all(if i can help it).


What i did was save 3 games with 3 different skill selections, then opened them in a hexeditor, but i just can´t find any bytes that appear consistent with the skill choices.

Anyone who knows more? I´d really like to play on Regional or Global level, but the action parts really kills my chances of doing anything, while the easier difficulty levels are usually way too easy with initial clues and all.