Разработка и ромхакинг > Редакторы для консольных игр
Пользовательские конфиги для CaD Editor
<< < (5/13) > >>
spiiin:

--- Цитата: lancuster от 10 Апрель 2018, 00:13:27 ---piiin, как хочешь. Я вот что спросить хотел. У тебя есть скрипт, который бы мог находить банки графики, связанные с конкретным уровнем? Я скоро закончу делать пиратского Соника, но там 64 экрана, и в середине каждого из них есть переключение банков, где-то по 4 на каждый уровень. А я уже подустал, да и игра долгая. Я добавлю только основную часть, чтоб видно было, что конфиги составлены верно, а там уже их поправишь, хорошо?
--- Конец цитаты ---
Хорошо, только запиши мне мувик прохождения игры, чтобы мне его промотать и скриптом сдампить банки.
lancuster:
spiiin, я уже выяснил. Там, как оказалось, всего по 3 банки на каждую зону. Переключение идёт во второй половине, 4 строчки тайлов. Я их и вручную смогу добавить. Так будет быстрее. Останется только переключение банок в конфиги добавить, и всё.
spiiin:

--- Цитата: lancuster от 10 Апрель 2018, 00:30:01 ---spiiin, я уже выяснил. Там, как оказалось, всего по 3 банки на каждую зону. Переключение идёт во второй половине, 4 строчки тайлов. Я их и вручную смогу добавить. Так будет быстрее. Останется только переключение банок в конфиги добавить, и всё.

--- Конец цитаты ---
Хорошо, тогда добавлю переключение к конфигам, как будут готовы.
lancuster:

--- Цитата: spiiin от 10 Апрель 2018, 01:29:18 ---Хорошо, тогда добавлю переключение к конфигам, как будут готовы.

--- Конец цитаты ---
Собственно, вот и он.
Ром с бессмертием вложен для теста.
lancuster:
spiiin, вот конфиги к ещё 4 играм. В GNG нужно добавить переключение палитр, всё остальное в норме. :cool:
lancuster:
В этой теме будут выкладываться конфиги NES игр для CaD Editor.
В редактор (мной) уже добавлены следующие игры:

Игра | Разработчик
1. Aladdin (Hummer Team)
2. Batman (Sunsoft)
3. Captain America and The Avengers (Data East)
4. Captain Planet and The Planeteers (Mindscape)
5. Cheetahmen (Multicart Rip) (Unl) (Action Enterprises)
6. Cheetahmen 2 (Unl) (Action Enterprises)
7. Darkman (Painting by Numbers)
8. Dragon Fighter (Natsume)
9. Earthworm Jim 3 (Hummer Team)
10. Final Fight 3 (Hummer Team)
11. Ghosts'n Goblins (Micronics)
12. Gun. Smoke (Capcom)
13. Harry's Legend (Hummer Team)
14. Jackie Chan's Action Kung Fu (Now Production)
15. Low G Man - Low Gravity Man (KID)
16. Mitsume ga Tooru (Natsume)
17. Ninja Crusaders (NMK)
18. Monster In My Pocket (Konami)
19. Robocop 2 (Painting by Numbers)
20. Shadow of the Ninja (Natsume)
21. Sonic the Hedgehog (Hummer Team)
22. Super C | Super Contra (Konami)
23. Super Mario World (Hummer Team)
24. Teenage Mutant Ninja Turtles (Konami)
25. Titenic (Hummer Team)
26. Yo! Noid (Capcom)

Список также будет пополняться новыми играми (будет сделан упор на узнаваемые игры).
Новые конфиги также попадут в список поддерживаемых игр CaD Editor. Вот как-то так. :cool:
lancuster:
Добавлены конфиги для Donkey Kong Country 4 от Hummer Team. Ром (для теста) вложен в архив.
lupus:
Пиши везде капсом «BY LANCUSTER»!
Чтобы сразу, издалека было видно...
spiiin:
lupus,
Название темы поправлено, с lancuster'ом проведена беседа. Просьба писать по теме составления конфигов и добавления новых игр в редактор.
spiiin:
lancuster, смотрю в конфиги данки конга - а зачем ты оставляешь адреса атрибутов палитры в таком суммы двух чисел?

--- Код: ---public int getPalBytesAddr()          { return 0x1dff + 256*4; }
--- Конец кода ---

Я так делал для других игр некоторых, просто чтобы показать, что массив байт палитры лежит за массивом блоков, у которого базовый адрес был бы 0x1dFF. Но тут-то у адреса 0x1dFF  я так понимаю, смысла никакого нет?

Если так, то лучше вычислить адрес и записать в более простом виде:

--- Код: ---public int getPalBytesAddr()          { return 0x21FF; }
--- Конец кода ---

