Registrarse

[ASM] FR | Controlar la música de los Pokémon Legendarios (Special 0x138)

¿Te ha servido este tutorial?


  • Votantes totales
    8

Helix Boo

Emperador Kaktiácero
Miembro de honor
Eficacia confirmada por los siguientes usuarios: CampeonSteven.

Este tutorial está dedicado a mi colega @CampeonSteven, quien preguntó una duda acerca de un tutorial de Pokecommunity. Y bueno, al principio pensé en responderle sobre una parte específica. Sin embargo, pensándolo bien, yo soy bastante torpe y sé que estas cosas son costosas de entender. Por ello, he pensado resolver su duda y la de muchos de vosotros de la forma más útil y entendible que pueda imaginar: ¡traduciendo el mismísimo tutorial!

Este manual está redactado por Jambo51, yo simplemente lo he traducido y le doy mis más sincero agradecimiento. Podéis encontrar su tutorial en la siguiente dirección: >>Accede aquí<<

Y dicho esto, ¡empecemos!

Controlar la música de los Pokémon Legendarios (Special 0x138)

A ver, a ver, a ver, ¡¡lo primero!! Una aclaración MUY IMPORTANTE, este "invento" tan sólo funciona con combates contra Pokémon Legendarios que hayan sido creados mediante el uso del comando setwildbattle, seguido de special 0x138.

Una cosilla antes de empezar a realizar este tutorial, si lo sigues, tendrás que incluir en una lista de definición a TODAS las especies que quieras que sean afectadas por este código. Así que, si por ejemplo no pones a Mewtwo, Zapdos y Moltres en la lista, se reproducirá una pista de audio estándar cuando te enfrentes a ellos.

Y dicho esto, quiero que me respondáis a una pregunta... ¿alguna vez os habéis puesto a pensar por qué leches Moltres, Zapdos y Articuno tienen su propio temita de música especial, mientras que otros Pokémon tienen la típica musiquilla estándar? Y lo más importante, lo que realmente nos importa, qué cuernos, ¿alguna vez habéis deseado hacer que, al encontraros con un Pokémon salvaje, se reproduzca la música que a vosotros os salga de la nariz? ¡Pues no digáis más, aquí os traigo la solución! Tan sólo seguid este tutorial, repito, seguid este tutorial y vuestros deseos quedarán satisfechos. A diferencia de lo que habréis visto en Doraemon, no conseguiréis conocimientos comiendo papeles o aparatos electrónicos, ni siquiera con pan, así que no me vale que lo oláis, lo mordáis o lo saboreéis, me basta con que sigáis este tutorial con la vista y todos contentos. Y dicho esto, vamos con los pasos.

Paso 1: Tenéis que compilar la siguiente rutina:

Código:
.text
.align 2
.thumb
.thumb_func
.global battlemusichackleg
main: push {r2,r3}
ldr r0, tableloc
loopstart: ldrh r2, [r0, #0x0]       // Carga la ID de la especie a partir de la posición actual de la tabla
cmp r1, r2                 // R1 contiene la especie contra la que estamos a punto de combatir
beq loadmusic            // Si R1 == R2, entonces carga el ID de la pista de música
ldr r3, end                // Carga el ID delimitante para comprobar si hemos alcanzado el final de la tabla (en términos cristianos, FE FE 00 00, si no entiendes lo que es, lee más abajo y luego vuelve de nuevo hasta aquí)
cmp r2, r3                // Comprueba si el ID de la especie que hemos cargado es igual que el delimitador de la tabla (osea, si es FE FE 00 00)
beq loadnormal          // Si lo es, carga una pista de audio normal y corriente
add r0, #0x4             // Aumenta el ID de la posición de la tabla
b loopstart                    // Vuelve hacia el principio
loadnormal: mov r1, #0xAA
lsl r1, r1, #0x1
add r1, #0x1                 // R1 contendrá el valor 0x155 en este punto
return: pop {r2,r3}
ldr r0, goback               // Vueve con la ejecución normal
bx r0
loadmusic: ldrh r1, [r0, #0x2]             // Carga la pista de audio con el ID que viene en la tabla en R1
b return
.align
end: .word 0x0000FEFE
goback: .word 0x0807FA3F
tableloc: .word 0x08FFFFFF
Paso 2: Carga tu editor hexadecimal, ve a la dirección 0x7F9F4 y cambia los bytes que encuentres ahí por estos otros: 01 1C 00 00 00 48 00 47 XX XX XX 08. Aquí viene la parte esencial, donde pone "XX XX XX 08", debes poner el offset permutado donde hayas insertado tu rutina +1. Por ejemplo, si nuestro offset es el 834422, entonces tendrás que poner esto: "23 44 83 08". Si por ejemplo insertamos en un offset ampliado, como 1834422, en vez de 08 al final, pues ponemos 09 (08 + 01), quedaría así: "23 44 83 09".

Paso 3: Ahora vamos a agregar una nueva tabla al ROM y vamos a repuntear el tableloc: .word 0x08FFFFFF hacia ella. La tabla que hagamos presentará la siguiente estructura:

[ID de Especie - Media palabra][ID de la música a reproducir - Media palabra]

¿No se entiende? No pasa nada, vamos poco a poco. Supongamos por ejemplo que quiero que al combatir con Mew se reproduzca la canción con el ID 0x129 y, si combato con Ho-Oh, se reproduzca la que tiene el ID 0x124. Si repasamos los datos, tenemos esto:

Código:
ID de Mew: 0x0097; ID de la canción: 0x0129.
ID de Ho-Oh: 0x00FA; ID de la canción: 0x0124
Pues bueno, así es como debe de quedar:

97 00 29 01 FA 00 24 01 FE FE 00 00
Como podéis ver, hemos insertado el ID de Mew (97 00), el ID de su canción (29 01), el ID de Ho-Oh (FA 00) y el ID de su canción (24 01). Al final, muy importante, colocamos unos bytes, FE FE 00 00, los cuales nos permitirán delimitar el tamaño de la tabla. ¿Por qué lo hacemos? Pues os explico, si no los colocamos, el juego seguirá buscando más Pokémon a los que cambiarle la música de batalla hasta el fin de los tiempos. Por ese motivo, le agregamos esos bytes, para que de esa manera limitemos el tamaño de la tabla y el juego deje de buscar. Puedes hacer la tabla lo larga que quieras, ya sea un poco larga, muy larga, o empepinadamente larga, pero SIEMPRE, SIEMPRE, añade los bytes FE FE 00 00 al final.

Finalmente, cambia tableloc: .word 0x08FFFFFF por el offset de la tabla donde hayas realizado los cambios (por ejemplo, si es el offset 808080, quedaría así: tableloc: .word 0x08808080).

Y nada más, espero que os haya servido el tutorial y que os paséis a saludar a Jambo51, que se ha currado este y muchos tutos y merece nuestro más que merecido agradecimiento. Si el tutorial tuviera algún problemilla, por favor, avisadlo lo antes posible.
 
Última edición:

Katherine

Omnipresente
Miembro de honor
Respuesta: FR | ASM | Controlar la música de los Pokémon Legendarios (Special 0x138)

Wow, impresionante aporte que ha surgido por una duda de un usuario y te has tomado la gran molestia de traducir el tutorial para él, y para todos los interesados en esto. Se entiende a la perfección y muy bien detallado, así que se agradece que sea hecho de tan buena gana^^ Sin duda lo usaré para mi proyecto que está por venir.

¡Muchas gracias! Au revoir~.
 

CampeonSteven

Usuario de Platino
Respuesta: FR | ASM | Controlar la música de los Pokémon Legendarios (Special 0x138)

Sabes, me alegra saber que en este mundo hay gente tan maravillosa.
Esto ademas de a mi, le sera de mucha ayuda a otras personas, muchas gracias.

:)

Por cierto, desde que actualizaron Pokecommunity no he podido encontrar varios tutos, quizas por eso busque y busque y no consegui esto.
 

Helix Boo

Emperador Kaktiácero
Miembro de honor
Respuesta: FR | ASM | Controlar la música de los Pokémon Legendarios (Special 0x138)

Sabes, me alegra saber que en este mundo hay gente tan maravillosa.
Esto ademas de a mi, le sera de mucha ayuda a otras personas, muchas gracias.

:)

Por cierto, desde que actualizaron Pokecommunity no he podido encontrar varios tutos, quizas por eso busque y busque y no consegui esto.
De nada hombre, con saber que te sirve a ti y a cualquier otra persona, me doy por satisfecho. Eso sí, te pediría que me confirmaras cómo fue todo, para así poder retirar el rótulo de la parte superior. Si tienes algún problemilla con el tuto, avísame. Y ya que estamos, si me permites desvariar un poco el tema, puedes consultarme por Mensaje Privado si quieres que te ayude a buscar esos tutos de los que hablas.

Wow, impresionante aporte que ha surgido por una duda de un usuario y te has tomado la gran molestia de traducir el tutorial para él, y para todos los interesados en esto. Se entiende a la perfección y muy bien detallado, así que se agradece que sea hecho de tan buena gana^^ Sin duda lo usaré para mi proyecto que está por venir.

¡Muchas gracias! Au revoir~.
Muchas gracias, si llegas a aplicarlo, te pido lo mismo que el camarada de arriba, confírmalo y así nos quitamos de dudas.
 

Laquin

Leyenda de WaH
Respuesta: FR | ASM | Controlar la música de los Pokémon Legendarios (Special 0x138)

Simplemente genial; totalmente entendible y apto para cualquier persona. Intentaré probarlo ahora, luego te digo el resultado.

¡Gracias!
 

Sage0ne

Baneado
Respuesta: FR | ASM | Controlar la música de los Pokémon Legendarios (Special 0x138)

Viva el copypaste!
Todos a copypastear tutoriales de Pokecommunity a dos manos, enga!

Dejando las tonterias a un lado, gracias por traerlo a WAH, estoy seguro que le será de mucha utilidad a quienes no la conocían.

Es un placer a la vista el que hayas traducido tambien las explicaciones de la rutina y eso, aunque... ¿Quien sobre esta tierra dice 'media palabra' a un halfword? XD
En fin, cosas españolengas..

Como decía el buen Jaizu ¡Viva España!
Saludos! ah! y viva el copypaste tambien
 

Toni

Profesional de WaH
Respuesta: FR | ASM | Controlar la música de los Pokémon Legendarios (Special 0x138)

Vuelves y ya estás haciendo tutoriales? No puede ser.
Ahora en serio, muy buen trabajo. Tienes todo mi apoyo. En 2 días has revolucionado Wah en actividad y ahora en tutoriales. Eres un jefazo.
 

CampeonSteven

Usuario de Platino
Respuesta: FR | ASM | Controlar la música de los Pokémon Legendarios (Special 0x138)

.:Helix Boo♪:.;375558 dijo:
De nada hombre, con saber que te sirve a ti y a cualquier otra persona, me doy por satisfecho. Eso sí, te pediría que me confirmaras cómo fue todo, para así poder retirar el rótulo de la parte superior. Si tienes algún problemilla con el tuto, avísame. Y ya que estamos, si me permites desvariar un poco el tema, puedes consultarme por Mensaje Privado si quieres que te ayude a buscar esos tutos de los que hablas.



Muchas gracias, si llegas a aplicarlo, te pido lo mismo que el camarada de arriba, confírmalo y así nos quitamos de dudas.
Lo probé al tiro vi esto, funciona a la perfección, no le encontré bugs conocidos, así que tiene mi aprobación.
 
Arriba