Автор Тема: Редактирование и хакинг Chip and Dale: Rescue Rangers  (Прочитано 6043 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Roket

  • Пользователь
  • Сообщений: 3324
  • Пол: Мужской
  • Злой Котэ
    • Просмотр профиля
Редактирование и хакинг Chip and Dale: Rescue Rangers
« Ответ #60 : 08 Май 2012, 18:54:55 »
Понятно. Ладно фиг с ним с боссом. Он нам пока не горит. Я его или Ломакс настроим позже.
Как доделаем уровень B и приступим к уровню С позаботимся о так называемом хаке разработчиков. ;)

Цитата
мне не совсем понятно, что значит "-1
В списке объектов, там идут координаты объекта и после них нумерация ;). Вот эту нумерацию нужно поправить, у босса эти объекты сейчас с нумерацией 0, а надо -1. То есть их расположение дальше арены, а не в ней. Из-за этого он не появляется и поэтому уровень не завершить.

А чтобы можно было пройти, нужно пофиксить нумерацию его объектов. Или я могу вставить другого босса. :)

Добавлено позже:
Это уже не хак получается, а своеобразная трабла.

Добавлено позже:
Вот такой хардкор можно устроить.

Оффлайн spiiin

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
Редактирование и хакинг Chip and Dale: Rescue Rangers
« Ответ #61 : 08 Май 2012, 18:56:55 »
всего-то вписать в ром 15 байт (3 части босса) :)
ну вот это и есть хак разработчиков - что части босса ставятся не на той арене, на которой сама битва. из-за этого при автоматической сортировке в редакторе и неясно, куда ставить босса. поэтому он и не появляется. чинится это так - включается ручная сортивка и босс передвигается в самое начало списка объектов, тогда он будет появляться.
пока что можешь просто поставить туда другого босса - "затычку", чтобы можно было завершить уровень.

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



Добавлено позже:
не тормозит хардкор?)))

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Редактирование и хакинг Chip and Dale: Rescue Rangers
« Ответ #62 : 19 Март 2013, 17:04:57 »
разделить их нормально я не смогу. если кто возьмется ром расширить, в редакторе поправлю потом, чтобы можно было открыть его тоже
Могу попробовать. Что расширить то надо, графику или сами конфиги, и где он лежат?
Само по себе добавление новых банков рома prg+chr делается в 3 клика, а вот указать чтобы данные оттуда читались, это уже зависит от игры.


Оффлайн spiiin

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
Редактирование и хакинг Chip and Dale: Rescue Rangers
« Ответ #63 : 19 Март 2013, 17:24:32 »
Ti_
вот тут все смещения описаны.
https://github.com/spiiin/CadEditor/blob/master/CadEditor/Globals.cs
0x3AF0 - тайлы (по 256 штук x 5 блоков - сначала 4 кусочка, затем байт типа + цвета).
0x36F0 - макротайлы (256 штук)

указатели на номера тайлов, макротайлов и prg-банков хранятся в записях об уровнях и дверях, их не проблема переставить.


Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Редактирование и хакинг Chip and Dale: Rescue Rangers
« Ответ #64 : 19 Март 2013, 20:38:00 »
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

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
Редактирование и хакинг Chip and Dale: Rescue Rangers
« Ответ #65 : 19 Март 2013, 21:28:36 »
в роме - 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 наверно в оригинале, я не смотрел
« Последнее редактирование: 19 Март 2013, 21:40:05 от spiiin »

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Редактирование и хакинг Chip and Dale: Rescue Rangers
« Ответ #66 : 19 Март 2013, 21:40:58 »
Ну вот это меня интересовало, где данные уровней лежат.  Значит они лежат в разных банках, для каждого уровня - свой банк.  А не все уровни в одном банке.
Во-вторых банков у нас 8, значит 8 'наборов' никак не может быть, так как  последний c000-f000.

Добавлено позже:
Добавлено позже:от 0 до 7 наверно в оригинале, я не смотрел
Я сейчас посмотрел, там вначале выставляет 0 или 1 , а потом нужный, это меня и сбило.
Добавлено позже:
то есть, чтобы гарантированно для каждого уровня и каждой двери был выделен свой уникальный номер - надо сделать 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-ого банка).  Так что вот, места теперь почти сколько хотели.

Только надо будет ромы сверить, а то мало ли редактор его ром не поймет,  не расширенный в архиве также.
« Последнее редактирование: 20 Март 2013, 14:01:55 от Ti_ »

Оффлайн Steel

  • Пользователь
  • Сообщений: 75
  • Пол: Мужской
    • Просмотр профиля
Редактирование и хакинг Chip and Dale: Rescue Rangers
« Ответ #67 : 21 Март 2013, 16:55:43 »
ROM "Chip and Dale" на MMC3 есть тут - http://tim007.com/Romhack.htm

Оффлайн spiiin

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
Редактирование и хакинг Chip and Dale: Rescue Rangers
« Ответ #68 : 28 Март 2013, 05:11:14 »
Почти сделал поддержку в редакторе расширенного рома, но заметил, что по-хорошему надо под неё еще движок игры допилить немного.

в записях об уровнях номер банка памяти под объекты кодируется так: 8x - банки с памятью для объектов, 9x - банки с памятью для бэков. можно выбирать до 16 банков.
но проблема в том, что в роме банки лежат так: 8 под объекты, 8 под видео и потом 16 свободных. то есть банки для бэков можно продолжать дальше на свободное место, а банки для объектов продолжать нельзя, так как следом за ними сразу идут банки бэков.
Чтобы было можно - надо переставить банки в таком порядке - 8 под объекты, 8 свободных, 8 под беки и еще 8 свободных. ну и где-то в движке изменить выбор банка на правильный.

Ti_, если сможешь это пофиксить быстро, было бы очень круто.

Roket, спасибо за спрайты для DWD, очень жду оставшиеся (84-104) :)

Оффлайн spiiin

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
Редактирование и хакинг Chip and Dale: Rescue Rangers
« Ответ #69 : 28 Март 2013, 15:43:29 »
Emsi D объектов-бонусов несколько, с ними связан разный игровой код. не влезая в код, нельзя  ставить бонусы в других комнатах и менять их номера
Добавлено позже:
Ti_, Rocket Вот промежуточная версия редактора
Умеет загружать большее число картинок объектов и поддерживает расширенные ромы (в архиве Config_CAD-512.xml для загрузки 512kb версии).

в полной версии еще вынесу остальные константы и размеры уровней для DwD в xml  и наверно сделаю еще пару инструментов в редакторе врагов (выделение, удаление мышкой), чтобы проще разобраться было.
а то вот даже какой-то испанец нашел редактор и не понял, как объекты удалять  :lol: http://www.youtube.com/watch?v=eOE5eHi_lP4

кстати, а первый ответ в теме можно отредактировать как-то?
« Последнее редактирование: 28 Март 2013, 15:54:11 от spiiin »

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Редактирование и хакинг Chip and Dale: Rescue Rangers
« Ответ #70 : 30 Март 2013, 11:40:54 »
но проблема в том, что в роме банки лежат так: 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

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
Редактирование и хакинг Chip and Dale: Rescue Rangers
« Ответ #71 : 30 Март 2013, 16:44:14 »
а, стоп, точно, в оригинале уже используются 16 блоков (8A-8F, 9A-9F). тогда надо проверить, будет ли работать нормально индексирование с адресами A0-BF просто :)

Оффлайн Ya_ne_boto

  • Пользователь
  • Сообщений: 5
  • Пол: Мужской
    • Просмотр профиля
Редактирование и хакинг Chip and Dale Rescue Rangers
« Ответ #72 : 10 Июль 2018, 13:53:35 »
Отличная идея. Сейчас на вскидку и не могу вспомнить подобных проектов, где бы полностью были сохранены уровни, и улучшена только графика. Я бы даже купил такую игру на картриджах выпускать планируете?

Оффлайн spiiin

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
Редактирование и хакинг Chip and Dale: Rescue Rangers
« Ответ #73 : 12 Июль 2018, 11:09:51 »
Теме несколько лет уже :)