Hi there,
Building up such a visual blueprint is exactly where most of the difficulty lies with a 16-bit DOS game, and especially CIV.
I have spent years reversing it in IDA, to a point where many of the main game functions where mapped out (within IDA though), and yet there remain several unknown global variables throughout the code...
My main guess for this difficulty is that the code is a mess
Like rahorvat stated in a previous post, my take on this mess is that MPS had implemented a solid core, but then went on implementing new features and debugging through quick and dirty patches, then coping with side effects with even dirtier patches like by adding new functions to do the same things as others, but with different arguments, global variables that duplicate values keep game states between screens or actions, but without synchronizing them, etc.
In a word : dev as usual
When reversing CIV, this mess results in having pieces of code and data that are counter-intuitive (see bytes 27 et 28 in city data, to store info about fortified units in a city, also inconsistencies that keep info about Civs in different places), many bugs (path find, land value, arctic anomaly, pollution...), and also dead code never called in game, as well as unused game art (red space module, unknown castle thumbnails, unit designs, mouse pointers...).
Also, there are 2 or 3 gigantic functions containing a lot of game logic intertwined with other functions, and screen rendering, user interaction as well a game logic update get all mixed within sub-sub-sub-loops of such gigantic functions that update global variables to be used in other sub-sub-sub-sub-loops or other routines far down the code flow. For such functions, trying to map out a functional blueprint actually comes down to fully reversing the full code, in order to understand everything that it does.
In fact, some weird behaviours encountered during CIV games do come from this spaghetti approach - I'm thinking for example of destroyed CIVs that are not properly identified or recorded if they didn't have time to pass 1 turn before being destroyed, or also game freezes (actually endless loops) occuring when unit stacks (linked lists of units on a given square) get corrupt because a broken unit processing function forgot to update the linked list properly. Not to mention statistics screen that show abnormal values (negative number of settlers, etc.).
Spaghetti is delicious but it's still spaghetti