Разработка и ромхакинг > Ромхакинг
[SMD] Rings of Power - ремастер
thealx:
Список изменений (v0.1) :
Графика
[*]Полноэкранная карта мира: мир занимает весь экран без бумажной рамки
[/list]
Камера и передвижение
[*]Плавающая камера: камера скользит, а не перескакивает на клетку за раз.
[*]Свободная ходьба: перемещайтесь свободно в 8 направлениях, а не только с клетки на клетку
[*]Управление транспортом: стрелки влево/вправо управляют вращением, вверх/вниз - движением вперед и назад
[/list]
Персонажи
[*]Плавное движение: все персонажи плавно перемещаются между клетками. Снаряды и заклинания летят прямо к цели.
[*]Мягкие контуры и тени: у каждого персонажа есть полупрозрачный контур и тень у ног.
[*]Спутники в локациях: члены команды следуют за Баком внутри локаций и помещений
[*]NPC на общей карте: враги, торговцы и корабли видны в любой точке экрана, а не только рядом с вами.
[/list]
Звук
[*]Атмосферные звуки: 33 типа локаций, где раньше звучала музыка путешествия, теперь имеют собственное звучание днём и ночью: леса, луга, доки, реки, снега, пустыня, побережье, горы, города. Днём слышно пение птиц, ветер и чаек, а ночью сверчков, сов и лягушек.
[*]Голоса: боевые крики соответствуют тому, кто получил удар. У женщин, нежити и зверей теперь свои возгласы.
[*]Музыка: оригинальный саундтрек и звуковые эффекты сохранены без изменений.
[/list]
Катсцены
[*]Анимированные катсцены: интро, смерть Тальмуса, вступление членов в отряд и получение колец. Жми START для пропуска.
[/list]
Битва
[*]Сражайтесь там, где стоите: бои проходят прямо на текущей локации, без телепортации на отдельную арену. После боя все остаются на своих местах (даже те, кто не выжил).
[*]Выбор цели: после выбора заклинания стрелка позволяет указать любого участника боя: врага, союзника или самого заклинателя (в режиме боя Manual). B применяет заклинание, C возвращает назад.
[*]Описания заклинаний: отображаются эффект, урон и дальность выбранного заклинания.
[/list]
NPC
[*]Засады: пешие противники появляются после вашего обнаружения. От них можно убежать или спрятаться в ближайшем лесу.
[*]Реакция на кражу: если жертва поймает вас за кражей, на вас нападает вся её группа. Другие свидетели становятся враждебными.
[/list]
Интерфейс и управление
[*]Шестикнопочный геймпад: X открывает инвентарь, Y открывает карту (во время разговора начинает бой, а в городах и зданиях - воровство), Z выполняет поиск на локации. На трёхкнопочных геймпадах сохраняется оригинальное управление.
[*]Воровство: нажмите Y, стоя лицом к кому-либо в городе или здании, или Y вместе с направлением.
[*]Свиток состояния: золото, время, еда и вода отображаются на отдельном свитке в левом нижнем углу.
[*]Блокнот: нажмите START во время разговора, чтобы сохранить его. Указания пути и сведения о местонахождении записываются автоматически. Читайте записи в пункте Notebook главного меню, а кнопкой B удаляйте их.
[*]Выход: в локациях пункт Camp заменён на Exit, который сразу выводит на карту мира без смены времени.
[*]Титульное меню: пункт Continue появляется только если есть сохранённая игра.
[/list]
Сохранение и загрузка
[*]Блокнот: до 100 записей сохраняются и загружаются вместе с игрой.
[*]Ранее в сюжете: Continue повторяет последнюю увиденную катсцену (сюжетную, присоединение спутника или получение Кольца) перед продолжением игры. При загрузке из внутриигрового меню она пропускается.
[/list]
Сюжет и диалоги
Без изменений
v0.2
- Названия локаций на карте
- Багфикс: стрелки не работают после проигрывания катсцены вступления в группу или получения кольца
v0.3
- Добавлены английская и русская сборки ROM, русский перевод интерфейса и сюжетных сцен.
- Улучшено управление транспортом: удерживайте A для разгона; транспорт NPC движется по плавным траекториям.
- Добавлены отдельные настройки громкости музыки, фоновых звуков и эффектов, а также высоты тона музыки.
- Исправлено сохранение точных значений здоровья, магии, их максимумов и состояния поверженных персонажей.
- Ускорен отклик меню и добавлена циклическая навигация по спискам.
- Удалена настройка Lefty/Righty, повышена надёжность звука и сборки ROM.
v0.5
- Добавлено плавное следование камеры с задержкой; устранены рывки движения и скачки спрайтов.
- Сглажены маршруты и движение транспорта NPC
- Обновлён полёт дракона в деморежиме: плавные повороты и движение камеры.
- Выровнена громкость музыки и фоновых звуков, приглушены резкие ноты, исправлено стерео.
- Добавлены вступительные боевые возгласы с учётом типа врага и крики при засаде
- Сохранения теперь точно восстанавливают время, еду, воду, золото и отношения с фракциями.
- Исправлена прорисовка карты
v0.6.4
Музыка и звук
- Обновлённый саундтрек: семь мелодий заново аранжированы — сэмплированные ударные, более насыщенные инструменты, глубокий бас и стерео. Главная тема звучит на церковном органе.
- После боя музыка места возвращается быстрее, без восьми секунд тишины.
- Из настроек звука убрана высота тона музыки.
Геймплей
- Спрятанные записки, золото, ключи и предметы видны как соответствующие значки
- B действует на то, на что ваш персонаж смотрит на экране, включая диагональные клетки.
- C начинает разговор с тем, на кого вы смотрите, даже сразу после поворота на месте.
- Вода не расходуется во время движения в лесах, на болотах, вдоль рек и озёр, у входов в города, а также в лодке на реках, озёрах и болотах.
Блокнот и карта
- Блокнот вмещает 133 записи вместо 100; записи из старых сохранений переносятся.
- Записи сгруппированы по заданиям: одиннадцать Колец и Святая печать.
- Больше реплик записывается автоматически.
- С камнем Врат карта (Y) показывает каменные круги и куда ведёт каждый камень.
- Места, координаты которых есть в записях, отмечены красным крестиком.
Сражения
- Рывок, Оборот, Бросок и Безумие теперь наносят урон.
- Земля, Темп, Айсберг и Инферно разыгрываются быстрее.
- Бегство из боя выводит отряд за пределы помещения
- Если Бак погиб, но отряд выжил, Великий собор воскресит его за 200 золотых вместо всех имеющихся денег
- Гибель всего отряда — не конец игры: Бак приходит в себя в Великом соборе, лишившись золота и товаров.
- В море нападающие появляются на некотором расстоянии, дав возможность от них сбежать или спрятаться
- Часть виверн становятся враждебными
- Днём враги на карте мира на треть слабее.
- Кража может не удаться. Лучшие шансы — сзади (1 из 2), худшие — спереди. Если жертва заметит кражу или вас кто-то увидит, вся группа нападёт
- В магазинах заклинаний и в меню заклинаний есть описание каждого заклинания
Архив во вложении
Беларус:
Изменения мощные, как это сделано? :thumbup:
Без регистрацыи в Гугле скачать не получитса? Почему бы не выложыть сюда?
В заставке после свитка дракон летает по карте, и делает это на дęрганном тормозном экране - так и должно быть? (оригинал не помню уже)
Razor:
--- Цитата: Беларус от 04 Октября 2026, 18:14:18 ---Без регистрацыи в Гугле скачать не получитса?
--- Конец цитаты ---
Продублирую сюда для тех кого в Гугле забанили. :lol:
thealx:
--- Цитата: Беларус от 04 Октября 2026, 18:14:18 ---Без регистрацыи в Гугле скачать не получитса? Почему бы не выложыть сюда?
--- Конец цитаты ---
сделал
--- Цитата: Беларус от 04 Октября 2026, 18:14:18 ---В заставке после свитка дракон летает по карте, и делает это на дęрганном тормозном экране - так и должно быть? (оригинал не помню уже)
--- Конец цитаты ---
не совсем) в некоторых сценах моделька управляется скриптом вручную. в таких случаях плавное перемещение камеры не работает, приходится каждый конкретный случай фиксить. до этого пока руки не дошли.
--- Цитата: Беларус от 04 Октября 2026, 18:14:18 ---Изменения мощные, как это сделано? :thumbup:
--- Конец цитаты ---
Я сам в геймдеве, но в ромхакинге ноль познаний. Интереса ради решил запрячь нейронки, поначалу дело вяло шло - на то чтобы только расширить обзор карты ушло месяца два (по 2-3 часа попыток в неделю), про дальнейший успех даже мыслей не было. Как вышла Опус 5.5 дело пошло - в нем очень хорошо работает распознавание изображений, так что он сам вносит правки, сам тестирует, сам багфиксит и в итоге прям годный результат выдает. Долго конечно но с первого раза.
В целом результатом я доволен, косяки только найти и исправить надо.
Smikcers:
Великолепно!Много много много лет всё откладываю эту игру,но похоже появился все таки повод в нее погрузится.Автору респект и уважуха!
Еще бы на русском...=))) :thumbup:
DIMASLiVER:
Да. присоединяюсь, переведенную бы версию с такими изменениями :thumbup:
thealx:
v0.2
Назваания локаций на карте
Багфикс: стрелки не работают после проигрывания катсцены вступления в группу или получения кольца
grooomy:
Отличная новость! С детства прям заприметил эту игрушку. Но мне за неё было страшно садиться на приставке (карик был без батарейки). На эмуляторе много раз запускал эту игруху, но не решался засесть за её прохождение из за дерганного геймплея, и массы других косяков. Сейчас у меня прям появилась надежда. Надеюсь автор не забросит проект и мы увидим ещё много улучшений. Много наслышан об этой игре в детстве.
PS. Отдельная версия с интеграцией русского перевода - желательна.
thealx:
Смотрю возможность импорта существующего перевода, агент сказал "все будет" но я бы настороженно относился к его обещаниям. Может пострадать стабильность, если дело выгорит буду выкладывать сразу две версии в релизе - на английском и русском.
Технические детали мода чуть позже выложу, самому пока не всё понятно.
--- Цитата: grooomy от 06 Октября 2026, 08:24:30 ---Отличная новость! С детства прям заприметил эту игрушку. Но мне за неё было страшно садиться на приставке (карик был без батарейки).
--- Конец цитаты ---
Мне достался картридж с рабочей батарейкой, выменял его на какую-то аркаду про пиратов. Вооружившись словарем, пытался продвинуться по сюжету, но безуспешно. Спустя год наверное совершенно случайно нашел прохождение в книге секретов, только благодаря ей получилось добить все квесты и дойти до финальной заставки. Несмотря на все недостатки, игра осталась в моем ТОП10 за открытый мир и интересные диалоги с обилием черного юмора.
Guyver(X.B.M.):
Ну, тогда мне следует обновить текущую версию перевода с 2.0 на 2.1, ибо нашлось ещё то, что нужно исправить...
Эх, я уже всё забыл что там и как :cry:
http://chief-net.ru/index.php?option=com_content&task=view&id=830&Itemid=39
http://chief-net.ru/rompatcher/Rings_of_Power.html
Брать версию перевода с эмуленда смысла нет, там есть неправильные подсказки и куча ошибок, неправильно работающая кое-где система окончаний при взятии предметов, неоригинальный шрифт в интро/диалогах и прочее...
grooomy:
--- Цитата: thealx от 06 Октября 2026, 15:59:24 ---Мне достался картридж с рабочей батарейкой, выменял его на какую-то аркаду про пиратов. Вооружившись словарем, пытался продвинуться по сюжету, но безуспешно. Спустя год наверное совершенно случайно нашел прохождение в книге секретов, только благодаря ей получилось добить все квесты и дойти до финальной заставки. Несмотря на все недостатки, игра осталась в моем ТОП10 за открытый мир и интересные диалоги с обилием черного юмора.
--- Конец цитаты ---
Узнал об этой игре от кореша. От него и получил карик. Он долго мне описывал разные расы, подоплёку сюжета и прочее. Я был поражён размерами мира и лором игры для мегадрайва.
Он со своим другом сумели пройти эту игру, покуда его родители были в поездке на море. Телек был свободен и он с другом нон стоп проходили эту игру со словарём. Спать приходилось по очереди. С его слов они уложились в две недели. :shifty:
thealx:
--- Цитата: Guyver(X.B.M.) от 06 Октября 2026, 16:27:54 ---Ну, тогда мне следует обновить текущую версию перевода с 2.0 на 2.1, ибо нашлось ещё то, что нужно исправить...
Эх, я уже всё забыл что там и как :cry:
Брать версию перевода с эмуленда смысла нет, там есть неправильные подсказки и куча ошибок, неправильно работающая кое-где система окончаний при взятии предметов, неоригинальный шрифт в интро/диалогах и прочее...
--- Конец цитаты ---
Благодар! Поковыряю патч, отчитаюсь о результате. предварительно полет нормальный.
https://myimgs.org/storage/images/54127/Screenshot2026-10-06224831.jpg
https://myimgs.org/storage/images/54131/Screenshot2026-10-06224933.jpg
Просьба не размещать с помощью тэга img изображение со стороной более 700 пикселей. ghostdog3
Vincent7:
--- Цитата: thealx от 06 Октября 2026, 15:59:24 ---Мне достался картридж с рабочей батарейкой
--- Конец цитаты ---
И он сохранялся? Очень странно, ведь в игре используется Serial EEPROM, а не SRAM и никакой батарейки там нет. У меня было несколько пираток
rings of power под названием the lord of the rings, тоже с батарейками и ни один не сохранял игру по вышеописанной причине.
Guyver(X.B.M.):
При доделке перевода, если я соберусь наконец-то, уже будет проще обновить ремастер? :neznayu: В теории, правиться будут только диалоги...
thealx:
--- Цитата: Vincent7 от 06 Октября 2026, 22:26:09 ---И он сохранялся? Очень странно, ведь в игре используется Serial EEPROM, а не SRAM и никакой батарейки там нет. У меня было несколько пираток
rings of power под названием the lord of the rings, тоже с батарейками и ни один не сохранял игру по вышеописанной причине.
--- Конец цитаты ---
Да верно, в отличии от shining in the darkness и ему подобных, батарейки на картридже не было, только распаянные микросхемы. Мне посчастливилось быть обладателем оригинала, видимо (фото из интернетов но выглядел так же разобранным)
--- Цитата: Guyver(X.B.M.) от 07 Октября 2026, 04:06:01 ---При доделке перевода, если я соберусь наконец-то, уже будет проще обновить ремастер? :neznayu: В теории, правиться будут только диалоги...
--- Конец цитаты ---
Без проблем, достаточно будет сравнить старый и новый патчи и применить изменения к рому.
Vincent7:
--- Цитата: thealx от 07 Октября 2026, 07:13:10 ---Мне посчастливилось быть обладателем оригинала, видимо
--- Конец цитаты ---
Повезло :thumbup: А мне посчастливилось иметь книжку с прохождением этой игры, поэтому пару колец которые я не смог найти самостоятельно, искал по ней. К тому же обнаружил и активно юзал баг(а может и не баг) с поднятием уровня в храме луны(или солнца, уже не помню) поэтому проходил игру часа за 4, единственно сложно было в лабиринте где нужно в центре отыскать лист, потому как при таком ракурсе весьма сложно ориентироваться с невидимыми кнопками. А почему саундтрек не тронут? Он ведь почти весь ужасен, тема волшебников вообще способна расщепить ушные перепонки на атомы.
thealx:
Товарищи, у нас готова тестовая версия с русификатором. Кое-где перевод не лёг, добавил вручную. В целом стабильность сборки не пострадала но за проходимость или отсутствие багов не ручаюсь - сейчас нет свободного времени для полноценного тестирования. Если обнаружите проблему связанную с прохождением буду благодарен если отправите сохранение, позволяющее её быстро повторить.
v0.3
- Добавлены английская и русская сборки ROM, русский перевод интерфейса и сюжетных сцен.
- Улучшено управление транспортом: удерживайте A для разгона; транспорт NPC движется по плавным траекториям.
- Добавлены отдельные настройки громкости музыки, фоновых звуков и эффектов, а также высоты тона музыки.
- Исправлено сохранение точных значений здоровья, магии, их максимумов и состояния поверженных персонажей.
- Ускорен отклик меню и добавлена циклическая навигация по спискам.
- Удалена настройка Lefty/Righty, повышена надёжность звука и сборки ROM.
Беларус:
--- Цитата: thealx от 04 Октября 2026, 20:05:27 ---решил запрячь нейронки
--- Конец цитаты ---
Так и подумал сразу, но дизасм игры не нашęл в сети. Неужели ИИ ковырял ром?
--- Цитата: thealx от 04 Октября 2026, 20:05:27 ---распознавание изображений, так что он сам вносит правки, сам тестирует, сам багфиксит
--- Конец цитаты ---
То есть сам оперирует эмулятром?
thealx:
--- Цитата: Vincent7 от 09 Октября 2026, 17:42:54 ---А почему саундтрек не тронут? Он ведь почти весь ужасен, тема волшебников вообще способна расщепить ушные перепонки на атомы.
--- Конец цитаты ---
эксперименты были, но я решил более детально к этому вопросу подойти после завершения работ над геймплеем. возможно даже коллективно - скину образцы типа таких и вместе решим какой вариант лучше.
--- Цитата: Беларус от 09 Октября 2026, 20:53:14 ---Так и подумал сразу, но дизасм игры не нашęл в сети. Неужели ИИ ковырял ром?
То есть сам оперирует эмулятром?
--- Конец цитаты ---
Распознавание захвата изображения с эмулятора на очень высоком уровне, вплоть до попиксельного сравнения синхронизации по таймингу. Трудности в основном только с распознаванием спрайтов низкого раазрешения - иногда нейронка не понимает что тот или иной спрайт изображает, в какую сторону смотрит персонаж и т.п.
Результативность моделей:
Gemini 3.8 Flash - удовлетворительно, понимает что нужно сделать но чаще всего результат посредственный
GPT Sol 6 - хороший, легко вносит правки но плохо тестирует визуальные изменения
Claude Opus 5.5 - Отличный, правки любой сложности, многоуровневая валидация внесённых изменений
В проекте **Rings of Power (The Ring Of Perfection)** внесение изменений в ROM устроено не через «слепое» шестнадцатеричное редактирование, а через **гибридный автоматизированный конвейер (Hybrid Disassembly & Asset-Injection Pipeline)**.
Ниже подробно описан весь процесс: от архитектуры и шагов сборки до полного перечня используемых инструментов.
---
### 1. Архитектурный принцип модификации
Проект решает классическую проблему ромхакинга (множество абсолютных 32-битных указателей в оригинальном коде) следующим образом:
1. **Базовый мегабайт неизменен ($000000–$0FFFFF)**: Исходный код частично разобран на модульный ассемблер ([`src/main.asm`](file:///d:/GENESIS/RingsOfPower/src/main.asm)), частично скомпонован из бинарных чанков ([`src/data/chunks/*.bin`](file:///d:/GENESIS/RingsOfPower/src/data/)).
2. **Расширение ROM (ROM Expansion, Append-Only)**: Размер картриджа увеличен с 1 МБ до **4 МБ** ([`inc/rom_config.inc`](file:///d:/GENESIS/RingsOfPower/inc/rom_config.inc)). Все новые подсистемы, музыка, расширенная графика и патчи размещаются в диапазоне `$100000–$3FFFFF`.
3. **Репоинтинг указателей**: Вместо сдвига оригинального кода изменяются лишь адреса указателей (`ptr_addr`) в строго заданных местах, перенаправляя вызовы на новые подсистемы в зоне расширения.
4. **Python-конвейер пост-обработки**: Все высокоуровневые модификации (полноэкранный движок, поддержка 6-кнопочного контроллера, плавный скроллинг, SRAM-сохранения, русский язык) применяются транзакционно через Python-скрипты.
---
### 2. Пошаговый процесс сборки и внесения изменений
```mermaid
flowchart TD
A["assets.json / Ресурсы"] --> B["tools/assets.py\n(Планирование адресов и репоинтинг)"]
B --> C["src/data/expansion.asm"]
C --> D["src/main.asm\n+ src/ data chunks"]
D --> E["VASM (vasmm68k_mot.exe)\nКомпиляция базового ROM"]
E --> F["tools/build.py\n(Модульный Python-патчинг)"]
F --> G["tools/localization.py\n(Инъекция Chief-Net 2.00 для RU)"]
G --> H["tools/fix_checksum.py\n(Пересчет Checksum заголовка и 32-bit ROP)"]
H --> I["tools/verify_rom.py\n(Тесты целостности)"]
I --> J["build/rom.gen / build/ru/rom.gen\nЗапуск в BlastEm"]
```
#### Шаг 1. Конфигурация и компоновка ресурсов (Asset Planning)
* **Инструменты:** [`tools/assets.py`](file:///d:/GENESIS/RingsOfPower/tools/assets.py), [`assets.json`](file:///d:/GENESIS/RingsOfPower/assets.json).
* Разработчик объявляет новые файлы ассетов (HQ-сэмплы, графика, спрайты).
* `assets.py` вычисляет смещения в области `$100000+`, учитывает ограничения шины Z80 (требование `no_cross: 32768` и чтение ниже `$100000` для сэмплов) и генерирует ассемблерный файл [`src/data/expansion.asm`](file:///d:/GENESIS/RingsOfPower/src/data/expansion.asm).
#### Шаг 2. Ассемблирование базы (Assembly)
* **Инструменты:** **VASM** ([`tools/bin/vasmm68k_mot.exe`](file:///d:/GENESIS/RingsOfPower/tools/setup_emulator_and_toolchain.py)).
* Компилируется [`src/main.asm`](file:///d:/GENESIS/RingsOfPower/src/main.asm) со следующими флагами:
```powershell
vasmm68k_mot.exe -m68000 -no-opt -spaces -Fbin -nosym -w -o build/rom.gen src/main.asm
```
* Ключ `-no-opt` критичен: он гарантирует точное сохранение опкодов и адресов инструкций 1:1 с оригиналом.
#### Шаг 3. Инъекция системных движков и механик (Python Patch Pipeline)
Главный скрипт сборки [`tools/build.py`](file:///d:/GENESIS/RingsOfPower/tools/build.py) последовательно загружает полученный ROM в память как `bytearray` и вызывает модульные патчеры:
* **SRAM & Product Code** ([`tools/save_ram.py`](file:///d:/GENESIS/RingsOfPower/tools/save_ram.py)): заменяет оригинальный драйвер медленного EEPROM 24C01 на стандартную память SRAM с батарейкой ($200000) и меняет код продукта картриджа в заголовке, чтобы эмуляторы открывали доступ к ROM выше 1 МБ.
* **Полноэкранный изометрический движок** ([`tools/fullscreen.py`](file:///d:/GENESIS/RingsOfPower/tools/fullscreen.py), [`tools/dirty_render.py`](file:///d:/GENESIS/RingsOfPower/tools/dirty_render.py)): заменяет оригинальное маленькое окошко 36×23 на полноэкранный рендеринг с механизмом «грязных» тайлов.
* **Плавная камера и движение** ([`tools/smooth_motion.py`](file:///d:/GENESIS/RingsOfPower/tools/smooth_motion.py), [`tools/sprite_actors.py`](file:///d:/GENESIS/RingsOfPower/tools/sprite_actors.py)): переводит отрисовку персонажей из битмапа в аппаратные спрайты Genesis и внедряет субпиксельный скроллинг.
* **Управление и интерфейс** ([`tools/six_button_input.py`](file:///d:/GENESIS/RingsOfPower/tools/six_button_input.py), [`tools/paper_cells.py`](file:///d:/GENESIS/RingsOfPower/tools/paper_cells.py)): добавляет чтение кнопок X, Y, Z, Mode и переносит свитки/меню на Window Plane.
* **Арт и звук** ([`tools/art_remaster.py`](file:///d:/GENESIS/RingsOfPower/tools/art_remaster.py), [`tools/sound_patches.py`](file:///d:/GENESIS/RingsOfPower/tools/sound_patches.py), [`tools/synth_z80.py`](file:///d:/GENESIS/RingsOfPower/tools/synth_z80.py)): патчинг звукового движка EA SHayes Z80, FM-стерео, оверсэмплинг DAC-сэмплов и HD-портреты.
#### Шаг 4. Локализация (Bilingual Isolation)
* **Инструменты:** [`tools/localization.py`](file:///d:/GENESIS/RingsOfPower/tools/localization.py), [`tools/translation_source.py`](file:///d:/GENESIS/RingsOfPower/tools/translation_source.py).
* При сборке с флагом `--languages en ru` английский ROM остается эталонным.
* Для русской версии берется оригинальный IPS-патч Chief-Net 2.00 ([`docs/chief_net_translation.md`](file:///d:/GENESIS/RingsOfPower/docs/chief_net_translation.md)), из которого извлекаются 1 183 диалоговые строки, меню и кириллические шрифты, после чего они бесшовно инжектируются в расширенную область `build/ru/rom.gen`.
#### Шаг 5. Коррекция контрольных сумм (Checksum Correction)
* **Инструменты:** [`tools/fix_checksum.py`](file:///d:/GENESIS/RingsOfPower/tools/fix_checksum.py).
* В игре действуют две проверки, без которых ROM не запустится:
1. **Стандартная контрольная сумма Genesis Header** ($00018E–$00018F).
2. **Внутренняя 32-битная контрольная сумма Naughty Dog** ($0FD07C): суммирует байты диапазона `$000000–$0FD07B`. Если сумма не сходится, игра падает в бесконечный цикл. `fix_rom_checksum` пересчитывает оба значения.
#### Шаг 6. Валидация и запуск (Testing & Emulation)
* **Инструменты:** [`tools/verify_rom.py`](file:///d:/GENESIS/RingsOfPower/tools/verify_rom.py), [`tools/run_emulator.py`](file:///d:/GENESIS/RingsOfPower/tools/run_emulator.py).
* `verify_rom.py` сверяет измененный ROM с сайдкаром `rom.gen.patches.json`, чтобы исключить случайное повреждение кода.
* Запускается эмулятор (по умолчанию скачивается и используется **BlastEm**, как наиболее точный к циклу шины Genesis).
---
### 3. Сводная таблица используемых инструментов
| Инструмент / Компонент | Роль в проекте |
| :--- | :--- |
| **VASM (`vasmm68k_mot.exe`)** | Ассемблер Motorola 68000. Собирает исходники `.asm` в точный бинарный код. |
| **Python 3 (`tools/build.py`)** | Оркестратор сборки, управление ключами `--languages`, `--stock`, `--no-fullscreen` и др. |
| **`tools/assets.py`** | Менеджер размещения ресурсов и авто-генератор ассемблерного stubs-файла `expansion.asm`. |
| **`tools/z80asm.py` / `z80cpu.py`** | Внутренний ассемблер и эмулятор процессора Z80 для отладки и модификации аудиодрайвера EA SHayes. |
| **`tools/fix_checksum.py`** | Калькулятор 16-битной Sega-суммы и кастомной 32-битной защиты игры. |
| **`tools/verify_rom.py`** | Валидатор целостности ROM и защиты от перекрытия патчей в памяти. |
| **Скрипты обратной разработки** (`extract_graphics.py`, `extract_palettes.py`, `extract_text.py`, `disasm_68k.py`) | Первичный реверс-инжиниринг: извлечение тайлов 4bpp, 9-битных палитр, словарей сжатия текста и дизассемблирование. |
| **BlastEm** | Точный эмулятор Sega Genesis, используемый для тестирования и запуска через [`build.bat`](file:///d:/GENESIS/RingsOfPower/build.bat) / [`play_ru.bat`](file:///d:/GENESIS/RingsOfPower/play_ru.bat). |
| **Pytest / Тестовый набор (`tools/test_*.py`)** | Десятки тестов логики (координаты, парсинг скриптов, сцены, SRAM) без ручного прохождения игры. |
thealx:
v0.5
- Добавлено плавное следование камеры с задержкой; устранены рывки движения и скачки спрайтов.
- Сглажены маршруты и движение транспорта NPC
- Обновлён полёт дракона в деморежиме: плавные повороты и движение камеры.
- Выровнена громкость музыки и фоновых звуков, приглушены резкие ноты, исправлено стерео.
- Добавлены вступительные боевые возгласы с учётом типа врага и крики при засаде
- Сохранения теперь точно восстанавливают время, еду, воду, золото и отношения с фракциями.
- Исправлена прорисовка карты
Навигация
Перейти к полной версии