1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление
    1. Если вы сделали перевод или русификацию игры, то вы можете поделиться своим творением здесь.
    2. О правилах вступления в группу переводчиков можно прочитать здесь.
    3. Русификации следует искать там.

Wing Commander IV: Цена свободы

Тема в разделе "Переводы своими руками", создана пользователем Рыжий Тигра, 8 янв 2007.

  1. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Процесс перевода игры "Wing Commander IV: Цена свободы"- в разгаре. Желающие опробовать то, что получилось, могут добраться сразу до описания перевода и ссылок на его скачивание, щёлкнув по этой ссылке.

    Желающим посоучаствовать в переводе - рекомендую: полезные для переводчика ссылки - словари, книги, статьи и прочие материалы. Пополнение копилки приветствуется!

    См. также:
    Самая свежая тестовая сборка и инструкции по её установке
    Бета-тестеры, wэлкам!
    31 дек 2016

    Upd 1:
    В связи с участившимися постами здесь "чисто для поржать" - вынужден объясниться.
    6 янв 2014

    Upd 2:
    Приглашаю желающих поучаствовать в переводе. Отозвавшиеся будут увековечены в финальных титрах. (Никаких более материальных благ, к сожалению, обещать не могу. :( )
    27 мая 2014

    Upd 3:
    Наконец удалось пробить барьер несовместимости моего перевода с версией игры от GOG!!! Желающим опробовать - wэлкам!
    2 окт 2014
     
    Последнее редактирование: 21 апр 2017
    kirik-82 нравится это.
  2.  
  3. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    А фигли делать, если он оказался аж настолько универсальным? :-)))))
    (Кстати, это уже не "тот" хукер - вся работа выполняется из DllMain()'а. Кстати-2: этой же фишкой можно перехватывать и любые импортируемые функции, а не только внутренние.)
    Форточные версии есть и у WC4, и у WC3 (пакет Kilrathi Saga); и тот и другой выводят через ddraw, да. А что?
     
  4. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Рыжий Тигра, под d3d готов универсальный субтитлер.
     
  5. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Вроде вот этого? Ура!
    :-((((((((((
    А перекрутить его под вывод поверх лежащей в буфере готовой картинки можешь? Или под ddraw?
     
    Последнее редактирование: 28 фев 2014
  6. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Рыжий Тигра,
    вроде вот этого.
    Исходники есть на си++ сам я ничего не понимаю.
    А если ddraw завернуть в d3d через DDraw wrapper?
     
    Последнее редактирование: 28 фев 2014
  7. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    (мрачно) Да хоть через веб-интерфейс. Но у меня нет денег на тачку настолько мощную, чтобы она ещё и байтики от проца к видеокарте "через Жмеринку" (L) гоняла. :-(
    Ну, давай хоть такие, мож' чё пойму и собственно прорисовывалку ещё откуда-то выдеру... :-)
     
  8. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Рыжий Тигра, ddraw и d3d уже лет 15 как обрабатываются видеокартой. причем тут мощная тачка?
    Но это так, оффтоп, как поглядишь сорцы напиши мысли, вдруг захочешь чего автоматизировать, мне кажется там можно много чего наворотить.
     
    Последнее редактирование: 28 фев 2014
  9. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Offtop
    Смотря какой. Я себе когда лет 9 назад комплектовал тележку - специально затаривался особо шустрой 2d-картой; в конце концов взял б/у, аж 1997 г.в.
    И потом, семейство WC аж до 4-го включительно как раз и славится своей неприхотливостью к видеожелезу. :-

    ОК, будет что - поделюсь.
     
  10. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Дошли руки полистать. "Вещь в себе" - похоже, какой-то плагин к чему-то. Под MSVC6 не компилится, глазами не читается, какие-либо пояснения отсутствуют, выдрать отдельную ф-цию вида нарисоватьтекстповерхкартинки( картинка, текст, координаты) не представляется возможным. "Я крайне разочарован..." (L) Ж.-Б.-Э. Зорг :-((((
     
    Последнее редактирование: 2 мар 2014
  11. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Нашёл полезную софтину artmoney, организовал бригаду из неё и моего хак-движка, за два вечера исправил пару самых раздражающих глюков игры - паразитное включение "альтернативного пилотажа" в начале вылета на бомбере и при входе в атмосферу планеты и отключение субтитров при кривом выходе из игры. Заодно отрубил видеосвязь по умолчанию, мне так удобнее.
    Код:
    ; отключение видеосвязи по умолчанию:
    { ADDR 1 0
      = x30102 x037E0  x30202 x037E0 ; 004B47E0
    } ADDR
    
    ; обход отключения субтитров по умолчанию:
    ; { ADDR 0 1
    ;   = x30102 x037D8  x30202 x037D8 ; 004B47D8
    ; } ADDR
    { REPL 2
      [ 2 "\x89\x0d
      [ 2 "\xEB\x04
      { CORE
        = x30100 x5542D  x30200 x5542D
      } CORE
    } REPL
    
    ; обход автопереключения на "другой пилотаж" (alt flt mode) на Longbow и при входе в атмосферу
    ; v3.01 - 004BD214 / 004BD210
    ; v3.02 - 004BD234 / 004BD230
    ; 0044C563 39 15 5C 52 4C 00    cmp         dword ptr ds:[4C525Ch],edx
    ; 0044C569 75 2A                jne         0044C595
    ; --------
    ; 0044C585 3B CE                cmp         ecx,esi
    ; 0044C587 74 0C                je          0044C595
    ; 0044C589 89 15 30 D2 4B 00    mov         dword ptr ds:[4BD230h],edx
    ; 0044C58F 5F                   pop         edi
    ; 0044C590 5E                   pop         esi
    ; 0044C591 83 C4 0C             add         esp,0Ch
    ; 0044C594 C3                   ret
    ; 0044C595 A3 30 D2 4B 00       mov         [004BD230],eax
    ; 0044C59A 5F                   pop         edi
    ; 0044C59B 5E                   pop         esi
    ; 0044C59C 83 C4 0C             add         esp,0Ch
    ; 0044C59F C3                   ret
    
    @ OAFM x30100 x4B595  x30200 x4B595
    @ NAFM x30100 x4B59A  x30200 x4B59A
    { NEAR @OAFM @NAFM
      = x30100 x4B56A  x30100 x4B588  x30200 x4B56A  x30200 x4B588
    } NEAR
    Есть ещё один назойливый глюк - при входе в атмосферу сбрасываются настройки энергодиспетчера, пушек и восстанавливается полный комплект противоракетных ловушек. Как обойти, не знаю - там не зачистка счётчиков/флагов, а удаление C++'ного объекта типа "самолёт" и создание его заново. :-( Правда, "есть намёк"* - количество ракет и процент повреждений копируются из предыдущего экземпляра объекта; но как найти это место - не знаю. Кто может подсказать?
    ---------------------
    * (L) похабный анекдот про пациента у венеролога :-)
     
  12. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    тихо ржу, без комментариев...

    при помощи того же артмани... поиск последовательности значений. Потом смотришь где используется адрес этого блока. И по этому адресу смотришь код. И правишь его.
    Кстати, очень удобная методика.
     
    Genesis нравится это.
  13. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    "А раньше не надо было" (L) похабный анекдот :-)
    Нашёл. В heap'е, несколько десятков блоков (по одному на каждый столбик диаграммы энергодиспетчера, на каждую ракету, на ещё что-то...). :-(((((
    Отладчик позволяет break'нуться по записи туда; hwbrk брейчит и чтение, но только в пределах одного потока - во всяком случае, у меня при исследовании распределения энергии так и не сработал. И потом, на момент копирования адрес объекта-получателя ещё неизвестен, artmaney'ём его можно будет обнаружить только потом, в полёте. :-(
    Или имеешь в виду адрес в статике? Тут тоже не светит: адрес вида "[esi + смещение]", esi получен из [esi + смещение2], тот из [esi + смещение3]... За 4 часа невылезания из отладчика насчитал (всплыл на) 5 уровней и сбился. :-(((((
    Поздно: на найденный момент (запись указателей на элементы нового объекта "самолёт" в глобальные указатели) - старый объект уже уничтожен. :-(
    Не, ну находится-то оно элементарно: высота столбика в энергодиспетчере (процент энергии на подсистему) - int32_t от 0 до 0x100, номер позиции переключателя пушек - от 0 до 2... А толку? :-( Оно ж даже не на стеке - оно в объекте, создаваемом через intrinsic'нутый new. :-(((((
     
    Последнее редактирование: 7 мар 2014
  14. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Рыжий Тигра, блиииииннннн ! Прости, но тут идёт куча вычеркнутого внутренней цензурой мата в адрес сишников и прочих оопщиков, которые нафигачили кучу того чего сами не понимают, но при этом не умеют потом в асме нормально всё отладить...

    Тебя интересует токо код, который использует данный блок, когда он уже создан. По этому коду ты можешь отследить код, который создаёт этот блок.
    В общем: тебе надо использовать артмани дважды - до входа в атмосферу и после. Тогда ты однозначно получишь адрес кода использующего эти блоки.

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

    А вот получив доступ к коду - ты можешь подправить его, что бы он, например, не удалял старый блок, а пользовал его. Или что то куда то сообщал в твой хукер.
     
  15. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    "Использует когда создан" - понятие растяжимое: в объект типа "самолёт" лазит половина .exe'шника. Или что имеешь в виду?
    Имею предположение: ты ( ещё | так и ) не понял, что адреса этих блоков от запуска к запуску разные. Т.е. адрес блока, полученный при N-м запуске после схода с орбиты, никак не пригодится при (N+1)-м запуске перед сходом - он может пригодиться только при N-м запуске перед сходом, когда artmoney этим адресом ещё не располагает. :-(
    Static-linked. (Сорри, что приходится тебе это объяснять, - ты ж сам держал .exe'шик в руках.) Т.е. её сначала надо найти - а я пока не нашёл, т.е. не факт, что она не intrinsic. :-(
    Это-то моя хакалка как раз делает - см. команды "REPL", "ADDR", "JUMP" и "NEAR".
     
  16. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    неправильное.
    вот потому и матюгаю сишников...
    суть в том, что всё что есть в си - завязано на импорты из винды. В данном случае на функции выделения памяти под данный блок.
     
  17. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Ага. Тогда излагай дальше: как именно локализовать участок кода, обрабатывающий одновременно два heap'овых блока - один, адрес которого уже известен, и второй, однотипный с первым, адрес которого пока неизвестен?

    ---------- Сообщение добавлено в 16:14 ---------- Предыдущее сообщение размещено в 15:55 ----------

    Один раз за всю игру, сразу 4 с половиной мега. :-( Предположительно - дальше работает свой собственный (Origin'ский или библиотечный) менеджер кучи.
     
  18. Вредный

    Вредный

    Регистрация:
    25 дек 2013
    Сообщения:
    1.242
    *нагло влезает в разговор* (где-то вы уже слышали такую формулировку)
    Эх, ребята, как же простым смертным переводчикам не хватает таких крутых специалистов, как вы!
     
  19. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Э? Я что-то пропустил?

    ---------- Сообщение добавлено в 18:16 ---------- Предыдущее сообщение размещено в 17:04 ----------

    Вроде бы нашёл что-то похожее на malloc() ( 0x0049E76B в wc4dvd.exe v3.02 (который 773120 байт). И что интересного это даёт?
    Ага. Тогда излагай дальше: как именно локализовать участок кода, обрабатывающий одновременно два heap'овых блока - один, адрес которого уже известен, и второй, однотипный с первым, адрес которого пока неизвестен?
     
    Bato-San нравится это.
  20. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Рыжий Тигра, использовать в дебагере бряк по условию, десу !
     
  21. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Это был настоящий программист, сэр! (L) анекдот про Ш.Холмса и воздушный шар :-)
     
  22. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Рыжий Тигра, не, ну я понимаю, что ты не понимаешь, но ведь мог бы уже и подучиться хоть чуток. А то всё твердишь: "овсянка, сэр !" да "из овсянки, сэр !". :D
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление