05. Note.1 - History of Konkurs/Fagot training system.
1 | Основные достижения в проекте. Проект начался благодаря инициативы со стороны Министерства Обороны Молдовы в 1994 г. Мне предложили участвовать, я предложил сделать проект на базе нашей компании P&P Service и после того как был реализован весьма представительный видео-анимационный ролик сомнений у представителей МО не осталось. |
Main achievements in the project. The project began thanks to the initiative of the Ministry of Defense of Moldova in 1994. I was offered to participate, I offered to make a project on the basis of our company P&P Service, and after a very representative video-animation clip was realized, the representatives of the Ministry of Defense had no doubts. | |
Требования к решению включали среди прочего необходимость реализовать учебную и игровую части на компьютерах с производительностью не больше чем у IBM-PC/286, как единственно доступные по бюджету МД РМ. Стандартной конфигурации и памятью до 4 МБайт. (да да - мега, а не гига:) | |
The requirements for the solution included, among other things, the need to implement the educational and gaming parts on computers with a performance no higher than that of IBM-PC / 286, as the only ones available on the budget of MD RM. Standard configuration and memory up to 4 MB. (yes yes - mega, not giga :) | |
Анализ доступных решений/игр существовавших тогда на платформе 286 процессора (DOOM. Need for Speed,..) показал, что можно реализовать вполне динамичную игровую часть в 3D графике, но только в VGA (320x240) режиме. В только зарждавшемя тогда SVGA(640x480) режиме хороших примеров не было. | |
An analysis of the available solutions/games that existed at that time on the 286 processor platform (DOOM. Need for Speed,..) showed that it is possible to implement a quite dynamic game part in 3D graphics, but only in VGA (320x240) mode. There were no good examples in the SVGA(640x480) mode, which was then just emerging. | |
Однако часть особенностей назначения тренажера исключал возможность применения VGA режима, а именно: 1) Ракета может использоваться в диапазоне дальностей 500 - 4000 метров, что для целей типа танк, на дальности в 4000 метров, в поле видения оптического прибора наведения ракеты на цель, размер цели составлял 3 пикселя по высоте для VGA режима. В основных рабочих диапазонах дальности (3500-:1500) угловые размеры целей оказывались порядка 4-:-30 пикселей, что оказывалось слишком малым разрешением для узнавания ориентации целей в различных направлениях движения. 2) Большой размер очень детализированного визира, также оказывался слишком аляповатым и заслоняющим поле зрение видимое в оптическом приборе. (Это копия из ролика VHS качества, другого качества нет :( Кроме того, режим SVGA, имел явные преимущества в целом по качеству картинки и мог считаться, безусловно, более перспективным. | |
However, some of the features of the simulator's purpose excluded the possibility of using the VGA mode, namely: 1) The missile can be used in the range of 500 - 4000 meters, which for tank-type targets, at a distance of 4000 meters, in the field of view of the optical device for pointing the missile at the target, the target size was 3 pixels in height for VGA mode. In the main operating ranges of the range (3500-: 1500), the angular dimensions of the targets turned out to be on the order of 4-:-30 pixels, which turned out to be too low a resolution for recognizing the orientation of targets in different directions of movement. 2) The large size of a very detailed cursor also turned out to be too clumsy and obscured the field of view visible in the optical device. (This is a VHS quality copy haven’t other quality :( In addition, the SVGA mode had clear advantages in terms of image quality in general and could certainly be considered more promising. | |
А в чем проблема использования SVGA? В 4-ре раза большая нагрузка на слабый процессор и отсутствие единого стандарта. (Целый зоопарк адаптеров, для каждого свой набор графических примитивов). Долгое время не удавалось обновлять новый вид местности при движении курсора за подвижной целью и перерисовывать курсор в центре без паразитного эффекта мерцания курсора (см. решение проблемы ниже). | |
What's wrong with using SVGA? 4 times more load on a weak processor and the lack of a single standard. (A whole zoo of adapters, each with its own set of graphic primitives). For a long time it was not possible to update the new view of the terrain when the cursor moved behind a moving target and redraw the cursor in the center without the parasitic cursor flicker effect (see the solution below). | |
Устранение паразитного мерцания курсора и увеличение мягкости перерисовки изображений было нечаянно достигнуто, благодаря моему опыту разработок графических систем для телевидения. Где мне был дан урок большого значения синхронизации различных видеоисточников с помощью кадрового импульса для решения различных задач. И для тренажера удалось, за счет таймерного процесса отслеживать все появления кадрового импульса монитора (монитор не имел прерывания по кадровому импульсу) и далее синхронизировать процесс перестроения изображения в подобранный момент времени стояния кадра. Не смотря на накладные расходы, результат был потрясающий. | |
The elimination of cursor flicker and the increase in softness of image redrawing was inadvertently achieved thanks to my experience in developing graphics systems for television. Where I was given a lesson in the great importance of synchronizing various video sources using a frame pulse for solving various problems. And for the simulator, it was possible, due to the timer process, to track all the appearances of the frame pulse of the monitor (the monitor did not have an interruption on the frame pulse) and then synchronize the process of rebuilding the image at the selected moment in time when the frame was standing. Despite the overhead, the result was amazing. | |
Достижения кадровой синхронизации имело целый ряд явных и предполагаемых интересных историй. Именно желание рассказать о них и побудило меня написать этот скучный опус, но об этом позже, а пока хочется похвастать уникальной системой диспетчеризации процессов реализованной в тренажере. | |
The achievement of frame synchronization has had a number of apparent and alleged interesting stories. It was the desire to talk about them that prompted me to write this boring opus, but more on that later, but for now I want to brag about the unique process dispatching system implemented in the simulator. | |
Но прежде стоит признаться, что реализация этой схемы чуть не стоила провала всего проекта - слишком все сложно, по началу получалось и плохо, вернее вообще не работало. Но в оправдание, а как же без этого, следует упомянуть, что для заданного подхода (число необходимых одновременно работающих процессов) и жестких требований по поведению компонентов в контексте военного назначения тренажера и при очевидной слабости процессора, превышать параметры которого по условиям было нельзя, могу утверждать, что другая схема оказалось бы бесполезной. | |
But first, it’s worth admitting that the implementation of this scheme almost cost the failure of the entire project - everything is too complicated, at first it turned out badly, or rather, it didn’t work at all. But in justification, and how could it be without it, it should be mentioned that for a given approach (the number of necessary simultaneously working processes) and strict requirements for the behavior of components in the context of the military purpose of the simulator and the obvious weakness of the processor, whose parameters could not be exceeded, I can say that another scheme would be useless. | |
Судите сами, необходимо было отслеживать прерывания от клавиатуры и таймера и чрез таймер организовывать диспетчеризацию независимых процессов, таких как:
| |
Judge for yourself, it was necessary to monitor interrupts from the keyboard and the timer and organize the dispatching of independent processes through the timer, such as:
| |
В первой версии программа падала от косого взгляда, тряски или сквозняка. Однако когда мне предоставили, о чудо, целую неделю для отладки и, о чудо, независмого тестера, то под конец он плясал руками и ногами на компе, но программа непадала, да и почти 30 лет непрерывной эксплуатации тренажера, тоже говорит о надежности работы программы. | |
In the first version, the program crashed from a sideways glance, shaking or draft. However, when I was given, lo and behold, a whole week for debugging and, lo and behold, an independent tester, then in the end he danced with his arms and legs on the computer, but the program did not crash, and almost 30 years of continuous operation of the simulator also speaks of the reliability of the program. | |
Стоит отметить и другие значимые достижения в проекте:
| |
It is worth noting other significant achievements in the project:
| |
2 | Первая реальная история вокруг кадровой синхронизации. Дело в том, что после 2-ой версии тренажера, когда он зазвучал. Я работал в одной коммерческой организации над другим важным для меня проектом в области баз данных, а в это время, наша (моя) команда, вначале “отлупила” меня - типа я тупой, отсталый, медленный, не надежный и короче пошел вон со своим ассемблером. Как оказалось они уже знали что получили карт бланш на новую версию тренажера +Фагот +Польский язык +видео реального качества с диска. |
The first real story around frame synchronization. The fact is that after the 2nd version of the simulator, when it sounded. I was working in a commercial organization on another database project that was important to me, and at this time, our (my) team, at first “beat” me - like I’m dumb, backward, slow, not reliable and, in short, went out with my assembler. As it turned out, they already knew that they had received carte blanche for a new version of the simulator +Fagot +Polish language +real quality video from the disk. | |
Ну типо - мы пойдем другим путем (надежным). Только Windows, только языки высокого уровня, только стандартные графические библиотеки типа Vesa. Тем более тогда уже появились 386dx процессоры. И нужно только повторить уже работающие программы на новом уровне, тра-та-та коржик с маком. | |
Well, supposedly - we will go the other way (reliable). Windows only, high level languages only, standard graphics libraries like Vesa only. Moreover, 386dx processors had already appeared then. And you just need to repeat already working programs at a new level, tra-ta-ta biscuit with poppy seeds. | |
Но что-то пошло не так, и я догадываюсь что (смотри следующую предполагаемую историю), в начале они не смогли повторить такую же динамику и визуальное качество картинки на новом инструментарии. Если бы они снизошли до консультаций со мной, возможно их выручила бы реализация программной синхронизации с кадровым импульсом даже в контексте ими использованных тупых инструментов. | |
But something went wrong, and I guess that (see the next alleged story), in the beginning they were not able to replicate the same dynamics and visual quality of the picture on the new toolkit. If they had condescended to consulting with me, perhaps they would have been helped out by the implementation of software synchronization with a farme pulse, even in the context of the stupid tools they used. | |
Потом они попытались подсунуть заказчику, совсем тупую схему игровой части - в плане (не 3Д) и без курсоров. И узнали, видимо, все что заказчик про них подумал. Потом они попытались хотя бы отладить плохо работающую программу. Но в условиях лютой ненависти к ассемблеру - 0 шансов. И наконец они взмолились (шучу:) ко мне - типо ну смотри твое детище жаждет переродится в новой ипостаси. И я, в момент завершения “чудовой” программы (аналог систем репликации), вместо того чтобы собирать “пряники”, помчался на крыльях любви, какие обиды когда дитятко плаче. | |
Then they tried to slip to the customer a completely stupid scheme of the game part - in plan (not 3D) and without cursors. And they learned, apparently, everything that the customer thought about them. Then they tried to at least debug the badly working program. But in conditions of fierce hatred for assembler - 0 chances. And finally they prayed (just kidding:) to me - like, well, look, your brainchild is eager to be reborn in a new incarnation. And I, at the moment of completion of the “wonderful” program (an analogue of replication systems), instead of collecting “carrots”, rushed on the wings of love, what insults when a child cries. | |
Потом была эпопея с отладкой, новые диспетчер и графическая библиотека, новый язык/интерпретатор, плеер с диска и многое другое - работай и радуйся, но это оказалась последняя версия нашего тренажера. О причинах и выводах смотри в последней истории. | |
Then there was an epic with debugging, a new dispatcher and a graphics library, a new language/interpreter, a player from a disk and much more - work and be happy, but this turned out to be the latest version of our simulator. For reasons and conclusions, see the last story. | |
3 | Первая предполагаемая история вокруг кадровой синхронизации. Мои интерпретации ниже приведенных фактов требует подтверждения, но аналогии интересны сами по себе - судите сами:
Я не на что не намекаю, но 15 лет форы мы бездарно просрали. |
The first alleged story is around frame sync. My interpretation of the facts below requires confirmation, but the analogies are interesting in themselves - judge for yourself:
I'm not hinting at anything, but 15 years of handicap we mediocre pissed off. | |
4 | История последняя и печальная. К сожалению, как уже было сказано 3-яя версия оказалась последней, почему:
|
The last story and sad. Unfortunately, as already mentioned, the 3rd version turned out to be the last one, why:
| |