Login

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

playtext
playwait=$+1
        ld a,1
        dec a
        jr nz,playsetwait
cursampleaddr=$+1
        ld hl,snd_empty
        ld c,(hl)
        inc hl
        ld b,(hl)
        inc hl
        ld (cursampleaddr),hl
curvowellength=$+1
        ld a,6
        dec c ;1: wait after vowel with current sound
        jr z,setwait_playnextletter ;╤Н╤В╨░ ╨┐╤А╨╛╤Ж╨╡╨┤╤Г╤А╨░ ╨╛╨▒╤П╨╖╨░╨╜╨░ ╤Г╤Б╤В╨░╨╜╨╛╨▓╨╕╤В╤М ╨▓╨░╨╗╨╕╨┤╨╜╤Л╨╣ cursampleaddr
        inc c ;0: end of sample
        jr z,playnextletter ;╤Н╤В╨░ ╨┐╤А╨╛╤Ж╨╡╨┤╤Г╤А╨░ ╨╛╨▒╤П╨╖╨░╨╜╨░ ╤Г╤Б╤В╨░╨╜╨╛╨▓╨╕╤В╤М ╨▓╨░╨╗╨╕╨┤╨╜╤Л╨╣ cursampleaddr
        call decodesampleframe
        jp playsound

playsetwait
        ld (playwait),a
        ret

playtonedigit
        sub '0'
        ld l,a
        ld h,0
        add hl,hl
        ld bc,tnotes
        add hl,bc
        ld (curnote),hl
        jr playnextletter
playincvowel
        inc (hl)
        inc (hl)
playdecvowel
        dec (hl)
        jr playnextletter
playlonger
        ld a,2+1
setwait_playnextletter ;╤Н╤В╨░ ╨┐╤А╨╛╤Ж╨╡╨┤╤Г╤А╨░ ╨╛╨▒╤П╨╖╨░╨╜╨░ ╤Г╤Б╤В╨░╨╜╨╛╨▓╨╕╤В╤М ╨▓╨░╨╗╨╕╨┤╨╜╤Л╨╣ cursampleaddr
        ld (playwait),a
playnextletter ;╤Н╤В╨░ ╨┐╤А╨╛╤Ж╨╡╨┤╤Г╤А╨░ ╨╛╨▒╤П╨╖╨░╨╜╨░ ╤Г╤Б╤В╨░╨╜╨╛╨▓╨╕╤В╤М ╨▓╨░╨╗╨╕╨┤╨╜╤Л╨╣ cursampleaddr
playtextaddr=$+1
        ld hl,0
        ld a,(hl)
        or a
         jr nz,$+2+3+1
          ld hl,playtextloop
          ld a,(hl)
        inc hl
        ld (playtextaddr),hl
         cp ':'
         jr z,playlonger ;wait 2 frames with current sound
         ld hl,curvowellength
         cp '+'
         jr z,playincvowel
         cp '-'
         jr z,playdecvowel
         cp ' '
         jr nz,$+4
         ld a,'_'
         cp '0'+10
         jr c,playtonedigit
        sub 64
        ld l,a
        ld h,0
        add hl,hl
        ld bc,tsounds
        add hl,bc
        ld c,(hl)
        inc hl
        ld b,(hl) ;bc=sample
        ld (cursampleaddr),bc
        ret

decodesampleframe
;╤Б╤В╤А╤Г╨║╤В╤Г╤А╨░ ╤Д╤А╨╡╨╣╨╝╨░ ╤Б╤Н╨╝╨┐╨╗╨░ (0=╨║╨╛╨╜╨╡╤Ж ╤Б╤Н╨╝╨┐╨╗╨░? 1=╨╖╨░╤Ж╨╕╨║╨╗╨╕╨▓╨░╨╜╨╕╨╡ ╨╜╨░ ╨┐╤А╨╛╤И╨╗╤Л╨╣ ╤Д╤А╨╡╨╣╨╝?):
 ;c=
;1: noiseoff
;1: tonedivon (╨╕╨╜╨░╤З╨╡ ╤А╨░╨▒╨╛╤В╨░╨╡╤В tonefreq)
;1: toneoff
;1: envon (╨╕╨╜╨░╤З╨╡ ╤А╨░╨▒╨╛╤В╨░╨╡╤В vol)
;4: vol (4 bit, 0 != ╨╛╤В╨║╨╗╤О╤З╨╡╨╜╨╕╨╡) ╨╕╨╗╨╕ envslow (1 bit) + envtype (3 bit) (envslow ╤В╨░╨║╨╢╨╡ ╨╛╤В╨▓╨╡╤З╨░╨╡╤В ╨╖╨░ ╨▒╤Л╤Б╤В╤А╨╛/╨╝╨╡╨┤╨╗╨╡╨╜╨╜╨╛ ╨┤╨╗╤П envtype=9))
 ;b=
