GO
 
        ld sp,STACK
 
        OS_HIDEFROMPARENT
 
 
 
        ld e,0|0x80 ;keep screen
 
        OS_SETGFX ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode)
 
        ld e,0
 
        OS_SETSCREEN
 
        ld e,0 ;color byte
 
        OS_CLS
 
        ld e,1
 
        OS_SETSCREEN
 
        ld e,0 ;color byte
 
        OS_CLS
 
        
 
        OS_GETMAINPAGES
 
;dehl=номера страниц в 0000,4000,8000,c000
 
        ld a,e
 
        LD (pgmain4000),A
 
        ld a,h
 
        LD (pgmain8000),A
 
        call setpgsmain40008000 ;записать в curpg...
 
 
 
        OS_NEWPAGE
 
        ld a,e
 
        ld (pgfake),a ;эту страницу можно будет запарывать при отрисовке спрайтов с клипированием
 
        ld (pgfake2),a
 
        
 
        ld de,res_path
 
        OS_CHDIR
 
 
 
        call getmousedelta ;prepare mouse
 
 
 
        ld hl,texfilename
 
        ;call loadpage
 
        ;ld (pg0),a
 
        call loadpage
 
        ld (pg1),a
 
        call loadpage
 
        ld (pgsfx),a
 
        call loadpage
 
        ld (pgmusic),a
 
        SETPG4000
 
        
 
;это относится к загрузке уровня
 
        push af
 
        call 0x4000 ;init
 
        
 
        ld a,(pgsfx)
 
        SETPG8000
 
        pop af
 
        ld hl,0x4005 ;play
 
        OS_SETMUSIC
 
        call setpgsmain40008000
 
        
 
        ld hl,prsprqwid
 
        ld (0x0101),hl ;спрайты в файле подготовлены так, что выходят в 0x0100
 
      
 
        call swapimer
 
 
 
;UV scroll
 
        call uvscroll_prepare
 
        ;ld de,bgxyfilename
 
        ;call uvscroll_preparebmp
 
         call uvscroll_preparetiles
 
;TODO обновить allscroll
 
;allscroll=yscroll*(UVSCROLL_WID/512)+xscroll
 
        ld hl,-160 ;top left
 
        ld (cameraym),hl
 
        ld (cameraymideal),hl
 
        ld (cameraymold),hl
 
        ld de,1024-160 ;top left
 
        add hl,de
 
        ld (yscroll),hl
 
        
 
        ld hl,-160 ;top left
 
        ld (cameraxm),hl
 
        ld (cameraxmideal),hl
 
        ld (cameraxmold),hl
 
        ld de,2048-160 ;top left
 
        add hl,de
 
        ld (x2scroll),hl
 
 
 
         call uvscroll_preparetilemap
 
 
 
        call importcoords
 
        ld iy,bullets
 
        call genbullet_terminate
 
 
 
        ld de,pal
 
        OS_SETPAL
 
        jp mainloop_uv0
 
 
 
importcoords
 
        ld de,enemymapfilename
 
        OS_OPENHANDLE
 
        ld de,objects
 
        ld hl,MAXOBJECTS*3
 
        push bc
 
        OS_READHANDLE
 
        pop bc
 
        push hl ;size
 
        OS_CLOSEHANDLE
 
        pop bc
 
;bc=size
 
        ld hl,objects-1
 
        add hl,bc
 
        ld de,endobjects-1
 
        push bc
 
        lddr
 
        pop bc
 
        inc de
 
        ex de,hl ;hl=начало данных: type, x, y
 
        ld ix,objects+OBJSIZE ;героя перебросим отдельно
 
importcoords0        
 
        ld a,(hl) ;type
 
        cp TYPE_HERO
 
        jr nz,importcoords_nhero
 
        push ix
 
        ld ix,objects
 
        ld de,heroanim_standright
 
        ld (ix+obj.animaddr16),e
 
        ld (ix+obj.animaddr16+1),d
 
        ld (ix+obj.animtime),1
 
        ld (ix+obj.health),100
 
        call fillobjxy
 
        pop ix
 
        jr importcoords_nheroq
 
importcoords_nhero
 
        ;TODO anim from type
 
        ld de,heroanim_runright
 
        ld (ix+obj.animaddr16),e
 
        ld (ix+obj.animaddr16+1),d
 
        ld (ix+obj.animtime),1
 
        ;TODO health from type
 
        ld (ix+obj.health),19
 
        call fillobjxy
 
        ld de,OBJSIZE
 
        add ix,de
 
importcoords_nheroq
 
        inc hl
 
        dec bc
 
        dec bc
 
        dec bc
 
        ld a,b
 
        or c
 
        jr nz,importcoords0
 
        ld (ix),0xff
 
        ld (ix+1),0xff
 
        ret
 
 
 
fillobjxy
 
;hl=указатель на type, x, y
 
;ix=obj
 
        inc hl
 
        ld a,(hl)
 
        add a,3
 
        ld d,0
 
        dup 3+3
 
        add a,a
 
        rl d
 
        edup
 
        ld e,a
 
        ld (ix+obj.x16),e
 
        ld (ix+obj.x16+1),d
 
        inc hl
 
        ld a,(hl)
 
        ld d,0
 
        dup 4+3
 
        add a,a
 
        rl d
 
        edup
 
        ld e,a
 
        ld (ix+obj.y16),e
 
        ld (ix+obj.y16+1),d
 
        xor a
 
        ld (ix+obj.xspeed16),a
 
        ld (ix+obj.xspeed16+1),a
 
        ld (ix+obj.yspeed16),a
 
        ld (ix+obj.yspeed16+1),a
 
        ld (ix+obj.flags),a
 
        ret
 
 
 
texfilename
 
        ;db "WBAR.bin",0
 
        db "WHUM1.bin",0
 
        db "sfx.bin",0
 
        db "music.bin",0