понедельник, 16 февраля 2015 г.

Подключение видеокарты к Амиге

На примере S3 Trio 64 подключенной через Mediator PCI 1200


Наверное, каждый пользователь классической Амиги знает что можно купить одну из плат PCI-моста от компании Elbox и получить от четырёх до шести PCI-слотов, в которые можно подключать морально устаревшие, но годные для Амиги PCI-карты от PC. Только с драйверами для PCI-мостов на Амигах негусто. По сути есть только 3 официально поддержанных семейства видеокарт: ATI Radeon 9200/9250, 3dfx Voodoo 2000-5500 и S3 Virge.

Также существуют неофициальные драйвера написанные нашим соотечественником Николаем Мезенцевым для S3 Trio64 и S3 Virge. Где-то заблудился драйвер для BVision Permedia 2. Все имеющиеся драйвера написаны для графической подсистемы Picasso96 (далее, P96). Существующие в альфа-версиях драйвера S3 Virge для графической подсистемы CyberGraphX (далее, CGX) были предметом судебных разбирательств с их автором продавшим написанные драйвера сразу нескольким вендорам. В связи с этим они выпилены со всех официальных сайтов, а по факту являются весьма глючными и не рекомендуемыми к использованию.

Это была необходимая вводная. По драйверам можно сказать, что драйвера для Radeon работают "из коробки" легко, непринуждённо и без проблем. Драйвера для 3dfx Voodoo требуют "танца с бубном", но в конечном итоге работают и существует множество инструкций о том как их завести. Драйвера же S3 Virge (и тем более, S3 Trio64) не работают ни у кого и никогда. Вот этот факт, а также 2 дня приключений с этими драйверами заставили меня написать эту инструкцию. По ходу написания, буду заострять внимание на особенностях Mediator PCI мешающих счастливой эксплуатации

Что надо знать о S3 Trio 64


Когда-то видеокарты S3 Trio 64 были сверхпопулярны и стояли в каждом третьем PC. Сегодня это самые доступные в комиссионках и на антресолях видеокарты стоимость которых как правило не превышает 200 руб. Видеокарта достаточно убога, но неприхотлива в случае использования под MS Windows. На видеокартах S3 можно увидеть 2-4 микросхемы DRAM-памяти HM514265CJ6, что говорит об 1 Мб или 2 Мб "на борту" соответственно. Дополнительные микросхемы ставятся в панельки. В зависимости от объёма памяти различается и доступное число видеорежимов. Но более 4 видеорежимов она не поддерживает даже под MS Windows, поэтому все видеорежимы которые можно увидеть в Picasso96Mode на Амиге сверх этого - от лукавого. Поддерживаются: 640x480 (VGA), 800x600 (SVGA), 1024x768 (XGA) и 1280x1024 (SXGA). Core Clock видеокарты всего 50 МГц. Поэтому, опять же, если Вы видите/создали в Picasso96Mode видеорежим с Clock 52 МГц и выше - забудьте, это не работает. На самом деле она и 45 МГц тянет с трудом.

Осматриваем Mediator PCI


Теперь, когда мы знаем сколько памяти "на борту" нашей S3 Trio64, нам необходимо убедиться в ещё нескольких особенностях Mediator PCI. Во-первых, если Вы хотите использовать Mediator PCI совместно с акселератором, убедитесь что установлена перемычка CONFIG. Без этого мы акселератор вообще (скорее всего) не увидим. Во-вторых, убедитесь что перемычка окна памяти PCI-моста установлена в 8 Mb. Вряд ли у Вас меньше FastRAM, эта установка подходит для большинства акселераторов. В-третих, желательно чтобы не только Mediator PCI был запитан через штатные разъём(-ы) (Амига может питаться от него), но и сама Амига питалась от того же блока питания параллельно. Я этот вопрос решил припайкой мамы Molex к разъёму питания Амиги изнутри и выводом папы Molex на длинных проводах с БП, с соответствующими напряжениями (+5V, +12V, -12V и GND). Shield - не нужен.


В-четвёртых, смотрим на Mediator PCI и видим что слоты подписаны как PCI1, PCI2, PCI3 и PCI4. Существует рекомендация от зарубежных пользователей по расположению PCI-карт в этих слотах:

  • PCI1 - сетевая карта
  • PCI2 - звуковая карта
  • PCI3 - TV-тюнер
  • PCI4 - видеокарта

Как бы глупо это не выглядело - установите S3 Trio64 в слот PCI4.

Убеждаемся что наша S3 Trio64 поддерживается


Chipset Videocard [Vendor ID, Device ID]
86C732 Trio 32 [5333, 8810]
86C764/765 Trio 64/64V+ [5333, 8811]
86C764 Trio 32/64 [5333, 8813]
86C767 Trio 64UV+ [5333, 8814]
86C775 Trio64V2/DX [5333, 8900]
86C617 Trio 64V2 DX/GX [5333, 8901]
86C765 Trio64V+ [5333, 8905]
86C765 Trio64V+ [5333, 8906]
86C765 Trio64V+ compatible [5333, 8907]
86C765 Trio64V+ [5333, 8909]
86C765 Trio64V+ compatible [5333, 890A]
86C765 Trio64V+ compatible [5333, 890B]
86C765 Trio64V+ compatible [5333, 890C]
86C765 Trio64V+ compatible [5333, 890D]
86C765 Trio64V+ compatible [5333, 890E]
86C765 Trio64V+ compatible [5333, 890F]

Для просмотра карт установленных в Mediator PCI нам нужен надёжный пакет OpenPCI версии 0.8 от Mr.B.Titan. Он поддерживает все PCI-мосты для классических Амиг: Mediator, Prometheus и G-Rex. Скачайте его у меня (отовсюду выпилен) и положите openpci.library в LIBS:, а PciBusInfo (без иконки) в C:. Теперь при включении Амиги зайдите по двум кнопкам в Amiga Early Startup Control и нажмите кнопку "Boot With No Startup-Sequence". Нам нужен чистый эксперимент. Наберите в консоли pcibusinfo и сравните вывод по [Vendor ID, Device ID] с таблицей выше. Например:
PCIBusInfo Pre v1.0 17/06/2001 by Titan

Bus Mediator A1200 detected
Memory Window: 8 MBytes
Pci Device 1:
Vendor:S3 Incorporated Device:86C764/765 Trio 64/64V+ GUI Accelerator
VendorID:5333 DeviceID:8811 IRQNumber:4

IOAddr0: 0x00ED6000 - 0x00ED6001 MemSize: 2 bytes 0 kbytes
IOAddr1: 0x00ED6400 - 0x00ED6401 MemSize: 2 bytes 0 kbytes
IOAddr2: 0x00ED6800 - 0x00ED6801 MemSize: 2 bytes 0 kbytes
IOAddr3: 0x00ED6C00 - 0x00ED6C01 MemSize: 2 bytes 0 kbytes
IOAddr4: 0x00ED7000 - 0x00ED7001 MemSize: 2 bytes 0 kbytes
IOAddr5: 0x00ED7400 - 0x00ED7401 MemSize: 2 bytes 0 kbytes
Как мы видим, моя видеокарта Eagle s76x определяется как S3 Trio 64/64V+ и является поддержанной драйвером. На самом деле это в чистом виде S3 Trio64 1Mb.


Подготовка операционной системы


Мы не случайно загружались без S:Startup-Sequence. Дело в том, что в типичной AmigaOS 3.x обычно эксплуатируется множество патчей и программ которые: а) будут мешать работе и b) с появлением видеокарты теряют смысл. Например, если у Вас акселератор Blizzard, наверняка первой строчкой в S:Startup-Sequence стоит C:Blizkick ... Пришло время закомментировать эту строку. С запущенным Blizkick и видеокартами семейства S3 наша Амига стабильно будет уходить в перезагрузку при любом обращении к PCI-картам и даже просто при запуске C:PciBusInfo (или его аналога C:ScanPCI). То же самое касается разнообразных оптимизаторов/ускорителей блиттера, патчей графических библиотек и т.п. FBlit и FText превращают работу систему в коматоз. FScreen просто испортит экран и Вы будете думать на драйвер/видеокарту. Всё это мешает нормально работать и Mediator PCI и графической подсистеме P96 и всё это надо сейчас закомментировать и удалить из SYS:WBStartup. Из всех "ускорителей" с P96 нормально себя ведёт только BlazeWCP, но прирост в скорости незначителен.

Когда закончите с расчисткой системы, Вам понадобится графическая подсистема P96. Оригинальная проприетарная разработка почила в бозе на версии 2.0, но существует неофициальная версия которую я рекомендую скачать и установить. Сайт неофициальной P96 RTG находится здесь. Только замечу, что если у Вас установлена AmigaOS 3.5/3.9, то устанавливать P96 лучше вручную и не заменять следующие файлы на их более старые аналоги из архива P96 2.1e :
  • C:Reboot
  • SYS:Classes/Datatypes/picture.datatype
  • LIBS:gtlayout.library
  • LIBS:identify.library
Рекомендация авторов P96 менять C:IPrefs на C:FastIPrefs (с аминета) также устарела. Ничего кроме медленной работы и глюков WBPattern в AmigaOS 3.5/3.9 Вы не получите. Хотя заголовок экрана появляющийся при наведении курсора в верхнюю часть экрана и выглядит забавно.

Теперь нам необходимо скачать и установить все файлы из последнего обновления MM CD UP2.5 (10 Jan 2015) от Elbox. В составе пакета есть чудесная утилита MEDConfig которая позволит Вам протестировать версионность файлов в подготовленной системе и создаст отчёт.

Установка и проверка драйвера


Так получилось что наибольшее распространение получила версия драйвера 0.3 которая, (как и указано в сопроводительном файле Trio64.readme) является экспериментальной и работать должна только теоретически. Она выдаёт на экран чудесный графический хаос из разноцветных квадратиков и полосок, входит во все архивы и сопроводительные диски Mediator MM CD первых версий. Николай Мезенцев писал свой драйвер на основе S3triofb.c и S3Trio64.chip от Michael Teske, автора драйвера известной амижной видеокарты CyberVision 64 как раз и представляющей из себя римейк S3 Trio64 для Амиги. Работающей же является последняя версия 0.6 затерявшаяся на сайте Elbox. Давайте её скачаем.

Файл DEVS:Picasso96Settings.trio копируем поверх DEVS:Picasso96Settings. Этот файл содержит предустановленные видеорежимы для видеокарты. Теперь мы можем подключать монитор к видеокарте, запускать Picasso96Mode и проверять видеорежимы кнопкой "Test". Обращаю внимание что без подключения монитора к видеокарте кнопка "Test" будет недоступна. Перебрав все видеорежимы я очень быстро пришёл к следующему результату:

Видеорежимы 320x240, 640x480, 800x600, 1024x768 @256 colors дают "чудесную" инверсивную картинку и абсолютно непригодны:


Видеорежимы 320x240, 640x480 @15/16 bit (HiColor) и 640x480 @32 bit дают нормальное изображение и этим можно было бы пользоваться, если бы не курсор в виде мерцающего прямоугольника (его левым верхним углом можно тыкать иконки):


Видеорежим 800x600 @15/16 bit (HiColor) демонстрирует артефакты в виде хаотично разбросанных точек:


Остальные видеорежимы просто недоступны на 1 Мб памяти. Рекомендую сразу пройтись по всем недоступным и "якобы доступным" видеорежимам, перевести их в состояние "inactive" и нажать кнопку "Save". Тоже самое надо сделать и с режимами "256 colors", потому что пока мне неизвестен способ избавиться от их "радуги". Таким образом, мы избавим себя от путаницы в PREFS:ScreenMode оставив только работающие (пока неполноценно) видеорежимы.

Настройка драйвера и P96


Во-первых, нас интересуют переменные драйвера:
  • PREFS:ENV-Archive/Mediator/Trio64Int - оставить No, как по умолчанию
  • PREFS:ENV-Archive/Mediator/Trio64Mem - указать доступную память, 1 для 1 Мб или 2 для 2Мб
Во-вторых, если у нашего процессора есть MMU, пусть P96 этим пользуется:
  • PREFS:ENV-Archive/Picasso96/DoNotUseMMU - No
В-третьих, P96 замечательно управляется через Tooltypes в иконке монитора. Поэтому мы идём в DEVS:Monitors/Trio64.info и устанавливаем следующие Tooltypes:
  • SettingsFile=SYS:Devs/Picasso96Settings.trio меняем на SettingsFile=SYS:Devs/Picasso96Settings
  • SoftSprite=NO меняем на SoftSprite=YES
  • IgnoreMask=Yes меняем на IgnoreMask=No
  • NoBlitter=Yes меняем на NoBlitter=No
  • NoPlanar2ChunkyBlits=Yes меняем на NoPlanar2ChunkyBlits=No

После этого мы получаем 3 нормально работающих видеорежима: 320x240, 640x480 @15/16 bit (HiColor) и 640x480 @32 bit, с нормальным курсором (SoftSprite=YES) и без дрожи (NoBlitter=No). По идее, NoPlanar2ChunkyBlits=No должно было убрать "радугу" на 256-ти цветных видеорежимах, но этого не произошло. IgnoreMask=No замедляет отрисовку, но делает её более честной. Более подробно в P96 F.A.Q.

У нас остался один "вкусный" видеорежим 800x600 @15/16 bit (HiColor) забитый артефактами. Здесь мы вспоминаем о Core Clock и уменьшаем Clock с 52,98 MHz до более вменяемых, например, 42,98 MHz верифицируя картинку кнопкой "Test". При этом экран будет уезжать вправо и нам придётся подобрать значения Modeline в Picasso96Mode и/или компенсировать положение кадра экрана настройками самого монитора.

Заключение


Мы добились приемлимых для работы видеорежимов (относительно AGA) на более чем бюджетной видеокарте. Попутно разобрались как настраивается Picasso 96. Недостаток видеорежимов компенсируется либо добавлением памяти, либо покупкой более современной видеокарты (некоторые модели ATI Radeon 9200/9250 позволяют выполнять подключение по HDMI). Надеюсь что информация изложенная в этой инструкции поможет как в установках видеокарт семейства S3, так и в других случаях. В заключение, 2 снимка экрана: рабочий стол с нормальным курсором и результаты штатного теста P96Speed 1.2 (забавный момент - тест работает на "отсутствующей" видеокарте).


UPD 30.03.15

Попало в руки ещё 2 видеокарты S3. Теперь могу смело утверждать что баг с инверсивными цветами в 8-битных видеорежимах не зависит от видеокарты и является багом драйвера S3Trio64.card 0.6 от Nicolaus Mezentcev. Этого бага нет в драйвере virge.card 2.0 того же автора. Ниже все протестированные карты S3, все попавшие в руки заработали.

VendorIDProductIDPCIBusInfo Pre
v1.0 17/06/2001
ScanPCI 0.9
(19.12.2001)
0x5333 0x8811 86C764/765 Trio 64/64V+ GUI Accelerator 8622mcq04 Trio 64/64V
0x5333 0x8901 86C775/86C785 Trio 64V2 DX/GX pci\ven_5333
dev_8C2E&
SUBSYS_000179&
REV_05\4&
74C6 S3 trio64uv+ for windows 7
0x5333 0x8A01 82C375/82C385 ViRGE /DX & /GX 86C375/86C385 ViRGE /DX & /GX

3 комментария:

  1. Вообще-то память HM514265CJ6 - не SDR, а DRAM. Две принципиальных разницы.

    ОтветитьУдалить
  2. Смотрел даташиты на эту память, но они были стрёмные и со стрёмного сайта. Значит что-то не то смотрел. Исправлено.

    ОтветитьУдалить
  3. Однако, как раз с драйверами voodoo проблем никаких (у меня по крайней мере, не было), а вот с радеонами, как раз, народ из интернетов трахается...

    ОтветитьУдалить