;3: tonediv (2+1 bit, ╨▓╤Б╨╡╨│╨╛ 4 ╨▓╨░╤А╨╕╨░╨╜╤В╨░ ╨╕╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╡╤В╤Б╤П) ╨╕╨╗╨╕ tonefreq (12 bit? ╤А╨╡╨░╨╗╤М╨╜╨╛ ╨┐╨╛╨║╨░ ╨╕╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╡╤В╤Б╤П ╤В╨╛╨╗╤М╨║╨╛ =0)
;5: noise (5 bit)
curnote=$+1
        ld hl,tnotes+(4*2)
        bit 5,b
        jr z,$+3
         inc hl ;╤В╨░╨╝ *4/3
        ld e,(hl)
        ld d,0 ;de=base envfreq
        ld a,b ;noise freq
        ex af,af' ;'
        ld lx,c ;envon+vol
        ld a,b
        rlca
        rlca
        and 3
        add a,2
        ld b,a ;b=shift left ;2..5
        ld l,e
        ld h,d
tonefromenv0
        add hl,hl
        djnz tonefromenv0
         inc hl ;╤А╨░╨╖╨╗╨╕╨▓
        bit 6,c ;tonedivon
        jr nz,notonefreq
         ld l,d;0
notonefreq
        ld a,c
        and 7
        add a,8
        ld hx,a ;envtype
         cp 9 ;╤Г╨┤╨░╤А
        jr nz,noenvfreq
         ld de,300 ;?
noenvfreq
        ld a,c ;N?T?????
        rlca   ;?T?????N
        rla
        rla    ;?????N?? CY=T
        rla
        rla    ;???N??T?
         and 0x3f ;all ports IN
         or 0b00101101 ;TODO mix with current mixer value
         ;ld a,0b00101101 ;TN
         ;ld a,0b00111101 ;T-
         ;ld a,0b00101111 ;-N
        bit 3,c
        ret z;jr z,noenvslow
         sla e
         rl d ;╨╜╨░ ╨╛╨║╤В╨░╨▓╤Г ╨▓╨╜╨╕╨╖ ╨╕╨╗╨╕ ╨▒╤Л╤Б╤В╤А╨╛/╨╝╨╡╨┤╨╗╨╡╨╜╨╜╨╛ ╨┤╨╗╤П ╤Г╨┤╨░╤А╨░
;noenvslow
;de=envfreq
;hl=tonefreq
;hx=env type
;lx=volume
;a=mixer
;a'=noise freq
        ret


;i: --E 0028                                ;u: T-E 0028 (D-3)      
                      ;e: T-E 0028 (G-3)
                      ;a: --C 0050 (D-4)    ;O: T-- (D-2) (vol f)
;E: T-C 0050 (D-4)    ;A: T-E 0028 (D-4)

;N: --E 0050 (╤В╨╕╤Е╨░╤П) (1-2 frames)
;M: T-E 0028 (G-3) (1-2 frames)
;L: ??? ╤В╨╡╨╝╨▒╤А ╨║╨░╨║ u?O? (╨╝╨╛╨╢╨╜╨╛ ╤В╨╕╤И╨╡)
;l: --E 0028 (1 frame)??? ╤В╨╡╨╝╨▒╤А ╨║╨░╨║ i (╨╝╨╛╨╢╨╜╨╛ ╤В╨╕╤И╨╡)

;RR: (T-E --E) 0028 (D-4)

;s: noise=00
;S: noise=03
;c: noise=08
;C: noise=0b
;f: noise=11
;F: noise=13 (vol 8,9)
;x: noise=1d
;X: noise=1f

;T: noise=05 (vol 7,2)
;P: noise=11? (vol 7,2?)
;K: noise=1f? (vol f,c?)

;B: T-- (D-2) (vol f,e)??? ╤В╨╡╨╝╨▒╤А ╨║╨░╨║ O

;TS: noise=2,1 (vol d,b)

playsound
;hl=freq
;de=env freq
;hx=env type
;lx=volume
;a=mixer
;a'=noise freq
        exx
        ld bc,0xfffd
        ld de,0x0902 ;d=B volume, e=B freq
        out (c),e
        exx
        ld bc,0xbffd
        out (c),l      
        exx
        inc e ;B freq HSB
        out (c),e
        exx
        out (c),h
       
        exx
        ld e,7 ;mixer
        out (c),e
        exx
        out (c),a
        exx
        dec e;ld e,6 ;noise freq
        out (c),e
        exx
        ex af,af' ;' ;ld a,hy
        out (c),a

        exx
        ;ld d,0x09 ;B volume
        out (c),d ;B volume
        exx
        ld a,lx
        out (c),a
       
        exx
        ld e,0x0b ;env freq
        out (c),e
        exx
        out (c),e
        exx
        inc e ;env freq HSB
        out (c),e
        exx
        out (c),d
       
        ld a,hx
        cp 9 ;╤Г╨┤╨░╤А
        jr z,nocheckcurenv
curenv=$+1
        cp 0
        ret z
nocheckcurenv
        ld (curenv),a
        exx
        inc e ;ld e,0x0d ;env type
        out (c),e
        exx
        out (c),a
        ret

;D-2 = 0x6b0 = 1712 (32*4:3)
;D-3 = 0x358 = 856 (16*4:3)
;G-3 = 0x27c = 636 (16:1)
;D-4 = 0x1ac = 428 (8*4:3)

;╨Э╨╛╤В╤Л ╨╛╨│╨╕╨▒╨░╤О╤Й╨╡╨╣ (0028 = 4-╨╣ ╤В╨╛╨╜ ╨┐╨╡╤А╨╡╤З╨╕╤Б╨╗╨╡╨╜╨╕╤П, 1-╨╣ ╤В╨╛╨╜ ╨╜╨░╨╖╨╛╨▓╤С╨╝ 0, ╤З╤В╨╛╨▒╤Л ╨▓╨║╨╗╨╕╨╜╨╕╤В╤М ╨╜╨╛╤В╤Г ╤А╨╡ ╨╜╨░ ╨▓╤Б╤П╨║╨╕╨╣ ╤Б╨╗╤Г╤З╨░╨╣):
;0: C-3 = 0x003c = 59.875 (╨╛╤В ╨┤╨╡╨╗╨╡╨╜╨╕╤П 0xef8=3832)
;1: D-3 = 0x0035 = 53.3
;2: D#3 = 0x0032 = 50.3
;3: F-3 = 0x002c = 44.8
;4: G-3 = 0x0028 = 40.0
;5: ...
;╨╕╨╖ ╨╜╨╕╤Е ╨▓╤Л╤З╨╕╤Б╨╗╤П╤О╤В╤Б╤П ╨╜╨╛╤В╤Л ╤В╨╛╨╜╨░ (╤Б╨┤╨▓╨╕╨│ ╨▓╨╗╨╡╨▓╨╛ ╨╜╨░ N, ╨▓╨╛╨╖╨╝╨╛╨╢╨╜╨╛╨╡ ╨┤╨╡╨╗╨╡╨╜╨╕╨╡ ╨╜╨░ 3, ╨┐╤А╨╕╨▒╨░╨▓╨╗╨╡╨╜╨╕╨╡ ╤А╨░╨╖╨╗╨╕╨▓╨░)
;╨╜╨╛ ╤В╨╛╨╜ ╨╝╨╛╨╢╨╡╤В ╨▒╤Л╤В╤М ╨╖╨░╨┤╨░╨╜ ╤П╨▓╨╜╨╛ (╨┤╨╗╤П ╤В╨╕╤Е╨╛╨╣ ╨╛╨│╨╕╨▒╨░╤О╤Й╨╡╨╣), ╨╛╨│╨╕╨▒╨░╤О╤Й╨░╤П ╤В╨╛╨╢╨╡? (╨┤╨╗╤П ╤Г╨┤╨░╤А╨░)

;TODO ╨╕╨╗╨╕ ╨▓╤Б╨╡ ╨╜╨╛╤В╤Л ╨▓ 2 ╨╛╨║╤В╨░╨▓╨░╤Е, ╤З╤В╨╛╨▒╤Л ╨╝╨╛╨│╨╗╨╛ ╨┐╨╡╤В╤М?

        macro DWNOTE t
        db t
        db (t)*4/3
        endm

