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

