8BP Programado juegos profesionales desde Basic

Programando el Amstrad en BASIC, C, etc.
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 07 Ago , 2022 12:10 pm

¿Nadie sabe sobre eso?.
No estoy seguro, parece un error con las direcciones de memoria o algo así.

trocoloco
Megaforero
Megaforero
Mensajes: 335
Registrado: Lun 16 Abr , 2007 11:02 am

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor trocoloco » Dom 07 Ago , 2022 6:11 pm

Hola, en el frogger (aunque también en el fruit y vegetables y quizá en los demás) si simplemente cambio el "|SETUPSP" de la línea 170 por su correspondiente "CALL&70FD", entonces el juego da un error en ejecución:

Imagen

¿A qué se debe esto?.
Sin conocer la librería en sí, lo que me parece es que al hacer el CALL no le estás mandando los otros parámetros que se le dan a la rutina al invocar el RSX

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 07 Ago , 2022 7:04 pm

Siempre lo hice bien pero el error persiste.

Imagen

La dirección de memoria es correcta, está en la DOC oficial:

Imagen

También sustituí este "|SETLIMITS" que está un poco antes sin embargo este no da error.

Imagen

trocoloco
Megaforero
Megaforero
Mensajes: 335
Registrado: Lun 16 Abr , 2007 11:02 am

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor trocoloco » Dom 07 Ago , 2022 7:34 pm

Siempre lo hice bien pero el error persiste.

Imagen

La dirección de memoria es correcta, está en la DOC oficial:

Imagen

También sustituí este "|SETLIMITS" que está un poco antes sin embargo este no da error.

Imagen
en SETUPSP estás pasándole una variable, mientras que en SETLIMITS le pasas un valor fijo. ¿Has probado a darle un valor fijo a SETUPSP para probar si así funcionase?

En el apéndice 2 del manual de referencia Basic habla sobre el tema de los CALL con más detalle

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 07 Ago , 2022 7:47 pm

He puesto un valor fijo pero tampoco funciona, sale el mismo error.
Es absurdo poner un valor fijo en el bucle pero obviamente es para probar.

Imagen

Miraré lo de CALL más tarde en el manual.

El error sucede por estar en el bucle for, si quito el bucle for y solo llamo al call, no sucede el error.

Esto funciona:
170 CALL &70FD,0,0,0

Esto no:
170 FOR i=0 TO 31:CALL &70FD,0,0,0:NEXT:'reset

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 08 Ago , 2022 11:10 am

Yo he probado la siguiente línea y sí que funciona

10 FOR i=0 TO 31:CALL &70FD,i,0,0:NEXT

No eres el único que tiene problemas al sustituir los comandos 8BP por CALL, a mi también me ha pasado y no he encontrado el motivo por el que unos CALL funcionan y otros no. El mismo comando funcionaba en una parte del programa y en otra no, usando el mismo CALL.

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 08 Ago , 2022 11:20 am

Pues no sé, esto sigue dando error.

Imagen


A ver si JJAranda ve esto, quizá sea un bug de la librería.
Igualmente lo reporté en github.

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 12 Ago , 2022 1:23 pm

El problema con ese bug es que no puedes usar el optimizador que hice Bof8BP porque te saltará ese bug si el optimizador reemplaza un comando 8BP que esté contenido en un FOR.
Yo estoy casi seguro de que es un bug de 8BP.

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 12 Ago , 2022 1:35 pm

Es que no me deja poner NEXT en la 170.
Lo pongo pero cuando hago RUN, salta el error, reviso la 170 y falta de nuevo el NEXT.

https://youtu.be/0QY5Kd6fZoE

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

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Sab 13 Ago , 2022 8:34 am

He revisado el código de algunos juegos y tengo puestos CALLs en sentencias con FOR funcionando sin problemas. Viendo el video te aparece el error con un número de línea muy alto. Estos errores tan extraños suelen pasar cuando no hay memoria suficiente y el BASIC comienza a hacer cosas "mu raras".

Prueba un print fre(0) a ver que te devuelve.

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 » Sab 13 Ago , 2022 6:33 pm

Nada, no libera nada.

Imagen

Esto tampoco funciona, este código de sólo dos líneas, aunque ponga el NEXT se termina elminando.

Imagen

Ni idea, quizá sea algo en la compilación del juego.

Lo que hago es compilar el Frogger, su archivo "make_all_my_game.asm" con el winape recién abierto, es decir, no estoy cargando ningún snapshot antes de compilar.
El perfil de winape es el del 464.
Pero la compilación funciona porque si cambio el call por su |setupsp entonces el juego ejecuta.
Última edición por shao el Sab 13 Ago , 2022 6:41 pm, editado 1 vez en total.

Avatar de Usuario
robcfg
Master of The Forum
Master of The Forum
Mensajes: 1311
Registrado: Jue 03 Abr , 2008 5:32 pm
Ubicación: Estocolmo
Contactar:

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor robcfg » Sab 13 Ago , 2022 6:37 pm

FRE(0) te devuelve la cantidad de memoria libre.

Ivan iba bien encaminado y tu problema es que te has quedado sin memoria.

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

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Sab 13 Ago , 2022 7:17 pm

Aun siendo por falta de memoria continua el misterio de por qué funciona con un comando 8BP y no con su equivalente CALL. Alguna diferencia tiene que haber.

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 » Sab 13 Ago , 2022 7:57 pm

Si que hay memoria libre entonces no es de la falta de memoria la causa por la que se produce ese problema.

Imagen

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 » Sab 13 Ago , 2022 8:02 pm

Ok, así funciona pero eso no es una solución definitiva, debería funcionar en una sola línea también:

Imagen

Así también funciona, es sólo cuando agregas el NEXT a la misma línea que el for y el call cuando se produce el error

Imagen

Y así:

Imagen

Con un espacio antes del NEXT y quitando el 'reset comentado después del NEXT... no tiene sentido.

Se ejecuta pero se producen errores cuando usas break y miras la lista, el NEXT se elimina automaticamente de nuevo, en fin un lío.


¿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