NEOJUKEBOX 2.7   Miguel Angel Horna     mahorna@teleline.es

        INTRODUCCION

Qu es NeoJukebox?, Neojukebox es un programa que permite escuchar todas
las musicas y sonidos de los juegos de NEO GEO. Estas musicas son
interpretadas por el hardware a partir de samples por lo que es necesario
emular parte del sistema NEO GEO.

En un juego, los datos de secuenciacion de la partitura estn contenidos en
el archivo xxxxxx_m1.rom, ste contiene el programa del procesador Z80 que
es el que va generando los mensajes hacia el generador de sonido, un
Yamaha 2610. Este utiliza los samples que tiene en una rom (xxxxx_v1.rom,
xxxxx_v2.rom, etc) para generar la melodia.

Para la emulacin del Z80 se ha utilizado el core RAZE de Richard Mitton.
La emulacin del YM2610 se basa en el cdigo de Hiromitsu Shioya utilizando
las libreras de sonido SEAL.

Neojuke no esta basado en drivers (como el MAME), lo que permite que cualquier
juego nuevo que se dumpee (? dumpear?) funcionar sin tener que cambiar nada
simplemente lo cargas como los dems y a correr.

        USO
Ahora Neojuke es Winamp!!, si, podeis usar las Skins del winamp para cambiar
el aspecto de Neojuke al que ms os guste, con unos pequeos cambios (ver
usando Skins ms abajo)

Se pueden usar las teclas normales de reproduccion del winamp (ZXCVB), as
como la tecla de cargar (L).

Tambin hay atajos para cambiar los nmeros de pista y sonido:
  Q Track+10   W Track+1     E Sound+10   R Sound+1

  A Track-10   S Track-1     D Sound-10   F Sound-1

Los nmeros de pista y sonido se modifican con las flechas que hay debajo de
ellos, la derecha cambia el dgito de la derecha y la izquierda..., pues el
de la izquierda, cual va a ser.

El botn de la PlayList abre ahora el selector de favoritos, que almacena
nombres para tus canciones favoritas. Puedes seleccionar el nombre de una
cancin de la lista en vez de tener que cambiar los nmeros de sonido y pista
para encontrarla. Para almacenar una nueva cancin, escribe el nombre en el
hueco y pulsa Add, y quedar grabada por los siglos de los siglos (ms o
menos).
Los favoritos se almacenan en un archivo llamado "music.dat" en el directorio
de NeoJukebox. Este archivo tiene la estructura de un archivo INI de windows
para que puedas aadir las canciones a mano o cortar y pegar canciones de
otro archivo. El nombre de seccion (el que va entre corchetes) es el nombre
del archivo _m1 de la msica. La clave (antes del igual) son los numeros de
pista y sonido uno detrs del otro (pista 1 sonido 10 hacen 110) y el valor
es el texto que aparecer en la lista. Es una buena idea hacer una gran base
de datos con nombres de canciones. Si alguien quiere coordinar la compilacin,
que me mande un mail. Si no hay nadie, podeis mandarme vuestros archivos
de datos y yo intentar compilarlos en uno grande.

NUEVO: Se puede poner un ttulo al juego, aadiendo una clave Title en su
seccin (p.ej: Title=Waku Waku 7 en la seccion [waku7_m1.rom])

El bottn Shuffle no funciona an.
El botn del punto rojo junto al Shuffle es el botn de grabacin (ver
Grabacin ms abajo)
El botn que hay junto al de la PlayList (que pone SET) abre la ventana de
configuracion (ver configuracin).
Si haces click en la esquina inferior derecha (como en Winamp) te aparecer
la ventana del "Acerca de..."

        GRABACION

Grabar es fcil, pulsa el botn de Record y ya est, pero primero hay algunas
cosas importantes que deberais saber.
Si no hay musica tocando, cuando pulses el botn de grabar, la pista y sonido
actuales comenzarn a sonar, esto sirve para sacar las canciones sin blancos
al principio.
Si hay musica tocando, entonces lo que suene en ese momento se comenzar a
grabar en el archivo wav.
El nombre del archivo WAV creado es el que aparezca en el hueco de los
favoritos. Puedes grabar con ese nombre aunque no lo hayas grabado en la lista
Si no hay nada escrito en el hueco, entonces el nombre se construye con la
pista y el sonido uno detrs de otro.
Si el archivo ya existe, se SOBREESCRIBIRA sin preguntar.
Si pulsas el boton de Stop, la grabacin no se detendr, para dejar de grabar,
pulsa el botn de grabar otra vez.
Es importante que sepas que los archivos WAV se graban a 16 bits y estreo por
lo que pueden llegar a ocupar mucho, pero ya sabis la solucin.

        CONFIGURACION
Directories:
        No pongas la barra final en el nombre de directorio, sino petar.

        Rom directory: Es el directorio en el que apareces cuando pulsas el
        botn de cargar.
        Recording Directory: Es el directorio donde se grabarn los archivos
        WAV.
        Skin Directory: Indica el directorio de la skin a utilizar.

Sound Options:
        Sampling Rate: Ajusta la frecuencia de muestreo del sonido producido.
        Puede mejorar el rendimiento en ordenadores lentos.

Visualization:
        Always on top: Hace que la ventana de Neojuke sea siempre visible.

Adems cada uno de los drivers aade ms opciones a este menu.

        USANDO SKINS

Puedes usar cualquier Skin del Winamp para cambiar el aspecto de Neojuke, pero
necesitars algunos archivos adicionales con botnes que no tiene el winamp:

        Letters.bmp: Contiene las letras de la A a la F para hacer el nmero
                     de pista y sonido en hexadecimal.
        Neojuke.bmp: Contiene algunos botones especiales de Neojuke:
                Las flechitas para cambiar de sonido y pista
                Las palabras "TRACK" y "SOUND" que aparecen bajo los nmeros
                El botn de Grabacin.
                El botn de configuracin.

        Echale un vistazo a la skin que viene para ver como tiene que ser.

        SOBRE LAS PISTAS Y SONIDOS

La organizacin en pistas hace que con mensajes de pequeo tamao (1 byte) se
pueda acceder a una gran cantidad de secuencias.
Las pistas tienen un problema, y es que cada juego utiliza un subconjunto
distinto de stas, dependiendo de la versin del archivo m1.
La versin ms comn es la 1.7 (kofs, samurais, y la mayoria de juegos), estos
utilizan la pista 7 para musicas y las pistas por encima del 10h para sonidos.
Los Metal Slug utilizan la pista 0 para musica y la 10h para sonido.
El encontrar una pista con sonido es cuestion de probar o de analizar el
cdigo del Z80.

Hay algunas pistas que son especiales:
        La pista 1 resetea el sistema y desactiva la salida de sonido (ignora
        todos los comandos enviados tras ella.
        La pista 2 toca la meloda de arranque de la mquina (la del logo de
        NEOGEO girando)
        La pista 3 activa la recepcin de comandos y la salida de sonido.

Ya no hace falta hacer el truco de tocar el sonido ff para que funcionen las
voces.

Los Metal slug no rulan porque necesitan una inicializacin especial, espero
arreglarlo en la proxima versin.

        HISTORIAL

v1.00   Primera versin. Utilizando el MAME para emular los sonidos.
v1.01   Arreglado un error que impeda escuchar las voces en juegos como
        Samurai Shodown

v2.00   Comienzo desde cero. Escritura completa del cdigo.
v2.01   Arreglado un error en el cambio de bancos del Z80 que impedia escuchar
        todas las secuencias de una pista.
v2.02   Cambio al core de Z80 de Neil Bradley.
v2.03   Arreglado el problema de la velocidad de los juegos, ahora todos
        deberan ir bien.
        Aadida la posibilidad de cambiar la velocidad
v2.1    Portado a Windows 9x
        Soporte de archivos comprimidos en ZIP
        Grabacin de sonido en WAV
        Canciones favoritas
v2.11   Arreglado un error que hacia que la msica tocara a saltos,
        especialmente en ordenadores AMD
v2.20   Apariencia de Winamp, a travs de Skins
        Quitado el cambio de velocidad (daba muchos problemas)
        Aadida pantalla de configuracin
        Varias mejoras visuales
        Arreglado un error en las frecuencias que haca que a veces los
        sonidos se repitieran otra vez desde el principio.
        Cambiada la deteccion de nombre de _m1 a m1 para soportar mas romsets.
        Los juegos acabados en V11,V12 deberan funcionar tambien ahora.
        Aumentada la prioridad del thread de sonido, ahora el sonido no salta
        al cambiar de tarea o ventana.
v2.21   Arreglados los problemas grficos cuando se usan fuentes grandes en
        Windows
        Los juegos acabados en -m1 realmente no funcionaban (ya si)
        Los juegos acabados en V11,V12 tampoco funcionaban (ahora tambien van)
v2.21a  La lista de canciones se graba correctamente al salir
v2.3    Se ha reescrito el cdigo principal de emulacin, ahora es hasta 4
        veces ms rpido.
        Cambio al core RAZE, ya que el core en C de Neil Bradley tenia algunos
        problemas (no consigo compilar el RAZE en archivos compatibles con
        Borland C++, si alguien sabe como, que me lo diga (el NASM no funciona
        bien con archivos OMF)).
        Todos los juegos que antes no funcionaban deberan funcionar ahora.
        Zedblade, Shock troopers, Breakers,Breakers Revenge, etc..
        Street Hoop funciona :musicas pista 16 sonidos 1,2,3....
                              efectos pista 18 sonidos 1,2,3....
        Metal Slug 1,2,X     :musicas pista 0  sonidos 21,22,23,...
                              efectos pista 10
        Ahora si que funcionan los juegos acabados en V11, V12 (comprobado)
v2.4    Control de volumen
        Control de velocidad (en el control de balance del Winamp)
        (usa las teclas , y . para cambiarlo sin el ratn)
v2.5    Skins comprimidas
        Posibilidad de cambiar de skin
        Arreglado un error que hacia que el volumen bajase cada vez que se
        iniciaba Neojuke
        Posibilidad de seleccionar los canales del YM2610 independientemente
v2.6    Se ha separado la GUI de los modulos de emulacin. Se pueden aadir ms
        mdulos (cuando los haga) y funcionarn sin tocar nada.
        Puesta la skin a la PlayList. El campo para escribir el nombre es el que
        hay debajo de la lnea, y el botn es el de aadir archivos.
        Demasiados cambios internos para acordarme de todos.
v2.7    Se pueden borrar canciones de la PlayList, asi como cambiarles el
        nombre. Para borrar, utiliza el botn de borrar (pues claro,
        cual si no?). Para cambiar el nombre de una cancin, pincha en su
        nombre en la lista, cmbiala en el campo de edicin y luego pulsa el
        botn de aadir, as se sobreescribir la antigua con el nombre nuevo.
	Aadido el botn "Misc Options" en la Playlist:
		Puedes poner un ttulo a las roms, que aparecer en vez del nombre
		del archivo en la lnea de informacin
		Puedes decidir si quieres que los datos se graben en la base de
		datos global (music.dat) o en un archivo separado 
		(nombre_de_la_rom.dat). Esto hace que sea ms fcil compartir 
		archivos de datos entre tus amigos.
	La GUI puede procesar mensajes enviados por los drivers para simular
	pulsaciones de botones, cambiar el sonido y pista, etc...

La direccin de mi pgina ha cambiado, ahora es teleline.terra.es/personal/mahorna
La direccin de correo sigue siendo la misma.

        PROYECTOS

Estoy buscando emulaciones del chip QSound de las placas CPS2 y CPS1 para
hacer algo parecido al QSP de Sardu. Si tienes informacin o codigos fuentes
sobre esto, mandamelos.

Mandadme vuestros Music.dat files para hacer una gran base de datos con
canciones.

Arreglar todos los errores (imposible).

        ERRORES CONOCIDOS
???

        NOTAS FINALES

Si podeis, escuchad las musicas de Waku Waku 7. Me encantan esas musiquitas
japonesas, y ms an la de Arina, que es cantada (track 7 sound 32).

Este programa usa DirectSound, por lo que teoricamente es posible lanzar
varias veces el programa, pero requiere un montn de procesador (realmente
mucho mucho)

Hay un archivo de ejemplo de lista llamado music.da_ para que no te machaque
el tuyo si ya tienes uno hecho.

        AGRADECIMIENTOS

A toda la gente que me manda mails con sugerencias y errores

A HyprF0N1C por el maravilloso icono.

A Martin Liguori por sus sugerencias.

A Emulatronia por dejarme su Skin y publicar mi programa.


Para errores y sugerencias, enviad un mail a:

Miguel Angel Horna
http://teleline.terra.es/personal/mahorna
mahorna@teleline.es
432937@cepsz.unizar.es
