La guía del ASM - De todos para todos

Like Tree61Gracias
Respuesta
 
Herramientas Desplegado
  #1  
10/05/2015
Predeterminado La guía del ASM - De todos para todos
Buenas, como sabéis, @.:Helix Boo♪:. anda un poco liado últimamente, y me ha pedido que publique este tema por él. Se lo ha currado mucho, así que esperamos de verdad que os sirva.

__________________________________________

Hace poco, no sé si por un momento de aburrimiento extremo, por mi gran cabezonería o por la clarividencia del alabado Hélix, me dio por leer varios tutoriales referentes al ASM, y por primera vez en la historia, he logrado entender los comandos y tener una base básica de datos referente a ellos. La cosa es que llevo la friolera de 5 años queriendo aprender ASM, así que ahora que puedo, me he propuesto hacer lo mismo que con el scripting: reventarlo.

¿Cuáles son los clásicos problemas a la hora de aprender ASM?

  • Ningún tutorial ofrece una explicación completa de todos los comandos o parámetros.
  • A veces, las explicaciones son complicadas o se enseña dando por sentado que el "alumno" sabe a qué se refiere el maestro.
  • Como no se sabe cómo funcionan todos los comandos y muchas veces ni siquiera se comprenden del todo, los ejemplos tampoco los entendemos.


¿Cuáles son los objetivos?

Recopilar TODOS LOS COMANDOS.
Proporcionar una explicación de cada comando de la forma más sencilla, masticada y entendible posible (tutorial para tontos).
Explicar todos los ejemplos de rutinas que pueda encontrar.
Conseguir que aprender ASM sea una tarea mucho más fácil.
Explicar cómo encontrar rutinas y/o offsets útiles dentro de la ROM para recopilarlos y tenerlos al alcance de un click.

¿Cómo pretendemos conseguirlo?

En principio, para comenzar a hacer del ASM un campo más digerible, pretendemos publicar una guía de comandos "para tontos" y actualizarla de vez en cuando, cada vez que se hagan correcciones y/o se añada nueva información. Todos los mensajes que encuentren en el tema, así como nuevos aportes y nuevas explicaciones, serán tenidos en cuenta y se añadirán a la guía tras haber considerado su grado de explicación y comprensión.

Con el paso del tiempo, trataremos de completar la guía con explicaciones sobre el proceso de inserción de rutinas y, si todo marcha bien, el objetivo final es elaborar una especie de Santo Grial del ASM del PokéRom Hacking, pudiendo incluir incluso textos acerca de investigaciones en el campo.

Consideraciones

Esta guía será actualizada de vez en cuando por uno de mis colaboradores, Blax, debido a una ausencia temporal.
La guía está en desarrollo, en principio no he encontrado errores graves, pero estáis avisados.
Tened en cuenta que no soy informático, que mis nociones de informática se quedaron en Perl y que acabo de estrenarme en el campo como aquel que dice no me acribilléis xD.
Esta es una guía "para tontos", es decir, si queréis colaborar en su construcción, ofreced explicaciones que se entiendan, no déis nada por sabido. Toda ayuda es bien recibida.
Referente a los términos byte, word, etc. he seguido la nomenclatura de Bulbapedia con el fin de evitar confusiones.


La guía de comandos (en construcción)

Guía de comandos - Revisión 1.0

Enlaces de interés

Esta entrada de Bulbapedia os ofrecerá información variada sobre la RAM-Map de los roms con los que trabajamos: >>Accede aquí<<
Este es otro enlace a un tutorial sobre ASM, podéis consultarlo para consultar la parte acerca de compilar la rutina, la parte del editor hexadecimal, etc.: >>Accede aquí<<
Enlace al tutorial de HackMew (no tuve tiempo de revisarlo en profundidad, más que nada de probar las rutinas, pero lo dejo para el que le pueda interesar): >>Accede aquí<<
Enlace al tutorial de Hexadecimal más reciente del foro, obra de @Flame-HSG- , necesario para comprender cómo colocar las rutinas en nuestro ROM. >>Accede aquí<<

Agradecimientos

Gracias al user que escribió la guía sobre ASM de la web de WAH, me sirvió para completar algunas de las explicaciones: >>Accede aquí<<
Gracias a ShinyQuagsire, de Pokécommunity, por su guía sobre ASM: >>Accede aquí<<
Gracias a HackMew por su compilador.
Gracias a eing por resolver algunas de mis dudas (no pregunté mucho, pero se agradece).
Gracias a Blax y MarioFan por sus múltiples explicaciones (las de este segundo las recuerdo vagamente, pero lo que cuenta es que al fin llegué a algún lado xD).
Gracias a pabel por una serie de aportes (no son recursos referentes a la guía actual, pero quién sabe lo que añadiré en el futuro).
Y gracias a todos los que habéis estado al pie del cañón, ya sea manteniendo en sitio, como apoyando, no hubiese llegado hasta aquí sin vuestro granito de arena.

Y finalmente...

Esperamos que este aporte os pueda servir de ayuda a muchos de vosotros, agradeceríamos que aquellos que quisieran, ayudasen a buscar erratas en la guía y a ampliarla con más comandos, parámetros, explicaciones y ejemplos.

Eso es todo por ahora.
  #2  
10/05/2015
Predeterminado Respuesta: La guía del ASM - De todos para todos


Explicaré algunas cosas de esta herramienta que servira como base para el entendimiento del ASM.

¿Que es IDA Pro?

Es un multiprocesador interactivo desensamblador acoplado a un depurador remoto local y aumentado por un plugin completo.

¿Que puede ofrecernos IDA Pro?

Como un desemblador, IDA Pro explora programas binarios, para que el codigo fuente no siempre este disponible, para crear mapas de su ejecucion.
El verdadero interes de un desensamblador es que muestra instrucciones que son en realidad ejecutadas por el procesador en una representacion simbolica llamada lenguaje ensamblador.
El depurador en IDA Pro complementa las capacidades de analisis estaticas de el desensamblador. Al permitir un analisis solo pasando atravez del codigo que esta siendo investigado.

¿Como puedo utilizar IDA Pro?
Hace tiempo un usuario hizo un tutorial sobre esto muy bien explicado.
http://wahackforo.com/t-12514/gba-otros-disassembler-ida-pro-tutorial

Ahora, los que quieren aprender ASM necesitan tener alguna base de como son las rutinas que se ejecutan en el juego para poder hacer sus propias.
En el foro Pokeco 2 usuarios han hecho su database en la cual estan las rutinas que ejecuta la rom.
Una para Fire red (creditos a Knizz por su database)
https://www.dropbox.com/s/2nuue1duu1wf7pw/firered.idb?dl=0

Y otra para Emerald (creditos a Tocuhed por su Database)
https://www.dropbox.com/s/c8pswwq3h1lccly/BPEE.idb?dl=0

Con estas databases puedes buscar las rutinas y entenderlas.

¿Como busco una rutina con IDA Pro usando las databases?

Primero que todo deben saber en que offset esta su rutina.
Yo usaré este ejemplo.

La rutina del comando showpokepic en FR se encuentra en el offset "06BB9C"
Entonces abrimos nuestro Nuestra Database con IDA, si ya tienen instalado IDA Pro, solo den doble clic en la Database.

Cuando tengo mi Database abierta vayan a la opcion que se muestra arriba llamada Jump-Jump to address, o simplemente presionen la tecla "G"

Imagen


Saldra una pequeña ventana, en ella debes colocar el offset de tu rutina.
Recuerda agregar un 08.
Entonces seria 0806BB9C y le damos Ok

Imagen


Asi saltará a la posicion de tu rutina.

Imagen



Y aqui el link del IDA Pro 6.5
https://www.dropbox.com/s/hvvmxxoo1dkmdzc/firered.idb

Enlaces de Interes

- [Tutorial] IDA Pro Tutorial - The PokéCommunity Forums
- https://www.hex-rays.com/products/ida/

Por ultimo decir que si tienen dudas dejenlas en este post para que no se repitan en el futuro.

  #3  
10/05/2015
Predeterminado Respuesta: La guía del ASM - De todos para todos
Post reservado para añadir más información
Gracias: Platinum
  #4  
10/05/2015
Predeterminado Respuesta: La guía del ASM - De todos para todos
Post reservado número 2 para añadir más información
  #5  
10/05/2015
Predeterminado Respuesta: La guía del ASM - De todos para todos
Buenas gente. Perdonad por poner tantos posts de golpe, pero son necesarios, creedme xD.

Esto es el fruto de Boo aprendiendo ASM + lo que yo he aprendido en la universidad + lo que Pabel ha aprendido a saber dónde ¬¬

Esperamos que os sirva a todos
  #6  
11/05/2015
Predeterminado Respuesta: La guía del ASM - De todos para todos
Dicho por BLAx301!-HSG- Ver mensaje
Buenas gente. Perdonad por poner tantos posts de golpe, pero son necesarios, creedme xD.

Esto es el fruto de Boo aprendiendo ASM + lo que yo he aprendido en la universidad + lo que Pabel ha aprendido a saber dónde ¬¬

Esperamos que os sirva a todos
En foros como XDA Developers es totalmente permitido reservar posts para futuras actualizaciones, ¿porque no en Wah
-----------
Exelente recopilatorio, la verdad a mi solo me bastó el tuto de shinyquagsire para agarrarle el rollo al ASM, gracias por el tema, es requeteutil.

PD: @Invert ¿Desde cuando sos tan pro en ASM?
  #7  
11/05/2015
Predeterminado Respuesta: La guía del ASM - De todos para todos
Digo yo que habrá una manera de hacer subrutinas que no sea en ensamblador, que es horrible, sino en C o C++. Tengo un plugin para eclipse que es capaz de compilar para ARM7 y ver luego su desensamblado en ejecución. Si queréis que os pase ese eclipse para trastear con él, mandadme algún mensaje, que os lo subo a algún sitio para que lo tengáis e investigáis con él que os puede ser de gran ayuda. o:
  #8  
11/05/2015
Predeterminado Respuesta: La guía del ASM - De todos para todos
Dicho por Team_Rocket Ver mensaje
Digo yo que habrá una manera de hacer subrutinas que no sea en ensamblador, que es horrible, sino en C o C++. Tengo un plugin para eclipse que es capaz de compilar para ARM7 y ver luego su desensamblado en ejecución. Si queréis que os pase ese eclipse para trastear con él, mandadme algún mensaje, que os lo subo a algún sitio para que lo tengáis e investigáis con él que os puede ser de gran ayuda. o:
Pues no estaría de más xD. No se exactamente cómo funciona la programación en C para GBA aunque he visto alguna que otra página ya, así como las plantillas de ShinyQuagsire en su GitHub.

Si quieres pasarlo está bienvenido, le buscaremos un hueco xD.

Gracias por tu colaboración
  #9  
11/05/2015
Predeterminado Respuesta: La guía del ASM - De todos para todos
No te molestes en recopilar las instrucciones, pues ya están todas en la documentación, con su respectiva información de uso:

ARM Information Center

Quizá una guía de cómo navegar por el sitio sería más útil, porque tiene tela la verdad...
Una guía que muestre la arquitectura de la game boy Advance sería de mayor ayuda, que no se si es porque yo soy un inútil en ese aspecto, o que simplemente no tengo comprensión lectora, el caso es que todo lo que he encontrado por la red a mi no me aclara nada.
Gracias: Master Brock
  #10  
11/05/2015
Predeterminado Respuesta: La guía del ASM - De todos para todos
Una vez intente lo del ASM, pero me quedé a las puertas.
Quiero creer que lo termine entendiendo, pero la falta de informacion para investigar rutinas, el escaseo de las explicaciones, y que no le veia una utilidad primaria hicieron que lo dejara.
Sinceramente no creo que lo vaya a usar nunca, porque no necesito nada extremadamente dificil, pero me gusta saber que si cambio de opinión tendré este post para comenzar.
Señores, muchísimas gracias por esto, no hay palabras, quién sabe si esta comunidad comienza a florecer más en el ámbito de los scripts gracias a vosotros.
Felicidades por haberlo traido, y por el futuro premio al mejor aporte del año en los premios Wah anuales.

Pokémon Crush - COMPLETADO || ¡TODO VUESTRO!




Progreso


Beta 1 - 11/05/2014
Beta 2 - 11/12/2014
50% del juego - 07/05/2015
100% de historia - 26/05/2015
100% de mapas - 03/06/2015
100% de relleno - 11/06/2015
100% del juego - 16/12/2015
Solución de bugs y errores - 19/12/2015
Juego completo - 20/12/2015




Respuesta

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 16:49.
Skin Afternoon por Sage