да, такое делалось в некоторых демках и игрушках.Цитата:
Сообщение от axor
но имхо не лучший выход.
тем более что не всегда применимо- допустим если игра не во весь экран, а в "рамочке". там уж атрибуты особо не расставишь
Вид для печати
да, такое делалось в некоторых демках и игрушках.Цитата:
Сообщение от axor
но имхо не лучший выход.
тем более что не всегда применимо- допустим если игра не во весь экран, а в "рамочке". там уж атрибуты особо не расставишь
двойная маска. т.е. к маске которую имеет сам спрайт, добавлять еще одну маску. Если спрайт ширины 2 или 3 байта - вполне эту маску можно перед выводом спрайта грузануть в регистры со штрихом, и там и держать, для небольшого ускорения. Если не нравится замедление - сделать 2 варианта процедуры вывода, вариант с дополнительной маской работает только для спрайтов, которые "выехали" за край. Идея ясна?
Но зато самый простой способ :)Цитата:
Сообщение от Sinus
спрайт фиксированной ширины? если да, то можно написать набор подпроцедур типа:
;если влазит целиком
put_all:
dup N
ldi
edup
inc d
dec e
dup N
ldd
edup
inc d,e
ret
;если не влазит K знакомест справа
put_noK:
dup N-K
ldi
edup
inc d
dec e
dup K+K
inc hl
edup
dup N-K
ldd
edup
inc d,e
dup K+K
inc hl
edup
ret
естесно соптимизировать коррекцию адреса в HL
вывод будет состоять в вызове нужной процедуры.
плюс отсечение невидимых спрайтов. Итого имеем 1 процедуру полного вывода, N процедур для вывода за правым краем и N процедур для вывода за левым краем.
зы: код можно переделать и под маску
acidrain ну во-первых это не я такое решение предложил (кста можно и не в ПЗУ, а в любое свободное место ОЗУ), а во-вторых, если там страничка озу, то надо каким-нибудь битом в каком-нибудь порте запрещать туда запись.
;) или отключалку делать ;)
выход отличный, сам на данный момент держу в голове как вариант. пофиг до рамочки, главное - геймплэй :)Цитата:
Сообщение от Sinus
так это... у тя ж вроде спрайты большие???
или мекие?
если мелкие, то лучше процедурок понаписывать на все случаи жизни.
а если большие, так это какие ж поля надо будет чёрными (читать INK=PAPER) оставлять ???
блин, и правда, торможу после работы :o
А если кинуть безо всяких проверок, а запорченный экран быстро-быстро забить фоном?
1) тормозно
2) проще обрезать спрайт, чем высчитыват где запортился экран
3) тормозно ;)