Sprite BASIC usa interrupciones para manejar los sprites y sus colisiones, y también el sonido, de manera de poder tener sprites moviendose por la pantalla y sonido mientras el programa BASIC se sigue ejecutando.
Comandos para sprites y caracteres personalizados
SHOW número de sprite (1-8 ), indicador multicolor (0-1), prioridad (0-1) Sirve para hacer visible un sprite. Ejemplo:
SHOW1,1,0 conecta el sprite 1 en multicolor y sin prioridad sobre el fondo
HIDE número de sprite (1-8 ) Desconecta un sprite. Ejemplo:
HIDE 1 desconecta el sprite 1.
SET número de sprite (1-8 ), coordenada X (0-511), coordenada Y (0-255). Coloca un sprite en una posición de la pantalla. Ejemplo:
SET3,160,130 coloca el sprite 3 en el centro de la pantalla
BLOCK número de sprite (1-8 ), número de bloque (0-63). Determina la zona de almacenamiento de datos para el sprite. Ejemplo:
BLOCK1,10 selecciona el bloque 10 para el sprite 1.
COLOR número de sprite (1-8 ), color (0-15). Selecciona el color del sprite. Ejemplo:
MULTI color1 (0-15), color2 (0-15). Define los multi-colores para todos los sprites. Ejemplo:
MULTI6,2 selecciona los colores azul y rojo
SIZE número de sprite (1-8 ), ampliación X (0-1), ampliación Y (0-1). Determina la expansión X e Y del sprite. Ejemplo:
SIZE4,1,0 hace que el sprite 4 se expanda en horizontal.
SPREDIT número de bloque (0-63). Determina el número de bloque o banco de datos del sprite que se va a editar con el comando PAT (ver más adelante). Ejemplo:
SPREDIT12 selecciona el bloque 12
CHREDIT número de carácter (0-511). Determina el carácter que va a ser editado con PAT. Ejemplo:
CHREDIT1 la "A" va a ser el cáracter editado. CHREDIT257 la "A" del segundo juego de caracteres es la que se va a editar.
PAT“cadena de definición”. Sirve para definir un sprite o un carácter. Si la cadena es de 8 caracteres, se define un carácter (ver CHREDIT) y hacen falta 8 definiciones. Si es de 24, se crea un sprite (ver SPREDIT) y hacen falta 24 definiciones. Un carácter “.” significa pixel apagado, y cualquier otro carácter, pixel encendido. Ejemplo:
PAT"...***..."
MPAT“cadena de definición” (12 caracteres). Sirve para definir sprites multicolores: “.” es un pixel apagado, “A” pixel del color del sprite, “B” pixel con multicolor1 y “C” pixel con multicolor2. Ejemplo:
MPAT"AA...BB...CC"
OLD copia los dos juegos de caracteres ROM del C-64, con lo que los caracteres definidos con CHREDIT y PAT quedan sustituidos por caracteres normales.
COPY bloque1 (0-63), bloque2 (0-63). Copia un bloque de un lugar a otro. Ejemplo:
COPY1,2 copia el bloque 1 sobre el 2.
Comandos de movimiento
Move número de sprite (1-8 ), ángulo (0-360, sentido antihorario según la horizontal), extensión de los pasos, velocidad (0-127, 1 la máxima), número de pasos (0-65535, 0 es movimiento continuo), flag BASIC (0 seguir el programa, 1 esperar a que el sprite termine de moverse). Usado para mover un sprite por la pantalla. Ejemplo:
MOVE1,90,1,1,10,1 el sprite 1 se mueve en vertical hacia arriba con la maxima velocidad en pasos de 1 pixel. En total da diez pasos y luego sigue el programa BASIC. MOVE8,77,4,4,20,0,0 el sprite 8 se mueve de forma continua en un angulo de 77 grados a velocidad 20, con pasos de 4 pixeles. El programa BASIC continua por su cuenta.
NOMOVE número de sprite (1-8 ). Detener un sprite. Ejemplo:
NOMOVE3 detiene el movimiento del sprite 3.
TURN número de sprite (1-8 ), ángulo (0-360), número de pasos (0-65535), número de repeticiones (0-255, siendo 0 ininterrumpido). Indica a un sprite que cambie su direccián de movimiento tras un número determinado de pasos. Ejemplo:
TURN1,90,10,20 el sprite 1 girara 90 grados tras dar 10 pasos, repitiendose esto 20 veces.
NOTURN número de sprite (1-8 ). Detiene el cambio de dirección y el sprite vuelve a moverse normalente. Ejemplo:
NOTURN2
ANIMATE número de sprite (1-8 ), primer bloque (0-63), número de bloques (0-63), número de pasos. Un sprite cambia de forma alternativamente. Ejemplo:
ANIMATE1,13,3,10 el sprite 1 cambia de forma (banco de lectura de datos) cada 10 pasos, comenzando en el 13 y siguiendo en 14-15.
NOANIMATE número de sprite (1-8 ). Detiene la animación. Ejemplo:
NOANIMATE4 detiene la animación del sprite 4
Comandos de manejo de colisiones
SPCOL número de sprite (1-8 ), número de linea (0-63999). Hace que el programa se ramifique a la línea especificada cuando se detecta una colisión del sprite con otro sprite. Ejemplo:
SPCOL1,1000 hace que si el sprite 1 colisiona con otro sprite el programa se ramifique a la linea 1000.
NOSPCOL número de sprite. Anula la orden anterior. Ejemplo:
NOSPCOL1
CHCOL número de sprite (1-8 ), número de linea (0-63999). Es como SPCOL pero para colisiones entre el sprite y los caracteres.
NOCHCOL número de sprite (1-8 ). Anula CHCOL.
BACK Después de SPCOL o CHCOL, el programa dará un salto atrás al encontrar esta orden, exactamente al lugar del que partió. El resultado es como GOSUB/RETURN.
POP Hace desaparecer la dirección para BACK. De este modo puede volver a cualquier parte del programa con GOTO en vez de con BACK.
CLFLAG El flag de colisión se queda activado cuando se ejecuta CHCOL o SPCOL por lo que si se produce otra colisión no podra ser detectada, por lo que es recomendable poner este comando al final de la subrutina de colisión, o inmediatamente despues de haber resuelto la condición que produjo la colisión en primer lugar.
(Nota: La revista recomienda colocar este comando al principio de la subrutina, pero de esa manera, al no haberse resuelto la condición que produjo la llamada a la subrutina, solo se logra que se llame a la subrutina una y otra vez, produciendo al final un desbordamiento de pila y la finalización del programa.)
Comandos de sonido
VOL intensidad (0-15). Regula el volumen. Ejemplo:
VOL15
ADSR voz (1-3), ataque (0-15), decaimiento (0-15), sostenimiento (0-15), relajación (0-15). Determina la envolvente del sonido. Ejemplo:
ADSR1,1,9,0,0 produce sonido de piano.
WAVE voz (1-3), tipo de onda (0-3). Fija la forma de onda. Puede ser: 0=triangular, 1=diente de sierra, 2=cuadrada, 3=ruido blanco. Ejemplo:
WAVE1,3 la voz 1 produce ruido
PULSE voz (1-3), ancho del pulso (0-65535). Determina la relación en una oscilación cuadrada. Ejemplo:
PULSE2,2000 la voz 2 tiene una relación de 1:2000.
PLAY voz (1-3), frecuencia en Hz, duración en segundos, flag (0=el programa continúa. 1=el programa se detiene hasta que termina el sonido). Sirve para tocar una nota. Ejemplo:
PLAY1,400,1,0 toca el diapason A durante 1 segundo mientras el programa BASIC se ejecuta.
Otros comandos
CURSOR columna (0-39), línea (0-24). Pone el cursor en una posición de la pantalla. Ejemplo:
CURSOR20,12 coloca el cursor en el centro de la pantalla
PLOTcolumna (0-39), línea (0-24), código (0-255), color (0-15). Coloca un carácter en la pantalla con color incluido. Ejemplo:
PLOT20,12,1,0 pone una A en negro en el centro de la pantalla.
BORDER color (0-15). Cambia el color del borde de la pantalla.
PAPER color (0-15). Cambia el color del fondo de la pantalla.
INK color (0-15). Cambia el color de los caracteres para las sentencias PRINT que sigan.
NOBREAK Desconecta la tecla STOP
RENEW Recupera un programa BASIC borrado con NEW o con reset.
KILL Desconecta Sprite BASIC.
Funciones
SPX(S). Contiene la coordenada X del sprite S. Ejemplo:
A=SPX(1)
SPY(S). Contiene la coordenada Y del sprite S. Ejemplo:
PRINT SPY(7)
ANG(S) Indica el ángulo con que se mueve el sprite S.
SCOL(S) Indica si el sprite S ha chocado (1) o no (0) con otro sprite. Ejemplo:
IF SCOL(2) THEN PRINT"CHOCASTE"
CCOL(S) Si el sprite S ha chocado con un carácter de la pantalla indica 1, si no, 0.
CHAR(X,Y) Indica el carácter que esta en la columna X, línea Y de la pantalla (en codigo de pantalla).
FIRE(P) Indica el estado del botón de disparo del joystick en el puerto P. Ejemplo:
X=FIRE(1)
JOY(N) Esta función permite la utilización en todo momento del joystick: N=1 “pregunta” al joystick 2 en todas las direcciones. N=2 joystick 2 solo en sentido horizontal (180 y 360 grados). N=3 solo en sentido vertical (90 y 270 grados). N=4 solo vertical y horizontal sin las diagonales. N=5 a 8 son los equivalentes para el puerto 1.
Descargar imagen D64 comprimida: spritebasic.zip
La imagen contiene:
- SBASICGEN: El generador BASIC del Sprite BASIC tecleado desde la revista.
- SPRITE BASIC: El ejecutable del Sprite BASIC, carga este programa para empezar a usarlo.
- CARS: Pequeño juego de demostracion del Sprite BASIC, cargarlo despues de inicializar el Sprite BASIC.




Que “librería” mas interesante, me la apunto para echarle un ojo, algún día!