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. Sherhan007

    Sherhan007

    Регистрация:
    9 июл 2013
    Сообщения:
    214
    Рыжий Тигра, ты же балакаешь по ангельски, попросил бы чтоли HCl чтобы он поправил treman для потрошения Wc3 & Wc4.
     
  4. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Фигово. :-( Мне быстрее самому пошаманить, чем просьбу сочинить. А HCl давно такую разделывалку сделал, как раз же ж и называется xtre.
    Кстати, что может быть за фигня: компилю её в debug - работает, в release - падает сразу после работы распаковщика номер два - при записи распакованного, притом с воплем "инвалидный аргУмент" в функции fwrite(). Написал свою (на базе тех же готовых распаковщиков, но без лишних гонок по винту - сразу читаю весь исходный .tre-файл) - та же байда и даже падает там же с той же ошибкой. Не понимаю! :-(
    В общем, пока забросил: debug'ной версией распаковалось - и ладно. Пока перелётываю уже лётанное, фиксирую все .iff'ы, которые гейма подчитывает из language.tre, и комментю - какой когда требуется и по какому путю по заголовкам до него добраться. Чтобы знать, какой к какому вылету относится и (если это радиосвязь) чьим голосом переводить. :-)
    Параллельно сочиняю декомпилятор .iff'ов в текст и компилятор текста обратно в .iff'ы, уже почти придумал формат текстового файла. :-)
     
  5. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    В дебаге вероятно все переменные инициализированы, как ноль. В релизе такого нет. И программа пытается работать с чем-то, что не было инициализировано, но имеет ненулевое значение.
     
  6. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Проверял. В MSVC6 - как 0xСССССССС (или 0xCDCDCDCD, не помню) - в любом случае это либо указатель в последний гиг (в ядро), либо три с чем-то гига длины/счётчика, либо прерывание. :-(
     
  7. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Рыжий Тигра, это неинициализированная переменная. Там может быть всё что угодно. Мне сложно так гадать, что у тебя неинициализировано, просто возьми за правило инициализировать ВСЁ и ВСЕГДА. Обязательно проверяй на возвращаемые ошибки критически важные места типа fopen. Если у тебя fopen не сработал, то fwrite с этой файловой рукояткой(C) (handle) конечно не будет работать.
     
    Bato-San нравится это.
  8. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Steel Rat, всё проверил и всё проверяется при выполнении, вот этот кусок (в конце цикла):
    Код:
    // decompression functions from HCl aka Mario Brito:
    void xtre_decompress( void *src, void *dst, uint32_t dst_size1, uint32_t dst_size2 );
    void xtre_decompress_2( void *src, void *dst, uint32_t dst_size, void *tmp_buf );
    // extra decompression buffer for xtre_decompress_2():
    #define EXTRA_BUF 100000
    ..........................
    	// for xtre_decompress* allow writing to variables in code segment:
    	VirtualProtect( (char *) xtre_decompress - 0x24, 0x24, PAGE_EXECUTE_READWRITE, &old_compr_prot );
    	VirtualProtect( (char *) xtre_decompress_2 - 0x50, 0x50, PAGE_EXECUTE_READWRITE, &old_compr2_prot );
    .........................
    		data = tbuf + dataoff;
    // uncompress file if need:
    		if ( comp == HDR3_TYPE_COMP1 ) {
    			if ( ( uncomp = malloc( len ) ) == NULL ) {
    decomp_err:
    				printf( "Error allocating memory for decompressing file\n" );
    				goto err3;
    				continue;
    			}
    			xtre_decompress( data, uncomp, len, len );
    			data = uncomp;
    		} else if ( comp == HDR3_TYPE_COMP2 ) {
    			if ( ( uncomp = malloc( len + EXTRA_BUF ) ) == NULL )
    				goto decomp_err;
    			xtre_decompress_2( data, uncomp, len, uncomp + len );
    			data = uncomp;
    		}
    // write data:
    		iff_ext = get_ext( data );
    		sprintf( iff_fn, "%s\\%08x.%s", trename, dataoff, iff_ext );
    		if ( ( iff_f = fopen( iff_fn, "wb" ) ) == NULL ) {
    			printf( "Error creating %s: ", iff_fn ); perror( NULL );
    			goto err3;
    			if ( uncomp != NULL ) free( uncomp ); continue;
    		}
    		if ( fwrite( data, 1, len, iff_f ) < len ) {
    			printf( "Error writing %s: ", iff_fn ); perror( NULL );
    			goto err4;
    			fclose( iff_f ); if ( uncomp != NULL ) free( uncomp ); continue;
    		}
    		fclose( iff_f ); if ( uncomp != NULL ) free( uncomp );
    		fprintf( df, "%08x.%s %7d h1: %04x h3: %04x%s%s%s\n",
    			dataoff, iff_ext, len, h1off, h3off, comp_type, comp_ratio, h2_detail );
    	}
    
    Падает только release и только после прохода через ветку с ф-цией xtre_decompress_2(). Увеличение буфера (4-й параметр) и увеличение стека не помогают. :-(
    Единственное слабое место - сами распакивательные функции (выдраны с мясом из совершенно третьего .exe'шника и оформлены как .obj'и, линкер вроде ничего против не имеет) и их прототипы (у HCl'а отсутствуют, я восстанавливал по вызовам в его исходнике).
    Или тёртый стек. Возможно, даже тёртый код, - во всяком случае, break'нуться не удалось, всё нахрен зависает. :-(
    PS. При вылете fwrite() пару раз лицезрел строку, выведенную printf( "Error writing %s: ", iff_fn )'ом, с мусором вместо имени. :-(
    :banghead:
     
  9. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Чудеса иногда бывают, конечно, но редко. Вряд ли они могут быть в этом коде.

    if ( comp == HDR3_TYPE_COMP1 ) {}
    else if ( comp == HDR3_TYPE_COMP2 ) { }

    Возможно ли что comp не равен ни одному, ни второму в какой-то итерации цикла? Поставил бы ты там ещё один else или сделай switch.
     
  10. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

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

    В общем, не бери в голову. Сжатые методом 2 .iff'ы debug'ной версией распаковались, внутри явных косяков не видно, цепочки блоков вяжутся, длины совпадают - и слава кришне. Мне сейчас куда интереснее декомпилятор этих самых .iff'ов в текст - там внутри стооолько неизвестного и неоднозначного!.. :-)
     
  11. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    В UTT, кстати, есть уже алгоритмы работы с iff. С их помощью сделано чтение картинок LBM. Только вот работа с IFF архивами Origin была только начата и, если не ошибаюсь, было сделано только чтение структуры. К сожалению, не до UTT мне сейчас.
     
  12. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Не знаю, кто это?
     
  13. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
  14. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    А-аа. Не, в Lua я не рублю. :-( Не страшно, за пару дней основную разгребалку налабаю.
     
  15. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    А я и не предлагаю. Не готово потому что. =)
     
  16. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Где-то примерно так:

    cb720053aa7bd42b08c4eb49d1082a8c.png

    bc85471af31e93a91bac75c9c47996fd.png

    9e65a8465f360976c25f259e76832394.png
     
    ThisSuXX, A.P.$lasH, kirik-82 и 5 другим нравится это.
  17. Sherhan007

    Sherhan007

    Регистрация:
    9 июл 2013
    Сообщения:
    214
    И текстовку уже всю выдрал? Рус.текст подставляется или смог засунуть в iff?
     
  18. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

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

    Upd: Вот, например, так выглядит раздизассемблированный и поправленный .iff с менюшкой для радиосвязи:
    Код:
    +IFFF 1368 ; -- 2013-09-26 12:41:55
      +FORM ASKS
        +ENGL
          $ 100 ; $ 0x64
    ;        "What's your status?
            "Доложи состояние
    ;        "Запрос о повреждениях
          $ 101 ; $ 0x65
    ;        "Need clearance
            "Прошу посадку
          $ 102 ; $ 0x66
    ;        "Break and attack
            "Отрывайся и атакуй
          $ 103 ; $ 0x67
    ;        "Form on my wing
            "Стройся ко мне
          $ 104 ; $ 0x68
    ;        "Attack my target
            "Атакуй мою цель
          $ 105 ; $ 0x69
    ;        "Return to base
            "Уходи на базу
          $ 106 ; $ 0x6A
    ;        "Help me out here
            "Прикрой меня
          $ 107 ; $ 0x6B
    ;        "Keep radio silence
            "Соблюдай радиомолчание
          $ 108 ; $ 0x6C
    ;        "Lift radio silence
            "Связь разрешаю
          $ 131 ; $ 0x83
    ;        "Affirmative
            "Подтверждаю
          $ 132 ; $ 0x84
    ;        "Negatory
            "Отрицаю
          $ 116 ; $ 0x74
    ;        "Taunt Enemy
            "Облаять
        -ENGL
        ! 2
    ;    +GERM
    ;      $ 100 ; $ 0x64
    ;        "Ihr Status
    ;      $ 101 ; $ 0x65
    ;        "Landeerlaubnis
    ;      $ 102 ; $ 0x66
    ;        "L\x94sen und angreifen
    ;      $ 103 ; $ 0x67
    ;        "Formation bilden
    ;      $ 104 ; $ 0x68
    ;        "Mein Ziel angreifen
    ;      $ 105 ; $ 0x69
    ;        "Zur\x81ck zur Basis
    ;      $ 106 ; $ 0x6A
    ;        "Helfen Sie mir
    ;      $ 107 ; $ 0x6B
    ;        "Funkstille wahren
    ;      $ 108 ; $ 0x6C
    ;        "Funkstille aufheben
    ;      $ 131 ; $ 0x83
    ;        "Jawohl
    ;      $ 132 ; $ 0x84
    ;        "Negativ
    ;      $ 116 ; $ 0x74
    ;        "Gegner reizen
    ;    -GERM
    ;    ! 2
    ;    +FREN
    ;      $ 100 ; $ 0x64
    ;        "Votre statut ?
    ;      $ 101 ; $ 0x65
    ;        "Demande atterrissage
    ;      $ 102 ; $ 0x66
    ;        "Dispersion, attaque
    ;      $ 103 ; $ 0x67
    ;        "En formation
    ;      $ 104 ; $ 0x68
    ;        "Attaquez ma cible
    ;      $ 105 ; $ 0x69
    ;        "Rentrez \x85 la base
    ;      $ 106 ; $ 0x6A
    ;        "Aidez-moi !
    ;      $ 107 ; $ 0x6B
    ;        "Gardez silence radio
    ;      $ 108 ; $ 0x6C
    ;        "Contact radio permis
    ;      $ 131 ; $ 0x83
    ;        "Affirmatif
    ;      $ 132 ; $ 0x84
    ;        "N\x82gatif
    ;      $ 116 ; $ 0x74
    ;        "Provoquez ennemi
    ;    -FREN
    ;    ! 2
      -FORM ; ASKS
    -IFFF 1368
     
    Последнее редактирование: 26 сен 2013
    Sherhan007 и kirik-82 нравится это.
  19. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Имею вопрос к многоуважаемой публике и коллегам-переводчикам. Стоит ли лезть из штанов, вылизывая сортировку списков лётного состава?
    На killboard'е всё просто - кто больше настрелял, тот в списке первый:
    [​IMG]
    А в панели выбора ведомых - в списке каша:
    [​IMG] [​IMG]
    Проверил - ничего похожего на collate tables не нашёл; порядок сортировки - по кодам букв, для только прописной кириллицы это получается АВСЕНIКМОPTXЄҐЎЁЇБГДЖЗИЙЛПУФЦЧШЩЪЫЬЭЮЯ, а с учётом строчных всё ещё хуже. :-(((((
    С другой стороны, если сделать по-человечески АБВГҐДЕЁЄЖЗИІЇЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯ - и трахоёмко, и шрифтовые файлы раздуются (а кабы wc4dvd от этого не упал по memory heap corrupt, были уже пренценденты), и кодировка съедет нахрен, как и крыша у пытающегося прочитать такое в собранном бинарнике. С третьей стороны - можно, конечно, по возможности придерживаться общепринятой кодировки 1251, но тогда и сортировки толком не будет (украинские-белорусские буквы и часть русских строчных букв оказывается перед прописными), и размер шрифтов вырастет, и трахоёмкости не сильно убавится. Проблема! :-(

    Зато сюрприз для желающих уже прямо сейчас попробовать, не дожидаясь полноценного выпуска:Само собой, тапки за косяки весьма приветствуются.
     

    Вложения:

    Последнее редактирование: 30 сен 2013
    Sherhan007 и kirik-82 нравится это.
  20. Sherhan007

    Sherhan007

    Регистрация:
    9 июл 2013
    Сообщения:
    214
    Думаю не надо лезть из штанов усложняя сущности.
     
    kirik-82, jack7277, Рыжий Тигра и ещё 1-му нравится это.
  21. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    На бест-репаке подсказали: статус "есть" заменить на "в строю", "болен" - тоже на что-ньдь. В оригинале было "SICK"; как мне каэцца, это скорее от слова "off-sick", то бишь "на больничном" - обычно бывает с лётчиком после катапультирования. Как бы это поизящнее по-русски выразить в пределах 6-7 букв, кто подскажет?
     
  22. Sherhan007

    Sherhan007

    Регистрация:
    9 июл 2013
    Сообщения:
    214
    "Перепил" :yes:
     
    Genesis нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление