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

FASE (Fucking Awesome Spectrum Engine)

Mensajepor antoniovillena » Lun, 06 Ene 2014, 18:18

Soy malo para poner nombres, lo sé, pero hasta que no encuentre nada mejor éste será el nombre provisional. El motivo es porque será un engine inspirado en la Churrera. Como todavía está muy verde no sabría decir si se trata solo de inspiración o es un plagio como un tren, por eso quiero dejar las cosas claras desde el principio. De momento no hay nada escrito en C, de eso se va a encargar D_Skywalk, para lo cual le voy a dar unas cuantas indicaciones en este hilo sobre cómo funciona la parte en ensamblador.

Como hay un montón de código, vamos a empezar por cosas sencillas. La compilación se hace con makeBu.bat, al ejecutarlo se genera el archivo game.tap. Hasta aquí todo bien. La parte ensamblador está dividida en dos: por un lado está el engine propiamente dicho (engine.asm) y por otro el cargador c/m (loader.asm). La parte en C no está hecha (por ahora hay un main.asm sencillito en ensamblador), pero se trataría de generar un main.bin a partir de un main.c partiendo de la dirección $8000 y como tope de longitud o puntero de pila inicial $fe50-stasp (que es una constante generada en defload.asm).

La comunicación de la parte C (que genera main.bin) con el engine no es a través de llamadas a subrutinas, sino a través de estructuras en la memoria. Por ejemplo hay una estructura entre $FE00 y $FE40 que maneja los sprites, indicando su posición X, Y, si está activado o no y el número de sprite a pintar. Los tiles se manejan con las posiciones $5b00, $5b01..$5b96 y $5bfe..$5bff. En la primera posición le decimos al engine que queremos posicionarnos en la pantalla X, una escritura en dicho byte provoca que se pinte toda la pantalla y se carguen en el array $5b01..$5b96 los índices de los tiles. Ahora bien, si quieres modificar los tiles de la pantalla actual, ya sea para animarlos o para abrir un cerrojo, esto se hace escribiendo directamente en $5b01..$5b96 y especificando el rectángulo de tiles a actualizar en $5bfe..$5bff

Finalmente decir que hay ciertas directivas interesantes en engine.asm que nos permiten acortar el tamaño del mismo y por tanto disponer de más espacio para el juego. La primera es smooth, en caso de estar a 0 se almacenan la mitad de las rotaciones de los sprites (4 por sprite en lugar de 8 por sprite), con lo que se reduce drásticamente el tamaño que ocupan los mismos (más o menos de 10K a 5K). Si cambias la directiva smooth quita también la palabra dummy de la llamada a GfxBu (quinta línea de makeBu.bat), esta chapuza la quitaré más adelante. Luego tenemos las directivas clipup y clipdn que si están activadas permiten recortar los sprites por la parte alta y baja de la pantalla, y si están desactivadas nos ahorramos mucho código. Por último tenemos safeco, que es para asegurarnos de que no se cuelgue el engine bajo ninguna circustancia (si está desactivada hay ciertos valores ilegales de la posición Y del sprite que provocan un cuelgue).

No te asustes, D_Skywalk, por lo complicado que parece. Primero comprueba que puedes generar el game.tap funcional, luego tendrías que pasar el main.asm a main.c con el compilador que quieras y finalmente ya podrías empezar a escribir la parte del engine en C.
Adjuntos
FASE.0.13.zip
(604.76 KiB) Descargado 268 veces
buñuelera_alpha.zip
(642.25 KiB) Descargado 400 veces
Última edición por antoniovillena el Mié, 15 Ene 2014, 02:27, editado 4 veces en total.
Avatar de Usuario
na_th_an
Mensajes: 26390
Registrado: Vie, 09 Ene 2009, 12:18

Re: Buñuelera

Mensajepor na_th_an » Lun, 06 Ene 2014, 18:25

A ver qué tal resulta. ¡Ánimo!

Y ponedle un nombre más chulo, coñe :D
Como diría Rorshach: "Urm..."
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: Buñuelera

Mensajepor antoniovillena » Lun, 06 Ene 2014, 18:42

na_th_an escribió:A ver qué tal resulta. ¡Ánimo!

Y ponedle un nombre más chulo, coñe :D


Gracias. ¿Alguna sugerencia? En un principio mi intención era simplemente mejorar el motor de sprites de la Churrera pero poco a poco se ha ido transformando y tal como está resulta imposible.
Avatar de Usuario
angel
Mensajes: 23185
Registrado: Vie, 09 Ene 2009, 13:04
Ubicación: Torreznolandia
Contactar:

Re: Buñuelera

Mensajepor angel » Lun, 06 Ene 2014, 18:47

El Villenator! :lol:
(_\_) (_|_) (_/_) (_|_) ILLO KE HEHEHEHEHEHEEEHEHEHEH!

¡Activa tu rainbow pechónico!
Avatar de Usuario
son_link
Mensajes: 467
Registrado: Mar, 01 Oct 2013, 11:49
Ubicación: Atlantis, Galaxia Pegaso
Contactar:

Re: Buñuelera

Mensajepor son_link » Lun, 06 Ene 2014, 18:55

Joder, esto esta que o para :mrgreen:
A ver que tal os sale el experimento :cheer:
LOAD TAPE ERROR
Imagen
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: Buñuelera

Mensajepor antoniovillena » Lun, 06 Ene 2014, 19:26

angel escribió:El Villenator! :lol:


No vale porque somos 2.
Avatar de Usuario
radastan
Mensajes: 692
Registrado: Vie, 20 Ago 2010, 12:54
Contactar:

Re: Buñuelera

Mensajepor radastan » Lun, 06 Ene 2014, 19:55

antoniovillena escribió:
angel escribió:El Villenator! :lol:


No vale porque somos 2.


Return of the vengeance of the blood carnage epilogue of the first mutilation of the mutant zombie attack in ZX Spectrum bloodest memory routines library with exploding C languaje in a churrera style.

Suena que te cagas y las siglas dan muestra de ser algo grande.
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: Buñuelera

Mensajepor antoniovillena » Lun, 06 Ene 2014, 20:17

:ymca:

Mola

Entonces lo llamaremos RotvotbceotfmotmzaiZSbmrlweCliacs para abreviar, y el que quiera (aunque sea algo obvio) que deduzca el nombre original.
Avatar de Usuario
na_th_an
Mensajes: 26390
Registrado: Vie, 09 Ene 2009, 12:18

Re: Buñuelera

Mensajepor na_th_an » Lun, 06 Ene 2014, 21:33

Va a molar poner

Código: Seleccionar todo

#include "RotvotbceotfmotmzaiZSbmrlweCliacs.h"


:lol:
Como diría Rorshach: "Urm..."
Avatar de Usuario
radastan
Mensajes: 692
Registrado: Vie, 20 Ago 2010, 12:54
Contactar:

Re: Buñuelera

Mensajepor radastan » Lun, 06 Ene 2014, 22:34

Esto va a ser épico.

:corchoneta: :corchoneta: :corchoneta: :corchoneta: :corchoneta:

Por cierto, deseando ver esa librería en C, la meteré de serie con el curso si o si. Ya tengo hasta un juego pensado para ella.

Volver a “General”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados