Нужна асмовская процедура для создания игры,где в два регистра заносятся
попиксельные координаты X,Y и еще в два заносится адрес символа, хранящегося в памяти.
Нужна асмовская процедура для создания игры,где в два регистра заносятся
попиксельные координаты X,Y и еще в два заносится адрес символа, хранящегося в памяти.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
http://zxdn.narod.ru/coding/zg45spro.txt
Например...
Мне маску для спрайтов не обязательно.
Хотя б без неё исходники существуют ?
---------- Post added at 13:53 ---------- Previous post was at 13:47 ----------
а где там Y объявляется?
---------- Post added at 14:11 ---------- Previous post was at 13:53 ----------
Эта штука работает?
http://zxpress.ru/article.php?id=4803
---------- Post added at 14:14 ---------- Previous post was at 14:11 ----------
Дьявол!!!!
Она использует буферный экран,это потеря 6-ти кб.
ld e,10 ;y
ld d,10 ;x
ld hl,#3e08 ;adr sym "a"
ld (symv+1),hl
call print
ret
print ld a,d
and 7
ld (n1+1),a
ld a,e
and a
rra
scf
rra
and a
rra
xor e
and #f8
xor e
ld h,a
ld a,d
rlca
rlca
rlca
xor e
and #c7
xor e
rlca
rlca
ld l,a
symv ld de,0
ld a,8
nnn2 ex af,af'
ld c,0
n1 ld a,0
ld b,a
or a
ld a,(de)
jr z,nnn
srl a
rr c
djnz $-4
nnn ld (hl),a
inc l
ld (hl),c
dec l
inc de
call down_hl
ex af,af'
dec a
jr nz,nnn2
ret
down_hl inc h
ld a,h
and 7
ret nz
ld a,l
add a,32
ld l,a
ret c
ld a,h
sub 8
ld h,a
ret
Пашет!!!
да, все хорошо, по процедуре можно как бы понять распределение адресов по экрану... только работает медленно. Можно и быстрее.
Координаты для Y можно посчитать заранее, например, препроцессор заюзать... таблица адресов займет 192*2 байт, для выборки значение Y умножить на два и взять адрес по полученному смещению. младшие три бита Х - это колво скролов для символа ( + в обратную сторону крутить, если быстрее, то есть вместо 7 скролов влево, лучше 1 вправо ). Но быстрее всего хранить восемь экземпляров одного символа), правда, в этом случае полный знакогенератор займет 2048 байт... Где-то так.
Последний раз редактировалось Antipod; 18.01.2011 в 02:45.
Процедура написана за 3,5 минуты. Нет там никакой оптимизации кроме как лишний раз крутить на одно знакоместо. Кстати ниже нижней строки желательно тоже ничего не печатать (нет там проверок на окончание экранной области)
Конечно можно! Много можно сделать (например сократить размер до нельзя или увеличить скорость во много раз). Есть задача - есть решение (какое никакое).
Где-то так.
Кстати процедура расчета адреса из ПЗУ, можно заменить просто на CALL, где она там болтается искать не стал
Последний раз редактировалось GM BIT; 18.01.2011 в 07:57.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)