Голосование

Пользуетесь ли данной разработкой? (возможно последующее переголосование с выбором другого ответа)

Да, работаю. Создаю свои изменённые состояния игры.
1 (5%)
Хочу, но пока не осилил.
6 (30%)
Нет, потому что нет нужных возможностей.
1 (5%)
Пробую, изучаю.
1 (5%)
Это не нужно вообще.
2 (10%)
Мне это не интересно.
4 (20%)
Просматриваю готовые состояния и сценарии.
4 (20%)
Свой вариант (в комментариях).
1 (5%)

Проголосовало пользователей: 20

Автор Тема: [SMD] Operation Europe - Path to Victory (1939-1945) редактор состояний, патчи  (Прочитано 9279 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
С Новым Годом, товарищи!
Редактор сохранённых состояний игры и частично сценариев ROM. Написан в Microsoft Excel 2003 + VBA (макросы).
Буду обновлять по мере доработки. Тема родилась из основной темы по игре: http://www.emu-land.net/forum/index.php/topic,27971.new.html#new
Настройки системы и Microsoft Office для комфортного запуска:
Возможности:
Планируемые доработки (? - сомнительно, ! - легко, * - долго):
Планируется коллекция патчей к игре, которые можно будет накладывать на ROM по одному или по несколько сразу.
Скоро: описание порядка работы в редакторе.
Принимаю вопросы и пожелания для ускорения разработки.

Недоработки и предложения:
При правке ROM контрольная сумма не пересчитывается. Вижу обходные пути:
1) Использовать эмулятор с включённой функцией "Auto Fix CheckSum", например, Gens 2.12 или 2.14 - меню Опции-Разное-Автоисправление контрольной суммы / Options-Misc.-Auto Fix Checksum
2) Применить к поправленному файлу программу для исправления контрольной суммы. Например, отсюда:
http://www.emu-land.net/forum/index.php?topic=72683.0

WinHEX вполне позволяет качественно редактировать ROM и SAVE. Но, по-моему, программой работать удобнее. Пробуйте, задавайте вопросы, пишите пожелания. Работу над программой веду, обычно ночами, поэтому медленно. Днём дела. Нынешняя моя версия программы уже во многом лучше той, что лежит на форуме, но пока что ещё сыровата для выкладывания (в ней может быть больше мешающих работе ошибок, чем в текущей), надо доделать и проверить.
Выложенная тут версия предполагает работу над всеми изменениями сразу, без выхода из программы.
Если программа при выходе сбрасывает наработки :( - Обход:
И/или ещё вот что:
Сам проверил именно с той версией, которая выложена в теме. Всё получилось.
« Последнее редактирование: 08 Январь 2016, 14:36:32 от KDE »

Оффлайн kvn

  • Пользователь
  • Сообщений: 741
  • Пол: Мужской
    • Просмотр профиля
KDE, а такой момент не пробовал - изменить или хотя бы просмотреть состав полка заказанного во время игры? Можно ли сделать так, чтобы можно было заказывать несколько видов юнитов за раз? И ещё один момент - в игре за ход можно сделать только одно дело (заказать полк или технику, изменить командование или место штаба, отправить авиацию или разведку). А хотелось что бы таких дел можно сделать было двое или трое. Глянь, может быть этот момент удастся изменить.

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
Если подкрепление одобрено, то в таблицах появляется полк и его батальоны, все с кодом 8 (обычно 4-5-6-7, или резервные дивизии 32-33). Пока он ещё даже не пришёл (но одобрен), его можно уже менять. В компьютерной версии игры ещё указано время ожидания прибытия. Наверное, оно где-то записано. Заказывать несколько видов - можно, BY RANDOM :), но для этого надо лезть в отладчик. ДОЛГО ИСКАТЬ, пробовать... Несколько дел - тоже можно через отладчик, но мне нравится и так, как есть. Или надо убавлять командарму здоровья за каждое дело, а прибавлять за ход меньше, чем убывает от дел. Чтобы ОТДЫХАЛ иногда :). Это всё на будущее... А пока что работаю над редактором.
« Последнее редактирование: 02 Январь 2016, 20:19:58 от KDE »

Оффлайн Mefistotel

  • Emu-Land Team
  • Сообщений: 1482
  • Пол: Мужской
  • Генерал армии Хаоса
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Ещё бы перевести игру на русский язык с помощью редактора можно было... :)

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
Ещё бы перевести игру на русский язык с помощью редактора можно было... :)
Только названия и имена - как Вам нравится. Хоть переводить, хоть менять.
Работаю и над переводом, но пока мало. Есть наработки. Это отдельная тема. После редактора займусь. Ищу мастеров по дизассемблированию и изучению СТРУКТУРЫ ROM-файла (код, данные, графика, музыка).

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
Новая версия редактора.
Более понятная работа с полками и батальонами, качественное сохранение, работа с файлами на отдельной вкладке (листе), есть авиация, при загрузке данных из ROM есть обработка карты (только города и войска).
Очень приветствую замечания, вопросы, пожелания. Вместе доработаем.
В проекте (уже вычислено в игре): отображение спецназа, подкреплений, десанта, бомбардировок, заказов из штаба, ожиданий.

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
Новая версия (май 2016).
Что добавлено:
Лист "Армии" - сводка всех полков и батальонов обеих армий. Отображает снабжённость в % и позволяет её менять тоже в %. Ранее можно было указывать только абсолютные значения на листе "Полки" (как их видно при операциях снабжения в игре), теперь программа может сосчитать абсолютные значения по нашему указанию с листа "Армии" или "Полки", но процентные значения берёт ТОЛЬКО с листа "Армии", а изменения идут ТОЛЬКО на лист "Полки", для дальнейших расчётов и отображения информации на других листах или для сохранения во внешние игровые файлы - как обычно требуется сохранение таблицы ("Полки") в память. В будущем это нововведение даст возможность на карте отображать состав полков, почти так, как оно уже сделано для населённых пунктов. Чтобы наиболее полно соответствовать информации, получаемой на карте по кнопке "A" в игре :).
На листе "Полки" кнопка сохранения разделена на две: первая просто сохраняет изменения таблицы, а вторая пересчитывает карту (это полезно, если меняли координаты полков). Возможно, пересчёт координат пока что выполнен криво, уже поступали сообщения об этом. Требуются проверки.

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
Новая версия редактора. Получена во время работы над сценарием 5, где воюют итальянцы против французов. http://www.emu-land.net/forum/index.php/topic,27971.msg1232768.html#msg1232768
Исправлена ошибка сохранения параметров батальонов войск союзников (сохраняла им параметры немцев, что приводило к глюкам). Также, мелкая ошибка в сообщении об ошибке с типом войск в батальонах.
Сейчас сохраняет хорошо.

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
Освежу тему редактирования ROM/SRM для Operation Europe. Тема жива. Изучаю игру, но пока что новой версии редактора не имею. Есть планы по внедрению всех команд спецменю (воздух, спецназ, подкрепления). Основные новости в теме игры.

Оффлайн anker

  • Пользователь
  • Сообщений: 11
    • Просмотр профиля
KDE приветствую!
Спасибо за проделанную работу :drinks:
Есть ли возможность редактировать параметр GR (дальность выстрела) ?
И еще вопрос по редактору. Не полностью парсится карта, отображаются только города и полки. Это у меня версия офиса не совместима или так должно быть?
175495-0

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
Есть ли возможность редактировать параметр GR (дальность выстрела) ?
Привет. В нынешней версии нет. И вообще, лично я пока не знаю, ГДЕ это найти. Где-то эти все таблицы упрятаны в ROM-файле. Но у меня есть мысли, как это вычислить. Уже лазил в отладчике и дизассемблере, начал кое-что понимать в коде.
Не полностью парсится карта, отображаются только города и полки. Это у меня версия офиса не совместима или так должно быть?
Для ROM - так и есть, потому что нет там готовой карты, в том виде, как она есть в сохранении. Если открыть сохранённую игру - карта полная. В ROM хранится карта, но как-то по-другому. Пока не разгадал.

