Скролл в хроносе, я думаю, уже больше не ускоришь; можно, конечно, развернуть цикл чуть больше, но без какой-то суперидеи там сейчас более-менее предел скорости. Newart знал что спрашивал; если придумать как быстро делать rld без rld есть шанс на ускорение. С ходу, таблицами, по-моему не выходит. Именно поэтому скролл в быстрых скроллерах никто собственно скроллом, насколько я знаю, не делает.
А мой вопрос был про второго по величине "слона" в хроносе - код для переброски теневого экрана на основной. Со скроллом это не связано. Теоретический предел такой переброски - около 13 тактов на байт, а схема в хроносе даёт более 16. Т.е. можно сберечь ещё где-то процентов 15% на переброске экрана, что даст дополнительное общее ускорение где-то процента на 3.
3% едва ли стоят возни сами по себе, но быструю переброску, если она по-настоящему быстрая, позволит отрисовать экран до луча (или за лучом), что позволит воткнуть halt и привязать движок хроноса к кадровому прерыванию. Это даст ту же скорость, что была в классической игре с багом, но уберёт мерцание и артефакты.
---------- Post added at 19:46 ---------- Previous post was at 19:37 ----------
Коллизии специально не смотрел, но обыкновенно, общим принципом будет сначала "коробка", а потом, если коробки пересеклись, логическое И, напрямую или по маскам. Кронос, я заметил, делает эти операции в линейном буфере. Труба в нижних 7 строках экрана находится как бы "перед" буфером, корабль может лететь за трубой. Хронос скроллит экран за трубой, я хотел убрать этот скролл, чтобы сберечь тактов, но корабль начал сталкиваться с внешне невидимыми предметами в буфере - очевидно, следами несдвинутых спрайтов.
Наложить корабль по маске тривиально; непонятно, почему авторы это не сделали - у них была свободная память для экрана под кораблём; раз у них нет привязки к прерываниям, у них не было и ограничений по скорости. Но встроить это в движок мне будет нелегко, т.к. я не понимаю как следует порядок отрисовки. Без этого знания можно ткнуться наугад и обломиться.





Ответить с цитированием