Si, la respuesta mas correcta siempre fue ASM, pero hay unas cuantas otras maneras de hacer eso.
Por desgracia, solo tengo como hacer eso en FireRed, pero no debe ser mucho dificil hacer el mismo en Ruby. Me voy a investigar eso. Pero, para firered, es lo siguiente:
La primera manera:
Con advance-map 1.95 , van a los behavior bytes de un overworld y ponen el behavior '0B'.
In-Game, lleguen cerca de ese mini y abran un menú, cualquier cosas que refresque el ecran. Vuelven al overworld y tcharan! Son ese mini!
La segunda forma:
En el offset 0203707D esta presente el numero del overworld que controlas. El player es el numero 00 y el resto son los demás overworlds.
La manera 'correcta':
Editen la rutina presente en el offset 0805E72c, mas precisamente por vuelta de 0805E7C2, que tien la instrucion ldr r1,[r7, #0x1C]. Esto hace con que el offset del grafico del player sea guardado en 02020648, que es donde el juego va a buscar el puntero del mini del player!
Saludos de Sonicarvalho.
Voy a tentar hacer el mismo en Ruby, pero no puedo asegurarle que consiga. :/