Bueno, estaba un poco aburrido, así que decidí hacer este tutorial para el resto de la gente, espero que a alguien le interese o sea útil:
Tutorial para cambiarle la música a un juego: Crazy Taxi
Ponemos el backup en la compactera y vemos el listado de archivos. Encontraremos uno de poco más de 30 MB, llamado "SONG01.AFS". Ahí está la música del juego en
formato ADX. Para los curiosos, si quieren ver / escuchar los archivos pueden extraerlos con dos programas diferentes:
afs_extract o adx_encoderhelper
el primero es más sencillo, apenas un pequeño ejecutable de línea de comando donde simplemente se pone como parámetro el nombre del archivo .AFS donde están los archivos .ADX que queremos extraer, o sea:
afs_extract SONG01.AFS
Con el otro programa, el adx_encoderhelper se puede hacer lo mismo, pero éste tiene una pequeña gui con algunas opciones más que tal vez hacen más sencillo el manipuleo de los archivos. Este último programa tiene la particularidad que además de los propios archivos .ADX genera otros dos más, uno .AFT y otro .ALS, que son para utilizar las otras funciones que provee.
El resultado de usar el primer programa sería el siguiente:
C:\Audio>afs_extract SONG01.AFS
SONG01.AFS - 9
SONG01_00.adx 00080000 0004f000
SONG01_01.adx 000cf000 001ceeee
SONG01_02.adx 0029e000 000fea42
SONG01_03.adx 0039d000 00313db2
SONG01_04.adx 006b1000 004a8e1e
SONG01_05.adx 00b5a000 006577e6
SONG01_06.adx 011b1800 00647742
SONG01_07.adx 017f9000 004f57f2
SONG01_08.adx 01cee800 000ff800
Y veríamos en el directorio los siguientes archivos:
06/23/2003 04:35p 323,584 SONG01_00.adx
06/23/2003 04:35p 1,896,174 SONG01_01.adx
06/23/2003 04:35p 1,043,010 SONG01_02.adx
06/23/2003 04:35p 3,227,058 SONG01_03.adx
06/23/2003 04:35p 4,886,046 SONG01_04.adx
06/23/2003 04:35p 6,649,830 SONG01_05.adx
06/23/2003 04:35p 6,584,130 SONG01_06.adx
06/23/2003 04:35p 5,199,858 SONG01_07.adx
06/23/2003 04:35p 1,046,528 SONG01_08.adx
Como supongo que lo normal es no tener un player de formato .ADX los convertiremos a .WAV, para ello usamos otra sencilla tool llamada nada más ni nada menos que "adx2wav" (también se pueden usar otras, como adx2mp3).
Una vez obtenidos los archivos en formato .WAV, podremos "identificar" cada una
de las canciones:
SONG01_00 : la del menú cuando le damos a "start" y cuando al final del juego
asignamos el record a alguno de los usuarios registrados (o no)
SONG01_01 : No se dónde se usa
SONG01_02 : la de cuando elegimos al conductor
SONG01_03 -> SONG01_07 : Los temas de Offspring y Bad Religion
SONG01_08 : No es nada más ni nada menos que el mismo tema que el SONG01_02
Bueno, esto es más que nada para que uno tenga idea de qué es lo que va a estar reemplazando. Hay que tratar de ser acordes (no vamos a meter un tema en sí en el primero o segundo de la lista, no tendría mucho sentido).
IMPORTANTE: Hay que verificar cuáles "tracks" (por llamarlos de alguna manera) necesitan loop para que suenen continuamente, otra vez tratar de elegir algo que sea coherente, y tratar de hacerlo bien, ya que si elegimos mal un .WAV a loopear y suena mal, quedará FEO.
De aquí se deduce la pregunta, cómo hacer un loop? Pues bien, tenemos que usar otra tool, llamada "adxencd", de la siguiente manera. Uso de ejemplo la primera de las nueve pistas, que es la que va a estar sonando continuamente en los menúes (la única que realmente importa en este juego, a los fines de loop):
C:\Audio>adxencd SONG01_00000.wav
|||||||||||| ADX Audio decompression tool Ver.4.70 ||||||||||
Software Audio Encoder for "CRI ADX for Dreamcast" 1999-11-30 Copyright(c) 1996-1999 CRI
Input sound data file: 'SONG01_00000.wav'
ADX Compressed data file : 'SONG01_00000.adx'
Sampling frequency : 44100 Hz = Input sound data
No. of channels : 2
Input audio sample : 284666 smpl = 6.0 sec <44100 Hz>
ADX output sample : 284666 smpl(Blk:284672 smpl) = 6.0 sec <44100 Hz>
....................
Los datos que importan aquí son los samples de comienzo y fin. Para lograrlo habrá que ejecutar el siguiente comando:
adxencd song01_0000.wav -lps0 -lpe284666
De este modo tendremos el WAV completamente loopeado para cuando luego sea convertido a .ADX.
Con el resto de los temas a reemplazar, el criterio es tener en cuenta la duración de los temas, más que nada. No podemos poner tracks de 10 minutos de duración, porque probablemente el juego termine colgado debido a la escasez de RAM (ojo, no
estoy seguro de si el juego lee "on the fly" las pistas o las carga todas en un espacio reservado en RAM, así que conviene no moverse demasiado de la duración de los temas originales).
Aquí es donde cada uno debe poner su cuota de ganas, imaginación y edición. No hay tutorial que pueda decirle a cada uno qué temas le gustan y cómo editarlos.
En cualquier caso, contaremos con 9 archivos .WAV de una duración similar a la original. Supondremos eso.
Una vez que tenemos los "nuevos" .WAVs deberemos convertirlos al formato ADX, para eso, usaremos la tool "wav2adx" de esta simple forma:
wav2adx
lo que podría llegar a ser:
C:\Audio>wav2adx song01_00000.wav
song01_00000.wav -> song01_00000.adx
Una vez que convertimos los nueve archivos .WAV debemos "unirlos" para volver a crear el único archivo que utiliza el juego: SONG01.AFS
Ahora debemos usar otra tool, llamada en este caso "afslnk". Debemos crear un archivo que contenga la lista de todos los files .ADX que queremos juntar.
Finalmente la cosa sería:
afslnk
SONG01.AFS>
podría ser en este caso:
afslnk crazy.als SONG01.AFS
Adicionalmente, si queremos ahorrar 1/2 megabyte de espacio en el .AFS generado podemos usar la tool llamada "afsshrink".
Listo, ya nos ha quedado el nuevo y reemplazado SONG01.AFS con la música que nosotros elegimos. Solamente queda seguir el método de ECHELON para volver a armar la imagen del juego, reemplazando el original SONG01.AFS con el que acabamos
de generar.
El caso de la música en el Crazy Taxi 2 es prácticamente idéntico. Incluso algunos otros juegos tienen las pistas de audio en un único archivo .AFS por tema, o sea que ni siquiera tienen que estar linkeando todos los tracks en un solo file.
Espero haber hecho un aporte a la comunidad, cualquier duda consulten