cursos:ensamblador:anexo1

¡Esta es una revisión vieja del documento!


Anexo (I)


La rutina de la ROM BEEPER (en $03b5), nos permite reproducir sonido pasándole los siguientes parámetros:


  • BEEPER ($03b5) -Reproduce una nota de sonido de longitud DE (f*t) y pitch HL.

    • DE = duración_en_segundos * frecuencia
    • HL = (437500 / frecuencia) - 30.125


Para poder reproducir melodías en el Spectrum (alojadas por ejemplo en una tabla DEFB), necesitaremos conocer las frecuencias y el pitch de cada nota de la escala musical, de modo que podamos hacer:


    ld de, frecuencia_deseada*duracion_en_segundos
    ld hl, pitch_para_esa_nota
    call $03b5


Las notas, extraídas del libro Cracking the code on the ZX Spectrum, son las siguientes:


Note Frequency (DE = f*duración_en_seg) Pitch (HL)
C 0 16.35 $6868
C#0 17.32 $628d
D 0 18.35 $5d03
D#0 19.44 $57cb
E 0 20.60 $52d7
F 0 21.83 $4e2b
F#0 23.12 $49cc
G 0 24.50 $45a3
G#0 25.96 $41b6
A 0 27.50 $3e06
A#0 29.14 $3a87
B 0 30.87 $373e
C 1 32.70 $3425
C#1 34.64 $3137
D 1 36.70 $2e72
D#1 38.88 $2bd6
E 1 41.20 $295c
F 1 43.66 $2706
F#1 46.24 $24d7
G 1 49.00 $22c2
G#1 51.92 $20cc
Note Frequency (DE = f*duración_en_seg) Pitch (HL)
A 1 55.00 $1ef4
A#1 58.28 $1d34
B 1 61.74 $1b90
C 2 65.40 $1a03
C#2 69.20 $188c
D 2 73.40 $172a
D#2 77.76 $15dc
E 2 82.40 $149f
F 2 87.32 $1374
F#2 92.48 $125c
G 2 98.00 $1152
G#2 103.84 $1057
A 2 110.00 $f6b
A#2 116.56 $e8b
B 2 123.48 $db8
C 3 130.80 $cf2
C#3 138.56 $0c37
D 3 146.80 $b86
D#3 155.52 $adf
E 3 164.80 $a40
F 3 174.64 $9ab
Frequency (DE = f*duración_en_seg) Pitch (HL)
F#3 184.96 $91f
G 3 196.00 $89a
G#3 207.68 $81c
A 3 220.00 $7a6
A#3 233.12 $736
B 3 246.96 $6cd
C 4 261.60 $66a
C#4 277.12 $60c
D 4 293.60 $5b3
D#4 311.04 $560
E 4 329.60 $511
F 4 349.28 $4c6
F#4 369.92 $480
C 4 392.00 $43d
G#4 415.36 $3ff
A 4 440.00 $3c4
A#4 466.24 $38c
B 4 493.92 $357
C 5 523.20 $326
C#5 554.24 $2f7
D 5 587.20 $2ca
D#5 622.08 $2a1
E 5 659.20 $279
F 5 698.56 $254
F#5 739.84 $231
G 5 784.00 $20f
G#5 830.72 $1f0
Note Frequency (DE = f*duración_en_seg) Pitch (HL)
A 5 880.00 $1d3
A#5 932.48 $1b7
B 5 987.84 $19c
C 6 1046.40 $183
C#6 1108.48 $16c
D 6 1174.40 $156
D#6 1244.16 $141
E 6 1318.40 $12d
F 6 1397.12 $11b
F#6 1479.68 $109
G 6 1568.00 $f8
G#6 1661.44 $e9
A 6 1760.00 $da
A#6 1864.96 $cc
B 6 1975.68 $bf
C 7 2092.80 $b2
C#7 2216.96 $a7
D 7 2348.80 $9c
D#7 2488.32 $91
E 7 2636.80 $87
F 7 2794.24 $7e
F#7 2959.36 $75
G 7 3136.00 $6d
G#7 3322.88 $65
A 7 3520.00 $5e
A#7 3729.92 $57
B 7 3951.36 $50

Por ejemplo, para reproducir una nota G#4 durante medio segundo:

  • DE = 415.36 (de la tabla) * 0.5 segundos = 207 = $cf
  • HL = $19f (de la tabla)
  • call $03b5


[ | ]

  • cursos/ensamblador/anexo1.1705855827.txt.gz
  • Última modificación: 21-01-2024 16:50
  • por sromero