Разработка и ромхакинг > Редакторы для консольных игр

ZAMN Editor Sega Genesis

(1/2) > >>

Марат:
Представляю вашему вниманию редактор уровней Zombies ate my neighbors, в оригинале написанный Piranhaplant и модифицированный мною для редактирования версии игры для Sega Genesis. Начал я переделку в прошлом месяце. На данном этапе почти всё удалось адаптировать. Единственное что пока не доработано, так это возможность безбоязненно редактировать все уровни игры. Дело в том, что в версии игры для SNES все данные уровней находятся в последнем банке и есть возможность как уменьшать размер рома, так и увеличивать. В Сеге же данные находятся между кодом игры и менять размер нет возможности. Пока я ещё не придумал как обойти этот момент. Возможно придется увеличить ром и перенести все данные уровней в новое место. Либо запаковать карты метаблоков. В SNES, к слову, они запакованы, но все остальные ресурсы нет. В Сеге же наоборот, все ресурсы запакованы кроме палитры и карт метаблоков. Так же пока не разбирал генератор паролей для игры. В общем, можете пока поиграться с редактором в таком виде, каком он есть.

SeregaZ:
к сеговской версии еще расковыряй GEMS, в смысле чтоб можно было менять мелодии, в смысле измененные банки не портили код, который будет идти после этих банков.

адреса, оставленные неким товарищем Megaplex, который где-то сгинул в просторах тырнета :(

--- Цитата ---Zombies Ate My Neighbors (U) [c][!]
EAB00 pat
EBF1C mod
EBF24 seq
F0D18 dac
--- Конец цитаты ---

паковать мелодии и спецэффекты можно... эээ... по идее можно - шеловским комбайном. хотя тут я чото не уверен :) ну попробуй тада еще и драйвер тоже изменить, если вдруг там какой там разительно отличающийся от стандартного. GemsScan находит этот адрес драйвера. хотя я не уверен в правильности, так как банки он не находит. только драйвер. это несколько настораживает.

Марат:
C аудио не приходилось работать. Поэтому даже не имею представления как и что там работает.

SeregaZ:
и не парься :) главное все что после аудио не потерялось. типа скажем:
0 начало рома, заголовок
10 графика
20 звук
30 какой-то еще код

типа мы изменили звук - скажем какой-то сэмпл стал длиннее. то есть стало
20 звук
34 какой-то еще код.

вот старая ссылка в оригинале будет смещение 30. а надо чтоб оно изменилось на 34. весь вопрос что это за код после банков звука идет и где это указывается выше вроме. в зеротолерансе например так. есть какие-то данные после звука, из-за чего мы не можем менять сэмплы на какие угодно. только если в пределах размеров старого банка сэмплов подменивать. но это не очень :) хотелось бы прям полностью чо захотел - то и втулил и чтоб игра ничо не заметила :)

сами адреса банков сэмплов, мелодий, инструментов и модуляций по моему указываются в файле драйвера. и если это был не очень перехимиченный модифицированный GEMS - возможно я даж найду где это в файле драйвера. я по моему что-то такое делал... то есть файл драйвера читался, и каждое двухбайтовое значение сравнивалось - а не равно ли оно смещению одного из банков? если равно или плюс минус из-за неточностей, то маяковало - что возможно это нужный адрес. в итоге у меня был лист с возможными адресами, но это все осталось на уровне теории и проверить я не проверил :)

но это будет только пол дела. главное весь код после звука и где указан адрес на этот послезвучный код и что там именно - тут я пас :) я ж не ромхакер :) хотяяяяяяяяяя... хорошая мысля приходит апосля :))) а кто сказал, что код музыки должен лежать там, где он должен лежать? что мешает взять и переместить интересуемый адрес в конец рома, а сам ром увеличить скажем на 1 мегабайт. то есть драйвер физически остается на старом месте, код после звука на старом - просто смешения в драйвере будут ссылаться куда подальше, чем оно в оригинале. согласно моему диванно икспердному мнению - все должно получится :) правда там могут быть подводные камни в виде ограничения на размер рома. мож игра пошлет меня нахер после такого...

Добавлено позже:
перечитал твой первый пост, и сижу теперь огорченный. я писал свой пост про перенос банков в конец рома - думая что меня осенило :) оказывается я просто по диагонали прочитал твой тот раз, не асилил, но это отложилось в памяти, а потом подумал что придумал это сам :))) у меня батя так делает. ему чего посоветуешь, он забудет. потом вспомнит, но будет думать что это он сам придумал :)

Марат:
Да с музыкой проблем нет. Достаточно указать номер нужной мелодии в шапке уровня и всё.

Вопрос с местом для настроек уровня решён. Осталось придумать куда деть перепакованные карты уровня.

SeregaZ:
это ты в смысле подмена мелодий внутри игры? так я ж про импорт мелодий из других GEMS игр в эту игру. под подмену то да, размеры и физическое нахождение в роме мелодий остаются неизменные. другое дело ежели там втулить игре какую-то большую по весу мелодию :) или сэмплы какие-то подменить скажем.

Добавлено позже:
что-то комбайн оказывается с ошибкой распаковал... пишет что типа 3 сэмпл размером куда больше, чем типа банк сэмпла вмещает. по идее такое может быть. типа игру когда собирали, выяснилось что она чуть больше 1 мегабайта и взяли тупо обрезали сэмпл. физических обрезали в конце файла, а в заголовке не правили. однако тут вроде бы ошибки нет и смещение и размер вполне вписывается в этот 1 мегабайт рома и сэмплы идут по порядку:

--- Код: ---Offset      0  1  2  3  4  5  6  7   8  9  A  B 

00000000   47 9C 00 00 00 00 13 10  00 00 00 00   0
           4A AF 10 00 00 00 32 1E  00 00 00 00   1
           49 E1 2E 00 00 00 A4 0B  00 00 00 00   2
           5A 85 3A 00 00 00 08 0F  88 02 FF FF   3
00000030   4A 8C 49 00 00 00 11 0F  00 00 00 00   4
           57 9D 58 00 00 00 27 1E  81 0F 00 00   5
           4A C4 76 00 00 00 7B 1A  00 00 00 00   6
           48 3F 91 00 00 00 48 1B  00 00 00 00   7
00000060   48 87 AC 00 00 00 BD 1B  00 00 00 00   8
           47 44 C8 00 00 00 F6 12  00 00 00 00   9
           49 3A DB 00 00 00 83 0F  00 00 00 00   A
           00 00 00 00 00 00 00 00  00 00 00 00   B
00000090   4A BD EA 00 00 00 18 08  00 00 00 00   C


           5A                - метка частоты сэмпла
              85 3A 00       - смещение
                       00 00
                             08 0F - по идее размер 
                                    88 02
                                          FF FF
--- Конец кода ---

мля... придется идти в этот сраный дискорд назад, спрашивать у товарища раздолбая шелла чо за затык... мож у меня комбайн старый или чего.

SeregaZ:
шелл этот блудит где-то в творческом запое :( чтоб ему икалось.

так вот тут значит две загвоздки:

первая шелловская, а именно где при распаковке мелодий один сэмпл не распаковывается из за того, что сплиттер шелла складывает реальный размер с сэмпла с переменной END. и получается, что сэмпл якобы вылазит за пределы рома и поэтому он не создается. это означает, что распаковать мы распакуем, а запаковать обратно не получится. это можно переделать, выкинув из формулы учет этого дурацкого параметра END для сэмпла. тогда, думаю, получится собрать банки так как были.

вторая: GEMSScan находит драйвер черт знает где в роме. хотя обычно этот драйвер как раз перед банками лежит. в этом драйвере, по идее, должны быть смещения на банки. типа банк нот там-то, банк сэмплов сям-то, банк модуляций там-то и банк инструментов вот там. то есть согласно моей диванно икспердной теории в этом драйвере должны где-то лежать некоторые значения - 4 штуки, которые были бы смещениями до этих банков. так вот чот они у меня не находятся :) или файл драйвера GEMSScan находит неверно... или мои кривые руки неверно подсчитывают смещения и соответственно я ищу неправильные значения и поэтому не могу их найтить.


при всем этом ежели нужно просто подменить сэмплы - с этим никаких проблем нет. даже без знаний всех этих смещений у меня получилось подменить и игра ничего не заметила :) но это несколько неверно. правильней было бы все-таки делать полное перелопачивание банков и правильное их добавление в ром, с изменением смещений в драйвере.



так что вопрос - а ты сможешь найти этот самый драйвер вручную? чтоб не надеяться на эту горе-софтину, которая сама банки найти не может. находит только драйвер. в моем случае это USA версия игры. берем файл рома и мышкой перетаскиваем на этот GEMSScan - он должен родить рядышком с ромом файл 7 килобайт чтоль... с таким-же названием, как у рома, с припиской driver. вот я сомневаюсь что она правильно его находит. в этом файле должны быть смещения на такие адреса в роме:
EAB00 pat
EBF1C mod
EBF24 seq
F0D18 dac

хотя это адреса по отношению к началу рома. в драйвере видимо должно быть что-то типа:
EAB00 pat - адрес драйвера = настоящее значение

Добавлено позже:
зря проклинал шелла. заявился :) подсказал чо поправить. один затык решился. так-же проконсультировал он и по второму. я правда ничего не понял, но кажется адреса все-таки нашлись. попробую подменить какую-то мелодию.

Марат:
А где можно почитать доки по этой теме?

SeregaZ:
я наверное видео запишу... или по крайней мере пост зафигачу с подробными объяснениями :) и поскольку я нифига не ромхакер - то объяснения будут на пальцах :) и видимо архив приложу со всеми нужными бубнами, с которыми потом танцевать надо будет.

Добавлено позже:
угу... или не напишу :) сыпется после сборки. зараза :) первую ноту из мелодии логотипа конами проигрывает и все. звук зависает.

SeregaZ:
свершилось! и друг спас друга! кароче заработало... товарищу r57shell'у было прокомпосированно кучу мозга, и оно после этого заработало. теперь надо это дело все оформить в более понятную программу и написать пост как этим пользоваться.

Марат:
Нашёл интересный материал. Кое-что проясняется. В доке, кстати, написано, что 128 инструментов. И по первому поинтеру это тоже становится ясно.

SeregaZ:
не торопись :) я почти доделал. из дюновского редактора все чо хотел перенес. это будет шедевр... опять :) точнее он итак шедевр, только теперь будет еще и для зомбей.

пока сижу ковыряю - ты про свой редактор расскажи. как он работает? куда что пишет? просто я к чему веду то... мои банки идут в конце рома. и их в принципе можно подвинуть. если тебе надо место... НО! пока-что предполагаю что ты как бы сначала музыку правишь, как тебе надо, а уже после рисуешь уровни в своей программе. твоя программа умеет сохранять проделанную работу если чо? или она сразу в игру пишет? просто я к чему... ты корпел две недели и рисовал пять уровней. тут выясняется, что какой-то звук корявый. при переделке - мой редактор возьмет оригинальную игру и зафигачит туда новые песни, которые ты выбирал для своего хака. и соберет оригинал с новыми песнями. и тебе получается надо свои уровни опять втуливать в оригинальную игру. если твой редактор конфиги не делает, а сразу пишет в игру - получается вся работа по уровням улетит на смарку. так что тут еще надо подумать. я почти доделал :) правда на всяких виндовсах 7 и выше не тестировал... хрен знает как она себя поведет.

материал в основном тут: http://elektropage.ru/publ/o_prekrasnom/articles/gems_sound_driver/2-1-0-71
но несколько туманно. лови в дискорде шелла :) я ему эти два дня мозги компосировал. он все знает и пояснил чо нужно доделать в этом зомби-случае. каждый случай можно сказать уникальный :)

Марат:
Ну да, сразу в игру сохраняешь. Там как бы есть возможность эскпорт/импорт уровней. Можно сохранять в виде текста.

Добавлено позже:
Ну, все теперь более менее понятно. Выдернул музыку и проиграл треки с помощью GemsPlay. Стало понятно почему номера треков музыки не по порядку. Они в ресурсах так и идут вперемешку со звуками.

Добавлено позже:
Место, кстати под настройки уровней нашлось аж 2 кб. Осталось найти место под перепакованные карты уровней. Думаю, сжать карты блоков и тогда должно места освободиться прилично. 5 наборов блоков по 32 килобайта. Если все это сжать, то, думаю, килобайта 32 освободиться. Просто надо будет редактор с хакнутым ромом распространять или патчить ром и сделать какую-то проверку, чтоб программа знала ром уже хакнутый или нет.

SeregaZ:
пока ютуб заливается :) краткий инструктаж:

не каждая мелодия подойдет туда куда хотелось бы. есть короткие проигрыши к примеру. при смерти скажем в марио. этот фрагмент естественно не подойдет заместо фоновой мелодии. так-же следует ориентироваться на место, где играет мелодия. например дюна - на брифинге ментат что-то там трындит. там мелодии могут использовать 6 канал для сэмплов. скажем барабаны туда втулили. и мелодия будет звучать хорошо. но ежели эту-же мелодию впихивать уже в мелодию, которая играет в сражениях - там она не подойдет, так как крики пехоты, выстрелы, взрывы - много чего сделано как раз с использованием сэмплов и соответственно мелодия и звуки в бою будут друг другу мешать, ведь GEMS не умеет смешивать сэмплы.

потом следует ориентироваться на зацикленность мелодии. и это может быть проблемой. для дюны например расчитано что мелодия в бою будет играть минуты 3 или скок там, и затем она будет сменяна на следующую. но вдруг, втуливаемая новая мелодия всего по длительности меньше этих 3 минут? произойдет неприятный затык. мелодия закончит играть, а время старта следующей еще не наступило, так как игра будет думать что старая мелодия еще играет. в результате будешь сидеть эту оставшуюся минуту без музыки. такое может быть и здесь наверное. так что это тоже надо учитывать.

Марат:
Там же вроде как в заголовке сэмпла указывается, смещение на следующую мелодию относительно текущей. Не все ведь мелодии одинаковой длины.

SeregaZ:
так она ж работает как:
играй это. ожидаю, что играть будешь 3 минуты.
3 минуты прошло. играй вот то. ожидаю 3 минуты...

а мелодия у тебя 2 минуты. 2 минуты проиграло - все. будет тишина :) там нет перехода, что дескать в конце мелодии начинать играть следующую. точнее команда вроде такая вобще есть и может быть записана в конце мелодии, но просто мелодии в моей дата базе из всяких игр как они были в оригинале, и естественно что там в конце незапланировано такого перехода. поэтому тут помогли бы закольцовки в треках на бесконечность. где-то они есть, а где-то нет. а полноценный GEMS треккер, чтоб можно было прям до ноты все раздербанить - никак не доделаю :) черновики то набросал - это будет лист в клетку, где мышкой ноты таскать. но мне не нравится что там нельзя уменьшать или увеличивать масштаб. сейчас там несколько крупновато... то есть не удобно :)

еще несколько минут. думаю скоро до конвертируется :)

SeregaZ:

на виндовсях 7 и выше не тестировалось. возможно понадобится запуск от администратора.

возможно эмулятор не будет запускаться. возможно эмулятор не сможет увидеть ром в автоматическом режиме и придется запускать вручную из папки. эмуляторы оказываются такие капризули :) один работает в консоли с путем, где есть пробелы - второй не работает. один работает когда ему драг н дропом ром мышкой переносишь - другой не работает. так что ежели эмулятор не прокатит - снести в моих документах в папке GEMSDATABASE файл config.ini - в него путь до эмулятора вписывается. и тогда при старте программы она опять попросит указать путь до эмулятора. это тоже надо продумать чтоб кнопку отдельную для пути родить.

пока-что чтобы сбросить мелодии на оригинал надо будет сначала запустить батник split_zomb.bat - он из оригинальной игры выковыряет банки оригинальные и положит их в папку gems.
после того запустить game_gems_split.bat - он распакует эти банки на отдельные файлы мелодии, сэмплов , инструментов и модуляций.

архив пришлось снести. надеюсь доделаю и будет в последнем сообщении выложен.

Марат:
Интересно. Вечером посмотрю. А новые мелодии в игру добавить можно? Т. е. не просто замена, а чтоб дополнительно к существующим?

SeregaZ:
вопрос конечно интересный... однако это нужен будет дополнительный код, эти новые мелодии или спецэффеты задействующие. сам GEMS по идее может быть больше. они просто не будут использоваться.

зайти в папку gems, создать новую папку 085 или скок там... +1 по отношению к последней. зайти в неё и создать файл 085.cfg. а в файле game.cfg добавить строчку sequence '085\085.cfg'
после в эту папку уже докидывать нужную мелодию через программу. посмотрим, может надо будет добавить такую возможность в редакторе. так-же может быть надо будет туда добавить из дюновского редактора всякие дополнительные мелкие редакторы - типа редактор сэмплов, редактор FM и PSG инструментов, редактор модуляций... запасные части от GEMS треккера :) без него самого.
но это только будут банки gems. в игру добавлять - нужен код, использующий правильный номер мелодии. причем с этими номерами тоже не все так однозначно :) например в дюне не напрямую обращается, дескать проиграй мне номер 085. там идет запрос к таблице. проиграй мне из таблицы номер 5. а уже в этой таблице, в ячейке номер 5 - лежит значение 085. поэтому тот номер мелодии в шапке уровня в зомбях - не обязательно сразу порядковый номер в GEMS :) возможно тебе придется искать и эту таблицу... если она тут применяется. со спецэффектами - всякими выстрелами и криками зомбей, тут вовсе темный лес. где их искать в коде и как добавлять новые события - тут я вобще не представляю.

ты еще как Ti сделай :) в смысле для рокенролрейсинга он добавлял AI-игрока, который играет на стороне игрока - вот чтоб второй игрок в зомбях был AI, бегал за живым игроком и постреливал туда суда :)

Марат:
Ну,  я вообщето планировал только редактор переписать под сегу и всё.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

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