Код:
MACRO MCreateSprite posX, posY, width, height, pal
db posY&#ff
db (posy/256)+(((height/8)-1)*2)+#20
db posX&#ff
db (posX/256)+(((width/8)-1)*2)
db #00 ;чтото про TNUM
db (pal�f*16)
/*
db low posY ; Y0-7 | 8 bit младшие даные Y координаты (0-255px)
;FLAR S Y8
db %00100000|((height/8)-1)<<1|high posY ; Y8 | 0й бит - старшие данные Y координаты (256px >)
; YS | 1,2,3 бит - высота в блоках по 8 px
; RESERVED | 4й бит - зарезервирован
; ACT | 5й бит - спрайт активен (показывается)
; LEAP | 6й бит - указывает, что данный спрайт последний в текущем слое. (для перехода по слоям)
; YF | 7й бит - указывает, что данный спрайт нужно отобразить зеркально по вертикали
db low posX ; X0-7 | 8 bit младшие даные X координаты (0-255px)
;F R S X8
db %00000000|((width/8)-1)<<1|high posX ; X8 | 0й бит - старшие данные X координаты (256px >)
; XS | 1,2,3 бит - ширина в блоках по 8 px
; RESERVED | 4й бит - зарезервирован
; - | 5,6й бит - не используются
; XF | 7й бит - указывает, что данный спрайт нужно отобразить зеркально по горизонтали
;TNUM
db %00000000 ; TNUM | Номер тайла для левого верхнего угла.
; | 0,1,2,3,4,5й бит - Х координата в битмап
;SPALTNUM ; | 6,7й бит +
db %00000000|(pal<<4) ; TNUM | 0,1,2,3 бит - Y координата в битмап
; SPAL | 4,5,6,7й биты номер палитры (?)
*/
ENDM
Но теперь другая проблема. Мегаумный компилятор округляет 0.1 до 1 //_—