zst, Память, говоришь, ориентируешься на 4Мх16Бит? Это на одной микросхеме, или на нескольких(для одновременного доступа по произвольным адресам) и сколько обращений на 1 пиксель? Примерно.
zst, Память, говоришь, ориентируешься на 4Мх16Бит? Это на одной микросхеме, или на нескольких(для одновременного доступа по произвольным адресам) и сколько обращений на 1 пиксель? Примерно.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
вот вот и я о том же.Почему то никто не переделывает ay плееры под TSFM или General Sound, а просто прикрепляют новый с новыми мелодиями и эффектами, тут абсолютно тоже самое.
там два примера было.в первом типа если бы Акселя не было, тогда координату Y ручками +1 и кидаем в порт. во втором примере там вертикальная операция акселя по примеру спринтера. при этом ld a,(hl) ld (de),a делать нужно именно на спринтере, т.к. Альтера там перехватывает опкоды проца. Альтера видит, что было вкелючения Акселя (ld d,d), кинули размер данных, включили режим вертикального переброса и дали каману выполнить. команда выполнить. источник данных это через перехват каманды ld a,(hl) или ей подобной, а адрес куда кидать через перехват ld (de),a или аналогичную каманду. когда аксель увидел все каманды, он их начинает выполнять. в результате за одну каманду мы можем кинуть не 1 байт, а сразу 256 байт. и в отличии от ТС тут нет привязок к чётности.зачем тогда кидать данные в (de) и их же +1 в порт #89 ?
Я имел ввиду 2 буфера по 256 байт ( а не к) для двух восьмипиксельных строк, один буфер пишем, другой выводим.
Сколько мегагерц процессора, это другой вопрос. А сколько мегагерц обращения к памяти, и блокируется-ли процессор, при обращении к памяти, системы видеовывода, это первый вопрос.
Я о том что экран столбиком и "железячникам" и программистам знаком, а в том что в 2раза более слабый процессор рисует на в 2 раза более емком экране, уже о многом говорит
Жаль что zst свалился в не особо нужный (или точно уж второстепенный) клэшинг.
И отшел от простого и привычного блиттера.
Но видимо чел занимается тем что интересно.
Спрайты/шейдеры автор не потянет, он изначально говорил.
Последний раз редактировалось Valen; 02.09.2015 в 14:30.
V6Z80P - Back for Good
Недавно где-то пролетала ссылка на статью lvd по этому поводу. Опять дело было в экономии - Синклер пытался выжать максимальную скорость из медленной и дешевой памяти, которая не позволяла с нужной скоростью читать при линейной адресации, но позволяла при такой вот. Там, вроде, при чтении байта растра и байта атрибута не меняется кто-то из RAS или CAS, не помню тонкостей.Вот это большой вопрос, ибо сделать раздельный BRIGHT для INK и PAPER было бы не сложнее аппаратно, а курсором можно было бы поморгать и в ISR.С этого момента дружно забываем домыслы про вертикально ориентированные биты в байте и понимаем такую вещь: адрес вывода обычного горизонтального байта на экран равен x * 32 + y (x в знакоместах, y в пикселах). Все. Если в hl адрес байта, то переход к той же линии в соседнем знакоместе - inc h, переход к следующей линии в том же (или следующем снизу) знакоместе - inc l.
Тред читать надо. Вывод символа на слой фона с координатами (X, Y):
Выигрыш в скорости очевиден. С выводом точки все тоже волшебно получится, ибо младший байт - Y-кордината безо всяких пересчетов. Порты для Y резко проигрывают на старте Поехали дальше. Если тайлы спрайта расположить по столбцам, то вывод одного столбца - просто ldir (если спрайт монохромный).Код:; hl - адрес символа ld de, x * 256 + y * 8 dup 8 ldi edup
Еще одна фишка: вывод знакоместа спрайта с маской без клешинга:
Пока все это ускоряет вывод графики. Например, наличие слоев позволит не сохранять статический фон и передний план и не восстанавливать его потом. Тоже неплохо, правда?Код:; hl - адрес символа ld de, x * 256 + y * 8 dup 8 ldi dec e ldi edup
Это все уже сделал TSL. Нужна еще одна реинкарнация? Вот, кстати, для этого случая переделка игры скорее всего потребует полного проворота через мясорубку обратно, ибо спрайтовая графика будет толще (не влезет в тот объем памяти, под который заточена игра), а вывод на экран надо будет перепахать от слова "совсем". А с Метеором же можно, кстати, переделывать игру можно в 2 этапа: сначала разогнать и обесклешить, не переделывая графику совсем (!), потом уже перекрасить под большее количество цветов (а rgb-палитра позволит перекрасить игру способом наподобие ULA+) даже без изменения чего-то в ней.
Победа клештнга - одна из приятных фич.
А кому он прост и привычен? Много у тебя игр получится переделать с пол-пинка под обычный блиттер без извратов?
Открою секрет, каждый аппаратный спрайт это отдельные слой
Можно сгруппировать как 2 слоя, а можно как 10, зависит от того сколько спрайтов одновременно может вывести движок
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)