Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - KeiDash

Páginas: [1] 2
1
Recursos / Re:Compilado de Sound Effects [300 Sonidos]
« en: Hoy a las 01:55:34 am »
Hola este post es del 2015...

Puedes descargar todos mis sonidos en https://freesound.org/people/jalastram/packs/

 8)

No me había dado cuenta la verdad :P

Una duda, son de libre uso? La verdad es que me gustaría poder incorporar varios a mi juegos.

Muchas gracias!

2
Mesa de Ayuda / Mapeo de Controles según plataforma
« en: Hoy a las 01:26:33 am »
Buenos días a todos,

Sigo desarrollando mi juego yme ha surgido una duda con respecto al teclado y al mapeo de los botones de pads de plataformas compatibles, me explico.

BennuGD te representa los controles (_LEFT, _A, _F, _RIGHT, _ESC, etc.) de un teclado de PC. He estado buscando en la documentación, cómo mapeo el soporte de teclas del teclado con el pad de una determinada consola a la que BennuGD da soporte, en este caso, Dreamcast.

De mi juego (lo poco que tengo) he creado una iso y la he puesto en el emulador y en la consola original. El juego funciona pero sólo consigo que funcione las teclas direccionales (_LEFT, _RIGHT, _UP, _DOWN) y el boton de Start (_ENTER), los botónes no se como encajan, es decir, que CONSTANTE de BennuGD hace referencia a los botones A, B, X, Y, L y R de Dreamcast? O de otras posibles consolas.. ¿Dónde se encuentra esa documentación? Si es que existe.

Muchas gracias por la posible ayuda.

3
Mesa de Ayuda / Re:¿Por qué el texto no se muestra?
« en: Noviembre 16, 2017, 02:13:36 pm »
te marco lo que esta mal a primeras, (no se si tienes algo igual en otro lado... revisalo...)

Código: [Seleccionar]
//OJO CON ESTE PROCESO
Process SetPoints()
Begin
Loop
write_var(fntDig,500,420,0, g_iPoints);
frame;
End
End

debe ser

Código: [Seleccionar]

global
int setPointsTextId;
end

Process SetPoints()
Begin
        if ( setPointTxtId != 0 ) delete_text( setPointTxtId ); end
setPointsTxtId = write_var(fntDig,500,420,0, g_iPoints);
End

en el caso, ni necesitas hacer loop/frame

Vaya! Claro tienes toa la razón del mundo, estaba enfrascado en todo lo demás que no me daba cuenta de que estaba pasando, pero tiene todo el sentido del mundo -_-

Muchas gracias por la ayuda a todos y gracias a Splinter por encontrar el error que estaba comentiendo!

Que haría yo sin este foro :'D

4
Mesa de Ayuda / Re:Esto me explota xD
« en: Noviembre 16, 2017, 05:57:42 am »
Tienes un bucle Repeat > Until y te falta el frame; dentro, es solo eso

No es necesario dicho frame al tratarse de una lectura de un archivo.

Cierto! Fallo mío.

Curioso lo del nombre del fichero. Será por el tipo de codificación de fichero?? ANSI, UTF-8, Windows-1521??....

Lo comento por que la lectura según la codificación puede hacer que pete el "sistema" de lectura. A mi me ha pasado en el trabajo cuando nos mandan ficheros xml con codificación ANSI, cuando la aplicación solo acepta UTF-8

5
Mesa de Ayuda / Re:Obtener el tiempo en milisegundos?
« en: Noviembre 16, 2017, 02:02:38 am »
Es muy interesante todo esto que comentais la verdad, ahora mismo estoy en el punto de que tengo controlados los tiempos con contadores, y esta semana si sale todo bien, voy a añadir el audio a ver que tal se sincroniza.

La cosa es que estoy haciendo todo esto para Dreamcast, espero que rinda bien, de momento la carga no es grande en memoria así que por ese lado estoy tranquilo, ya me preocupa más como trabaje la librería en sí (mod_dream)

6
Mesa de Ayuda / Re:¿Por qué el texto no se muestra?
« en: Noviembre 16, 2017, 01:59:42 am »
Hola chicos,

Al final lo he resuelto, pero no tengo muy claro cuál es el problema. He vuelto a rehacer el código y lo he solventado.

Es curioso pero no veo exactamente dónde está el problema, eso sí, me he dado cuenta de una cosa. Pongo el código para que veáis y me digais si vosotros veis algo raro. El resumen, es que hay un proceso que está haciendo que no me deje hacer el write a posterior (SetPoints()) como estaba intentando hacer. Voy a poner el código tal cual me está funcionando ahora:

