Цитата Сообщение от ivagor Посмотреть сообщение
Очевидное (тупое) решение - запретить прерывания на время задания стека на исходник спрайта (в КД), т.е. EI будет перед первым POP читающим данные спрайта. Наверно можно как-то изящнее[COLOR="Silver"]
Тогда приходим к тому, с чем боремся - по паре di/ei на вывод тайла
На самом деле, я сейчас поглядел на код, и вижу, что при запрещённых прерываниях, можно выкинуть переключения квазидиска туда-сюда на выводе каждого тайла. Там вся бодяга из-за каких-то 2х пар push/pop во внешнем цикле вывода во вьюпорт. На стеке хранится начало тайлмапа и координата тайла в видео ОЗУ. Само переключение - это 40 тактов, плюс push/pop дважды - ещё 48 (на Векторе). Итого 88. Можно в 68 всё уложить, если использовать ячейки памяти. Это 20 тактов экономии на тайл. Но всяко с запрещёнными прерываниями.

Цитата Сообщение от ivagor Посмотреть сообщение
Кстати, с адаптером z80 Фролова спековский вариант можно использовать практически дословно, т.к. он может читать из КД через ld r,(hl)
Тогда надо иметь 2 рендерера и определять, какой адаптер квазидиска установлен. Совместимость со "стандартным" Кишинёвским адаптером я терять не хочу. В общем-то, такое обдумывалось.
Цитата Сообщение от ivagor Посмотреть сообщение
Или так: при старте уровня "закешировать" в основном озу по 2 первых байта из всех актуальных для уровня спрайтов
Кстати не такая уж и плохая идея на самом деле. Изящно. Может получиться. Правда, "актуальных для уровня спрайтов" там 512 только для тайлов (задний и передний планы уровня) плюс спрайты. Легко пара килобайт выходит.