...
А, стоп там вообще не используется эта функция, в случае, когда адреса массива блоков считываются функцией Utils.readBlocksFromAlignedArrays (когда в игре блоки описаны раздельными массивами их 4 частей блоков и опционально 5 массивом с аттрибутами, выровненными по определенному количеству байт, 256 в данном случае) . Я тогда просто уберу эту строчку из конфигов, чтобы не смущала читателей, которую там полезные адреса могут посмотреть :)
lancuster:
spiiin, так там же тайлы блоков из 4 мест берутся, разве нет? Вот поэтому я и оставлял.
Тем не менее. Вот конфиги для Circus Caper. Не понимаю, почему скрипт отказывается работать с такими играми (может, особенности маппера мешают или что), так что и палитру, и графику пришлось опять выдёргивать вручную.
Примечание: Карта окрашена в 1 набор только из-за того, что примеров конфигов, где палитра окрашивает сразу 2х2 блоков, пока попросту нет. Но адреса битов палитры также добавлены в конфиги, осталось их немного доработать. :cool:
... Кстати, что по Crystal Mines? Как отображение блоков выровнять?
spiiin:
Там у функции этой пятый параметр задаёт - если false, то читать 4 массива без аттрибутов или true - тогда сразу 5 массивов вместе с аттрибутами блоков. В это особо не вникай, главное конфиг рабочий, а аккуратным я его уже сделаю.

Я просто сперва не понял, что ты суммой показать хотел. На будущее запомни, что эти все +256*4 добавления к адресу делаются, если ты там хотел бы написать адрес 0x1DFF, как ты видимо и задумывал, то надо было добавления эти стереть (там вообще могут быть сколь угодно сложные формулы, и адрес может вообще не константой задаваться, а читаться из рома или другого файла :) ).
В этих конфигах строчка вообще ни на что не влияла просто, поэтому ошибка с добавлением числа к адресу не заметна оказалась.

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

Та, которая дампит в конце кадра, работает с абсолютно всеми играми. Убедись, что ты используешь её.
https://github.com/spiiin/CadEditor/blob/master/Stuff/nes_lua/dump_chr_and_pal/dump_chr_and_pal.lua
lancuster:
spiiin, а пронумеровать нельзя было, чисто для отличия? И я вроде бы одну в архиве находил.
... Касаемо конфигов. Уже 28 игр добавлено (не считая тех, которые ещё нужно поправить). Чуть позже попробую сделать Зена (пока только уровень в лесу есть). И да, там опять мутки с экранами, так что придётся нашинковать, как и раньше.
spiiin:
В Зене изометрические уровни лучше сразу пропускай, там очевидного деления на экраны кажется нету.
lancuster:

--- Цитата: spiiin от 12 Апрель 2018, 22:59:28 ---В Зене изометрические уровни лучше сразу пропускай, там очевидного деления на экраны кажется нету.

--- Конец цитаты ---
Может, и есть. Но вдруг окажется, что там та же фигня с физикой блоков, что в Battletoads? :neznayu:
Я всё же попробую.
spiiin:
По поводу Crystal Mines, там блоки записаны в невыровненные массивы. Длина массивов по 62 байта, но они идут не последовательно друг за другом, а вразброс. Для такого тоже функция библиотечная есть, в dt2 так, только немного кода дописать для создания из этих массивов блоков. Пример конфига в аттаче, адреса массивов блоков и палитры задаются в коде:

--- Код: --- 
  public int blockAddr1 = 0x432;
  public int blockAddr2 = 0x51b;
  public int blockAddr3 = 0x4dd;
  public int blockAddr4 = 0x559;
  public int getPalBytesAddr()          { return 0x597; }
--- Конец кода ---
lancuster:
Понятно. Завтра попробую добить.
Потом Зена проверь, хорошо?
P. S.: глянул также японских Трансформеров и Амагона. Что характерно: в первой игре палитра идёт через каждые 4 строки экранов, по 16 байт, и, скорее всего, тоже по 4х4 задается. А у Амагона какая-то мудреная система получается. Вроде блочное строение, а такое ощущение, будто там оптимизация какая-то или сжатие. Отдельные куски от первого экрана в разных местах карты нашёл. В общем, эти две игры я добавить не могу. Для Амагона, думаю, вообще пакер понадобится.
spiiin:
Блин, задолбался я для Circus Caper добавлять отображения слоя палитры.

Там экраны, описанные в ROM, распаковываются в середину name table, и координатная сетка для слоя атрибутов (2x2 блока) не совпадает с координатной сеткой для блоков. Для основных уровней сделал отображение нормальное.
Из-за несовпадения сетки получается, что для 12 блоков высоту необходимо 7 блоков атрибутов размером 2x2 блока (1-й кодируется 2 верхних блока, 2-й 4-следующих и т.д., потом 7-й два последних оставшихся). Для ещё большей запутанности добавлен также 8 блок аттрибутов, который ничего не кодирует.

Но для разных бонусов и боссов это смещение отличается и его только игра знает, надо проходить и выписывать для каждого (на первом бонусе экран в 10 блоков высотой, и начинает рисоваться с другой высоты относительно сетки блоков 4x4 тайла из атрибутов) - бонусы и боссы пока отброшу, там для каждого свою функцию писать надо.
lancuster:
spiiin, вот так да. Не думал, что с ним возникнут такие сложности.
P. S.: скоро добью Crystal Mines. Расстояние между уровнями разное, поэтому приходится резать на отдельные конфиги. Да и так удобнее, чем все уровни перед глазами держать (можно запутаться).
lancuster:
spiiin, вот, готова Crystal Mines. Как я и говорил, рамка в игре программируется отдельно. Всего в игре 50 уровней (на деле же их 100), остальные 50 - это те же самые карты, только отзеркаленные. Перед уровнями есть байты, которые задают время для уровня, нужное число кристаллов и координаты портала на следующий уровень. :cool:
Да, к слову. В конфиге Bonus4 для Circus Caper я случайно забыл указать правильные координаты экрана. Там на самом деле должно быть 8688. Поправь, плиз.
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

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