Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: l1nk3rn3l on January 03, 2010, 06:12:05 PM

Title: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: l1nk3rn3l on January 03, 2010, 06:12:05 PM
 ;D

http://www.mediafire.com/?nndcmmnzynz
http://rapidshare.com/files/329820078/Yeti3D.rar.html

yo de nuevo , mirando por ahi los primeros motores 3d que uso fenix
desearia que me echaran una mano que con las paletas y mascaras graficas
no tengo idea...

intento cargar los graficos desde un fpg al motor pero no se ve bien
test13.prg y test14.prg
las funciones en cuestion son:


fenix3d.c
-----------------
fx_CargarSpritesFenix
fx_CargarTexturaFenix




investigando por ahi , ahi una version del motor mas actualizada que carga las pieles de los modelos md2
usando la sdl_image , con la funcion IMG_Load, de pronto este codigo puede servir de referencia para cargar correctamente las texturas y sprites del motor
desde un FPG:
tomado del proyecto http://code.google.com/p/yeti3d-pvr/

yeti pvr
----------------
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
//int main(int argc, char *argv[])
{

Uint8* keys;  // to keep track of keypresses later on.
SDL_Surface *temp_skin;
SDL_Surface *convert_skin;
int i, j;
u16 *skinsrc;

  //Initialize SDL video.
  if ( SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) < 0 )
  {
    printf("Unable to init SDL: %s\n", SDL_GetError());
    exit(1);
  }
  atexit(SDL_Quit);

  testmd2 = (model_t *)yeti_load_file("test.md2");
  printf("Opened test.md2 successfully.\r\n");
  temp_skin = IMG_Load("test.pcx");
  if (temp_skin) printf("Opened test.jpg successfully.\r\n");

  // set up our video surface to have the same width and height as our viewport
  screen=SDL_SetVideoMode(YETI_VIEWPORT_WIDTH,YETI_VIEWPORT_HEIGHT,16,SDL_HWSURFACE|SDL_DOUBLEBUF);
  if ( screen == NULL )
  {
    printf("Unable to set %d, %d 16-bit video: %s\n",YETI_VIEWPORT_WIDTH,
               YETI_VIEWPORT_HEIGHT, SDL_GetError());
    exit(1);
  }
  convert_skin = SDL_CreateRGBSurface (SDL_SWSURFACE, 256, 256, 16,
         31, 31 << 5, 31 << 10, 1<<15);
  SDL_BlitSurface(temp_skin, NULL, convert_skin, NULL);
  skinsrc = (u16 *)convert_skin->pixels;
  for (i=0; i< 256; i++)
  {
    for (j=0; j< 256; j++)
      skin[j] = skinsrc[j];
     skinsrc+=256;
  }
  SDL_FreeSurface(temp_skin);
  SDL_FreeSurface(convert_skin);
#ifndef _arch_dreamcast //SDL on the Dreamcast doesn't use a Window manager, so...
  SDL_WM_SetCaption(title, NULL); // Write something a bit more interesting than "SDL App" on our window.
#endif
  yeti_init(&yeti, &framebuffer, &framebuffer, textures, palette, lua);

  game_init(&yeti);



  while(done==0) // While we're not done playing, keep looping.
  {

  d3d_flip();

    while ( SDL_PollEvent(&event) ) // Here, if the user presses ESCAPE, we quit.
    {
      if ( event.type == SDL_QUIT )  {  done = 1;  }

      if ( event.type == SDL_KEYDOWN )
      {
        if ( event.key.keysym.sym == SDLK_ESCAPE ) { done = 1; }

      }

    }
  /* Check the state of the keyboard keys. This could just as easilly be changed
  to use KOS controller code in place of the keyboard on Dreamcast, or probably
  SDL_Joystick would work although I've not tried that.
  A mouse might work for some of this, too. */
  keys=SDL_GetKeyState(NULL);
  yeti.keyboard.up     = keys[SDLK_UP];
  yeti.keyboard.down   = keys[SDLK_DOWN];
  yeti.keyboard.left   = keys[SDLK_LEFT];
  yeti.keyboard.right  = keys[SDLK_RIGHT];
  yeti.keyboard.a      = keys[SDLK_RCTRL]; /* Uncomment the line below if RCTRL doesn't do anything on your system. */
/*  yeti.keyboard.a      = keys[SDLK_RETURN]; */
  yeti.keyboard.b      = keys[SDLK_SPACE];
  yeti.keyboard.l      = keys[SDLK_a];
  yeti.keyboard.r      = keys[SDLK_z];
  yeti.keyboard.select = keys[SDLK_RETURN]; /* Use this to change the model animation? */

  }

  return 0;
}
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: Windgate on January 03, 2010, 06:47:27 PM
Lo de guardar las texturas en un FPG me parece muy interesante y ya estuve hablando con Prg sobre el asunto. Desgraciadamente no sé qué puedo aportar al respecto, veo el código que pones y lo entiendo, ¿Tu idea es modificar ese código e introducir en él algo de código Bennu que se encargue de extraer un gráfico en cuestión de un fpg y cargarlo como textura usando IMG_Load?

Desde Bennu se me ocurre con algunas de las funciones de map_get_pixel, leer el gráfico del fpg, crear un mapa en memoria donde copiarlo y guardarlo como png en un directorio temporal, luego desde ahí cargarlo con IMG_Load. Todo eso usando Bennu, aunque veo que tú propones escribirlo en el "C" con el que está escrito Bennu, ¿No?
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: l1nk3rn3l on January 04, 2010, 03:02:21 PM
necesito cargar las texturas del motor desde un fpg , no crear un FPG !!!

asi que actualmente el motor funciona pero con texturas externas, me gustaria usar texturas desde un fpg..
pero la paleta no me carga bien.. asi el motor funcionaria nativamente desde Bennu, este seria el motor
ideal para usar desde la GP2X WIZ...  ya que no requiere aceleracion por harrdware como bennu3d

Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: Windgate on January 04, 2010, 05:07:30 PM
Sí, te entiendo, hablaba de cargar las texturas desde un FPG, pero de una forma algo sucia: Con map_get_pixel se podrían leer los píxeles de cada imagen del fpg, generar con ellos un nuevo map y luego guardarlo como png en un directorio temporal, luego desde allí cargarlo como un png "normal".

Bajo el Yeti3D.rar a ver qué tiene dentro por si te puedo echar un cable :P
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: SplinterGU on January 04, 2010, 10:12:43 PM
y donde estan los codigos de esas funciones?
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: Windgate on January 04, 2010, 11:03:04 PM
Yo hablo desde lo que sé hacer en Bennu con las funciones que tiene Bennu, los códigos de esas funciones son cosas de las .dll correspondientes, con eso ya sabéis que no me he metido aún, ¿Crees que podría servir Splinter?
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: SplinterGU on January 04, 2010, 11:24:02 PM
le decia a l1nk3rn3l
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: Windgate on January 05, 2010, 12:20:25 AM
Oh ;D, la verdad, si se trata de hacerlo desde el fuente de Bennu poco puedo ayudar, pero si puedo inspirar con algo a partir de lo que ya hay hecho en Bennu... Todo sea por el Bennu 3D.
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: l1nk3rn3l on January 06, 2010, 02:55:56 PM
El codigo de las funciones en mencion estan en el post ppal...

fenix3d.c
-----------------
fx_CargarSpritesFenix
fx_CargarTexturaFenix

hay msimo descargass ... y el codigo que podria ayudar , el de sdl_image,
no soy guru en graficos y paletas asi que si alguna alma generosa.. me echa una mano
prometo terminar este motor...

lo que se puede hacer con el motor,(actualmente disponible en bennupack - DLLs)


(http://www.crunchgear.com/wp-content/uploads/2008/04/snap_113016.jpg)

(http://www.iphoneskinning.com/wp-content/uploads/2008/01/snapshot1200673291.png)

en IPHONE :
(http://www.iphoneskinning.com/wp-content/uploads/2008/01/snapshot1200673272.png)

(http://iphoneapps.es/wp-content/uploads/ipac3d_iphone_ipod_touch_00.jpg)

a simple vista parece un quake pero no lo es solo aguanta niveles de un piso..
como no es tan complejo , corre muy bien incluso en celulares con windows mobile..



hay mismo se incluye el motor original para diferentes plataformas(psp,sdl,win32,opengl,etc ...)
que podrian servir de referencia..
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: SplinterGU on January 27, 2010, 03:49:45 PM
decime que queres que haga para probarlo en la wiz, y te hago el video.

saludos.

esto seria Bennu3D usando Yeti3D?
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: SplinterGU on January 27, 2010, 03:51:57 PM
ahhh, otra cosa... WIZ lleva acceleracion por hardware... tiene "Opengl ES", creo que 1.0.
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: l1nk3rn3l on January 27, 2010, 07:26:16 PM
cORDIal saludo,

si la caballeria en camino..!!!! ;D


esto seria Bennu3D usando Yeti3D?
no bennu3d es mas pesado(motor irrlicht), y creo que requiere OpenGL 1.2-3.x
aunque correr , yo si creo  , pero no se a que velocidad,
aqui algunos intentos:
http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=35704&highlight=gp2x
http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=14256&highlight=gp2x
http://www.gp32x.com/board/index.php?/topic/49973-3d-engines/page__p__763353__hl__irrlicht__fromsearch__1&#entry763353

Claro estoy pensando en el motor YETI3D por el momento ya que es el que uso fenix
hace tiempo(fenixpack),
aqui un juego hecho con fenix
http://booleansoup.org/index.php?p=gallerygames&mode=view_item&type=full&id=89

y porque corre bastante bien, incluye ejemplos en bennu, pero
hay que usar herramientas externas(java) para cargar las texturas en un archivo pak(incluido en bennupack DLLs)

actualmente creo que se puede compilar en wiz sin ningun inconveniente
claro solo basta tenerla!!  asi para los que poseen una , compilen esta libreria
y corran uno de los demos prg incluidos ...

y me pasan los fuentes(si hubieron cambios) , y un video corriendo si no es mucho pedir,

ademas este motor corre en consolas sin aceleracion , como la gp32 donde tambien esta bennu...



Muchas gracias..!!!  
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: SplinterGU on January 27, 2010, 08:15:30 PM
bien, no te digo hoy, pero este finde o en algun momento libre me pongo y lo hago.
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: Drumpi on January 28, 2010, 02:20:35 AM
¿Bennu en GP32? ¿y quien la ha portado, y cuando? porque es la primera noticia que tengo O.O
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: SplinterGU on January 28, 2010, 08:39:34 PM
quien lo porto fue un tal Drumpi, te suena?
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: l1nk3rn3l on March 13, 2010, 05:40:13 PM
la madre para el que no me ayude con las paletas...
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: DCelso on March 13, 2010, 05:50:28 PM
 :D, te ayudaría si supiera, dalo por sentado.
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: Windgate on March 14, 2010, 01:39:59 AM
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?
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: 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.
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: SplinterGU on March 14, 2010, 04:30:15 AM
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...
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: Windgate on March 14, 2010, 04:42:49 AM
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
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: Prg on September 23, 2010, 02:50:44 AM
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]
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: l1nk3rn3l on September 24, 2010, 05:04:48 PM
joder , lo probare y si sirve , continuare con el proyecto..

este motor es genial para las consolas canoo y gp2x

Gracias por el aporte
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: FreeYourMind on September 24, 2010, 05:16:05 PM
Interesante. Como va el tema ?
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: Windgate on September 24, 2010, 06:03:37 PM
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
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: Prg on September 24, 2010, 10:03:45 PM
ojalá funcione, y si no me mandas un mensaje. Dicen que dos cabezas piensan mejor que una
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: FreeYourMind on September 25, 2010, 09:19:37 AM
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 (http://www.gp32spain.com/foros/showthread.php?t=77269)
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: 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.
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: l1nk3rn3l on September 25, 2010, 02:01:11 PM
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 ..


Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: SplinterGU on September 25, 2010, 02:26:18 PM
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...
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: FreeYourMind on September 25, 2010, 02:37:16 PM
Yo no he dicho nada contrario a eso, solo pensaba que teníais problemas en el port y resulta que es problemas en las nuevas features.
Por cierto esto es por software ?
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: SplinterGU on September 25, 2010, 02:40:45 PM
yeti3d es por software... yo creo que esta bueno, pero en el caso de wiz no se aprovecha el opengles
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: Prg on September 26, 2010, 01:26:05 AM
QuoteEn 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 ..

excelente noticia. el motor me gusta para un juego de disparos tipo quake 3 arena, debido a las zonas cuadradas y a los monos md2. claro habrá que aprender a usar el editor de mapas que viene en el bennu pack.  :)
Title: Re: Yeti3D (nesecito ayuda con las paletas graficas)
Post by: Drumpi on September 26, 2010, 04:24:49 PM
Con lo contento que yo estaría con un motor 3D sencillo para hacer niveles a lo Tomb Raider 2, y personajes 2D, para hacer le plataformas 3D de Sonic :)
Y anda que si encima funciona en GP2X...

Yo por si acaso, reparto un par de karmas (al autor del port, y al responsable de que se siga) por mantener el HYPE.
A ver qué llega antes, si Yeti3D o VSE... ;D