;TODO *2 ╨┤╨╗╤П ╤В╨╛╤З╨╜╨╛╤Б╤В╨╕ ╤А╨░╤Б╤З╤С╤В╨░ 4/3?
tnotes
        DWNOTE 60 ;0: C
        DWNOTE 53 ;1: D
        DWNOTE 50 ;2: D#
        DWNOTE 45 ;3: F
        DWNOTE 40 ;4: G
        DWNOTE 38 ;5: G#
        DWNOTE 36 ;6: A
        DWNOTE 32 ;7: H
        DWNOTE 30 ;8: c
        DWNOTE 27 ;9: d

;╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤М ╤Д╨╛╨╜╨╡╨╝╤Л - ╨┐╤А╨╛╤Б╤В╨╛ ╤Г╨║╨░╨╖╨░╤В╨╡╨╗╤М ╨╜╨░ ╤Б╤Н╨╝╨┐╨╗
;╤В╨╛╨╜╤Л ╨╕ ╤Б╨┐╨╡╤Ж╤Б╨╕╨╝╨▓╨╛╨╗╤Л ╨┐╤А╨╛╨▓╨╡╤А╤П╤В╤М ╨▓╤А╤Г╤З╨╜╤Г╤О ╨┐╨╡╤А╨╡╨┤ ╤Н╤В╨╕╨╝
;╨╡╤Б╨╗╨╕ ╨┐╨╛╤В╨╛╨╝ ╨▓╤Л╤П╤Б╨╜╨╕╤В╤Б╤П, ╤З╤В╨╛ ╨╛╨╜╨╕ ╨▓╤Б╨╡ ╨┐╨╛ 2 ╤Д╤А╨╡╨╣╨╝╨░ ╨╕╨╗╨╕ 1+╨▓╨╡╤З╨╜╤Л╨╣ ╨┐╨╛╨▓╤В╨╛╤А, ╤В╨╛ ╨╝╨╛╨╢╨╜╨╛ ╨▓╨╜╨╡╤Б╤В╨╕ ╤Б╤Н╨╝╨┐╨╗ (2*2 ╨▒╨░╨╣╤В╨░) ╨┐╤А╤П╨╝╨╛ ╨▓ ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤М

tsounds
        dw snd_schwa
        dw snd_A
        dw snd_B
        dw snd_C
        dw snd_D
        dw snd_E
        dw snd_F
        dw snd_G
        dw snd_H
        dw snd_I
        dw snd_J
        dw snd_K
        dw snd_L
        dw snd_M
        dw snd_N
        dw snd_O
        dw snd_P
        dw snd_Q
        dw snd_R
        dw snd_S
        dw snd_T
        dw snd_U
        dw snd_V
        dw snd_W
        dw snd_X
        dw snd_Y
        dw snd_Z
        dw snd_pause
        dw snd_pause
        dw snd_pause
        dw snd_ishort
        dw snd_pause

        dw snd_backtick
        dw snd_a
        dw snd_b
        dw snd_c
        dw snd_d
        dw snd_e
        dw snd_f
        dw snd_g
        dw snd_h
        dw snd_i
        dw snd_j
        dw snd_k
        dw snd_l
        dw snd_m
        dw snd_n
        dw snd_o
        dw snd_p
        dw snd_q
        dw snd_r
        dw snd_s
        dw snd_t
        dw snd_u
        dw snd_v
        dw snd_w
        dw snd_x
        dw snd_y
        dw snd_z
        dw snd_pause
        dw snd_hole
        dw snd_pause
        dw snd_pause
        dw snd_pause

snd_r ;TODO r - ╨╛╨┤╨╜╨╛ ╨║╨╛╨╗╨╡╨▒╨░╨╜╨╕╨╡
snd_R ;RR: (T-E --E) 0028 (D-4) (8*4:3)
        db 0b11110110, 0b01100000
        db 0b11010110, 0b01100000+16
        ;db 0b11000110, 0b01100000
        ;db 0b11100110, 0b01100000
        ;db 0b11000110, 0b01100000
        db 0

snd_Y ;TODO ╨Щ ╨▓ ╨╜╨░╤З╨░╨╗╨╡ ╤Б╨╗╨╛╨│╨░, ╨░╨╜╨│╨╗╨╕╨╣╤Б╨║╨╛╨╡ /j/
snd_y ;╨Щ ╨▓ ╨║╨╛╨╜╤Ж╨╡ ╤Б╨╗╨╛╨│╨░ (╨┤╨╛╨╗╤М╤И╨╡, ╤З╨╡╨╝ ', ╨╜╨╛ ╨╜╨╡ ╨╕╨╝╨╡╨╡╤В ╨┤╨╗╨╕╤В╨╡╨╗╤М╨╜╨╛╤Б╤В╨╕ ╨│╨╗╨░╤Б╨╜╨╛╨╣)
        db 0b11110110, 0b00000000
        db 0b11110110, 0b00000000
        db 0
snd_I ;╨╜╨╡ ╨┐╨╛╨╗╤Г╤З╨░╨╡╤В╤Б╤П ╨╝╤П╨│╤З╨╡, ╤З╨╡╨╝ i
snd_i ;i: --E 0028
        db 0b11110110, 0b00000000
        db 1

snd_E ;E: T-C 0050 (D-4) (8*4:3)
        db 0b11011100, 0b01100000
        db 1

snd_ishort ;shoft for diphthongs
        db 0b11110110, 0b00000000
        db 0

snd_backtick ;untested
        db 0b01000000+15, 0b00000000
        db 0

snd_schwa ;1 ╤Д╤А╨╡╨╣╨╝ ╨┤╨╗╤П ╨╜╨░╤З╨░╨╗╨░ ╨л
        db 0b11010110, 0b10000000
        db 0

snd_e ;e: T-E 0028 (G-3) (16:1)
        db 0b11010110, 0b10000000
        db 1

snd_A ;A: T-E 0028 (D-4) (8*4:3)
        db 0b11010110, 0b01100000
        db 1

snd_o
snd_O ;O: T-- (D-2) (vol f) (32*4:3)
        db 0b11000000+15, 0b11100000
        db 1

snd_W
        db 0b11010110, 0b10100000
        db 0b11010110, 0b10100000
        db 0
snd_w ;shoft for diphthongs
        db 0b11010110, 0b10100000
        db 0
snd_U
snd_u ;u: T-E 0028 (D-3) (16*4:3)
        db 0b11010110, 0b10100000
        db 1

snd_a ;a: --C 0050 (╨н, ╨┐╤А╨╡╨┤╤Г╨┤╨░╤А╨╜╨╛╨╡ ╨Р)
        db 0b11111100, 0b00000000
        db 1

snd_p ;TODO p - ╨│╤Г╨▒╨╜╨╛-╨╖╤Г╨▒╨╜╨╛╨╣ ╨▓╨╖╤А╤Л╨▓╨╜╨╛╨╣
snd_P
        db 0b11011001, 0b11100000+13
        ;db 0b01100000+10, 0b00000000+3
        db 0

snd_T ;T: noise=05 (vol 7,2)
        ;db 0b01100000+8, 0b00000000+5
        db 0b01110001, 0b00000000+3;5
        ;db 0b01100000+2, 0b00000000+5
        db 0
snd_t ;untested ;TS: noise=2,1 (vol d,b) ;TODO t - ╨▒╨╛╨║╨╛╨▓╨╛╨╣ ╨│╨╗╤Г╤Е╨╛╨╣ ╨▓╨╖╤А╤Л╨▓╨╜╨╛╨╣ ╨╖╨▓╤Г╨║
        db 0b01111001, 0b00000000+0
        ;db 0b01100000+10, 0b00000000+0
        db 0b01100000+8, 0b00000000+0
        db 0

snd_K ;K: noise=31? (vol 7,2?)
        db 0b01110001, 0b00000000+31
        ;db 0b01100000+2, 0b00000000+31
        db 0
snd_k
        db 0b01111001, 0b00000000+29
        ;db 0b01100000+9, 0b00000000+29
        ;db 0b01100000+4, 0b00000000+29
        db 0

snd_Q ;q - ╨▓╨╖╤А╤Л╨▓╨╜╨╛╨╣ ╨│╨╗╤Г╤Е╨╛╨╣ ╨╖╨▓╤Г╨║ ╤Б╨┐╨╕╨╜╨║╨╛╨╣ ╤П╨╖╤Л╨║╨░ ;untested
        db 0b01100000+7, 0b00000000+11
        db 0b01100000+2, 0b00000000+11
        db 0
snd_q ;q - ╨▓╨╖╤А╤Л╨▓╨╜╨╛╨╣ ╨╖╨▓╨╛╨╜╨║╨╕╨╣ ╨╖╨▓╤Г╨║ ╤Б╨┐╨╕╨╜╨║╨╛╨╣ ╤П╨╖╤Л╨║╨░ ;untested
        db 0b01110110, 0b00000000+11
        db 0b01110110, 0b00000000+11
        db 0

;B: T-- (D-2) (vol f,e)??? ╤В╨╡╨╝╨▒╤А ╨║╨░╨║ O
snd_B
snd_b
        db 0b11000000+15, 0b11100000
        ;db 0b11000000+13, 0b11100000
        db 0

snd_D
        db 0b11000000+15, 0b10100000
        ;db 0b11000000+13, 0b10100000
        db 0
snd_d ;untested
        db 0b11000000+15, 0b10100000
        db 0b01000000+13, 0b10100000+3
        ;db 0b01110100, 0b00000000+0
        db 0

snd_G ;untested
        db 0b11000000+15, 0b10100000
        db 0b01010100, 0b00000000+31
        db 0
snd_g ;untested
        db 0b01010100, 0b00000000+29
        db 0b01010100, 0b00000000+29
        db 0

snd_V ;v: -NC 0028?
        db 0b01110100, 0b00000000+19
        db 0b01110100, 0b00000000+19
        db 0
snd_v ;v: -NC 0028?
        db 0b01110100, 0b00000000+17
        db 0b01110100, 0b00000000+17
        db 0

snd_Z ;untested
        db 0b01110100, 0b00000000+3
        db 0b01110100, 0b00000000+3
        db 0
snd_z ;untested
        db 0b01110100, 0b00000000+0
        db 0b01110100, 0b00000000+0
        db 0

snd_J ;untested ╨Ц
        db 0b01110100, 0b00000000+11
        db 0b01110100, 0b00000000+11
        db 0
snd_j ;untested ╨Ц'
        db 0b01110100, 0b00000000+8
        db 0b01110100, 0b00000000+8
        db 0

snd_F ;F: noise=13 (vol=8,9?)
        db 0b01100000+8, 0b00000000+19
        db 0b01100000+9, 0b00000000+19
        db 0
snd_f ;f: noise=11 (vol=8,9?)
        db 0b01100000+8, 0b00000000+17
        db 0b01100000+9, 0b00000000+17
        db 0

snd_S ;S: noise=03 (vol=8,9?)
        db 0b01100000+8, 0b00000000+3
        db 0b01100000+9, 0b00000000+3
        db 0
snd_s ;s: noise=00 (vol=8,9?)
        db 0b01100000+8, 0b00000000+0
        db 0b01100000+9, 0b00000000+0
        db 0

snd_C ;╨б: noise=0b (vol=8,9?) ╨и
        db 0b01100000+8, 0b00000000+11
        db 0b01100000+9, 0b00000000+11
        db 0
snd_c ;╤Б: noise=08 (vol=8,9?) ╨й
        db 0b01100000+8, 0b00000000+8
        db 0b01100000+9, 0b00000000+8
        db 0

snd_H
snd_X ;X: noise=1f (vol=8,9?)
        db 0b01100000+8, 0b00000000+31
        db 0b01100000+9, 0b00000000+31
        db 0
snd_h
snd_x ;x: noise=1d (vol=8,9?)
        db 0b01100000+8, 0b00000000+29
        db 0b01100000+9, 0b00000000+29
        db 0

snd_n
snd_N ;N: --E 0050 (╤В╨╕╤Е╨░╤П) (1-2 frames)
        db 0b10011110, 0b00000000
        db 0b10011110, 0b00000000
        db 0

snd_m ;TODO m - ╨│╤Г╨▒╨╜╨╛-╨╖╤Г╨▒╨╜╨╛╨╣
snd_M ;M: T-E 0028 (G-3) (1-2 frames)??? ╤В╨╡╨╝╨▒╤А ╨║╨░╨║ u
        db 0b11010110, 0b10100000
        db 0b11010110, 0b10100000
        db 0

snd_L ;L: ??? ╤В╨╡╨╝╨▒╤А ╨║╨░╨║ u?O? (╨╝╨╛╨╢╨╜╨╛ ╤В╨╕╤И╨╡)
        db 0b11000000+13, 0b11100000
        db 0b11000000+13, 0b11100000
        db 0
snd_l ;l: --E 0028 (1 frame)??? ╤В╨╡╨╝╨▒╤А ╨║╨░╨║ i (╨╝╨╛╨╢╨╜╨╛ ╤В╨╕╤И╨╡)
        db 0b10010110, 0b00000000
        db 0b10010110, 0b00000000
        db 0

snd_hole ;╨╖╨░╨║╤А╤Л╤В╨╕╨╡ ╨┐╨╡╤А╨╡╨┤ ╨▓╨╖╤А╤Л╨▓╨╜╤Л╨╝
        db 0b11000000+0, 0b00000000+0
snd_empty
        db 0

snd_pause ;pause
        db 0b11000000+0, 0b00000000+0
        db 1