?login_element?

Subversion Repositories NedoOS

Rev

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

  1. ;процедуры для рисования в карту, нижнего уровня (зависят от типа экрана)
  2.  
  3. Pr2CharsInMap
  4. ;a'=char1
  5. ;a=char2
  6. ;hl'=map+
  7.          EXX
  8.          PUSH HL
  9.          ld de,MAPWID
  10.          EXX
  11.         push bc
  12.         PUSH HL
  13.         LD D,FONT/2/256
  14.         LD H,D
  15.         SUB 32
  16.         RLA
  17.         RLA
  18.         LD L,A
  19.         ADD HL,HL
  20.         ex af,af' ;'
  21.         SUB 32
  22.         RLA
  23.         RLA
  24.         RLA
  25.         LD E,A
  26.         RL D
  27.         LD B,7
  28. SPRINT0 LD A,(DE)
  29.         INC E
  30.         RLCA
  31.         RLCA
  32.         RLCA
  33.         RLCA
  34.         OR (HL)
  35.         INC L
  36.         EXX
  37.         XOR (HL)
  38.         LD (HL),A
  39.         ADD HL,DE
  40.         EXX
  41.         DJNZ SPRINT0
  42.         POP HL
  43.         POP bc
  44.          EXX
  45.          pop HL
  46.          inc hl
  47.          EXX
  48.         RET
  49.  
  50. SetXYInMap
  51. ;b=y
  52. ;c=x/4
  53. ;hl=NAMES+ (по нему /(4*12) можно вычислить номер команды и найти цвет)
  54.          push bc
  55.          exx
  56.          pop bc
  57.         LD H,TMAPLN/256
  58.         LD L,B
  59.         LD A,(HL)
  60.         INC H
  61.         LD H,(HL)
  62.          srl c
  63.         ADD A,C
  64.         LD L,A
  65.         JR NC,$+3
  66.         INC H
  67.          exx
  68.         ret
  69.  
  70. DrawWormInMap ;TODO и в маску?
  71. ;de=x in pixels
  72. ;l=y
  73. ;bc=gfx
  74.         ld a,e ;x
  75.         and 7
  76.         ld (DrawWormInMap_jr),a
  77.         LD H,TMAPLN/256
  78.         ld a,e ;x
  79.         srl d
  80.         rra
  81.         srl d
  82.         rra
  83.         srl d
  84.         rra
  85.         add a,(hl)
  86.         ld e,a
  87.         inc h
  88.         adc a,(hl)
  89.         sub e
  90.         ld d,a
  91. DrawWormInMap0
  92.         ld a,(bc)
  93.         ld l,a
  94.         ld h,0
  95. DrawWormInMap_jr=$+1
  96.         jr $
  97.         dup 7
  98.         add hl,hl
  99.         edup
  100.         ld a,(de)
  101.         xor h
  102.         ld (de),a
  103.         inc de
  104.         ld a,(de)
  105.         xor l
  106.         ld (de),a
  107.         ld a,e
  108.         add a,MAPWID-1
  109.         ld e,a
  110.         jr nc,$+3
  111.         inc d
  112.         inc c
  113.         ld a,c
  114.         and 7
  115.         jr nz,DrawWormInMap0
  116.         ret
  117.  
  118. PrepareXorPixInMap
  119.         push bc
  120.         LD A,PGMAP;16
  121.         CALL OUTME
  122.         pop bc
  123.         ret
  124.  
  125. XorPixInMap
  126. ;e=y (от верхнего края TERRAIN)
  127. ;bc=x
  128.         LD A,e
  129.        add a,MAPHGT-TERRAINHGT
  130.         SUB TERRAINHGT;MAPHGT
  131.         RET NC
  132.        PUSH BC
  133.        PUSH HL
  134.         LD H,TMAPLN/256
  135.         LD L,A
  136.         LD A,C ;xlow
  137.         AND 0xf8
  138.         ADD A,b ;xhigh
  139.         RRCA
  140.         RRCA
  141.         RRCA
  142.         CP MAPWID
  143.         JR NC,XorPixInMapq
  144.         ADD A,(HL)
  145.         INC H
  146.         LD H,(HL)
  147.         LD L,A
  148.         JR NC,$+3
  149.         INC H
  150.         LD A,C
  151.         AND 7
  152.         INC A
  153.         LD B,A
  154.         LD A,1
  155.         RRCA
  156.         DJNZ $-1
  157.         XOR (HL)
  158.         LD (HL),A
  159. XorPixInMapq
  160.        POP HL
  161.        POP BC
  162.         RET
  163.  
  164. PrepareUnSetPixInMap
  165.         push bc
  166.         LD A,PGMAP;16
  167.         CALL OUTME
  168.         pop bc
  169.         ret
  170.  
  171. UnSetPixInMap
  172. ;e=truey ;e=y (от верхнего края TERRAIN)
  173. ;bc=x
  174. ;        LD A,e
  175. ;       add a,MAPHGT-TERRAINHGT
  176. ;        SUB TERRAINHGT;MAPHGT
  177. ;        RET NC
  178.        ;PUSH HL
  179.        ;PUSH BC
  180.         LD H,TMAPLN/256
  181.          LD L,e;A
  182.         LD A,C ;xlow
  183.         AND 0xf8
  184.         ADD A,b ;xhigh
  185.         RRCA
  186.         RRCA
  187.         RRCA
  188.         CP MAPWID
  189.        ret nc;JR NC,UnSetPixInMapq
  190.         ADD A,(HL)
  191.         INC H
  192.         LD H,(HL)
  193.         LD L,A
  194.         JR NC,$+3
  195.         INC H
  196.         LD A,C
  197.         AND 7
  198.         INC A
  199.         LD B,A
  200.         LD A,0xfe
  201.         RRCA
  202.         DJNZ $-1
  203.         and (HL)
  204.         LD (HL),A
  205. ;UnSetPixInMapq
  206.        ;POP BC
  207.        ;POP HL
  208.         RET
  209.