Login

Subversion Repositories NedoOS

Rev

Rev 749 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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