Toshiba-3 on Fri Feb 02, 2018 7:23 pm
Ok I spent a lot of time on this.
The culprit is... OPPONENT.TXT. Somehow. Actually the game only allocates enough space in a savefile to save the wasted status of 48 cars. So if we have more cars installed, like MeldPack which has 70, the overflow is written over the entries that follow the 48-cars chunk, in order: credits, rank, skill level, game completed, number of cars, etc. So if you have 51 cars installed, the skill level is corrupted...
The easy way is to create a 'hard mode' savefile with a DOS version then load it in the MeldPack. It seems like saving the progress afterward will retain the skill level despite there being too many cars installed. Can't tell if it remains unaffected as the players gain more cars ingame.
The hard way was to patch the executable. I tried making the savefiles larger (that was easy) and allocating more space to the car chunk (way more complicated, that 48 value got translated into offsets). So Errol suggested preventing the game from trying to write the infos from all the installed cars and just stop at 48. Which was much easier thanks to his help and is a decent solution IMO:
All unstealable cars can be placed toward the end of OPPONENT.TXT. Once the game is beaten they'll be accessible as the game_completed flag overrides the 'stolen' status of opponents' cars anyway.
Problems could only arrise from having less than 48 cars installed, but I tested with a vanilla Carmageddon install (40 cars) and it worked nicely as skill, rank, parts, gained cars, credits were saved.
Here's the patched exec:
http://rr2000.toshiba-3.com/R6/CARMA95- ... ers-48.zipI haven't updated the MeldPack yet as I prefer to get some feedback first. Also OPPONENT.TXT must be sorted again ofcourse.