/// <summary>
        ///
        /// </summary>
        /// <param name="doSim"></param>
        public void SimLoop(bool doSim)
        {
            if (HeatSteps.IsTrue())
            {
                int j;

                for (j = 0; j < HeatSteps; j++)
                {
                    SimHeat();
                }

                MoveObjects();
                SimRobots();

                NewMap = 1;
            }
            else
            {
                if (doSim)
                {
                    SimFrame();
                }

                MoveObjects();
                SimRobots();
            }

            SimLoops++;
        }
        /// <summary>
        /// Update ??
        ///
        /// TODO: WHat is the purpose of this function (along with, SimTick)
        /// </summary>
        public void SimUpdate()
        {
            //printf("simUpdate\n");
            BlinkFlag = (short)(((TickCount() % 60) < 30) ? 1 : -1);

            if (SimSpeed.IsTrue() && HeatSteps.IsFalse())
            {
                TilesAnimated = false;
            }

            DoUpdateHeads();
            GraphDoer();
            UpdateBudget();
            ScoreDoer();
        }