Registrarse

[Scripting] Oscurecer/iluminar pantalla

FelixTC

Usuario de Oro
¡Holaaa! Nuevo tutorial que voy a sacar a partir de los retos ^^
Créditos de la idea (ademas de ayudarme) a @Kate, AliKate o como se llame en un futuro (?)


Voy a ser rápido...


OSCURECER

Código:
writebytetooffset 0x3F 0x4000048
writebytetooffset 0x3F 0x4000049
writebytetooffset 0xFF 0x4000050
writebytetooffset 0x1F 0x4000051

ILUMINAR

Código:
writebytetooffset 0x3F 0x4000048
writebytetooffset 0x3F 0x4000049
writebytetooffset 0x9F 0x4000050
writebytetooffset 0x3F 0x4000051

Bueno, ahora la explicación...​

Introducción

Lo que vamos a hacer en este tutorial, va a ser todo con scripts, por eso, van a necesitar todo lo necesario para ello. Que deberían saber que cosas son, ya que lo que voy a explicar requiere un cierto nivel de conocimiento, pero no mucho (igualmente iré diciendo las herramientas). Vamos a hacer que se oscurezca la pantalla, también se puede iluminar, empecemos.

Paso 1: seleccionando el efecto

Uno de los requisitos para hacer cualquiera de los dos efectos es seleccionarlo: vamos a hacerlo con números binarios y dos wbto (Tutorial WBTO). Lo que vamos a necesitar va a ser una calculadora que pase de binario a hexadecimal... si ya quieren, decimal. Un ejemplo bastante practico es la calculadora del propio Windows, la ponen en modo "Programador" y listo. Antes de empezar, vamos a explicar esto:
Nota: si vas a VBA > Tools > Map Viewer; podes ver los fondos del juego

Bit Expl.
0 BG0 Primer objetivo (Background 0)
1 BG1 Primer objetivo (Background 1)
2 BG2 Primer objetivo (Background 2)
3 BG3 Primer objetivo (Background 3)
4 OBJ Primer objetivo (Top-most OBJ pixel)
5 BD Primer objetivo (Backdrop)
6-7 Efectos especiales de colores (0-3, los siguientes)
0 = Nada (Efectos especiales de colores desactivados)
1 = Mezcla alfa (Primer y segundo objetivos mezclados)
2 = Incrementa el brillo (El primer objetivo se vuelve mas blanco)
3 = Disminuye el brillo (El primer objetivo se vuelve mas negro)
8 BG0 Segundo objetivo (Background 0)
9 BG1 Segundo objetivo (Background 1)
10 BG2 Segundo objetivo (Background 2)
11 BG3 Segundo objetivo (Background 3)
12 OBJ Segundo objetivo (Top-most OBJ pixel)
13 BD Segundo objetivo (Backdrop)
14-15 No se usa

Basándonos en esto, vamos a hacer una selección de las características que queremos activar, por medio de los números binarios (0 = apagado | 1 = encendido). Empiezo a explicar para que es cada función o si la tenes que activar si o si.

0 = Cajas de texto, etc (podes elegir para que se aplique el efecto o no, pero quedaría mejor si lo activas, en mi opinión)
1 = Son algunos tiles, seleccionalo.
2 = Son algunos tiles, seleccionalo.
3 = Son algunos tiles, seleccionalo.
4 = Son los overworlds (podes elegir para que se aplique el efecto o no, pero definitivamente quedaría mejor si lo activas)
5 = Seleccionalo.
6-7 = Acá podrían hacer que no se active o que se active y que efecto seleccionar. Abajo explico mas a fondo.
0 = Cajas de texto, etc (podes elegir para que se aplique el efecto o no, pero quedaría mejor si lo activas, en mi opinión)
1 = Son algunos tiles, seleccionalo.
2 = Son algunos tiles, seleccionalo.
3 = Son algunos tiles, seleccionalo.
4 = Son los overworlds (podes elegir para que se aplique el efecto o no, pero definitivamente quedaría mejor si lo activas)
5 = Seleccionalo.
14-15 = No se usa, pero a veces vas a tener que hacerlo notar o no. Abajo explico mas.

Explicación 6-7: Estamos hablando de 2 bits, pero en el segundo (7) te permite meter 2 bits. Eso es porque tenemos que elegir entre 2 (10b) o 3 (11b), y como podemos apreciar en los paréntesis, dichas selecciones se pueden lograr a través de 2 bits. Entonces, 10 para hacer el efecto de iluminar y 11, para el de oscurecer.

Explicación 14-15: Todo esto es en base a mi experiencia de prueba y error, no es la verdad absoluta. Estos a veces se suelen hacer notar, y a veces no. Me explico, cuando vamos seleccionando los bits, podemos llegar a 13 perfectamente (sin hacer notar el 14-15), lo pasamos a hex y todo bien. Pero si tenes la posibilidad de expandir a 14 o 15 bits, sin pasarse de: XX XX hex, hacelo, puede que sea determinante para que funcione.

Entonces, según mis gustos... voy a elegir los siguientes números: 1111111111111
Lo pasamos a hexadeciamal: 1F FF
Lo damos vuelta: FF 1F
Lo ponemos en un wbto, en el orden que tenemos las direcciones 4000050 y 4000051 respectivamente:


Código:
writebytetooffset 0xFF 0x4000050
writebytetooffset 0x1F 0x4000051
Así, básicamente estaría logrando el efecto que dejo al principio, que para mi, seria el optimo.


Paso 2: activando los efectos en las ventanas

Ahora que tenemos seleccionado el efecto que queremos, con las características que queremos, es hora de activar los efectos especiales en las ventanas. Hay dos ventanas, ahora vamos a ver como seleccionar lo que queremos, nuevamente, con bits:
Nota: si vas a VBA > Tools > IO Viewer > WININ; vas a ver mucha información sobre lo que vamos a explicar

Bit Expl.
0-3 Ventana 0 Habilitar bits de BG0-BG3
4 Ventana 0 Habilitar bits de OBJ (overworld)
5 Ventana 0 Habilitar efectos especiales de color
6-7 No usado
8-11 Ventana 1 Habilitar bits de BG0-BG3
12 Ventana 1 Habilitar bits de OBJ (overworld)
13 Ventana 1 Habilitar efectos especiales de color
14-15 No usado

Lo que tendríamos que hacer indiscutiblemente seria poner esto: 11111100111111
Lo pasamos a hexadeciamal: 3F 3F
Lo ponemos en un wbto, en el orden que tenemos las direcciones 4000048 y 4000049 respectivamente:


Código:
writebytetooffset 0x3F 0x4000048
writebytetooffset 0x3F 0x4000049


Ya estaría terminado, espero que les haya servido. Este tutorial es fruto de mi tema de retos. Díganme si tienen dudas, recomendaciones o recalcarme un error; estaré atento :blush:


Arrivederci~
 
Última edición:

Omega

Tal vez
Miembro del equipo
Administrador
Respuesta: GBA | Efectos: oscurecer/iluminar pantalla

Ah, cuanto me gusta el WTBO!
Es un lindo tutorial, bastante simple y útil (Como debe ser xD) gracias por molestarte en traerlo, solo una pregunta, se puede usar en cualquier parte sin errores conocidos?

Saludos!!!
 

FelixTC

Usuario de Oro
Respuesta: GBA | Efectos: oscurecer/iluminar pantalla

Ωmega;419478 dijo:
Ah, cuanto me gusta el WTBO!
Es un lindo tutorial, bastante simple y útil (Como debe ser xD) gracias por molestarte en traerlo, solo una pregunta, se puede usar en cualquier parte sin errores conocidos?

Saludos!!!
Vamos a ver... según he visto, el efecto se sale cuando entras a la mochila, u otras cosas del estilo. Esos fueron los únicos errores que he encontrado.
Pero si, se puede usar en cualquier lado, si encontrás alguno... avisame, me seria de gran ayuda.
Lo dicho, creo que lo ideal seria usarlo en algún script que no puedas acceder a ningún menú de nada. Igualmente, como se puede ver en las imágenes, si se puede abrir el menú, lo que no se puede es abrir las cosas x'D


PD: Si encuentro alguno edito y te menciono o te aviso de alguna forma.



Arrivederci~
 

DrakoVinyl

Usuario de Platino
Respuesta: GBA | Efectos: oscurecer/iluminar pantalla

De tanto trastear en GBATEK ya conocía yo algo de este asunto, pero lo que has hecho tú en colaboración con Franco (o viceversa (? ) me ha dado una nueva y mejor impresión del potencial que tiene este recurso para hacer eventos currados y detallistas.
¡Por fin! ¡Basta de usar el "Setweather" de forma anticuada para representar oscuridad! Esto sin dudas está mucho mejor.

Tengo dos preguntas (para las cuales ya anticipo la respuesta; un si :v):

¿Esto se puede aplicar incluso usando el efecto visual "flashback".
Si en mi script se da el caso de que uso un "Fadescreen" para dejar la pantalla en negro (o en su defecto en blanco, dependiendo del parámetro del fadescreen), ¿La pantalla se oscurecerá aún más (o por el contrario se aclarará según el parámetro del fadescreen) tras quitar el fadescreen?

『UN SALUDO』
 

FelixTC

Usuario de Oro
Respuesta: GBA | Efectos: oscurecer/iluminar pantalla

Vinil〇♪;419485 dijo:
De tanto trastear en GBATEK ya conocía yo algo de este asunto, pero lo que has hecho tú en colaboración con Franco (o viceversa (? ) me ha dado una nueva y mejor impresión del potencial que tiene este recurso para hacer eventos currados y detallistas.
¡Por fin! ¡Basta de usar el "Setweather" de forma anticuada para representar oscuridad! Esto sin dudas está mucho mejor.

Tengo dos preguntas (para las cuales ya anticipo la respuesta; un si :v):

¿Esto se puede aplicar incluso usando el efecto visual "flashback".
Si en mi script se da el caso de que uso un "Fadescreen" para dejar la pantalla en negro (o en su defecto en blanco, dependiendo del parámetro del fadescreen), ¿La pantalla se oscurecerá aún más (o por el contrario se aclarará según el parámetro del fadescreen) tras quitar el fadescreen?

『UN SALUDO』
Hola, me alegra que te haya gustado. Básicamente Franco ya lo había descubierto, se le dio por ponérmelo de reto (ya que no había compartido esto) y bueno, me guió en el camino de mi aprendizaje (lo cual, aprendí bastante)

Y en cuanto a tus dudas... Tengo el mapa lleno de minis haciendo cosas distintas xDD
Si, se puede usar usando el efecto "flashback"
Y no, no se intensifica el efecto al usar un fadescreen.

Perdón por la tardanza '^^



Arrivederci~
 

Naren Jr.

Puto amo
Usuario de Platino
Respuesta: GBA | Efectos: oscurecer/iluminar pantalla

Mmm un detalle que alcanzo a observar es que también esta afectando el menú y los demás, no se si es un valor agregado pero esta bastante trabajo.
Muchas gracias por el aporte, de una a mi lista de cosas interesantes!

Un abrazo.
 

Acosta

The Wolf~
Respuesta: GBA | Efectos: oscurecer/iluminar pantalla

Un tutorial el cual puede ser un poco complicado de entender, pero te vas dando cuenta que se va poniendo más fácil, teniendo en cuenta que es muy útil. En fin, este tutorial no está nada mal, es bueno que traigas tutoriales de este tipo, y aportes al Foro. En realidad no tengo ninguna pregunta, ya que se entiende perfectamente. Quedaría genial para darle el efecto de noche a una ciudad.

Sin más nada que decir...


Acosta~
 
Arriba