FASE (Fucking Awesome Spectrum Engine)

Chit chat general. Habla con los MojonTwins y con los amigos de los MojonTwins. Reza a Vah-ka. Delinque. Aviso: está PROHIBIDO tirarse peos fuerte. Si les cortas el pescuezo, vale.

Moderador: na_th_an

antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor antoniovillena » Mar, 14 Ene 2014, 21:59

Genial. No me importa que esté con tu nick. Con respecto a licencias no le suelo dar mucha importancia, si quieres una MIT pues una mit, mientras menos restrictiva mejor, y si alguien es capaz de vender juegos creados con el engine, pues ole sus huevos.

Voy a bajarme el TortoiseGit y a organizar un poco los archivos, que han cambiado un poco desde la última vez.
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor antoniovillena » Mar, 14 Ene 2014, 23:17

Al final no hacía falta, con mi cliente subversion (TortoiseSVN) era suficiente.
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor D_Skywalk » Mar, 14 Ene 2014, 23:29

Te parece bien la estructura?

La idea es que el engine en sí esté en lib (si quieres luego añadimos include) y los ejemplos los ponemos en el principal (asm, c y zxbasic)

Las utilidades creo que están todas, aunque me falta añadir mis sh... pero antes quería que me confirmaras ;)
David Skywalker
Weblog: http://david.dantoine.org
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor antoniovillena » Mar, 14 Ene 2014, 23:56

El problema es que se generan un montón de archivos temporales, que además no podemos borrar porque quiero que se ahorre tiempo compilando. A ver el fase.bat genera el .tap en 3 etapas:
  • Compilación de gráficos
  • Ensamblado del engine en ASM
  • Compilado del engine en C y generación de TAP

Si tecleo "fase gfx" se ejecutan las 3 etapas, si tecleo "fase config" se ejecutan las 2 últimas y si escribo "fase" a secas solo se ejecuta la última etapa. Pero claro esto requiere que no se borren los archivos intermedios. Meter los archivos intermedios en otro directorio implicaría usar rutas relativas en los fuentes, algunas de ellas con ..\

Puedo separar un poco las cosas: poner el main.c y el main.bas en un directorio aparte, o meter los gráficos y el mapa en otro directorio, pero tal y como está es imposible tener un fase.bat (o fase.sh) sencillo y a la vez la raiz despejada de archivos.

Las utilidades las he puesto a parte en otro directorio llamado ComplementosChurrera
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor antoniovillena » Mié, 15 Ene 2014, 00:28

Ten en cuenta que la "estructura en producción" es distinta a esta que ves en el repositorio. En producción, todos los ejecutables los meto en un directorio llamado /util, y quito todos los fuentes innecesarios de la raíz.

Bájate el archivo de producción y mira cómo funciona (está en el primer mensaje de este hilo). Después pasa el script a Linux y si se te ocurren ideas para que quede más claro cambiamos la estructura de directorios.
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor antoniovillena » Mié, 15 Ene 2014, 02:21

Ya he migrado totalmente las carpetas en mi ordenador, a partir de ahora trabajo sólo con el repositorio en github. También he creado un nuevo zip de producción, en este caso la versión 0.13. El archivo está en el primer mensaje de este hilo.

Para crear dicho zip me he currado un .bat, concretamente MakeZipFASE.bat que está en la raiz del proyecto. Para hacerlo funcionar hay que crear un setvars.bat con las rutas de los 2 programas que se usan, algo así:

Código: Seleccionar todo

set dmc= c:\ruta\dm\bin\dmc.exe
set z7z= c:\ruta\7-zip\7z.exe


Y copiar en engine\util\ los ejecutables externos necesarios, los demas los genera el propio makeZipFASE partiendo de los fuentes del repositorio. Hay archivos que no he añadido como lodepng.c y lodepng.h, no los incluyo porque no se van a modificar. Estoy siendo un poco restrictivo en cuanto a incluir archivos en el repositorio, si lo ves conveniente añade alguno (siempre que no sean ejecutables).

Por cierto en la nueva versión de la demo he incluido un generador de mapas GenTmx. Aunque quede más cutre la demo creo que es mejor así porque damos flexibilidad al usuario para que elija el tamaño de ventana y las dimensiones del mapa que estime oportunas, de otra forma hacerlo con Tiled es más laborioso y con Map2Tmx las pantallas son más sosas.
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor D_Skywalk » Mié, 15 Ene 2014, 09:10

Yo es que los archivos intermedios los genero en una nueva carpeta build, luego si quieres subo mi sh y lo ves, por que da igual si hay intermedios (que yo tambien tengo ;))

Un Saludo! :porro:

UPDATE: añado el sh sin limpiar...

Código: Seleccionar todo

#!/bin/bash

GAMENAME=asylum
FIVENAME=ASYLM

rm ../$GAMENAME.tap &> /dev/null
rm -rf build &> /dev/null
mkdir -p build
#cp mapa_comprimido.bin build/
echo "-----------------------------------"
echo "### REGENERANDO MAPA y SPRITES ###"

#map2tmx 8 4 15 10 99 ../map/mapa_vacio.tmx
# este juego no tiene enems.h
#tmxcnv ../map/mapa.tmx mapa.h

tmxcompress ../map/mapa.tmx ../gfx/work.png build/tmp.tmx build/tmp.png build/mapa_comprimido.bin &> /dev/null
#gentileset.sh
#TODO: tileset.png to tileset.h
sprcnv ../gfx/sprites.png sprites.h &> /dev/null
cp -vf ../gfx/loading.scr build/loading.scr
rcs build/loading.scr build/loading.rcs
zx7 build/loading.rcs build/loading.bin
apack ../gfx/title.scr build/title.bin | head -1
apack ../gfx/marco.scr build/marco.bin | head -1
apack ../gfx/combat.scr build/combat.bin | head -1
apack ../gfx/ending.scr build/ending.bin | head -1
echo " "
echo "########################"
echo "### COMPILANDO GUEGO ###"
cd build
zcc +zx -vn ../$GAMENAME.c -o $GAMENAME.bin -lndos -lsplib2 -zorg=24200

echo "##########################"
echo "### CONSTRUYENDO CINTA ###"
zx7 $GAMENAME.bin $GAMENAME.zx7
# compressor and loader
sjasmplus ../../lib/dzx7_smartRCS.asm | tail -1 # gen dzx7.bin
printf -v TAMANO %x `wc -c < asylum.zx7`
echo " define COMP_SIZE \$$TAMANO " > define.asm
sjasmplus ../../lib/asmloader.asm |tail -1 # gen asmloader.bin
#final tape
gentape ../../$GAMENAME.tap \
    basic "'ASYLUM'" 0 asmloader.bin \
    data               $GAMENAME.zx7

echo "### DONE ###"
TAMANO=`wc -c < $GAMENAME.bin`
TAMANO=`expr $TAMANO + 2` # add header
TOTAL=`expr $TAMANO + 24200`
ZXWEIGHT=`expr 60654 - $TOTAL`
echo "$TAMANO + 24200 = $TOTAL ( $ZXWEIGHT )"
cd ..
David Skywalker
Weblog: http://david.dantoine.org
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor antoniovillena » Mié, 15 Ene 2014, 09:20

Ok. Entonces cambia la estructura de directorios como veas conveniente. Si puedes procura que siga funcionando (si no ya me encargo yo).

Otra cosa, hay una tabla llamada file1.bin que se genera siempre en step1.c pero que es siempre la misma. Te lo digo porque es mejor separar ese código de step1.c y en producción incluir sólo el archivo file1.bin.
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor antoniovillena » Vie, 24 Ene 2014, 01:48

Estoy ya finiquitando el engine. Como al final tiene un montón de cosas configurables no tengo más remedio que hacer una mini-guía (en inglés) para explicar a qué afectan los parámetros (sobre todos los de config.def).

Aquí dejo una imagen explicativa que acabo de crear con el gimp, espero que se entienda.
Adjuntos
dibujo.png
dibujo.png (36.05 KiB) Visto 1314 veces
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor na_th_an » Vie, 24 Ene 2014, 08:03

Se entiende perfectamente :)
Como diría Rorshach: "Urm..."

Volver a “General”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado