private unsafe void AdvanceAndDrawString(int speed)
        {
            unsafe void DrawString(uint *bmpAddress, int bmpWidth, int bmpHeight)
            {
                _result = DrawNext(bmpAddress, bmpWidth, bmpHeight, speed);
            }

            _window.Image.Draw(DrawString);
        }
        public unsafe void LogicTick()
        {
            bool IsDown()
            {
                return(InputManager.IsDown(Key.A) || InputManager.IsDown(Key.B));
            }

            bool IsPressed()
            {
                return(InputManager.IsPressed(Key.A) || InputManager.IsPressed(Key.B));
            }

            switch (_result)
            {
            case StringPrinterResult.EnoughChars:
            {
                int speed = IsDown() ? 3 : 1;
                AdvanceAndDrawString(speed);
                break;
            }

            case StringPrinterResult.FormFeed:
            {
                if (IsPressed())
                {
                    _window.ClearImage();
                    _result = StringPrinterResult.EnoughChars;
                }
                break;
            }

            case StringPrinterResult.VerticalTab:
            {
                if (IsPressed())
                {
                    _result = StringPrinterResult.EnoughChars;
                }
                break;
            }

            case StringPrinterResult.Ended:
            {
                if (IsPressed())
                {
                    _pressedDone = true;
                    return;
                }
                break;
            }
            }
        }