внес некоторые поправки для новых карт ATI, теперь должно по идее работать нормально. ATI всё-таки сделала небольшой подарок, ну и я еще баг добавил. Программировать железо, к которому нет физического доступа -- все равно что алкоголизм по фотографии лечить. Jupiter roman_pro попробуйте потестить вот эту версию: [newer version below]
пока не могу протестить с новой версией - ноут дома. вечером проверю. прилагаю скрин предыдущей версии (4)
Работает на Radeon X1600 Pro (256mb) (Win XP SP2) Прикрепил скрин. Потом проверю на более новой (Radeon HD2600 XT)
Как и обещал : Работает на Radeon HD2600 XT (256mb) (ОС таже) Если надо, могу сообщить версии дров ATI
_BC_ На X1600 буфер линейный точно, только вот он смещен от начала видеопамяти (моя прежняя прога работает) Кстати посмотри насколько интересно (и ATi и nVidea используют одинаковое смещение видеобуфера 20000h) Разрешение показывает ошибочно ясно почему - нехватает разрядов у регистра CRT, приходится додумывать самостоятельно. Блин дурной пример подал прикрепив картинку
да, разрешение берется неправильно, всё-таки надо делать по уму. А на новых ati это немного по-другому реализовано, там не видать ни display end, ни retrace start/end -- надо рассчитывать разрешение экрана по total, blank start/end, Sync A start/end, Sync B start/end. Как именно, в даташите любезно не сказано. Ща сделаю дампер регистров для ати, по образцам значений можно будет легко понять, как расчитывать разрешения на новых картах, раз уж в прямом виде их там нет в регистрах.
_BC_ Выкладывай протестим, начальная идея хорошая. (Core 2 Duo + 2Гб +GeForce 8800GTS 320МБ XP, 2000, Vista).
пока еще нечего выкладывать, надо сначала добить gf8. Я ща собственно на них и сосредоточился. Новые ати пока на последнюю очередь оставил, уж при наличии даташита (даже столь корявого и неполного) можно будет всё что надо узнать.
_BC_ посмотрел последний твой r0_vid5 Разрешение выдаёт неправильное: 640 на 1424 вместо 1920 на 1200 Но в отличие от предыдущего r0_vid4, рисует две красные линии, не по центру, конечно, т.к. разрешение детектит криво.
да, уже вкурсе. Я ими займусь сразу как допишу поддержку gf8 -- я ее уже разобрал, осталось реализовать добытое от ломания в код. gf8 в плане прямой с ней работы самая хитрая карта... Чего стоит только то, что вся информация по регистрам, добытая из разбора ейных VBE-функций, под загруженной виндой уже становится _абсолютно_ бесполезной. Чтобы она стала полезной, нужно переводить карту в другой режим. С gf8 вообще много нюансов, подробнее напишу как допишу ее поддержку для разных режимов (т.к. даже простейшая работа с картой зависит от того, установлены ли родные драйвера на карту или нет) и соответственно выложу sample, чтобы не пустозвонить. Ну а там на очереди и патченный sywvid.sys, работающий на gf8 в этом "родном", нелинейном режиме. FB я тоже научился "линеаризовывать", но, как и предполагалось, экран после перевода в линейный режим превращается в полное г..но. Зато поверх гордо красуется красный крест. Лучше обучить айс работать с нелинейным FB, чем возится с переключениями, тем более что при трассировке по P может иметь место вывод на экран (который рассчитан на нелинейность) и при восстановлении режима на экране появится мусор.
_BC_ sywvid.sys - лучше брать от старой версии 4.2.6 (размер 119658) остальные весят комп при запуске.
Asterix У меня тоже, только вот sywvid.sys беру со старой версии + только в полноэкранном текстовом режиме.