1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

24/32 бита - способы определения

Тема в разделе "Hard & Soft", создана пользователем Kristobal Hozevich Hunta, 9 фев 2010.

  1. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.380
    Перебором от 0 до 255 (диапазон можно сократить) запрашиваем информацию о каждом режиме и отбираем нужный по выдаваемым параметрам.

    Надеяться на таблицу номеров не стоит.
     
  2. TAPAKAH

    TAPAKAH

    Регистрация:
    24 июн 2005
    Сообщения:
    232
    Да, я так тогда и сделал в VesaTest.
    Только я помоему делал диапазон 100h-0FFFFh.
    Можно сделать и 100h-200h.

    Правда некоторые режимы там совпадают, и совпадающие надо исключать. Хотя возможно что два 640x480x32 чем то и отличаются друг от друга, например рефрешом.
     
  3. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Какой перебор, о чём вы? Функция 00h в числе прочего выдаёт и ссылку на список доступных режимов — VideoModePtr:
     
  4. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.380
    Вроде бы некоторые из выданных по 4F00h могут значиться как недоступные по 4F01h. Что-то с реализацией разных версий/моделей карт.

    TAPAKAH

    1) листинг не сохранился?
    2) были режимы с BitsPerPixel, равным 32?

    MisterGrim, я вот чего думаю. Если в той же qemu (или на реальном циррозе) 32bpp надо устанавливать через спецрегистр, то описываемый мною алгоритм работать все равно не будет, поскольку при простом переборе режимов BitsPerPixel не будет равен 32 никогда.
     
    Последнее редактирование: 11 фев 2010
  5. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    "potentially supported" — это, скорее всего, имеется в виду связка карта-монитор. С такой ситуацией, чтобы нельзя было включить имеющийся режим, ни разу не сталкивался.
     
  6. TAPAKAH

    TAPAKAH

    Регистрация:
    24 июн 2005
    Сообщения:
    232
    Нет, листинг к сожелению не сохранился.
    А ты попробуй и сам запусти VesaTest- увидишь, есть 32 БПП или нет.
    Я же запускал её на многих компьютерах. Показывала в 8,15,16, 24 и 32бит режимах.

    У меня ещё остался вот этот скрин-сейвер, который я писал для Дос-Навигатора. Тормозит дико из под ДосБокса. 320х240х32. Но если запускать просто, без эмуляции, то терпимо.

    А Вообще, он тормозит из за вызова Int 10h - это самая "тяжёлая" команда. Чем меньше вызовов int 10h - тем быстрее. Int 10h - это 98% времени.
     

    Вложения:

    • GRAPHICS.rar
      Размер файла:
      2,7 КБ
      Просмотров:
      41
    Kristobal Hozevich Hunta нравится это.
  7. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.380
    MisterGrim, возможно. Но перебор, имхо, и реализовать проще, и результат надежнее. Нужные режимы пишем в .cfg и далее уже просто читаем из него.

    Да не, не о том речь. В моем эмуле для режима 32bpp нужны манипуляции с регистром видеокарты. Поэтому я в нем не могу удостовериться, что при установке программой режимов 32bpp через INT 10h параметр BitsPerPixel для них принимает значение "32" (а не "24" например).
     
  8. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.380
    Повторил подвиг TAPAKAHа.

    Сделано на FASMе под ms-dos. Использует функции VBE для перебора видеорежимов (от 0 до 9999). Создает в корне диска текстовый файл (c:\vbe_read.txt), содержащий перечень поддерживаемых видеокартой режимов в формате:

    - номер видеорежима (в десятичном формате)
    - разрешение
    - глубина цвета (бит на точку).

    Например: 277 800х600х24.

    Тестировал под qemu. Есть странности, в частности, не определяет текстовые режимы. Почему - хз.

    Кому не сложно, погоняйте на реальном железе, пожалуйста.

    З.Ы. Для файловых операций используется сервис ms-dos (int 21h), поэтому ничего испортиться не должно.

    З.З.Ы. Должно работать под Виндовс в сеансе MS-DOS.
     

    Вложения:

    • vbe_read.com.zip
      Размер файла:
      598 байт
      Просмотров:
      41
  9. John Freeman

    John Freeman

    Регистрация:
    13 май 2004
    Сообщения:
    14.241
    VESA VBE режимы не подразумевают текстовые режимы...
     
    Kristobal Hozevich Hunta нравится это.
  10. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Всё равно не понимаю, зачем перебором.
     
  11. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.380
    MisterGrim, минимализм :)

    Код:
    mov [videomode],0
    <...>
    inc [videomode]
    loop
    
    Ну и обработчик ошибки, возникающей в случае "левого" режима, делает инкремент и переходит в начало цикла.

    Хмм, верно. Не подумал. Спасибо.
    Но та же аллегра, которую приводил MisterGrim, их видит и классифицирует. Видимо, стандартные текстовые - это BIOS. Ок, пойду искать книжку Нортона за 1991 год :)

    ---------- Сообщение добавлено в 13:41 ---------- Предыдущее сообщение размещено в 13:13 ----------

    З.Ы. Хотел бы посмотреть как устроена та часть int 10h, которая отвечает за set/get logical scan line. Нет идей?
     
  12. TAPAKAH

    TAPAKAH

    Регистрация:
    24 июн 2005
    Сообщения:
    232
    Уже всё давно гонял, и сейчас специально проверил ещё раз:
    DosBox, Geforce : 112h это 640480x32
    Intel i815(встроенное): 112h это 640x480x24
    Ещё раз подтвержая что после 100h режимы разные для видеокарт.
    А текстовые режимы не определят потому, что это режимы менее 100h. Стандартный режим ДОС - это текстовый режим 3h.

    Кстати, на ДосБокс 0.72 и 0.73 разные поддерживаемые режимы.
    Так, в ДосБокс 0.73 добавилсиь:
    848x480x8 VESA mode: 546 = 0222h
    848x480x15 VESA mode: 547 = 0223h
    848x480x16 VESA mode: 548 = 0224h
    848x480x32 VESA mode: 549 = 0225h
     
    Последнее редактирование: 25 фев 2010
    Kristobal Hozevich Hunta нравится это.
  13. John Freeman

    John Freeman

    Регистрация:
    13 май 2004
    Сообщения:
    14.241
    Так это специально для убогих UMPC/Netbook отсебятина досбокса. Никогда не было таких в VESA на практике, 848 были, но не 480.
     
  14. TAPAKAH

    TAPAKAH

    Регистрация:
    24 июн 2005
    Сообщения:
    232
    1. Не обратил внимания, что ты написал программу, перебирая режимы с 0-9999.
    Функция VESA(4F03h помоему ?) возвращает в область памяти структуру с информацией о видеорежиме. И в этой структуре есть специальный бит - IsTextMode. Надо искать точное описание возвращаемой структуры.

    2. Я писал программу на Turbo Pascal. И там, как я позднее узнал, исследовав программы в TD, есть одно НО. Pascal не работает с 32 битными числами. Хотя там и есть тип переменной Longint(4 байта).
    Например:
    запись вида MyVar:=$FFFFAAAA на Паскале должна выглядеть в td примерно так:
    Mov [MyVar], 0FFFFAAAA
    Однако, реально получается такой код:
    Mov [MyVar], 0FFFF
    Mov [MyVar+2],0AAAA

    Это я всё к тому, что если видео-режим и 32 битный, то в нём легче конечно записывать длинными словами. Однако, реально всё-равно будет сделано 2 команды.
    Думаю, это будет справедливо и для других языков.
     
    Последнее редактирование: 25 фев 2010
  15. John Freeman

    John Freeman

    Регистрация:
    13 май 2004
    Сообщения:
    14.241
    TAPAKAH, на любом паскалеподобном всегда лучше такие вещи делать явно в asm...end; , и не только там.
     
  16. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.380
    Камрады, ну погоняйте на живом железе. Листинг сюда.
    А то есть подозрение что это куэма мутит. В VBE вроде оговорка, что разрешение может быть как в пикселах, так и в знакоместах.

    Если на живой карте выдает режимы 40х25 и пр., то это текстовые и есть.


    З.Ы. я, правда, когда-то клепал загрузочный сиди с дос под memtest, но уже всё забыл.

    Ограничил преобразование bin->dec 4-значным числом. По-хорошему надо было весь 16-битный диапазон (0-FFFF).

    ---------- Сообщение добавлено в 17:04 ---------- Предыдущее сообщение размещено в 16:51 ----------

    ну, досовый debug тебе еще и не такое покажет :)
     
    Последнее редактирование: 25 фев 2010
  17. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Ну если это минимализм...
     
  18. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.380
    MisterGrim, ну в смысле - лень :)
     
  19. reg2s Олдгеймер

    reg2s

    Legacy

    Регистрация:
    19 дек 2008
    Сообщения:
    437
    Погонял на первом профильном.
     

    Вложения:

    • log.zip
      Размер файла:
      12,6 КБ
      Просмотров:
      42
    Kristobal Hozevich Hunta и kreol нравится это.
  20. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.380
    Код:
    mod resol bpp     
    
    0 40x25x4         
    
    1 40x25x4         
    
    2 80x25x4         
    
    3 80x25x4         
    
    4 320x200x2       
    
    5 320x200x2       
    
    6 640x200x1       
    
    7 80x25x0         
    
    13 320x200x4      
    
    14 640x200x4      
    
    15 640x350x1      
    
    16 640x350x4      
    
    17 640x480x1      
    
    18 640x480x4      
    
    19 320x200x8      
    
    32 320x200x32     
    
    33 640x480x32     
    
    34 800x600x32     
    
    48 320x200x8      
    
    49 320x400x8      
    
    50 320x400x16     
    
    51 320x400x32     
    
    52 320x240x8      
    
    53 320x240x16     
    
    54 320x240x32     
    
    61 640x400x16     
    
    62 640x400x32     
    
    63 1024x768x32    
    
    68 1280x1024x16   
    
    69 1600x1200x8    
    
    70 1600x1200x16   
    
    ...
    
    9988 1024x768x4   
    
    9989 1024x768x8   
    
    9990 1280x1024x4  
    
    9991 1280x1024x8  
    
    9992 80x60x4      
    
    9993 132x25x4     
    
    9994 132x43x4     
    
    9995 132x50x4     
    
    9996 132x60x4     
    
    9998 320x200x16 
    
    Эээ... Странный результат.

    Текстовые режимы с 4bpp (16 цветов) вижу. Это хорошо.
    Графических с 15bpp не вижу, что вроде бы и характерно для nvidia.
    Но вот дублирование режимов на всём диапазоне 0-9999 (а наверное и далее) - это весьма странно.
    И с нулевым bpp - это монохромный что ли?
     
    Последнее редактирование: 27 фев 2010
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление