Разработка и ромхакинг > Редакторы для консольных игр
[NES] Chip ’n Dale Rescue Rangers (CaD Editor)
Roket:
Понятно. Ладно фиг с ним с боссом. Он нам пока не горит. Я его или Ломакс настроим позже.
Как доделаем уровень B и приступим к уровню С позаботимся о так называемом хаке разработчиков. ;)
--- Цитата ---мне не совсем понятно, что значит "-1
--- Конец цитаты ---
В списке объектов, там идут координаты объекта и после них нумерация ;). Вот эту нумерацию нужно поправить, у босса эти объекты сейчас с нумерацией 0, а надо -1. То есть их расположение дальше арены, а не в ней. Из-за этого он не появляется и поэтому уровень не завершить.
А чтобы можно было пройти, нужно пофиксить нумерацию его объектов. Или я могу вставить другого босса. :)
Добавлено позже:
Это уже не хак получается, а своеобразная трабла.
Добавлено позже:
Вот такой хардкор можно устроить.
spiiin:
всего-то вписать в ром 15 байт (3 части босса) :)
ну вот это и есть хак разработчиков - что части босса ставятся не на той арене, на которой сама битва. из-за этого при автоматической сортировке в редакторе и неясно, куда ставить босса. поэтому он и не появляется. чинится это так - включается ручная сортивка и босс передвигается в самое начало списка объектов, тогда он будет появляться.
пока что можешь просто поставить туда другого босса - "затычку", чтобы можно было завершить уровень.
на этом уровне есть еще и ошибка разработчиков - если посчитать начальные адреса массивов координат и объектов и их размеры, окажется, что они случайно перекрываются и из-за этого затерт один объект. это можно увидеть, если открыть редактором оригинальный ром. я сначала думал, что там должен был быть заводной ключ за спиной робота, но, кажется, там был еще один прыгающий ящик на предпоследнем экране.
Добавлено позже:
не тормозит хардкор?)))
Ti_:
--- Цитата: spiiin от 19 Март 2013, 16:03:32 ---разделить их нормально я не смогу. если кто возьмется ром расширить, в редакторе поправлю потом, чтобы можно было открыть его тоже
--- Конец цитаты ---
Могу попробовать. Что расширить то надо, графику или сами конфиги, и где он лежат?
Само по себе добавление новых банков рома prg+chr делается в 3 клика, а вот указать чтобы данные оттуда читались, это уже зависит от игры.
spiiin:
Ti_
вот тут все смещения описаны.
https://github.com/spiiin/CadEditor/blob/master/CadEditor/Globals.cs
0x3AF0 - тайлы (по 256 штук x 5 блоков - сначала 4 кусочка, затем байт типа + цвета).
0x36F0 - макротайлы (256 штук)
указатели на номера тайлов, макротайлов и prg-банков хранятся в записях об уровнях и дверях, их не проблема переставить.
Ti_:
--- Цитата: spiiin от 19 Март 2013, 17:24:32 ---0x3AF0 - тайлы (по 256 штук x 5 блоков - сначала 4 кусочка, затем байт типа + цвета).
0x36F0 - макротайлы (256 штук)
--- Конец цитаты ---
Не совсем ясно. Штуки это байты?
Указатель на B6E0 тут:
--- Код: ---BANK7:E03C ADC #$E0
BANK7:E03E STA word_0_0
BANK7:E040 LDA word_0_0+1
BANK7:E042 ADC #$B6 ; BANK0:B6E0
--- Конец кода ---
Банк перед этим выставляется либо 0 либо 1, я так понял. То есть имеем данные в двух местах - 36f0 и 76f0 , размером 400 каждые. И что это значит? Всего 8 уникальных?
Поинтеры на bae0 тут:
--- Код: ---BANK7:DFE9 LDA $BAE0,X ; BANK0:BAE0
BANK7:DFEC STA $140,Y
BANK7:DFEF LDA $BBE0,X
BANK7:DFF2 STA $141,Y
BANK7:DFF5 LDA $BCE0,X
BANK7:DFF8 STA $144,Y
BANK7:DFFB LDA $BDE0,X
--- Конец кода ---
и тут
--- Код: ---BANK7:DFAC TAX
BANK7:DFAD LDA $BEE0,X
BANK7:DFB0 STA byte_0_4
--- Конец кода ---
Если всего 5 кусков и каждый по 256 байт? (или 10 если в 1-ом банке тоже?) , как я их расширю. Выходит в оригинале они на все уровни? Можно конечно всё продублировать в других банках, и только номер банка указывать.
spiiin:
в роме - 0x3AF0 - первый набор (0x3af0 - 1четверть, 0x3bf0 -2четверть, 0x3cf0 - 3четверть, 0x3df0 - 4четверть, 0x3ef0 - тип и 2 бита цвета).
0x7AF0 - второй набор
0xBAF0 - третий и т.д., всего 8 по-моему.
наборы маппятся по адресу:
маппятся по адресам [0xBAE0, 0xBBE0,0xBCE0,0xBDE0, 0xBEE0]
аналогично 8 блоков макротайлов (по 256 байт) лежат по адресам 0x36F0, 0x76F0, 0xBAF0 и т.д. и маппятся в оперативку по адресу 0xB6E0
по числу банков prg-rom - это ж у тебя в примерах кода всё есть.
далее - есть записи о том, какой уровень использует какой блок тайлов и макротайлов.
для уровней (no от 0 до 10):
res.objId = romdata[0x1E23D + no]; //номер тайлов
res.backId = romdata[0x1E24C + no];//номер chr
res.palId = romdata[0x1E25B + no]; //номер палитры, палитры по offset'у 0x1C354
res.palId2 = romdata[0x1E279 + no];
res.palBlink = romdata[0x1E288 + no];
res.bigBlockId = romdata[0x1E201 + no]; //номер блока макротайлов
также дверь может переключать эти параметры - кроме номера макроблоков (дверей 25 штук):
res.objId = romdata[0x1E6BB + no];
res.backId = romdata[0x1E6D3 + no];
res.palId = romdata[0x1E6EB + no];
res.palId2 = romdata[0x1E703 + no];
res.palBlink = romdata[0x1E71B + no];
то есть, чтобы гарантированно для каждого уровня и каждой двери был выделен свой уникальный номер - надо сделать 11 + 25 = 36 банков prg-rom (в которых будут описания тайлов) и 72 банка chr-rom (по 36 на беки и по 36 на спрайты врагов)
Добавлено позже:
--- Цитата ---Банк перед этим выставляется либо 0 либо 1
--- Конец цитаты ---
от 0 до 7 наверно в оригинале, я не смотрел
Ti_:
Ну вот это меня интересовало, где данные уровней лежат. Значит они лежат в разных банках, для каждого уровня - свой банк. А не все уровни в одном банке.
Во-вторых банков у нас 8, значит 8 'наборов' никак не может быть, так как последний c000-f000.
Добавлено позже:
--- Цитата: spiiin от 19 Март 2013, 21:28:36 ---Добавлено позже:от 0 до 7 наверно в оригинале, я не смотрел
--- Конец цитаты ---
Я сейчас посмотрел, там вначале выставляет 0 или 1 , а потом нужный, это меня и сбило.
Добавлено позже:
--- Цитата: spiiin от 19 Март 2013, 21:28:36 ---то есть, чтобы гарантированно для каждого уровня и каждой двери был выделен свой уникальный номер - надо сделать 11 + 25 = 36 банков prg-rom (в которых будут описания тайлов) и 72 банка chr-rom (по 36 на беки и по 36 на спрайты врагов)
--- Конец цитаты ---
В mmc3 512 кб prg и 256kb chr максимум. В MMC1 не смотрел, но также наверное.
Так что просто продублировать если - получаем всего +24 PRG. А CHR в 2 раза больше - не знаю сколько это.
А если больше надо в один банк все уровни пихать, и поинтеры делать.
Добавлено позже:
Проверил - mmc1 держит только 256кб prg. Так что без ухищрений только +8.
А если надо только номер банка указывать, то тут и расширять нечего. Ну если надо то вот: вставил 8 дубликатов 0-ого банка в 1c010-3c010. (Номера их с 07 до 0e).
Не забываем что последний банк всегда в конце рома prg, поэтому он перемещается с 1c010-20010 в 3c010-40010.
(На случай если редактору эти адреса нужны.)
-------------------------------------------------------------------------------------
Добавлено позже:
Я тут вдруг вспомнил что на сайте Sergi был Чип и Дейл прохаченный под MMC3.
Скачал его и добавил также 384кб (всё копии 0-ого банка). Так что вот, места теперь почти сколько хотели.
Только надо будет ромы сверить, а то мало ли редактор его ром не поймет, не расширенный в архиве также.
Steel:
ROM "Chip and Dale" на MMC3 есть тут - http://tim007.com/Romhack.htm
spiiin:
Почти сделал поддержку в редакторе расширенного рома, но заметил, что по-хорошему надо под неё еще движок игры допилить немного.
в записях об уровнях номер банка памяти под объекты кодируется так: 8x - банки с памятью для объектов, 9x - банки с памятью для бэков. можно выбирать до 16 банков.
но проблема в том, что в роме банки лежат так: 8 под объекты, 8 под видео и потом 16 свободных. то есть банки для бэков можно продолжать дальше на свободное место, а банки для объектов продолжать нельзя, так как следом за ними сразу идут банки бэков.
Чтобы было можно - надо переставить банки в таком порядке - 8 под объекты, 8 свободных, 8 под беки и еще 8 свободных. ну и где-то в движке изменить выбор банка на правильный.
Ti_, если сможешь это пофиксить быстро, было бы очень круто.
Roket, спасибо за спрайты для DWD, очень жду оставшиеся (84-104) :)
spiiin:
Emsi D объектов-бонусов несколько, с ними связан разный игровой код. не влезая в код, нельзя ставить бонусы в других комнатах и менять их номера
Добавлено позже:
Ti_, Rocket Вот промежуточная версия редактора
Умеет загружать большее число картинок объектов и поддерживает расширенные ромы (в архиве Config_CAD-512.xml для загрузки 512kb версии).
в полной версии еще вынесу остальные константы и размеры уровней для DwD в xml и наверно сделаю еще пару инструментов в редакторе врагов (выделение, удаление мышкой), чтобы проще разобраться было.
а то вот даже какой-то испанец нашел редактор и не понял, как объекты удалять :lol: http://www.youtube.com/watch?v=eOE5eHi_lP4
кстати, а первый ответ в теме можно отредактировать как-то?
Ti_:
--- Цитата: spiiin от 28 Март 2013, 05:11:14 ---но проблема в том, что в роме банки лежат так: 8 под объекты, 8 под видео и потом 16 свободных. то есть банки для бэков можно продолжать дальше на свободное место, а банки для объектов продолжать нельзя, так как следом за ними сразу идут банки бэков.
--- Конец цитаты ---
Посмотрел, банки с графикой - там ничего менять не надо.
Вначале уровня просто задается номер.
Тут ($1e23d):
--- Код: ---BANK7:E22D object_bank_id: .BYTE $80, $81, $80, $83, $84, $86, $85, $88, $81, $86, $87, $8C, $8C, $80, $9D ; ...
BANK7:E23C backgn_bank_id: .BYTE $90, $92, $93, $94, $95, $96, $97, $98, $99, $9A, $9B, $9E, $9E, $9D, $9D ; ...
--- Конец кода ---
Это задается при переходе на подуровень ($1e6bb):
--- Код: ---BANK7:E6AB object_bank_id1:.BYTE $80, $8C, $81, $82, $82, $89, $83, $85, $84, $8A, $84, $87, $8A, $85, $87, $87, $8A, $8C, $80, $89, $88, $8B, $82, $89 ; ...
BANK7:E6C3 backgn_bank_id2:.BYTE $91, $91, $92, $93, $93, $93, $94, $95, $95, $9C, $96, $96, $96, $97, $98, $98, $98, $9A, $9A, $9A, $9B, $9D, $99, $91 ; ...
--- Конец кода ---
Например в оригинале $80 соотв. адресу $20010 в роме. (первый блок объектов) , $81 -второй;
$90 - первый блок фона ($30010).
spiiin:
а, стоп, точно, в оригинале уже используются 16 блоков (8A-8F, 9A-9F). тогда надо проверить, будет ли работать нормально индексирование с адресами A0-BF просто :)
Ya_ne_boto:
Отличная идея. Сейчас на вскидку и не могу вспомнить подобных проектов, где бы полностью были сохранены уровни, и улучшена только графика. Я бы даже купил такую игру на картриджах выпускать планируете?
spiiin:
Теме несколько лет уже :)
Навигация
Перейти к полной версии