Potencia de 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

Potencia de BASIC.

Mensajepor shao » Jue 02 Jul , 2015 8:40 am

Hola, he estado leyendo algunos libros del Amstrad sobre BASIC, Ensamblador y demás, me gustaría saber, ¿se sabe de algún juego que sea el que mas a exprimido BASIC en Amstrad?, es decir, ¿que juego saca toda la potencia a BASIC o que es lo que mas se puede hacer con BASIC?.

Avatar de Usuario
6128
Moderador
Moderador
Mensajes: 7910
Registrado: Lun 12 Dic , 2005 6:08 pm

Re: Potencia de BASIC.

Mensajepor 6128 » Jue 02 Jul , 2015 9:24 am

Supongo que te refieres a BASIC puro sin usar rutinas de codigo maquina. Pues no tengo ni idea de cuál fue el juego que más partido le sacó al BASIC pero estaría bien saberlo.

abalore
Forero habitual
Forero habitual
Mensajes: 152
Registrado: Dom 09 Jul , 2006 8:59 pm

Re: Potencia de BASIC.

Mensajepor abalore » Jue 02 Jul , 2015 10:58 am

Es difícil responder a esa cuestión, ya que hubo pocos juegos comerciales hechos en BASIC. Creo que la mejor fuente de juegos en BASIC son los listados que aparecían en las revistas.

Un tipo llamado Sean McManus publicó muchos listados en las revistas Amstrad Action y Amstrad Computer User, además de un libro bastante bueno sobre programación en BASIC en el Amstrad.

Tanto el libro como los juegos están disponibles en su web: http://www.sean.co.uk/books/amstrad/

Te puedes descargar un disco de CPC con todos los ejemplos. Eso sí, en muchos de los ejemplos usa una rutina de sprites hecha en ensamblador. Y es que, realmente, en BASIC no puedes hacer gran cosa. Como comenté en otro post, la rutina de pintar caracteres de BASIC permite pintar un máximo de 6 caracteres por frame en modo texto o 3 en modo gráfico.

De todas formas intentar hacer algo decente en BASIC puro está bien como ejercicio intelectual, yo tengo algunos juegos hechos hace más de 25 años, incluso arcades!

Saludos

Avatar de Usuario
XeNoMoRPH
I am The Forum
I am The Forum
Mensajes: 2296
Registrado: Lun 08 Abr , 2013 5:55 pm
Ubicación: Galaxia de Magallanes
Contactar:

Re: Potencia de BASIC.

Mensajepor XeNoMoRPH » Jue 02 Jul , 2015 11:01 am

Seguro que alguno de Amsoft .. pero será dificil ... que ninguno use alguna pequeña porción de código máquina para alguna función.

Avatar de Usuario
6128
Moderador
Moderador
Mensajes: 7910
Registrado: Lun 12 Dic , 2005 6:08 pm

Re: Potencia de BASIC.

Mensajepor 6128 » Jue 02 Jul , 2015 11:26 am

De todos modos yo voy a recomendar el juego BCM (El Buscador de Código Máquina) del compañero gg. Para mi uno de los que más exprimen el BASIC.

http://www.amstrad.es/juegosamstrad/dec ... os/bcm.php

Avatar de Usuario
MiguelSky
Lord of Short Time
Lord of Short Time
Mensajes: 6969
Registrado: Sab 08 Oct , 2005 2:02 am
Contactar:

Re: Potencia de BASIC.

Mensajepor MiguelSky » Jue 02 Jul , 2015 11:56 am

Un tipo llamado Sean McManus publicó muchos listados en las revistas Amstrad Action y Amstrad Computer User, además de un libro bastante bueno sobre programación en BASIC en el Amstrad.

Tanto el libro como los juegos están disponibles en su web: http://www.sean.co.uk/books/amstrad/
Estaba también disponible en castellano en
https://web.archive.org/web/20091217001 ... index.html
pero la página de calamar (Andrés) no está ya disponible tampoco...

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

Re: Potencia de BASIC.

Mensajepor shao » Jue 02 Jul , 2015 2:38 pm

El BCM esta bastante bien, la presentación, como se crea el escenario simulando cargar un disco, esta chulo, un poco tosco el juego pero no esta mal.

Entonces si me lanzase a aprender algo sería ensamblador, al menos, según entiendo, si lo aprendiera y quisiera hacer algo, ya podría acercarme un poco mas que con BASIC a cualquier juego medio decente comercial.

Por otra parte, cuando cargas un juego de este modo run"pepe.bas, no significa que el juego esté hecho en BASIC, ¿verdad?, lo digo por lo de .bas, me ha parecido leer en algún libro que lo de bas se refiere a BASIC, pero que el juego completo esté hecho en BASIC, ya no se si podría ser, como han dicho antes, quizá utilizan rutinas en ensamblador.

Avatar de Usuario
6128
Moderador
Moderador
Mensajes: 7910
Registrado: Lun 12 Dic , 2005 6:08 pm

Re: Potencia de BASIC.

Mensajepor 6128 » Jue 02 Jul , 2015 2:51 pm

Puedes cargar también un archivo binario BIN.

Avatar de Usuario
ronaldo
Forum Addict
Forum Addict
Mensajes: 358
Registrado: Sab 14 Sep , 2013 9:31 pm
Ubicación: Alicante
Contactar:

Re: Potencia de BASIC.

Mensajepor ronaldo » Vie 03 Jul , 2015 1:06 am

Conociendo los detalles del BASIC y del CPC (mapa de memoria, funcionamiento del sistema, etc) se pueden crear cosas bastante interesantes en BASIC, sin nada de código máquina.

El año pasado hicimos una demo técnica de una idea que pretendía ser un juego de mata mata con enemigos spawneando y persiguiéndote para el concurso de RetroAcción. La demo técnica está hecha en 48h, pero nos quedó claro que es posible sacarle jugo si se lleva al límite. El juego lo llamamos Escape from Gortmy Planet. No es más que una demo técnica, pero se pueden sacar muchas ideas que pueden ser útiles para hacer cosas interesantes en BASIC.

Para RetroMadrid del año pasado también hicimos otra demo técnica de un juego tipo Zelda (llamado Zeldo). Esta la programamos también en BASIC, sin usar nada de código máquina, y después la compilamos con FaBaCom.

Aquí te dejo también un par de artículos que escribimos sobre el tema: No había visto el BCM, pero está muy chulo. Es como un manic miner en BASIC. Mola mucho :D.

abalore
Forero habitual
Forero habitual
Mensajes: 152
Registrado: Dom 09 Jul , 2006 8:59 pm

Re: Potencia de BASIC.

Mensajepor abalore » Vie 03 Jul , 2015 12:48 pm

Hola,

yo no he conseguido hacer funcionar ni uno solo de mis viejos programas con FaBaCom, principalmente porque hago uso de caracteres de control de posicionamiento de cursor, que no los maneja bien.

Pero bueno, ese no es el tema. Respecto a con qué lenguaje empezar, shao, te diría que si ya eres programador en otros lenguajes, te lances directamente al ensamblador. Pero si no eres programador, lo mejor es empezar con el BASIC, por algo el nombre es acrónimo de "Beginners All-purpose Symbolic Instruction Code", que viene a signigicar "Lenguaje de uso general para principiantes".

Un saludo

Avatar de Usuario
ronaldo
Forum Addict
Forum Addict
Mensajes: 358
Registrado: Sab 14 Sep , 2013 9:31 pm
Ubicación: Alicante
Contactar:

Re: Potencia de BASIC.

Mensajepor ronaldo » Vie 03 Jul , 2015 3:37 pm

Pues es raro, @abalore, todos mis programas usan carácteres de control para posicionar el cursor, mezclar carácteres y cambiarles el color y no hay ningún problema. Es más, no tiene sentido que eso genere un problema porque, para dibujar caracteres en pantalla, FaBaCoM llama a las funciones del Firmware.

En el artículo que te he pasado hicimos un análisis en detalle del compilador y de los fallos que tiene, pero esto que comentas jamás nos ha dado problema.

Tienes algún programa de ejemplo para que podamos probarlo y comprobar lo que falla?

abalore
Forero habitual
Forero habitual
Mensajes: 152
Registrado: Dom 09 Jul , 2006 8:59 pm

Re: Potencia de BASIC.

Mensajepor abalore » Vie 03 Jul , 2015 4:42 pm

Sí @ronaldo, algo tan simple como esto:

Código: Seleccionar todo

10 MODE 1
20 a$="A"+CHR$(10)+CHR$(8)+"B"
30 LOCATE 10,10:PRINT a$
al ejecutarlo en BASIC me pone la B debajo de la A, que es lo que se supone que debe hacer. Y al ejecutar el binario compilado por FaBaCom la B se va a tomar por saco.

Avatar de Usuario
ronaldo
Forum Addict
Forum Addict
Mensajes: 358
Registrado: Sab 14 Sep , 2013 9:31 pm
Ubicación: Alicante
Contactar:

Re: Potencia de BASIC.

Mensajepor ronaldo » Vie 03 Jul , 2015 5:39 pm

En efecto, el programa falla con el compilador, pero lo que falla es sólo el carácter 10 (*LF). Lo que hace en BASIC el carácter 10 es bajar el curso 1 línea. Sin embargo, tras compilar, el carácter 10 hace lo que haría en Linux, que es bajar 1 línea y poner el cursor al comienzo de la línea (El equivalente en Windows a 13+10 o *CR *LF).

He hecho alguna prueba y es un fallo de interpretación del compilador. De todas formas, parece claro que esto se limita sólo al carácter 10. Yo tengo juegos completos que usan los demás caracteres y funcionan correctamente. Es una putada no poder usar el 10, pero igual es salvable en muchos casos.

Avatar de Usuario
FloppySoftware
Megaforero
Megaforero
Mensajes: 244
Registrado: Mié 26 Oct , 2011 2:07 pm
Ubicación: Spain
Contactar:

Re: Potencia de BASIC.

Mensajepor FloppySoftware » Vie 03 Jul , 2015 10:59 pm

En efecto, el programa falla con el compilador, pero lo que falla es sólo el carácter 10 (*LF). Lo que hace en BASIC el carácter 10 es bajar el curso 1 línea. Sin embargo, tras compilar, el carácter 10 hace lo que haría en Linux, que es bajar 1 línea y poner el cursor al comienzo de la línea (El equivalente en Windows a 13+10 o *CR *LF).

He hecho alguna prueba y es un fallo de interpretación del compilador. De todas formas, parece claro que esto se limita sólo al carácter 10. Yo tengo juegos completos que usan los demás caracteres y funcionan correctamente. Es una putada no poder usar el 10, pero igual es salvable en muchos casos.
Interesante. He estado leyendo vuestro artículo de Fabacom (vaya nombre, por cierto :lol: ), y esto será seguramente por estar desarrollado en lenguaje C.

O, más bien, porque estarán utilizando una función de C para imprimir un carácter, que cuando recibe el 10 / LF, automáticamente envía también el 13 / CR, algo muy corriente en implementaciones de C para CP/M, DOS, etc. (como seguríiiiiiisimo ya sabrás :lol: ).

Una opción, sería el parcheo de la librería que adjunta al BIN.

abalore
Forero habitual
Forero habitual
Mensajes: 152
Registrado: Dom 09 Jul , 2006 8:59 pm

Re: Potencia de BASIC.

Mensajepor abalore » Sab 04 Jul , 2015 12:37 am

Efectivamente, después de desensamblar el runtime he visto que eso es lo que hace: cuando detecta un caracter 10 lo convierte en los dos caracteres 13 10

No me termino de explicar por qué hacen esto, se supone que el comportamiento debe ser compatible con Locomotive BASIC, no con Linux ni con ninguna otra cosa.

Si se parchea el runtime funciona perfectamente. El parche es sencillo, basta sustituir la cadena hexadecimal 3E 0D CD 5A BB por 00 00 00 00 00 y ya no se produce ese fallo.


También he probado el compilador de BASIC de HiSoft y la ganancia de rendimiento es bastante espectacular. Lo malo es que tienes que tener muchas consideraciones en tiempo de diseño, ya que muchos comandos no los admite y no puedes trabajar en coma flotante.


¿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