Tutorial de optimización de cintas y ultracargas
Publicado: 01 May 2014, 22:45
Lección 1
En esta lección tan sólo voy a generar la cinta original del Manic Miner, para luego ir optimizando a medida que avanzamos en el tutorial.
Para seguirlo hay que instalarse los siguientes programas: Examinemos el fuente que genera la cinta de Manic Miner y expliquemos:
La primera línea es para generar la pantalla de carga, es un programa ad-hoc hecho para esta carga en cuestión que es bastante peculiar. Sólo usa la parte de los atributos, en concreto el tercio central (256 bytes). A parte todos los atributos tienen el flash (y el brillo) activado, por lo que va conmutando entre los distintos colores. La gracia está en que se codifica una pantalla para la tinta y otra para el fondo, por lo que resulta una animación con el texto MANIC y MINER sin gastar ciclos de CPU. Partiendo de screen1.png y screen2.png se genera screen.bin (los 256 bytes).
La siguiente línea genera el binario que corresponde al fichero BASIC loader.bas, que se trata del cargador. El cargador no tiene mucha miga:
Baja RAMTOP a 30000 para ubicar el juego, pone el fondo negro para que los tercios superior e inferior no desentonen con la pantalla de carga, carga dos bloques de datos y salta al juego (dirección 33792).
Prosigamos con el archivo bat. La siguiente línea ensambla el código fuente, generando manic.bin, que ocupa 32768 bytes y parte de la posición 32768 (ocupa toda la RAM alta).
Por último tenemos el generador de cinta (GenTape), que crea los 3 siguientes bloques (6 si contamos las cabeceras):
Pincha aquí para bajar el archivo de la lección
En esta lección tan sólo voy a generar la cinta original del Manic Miner, para luego ir optimizando a medida que avanzamos en el tutorial.
Para seguirlo hay que instalarse los siguientes programas: Examinemos el fuente que genera la cinta de Manic Miner y expliquemos:
Código: Seleccionar todo
join
ZMakeBas -r -o loader.bin loader.bas
SjAsmPlus manic.asm
GenTape manic.tap ^
basic 'ManicMiner' 10 loader.bin ^
hdata 'mmm' 5900 screen.bin ^
hdata 'mm1' 8000 manic.bin
La siguiente línea genera el binario que corresponde al fichero BASIC loader.bas, que se trata del cargador. El cargador no tiene mucha miga:
Código: Seleccionar todo
10 CLEAR 30000
20 PAPER 0: INK 0: CLS : LOAD ""CODE : LOAD ""CODE
30 RANDOMIZE USR 33792
Prosigamos con el archivo bat. La siguiente línea ensambla el código fuente, generando manic.bin, que ocupa 32768 bytes y parte de la posición 32768 (ocupa toda la RAM alta).
Por último tenemos el generador de cinta (GenTape), que crea los 3 siguientes bloques (6 si contamos las cabeceras):
- Bloque BASIC cargador, que hemos explicado antes, con el nombre 'ManicMiner' y que se autoejecuta en la línea 10.
- Bloque de datos con la pantalla de carga, llamado 'mmm' que ocupa 256 bytes y ubicado en la dirección hexadecimal $5900 (atributos del tercio central de la pantalla).
- Bloque de datos con el juego, llamado 'mm1', que tiene una longitud de $8000 en hexadecimal (nótese que la longitud nunca se especifica, viene determinada por el tamaño del archivo) y comienza también en $8000.
Pincha aquí para bajar el archivo de la lección