как нарисовать линию?
Не обязательно быструю процедуру.
Можно и вызовом из ПЗУ.
Вроде по адресу CALL 9146 расположена команда DRAW. Но пока не понял, как задать начало линии (PLOT) да и в принципе какими регистрами передаются параметры.
как нарисовать линию?
Не обязательно быструю процедуру.
Можно и вызовом из ПЗУ.
Вроде по адресу CALL 9146 расположена команда DRAW. Но пока не понял, как задать начало линии (PLOT) да и в принципе какими регистрами передаются параметры.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Как написать игру на ассемблере для ZX Spectrum
Прямые линии
Продвинемся еще на один шаг вперед и научимся проводить прямые линии. Для этого потребуется сперва указать начальные координаты, поставив точку, от которой протянется линия, а затем задать величины смещения по горизонтали и вертикали до конечной точки линии. В Бейсике это должно выглядеть примерно так:
PLOT 120,80: DRAW 35,-60
Оператор DRAW реализует подпрограмма ПЗУ, находящаяся по адресу 9402. Перед обращением к ней в регистры C и B необходимо последовательно занести значения параметров, взятые по абсолютной величине, то есть в C в нашем примере помещается число 35, а в B нужно загрузить не -60, а 60. Но чтобы не потерять знаки, их следует разместить на регистрах E и D. Это значит, что в регистр E заносится единица, а в D - минус единица (или, что то же самое, 255). Таким образом, приведенная выше строка Бейсика на ассемблере запишется так:
Код:LD BC,#5078 ;C = 120 (#78), B = 80 (#50) CALL 8933 LD BC,#3C23 ;C = 35 (#23), B = 60 (#3C) LD DE,#FF01 ;E = 1 (#01), D = -1 = 255 (#FF) CALL 9402 RET
Последний раз редактировалось Reobne; 20.10.2019 в 07:26.
ALKO(20.10.2019)
По поводу музла.
Может надо push-ами сохранять состояния всех регистров, флагов перед вызовом процедуры плеера.
Или Asm команда пасцаля сама фигачит такой набор?
П.С. с линиями понятно.
А вот с их атрибутами сложновато.
Так и не понял как их изменить. Всё время рисуется чёрный инк, белый пэйпер.
Последний раз редактировалось ALKO; 20.10.2019 в 17:58.
ALKO, в той же книге есть про атрибуты ;-)
___________
Я попробовал вот эту комбинацию прямо перед вызовом рисовалки.
Ничё не поменялось.LD A,70 ;байт атрибутов
LD (23693),A ;помещаем в системную переменную ATTR_P
Последний раз редактировалось ALKO; 20.10.2019 в 18:19.
В принципе, уже не нужно. Я заливку сделал отдельной процедурой.
Да и те линии мне нужны были лишь для менюшки, я её полностью процедурно решил рисовать. Рамки в цикле, заливка тоже.
И текст скейлится. Ещё думаю, может и сам спрайт Алисы отскейлить процедурно вдвое. У Эндрю вроде были процедурки в ZXoom. Или нет, уже не помню.
- - - Добавлено - - -
Музон пашет, но порой подлагивает, когда обрабатывает перемещения спрайта с клавиатуры.
- - - Добавлено - - -
Может его можно как-то высоко-приоритетными прерываниями синхронизировать?
Последний раз редактировалось ALKO; 21.10.2019 в 00:24.
Andrew771(21.10.2019)
Таким образом сгладил темп музона. Но оно, естественно, жрёт драгоценные фпс-ы.
MUSPLAY
call 88BDh
call 88BDh
HALT
ret
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)