Да, спасибо больше. Я так и собираюсь делать. И еще много будет всяких оптимизаций. Например замена JMP, который переходит на JMP. Замена PUSH H, POP H на XCHG, XCHG. Поиск одинаковых фрагментов кода и вынесение из в функцию.
Но пока я делаю страшную вещь... Прошлая версия компилятора собирала любую команду в три этапа: загрузка первого аргумента в HL, загрузка второго аргумента в DE, работа с регистрами. Этот подход работает, но код не оптимален и сложно поддается оптимизации.
Например ushort &= register uchar*
;oSAnd pConstStrRef16 pBCRef8
ld a, (bc)
ld e, c
ld d, 0
ld hl, (name1)
ld a, l
and e
ld l, a
ld a, h
and d
ld h, a
ld (name1), hl
Я объединил эти три действия в одно и получил под тысячу вариантов команд. И сейчас сижу описываю более оптимальные варианты
ld hl, name1
ld a, (bc)
and (hl)
ld (hl), a
inc hl
ld (hl), 0
---------- Post added at 23:11 ---------- Previous post was at 22:58 ----------
Алгоритм отрисовки неправильный выбран. Но это потому что эта игра перенесена в JS. При перемещении спрайтов надо просто закрашивать лишнее черным не перерисовывая всю карту.





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