Buenas, he portado el modulo 'fire' de fenix a Bennu, se llama mod_fire.
No se porque Splinter no lo hizo, pues me aburria y decidi portarlo, ahora si hay algo que no sepa sobre la historia del modulo pues aclaraciones son bienvenidas.
De momento hay una pequeña cosilla que meti a dedo, y quiero que me ayudeis a arreglarlo en la version definitiva:
Los antiguos parametros 'scr_width' y 'scr_height' de donde se obtienen ahora ?? (le he puesto a pelo los valores 640 y 480 de momento para poder sacar la dll).
Bueno, pues pongo foto y viene el prg de ejemplo de toda la vida con la dll.
(http://forum.bennugd.org/index.php?action=dlattach;topic=1228.0;attach=952)
Como nota: Nunca probe el original de Fenix, me estraña que sólo salga el fuego en un sitio cuando la demo parece que iba a enseñar 3 tipos de fuego... ya me direis.
En código bennu existe la función get_modes para obtener dichos valores, supongo que en el código de la mod_video podrás encontrar el nombre interno de las variables.
Esta es otra de las dlls que nunca probé en Fenix... creo que sólo probé la ETD, la VSE, la image y para verla, la M8EE.
:), eso tiene que estar mal por pelotary.
Con respecto a esas variables que comentas, siguen existiendo en bennuGD
Quote from: g_video.h
...
extern int scr_width ;
extern int scr_height ;
...
Y por defecto tienen valor 320x200
Quote from: g_video.c
int scr_width = 320 ;
int scr_height = 240 ;
Truco, por si vas a seguir portando modulos para alcanzarme en número de modulos :D:
Tener el código fuente de bennuGD en un directorio y usar un buscador de textos, como trae freecomander o total commander, o en linux el krusader, o cualquier otro buscador que permita busqueda recursiva de subdirectorios (el propio buscador de windows trae uno) y filtres los archivos a buscar por los .c y .h, por ejemplo, para el caso de freecomander es "*.h;*.c".
Y buscar las funciones, variables que te den errores para ver en qué fichero cabecera están y poder insertarlo en tu código.
Algunas funciones y variables pueden haber cambiado su nombre para ajustarse al módulo al que pertenecen pero guardan algún patrón con el nombre original, en mi caso antes había una funcion llamada gr_line y ahora se llamaba draw_line, comparten line, así que para encontrarla busqué algo como _line a ver cual podría ajustarse a mis parámetros y así encontré a draw_line :D.
Pues aplicando esa técnica deberías encontrar todas la funciones y variables en el código de bennu :)
:D
estan hechos unas maquinas con bennu... felicitaciones! eso me gusta... :D
Wow, me gusta, tiene muy buen aspecto y los efectos visuales siempre son de agradecer, veo que faltan 2 tipos de fuego en esa captura, pero el que hay se ve perfecto, espero a usarlo para darte el karma :D
Gracias por traer esas cositas
Estoy en ello Windgate, esto es una beta :)
Hoy ha sido un dia muy duro con lo de Retromadrid 2010, mañana si tengo energia retomaré el trabajo.
Buenas, he pillado algun tiempo para resolver este tema pendiente. Como sabeis me puse a portar la dll a Bennu sin saber que estaba en el Bennu Pack.
Estaba en estado beta por unas dependencias que desconocia, despues de mirar el código de la portada en el Bennu pack, las descubri y termine la dll.
Esta dll no tendria sentido sacarla, ni volver a tocar el tema, salvo por 3 cosillas:
1 - La tenia en estado beta, y ya que habia sacado el port repetido a Bennu, por lo menos termino la faena.
2 - Mi dll ocupa tan soólo 7,50 KB frente a la otra que ocupa 9,00 KB, y tienen ambas exactamente el mismo rendimiento.
3 - Esto lo más importante, he probado tambien la del Bennupack, y tanto una como otra, en el ejemplo, sólo dibuja el fuego normal!!! Así que no era un problema de mi beta, pero si de ambos ports, pero sólo si alguien confirma que en Fenix, el ejemplo pinta los 3 tipos de fuego.
Si así es, entonces tendremos una dll con problemas en Bennu, port que habrá que actualizar (el del Bennupack o la mia).
en fenix pintabas los 3 fuegos...
si te acostumbras a poner los fuentes, quizas podemos ayudar...
Si les con atención mi post, te fijas que són los mismos/identicos que los del Bennu Pack (que tiene el mismo problema), así que puedes ayudar sin problemas, que de momento algo 'Big' se esta terminando de cocinar en mi horno, y no tengo tiempo para mirar ni esta de momento ::)
no tocaste nada de nada? es el mismo? me resulta raro eso...
Sólo tienes que probar la fire.dll con el ejemplo y verás...
tengo linux... ademas te creo que no funciona... solo queria toquetear el codigo para que funcione... pues nada...
Pero no tienes aceso al bennupack ?
no lo tengo... nada, quizas alguien le eche un ojo... yo seguire con lo del opengl...
aca esta la fire portada y funcionando correctamente... http://betatester.bennugd.org/snapshot/contrib/fire.tgz
debo aclarar que no es cierto que esta dll funcionaba bien en fenix, puesto que el ejemplo estaba mal... y el mayor problema era que se crean 3 fuegos pero solo 1 toma el graph asignandolo al proceso main... y por ende, logicamente los otros 2 fuegos no se ven, porque no tienen procesos asociados a sus graph.
ya corregi el ejemplo, y limpie un poco la dll...
EDIT: incluyo el codigo... tomado de la version original de fenix que tenia en mi maquina...
saludos.
Bueno, habrá que compilarla para Windows tambien, si no os importa lo haré mañana.
DCElso no te adelantes ;D, sigue con el Camufla Girl game ;D
oh ¿yo que?
explícamelo, please.
la que subi no es solo para linux y no esta compilada... solo esta el proyecto... tenes que ponerlo en linux o windows, hacer el configure correspondiente y make...
Aqui teneis la última dll compilada para windows, el ejemplo modificado por Splinter y una imagen :P
PROGRAM Fire;
GLOBAL
a ;
struct MyPal [ 255 ]
byte r, g, b ;
end
m1, m2 ;
BEGIN
full_screen = false ;
set_fps( 0, 0 ) ;
Set_mode( 640, 480, 8 ) ;
m1 = load_pcx( "coolmap.pcx" ) ;
m2 = load_pcx( "fuelmap.pcx" ) ;
write( 0, 10, 10, 0, "FPS: " ) ;
write_int( 0, 50, 10, 0, & fps ) ;
write( 0, 0, 460, 0, "Pulsa B para cambiar la paleta" ) ;
// Paleta fuego rojo
for( a = 0 ; a < 86 ; a++)
mypal [ a ] .r = a * 3 ;
mypal [ a ] .g = 0 ;
mypal [ a ] .b = 0 ;
end
for( a = 0 ; a < 86 ; a++)
mypal [ a + 85 ] .r = 255 ;
mypal [ a + 85 ] .g = a * 3 ;
mypal [ a + 85 ] .b = 0 ;
end
for( a = 0 ; a < 86 ; a++)
mypal [ a + 170 ] .r = 255 ;
mypal [ a + 170 ] .g = 255 ;
mypal [ a + 170 ] .b = a * 3 ;
end
set_colors( 0, 256, & MyPal ) ;
fire1();
fire2();
fire3();
REPEAT
if( key( _b ) )
// Paleta fuego azul
for( a = 0 ; a < 86 ; a++)
mypal [ a ] .b = a * 3 ;
mypal [ a ] .g = 0 ;
mypal [ a ] .r = 0 ;
end
for( a = 0 ; a < 86 ; a++)
mypal [ a + 85 ] .b = 255 ;
mypal [ a + 85 ] .g = a * 3 ;
mypal [ a + 85 ] .r = 0 ;
end
for( a = 0 ; a < 86 ; a++)
mypal [ a + 170 ] .b = 255 ;
mypal [ a + 170 ] .g = 255 ;
mypal [ a + 170 ] .r = a * 3 ;
end
set_colors( 0, 256, & MyPal ) ;
end
FRAME ;
UNTIL key( _esc ) ;
END
process fire1( )
private
fireid;
begin
fireid = new_fire( 128, 256 ) ;
pos_fire( fireid, 100, 100 ) ;
fueltype_fire( fireid, 1 ) ;
fuelmap_fire( fireid, 0, m2 ) ;
start_fire( fireid, 1 ) ;
graph = graph_fire( fireid ) ;
x = 128 + 32 ;
y = 240 ;
write( 0, x, y, 4, "Fuego normal" ) ;
REPEAT
update_fire( fireid ) ;
FRAME ;
UNTIL key( _esc ) ;
delete_fire( fireid ) ;
end
process fire2( )
private
fireid;
begin
fireid = new_fire( 128, 256 ) ;
pos_fire( fireid, 0, 0 ) ;
flag_fire( fireid, 2 ) ;
cooling_fire( fireid, 0 ) ;
fueling_fire( fireid, 30, 10, 30, -15, 20 ) ;
start_fire( fireid, 1 ) ;
graph = graph_fire( fireid ) ;
x = 128 + 32 + 128 + 32 ;
y = 240 ;
write( 0, x, y, 4, "Fuego con fuelmap" ) ;
REPEAT
update_fire( fireid ) ;
FRAME ;
UNTIL key( _esc ) ;
delete_fire( fireid ) ;
end
process fire3( )
private
fireid;
begin
fireid = new_fire( 128, 256 ) ;
pos_fire( fireid, 350, 0 ) ;
cooltype_fire( fireid, 1 ) ;
coolmap_fire( fireid, 0, m1 ) ;
fueling_fire( fireid, 0, 2, 1, -32, 32 ) ;
start_fire( fireid, 1 ) ;
graph = graph_fire( fireid ) ;
x = 128 + 32 + 128 + 32 + 128 + 32 ;
y = 240 ;
write( 0, x, y, 4, "Fuego con coolmap" ) ;
REPEAT
update_fire( fireid ) ;
FRAME ;
UNTIL key( _esc ) ;
delete_fire( fireid ) ;
end
(http://forum.bennugd.org/index.php?action=dlattach;topic=1228.0;attach=1042)
usaste el fuente que puse yo? porque tiene correcciones...
Si. he llamado version 1.1 a la compilación/entorno por las correciones, por si en el futuro hago alguna nueva version.
De todos modos la anterior tambien funcionaria correctamente con el nuevo ejemplo.
si, funciona la anterior... pero igual tiene cosas corregidas.
gracias... un karma para ti por la compilacion...
saludos.
Se ven muy bien los distintos fuegos, pero me mata la dificultad de tener que rellenar a mano las paletas... Si alguien sube el ejemplo MÁS FÁCIL DEL MUNDO para que salga un fuego y ya está, el que sea, se lo agradeceré mucho, todavía no lo he probado por esa razón, veo mucho código ahí y estos días ando jodidamente liado :-\
esta lib es ideal para hacer a fenix :D.
Windgate, hay ejemplos viejunos de los tiempos de DIV, que hacen lo mismo por prg, sin necesidad de dll's, con put_pixel, esto es una alternativa en forma de dll, si yo necesito crear fuego lo haré por código ya que a partida juego con la compatibilidad entre plataformas sin dependencias externas.
Quote from: DCelso on April 07, 2010, 01:48:08 PM
esta lib es ideal para hacer a fenix :D.
DCelso, esta lib es de fenix.
Lo que dice es que es ideal para recrear la ave de fuego, una tal Fenix, no se si conoces ;D
jejeje... gracias...
Hola.
Ya teneis mi segundo port para Caanoo de los modulos no oficiales de BennuGD.
Hoy le ha tocado a este mod_fire, incluye el ejemplo prg, adaptado a la resolución de la consola. :D
(http://dl.openhandhelds.org/caanoo/screenshots/mod_fire_caanoo.png)
Descarga:
http://dl.openhandhelds.org/cgi-bin/caanoo.cgi?0,0,0,0,19,588 (http://dl.openhandhelds.org/cgi-bin/caanoo.cgi?0,0,0,0,19,588)