Перейти к содержимому
Zone of Games Forum

Рекомендованные сообщения

Запаковал один озвученный PAL ролик обратно в .iso образ игры для теста: https://disk.yandex.ru/i/sjQYfwGfWFwgUg

 

[ОПРОС] Просмотрев видео, нужно выбрать самый подходящий голос для каждого из 8 персонажей:

Тэмплар
Люгер
Рико
Хакка
Солдат
Генерал Вотон
Генерал-лейтенант Адамс
Генерал Ленте




① https://disk.yandex.ru/i/WyJ4_upVC8o1bA


② https://disk.yandex.ru/i/jnuq8wBD9SP7BA


③ https://disk.yandex.ru/i/UPHVUJqiM0EPAw

Если:

Хакка - голос из ②
Тэмплар - голос из ②
Рико - голос из ②
Люгер - голос из ③
Солдат - голос из ①
Адамс - голос из ①
Вотон - голос из ③
Ленте - голос из ③


то видео получается таким:


④ https://disk.yandex.ru/i/QL0hwbo8deeMhA (У лохматого появляется акцент, реально , как француз.)

Вот ещё 11 вариантов голоса для Люгер:

⑤ https://disk.yandex.ru/i/z3whXFXEUQPX7A

⑥ https://disk.yandex.ru/i/FVKDMsMAheA2Ow

⑦ https://disk.yandex.ru/i/kU6sXWqCwKYZag

⑧ https://disk.yandex.ru/i/oMkyH60qr7e3_Q

⑨ https://disk.yandex.ru/i/YeFWpd9um9l0WA

⑩ https://disk.yandex.ru/i/CqewjFYdKB12eg

⑪ https://disk.yandex.ru/i/TXKC40fd6vt_dQ

⑫ https://disk.yandex.ru/i/hTBpMTrwaNXS_w

⑬ https://disk.yandex.ru/i/00J5SJ74Ur60pQ

⑭ https://disk.yandex.ru/i/d8-MsX1q4lHUPA

⑮ https://disk.yandex.ru/i/KGjkYbMbl2hm-Q

Лучше оценивать её голос по последней фразе Люгер, там в полной мере раскрывается особенность голоса.


P.S. Нет там никаких генералов-Батоновdeclare.gif, не нужно троллить хотя бы на этом форуме. Тайминги подбирались под голоса первого видео, поэтому из-за скорости произношения слов голосами из ② и ③ видео , могут быть не так же точны. Скорее всего слова , которые все голоса так и норовят произнести с акцентом, типа "отвали" "готово", придёться заменить на синонимы... И Helghast ... нейросеть произносит с неправильным ударением.

Изменено пользователем Kesovord
  • Лайк (+1) 2

Поделиться сообщением


Ссылка на сообщение
В 8/3/2024 в 03:39, Kesovord сказал:

Запаковал один озвученный PAL ролик обратно в .iso образ игры для теста: https://disk.yandex.ru/i/sjQYfwGfWFwgUg

Здравствуйте. На оригинальном диске с официальной русификацией от Софтклаба в меню “Другое” часть пунктов не переведена, а у вас все переведено. Что за iso у вас русифицированный?

Чем вы запаковываете файлы обратно в FILES.DAT?

Я нашел только скрипт quickbms для распаковки killzone FILES.DAT, но запаковка обратно будет работать только если обновленные файлы имеют не больше размер чем изначальный, может у вас есть скрипт обратной запаковки?

Скрытый текст

# Killzone (script 0.2.2)
# script for QuickBMS http://quickbms.aluigi.org

get ARCHIVE_NAME basename

get INFO_SIZE long
get DUMMY long
get DUMMY long
get DUMMY long
get ZERO long
get ZERO long

get NAMES_SIZE long
savepos OFFSET
log MEMORY_FILE OFFSET NAMES_SIZE

math OFFSET + NAMES_SIZE
goto OFFSET

get INFO_SIZE long
savepos OFFSET
log MEMORY_FILE2 OFFSET INFO_SIZE

get ENTRIES long MEMORY_FILE2
savepos OFFSET MEMORY_FILE2
set PATH string ""
set NAME string ""
putarray 0 0 0  # nested function
callfunction EXTRACT

