Подскажите, возможно ли как-то синхронизировать изменение палитры (загрузку массива в DAC-регистры) с обратным ходом луча кинескопа в режиме VESA? Каким образом вообще в VBE делают плавное затенение картинки без мерцания? Заранее спасибо
Все просто. Палитру надо менять только когда лучь завершил ход по экрану и начинает обратное движение по кадру. Нужно дождаться пока 3 бит не будет равным 1 {ожидание вертикально обратного хода луча} Код (Text): procedure WaitVerticalRetrace; begin while (port[$3da] and 8) = 0 do; end; @PP: mov dx,03DAh in al,dx test al,8 jz @PP Если ты работаешь с VESA то лучше отказаться от политры с 256, а перейти к полноцеветным изоброжениям. А затемнения делаеться перерисовкой с плавным изменением значений RGB пикселя.
Паскаль.... Было бы лучше так, и эта процедура задержит в случае если вызвана несколько раз пока стоит бит обратного хода. Код (Text): PROC WaitVSync NEAR push AX push DX mov DX,03DAh ;регистр статуса EGA @@WaitNotVSyncLoop: in AL,DX and AL,08h ;выделяем бит вертикальной синхронизации jnz @@WaitNotVSyncLoop @@WaitVSyncLoop: in AL,DX and AL,08h ;выделяем бит вертикальной синхронизации jz @@WaitVSyncLoop pop DX pop AX ret ENDP WaitVSync