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

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

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

Dr.Nimnul
Новичок
Сообщения: 79
Зарегистрирован: 18.05.2006 20:07
Откуда: С. П-б
Контактная информация:

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

Сообщение Dr.Nimnul » 17.05.2009 13:14

В виду того, что в современных (и не очень) операционках, DOS-русификатор превращается в болшой геморой, стала опять актуальной данная тема (ностальгия по RVB-edit меня замучила, понимашь... :) )
1) Ну для начала, традиционный вопрос, нет ли каких подвижек по сабжу со времен написания FAQ ?
2) попытки ковырять самостоятельно, уперлись в то, что биос пакованый, причем вместе с фонтами. Нету ли где распаковщика/запаковщика? И описания алгоритма упаковки ?
3) Есть идея сграбить уже распакованный биос из Shadow RAM, русифицировать его, а потом загружать посредством VGABIOS. А-ля S-Font. Критика и описание возможных граблей - принимается ...... :)
4) также принимаются и другие идеи, но просьба не скатываться в обсуждение достоинств и недостатков DOS-русификаторов, и рекомендации сменить оный.
5) c GF8xxx и выше пока даже не общался, нету ли там принципиальных отличий?

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

Сообщение DrEvil » 17.05.2009 15:58

1. Подвижек нет.
2. Думаю, лучше всего в форуме mvktech.net спросить. Хотя я не заметил, что BIOS запакован.
3. BIOS карт FX и выше больше, чем область ShadowRam. И VGABIOS для них не работает. Можно попробовать http://www.overclockers.ru/softnews/print/17270.shtml , правда, не факт, что оно вообще может работать как обещано.
5. Да, структура несколько поменялась. В частности, некоторым удалось убить BIOS видеокарты просто редактируя приветствие при включении компьютера.

Dr.Nimnul
Новичок
Сообщения: 79
Зарегистрирован: 18.05.2006 20:07
Откуда: С. П-б
Контактная информация:

Сообщение Dr.Nimnul » 17.05.2009 16:09

DrEvil писал(а): 3. BIOS карт FX и выше больше, чем область ShadowRam. И VGABIOS для них не работает.
То что не работает на прямую - понятно. (кстати для FX aka GF5xxx, то все как раз работает :) ) была идея сграбить уже распакованный биос, после загрузки, (и его же и подменять). Или он еще и динамически там изменяется :x , по ходу работы системы ? (в этом то и был основной вопрос )

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

Сообщение MERCURY » 18.05.2009 14:38

Делюсь своим опытом русификации ASUS N7600GS Silent 256
2) попытки ковырять самостоятельно, уперлись в то, что биос пакованый, причем вместе с фонтами. Нету ли где распаковщика/запаковщика? И описания алгоритма упаковки ?
3) Есть идея сграбить уже распакованный биос из Shadow RAM, русифицировать его, а потом загружать посредством VGABIOS. А-ля S-Font. Критика и описание возможных граблей - принимается ......
4) также принимаются и другие идеи, но просьба не скатываться в обсуждение достоинств и недостатков DOS-русификаторов, и рекомендации сменить оный.
5) c GF8xxx и выше пока даже не общался, нету ли там принципиальных отличий?
2) Лично я уперся в то, что упакованы ТОЛЬКО фонты :). Объясню: сохраненная nvflash прошивка размером 61440 (0xF000h) байт, что, кстати меньше типового размера Shadow Memory. При этом весь файл сжимается хорошо, например зипом до 40 Кб, что прямо говорит что файл не сжат.
Сами фонты в упакованной форме начинаются не раньше чем с 0xDFE4h, что с учетом размера фонтов в распакованном виде приводит к размеру биоса не менее чем 0x105E4h > 64 Кбайт. То ли разработчики не смогли найти более емкий флеш, то ли сочли невозможным занимать более 64 Кб Shadow (что более чем странно), но они упаковали фонты, и распаковывают их на адрес 0xC442h. затирая и обрезая очевидно ставший ненужным кусок кода объемом более 11 кб... Более того, разговоры о том, что якобы не хватает этой самой теневой памяти, странны - ведь под нее резервируется без малого 128 Кб без учета адресов E0000-FFFFF и любая часть может быть размещена под видеобиос, сколько он захочет (теоретически каждый биос может занимать 255*512 = как раз 128 Кб)! Т.е. причина явно не в этом. Другое дело, что для оперирования этим объемом памяти необходима сегментированная адресация, но этот вопрос уже давно решен :)...
Далее, мой флеш имеет размер 64 Кб ровно (512 Кбит, убедился на своем печальном опыте). Остается свободно не более 4 Кб, чего недостаточно для записи всего набора фонтов 8х8+8х14+8х16 :(. Но можно втиснуть какой то один. Мне удалось зашить в биос 8х8, и он работает! Разумеется он записывается поверх собственного фонта карты, моим простейшим кодом, добавленным к штатному распаковщику. Но он работает!!!

3) VGABIOS - самый обычный загрузчик-резидент ДОС, приклеивающий к себе указаный файл биоса, и возможно пытающийся его запустить, но не более того! Ни о какой теневой памяти он не знает... Вот карта распределения адресов обычной ДОС памяти после его запуска:

06F2-06FDh 192 Env 1604h VGABIOS
06FF-0701h 48 Free 0000h < none >
1604-25CAh 64,624 Prog 1604h VGABIOS C:\VGABIOS.EXE -f\c0000.rom
& using vector 10h.

Т.е. биос размером 61440 байт загружен по адресу 0x16040 и занимает 64624 байта, разность = 3184 байта есть резидентный код загрузчика... Если исходный файл меньше 65536-3184=62352 байта, он загрузится, если больше - будет ошибка, ибо VGABIOS видимо не обрабатывает больше 64 Кб. Во всяком случае, вот результаты теста:
оригинальный биос 0xE000h байт (прошивка) - грузится;
сграббленный биос 0xDE00h байт (0xC0000h) - грузится;
русифицированный сграббленный биос 0xDE00h байт (0xC0000h) - грузится (но ничего не русифицирует :();
русифицированный биос 0x10000h байт (прошивка) - НЕ грузится, ВИСНЕТ!!!
Налицо ошибка загрузчика, ибо он был написан еще в 99 году...

4) Рекомендация и просьба только одна: Найти или оригинальный упаковщик Нвидии (распаковщик в биосе уже есть :)), или аналогичный другой эффективный (сжатие не менее 60%) упаковщик с ПРОСТЫМ распаковщиком, допускающим реализацию в виде ассемблерного кода не более 256 байт :(...

PS: Shadow Memory на то и теневая, чтоб после записи в нее больше ничего не менялось...

Lovrik
Модератор
Сообщения: 1487
Зарегистрирован: 22.01.2004 15:48
Откуда: Россия, Питер
Контактная информация:

Сообщение Lovrik » 18.05.2009 14:55

Можно не скромный вопрос зачем? ))
Зачем руссифицировать биос? ))

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

Сообщение MERCURY » 18.05.2009 16:04

Lovrik, ну понимаешь, ностальгия одолела по Радио РК86 :lol: - включил и работай...
А если серьезно, то на другом форуме обсуждали Win98, и обнаружилось, что идеального русификатора (кстати правильно писать с одним "с" !!!) не существует - глючат все... Вот я и решил попытать счастья - и почти получилось...

Lovrik
Модератор
Сообщения: 1487
Зарегистрирован: 22.01.2004 15:48
Откуда: Россия, Питер
Контактная информация:

Сообщение Lovrik » 18.05.2009 19:47

MERCURY,
ну понимаешь, ностальгия одолела по Радио РК86
:)

Ну как вам сказать, конечно, все идущее на пользу хоть кому-либо, уже должно одобряться, как явление полезное и тут отсутствие жизненной потребности в сабже всех, кто знает что такое биос видеокарты мнение все же субъективное, мое.
Несомненно это кому-то нужно и приятно в конце концов. Поэтому с точки зрения гимнастики "пальцев и ума" занятие полезное.
Человек знающий, что такое "Радио РК86", уже выше крикливого юзера, который кричит что "Это лажа, потому что у меня не ворчит" по форумам, причем не только по возрасту и это хорошо.

Ну хорошо, вот русифицировал ты биос (кстати спасибо, что указал на ошибку - не обращал внимания, а так писать намного проще) - получил моральное удовлетворение и пожалуй все, по большому счету. Я к чему это говорю - уж лучше имхо пошурупить над чем-то, имеющим больший резонанс и пользу, потому как русификация, мало того, что по природе своей кривая и дестабилизирует программу зачастую - это лечение последствий... когда же программы будут англофицировать ))
Эх и где разработки отечественной тематики :roll: *загрустил*

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

Сообщение DrEvil » 18.05.2009 19:50

MERCURY
ведь под нее резервируется без малого 128 Кб без учета адресов E0000-FFFFF и любая часть может быть размещена под видеобиос, сколько он захочет
Конкретно для видеокарты там 32 кб. А в остальной области, вообще говоря, может быть что угодно, части основного BIOS, BOOT ROM сетевого адаптера, SCSI/RAID BIOS.
VGABIOS видимо не обрабатывает больше 64 Кб
А Rambios и Loader пробовали?
упаковщик с ПРОСТЫМ распаковщиком
Может, в http://www.coreboot.org/ покопаться, что они использовали.

misha mike
Участник
Сообщения: 532
Зарегистрирован: 06.06.2005 3:29
Откуда: Недалеко от Киева
Контактная информация:

Сообщение misha mike » 19.05.2009 3:18

Еще "железные" кирилические шрифты бывают весьма полезными при BSOD-ах на русской винде. Очень уж любят майкрософтовцы писать по-русски, не думая о последствиях.

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

Сообщение MERCURY » 19.05.2009 10:58

DrEvil
Конкретно для видеокарты там 32 кб
Неверно!!! Это желательный объем, указанный IBM при создании PC... С тех пор прошло 28 лет :(...

Вот разметка начала ЛЮБОГО блока биос (TechHelp читали?):
00000000: 55 AA XX YY YY YY YY ...
где:
XX - байт счетчик длины блокк БИОС в 512-байтных страницах;
YY YY YY YY - стратовый код БИОС, обычно JMP zzz (как COM-файл).

Счетчик может иметь значение от 01 до FF вкл., соотв. размер любого блока биоса от 512 байт до 128 Кб.

Lovrik
Модератор
Сообщения: 1487
Зарегистрирован: 22.01.2004 15:48
Откуда: Россия, Питер
Контактная информация:

Сообщение Lovrik » 19.05.2009 11:05

misha mike,
"железные" кирилические шрифты бывают весьма полезными при BSOD-ах на русской винде.

Тогда я всеми лапами за русификацию! :D

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

Сообщение MERCURY » 19.05.2009 14:14

Lovrik
Тогда я всеми лапами за русификацию!
Вот и хорошо! Помогите тогда отыскать нужный Un/Pak ;)... Нужно сжать 10 Кб фонтов до max 4 Кб и распаковать кодом не более 256 (ну в виде исключения 512, если пакер хорош) байтов БЕЗ использования стека и деревьев ;(... причем код желателен на ассемблере и должен оперировать памятью, а не файлами :shock:...

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

Сообщение DrEvil » 19.05.2009 14:22

MERCURY
Еще раз, я не отрицаю, что для области ShadowRam отведен диапазон C0000h - DFFFFh и его теоретически можно занять весь одним только VideoBIOS. Но и BIOS материнской платы, и программы вроде EMM386, по традиции считают, что отображаемый VideoBIOS кончается на C7FFF и считают, что начиная с C8000 можно пихать в область ShadowRam что угодно свое, например EMS Paging Frame или таблицу обработки int13h встроенного RAID. Впрочем, это уже оффтоп.

Насчет пакеров на ассемблере - http://compression.graphicon.ru/downloa ... ml#src_asm
http://compression.graphicon.ru/downloa ... ml#src_asm - ничего не подойдет?

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

Сообщение MERCURY » 19.05.2009 17:48

DrEvil
BIOS материнской платы, и программы вроде EMM386, по традиции считают, что отображаемый VideoBIOS кончается на C7FFF и считают, что начиная с C8000 можно пихать в область ShadowRam что угодно свое, например EMS Paging Frame или таблицу обработки int13h встроенного RAID
По традиции, если что то куда то пишет, не спросив разрешения, то его создателю бьют морду ;)... Иначе это никак не лечится :(. А если серьезно, разве трудно проверить байт по адресу 0xC0002h и посчитать, куда можно писать, а куда - нет? Впрочем, я и cам имею такой биос, который забывает отметить свой ADDON-ROM код меткой 55 AA, но он пишет его в сегмент E000, который формально как раз и зарезервирован под System ROM, это ведь только мы с подачи МС привыкли, что биос начинается с 0xF0000h ;)... А щас на это уже все забили.
За ссылки спасибо, посмотрю...

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

