Importando Conocimientos I: Documento de Recursos, ¿Hackear música en GBC?

Por Jepsen el 11/08/2013
Antes de empezar:
Quiero dejar algo en claro. Esto no es un tutorial paso a paso sobre cómo hackear la música en los juegos de GB / GBC, sino más bien un recurso que se puede utilizar en el hacking. Es un poco desorganizado, pero debería ayudar a algunas personas. El autor intentó que ésto no fuese tan sombrío y largo a la hora de leerlo, sino, más interesante.

Propósito del documento:
Este documento mostrará una lista de los offsets de todos los encabezados de música en todos los juegos GB / GBC, explicar el formato de los encabezados de la música, y el formato básico de los datos de música.

Para empezar...
Programas necesarios:


Conocimientos requeridos:

  • Uso básico de un Editor Hexadécimal
  • Conocimientos elementales de punteros

    Música GSC:
    En primer lugar, voy a explicar un poco acerca de cómo funciona la música en GBC. Hay hasta cuatro canales para cada pista de música, dos son la parte tremble principal, uno es el bajo, y la última es la batería. Para cada pista de música, hay una cabecera de música. Las cabeceras de los puntos de música a donde se encuentran los datos reales de música, las notas y tal. Aquí está una lista completa de donde se encuentran las cabeceras de música en GSC, por orden de desplazamiento:

    E9492 - S.S. Aqua
    EA267 - Ice Path
    EAD42 - Trainer- Basic Tune
    EB27C - New Bark Town
    EB3FC - Goldenrod City
    EB61F - Vermilion City
    EBD92 - Unown Ruins
    EBDCB - Whirl Islands
    EBDD5 - Meet trainer - Freaky Tune
    EE35E - Meet Trainer - Japanese Tune 2
    EE45F - Special Fanfare?
    EE569 - Whirl Islands
    EE6C5 - Routes 42-44
    EE852 - Indigo Plateau
    EE94B - Routes 38-39
    EEB75 - Rocket's Hideout
    EECE8 - Dragon's Den
    EEDCB - Unown Radio Station
    EEE3E - Trainer Rocket Tune
    EEFB2 - Routes 26-27
    EF5B1 - Weird
    EF9BC - Dance Theatre
    EFB3E - Bug Contest Results
    0F0386 - Routes 34-37
    0F07FD - Printer Error
    F4602 - Killed a Wild Pokemon
    F605C - Wild Pokemon (Johto)
    F66C3 - Trainer Girl Tune
    F6811 - Tin Tower
    F6974 - Sprout Tower
    F6A99 - Burned Tower
    F6BF2 - Meet Mom
    F6C72 - Victory Road
    F6D79 - Pokemon Lullaby
    F6E23 - Pokemon March
    F7055 - Intro - Part 1
    F7308 - Intro - Part 2
    F766D - Rockets Take Radio Tower
    F78FD - New Game/Continue
    F7B13 - Pokeflute
    F7C16 - Bug Contest

    Ahora ya sabes donde se encuentran las cabeceras, es hora de aprender el formato de las cabeceras musicales. Éste es el formato de todos los formatos de música:
    vv ww ww 01 xx xx 02 yy yy 03 zz zz

    vv: Byte al inicio del header, no estoy muy seguro de lo que significa.
    ww ww: Puntero de 2 bytes al primer canal
    xx xx: Puntero de 2 bytes al segundo canal
    yy yy: Puntero de 2 bytes al tercer canal
    zz zz: Puntero de 2 bytes al cuarto canal

    Si una pista de música no tiene un cuarto canal, simplemente no tendrá el puntero de la misma. Bueno, ya sabemos donde se encuentran todas las cabeceras de música, y su formato. Ahora es el momento de aprender el formato de los datos musicales reales. Esta es la estructura de nota para el GOLD y SILVER, estoy asumiendo que es el mismo para Crystal:

    Notas (x = retraso nota)

    0x - Sin nota
    1x - C
    2x - C#
    3x - D
    4x - D#
    5x - E
    6x - F
    7x - F#
    8x - G
    9x - G#
    Ax - A
    Bx - A#
    Cx - B (H)
    D0 - Octave 7
    D1 - Octave 6
    D2 - Octave 5
    D3 - Octave 4
    D4 - Octave 3
    D5 - Octave 2
    D6 - Octave 1
    D7 - Octave 0
    D8 xx yz - xx Frames por unidad de retardo de nota, velocidad y, Longitud de Nota, z
    DA hh ll - Set Tempo (sí, hh ll, no ll hh, menor es el value, más rápido)
    DB xx - Ciclo de trabajo (00-03), también puede ser instrumento para la selección Ch3
    DC yz - Velocidad Y, Longitud de Nota Z (básicamente igual al D8 sin xx)
    E1 xx yz - Vibrato - Delay xx, profundidad y, Cambio Z
    E3 xx - Ajuste de ruido (instrumento?)
    E6 xx xx - Tune (no estoy seguro cuáles son los argumentos para ésto ..)
    EF xx - Toma panorámica (seguro de los argumentos ..)
    FD 00 ll hh - Salto (esto se usa para establecer el punto de bucle para la canción, ll = byte bajo, hh = high byte)
    FE ll hh - Subrutina (ll = byte bajo, hh = byte alto, la dirección del remitente es el lugar inmediatamente después de este comando)
    FF - End / Retorno de subrutina

    Tu puedes utilizar Edit Sound v1.3 para añadir en las notas básicas, pero que en realidad tienen que entrar y agregar manualmente en los puntos de bucle y otras cosas pequeñas. Esto es muy molesto, pero es la única manera de hacerlo.

    Música RBY
    Puesto que ya hemos aprendido los conceptos básicos de los encabezados de música, no voy a tener que explicar todo de nuevo, puedo darle los offsets. Aquí están todas las ubicaciones de las cabeceras de música en RBY:

    822E-8236 Pallet Town
    8237-823F Pokecenter
    8240-8248 Gym
    8249-8254 Viridian / Pewter / Saffron
    8255-825D Cerulean / Fuchsia
    825E-8266 Celedon
    8267-826F Cinnibar
    8270-827B Vermilion
    827C-8287 Lavender
    8288-8290 S.S. Anne
    8291-8299 Meet Prof. Oak
    829A-82A2 Meet Rival
    82A3-82AE Guy Walks you to Museum
    82AF-82B7 Safari Zone
    82B8-82C0 Pokemon get healed
    82C1-82CC Routes 1 / 2
    82CD-82D8 Routes 24 / 25
    82D9-82E4 Routes 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10 / 16 / 17 / 18 / 19 / 20 / 21 / 22
    82E5-82F0 Routes 11 / 12 / 13 / 14 / 15
    82F1-82FD Route 23 / Indigo Plateau
    7C249-7C254 Title Screen
    7C255-7C25D Credits
    7C25E-7C266 Hall of FAme Registration
    7C267-7C26F PRof Oak's LAb
    7C270-7C275 Jigglypuff's Song
    7C276-7C281 Bike Riding
    7C282-7C28A Surfing
    7C28B-7C293 Casino
    7C294-7C29F Introduction Battle
    7C2A0-7C2AB Power Plant / Unknown Dungeon
    7C2AC-7C2B7 Viridian Forest / Seafoam Islands
    7C2B8-7C2C3 Mt. Moon / Rock Tunnel / Victory Road
    7C2C4-7C2CF Cinnibar Mansion
    7C2D0-7C2D8 Pokemon Tower
    7C2D9-7C2E1 Silph Co
    7C2E2-7C2EA Meet Bad Trainer
    7C2EB-7C2F3 Meet Girl Trainer
    7C2F4-7C2FC Meet Angry Trainer

    Los encabezados de música tienen el mismo formato que GSC. Parece que a Game Freak no le gusta tanto cambiar la codificación en sus juegos. Por desgracia, la estructura básica de nota es un poco diferente. Esta es la estructura básica de nota RED y BLUE, una vez más, no estoy seguro de si en YELLOW es exactamente el mismo:

    Notas (x = Retraso de Nota)
    0x - B
    1x - C
    2x - C#
    3x - D
    4x - D#
    5x - E
    6x - F
    7x - F#
    8x - G
    9x - G#
    Ax - A
    Bx - A#
    Cx - Sin Nota

    Retraso de Nota:
    x0: 1/16
    x1: 1/8
    x2: 1/8.
    x3: 1/4
    x4:
    x5: 1/4.
    x6:
    x7: 1/2
    xB: 1/2.
    xF: 1

    E0 - Octave 7E1 - Octave 6
    E2 - Octave 5
    E3 - Octave 4
    E4 - Octave 3
    E5 - Octave 2
    E6 - Octave 1
    E7 - Octave 0

    Es casi lo mismo que en GSC. Los datos de octava han cambiado junto con varios otros bytes. Por lo tanto, no se puede importar canciones de RBY a GSC utilizando el "copiar y pegar", pero se puede hacer de nuevo manualmente sin demasiado estrés. Por desgracia, sólo tengo la estructura básica, y no los otros datos, tales como puntos de bucles y otra información.

    ~Creditos:
    Coolboyman - Aportando la mayor parte del formato de datos de música que tenemos aquí
    Data Crystal - Contenía un mapa ROM Gold y Red donde se obtuvo las offsets.

    Fuente del Documento.

Comentarios

  • Franco1 12/08/2013 15:30
    Pues si existe alguna manera, lo mejor sería que hagas un tutorial. Seguro que muchos te lo agradecerían.
  • Gallego13 12/08/2013 11:56
    Vaya, nunca habría esperado ver este tutorial traducido al español, la música no es uno de esos elementos que la gente suela editar en GBC, buen trabajo ;)

    Eso sí, existe un método mucho más rápido y efectivo aún no documentado de hackear la música de GBC, tal vez debería hacer un tutorial.
  • Franco1 11/08/2013 22:37
    Excelente. La verdad es que le has sacado el jugo a la sección y has contribuido a la comunidad con un tutorial para una plataforma donde casi toda la información se encuentra en Inglés.

    Ya quiero ver otro.

    Por último, un consejo, mira de agregar palabras, y de armar el tutorial con tu propio estilo. No solo lo traduzcas.