Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.22.169.223] |
|
Сообщ.
#1
,
|
|
|
в паскале снимаю мерцание сменой видеостраниц и ассемблером.
во free pascal вылетает с ошибкой 218 из-за проц. WaitRetrace. одной смены видеостраниц недостаточно. что делать? вот программа для turbo pascal: 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. |
Сообщ.
#2
,
|
|
|
Windows не позволит работать с портами напрямую. Как вариант, библиотека wingraph
Пример, в котором снимается мерцание: 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; |
Сообщ.
#3
,
|
|
|
а попроще?
|
Сообщ.
#4
,
|
|
|
Что попроще?
Прокомментировать, что ли? Файл image.pas 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; |
Сообщ.
#5
,
|
|
|
Сообщ.
#6
,
|
|
|
я скачал архив wingraph.zip. из папки src взял wingraph.pas , дописал в прогу модуль, но при запуске ругается, что ждал в 74 строчке модуля :, но нашел driver. Что делать компилятор FPC 2.4.0 с сайта www.freepascal.org
|
Сообщ.
#7
,
|
|
|
В настройках компилятора установи Options -> Compiler -> Compiler mode в Delphi Compatible, либо просто открой WinGraph.pas и первой строкой добавь {$mode delphi} Ни в режиме FP Dialect, ни в режиме совместимости с TP этот модуль компилироваться не будет.
|
Сообщ.
#8
,
|
|
|
спасибо
|