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

Пользовательские конфиги для 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, хранение экранов идет построчно. Ковырял ещё Майлона, там блоки хранятся, как в Хищнике, но есть нюансы, из-за которых эту игру не добавить в редактор. Там система блоков заумная. В ряде мест нужно специально передвигать объекты, чтобы блоки потом правильно отображались не только в редакторе, но и в игре, и все дверки-монетки работали как положено. Я ещё сегодня посмотрю насчет добавления оставшихся уровней в первых Черепашках, а то редактор Дэна у меня не хочет работать, ни с одним скачанным ромом, да и там только первый уровень.

Навигация

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

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

[*] Предыдущая страница

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