Bennu Game Development

Foros en Español => Extensiones => Mensaje iniciado por: FreeYourMind en Marzo 12, 2010, 11:28:47 pm

Título: [Bennu Module] mod_fire
Publicado por: FreeYourMind en Marzo 12, 2010, 11:28:47 pm
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.
Título: Re: [Bennu Module] mod_fire
Publicado por: Drumpi en Marzo 13, 2010, 01:11:58 am
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.
Título: Re: [Bennu Module] mod_fire
Publicado por: DCelso en Marzo 13, 2010, 01:21:03 am
:), eso tiene que estar mal por pelotary.

Con respecto a esas variables que comentas, siguen existiendo en bennuGD
Cita de: g_video.h
...
extern int scr_width ;
extern int scr_height ;
...
Y por defecto tienen valor 320x200
Cita de: 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 :)
Título: Re: [Bennu Module] mod_fire
Publicado por: SplinterGU en Marzo 13, 2010, 05:21:08 am
:D

estan hechos unas maquinas con bennu... felicitaciones! eso me gusta... :D
Título: Re: [Bennu Module] mod_fire
Publicado por: Windgate en Marzo 13, 2010, 11:32:10 am
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
Título: Re: [Bennu Module] mod_fire
Publicado por: FreeYourMind en Marzo 13, 2010, 11:58:03 pm
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.
Título: Re: [Bennu Module] mod_fire
Publicado por: FreeYourMind en Marzo 19, 2010, 09:01:59 pm
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).
Título: Re: [Bennu Module] mod_fire
Publicado por: SplinterGU en Marzo 19, 2010, 10:21:50 pm
en fenix pintabas los 3 fuegos...

si te acostumbras a poner los fuentes, quizas podemos ayudar...
Título: Re: [Bennu Module] mod_fire
Publicado por: FreeYourMind en Marzo 19, 2010, 11:29:59 pm
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  ::)
Título: Re: [Bennu Module] mod_fire
Publicado por: SplinterGU en Marzo 20, 2010, 12:40:59 am
no tocaste nada de nada? es el mismo? me resulta raro eso...
Título: Re: [Bennu Module] mod_fire
Publicado por: FreeYourMind en Marzo 20, 2010, 01:15:32 am
Sólo tienes que probar la fire.dll con el ejemplo y verás...
Título: Re: [Bennu Module] mod_fire
Publicado por: SplinterGU en Marzo 20, 2010, 01:27:34 am
tengo linux... ademas te creo que no funciona... solo queria toquetear el codigo para que funcione... pues nada...
Título: Re: [Bennu Module] mod_fire
Publicado por: FreeYourMind en Marzo 20, 2010, 01:45:04 am
Pero no tienes aceso al bennupack ?
Título: Re: [Bennu Module] mod_fire
Publicado por: SplinterGU en Marzo 20, 2010, 02:24:12 am
no lo tengo... nada, quizas alguien le eche un ojo... yo seguire con lo del opengl...
Título: Re: [Bennu Module] mod_fire
Publicado por: SplinterGU en Abril 05, 2010, 10:13:58 pm
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.
Título: Re: [Bennu Module] mod_fire
Publicado por: FreeYourMind en Abril 05, 2010, 10:20:21 pm
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
Título: Re: [Bennu Module] mod_fire
Publicado por: DCelso en Abril 05, 2010, 10:24:58 pm
oh ¿yo que?
explícamelo, please.
Título: Re: [Bennu Module] mod_fire
Publicado por: SplinterGU en Abril 05, 2010, 10:36:04 pm
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...
Título: Re: [Bennu Module] mod_fire
Publicado por: FreeYourMind en Abril 06, 2010, 07:39:09 pm
Aqui teneis la última dll compilada para windows, el ejemplo modificado por Splinter y una imagen  :P

Código: [Seleccionar]
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)
Título: Re: [Bennu Module] mod_fire
Publicado por: SplinterGU en Abril 06, 2010, 07:49:43 pm
usaste el fuente que puse yo? porque tiene correcciones...
Título: Re: [Bennu Module] mod_fire
Publicado por: FreeYourMind en Abril 06, 2010, 07:57:44 pm
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.
Título: Re: [Bennu Module] mod_fire
Publicado por: SplinterGU en Abril 06, 2010, 08:13:07 pm
si, funciona la anterior... pero igual tiene cosas corregidas.

gracias... un karma para ti por la compilacion...

saludos.
Título: Re: [Bennu Module] mod_fire
Publicado por: Windgate en Abril 07, 2010, 12:48:59 pm
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 :-\
Título: Re: [Bennu Module] mod_fire
Publicado por: DCelso en Abril 07, 2010, 01:48:08 pm
esta lib es ideal para hacer a fenix :D.
Título: Re: [Bennu Module] mod_fire
Publicado por: FreeYourMind en Abril 07, 2010, 02:49:08 pm
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.
Título: Re: [Bennu Module] mod_fire
Publicado por: SplinterGU en Abril 07, 2010, 04:14:27 pm
esta lib es ideal para hacer a fenix :D.

DCelso, esta lib es de fenix.
Título: Re: [Bennu Module] mod_fire
Publicado por: FreeYourMind en Abril 07, 2010, 04:24:22 pm
Lo que dice es que es ideal para recrear la ave de fuego, una tal Fenix, no se si conoces  ;D
Título: Re: [Bennu Module] mod_fire
Publicado por: SplinterGU en Abril 07, 2010, 04:28:45 pm
jejeje... gracias...
Título: Re: [Bennu Module] mod_fire
Publicado por: FreeYourMind en Noviembre 14, 2010, 04:33:23 pm
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)