Warbirds in 32bit color mode!

Discussion in 'Hardware and Software' started by -andy-, Mar 13, 2006.

  1. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
    Ну, вот несколько дней потраченных на минимальное понимание, как работать с программой IDA Pro, и вот первый результат: замена всего одного байта в программе wbd3d.exe:

    C:\Program Files\Warbirds>fc /b wbd3d(old).exe wbd3d(new).exe
    Comparing files wbd3d(old).exe and WBD3D(new).EXE
    000395E1: 10 20

    и wbd3d.exe работает в 32 битном режиме... Т.е. теперь и на видеокартах nVidia текстуры рендерятся так же, как на ATI :)

    Одна беда - красный цвет на иконках, прицеле и еще кое-где стал не совсем чтобы красный. Но это уже мелочь. Буду искать дальше...

    -andy-
     
  2. -exec-

    -exec- FH Consultant

    Joined:
    Jan 29, 2000
    Messages:
    24,690
    Location:
    xUSSR
    а до этого в 16битном работал?
     
  3. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
    Да. Но это могли заметить лишь те, кто использует видеокарты от nVidia. У владельцев ATI все в порядке, поскольку там драйвера в 16 битном цвете работать не умеют и "транслируют" все в 32 бита сами. А программисты у nVidia честные :( Посмотри на конец треда "6600GT и WarBirds?". Я там приводил картинку на своей недавно приобретенной 6800GS. Теперь все гладенько. Вот только надо еще иконки побороть...

    -andy-

    P.S. В online проверяется только misc.bin или exe-файлы тоже?
     
  4. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
    Оказывется, wb3d.exe можно вообще не патчить - достаточно поменять "0" в 7-ой (предпоследней) строке файла Settings\Video.cfg на "1". Это работает до первого захода в Setup/Video, потом значение снова сбрасывается в ноль. Проблема с красным цветом имеет место быть и при этом варианте :(

    -andy-
     
  5. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
    Вторая часть марлезонского балета: ну, вот, я нашел место, где пропадает красный цвет, по крайней мере, у прицела... Скорее всего, там же пропадает и весь оставшийся "векторный" красный цвет - эти [censored] упаковывают цвета в 2х байтные слова. Младшие биты - синий цвет, промежуточные - зеленый и старшие - красный. Пока цвет 16 битный, синий занимает 5 бит, зеленый 6 и красный снова 5. А как только переходим к 32 битному цвету, так интенсивности цветов занимают по 8 бит и красный сдвигается за левую границу слова... :(

    Патчами такое может оказаться сложно исправлять. Как бы не пришлось свой хук писать, чтобы он перехватывал вызовы функций из ddraw.dll...

    -andy-
     
    Last edited: Mar 21, 2006
  6. --maty

    --maty Well-Known Member

    Joined:
    Jan 22, 2002
    Messages:
    5,706
    Location:
    Marseille, FRANCE
    Чето както хитро очень...Ты уверен что правильно этот балет разрюхал?
     
  7. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
    Да, с помощью Ida Pro в режиме удаленной отладки.... Очень удобно, особенно для исследования полноэкранных приложений... Я уж было собрался SoftIce себе ставить, но обошлось.

    А насчет подмены ddraw.dll, так, возможно, это будет проще всего. Потому что код внутри wbd3d.exe такой, что хоть стой, хоть падай. Например, подпрограммы чтения файлов video.cfg и color.cfg вызываются каждая из пары десятков мест :))) Т.е. если вдруг потребовался какой-нибудь параметр оттуда, то на стеке сначала создается некая структура, потом вызывается процедура чтения файла, и, наконец, одно требуемое значение из структуры копируется еще куда-то... Т.е. нет никаких гарантий, что я сумею найти все места, где векторные линии выводятся на экран. А уж как они преобразуют и пакуют (десяток) цветов с помощью 6 битовых таблиц...

    -andy-
     
  8. -exec-

    -exec- FH Consultant

    Joined:
    Jan 29, 2000
    Messages:
    24,690
    Location:
    xUSSR
    (в копилку знаний) какой дебаггер лучше - ida или softice?
     
  9. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
    Мне особенных фокусов, типа отладки драйверов или ядра операционки не нужно было... А Ida не столько отладчик, сколько великолепный интерактивный дисассемблер. Т.е. как ты перестал понимать, что в регистрах лежит на входе в процедуру, ставишь в том же окне break и запускаешь код на исполнение. Опять же, ставить SofIce на домашнюю машину не хотелось - а Ida обходится без запуска сервисов.

    -andy-

    P.S. Т.е. SoftIce тоже скачан, но пока я без него обошелся.
     
  10. -exec-

    -exec- FH Consultant

    Joined:
    Jan 29, 2000
    Messages:
    24,690
    Location:
    xUSSR
    summary:
    wb3d runs in 16384 colors (high-color) video mode.
    to run it in true-color video mode you must edit Video.cfg and set 1 at line 7. since warbirds resets 1 back to 0 after first run, you must set read-only attribute for read-only after editing.

    резюме:
    wb3d работает в режиме 16384 цветов (high-color).
    чтобы оно работало в true-color, необходимо в файле Video.cfg в седьмой строке поставить 1. так как игрушка сбрасывает 1 обратно в 0 при первом запуске, нужно установить на файл аттрибут только-для-чтения после правки.
     
    Last edited: Jun 1, 2006
  11. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
    Не совсем так. см. мой пост выше:

    Оказывется, wb3d.exe можно вообще не патчить - достаточно поменять "0" в 7-ой (предпоследней) строке файла Settings\Video.cfg на "1". Это работает до первого захода в Setup/Video, потом значение снова сбрасывается в ноль.

    Я не уверен, что read-only не вышибет программу по ошибке.
    И ты бы уж написал, что векторный красный цвет пропадет.

    P.S. Пардон - у меня сейчас столько работы, что совсем некогда этим заниматься.
     
    Last edited: Jun 1, 2006
  12. -exec-

    -exec- FH Consultant

    Joined:
    Jan 29, 2000
    Messages:
    24,690
    Location:
    xUSSR
    а я как написал? %)
    и рид-онли сохраняет единицу.
    однако, на пятом где-то запуске действительно цвет красный линий улетел в чёрный.
     
  13. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
    Ты не написал, что не надо в Setup/Video заходить.

    Далее, если у тебя красный (векторный) цвет есть - ты в 16-битном режиме. Нет - в 32 битном.

    У тебя какая видеокарта? Судя по всему, ATI? Потому что на драйверах этой фирмы проблемы рендеринга текстур в WB нет, поскольку в них 16 битный режим просто не реализован - он эмулируется через 32-битный. А в Nvidia все, к сожалению, по-честному.
     
  14. -exec-

    -exec- FH Consultant

    Joined:
    Jan 29, 2000
    Messages:
    24,690
    Location:
    xUSSR
    а зачем запрещать всякое лишнее? так недолго дописаться, что не надо текстовый файл в браше править.

    картонка Mobile Intel(R) 915GM/GMS,910GML Express Chipset Family
     
  15. Vadim Maksimenko

    Vadim Maksimenko Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    15,468
    Location:
    Vilnius, Lithuania
    Признавайся, какая версия IDA Pro у тебя? :)
     
  16. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
    4.9.0.863 (c ru-board). "Пятерки" там еще нет :(

    P.S. Для того, чтобы ее запустить, пришлось временную зону менять с "американской" на "российскую". Защита, блин....
     
  17. Vadim Maksimenko

    Vadim Maksimenko Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    15,468
    Location:
    Vilnius, Lithuania
    А как на счет линком поделиться?
     
  18. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
  19. Vadim Maksimenko

    Vadim Maksimenko Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    15,468
    Location:
    Vilnius, Lithuania
    На этом ru-board тормоза какие-то админят. Регистрируюсь, пароль, хуй его знает, выслан, не выслан. Аккаунт создан, чего теперь ждать, у моря погоды?
     
  20. Vadim Maksimenko

    Vadim Maksimenko Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    15,468
    Location:
    Vilnius, Lithuania
    Ох, спасибо, в ноги кланяемси :) А то я забодался уже репу чесать с кривой регистрацией на этом ru-board...