Надеюсь, ты новичок, читающий сей гайд , представляешь примерно что такое компьютер(ПК), байт(byte), озу(RAM), 16-ричная система чисел. если нет, лучше не читать.
Итак, мы решили изменить/хакнуть игру, т.е. РОМ-файл. в отличии от обычной ПиСи-шной игры, в РОМЕ нет никаких файлов, а всё можно сказать монолитно., хотя конечно сами данные не в перемешку расположены, а по очереди.
все данные можно представить в виде 1байт(byte), 2байта(WORD), 4байта(LongWord).
Ром содержит КОД игры (т.е. EXE-шник как было бы на ПК), графику, музыку, палитры(наборы цветов), данные(например уровни,хар-ки и всё остальное что не код)
КОД это команды для процессора Сеги. то есть exe-шник, то есть программа самой игры. В сеге есть 2процессора — MC68 (основной) и Z80(дополнительный).
нас интересует первый.
команды процессора это коды, которые можно перевести в коды языка программирования ассемблер.
могут быть 2байт, 4 байта, 6 байт, и т.д. (1,3,5 не бывает, во всяком случае я не видел).
Как взламывают игры? Часть 1 Структура исполняемого файла
теперь откроем Hex-редактор’ом (напр. WinHEX,) наш РОМ, чтобы посмотреть на них. располжены они как правило вначале РОМА где-то с адреса 00000210 ($210 ).
пример самых популярных кодов :
4E 75 — что в ассемблере значит RTS.(возврат)
4E 71 — NOP (ничего не делать, т.е. полезно когда надо что-то вырезать)
4E B9 00 00 07 B4 — JSR переход на адрес 000007B4 в роме.
зайдем в WINHEX search-find hex values — 4e75 и посмотрим на них. вот это они и есть.
теперь нужно на них посмотреть в более понятном виде. для этого есть программа IDAPro. открываем ей РОМ Сеги, нажимаем OK(должен быть загрузчик для Сеги, в котором уже указаны настройки)
1-ая вкладка (IDA-view-A), переводим в текстовый вид(правая кнопка-text view). увидим что-то вроде:
ROM:00000A5C move.b (a2,d0.w),d1
ROM:00000A60 addq.b #2,d1
ROM:00000A62 cmpi.b #$28,d1
ROM:00000A66 bne.s loc_0_A6A
ROM:00000A68 clr.b d1
вот это и есть коды ассемблера. самое лево адрес в роме , addq.b-команда, #2,d1 — то,что она делает.
теперь выделим мышкой любую команду, и откроем вторую вкладку в IDA (hex view-A). зеленым будет как раз обведена эта команда в HEX(16-ричном)-виде.
совсем не обязательно знать/учить программирование, чтобы что-то изменить.
однако команды нельзя заменять нулями, нельзя заменять непойми чем. иначе процессор Сеги зависнет и игра остановится или полезут баги из под крышки картриджа .
однако команды можно вырезать, например если команда 2 байта — написать заместо нее(winhex’ом) 4e 71, если 4байта — 4e 71 4e 71.; можно заменить числа в командах, сmpi.b #$28,d1 например 0C 01 00 28 — заменить на 0C 01 00 01, получится сmpi.b #$1,d1 , т.е. сравнения с числов 1, вместо 28. и получить какие-то прикольные (и не очень эффекты)
участки кода разделяются на функции (в IDA- sub_0_10A и т.д.), разлены такой надписью.
; =============== S U B R O U T I N E =======================================
Как перенести игру или программу с одного компьютера на другой с помощью утилиты PickMeApp
можно вырезать всю функцию (в самом её начале написать 4e75 (RTS- т.е. возврат обратно в тот участок где код выполнялся до этого)., и потом посмотреть изменилось ли что в игре.
однако никогда не заменяйте 4e75 на 4e71, т.к. после кода могут идти какие-то данные., а сега прочитает их как код, процессор не поймет и повиснет.
Как раз наша самая главная задача (как и IDЫPro) отделить весь код от данных, а данные от кода.
тогда даже если мы не понимаем код, мы сможем поменять данные.(пример RRR- хар-ки игроков, хар-ки машин, уровни сложности,наборы трасс, цены апгрейдов.)
как я уже говорил данные могут быть dc.b -1байт, dc.w. -2байта, dc.l — 4байта., в иде можно можно менять тип данных (правая кнопка на адресс), очень хорошо если вы правильно их обозначите, так как будет гораздно понятнее.
как правило IDA находит часть данных и помечает их unk_1c6c. , или byte_1c6c. нажмем на эту надпись правой кнопкой мыши, найдем надпись Jump to Xref to Operand. (вот там будет показан переход на участок/участки КОДА — каким эти данные используются /куда эти данные загружаются).
самая частая команда которой они грузятся — LEA(load effective adress) , а также move.b (10 29 xx xx). / move.w / move.l.
очевидно что-то по move.b загруж данные типа 1байт, move.w (т.е.) -2байта , move.l -4. впринципе IDA и сама их должна правильно обозначить. в случае с LEA надо смотреть самому.
обращаю внимание что адресса откуда грузить данные могут быть относительные и абсолютные. чаще используются относительные. пример:
10 29 1c 6c — move.b c 1с6с (откуда — от текущего адреса+1c6c+длина самой команды+2) , считается на виндновом калькуляторе(инженерный- HEX).
41fa 8a 4c — lea (текущ+8a4c+2)
41f9 00 00 01 F0 — lea данных с (асболютный адресс — 000001F0 ($1F0) )
кажись некоторые из них называют еще поинторами, я лично сделал хак RRR, и никаких поинтеров не видел. и естественно искать их не надо, и никаких программ для их поиска ненужно, это всё выдумки ромхакеров чтобы всех нас запутать, хотя может на денди какие поинтеры и есть (ну вообщем сами смотрите как вам удобней).
так как IDA отделяет далеко не весь код от данных, нужно доделывать за нее. конечно новичку это крайне трудно,так как ваще ниче не понятно, однако дам пару советов.
код с данными обычно расположен вначале РОМА (т.е. до графики и музыки), 4e75 — это на 99% код и конец функции., не может быть ничего похожего на полную чушь(типа повторерния однотипных и непохожих на других команды)., код не может быть разорван. (т.е. обычно фунция кончается на команду RTS или JMP),
если сомневаетесь что это код или данные запустите GENSVKNTrace(от Виктора Яковлева) поставьте галочку «установить брейкпоинт» на адресс который вас интересует (на чтение и PC), если это будет код- он покажет адресс и его код (этот ГЕНС также отображает коды ассемблера- но те что,выполняются в данный момент времени) , если число(данные) — покажет код в другом месте.
Сам преобразование данных в код в IDE нужно делать нажав на «C» на месте которое не изучено, а на «u» -undefine- то есть отмена(то есть если это явно не код).
можно выделить какой-то участок мышкой , и потом в меню правой кнопки выбрать analyze selected area.
Если планируете сделать хак, и что-то начинает получатся, обязательно переименовывайте SUB_0000 , UNK_0000 в свои выдуманные названия. (они будут в 3-ей вкладке в NAMES), остальные вкладки я закрыл ,советую и вам.
например нашли за что, отвечает функция или данные, называем. (пример функция CHAR_STATS , данные char_top_speed), не пишите название длинее 14символов в подписях к данным(к фунциям можно), а то пропадают XREFS’ы , не знаю может такой глюк в ИДЕ.
когда отделите код от всего остального, советую начать изучение рома именно с данных(не трогая код) , заменяя WINHEX-ом отдельные куски данных нулями 00. таким образом можно найти где у нас музыка,звуки, графика и всё остальное (уровни например).
еще некоторые другие типа данных: offsets off_0_000(dc.l) — ссылки на адреса. выглядят как ( 00009816 000098A8)
ROM:00009802 off_0_9802: dc.l sub_0_9816 ; DATA XREF: sub_0_97DA+1Eo
ROM:00009806 dc.l sub_0_98A8
Палитры — это значения типа dc.w выглядят как ( 0EEE 0CCC 0C84)., т.е. цветовая гамма, где 0BGR, то есть blue green red , синий зеленый красный цвет. (0000-черный, 0EEE-белый, 0E00-синий) — это самое простое что можно сменить (хакнуть).
Запакованные данные- фактически как архивы на ПК. внутри может быть что угодно(чаще графика). такие данные заменить нельзя без специальных программ распаковщиков. (хотя в коде игры программы — алгоритмы распаковки безусловно есть)
RAM(Озу) Сеги — загрузчик для IDЫ от HardWareMan’а создает специальный сегмент. адресов 00FF0000 — 00FFFFFF- это оперативная память Сеги. память можно менять в бол-ве эмуляторов (через Gamegenie например), если знаете какие-то значения которые за что отвечают подписывайте эти адреса и в IDE.
И ещё, если вы вдруг всё поняли(может и такое быть!), и хотите что-то добавить помните что размер РОМа для бол-ва эмуляторов Сеги не должен быть выше 4мб . (для реальной Сеги — 10мб). недавно миф о лимите в 4метра был рассеян KABAL’ом- самым крутым ромхакером.
Все остальные силы лучше бросить на изучение ассемблера МК68. (я могу лишь вкратце объяснить, что у нас есть регистры d0-d7 — тут числа, a1-a7 — тут видимо адреса. (можно в GensVKNTrace посмотреть как они меняются).
PC- program counter- место где в данный момент находится программа.,выполняемый код.
команда add- добавить, cmp — сравнить, move-поместить значение, clr -очистить., tst-проверка значения (0/неноль)
ну а как графику и звуки заменять ты, юный ромхакер, уже знаешь без меня, просто гораздно приятнее когда знаешь где точно, что у тебя в роме находится. (и можешь не только заменить, но и добавить) да и на мой взгляд основы знать важнее, прежде чем начинать юзать непонятный специализированный софт.
Группа: Заблокированные
Сообщений: 152
Статус: Оффлайн
Quote ( Ti_ )
кажись некоторые из них называют еще поинторами, я лично сделал хак RRR, и никаких поинтеров не видел. и естественно искать их не надо, и никаких программ для их поиска ненужно, это всё выдумки ромхакеров чтобы всех нас запутать, хотя может на денди какие поинтеры и есть (ну вообщем сами смотрите как вам удобней).
Для их поиска и так некаких прог ненужно, только мозг (и того немного). И как раз поентеры в Сеге есть ненужно запутывать начинаюших ромхакиров.
Quote ( Ti_ )
И ещё, если вы вдруг всё поняли(может и такое быть!), и хотите что-то добавить помните что размер РОМа для бол-ва эмуляторов Сеги не должен быть выше 4мб . (для реальной Сеги — 10мб). недавно миф о лимите в 4метра был рассеян KABAL’ом- самым крутым ромхакером.
Группа: Проверенные
Сообщений: 58
Статус: Оффлайн
Quote ( KABAL )
Игра идёт на всех Сегах, СЕГИ без проблем видят 10 МЕГАБАЙТ, ничего в этой зоне от 4 до 10 МЕГАБАЙТА НЕ ГЛЮЧИТ — ТЕПЕРЬ ВОПРОС, А КТО СОЗДАЁТ ВЫСОКОТОЧНЫЙ ЭМУЛЯТОР СЕГИ, ОНИ ЧТО, НЕ ЗНАЮТ, ЧТО СЕГА ВИДИТ 10 МЕГАБАЙТ — КАКИЕ-ТО НИХРЕНА НЕ ЗНАЮЩИЕ ЛЮДИ ВЗЯЛИСЬ ЗА РАЗРАБОТКУ ЭМУЛЯТОРА, НАДО АВТОРУ ЭМУЛЯТОРА ВИДЕО ПОСЛАТЬ, ЧТО 10-МЕГАБАЙТОВЫЙ КАРТРИДЖ НА СЕГЕ БЕЗ ПРОБЛЕМ РАБОТАЕТ . СТИВ СНЕЙК, КОТОРЫЙ КЕГУ FUSION РАЗРАБОТАЛ, ТОЖЕ СЕГУ ДО КОНЦА НЕ ЗНАЛ, УЧИЛИСЬ, НАВЕРНОЕ, ЭМУЛЯТОРЫ ПИСАТЬ, И НА ПАЛЁНЫХ ДОКАХ СЕГУ ИЗУЧАЛИ, А ДОКИ КАКОЙ-ТО НИХРЕНА НЕ ЗНАЮЩИЙ О ВОЗМОЖНОСТЯХ КАРТРИДЖЕЙ СЕГИ ЧЕЛОВЕК ПИСАЛ. ДО СИХ ПОР НА ВИКИПЕДИИ КТО-ТО ТАКУЮ ХРЕНЬ ПИШЕТ, ТИПА СЕГА 10 МЕГАБАЙТ НЕ ВИДИТ
Quote ( CARI )
поентеры в Сеге есть ненужно запутывать начинаюших ромхакиров.
команда LEA, что означает load effective adress — это команда ассемблера!, это команда а не слово с непонятным названием «поентер». я же говорю каждый понимает по-своему(я там в скобках специально написал).
«поентерами» можно назвать разве что адреса типа offsets_ (но логичнее назвать их оффсет?),
а lea — это часть кода,программа. вы сами запутали новичков.
Подполковник
Группа: Проверенные
Сообщений: 139
Статус: Оффлайн
Ti_, дока стоящая, хоть и написана немного непрофессиально, но это даже к лучшему — как раз для новичков. А поинтеры это что-то типа указателей. Идут массивами, как например указатели на трассы, звуки, машины в RRR(по сути это тоже поинтеры, только могут указывать не только на текст) и загружается весь массив этих указателей обычно инструкцией LEA. Так что поинтеры есть
Источник: romhacking.ru
Как переписать программу игры
Как переписывать компьютерные игры?
А может проще программой какой-нибудь?
Расскажите!
Регистрация: 08.03.2016
Сообщений: 0
Регистрация: 11.04.2007
Адрес: Санкт-Петербург
Сообщений: 40,320
Записей в дневнике: 73
Сказал(а) спасибо: 885
Поблагодарили 2,792 раз(а) в 431 сообщениях
Репутация: 186892
А какая цель преследуется?
__________________
Пингвин птица гордая, пока не пнёшь — не полетит.
Регистрация: 19.08.2007
Сообщений: 15,750
Записей в дневнике: 71
Сказал(а) спасибо: 162
Поблагодарили 200 раз(а) в 84 сообщениях
Репутация: 74843
Какие игры? Куда переписывать? С какой целью?
Если речь идет о современных игрушках, вряд ли вам удастся сделать полноценную копию установленной на каком-либо компьютере игры. Дело в том, что при установке любая программа добавляет записи в реестр и, возможно, закидывает нужные библиотеки в папку Windows. Но есть ряд игр, которые можно переносить, просто копируя ее рабочую папку, что влечет за собой нарушение лицензионного соглашения.
Чтобы установить на свой компьютер игру, вы должны найти ее установочный диск, запустить его и следовать инструкциям на экране.
Источник: www.tehnari.ru
Обратная разработка и перевод старых игр
Скриншот игры BloodNet в локализации «Бюро переводов Old-Games.Ru», рабочая версия
Помимо заработка у программирования есть бонус — возможность выбрать интересное и необычное хобби. Например, разбирать «на запчасти» любимые видеоигры — исследовать их и переводить. Чему учит локализация старых игр, каких навыков требует, с чего начать — об этом я расспросила программиста, который занимается подобными проектами уже 10 лет.
Игрострой конца XX века дарил нам яркие сюжеты и идеи, которым может позавидовать современная индустрия с ее канонами и ограничениями. Старые хиты были эталонами: формировали представление об игровой механике и том, какими должны быть шутеры, стратегии, RPG. Ценители расскажут вам о «теплой ламповой атмосфере» — особенно те, для кого продукция 90-х — это привет из детства.
Многие игровые древности никогда официально не выходили на территории СССР и России. И если переводились, то кустарно — пиратами. Даже если вы неплохо знаете английский, приятно увидеть старую игру такой, будто ее изначально разрабатывали для русскоязычной аудитории. Все выглядит по-новому, когда не только меню или субтитры — весь мир игры говорит на «великом и могучем» и всюду красивые кириллические шрифты.
Такие проекты невозможны без технических специалистов, которые берут под контроль ресурсы игры: надписи, изображения, звук. Для разработчика это практика и интеллектуальное приключение.
Интервью с программистом-локализатором
Иван — профессиональный программист с 20-летним опытом. В свободное время он помогает «Бюро переводов Old-Games.Ru» русифицировать хитовые игры 80-х и 90-х годов. Если коротко, «Бюро» — энтузиасты, которые бесплатно делятся переведенными играми с человечеством.
Скриншот игры Veil of Darkness — рабочая версия перевода от «Бюро»
— Как давно вы занимаетесь локализацией старых игр? С чего это началось для вас?
— Примерно в 2008 году я обнаружил исходники игры Beneath a Steel Sky и задумал перевести ее на русский язык. Я понял, что с технической стороной справлюсь сам, но для перевода текста и отрисовки шрифтов нужны помощники. В интернете нашел команду PRCA (Project of Russification of Classic Adventures) и предложил им поработать вместе. Они согласились, и я занялся извлечением текста, шрифтов, изображений.
Когда уже перешел к вставке текста и шрифтов обратно в игру, у меня навернулся винт — все потерялось. Я обиделся и «забил».
Но в 2010 году вернулся к этой теме и начал работу заново. Написал инструмент для экспорта/импорта игровых ресурсов и снова обратился в PRCA, где мне рассказали о «Бюро переводов Old-Games.Ru».
— В каких еще проектах «Бюро» вы участвовали или сейчас задействованы?
— После локализации Beneath a Steel Sky я помогал с проектами:
- Lure of the Temptress;
- Alley Cat;
- Veil of Darkness;
- Crusader: No Remorse/Regret;
- Superhero League of Hoboken;
- BloodNet.
Может, еще что-то забыл. Сейчас исследую шрифт известного нуар-квеста Black Dahlia (1998).
Скриншот из игры Black Dahlia
— Чему учит программиста работа над локализацией старых игр?
— Очень быстро прокачивает скилл реверса: учит проектировать обратные алгоритмы, правильно дебажить, читать ассемблерные листинги. Об этом еще поговорим.
Другой неплохой навык, который можно развить — оптимизация кода. Это особенно актуально для пишущих под мобильные платформы. Старые игры были оптимизированы, так как компы были слабые, а носители — маленькие. Поэтому в коде DOS-игр часто встречаешь хитрые оптимизации по размеру и производительности.
Да и просто бывает любопытно, какими алгоритмами пользовались программеры тех времен. Можно что-то почерпнуть для себя.
— Из каких этапов строится работа над переводом?
— Обычный порядок действий:
- Ищем, нет ли готовых инструментов для работы с ресурсами игры. И не вытаскивал ли их кто-то раньше.
- Реверсим игру — «разрабатываем обратно», чтобы определить форматы хранения и сжатия шрифтов и текста.
- Пишем инструменты для экспорта ресурсов.
- Затем — для их сжатия и импорта.
- Отлаживаем и поддерживаем свои инструменты.
Главная задача — добраться до шрифта и текста. Когда ты их контролируешь, можно начинать перевод.
— Вы сказали о готовых утилитах для редактирования ресурсов. Если они есть, зачем писать свои?
— Я ищу готовые тулзы. Если нахожу — кидаю их переводчикам, нет — создаю сам.
— Давайте о самом вкусном — о реверсе. Что это? Как это происходит?
— Реверс-инжиниринг — восстановление алгоритма работы программы. Это процесс противоположный разработке. Мы не пишем программу, которая реализует конкретный алгоритм, а восстанавливаем алгоритм по готовой программе. Для этого нужно сначала проанализировать дизассемблированный/декомпилированный или открытый исходный код. Подробнее об этом можно почитать в Википедии.
— Умение восстанавливать алгоритмы наверняка полезно и специалистам по информационной безопасности. Можно анализировать ПО и выявлять вредоносный код. А как это помогает в работе над играми?
— Чтобы извлечь ресурсы из игры, надо знать, где и в каком формате они лежат, каким образом сжаты. Лучший способ это понять — посмотреть, как сама игра достает их, отрисовывает графику и текст. Потом по восстановленному алгоритму можно писать утилиту для экспорта/импорта. Ради экономии места в DOS-играх все ресурсы обычно сжимали. Делали это разными самописными упаковщиками.
— Расскажите на примерах, как вы восстанавливали алгоритм BaSS (Beneath a Steel Sky) и других игр.
— В работе c BaSS почти все было просто. У меня был исходный код движка игры на С++ (в составе ScummVM). Я нашел в коде место, где из файлов читались шрифты, картинки и текст. Потом проанализировал, как это работает, и написал свою тулзу, которая делала то же самое.
Из сложностей там было только написание компрессора по декомпрессору. Такая задача встречается в работе практически над каждой игрой. Мы знаем алгоритм распаковки данных. Чтобы скормить игре уже отредактированные ресурсы, надо сжать их так, чтобы декомпрессор их принял «как родных» и не заметил подвоха. То есть по алгоритму распаковки нам надо спроектировать упаковку.
Труднее с играми, для которых не удается найти исходники. Приходится дизассемблировать .exe-файл и в ассемблерном листинге искать функции, отвечающие за чтение ресурсов.
Если сходу не удается найти их, программу можно отладить дебаггером. Например, поставить точку останова на открытие и чтение файла. Затем дождаться, пока откроется интересующий нас файл и проследить, куда отправляются прочитанные из него данные. Когда функции обработки ресурсов найдены, я анализирую их ассемблерный код, чтобы составить алгоритм их работы.
— Важно ли знать, на каком языке была написана игра? И как это определить?
— Не важно. При реверсе в основном приходится иметь дело с дизассемблированным кодом. Но исходный язык определить можно — по сигнатурам компиляторов, соглашениям о вызовах или прологам функций.
Русский ввод текста в игре Veil of Darkness (перевод «Бюро», рабочая версия)
— Вот вы узнали форматы сжатия и хранения. Сколько времени займет создание инструментов для экспорта/импорта?
— Написать экспорт по готовому алгоритму — задача несложная. Труднее восстановить сам алгоритм. Я обычно пишу экспорт по мере того, как исследую формат данных. С импортом сложнее, особенно если надо реализовывать сжатие. В целом, написание таких инструментов занимает дни.
— На каких языках вы пишете свои утилиты?
— Зависит от того, что установлено у переводчика, который будет моими инструментами пользоваться. В разное время я писал для «Бюро» на C#, C++, Java, ассемблере. Наши переводчики пользуются разными ОС, поэтому в последнее время больше пишу на кроссплатформенных интерпретируемых языках: Python, Ruby.
— Какие алгоритмы важно знать для написания инструментов? Используете ли вы какие-то библиотеки и фреймворки?
— Все программирование здесь сводится к работе с потоками байтов. А это можно делать на любом ЯП без сторонних библиотек. Ничего особенного для написания своих инструментов знать не требуется.
Чаще всего в DOS-играх использовали алгоритмы сжатия RLE и Хаффмана. Но встречаются и совсем уникальные. Здесь не так важно знать алгоритмы сжатия, как иметь навыки реверса.
Иногда сторонние библиотеки могут пригодиться для работы с графическими файлами, но в большинстве случаев можно обойтись штатными средствами языка. Для стандартизации инструментов у меня есть самописный фреймворк на Ruby — использую его во всех последних проектах.
— Какой софт помогает исследовать и отлаживать игру?
— Можно использовать дизассемблеры: IDA, Hopper Disassembler, Radare и другие. Для отладки подойдет DOSBox debugger. Можно еще поставить виртуальную машину QEMU с FreeDOS на ней и использовать встроенный дебаггер.
Также обратите внимание на программу ScummVM. Она включает переписанные движки старых DOS-квестов и позволяет запускать их на современных платформах, включая Linux и Mac. Добавляете игры (паки ресурсов) и можно играть. Отлаживать ScummVM не помогает, зато позволяет смотреть открытые исходники движков.
ScummVM с запущенной Beneath a Steel Sky в переводе «Бюро»
— Вернемся к вашему текущему проекту Black Dahlia. Вы исследуете шрифт. Что надо знать, чтобы пристроить в игру кириллицу?
— Нужно разобраться с форматом текста в игре. Я уже выяснил, как программа читает файл шрифта. Увидел, что там лежит сжатая картинка и таблица с координатами символов. Разобрал алгоритм сжатия. Дальше я напишу тулзу, которая извлечет картинку и преобразует в редактируемый PNG.
Художники перерисуют шрифт, а мне останется конвертировать изображение обратно в формат игры, сжать и записать в оригинальный файл.
— С чего начать тем, у кого есть интерес и мотивация перевести игру, но нет пока опыта и знаний? На какие темы обратить внимание?
— Почитайте статьи по отладке и реверсу. Поищите исходники старых DOS-игр: посмотрите на форматы шрифтов, изображений и на то, как упакован текст. Почитайте форумы, посвященные открытым движкам и переводам старых игр. Познакомьтесь с движками, входящими в состав той же ScummVM. Загляните в git-репозиторий нашего проекта, где мы храним утилиты для разбора ресурсов старых игр.
Любой проект начинается с гугления. Соберите максимум информации по игре. Может, исходники, движок или ресурсы уже есть в открытом доступе. Или кто-то выложил готовые инструменты для экспорта/импорта. Все это сильно упростит и ускорит вашу работу. Если есть мотивация, надо действовать. Не зацикливайтесь на теории — знания и навыки придут с практикой.
Ориентируйтесь не на технологии, а прежде всего на игру, которую хотите перевести.
— Спасибо! Успеха Вам с Black Dahlia и другими переводами. А я еще добавлю для наших читателей несколько ссылок на статьи с описанием интересных реверс-проектов по играм.
Источник: gb.ru