Ищу дамп биоса в/к Ati Rage XL PCI
Добавлено: 05.09.2026,20:08
acorp, я пока вынужден уйти, вот инструкция, что делать дальше (как чинить картинку):
"Изображение на экране размыто, «развалено» на горизонтальные полосы, а текст превратился в штрихкоды, потому что шаг пикселей (Pixel Stride / Pitch) и тактовая частота генератора пикселей (Pixel Clock) в текущем BIOS не совпадают с физической организацией SGRAM-памяти на плате Sun. Видеочип считывает данные из памяти строками одной длины, а RAMDAC выводит их на экран строками другой длины, из-за чего картинка «съезжает» по диагонали.
Для видеокарт архитектуры Mach64 / Rage XL параметры развертки и шага памяти для базовых режимов (включая стандартный VESA VGA 640x480, в котором отрисовываются окна Windows до установки родного драйвера) зашиты в таблице CRT_TABLE.
Давайте вернемся к считанному ранее дампу BIOS.
________________________________________
Анализ параметров развертки в дампе
Посмотрим на третью строку вашего дампа, которую мы получили ранее:
0xae0: 83 00 27 1C 07 0F 1C 04 81 05 83 01 3C 10 14 00
Байты на смещениях 0xAE2 — 0xAEB описывают параметры задержек контроллера ЭЛТ (CRT Controller) для стандартных текстовых и графических режимов BIOS:
• 07 0F — это параметры HTOTAL (Horizontal Total) и H_DISP (Horizontal Displayed). Они задают ширину строки в символах/пикселях для базового режима.
• 1C 04 — параметры вертикальной развертки (VTOTAL / V_DISP).
• 81 05 — маска полярности и управления обратным ходом луча.
Серверный BIOS Advantech настроен на жесткие тайминги KVM-консолей (часто с частотой обновления 70-72 Гц в текстовом режиме и нестандартным шагом строки, чтобы экономить память сервера). Обычный ЖК-монитор Samsung пытается растянуть этот сигнал под свои стандартные 60 Гц, из-за чего шаг памяти ломается.
________________________________________
Как пропатчить BIOS для исправления картинки
Чтобы вернуть картинку в нормальное состояние, нам нужно заменить серверные параметры синхронизации на стандартные ПК-параметры общего назначения (Generic VESA).
Откройте ваш модифицированный файл в HEX-редакторе и попробуйте применить один из следующих патчей:
Вариант №1 (Сброс параметров CRT контроллера в стандарт VGA)
Попробуйте вернуть контроллер дисплея в стандартный режим IBM VGA, изменив тайминги развертки.
• На смещении 0xAE4 замените байт 07 на 00
• На смещении 0xAE5 замените байт 0F на 00
• На смещении 0xAE6 замените байт 1C на 00
• На смещении 0xAE7 замените байт 04 на 00
(Блок 0xAE2 примет вид: 27 1C 00 00 00 00 81 05...). Нулевые значения в этих полях заставляют внутренний BIOS инициализировать регистры контроллера CRTC_H_TOTAL_DISP и CRTC_V_TOTAL_DISP по базовой таблице самого чипа Rage XL, игнорируя серверные предустановки Advantech.
Вариант №2 (Патч ширины шага памяти / Memory Pitch)
Если Вариант №1 не поможет, значит проблема чисто в шаге сдвига строк SGRAM. За это отвечает байт на смещении 0xAEB (у вас это 01). В серверных платах он сдвигает указатель адреса строки.
• На смещении 0xAEB замените байт 01 на 00 или 02.
________________________________________
Порядок действий:
1. Внесите изменения по Варианту №1 в HEX-редакторе.
2. Обязательно пропустите сохраненный файл через наш Python-скрипт пересчета контрольной суммы, так как мы поменяли 4 байта.
3. Прошейте карту и проверьте результат.
Попробуйте сделать изменения по Варианту №1.
Если это выровняет текст и окна, то задача решена. Если картинка останется сдвинутой, но полосы изменят свой угол или ширину, напишите — это поможет понять, в какую сторону (увеличения или уменьшения) нужно скорректировать шаг строки памяти."
Скрипт корректировки контрольной суммы (на Python):
В начале и в конце скрипта в with open вписываете входной и выходной файлы соответственно.
"Изображение на экране размыто, «развалено» на горизонтальные полосы, а текст превратился в штрихкоды, потому что шаг пикселей (Pixel Stride / Pitch) и тактовая частота генератора пикселей (Pixel Clock) в текущем BIOS не совпадают с физической организацией SGRAM-памяти на плате Sun. Видеочип считывает данные из памяти строками одной длины, а RAMDAC выводит их на экран строками другой длины, из-за чего картинка «съезжает» по диагонали.
Для видеокарт архитектуры Mach64 / Rage XL параметры развертки и шага памяти для базовых режимов (включая стандартный VESA VGA 640x480, в котором отрисовываются окна Windows до установки родного драйвера) зашиты в таблице CRT_TABLE.
Давайте вернемся к считанному ранее дампу BIOS.
________________________________________
Посмотрим на третью строку вашего дампа, которую мы получили ранее:
0xae0: 83 00 27 1C 07 0F 1C 04 81 05 83 01 3C 10 14 00
Байты на смещениях 0xAE2 — 0xAEB описывают параметры задержек контроллера ЭЛТ (CRT Controller) для стандартных текстовых и графических режимов BIOS:
• 07 0F — это параметры HTOTAL (Horizontal Total) и H_DISP (Horizontal Displayed). Они задают ширину строки в символах/пикселях для базового режима.
• 1C 04 — параметры вертикальной развертки (VTOTAL / V_DISP).
• 81 05 — маска полярности и управления обратным ходом луча.
Серверный BIOS Advantech настроен на жесткие тайминги KVM-консолей (часто с частотой обновления 70-72 Гц в текстовом режиме и нестандартным шагом строки, чтобы экономить память сервера). Обычный ЖК-монитор Samsung пытается растянуть этот сигнал под свои стандартные 60 Гц, из-за чего шаг памяти ломается.
________________________________________
Чтобы вернуть картинку в нормальное состояние, нам нужно заменить серверные параметры синхронизации на стандартные ПК-параметры общего назначения (Generic VESA).
Откройте ваш модифицированный файл в HEX-редакторе и попробуйте применить один из следующих патчей:
Вариант №1 (Сброс параметров CRT контроллера в стандарт VGA)
Попробуйте вернуть контроллер дисплея в стандартный режим IBM VGA, изменив тайминги развертки.
• На смещении 0xAE4 замените байт 07 на 00
• На смещении 0xAE5 замените байт 0F на 00
• На смещении 0xAE6 замените байт 1C на 00
• На смещении 0xAE7 замените байт 04 на 00
(Блок 0xAE2 примет вид: 27 1C 00 00 00 00 81 05...). Нулевые значения в этих полях заставляют внутренний BIOS инициализировать регистры контроллера CRTC_H_TOTAL_DISP и CRTC_V_TOTAL_DISP по базовой таблице самого чипа Rage XL, игнорируя серверные предустановки Advantech.
Вариант №2 (Патч ширины шага памяти / Memory Pitch)
Если Вариант №1 не поможет, значит проблема чисто в шаге сдвига строк SGRAM. За это отвечает байт на смещении 0xAEB (у вас это 01). В серверных платах он сдвигает указатель адреса строки.
• На смещении 0xAEB замените байт 01 на 00 или 02.
________________________________________
1. Внесите изменения по Варианту №1 в HEX-редакторе.
2. Обязательно пропустите сохраненный файл через наш Python-скрипт пересчета контрольной суммы, так как мы поменяли 4 байта.
3. Прошейте карту и проверьте результат.
Попробуйте сделать изменения по Варианту №1.
Если это выровняет текст и окна, то задача решена. Если картинка останется сдвинутой, но полосы изменят свой угол или ширину, напишите — это поможет понять, в какую сторону (увеличения или уменьшения) нужно скорректировать шаг строки памяти."
Скрипт корректировки контрольной суммы (на Python):
Код: Выделить всё
import sys
with open("rxlpa47.rom", "rb") as f:
data = bytearray(f.read())
size = data[2] * 512 # реальный размер из заголовка
if len(data) < size:
print(f"Ошибка: файл {len(data)} байт, ожидается минимум {size}")
sys.exit(1)
# Обнуляем последний байт
data[size - 1] = 0
# Сумма всех байт кроме последнего
s = sum(data[:size - 1]) & 0xFF
# Корректирующий байт
data[size - 1] = (0x100 - s) & 0xFF
# Проверка
checksum = sum(data[:size]) & 0xFF
if checksum != 0:
print(f"ОШИБКА: checksum = {checksum}, должно быть 0")
sys.exit(1)
print(f"✓ Checksum OK: корректирующий байт = 0x{data[size-1]:02X}")
with open("rxlpa47c.rom", "wb") as f:
f.write(data)