testspr=$+4
 
_hgt=16
 
_wid=8 ;width/2
 
        db _wid
 
        db _hgt
 
_=_wid
 
        dup _wid
 
        dup _hgt*2
 
        db (0xaa+$)&0xff
 
        edup
 
_=_-1
 
        if _ != 0
 
        dw 0x4000 - ((_hgt-1)*40)
 
        else
 
        dw 0xffff
 
        endif
 
        edup
 
        dw prsprqwid
 
 
 
BULLETRIGHT=0xc000+(16*2)
 
BULLETLEFT=0xc000+(17*2)
 
 
 
HEROSTANDRIGHT0=0xc000+(22*2)
 
HEROSTANDRIGHT1=0xc000+(23*2)
 
HEROSTANDLEFT0=0xc000+(24*2)
 
HEROSTANDLEFT1=0xc000+(25*2)
 
HERORUNRIGHT0=0xc000+(26*2)
 
HERORUNRIGHT1=0xc000+(27*2)
 
HERORUNRIGHT2=0xc000+(28*2)
 
HERORUNLEFT0=0xc000+(29*2)
 
HERORUNLEFT1=0xc000+(30*2)
 
HERORUNLEFT2=0xc000+(31*2)
 
 
 
heroanim_runright
 
        dw HERORUNRIGHT0
 
        db 4
 
        dw HERORUNRIGHT1
 
        db 4
 
        dw HERORUNRIGHT2
 
        db 4
 
        dw heroanim_runright
 
heroanim_runleft
 
        dw HERORUNLEFT0
 
        db 4
 
        dw HERORUNLEFT1
 
        db 4
 
        dw HERORUNLEFT2
 
        db 4
 
        dw heroanim_runleft
 
heroanim_standright;=heroanim_runright
 
        dw HEROSTANDRIGHT0
 
        db 25
 
        dw HEROSTANDRIGHT1
 
        db 25
 
        dw heroanim_standright
 
heroanim_standleft;=heroanim_runleft
 
        dw HEROSTANDLEFT0
 
        db 25
 
        dw HEROSTANDLEFT1
 
        db 25
 
        dw heroanim_standleft
 
 
 
bulletanim_right
 
        dw BULLETRIGHT
 
        db 50
 
        dw bulletanim_right
 
 
 
bulletanim_left
 
        dw BULLETLEFT
 
        db 50
 
        dw bulletanim_left
 
 
 
        STRUCT obj
 
y16     WORD
 
x16     WORD
 
;sprite16 WORD
 
animtime BYTE
 
animaddr16 WORD
 
xspeed16 WORD
 
yspeed16 WORD
 
health  BYTE
 
flags   BYTE ;b0=on ground, b1=jump not released, b2=blinking, b4=провалиться, b7=dead
 
sz
 
        ENDS
 
 
 
MAXOBJECTS=42
 
MAXBULLETS=8
 
TYPE_HERO=254
 
OBJSIZE=obj.sz
 
 
 
objects
 
;y16 (*8)
 
;x16 (*8) (in double pixels)
 
;animtime
 
;animaddr16
 
;xspeed16
 
;yspeed16
 
;health
 
_=0
 
_x=10
 
        dup 1
 
_y=100
 
        dup 1;  3
 
        
 
        dw 8*_y ;y
 
        dw 8*(_x+(sprmaxwid-1)) ;x
 
        ;dw HERO0
 
        db 1
 
        dw heroanim_standright
 
        dw 1
 
        dw 0
 
        db 100
 
        db 0 ;flags
 
_=_+1
 
_y=_y+40
 
        edup
 
_x=_x+20
 
        edup
 
        dw -1
 
        
 
        ds MAXOBJECTS*OBJSIZE
 
endobjects
 
 
 
bullets
 
        ds MAXBULLETS*OBJSIZE
 
bulletlistend
 
        dw -1