Ver el código en Gits, en caso de que alguien lo quiera ver más claro.

Código: [Seleccionar]
import "mod_video"
import "mod_screen";
import "mod_text"
import "mod_key"
import "mod_string"
import "mod_proc"
import "mod_say"
import "mod_map"

GLOBAL
byte g_iFinish = false;
byte g_bDEBUG = false;

int g_iWidthRES = 640;
int g_iHeightRES = 480;

//Fuentes
int fntDef = 0;
int fntDig = 0;
//FpgFiles
int mainFpg = 0;
int gameFpg = 0;

//Propias de iGame
int g_iMinGotcha = 348;
int g_iMaxGotcha = 356;
int g_iGotcha = 340;
int g_iSpeed = 1;
int g_iWait = 2;
int themes[6][3];

//Game items
int g_iPoints = 0;

//KeyPositions
byte chordDL = 1; //Down Left
byte chordDC = 2; //Down Center
byte chordDR = 3; //Down Right
byte chordUL = 4; //Up left
byte chordUR = 5; //Up right
byte chordSC = 6; //Scract

END

CONST
maxYposition = 350;
END

Process Main()
Private
byte p_bContinue = 0;
int t = 0;
End
Begin

CloseGame();

RunGame(1);

Loop
frame;
End

End

Process CloseGame()
Private
End
Begin

Repeat
frame;
Until(key(_ESC))

exit();
End

Process RunGame(byte sg)
Private
int prc_Points = 0;
End
Begin

g_iWait = 0;
put_screen(gameFpg, 7);

Load(sg);

Play();

While(g_iFinish != 1)
frame;
End

//ESTE ES EL TEXTO QUE QUIERO QUE SALGA CUANDO TERMINE TODO EL PROCESO
write(0, g_iWidthRES/2, g_iHeightRES/2, 1, "TERMINO");

Loop
frame;
End

End

Process Play()
Private
int songs = 0;
int chords = 0;
int counter = 1;
byte steps = 5;
End
Begin

//OJO CON ESTE WRITE_VAR
write_var(fntDig,500,420,0, g_iPoints);

for(songs = 0; songs < 1; songs++)
for(chords = 0; chords <= steps; chords++)

Show(themes[chords][0], themes[chords][2]);

frame;

end
end

While(SON != 0)
if(SON.finalice == 1) signal(SON, S_KILL); end
frame;
End

g_iFinish = 1;

End

Process Show(int milis, byte chordID)
Private
int count = 0;
int keyPress = 0;
End
Begin

While(count <= milis)
count++;
frame;
End

FILE = gameFpg;
GRAPH = chordID;
X = chordID;
Y = 0;
Z = 97;

While(Y <= maxYposition)

Y += g_iSpeed;
X = X;

chordYPosition = Y;

If(Y >= maxYposition) break; End

frame;
End

finalice = 1;

End

//OJO CON ESTE PROCESO
Process SetPoints()
Begin
Loop
write_var(fntDig,500,420,0, g_iPoints);
frame;
End
End



Este código funciona. El Proceso RunGame, ejecuta una serie de elementos. Uno de ellos es el Proceso Play. Mi intención es que cuando el Proceso Play y sus procesos hijo finalicen, se muestra un texto en pantalla, es decir:

1) Se ejecuta RunGame
2) RunGame, pone un fondo de pantalla (put_screen), carga un array de datos (Load(sg)) y ejecuta Play().
3) Hasta que Play no termine (While(g_iFinish != 1)...) se ejecuta el bucle.
4) Cuando termin el bucle (3), se muestra el texto que quiero.

Este proceso es correcto y funciona. Ahora, si hago lo siguiente, es cuando el texto deja de mostrarse, explico los pasos para que se me entienda:

1) Se ejecuta RunGame
2) RunGame, pone un fondo de pantalla (put_screen)
3) RunGame ejecuta el proceso SetPoints() (es simplemente un bucle que hace un write_var de la variable g_iPoints
4) RunGame() carga un array de datos (Load(sg)) y ejecuta Play().
3) Hasta que Play no termine (While(g_iFinish != 1)...) se ejecuta el bucle
4) Cuando termin el bucle, se muestra el texto que quiero.

Este caso, al añadir la llamada a SetPoints(), ya el texto no se muestra, no se qué está mal con este Proceso la verdad pero es el que hace que no se muestra el texto. Pongo código actualizado para que se vea:

Código: [Seleccionar]
Process RunGame(byte sg)
Private
int prc_Points = 0;
End
Begin

g_iWait = 0;
put_screen(gameFpg, 7);

SetPoints(); //NUEVA LLAMADA

Load(sg);

Play();

While(g_iFinish != 1)
frame;
End

//ESTE ES EL TEXTO QUE QUIERO QUE SALGA CUANDO TERMINE TODO EL PROCESO
write(0, g_iWidthRES/2, g_iHeightRES/2, 1, "TERMINO");

Loop
frame;
End

End

Process Play()
Private
int songs = 0;
int chords = 0;
int counter = 1;
byte steps = 5;
End
Begin

//OJO CON ESTE WRITE_VAR
//write_var(fntDig,500,420,0, g_iPoints);
        //COMENTO ESTA LíNEA, QUE LO QUE HACE ES LO MISMO QUE SETPOINTS() pero sin llamar al proceso.

for(songs = 0; songs < 1; songs++)
for(chords = 0; chords <= steps; chords++)

Show(themes[chords][0], themes[chords][2]);

frame;

end
end

While(SON != 0)
if(SON.finalice == 1) signal(SON, S_KILL); end
frame;
End

g_iFinish = 1;

End


Como se puede ver, la única diferencia es que en RunGame llamo a SetPoints() y en Play(), comento la línea que hace lo mismo que SetPoints(), pero en diferente bloque de código.

No se...no entiendo que es lo que pasa la verdad...

Comentarios?? x'D

Gracias,

7
Mesa de Ayuda / Re:Esto me explota xD
« en: Noviembre 15, 2017, 11:31:10 am »
Tienes un bucle Repeat > Until y te falta el frame; dentro, es solo eso

Código: [Seleccionar]
begin
archivo=fopen("archivo.txt",o_Read); //lee archivo de texto con las rutas de los ficheros
//say("leyendo... : "+archivo]);  //Muestra por consola el resultado

//------------------------------------------------------------//
// FUNCIONES A REALIZAR SEGUN LO QUE LEA                      //
//------------------------------------------------------------//
repeat
       linea=fgets(archivo);
       if(linea=="txt1");
            say("mensaje de bienvenida");
       end
       frame;
until(feof(archivo));
fclose(archivo);
end

8
Mesa de Ayuda / Re:¿Por qué el texto no se muestra?
« en: Noviembre 15, 2017, 01:41:01 am »
prueba poner un frame despues:


//ESTA ES EL TEXTO A MOSTRAR, AQUí NO SE VE:
txt = write(0, 100, 100, 1, "Fin");
frame; 
Repeat
frame;
Until(key(_ENTER)

Hola Free,

Eso ya lo he hecho pero no funciona. Un dato curioso que he visto es que si coloco entre medio del bloque de código llamadas a say(), el texto si aparece, pero no siempre, es algo un tanto raro y tengo la última versión de BennuGD

9
Mesa de Ayuda / Re:¿Por qué el texto no se muestra?
« en: Noviembre 14, 2017, 03:46:41 pm »
Gracias por tu respuesta Arcontus

Con respecto a los dos primeros puntos, si tienes razón, pero simplemente estoy realizando pruebas. Si es cierto que el padre nunca cierra al hijo, ya que no hay ningún signal(id, S_KILL) o algo por el estilo, pero me refería a que no hay algún proceso que esté deteniendo a el hijo para que el texto no pueda salir.

Con respecto al segundo punto, si tienes rarón, el texto se puede sobrescribir en pantalla, pero como te comento, son pruebas, lo mismo me da ahora mismo < o <=, ya salga una, dos veces o n veces.

Con respecto a lo de que posiblemente pueda ser el While(f <= maxYposition) lo que esté bloqueando el proceso, te comento que no es esto, porque maxYposition es una constante (que no añadí aquí en el código) que vale 300. Entonces, hasta que f no valga 300 eso sigue ahí dando vueltas.

La cosa es que he hecho pruebas poniendo, para ver si es que como tu dices, no salía del bucle, un say("") justo después de ese While, y se ejecutaba correctamente cuando el bucle terminaba, pero sigue sin mostrarse el texto.

Así que sigo con el mismo problema x'D

10
Mesa de Ayuda / ¿Por qué el texto no se muestra?
« en: Noviembre 14, 2017, 05:40:18 am »
Me está pasando algo curioso que no termino de comprender, a ver si alguno me puede aclarar esta situación. Resulta que tengo un proceso, que cuando termina de hacer ciertas cosas, quiero que muestre un texto por pantalla. 

txt = write(0, 100, 100, 1, "Fin");

Lo que está pasando es que, con este bloque de código que muestro a continuación, si me funciona. En el, muestro justo antes de que empiece a hacer lo que tiene que hacer el proceso, el texto. En este caso, el texto si aparece. El proceso finaliza cuando presione la tecla ENTER como se puede ver, mientras, continúa ejecutándose.

Código: [Seleccionar]
Process Test(int milis, int posx)
Private
int f = 0;
int txt = 0;
End
Begin

frame;

        //ESTA ES EL TEXTO A MOSTRAR, AQUí SI SE VE:
txt = write(0, 100, 100, 1, "Fin")

While(f <= milis)
f++;
frame;
End

f = 0;

While(f <= maxYposition)
f++;
frame;
End

Repeat
frame;
Until(key(_ENTER))

delete_text(txt);

End

Ahora, lo hago como quiero que suceda, es decir, el texto solo debe aparecer cuando finalice lo que hace el proceso internamente, es decir, justo después del último While. Pues si lo hago así, el texto no se ve, pero lo curioso es que hasta que no haga clic en ENTER, no se cierra que es como debe de ser, pero como comento, el texto no se ve:

Código: [Seleccionar]
Process Test(int milis, int posx)
Private
int f = 0;
int txt = 0;
End
Begin

frame;

While(f <= milis)
f++;
frame;
End

f = 0;

While(f <= maxYposition)
f++;
frame;
End

        //ESTA ES EL TEXTO A MOSTRAR, AQUí NO SE VE:
txt = write(0, 100, 100, 1, "Fin");

Repeat
frame;
Until(key(_ENTER))

delete_text(txt);

End

¿Alguién me puede ayudar y explicarme que estoy haciendo mal o dónde está el error?

En caso de que no lo entendáis ¿Qué estoy intentando hacer en este proceso?

1) Ejecuto frame en primera intancia, para que los otros procesos del padre continuen y no esperen a que este proceso finalice. Esto lo hago por que este mismo proceso se llama varias veces, cada uno como procesos independientes.

2) Pongo un tiempo de espera en el primer While pasando un contador (milis)

3) En el segundo While, hago un contador para relizar un proceso en el que se desplaza un "sprite", de momento no está implementado, solo hago el incremento.

4) Aquí debería mostrarse el texto una vez finalice el While anterior (3).

5) Hasta que no se haga click en la tecla ENTER, el proceso sigue funcionando.

6) Borramos el texto "txt"

Llevo 3 días con esto y no lo comprendo. Indicar que el padre no está finalizando a su hijo, es más, el padre dispone de un Loop frame; End al final para que no finalice.

Por si hay alguna duda, pongo el código del padre:
Código: [Seleccionar]
Function FatherTest()
Private
int counter = 0;
End
Begin

for(counter = 0; counter <= 1; counter++)
Test(200, counter * 10);
end

While(SON != 0)
frame;
End

say("Step");

Loop
frame;
End

say("Saliendo de hijo");
End

Gracias,

11
Recursos / Re:Compilado de Sound Effects [300 Sonidos]
« en: Noviembre 09, 2017, 12:41:58 pm »
Hola,

Antes de nada gracias por el aporte. Podrías resubir los ficheros? Ya no están compartidos, una pena..

Gracias

12
Dreamcast (homebrew) / Re:Sample test de reproducción de OGG en Dreamcast
« en: Noviembre 08, 2017, 03:29:13 pm »
Como se puede detener la música OGG en la Dreamcast amigo Ryo?? Cuál es el método?

13
Mesa de Ayuda / Re:Obtener el tiempo en milisegundos?
« en: Noviembre 08, 2017, 12:32:54 pm »
Perdón la tardanza en responder al tema pero he estado liado estos días.

Al final de momento, lo que estoy haciendo lo hago con contadores en bucles, contando a razón de los fps, tal cual me comentó Futu y Dumpi, usando (var_contador++; ) en ( set_fps(60,0); ).

Espero mostrar algo con fundamento en cosa de un mes.

Saludos y gracias a todos!!

14
Mesa de Ayuda / Re:Obtener el tiempo en milisegundos?
« en: Noviembre 04, 2017, 10:04:56 am »
Se puede controlar el rango de pulsación?

15
Mesa de Ayuda / Re:Obtener el tiempo en milisegundos?
« en: Noviembre 04, 2017, 05:40:10 am »
Pues chicos sinceramente muchas gracias por la ayuda, me habéis ayudado mucho.

Lo que haré será probar primero rendimiento a ver que tal y en base a eso pues veré como lo hago. Digo yo, que si el rendimiento es bueno en el juego, el uso de timer[0] o como dice Futu, usar cada frame (var_contador++; ) en ( set_fps(60,0); ) , debería ir medianamente bien ¿No?

Intetaré ir por ahí a ver, ya os iré comentado que tal va el avance!

Gracias chicos

Páginas: [1] 2