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

Cursed Mountain

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

enpy_cursed_mountain.jpg

Cursed Mountain

Русификация (Версия от 26.02.2010)

_______________________________________________________

Скачано с сайта: ENPY Studio

Адрес: http://enpy.net/

E-Mail: mailto:enpy@enpy.net

Авторы перевода:

«ENPY Studio» (http://enpy.net/)

ENPY - тестирование, сборка

Endragor - разбор ресурсов, программист

Manfis - главный переводчик

MaxxxEx - переводчик

MeteoraMan - руководитель проекта, шрифты, корректор

SeregaTLT - переводчик

SыREgA - корректор

tiberium23 - переводчик

Отдельное спасибо enz°.

_______________________________________________________

ТРЕБОВАНИЯ:

Версия игры: любая.

_______________________________________________________

УСТАНОВКА:

Следуйте инструкциям инсталлятора. Установка полностью автоматическая.

_______________________________________________________

УДАЛЕНИЕ:

Зайдите в директорию Install_Rus и запустите файл unins***.exe.

_______________________________________________________

ИСТОРИЯ ИЗМЕНЕНИЙ:

Версия от 26.02.10

• Первая версия

_______________________________________________________

ENPY Studio

Copyright © 2010

Скачать можно здесь:

http://enpy.net/forum/index.php?autocom=do...amp;showfile=54

Изменено пользователем LMax

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


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

Если кто то возьмётся переводить, просьба отписаться. Есть ли смысл скачивать игру и следить за этой темой?

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


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

В России не один издатель локализовывать её небудет

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


Ссылка на сообщение
В России не один издатель локализовывать её небудет

Если кто то возьмётся переводить (из наших команд переводчиков игр или одиночных переводчиков) , просьба (для них) отписаться. Есть ли смысл скачивать игру (в английские версии не играю и будет только занимать место на харде) и следить за этой темой? (впустую надеяться)

Ну, так понятнее?

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


Ссылка на сообщение
Если кто то возьмётся переводить (из наших команд переводчиков игр или одиночных переводчиков) , просьба (для них) отписаться. Есть ли смысл скачивать игру (в английские версии не играю и будет только занимать место на харде) и следить за этой темой? (впустую надеяться)

Ну, так понятнее?

:russian_roulette:

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


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

DUGLAS9999

Когда/Если сделают русик, тогда и скачаешь игру.

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


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

Кто не собирается принимать участия в русификации лучше не следите вообще за темой, перед выходом русификатора шум точно будет - не пропустите. А просто флудить, показывая своё желание поиграть на русском, не стоит :)

И тайком переводить точно никто не будет - начало работ тоже заметите. Что кто-то начал перевод сообщений нет, значит и надеяться пока не на что.

Лучше помогите файлы data\ktm_pc_lang*.dat разобрать, а не выспрашивайте всякой ерунды :)

Изменено пользователем enz°

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


Ссылка на сообщение
Кто не собирается принимать участия в русификации лучше не следите вообще за темой, перед выходом русификатора шум точно будет - не пропустите. А просто флудить, показывая своё желание поиграть на русском, не стоит :)

И тайком переводить точно никто не будет - начало работ тоже заметите. Что кто-то начал перевод сообщений нет, значит и надеяться пока не на что.

Лучше помогите файлы data\ktm_pc_lang*.dat разобрать, а не выспрашивайте всякой ерунды :)

Залей их на обменник, будем смотреть -_-

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


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

Вот, Aluigi написал BMS скрипт, для распаковки ресурсов.

 

Spoiler

# Cursed Mountain

# script for QuickBMS http://aluigi.org/papers.htm#quickbms

get SIGN long # 0xd2f17e00

getdstring DAT_NAME 32

get FILES long

get EVER1 long

get BASE_OFF long

get ENTRY_SIZE long

get INFO_OFF long

math NAMESZ = ENTRY_SIZE

math NAMESZ -= 24

set FOLDER_OFF long 0x40

math INFO_OFF += FOLDER_OFF

math BASE_OFF += INFO_OFF

goto INFO_OFF

for i = 0 < FILES

savepos TMP

get CRC long

get FOLDER long

get OFFSET long

get ZSIZE long

get SIZE long

get ZIP long

getdstring NAME NAMESZ

savepos TMP

math FOLDER += FOLDER_OFF

goto FOLDER

get FULLNAME string

goto TMP

string FULLNAME += NAME

math OFFSET += BASE_OFF

if ZIP == 0

log FULLNAME OFFSET SIZE

else

clog FULLNAME OFFSET ZSIZE SIZE

endif

next i

Игра подхватывает распакованные файлы.

Текст находится в файле OneTimeInit.dat, а шрифт в KTM_pc.dat

Написал вместо New Game - Загрузить, и вот что получилось:

 

Spoiler

bd6274d2455a.jpg

Нужно, чтобы кто-то разобрался со шрифтом.

upd: Разобрался со шрифтом, в игру уже оказывается встроен русский шрифт.

 

Spoiler

608734c0ff5c.jpg

Можно начинать переводить :D

Изменено пользователем John2s

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


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

Вопрос не по теме - а раз русский шрифт там встроен изначально, то есть шанс, что у нас ее в ближайшее время кто-то издаст?

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


Ссылка на сообщение
Вопрос не по теме - а раз русский шрифт там встроен изначально, то есть шанс, что у нас ее в ближайшее время кто-то издаст?

наличие шрифта встроенного никак не относится к скорости локализации) которую кстати на сколько я знаю никто пока выпускать не собирается)

ну-с, кто возьмётся за сие творенье?)

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


Ссылка на сообщение
Вопрос не по теме - а раз русский шрифт там встроен изначально, то есть шанс, что у нас ее в ближайшее время кто-то издаст?

Локализаторов нет тк изначально игру делали эксклюзивно для Wii (Новый Диск).

Цитата не в тему :smile: "По словам разработчиков, они вдохновлялись другим survival horror для Wii - Sadness."

Изменено пользователем SerGEAnt

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


Ссылка на сообщение
ну-с, кто возьмётся за сие творенье?)

А много там?)

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

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

    • Люди, подскажите, какой русификатор на lost judgment самый более-менее цивильный? И если есть возможность, скиньте его ссылкой в ЛС.
    • Игрушка вроде красочная, но отзывы: что очень глупый сюжет. Юмора вроде достаточно, но как ИИ справился с его адаптацией?
      Меня отпугнуло больше количество голубцов, которое якобы в игре присутствует (судя по отзывам). Я не гомофоб, но все же...
    • Это чтобы наши с Мирославом жопы горели в унисон?
    •  что это.   Нет, я помню что что-то  такое писал, но мать твою.... Кратковременный пик это то, что может не засеч мониторинг если у тебя там не а 1/10 сек строчит. Я слышал, что у 5090 это может быть 1200-1300w.
    • Ну к слову, я в основном играю c достаточно серьезным андервольтом снижающем постоянное потребление с 330w до 250w но теперь мне охота посмотреть будут ли тикие пики под 600w или хотя бы 400-500w
    • Будет ли апдейт под 2.0?
    • //------------------------------------------------ //--- 010 Editor Binary Template // // File:        Asura_TXTH.bt // Authors: Giza+AI // Description: Asura Engine Text Resource (.ASRBE / .ASR / TXTH chunk) // File Mask:   *.ASRBE,*.asr,*.bin // ID Bytes:    41 73 75 72 61 20 20 20 54 58 54 48 // "Asura   TXTH" //------------------------------------------------ BigEndian(); // ------------------------------------------------ // Header Definition (36 bytes / 0x24) // ------------------------------------------------ struct HEADER {     char   magic[8]        <comment="Engine signature: 'Asura   '">;     char   chunkType[4]    <comment="Chunk signature: 'TXTH' (Text Header)">;     uint32 chunkSize       <comment="Total size of remaining chunk payload (FileSize - 24)">;     uint32 version         <comment="Structure version (typically 1)">;     uint32 flags           <comment="Resource flags">;     uint32 entryCount      <comment="Number of localized string entries">;     uint32 archiveHash     <format=hex, comment="Archive/File 32-bit Hash ID">;     uint32 totalTextBytes  <comment="Total raw byte size of all UTF-16 text data">; } header <style=sHeading1>; // ------------------------------------------------ // Localized Text Entry // ------------------------------------------------ typedef struct {     uint32  keyHash   <format=hex, comment="32-bit hash identifier for the key name">;     uint32  charCount <comment="String length in UTF-16 characters (including null terminator)">;     wchar_t text[charCount] <comment="UTF-16BE encoded text">;          // 4-byte padding alignment     local int textBytes = charCount * 2;     if ((textBytes % 4) != 0) {         ubyte padding[4 - (textBytes % 4)] <comment="Alignment padding">;     } } TEXT_ENTRY <read=ReadTextEntry>; wstring ReadTextEntry(TEXT_ENTRY &entry) {     return entry.text; } // ------------------------------------------------ // Text Entries Table // ------------------------------------------------ struct TEXT_ENTRIES {     TEXT_ENTRY entries[header.entryCount] <optimize=false>; } textEntries <style=sSection1>; // ------------------------------------------------ // Key Names Table (ASCII / null-delimited) // ------------------------------------------------ typedef struct {     string keyName <comment="Identifier key corresponding 1-to-1 with entry index">; } KEY_ENTRY <read=ReadKeyEntry>; string ReadKeyEntry(KEY_ENTRY &k) {     return k.keyName; } struct KEY_TABLE {     uint32 keyTableSize <comment="Total size in bytes of raw string table">;     KEY_ENTRY keys[header.entryCount] <optimize=false>;          // Remaining alignment padding to EOF (aligned to 16 bytes)     if (!FEof()) {         ubyte filePadding[FileSize() - FTell()] <comment="End-of-file padding">;     } } keyTable <style=sSection2>;   на основе этого ии написал пайтон скрипт:
        #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Asura Engine TXTH (.ASRBE) Text Exporter & Importer Supports Big-Endian Asura text archives (PS3 / Xbox 360). """ import sys import os import struct import json import argparse def export_asrbe(file_path, output_path=None): if output_path is None: output_path = os.path.splitext(file_path)[0] + ".json" with open(file_path, "rb") as f: data = f.read() if len(data) < 36: raise ValueError("File is too small to be a valid ASRBE file.") magic = data[:8].decode("latin1") chunk_type = data[8:12].decode("latin1") if magic != "Asura " or chunk_type != "TXTH": raise ValueError(f"Invalid header signature: {magic!r} / {chunk_type!r}") chunk_size, version, flags, entry_count, archive_hash, total_text_bytes = struct.unpack(">IIIIII", data[12:36]) offset = 36 entries_data = [] for i in range(entry_count): key_hash, char_count = struct.unpack(">II", data[offset:offset+8]) offset += 8 text_raw = data[offset:offset + char_count * 2] text = text_raw.decode("utf-16-be").rstrip("\x00") offset += char_count * 2 # 4-byte padding alignment if offset % 4 != 0: offset += 4 - (offset % 4) entries_data.append({ "key_hash": f"0x{key_hash:08X}", "raw_hash": key_hash, "text": text }) # Read Key Table key_table_size = struct.unpack(">I", data[offset:offset+4])[0] offset += 4 keys_raw = data[offset:offset + key_table_size] # Split null-delimited keys key_names = [k.decode("latin1") for k in keys_raw.split(b"\x00") if k] # Combine keys and entries output_entries = [] for i in range(entry_count): k_name = key_names[i] if i < len(key_names) else f"UNKNOWN_KEY_{i}" output_entries.append({ "index": i, "key": k_name, "key_hash": entries_data[i]["key_hash"], "text": entries_data[i]["text"] }) meta = { "format": "Asura_TXTH", "endian": "big", "version": version, "flags": flags, "archive_hash": f"0x{archive_hash:08X}", "raw_archive_hash": archive_hash, "entry_count": entry_count, "entries": output_entries } with open(output_path, "w", encoding="utf-8") as f: json.dump(meta, f, ensure_ascii=False, indent=2) print(f"[+] Successfully exported {entry_count} entries to {output_path}") def import_asrbe(json_path, output_path): with open(json_path, "r", encoding="utf-8") as f: meta = json.load(f) entries = meta["entries"] entry_count = len(entries) version = meta.get("version", 1) flags = meta.get("flags", 0) archive_hash = meta.get("raw_archive_hash") if archive_hash is None: archive_hash = int(meta["archive_hash"], 16) # Build text entries block text_entries_bytes = bytearray() total_text_bytes = 0 for entry in entries: raw_hash = entry.get("raw_hash") if raw_hash is None: raw_hash = int(entry["key_hash"], 16) text = entry["text"] + "\x00" # include null terminator text_utf16 = text.encode("utf-16-be") char_count = len(text) entry_bytes = bytearray() entry_bytes.extend(struct.pack(">II", raw_hash, char_count)) entry_bytes.extend(text_utf16) # 4-byte padding text_len = len(text_utf16) total_text_bytes += text_len if len(entry_bytes) % 4 != 0: pad_len = 4 - (len(entry_bytes) % 4) entry_bytes.extend(b"\x00" * pad_len) text_entries_bytes.extend(entry_bytes) # Build keys table keys_raw = bytearray() for entry in entries: keys_raw.extend(entry["key"].encode("latin1")) keys_raw.append(0) # null terminator key_table_bytes = bytearray() key_table_bytes.extend(struct.pack(">I", len(keys_raw))) key_table_bytes.extend(keys_raw) # Payload = text entries + key table payload = text_entries_bytes + key_table_bytes # Pad payload to 16 bytes alignment pad_rem = len(payload) % 16 if pad_rem != 0: payload.extend(b"\x00" * (16 - pad_rem)) # Total chunk size = total file size - 24 # Header is 36 bytes -> header[24:] is 12 bytes + payload chunk_size = 12 + len(payload) header = bytearray() header.extend(b"Asura ") header.extend(b"TXTH") header.extend(struct.pack(">IIIIII", chunk_size, version, flags, entry_count, archive_hash, total_text_bytes)) full_data = header + payload with open(output_path, "wb") as f: f.write(full_data) print(f"[+] Successfully packed {entry_count} entries to {output_path} ({len(full_data)} bytes)") def main(): parser = argparse.ArgumentParser(description="Asura Engine TXTH (.ASRBE) Converter") subparsers = parser.add_subparsers(dest="command", required=True) # Export p_export = subparsers.add_parser("export", help="Export .ASRBE to .json") p_export.add_argument("input_file", help="Path to input .ASRBE file") p_export.add_argument("-o", "--output", help="Path to output .json file") # Import p_import = subparsers.add_parser("import", help="Import .json back to .ASRBE") p_import.add_argument("input_json", help="Path to input .json file") p_import.add_argument("output_file", help="Path to output .ASRBE file") args = parser.parse_args() if args.command == "export": export_asrbe(args.input_file, args.output) elif args.command == "import": import_asrbe(args.input_json, args.output_file) if __name__ == "__main__": main()  
    • А вот были бы мы друзьями....          Выяснил, что мне дают.  Во первых по одной табле антидепрессанта, потом укол чего-то, что влияет на сосуды мозга, что-то связанное с кислородом, ну и наеоч дают микс из фена и циклобарбитала. А вчере я сказал, что всё равно плохо сплю, тогда мне перед миксом дали какую-то ж5ёлтенькую таблетку, а потом сразу микс.   Меня так срубило, сто я даже не помню успел ли я доесть ту сырную булочку, а чай я вышел походу себе на яйца, потому что проснулся в полномьа хуе и "обосанным"  Очень сильная вещь.
    • в 0xC размер блока указана. Скрипт видимо его не меняет у вас. Отсчёт начинается с 0x18, не скажу что прям во всех файлах. Но то что скинули так.
  • Изменения статусов

    • 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 - Релиз
      · 0 ответов
    • 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 ответов
  • Лучшие авторы


×