Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Помогите организовать вывод в видеопамять  (Прочитано 43058 раз)
0 Пользователей и 11 Гостей смотрят эту тему.
dimedrol
Помогающий

ru
Offline Offline

« Ответ #30 : 07-04-2005 10:11 » 

Вот конфиг:
Код:
	Type:      VGA
Bus:       1
Device:    0
Function:  0
Revision:  0

Vendor ID ................   0   1002
Device ID ................   2   4151
Command ..................   4   0007
Status ...................   6   02B0
Revision ID ..............   8   00
Prog. I/F ................   9   00
Sub Class Code ...........   A   00
Class Code ...............   B   03
Cache Line Size ..........   C   08
Latency Timer ............   D   FF
Header Type ..............   E   80
BIST .....................   F   00
Base Address 0 ...........  10   D000 0008
Base Address 1 ...........  14   0000 A001
Base Address 2 ...........  18   F500 0000
Base Address 3 ...........  1C   0000 0000
Base Address 4 ...........  20   0000 0000
Base Address 5 ...........  24   0000 0000
Cardbus CIS Pointer ......  28   0000 0000
Subsystem Vendor ID ......  2C   1043
Subsystem ID .............  2E   C004
Expansion ROM Base Address  30   0000 0000
Reserved .................  34   0000 0058
Reserved .................  38   0000 0000
Interrupt Line ...........  3C   10
Interrupt Pin ............  3D   01
Min_Gnt ..................  3E   08
Max_Lat ..................  3F   00
Device Dependent .........  40   0000 0000
Device Dependent .........  44   0000 0000
Device Dependent .........  48   0000 0000
Device Dependent .........  4C   C004 1043
Device Dependent .........  50   0602 0001
Device Dependent .........  54   0000 0000
Device Dependent .........  58   0030 5002
Device Dependent .........  5C   FF00 021B
Device Dependent .........  60   1F00 4312
Device Dependent .........  64   0000 0000
Device Dependent .........  68   0000 0000
Device Dependent .........  6C   0000 0000
Device Dependent .........  70   0000 0000
Device Dependent .........  74   0000 0000
Device Dependent .........  78   0000 0000
Device Dependent .........  7C   0000 0000
Device Dependent .........  80   0000 0005
Device Dependent .........  84   0000 0000
Device Dependent .........  88   0000 0000
Device Dependent .........  8C   0000 0000
Device Dependent .........  90   0000 0000
Device Dependent .........  94   0000 0000
Device Dependent .........  98   0000 0000
Device Dependent .........  9C   0000 0000
Device Dependent .........  A0   0000 0000
Device Dependent .........  A4   0000 0000
Device Dependent .........  A8   0000 0000
Device Dependent .........  AC   0000 0000
Device Dependent .........  B0   0000 0000
Device Dependent .........  B4   0000 0000
Device Dependent .........  B8   0000 0000
Device Dependent .........  BC   0000 0000
Device Dependent .........  C0   0000 0000
Device Dependent .........  C4   0000 0000
Device Dependent .........  C8   0000 0000
Device Dependent .........  CC   0000 0000
Device Dependent .........  D0   0000 0000
Device Dependent .........  D4   0000 0000
Device Dependent .........  D8   0000 0000
Device Dependent .........  DC   0000 0000
Device Dependent .........  E0   0000 0000
Device Dependent .........  E4   0000 0000
Device Dependent .........  E8   0000 0000
Device Dependent .........  EC   0000 0000
Device Dependent .........  F0   0000 0000
Device Dependent .........  F4   0000 0000
Device Dependent .........  F8   0000 0000
Device Dependent .........  FC   0000 0000
Тогда что такое BaseAddressRegister1 = 0xD0000008 ?
Это базовый адрес + флаги адреса(ntddk.h): BaseAddr = BaseAddressRegister1 & 0xFFFFFFF0 =0xD0000000, Flags = 8 ==PCI_ADDRESS_MEMORY_PREFETCHABLE|PCI_TYPE_32BIT,
Вот правда не знаю что значит, когда Flags =0 (0xDE000000), может диапазон запрещен? Попробуй точно узнать в каком именно ранге буфер лежит.

У меня вот такая же картина 0xD0000008 - 0xDFFFFFFF =256Mb, F5000000-0xF500FFFF =64kb, только порядком отличаются.. Скринбуфер точно в 0xD0000000 диапазоне, что
значит второй ранг адресов пока понятия не имею.
Вот DWORD по смещению 0x50 на что-то был похож (текущий screenoffset 0x20000) но поменяв screenoffset убедился что не то это.
« Последнее редактирование: 07-04-2005 10:16 от dimedrol » Записан

Как говориться, cемь бед - один Reset Улыбаюсь
sss
Специалист

ru
Offline Offline

« Ответ #31 : 08-04-2005 05:14 » 

Что значит "в каком ранге" ?
Записан

while (8==8)
dimedrol
Помогающий

ru
Offline Offline

« Ответ #32 : 08-04-2005 05:33 » 

Ну в смысле в каком диапазоне адресов:
DEFFFFFF - DE000000 или D7FFFFFF - D0000000.
Записан

Как говориться, cемь бед - один Reset Улыбаюсь
sss
Специалист

ru
Offline Offline

« Ответ #33 : 08-04-2005 08:17 » 

Но у меня нет таких готовых функций сканирования. Я навскидку не могу ответить. Давай твой sys и интерактив к нему...
Записан

while (8==8)
dimedrol
Помогающий

ru
Offline Offline

« Ответ #34 : 09-04-2005 06:05 » new

Лови. Работает пока под 32бит видеорежимы.

Был замечена такая фишка: при любой попытке чтения из ранга 0xF5000000-0xF500FFFF получаю висяк... В чем дело не знаю. Будет виснут - поставь размер поиска = 0 на том ранге, где тебе кажется это происходит.

* ss.zip (6.32 Кб - загружено 981 раз.)
« Последнее редактирование: 09-04-2005 11:19 от dimedrol » Записан

Как говориться, cемь бед - один Reset Улыбаюсь
dimedrol
Помогающий

ru
Offline Offline

« Ответ #35 : 09-04-2005 06:38 » 

PS
  Кажется виснет именно на рангах с (Flags=AddressRegisterN & 0xF)==0.
  Будь поаккуратнее со своим DEFFFFFF - DE000000!
Записан

Как говориться, cемь бед - один Reset Улыбаюсь
sss
Специалист

ru
Offline Offline

« Ответ #36 : 11-04-2005 01:10 » 

Код:
// Исходные 
Base address 0: de000000 Size: 1024
Base address 1: d0000008 Size: 1024
Base address 2: 0        Size: 1024
Base address 3: 0        Size: 1024
Base address 4: 0        Size: 1024
Base address 5: 0        Size: 1024

// Click "Find It"

// Окно результата: (?)
d0000000
de0a0000

Если че поменять, скажи...


« Последнее редактирование: 11-04-2005 01:13 от sss » Записан

while (8==8)
sss
Специалист

ru
Offline Offline

« Ответ #37 : 11-04-2005 01:12 » 

P.S: Режим 1024 х 768 х 32
« Последнее редактирование: 11-04-2005 01:14 от sss » Записан

while (8==8)
dimedrol
Помогающий

ru
Offline Offline

« Ответ #38 : 11-04-2005 07:12 » 

Главное что 32бит (DWORD -pixel) режим, остальное не важно.. Насчет того чтоб что-то менять- а зачем? Прога нашла контрольную последовательность пикселов в обоих рангах, значит так оно и есть.
Эта последовательность вроде не мелкая (20pix = 80bit)чтоб возникнуть случайно.. Предположения о соотношении этих участков памяти: 1.Один проецируется на другой (AGP постаралась?) 2. Куски разные но
в одном из них некий промежуточный(задний?) буфер. 3. смесь 1-ого и 2-ого.
Это надо поискать открытые исходники дров к твоей видюхе чтоб понять точно (Geforce2 MX 100/200?)..

Мда.. имхо через PCI конфиг фиг чего пробьешь..

PS
   Я вот тут разбирался почему у меня не читатется ранг 0xF5000000-0xF500ffff. Ты случайно не знаешь на что влияет флаг MEMORY_PREFETCHABLE?
Записан

Как говориться, cемь бед - один Reset Улыбаюсь
dimedrol
Помогающий

ru
Offline Offline

« Ответ #39 : 18-04-2005 13:37 » 

Ну вот и я.. Исходников к видюхе не нашел. Может просто плохо искал конечно.
Щас попробую поразобраться с DirectDraw, подизасмить его библиотеки итд. ИМХО ему должно быть известно где там буфер начинается.
ЗЫ
знать бы только в каких компонентах искать..
Записан

Как говориться, cемь бед - один Reset Улыбаюсь
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines