MSX-BASIC tips

Here are some little tips & tricks to mainly speed-up MSX-BASIC programs execution:

  • Try to use variable names of one character length.
  • Delete blank spaces between commands. The code will turn a mess; but it'll execute much faster.
  • Join as many BASIC commands in the same line.
  • Always use IF ... THEN [line number] or IF ... GOTO [line number] (fastest!). Never IF ... THEN GOTO [line number].
  • The most commonly used subroutines must be placed in the first lines of the program.
  • GOTO command will be preferably jumping forwards and not backwards.
  • Always use INT variables. You can declare a INT variable using DEFINT A-Z at the beginning of the program. Sometimes, if you directly specify the variable as INT using the % notator, although is not always true, you can try in your own program.
  • Always use NEXT instead NEXT [variable name]. Is at least twice faster!.
  • Try to use VPOKE instead PUT SPRITE. This way you can modify only the changed attributes (position if you are only moving the sprite).
  • Using the Text+SC2 mode, you can get the quality of Screen 2 graphics and the speed of text screens. To enter this mode you only need to add these commands:

Y en español:

  • Usar siempre que sea posible variables de un sólo caracter.
  • Nada de blancos redundantes. El código será ilegible; pero se ejecutará más rápido.
  • Meter todos los comandos BASIC que se puedan en una sola línea.
  • Usar siempre IF ... THEN [línea] o IF ... GOTO [línea] (la más rápida). Nunca IF ... THEN GOTO [línea].
  • Las subrutinas más usadas deben de estar al comienzo del programa.
  • Preferiblemente los GOTO se harán hacia delante y no hacia atrás.
  • Usar siempre que se pueda variables INT declarando DEFINT a-Z al comienzo del programa. A veces da mejores resultados el usar el caracter % para identificar a una variable como INT, es cuestión de probar en cada caso en particular, cual funciona mejor.
  • Usar NEXT en lugar de NEXT [variable]. Es casi el doble de rápida.
  • Usar siempre VPOKE en lugar de PUT SPRITE. Eso permite modificar únicamente el atributo que se quiere cambiar, no todos.
  • Si lo anterior lo unimos al modo híbrido texto+SC2, podremos hacer juegos en alta resolución con velocidad de uno en modo texto.