Tengo el juego acabado para 48K pero como aún me gustaría meterle un par de cosillas y tengo tiempo hasta el final de la ZXDEV, me he animado a pasarlo a 128K. Sin embargo me sale un error en la compilación y no sé solucionarlo.
Os cuento:
- Ahora mismo el juego sólo tiene una fase. Preparo el level1.bin correctamente con buildlevel y posteriormente lo comprimo con apack obteniendo el level1c.bin
- En la carpeta BIN he colocado los archivos title.bin, marco.bin (0 bytes), ending.bin y level1c.bin. El librarian me crea correctamente RAM3.BIN y librarian.h
- Modifico el archivo levels128.h con:
$this->bbcode_second_pass_code('', '// Level struct
LEVEL levels [MAX_LEVELS] = {
{3,2}
};
')
- Por ahora uso las musicas que vienen en la carpeta mus, así que no necesito editar el WYZproPlay47aZX.asm
- Como uso la version 3.99.3d de la churrera, en churromain.c comento la parte de reserva de memoria dedicada a 48K y descomento la de 128k:
$this->bbcode_second_pass_code('', '// Versión para 128K
#pragma output STACKPTR=24199
#define FREEPOOL 61697
#define AD_FREE 61440 - NUMBLOCKS * 15')
- He modificado el loader.bas con el codigo correspondiente que indica na_th_an en esta entrada: http://www.mojontwins.com/mojoniaplus/viewtopic.php?p=49060#p49060
- Por supuesto, activo las directivas correspondientes en el config.h
$this->bbcode_second_pass_code('', '
#define MODE_128K // Experimental!
#define COMPRESSED_LEVELS // use levels.h instead of mapa.h and enems.h (!)
#define MAX_LEVELS 1 // # of compressed levels
')
- Como solo tengo una fase y con los pasos anteriores no he tenido problemas, he modificado el make.bat que había en la carpeta spare y ha quedado casi igual que el que usasteis para las nuevas aventuras de dogmole.
$this->bbcode_second_pass_code('', '
@echo off
echo ### COMPILANDO SCRIPT ###
cd ..\script
msc pnoid.spt msc.h 30
copy *.h ..\dev
cd ..\dev
echo -------------------------------------------------------------------------------
echo ### GENERANDO BINARIOS ###
echo * Building reubica
..\utils\pasmo reubica.asm reubica.bin
echo * Building RAM3 AND RAM4 AND RAM6
cd ..\bin
librarian.exe
copy RAM3.bin ..\dev\ram3.bin
copy librarian.h ..\dev
echo -------------------------------------------------------------------------------
echo ### COMPILANDO WYZ PLAYER ###
cd ..\mus
..\utils\pasmo WYZproPlay47aZX.ASM ram1.bin
copy ram1.bin ..\dev
cd ..\dev
echo -------------------------------------------------------------------------------
echo ### COMPILANDO GUEGO ###
rem zcc +zx -vn pnoid.c -o pnoid.bin -lndos -lsplib2 -zorg=24200
zcc +zx -vn pnoid.c -o pnoid.bin -lsplib2 -zorg=24200
echo -------------------------------------------------------------------------------
echo ### CONSTRUYENDO CINTA ###
..\utils\bas2tap -a10 -sLOADER loader.bas loader.tap
..\utils\bin2tap -o reubica.tap -a 25000 reubica.bin
..\utils\bin2tap -o ram1.tap -a 32768 ram1.bin
..\utils\bin2tap -o ram3.tap -a 32768 ram3.bin
..\utils\bin2tap -o screen.tap -a 16384 loading.bin
..\utils\bin2tap -o main.tap -a 24200 pnoid.bin
copy /b loader.tap + screen.tap + reubica.tap + ram1.tap + ram3.tap + main.tap pnoid.tap
echo -------------------------------------------------------------------------------
echo ### LIMPIANDO ###
del loader.tap
del screen.tap
del main.tap
del reubica.tap
del ram1.bin
del ram3.bin
del ram1.tap
del ram3.tap
del pnoid.bin
del zcc_opt.def
echo -------------------------------------------------------------------------------
echo ### DONE ###
')
Al ejecutar el make,bat, me aparece el siguiente error al compilar el juego (es decir, todo lo anterior me lo hace correctamente):
$this->bbcode_second_pass_code('', '
### COMPILANDO GUEGO ###
1 archivo(s) copiado(s).
1 archivo(s) copiado(s).
sccz80: "engine.h" L:1416 Error: #42;Unknow symbol: n_bolts
')
La línea de 'engine.h' correspondiente al error es:
$this->bbcode_second_pass_code('', '
#ifdef COMPRESSED_LEVELS
for (gpit = 0; gpit <n_bolts; gpit ++) {
#else
for (gpit = 0; gpit < MAX_CERROJOS; gpit ++) {
#endif
')
Aún con este error, se crea el .tap y al ejecutarlo en el emu, carga la pantalla de loading y ahí se queda.
¿Alguna idea?
Gracias
![Muy Feliz :D](./images/smilies/icon_e_biggrin.gif)