как нарисовать линию?
Не обязательно быструю процедуру.
Можно и вызовом из ПЗУ.
Вроде по адресу CALL 9146 расположена команда DRAW. Но пока не понял, как задать начало линии (PLOT) да и в принципе какими регистрами передаются параметры.
Вид для печати
как нарисовать линию?
Не обязательно быструю процедуру.
Можно и вызовом из ПЗУ.
Вроде по адресу CALL 9146 расположена команда DRAW. Но пока не понял, как задать начало линии (PLOT) да и в принципе какими регистрами передаются параметры.
Как написать игру на ассемблере для 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
По поводу музла.
Может надо push-ами сохранять состояния всех регистров, флагов перед вызовом процедуры плеера.
Или Asm команда пасцаля сама фигачит такой набор?
П.С. с линиями понятно.
А вот с их атрибутами сложновато.
Так и не понял как их изменить. Всё время рисуется чёрный инк, белый пэйпер.
ALKO, в той же книге есть про атрибуты ;-)
Я попробовал вот эту комбинацию прямо перед вызовом рисовалки.
Ничё не поменялось.Цитата:
LD A,70 ;байт атрибутов
LD (23693),A ;помещаем в системную переменную ATTR_P
В принципе, уже не нужно. Я заливку сделал отдельной процедурой.
Да и те линии мне нужны были лишь для менюшки, я её полностью процедурно решил рисовать. Рамки в цикле, заливка тоже.
И текст скейлится. Ещё думаю, может и сам спрайт Алисы отскейлить процедурно вдвое. У Эндрю вроде были процедурки в ZXoom. Или нет, уже не помню.
https://sun9-38.userapi.com/c850424/...zZIQAIJT3I.jpg
- - - Добавлено - - -
Музон пашет, но порой подлагивает, когда обрабатывает перемещения спрайта с клавиатуры.
- - - Добавлено - - -
Может его можно как-то высоко-приоритетными прерываниями синхронизировать?
Таким образом сгладил темп музона. Но оно, естественно, жрёт драгоценные фпс-ы.
Цитата:
MUSPLAY
call 88BDh
call 88BDh
HALT
ret