Показать сообщение отдельно
Старый 31.08.2017, 00:52   #1
Person Of The Community
 
Регистрация: 30.06.2015
Пол: Мужской Мужской
Сообщений: 7
MG_REX - луч света в тёмном царствеMG_REX - луч света в тёмном царствеMG_REX - луч света в тёмном царствеMG_REX - луч света в тёмном царствеMG_REX - луч света в тёмном царствеMG_REX - луч света в тёмном царстве
Хорошо [Metal Gear Solid] Game Over Editor / РЕДАКТОР ГЕЙМОВЕРОВ             

Всем привет! Ознакомившись с фанатским переводом первой MGS, у меня появилось очень много вопросов, один из них: как они перерисовали геймоверы? Я прочитал pdf, прилагающуюся к переводу, но ответов не нашёл, только скрины программ. К сожалению, фанаты, в большинстве своём, не рассказывают подробности процесса, не выкладывают софт, а только предоставляют готовый продукт. А ведь интересно же :((Я решил исправить это и сделал собственный редактор геймоверов для MGS1


Редактор:
Этот текст скрыт Вы должны зарегистрироваться чтобы увидеть скрытый текст. После регистрации и активации аккаунта нажмите кнопку 'Спасибо', чтобы увидеть скрытый текст содержащейся здесь. Регистрация возможна через e-mail и OpenID. Если Вы испытываете проблемы с регистрацией, пожалуйста свяжитесь с Администратором volgame@gmail.com



Фичи:
1. Графический редактор
2. Сохранение/загрузка нарисованных геймоверов
3. Сохранение/загрузка бинарников геймовера
4. Экспорт геймоверов в json
5. Экспорт геймоверов в бинарники, понятные игре

Скриншоты:
Нажмите





Подробный процесс создания:

Если присмотреться к отрисовке геймовера, можно заметить, что буквы образовываются с помощью линий. Если есть линии, то есть и координаты. Теперь главный вопрос: как их найти? Можно отлаживать игру, но я нашёл способ попроще. Делаем скрин эмулятора в 100% масштабе, обрезаем рамки. В Paint.NET наводим на крайнюю точку любой линии и смотри её координаты. Выбираем любую и открываем Cheat Engine. Ищем в нём это значение (изначально я думал, что это float, но вспомнил, что на старых ЭВМ для этих целей выделялось не 4 байта, а 2, поэтому, ничего не найдя, я стал искать 2-байтовое значение). Начинаем менять значения по списку и смотреть на эмулятор. Методом исключения находим нужное значение и нажимем на нём Ctrl+B. В hex редакторе нажимаем ПКМ -> Display type -> 2 Byte decimal. Перед вами структура геймовера (координаты, к которым стремится анимация).

Скрин:
Нажмите




Методом замены ищем крайний левый байт геймовера. Им оказалось значение, отвечающее за количество линий. Сам формат выглядит так:
PHP код:
struct GameOverScreen short lineCountLine[] lines;}
struct Line short x1short y1short x2short y2;} 
Ничего сложного, как оказалось. На этих знаниях и создавался редактор. Если вам лень всё это делать, то просто извлеките STAGE.DIR и в hex-редакторе найдите:
GAME OVER:
PHP код:
78002500580019006800190068001F0079001F007900280079002800790020008700200087002A0087 
MISSION FAILED:
PHP код:
A10020005D001800840020005D0028005D0028005D0029006B0029006B0032005D0032005D0039005D 
Замена - просто замените всё найденное своими байтами, также можно вставить прямо в RAM через CE
Вот, что получилось у меня (не смотрите на кривоту, я суть показал):





Спасибо за внимание

Последний раз редактировалось MG_REX; 30.09.2017 в 01:55.
MG_REX вне форума  
Ответить с цитированием
Эти 21 пользователи сказали Спасибо MG_REX за это сообщение: