Yeti3D (nesecito ayuda con las paletas graficas)

Started by l1nk3rn3l, January 03, 2010, 06:12:05 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

l1nk3rn3l

la madre para el que no me ayude con las paletas...

DCelso

 :D, te ayudaría si supiera, dalo por sentado.
Monstruos Diabólicos

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

Windgate

Lo mismo digo l1nk :'(

Esta semana voy a tener mi primer acceso físico a una GP2X, si me intereso mucho por el tema espero poder ayudarte, aunque todavía no me he metido con el tema de dlls... Ojalá pudiese ayudarte l1nk, aunque creo que sería más útil mi ayuda con Bennu 3D en sí, ya hablé con splinter sobre integrar mi 3Dit al core de Bennu.

Por lo que entiendo, necesitas poder cargar las texturas desde un fpg, la mod_map debería tener gran parte de lo necesario para hacer eso... ¿Splinter o DCelso, qué sabéis sobre ello?
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

DCelso

yo se pogo, hombre quizas puedas hacer el gran truco de guardar el graph del fpg como png y luego abrirlo como textura. O incluso hacer algo de esto en un buffer en memoria :D.
Monstruos Diabólicos

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

SplinterGU

nop, la idea no es integrar el 3dit al core de bennu... sino integrarlo a bennu3d... que se comunique directo con el core de bennu...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

Quote from: DCelso on March 14, 2010, 01:50:25 AM
yo se pogo, hombre quizas puedas hacer el gran truco de guardar el graph del fpg como png y luego abrirlo como textura. O incluso hacer algo de esto en un buffer en memoria :D.

Sí, algo así es lo que yo propuse... Al parecer yeti carga directamente las texturas a partir de ficheros .png, y en ese caso podría servir. Podría extraerse cada map con un nombre de fichero igual a su número de map + ".png" y a partir de ahí cargar... l1nk dirá si sirve algo así o no.

Sí Splinter, algo así hablamos, no he sido muy preciso al explicarlo xD
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Prg

#21
hola, por qué no intentas algo así:

Quotetypedef struct Mic
{
   uint8_t rojo;
   uint8_t verde;
   uint8_t azul;

} mic ;

static int fx_CargarTexturaFenix(INSTANCE * my, int * params)
{
   GRAPH * map  ;
   int x,y,   pixel,  grafico, r,g,b;

   NTEXTURAS= (params[2] - params[1]) + 1;

     for (grafico=0;grafico < NTEXTURAS; grafico++) //verifica si existen los graficos
   {
     map = bitmap_get (params[0], grafico + params[1]) ;
     if (!map) return 0;
   }

   UnloadTextures();


   textures= (texture_t*) malloc((TXSIZE*TXSIZE)*(NTEXTURAS));
   palette = (palette_t*)malloc( (NTEXTURAS) *sizeof(palette_t));
   lua = (lua_t*)malloc((NTEXTURAS) *sizeof(lua_t));
   
  mic colors[256];
   PALETTE * pal1;
   map = bitmap_get (params[0], algun_grafico_existente) ;
   pal1=map->format->palette;
pal_get(pal1, 0, 256, ( uint8_t * ) colors );


   for (grafico=0;grafico < NTEXTURAS; grafico++)
   {
     map = bitmap_get (params[0], grafico + params[1]) ;

     if (map->format->depth == 8 ) //solo soporta 256 colores
     for   (x=0; x<TXSIZE && x<map->width;  x++)
      for (y=0; y<TXSIZE && y<map->height; y++)
      {
          pixel= gr_get_pixel (map, x, y);   //obtiene el codigo de color en 8 bits
         //gr_get_rgb(pixel , &r,&g,&b );
r=colors[pixel].rojo;
g=colors[pixel].verde;
b=colors[pixel].azul;


textures [ grafico ] [ x ] [ y ] =  pixel = lua_rgb(r,g,b);

          palette[grafico][pixel][0]=r;  //debido a que se usa un solo fpg, todos los graficos tienen la misma paleta, por lo tanto con tener una sola debería ser suficiente. también sería bueno señalar que la paleta es colors. veo que usas lua, lo que no se qué es, pero quizá algo así funcione.
         palette[grafico][pixel][1]=g;
         palette[grafico][pixel][2]=b;
      }
   }

  compute_lua();  //calcula iluminacion

  return 1;
}

si te sirve yo uso este codigo para convertir gráficos de 8 a 16 bits, pero lo uso en 32 bits.

[code language="bennu"]int convert_8_16(file1,graph1)
{
   GRAPH * mapa1=bitmap_get( file1, graph1 );
   if (mapa1==NULL)
       return(0);
   int anc=mapa1->width;
   int alt=mapa1->height;
   GRAPH * temp_graph = bitmap_new_syslib( anc,alt,16) ;
   if (temp_graph==NULL)
       return(0);

   mic colors[256];
   pal_get(mapa1->format->palette, 0, 256, ( uint8_t * ) colors );

   int av1=(mapa1->pitch)-anc,av2=(temp_graph->pitch/2)-anc;
   uint8_t * buffer2=mapa1->data;
   uint16_t * buffer=temp_graph->data;
   int z=-1,z2=-1, x, y;
   int azul,verde,rojo;
   for (y=0; y<alt; y++)
   {
       for (x=0; x<anc; x++)
       {
           z++;
           z2++;
           verde=colors[buffer2[z]].verde;
           rojo=colors[buffer2[z]].rojo;
           azul=colors[buffer2[z]].azul>>3;
           verde=(verde>>2)<<5;
           rojo=(rojo>>3)<<11;
           buffer[z2]=(uint16_t) (azul|rojo|verde);
       }
       z+=av1;
       z2+=av2;
   }
   return(temp_graph->code);
}[/code]
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

l1nk3rn3l

joder , lo probare y si sirve , continuare con el proyecto..

este motor es genial para las consolas canoo y gp2x

Gracias por el aporte

FreeYourMind


Windgate

Estoy en vías de pillar una Canoo (Para trabajar XD), me gustaría mucho saber que un motor 3D puede funcionar en ella, aunque sea en baja resolución y calidad de render :D

Mantennos informados de novedades
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Prg

ojalá funcione, y si no me mandas un mensaje. Dicen que dos cabezas piensan mejor que una
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

FreeYourMind

La madre que los paaarr... :)

Coincidencia o no, jdmaster acaba de portar la Yeti3D a la Wiz!!!!

Ahora la pregunta del millon, habría que integrarlo con Bennu ?
Si se puede, y es compatible con las demás funciones 2d seria perfecto, sino lo es, y nos quedamos con un Bennu3D para Wiz, isolado, de la version oficial y no compatible con esta, pues no tendríamos nada nuevo fuera de lo que acabamos de tener, almenos que se vuelva mas sencillo programar con el Yeti3D con llamadas sencillas al estilo div-like en lugar de tener que programar bajo el SDK oficial.


Bueno, sea lo que sea, tengo que pillarme tiempo libre para ver que ofrece el engine.


http://www.gp32spain.com/foros/showthread.php?t=77269

FreeYourMind

Bueno, se me acaba de ir un poco la ilusion...
Es un port del Yeti3D para GBA, no del engine principal, con esto, no es mas que la demo que salio para gba rulando en la Wiz.
No se si ayudara en algo el port principal.

l1nk3rn3l

haber muchachos no se confundan
lo que hizo el mencionado personaje fue solo compilar los fuentes (ya disponibles)
a wiz, el motor incluso corre en celulares!!!, el motor es nativo SDL - 100%
gracias a su autor D.Evans

el motor esta integrado en fenix desde el 2005 gracias a un compañero del grupo, ver fenixpack....

y esta integrado en bennu desde hace tiempo, desde que salio el primer bennupack...

si hablamos de avanzado, el codigo de este yeti3d disponible en bennupack
es mas avanzado(al codigo original) como puede verse soporta varios tipos de modelos(3ds,obj,etc) , incluyendo el md2
, gracias a aportes de SodThor en su tiempo,  y ahora con soporte nativo de texturas , gracias a Prg,
por cierto prg , si funciono , claro esta adicionandole mas cosas, pero la idea es que tu aporte funciono.

En fin , ya que se va continuar , por los nuevos aportes , tendran el mejor motor para gp2x y demas consolas
que no tienen aceleracion... claro esta solo para usuarios bennu ..



SplinterGU

Quote from: FreeYourMind on September 25, 2010, 09:25:03 AM
Bueno, se me acaba de ir un poco la ilusion...
Es un port del Yeti3D para GBA, no del engine principal, con esto, no es mas que la demo que salio para gba rulando en la Wiz.
No se si ayudara en algo el port principal.

te ilusionas y desilucionas solo... el fuente de yeti3d es el fuente de yeti3d, es un producto portable que como dice l1nk3rn3l corre incluso hasta en celulares, no es que es una version exclusiva...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2