
Сообщение от
s_kosorev
так не бывает, рисовать можно на экране 4 способами
1. Процессором хоста
2. Спрайтовый движок
3. Блиттер
4. Процессор в видеокарте (шейдер)
Теперь, речь идет о ускорении, при этом последние 3 варианта исключаются, каким образом достигается ускорение? Объем данных увеличивается и при этом процессор хоста одновременно быстрее рисует? ну так не бывает.
Ускорение при переделке старых игр достигается за счет таких улучшений:
- Аппаратное наложение маски при рисовании спрайта.
- Рисование тайлов и спрайтов в разных слоях без перерисовки фона.
- Линейная адресация с адреса 0000 без деления экрана на секторы. А это ускорение вычисления адреса и возможность рисования спрайта более быстро другими командами.
- Один байт атрибутов вместо 768, что экономит время на вычислении адреса атрибута.
- Возможность освободить старую экранную область для оптимизации других задач.
Объем данных не увеличивается. В большинстве игр на каждый байт пикселей итак есть байт маски.
Пример копирования спрайта с маской для стандартного режима (40*8=320 такта):
Код:
; hl - адрес спрайта с маской
; de - адрес в области пикселей экрана
dup 8
ld a,(de)
and (hl)
inc l
or (hl)
inc l
ld (de),a
inc d
edup
Пример копирования спрайта с маской для нового режима с линейной адресацией с адреса 0000 (36*8=288 тактов):
Код:
; hl - адрес спрайта с маской
; de - адрес в области пикселей экрана
dup 8
ldi
dec e
ldi
edup
Пример копирования спрайта с маской для стандартного режима с использованием стека (36*8=288)
Код:
; стек - адрес спрайта с маской
; hl - адрес в области пикселей экрана
dup 8
pop de
ld a,(hl)
and e
or d
ld (hl),a
inc h
edup
Пример копирования спрайта с маской для нового режима с линейной адресацией с адреса 0000 с использованием стека (28*8=224 тактов):
Код:
; стек - адрес спрайта с маской
; hl - адрес в области пикселей экрана
dup 8
pop de
ld (hl), e
ld (hl), d
inc l
edup

Сообщение от
s_kosorev
Мне кажется Alex_Rider не понимает принципа действия карты, который как мне кажется еще и zst не понимает
Вам виднее...