@noddynod443 Yeah, the game was built in the old Microsoft code, so it is running without stability in multiprocessor computers. (tldr: skip to 2 options paragraph) If you noticed when you first bought the game, back when PC were 1-2 cores, it ran fine. Now with 4+ cores standard, the game is ready to crash.
To prevent race conditions (technical term) a semaphore is required in the code to ensure sequential execution. Microsoft simply skipped compiling these in, because they never included this obvious tech in their development suites. (who has multi-core gaming PC’s anyway, right?) So when you have a condition of Unit B fires at Unit A, and Unit C fires at Unit A, then Unit A processes 2 “take hit” calls. The calls stack up and should run sequentially, in order, but without semaphores, on multi CPU computers they can end up running concurrently.
When The first take hit schedules with firepower: 5, position: 7, return to Unit B. Then begins executing. The second take hit schedule the same command and overrides the settings to firepower 7, Position 5.5, return to Unit C.
When the first take hit (from B) completes its command and delivers the hit, it then follows the wrong return back to C because it got overridden. When C completes, it goes to return and finds its return has already been consumed, thus crashing.
You have 2 options for a solution.
1: play with a computer with only 1-2 CPUs, preferably just 1. This can be done, sometimes, by changing the hardware settings on the PC, disabling cores/threading, and rebooting. You can also sometimes change the execution settings for the executable too, and force them to run on a single CPU. This is my preference, on windows XP and 7 when supported. Also, virtual machines can be created with limited CPU cores to game on.
2: Play on an all AMD machine. Ryzen or Athlon CPU with a Vega or Radeon Graphics card. This is the route that I just took in my latest build. While Intel is very strong, latest tech and speed focus, AMD works to have their processors work intelligently, and be geared up for robust support. In these old games, AMD recognizes the missing semaphors and injects them in as the code runs. The calling matches a structure, which the AMD CPU recognizes as requiring a semaphor, and simply adds it in, forcing the calls to run in sequence.
I have 7 machines in the basement, 3 AMD, 4 Intels. The AMD’s (4-32core) have never crashed playing the game, the 2-core intel does every once in a great while, and the 3 (4-16 Core) Intels drop at the onset of every major battle without fail, when the heavy concurrent calls stack up. I just made a virtual machine, single core, Windows XP on my main Intel machine to install and run these games on.