Login

Subversion Repositories NedoOS

Rev

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

        ;MAIN "VERA",8
;Ведение игры по сценарию и т.п.
;Обозначение выполнения квестов
RUN_Q
        LD HL,QUEST
        LD E,A
        LD D,0
        ADD HL,DE
        INC (HL)
        RET

;Восстанавливаем номер диалога, который был до отдачи вещи
SC0     LD HL,(PREV+1)
        LD A,(PREV)
        LD (HL),A
        RET

;прочит. письмо
SC1     XOR A
        CALL RUN_Q
        RET

;отдаем волку бутерброд
SC2     XOR A
        LD (INVT2+4),A
        LD (MASSIVE+3602),A
        LD (MASSIVE+3666),A
        INC A
        CALL RUN_Q
        LD HL,#001F    ;аним. группа исчезновения
        LD (MAP+#1C24),HL
        LD (MAP+#1CA4),HL
        LD HL,SPR
        LD (UNDR),HL
        XOR A
        LD (INVT2+4),A
        JR SC4B

;летим на метле через болото
SC3     LD A,(QUEST+2)
        XOR 1
        LD (QUEST+2),A
        LD HL,#3315
        JR NZ,SC3_
        LD HL,#3B1D
SC3_    LD (HEROCRD),HL
        JP CENTR2

;Аленушка дает пустой флакон
SC4     LD A,3
        CALL RUN_Q
        LD A,10
        LD B,15
SC4_    LD (ALE),A
        LD A,B
SC4B    LD (KARMBK+1),A
        RET

;Наполняем флакон водой
SC5     LD A,4
        CALL RUN_Q
        LD HL,0
        LD (FORTAB2),HL ;чтобы больше не наполняли
        LD A,11
        JR SC4B

;лечим козленка
SC6     LD A,5
        CALL RUN_Q
        XOR A
        LD (INVT2+4),A
        LD (INVT3+4),A
        LD HL,#001F    ;аним. группа исчезновения
        LD (MAP+5948),HL
        LD L,#21
        LD (MAP+6076),HL
        LD HL,SPR+(233*32)
        LD (UNDR),HL
        LD HL,SPR+(234*32)
        LD (UNDR2),HL
        LD A,4
        JR SC4_-2

;Алена дает деньги
SC7     LD A,6
        CALL RUN_Q
        LD A,5
        LD B,16+7
        JR SC4_

;Хевор дает ведро
SC8     LD A,8
        CALL RUN_Q
        LD A,6
        LD (HEV),A
        LD A,3
        LD (BUK),A
        LD A,12
        JR SC4B

;Наполняем ведро водой
SC9     LD A,9
        CALL RUN_Q
        LD HL,V38
        LD DE,v38
        LD BC,0
SC9_    LD (V+10),HL
        LD (VSVOY+10),DE
        LD (VED),BC
        RET

;Оживляем статую
SC10    LD A,10
        CALL RUN_Q
        LD A,7
        LD (HEV),A
        LD A,3
        LD (PBOY+3),A
        LD HL,V5
        LD DE,v5
        LD BC,#050C
        JR SC9_

;Наполнено ли ведро водой
SC11    LD A,(PBOY+3)
        AND A
        JR NZ,SC11_
        LD HL,(V+10)
        LD DE,V38
        SBC HL,DE
        RET Z
SC11_   POP HL
        POP DE
        POP AF
        XOR A
        PUSH AF
        PUSH DE
        PUSH HL
        RET

;Хевор дает магнит
SC12    LD A,11
        CALL RUN_Q
        LD A,2
        LD (ZAD),A
        LD A,8
        LD (HEV),A
        LD A,9
        JP SC4B

;Режем пшеницу и тупим серп
SC13    LD A,17
        CALL RUN_Q
        LD HL,(SPRCURS+1)
        LD (v3+4),HL
        LD DE,SPR+((150+3)*32)
        LD HL,0   ;лезвие не режет пшеницу
        LD (FLZ),HL
SC13_   LD A,10
        LD (FSR+2),A ;затупили
        LD (FSR+6),A
        LD HL,(ADRSPRT)
        LD (HL),E
        INC HL
        LD (HL),D
        RET

;Режем хмель и тупим серп
SC14    LD A,18
        CALL RUN_Q
        LD HL,0   ;лезвие не режет хмель
        LD (FLZ+4),HL
        LD HL,(SPRCURS+1)
        LD (v21+4),HL
        LD DE,SPR+((150+21)*32)
        JR SC13_

;Хевор дает серп
SC15    LD A,16
        CALL RUN_Q
        LD A,8
        LD (HEV),A

        LD DE,LEZV
        CALL INSERT-3

        LD A,22+7
SC15_   JP SC4B

;появление лезвия
LEZV    LD DE,v32+4
        LD HL,SPR+((150+32)*32)
        JP FADE

;Алена дает ягоды
SC16    LD A,31
        CALL RUN_Q
        LD A,5
        LD (ALE),A
        LD A,7+29
        JR SC15_

;Режем пшеницу и тупим лезвие
SC17    LD A,17
        CALL RUN_Q
        LD HL,(SPRCURS+1)
        LD (v3+4),HL
        LD DE,SPR+((150+3)*32)
        LD HL,0 ;серп не режет пшеницу
        LD (FSR),HL
SC17_   LD A,14
        LD (FLZ+2),A ;затупили
        LD (FLZ+6),A
        LD HL,(ADRSPRT)
        LD (HL),E
        INC HL
        LD (HL),D
        RET

;Режем хмель и тупим лезвие
SC18    LD A,18
        CALL RUN_Q
        LD HL,0 ;серп не режет хмель
        LD (FSR+4),HL
        LD HL,(SPRCURS+1)
        LD (v21+4),HL
        LD DE,SPR+((150+21)*32)
        JR SC17_

;Прочитано ли письмо Верой?
SC19    LD A,(QUEST)
        AND A
        JP Z,SC11_
        LD A,7
        JP RUN_Q

;Мед во флакон
SC20    LD A,19
        CALL RUN_Q
        LD HL,0
        LD (ULEY),HL
        LD A,7+20
        JP SC4B

;Проверка поговорили ли с Хевором
SC21    LD A,(HEV)
        CP 7
        LD A,3
        JR C,$+3
        INC A
        LD (ZAD),A
        RET

;Кузнец дает топор
SC22    LD A,22
        CALL RUN_Q
        LD A,8
        LD (ZAD),A
        ;INC A ;bug???
        JP SC4B

;Можно говорить про пиво с барменом
SC23    LD A,12
        CALL RUN_Q
        LD A,5
        LD (ZAD),A
        LD A,2
        LD (PET),A
        RET

;Петро попросил ингредиенты пива
SC24    LD A,(PET)
        CP 3
        RET Z     ;уже выполняли скрипт
        LD A,13
        CALL RUN_Q
        LD A,3
        LD (PET),A
        DEC A
SC24_   LD (BUK),A
        RET

;Буквин сказал что для пива нужно
SC25    LD A,14
        CALL RUN_Q
        LD A,9
        LD (HEV),A
        LD A,3
        JR SC24_

;Запускаем счетчик для варения пива
SC26    LD BC,10000 ;чуть более 3 минут
        LD DE,SC261
        CALL INSERT
        LD A,9
SC26_   LD (PET),A
        RET
SC261   LD A,10
        JR SC26_

;бармен дает бочонок
;проверяем нужно ли просить пустой флакон?
SC27    LD A,(QUEST+5)
        AND A
        LD A,12
        JR NZ,SC27_
        DEC A
SC27_   LD (PET),A
        LD A,21
        CALL RUN_Q
        LD A,7+15
SC271   JP SC4B

;бармен дает пустой флакон
SC28    LD A,12
        LD (PET),A
        LD A,7+8
        JR SC271

;Даем Петро мед
SC29    LD B,13
        LD A,(PET)
        CP 3
        JR C,SC30_

;Даем Петро ингр.
SC30    XOR A
        LD (KARM),A
        LD HL,QUEST+21
        INC (HL)
        LD A,(HL)
        CP 3    ;послед. ингр.?
        RET C
        LD B,8
SC30_   POP HL
        POP DE
        POP AF
        LD A,B  ;номер диалога
        PUSH AF
        PUSH DE
        PUSH HL
        RET

;Появление кастрюли
SC31    LD A,38
        CALL RUN_Q
        LD A,15
        LD (PET),A
        LD DE,KAST
        JP INSERT-3 ;ставим таск в очередь

KAST    LD DE,v30+4
        LD HL,SPR+((150+30)*32);кастрюля

FADE    LD (FAD1+2),DE  ;свойства предмета
        LD (FAD2+1),HL  ;какой предм. появится

FADE2   LD HL,RNDTB1
        CALL RND2
        AND 15
        ADD A,A
        LD E,A
        LD D,0
        ADD HL,DE
        LD A,(HL)   ;Y
        INC HL
        LD L,(HL)   ;X
        LD H,A
        LD DE,(HEROCRD)
        EX DE,HL
        AND A
        SBC HL,DE
        JR Z,FADE2 ;координаты героя
                   ;и проявляемой вещи совпали
        LD H,D
        LD L,E

        RLC E,E
        SRL D
        RR E
        SRL D
        RR E
        LD A,MASSIVE/256
        ADD A,D
        LD D,A

        LD A,(DE)
        AND A
        JR NZ,FADE2   ;уже что-то лежит

        INC A
        LD (DE),A

        CALL CalcMap+3

        LD E,(HL)     ;берем спрайт с карты
        INC HL
        LD D,(HL)

FAD1    LD (0),DE  ;запоминаем в свойствах предмета, чтобы после
                   ;как возьмут вещь восстановить фон
FAD2    LD DE,0
        LD (HL),D    ;ставим спрайт вещи на карте
        DEC HL
        LD (HL),E
        RET

;Петро дает спички
SC32    LD A,39
        CALL RUN_Q
        LD A,12
        LD (PET),A
        LD A,7+31
        JP SC4B

;Появление амулета
SC33    LD A,15
        CALL RUN_Q
        LD A,10
        LD (HEV),A
        LD DE,AMUL
        JP INSERT-3

;амулет
AMUL    LD DE,v26+4
        LD HL,SPR+((150+26)*32)
        JR FADE

;Рубим скелетов
SC34    LD A,23
        CALL RUN_Q

        LD A,(ITEM)
        SUB 3
        LD BC,127
        LD HL,MAP+40+(128*3)
        LD DE,MASSIVE+20+(64*3)
        JR Z,SC341
        LD HL,MAP+84+(128*13)
        LD DE,MASSIVE+42+(64*13)
        DEC A
        JR Z,SC341
        LD HL,MAP+92+(128*8)
        LD DE,MASSIVE+46+(64*8)
        DEC A
        JR Z,SC341
        LD HL,MAP+98+(128*10)
        LD DE,MASSIVE+49+(64*10)
        LD A,2
        LD (FEK),A

SC341   XOR A
        LD (KOST1+4),A
        LD (HL),25
        INC HL
        LD (HL),A
        ADD HL,BC
        LD (HL),25
        INC HL
        LD (HL),2
        EX DE,HL
        LD (HL),A
        RET

;Пшеницу меняем на зерна
SC35    LD A,20
        CALL RUN_Q
        LD A,7+17
        JP SC4B

;Разжигаем костер
SC36    LD A,40
        CALL RUN_Q
        LD A,3
        LD (FIRS+3),A
        LD HL,V65
        LD (VV),HL
        LD HL,0
        LD (FT2),HL
        LD (FT2+4),HL
        LD (FT2+8),HL
        LD HL,PET
        LD A,(HL)
        CP 14
        RET NZ
        LD (HL),12
        RET

;Фекла просит книгу
SC37    LD A,24
        CALL RUN_Q
        LD A,4
        LD (BUK),A
        INC A
        LD (FEK),A
        RET

;Буквин дает книгу
SC38    LD A,25
        CALL RUN_Q
        LD A,3
        LD (BUK),A
        LD A,7+13
        JP SC4B

;Буквину можно давать деньги
SC39    LD HL,#1005
        LD (BK),HL
        LD A,8
        LD (BUK),A
        RET

;Фекла дает чеснок
SC40    LD A,26
        CALL RUN_Q
        LD A,4
        LD (FEK),A
        LD A,7+14
        JP SC4B

;Мажемся чесноком (летучие мыши исчезают)
SC41    LD A,27
        CALL RUN_Q

        LD HL,#001F    ;аним. группа исчезн.

        LD DE,MASSIVE+748
        LD A,(DE)
        AND A
        JR Z,$+7
        XOR A
        LD (DE),A
        LD (MAP+1496),HL

        LD DE,MASSIVE+819
        LD A,(DE)
        AND A
        JR Z,$+7
        XOR A
        LD (DE),A
        LD (MAP+1638),HL

        LD DE,MASSIVE+628
        LD A,(DE)
        AND A
        JR Z,$+7
        XOR A
        LD (DE),A
        LD (MAP+1256),HL

        LD DE,MASSIVE+502
        LD A,(DE)
        AND A
        JR Z,SC41_
        XOR A
        LD (DE),A
        LD (MAP+1004),HL

SC41_   LD HL,SPR
        LD (UNDR),HL
        LD (INVT2+4),A ;A=0
        JP SC4B

;Душим мышь
SC42    LD A,27
        CALL RUN_Q
        LD HL,(ADRSPRT)
        LD DE,(ADRELM)
        XOR A
        LD (INVT2+4),A
        LD (DE),A
        LD (HL),#1F
        INC HL
        LD (HL),A
        LD HL,SPR
        LD (UNDR),HL
        RET

;Даем зубы Хевору
SC43    CALL SC0
        XOR A
        JP SC4B

;Зловет колдует 1-й раз
SC44    LD A,28
        CALL RUN_Q
        LD A,6
        LD (FEK),A
        LD H,1           ;номер колдовства

        LD A,3

        LD DE,SC44_
SC441   LD BC,6000
        LD (ZLO),A
        LD A,H
        LD (QUEST+43),A  ;Обозначаем номер колдовства
        CALL INSERT

;Когда что-то даем Зловету
SC442
        LD HL,RNDTB1
        CALL RND2
        AND 15
        ADD A,A
        LD E,A
        LD D,0
        ADD HL,DE
        LD A,(HL)   ;Y
        INC HL
        LD L,(HL)   ;X
        LD H,A

        LD E,L
        LD D,H

        RLC L,L
        SRL H
        RR L
        SRL H
        RR L
        LD A,MASSIVE/256
        ADD A,H
        LD H,A

        LD A,(HL)
        AND A
        JR NZ,SC442

        LD (HEROCRD),DE
        CALL CENTR2
        LD A,1
        JR SC44_2

;Зловет колдует 2-й раз
SC45    LD HL,MAG1
        LD (curmagic),hl;(MG1+1),HL
        LD H,2      ;номер колдовства
        LD A,4
        LD DE,SC45_
        JR SC441

;выключ. колдовство 1,2,3
SC45_
        LD HL,reter;MAG2-1
        LD (curmagic),hl;(MG1+1),HL
;выключ. колдовство 1
SC44_   XOR A
        LD (QUEST+43),A  ;Обозначаем колдовство
SC44_2  LD (P3p1),A      ;колдовство первое
        RET

;Зловет колдует 3-й раз
SC46    LD HL,MAG2
        LD (curmagic),hl;(MG1+1),HL
        LD BC,15000
        LD DE,SC45_
        LD H,3
        LD A,5
        JR SC441+3

;Фекла говорит о таракане и ягодах
SC47    LD A,29
        CALL RUN_Q
        LD A,10
        LD (ZAD),A
        LD A,6
        LD (ALE),A
        LD A,5
        LD (FEK),A
        RET

;Кузнец дает таракана
SC48    LD A,30
        CALL RUN_Q
        LD A,3
        LD (ZAD),A
        LD A,7+27
        JP SC4B

;Аленушка просит веревку
SC49    LD A,5
        LD (ALE),A
        LD DE,VEREV
        JP INSERT-3

;Появление веревки
VEREV   LD DE,v6+4
        LD HL,SPR+((150+6)*32)
        JP FADE

;Становимся невидимым от зелья
SC50    LD A,33
        CALL RUN_Q
;Изменяем процедуру печати героя
;будет ходить силуэт героя
        XOR A
        LD (NEV1),A
        LD (NEV2),A
        LD (NEV3),A
        LD HL,#0202
        LD (FTZL),HL ;можно применять магнит

;разговоры изменяем

;L-текущ. диалог
;H-текущ. диалог на ненужную вещь

        LD HL,#0706
        LD (ZLO),HL
        LD (BUK),HL
        LD HL,#0D0C
        LD (ZAD),HL
        LD HL,#0907
        LD (FEK),HL
        INC L
        LD (ALE),HL
        LD HL,#0F0D
        LD (HEV),HL
        LD HL,#1211
        LD (PET),HL
        JP SC4B

;Хевор говорит сжечь Зловета
SC51    LD A,37
        CALL RUN_Q
        LD A,8
        LD (HEV),A
;Горит ли костер?
        LD A,(QUEST+40)
        AND A
        RET NZ
        LD A,14
        LD (PET),A
        RET

;Отнимаем посох
SC52    LD A,34
        CALL RUN_Q
        LD BC,500   ;10 сек
        LD DE,SC52_
       CALL INSERT
        LD HL,SPR+((150+19)*32);посох
        LD DE,SPR+6944
        LD BC,SPR+6976
SC521   LD (MAP+624),HL
        LD (MAP+626),DE
        LD (MAP+754),BC
        LD A,1
        LD (REMAP+1),A
        RET

;Зловет забирает посох обратно
SC52_   LD A,(MASSIVE+312)
        AND A
        RET Z   ;посох уже взяли
        XOR A
        LD (QUEST+34),A
        LD HL,SPR
        LD DE,SPR+6880
        LD BC,SPR+6912
        JR SC521

;Уменьшаем Зловета
SC53    LD A,35
        CALL RUN_Q

        XOR A
        LD (INVT2+4),A
        LD (INVT3+4),A
        LD (MASSIVE+313),A

        LD HL,#001F    ;аним. группа исчезновения
        LD (MAP+626),HL
        LD L,#21       ;еще одна группа
        LD (MAP+754),HL

        LD HL,SPR
        LD (UNDR),HL
        LD HL,SPR+(159*32)
        LD (UNDR2),HL

        LD A,3
        LD (RUMB+3),A  ;оживляем дом Зловета
        LD DE,ZELYE
        JP INSERT-3

;зелье видимости
ZELYE   LD DE,v24+4
        LD HL,SPR+((150+24)*32)
        JP FADE

;Становимся видимым от зелья
SC54    CALL SC55
        JP SC4B

;Становимся видимым от посоха
SC55    LD A,36
        CALL RUN_Q
;Изменяем печать спрайта героя
        LD A,#AA    ;XOR D
        LD (NEV1),A
        LD A,#AC    ;XOR H
        LD (NEV2),A
        LD A,#AD    ;XOR L
        LD (NEV3),A

;разговоры изменяем

;L-текущ. диалог
;H-текущ. диалог на ненужную вещь

        LD HL,#0003
        LD (BUK),HL
        LD (ZAD),HL
        LD L,5
        LD (FEK),HL
        LD (ALE),HL
        LD L,12
        LD (PET),HL

        LD A,(QUEST+41) ;сгорел ли Зловет?
        AND A
        JR Z,$+4
        LD L,16
        LD (HEV),HL

        LD HL,#0908
        LD (ZLO),HL

;больше не применять посох и зелье
        XOR A
        LD (v19),A
        LD (v24),A
        RET

;Горит ли костер?
SC56    LD A,(QUEST+40)
        AND A
        RET NZ
        JP SC11_

;Сжигаем Зловета, появляется колокол
SC57    LD A,41
        CALL RUN_Q

        LD A,(QUEST+36) ;Видим ли герой?
        JR Z,SC571

        LD A,16
        LD (HEV),A

SC571   LD A,SPR/256
        LD DE,122
        LD HL,MAP+372

        LD C,3
        LD B,3
SC57_   LD (HL),D ;0
        INC HL
        LD (HL),A
        INC HL
        DJNZ SC57_
        ADD HL,DE
        DEC C
        JR NZ,SC57_-2

        XOR A
        LD HL,MASSIVE+186
        LD E,61
SC572_  LD C,3
        LD B,3
        LD (HL),A ;0
        INC L
        DJNZ $-2
        ADD HL,DE
        DEC C
        JR NZ,SC572_+2

        INC A
        LD (MASSIVE+186+65),A

        LD HL,MAP+502   ;ложим колокол
        LD (HL),D ;0
        INC HL
        LD (HL),#D5
        XOR A
        JP SC4B

;Можно ли лететь на метле
SC58    LD B,31
        LD HL,(HEROCRD)
        LD A,H ;Y
        CP 53
        JR C,SC58_
        LD A,L ;X
        CP 21
        JR C,SC58_
        CP 35
        JR NC,SC58_
        LD B,3
SC58_   LD A,B
        RET

;Появление Глеба
SC59    LD A,4
        LD HL,#0001
SC59_   LD (HEV),A
        LD DE,#0204
;      LD A,6
        LD (MAP+58+1792),HL
        LD H,D
        LD (MAP+60+1792),HL
        LD H,E
        LD (MAP+58+1920),HL
;      LD H,A
        LD H,6
        LD (MAP+60+1920),HL
;Обнуление кармана
SC64    XOR A
        JP SC4B

;Исчезание Глеба
SC60    LD A,42
        CALL RUN_Q
        LD HL,0
        LD (MASSIVE+925),HL
        LD (MASSIVE+989),HL
        LD L,#1B
        LD A,5
        JR SC59_

;Кузнец просит курить
SC61    LD A,3
        LD (ZAD),A
        LD HL,#230A
        LD (ZD),HL
        RET
       
;Конец игры
SC62    XOR A
        LD (END_G_1),A
        JP SC4B

;Фекла дает зубы
SC63    CALL SC0
        LD A,7+34
        JP SC4B

;Проверка видимы ли мы для Хевора?
SC65    LD C,15
        LD A,(QUEST+33)
        LD B,A
        LD A,(QUEST+36)
        XOR B
        RET Z
        LD B,C
        JP SC30_

;Для Фёклы
SC66    LD C,9
        JR SC65+2

;Видели ли/говорили с Глебом?
SC67    LD A,(LEO1+4)
        LD HL,#C582  ;адрес реплики,если не видели Глеба
        AND A
        RET Z
        LD HL,#CC68  ;если видели, но не говорили
        RET

;Адреса скриптов
SCRPTB
        DW SC0,SC1,SC2,SC3,SC4,SC5,SC6
        DW SC7,SC8,SC9,SC10,SC11,SC12,SC13
        DW SC14,SC15,SC16,SC17,SC18,SC19
        DW SC20,SC21,SC22,SC23,SC24,SC25
        DW SC26,SC27,SC28,SC29,SC30,SC31
        DW SC32,SC33,SC34,SC35,SC36,SC37
        DW SC38,SC39,SC40,SC41,SC42,SC43
        DW SC44,SC45,SC46,SC47,SC48,SC49
        DW SC50,SC51,SC52,SC53,SC54,SC55
        DW SC56,SC57,SC58,SC59,SC60,SC61
        DW SC62,SC63,SC64,SC65,SC66,SC67

;Воспроизведение звуков
SOUND
        NOP    ;SFX (0-ON, 201-OFF)
        INC H
        DEC H
        RET Z
        LD BC,#FFFD
        LD A,2   ;Плавная установка высоты тона канала B (0-255)
        OUT (C),A
        LD B,#BF
        LD A,(HL)
        OUT (C),A
        INC HL
        LD B,#FF
        LD A,3   ;Грубая установка высоты тона канала B (0-255)
        OUT (C),A
        LD B,#BF
        LD A,(HL)
        OUT (C),A
        LD B,#FF
        LD A,7         ;Управление каналами.
        OUT (C),A      ;Биты (0 в бите означает,
                       ;что функция разрешена):
                       ;  ШУМ
        INC HL         ;00CBACBA
        IN A,(C)       ;     ТОН
        AND %11101101
        OR (HL)
        LD B,#BF
        OUT (C),A
        INC HL
        LD A,9         ;Амплитуда канала B (0-15)
        LD B,#FF
        OUT (C),A
        LD B,#BF
        LD A,(HL)
        OUT (C),A      ;Записываем амплитуду в регистр муз.проц.
        INC HL
        LD (SAMPLE+1),HL ;Адрес следующего кванта
        LD A,(HL)
        OR A
        RET NZ
AY_OFF
        LD (SAMPLE+2),A

;       NOP ;RET ;Если музыка играет, то глушить канал не надо

;Делаем аплитуду канала B равной нулю

        LD BC,#FFFD
        LD A,9
        OUT (C),A
        XOR A
        LD B,#BF
        OUT (C),A
        RET

;Формат звуков:
;Первое число - плавная высота тона
;Второе       - грубая высота тона
;Третье       - управление каналом:
;             = 16 - запрещение шума в канале
;             = 2  - запрещение тона в канале
;             = 18 - запрещение шум + тон
;             = 0  - шум и тон разрешены
;Четвертое    - громкость канала (0-15)
;Числа пропускать нельзя!
;Звук всегда должен оканчиваться нулем!

;взятие/выкладывание
SND_TK
        DB 1,0,2,15
        DB 1,0,2,12
        DB 1,0,2,10
        DB 1,0,2,8
        DB 1,0,2,6
        DB 1,0,2,8
        DB 1,0,2,10
        DB 1,0,2,12
        DB 1,0,2,15
        DB 1,0,2,12
        DB 1,0,2,10
        DB 1,0,2,8
        DB 1,0,2,6
        DB 1,0,2,4
        DB 1,0,2,2
        DB 0

;Применение вещи на герое
SND_HR
        DB 40,0,16,15
        DB 35,0,16,13
        DB 20,0,16,7
        DB 10,0,16,2
        DB 20,0,16,7
        DB 35,0,16,13
        DB 40,0,16,15
        DB 35,0,16,13
        DB 20,0,16,7
        DB 10,0,16,2
        DB 20,0,16,7
        DB 35,0,16,13
        DB 40,0,16,15
        DB 35,0,16,13
        DB 20,0,16,7
        DB 10,0,16,2
        DB 0,0,18,0
        DB 0

;Продолжение диалога (листание)
SND_NXT
        DB 100,0,16,15
        DB 90,0,16,14
        DB 60,0,16,10
        DB 50,0,16,8
        DB 30,0,16,6
        DB 10,0,16,4
        DB 5,0,16,2
        DB 0

;Применение вещи на объекте
SND_OBJ
        DB 100,0,16,15
        DB 95,0,16,14
        DB 85,0,16,12
        DB 60,0,16,10
        DB 50,0,16,8
        DB 30,0,16,6
        DB 10,0,16,4

        DB 200,0,16,15
        DB 160,0,16,14
        DB 130,0,16,13
        DB 95,0,16,11
        DB 93,0,16,10
        DB 90,0,16,9
        DB 85,0,16,7
        DB 80,0,16,6
        DB 40,0,16,2
        DB 0

;Завершение диалога
SND_END
        DB 30,0,0,15
        DB 20,0,0,14
        DB 1,0,2,13
        DB 1,0,2,10
        DB 1,0,2,8
        DB 1,0,2,5
        DB 0

;Появление вещи/выполнение таска
SND_TSK
        DB 50,0,16,15
        DB 45,0,16,14
        DB 43,0,16,12
        DB 40,0,16,10

        DB 70,0,16,15
        DB 65,0,16,14
        DB 63,0,16,12
        DB 60,0,16,10

        DB 57,0,16,15
        DB 55,0,16,13
        DB 53,0,16,13
        DB 50,0,16,10
        DB 35,0,16,14
        DB 17,0,16,13
        DB 15,0,16,9
        DB 15,0,16,8
        DB 0

;Листание вещей в мешке
SND_LST
        DB 200,0,16,15
        DB 150,0,16,15
        DB 100,0,16,15
        DB 95,0,16,14
        DB 93,0,16,12
        DB 90,0,16,10
        DB 80,0,16,10
        DB 70,0,16,10
        DB 40,0,16,10
        DB 0

;ICQ sound (rmx by Bulba)
;Начало разговора/отдача вещи
SND_SPK
        DB #94,0,0,#C
        DB #94,0,16,#F
        DB #94,0,16,12
        DB #94,0,16,9
        DB #94,0,16,2
        DB #94,0,16,1
        DB #94,0,16,0
        DB #94,0,16,0
        DB #BA,0,16,9
        DB #BA,0,16,#C
        DB #BA,0,16,#F
        DB #BA,0,16,#E
        DB #BA,0,16,#D
        DB #BA,0,16,#C
        DB #BA,0,16,#C
        DB #BA,0,16,#C
        DB #BA,0,16,#B
        DB #BA,0,16,#B
        DB #BA,0,16,#B
        DB #BA,0,16,#A
        DB #BA,0,16,9
        DB #BA,0,16,9
SND     DB 0

;Инициализация переменных игры
INIGAME
       if 1==0 ;мы это держим в VARS
        LD A,(QUEST+43)
        EXA
        CALL SC45_;Обнуляем колдовство
        EXA
        LD B,1
        AND A
        JR Z,ING0 ;Зловет не колдовал
        DEC A
        JR Z,INGA ;колдовал 1-й раз
        DEC B     ;B=0
        DEC A
        LD HL,MAG1
        JR Z,INGB ;2-й раз
        LD HL,MAG2;3-й
INGB    LD (curmagic),hl;(MG1+1),HL
INGA    LD A,B
        LD (P3p1),A
       endif

ING0    LD HL,#AAAC
        LD B,#AD
        LD A,(QUEST+36)
        AND A
        JR NZ,ING1 ;герой видим
        LD A,(QUEST+33)
        AND A
        JR Z,ING1  ;герой видим

;Герой невидим
        LD HL,0
        LD B,H

ING1    LD A,H      ;XOR D
        LD (NEV1),A
        LD A,L      ;XOR H
        LD (NEV2),A
        LD A,B      ;XOR L
        LD (NEV3),A

        LD HL,MESHOK
        LD (MSTRT+2),HL
        LD HL,Right
        LD (SPRHERO+1),HL
        XOR A
        LD (TILED+1),A
        LD (CCURS+1),A
        INC A
        LD (END_G_1),A
        LD (INV+1),A
        INC A
        LD (ROTATE+1),A
        LD (Prev+1),A
        EXA
        CALL SPRHERO
        CALL EndStep+1

;Центровка героя на экране
CENTR
HALFV   EQU SCRWD/4
HALFG   EQU SCRHG/4

        LD A,(HERO2p1)   ;мигает ли герой
        AND A
        RET NZ
CENTR2  LD A,(RunHero+1) ;идет ли герой
        AND A
        RET NZ
       if EGA
       ld a,3 ;3,2 - печатаем, 1 - не печатаем (кроме как под героем)
       endif
        LD (MAPFLAG+1),A ;обновить экран
        LD HL,(HEROCRD) ;H-Y, L-X
        LD BC,0
        LD A,L
        CP HALFV
        JR C,C2
C1      CP (63-HALFV)
        LD C,64-(HALFV*2)
        JR NC,C2
        SUB HALFV
        LD C,A

C2      LD A,H
        CP HALFG
        JR C,C4
C3      CP (63-HALFG)
        LD B,64-(HALFG*2)
        JR NC,C4
        SUB HALFG
        LD B,A
C4      LD (DispMapX),BC ;H-Y, L-X
        LD A,H
        SUB B
        LD H,A
        LD A,L
        SUB C
        LD L,A
        CALL Abs_Pix+3
        LD (CrdHero+1),HL

;Мигание героя
C5      LD A,COUNT
        LD (HERO2p1),A
        LD HL,HERO2
        LD (CLR_MAPm2),HL

        LD HL,SND_HR
        LD (SAMPLE+1),HL
        RET