| Разработка и ромхакинг > Редакторы для консольных игр |
| Пользовательские конфиги для CaD Editor |
| << < (2/13) > >> |
| spiiin:
lancuster Вообщем, вот тебе конфиг. Адрес описаний макроблоков сразу за описанием карты - 0x6213. Ещё нужен адрес описаний бит палитры блоков - 0x65B3. В стандартной форме - для каждого блока 4x4 1 дополнительный байт, в котором по 2 бита описывают индекс палитры каждого из подблоков 2x2 тайлов. Если откроешь конфиг, то увидишь, что нестандартного в этих блоках ничего нет, блоки и макроблоки загружаются стандартными подготовленными функциями: --- Код: --- //сохранение и загрузка блоков, стандартная функция, которая читает 16 байт блока и дополнительно 1 байт индексов палитры к нему public GetBlocksFunc getBlocksFunc() { return Utils.getBlocksFromTiles16Pal1;} public SetBlocksFunc setBlocksFunc() { return Utils.setBlocksFromTiles16Pal1;} //стандартная функция чтения макроблоков из 4 байт подряд последовательно public GetBigBlocksFunc getBigBlocksFunc() { return Utils.getBigBlocksCapcomDefault;} public SetBigBlocksFunc setBigBlocksFunc() { return Utils.setBigBlocksCapcomDefault;} --- Конец кода --- |
| lancuster:
spiiin, может, тогда уже и первый уровень добавишь? :cool: Данные я так напишу. Палитра блоков (весь уровень): 511F-519E. Сам уровень (в виде спрайтов): 519F-56BE (перед поездом нарисована пустота), низушка - 56E5-5764. Враги на уровне (тип, расположение): 5767-57E6. Насчёт точности (адреса) последнего не уверен, но это точно враги и их координаты. Добавлено позже: Остаётся ещё пещера злодея, но её я чуть позже запощу. :) |
| spiiin:
lancuster Мне эта игра не интересна, как и хаки на неё. Хочешь делать - делай сам, я показал как. |
| lancuster:
spiiin, a BigBlocks на одноэкранных уровнях не используются? Эту часть можно будет удалить, для составления нового конфига? |
| spiiin:
Откуда я знаю? Ты же игру взламываешь, а не я за тебя :) Если там другой формат, конфиг тоже будет чуть другой. Разберись сам с форматом, а я тебе найду игру, в которой будет такой же из уже подключенных |
| lancuster:
Я так понял, что первый уровень оформлен спрайтами, второй - блоками 8х8, а сцена с магическими предметами и сцена с врагом вообще в rle пожаты. Потому что единственные большие куски, которые я нашёл в роме, не получается отредактировать, как остальные уровни, изображение съезжает. |
| spiiin:
А, да, ты прав, действительно там макроблоки, 1x2 блока размером только, а не 2x2. Описал тут все форматы уровней в подключенных NES-играх: https://spiiin.github.io/CadEditor/cadeditor-supported-games.html Детально расписывать обозначения не буду, но можно посмотреть, что 1) существует не так много вариантов хранения (некоторые, вроде рисования уровня на пустом "холсте", как в марио, пока не добавлены, конечно) и 2) в каких играх форматы одинаковые. |
| lancuster:
А в какой игре уровни построены из обычных блоков 2х2 (не макро), без отдельной карты палитры? Я попробую добавить вторых Читаменов, там строение такое. И ещё. Где изменить блок (подписать его), чтобы легче было ориентироваться, где какой враг? В Читаменах (да и в других играх Экшн 52) враги задаются на карте блоков, отдельно координатами не задаются. |
| spiiin:
Takeshi no Chousenjou - интересный формат уровней. Есть транспонированные блоки 2x2 без палитры. Первый экран описывается в виде 32 блока (2 столбца по 16 блоков сверху вниз), следом за которыми идут 8 байт с описаниями палитры (32 раза по 2 бита - для каждого блока, причём слева направо уже). Больше всего похоже на Moon Crystal из уже добавленных. Такое описание в редактор добавить не проблема (на скрине 1 полоска с картиной), но редактировать такие полоски (да ещё и слой палитры в отдельном подредакторе), конечно, сильно не удобно - стоило бы сделать отдельный плагин для таких "полосочных" описаний, или же опцию "отображать X экранов друг за другом - вертикально, горизонтально, или заданно по специальной функции" (в Zen intergalactic ninja пригодилось бы для отображения изометрических уровней, там экраны отображаются друг относительно друга со сдвигом в одну строку). Подумаю, как удобнее, опция была бы и для других подредакторов полезна, может через пару версий добавлю такую фичу. Captain Planet - всё-таки нет там макроблоков, есть блоки 4x8 тайлов, редактировать можно замечательно карту. Добавлено позже: --- Цитата ---А в какой игре уровни построены из обычных блоков 2х2 (не макро), без отдельной карты палитры? --- Конец цитаты --- В любой игре, в которой AoS(2x2) в графе "блоки", и прочерк в графе "макроблоки". Отдельные блоки отображать по особому нельзя, если они строятся из графики рома. Можно включить режим отображения номеров блоков (View type -> Block numbers), так будут различаться одинаковые на вид блоки. |
| lancuster:
spiiin, я взял за основу настройки к уровню для Mickey Mania (благо, там размеры экранов даже совпадают). Но вторых Читов добавить не удалось. Уровень либо грузится туда, где блоки должны находиться, либо не грузится вообще. Может, я что-то намудрил тут, или есть что-то лишнее. Поправишь? Я потом остальные уровни сам попробую добавить. P. S.: по поводу надписей. В настройках Super Robin Hood были блоки с надписью object. Можно ли сделать такое и для этой игры как-нибудь, чтоб врагов на уровнях подписать? |
| spiiin:
Хм. Ну почти верно. --- Код: --- public int getWordLen() { return 2;} public bool isLittleEndian() { return true;} --- Конец кода --- - вот эти строки удалил, это касалось того, что в микки маусе индекс блока кодируется двумя байтами, а почти во всех остальных NES играх - одним байтом (дополнил это в описании форматов https://spiiin.github.io/CadEditor/cadeditor-supported-games.html). Дальше - поправил адрес палитры: --- Код: ---public OffsetRec getPalOffset() { return new OffsetRec(0xCD1C, 1 , 16 ); } --- Конец кода --- и размер экрана - 16x16 --- Код: --- public OffsetRec getScreensOffset() { return new OffsetRec(0xc21c, 11 , 16*16); } public int getScreenWidth() { return 16; } public int getScreenHeight() { return 16; } --- Конец кода --- Получается вот так: Как видишь, так уже можно редактировать блоки, но ты не нашёл биты индексов палитры, которыми кодируется цвета блоков. Они, кстати, скорее всего не в отдельном слое, потому что если поставить любой блок на любое место - то его цвет останется верным - значит они хранятся для каждого блока. |
| lancuster:
Да, это скорее всего. Правда, палитра для блоков задаются точно там же, где задаются свойства блоков. Типа того: 00 - сквозной блок, 01 - твердый блок, 02 - платформа, 03 - дамагающий блок, а с 04 по 07 - другая палитра с теми же свойствами и т.д., с 10 и выше - задаются враги, они привязаны к определенным байтам. Добавлено позже: Чуть не забыл. Экраны квадратные, но слой внизу игнорируется программно. И, если не ошибаюсь, он отвечает совсем не за блоки, а за свойства нижней строки. То есть, можно сделать землю одним сплошным слоем, но сделать 1 байт сквозным - и герой будет проваливаться. Я это ещё по Haunted Hills выяснил, когда редактировал. Добавлено позже: И всё-таки, как блоки с врагами подписать? На карте они как часть фона обозначены будут, как их отметить, чтоб можно было определить, где кто есть? Есть такая фича в редакторе или в настройках? Добавлено позже: Ммм... Хотя нет, они всё-таки игнорируются. Значит, будет лучше указать высоту 15 блоков. :) |
| spiiin:
--- Цитата ---Правда, палитра для блоков задаются точно там же, где задаются свойства блоков. Типа того: 00 - сквозной блок, 01 - твердый блок, 02 - платформа, 03 - дамагающий блок, а с 04 по 07 - другая палитра с теми же свойствами и т.д., с 20 и выше - задаются враги, они привязаны к определенным байтам. --- Конец цитаты --- Так во многих играх. Индекс палитры занимает 2 бита, его пакуют либо с другими индексами, либо с физическими свойствами блока. Если бы указал адрес, я бы тебе в конфиге показал, как маску наложить на байт и прочитать/записать только биты палитры, игнорируя физику. --- Цитата ---И всё-таки, как блоки с врагами подписать? На карте они как часть фона обозначены будут, как их отметить, чтоб можно было увеличить, где кто есть? Есть такая фича в редакторе или в настройках? --- Конец цитаты --- Ну просто указать, откуда загружать типы блоков. Потом переключить режим отображения на типы блоков и смотреть. Там правда лимит был на 16 разных типов всего, но я его убрал уже, в след. релизе будет неограниченное число типов. Второй способ - просто включить отображение номеров блоков и запоминать, какой номер блока с каким врагом. Третий способ - написать в конфиге свою функцию рендера поверх основного экрана, я так в беттлтодсах в первом уровне числа отрисовываю, обозначающие физику поверх блоков. Возможность есть, но примеров нет :) Закончи сначала этот конфиг с цветами карты, чтобы можно было добавить в базу конфигов. |
| lancuster:
А как его добавить-то? Я могу, конечно, попробовать, но не уверен, что сумею. Кстати, я указал в palOffset тот же адрес, что и для байтов палитры и изменил уровень. Как ни странно, цвета не испортились, а карта осталась такого же цвета. Добавлено позже: Нашёл, где задается палитра/свойства для блока 00 для первого уровня. Это C188. Заменяем 01 на 00, получаем сквозной блок. Палитра кодируется так: 00, 04, 08, 0C, схема описана выше. |
| lancuster:
spiiin, у меня есть конфиги для всех уровней. Глянул исправленный конфиг, подогнал остальные уровни (теперь все 6 уровней в цвете, только отображение врагов допилить нужно). Плюс попробовал добавить конфиги к пираткам Bomberman 2002 и Sea-Maid (Sea-Man, Jewel Dive). Здесь проблема с отображением блоков. Но там, как в Бэтмене и Хищнике, палитра на блоки накладывается отдельным слоем (ниже карты уровня). |
| spiiin:
чего-то ты кажется не поправленные конфиги загрузил для читаменов, без загрузки аттрибутов блоков |
| lancuster:
Так я ж вроде это ещё позавчера сделал, просто закончился интернет тогда, а днём, как пополнил - скинул. :cool: Я посмотрел твой новый конфиг и поправил. Правки прикреплены ниже (ромы также в архивах). К слову. Я также сделал настройки для первой части (оригинала, то есть), с варп-зонами и прочим. Правда, есть один нюанс - игра использует "анимацию мигающего блока из Марио". Водопады, камни и прочее на некоторых уровнях имеют аж 3 одинаковые палитры. При их изменении эти объекты будут мигать. Это связано также с неверным отображением цветов блоков на 1 и 4 уровнях, на других (где это не используется) вроде всё норм. И отдельно врагов нужно как-то отметить на карте, а то они под цвет фона, только по номеру и угадываешь, где что есть. Добавлено позже: А те настройки глянешь, для тех пираток? Добавлено позже: Также прикрепил настройки для Streemerz. Как видишь, по тем байтам, что в неймтейблс указаны, ничего найти не удаётся. Видимо, поправлять придётся сам ром, так как ссылается не на те данные блоков. |
| spiiin:
Для Cheetahmen 1 - посмотрю Для Cheetahmen 2 - скачай сам архив settings_cheetahmen_2.rar из вложения. Там непоправленная версия конфигов - использует функцию getBlocksLinear2x2withoutAttrib вместо Cheetah.getBlocks Добавлено позже: --- Цитата ---А те настройки глянешь, для тех пираток? --- Конец цитаты --- Я пользуюсь ромами из GoodNes 3.1, какие-то ромы или хаки сверх этого лучше вместе с конфигами загружать или ссылки на них давать, откуда скачать. Добавлено позже: Вообще мне интереснее не пиратки какие-то странные добавлять, а классические игры, на которые нету редакторов, так что конфиги составить то помогу, но разбирать как-либо эти игры не буду. Мне кажется, что идея "исправлять" изначально кривые во всём пиратки, меняя в них палитру и несколько блоков на уровнях - бессмысленная. В них менять надо, чтобы игра нормальная получилась, всё - от музыки и управления, до дизайна и исправления багов в коде, редактор уровней тут не поможет :lol: |
| lancuster:
spiiin, глянул ещё раз. В поправленных конфигах такой функции нет. Я взял исправленный конфиг для первого уровня и перенес туда данные с других уровней, затем сохранил отдельными файлами. Проблема с цветом решена, но враги на карте не отображаются. |
| lancuster:
spiiin, возможно ли добавить настройки для хадсоновского Микки Мауса? Я смотрел - блоки в игре 4х4, хранение экранов идет построчно. Ковырял ещё Майлона, там блоки хранятся, как в Хищнике, но есть нюансы, из-за которых эту игру не добавить в редактор. Там система блоков заумная. В ряде мест нужно специально передвигать объекты, чтобы блоки потом правильно отображались не только в редакторе, но и в игре, и все дверки-монетки работали как положено. Я ещё сегодня посмотрю насчет добавления оставшихся уровней в первых Черепашках, а то редактор Дэна у меня не хочет работать, ни с одним скачанным ромом, да и там только первый уровень. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |