Русификация видео-BIOS, для GF6xxx и выше

Обсуждение проблем видеокарт, драйверов и всего, что с ними связано.

Модераторы: max-sever, iStalker, andser

MERCURY
Новичок
Сообщения: 68
Зарегистрирован: 18.05.2009 10:34
Откуда: 100 кило от Казани
Контактная информация:

Сообщение MERCURY » 17.07.2009 14:28

BolenB
А что вам мешает взять любую готовую прошивку и раздуть ее до 68-72 Кб любыми данными, даже не используемыми? Я то не смог, у меня флеш не позволил, а вам это проверить - раз плюнуть :)...

BolenB
Новичок
Сообщения: 40
Зарегистрирован: 18.05.2009 17:30
Откуда: Россия
Контактная информация:

Сообщение BolenB » 17.07.2009 14:47

Сравнил bios-ы GF6800U и GF8800 GT. Процедуры распаковки за 5 лет не изменились. Структура та-же один в один. Разница только в том что, в 6800 распаковывается в знакогенератор, а в 8800 в сразу в память.
Выкладываю asm листинги для сравнения, может кто расковыряет формат:
http://rapidshare.com/files/256785762/asm_list.rar.html

Improver
Новичок
Сообщения: 17
Зарегистрирован: 16.07.2009 15:57
Откуда: Волгоград
Контактная информация:

Сообщение Improver » 17.07.2009 14:50

MERCURY писал(а):После ЛЮБОГО исправления НУЖНО пересчитывать контрольную сумму...
Безусловно, это было сделано. :)

Я заметил ещё такую вещь: распаковщик в русифицированном БИОСе от BFG 6800 Ultra начинается с таких команд:

Код: Выделить всё

0000F61A: 0E                           push        cs
0000F61B: 1F                           pop         ds
, но в файле "funp.bin" их нет (и в статье они не упоминаются тоже).

Я изначально скопировал и их в свой БИОС, вместе со всей допиской из приложенного к статье БИОСа. Попробовал удалить эти команды, но результат опять не отличается от двух предыдущих опытов. :(

P.S. Контрольную сумму БИОСа каждый раз исправлять не забывал.

BolenB
Новичок
Сообщения: 40
Зарегистрирован: 18.05.2009 17:30
Откуда: Россия
Контактная информация:

Сообщение BolenB » 17.07.2009 14:55

MERCURY писал(а):BolenB
А что вам мешает взять любую готовую прошивку и раздуть ее до 68-72 Кб любыми данными, даже не используемыми? Я то не смог, у меня флеш не позволил, а вам это проверить - раз плюнуть :)...
А вы можете модифицировать GRB.EXE, чтоб она скидывала дамп памяти размером 128 килобайт?

BolenB
Новичок
Сообщения: 40
Зарегистрирован: 18.05.2009 17:30
Откуда: Россия
Контактная информация:

Сообщение BolenB » 17.07.2009 15:30

Improver писал(а):Я заметил ещё такую вещь: распаковщик в русифицированном БИОСе от BFG 6800 Ultra начинается с таких команд:

Код: Выделить всё

0000F61A: 0E                           push        cs
0000F61B: 1F                           pop         ds
, но в файле "funp.bin" их нет (и в статье они не упоминаются тоже).

Я изначально скопировал и их в свой БИОС, вместе со всей допиской из приложенного к статье БИОСа. Попробовал удалить эти команды, но результат опять не отличается от двух предыдущих опытов. :(
Ну это как бы перестраховка. По идее cs=ds=es, для работы со строковыми командами lodsb и stosb. По умолчанию так и есть, и эти команды не нужны.

Попробуйте передвинуть ваш код с F7A0 на F800, то есть в конец bios-а. В конце bios лежат структуры (частота чипа, памяти, температурные датчики) и их лучше не трогать. Не факт, что с F7A0 по F7FF не лежит чего-нибудь нужного.

BolenB
Новичок
Сообщения: 40
Зарегистрирован: 18.05.2009 17:30
Откуда: Россия
Контактная информация:

Сообщение BolenB » 17.07.2009 15:38

После правки bios полезно открыть Nibitor-ом посмотреть не изменилось ли чего, если изменилось значит что-то сделали не так.
Если комп может грузится с дискеты после неудачной прошивки bios, скинте дамп памяти с помощью GRB.EXE (прописать в autoexec.bat).

Improver
Новичок
Сообщения: 17
Зарегистрирован: 16.07.2009 15:57
Откуда: Волгоград
Контактная информация:

Сообщение Improver » 17.07.2009 16:38

BolenB писал(а):Попробуйте передвинуть ваш код с F7A0 на F800, то есть в конец bios-а. В конце bios лежат структуры (частота чипа, памяти, температурные датчики) и их лучше не трогать. Не факт, что с F7A0 по F7FF не лежит чего-нибудь нужного.
Вот это уже значительно лучше! :) Машина уже, по крайней мере, теперь загружается, только вместо символов мусор. Вот последняя версия: http://rapidshare.com/files/256818467/GF6600R2.RAR

Дамп памяти снимать не стал, в слепую это требует предварительной подготовки, если нужен -- сделаю в понедельник.

Удачи!

Improver
Новичок
Сообщения: 17
Зарегистрирован: 16.07.2009 15:57
Откуда: Волгоград
Контактная информация:

Сообщение Improver » 17.07.2009 19:00

Испытал русифицированную версию БИОСа для GF7600 GT, всё работает замечательно. :) В отличие от GT6600, русификация этого БИОСа выполнена аналогично БИОСу ASUS N7600GS, т.е. произведена полная замена шрифтов и подпрограммы распаковки. Если кому надо, вот файлы: http://rapidshare.com/files/256857423/gf7600ru.rar

Содержимое архива:
GF7600.ROM -- исходный БИОС
GF7600R.ROM -- русифицированный мной БИОС
GRB.BIN -- сграбленный из памяти БИОС

Ещё раз спасибо авторам статьи. :) :) :)

Кстати, те символы, которые подменяются после распаковки (С, Ы, Э, Ю, л, м...) я пропатчил третьим способом -- исправил коды их начертания на русские в соответствии с загружаемым шрифтом, в том месте БИОСа, где они хранятся в несжатом виде. Этот метод, imho, лучше тем, что не изменяет алгоритмов работы БИОСа.

Теперь осталось только разобраться с глюками на 6600...

MERCURY
Новичок
Сообщения: 68
Зарегистрирован: 18.05.2009 10:34
Откуда: 100 кило от Казани
Контактная информация:

Сообщение MERCURY » 17.07.2009 20:37

BolenB
А вы можете модифицировать GRB.EXE, чтоб она скидывала дамп памяти размером 128 килобайт?
Это теоретически уже сделано изначально, я же не дурак, чтоб не обращать внимения на байт 0002h? Сколько там есть, столько и прочитается :)... Вот вам это легче всего проверить! Я не смог, т.к. не хватило флеша. Раздуйте прошивку до 68-72 кб и посмотрите, будет ли работать... Необязательно реально использовать эти данные в хвосте, но можно проверить, загружается ли такой БИОС вообще? Лично я уверен, что приципиальных ограничений два: 1) реальный объем свободной теневой памяти (определяется конфигурацией железа на момент запуска видеокарты); 2) 128 Кб - лимит заголовка БИОС.

MERCURY
Новичок
Сообщения: 68
Зарегистрирован: 18.05.2009 10:34
Откуда: 100 кило от Казани
Контактная информация:

Сообщение MERCURY » 17.07.2009 20:49

Improver
распаковщик в русифицированном БИОСе от BFG 6800 Ultra начинается с таких команд, но в файле "funp.bin" их нет (и в статье они не упоминаются тоже)
У меня эти команды лежат в стартовом коде, который непосредственно вызывает распаковщик...

MERCURY
Новичок
Сообщения: 68
Зарегистрирован: 18.05.2009 10:34
Откуда: 100 кило от Казани
Контактная информация:

Сообщение MERCURY » 18.07.2009 14:06

Improver
Я переделал выложенную ранее вашу прошивку для 6600 на свой лад. Проверьте, как сможете.

Improver
Новичок
Сообщения: 17
Зарегистрирован: 16.07.2009 15:57
Откуда: Волгоград
Контактная информация:

Сообщение Improver » 20.07.2009 9:29

