if 1==0
 
_TST#8  LD HL,isTST8 ;[**]
 
        LD A,(HL)
 
        AND %1111
 
        RET NZ
 
        DEC (HL)
 
        ;
 
        LD C,0
 
        LD DE,invBUF
 
        PUSH DE
 
        CALL t8dst
 
        LD C,(HL)
 
        POP HL
 
        CP C
 
        JR Z,t8ex_
 
        LD DE,KUNGE-invBUF+#100
 
        ADD HL,DE       ;err
 
t8ex_   LD BC,#40FF
 
t8ex    LD (HL),C
 
        INC HL
 
        DJNZ t8ex
 
        SCF
 
        RET
 
 
 
t8dst   PUSH DE ;[**]
 
        LD HL,t8tab
 
t8d0    LD A,(HL)
 
        INC HL
 
        CP #80
 
        JR Z,t8d1
 
        JR NC,t8d2
 
        CP #38
 
        JR Z,t8d1
 
        JR t8d3
 
t8d2    CP #FE
 
        RET Z
 
t8d3    INC C
 
        LD (DE),A
 
        INC DE
 
t8d1    JR t8d0
 
        ;
 
        POP DE
 
        LD A,C
 
        RET
 
 
 
        endif
 
 
 
 
 
;звуковые эффекты   (C) Copper Feet [sept.1997]
 
;--------------- Звук (в осн.стр)-----------------
 
 
 
;частотаМЛ (FF-конец),частотаСТ,громкость,шум (FF-НЕТ)
 
 
 
SOU4    ;выстрел из катапульты
 
        DEFW 1096
 
        DEFB 11,31
 
        DEFW 946
 
        DEFB 12,20
 
        DEFW 2096
 
        DEFB 14,17
 
        DEFW 796
 
        DEFB 15,20
 
        DEFW 3094
 
        DEFB 15,22
 
        DEFW 646
 
        DEFB 15,26
 
        DEFW 4094
 
        DEFB 15,28
 
        DEFW 596
 
        DEFB 14,29
 
        ;
 
SOU3    ;выстрел из лука
 
        DEFW 4094
 
        DEFB 14,30
 
        DEFW 596
 
        DEFB 14,27
 
        DEFW 4094
 
        DEFB 13,25
 
        DEFW 596
 
        DEFB 11,20
 
        DEFW 3094
 
        DEFB 09,10
 
        DEFB #FF
 
 
 
 
 
;0-меч,1-топор,2-взрыв катапульты,3-выстрел из лука,
 
;4-выстрел из катапульты, 5-колдовство, 6-волшебники стреляют
 
;7-укус, 8-малый взрыв
 
tSOUND  DEFW SOU0,SOU1,SOU2,SOU3,SOU4,SOU5,SOU6,SOU7,SOU8
 
prvSND  ; приоритет
 
        DEFB   10,   5,  20,   6,   15, 12,   9,   8,  14
 
