• avatar aa-dav
  • 0
Да, игр где были скроллинги по обоим осям и так то было меньше остальных, а чтобы еще и монолитный статус-бар — это был своего рода высший пилотаж и вообще редко обычно в шедеврах. :)
  • avatar Bugrim
  • 0
Блин сижу читаю как в первый раз а уже прокомментировать успел когда то, память совсем дырявая. Я имел виду третью часть, но сейчас сообразил, что все вертикальные уровни не пересекаются с горизонтальными и разделены дверьми. Такая же схема и в Power Blade 2. Только Battletoads and Double Dragon приходит на ум где совмещены оба направления без разрывов.
UPD(20.12.2022) Исходники оптимизированного рендера доступны на GitHub
Ещё одно предложение по спрайтам от Monster^Sage с последующей доводкой introspec
Если коротко то формат спрайта меняется на байт маски+уплотненный байт спрайта, в конверторе генерируем маску зная где у нас прозрачный пиксел а где нет. вывод такой:


pop bc ;берём маску в с и уплотненный байтик в b
ld a, (hl) ;берём байт
and c ;накладываем маску
or b ;орим
ld (hl), a ;кладем в экран


Итого 32т на две точки. По итогу сумасшедшее ускорение от моего первоначального варианта.

Я постараюсь всё это оформляю в отдельный опенсорсный движок-TSU, будет 8 спрайтов против 6 в Ringo, размер вырастет на две линии в высоту и плюс ещё 16 маленьких спрайтов 5х5. Также полностью доступны два нижних бордюра на код игры.
да, часто тоже так хочется )тут или stellar mode или делать широкие пиксели 8х4.
  • avatar PheeL
  • 0
Хотя нет. Написал, а потом уже подумал. Не получится, т.к. у нас по-горизонтали только два возможных цвета. Этот трюк работает только в пределах целого знакоместа. Жаль.
  • avatar PheeL
  • 0
Наверняка уже кто-то предложил, потому что вещь совершенно очевидная, но что если битовую область экранов 0 и 1 замостить «шахматкой». Т.о. можно повысить цветовое разрешение картинки добавив цветовых полутонов. А если бы экраны переключались каждый кадр, то на экран можно 1 поместить такую же «шахматку», но инвертированную и получить, фактически, не сильно моргающий гигаскрин.
Да, в этот раз сначала движок, потом уже стиль под него. Хотя я примерно знаю свои возможности как игрового художника.

Игра расчитана под любой размер монитора/тв, чем больше размер тем дальше отодвигаться надо )
  • avatar TmK
  • 2
Вот это вы сейчас не по правилам сыграли, этож сколько тактов освобождается! Не зря говорят что все гениальное просто :)
Спасибо, всегда интересно почитать статьи из серии how it works и history of making.

Получается ты сначала пробовал накодить движок и уже потом прикидывал стиль игры, графику, геймплей?
Под какой размер монитора/тв расчитана игра?
Проверил, работает )

Вообще я думал про конвертор (всё равно 255 для прозрачности требует в него лезть). Но да, нопы тоже можно пустить в дело, прикольно! :)
Поступило ещё одно шикарное предложение от Monster^Sage, пока ещё не пробовал закодить т.к. по времени плотно, но обязательно попробую и доложусь )

зачем переключать экраны каждые 4 строки? ведь можно это делать каждые 8 строк, по «середине» атрибута ?

MACRO SPRITE_LINE_FAST
pop de : ld a,(hl)
inc e : jp nz,1f
jr 2f
1:
dec e : and b : or e
2:

;17+14+12=43t

inc d : jp nz,1f
jr 2f
1:
dec d : and c : or d
2:
ld (hl),a
;14+12+7=33t
ENDM
; overall: 76t
Круто, спасибо! Правда получается что значение в регистре меняется. Но тут даже два решения, либо в конвертере уменьшить на единичку, либо просто nop ниже заменить на dec!
Можно ещё хранить байты спрайтов -1 вместо как сейчас. Тогда прозрачный пиксел будет 255, и каждую пару inc d: dec d можно заменить на просто inc d, это ещё -8 тактов.
класс! спасибо
про тайлы это я просто не всё рассказал видимо или не так подробно, там я когда делал голова болела уже, а как описывать стал опять заболела ) я попробую расписать, но не обещаю, потому что смотрю в конвертер и туплю )
К сожалению, твой вывод тайла я не понимаю. Если врублюсь, попробую немного подумать о нём тоже…