Оффлайн kvn

  • Пользователь
  • Сообщений: 741
  • Пол: Мужской
    • Просмотр профиля
Такое ощущение, что разработчики специально всё попрятали, чтобы "специалистам" жизнь максимально усложнить.

Оффлайн anker

  • Пользователь
  • Сообщений: 11
    • Просмотр профиля
Привет. В нынешней версии нет. И вообще, лично я пока не знаю, ГДЕ это найти. Где-то эти все таблицы упрятаны в ROM-файле. Но у меня есть мысли, как это вычислить. Уже лазил в отладчике и дизассемблере, начал кое-что понимать в коде.Для ROM - так и есть, потому что нет там готовой карты, в том виде, как она есть в сохранении. Если открыть сохранённую игру - карта полная. В ROM хранится карта, но как-то по-другому. Пока не разгадал.
Ну тут особо и нечего гадать. Карта состоит из фрагментов, один и тот же фрагмент может использоваться на карте N количество раз. Например горизонтальный учесток дороги.
Скорее всего в ROM карты в таком виде:
1. файл в котором находится мозаика фрагментов.
2. файл в котором прописаны координаты фрагментов. по сути как затайлить экран.

В сейве экран уже затайлен

Такое ощущение, что разработчики специально всё попрятали, чтобы "специалистам" жизнь максимально усложнить.
ROM это дамп. В исходном виде там могут быть всем понятные файлы :neznayu:

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
Скорее всего в ROM карты в таком виде:
1. файл в котором находится мозаика фрагментов.
2. файл в котором прописаны координаты фрагментов. по сути как затайлить экран.
В сейве экран уже затайлен
Соглашусь почти на 100%. Осталось найти, откуда берётся эта мозаика по номеру сценария. Тогда сможем и свои карты делать.

Свежая декабрьская версия редактора с возможностью видеть из ROM-файла названия и параметры войск и менять их (сначала сделал только чтение, но теперь уже работает и запись обратно в ROM).
Добавлены возможности:
1) Вписать своё название любым войскам (до 12 символов будут в первой строке, затем обязательно знак "$", и можно ещё 12 во второй строке). Техническая информация: сохранение названий идёт в свободную область ROM-файла, от адреса 763F0h, на каждое название по 26 байт (12+$+12+"00h"), итого занято 4160 байт - поэтому параметр "адрес названия" при сохранении впишется в ROM автоматически.
2) Менять характеристики войск. На вкус и цвет :).
http://www.emu-land.net/forum/index.php/topic,27971.msg1265930.html#msg1265930 - описание параметров и характеристик
Напишите отзыв, в каком виде удобнее сделать интерфейс работы с файлами. Может, как раз так, как на листе "Коды войск"?
« Последнее редактирование: 22 Декабрь 2016, 02:01:20 от KDE »

Оффлайн Ser_Otto

  • Пользователь
  • Сообщений: 3
  • Пол: Мужской
    • Просмотр профиля
Жаль нет подробной инструкции для таких чайников как я  :neznayu:

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
Ser_Otto, задавайте вопросы, сделаю инструкцию.
Какая цель у Вас? Я и расскажу, что и как сделать.

Оффлайн Ser_Otto

  • Пользователь
  • Сообщений: 3
  • Пол: Мужской
    • Просмотр профиля
Честно говоря, я настоящий чайник в этом, хотя прекрасно понял, что работа была проведена немалая, когда открыл редактор.
Начав читать вложенную там инструкцию впал в ступор, не понимая о каких блоках идет речь (2пункт).
А то что я хотел, так это урезать войска за которые играю и добавить войскам противника больше полков и батальонов в них; увеличить кол-во авиации и выставить стартовые показатели снабжения в войсках на 100%. Удвоить общее время отведенное на прохождения сценария. Ну может еще пару мостов снести...

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
Ser_Otto, я в отпуске был.
В каком сценарии хотите изменений? Или во всех?
"Блоки" в программе - это и есть сценарии. Более общее название. Думаю, позже сможем менять сценарии в блоках, то есть, вся игра будет, например, из первых сценариев, но разного уровня сложности.
Урезать и добавить войска - это возможно. Общее ограничение на одну сторону - 128 батальонов. Столько же у противника. Не пробовал сделать одной стороне больше, чем 128, но попробовать можно. Труднее всего на данном этапе добавить батальоны, но возможно.
Авиация и снабжение - возможно тоже. Это самое простое.
Время на сценарий - разве что стартануть его раньше. Время окончания пока что не вычислил, где меняется.
Мосты сносить - только в сохранённой игре на данный момент. Всё остальное можете пробовать. Или задайте, что и как поменять, сделаю.

Оффлайн Ser_Otto

  • Пользователь
  • Сообщений: 3
  • Пол: Мужской
    • Просмотр профиля
Эхх... мне в отпуск в конце сентября... :(
Ну для начала хотел мой любимый 5-ый сценарий подправить.
Играя против немцев, хочу убрать со своих батальонов пехоту и грузовики с пехотой. Врагу увеличить процентов на 50 кол- войск в отрядах. В имеющихся полках, таких как №31 и №32 добавить по 3 батальона какой-нить техники, а в остальных типа ударных №11,12,21, и т.д.  пару видов танков. Номерам 15,25,26,35,45 по батальону арты ближнего боя. Также у немцев есть пустые полки (16,36) с помощью которых они вызывают подкрепу и шлют парашютистов. Их я хотел бы сразу заполнить войсками и выставить на карту. Если правка авиации не проблема, то выставить каждой стороне по 500 бомберов и столько же транспортников.
Точная дата непринципиально, мне главное только само игровое время увеличить.
Насчет мостов, что снести: 31-13, 35-18, 37-21, 36-24, в общем все те, что через реку перед немецкими силами.
И еще вопрос, можно как-то увеличить шанс одобрения вызова подкреплений и припасов как для меня так и для врага?

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
в ячейках S2 и T2 на листе Типы войск надо поменять надписи AT и AP, мелочь, больше ни на что не влияет, но вводит в заблуждение. Накоплю исправлений - выложу версию посвежее. Подробности тут: http://www.emu-land.net/forum/index.php/topic,27971.msg1449181.html#msg1449181

Оффлайн КАЛАШ

  • Пользователь
  • Сообщений: 51
    • Просмотр профиля
я в шоке...  :ohmy:

Оффлайн КАЛАШ

  • Пользователь
  • Сообщений: 51
    • Просмотр профиля
Есть кто живой? :neznayu:

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
Вроде, есть ЖИВОЙ автор темы ;), и у него есть идеи разные.
Только был больше года ОЧЕНЬ-ОЧЕНЬ занят работой...

Теперь решил отдохнуть немного :)
Пишите, подумаем.
« Последнее редактирование: 20 Сентябрь 2021, 00:33:01 от KDE »

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
Версия редактора от 2021 года (добавлено документирование и мелкие исправления), оттестирована в офисе-2007.

Оффлайн KDE

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
    • Просмотр профиля
Один добрый человек откликнулся на мой зов, помог с редактором карт в ROM~е.
Мне не до этого (Уже настоящая война пошла, а я тут в игрушки всё играл...), так что я просто выложу наработки, поскольку давно обещал. И пока закончу с этими делами.

http://www.emu-land.net/forum/index.php/topic,85072.msg1524987.html#msg1524987

Ответы от Sharpnull
Данные местности сжаты. Для получения адреса на сжатые данные использовал http://chief-net.ru/forum/topic.php?forum=4&topic=76&postid=1609167083#1609167083, его программа для сжатия http://chief-net.ru/forum/topic.php?forum=4&topic=76&postid=1609317116#1609317116. Для разжатия нужно указать адреса с $, потом выбрать ром и файл сохранения. Сжатие не пробовал.
Есть тип клетки, от этого зависит описание при наведении курсора (лес и т. п.), в RAM 27B0-2DEF, по 1 байту. Адреса в ROM с 65CE6 по 4 байта (Big-Endian).
Отображаемый блок (графика) в RAM 6DD4-7A53, по 2 байта. Адреса в ROM с 66F58. В ROM блок хранится по 1 байту и при загрузке конвертируется в 2 байта.
Адреса через Lua-скрипт ловил так. Тип клетки отображается перед экраном "How many players?". Блоки после "You are about to take the first step into battle.", я ловил запись в FF6DD4 и смотрел адреса, потому что потом сразу были другие распаковки данных.
Адреса (начальный - конечный) для типа и блока:
1. 650CC - 65347, 65CFE - 66128
2. 6534A - 6547B, 6612A - 662C9
3. 6547E - 655DC, 662CC - 6646B
4. 655DE - 65819, 6646E - 6679E
5. 6581C - 65AA9, 667A0 - 66C2C
6. 65AAC - 65CE3, 66C2E - 66F56
Не пробовал переносить данные, может кроме адреса потребуется ещё указать размер данных. Перенос потребуется, если сжатые данные будут больше по размеру.
Я в эту игру не играл, может вам нужно что-то ещё.

Попробовал распаковать все 12 сжатых блоков данных и новая программа от Марата не справилась со 2-м сценарием, старая сработала (https://www.romhacking.net/utilities/1081/), но там нужно вырезать данные из рома. Придётся дописывать новую программу.

Ещё про сжатие. Вы можете расширить ром до 2МБ и сделать сжатие "без сжатия", тогда можно будет напрямую менять значения. 40*40*12 = 19200 байт для данных, + 19200/8 для FF через каждые 8 байт, ещё у каждого куска данных: 00 в конце и в начале 2 байта, которые не понял зачем. В любом случае, если сжимать случайные данные, то будет превышен размер в 1МБ данных, а пользователь может такого добиться, значит проще сразу распаковать данные и не придётся реализовывать сжатие в вашем редакторе, если только уже его не сделали. Ещё можно сэкономить память, если убрать алгоритм сжатия для этих данных, но придётся разбираться в коде.
Зря вы писали редактор в Excel, это неудобно для пользователей.

МОЙ ОТВЕТ
Пока поразбираюсь ещё сам, но от запаковки-распаковки, конечно, хочется отказаться. ROM расширял уже, пусть будет 2 Мб.
Как "сообщить игре", что блок по указанному нами адресу уже будет не запакован? Там какой-то код где-то, или в типе сжатия блока в начале?
Сейчас немного болен, проснулся среди ночи, но не могу долго у компа сидеть, поэтому пока пишу кратко.
Идей, конечно, ещё очень много есть... Возможно, позже допишу.
Касательно карты ещё вот такое: при боях в городах отрисовывается местность города, она тоже где-то хранится. Найти - так сможем тогда и города свои рисовать.
Общий вопрос такой: какие есть хорошие отладчики, чтобы ловить нужные моменты в них?

ОТВЕТ
Я посмотрел код и не нашёл использования флагов, там просто код, который выбирает адрес, распаковывает в один адрес RAM и копирует оттуда уже куда нужно.
Я не следил, но не видел раньше упоминаний удобных как Mesen. DrMefisto делал модификацию для RetroArch с окном кода как в Gens r57shell и потом убрал его ради IDA, похоже все эксперты её используют. После Mesen хотелось похожего, но нет. Я давно улучшал GensKMod, но забросил и не дошёл до окна с кодом. В идеале думал взять код от сырого Mesen-S и прикрутить к BlastEm, но я не занимаюсь хаками для MD. Для поиска в RAM я использую BizHawk. Gens r57shell нужно дорабатывать (окно кода, HEX-редактор у меня тормозит эмуляцию [в Win10 после Win7 у меня окна заметно тормозят] и т. п.), а исходный код только от старой версии, но я его использую для разбора кода, также там Lua-скрипты. Для Sega CD и 32X я пару раз использовал MAME, он имеет универсальный отладчик, поэтому не очень удобный, но мне было достаточно, там можно указывать условие остановки на записи/чтении/выполнении инструкции. Exodus у меня плохо работал. У BlastEm консольный отладчик. Я вообще не видел чего-то удобного и самодостаточного как Mesen.Не думаю, что смогу особо помочь, я плохо знаю код M68K, только интуитивно.

На счёт программ от Марата. В новой версии указывать конец данных не нужно, только начало, программа высчитывает конец, потому что конец данных в алгоритме сжатия есть. А вот сжатие там не работает у меня. В любом случае, вы будете работать с несжатыми данными.

Опять мои вопросы:
А например, как этот ВЫНОС сделать в разных вариантах? Есть, где прочитать?
У меня есть ещё места, которые нужно переделать с выносом кода.
Например, вот, нашёл в июле 2020 года, там ещё хуже:
03D3CE   добавление самолётов после рейда в 10 от A4 (например, FF015E)

Вот здесь идёт обнуление самолётов к началу суток:
03C640   426A 0010                  CLR.W   $0010(A2)

Надо задействовать команду:
   3578 0008 0010         move.w  8,$10(A2)
А она длиннее оригинальной.
Или использовать JSR/BSR и RTS, чтобы вернуться обратно. Или оба два раза JMP.

Вроде этого:
00037C   4EB9 0000 1D0A             JSR   $00001D0A
0003AC   4E75                       RTS

Пустое место в коде начинается от 076400. Вписываем свой код по адресу 076400
Завершаем его RTS (4E75)

Код вызываем, например, по JSR: 4EB9 0007 6400
Осложнение: дополнительные вызовы и PEA в участке кода
А есть идеи и по дополнительному коду, например, разбомбить или заминировать мост, показать итоги боя, ввести свои формулы для расчётов, там уже вынос обязателен...

Продолжение от Sharpnull

Конкретно про вынос не знаю, но нам нужен прыжок, так что смотрите инструкции меняющие текущий PC. Вы сами написали и уже знаете про PEA, а я не подумал про проблему с PEA и move.l $00(A0,D0),-(SP): они изменяют стек как и JSR/BSR, поэтому вместо них подойдёт JMP или BRA.
В данном случае мы освободили место рядом (для коротких bra.b или bra.w) где тип клеток распаковывался, там я поставил ранее 7 * NOP (14 байт), можно добавить код туда примерно так (я не компилировал):
Свободного места как раз хватает.

Оффлайн Марат

  • Пользователь
  • Сообщений: 554
  • Пол: Мужской
    • Просмотр профиля
Попробовал распаковать все 12 сжатых блоков данных и новая программа от Марата не справилась со 2-м сценарием
Да, действительно, в программе была одна недоработка. В оригинальном алгоритме сжатия используется усеченные гамма-коды Эллиаса. Я этот момент прозевал в восстановленной версии программы.
Исправил эту ошибку. Можно скачать здесь http://chief-net.ru/forum/topic.php?forum=4&topic=76&postid=1667411792#

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2161
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Более точная ссылка на скачивание: http://chief-net.ru/forum/topic.php?forum=4&topic=76&postid=1667411792#1667411792