PDA

Ver la versión completa : [Ayuda] Necesito un índice sobre las funciones de Fenix.



Rivroner
07/10/2009, 19:26
Pues eso compañeros Fenixeros ( a los Bennuseros tb os dejo ayudar :D), que necesito algo tal que así para consultar mis dudas:

START_SCROLL (INT numero, INT librería, INT gráfico, INT fondo, INT región, INT flags)
Esta función inicializa una zona de scroll en pantalla. La zona de scroll consiste en uno o dos gráficos sobrepuestos que pueden desplazarse, por encima de los cuales se dibujan aquellos procesos que han sido preparados para visualizarse dentro de un scroll.
Pueden haber hasta 10 scrolls simultaneos en pantalla, diferenciados por un código entre el 0 y el 9. Dicho código identifica el scroll dentro de la estructura global scroll. Para que un proceso se visualice en varias zonas de scroll simultáneamente, pueden sumarse los resultados. Así, con un valor en ctype de 7, el proceso se visualizará en las áreas de scroll 0, 1 y 2. Una vez un proceso tiene una variable ctype distinta de cero, sus coordenadas X e Y pasan a referirse a la zona de scroll y dejan de ser coordenadas en pantalla.
El tamaño de esta zona de scroll normalmente está limitada por el tamaño de los gráficos que se utilizan como suelo o fondo, Así, con un gráfico de fondo de 1024x1024, sólo pueden visualizarse en zonas del tamaño de la pantalla que entren dentro de este rango de coordenadas. Si se desea un área ilimitada, es preciso indicar en el parámetro flags que estos gráficos se repiten horizontalmente, verticalmente o en ambas direcciones (formando así una trama o textura).
Esta función inicializa el scroll y es necesaria para especificar los gráficos y la zona ocupada por el scroll, sin embargo la estrutura global scroll permite modificar en mitad de la ejecución normal del juego parámetros del scroll tales como velocidad de movimiento, proceso al cual el scroll debe "seguir", activar la transparencia en los gráficos, y otras posibilidades de cada scroll.

Parámetros:
INT número: Número de scroll (0-9).
INT librería: Identificador de la librería donde se encuentran los gráficos de fondo.
INT gráfico: Gráfico del "suelo" encima del cual se desplazan los procesos, o 0 para ninguno.
INT fondo: Gráfico de "fondo" que se desplaza por detrás del gráfico anterior, o 0 para ninguno.
INT región: Número de región que delimita el espacio en pantalla ocupado por la zona de scroll.
INT flags: Opciones que afectan al funcionamiento del scroll. Puede ser 0 (normal) o bien la suma de uno o más valores de la siguiente tabla:
1: El gráfico principal se repite horizontalmente.
2: El gráfico principal se repite verticalmente.
4: El gráfico de fondo se repite orizontalemente.
8: El gráfico de fondo se repite verticalmente.


Y si ya de paso me explicáis ese que pongo y me ponéis un ejemplo [wei]


Porque al leerme eso me surgen dudas como ¿c_type? ¿global_scroll?

Quiero usar el start_scroll para hacer 2 scrolles de 2 planos cada uno pero no hay forma.Supongo que es porque hay que usar un global_scroll que unifique los 2 strat_scroll pero como no sé donde mirar como funciona el global_scroll pues eso. [wei4]


¡Qué dios os lo pague! [wei2]

chipan
07/10/2009, 19:38
Para 2 scrolls en la misma pantalla tienes que definir 2 regiones de pantalla y crear 2 scrolls; sin pñvodar que los procesos que esten en ambos scrolls deben estar tambien en ambas regiones.
Mirate el códigp de uno de los ejemplos de fenix, en el se crean crea 4 scrolls; seguro que te sirve.

cybernoid
07/10/2009, 19:38
bajate Gemix Studio que en la ayuda contiene el manual de Div2 (en html)

http://www.gemixstudio.com/forums/index.php

Rivroner
07/10/2009, 19:41
Para 2 scrolls en la misma pantalla tienes que definir 2 regiones de pantalla y crear 2 scrolls; sin pñvodar que los procesos que esten en ambos scrolls deben estar tambien en ambas regiones.
Mirate el códigp de uno de los ejemplos de fenix, en el se crean crea 4 scrolls; seguro que te sirve.

¿Cuál exactamente Chipan? Gracias. :)

< - >

bajate Gemix Studio que en la ayuda contiene el manual de Div2 (en html)

http://www.gemixstudio.com/forums/index.php

Gracias, ¿pero no hay nada igual pero al menos de Fenix 0.84? Yo uso el 0.92a pero con el 0.84 me valdría.

hardyx
07/10/2009, 19:41
Tengo por aquí la referencia de Fénix que compilé en un archivo de ayuda.
Espero que os sirva.

Rivroner
07/10/2009, 19:57
Para 2 scrolls en la misma pantalla tienes que definir 2 regiones de pantalla y crear 2 scrolls; sin pñvodar que los procesos que esten en ambos scrolls deben estar tambien en ambas regiones.
Mirate el códigp de uno de los ejemplos de fenix, en el se crean crea 4 scrolls; seguro que te sirve.

He encontrado este ejemplo de BennuGD y lo he compilado en Fenix para ver si era lo que buscaba y sí, es lo que busco. :)

No sé si estabas pensando en algo así o si hay otra forma mejor de hacer un parallax.

program scrolltest;
begin
graph_mode=mode_8bits;
set_mode(m320x240);
set_fps(60,0);

load_fpg("scroll.fpg");

//scrolling_back();
scrolling_map();
end;


process scrolling_back();
private
counter=0;
struct back[4]
x; //the x-current position of the background part
y; //the y-current position of the background part
speed; //the speed of the moving background moves with
end;

begin
//init the background speeds and positions
back[0].speed=1; back[0].x=160; back[0].y=90;
back[1].speed=2; back[1].x=160; back[1].y=98;
back[2].speed=4; back[2].x=160; back[2].y=111;
back[3].speed=7; back[3].x=160; back[3].y=134;
back[4].speed=11; back[4].x=160; back[4].y=194;

put_screen(0,60);
loop
//loop through every moving background element
for(counter=0; counter<5; counter++)
//move the element
back[counter].x-=back[counter].speed;
//if its completely off the screen, move it back
if(back[counter].x<-160)back[counter].x=160;end;
//put it two times on the back for the loop effect
put(0,counter+61,back[counter].x,back[counter].y);
put(0,counter+61,back[counter].x+320,back[counter].y);
end;

frame;
end;
end;

process scrolling_map();
private
counter=0;
struct back[4]
x; //the x-current position of the background part
y; //the y-current position of the background part
speed; //the speed of the moving background moves with
end;

begin
graph=new_map(320,240,8); //make a graph for the process
z=50; //set the z layer
x=160; //set x-position for background
y=120; //set y-position for background
//alpha=255; //set transparency level for background (0-255)
//angle=0; //set angle for background (0-360000)
//size=100; //set size for background in %

//init the background speeds and positions
back[0].speed=1; back[0].x=160; back[0].y=90;
back[1].speed=2; back[1].x=160; back[1].y=98;
back[2].speed=4; back[2].x=160; back[2].y=111;
back[3].speed=7; back[3].x=160; back[3].y=134;
back[4].speed=11; back[4].x=160; back[4].y=194;

//set the not moving background
map_put(0,graph,60,160,120);
loop
//loop through every moving background element
for(counter=0; counter<5; counter++)
//move the element
back[counter].x-=back[counter].speed;
//if its completely off the screen, move it back
if(back[counter].x<-160)back[counter].x=160;end;
//put it two times on the map for the loop effect
map_put(0,graph,counter+61,back[counter].x,back[counter].y);
map_put(0,graph,counter+61,back[counter].x+320,back[counter].y);
end;
frame;
end;
end;

< - >

Tengo por aquí la referencia de Fénix que compilé en un archivo de ayuda.
Espero que os sirva.

Gracias Hardyx, me lo miro a ver si es lo que busco. :brindis:

EDITO:Eso es lo que buscaba, muchas gracias. :)

chipan
07/10/2009, 20:15
ah joño, ¿era para un parallax? pues te juro que había calculado algo completamente distinto.

animanegra
07/10/2009, 20:39
Rivoner yo suelo tirar de la wiki esta:
http://fenixworld.se32.com/fenixwiki/index.php?title=Categor%C3%ADa:Funciones
O la de bennu:
http://wiki.bennugd.org/index.php?title=Functioncategories

Aunque ya veo que te han mandao la API por un fichero.

Rivroner
07/10/2009, 21:00
ah joño, ¿era para un parallax? pues te juro que había calculado algo completamente distinto.

Sí, es que quería simular uno con 2 scrolles de 2 capas cada uno, pero se me ha olvidao decirte que quería hacer un parallax. :D Mea culpa. :)

< - >

Rivoner yo suelo tirar de la wiki esta:
http://fenixworld.se32.com/fenixwiki/index.php?title=Categor%C3%ADa:Funciones
O la de bennu:
http://wiki.bennugd.org/index.php?title=Functioncategories

Aunque ya veo que te han mandao la API por un fichero.

Muchas gracias por los enlaces, seguro que me ayudan. ;) :brindis:

Drumpi
08/10/2009, 00:54
Yo tengo este, es de Fenix 083b pero salvo dos o tres funciones (que hay un error) te sirve sin problemas.

Respecto al scroll, te explico:
En memoria hay 10 structs globales predefinidas, que controlan a 10 posibles scrolls (el primer parámetro de la función start_scroll), así que primero debes crear uno, o dos como es tu caso, y usarlo en la region que quieras, que, de nuevo en tu caso, es la misma.
Luego sólo tienes que mover el primero con los valores de scroll[nº_de_scroll].x0 y scroll[nº_de_scroll].y0 (o asignando el ID de un proceso a scroll[nº_de_scroll].target) y el segundo usando las coordenadas (por ejemplo:
scroll[1].y0=scroll[0].y0/2;

Para que se mueva la mitad de rápido).

Los procesos, para moverse dentro del scroll deben saberlo, y eso se determina con la variable local predefinida ctype. En este caso ctype=c_scroll;
Luego debes decir en qué scrolles deben aparecer, creo que por defecto sólo aparecen en el primero, pero consulta la variable local predefinida c_numbre o c_flags, no estoy seguro, creo que hubo algún cambio por ahi, consulta las wikis.
Si tienes más dudas, en el ejemplo oficial hay mas info... o te puedes descargar ESTE CRAP-GAME (http://www.crapcompo.org/crap4/drajon%20lol%20devolucion%20-%20drumpi.exe) y mirar el código de uno de los últimos niveles (no se instala, símplemente se descomprime en una carpeta temporal mientras se ejecuta, ahi encontrarás el código).

Rivroner
08/10/2009, 08:21
Gracias Drumpi, le echaré un vistazo a lo que dices. :)


Ese juego tuyo ya lo tengo bajado desde ayer.No es lo que busco pero igual el modo 7 lo uso en alguna fase. :D

Drumpi
08/10/2009, 17:35
Em... no, no mires al suelo, mira los fondos, no usan modo7, usan scrolls normales, y el nivel de la cueva por ejemplo uso dos scrolls, teniendo así tres planos a distinta velocidad.
Emmm... no recuerdo cual es el nivel de la cueva, tendrías que jugar para mirarlo ^^U

Rivroner
20/10/2009, 19:20
Por cierto, no he sido capaz de encontrar en ningún lado, ni en fenixworld ni en los índices que me pasasteis como usar el modo 7, por suerte tengo el juegaco del famigo Drumpi :D

Drumpi, famigo, si me explicas que es cada parámetro te lo agradecería. :)

start_mode7(0,nivel,1,1,0,62);
resolution=10;
m7[0].camera=id;
//m7[0].height=30;
m7[0].height=60;
m7[0].z=-10;
ctype=c_m7;
define_region(1,0,0,800,400);

Y dime tb si de eso sobra o falta algo para el modo 7, que es posible, lo he copiado a ojímetro de tu juegaco. :D

Y otra cosilla, cuanto más grande sea el gráfico que le paso al modo 7 mejor se verá en pantalla ¿no? ¿O eso lo controla la resolution=10?


Ya he visto un scroll parallax guapo en el nivel 6 de tu juego. :)

Gracias. :)

GameMaster
20/10/2009, 19:35
Pero si tienes la ayuda de DIV2 donde te lo explica. Viene con las betas de Gemix, así que ya sabes donde mirarlo...

Rivroner
20/10/2009, 20:07
Es que no uso ninguno de los 2 que nombras para nada.

Lo miraré, gracias. :)

animanegra
20/10/2009, 21:28
http://divero.net/~vii/ayudadiv2/162.html

:P google star_mode7 primera entrada

< - >
PD: :D Esque me parece mejor dar referencias a sitios para que la gente pueda bookearlos que dar la explicacion.

GameMaster
20/10/2009, 22:18
No importa que los uses, es que las funciones son identicas o similares, y por norma las variables tambien, la ayuda de DIV es la más currada de todas y te sigue sirviendo para Bennu inclusive, al 70% ...

Drumpi
21/10/2009, 19:44
Y otra cosilla, cuanto más grande sea el gráfico que le paso al modo 7 mejor se verá en pantalla ¿no? ¿O eso lo controla la resolution=10?


Ya he visto un scroll parallax guapo en el nivel 6 de tu juego. :)

Gracias. :)

Llamar juegaco al "Drajon Lol: Devolution" es como decir que la película en que se basa es genial :D:D:D
Aparte de eso, resolution no tiene nada que ver con la resolución del gráfico, sino con la cantidad de unidades que mide un pixel. Es una forma de tener "decimales" en la posición de los personajes, tanto en modo 7 como en scrolls y en pantalla en general. Con resolution=10 indico que para avanzar 1 pixel debo incrementar o decrementar las variables X o Y en 10 posiciones.


http://divero.net/~vii/ayudadiv2/162.html

:P google star_mode7 primera entrada

< - >
PD: :D Esque me parece mejor dar referencias a sitios para que la gente pueda bookearlos que dar la explicacion.


No importa que los uses, es que las funciones son identicas o similares, y por norma las variables tambien, la ayuda de DIV es la más currada de todas y te sigue sirviendo para Bennu inclusive, al 70% ...

Exacto, cualquier ayuda de Div funciona en casi todo. La pega es que en Fenix no funciona ni "horizon" ni "focus" de las estructuras m7, no se llegaron a programar. Para mi gusto, el modo7 es la asignatura pendiente de Fenix.
Os adjunto el código que usaba para hacer pruebas, es bastante antiguo así que no lo recuerdo bien. Nunca conseguí que funcionase tan bien como el de DIV, en el que ya tenía medio organizado un FZero estilo SNES al doble de velocidad (se canceló al no conseguir un equilibrio entre velocidad-giro-curvas para una buena jugabilidad).

Rivroner
22/10/2009, 11:37
Gracias a todos me lo miraré a ver, pero me parece imposible integrarlo en mi scroll actual :D

Uno que no tiene ni poota idea :D