Для включения LFB надо сделать следующее.
Проверить поддерживает ваша видео карта LFB
VBE 3.0 Func_4f01h. А затем при выборе режима присвоить единицу 14 биту (считая от 0).
VBE 3.0 Func_4f02hЕсли не путаю, то LFB появился в VBE 2.0
Поддержку LFB надо проверять для каждого режима.
А по поводу изменения адреса не понятно зачем это нужно?
1) При помощи виртуальной памяти можно отобразить буфер куда надо.
Код:
for i:=0 to (LFBSize+PageSize-1) div PageSize -1 do
begin
PageMap(TAddrVirtual(NewAddr+i*PageSize),TAddrPhisical(LFB+i*PageSize),PageFlags);
end;
PageMap - не привожу так как там много строк кода.
2) Можно изменять размеры фрейма и его положения относительно LFB. Это позволит создать тройной буфер. И прочие спец эффекты.
Func_4F07h.
Пара примеров:
http://www.codenet.ru/progr/video/vesa12ex.phpВот первоисточник: там 3 страницы.
http://www.osp.ru/pcworld/1998/08/159480/3)
Цитата:
(разве что через перепрограммирование видеокарточки, соотв. процедура зависит от производителя и модели)
Не совсем так. Есть такая вещь как PCI MMIO и PCI RAM. Так что подвинуть не сложно. Но таки да есть специфика от железа. Перемещать можно в приделах PCI hole, а вот что-бы подвигать PCI hole надо делать под каждую материнку.
Во вторых двигать PCI MMIO и PCI RAM можно кратно их размерам.
И свободного места мало, так что двигать придётся все устройства.