Сообщение MERCURY » 19.05.2009 20:48

Нашел приличный упаковщик с великолепным распаковщиком :)!!! Если повезет, код + фонты выйдут компактнее, чем в самой нВидии! Один вопрос: оригинальная прошивка нВидии содержит оба высоких фонта - 8х16 + 8х14 - или один? Дело в том, что ее распаковщик как будто распаковывает ДВА фонта :shock:... Впрочем, щас запущу ее под отладчиком, и проверим :)!
В любом случае, завтра ждите полноценно русифицированную ASUS N7600GS Silent 256, причем БЕЗ столбов в VGA modes...

Lovrik
Модератор
Сообщения: 1487
Зарегистрирован: 22.01.2004 15:48
Откуда: Россия, Питер
Контактная информация:

Сообщение Lovrik » 19.05.2009 21:20

MERCURY,
Нашел приличный упаковщик с великолепным распаковщиком Smile!!!
Помогите ему понимаш, когда я читал вечером уставший эти строки и уже полез в поиск, краем глаза заметил, что распаковщик найден )) А еще кто-то по углам стонет, что форум помирает и уже не тот, вы камрад, являетесь живым опровержением этим упадническим настроениям, за что вам респект :beer:

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

Сообщение BolenB » 19.05.2009 21:25

MERCURY,
Один вопрос: оригинальная прошивка нВидии содержит оба высоких фонта - 8х16 + 8х14 - или один? Дело в том, что ее распаковщик как будто распаковывает ДВА фонта ... Впрочем, щас запущу ее под отладчиком, и проверим !
По опыту русификации GF4 TI4600, там только два фонта 8x8 и 8x16. Если получится выложите инструкцию, попробую русифицировать GF6800 Ultra, x86 asm еще немного помню.

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

Сообщение MERCURY » 19.05.2009 22:46

Настроение отличное: распаковщик переделал, проверил на ком-файле под турбодебаггером 89 года - все распаковывает, сжатие на 60% на трехфонтовом файле 9 -> 4 кб, что покруче оригинального пакера нВидии - тот сжимает два фонта 6 -> 4 кб!!! Если удастся запустить такой биос, это будет круто :kruto: :rotate:... Но сие чудо будет завтра, а я пошел :bye: :sleep:...

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

Сообщение MERCURY » 20.05.2009 17:06

Настроение отвратительное: все сделал как надо, прошивка работает, русифицируется нормально, фонт изменен, столбы исчезли, но:
1) Помимо основного блока фонтов, в этом биосе еще есть отдельный набор для ОТДЕЛЬНЫХ символов :x!!! Применяется этот набор после распаковки основного блока :o... и заменяет десяток символов по всей ASCII таблице :(...
2) Фонт 8х14 генерится из 8х16, т.е. его нельзя пока задать отдельно, что приведет к столбам в EGA modes...
Но это ерунда, а вот на кой хрен нВИдия подменяет ОТДЕЛЬНЫЕ символы ПОСЛЕ распаковки основного фонта :o? причем ТОЛЬКО для 8х16 :o:o:o???!!!

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

Сообщение DrEvil » 20.05.2009 17:45

Не знаю, зачем это им могло понадобиться. У них ведь лицензированные у IBM шрифты. Может, лицензия истекла и таким методом обфускацию делают.

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

Сообщение MERCURY » 20.05.2009 19:42

Дык ведь не весь фонт подменяют, а лишь символы: 1d, 30, 4d, 54, 56, 57, 58, 59, 5a, 6d, 76, 77, 78, 91, 9b, 9d, 9e, ad, ad... Причем делается это только для фонта 8х16 и после генерации 8х14 :(... и хранятся эти подменяемые символы в неупакованном виде прямо в коде. Впечатление такое, будто это какой то огрызок другого БИОСа :)!!!
Видимо, если доводить дело до конца, придется основательно перетряхнуть весь БИОС, убрав переходы на эти никчемные процедуры. А для этого придется ляпать целый патчер :(, и далеко не факт, что он заработает на другой прошивке... Ой блин, куда я вляпался :)!!!
Пусть кто нибудь выложит сохраненную nvflash прошивку от более современной карточки, для интереса...

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

Сообщение DrEvil » 20.05.2009 20:24

http://www.mvktech.net/component/option ... der/cat,4/

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

Сообщение BolenB » 20.05.2009 22:00

MERCURY,
2) Фонт 8х14 генерится из 8х16, т.е. его нельзя пока задать отдельно, что приведет к столбам в EGA modes...
Но это ерунда, а вот на кой хрен нВИдия подменяет ОТДЕЛЬНЫЕ символы ПОСЛЕ распаковки основного фонта ? причем ТОЛЬКО для 8х16 ???!!!
ИМХО так как фонт 8х14 генерится из 8х16 обычным сдвигом, то некоторые символы получаются некрасиво (0, T, V, X, Y, t, v, x, y)и их перерисовывают полностью.

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

Сообщение MERCURY » 21.05.2009 11:20

BolenB
ИМХО так как фонт 8х14 генерится из 8х16 обычным сдвигом, то некоторые символы получаются некрасиво (0, T, V, X, Y, t, v, x, y)и их перерисовывают полностью
НЕ В ТУ СТОРОНУ!!! Подменяется 8х16, а сгенереный ранее 8х14 остается БЕЗ изменений!
Впрочем, я уже решил эту проблему :)... Осталось только по настоящему сделать 8х14, чтоб не делал столбов на EGA. Любуйтесь:
ПОЛНОСТЬЮ РУСИФИЦИРОВАННАЯ ПРОШИВКА ДЛЯ ASUS N7600GS Silent 256
http://mercury.boot-land.net

Dr.Nimnul
Новичок
Сообщения: 79
Зарегистрирован: 18.05.2006 20:07
Откуда: С. П-б
Контактная информация:

Сообщение Dr.Nimnul » 21.05.2009 13:10

1) проверил VGABIOS, он действительно оказался простым резедентом, и не в какую Shadow он ничего не пишет :( Это я к тому, что неплохо бы исправить описание на сайте. А что такое Rambios и Loader, и главное, где их можно взять ? (хорошо бы ссылки на странички авторов, если таковые есть, а то, особенно по слову "Loader", Гуглить уж очень печально :) )
MERCURY, В качестве "прошивки от более современной карточки" - могу предложить свою 7900GS
http://ifolder.ru/12227752

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

Сообщение DrEvil » 21.05.2009 13:38

Dr.Nimnul
http://testmem.nm.ru/loader.htm
http://radeon.ru/downloads/bios/

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

Сообщение MERCURY » 21.05.2009 13:48

DrEvil
http://testmem.nm.ru/loader.htm
Это я уже пробовал, богом забытое творение :)... Хотя открытый код представляет интерес...
Dr.Nimnul
Ок, будем пробовать ;)? Только потом не бейте :(!!!

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

Сообщение BolenB » 21.05.2009 14:29

MERCURY,
ПОЛНОСТЬЮ РУСИФИЦИРОВАННАЯ ПРОШИВКА ДЛЯ ASUS N7600GS Silent 256
http://mercury.boot-land.net
А оригинал bios-а можно посмотреть и код компрессора декомпрессора фонтов?

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

Сообщение MERCURY » 22.05.2009 15:27

BolenB
А оригинал bios-а можно посмотреть и код компрессора декомпрессора фонтов?
Не думаю, что от этого будет больший прок ;)...
Dr.Nimnul
Ваша прошивка, сэр!!!
http://mercury.boot-land.net/pub/7900gs_090522aa.rom

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

Сообщение BolenB » 22.05.2009 18:01

MERCURY,
BolenB
А оригинал bios-а можно посмотреть и код компрессора декомпрессора фонтов?
Не думаю, что от этого будет больший прок ...
Ваши дальнейшие планы? Написать патчер или русифицировать bios по заказу как для Dr.Nimnul?
Вот мой bios GF6800 Ultra AGP:
http://rapidshare.com/files/235966981/L ... 2.zip.html
зеркало:
http://ifolder.ru/12249410
Русифицируйте пожалуста :oops:

Ответить