startfunction EXTRACT
    savepos BCK_OFF MEMORY_FILE2
    goto OFFSET MEMORY_FILE2
    string PATH + NAME
    string PATH + /
    for CUR_ENTRIES = ENTRIES > 0
        get NAME_OFF long MEMORY_FILE2
        math FLAGS = NAME_OFF
        xmath NAME_OFF "NAME_OFF & ((1 << 23) - 1)"
        goto NAME_OFF MEMORY_FILE
        get NAME string MEMORY_FILE
        get OFFSET long MEMORY_FILE2
        if FLAGS & 0x80000000
            get ENTRIES long MEMORY_FILE2
            callfunction EXTRACT
        else
            callfunction HANDLE_PACK_NUM 1
            get SIZE long MEMORY_FILE2
            string NAME p "%s%s" PATH NAME
            set EXT extension NAME
            if EXT == "core" && ARCHIVE_NAME == "psp"
                goto OFFSET
                get ZERO long   # probably XSIZE64
                get XSIZE long
                reverselong XSIZE
                math OFFSET + 8
                math SIZE   - 8
                clog NAME OFFSET SIZE XSIZE
            else
                log NAME OFFSET SIZE
            endif
        endif
    prev CUR_ENTRIES
    goto BCK_OFF MEMORY_FILE2
endfunction

startfunction HANDLE_PACK_NUM
    xmath PACK_NUM "(FLAGS >> 23) & 0x1f"
    getarray LAST_PACK_NUM 0 0
    if PACK_NUM != LAST_PACK_NUM
        putarray 0 0 PACK_NUM
        get EXT extension
        if PACK_NUM == 0
            string TMP p "%s.%s" ARCHIVE_NAME EXT
        else
            string TMP p "%s%02d.%s" ARCHIVE_NAME PACK_NUM EXT
        endif
        open FDSE TMP
    endif
endfunction

 

Есть еще аудио .mss файлы с озвучкой Хелгастов и Землян, не планируете их перевести? Не знаю правда пока как распаковать-запаковать

Изменено пользователем metalor
добавил скрипт

Поделиться сообщением


Ссылка на сообщение

Скрипты quickbms для распаковки-запаковки killzone файлов локализации simpletext.dat по пути localized/russian/*

Скрытый текст

# скрипт QuickBMS распаковки simpletext.dat локализации killzone ps2

set NL binary "\x0a"        # Перенос строки (Line Feed)
# MEMORY_FILE - кодированый входной бинарный файл
# MEMORY_FILE1 - UTF-8 итоговый декодированый файл decoded_output.txt
# MEMORY_FILE2 - UTF-16LE кодированое значение одного элемента
# MEMORY_FILE3 - UTF-8 декодированное значение одного элемента
log MEMORY_FILE1 0 0

get TOTAL_SIZE asize

for
    savepos CURRENT_OFF
    if CURRENT_OFF >= TOTAL_SIZE
        break
    endif

    # 1. ID (4 байт)
    get ID_NUM long

    # 2. Длина ID Name (4 байт)
    get NAME_SIZE long
    
    # 3. Чтение ID Name
    getdstring ID_NAME NAME_SIZE

    # 4. Длина Строки (4 байт)
    get STR_SIZE long
    
    # 5. Чтение самой Строки
    getdstring RES_STR STR_SIZE

    Log MEMORY_FILE2 0 0           # Создаем чистый буфер для чтения
    PutDstring RES_STR STR_SIZE MEMORY_FILE2

    # Убедимся, что мы в начале
    Goto 0 MEMORY_FILE2
    Get STR_SIZE asize MEMORY_FILE2

    Goto 0 MEMORY_FILE2
    Get STRING_SIZE asize MEMORY_FILE2

    # --- ВНУТРЕННИЙ ЦИКЛ РАСШИФРОВКИ ---
    Log MEMORY_FILE3 0 0 # ОБЯЗАТЕЛЬНО: Очищаем буфер перед каждой новой строкой

    For 
        SavePos CurrentPos MEMORY_FILE2
        if CurrentPos >= STRING_SIZE
            break
        endif

        Get CHECK_BYTE byte MEMORY_FILE2

        if CHECK_BYTE == 0x20
            # --- ПРОБЕЛ ---
            Put 0x20 byte MEMORY_FILE3
            # Указатель уже сдвинулся на +1 командой Get CHECK_BYTE
        
        elif CHECK_BYTE == 0x01
            # --- КИРИЛЛИЦА (01 XX YY) ---
            # Возвращаемся, чтобы прочитать блок целиком
            Goto CurrentPos MEMORY_FILE2
            Get RAW_VAL ThreeByte MEMORY_FILE2 
            # Теперь указатель сдвинулся на +3 от CurrentPos

            # Математика (B_HI/B_LO)
            Math B_HI = RAW_VAL
            Math B_HI >>= 16
            Math B_HI &= 0xFF
            Math B_LO = RAW_VAL
            Math B_LO >>= 8
            Math B_LO &= 0xFF
            
            Math CharCode = B_HI
            Math CharCode <<= 8
            Math CharCode |= B_LO
            
            # UTF-8 конвертация
            Math B1 = CharCode
            Math B1 >>= 6
            Math B1 &= 0x1F
            Math B1 |= 0xC0
            Math B2 = CharCode
            Math B2 &= 0x3F
            Math B2 |= 0x80
            
            Put B1 byte MEMORY_FILE3
            Put B2 byte MEMORY_FILE3
            
        else
            # --- ЛЮБОЙ ДРУГОЙ СИМВОЛ (ASCII) ---
            Put CHECK_BYTE byte MEMORY_FILE3
            # Указатель уже сдвинулся на +1
        endif
        
        # Для отладки (чтобы видеть прогресс в консоли)
        SavePos NewPos MEMORY_FILE2
        # print "Pos: %CurrentPos% -> %NewPos% / %STRING_SIZE%"
    Next



     # 1. Узнаем размер данных
    Get UTF8_SIZE asize MEMORY_FILE3

    # 2. Переходим в начало
    Goto 0 MEMORY_FILE3

    # 3. Считываем данные как строку (DString читает до конца или до нулевого байта)
    GetDString MY_TEXT_OUTPUT UTF8_SIZE MEMORY_FILE3

    # Форматируем строку: ID(hex) X Name Y String + Перенос
    # %04X — это 16-ричный формат, минимум 4 символа
    string LINE p "%04X %d %s %d %s" ID_NUM NAME_SIZE ID_NAME STR_SIZE MY_TEXT_OUTPUT
    print "%LINE%"

    # Записываем строку в память
    string LINE + NL # Убеждаемся, что это строка
    strlen LINE_LEN LINE
    
    # 1. Узнаем текущий размер MEMORY_FILE1, чтобы прыгнуть в конец
    get OFFSET_TO_WRITE asize MEMORY_FILE1
    goto OFFSET_TO_WRITE MEMORY_FILE1

    # 2. Записываем строку
    putdstring LINE LINE_LEN MEMORY_FILE1
next

# Сохраняем всё, что накопили в памяти, в итоговый файл
get FINAL_SIZE asize MEMORY_FILE1
log "decoded_output.txt" 0 FINAL_SIZE MEMORY_FILE1
Скрытый текст

# скрипт QuickBMS заспаковки в simpletext.dat локализации killzone ps2
# Инициализируем файл в памяти для записи результата
log MEMORY_FILE 0 0

# Узнаем общий размер входного текстового файла
get FSIZE asize

do
    # 1. Читаем ID до пробела (4 символа, например "04FA")
    getCT ID_HEX_TEXT string 0x20

    # ИСПРАВЛЕНО: Правильный синтаксис оператора 'p'
    string ID_HEX_TEXT p "0x%s" ID_HEX_TEXT 
    set ID_NUM ID_HEX_TEXT       # Теперь ID_NUM содержит числовое значение
    
    # 2. Читаем размер имени X (до пробела)
    getCT X_STR string 0x20
    set X_SIZE X_STR
    
    # 3. Читаем само имя длиной X
    getdstring ID_NAME X_SIZE
    get DUMMY byte               # Пропускаем пробел после ID_NAME
    
    # 4. Читаем размер строки Y (до пробела)
    getCT Y_STR string 0x20
    
    # 5. Читаем саму строку до символа перевода (LF / 0x0A)
    getCT RES_LINE string 0x0a
    strlen STR_SIZE RES_LINE

    print "%ID_HEX_TEXT% %ID_NUM% %X_STR% %X_SIZE% %ID_NAME% %Y_STR% %STR_SIZE% %RES_LINE% 777777"

    Log MEMORY_FILE2 0 0           # Создаем чистый буфер для чтения
    PutDstring RES_LINE STR_SIZE MEMORY_FILE2

    # Убедимся, что мы в начале
    Goto 0 MEMORY_FILE2
    Get STR_SIZE asize MEMORY_FILE2

    # --- ВНУТРЕННИЙ ЦИКЛ ШИФРОВКИ ---
    Log MEMORY_FILE3 0 0 # ОБЯЗАТЕЛЬНО: Очищаем буфер перед каждой новой строкой

    For 
        SavePos CurrentPos MEMORY_FILE2
        if CurrentPos >= STR_SIZE
            break
        endif

        Get B1 byte MEMORY_FILE2


        # ОБРАБОТКА КИРИЛЛИЦЫ (UTF-8 последовательности D0/D1)
        if B1 >= 0xD0 && B1 <= 0xD1
            Get B2 byte MEMORY_FILE2
            string B1_HEX p "%02X" B1
            string B2_HEX p "%02X" B2
            print "%B1_HEX%%B2_HEX%"
            
            # Восстанавливаем Unicode CharCode
            Math T1 = B1
            Math T1 &= 0x1F
            Math T1 <<= 6
            Math T2 = B2
            Math T2 &= 0x3F
            Math CharCode = T1
            Math CharCode |= T2
            
            # Разбиваем на HI/LO (как в исходном скрипте)
            Math B_HI = CharCode
            Math B_HI >>= 8
            Math B_HI &= 0xFF
            Math B_LO = CharCode
            Math B_LO &= 0xFF
            
            # Записываем структуру: 01 + LO + HI 
            # (Проверьте порядок LO/HI, если в игре буквы поменяются местами)
            Put 0x01 byte MEMORY_FILE3
            Put B_LO byte MEMORY_FILE3
            Put B_HI byte MEMORY_FILE3
            string B_LO_HEX p "%04X" B_LO
            string B_HI_HEX p "%04X" B_HI
            print "01 %B_LO_HEX% %B_HI_HEX%"
            
        # ОБЫЧНЫЕ ASCII СИМВОЛЫ (Латиница, цифры)
        else
            Put B1 byte MEMORY_FILE3
            string B1_HEX p "%02X" B1
            print "%B1_HEX%"
        endif
        
        # Для отладки (чтобы видеть прогресс в консоли)
        SavePos NewPos MEMORY_FILE2
    Next



     # 1. Узнаем размер данных
    Get UTF16_SIZE asize MEMORY_FILE3

    # 2. Переходим в начало
    Goto 0 MEMORY_FILE3

    # 3. Считываем данные как строку (DString читает до конца или до нулевого байта)
    GetDString MY_TEXT_OUTPUT UTF16_SIZE MEMORY_FILE3

    # Записываем строку в память
    string LINE + NL # Убеждаемся, что это строка
    strlen LINE_LEN LINE

    # --- ЗАПИСЬ В БИНАРНЫЙ ФОРМАТ (в MEMORY_FILE) ---
    
    # Записываем ID (4 байт)
    put ID_NUM long MEMORY_FILE
    
    # Записываем размер ID имени строки (4 байт)
    put X_SIZE long MEMORY_FILE
    
    # Записываем само ID имя строки (X байт)
    putdstring ID_NAME X_SIZE MEMORY_FILE
    
    # Записываем Y размер строки в байт
    put UTF16_SIZE long MEMORY_FILE
    
    # Записываем строку (Y байт)
    putdstring MY_TEXT_OUTPUT UTF16_SIZE MEMORY_FILE
    
    savepos CUR_POS
while CUR_POS < FSIZE

# Сохраняем результат
get BIN_SIZE asize MEMORY_FILE
log "decoded_output.bin" 0 BIN_SIZE MEMORY_FILE

 

 

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас популярно

  • Продвигаемые темы

  • Последние сообщения

    • Join-Path : Cannot find drive. A drive with the name 'E' does not exist.
      At C:\Users\User\Downloads\Jazzpunk Localization 1.4 Public\INSTALL.PS1:31 char:26
      +             $candidate = Join-Path $r $s
      +                          ~~~~~~~~~~~~~~~
          + CategoryInfo          : ObjectNotFound: (E:String) [Join-Path], DriveNotFoundException
          + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.JoinPathCommand         что делать    похоже сам бог не хочет чтобы я играл в джаспанк(((((  
    • Русский перевод Knights in the Nightmare для Nintendo DS (USA). Статус: в разработке. Текущая тестовая сборка: v0.1.23. О переводе В текущую сборку включены переводы сюжетных реплик, обучения и вступления, меню и части графического интерфейса. Также переведены названия глав, семь карточек классов, имена персонажей и подписи типов противников. Названия оружия и личных вещей сохранены на английском языке. Работа продолжается: остаются отдельные английские подписи и графические подсказки интерфейса, контекстная редактура диалогов и проверка сюжетных развилок. Это ещё не окончательный полный перевод.   Переводом занимается мощная модель ИИ, за которую плачу огромную сумму денег. ИИ не просто переводит, предварительно составляет досье по персонажам, диалогам, их настроение и т.п. Учитывает многие вещи. Выстраивает диалоги, перечитывает. Самостоятельно прогнал запуск игры и проверил шрифты и т.п. Моя цель подарить людям переводы старых малопопулярных игр. А профи пусть занимаются крупными.  Скачать: Knights in the Nightmare RU v0.1.23 — Яндекс Диск Скриншоты перевода  
    • Ага, догнать, догоните вы его, щас он блины от штанги с карманов скинет, и так газу поддаст, что всю планету оббежит и сам вас догонит. 
    • Ну мало ли, а вдруг там бац и Питонио окажется или кот Мирослава с фразой типа “а вот и не угадали”. Не, сначала надо догнать, перегнать и обернуться, чтобы узнать, кто там был, ага.
    • Такой возможности нет. Может кто-то другой зальёт.
    • Даскер это, точно говорю, раз догнать не можете, точно он, ибо более великого бегуна чем он, тут точно нет.
    • Вот когда догоним, тогда и узнаем, кого мы догоняем. Пока ж не догнали, а со спины не понятно. Возможно “того, кого нельзя называть”, но это не точно.
    • @squallsama а можешь на яндекс, гугл, мэйл и т.п. залить, а то этот сайт чет не открывает у меня?
    • UPDATE 4: Вышел апдейт от разработчиков: Квест с билетами на воздушный шар у мэра. Добавлено действие, которое отмечает, что билеты у мэра. Поменялась логика окончания пары катсцен, и обновилась подсказка 11.5 («Нужно раздобыть билет мэра на воздушный шар»), хотя её текст не изменился. Похоже, исправили ситуацию, в которой квест мог застрять. Около 10 объектов на сценах (забор днём и ночью, фургон собачника, грязь, сарай, развевающаяся ткань, облака): скорее всего, правили их расположение, слои или видимость. Около 20 внутренних переменных и значений: случайные выкрики, вопросы про собак в собачнике, звук шагов, стадии чистки дымохода. Мелочи: отрисовка титров и гроссбуха, одна проверка при осмотре предмета. Всё в бусти.
    • @piton4 приключения няши в пустыне   
  • Изменения статусов

    • edifiei

      «Как говорил мой дед — делай добро и пихай его в гнома»
      · 0 ответов
    • goosemose  »  Orionus

      Здраствуйте
      Хотел спросить за руссификатор для Dragon Quest 3, есть ли бесплатный для пк? Или только платный недавно купил ее в стиме, думал что на пк есть руссификатор, уже некоторое время ищу и нахожу либу пустые файлы либо платные, хотя по коментариям вроде видно что был на пк бесплатный перевод.
      Подскажите пожалуйста.
       
      · 0 ответов
    • axe66  »  SerGEAnt

      здравствуйте. можете добавить на сайт раздел для игры She’s Leaving и русификатор к нему? и как и куда вам скинуть фото и сам русификатор?
      [h2] Версия: 1.0.1 (от 22.05.2026)
      Совместимость: для сборки 20909321 [/h2]
       Информация:
      Машинный перевод моделью gemma2:9b-instruct с несколькими этапами автоматической перепроверки (модель "самопроверялась") и финальными ручными правками.
      Это не финальная версия — по мере нахождения ошибок перевода будут выходить обновления.
      Известные нюансы:
      * Возможны неточности и ошибки в переводе.
      * Некоторые элементы интерфейса остались без перевода.
       Установка:
      1. Запустить Russifier.exe
      2. Нажать "Выбрать папку"
      3. Выбрать папку с игрой и нажать ОК
      4. Нажать "Установить"
      5. Дождаться завершения установки и закрыть программу.
      После установки запустите игру и наслаждайтесь!
      Если заметили ошибки или некорректные формулировки — оставляйте комментарии, будем исправлять!
       
      Автор: Serjik Sokolov История изменений:   Версия 1.0.1 от 22.05.2026 - Установщик теперь автоматически определяет корневую папку игры, даже если случайно выбрана вложенная папка.   Версия 1.0.0 от 03.12.2025 - Релиз
      · 1 ответ
    • Perfect End Strange  »  SerGEAnt

      Привет, озвучку для Silent Hill 4: The Room выпустил энтузиаст под ником Perfect End Strange, а вы написали совсем другую студию, пожалуйста, исправьте эту оплошность
      · 0 ответов
  • Лучшие авторы


×