Vaya que las condiciones para que ese bug suceda son extrañas. Creo que en dado caso habría que informar a Navenatox sobre el bug con la rutina. Aunque repito, las condiciones que pones son algo extrañas y dificiles de conseguir.
Yo también encontré ciertos bugs con algunos movimientos, cuando se acercaban otros minis mediante un applymovement, cambiaba la prioridad de las paletas, es un poco jodido, en lo personal deje de ocupar esta rutina por los diversos problemas que da, sería bueno juntar todo lo que ha pasado y hablar con Navenatox a ver que solución puede existir.
Esta rutina pertenece a Navenatox, yo solo reposteo el tema
Muchos de nosotros hemos notado el extraño sistema de overworlds con el que funciona Fire Red, nos hemos dado cuenta que aunque expandamos la cantidad de paletas para overworlds, estos simplemente son ignorados y el juego carga las mismas paletas predefinidas, y hacer que cargue algúna paleta en un slot extra es un verdadero dolor de cabeza, esto se debe al inflexible sistema de overworlds de Fire Red, de hecho, los únicos slots que se cargan de manera dinámica son los slots 0x0 y 0xA, (Curiosamente, son las paletas de ambos protas), pero dichas paletas no son recomdables cambiar ya que hay varios gráficos que dependen de dicha paleta (Exclamaciones, flechas de salida, la cosa en la que haces surf, etc), pero gracias a Navenatox poner más paletas para overworlds es posible c:
¿Y como funciona la wea?
Cuando aplicas el parche los cuatro bits de la estructura de los NPC que indican en que slot cargar la paleta es ignorado, en vez de eso, el juego usa como referencia un sistema que cuenta el rastro de las paletas a las cuales tienen acceso los diversos OBJs. Cuando un sprite es mostrado en pantalla, su paleta es cargada de manera automática en un slot libre, cuando dicho sprite ya no está en pantalla, su slot es borrado y queda libre para que otro overworld en pantalla escriba en dicho slot.
Cabe mencionar que dicha rutina no afecta solo a los NPC, basicamente actúa de dicha manera con cualquier sprite que use los slots de overworlds. Los OBJs que son mostrados en pantalla no son afectados. Como sabrán FR por defecto soporta hasta 255 overworlds, y si extendemos la tabla de paletas podemos tener hasta 255 paletas, en resúmen, podemos hacer que cada overworld use su propia paleta.
Arreglos Adicionales
Aparte del gran cambio en el sistema de carga de overworlds, el parche tambien repara los siguiented bugs que son propios de BPRE:
Cuando el clima cambia de tormenta de arena o reflejo de nubes a otro clima, el juego no carga la nueva paleta y el efecto climático se vuelve bugeado.
Algunos overworlds no cambian a escala de grises durante los flashbacks, asi como las tormentas de arena, reflejo de nubes o bloqueo de animaciones durante el clima nublado.
Hablando de neblina, solo el tipo de clima 'Steady mist' hacen que los bloques de animación de niebla sea más brillante que el overworld, los otros tipos de niebla no.
Y como regalo, se ha hecho que los reflejos en el agua sean tambien dinámicos, por lo cual las paletas de reflejos en el agua son autogenerados por el engine.
El Parche
Puedes descargar el parche aquí. El código fuente lo puedes encontrar en el GitHub de Navenatox.
Loa datos son escritos en 0xF00000, lo cual lo hace compatible con la mayoría de hacks.Si en tu hack ya tienes usado esa offset puedes ensamblar la rutina en otro offset siguiendo las instrucciones en el repositorio de GitHub de Navenatox.
El parche solo funciona en FireRed 1.0.
En resúmen, para los que no le pillaron a esto, tras aplicar esto puedes poner en pantalla (Osea Rango Visible) hasta 16 paletas distintas, si miras la imágen del principio, verás que en ese rango visible hay 5 sprites, una exclamación y dos reflejos en el agua, lo que hace 8 paletas distintas en pantalla, puedes poner en un mapa muchos sprites con paletas distintas, pero cuida que en un mismo rango visible no hayan más de 16 paletas diferentes (Aunque nadie es tan bestia como para poner un montón de paletas en un mismo sitio).
Si ves que hay un error en la rutina, no lo reported aquí, reportalo en el GitHub antes mencionado o informalo directamente a Navenatox en su perfil de Pokecommunity The PokéCommunity Forums - View Profile: Navenatox
Tengo la leve impresion de que esto me genera problemas con la rutina de cambio de Mini de Jpan, en principio la rutina funciona excelente, pero hay un callasm para refrescar la pantalla, la cosa es que ese call logra refrescar la pantalla y el mini hace el cambio de forma instantánea, pero... la paleta sigue siendo la misma y no logra cambiar, necesitando un WARP para poder hacerlo. No se si te ocurre alguna solucion (claramente no quiero hacer un warp) y el fadescreen tampoco funciona!
Tengo la leve impresion de que esto me genera problemas con la rutina de cambio de Mini de Jpan, en principio la rutina funciona excelente, pero hay un callasm para refrescar la pantalla, la cosa es que ese call logra refrescar la pantalla y el mini hace el cambio de forma instantánea, pero... la paleta sigue siendo la misma y no logra cambiar, necesitando un WARP para poder hacerlo. No se si te ocurre alguna solucion (claramente no quiero hacer un warp) y el fadescreen tampoco funciona!
Perdon por la respuesta tardía (Muy tardía, de hecho)
Pasa que la rutina de paletas dinámica no es compatible con la de JPAN para refrescado de minis debido a que la rutina original me parece que estaba hecha para funcionar con las direcciones estáticas del juego, como estas se cargan en diferente ubicación de la RAM es muy probable que sea necesario editar y/o reescribir la rutina de refrescado para que haga el refrescado correcto de las paletas del mini en su posición dinámica.
Si ya lograste reparar ese error puedes hacer caso omiso a lo que puse (y dar la solución si la hay)