1. Заголовок или название темы должно быть информативным ! 2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК ! 4.НЕ используйте форум для личного общения! 5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
:D VESA графика из под виндовс не работает почему кто знает ----- из по DOS работает а из под WINDOWS нет почему ???? ----- при установыке пользуюсь ASM функциями
mov ah,4fh mov al,2h mov bx,10eh ;320*200 65536 color
Не знаю, ю меня тоже есть модуль, написанный мной, но у меня все работает... Может у тебя видеокарта такая? попробуй этот режим протестировать:
program testmode;
var s:string; p:pointer; ok:byte;
begin p:=ptr(seg(s),ofs(s)); asm les di,p mov ax,4f01h mov cx,010eh int 10h mov [ok],1 cmp ax,4f {Если проблема - здесь будет другой код} jz @exit mov [ok],0
@exit: end;
if (ok=1) then write('Все в порядке') else write('Нифига не пашет :-((');
end.
Если ничего не выйдет пиши, будем думать дальше.
Всего хорошего!
--------------------
- Где я? - Во тьме. - В какой тьме? - Во тьме твоего мозга.
SHADOW MAVERICK он же просто SHADOW т.к. пароль про...
да нет в DOSe все пашет я РЕГИСТРЫ смотрю там правильное щначение возвращается --- а в ВИНДЕ WINDOWS просто выкидывает прогу как процесс (убив) --- что делать --- XP WIND у меня
Ну как говорится, если водка мешает работе, бросай нахрен... такую работу ;D
У меня WinXP тоже глючит с досприложениями, т.е. сначало я могу работать в паскале, а через некоторое время я должен переходить в оконный режим - короче фигня!!! >:(
Но слава богу XP у меня на работе, дома - Вий 98(еще названия - вынь 98, маздай короче...) ;D
А ты где берешь документацию, не у того же автора что и я? ;D
Давай еще чего нибудь попишем про VESA?
--------------------
- Где я? - Во тьме. - В какой тьме? - Во тьме твоего мозга.
:D В.Ю. Пирогов 320 рубл стоит книга интересная но лин ткаим языком написанная
--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы. МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/
:D ню я то непроч моно опыта наберусь т.к. напрямую с видое памятью плохо умею работать как бы то что в у книге было написано такое ощущения что секрет -- например что такое битовые плоскости и с чем их едят ето вроде с VESA ---- они как то за цвет отвечают и их 4
--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы. МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/
например что такое битовые плоскости и с чем их едят ето вроде с VESA ---- они как то за цвет отвечают и их 4
Я ваще не перевариваю зачем эти бытовые плоскости, так как меняя 1 байт, мы меняем сразу 8 пикселов и соответственно чтобы изменить цвет точки приходится читать 4 байта (по 1 из каждой плоскости), менять в них бит отвечающий за нужный нам пиксел и записывать эти 4 байты обратно... Также там есть что то похожее на маску, это чтобы лишний раз бит не читать, задаём маску и потом пишем... Самое хорошее то, что эти плоскости используются тока в 16 цветном режиме :D
:D да будует проклято все семейство видоеадаптеров с их нестандартными системами записи в видеопамять --- так посмотрел оказывается разный рехим разная система записи ---
Const color : Array [0..10,0..10] Of byte = ((00,00,00,00,00,00,00,00,00,00,00), (00,00,00,00,00,00,00,00,00,00,00), (00,00,16,17,18,19,18,17,16,00,00), (00,00,17,20,23,27,23,20,17,00,00), (00,00,18,23,28,29,28,23,18,00,00), (00,00,19,27,31,15,31,27,19,00,00), (00,00,18,23,28,29,28,23,18,00,00), (00,00,17,20,23,27,23,20,17,00,00), (00,00,16,17,18,19,18,17,16,00,00), (00,00,00,00,00,00,00,00,00,00,00), (00,00,00,00,00,00,00,00,00,00,00));
var gr,gr1,d,r,e,x:Integer; y:Word; b,bb,c,co:byte; label we,we1,we2,we3;
BEGIN {gr1:=0; gr:=InstalluserDriver('svga256',nil); Initgraph(gr,gr1,'');}
end; for e:=0 to 10 do for x:=0 to 10 do begin c:=color[e,x]; asm mov al,c
cmp bx,10011 je we cmp bx,10331 je we cmp bx,10651 je we cmp bx,10971 je we cmp bx,11291 je we cmp bx,11611 je we cmp bx,11931 je we cmp bx,12251 je we cmp bx,12571 je we cmp bx,12891 je we jmp we1
we: add bx,320 sub bx,11
we1: inc bx mov es:[bx],al
end; end; asm mov ah,0 int 16h end; end.
вот как можно улучшить ету блин хр... --- и еще если сменить разрешение на 800*600 256 цветов то почемуто до конца экрана его не довести и он в нескольких местах сразу появляется ----
--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы. МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/
Самое хорошее то, что эти плоскости используются тока в 16 цветном режиме :D
И в ближайшее будущее, больше такой херни не ожидается... :) Когда писал первую прогу для широкого употребления, выбрал mode 13h, но мне сказали, что это несерьезно, следственно оставался только 640х480х16 и пришлось сильно повыпендриваться, чтобы осознать как записать этот проклятый пиксель, а не сразу 8. Инфы на тот момент вообще не было (no inet), учебника Фаронова тоже...
Вообще, самое удобное в этом режиме было очищать экран или рисовать прямоугольники...
Самое хорошее то, что эти плоскости используются тока в 16 цветном режиме :D
И в ближайшее будущее, больше такой херни не ожидается... :) Когда писал первую прогу для широкого употребления, выбрал mode 13h, но мне сказали, что это несерьезно, следственно оставался только 640х480х16 и пришлось сильно повыпендриваться, чтобы осознать как записать этот проклятый пиксель, а не сразу 8. Инфы на тот момент вообще не было (no inet), учебника Фаронова тоже...
Вообще, самое удобное в этом режиме было очищать экран или рисовать прямоугольники...
Shadow плюнь ты на это, это нужно только в плане ознакомления...
:D хыть тфу ---- но всетаки интересно тем что ето быстро работает
--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы. МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/
Const color : Array [0..10,0..10] Of byte = ((00,00,00,00,00,00,00,00,00,00,00), (00,00,00,00,00,00,00,00,00,00,00), (00,00,16,17,18,19,18,17,16,00,00), (00,00,17,20,23,27,23,20,17,00,00), (00,00,18,23,28,29,28,23,18,00,00), (00,00,19,27,31,15,31,27,19,00,00), (00,00,18,23,28,29,28,23,18,00,00), (00,00,17,20,23,27,23,20,17,00,00), (00,00,16,17,18,19,18,17,16,00,00), (00,00,00,00,00,00,00,00,00,00,00), (00,00,00,00,00,00,00,00,00,00,00));
BEGIN asm mov ax,0013h int 10h mov ax,0a000h mov es,ax push ds push seg color pop ds push offset color pop si mov di,10000 mov cx,11 mov dx,11 @l2: push cx mov cx,dx @l1: movsb {<=> mov es:di, ds:si} loop @l1 add di,309 pop cx loop @l2 pop ds mov ah,0 int 16h mov ax,0003h int 10h end; end.
Почти чистый ассемблер получился ;D Если чего не ясно - могу пояснить... {только не панимаю, зачем указывать точку вывода через прямое число, а не через x,y... вроде понятнее и юзабельнее ???}
--------------------
- Где я? - Во тьме. - В какой тьме? - Во тьме твоего мозга.
Const color : Array [0..10,0..10] Of byte = ((00,00,00,00,00,00,00,00,00,00,00), (00,00,00,00,00,00,00,00,00,00,00), (00,00,16,17,18,19,18,17,16,00,00), (00,00,17,20,23,27,23,20,17,00,00), (00,00,18,23,28,29,28,23,18,00,00), (00,00,19,27,31,15,31,27,19,00,00), (00,00,18,23,28,29,28,23,18,00,00), (00,00,17,20,23,27,23,20,17,00,00), (00,00,16,17,18,19,18,17,16,00,00), (00,00,00,00,00,00,00,00,00,00,00), (00,00,00,00,00,00,00,00,00,00,00));
BEGIN asm mov ax,0013h int 10h mov ax,0a000h mov es,ax push ds ;сохран в стеке ds push seg color ;сохраняем массив adres pop ds ;в ds запихив адрес color push offset color ; сохран аддрес color pop si ;in si addr начальный color mov di,10000 ;???? mov cx,11 ; mov dx,11 ; @l2: push cx ;cx в стек 11 ;10 mov cx,dx ;in cx<dx ; cx=11 @l1: ;?????персылка строки байтов 11 из сolor ds в видео es ;по x смещение что ли movsb {<=> mov es:di, ds:si}
loop @l1 ;cx-1 add di,309 ;1000+309 по y смещен pop cx ;in cx<11 loop @l2 ;cx-1 pop ds ;uerase ds mov ah,0 ;wait int 16h ;key mov ax,0003h ;colse int 10h ;graph end; end.
--------- там где вопросы по подробнее пожалуйста
--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы. МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы. МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/
Вот твой вывод точки в режиме 320*200, а я тебе предлагаю свой, чуть быстрей:
Procedure PixelOut(x,y:Word;c:Byte); label we,exit; Begin y:=y*320; {rachet coordin for Y}
asm xor ax,ax {AX in zero} mov bx,x {in di 1000 smeshenie v video memory} mov cx,y {in CX znachen y } add bx,cx {sum BX and CX} mov al,c {in AL color} cmp bx,63999 {conez video buff} je we {then exit} mov es:[bx],al {in vid memory es:di out ds:si} we: end; end;
неправильно, так как если указан адрес, выходящий за рамки сегмента, то bx=0+то, что за сегментом... а ты сравниваешь РАВЕНСТВО вх и 63999... а надо так:
cmp bx,63999 {conez video buff} ja we {then exit} {jamp above}
;D
--------------------
- Где я? - Во тьме. - В какой тьме? - Во тьме твоего мозга.
:D =-=-= да базара нет все путем =-=-=-= согласен чуть ошибся с флажками с кем не бывает -=-= :-/
--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы. МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/
Люди у меня такая же проблема! WinXP мне позволяет получать инфу о VESA и о режимах через INT10h. Но не более. Win98 даёт мне возможность даже установить какой-либо режим. И всё. При попытке вывода изображения... Насколько я разобрался видеопамять у меня делится в совсем уж загадочном порядке : банк по 64кб, в банке по 64 блока (1кб) в блоке по четыре строки (256б), а вот сколько пикселёв в строке зависит от режима. Причём в режиме, где 24 BPP я вообще ничего не понял.
Может кто-нибудь объяснить что тут к чему, куда это сувать и как с этим бороться???