Modo 128K

For all things Churrera. ¿Estás haciendo un juego? ¿quieres proponer un cambio? ¿tienes alguna duda? ¡Cuéntanoslo!

Moderador: na_th_an

Avatar de Usuario
karkayu
Mensajes: 40
Registrado: Lun, 07 Sep 2015, 14:34

Modo 128K

Mensajepor karkayu » Mié, 14 Oct 2015, 12:02

Buenas!!!

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: https://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 :D
Avatar de Usuario
na_th_an
Mensajes: 26413
Registrado: Vie, 09 Ene 2009, 12:18

Re: Modo 128K

Mensajepor na_th_an » Mié, 14 Oct 2015, 13:09

Parece un error, nunca nadie había hecho juegos multi-nivel con la Churrera que usasen llaves. Lo miraré y te comento.
Como diría Rorshach: "Urm..."
Avatar de Usuario
karkayu
Mensajes: 40
Registrado: Lun, 07 Sep 2015, 14:34

Re: Modo 128K

Mensajepor karkayu » Mié, 14 Oct 2015, 13:47

$this->bbcode_second_pass_quote('na_th_an', 'P')arece un error, nunca nadie había hecho juegos multi-nivel con la Churrera que usasen llaves. Lo miraré y te comento.


Thanks