Разработка и ромхакинг > Ромхакинг и программирование
NESseparator - выдирание игр из многоигровки NES для новичков!
(1/2) > >>
Guyver(X.B.M.):
Текущая версия - 1.0.3 Собственно, в приложении сама программа. Пока ещё очень сырая, но уже кое-как работает.

Описание работы:

Возьмём для препарирования какой-нибудь ром с интересными многоигровками. Я взял ром Super New Year Cart 15-in-1 (Hummer team)(Unl)[!].nes
Его можно скачать в приложении.

Я предположил (путём нескольких опытов), что в роме игры весят по 262160 байт. Как я проводил эти опыты? Просто можно увидеть в многоигровке знакомую игру, а потом найти её в интернете и посмотреть в каком-нибудь редакторе графики, что собой эта игра представляет.

Например, одна из таких существующих в природе игр - Zen_Intergalactic_Ninja_(U).nes - в ней поровну графики и кода. (262160 - 16(хедер)) / 2 = 131072 байта. Поэтому я и разделил ром на такие части (первая картинка).


Дальше всё просто - нужно найти, в каких частях находится графика игры. К примеру, я захотел найти игру WAR.

Её код оказался в 5-ой части, а графика - в 10-ой. Хедер в готовый ром я загрузил из рома Zen_Intergalactic_Ninja_(U).nes После этого игра WAR сразу заработала.


В третьей части находится игра, известная всем как жалкое подобие Гарри Поттера, но тут, похоже, оригинальная игра.

Параметры для выдирания игры показаны на второй картинке. Хедер тоже загружен из рома Zen_Intergalactic_Ninja_(U).nes, но тут есть один нюанс!

Обратите внимание, что графики - целых 4 части, поэтому в хедере нужно изменить число 10 на 40. Иначе игра не будет правильно работать после того, как вы войдёте в первую комнату.

Таким образом можно искать и выдирать игры из различным многоигровок. Если все игры в роме имеют одинаковый вес - это просто. Если же они разные, тут будет немного сложнее. Придётся попотеть, пока вы достигнете желаемого результата... В этом случае найденную графику можно поместить в один файл, а потом поочерёдно подключать к нему разные последовательные куски кода. Можно разбить ром на минимально возможные части, а потом подставлять их в разных последовательных вариациях, не забывая в соответствии с этим правильно изменять хедер. Две его цифры отвечают за код и графику. Про это можно прочитать в интернете.

5-ая цифра - код игры. 01 - 16384 байта. Минимальная часть кода. Т.е. 08 - это 131072 байта.
6-ая цифра - графика игры. 01 - 8192 байта. Минимальная часть графики.  Т.е. 10 - это 131072 байта.
s1nka:
Guyver(X.B.M.), спасибо за софтину. Полезная штука.
Guyver(X.B.M.):
Обновил немного. Добавил интервал, который будет пропущен после header'а.

Для чего это нужно? Попробую объяснить.

допустим, у нас в многоигровке ром, который мы ищем, весит 24592 байта. Из них по нашим предположениям код занимает две трети от веса минус хедер = 16384 байта. Но мы не знаем, где именно в роме находится этот кусок кода. Допустим, мы начнём искать так: первые 16384 байта, следующие 16384 байта, следующие 16384 байта и т.д. А код находится во второй половине первого диапазона и в первой половине второго диапазона! И в итоге мы его пропустим!

Поэтому при первом поиске мы ищем так:

16 байт
1 кусок 16384 байт
2 кусок 16384 байт
3 кусок 16384 байт
...

При втором поиске ищем так:

16 байт
пропускаем 8192 байта
1 кусок 16384 байт
2 кусок 16384 байт
3 кусок 16384 байт
...

При третьем поиске:

16 байт
пропускаем 16384 байта
1 кусок 16384 байт
2 кусок 16384 байт
3 кусок 16384 байт
...

Т.о. мы каждый раз будем смещать поиск на минимальный интервал и в итоге 100% найдём код в роме.

- добавил загрузку кода и графики из файлов на компьютере.
- добавил мультизагрузку кода и графики.
- добавил перемещение кода и графики по списку.
lancuster:
Блин, такое объяснение... Я выяснил, что в Action 52 игры в среднем весят по 40 килобайт. И что это мне даёт?..
CaH4e3:

--- Цитата: lancuster от 20 Февраль 2015, 20:48:00 ---Блин, такое объяснение... Я выяснил, что в Action 52 игры в среднем весят по 40 килобайт. И что это мне даёт?..

--- Конец цитаты ---
это тебе дает исчерпывающую информацию, сколько кода и сколько графики в каждой игре. используй мозг, если он есть
lancuster:
Action 52 не дал себя распаковать. Видать, прога действительно сырая.
CaH4e3, для таких манипуляций (тем более для новичков в ромхакинге) - должны быть хоть какие-то наглядные пособия, видеоуроки. И не нужно сразу обвинять в недостатке мозгов, если программа ещё "зеленая", а откуда что брать - новичкам пока неизвестно.
Научите сначала на простых примерах, а потом уж ругайте.
krocki:
В принципе выгледит по технологии памяти разбиение ромов.
Это уже что-то... ^_^
Grongy:

