?login_element?

Subversion Repositories NedoOS

Rev

Rev 2002 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. RECMAP
  2.         LD HL,WASMAP
  3.         LD DE,0x4000
  4.        PUSH DE
  5.         LD BC,szMAP
  6.         LDIR
  7.        POP HL
  8.         LD DE,level
  9.         LD BC,endlev-level
  10.         LDIR
  11.        
  12.           ld de,MONSTRS
  13.        
  14.        if invmap;atm
  15.        LD A,(YX+1) ;Y
  16.        SUB 0xA0
  17.        SUB map/256+31
  18.        CPL
  19.        LD (IMcurYy+1),A
  20.        LD A,(YX) ;X
  21.        INC A
  22.        LD (IMcurXx+1),A
  23.        endif
  24. INImons LD A,(HL) ;x
  25.         LDI
  26.         AND (HL) ;X
  27.         LDI
  28.         INC A
  29.         JR Z,INImonsQ
  30.         ldi ;y
  31.         ldi ;Y
  32. ;перекодируем PHASE_type (type, PHASE) в TYPEphase_dir (dir, TYPEphase) ;TYPEphase=TYPE*8+phase
  33.         xor a
  34.         ld (de),a ;dir (nomove)
  35.         ld a,(hl) ;type=1...
  36.         cp 7
  37.         jr nc,INImons_nolive
  38.         cp 3
  39.         jr c,INImons_nomove
  40.         ld (hl),3
  41.         sub 3 ;0..3
  42.         rlca
  43.         rlca
  44.         inc a
  45.         ld (de),a ;dir
  46. INImons_nomove
  47. INImons_nolive
  48.         ld a,(hl)
  49.         cp 7
  50.         jr c,$+4
  51.         sub 3
  52.         add a,a
  53.         add a,a
  54.         add a,a
  55.         inc hl
  56.         ;add a,(hl) ;phase
  57.         inc hl
  58.         inc de
  59.         ld (de),a
  60.         inc de
  61.         ;ldi ;energy
  62.         ;ldi ;time
  63.         inc hl
  64.         inc hl
  65.         ld a,100
  66.         ld (de),a ;energy
  67.         inc de
  68.         ld a,1
  69.         ld (de),a ;time
  70.         inc de
  71.         JR INImons
  72. INImonsQ ;
  73.        ex de,hl;EXD
  74.        if invmap;atm
  75.         LD H,map/256+31
  76.        else
  77.         LD H,map/256
  78.        endif
  79.        IF invmap
  80.        LD L,map&0xff
  81.        LD C,1
  82.        JR GETMAPL
  83.        ENDIF
  84. GETMAP0
  85.        IF invmap
  86.         LD L,0xff&(map+32)
  87.        ELSE
  88.         LD L,map&0xff
  89.        ENDIF
  90.         LD C,2
  91. GETMAPL LD B,32;33
  92. GETMAP1 LD A,(DE)
  93.         INC DE
  94.         LD (HL),0 ;пустое место в памяти
  95.         CP 13
  96.         JR Z,GETMCR
  97.        IF invmap;atm
  98.        jr NC,GMNRLE
  99.         LD A,(DE)
  100.         INC DE
  101.        DEC A
  102. GMRLE
  103.         INC L
  104.         LD (HL),0 ;пустое место в памяти
  105.         DEC B
  106.         DEC A
  107.         jr NZ,GMRLE
  108.         LD A,32 ;пустое место в формате карты
  109. GMNRLE
  110.        ENDIF
  111.         CP 32 ;пустое место в формате карты
  112.         JR Z,GETMAPE
  113.         cp 0xc1 ;зеркальное пустое место в формате карты
  114.         JR Z,GETMAPE
  115.       if invmap
  116.       CP 64    ;
  117.       jr NC,$+4  ;
  118.       ADD A,64 ;todo kill
  119.        ADD A,128-64
  120.       endif
  121.       IF !atm
  122.        if invmap
  123.        sub 128
  124.  ;в примере используются стены 16..39. они уже домножены на 2 (младший бит=зеркальность)
  125.         sub 16*2
  126.        else
  127.        add a,a
  128.        SUB "1";+128
  129.        endif
  130.       if doublescr
  131.        cp texturesinpg*2*2
  132.        jr c,$+4
  133.        ld a,(texturesinpg*2-1)*2
  134.        cp texturesinpg*2
  135.        jr c,$+4
  136.        sub texturesinpg*2+0x40
  137.       else
  138.        cp texturesinpg*2
  139.        jr c,$+4
  140.        ld a,(texturesinpg-1)*2
  141.       endif
  142.      add a,0xc0 ;хранится ID>=128, чтобы делать двери
  143.       ENDIF
  144.        LD (HL),A
  145. GETMAPE INC L
  146.         DJNZ GETMAP1
  147.         JR GETMOK
  148. GETMCR  LD (HL),0
  149.         INC L
  150.         DJNZ GETMCR
  151. GETMOK
  152.        IF invmap
  153.        LD L,map&0xff
  154.        ENDIF
  155.         DEC C
  156.         jr NZ,GETMAPL
  157.        if invmap;atm
  158.         LD A,H
  159.         DEC H
  160.         CP map/256
  161.         JR NZ,GETMAP0
  162.        else
  163.         INC H
  164.         BIT 6,H
  165.         JR Z,GETMAP0
  166.        endif
  167.  
  168.         if invmap
  169.         LD HL,MONSTRS+1 ;1+начало табл.монстров/предметов
  170. remons0
  171.         LD A,(HL) ;X
  172.          inc (hl)
  173.         INC A
  174.        jr Z,remonsq
  175.         ;ld a,0xff&(map+32+map+0)
  176.         ;sub (hl)
  177.         ;ld (hl),a ;???
  178.         INC L
  179.         inc L
  180.         LD A,(HL) ;Y
  181.        SUB 0xA0
  182.        SUB map/256+31
  183.        CPL
  184.         ld (hl),a
  185.         LD A,L
  186.         ADD A,6
  187.         LD L,A
  188.         JP NC,remons0
  189.         INC H
  190.         JP remons0
  191. remonsq
  192.         endif
  193.  
  194.        IF atm == 0
  195.         LD HL,#4000
  196.         CALL INICLS
  197.        IF doublescr
  198.         LD A,#17
  199.         CALL SETPG
  200.         LD HL,#C000
  201.         CALL INICLS
  202.        ENDIF
  203.  
  204.         XOR A
  205.         LD H,scrbuf/256
  206.         LD C,scrwid
  207. PRECLS  LD L,scrbuf&0xff
  208.         LD B,scrhgtpix
  209.         LD (HL),A
  210.         INC L
  211.         DJNZ $-2
  212.         INC H
  213.         DEC C
  214.         jr NZ,PRECLS
  215.        ENDIF    
  216.         ret
  217.        
  218.        if atm==0
  219. INICLS
  220.         LD D,H
  221.         ld E,1
  222.         LD BC,#1800
  223.         LD (HL),L
  224.         LDIR
  225.         LD BC,767
  226.         LD (HL),colour
  227.         LDIR
  228.         RET
  229.        endif
  230.