Вход

Просмотр полной версии : Знакоместо VS пиксель.



ALKO
15.01.2011, 12:11
Нужна асмовская процедура для создания игры,где в два регистра заносятся
попиксельные координаты X,Y и еще в два заносится адрес символа, хранящегося в памяти.

Destr
15.01.2011, 12:24
http://zxdn.narod.ru/coding/zg45spro.txt
Например...

ALKO
15.01.2011, 13:14
Мне маску для спрайтов не обязательно.
Хотя б без неё исходники существуют ?

---------- Post added at 13:53 ---------- Previous post was at 13:47 ----------


http://zxdn.narod.ru/coding/zg45spro.txt
Например...
а где там 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-ти кб.

GM BIT
15.01.2011, 15:17
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

ALKO
17.01.2011, 10:31
Пашет!!!

Antipod
18.01.2011, 02:42
да, все хорошо, по процедуре можно как бы понять распределение адресов по экрану... только работает медленно. Можно и быстрее.
Координаты для Y можно посчитать заранее, например, препроцессор заюзать... таблица адресов займет 192*2 байт, для выборки значение Y умножить на два и взять адрес по полученному смещению. младшие три бита Х - это колво скролов для символа ( + в обратную сторону крутить, если быстрее, то есть вместо 7 скролов влево, лучше 1 вправо ). Но быстрее всего хранить восемь экземпляров одного символа), правда, в этом случае полный знакогенератор займет 2048 байт... Где-то так.

GM BIT
18.01.2011, 07:37
Процедура написана за 3,5 минуты. Нет там никакой оптимизации кроме как лишний раз крутить на одно знакоместо. Кстати ниже нижней строки желательно тоже ничего не печатать (нет там проверок на окончание экранной области) :)

Можно и быстрее.
Конечно можно! Много можно сделать (например сократить размер до нельзя или увеличить скорость во много раз). Есть задача - есть решение (какое никакое).
Где-то так.
Кстати процедура расчета адреса из ПЗУ, можно заменить просто на CALL, где она там болтается искать не стал

psb
18.01.2011, 09:30
где она там болтается искать не стал
8880