8BP Programado juegos profesionales desde Basic

Programando el Amstrad en BASIC, C, etc.
Ivan
Forero habitual
Forero habitual
Mensajes: 157
Registrado: Dom 03 May , 2020 6:07 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Dom 15 May , 2022 8:30 am

Una pregunta, no consigo saber porqué cuando pulso espacio mi gráfico no muestra su frame número 3. La animación está definida con 8 frames por lo que el 3 es un frame válido y asignado. Se lo estoy indicando con "|setupsp,31,8,3" que asigne el frame número 3 de su secuencia de animación al gráfico pero no lo hace, no hay cambios en el gráfico cuando pulso espacio.
Imagen
Quizá es esta línea que tengo al inicio?:
110 |SETUPSP,31,0,1: '1+32:' status del personaje
No tengo ni idea.
La línea 110 es incorrecta. Solo estás indicando que se imprima el sprite pero no lo animas. Mira la pág. 64 del manual. Tienes que activar el bit de animación y el de impresión |SETUPSP,31,0,1+4

No estoy seguro si después de hacer el cambio de frame es necesario hacer un |anima para que el cambio tenga efecto.

Avatar de Usuario
shao
Forum Addict
Forum Addict
Mensajes: 381
Registrado: Sab 06 Oct , 2012 8:37 pm
Ubicación: Alicante

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor shao » Dom 15 May , 2022 11:33 am

Una pregunta, no consigo saber porqué cuando pulso espacio mi gráfico no muestra su frame número 3. La animación está definida con 8 frames por lo que el 3 es un frame válido y asignado. Se lo estoy indicando con "|setupsp,31,8,3" que asigne el frame número 3 de su secuencia de animación al gráfico pero no lo hace, no hay cambios en el gráfico cuando pulso espacio.
Imagen
Quizá es esta línea que tengo al inicio?:
110 |SETUPSP,31,0,1: '1+32:' status del personaje
No tengo ni idea.
La línea 110 es incorrecta. Solo estás indicando que se imprima el sprite pero no lo animas. Mira la pág. 64 del manual. Tienes que activar el bit de animación y el de impresión |SETUPSP,31,0,1+4

No estoy seguro si después de hacer el cambio de frame es necesario hacer un |anima para que el cambio tenga efecto.
Pero no quiero animarlo al pulsar espacio, sólo quiero que al pulsar espacio se le asigne uno de los frame_id de la animación que tiene asignada y lo muestre, ya lo solucioné, sólo tengo que asignarle ese frame_id y llamar a |ANIMA y el frame se setea y se muestra.
Adjuntos
Captura.PNG
Con este código lo consigo

Avatar de Usuario
shao
Forum Addict
Forum Addict
Mensajes: 381
Registrado: Sab 06 Oct , 2012 8:37 pm
Ubicación: Alicante

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor shao » Dom 15 May , 2022 1:28 pm

No estoy seguro si después de hacer el cambio de frame es necesario hacer un |anima para que el cambio tenga efecto.
No vi esa parte pero creo que sí que es necesario, de hecho, si no lo hago, no veo ese frame asignado.

En el manual pone esto, que yo interpreto como que es lo que hace que se visualice finalmente el frame.
Adjuntos
Captura2.PNG

Ivan
Forero habitual
Forero habitual
Mensajes: 157
Registrado: Dom 03 May , 2020 6:07 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Lun 16 May , 2022 4:17 pm

Hola, he visto que en algunos juegos al hacer CAT te aparece una pantalla en ASCII a modo de presentación. ¿Cómo se consigue?

Avatar de Usuario
shao
Forum Addict
Forum Addict
Mensajes: 381
Registrado: Sab 06 Oct , 2012 8:37 pm
Ubicación: Alicante

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor shao » Lun 16 May , 2022 11:34 pm

Hola, he visto que en algunos juegos al hacer CAT te aparece una pantalla en ASCII a modo de presentación. ¿Cómo se consigue?
Yo al menos, no sé cómo se puede hacer eso. :-k

Yo tengo otra pregunta. No estoy usando |LOCATESP para posicionar a mi sprite y moverlo, lo que hago es simplemente imprimirlo en sus coordenadas x e y y el sprite se mueve normalmente.
¿Qué repercusiones tiene no usar |LOCATE?.
Por lo que parece, no lo sé con total certeza, si no usas LOCATE 8bp no tendrá las x e y del sprite actualizadas a su posición actual y no lo ubicará correctamente al momento de detectar colisiones o otras cosas. 8bp pensará que está en un lado pero el sprite está en otro, ya que fué movido sin indicar a 8bp dónde ha sido movido.
Adjuntos
Captura2.gif.gif
Captura2.gif.gif (71.53 KiB) Visto 542 veces

Ivan
Forero habitual
Forero habitual
Mensajes: 157
Registrado: Dom 03 May , 2020 6:07 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Mar 17 May , 2022 12:09 pm

Con PRINTSP únicamente estás imprimiendo el sprite en un lugar de la pantalla. El sprite sigue sin tener coordenadas de posición (tabla de la pág. 67, columnas coordy,coordx).

