| Разработка и ромхакинг > Ромхакинг и программирование |
| [SMD] Contra Super Hard Corps |
| << < (4/5) > >> |
| Segaman:
Не секрет что я снова занялся своим старым проектом. :cool: Сейчас довольно активно его пилю. Выражаю особую благодарность этим людям: :hi: Ti_,Dr.Mefisto,VLD,133MHz Эту тему оставлю шапкой, так чтоб здесь всегда можно было скачать последнюю версию. А так вот вам монтаж с тем что уже есть и еще одна версия рома CHAGES.LOG: :crazy: --- Цитата ---v0.0.4 - 19.10.2017 +figured level format +huge changes to Level 1 v0.0.3 - 10.10.2017 +reduced the possibility of epilepsy on "Obj01B5 - Level 1 Giant Cyclops" +improved palettes of player select, lev1 & lev4 +added variations to the rotation stick robot (after giant cyclops) +reduced animation length of panic stick robot +reduced HP of "Obj01B5 - Level 1 Giant Cyclops" v - 09.10.2017 +adjustments to the intro sequence and texts +increased "Obj0120-121 - Level 1 Mad Robot Soldiers" HP +adjustments to the "Obj0120-121 - Level 1 Mad Robot Soldiers" AI +small adjustments to the Player Jump Gravity (Like in old Contra games) v0.0.2 - 04.10.2017 +increased "Obj009C - Level 1 Boss" HP +adjustments to the "Obj009C - Level 1 Boss" AI v0.0.1 - 30.03.2013 +small adjustments to the player select, lev1, lev2 & lev4 palette +added damage hitpoints (thx Ti_) +increased "Obj0181 - Level 1 Cendepide" HP +increased "Obj009A - Level 1 Spider Mini Boss" HP +small adjustments to the "Obj009A - Level 1 Spider Mini Boss" AI +huge animation changes of "Obj01B5 - Level 1 Giant Cyclops" --- Конец цитаты --- |
| Segaman:
Nemesis_c, тебя бы в репозиторий запихать, чтоб ты тож коммиты делал и релизы, пока я загружен работой на работе (удачная тафталогия :lol: ) |
| Nemesis_c:
|
| Nemesis_c:
Segaman, помогай. Хотел убрать черную область статусбара, в карте переписал таилы на прозрачные - но все равно рисуется чернота. Если отключить полностью статусбар - графика уровня за ним нормально отрисовывается а спрайты туда не идут <_< |
| Zero7:
Nemesis_c, первоначальный вариант реально выглядит круто, походу конами решили запилить очередного райзера, а потом передумали. |
| Nemesis_c:
Zero7, мне тоже эта версия больше нравится, но перерыв архивы ничего больше пока не нашел, только эти два кадра. А еще там часть кадра перезарядки помпового ружья и рядом с Рэем заяц :) (конструкция ружья крайне непонятная теперь) |
| Zero7:
Nemesis_c, А может изначально планировалось что при подборе например спрэтгана менялось само оружие. Вроде такое было реализовано в первой контре на аркаде. |
| Segaman:
Nemesis_c, выше головы не прыгнешь. слой Window будет всегда цвет заднего фона рисовать, так что не парься вообще над этим. |
| Nemesis_c:
так убрать его нафиг :lol: |
| SeregaZ:
робокопа нарисуйте :) |
| Nemesis_c:
разбор рома по винтикам продолжается :) Добавлено позже: Segaman, ты с коллизиями разбирался? |
| Segaman:
Nemesis_c, неа, коллизии цровней я не трогал |
| Nemesis_c:
Segaman, Не получается правильно сконфигурировать коллизии. Посмотри, может разберешься что-к чему. В конфиге уровня идут ссылки: dc.l xxxx ; блоки таилов 8*8 - пожаты dc.l xxxx ; карта уровня из блоков - пожата dc.l xxxx ; объекты уровня (враги и т.д.) dc.l xxxx ; коллизии таилов Конфиг коллизий примерно такой: dc.w $0000 ; тип поведения таила(ов) dc.w $0123 ; номер таила dc.w $0000 ; тип поведения таила(ов) dc.w $0125 ; номер таила dc.w $0000 ; -//- dc.w $0129 ; -//- ..... dc.w $0000 ; х.з. dc.w $7FFF ; конец конфига типы поведения, например: dc.w $0000 ; поверхность по которой можно ходить. нельзя ходить через нее и стрелять. dc.w $0004 ; боковая поверхность для стен, можно карабкаться вверх/вниз. dc.w $0005 ; площадка - можно ходить сверху, простреливается, можно запрыгнуть на нее снизу. Таилы с коллизиями в видео памяти ставятся в самый конец участка памяти и идут последовательно. Я так понимаю ссылка указывает на начальный таил с которого он и последующие будут иметь определённые свойства, пока следующая ссылка не укажет на начальный таил с новыми свойствами. И короче при изменении какого-то одного типа коллизий всё нормально, при изменении нескольких они начинают путаться и вообще фиг знает что происходит. |
| spiiin:
Слепил плагин для перепаковки дампов и засовывания в ROM. Не знаю, будет ли полезным. За пакер игровых архивов спасибо r57shell и DrMefistO https://github.com/spiiin/CadEditor/releases/tag/v4.6 Segaman, а как ты кстати уровни в игре меняешь? |
| spiiin:
Nemesis_c Ты неправильно расшифровал тип коллизий. Конфиг коллизий: 0000 - код начала описания коллизий 04A9, 0004 - пары из начального номера тайлов и типа группы тайлов, как ты и расшифровывал (но сначала идёт номер тайла, а потом его тип, а не наоборот). .... 0005 0000 - последняя пара значений (а, возможно, просто код окончания, надо смотреть код или конфиги других уровней) 7FFFF - код окончания описания коллизий. На скрине выделено описание 8 типов физики блоков первого уровня. Раскодировка типов тайлов: 0000 - фон 0001 - платформа (может запрыгивать снизу и спрыгивать) 0002 - ??? 0003 - перекладина (можно висеть снизу и сбоку) 0004 - пол 0005 - ??? 0006 - перекладина (можно висеть снизу, но нельзя сбоку) 0007 - наклонная платформа упавшего дома, более пологий подъём (см. блок C3 - в CadEditor - есть все 4 типа платформ упавшего дома) 0008 - наклонная платформа упавшего дома, более крутой подъём 0009 - наклонная платформа упавшего дома, наименее крутой подъём 000A - наклонная платформа упавшего дома, почти без наклона (можно с помощью CadEditor составлять тестовый блок из тайлов соотвествующего типа и убедиться, что кодировка действительно именно такая) Оставшиеся типы (0002 и 0005) можно найти в конфигах других уровней |
| Nemesis_c:
spiiin, я там тебе поэмы в личку строчу а ты уже тут всё выложил :lol: попробую поправить у себя в собиралке, о результатах отпишусь |
| SeregaZ:
вот черт... не тот ролик :) там "пули" были из игры еще на видео наложены :)))) |
| Nemesis_c:
работает :) |
| Scarabay:
Nemesis_c, хочешь перенести уровни из первой контры? |
| Nemesis_c:
Scarabay, нет. Просто тестирую движок и инструменты. Для переноса первого уровня с нес надо для начала организовать плавание, ныряние, стрельбу из воды, дорисовать кучу спрайтов, написать босса... а это ппц. Да и первый уровень с нес не вписывается вообще в игру. Все взоры на снес. Графику первого уровня подгоняю потихоньку под сегу мегу - уже почти готово, скоро буду блоки составлять и уровень отрисовывать. |
| Segaman:
короче вот как коллизии находятся для тайлов -отнимается начало спрайтов (спрайты отображаются не с нуля, а с 128) -прибавляется позиция камеры -координаты округляются соответственно размеру уровня умноженному на размер блоков (32) -Х делится на 32, а Y умножается на 8 -результат суммируется и получается адрес блока 32*32 внутри уровня -полученный результат суммируется с адресом дизайна уровня -получаем индекс блока 32*32 в уровне -полученный индекс умножается на 16 -считаются координаты внутри тайла (0-7) и внутри блока (0-3) -полученный результат суммируется с адресом таблицы столкновений -прочитывается индекс столкновения из таблицы столкновений а далее уже на усмотрение игрового кода если перевести дочловно на высокоуровневый код C, то получится что-то такое: --- Код: ---word xInLevDesign,yInLevDesign; word blockId, colId, resultAddress; word xInTile,yInTile,xInBlock,yInBlock; xInLevDesign = x - 128 + cameraX; yInLevDesign = y - 128 + cameraY; xInLevDesign &= (LevWidth*32); // в первом уровне это $1FE0 yInLevDesign &= (LevHeight*32);// в первом уровне это $1E0 xInLevDesign = xInLevDesign/32;// дизайн уровня содержит id блоков 32*32 yInLevDesign = yInLevDesign*8; blockId = LevelDesign[ xInLevDesign + yInLevDesign ]; resultAddress = blockId * 16; xInTile = x & 0x7; yInTile = y & 0x7; xInBlock = (x & 0x18) / 8; // тоже что и ((x/8)&0x3) yInBlock = (y & 0x18) / 2; // тоже что и ((y/2)&0x3) resultAddress += xInBlock + yInBlock; colId = LevelTileColTable[ resultAddress ]; --- Конец кода --- Добавлено позже: а таблица столкновений, та которая к уровню привязывается, грузится в $FF4000 как копия таблицы блоков, только в ней хранятся байты, а не ворды, и они указывают лишь на метод столкновения. иными словами, блоку 32*32 с его 4*4 тайлами, соответсвует такое же число значений столкновений. на старте уровня, блоки тайлов 32*32 грузятся в память, а потом игра проходится по таблице столкновений и если тайл, внутри блока равен тому, что говорит о столкновении, то он пишется в таблицу столкновений. и прочитать такое столкновение внутри блока очень просто, достаточно поделить адрес тайла внутри блока на 2 (потому что байт) |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |