| Разработка и ромхакинг > Ромхакинг и программирование |
| Скриптинг в эмуляторах. |
| (1/2) > >> |
| spiiin:
Давно в голове крутилась такая идея - взять эмулятор одной из старых консолей с поддержкой скриптов, добавить в его систему парсинга команд специальный опкод, по которому будет срабатывать передача управления в скрипт. Дальше вместо стандартного процесса хака делать следующее - дизассемблированную функцию переписать на скриптовом языке и стереть её из ROM, заменив тело на опкод вызова скриптовой функции (для этого хватит пары байт), оставшееся место использовать для своих нужд. Из скрипта есть доступ к любым функциям эмулятора (а если и нет, можно прокинуть нехватающие). Так можно переписать все основные системы игры - управление, интеллект врагов, форматы описания уровней, тексты etc. Всё необходимое для модификации. На выходе получится практически чистый ROM с частью технических неинтересных для модификации функций в нём, и движок игры в читабельном виде на языке высокого уровня. Сложность переписывания кода на скриптовом языке намного меньше, чем переписывания алгоритма на ассемблере. Но главные плюсы в том, что снимаются ограничения на размеры данных и кода, которых всегда не хватает, а также в том, что можно удобно тестировать переписанный код, модифицируя его без перезапуска игры и работать над скриптом совместно. Так еще никто не делал :) Для теста переписал небольшую часть логики прыжков Черного Плаща под новую версию эмулятора. Изменённый эмулятор, скрипт и ром в приложении. Если кто-то заинтересуется таким подходом к хакингу, буду рад объяснить подробнее :) |
| dekster88:
из всего прочитанного понял только фразу "Черного Плаща" o_0 |
| Lomax:
dekster88, а я только "буду рад". А кто такой Черный плащ? :lol: Добавлено позже: spiiin, а это какой язык программирования? Можно на него где нибудь инструкции посмотреть и синтаксис?) Я бы после котов поразбирался бы, посидел) |
| Ti_:
Идея отличная, но скриптами тоже надо уметь писать. Но есть и минусы - привязка хака к эмулятору и скрипту, то есть игроки не смогут поиграть на железе и других эмуляторах. (Зато можно сделать билд эмулятора без возможности сейв-лоада :D ) Также нечестные игроки могут взять и скрипт изменить, изменив суть хака, включать бессмертие, менять XY персонажей и т.п. А сами искать читы не все умеют, тем более в роме менять. |
| spiiin:
Ti_, защищаться от читеров смысла нет никакого, а то что скрипт можно изменить - это плюс, а не минус же. привязка к эмулятору это не очень прикольно конечно, но думаю можно без проблем попросить добавить мои изменения в официальную сборку FceUltra, особенно если будет несколько игр хотя бы, которые используют такую фишку. Я еще посмотрю, в каком состоянии порты этого эмуля на телефоны, можно и для них запихнуть при желании, мощности должно хватить с головой. Lomax, http://www.lua.org/ . примеры скриптов есть в папке с эмулятором fceu, ну и мой можешь глянуть в архиве. также есть эмуляторы сеги, snes и gba с его поддержкой. |
| r57shell:
--- Цитата: spiiin от 26 Ноябрь 2012, 02:54:15 ---Так еще никто не делал :) --- Конец цитаты --- Идея не нова... почему не делал конкретно я. С точки зрения железа это бессмысленно. Даже с точки зрения эмуляторов - привязка к одному эмулятору. Что я уже делал скриптами: 1) делал фиолетовый фон в сеге, для спрайто-рипперов. 2) выдерал архивы из UMK3, с помощью его самого ^^. (то есть не пришлось писать распаковщик. сама игра распаковывала). А потом скриптом для IDA коментировал и скрывал участки с архивами... что бы на них не смотреть, и их не проматывать. 3) делал риппер зон для Sonic Knuckles. 4) ещё полюбому есть то, чего просто забыл. вот последний скрипт: http://www.emu-land.net/forum/index.php/topic,6841.msg892382.html#new Отлаживать скриптами очень удобно. |
| spiiin:
r57shell на железе сейчас играют единицы, в массе все с компьютеров или смартфонов. идея в том, чтобы подменять всю логику игры с ассемблера на скрипт. в основном чтобы делать новые уровни для игр, раньше скрипты только для вспомогательных задач использовали, типа тех что ты написал. |
| r57shell:
мне до лампочки до тех, кто играет на эмуляторах. к тому, же как я уже говорил, такой скриптинг - только под конкретный эмулятор, это раз. второе, даже возможно под конкретную сборку. это возможно не редкость, что в PC версии есть луа скрипты, а под телефон или ещё что - нету. |
| Mr2:
--- Цитата: spiiin от 26 Ноябрь 2012, 13:12:03 ---r57shell на железе сейчас играют единицы, в массе все с компьютеров или смартфонов. --- Конец цитаты --- Согласен. Не знаю как обстоят дела с копированием игр на картридж, но думаю что хуже чем с копированием на болванку. :D --- Цитата: spiiin от 26 Ноябрь 2012, 13:12:03 ---идея в том, чтобы подменять всю логику игры с ассемблера на скрипт. в основном чтобы делать новые уровни для игр, раньше скрипты только для вспомогательных задач использовали, типа тех что ты написал. --- Конец цитаты --- Была похожая идея(Ответ #339). |
| Ti_:
--- Цитата: spiiin от 26 Ноябрь 2012, 13:02:04 ---Но думаю можно без проблем попросить добавить мои изменения в официальную сборку FceUltra, особенно если будет несколько игр хотя бы, которые используют такую фишку. --- Конец цитаты --- Хах, попросить сменить БедОпкод на фишку для поддержки игр, причем даже не игр, а хаков! Не будет этого точно в оф.сборках, эмулятор ориентированы на точность потому что и эмуляцию оригинальных игр, а не хаков. Они даже опцию 'разгона' добавлять не хотят, а ты предлагаешь заменить опкод который типо 'эмулируется'. Но раз так делать хакнутый эмуль, раз он всё равно несовместим ни с чем будет, можно и оперативку расширить и спрайты если возможно. (мерцание не дает нормально делать уровни) |
| r57shell:
для сеги можно не менять эмулятор gens_11b, достаточно поставить callback по адресу, а там вообще может стоять один только rts. |
| lupus:
Да, идея не нова, но весьма интересна, я когда-то прикручивал чужой скрипт к первому метроиду, что позволяло пользоваться картой и прочими прелестями, без которых игру пройти очень и очень сложно. Про явные минусы уже писали - привязка к конкретному эмулятору под конкретную платформу, а я на пк не играю вообще :/ |
| Ti_:
--- Цитата: r57shell от 26 Ноябрь 2012, 15:17:56 ---для сеги можно не менять эмулятор gens_11b, достаточно поставить callback по адресу, а там вообще может стоять один только rts. --- Конец цитаты --- Хитро. А у меня появился вопрос по скриптам, допустим я создам список оффсетов рома в скрипте, и мне нужно чтобы подсчитывало, сколько раз запускался код по этим оффсетам. |
| spiiin:
Ti_, это легко делается, в lua можно ставить колбеки на выполнение кода по адресу. расставляешь на все свои оффсеты и в скрипте заводишь счетчик, сколько раз функция вызвалась. кроме выполнения, можно ставить колбеки на чтение и запись по адресам, я так данные о врагах в играх подменял без модификации кода. |
| Восьмибитный Лучадор:
По-мойму идея очень богатая, но только если развивать её в русле портирования на PC ибо по-другому ее использовать нет смысла, по 2м причинам : во-первых не все эмулируют на винде, во-вторых игрокам это не нужно, это нужно только замороченным людям которые хотят все расковырять в роме, адекватный гамер так сложно запускать игры как вы предлагаете не станет. |
| Mr2:
--- Цитата: Восьмибитный Лучадор от 26 Ноябрь 2012, 16:56:45 ---во-вторых игрокам это не нужно, это нужно только замороченным людям которые хотят все расковырять в роме, адекватный гамер так сложно запускать игры как вы предлагаете не станет. --- Конец цитаты --- Чего сложного в запуске игры? :? ---------------- Востребованность эмулятора завист от качества хаков. :crazy: |
| Восьмибитный Лучадор:
--- Цитата: Mr2 от 26 Ноябрь 2012, 17:29:58 ---Чего сложного в запуске игры? :? --- Конец цитаты --- Что сложного ? Это же очевидно, тут этот момент уже обсуждался. Вместо привычного всеядного эмула и рома процесс запуска усложнится как минимум к скачки нужного скрипта к игре и запуска скрипта, запуска специального зарипанного рома, который должен быть совместим со скриптом, плюс ко всему сам эмулятор будет специфичным, может быть даже чересчур (под каждую игру - свой). В итоге игрок чтобы погамать во-что нибудь"заскриптованное" приобретает головную боль. |
| spiiin:
эмулятора одного достаточно :) можно свою ветку завести, если это действительно будет интересно большому количеству людей. там и так сейчас отдельные есть - для отладки, для тассинга, для запуска специфичных игр от Санчеза http://www.fceux.com/web/version.html Добавлено позже: ну и тогда уже ковырять его в том направление, в котором будет нужно - снятие ограничений на кол-во спрайтов не помешало бы тоже. ну и можно сделать так, что скрипт сам подхватывался из архива с игрой например, тогда обычным игрокам достаточно будет скачать 1 файл архива и запустить его |
| Восьмибитный Лучадор:
spiiin, а кто будет заниматься адаптацией дизассемблированного asm кода на lua ? Единицы.. самое ценное тут - это описание физики игры изложенное на более высокоуровневом языке, тогда мне непонятно для чего нужно держаться за эмулируемую систему, когда можно переходить в плоскость портирования, что дает гораздо больше перспектив и возможностей :? |
| Ti_:
--- Цитата: Восьмибитный Лучадор от 26 Ноябрь 2012, 19:00:29 ---spiiin, а кто будет заниматься адаптацией дизассемблированного asm кода на lua ? Единицы.. самое ценное тут - это описание физики игры изложенное на более высокоуровневом языке, тогда мне непонятно для чего нужно держаться за эмулируемую систему, когда можно переходить в плоскость портирования, что дает гораздо больше перспектив и возможностей :? --- Конец цитаты --- Но не дает ощущений оригинала. Когда делают с нуля - получается уже не так, физика неправильная и т.п. К тому же придется всё пересоздать не просто. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |