Página 3 de 4
Re: Cambiar los efectos de sonido
Publicado: Mar, 18 Feb 2014, 13:16
por Jarlaxe
Pues a mi me cuesta siempre encontrar donde pones las nuevas versiones de tu juego
Puedes ponerme el enlace para guardarlo para próximas veces?
Gracias!
Re: Cambiar los efectos de sonido
Publicado: Mar, 18 Feb 2014, 13:31
por na_th_an
$this->bbcode_second_pass_quote('son_link', 'B')ueno, sigo con esto y me encuentro con lo siguiente, y es que algunos de los sonidos difieren, y mucho, del que suena en BeepFX.
Como BeepFX permite crear un .tap con los sonidos decido probar por si es algo de la propia maquina, pero en ese tap me suena tal y como debe de sonar.
Adjunto el beeper.h y el tap (solo tenéis que pulsar 2 e intro para que suene el laser). Ya sabéis donde esta siempre la ultima compilación del juego
Probablemente es porque el código del beeper quede por debajo de $C000, que es la zona de memoria en contienda. Eso significa que cuando la ULA tiene que leer los primeros 16K de RAM para ver qué hay en la pantalla y dibujarlo, hace que la CPU se espere. Esto provoca que tareas de CPU intensiva como tocar un sonido se resientan, ya que la frecuencia del sonido que está sonando depende de los cambios de 0 a 1 en el altavoz. Lamentablemente, es complicado ubicar los sonidos en otra parte. El grueso del motor y todos los buffers gráficos se colocan al final de la RAM para intentar que todo se mueva más rápido.
Re: Cambiar los efectos de sonido
Publicado: Mar, 18 Feb 2014, 17:42
por son_link
Pues entonces nada de usar samples en el 48K.
Estoy probando Sound FX, pero no se como sacar los sonidos que guardo para ver si se pueden exportar para ver si se pueden usar en el beeper.h
Re: Cambiar los efectos de sonido
Publicado: Mié, 19 Feb 2014, 11:56
por na_th_an
Los sonidos "normales", compuestos por tonos, ruido, y slides, que se pueden crear con BeepFX, suenan casi bien. Cierto que es más cómodo digitalizar, pero creo que para una máquina de 48K es mejor tirar de síntesis en vez de reproducción de samples. Si no te salen, en el proyecto de ejemplo que viene con BeepFX hay una barbaridad de efectos, y algunos están realmente chulos. Además, puedes probar a modificarlos para dejarlos perfectos.
Lo único que tienes que hacer es secuenciarlos en tu proyecto de acuerdo a este orden:
$this->bbcode_second_pass_code('', '/*
TABLA DE SONIDOS
n Sonido
----------
0 Enemy destroyed
1 Enemy hit
2 Something
3 Jump
4 Player hit
5 Enemy destroyed 2
6 Shot
7 Item #1 (item)
8 Item #2 (key)
9 Item #3 (life)
*/')
El beeper.h que te pasé con el player de beepfx antiguo usa un orden diferente porque ese beeper.h era el que usábamos en la rama 4 de la Churrera (que dejamos en vía muerta), la de Ramiro el Vampiro.
Re: Cambiar los efectos de sonido
Publicado: Mié, 19 Feb 2014, 12:05
por na_th_an
$this->bbcode_second_pass_quote('son_link', 'P')ues entonces nada de usar samples en el 48K.
Estoy probando Sound FX, pero no se como sacar los sonidos que guardo para ver si se pueden exportar para ver si se pueden usar en el beeper.h
Si te refieres a esto
http://www.worldofspectrum.org/infoseek ... id=0011124 se trata del generador que usábamos en las primeras versiones de la churrera.
Básicamente tienes que crear tus sonidos y exportarlos desde el emulador a un archivo .bin. Por defecto, Sound FX crea los sonidos en 30000 y cada sonido ocupa 50 bytes. Si has creado 9 sonidos, deberás exportar 450 bytes desde 30000 y grabarlos en un archivo "beeper.bin". En la mayoría de los emuladores se puede hacer fácilmente.
En la churrera 1.0 y 2.0, beeper.h tenía esta pinta:
$this->bbcode_second_pass_code('', '// Beeper.h
// Carga las rutinas de beeper y las lanza
// Copyleft 2010 The Mojon Twins
extern unsigned char beeper [];
#asm
._beeper
BINARY "beeper.bin"
#endasm
void peta_el_beeper (unsigned char n) {
#asm
xor a
ld (23624), a
#endasm
switch (n) {
case 0:
#asm
call _beeper
#endasm
break;
case 1:
#asm
call _beeper + 50
#endasm
break;
case 2:
#asm
call _beeper + 100
#endasm
break;
case 3:
#asm
call _beeper + 150
#endasm
break;
case 4:
#asm
call _beeper + 200
#endasm
break;
case 5:
#asm
call _beeper + 250
#endasm
break;
}
}
')
Según veo el código es una caca y podría haberse hecho bastante mejor, pero nos sirve
Como ves, dependiendo del valor que se le pase a peta_el_beeper, ejecutará el sonido correspondiente llamando a la direccion base donde se carga el binario (que es reubicable) sumándole el número del sonido por 50.
La churrera original solo usaba seis sonidos. Si tienes más, tendrás que añadir más código (o hacerlo genérico)