Да, но сколько драгоценной памяти уйдёт под таблицы? :)
Вид для печати
Я смотрю, достойный вариант получился.
Вот накидал ещё вариант без регистра C.
Код:LD A,H ; 4
AND #38 ; 7
RLCA ; 4
RLCA ; 4
SRL L ; 8
SRL L ; 8
SRL L ; 8
OR L ; 4
LD L,A ; 4
LD A,H ; 4
AND #C0 ; 7
RRA ; 4
SCF ; 4
RRA ; 4
RRCA ; 4
XOR H ; 4
AND #F8 ; 7
XOR H ; 4
LD H,A ; 4
; 97t
Интересно, а существуют конкурсы по демкам до 20-ти байт :) (шутка)
Написал такую вот фигнюшку (просто колбасит экран, типа "ТВ-статика") никакого преимущества в ней нету, просто после того как написал обычным способом (LD HL,xxx DE,yyy) решил допилить до какого-то другого вида (сначала компактно хотел сделать, потом передумал и захотел избавиться от непечатных кодов, правда так и не получилось, по этому увы в таком виде её в REM увы не вставить без последствий, и я ещё начал так или иначе извращаться) короче мутузил-мутузил и вот что получилось...
Код:XOR A
LD C,A
LD E,A
LD H,#18
S1 LD B,H
LD H,E
LD D,#40
LD L,A
ADD A
ADD A
ADD L
INC A
LDIR
JR S1
Update
А вот и версия для встраивания в бейсик REM подоспела (выкладываю скрином, ибо там нет ни одного непечатного символа или пробела, можно вбивать прямо в бейсике и всё заработает) :)
Update #4
Вот версия получше, вообще всё чисто, даже курсор G используется только на цифрах
Vladson, прилепляйте sna что-ли, а то компилить не всегда с руки...
У вас эмулятор какой ? (я пользуюсь EmuZWin и там это делается дай боже в 3 клика)
Sprite collision
;__________________
есть 2 прямоугольника
их координаты
DE ху верхний левый угол
BC ху нижний правый угол
сначала HL хх координаты
потом HL yy координаты
кто подскажет быструю процедуру определения пересечения этих объектов?
Если подходить разумно, без табличек =), то в 2D для AABB
collision = (1.left<2.right) and (1.top<2.bottom) and (2.left<1.right) and (2.top<1.bottom);
А для быстродействия учесть в JR, что столкновения реже случаются, чем нет. В лоб как-то так, потому что сохранение результатов подусловий и последствующий AND будет скорее всего тормознее.
вроде работаетКод:collision_jean
;de left up corner
;bc right down corner
ld hl,(jean_xx) ;х координата левого края и правого края
;d b
ld a,b
cp h
jr c,no_coll0 ;too left
ld a,d
cp l
jr nc,no_coll0 ;too right
;left or between
no_coll1
ld hl,(jean_yy) ;у координата верха и низа.
;e c
ld a,c
cp h
jr c,no_coll0 ;too high
ld a,e
cp l
jr nc,no_coll0 ;too down
jp (ix)
;no collision_jean
no_coll0
or a
jp (ix)
как то так, может кому пригодится