MERCURY, теперь всё работает правильно. :) :) :)

Насколько я понял, Вы просто вынесли подпрограмму распаковки шрифтов ещё дальше по адресам, и это помогло.

Теперь следующий шаг к совершенству, я думаю, нужно делать в направлении полной замены шрифта. Подмена шрифта только в памяти при озвученной Вами схеме распаковки шрифтов «память — знакогенератор — память» может привести к тому, что в определённых ситуациях (не могу точно сказать в каких) видеокарта может, например, перезаписать заново шрифты из знакогенератора в память и тогда от русификации ничего не останется...

BolenB
Новичок
Сообщения: 40
Зарегистрирован: 18.05.2009 17:30
Откуда: Россия
Контактная информация:

Сообщение BolenB » 20.07.2009 10:34

Improver писал(а):Подмена шрифта только в памяти при озвученной Вами схеме распаковки шрифтов «память — знакогенератор — память» может привести к тому, что в определённых ситуациях (не могу точно сказать в каких) видеокарта может, например, перезаписать заново шрифты из знакогенератора в память и тогда от русификации ничего не останется...
Неправда ваша. После распаковки шрифтов, они больше не перезапишутся. Как вы могли заметить, распакованный шрифт затирает упакованный, поэтому и схема такая сложная «память — знакогенератор — память». Если бы распаковывали по схеме «память — память», то распакованные шрифты, при распаковке затерли бы еше не распакованные шрифты. И область после пакованных шрифтов и до конца bios трогать нельзя, там лежат настройки видеокарты. Начиная с 7-серии Geforce эту область сдвинули ближе к началу bios, а пакованные шрифты в самый конец, поэтому там больше пространства для маневра.

MERCURY
Новичок
Сообщения: 68
Зарегистрирован: 18.05.2009 10:34
Откуда: 100 кило от Казани
Контактная информация:

Сообщение MERCURY » 20.07.2009 10:44

Improver,
Насколько я понял, Вы просто вынесли подпрограмму распаковки шрифтов ещё дальше по адресам, и это помогло
Я уж и сам не знаю, что именно помогло :)...
Теперь следующий шаг к совершенству, я думаю, нужно делать в направлении полной замены шрифта. Подмена шрифта только в памяти при озвученной Вами схеме распаковки шрифтов «память — знакогенератор — память» может привести к тому, что в определённых ситуациях (не могу точно сказать в каких) видеокарта может, например, перезаписать заново шрифты из знакогенератора в память и тогда от русификации ничего не останется...
Вы неверно поняли :)... Ничего страшного не будет, т.к. ИЗ знакогенератора шрифты выгружаются всего ОДИН раз, в процессе распаковки, а вот загружаются туда каждый раз при смене видеорежима уже оттуда, куда мы их распаковали. Так что есди уж они один раз русифицировались, т.е. видны на экране, то уже никуда не денутся :D...

Насчет ПОЛНОЙ русификации - есть одна мысль ;) - модифицировать любым способом первичную распаковку с записью в знакогенератор так, чтоб распаковывались НАШИ шрифты... Можно подменить штатный распаковщик нашим (funp.bin), подправив его, чтоб писал не в память, а в знакогенератор?

C другой стороны, стремление к совершенству похвально, но лишь когда это самое совершенство достижимо :)...

BolenB
Новичок
Сообщения: 40
Зарегистрирован: 18.05.2009 17:30
Откуда: Россия
Контактная информация:

Сообщение BolenB » 20.07.2009 11:00

Есть у меня одна идейка:
1) Процедуру которая распаковывает шрифт в знакогенератор отключаем
2) Ложим наш русифицированный пакованный шрифт с распаковщиком на место стандартного пакованного шрифта.
3) Процедуру которая пишет шрифт из знакогенератора в память модернизируем, а именно:
3.1) Сдвигаем наш пакованный шрифт с распаковщиком (из пункта 2) в самый конец биос (видюха уже настроена и данные в конце bios-а не нужны).
3.2) Распаковываем наш шрифт в нужное место.

Думаю должно получится. При вызове любой функции прерывания int10 (video), наш шрифт загрузится в знакогенератор, если его там небыло (после наших манипуляций).

MERCURY
Новичок
Сообщения: 68
Зарегистрирован: 18.05.2009 10:34
Откуда: 100 кило от Казани
Контактная информация:

Сообщение MERCURY » 20.07.2009 11:11

BolenB
Есть у меня одна идейка:
3.1) Сдвигаем наш пакованный шрифт с распаковщиком (из пункта 2) в самый конец биос (видюха уже настроена и данные в конце bios-а не нужны)
Сдается мне, что к тому времени наш шрифт вместе с распаковщиком будет затерт... Вы не задумывались, почему процедура загрузка шрифта из знакогенератора находится совсем в другом месте? отдельно от шрифтов и распаковщика?

BolenB
Новичок
Сообщения: 40
Зарегистрирован: 18.05.2009 17:30
Откуда: Россия
Контактная информация:

Сообщение BolenB » 20.07.2009 11:22

MERCURY писал(а): Сдается мне, что к тому времени наш шрифт вместе с распаковщиком будет затерт...
Нет
Вы не задумывались, почему процедура загрузка шрифта из знакогенератора находится совсем в другом месте? отдельно от шрифтов и распаковщика?
Я даже знаю почему. :wink: Чтоб не затереть саму себя, при копировании шрифта из знакогенератора в память.

Improver
Новичок
Сообщения: 17
Зарегистрирован: 16.07.2009 15:57
Откуда: Волгоград
Контактная информация:

Сообщение Improver » 20.07.2009 11:23

BolenB писал(а):Неправда ваша. После распаковки шрифтов, они больше не перезапишутся.
MERCURY писал(а):Вы неверно поняли :)... Ничего страшного не будет, т.к. ИЗ знакогенератора шрифты выгружаются всего ОДИН раз, в процессе распаковки, а вот загружаются туда каждый раз при смене видеорежима уже оттуда, куда мы их распаковали. Так что есди уж они один раз русифицировались, т.е. видны на экране, то уже никуда не денутся :D...
Ну в таком случае всё замечательно, зря волновался. :D
MERCURY писал(а):Насчет ПОЛНОЙ русификации - есть одна мысль ;) - модифицировать любым способом первичную распаковку с записью в знакогенератор так, чтоб распаковывались НАШИ шрифты... Можно подменить штатный распаковщик нашим (funp.bin), подправив его, чтоб писал не в память, а в знакогенератор?
Это, imho, хорошая идея. :)
MERCURY писал(а):C другой стороны, стремление к совершенству похвально, но лишь когда это самое совершенство достижимо :)...
Ну почему, в данном случе, оно не достижимо? "То, что один человек сделал, другой завсегда сломать сможет" (с) Или переделать. ;)

MERCURY
Новичок
Сообщения: 68
Зарегистрирован: 18.05.2009 10:34
Откуда: 100 кило от Казани
Контактная информация:

Сообщение MERCURY » 05.08.2009 19:26

Значит, так... На данный момент здешним коллективным разумом русифицированы GeForce 6600, 6800, 7600, 8800, т.е. 6, 7 и 8 серии. Посмотрел тут прошивку для ASUS EN9600GT 512 PCIE: http://mercury.boot-land.net/pub/asus.9 ... rev.03.rom . На мой взгляд, от 7600 и 8800 русификация мало чем отличается... Хотя есть странности в распаковщике :). Есть обладатели GeForce 9 серии, желающие потрепать нервы и принести пользу обществу :)?

DrEvil
Администратор Judge Dredd
Сообщения: 17062
Зарегистрирован: 17.01.2003 11:52
Контактная информация:

Сообщение DrEvil » 12.08.2009 17:15

Также нужны добровольцы для испытания нового образа дискеты для обновления BIOS и экспериментальной процедуры обновления с флешки.

MERCURY
Новичок
Сообщения: 68
Зарегистрирован: 18.05.2009 10:34
Откуда: 100 кило от Казани
Контактная информация:

Сообщение MERCURY » 25.08.2009 13:04

