In my on-again off-again quest to fully document and duplicate the WC1/2 game engine, I've run into an interesting gap. From HCl's work, I've gained an understanding of how the graphics and data files are typically encoded. HCl fully documented the graphics, and the missions format can be mostly understood from his editor code.
I've decoded most of the briefings, except for the details of some of the branching rules. And I've decoded two of the three blocks of data in the campaign files. This includes who's sitting at the bar, victory points for the series, victory points for the individual objectives of each mission, medal availability, and so on. The one thing I seem to be missing, though, is very important: what are the actual objectives for each mission? What do you have to actually do to get those victory points, or to get a Halcyon victory?
As best I can tell, the only remaining decoded data in camp.000 is four bytes per mission slot. Since there are four slots per series, unoccupied mission slots are labeled with -1 0 0 0. However, some extant missions have the same label. Oddly, series 1-7 match perfectly between Vega and SM1, while series 8 in SM1 is a duplicate of series 2.
There are two possibilities. Either these four bytes represent the objectives in some way that is totally unclear to me. Or the mission objectives are stored elsewhere, quite possibly in the executable itself. The latter would raise the question of what those four bytes represent. The first byte is always 0-10 in the first two campaigns, but goes as high as 27 in SM2. The other bytes are almost always divisible by 5, usually by 10 as well.
Does anyone have any information or insight on this matter?
I've decoded most of the briefings, except for the details of some of the branching rules. And I've decoded two of the three blocks of data in the campaign files. This includes who's sitting at the bar, victory points for the series, victory points for the individual objectives of each mission, medal availability, and so on. The one thing I seem to be missing, though, is very important: what are the actual objectives for each mission? What do you have to actually do to get those victory points, or to get a Halcyon victory?
As best I can tell, the only remaining decoded data in camp.000 is four bytes per mission slot. Since there are four slots per series, unoccupied mission slots are labeled with -1 0 0 0. However, some extant missions have the same label. Oddly, series 1-7 match perfectly between Vega and SM1, while series 8 in SM1 is a duplicate of series 2.
There are two possibilities. Either these four bytes represent the objectives in some way that is totally unclear to me. Or the mission objectives are stored elsewhere, quite possibly in the executable itself. The latter would raise the question of what those four bytes represent. The first byte is always 0-10 in the first two campaigns, but goes as high as 27 in SM2. The other bytes are almost always divisible by 5, usually by 10 as well.
Does anyone have any information or insight on this matter?