Перейти к содержанию

Активность

Лента обновляется автоматически

  1. Последний час
  2. Что я выяснил про MCP: MCP меняет системные переменные CRT: __commode - режим ввода/вывода __fmode - режим работы с файлами __umaskval - маска прав доступа Пока мой Text.dll разрабатывается, его хэш постоянно меняется. Если разрешить MCP патчить мой text.dll (у которого уже съехали все байты в сторону от преобразования), то MCP попросту сломает text.dll. Что это может вызвать? а) проблемы с кодировками б) сшибки ввода/вывода в) в целом разные странности с файловыми операциями Я хочу узнать : для чего MCP патчит text.dll? Далее либо я сам внесу правки в text.dll, либо добавлю совместимость с МСР, посмотрю какой вариант будет универсальнее (учитывая темпы разработки, лучше конечно самому сделать то что хочет сделать МСР, тем не менее MCP патчит нормально Morrowind.exe). У dll до патчинга и после патчинга (как показал Hex Workshop Hex Editor) Идеальные не тронутые внутренности. Они светятся оба зелёным и различий нет (проверено на обеих версиях отсюда https://www.fullrest.ru/files/russian_text_input/files😞 НО хэш меняется: Что это за магия ВНЕ Хогвартса, я пока НЕ понимаю. Но судя по байтам из патча MCP он ставит на text.dll какую-то заглушку.
  3. Сегодня
  4. В мсп есть 2 типа правок. - БагФИксы (все флаги выбраны по умолчанию). - хотелки и улучшайзеры. Первые это фикс очевидных косяков, вторые, навроде камеры за плечом, хотелки. Т.е. переносить очевидные багфиксы в "хардкод" дело Справедливое по определению. И как вариант, в дальнейшем, связаться с Двемером согласовав с ним этот момент. Дабы МСП учитывало правленный техтДлл и не правило уже поправленное. А еще, сделать свой билд МСП (пока Двемера нету на месте). Нечто подобное, было проделано с МГЕ 19ой версии. А "улучшайзеры" они сами по себе, конечно переносить камеру за плечо прямо в код, не всем будет симпатично.
  5. Уважаемые форумчане! Что удалось выяснить на данный момент. MCP устанавливает патч в 2 этапа: 1. MCP сверяет ХЭШ Morrowind.exe, таким образом выбирается версия игры (хэш оригинальной русской версии от 1с ecb347304134f63cabf1ab38f0728dcff5fbfb11e7ac2b87a03c8639936ab094), в этой папке и лежит файл patch для .exe, а также 3 папки, в каждой их которых лежат патчи для 3‑х версий text.dll: оригинальная 48 кб, от Angel Death v.3.01 170 кб и ещё непонятная какая-то версия text.dll, которую, скорее всего, в жизни никто не видел или не использовал). 2. MCP сверяет ХЭШ text.dll, таким образом он внутри папки ecb347304134f63cabf1ab38f0728dcff5fbfb11e7ac2b87a03c8639936ab094 находит вторую папку e8503809bad3d088b367cffe85b13965565c4655f457919db18cdefe76edbad8, в названии которой установлен ХЭШ text.dll, откуда он берёт свои патчи для этой text.dll). 3. Я сравнил все 3 версии патча для разных версий text.dll (смотрел через HEX редактор Visual Studio Code): нашу общеиспользуемую: e8503809bad3d088b367cffe85b13965565c4655f457919db18cdefe76edbad8 первую отличную от нашей общеиспользуемой: 23c36ef153f5b183fc13d06ef339d9356c0da6b30a90aa7359baedce2135f036 вторую отличную от нашей общеиспользуемой: f027a20356e788cf1a48d6f89f8b11eb61b34dda2fecb6fab59a74e3dae3f83a Как вы сами можете увидеть, две другие версии вносят: а) немного другие правки в сам text.dll б) вносят больше правок в text.dll, что намекает о старых версиях text.dll (скорее всего версии 3.00 и ниже). Вывод: т.к. версия text.dll 3.01 не менялась внутренне структурно (что мы также выяснили в этой теме), то патч из вышеуказанной папки e8503809bad3d088b367cffe85b13965565c4655f457919db18cdefe76edbad8 как раз и влияет на text.dll. Собственно к анализу этого патча от MCP я и приступаю, буду смотреть что он вносит или что модифицирует.
  6. Вся земля белая (как будто проблема с Distant land) Версия MFR - 4.1.29 beta Запускаю через OpenMW, на Mac через Parallels Dektop...)
  7. Ну тогда лучше всего начинать с фиксов которые mcp вносит в text.dll, что бы модифицированный файл в полной мере заменял предыдущее решение, а не ставил пользователя перед выбором или или.
  8. Вот я о том же. Я не буду переносить из MCP такие мелкие фиксы как "широкое меню, фикс карты для TR и т.д."- это мелкие правки, в сравнении будто я переношу мелкую правочку из esp в esm, хотя правочка и так работает идеально. Для сохранения совместимости и универсальности надо перенести более глобальные и общие масштабные фиксы. Начнём с малого с MCP, через MGE (вообще прикрутить рендер DX9-11 нафиг 😄 ) к большему - MWSE.
  9. 4 гб патч не влияет напрямую на работу именно игровой логики, скрипты диалоги квесты работают в не зависимости от объема памяти. Если сможете заставить использовать больше и при этом не вылетать, то да проще дать рекомендацию ру пользователям не отмечать в MCP фикс 4гб.
  10. Да, я согласен с вами полностью прогресс не должен вредить совместимости н ив коем случае, но что делать, допустим, с 4гб патчем? MCP находит в заголовке Morrowind.exe (PE header) специальное поле «Характеристики» и вписывает в него флаг 0x0020 (IMAGE_FILE_LARGE_ADDRESS_AWARE), говоря Windows: «Этому приложению можно доверять, позволь ему видеть больше памяти». Таким образом даются 4 ГБ памяти. И всё, это потолок. Но если мы хотим сделать 8 ГБ памяти тем же путём что и MGE XE, только на уровне движка, а не со стороны внешнего органа MGE XE?
  11. ИМХО: стоит перенести только те правки то что MCP вносит в text.dll, что бы компенсировать невозможность обычным MCP пропатчить модифицированный text.dll. Остальной функционал MCP лучше оставить застывшим во времени, для совместимости с модами. Многие моды сделаны из рассчета MCP, если фикс будет вносится иным способом не факт что мод корректно заработает. Плюс продвинутые MWSE моды проверяют требуемые компоненты и выдают окно с требованием при запуске игры. Им будет все равно на содержимое text.dll, они проверяют в MCP какие опции установлены пользователем. А еще если мне не изменяет память без установки MCP последние версии толи MGE XE то ли MWSE выдают ошибку с русской версией morrowind.exe, не помню что именно. Так что нужно соблюдать баланс между прогрессом и совместимостью.
  12. Загрузил стабильную версию 3.01.1 (сообщения при повышении уровня, буфер консоли гибридный) в раздел плагины, закрепил её файлы в шапке темы. Это будет отправной точкой в дальнейшем совершенствовании, в принципе с ней можно играть. (Она в оригинальном виде, каким сделал его Angel Death). Я уже провел полный рефакторинг файлов/кода. Разместил все по отдельным папкам. Теперь каждый файл .CPP либо .H структурно элегантен, не выполняет один всю работу. А именно console.cpp и helperfunctions.cpp. Приступаю к анализу того, какие правки необходимо перенести из MCP в text.dll на уровень движка. Необходимо не только text.dll вырвать из состояния "застыло во времени" но и правки из MCP.
  13. Вчера
  14. Вам для затравочки по грядущему масштабному обновлению 3.02:
  15. Доделал MWSE меню управления ключами в angel.ini https://www.fullrest.ru/files/mwse-menyu-dlya-moda-russkiy-vvod-teksta Уже некоторое время хотел сделать проверку ключей top\cel\mrk и выводить предупреждение если отключено, т.к. иногда встречаются пользователи у которых выключено и у них криво работает перевод модов. Только я хотел это к своему модулю данных прикрутить как доп функцию, а тут вышел апдейт text.dll с выбором клавиши и я решил что выбор кнопки 100% нужно автоматизировать для простого игрока внутри морровинда, что бы не нужно было икать сканкоды и вручную вписывать. В результате сделал отдельное меню управления всеми параметрами. Вот как то так вышло.
  16. Последняя неделя
  17. И снова здравствуйте форумчане! Спешу вас порадовать тем, что я внёс исправление в расширение консоли (если включена функция EnableConsole=1 в Angel.ini)! Теперь при наличии длинных скриптов text.dll должен вести себя так, как и задумывалось! Коротко о том что было сделано: 1. Безопасность памяти. Увеличен буфер вывода с 1024 до 2048 байт в Con_Printf Заменён опасный sprintf на безопасный strncpy с принудительной нуль-терминацией Добавлена проверка памяти в .dump s команде через IsBadReadPtr 2. Умное управление ресурсами. Гибридная система буферов в GameCommandLine Быстрый стековый буфер 1КБ для обычных команд (как изначально было в статичной версии) Динамический буфер 4КБ для длинных скриптов (автовыделение) 3. Защита от переполнений. _vsnprintf с sizeof() вместо магических чисел Гарантированная нуль-терминация во всех строковых операциях Уменьшен массив argv со 1024 до 64 элементов для безопасности (если будет обрезаться строка, сделаю и его гибким, с изначальным значением 64 и он сможет увеличиваться по мере необходимости). А теперь о каждом действии и подробно: 1. Безопасность памяти (Buffer Overrun в Con_Printf): 2. Самое главное изменение - умная система буферов в GameCommandLine: Изначальная строгая статичная версия: Моя версия - гибкая, при получении текста/длинного скрипта сама выбирает какой буфер выделять для текущей операции: 3. Защита дампа памяти: Было (чтение любой памяти): Стало (проверка доступности): 4. Добавление защиты в сам файл Console.cpp: Прикрепляю новый text.dll c пофикшенной консолью и изменённым исходником консоли. Сохранена кодировка cp1251 (ох как же она мне дорога, кто бы знал....). Все предыдущие фиксы включены в эту версию. ПРОШУ ОБРАТИТЬ ВНИМАНИЕ, Я ДО СИХ ПОР НЕ МЕНЯЛ ВЕРСИЮ (написание версии text.dll) C ВЕРСИИ 3.00! Я ЭТО СДЕЛАЮ КОГДА БУДЕТ ПРОВЕДЕНА ПОЛНАЯ РЕВИЗИЯ ВСЕХ .cpp ИСХОДНИКОВ И ПРОЙДУТ ТЕСТЫ, ТОГДА ВЕРСИЯ СРАЗУ ПЕРЕПРЫГНЕТ С ВЕРСИИ 3.00 ДО версии 3.02! п.с если мне кто-то подскажет как я могу скрывать длинные рулоны сообщений под спойлер, буду премного благодарен. text.dll Console.cpp
  18. То что было лицензионным в СССР вовсе не значит лицензионным за бугром. Тогда и музыку тырили в открытую мы у них, они у нас... Ни кто не выставляет иски по этому поводу. Однако после интеграции с зарубежьем в свободном использовании это исчезло. Новые игры типа Обливион или Скайрим не меняют EXE и DLL файлы, а следовательно не нарушают права. Но для продажи игры все равно должно быть разрешение и договоренность с авторами по процентам отчисления с продаж. Без разрешения можно продавать только отдельно русификатор без исходных файлов. Я уверен, что у 1С есть лицензии на продажу CD дисков. Не стало дисков - не стало продаж. Аналогично и для польской версии, но я не верю что за бугром дали добро на изменение игрового движка. В Морке есть поддержка кодовых страниц для языков, но внедрение DLL в исходник является нарушением не авторских прав, а защиты ПО.
  19. Ну лично мое мнение, конечно не подтвержденное никакими пруфами что у ру издателей (не только 1с и у других) были права только на распространение дисков, даже если бессрочные, то с выходом дисков из обихода, они просто забили. Делать свой стим не особо выгодно, тем более заново права на цифровое распространение получать. А во всяких стимах\гогах нет ру перевода у старых игр, опять же из за отсутствия прав и исходников перевода, из за того что тогда отдавалось все на откуп местного издателя. А сейчас зарубежным издателям (не только бевезде) просто нафиг не сдалось искать кто там чего в 2002 году издавал в других странах, а если по документам права на сам перевод оставались у издателя еще и выкупать их у него. Вот лично это мое мнение. ну само по себе продажа ключей стим\гог нормально и проблемы где взять игру нет, вот с отсутствием русского перевода, который был на дисках, бедя
  20. На скрине кусочек кода МВ, аглицкого. Не от 1с, а именно чисто породного как он есть. Где черным по синему нарисованы "официальные" языки. Что намекает. Другой вопрос, что сама беседка не стала себя обременять переводом (и заморочками с локалями), что для тех времен было нормальной практикой. Еще, на коробке с диском, ясно написано, что сие Лицензионная копия, а этому надо верить. В каких отношения 1с была с Беседкой, тема отдельного научного изыскания. Но учитывая статус 1с, "для перевода игры нужно разрешение" оно у них скорее всего было во всем феншуе, т.к. вкрячивать кусок кода в виде этого самого ДЛЛа, куда проще имея доступ к этому самому коду. Если же, 1с не имела ничего такого, то у беседки было полно времени (аж 20лет) чтобы высказать свое фи, в той, или иной форме. И если не изменяет память, то ни Обливион ни Скурицион, не вызывали у беседки вопросов к локализации. Другой вопрос, что 1с могла не дать разрешение на публикацию ру версию в ГОГЕ, либо оное не смогли "получить". Т.е. называть официально лицензионную копию (от1с))) - пираткой, несовсем корректно. Так проще делать, не? Проще повесить внешний патч, чем копать код, с низвестными последствиями по совместимости с модами и обновлениями. Бладмун это 2003, хотя да, с переводом он вышел едва не в 2005ом, там большая задержка была. А перевод и выход Морровинда в ру версии, осень 2002го. Может отдельную кнопку сделать? 😄 Одна версия, но, по умолчанию все "лишнее" выключено. Для включения, зайти в АнгелИни и что-то там поменять, после чего, Длл будет считывать во всей полноте привнося разумное и доброе и вечное. Они давно на всё положили на 32х. Впрочем, как и беседка на поддержку своих старых активов. А так конечно, теперь в тренде продажа ключей, а где вы возьмете саму игру, уже никого не волнует. 😄 Создание локализации != созданию лекарства от опроса диска и выкладыванию в открытый доступ без взимания налога на желания обрести желаемое.
  21. всегда думал что сотни лицушных игр на дисках от 1с\акелла\бука\новый диск пропали с продажи, потому что диски вышли из обихода, а создавать "свой стим" не было денег\желания\целесообразности да лицуха была только на распространение дисков. А оказывается 1с просто всю жизнь пиратили... но вот ровно аккурат к окончанию массового использования данного носителя одумались и решили все больше ни ни. Обливион 1с тоже спиратили? эти диски тоже с продажи пропали и тоже в стиме\гоге не ру языка.
  22. Диски от 1С продавались, но для перевода игры нужно разрешение, потому их не стало. Морка не предназначена для перевода потому в 1С изменили игровой движок. А вот OpenMW позволяет играть без изменения стандартного движка. P.S. Был еще и польский вариант на CD, которого сейчас нет.
  23. Не хочу проверять, но подозреваю что сейчас они просто ключи на стим или гог продают, поэтому и указывают английский язык. Так стоп, вроде по ссылке и нельзя купить, какая то старая карточка товара А раньше вроде как именно русскую версию продавали, я услышал об этом когда продаж уже не было, поэтому не могу сказать достоверно. сборки с модами на бусти никто за лицуху и не считает, изначально речь про диск от 1с шла. 1с же по лицензии диск морки выпускали?
  24. Согласен, 1С много игр выпустила... своих... Даже сейчас вроде есть цифровая в продаже, только английская.: https://online.1c.ru/games/game/19055674 На стиме предлагают купить английскую и накатить "русификатор". А в русификаторе копия файлов от игры 1С, в том числе и morrowind.exe На других сайтах встречается морка на продажу и даже есть с готовым набором модов. Наивно считать их лицухой, P.S. Цифровую не смотрел, не знаю что там сделано.
  25. практически все, но морровинд же по лицензии сделан? 1с же лицензионные игры выпускала? Кстати некоторое время кстати продавали цифровую версию от 1с, не знаю что там за защита была и была ли вообще. Интересно какая там версия text.dll была.
  1. Загрузить ещё активность
×
×
  • Создать...