Установлена абсолютная необходимость применения ВТОРОГО способа (RVBEdit & BolenB) отключения подмены знаков (СЫЭЮл) после загрузки! Т.к. при определенных условиях даже с отключенной процедурой подмены она все же как то срабатывает :(... Т.е. где то есть еще одна процедура того же рода...

Так все же, есть желающие испытать русификацию 9 серии? Например, вы, DrEvil...

Improver
Новичок
Сообщения: 17
Зарегистрирован: 16.07.2009 15:57
Откуда: Волгоград
Контактная информация:

Сообщение Improver » 28.08.2009 8:38

А не лучше ли просто дополнительно русифицировать и эти шесть букв, тем более что их "изображения" хранятся в несжатом виде?

MERCURY
Новичок
Сообщения: 68
Зарегистрирован: 18.05.2009 10:34
Откуда: 100 кило от Казани
Контактная информация:

Сообщение MERCURY » 28.08.2009 10:24

Improver, их не шесть, их несколько блоков - 13, плюс еще 7 в зависимости от прошивки, по моему, в разных местах... Вы просто выбрали шрифт, похожий на оригинальный БИОСовый, поэтому не видите подмену латинских букв. И с точки зрения простого смертного проще записать ноль в одно-два известных места, чем возится с десятком 16-байтных кусков...

Improver
Новичок
Сообщения: 17
Зарегистрирован: 16.07.2009 15:57
Откуда: Волгоград
Контактная информация:

Сообщение Improver » 28.08.2009 12:04

MERCURY, вообще-то всего, вместе с латинскими буквами, я насчитал 19 символов размером 8х16 и, в более старых БИОСах, до 17 символов 8х14. Они все всегда располагаются в одном месте, найти их несложно. У себя я правил и латинский шрифт, т.к. заменяемые символы всё-таки немного отличаются.

Но вопрос не в этом, а в том, что доподлинно не известна причина замены этих символов в БИОСах от nVidia. Неисключено, что при определённой ситуации это делать необходимо и игнорируя эту замену можно получить ещё один не очень приятный глюк. Как, впрочем, Вы сами могли убедится в глючности рихтовки механизма замены.

Написать же программку, отыскивающую и заменяющую эти дополнительные символы не составит никакого труда, это не намного сложнее, чем найти в БИОСе место, куда прописать ноль. Вообще, "с точки зрения простого смертного", лезть в БИОС руками не следует, нажал на кнопку -- получил результат. Всё.

Хотя, в принципе, выбор решения в этом вопросе за Вами, а я для себя свой выбор сделал...

MERCURY
Новичок
Сообщения: 68
Зарегистрирован: 18.05.2009 10:34
Откуда: 100 кило от Казани
Контактная информация:

Сообщение MERCURY » 28.08.2009 12:37

Improver
вместе с латинскими буквами, я насчитал 19 символов размером 8х16 и, в более старых БИОСах, до 17 символов 8х14. Они все всегда располагаются в одном месте, найти их несложно.
Вот именно, поэтому я отказался от ранее предлагавшегося мною (и как я сам увидел, не всегда срабатывающего) способа отключения самой процедуры подмены, и поддерживаю (но никак не навязываю !!!) способ из RVBEdit. Т.о. процедура замены будет вызываться всегда, когда понадобится, просто не будет ничего подменять. Так что глюков быть не должно...

Еще мысль: с БИОСами 7 и старших серий, как мы убедились, все просто, и можно провести полную русификацию ЛЮБОЙ из них (? где вы, владельцы 9 серии ?)... А вот для 6 серии можно создать заготовку - 512-байтный блок - распаковщик плюс половинки наших фонтов, приклеиваемый к любой прошивке размером до 0xFE00h = 65024 байт. После чего русификация так же не представляет проблем...

Ну а в целом, конечно, на все воля Божья и хозяина карточки :).

Improver
Новичок
Сообщения: 17
Зарегистрирован: 16.07.2009 15:57
Откуда: Волгоград
Контактная информация:

Сообщение Improver » 28.08.2009 15:03

MERCURY писал(а):процедура замены будет вызываться всегда, когда понадобится, просто не будет ничего подменять. Так что глюков быть не должно...
Истинная причина подмены некоторых символов известна, пожалуй, только инженерам из nVidia, но, допустим, что в какой-то определённый момент эта подмена может быть действительно необходима. Но тогда, в случае патча по методу из RVBEdit, этой подмены не произойдёт, и в результате получаем, например, безобидный глюк с мусором вместо этих символов. :-) Так что между "не должно быть" и "нет" глюков -- большая разница.

DrEvil
Администратор Judge Dredd
Сообщения: 17062
Зарегистрирован: 17.01.2003 11:52
Контактная информация:

Сообщение DrEvil » 28.08.2009 15:12

Любопытно, что у NVIDIA существует внутренняя программа тестирования видеокарт MODS, которая помимо прочего содержит тест знакогенератора. Думаю, по механизму тестирования можно было бы что-то узнать о причинах всех этих шифраций и разделений. Правда, найти MODS в открытом доступе очень трудно.

MERCURY
Новичок
Сообщения: 68
Зарегистрирован: 18.05.2009 10:34
Откуда: 100 кило от Казани
Контактная информация:

Сообщение MERCURY » 28.08.2009 16:03

Improver, да сколько раз вам объяснять, что ВСЕ необходимые процедуры БУДУТ вызваны, просто, увидев NUL вместо кода символа, они все прекращают работу КАК ОБЫЧНО, т.е. как это ИЗНАЧАЛЬНО запланировано создателями! Но ведь на месте самого символа NUL никакого мусора не наблюдается? Значит, и на месте остальных не будет, что с патчем, что без него!!!

Ну чего вы перестраховываетесь? Оно, конечно, похвально, но ведь к RVBEdit до сих пор никаких нареканий не было?
Но вопрос не в этом, а в том, что доподлинно не известна причина замены этих символов в БИОСах от nVidia. Неисключено, что при определённой ситуации это делать необходимо
"Дело було вечером, делать було нечего", вот и вся причина :x...

Improver
Новичок
Сообщения: 17
Зарегистрирован: 16.07.2009 15:57
Откуда: Волгоград
Контактная информация:

Сообщение Improver » 28.08.2009 16:47

MERCURY, может я не совсем понятно для Вас изложил, но:
MERCURY писал(а):ВСЕ необходимые процедуры БУДУТ вызваны, просто, увидев NUL вместо кода символа, они все прекращают работу КАК ОБЫЧНО, т.е. как это ИЗНАЧАЛЬНО запланировано создателями!
Изначально было запланировано переписать коды символов, а этого сделано не будет. Значит, уже не как обычно.
Но ведь на месте самого символа NUL никакого мусора не наблюдается?
Логично предположить, что мусор может наблюдаться не там, где Вы nul поставили, а там, куда должны были переписаться эти коды. :-)
Ну чего вы перестраховываетесь?
Дык, лучше перебдеть, как известно. Если исходить из предположения, что в БИОСе нет багов и лишнего кода, то лучше там ничего не упрощать, чтобы не добавлять туда своих глюков.
Оно, конечно, похвально, но ведь к RVBEdit до сих пор никаких нареканий не было?
А как часто в этом месте может проявиться глюк? Допустим, даже вероятность 0,01%. Скажем, 1% пользователей программы RVBEdit русифицировали при помощи неё видеокарту, умножаем на вероятность получения ими глюка, потом 9 из 10 среди этих пользователей, у кого возник глюк, поленились писать багрепорт, т.к. глюк у них мог и не повториться в течении длительного времени, а оставшееся ничтожное число пользователей просто не поняло, что у них произошло. :D :D :D

MERCURY
Новичок
Сообщения: 68
Зарегистрирован: 18.05.2009 10:34
Откуда: 100 кило от Казани
Контактная информация:

Сообщение MERCURY » 28.08.2009 17:34

Логично предположить, что мусор может наблюдаться не там, где Вы nul поставили, а там, куда должны были переписаться эти коды.
А в оригинальном НЕПАТЧЕННОМ коде этого нуля нет, что ль? Чем, по вашему, список подлежащих замене символов закрывается? Мы просто закрываем его раньше, в самом начале. Хватит фантазировать...
Дык, лучше перебдеть, как известно. Если исходить из предположения, что в БИОСе нет багов и лишнего кода, то лучше там ничего не упрощать, чтобы не добавлять туда своих глюков.
Вашу бы бдительность да в МС... Если исходить из предположения, что в Виндзя нет багов и лишнего кода, то почему он регулярно виснет?

Ответить