Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Написание игр _ Вывод точки напрямую в видеопамять

Автор: Shadow 25.04.2003 1:35

:D
вывод точки напрямую в видео память
---
своя процедура
---
мне тут помогли (Dark) и я решил......
---
очень быстро
---

Код
Const color:array[0..10,0..14] of Byte=

((24,15,15,24,24,24,15,15,15,24,15,24,24,24,15),
(15,24,22,15,24,15,24,24,24,24,15,15,24,15,15),
(15,22,24,15,24,24,15,15,24,24,15,24,15,24,15),
(15,15,15,15,24,24,24,24,15,24,15,24,24,24,15),
(15,24,24,15,24,15,15,15,24,24,15,24,24,24,15),
(24,24,24,24,24,24,24,24,24,24,24,24,24,24,24),
(15,15,15,24,24,24,15,15,15,24,24,24,15,15,15),
(15,22,24,15,24,15,24,24,24,15,24,15,24,24,24),
(15,15,15,24,24,15,15,15,15,15,24,24,15,15,24),
(15,24,22,24,22,15,24,22,24,15,24,24,24,24,15),
(15,24,22,22,22,15,24,22,24,15,24,15,15,15,24));

Var
x,y,c,col:Word;

Procedure PixelOut(x,y:Word;c:Byte);
label we;
Begin
y:=y*320;

asm
xor ax,ax
mov bx,x            {in di 1000 smeshenie v video memory}
mov cx,y         {}
add bx,cx
    mov al,c
    cmp bx,64000
    je we
mov es:[bx],al  {<=> mov es:di, ds:si move strin byte 11 in vid memory es:di out ds:si}
we:
end;
end;
BEGIN
asm
mov ax,0013h
int 10h
mov ax,0a000h
mov es,ax
end;

for x:=0 to 14 do
   for y:=0 to 10 do begin
   col:=color[y,x];
PixelOut(100+x,50+y,col);
end;

asm
mov ah,0
int 16h
end;

end.

Автор: AlaRic 25.04.2003 22:09

Без помощи асмы напиши!

Автор: Shadow 26.04.2003 0:12

:D а так чем хуже ???

Автор: AlaRic 26.04.2003 0:15

Ничем, только многие асму не знают и соответственно не понимают!  ;)

Автор: Shadow 27.04.2003 0:19

:D
---
а PAS через порты еще более запутанно как в Фаронове
----

Автор: AlaRic 27.04.2003 0:22

А учить еще в нагрузку асму для многих еще запутанее!

Автор: Shadow 27.04.2003 0:27

:D
---
две недели назад я ввобще не рубил ни единого бита в ASMe
---