--- Цитата ---Action 52 не дал себя распаковать. Видать, прога действительно сырая.
--- Конец цитаты ---
:facepalm: А ничего, что некоторые игры могут использовать общую графику, звук и прочие составляющие? А если учесть криворукость программистов, они вообще могут быть неразделимы.
lancuster:
Хорошо. А Elf Load кто-нибудь может вынуть? 200-in-1_-_Elfland_(Unl)[].rar
Я предполагаю, что ром этой игры весит 40 килобайт.
CaH4e3:

--- Цитата: lancuster от 21 Февраль 2015, 01:34:30 ---Action 52 не дал себя распаковать. Видать, прога действительно сырая.
CaH4e3, для таких манипуляций (тем более для новичков в ромхакинге) - должны быть хоть какие-то наглядные пособия, видеоуроки. И не нужно сразу обвинять в недостатке мозгов, если программа ещё "зеленая", а откуда что брать - новичкам пока неизвестно.
Научите сначала на простых примерах, а потом уж ругайте.

--- Конец цитаты ---
причем тут прога, она тупо делит ром на куски, это можно делать любым другим способом и также собирать обратно. тысяча программ режут файлы кусками и сливают обратно. надо понимать, что есть игры, засунутые в искусственные многоигровки, каждая сама по себе, о других ничего не знает, так что если ее отделить от остальных, будет работать также, а есть многоигровки, написанные целиком как одна игра с множеством разных подыгр. Ты не можешь ничего оттуда выдрать тупым разделением, потому что
--- Цитата: Grongy от 21 Февраль 2015, 05:25:57 ---:facepalm: А ничего, что некоторые игры могут использовать общую графику, звук и прочие составляющие? они вообще могут быть неразделимы.

--- Конец цитаты ---
это не криворукость программистов, это так написана игра, которая называется "многоигровка экшон 52"...
200в1 из той же серии, там кажадая игра хачена так, чтобы влезать в стркутуру многоиргровки и под ее управлением и маппером. вырезать оттуда простым делением ничего нельзя.

Добавлено позже:

--- Цитата: lancuster от 21 Февраль 2015, 12:02:02 ---Хорошо. А Elf Load кто-нибудь может вынуть? 200-in-1_-_Elfland_(Unl)[].rar
Я предполагаю, что ром этой игры весит 40 килобайт.

--- Конец цитаты ---
предполагать ты можешь сколько угодно, только непонятно, на чем такие предположения строятся лол
lancuster:

--- Цитата ---200в1 из той же серии, там кажадая игра хачена так, чтобы влезать в стркутуру многоиргровки и под ее управлением и маппером. вырезать оттуда простым делением ничего нельзя.
--- Конец цитаты ---
Хорошо. А есть программа (не на DOS), которая сможет перебить маппер, чтобы можно быть и на телефоне в эту многоигровку сыграть?..
black jaguar:
правда. затюкали человека.
назовите тогда тему "программа - разбивалка любых файлов на мелкие. только для тру хацкеров"  :neznayu:
а потом люди жалуются, что на почту приходят - а там на них орут по любому вопросу
или тут каждый себе и машину чинит и сам себе хлеб из деревенских колосьев делает вручную? ну чтобы на все руки мастер
krocki:
Блин! Автор же сказал прога сырая, по этому больше ручками приходится работать. <_<
CaH4e3:
а я о чем тут говорю лол нет такой программы, которая за тебя все вообще будет делать, ручками что-то тоже делать приходится... кому надо - делает, остальные хоят и ноют, чтобы им кто-то сделал
lancuster:
Тогда можно было и не писать "для новичков". Новичок в ромхакинге вообще не знает таких тонкостей.
gotten:
Так у тебя запросы нелепые, из разряда сделайте мне из компьютерной игры psp игру. Какие еще тонкости?
lancuster:

--- Цитата: gotten от 22 Февраль 2015, 01:12:06 ---Так у тебя запросы нелепые, из разряда сделайте мне из компьютерной игры psp игру. Какие еще тонкости?

--- Конец цитаты ---
Да самые обыкновенные. Вместо того, чтобы дать понятный ответ, на что рассчитывать, используя данную программу, что она может и чего не может - я вначале должен был выслушать эту кучу "лол-комментов", а затем уж - правду-матку. Разве так можно с людьми?..
blackbird_ru:
lancuster, я тебе писал все нужные ссылки.
Прочитал бы ты всё, понял бы, что программ, которые по одному клику могут менять маппер - не существует и не может существовать.
Как и универсального выдирателя игр из многоигровок.
blackbird_ru:
И да, твоя многоигровка в формате унф, а не нес.
Поэтому тупая обрезка в проге не поможет, там формат другой.
lancuster:

--- Цитата: blackbird_ru от 22 Февраль 2015, 09:16:56 ---lancuster, я тебе писал все нужные ссылки.
Прочитал бы ты всё, понял бы, что программ, которые по одному клику могут менять маппер - не существует и не может существовать.
Как и универсального выдирателя игр из многоигровок.

--- Конец цитаты ---
Ну, это я понял. Но я читал, что есть какая-то утилита, которая дампит ромы под определенные мапперы для записи на флэш-карик. Однако, к сожалению, её не так просто найти. :(

Добавлено позже:

--- Цитата: blackbird_ru от 22 Февраль 2015, 09:24:57 ---И да, твоя многоигровка в формате унф, а не нес.
Поэтому тупая обрезка в проге не поможет, там формат другой.

--- Конец цитаты ---
Извини за глупый вопрос, но... Есть ли преобразователь UNIF ромов?
Навигация
Главная страница сообщений
Следующая страница

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