| Разработка и ромхакинг > Ромхакинг и программирование |
| Портирование игры 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 страниц. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |