;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;
}
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?
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
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
y donde estan los codigos de esas funciones?
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?
le decia a l1nk3rn3l
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.
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..
decime que queres que haga para probarlo en la wiz, y te hago el video.
saludos.
esto seria Bennu3D usando Yeti3D?
ahhh, otra cosa... WIZ lleva acceleracion por hardware... tiene "Opengl ES", creo que 1.0.
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..!!!
bien, no te digo hoy, pero este finde o en algun momento libre me pongo y lo hago.
¿Bennu en GP32? ¿y quien la ha portado, y cuando? porque es la primera noticia que tengo O.O
quien lo porto fue un tal Drumpi, te suena?
la madre para el que no me ayude con las paletas...
:D, te ayudaría si supiera, dalo por sentado.
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?
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.
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...
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
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]
joder , lo probare y si sirve , continuare con el proyecto..
este motor es genial para las consolas canoo y gp2x
Gracias por el aporte
Interesante. Como va el tema ?
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
ojalá funcione, y si no me mandas un mensaje. Dicen que dos cabezas piensan mejor que una
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)
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.
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 ..
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...
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 ?
yeti3d es por software... yo creo que esta bueno, pero en el caso de wiz no se aprovecha el opengles
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. :)
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