Автор Тема: [SMD] Contra Super Hard Corps  (Прочитано 13340 раз)

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

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« : 11 Октябрь 2017, 00:57:39 »
Не секрет что я снова занялся своим старым проектом. :cool:
Сейчас довольно активно его пилю.

Выражаю особую благодарность этим людям:  :hi:
Ti_,Dr.Mefisto,VLD,133MHz

Эту тему оставлю шапкой, так чтоб здесь всегда можно было скачать последнюю версию.

А так вот вам монтаж с тем что уже есть и еще одна версия рома

CHAGES.LOG: :crazy:
« Последнее редактирование: 19 Октябрь 2017, 05:33:56 от Segaman »

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #60 : 13 Ноябрь 2017, 01:52:45 »
Nemesis_c, тебя бы в репозиторий запихать, чтоб ты тож коммиты делал и релизы, пока я загружен работой на работе (удачная тафталогия  :lol: )

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1342
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #61 : 13 Ноябрь 2017, 10:06:55 »

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1342
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #62 : 13 Ноябрь 2017, 10:18:43 »
Segaman, помогай. Хотел убрать черную область статусбара, в карте переписал таилы на прозрачные - но все равно рисуется чернота. Если отключить полностью статусбар - графика уровня за ним нормально отрисовывается а спрайты туда не идут  <_<


Оффлайн Zero7

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
  • a.k.a. VIKnick
    • ВКонтакте
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #63 : 13 Ноябрь 2017, 12:50:26 »
Nemesis_c, первоначальный вариант реально выглядит круто, походу конами решили запилить очередного райзера, а потом передумали.

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1342
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #64 : 13 Ноябрь 2017, 13:15:20 »
Zero7, мне тоже эта версия больше нравится, но перерыв архивы ничего больше пока не нашел, только эти два кадра.
А еще там часть кадра перезарядки помпового ружья и рядом с Рэем заяц  :)
(конструкция ружья крайне непонятная теперь)


Оффлайн Zero7

  • Пользователь
  • Сообщений: 169
  • Пол: Мужской
  • a.k.a. VIKnick
    • ВКонтакте
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #65 : 13 Ноябрь 2017, 13:26:50 »
Nemesis_c, А может изначально планировалось что при подборе например спрэтгана менялось само оружие. Вроде такое было реализовано в первой контре на аркаде.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #66 : 14 Ноябрь 2017, 03:00:16 »
Nemesis_c, выше головы не прыгнешь.
слой Window будет всегда цвет заднего фона рисовать, так что не парься вообще над этим.

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1342
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #67 : 14 Ноябрь 2017, 03:20:50 »
так убрать его нафиг  :lol:

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2540
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #68 : 14 Ноябрь 2017, 11:58:11 »
робокопа нарисуйте :)

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1342
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #69 : 14 Ноябрь 2017, 20:20:00 »



разбор рома по винтикам продолжается  :)

Добавлено позже:
Segaman, ты с коллизиями разбирался?
« Последнее редактирование: 14 Ноябрь 2017, 20:29:10 от Nemesis_c »

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #70 : 15 Ноябрь 2017, 00:28:09 »
Nemesis_c, неа, коллизии цровней я не трогал

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1342
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #71 : 15 Ноябрь 2017, 03:18:25 »
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

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #72 : 13 Декабрь 2017, 04:13:44 »
Слепил плагин для перепаковки дампов и засовывания в ROM. Не знаю, будет ли полезным. За пакер игровых архивов спасибо r57shell и DrMefistO
https://github.com/spiiin/CadEditor/releases/tag/v4.6

Segaman, а как ты кстати уровни в игре меняешь?

Оффлайн spiiin

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #73 : 19 Декабрь 2017, 19:03:04 »
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) можно найти в конфигах других уровней
« Последнее редактирование: 19 Декабрь 2017, 19:10:46 от spiiin »

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1342
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #74 : 19 Декабрь 2017, 19:11:09 »
spiiin, я там тебе поэмы в личку строчу а ты уже тут всё выложил  :lol:
попробую поправить у себя в собиралке, о результатах отпишусь

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2540
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #75 : 19 Декабрь 2017, 22:33:18 »

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1342
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #76 : 21 Декабрь 2017, 19:48:40 »
 

работает  :)

Оффлайн Scarabay

  • Пользователь
  • Сообщений: 134
  • Пол: Мужской
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #77 : 22 Декабрь 2017, 08:22:38 »
Nemesis_c, хочешь перенести уровни из первой контры?

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1342
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #78 : 22 Декабрь 2017, 09:37:45 »
Scarabay, нет. Просто тестирую движок и инструменты. Для переноса первого уровня с нес надо для начала организовать плавание, ныряние, стрельбу из воды, дорисовать кучу спрайтов, написать босса... а это ппц. Да и первый уровень с нес не вписывается вообще в игру. Все взоры на снес. Графику первого уровня подгоняю потихоньку под сегу мегу - уже почти готово, скоро буду блоки составлять и уровень отрисовывать. 

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #79 : 27 Декабрь 2017, 06:24:58 »
короче вот как коллизии находятся для тайлов

