?login_element?

Subversion Repositories NedoOS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1. GO
  2.         ld sp,STACK
  3.         OS_HIDEFROMPARENT
  4.  
  5.         ld e,0|0x80 ;keep screen
  6.         OS_SETGFX ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode)
  7.         ld e,0
  8.         OS_SETSCREEN
  9.         ld e,0 ;color byte
  10.         OS_CLS
  11.         ld e,1
  12.         OS_SETSCREEN
  13.         ld e,0 ;color byte
  14.         OS_CLS
  15.        
  16.         OS_GETMAINPAGES
  17. ;dehl=номера страниц в 0000,4000,8000,c000
  18.         ld a,e
  19.         LD (pgmain4000),A
  20.         ld a,h
  21.         LD (pgmain8000),A
  22.         call setpgsmain40008000 ;записать в curpg...
  23.  
  24.         OS_NEWPAGE
  25.         ld a,e
  26.         ld (pgfake),a ;эту страницу можно будет запарывать при отрисовке спрайтов с клипированием
  27.         ld (pgfake2),a
  28.        
  29.         ld de,res_path
  30.         OS_CHDIR
  31.  
  32.         call getmousedelta ;prepare mouse
  33.  
  34.         ld hl,texfilename
  35.         ;call loadpage
  36.         ;ld (pg0),a
  37.         call loadpage
  38.         ld (pg1),a
  39.         call loadpage
  40.         ld (pgsfx),a
  41.         call loadpage
  42.         ld (pgmusic),a
  43.         SETPG16K
  44.        
  45. ;это относится к загрузке уровня
  46.         push af
  47.         call 0x4000 ;init
  48.        
  49.         ld a,(pgsfx)
  50.         SETPG32KLOW
  51.         pop af
  52.         ld hl,0x4005 ;play
  53.         OS_SETMUSIC
  54.         call setpgsmain40008000
  55.        
  56.         ld hl,prsprqwid
  57.         ld (0x0101),hl ;спрайты в файле подготовлены так, что выходят в 0x0100
  58.      
  59.         call swapimer
  60.  
  61. ;UV scroll
  62.         call uvscroll_prepare
  63.         ;ld de,bgxyfilename
  64.         ;call uvscroll_preparebmp
  65.          call uvscroll_preparetiles
  66. ;TODO обновить allscroll
  67. ;allscroll=yscroll*(UVSCROLL_WID/512)+xscroll
  68.         ld hl,-160 ;top left
  69.         ld (cameraym),hl
  70.         ld (cameraymideal),hl
  71.         ld (cameraymold),hl
  72.         ld de,1024-160 ;top left
  73.         add hl,de
  74.         ld (yscroll),hl
  75.        
  76.         ld hl,-160 ;top left
  77.         ld (cameraxm),hl
  78.         ld (cameraxmideal),hl
  79.         ld (cameraxmold),hl
  80.         ld de,2048-160 ;top left
  81.         add hl,de
  82.         ld (x2scroll),hl
  83.  
  84.          call uvscroll_preparetilemap
  85.  
  86.         call importcoords
  87.         ld iy,bullets
  88.         call genbullet_terminate
  89.  
  90.         ld de,pal
  91.         OS_SETPAL
  92.         jp mainloop_uv0
  93.  
  94. importcoords
  95.         ld de,enemymapfilename
  96.         OS_OPENHANDLE
  97.         ld de,objects
  98.         ld hl,MAXOBJECTS*3
  99.         push bc
  100.         OS_READHANDLE
  101.         pop bc
  102.         push hl ;size
  103.         OS_CLOSEHANDLE
  104.         pop bc
  105. ;bc=size
  106.         ld hl,objects-1
  107.         add hl,bc
  108.         ld de,endobjects-1
  109.         push bc
  110.         lddr
  111.         pop bc
  112.         inc de
  113.         ex de,hl ;hl=начало данных: type, x, y
  114.         ld ix,objects+OBJSIZE ;героя перебросим отдельно
  115. importcoords0        
  116.         ld a,(hl) ;type
  117.         cp TYPE_HERO
  118.         jr nz,importcoords_nhero
  119.         push ix
  120.         ld ix,objects
  121.         ld de,heroanim_standright
  122.         ld (ix+obj.animaddr16),e
  123.         ld (ix+obj.animaddr16+1),d
  124.         ld (ix+obj.animtime),1
  125.         ld (ix+obj.health),100
  126.         call fillobjxy
  127.         pop ix
  128.         jr importcoords_nheroq
  129. importcoords_nhero
  130.         ;TODO anim from type
  131.         ld de,heroanim_runright
  132.         ld (ix+obj.animaddr16),e
  133.         ld (ix+obj.animaddr16+1),d
  134.         ld (ix+obj.animtime),1
  135.         ;TODO health from type
  136.         ld (ix+obj.health),19
  137.         call fillobjxy
  138.         ld de,OBJSIZE
  139.         add ix,de
  140. importcoords_nheroq
  141.         inc hl
  142.         dec bc
  143.         dec bc
  144.         dec bc
  145.         ld a,b
  146.         or c
  147.         jr nz,importcoords0
  148.         ld (ix),0xff
  149.         ld (ix+1),0xff
  150.         ret
  151.  
  152. fillobjxy
  153. ;hl=указатель на type, x, y
  154. ;ix=obj
  155.         inc hl
  156.         ld a,(hl)
  157.         add a,3
  158.         ld d,0
  159.         dup 3+3
  160.         add a,a
  161.         rl d
  162.         edup
  163.         ld e,a
  164.         ld (ix+obj.x16),e
  165.         ld (ix+obj.x16+1),d
  166.         inc hl
  167.         ld a,(hl)
  168.         ld d,0
  169.         dup 4+3
  170.         add a,a
  171.         rl d
  172.         edup
  173.         ld e,a
  174.         ld (ix+obj.y16),e
  175.         ld (ix+obj.y16+1),d
  176.         xor a
  177.         ld (ix+obj.xspeed16),a
  178.         ld (ix+obj.xspeed16+1),a
  179.         ld (ix+obj.yspeed16),a
  180.         ld (ix+obj.yspeed16+1),a
  181.         ld (ix+obj.flags),a
  182.         ret
  183.  
  184. texfilename
  185.         ;db "WBAR.bin",0
  186.         db "WHUM1.bin",0
  187.         db "sfx.bin",0
  188.         db "music.bin",0
  189.