Разработка и ромхакинг > Ромхакинг и программирование
Портирование игры SEGA на другой язык
(1/2) > >>
kadet.89:
Имеется ром игры и нужно из него достать алгоритмы отвечающие за физику игры и ai чтобы собрать клон на языке с++/javase. Собственно я и так могу сделать игру, но воспроизвести точно все процессы не получится... да и уйдет много времени на написание AI  с нуля, а нужно именно клон. С ассемблером никогда не работал и мне кажется что он значительно сложнее чем с++ и java. Собственно вопрос такой - можно ли вынуть в понятном для с/java программиста виде алгоритмы из рома? Если да, то где про это почитать. Пробовал использовать IDA PRO но понятного кода так и не получил.
Те кто подобным занимались сколько уходило на это времени?
Smoke:
Призывай r57shell'a в тему :D
r57shell:
несколько месяцев собирал инфу.
2 недели и вот результат
http://elektropage.ru/load/samopal/apelsinovyj_raj/rrr_port_2/10-1-0-12
Добавлено позже:
А я уже тут  :lol:
kadet.89:
r57shell, т.е. у вас ушло почти 2 месяца. Но при этом вы, как я понимаю, уже неплохо знали асемблер?
Ti_:
Если не секрет, что за игра?  :)
r57shell:
Не, ушло месяцев 5 (несколько). Был иногда усердный хаккинг, иногда говнопинство.
Я издалека знал ДРУГОЙ ассемблер (x86), а этот НОЛЬ. Щас знаю в этом ассемблере только названия команд и чего они делают "по задумке", а дальше дело мозгов.
Вообще, я давно программирую. Две недели это я переписывал код, смотришь в M68K пишешь на С++. :ohmy:
Да и пришлось баги по отлавливать тоже. :lol:
kadet.89:
А с чего начать?
Пока мне удалось сделать следующее:
Образ в формате bin загрузил в IDA PRO (процессор указал Motorola 68000) Программа ошибок никаких не выдала выведя следующие результаты:
http://s011.radikal.ru/i318/1209/5f/a5ea688f9ac4.gif
В игре много того что мне не нужно (ресурсы, уровни...) Собственно по полученным данным не понять где что... я иду в неправильном направлении или что то не понимаю?
r57shell:
Играй в ролевую игру, ты детектив. Лови вора за руку, исследуй место преступления, мотивы, причины, следствие.
Если это UMK3, то даже не начинай. :) Это как санта барбара. :D (низакончишь)

глянь эту тему
http://www.emu-land.net/forum/index.php/topic,29519.0.html

И вообще, ты тут не первый, много кто хотел такое, ни припомню никого, кто что-то дельное сделал.
Кроме меня :cool:. Оооо я великий и не повторимый.
Добавлено позже:
Кстати, я уже знаю какой ром. :lol:
Mega Bomberman (EU)
Обожаю CTF, и Google
kadet.89:
Всю игру то мне не надо портировать, только AI ботов в мультиплеерном режиме. Попробую покопать, может что и получится
Mr2:

--- Цитата: kadet.89 от 11 Сентябрь 2012, 19:17:34 ---Те кто подобным занимались сколько уходило на это времени?

--- Конец цитаты ---
Вагон и тележка. :)


--- Цитата: kadet.89 от 11 Сентябрь 2012, 19:17:34 ---Имеется ром игры и нужно из него достать алгоритмы отвечающие за физику игры и ai чтобы собрать клон на языке с++/javase.
--- Конец цитаты ---
Искать код нужно по ресурсу который он обрабатывает.


--- Цитата: kadet.89 от 11 Сентябрь 2012, 19:17:34 ---С ассемблером никогда не работал и мне кажется что он значительно сложнее чем с++ и java.
--- Конец цитаты ---
Он проще, просто код на нём менее понятен.
kadet.89:
Как работают команды я смогу понять, думаю это не сложно. Но вот как находить нужное место в коде? Тут просто нету ничего за что можно зацепиться... ни названий ни пояснений. Быть может можно пошаговую отладку как то сделать чтоб видеть когда какая строка выполняется? В си в таких случаях очень помогают названия функций, классов, переменных и пояснения да и пошаговая отладка есть.
Неужели вы напрямую перебирали весь код начиная с первой строки чтобы понять как работает вся программа?
r57shell:

--- Цитата: kadet.89 от 11 Сентябрь 2012, 21:22:21 ---Неужели вы напрямую перебирали весь код начиная с первой строки чтобы понять как работает вся программа?

--- Конец цитаты ---
Ну кто-то может быть и перебирал весь. Я не такой маняк, я говорю, мой метод: "Детектив - поймай вора за руку".
То есть, ищешь чего тебе надо в RAM, например жизни. Всё состояние игры хранится в RAM. (за исключением редких случаев).
И каждый раз, игра, логично, модифицирует это состояние (RAM). Находишь где то, что тебе нужно, а потом устанавливаешь скрытое наблюдение, чтобы поймать вора за руку.
На многое можно выйти через связи, родственников, друзей по работе, интересам преступника.
Короче, осознавай аналогию, и тогда ты познаешь истину. :lol:
kadet.89:
Если  не секрет, каким софтом вы для этого пользовались?
--- Цитата: r57shell от 11 Сентябрь 2012, 21:31:57 --- Находишь где то, что тебе нужно, а потом устанавливаешь скрытое наблюдение, чтобы поймать вора за руку.
--- Конец цитаты ---
Каким образом?
Ti_:
Вначале переменные ищешь в ram, также как и читы ищутся. Увеличил значение - сравнил.  Начинаешь с самых простых - жизни, координаты, таймеры и т.п.  Далее если читал доки по сегу, можно будет найти какие-то стандартные данные - ну там буффер спрайтов, значения джоев, записи в vram, работа с z80 и т.п.
Потом переходишь к функциям - в любое время во время игры останавливаешь дебагом, далее от этого места вверх, пока не найдешь основной игровой цикл, который повторяется. Проверяешь все JSR (или BSR) отключаях их посредством записи rts в их начале (там где начинается какая-нить subroutione). Так обычно отключаются какие-то элементы игры.
Есть еще вариант начинать с нахождения декомпрессора, чтобы ресурсы выдрать.
Mr2:

--- Цитата: kadet.89 от 11 Сентябрь 2012, 21:22:21 --- Тут просто нету ничего за что можно зацепиться... ни названий ни пояснений.
--- Конец цитаты ---
Вот разрабы негодяи, не заботятся о тех кто будет ковырять их игру. :lol:

--- Цитата: kadet.89 от 11 Сентябрь 2012, 21:22:21 ---Быть может можно пошаговую отладку как то сделать чтоб видеть когда какая строка выполняется?
--- Конец цитаты ---
В эмуляторе обычно есть дебаггер.

--- Цитата: kadet.89 от 11 Сентябрь 2012, 21:22:21 ---В си в таких случаях очень помогают названия функций, классов, переменных и пояснения да и пошаговая отладка есть.
--- Конец цитаты ---
Ну ты представь сколько места займут все эти имена, коментарии в роме? :)
В IDA есть всё чтобы откоментировать и назвать переменные и функции.

--- Цитата: kadet.89 от 11 Сентябрь 2012, 21:22:21 ---Неужели вы напрямую перебирали весь код начиная с первой строки чтобы понять как работает вся программа?

--- Конец цитаты ---
Вроде то что тебе нужно.
Молодец Griever! @}->--
r57shell:
Ti_ направляет по объездной, в расчёте что ты увидишь нужное из далека, не, ещё раз.
Не слушай его, делай как я, юзай мой эмуль. на сайте в подписи.


--- Цитата: Mr2 от 11 Сентябрь 2012, 21:53:08 ---В эмуляторе обычно есть дебаггер.

--- Конец цитаты ---
На оборот, обычно его НЕТ. Или его функционал скуден.
ColaKid:

--- Цитата: kadet.89 от 11 Сентябрь 2012, 21:22:21 ---В си в таких случаях очень помогают названия функций, классов, переменных и пояснения да и пошаговая отладка есть.

--- Конец цитаты ---
Бинарный файл же, откуда в нём названия функций, классов, переменных  :D
Mr2:

--- Цитата: r57shell от 11 Сентябрь 2012, 22:02:48 ---На оборот, обычно его НЕТ. Или его функционал скуден.

--- Конец цитаты ---
Не, ну это понятно, обычные эмули для обычных игроков. :) Дебаггер им без надобности.
-----------
Похоже kadet.89 понял во что ввязывается. :lol:
r57shell:

--- Цитата: ColaKid от 11 Сентябрь 2012, 22:09:11 ---Бинарный файл же, откуда в нём названия функций, классов, переменных  :D

--- Конец цитаты ---
OBJ, DLL нынче не бинарные дада. <_<
kadet.89:
Вот вам бы то что тут написали всё отшлифовать и сделать пошаговый мануал с картинками и примером на одной игре. Указать что откуда скачивать, как устанваливать и как ковыряться в исходниках. Тогдаб и ту тему не раздули на 9 страниц.
Навигация
Главная страница сообщений
Следующая страница

Перейти к полной версии