breeze, больше похоже на проблему компиляции собственно команд. Не приведёшь сам макрос, не весь, а те строки, где ты используешь параметры?
Вид для печати
breeze,
у тебя внутри макроса стоит DB
а передаешь ты ему word (255+)
других вариантов не бывает
код покажи.
introspec, вместо Byte ты передаешь Word
все остальное от лукавого
Да, вы немного угадали :) макрос строит структуру db, но…
возможно я не так понял как пользоваться low/high ?Код:MACRO MCreateSprite posX, posY, width, height, pal
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
---------- Post added at 17:46 ---------- Previous post was at 17:27 ----------
короче дело было в этих странных low/high, заменил на posX%255 и (posX/256) и всё ок стало.
Но теперь другая проблема. Мегаумный компилятор округляет 0.1 до 1 //_—
эээ… что-то не совсем понял. В первых здесь собираются биты и они означают разные статусы, и кроме того в low я уже заворачивал. Собственно с этого я и начал — вылетает «error: Bytes lost».
По сути мне нужен какой-то операнд, который скажет sjasm'u? что 0.1 это всё-таки 0, а не 1. Тобишь активировать округление в меньшую сторону.
introspec, видишь я был прав :)