typSND  ;кто какой звук при ударе даёт (#FF-нет)
 
        DEFB 1,#FF,#FF,3,0,#FF,#FF,#FF,0
 
        DEFB 1,#FF,#FF,3,0,#FF,#FF,#FF,0
 
        DEFB 7,1,7,1,#FF,#FF,1,0,#FF
 
 
 
;#EEC9(стр.6) - адрес хранения упр. регистра AY для протрекера
 
;часть эффектов в стр.3
 
 
 
 
 
SOUNDy  ;играть звук A (IY+5,IY+6 - коорд источника)
 
        PUSH HL
 
        LD L,(IY+5)
 
        LD H,(IY+6)
 
        LD (sIY56),HL
 
        POP HL
 
SOUND9  LD IX,sIY56
 
        ;
 
SOUNDn  ;играть звук A (IX+0,IX+1 - коорд источника)
 
        CP #FF
 
        RET Z ;пустой звук
 
        PUSH HL
 
        PUSH BC
 
        PUSH AF
 
        LD C,A
 
        LD A,(AY_FX)
 
        OR A
 
        JR Z,son1 ;эфф запрещ
 
        LD A,C
 
        LD HL,prvSND
 
        CALL BA
 
        LD A,(priv_S)
 
        CP (HL)
 
        JR NC,son1 ;приоритет эффекта ниже проигрываемой
 
        LD A,(HL)
 
        LD (priv_2),A
 
        LD A,C
 
        LD HL,tSOUND  ;инициализ мелодии #A
 
        CALL WT
 
        LD (NOTA2),HL
 
        ;
 
        ;опр видимости источника звука
 
        CALL HL_IX0
 
        CALL GMAP
 
        BIT 7,(HL)
 
        JR NZ,son1
 
        ;опред громкости в зависимости от дальности
 
        LD HL,(X0)
 
        LD A,L
 
        ADD A,6
 
        LD L,A
 
        LD A,H
 
        ADD A,7
 
        LD H,A ;центр экр
 
        CALL DIST2
 
        SUB 6
 
        JR NC,lso1
 
        ;в экране - макс громкость
 
        XOR A
 
lso0    LD (levSND),A
 
        LD HL,(NOTA2)
 
        LD (NOTA),HL
 
        LD A,(priv_2)
 
        LD (priv_S),A
 
        JR son1
 
lso1    CP 6
 
        JR C,lso0;в радиусе 12
 
son1    POP AF
 
        POP BC
 
        POP HL
 
        RET
 
 
 
;форматы нот
 
;(#ff) - конец мелодии
 
;(N4,N5,N10,Nшум) - значение 4,5,10  и 6  регистров для С
 
 
 
 
 
pSOUND  ;вып. ноту мелодии
 
        LD A,(priv_S) ;проигрыватель не занят
 
        OR A
 
        RET Z
 
        LD A,(#EEC9) ;из протрекера
 
        LD E,A
 
        if 1==0
 
        LD A,3   ;стр. с эффектами
 
        CALL MEM
 
        else
 
        call MEM_snd
 
        endif
 
        LD HL,(NOTA)
 
        LD A,(HL)
 
        CP #FF
 
        JR NZ,ppsC ;конец эффекта?
 
        XOR  A
 
        LD (priv_S),A ;завершение мелодии
 
        RET
 
ppsC    ;
 
        LD BC,#FFFD
 
        LD A,4 ;частотаМЛ
 
        OUT (C),A
 
        LD B,#BF
 
        OUTI
 
        ;
 
        LD B,#FF
 
        INC A ;частотаCT
 
        OUT (C),A
 
        LD B,#BF
 
        OUTI
 
        ;
 
        LD B,#FF
 
        LD A,10 ;громкость
 
        OUT (C),A
 
        LD A,(levSND)
 
        LD B,A
 
        LD A,(HL)
 
        INC HL
 
        SUB B ;коррект громкости по расстоянию
 
        JR NC,pps1
 
        XOR A
 
pps1    LD B,#BF
 
        OUT (C),A
 
        ;
 
        LD B,#FF
 
        LD A,7 ;управление
 
        OUT (C),A
 
        LD B,#BF
 
        LD A,E ;из протрекера
 
        BIT 7,(HL)
 
        JR Z,pps2
 
        AND %11111011 ;без шума
 
        JR pps3
 
pps2    AND %11011011
 
pps3    OUT (C),A
 
        ;
 
        LD B,#FF
 
        LD A,6 ;шум
 
        OUT (C),A
 
        BIT 7,(HL)
 
        JR NZ,pps4
 
        OUTI
 
        JR pps5
 
pps4    INC HL
 
pps5    LD (NOTA),HL
 
        RET
 
 
 
        if 1==0
 
yw  EQU #38
 
yv  EQU #80
 
t8tab   DEFB yv,#AF,yv,yw      ;   TST#8   XOR A [**]
 
        DEFB #21,yv,#50,yw,yv,#40  ;           LD HL,#4050
 
        DEFB #01,#00,yv,#36  ;           LD BC,#3600
 
        DEFB #AE,yv,yv,yv      ;   tst80   XOR (HL)
 
        DEFB #86,yw      ;           ADD A,(HL)
 
        DEFB #23      ;           INC HL
 
        DEFB #0D,yw      ;           DEC C
 
        DEFB #20,#FA    ;           JR NZ,tst80
 
        DEFB #05      ;           DEC B
 
        DEFB #20,yv,yv,#F7    ;           JR NZ,tst80
 
        DEFB #21,yv,#00,yv,#FF  ;           LD HL,#FF00
 
        DEFB #C9,yw,yw,  #FE          ;RET (!cp(hl))
 
        endif