Posted: Fri Aug 26, 2005 11:56 am
Я тоже эксперементировал с 61 функцией.Она у меня зарисовывала экран(НО НЕ ВЫХОДИЛА ЗА ЕГО ПРЕДЕЛЫ),а потом весело вырубала монитор так,что только перезагрузка и помогала.
А зачем нужно записывать каждый байт отдельно(я про red,green,blue),если можно просто подготовить изображение заранее,а потом перекинуть по 4 байта на пиксель.И еще,при адресации через регистр лучше использовать не регистр esi,а регистр eax(так быстрее).Но всеравно скорость вывода зависит от шины.У меня шина 133 Мгц и в режиме 800*600 сто кадров в секунду - и это еще минимум.А обладателям шины на 90 Мгц и менее вообще прописан режим 640*480,такчто ставте процессоры с шиной на несколько сотен мегагерц.
Чтобы на экране небыло миганий изображения,нужно иметь скорость обновления неменее 100 кадров в секунду(частота экрана равна 98 герцам) и выводить изображение нужно вовремя обратного хода луча кадровой развертки,чтобы пользователь не видел как отрисовывается изображение.А для определения момента обратного хода луча нужно читать из порта 0x3DA.Вот именно это у меня и не работает.
Команда mov edx,0x3DA
in al,dx
не работате - программа сразуже вылетает.43 функция работает только сom портами.
Так чтоже делать ?
Марат,я понимаю что такое рыться в коду menuet.Сам недавно пытался заменить все vesa1.2 режимы
на 256 цветные- когда сделал половину работы понял,что слишком много надо переделывать(отрисовку окон,кнопок)и забросил это дело - запутаться в этом коде можно.Где-то понятно написано,а где-то вообще не разберешься(особенно в 4-х битном режиме).
А зачем нужно записывать каждый байт отдельно(я про red,green,blue),если можно просто подготовить изображение заранее,а потом перекинуть по 4 байта на пиксель.И еще,при адресации через регистр лучше использовать не регистр esi,а регистр eax(так быстрее).Но всеравно скорость вывода зависит от шины.У меня шина 133 Мгц и в режиме 800*600 сто кадров в секунду - и это еще минимум.А обладателям шины на 90 Мгц и менее вообще прописан режим 640*480,такчто ставте процессоры с шиной на несколько сотен мегагерц.
Чтобы на экране небыло миганий изображения,нужно иметь скорость обновления неменее 100 кадров в секунду(частота экрана равна 98 герцам) и выводить изображение нужно вовремя обратного хода луча кадровой развертки,чтобы пользователь не видел как отрисовывается изображение.А для определения момента обратного хода луча нужно читать из порта 0x3DA.Вот именно это у меня и не работает.
Команда mov edx,0x3DA
in al,dx
не работате - программа сразуже вылетает.43 функция работает только сom портами.
Так чтоже делать ?
Марат,я понимаю что такое рыться в коду menuet.Сам недавно пытался заменить все vesa1.2 режимы
на 256 цветные- когда сделал половину работы понял,что слишком много надо переделывать(отрисовку окон,кнопок)и забросил это дело - запутаться в этом коде можно.Где-то понятно написано,а где-то вообще не разберешься(особенно в 4-х битном режиме).