-отнимается начало спрайтов (спрайты отображаются не с нуля, а с 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 (потому что байт)
« Последнее редактирование: 27 Декабрь 2017, 06:34:32 от Segaman »

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #80 : 27 Декабрь 2017, 15:49:22 »
я думаю что такой метод установки коллизии похож на костыль.
мол у конами есть редактор блоковых уровней, но нет редактора коллизий и они решли не париться, а присвоить тайлам коллизии.
это как если обвести фотографию. некрасиво, зато видно контуры и края  :lol:
ну и отнимать разницу спрайтов тоже костыль.
вместо того чтоб делать это вовремя подгрузки спрайтов, мы делаем это кажды раз, когда нам нужны координаты. о какой экономии ресурсов тут может вообще идти речь. видимо разработчики умудрились выстрелить себе в колено в самом начале разработки

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #81 : 30 Март 2018, 02:58:20 »
+added behavior to robot spawner lev1
+added robot spawner at the 2nd section of lev1
+more faster animations for agro-spinner-robo lev1
+added jumping on the pits, and dying in the pits behavior for running robots lev1
+added robot ambush level 1
+added cheats from japan version
+added debugger object + debugger summon cheat (in pause l,r,l,r,a,b,c)

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #82 : 30 Март 2018, 14:07:27 »
блин, забыл написать про рандомайзер в поведении всех боссов

Оффлайн AuAurora

  • Пользователь
  • Сообщений: 1628
  • Мур
    • Youtube
    • Просмотр профиля
Re: [SMD] Contra Super Hard Corps
« Ответ #83 : 30 Март 2018, 19:23:10 »
хы. Пока 1 лвл обрабатываешь только?

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #84 : 10 Апрель 2018, 17:13:14 »
вообщем пока сам хак неразрабатываю, вот вам последняя сборка хака.
добавлены чит коды из японки и один новый чит, который позволяет спавнить обьекты.
в паузе: влево,вправо,влево,вправо,A,B,C

управление со второго геймпада:
D-Pad - перемещение указателя (звёздочка)
зажать A + вверх\вниз - выбрать ID обьекта
зажать B + вверх\вниз - выбрать sub ID обьекта (поведение, как правило глючит)
нажать C - заспавнить обьект и перейти в режим ожидания.
в режиме ожидания если нажать A, спавнер выйдет из ожидания.

демонстрация режима. смотреть с 3:38:05

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #85 : 12 Апрель 2018, 03:54:20 »
интересные факты:

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

2)по очень непонятной причине в коде присутсвует бессмысленная запись одного слова из начала списка спрайтов в видео ОЗУ.
учитывая, что перед этим вся таблица спрайтов посредством DMA полностью отправляется в точку назначения в видео ОЗУ, данная операция совершенно бессмысленна.
и куда более бессмысленно сохранение состояния видео регистра 1 ($81) в d5, учитывая, что это состояние потом невозвращается.
глядя на ту кропотливость в написанном коде такое мизерное, но всё же странное упущение кажется совершенно не уместным.


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

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

5)ввиду большого колличества PCM каналов сильно пострадало их качество воспроизведения.
благодаря Vld, вы можете послушать, как бы звучали PCM звуки в игре не будь в ней такой многоканальности.
в архиве несколько PCM звуков в чистом их виде вырезанные из ROM-а

Онлайн bgr

  • Пользователь
  • Сообщений: 535
    • ВКонтакте
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #86 : 12 Апрель 2018, 21:36:18 »
5)ввиду большого колличества PCM каналов сильно пострадало их качество воспроизведения.
благодаря Vld, вы можете послушать, как бы звучали PCM звуки в игре не будь в ней такой многоканальности.
в архиве несколько PCM звуков в чистом их виде вырезанные из ROM-а
Сегамен задумал запрягсти Vld переписать все мелодии в трекерный формат и ограничить PCM-каналы? :ohmy:

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] Contra Super Hard Corps
« Ответ #87 : 15 Февраль 2019, 23:31:11 »
Закоммитил последние изменения хака в гитведро
https://bitbucket.org/Segaman68k/super-hard-corps/src/master/
Сега добрый  :)

Добавлено позже:
алсоу тут хак организовался, уже успели чекнуть?
гврят релиз 23 февраля в день "ударов корреспонденту по лицу возле фонтана в одежде ВДВ-шника" :lol:

Добавлено позже:
имхо казуальный хак  :lol:
« Последнее редактирование: 15 Февраль 2019, 23:38:55 от Segaman »