martes, 3 de enero de 2017

Análisis del uso combinado de CPCBASIC compiler y 8BP

hola amigos de 8BP

Hoy os traigo una curiosidad interesante. Existe un compilador de BASIC para amstrad CPC que corre bajo windows, llamado "BASIC3" o "CPC basic compiler". lo podéis encontrar en http://www.cpcbasic.tk/


Esta herramienta es útil en dos casos:
- tanto si quieres compilar tu juego para no mostrar el listado de tu programa
 -como si quieres ganar algo de velocidad (sobre todo tiene sentido en arcade)


Dicho compilador no es compatible 100% con locomotive BASIC pero con pocos cambios se puede hacer funcionar un programa. Es parecido a la herramienta "fabacom", que compila locomotive BASIC, pero a diferencia de esta, no genera un ejecutable gigante (fabacom mete una sobrecarga de 10KB)

He compilado el mini-invaders y aqui tenéis el resultado. Va mas deprisa como era de esperar. ten en cuenta que al compilar, se esta ejecutando el juego en código máquina. ya no es interpretado. Como puedes ver en el vídeo, la mejora es perceptible.
Yo seguiré programando en BASIC intepretado y compartiré el código fuente de mis juegos pero esta opción no es mala ya que a diferencia de fabacom, no consume mucha RAM. El binario que ha generado son 4KB, mientras que el listado BASIC ocupa 3KB.  Es algo más pero es razonable. Posteriormente he compilado Nibiru (el cual no compila si no se hacen muchos cambios), de 17KB y ha generado un binario de 22kB, es decir, una sobrecarga de 5KB. Probablemente cuanta mas variedad de instrucciones de BASIC se usen, mayor es la sobrecarga pero 5KB sigue siendo razonable.


Es realmente importante la ganancia? hablamos de un 50% de aumento de la velocidad como mucho, en el mejor caso. Es decir que es como pasar de 100Km/h a 150Km/h. Esto no esta mal, pero piensa que hemos pasado del BASIC interpretado al código máquina y normalmente se dice que la velocidad se debe multiplicar al menos por 100  (hablaríamos de un incremento del 10000% ). Sin embargo  sólo hemos ganado un 50%. El motivo de tan "pobre" ganancia es que las instrucciones de 8BP ya hacen todo el trabajo duro y en realidad el compilador solo ha traducido a código máquina la parte menos pesada, la lógica del juego.

En resumen, está bien, pero no esperes un milagro. Sólo tiene sentido si a tu juego le falta velocidad. Cuando necesites mas velocidad, hay estrategias explicadas en el manual de 8BP para acelerar tu juego en BASIC, como la técnica de lógicas masivas, o sencillos ajustes finales tales como eliminar lineas REM o sustituir las invocaciones RSX por CALL XXXX, o eliminar las invocaciones a RND y cambiarlas por un array pseudoaleatorio, etc. Es decir, hay cierto margen para aumentar la velocidad y sólo si aun así es insuficiente, tendrá sentido compilar, ya que lo que vas a ganar es "sólo" un 50%


hasta la vista!

No hay comentarios:

Publicar un comentario