На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
В этом разделе можно создавать темы, которые относятся к поколению 32-битных компиляторов.
Здесь решаются вопросы портирования кода из старого доброго Турбо Паскаля в FPC, TMT, VP, GPC компиляторы, а также особенностей программирования на них для Windows/Linux и других ОС.
Указывайте тип компилятора, его версию, а также платформу (Windows/Linux/..) компиляции, другими словами, Target.
Модераторы: volvo877
  
> Как снять мерцание во Free Pascal , именно free pascal
    в паскале снимаю мерцание сменой видеостраниц и ассемблером.
    во free pascal вылетает с ошибкой 218 из-за проц. WaitRetrace. одной смены видеостраниц недостаточно. что делать? :no-sad:


    вот программа для turbo pascal:

    ExpandedWrap disabled
      program abc;
      uses crt,graph;
      var gd,gm     :integer;
          dx,dy     :integer;
          x,y       :integer;
          page      :boolean;
       
       
      procedure WaitRetrace; Assembler;
      Asm
        Mov Dx,3DAh
        @1:
          In AL,DX
         And AL,08h
         Jnz @1
         @2:
          In AL,DX
         And AL,08h
          Jz @2
      End;
       
       
      begin
           clrscr;
           writeln('ЇаЁўҐв');
           readkey;
           gd:=vga;
           gm:=vgamed;
           initgraph(gd,gm,'c:\tp\bgi');
           x:=320;
           y:=240;
           dx:=1;
           dy:=1;
           page:=false;
           repeat
                 x:=x+dx;
                 y:=y+dy;
                 if (x=630)or(x=10) then dx:=-dx;
                 if (y=10)or(y=340) then dy:=-dy;
                 setcolor(white);
                 circle(x,y,9);
                 setvisualpage(ord(page));
                 setactivepage(ord(not page));
                 WaitRetrace;
                 cleardevice;
                { setcolor(black);
                 bar(0,0,639,349);   }
           until keypressed;
       
           readkey;
      end.
      Windows не позволит работать с портами напрямую. Как вариант, библиотека wingraph
      Пример, в котором снимается мерцание:
      ExpandedWrap disabled
          UpdateGraph(UpdateOff); //used to reduce flickering
          repeat
            Delay(15);
            PutAnim(80+Round(10*Sin(i*Pi12)),130+Round(10*Cos(i*Pi12)),anim,BkgPut);
            Inc(i);
            PutAnim(80+Round(10*Sin(i*Pi12)),130+Round(10*Cos(i*Pi12)),anim,TransPut);
            UpdateGraph(UpdateNow);
          until KeyPressed;
      Сообщение отредактировано: volvo877 -
        а попроще?
          Что попроще?
          Прокомментировать, что ли?
          Файл image.pas

          ExpandedWrap disabled
            UpdateGraph(UpdateOff); //used to reduce flickering
              repeat
                Delay(15); // задержка
                PutAnim(80+Round(10*Sin(i*Pi12)),130+Round(10*Cos(i*Pi12)),anim,BkgPut); // выбили маску для спрайта
                Inc(i); // сменили координату
                PutAnim(80+Round(10*Sin(i*Pi12)),130+Round(10*Cos(i*Pi12)),anim,TransPut); // вывели спрайт
                UpdateGraph(UpdateNow);
              until KeyPressed;
            Прочти:
            Анимация(не мерцающая и плавная) (сообщение #2532762)
            Сообщение отредактировано: volvo877 -
              я скачал архив wingraph.zip. из папки src взял wingraph.pas , дописал в прогу модуль, но при запуске ругается, что ждал в 74 строчке модуля :, но нашел driver. Что делать компилятор FPC 2.4.0 с сайта www.freepascal.org :no-sad:
                В настройках компилятора установи Options -> Compiler -> Compiler mode в Delphi Compatible, либо просто открой WinGraph.pas и первой строкой добавь {$mode delphi} Ни в режиме FP Dialect, ни в режиме совместимости с TP этот модуль компилироваться не будет.
                  спасибо
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0265 ]   [ 16 queries used ]   [ Generated: 14.05.24, 22:29 GMT ]