Перейти к содержимому
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

 

 

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

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

  • Изменения статусов

    • 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 ответов
    • Jimmi Hopkins  »  SerGEAnt

      я его уже открыл в свободный доступ, чтобы не потерялось среди новинок
      · 0 ответов
    • NekoNya  »  Onzi

      https://www.dropbox.com/scl/fi/4xncxr2tqy77vz4644q08/text_RU_FINAL.json?rlkey=xckxss3jkql4gjmc1ah6qjb5e&st=k5ql651f&dl=0 
       
      Вот, то что вышло. Извинюсь, что зря говорил, что помогу (
      · 2 ответа
    • serfly  »  SerGEAnt

      Доброго времени! Недавно столкнулся с проблемой автоперевода XUnity AutoTranslator BeplnEx iL2cc. Пару последних лет часто пользовался, теперь консольные команды виснут на стадии загрузки библиотек, хотя они есть там изначально. На GitHub есть подобные вопросы, но ни одного рабочего ответа я не нашел. А Вы что можете посоветовать?
      · 0 ответов
  • Лучшие авторы


×