¡¡Hola buenas!!
Mientras investigaba sobre como crear un menú nuevo y personalizado por los frondosos códigos de pokeruby, me topé con esta grandiosa maravilla.
Hasta el momento, sólo he descubierto lo que hacen una pequeña parte de ellas, pero que sin duda, dan mucho juego.
He creado este post para empezar compartiendo mis conocimientos sobre ellos, ya que no es algo fácil de descubrir, y tras tirarme toda una tarde investigando, logré llegar a ciertas conclusiones respecto a dichas regiones, que creo que pueden dar un empujón a los demás a investigar sobre ellas y a digerirlas con mayor facilidad.
Así que, no me demoro más, empiezo a explicar como funciona cada una y a dejar ejemplos prácticos.
Regiones estudiadas hasta la fecha:
Bien, tras soltar aquí todos estos comandos sin explicar a que están enfocados y tras quizás, confundiros bastante, paso a explicar qué hace cada uno.
Para empezar, estos comandos son capaces de crear rectángulos con opacidad (o sin ella si así se desea) tanto de color negro como de color blanco, además, podemos elegir que BG's queremos que solape y que BG's queremos que no solape. Para que me entendáis mejor, con un poco de ingenio se pueden hacer cosas como estas:
Es cuestión de echarle imaginación. Pero dejando esto de lado, vamos a lo que nos importa, que es entender como funciona esto.
Para empezar, tenemos "REG_WIN0V" y "REG_WIN0H", las que como bien he dicho antes, definen las respectivas posiciones del rectángulo/forma rectangular generada. Estas dos, pueden ser usadas como un valor entero, tal que así:
O mediante rangos, que es como yo lo voy a explicar ya que da infinidad de posibilidades, y al fin y al cabo es mucho más útil.
Se declararía algo así:
Como bien imagino y espero que sabréis, "labelLeft, labelRight, labelTop y labelBottom" son variables, que tendremos que definir y darles un valor con anterioridad. (Y para evitar confusiones, lo haremos todo en el orden que lo he hecho yo)
Por tanto, el código quedaría algo así:
Ahí veis que os he dejado unas anotaciones, en los respectivos label que explican más o menos que hace cada uno, aunque pueda parecer que son usados como coordenadas. Dependiendo de los demás comandos, se verá una cosa u otra, pero para que os hagáis una idea, esos valores, son los usados en la primera imagen de las anteriores.
Aquí os dejo el código tal cuál estaba por si a caso alguien quiere comprobarlo por si mismo, y vea el resto de los parámetros que esto requiere:
He de decir, que podríamos invertir la forma rectangular creada, cambiando:
Por:
Esa es la forma que he encontrado de invertirlo sin que de problemas, pero no recomiendo cambiar mucho los parámetros cuando usemos "REG_WININ y REG_WINOUT" a la vez, ya que suele dar muchos problemas. Yo recomiendo usar tan sólo "REG_WININ = 0xFF" o en caso de querer invertir como bien he dicho, usar esto de aquí arriba.
Ahora, una de mis funciones favoritas, el "REG_BLDCNT", esta sin duda es la que más tiempo me ha llevado investigar, ya que he tenido que investigar sus bytes uno a uno para comprobar que hacían, así que os dejo por aquí la tabla:
Por si no entendéis muy bien lo de los BG's, básicamente, son las diferentes capas en las que se encuentran los tiles, siendo por ejemplo los tiles de pasto que se encuentran en el BG2 y BG3, o los tiles de la copa de un arbol, en la que nostros quedamos bajo de ella, que se encuentra en el BG1. Podéis comprobarlo vosotros mismos con VBA > Tools > Map Viewer...
Sin duda, un comando muy útil, ahora, pasamos con los dos últimos, pero no por ello menos importantes:
Con "REG_BLDY" controlaremos la opacidad que tendrá nuestro rectángulo, siendo así 0x0 un rectángulo invisible, y 0xF un color totalmente sólido y sin transparencias.
Por último, REG_BLDALPHA, que significa "Alpha Blending", no sé muy bien como usarlo, si alguien quiere investigarlo, aquí tiene algo de información al respecto
Si vosotros también queréis investigar regiones pero no sabéis por donde empezar, es tan fácil como ir a nuestro querido mintty.exe, conocido por otros como cygwin, y escribiremos en el directorio de pokeruby
Así, nos devolverá todo aquello que haya escrito en cualquier archivo de pokeruby que contenga los carácteres "REG_"
¡Eso es todo, espero ver que os animáis con esto!
@InmortalKaktus: REG_WININ, REG_WINOUT, REG_WIN0H, REG_WIN0V, REG_BLDCNT, REG_BLDY
@L!no the Maelstrom : REG_BLDALPHA
Mientras investigaba sobre como crear un menú nuevo y personalizado por los frondosos códigos de pokeruby, me topé con esta grandiosa maravilla.
Hasta el momento, sólo he descubierto lo que hacen una pequeña parte de ellas, pero que sin duda, dan mucho juego.
He creado este post para empezar compartiendo mis conocimientos sobre ellos, ya que no es algo fácil de descubrir, y tras tirarme toda una tarde investigando, logré llegar a ciertas conclusiones respecto a dichas regiones, que creo que pueden dar un empujón a los demás a investigar sobre ellas y a digerirlas con mayor facilidad.
Así que, no me demoro más, empiezo a explicar como funciona cada una y a dejar ejemplos prácticos.
Regiones estudiadas hasta la fecha:
Código:
REG_WININ = 0x3F; //Solapa de color negro lo exterior al rectángulo generado (no recomiendo usarlo)
REG_WINOUT = 0xFF; //Hace que el rectángulo se genere tal y como lo indicamos
REG_WIN0H = 0; //Posiciones respectivas (Horizontal) Se suele usar con un WIN_RANGE
REG_WIN0V = 0; //Posiciones respectivas (Vertical) Se suele usar con un WIN_RANGE
REG_BLDCNT = 0xFE; // Determina si el color del rectángulo es blanco o negro, y que capas solapa.
REG_BLDY = 0xB; // Indica cuanta opacidad tiene el rectángulo. (0x0 = invisible, 0xF = color sólido)
REG_BLDALPHA = 0; //Sin cambios aparentes
Para empezar, estos comandos son capaces de crear rectángulos con opacidad (o sin ella si así se desea) tanto de color negro como de color blanco, además, podemos elegir que BG's queremos que solape y que BG's queremos que no solape. Para que me entendáis mejor, con un poco de ingenio se pueden hacer cosas como estas:
Es cuestión de echarle imaginación. Pero dejando esto de lado, vamos a lo que nos importa, que es entender como funciona esto.
Para empezar, tenemos "REG_WIN0V" y "REG_WIN0H", las que como bien he dicho antes, definen las respectivas posiciones del rectángulo/forma rectangular generada. Estas dos, pueden ser usadas como un valor entero, tal que así:
Código:
REG_WIN0H = 64;
REG_WIN0V = 24;
Se declararía algo así:
Código:
REG_WIN0H = WIN_RANGE(labelLeft, labelRight);
REG_WIN0V = WIN_RANGE(labelTop, labelBottom);
Por tanto, el código quedaría algo así:
Código:
u8 labelLeft;
u8 labelRight;
u8 labelTop;
u8 labelBottom;
labelLeft = 130; //Empuja un rectángulo a color desde left
labelRight = 110; //Empuja espacio vacío desde left
labelTop = 90; //Empuja un rectángulo desde top
labelBottom = 70; //Empuja espacio vacío desde top
REG_WIN0H = WIN_RANGE(labelLeft, labelRight);
REG_WIN0V = WIN_RANGE(labelTop, labelBottom);
Aquí os dejo el código tal cuál estaba por si a caso alguien quiere comprobarlo por si mismo, y vea el resto de los parámetros que esto requiere:
Código:
u8 labelLeft;
u8 labelRight;
u8 labelTop;
u8 labelBottom;
labelLeft = 130;
labelRight = 110;
labelTop = 90;
labelBottom = 70;
REG_WINOUT = 0xFF;
REG_BLDCNT = 0x8E;
REG_BLDY = 0x7;
REG_WIN0H = WIN_RANGE(labelLeft, labelRight);
REG_WIN0V = WIN_RANGE(labelTop, labelBottom);
He de decir, que podríamos invertir la forma rectangular creada, cambiando:
Código:
REG_WINOUT = 0xFF;
Código:
REG_WININ = 0x3F;
REG_WINOUT = 0x1F;
Ahora, una de mis funciones favoritas, el "REG_BLDCNT", esta sin duda es la que más tiempo me ha llevado investigar, ya que he tenido que investigar sus bytes uno a uno para comprobar que hacían, así que os dejo por aquí la tabla:
Código:
REG_BLDCNT:
//BLANCOS (0x80 a 0xBF) (Rectángulos de color blanco)
0x80: Queda bajo todas las capas (Queda invisible)
0x81: Queda bajo todas las capas (Queda invisible)
0x82: Se funde SOLO con el BG1
0x83: Se funde SOLO con el BG1
0x84: Se funde SOLO con el BG2
0x85: Se funde SOLO con el BG2
0x86: Se funde SOLO con el BG2 y el BG1
0x87: Se funde SOLO con el BG2 y el BG1
0x88: Se funde con el BG3
0x89: Se funde con el BG3
0x8A: Se funde con el BG2 y BG3
0x8B: Se funde con el BG2 y BG3
0x8C: Se funde con el BG1, BG2 y BG3
0x8D: Se funde con el BG1, BG2 y BG3
0x8E: Se funde con el BG0, BG1, BG2, BG3 y queda bajo los sprites
0x8F: Se funde con el BG0, BG1, BG2, BG3 y queda sobre los sprites
0x90: Se funde con el BG0 y los sprites
0x91: Se funde con el BG0 y los sprites
0x92: Se funde con el BG0, BG1 y los sprites
0x93: Se funde con el BG0, BG1 y los sprites
0x94: Se funde con el BG2 y los sprites
0x95: Se funde con el BG2 y los sprites
0x96: Se funde con el BG1, BG2 y los sprites
0x97: Se funde con el BG1, BG2 y los sprites
0x98: Se funde con el BG3 y los sprites
0x99: Se funde con el BG3 y los sprites
0x9A: Se funde con el BG1, BG3 y los sprites
0x9B: Se funde con el BG1, BG3 y los sprites
0x9C: Se funde con el BG2, BG3 y los sprites (Parecido a la niebla)
0x9D: Se funde con el BG2, BG3 y los sprites (Parecido a la niebla)
0x9E: Se funde con el BG0, BG1, BG2, BG3 y queda sobre los sprites
0x9F: Se funde con el BG0, BG1, BG2, BG3 y queda sobre los sprites
0xA0: Queda bajo todas las capas (Queda invisible)
0xA1: Queda bajo todas las capas (Queda invisible)
0xA2: Se funde SOLO con el BG1
0xA3: Se funde SOLO con el BG1
0xA4: Se funde SOLO con el BG2
0xA5: Se funde SOLO con el BG2
0xA6: Se funde SOLO con el BG2 y el BG1
0xA7: Se funde SOLO con el BG2 y el BG1
0xA8: Se funde con el BG3
0xA9: Se funde con el BG3
0xAA: Se funde con el BG2 y BG3
0xAB: Se funde con el BG2 y BG3
0xAC: Se funde con el BG1, BG2 y BG3
0xAD: Se funde con el BG1, BG2 y BG3
0xAE: Se funde con el BG0, BG1, BG2, BG3 y queda bajo los sprites
0xAF: Se funde con el BG0, BG1, BG2, BG3 y queda sobre los sprites
0xB0: Se funde con el BG0 y los sprites
0xB1: Se funde con el BG0 y los sprites
0xB2: Se funde con el BG0, BG1 y los sprites
0xB3: Se funde con el BG0, BG1 y los sprites
0xB4: Se funde con el BG2 y los sprites
0xB5: Se funde con el BG2 y los sprites
0xB6: Se funde con el BG1, BG2 y los sprites
0xB7: Se funde con el BG1, BG2 y los sprites
0xB8: Se funde con el BG3 y los sprites
0xB9: Se funde con el BG3 y los sprites
0xBA: Se funde con el BG1, BG3 y los sprites
0xBB: Se funde con el BG1, BG3 y los sprites
0xBC: Se funde con el BG2, BG3 y los sprites (Parecido a la niebla)
0xBD: Se funde con el BG2, BG3 y los sprites (Parecido a la niebla)
0xBE: Se funde con el BG0, BG1, BG2, BG3 y queda sobre los sprites
0xBF: Se funde con el BG0, BG1, BG2, BG3 y queda sobre los sprites
//NEGROS (0xC0 a 0xFF) (A partir de aquí, los rectángulos son de color negro)
0xC0: Queda bajo todas las capas (Queda invisible)
0xC1: Queda bajo todas las capas (Queda invisible)
0xC2: Se funde SOLO con el BG1
0xC3: Se funde SOLO con el BG1
0xC4: Se funde SOLO con el BG2
0xC5: Se funde SOLO con el BG2
0xC6: Se funde SOLO con el BG2 y el BG1
0xC7: Se funde SOLO con el BG2 y el BG1
0xC8: Se funde con el BG3
0xC9: Se funde con el BG3
0xCA: Se funde con el BG2 y BG3
0xCB: Se funde con el BG2 y BG3
0xCC: Se funde con el BG1, BG2 y BG3
0xCD: Se funde con el BG1, BG2 y BG3
0xCE: Se funde con el BG0, BG1, BG2, BG3 y queda bajo los sprites
0xCF: Se funde con el BG0, BG1, BG2, BG3 y queda sobre los sprites
0xD0: Se funde con el BG0 y los sprites
0xD1: Se funde con el BG0 y los sprites
0xD2: Se funde con el BG0, BG1 y los sprites
0xD3: Se funde con el BG0, BG1 y los sprites
0xD4: Se funde con el BG2 y los sprites
0xD5: Se funde con el BG2 y los sprites
0xD6: Se funde con el BG1, BG2 y los sprites
0xD7: Se funde con el BG1, BG2 y los sprites
0xD8: Se funde con el BG3 y los sprites
0xD9: Se funde con el BG3 y los sprites
0xDA: Se funde con el BG1, BG3 y los sprites
0xDB: Se funde con el BG1, BG3 y los sprites
0xDC: Se funde con el BG2, BG3 y los sprites (Parecido a la niebla)
0xDD: Se funde con el BG2, BG3 y los sprites (Parecido a la niebla)
0xDE: Se funde con el BG0, BG1, BG2, BG3 y queda sobre los sprites
0xDF: Se funde con el BG0, BG1, BG2, BG3 y queda sobre los sprites
0xE0: Queda bajo todas las capas (Queda invisible)
0xE1: Queda bajo todas las capas (Queda invisible)
0xE2: Se funde SOLO con el BG1
0xE3: Se funde SOLO con el BG1
0xE4: Se funde SOLO con el BG2
0xE5: Se funde SOLO con el BG2
0xE6: Se funde SOLO con el BG2 y el BG1
0xE7: Se funde SOLO con el BG2 y el BG1
0xE8: Se funde con el BG3
0xE9: Se funde con el BG3
0xEA: Se funde con el BG2 y BG3
0xEB: Se funde con el BG2 y BG3
0xEC: Se funde con el BG1, BG2 y BG3
0xED: Se funde con el BG1, BG2 y BG3
0xEE: Se funde con el BG0, BG1, BG2, BG3 y queda bajo los sprites
0xEF: Se funde con el BG0, BG1, BG2, BG3 y queda sobre los sprites
0xF0: Se funde con el BG0 y los sprites
0xF1: Se funde con el BG0 y los sprites
0xF2: Se funde con el BG0, BG1 y los sprites
0xF3: Se funde con el BG0, BG1 y los sprites
0xF4: Se funde con el BG2 y los sprites
0xF5: Se funde con el BG2 y los sprites
0xF6: Se funde con el BG1, BG2 y los sprites
0xF7: Se funde con el BG1, BG2 y los sprites
0xF8: Se funde con el BG3 y los sprites
0xF9: Se funde con el BG3 y los sprites
0xFA: Se funde con el BG1, BG3 y los sprites
0xFB: Se funde con el BG1, BG3 y los sprites
0xFC: Se funde con el BG2, BG3 y los sprites (Parecido a la niebla)
0xFD: Se funde con el BG2, BG3 y los sprites (Parecido a la niebla)
0xFE: Se funde con el BG0, BG1, BG2, BG3 y queda sobre los sprites
0xFF: Se funde con el BG0, BG1, BG2, BG3 y queda sobre los sprites
Por si no entendéis muy bien lo de los BG's, básicamente, son las diferentes capas en las que se encuentran los tiles, siendo por ejemplo los tiles de pasto que se encuentran en el BG2 y BG3, o los tiles de la copa de un arbol, en la que nostros quedamos bajo de ella, que se encuentra en el BG1. Podéis comprobarlo vosotros mismos con VBA > Tools > Map Viewer...
Sin duda, un comando muy útil, ahora, pasamos con los dos últimos, pero no por ello menos importantes:
Código:
REG_BLDY = 0xB;
REG_BLDALPHA = 0;
Por último, REG_BLDALPHA, que significa "Alpha Blending", no sé muy bien como usarlo, si alguien quiere investigarlo, aquí tiene algo de información al respecto
Si vosotros también queréis investigar regiones pero no sabéis por donde empezar, es tan fácil como ir a nuestro querido mintty.exe, conocido por otros como cygwin, y escribiremos en el directorio de pokeruby
Código:
git grep "REG_"
¡Eso es todo, espero ver que os animáis con esto!
Si por casualidad se os ocurren descripciones mejores para "REG_WININ" y "REG_WINOUT" (entendiendo lo que hacen) y la queréis compartir, serán bien recibidas, pero llevo un rato pensando y no se me ocurre nada mejor.
INVESTIGADORES
@InmortalKaktus: REG_WININ, REG_WINOUT, REG_WIN0H, REG_WIN0V, REG_BLDCNT, REG_BLDY
@L!no the Maelstrom : REG_BLDALPHA
Última edición: