Duda sobre transparencia y manipuacion de imagenes desde Bennu

Started by master, November 27, 2012, 07:01:07 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

master

Hola a todos.

Desde hace poco estoy desarrollando un Remake de un juego de GBA para Caanoo. Pero en el proceso me encontré con un problema:

El manual de OSK habla del uso en modo de 32 bits, pero caanoo solo soporta los 16 bits (y creo 24 bits)
lo que yo quiero es colocar una imagen (con texto estilizado), pero dejando ver el fondo (creo que esto se resuelve usando como fondo el color de la paleta con índice 0) <---Tengo duda de esto
el inconveniente surge porque quiero el el gráfico aparesca poco a poco (parcialmente) de izquierda a derecha y de arriba a abajo (como efecto de maquina de escribir en varias lineas, linea tras linea) <---duda principal
por ejemplo tengo un texto de 2 lineas y cada linea con 5 caracteres, pues primero se destapara la primera linea letra por letra y luego la sig linea letra por letra hasta mostrar todo
No se me ocurre la forma de resolver esto.

Unas duda mas:
¿Bennugd tiene soporte para la función de vibración de la caanoo?
¿Bennugd puede reproducir video? ¿en que formato? <--- quiero meterle video pero tambien quiero que mi remake sea portable (usar librerias oficiales o que esten en la mayoria de los ports de bennu), es una de las principales razones por la cual estoy haciéndolo.

Saludos

SplinterGU

si, color indice 0 (8 bits) o 0 absoluto (en todos los modos)

no entiendo la duda de la maquina de escribir, tendras que hacerlo tu eso... puedes hacerlo de muchas formas, write_in_map, write_var usando una variable string e incrementando la string poco a poco, y usando move_text o text_move.

vibracion no recuerdo si lo implemente o no...

videos flic, que son una chorrada... esta en planes meter algo mejor.

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

master

lo de la maquina de escribir me refiero a que:

Tengo unas imagenes en un FPG, cada imagen tiene un texto estilizado de 9 lineas por 15 caracteres (como maximo por imagen), lo que quiero es que en mi juego aparesca cada imagen pero con un efecto de maquina de escribir, que en vez de mostrar la imagen de golpe, ir descubriendo parte por parte imitando el efecto maquina de escribir.

Como solución se me habia ocurrido que cada imagen fuese una linea (no varias como lo tenia ya guardado), y usar regiones para imitar el efecto de maquina (ir descubriendo el gráfico poco a poco hasta mostrar toda la linea). Pero no me gustaria hacerlo asi porque es una tarea titanica editar todos los textos (estilo 9X15) y guardarlos en linea por imagen por separardo (1X15), y creo que necesitaria mas de un FPG (mas de 999 imágenes)

Lo que sucede es que los textos están en Japones, y como bennu no maneja fuentes en japones etc. usare imágenes con el texto ya escrito

FreeYourMind

No es complicado, tengo algo parecido en mi PolloPollo en los creditos, las letras se van formando como de niebla hasta que estan completas, en tu caso sólo tienes que ir pintando una a una con un timer, puede ser texto o una imagen que represente la letra (en el caso de letras japonesas), en este ultimo caso sólo tendrias que crear una funcion que de la equivalencia de letras a simbolos (imagenes)

DCelso

creas un proceso para cada letra de tu palabra en el que los parametros de entrada sean las coordenadas x e y, en el que dentro solo pongas la imagen de tu letra y un do frame,  y luego simplemente desde el proceso main o el que quieras instancias cada proceso en la posicion que quieras para imitar la escritura de una maquina de escribir
process letra1(x.y)
begin
   file = mifpg;
   graph = 1;
  do
    frame;
  end
end
process letra2(x.y)
begin
    file = mifpg;
    graph = 2;
   do
     frame;
   end
end

---
----
process main()
begin
letra1(0,100);
frame(400)
letra1(50,100);
..
....
end

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

master

Gracias por sus respuestas

Quote from: DCelso on November 28, 2012, 01:04:40 AM
creas un proceso para cada letra de tu palabra en el que los parametros de entrada sean las coordenadas x e y, en el que dentro solo pongas la imagen de tu letra y un do frame,  y luego simplemente desde el proceso main o el que quieras instancias cada proceso en la posicion que quieras para imitar la escritura de una maquina de escribir
process letra1(x.y)
begin
   file = mifpg;
   graph = 1;
  do
    frame;
  end
end
process letra2(x.y)
begin
    file = mifpg;
    graph = 2;
   do
     frame;
   end
end

---
----
process main()
begin
letra1(0,100);
frame(400)
letra1(50,100);
..
....
end

veo tu metodo y me parece que no podre aplicarlo, porque no se trata solo de un par de textos en japones, sino de los dialogos y textos de todo el juego, lo vería mas como un mapa de tiles e ir aplicando el gráfico correcto, el problema es que no se manejar tiles porque el manual de OSK no habla del tema casi,
¿como leer un archivo modo texto como mapa de tiles y luego ir aplicando los graficos?
ya tengo las imágenes con cada gráfico Japones, pero ahora seria:
¿como convierto mis imágenes con el texto en Japones a mapas de tiles (para no volver a hacer el trabajo pesado)?

Sino, creo que terminaré usando regiones

gecko

Al proceso letra agregale el parametro graph y te sirve para todas las letras

process letra(x,y,graph)
begin
    file = mifpg;
    loop
        frame;
    end
end

process escritor()
private
    int i;
end
begin
    for(i=0; i<LONGITUD_DEL_TEXTO; i++)
        letra( i * 20, 100, TEXTO[i]  );
        frame;
    end
end


donde TEXTO[] guarda los valores de las distintas letras, y LONGITUD_DEL_TEXTO... bueno... adiviná! :P
Torres Baldi Studio
http://torresbaldi.com

SplinterGU

puedes usar 2 regiones e ir mostrando el texto en una region de a 1 caracter y en la otra vas desplazando las lineas ya completas... pero me parece impractico, el problema esta en que necesitas saber en cada linea donde empieza y termina cada caracter o detectarlo en base al espaciado... pero me parece igual un poco mucho...

quizas simplemente te convenga ir deslizando el texto desde arriba hacia abajo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

master

Quote from: SplinterGU on November 28, 2012, 04:22:06 AM
puedes usar 2 regiones e ir mostrando el texto en una region de a 1 caracter y en la otra vas desplazando las lineas ya completas... pero me parece impractico, el problema esta en que necesitas saber en cada linea donde empieza y termina cada caracter o detectarlo en base al espaciado... pero me parece igual un poco mucho...

quizas simplemente te convenga ir deslizando el texto desde arriba hacia abajo.

resulta que los caracteres tienen las mismas dimensiones, entonces el espaciado no es problema, el problema viene con que no todas las lineas tienen el mismo numero de caracteres, algunas mas, algunas menos, pero no pasan de 12 (debido al espaciado)

KeoH

Una idea .. puede estar curioso o ser una pesadilla xDDD:

La frase que quieres que aparezca letra a letra la separas en letras .. y cada letra la guardas en un grafico con write_map (era asi la funcion??) y despues creas un proceso con cada letra y las animas como quieras xDD no se .. igual investigo esta idea xD

DCelso

umn, a ver, si lo que quiere es escribir en japones lo mas fácil es que te crees un .fnt con todos los símbolos japoneses. Bueno no se si cabrán todos, el .fnt solo tiene capacidad para 255 símbolos, de los que se suelen  usar casi 127  para letras y números, los demás son para caracteres especiales o ratos.

En fin, eso, créate un .fnt con los símbolos que necesites del japonés, no mas de 255, a cada simbolo de esos dependiendo de la posición en que lo pongas se le asignará una letra "ASCII" como código o índice del símbolo.por ejemplo la posición 65 es la "A", la 66 es la "B"....,  la 97 es la "a", la 98 es la "b", etc.

Una vez creado el fnt y conocida su correspondencia ASCII, podras usar write_var con tu nuevo fnt y crear textos japoneses de forma rápida.
Podrías escribir my_string = "aaBBcc"
write_var(mifntjapo,0,0,0,,my_string);

Ya con esta técnica puedes simular la maquina de escribir facilmente no?
my_string = "aa"
write_var(mifntjapo,0,0,0,,my_string);
frame(200);
my_string = "aaBB"
frame(200);
my_string = "aaBBcc"
frame(200);

o ya con bucles o como veas ;).


Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

como bien dice free, 255 caracteres, pero incluso no estan disponibles los 255 segun la codificacion del font...

me gustaria incluir una modificacion para que se puedan usar los 255 caracteres, incluso quizas implementar utf-8 de una buena vez.

en fin... por el momento, quizas write_in_map no sea lo mejor... pero si cortas los caracteres y te armas un font virtual en un fpg te puedes implementar facil una funcion para hacer lo que quieres.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

FreeYourMind


SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2