Cuando tengas que controlar las colisiones o cuando tengas que imprimir el personaje, los enemigos, nivel, ¿cómo lo harás? ¿imprimiendo uno a uno cada sprite?

Lo habitual cuando declaras un sprite es utilizar SETUPSP para declarar su status, asignarle imagen, ruta o secuencia... y con LOCATESP asignarle posición. Cuando quieras imprimir el sprite, o bien haces un PRINTSP, num sprite o haces un PRINTSPALL para imprimir todos los sprites necesarios.

Avatar de Usuario
shao
Forum Addict
Forum Addict
Mensajes: 381
Registrado: Sab 06 Oct , 2012 8:37 pm
Ubicación: Alicante

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor shao » Mar 17 May , 2022 5:05 pm

Claro, toda esa configuración de SETUPSP etc... la he hecho, sólo que me sorprendió porque pensaba que para mover al sprite debía utilizar si o si "|LOCATESP" pero veo que no es necesario, el "problema" (y lo pongo entre comillas porque puede ser un problema para X casos pero para otros no) es que 8bp no tiene constancia de dónde está ubicado ese sprite, entonces, con "|LOCATESP", además de mover el sprite, también le estás diciendo a 8bp dónde tienes el sprite ubicado para que 8bp use esas coords en el momento de hacer otras comprobaciones como chequear colisiones, por ejemplo.

Entonces, no es necesario usar "|LOCATESP" si no vas a hacer nada más que mover un gráfico de un punto a otro, sin colisiones, rutas ni nada más que no sea moverlo, al menos eso es lo que me parece hasta ahora mismo.

Avatar de Usuario
Brundij
Forero habitual
Forero habitual
Mensajes: 221
Registrado: Mié 29 Abr , 2020 6:23 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Brundij » Mié 18 May , 2022 6:11 pm

Hola, he visto que en algunos juegos al hacer CAT te aparece una pantalla en ASCII a modo de presentación. ¿Cómo se consigue?
Yo pretendía hacer algo así para un juego que estamos preparando pero otra vez la realidad me ha dado un hostión en toda la boca. Es muy complicado. Además hay limitaciones como que sólo admite caracteres ASCII hasta el 127.
Se puede llegar a hacer editando los sectores del disco directamente y usando caracteres de control, pero es un locurón considerable. Hay programas que en teoría facilitan la tarea pero yo no he sido capaz de sacar nada en limpio.
Al final se pudo hacer algo pero manualmente y tuvo que ser otra persona, editando sectores del disco. Además todos los archivos que guardes en el dsk deben de estar ocultos para que no aparezcan en el CAT y sobreescriban lo que has hecho.
En mi opinión, es un detalle bonito pero no merece la pena el esfuerzo que lleva. Ahora ya se por que no se hace mas a menudo.
Aquí te dejo una traducción del artículo que hay en Les Sucres en Morceaux http://cpc.sylvestre.org/technique/tech ... tart1.html Es una traducción de aquella manera, así que si sabes francés igual te enteras mejor.
Adjuntos
Les Sucres en Morceaux - CATart Español.zip
(18.24 KiB) Descargado 13 veces

Ivan
Forero habitual
Forero habitual
Mensajes: 157
Registrado: Dom 03 May , 2020 6:07 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Mié 18 May , 2022 7:31 pm

Hola, he visto que en algunos juegos al hacer CAT te aparece una pantalla en ASCII a modo de presentación. ¿Cómo se consigue?
Yo pretendía hacer algo así para un juego que estamos preparando pero otra vez la realidad me ha dado un hostión en toda la boca. Es muy complicado. Además hay limitaciones como que sólo admite caracteres ASCII hasta el 127.
Se puede llegar a hacer editando los sectores del disco directamente y usando caracteres de control, pero es un locurón considerable. Hay programas que en teoría facilitan la tarea pero yo no he sido capaz de sacar nada en limpio.
Al final se pudo hacer algo pero manualmente y tuvo que ser otra persona, editando sectores del disco. Además todos los archivos que guardes en el dsk deben de estar ocultos para que no aparezcan en el CAT y sobreescriban lo que has hecho.
En mi opinión, es un detalle bonito pero no merece la pena el esfuerzo que lleva. Ahora ya se por que no se hace mas a menudo.
Aquí te dejo una traducción del artículo que hay en Les Sucres en Morceaux http://cpc.sylvestre.org/technique/tech ... tart1.html Es una traducción de aquella manera, así que si sabes francés igual te enteras mejor.
Gracias por la info. Lo he estado leyendo y como bien dices es demasiado trabajo para lo que ofrece. Estoy en el punto que quiero acabar el juego y empezar otra cosa como para liarme con esto.

Poliyo
Keeper of The Forum
Keeper of The Forum
Mensajes: 909
Registrado: Jue 12 May , 2016 10:07 pm
Ubicación: Valencia

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Poliyo » Jue 19 May , 2022 8:33 am

Bon día
En los menús que yo preparaba, al usar el formato 202 lo que hacía era lo siguiente
El primer programa del directorio principal era el, pongamos por ejemplo "MENU001." oculto, este programa activaba el formato 202 y lanzaba el juego, menú, lo que fuera.
El directorio de la zona 178Kb lo rellenaba con un fichero fake llamado "MENU001". igual que el programa oculto pero lo hacia de 178 kbs para llenar el disco
Todo lo demás, programa principal, pantallas, etc... estaba en la zona 202

Si quieres echar un ojo puedes ver alguno de los menús aquí

http://cpccrackers.free.fr/Downloads/in ... dir=Poliyo

Una vez hecho el primero luego es simplemente hacer ligeros cambios para el resto

Avatar de Usuario
shao
Forum Addict
Forum Addict
Mensajes: 381
Registrado: Sab 06 Oct , 2012 8:37 pm
Ubicación: Alicante

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor shao » Jue 19 May , 2022 2:47 pm

Se me vienen a la cabeza muchas cosas que se podrían hacer con un programita que analice y optimice el código basic antes de guardarlo en el dsk y ejecutar winape.

Se podrían declarar constantes como:

const CAMBIAR_FRAME_ANIM = 8
const PERSONAJE = 31

Para después hacer:
|SETUPSP,PERSONAJE,CAMBIAR_FRAME_ANIM,0

El programa después detectaría las constantes y cambiaría:

|SETUPSP,PERSONAJE,CAMBIAR_FRAME_ANIM,0
por
|SETUPSP,31,8,0
y finalmente
CALL &...

Sería algo así como una especie de compilador raruno... quizá no un compilador, un analizador o algo así.

También un editor visual de los datos que se manejan en la ventana assembler de winape.
Todo eso se podría hacer de modo visual mostrando una ventana con las imágenes, después pulsas en export y te genera el archivo .asm con los datos. Esto evita estar escribiendo o copiando y pegando manualmente los valores, ya sea de gráficos o rutas.

La cuestión es, si quieres toda esa velocidad que ofrece el optimizar el código basic, pues puedes hacerlo en C aunque por lo que leo en el manual, no es lo mismo y llevará más trabajo.

Avatar de Usuario
shao
Forum Addict
Forum Addict
Mensajes: 381
Registrado: Sab 06 Oct , 2012 8:37 pm
Ubicación: Alicante

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor shao » Jue 19 May , 2022 10:38 pm

¿Qué ocurre cuando un sprite sale de los límites de la zona establecida con |SETLIMITS?, creo haber leído en el manual que se desactiva automaticamente pero no encuentro esa explicación ahora mismo en el manual.
No estoy seguro de si es necesario detectar cuando el sprite del proyectil sale de pantalla o si setlimits/printsp/printspall ya lo desactiva automáticamente.

Ivan
Forero habitual
Forero habitual
Mensajes: 157
Registrado: Dom 03 May , 2020 6:07 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Vie 20 May , 2022 12:27 pm

¿Qué ocurre cuando un sprite sale de los límites de la zona establecida con |SETLIMITS?, creo haber leído en el manual que se desactiva automaticamente pero no encuentro esa explicación ahora mismo en el manual.
No estoy seguro de si es necesario detectar cuando el sprite del proyectil sale de pantalla o si setlimits/printsp/printspall ya lo desactiva automáticamente.
|SETLIMITS establece las coordenadas donde se podrán imprimir los sprites. Puedes elegir toda la pantalla o solo una parte de ella. Lo que quede fuera no se imprimirá, y si un sprite está una parte fuera y otra parte dentro solo se imprimirá la parte que esté dentro de los límites impuestos por SETLIMITS.

No hace nada más. Los cálculos se seguirán realizando igual, colisiones, movimientos.... solo afecta a la impresión. Ayuda a optimizar el dibujado de los sprites ya que puedes reducir el área de juego para que vaya más fluido.

Avatar de Usuario
shao
Forum Addict
Forum Addict
Mensajes: 381
Registrado: Sab 06 Oct , 2012 8:37 pm
Ubicación: Alicante

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor shao » Vie 20 May , 2022 10:09 pm

Ok, entonces habría que comprobar cuando el sprite sale por uno de los límites establecidos y entonces desactivar su configuración en el byte de status para que no sea movido, no compruebe colisiones etc...

Ivan
Forero habitual
Forero habitual
Mensajes: 157
Registrado: Dom 03 May , 2020 6:07 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Vie 27 May , 2022 12:33 pm

Estoy liadillo con 8BP usando C que trabaja con el compilador SDCC. La consulta no es estrictamente BASIC....
Quisiera abortar el programa en C desde cualquier función. Buscando información he visto que en la librería stdlib.h de C existe la función exit() que aborta el programa... pero en SDCC no está dicha función. He creado una variable que cuando tome un determinado valor, en MAIN hago un Return y arreando.... pero es una chapucilla.

¿Alguna manera de poder parar la ejecución desde cualquier función?


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic