Creando juegos para Interface II

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Creando juegos para Interface II

Mensaje por radastan » Lun Mar 31, 2014 4:25 pm

Vamos a ver,

Todas las rutinas que he creado para Z88DK no necesitan la ROM para nada, por lo que técnicamente es perfectamente posible crear cartuchos IF2 simplemente compilando a partir de la posición 0. Está probado con un emulador y todo perfecto.

Lo que si que hay que tener cuidado es en poner la pila en la RAM y nunca grabar en el espacio de la ROM para no cargarme el ZX Spectrum. ¿es correcto? ¿alguna cosa más?
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

zup
Freddy Hardest
Mensajes: 666
Registrado: Vie Ago 15, 2008 2:43 pm

Re: Creando juegos para Interface II

Mensaje por zup » Lun Mar 31, 2014 4:35 pm

Supongo que es preferible poner la pila por debajo de 32767, para hacerlo compatible con los 16k. Tampoco mangonees con los puertos $1ffd y $3ffd... puede que tu código se esté ejecutando en +2A/+3 en modo all RAM.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Creando juegos para Interface II

Mensaje por radastan » Lun Mar 31, 2014 4:42 pm

zup escribió:Supongo que es preferible poner la pila por debajo de 32767, para hacerlo compatible con los 16k. Tampoco mangonees con los puertos $1ffd y $3ffd... puede que tu código se esté ejecutando en +2A/+3 en modo all RAM.


Tomo nota, es importante que sea compatible con todos los ZX Spectrum.

Es que veo muy molón sacar juegos en formato cartucho.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Creando juegos para Interface II

Mensaje por radastan » Jue Abr 03, 2014 12:19 pm

A ver, una ayudita. Estoy haciendo esto para compilar:

Código: Seleccionar todo

zcc +zx -vn cartuchozx.c -o cartuchozx.rom -lndos -zorg=0


Y en el código pongo:

#pragma output STACKPTR=32700

De momento obtengo una pantalla a barras de colores con un programa de ejemplo.

¿Lo anterior está bien?

La gran pregunta, ¿Cómo le digo a Z88DK que use la RAM para las variables?
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Creando juegos para Interface II

Mensaje por radastan » Jue Abr 03, 2014 12:41 pm

Todo solucionado, os digo los pasos.

Primero, la orden correcta para compilar es:

Código: Seleccionar todo

zcc +zx -vn -lndos -lm -startup=2 -make-app cartuchozx.c -o cartuchozx.rom


Y de segundo hay que borrar del código:

Código: Seleccionar todo

#pragma output STACKPTR=loquesea


Así funciona a la primera.

¡Cartuchico al canto para Retromadrid! :D
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Creando juegos para Interface II

Mensaje por radastan » Jue Abr 03, 2014 12:46 pm

Vale, el último problema, ¿cómo hago para leer el teclado en una ROM? porque leer desde los puertos no funciona.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Ivanzx
Nonamed
Mensajes: 1194
Registrado: Lun May 07, 2007 12:11 pm
Ubicación: Frankfurt, Germany
Contactar:

Re: Creando juegos para Interface II

Mensaje por Ivanzx » Jue Abr 03, 2014 1:37 pm

Estoy un poco pez en el tema, asi que lo mismo la pregunta es un poco tonta, pero...

Con este cartucho se podría jugar en cualquier Spectrum? Habria alguna limitación de memoria? Se podrían programar juegos normales o habría que adaptar algo? Como es que nadie ha salido antes con esta idea? :)

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Creando juegos para Interface II

Mensaje por radastan » Jue Abr 03, 2014 2:14 pm

Te explico:

Un cartucho Interface II (interfaz que es muy simple de clonar con unos cables y un par de conectores) es en origen una ROM de 16K de memoria. Dicha ROM se pone en superposición a la del ZX Spectrum, por lo que no puedes usar rutinas que hagan uso de la ROM del ordenador.

Como debería funcionar en todos los modelos sólo puedes hacer uso de la RAM que haya por encima del área de pantalla hasta los 16K de RAM del ZX Spectrum original (el primero).

Evidentemente echa la ley, echa la trampa, se pueden hacer cartuchos que respondan a una dirección de memoria y cambien la "página" de la ROM, copiando en RAM el código principal. Con este sistema no habría limitación de memoria, y ya según el modelo mínimo para el que esté destinado el cartucho tendrás más o menos RAM.

Ya hay gente que ha pasado juegos en formato cinta a cartucho, pero todos deben cumplir la norma de no usar la ROM original del Spectrum.

De todas formas si te paras a pensar, en 16K caben muchas cosas si no haces salvajadas, por lo que si quieres hacer un juego en este formato limítate a los modelos de 16K de RAM (como 7 KB libres para ti) y no pases de los primeros 16K de direccionamiento. Yo estoy haciendo pruebas y en 16K puedo meter un juego sin problemas. Basta limitar el número de sprites y tiles, no pasarte de tamaño de mapa (preferible un arcade o hacer grupos de tiles), etc.

Yo voy a intentar hacer un juego sencillo para Retromadrid, a ver que sale.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Creando juegos para Interface II

Mensaje por radastan » Jue Abr 03, 2014 2:51 pm

Encontrado el problema, si haces una matriz global (fuera de cualquier función) se mete en ROM. Idem para variables, no puedes usar globales porque se meten en ROM (deben estar como mínimo dentro de MAIN).
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

utopian
Manic Miner
Mensajes: 219
Registrado: Jue May 10, 2007 2:28 pm

Re: Creando juegos para Interface II

Mensaje por utopian » Jue Abr 03, 2014 3:58 pm

Hay compiladores que te dejan especificar un área de memoria especial para las variables globales (RAM), y otro para el código (ROM). Creo que el SDCC te permite algo así, pero z88dk no.

Si metes todo dentro del main, serán variables locales, creadas en la pila. Ojo, funcionará, pero el código que te genera el z88dk en ese caso es bastante más lento.

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Creando juegos para Interface II

Mensaje por radastan » Jue Abr 03, 2014 4:28 pm

utopian escribió:Si metes todo dentro del main, serán variables locales, creadas en la pila. Ojo, funcionará, pero el código que te genera el z88dk en ese caso es bastante más lento.


¿Lo mete en pila? ¿qué bestia, no?

De todas formas lo más gordo son matrices, ¿pueden crearse en una zona de memoria determinada? Las uso para detectar colisiones y obstáculos, así no hay que tirar de cálculos.

La prueba que he realizado, no obstante, va de perlas en velocidad.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
horace
Jack The Nipper
Mensajes: 147
Registrado: Mar Abr 17, 2007 7:57 am
Ubicación: 16384-23295
Contactar:

Re: Creando juegos para Interface II

Mensaje por horace » Jue Abr 03, 2014 5:22 pm

Hola Radastan,

No lo puedo probar ni igual es lo que necesitas pero para meter variables a fuego donde quieras, creo que la sintaxis en z88dk es:

Código: Seleccionar todo

extern uchar var1 @ 24576;  // +1 byte
extern int var2   @ 24577;  // +2 bytes
extern uchar var3 @ 24579;  // +1 byte
Un saludo, Josetxu (@HoracioGloton)
http://espectrum.speccy.org - ESpectrum
http://mhoogle.speccy.org - Buscador MHoogle
http://retroaccion.org - Asociación RetroAcción

Ivanzx
Nonamed
Mensajes: 1194
Registrado: Lun May 07, 2007 12:11 pm
Ubicación: Frankfurt, Germany
Contactar:

Re: Creando juegos para Interface II

Mensaje por Ivanzx » Jue Abr 03, 2014 8:07 pm

radastan escribió:Te explico:

Un cartucho Interface II (interfaz que es muy simple de clonar con unos cables y un par de conectores) es en origen una ROM de 16K de memoria. Dicha ROM se pone en superposición a la del ZX Spectrum, por lo que no puedes usar rutinas que hagan uso de la ROM del ordenador.

Como debería funcionar en todos los modelos sólo puedes hacer uso de la RAM que haya por encima del área de pantalla hasta los 16K de RAM del ZX Spectrum original (el primero).

Evidentemente echa la ley, echa la trampa, se pueden hacer cartuchos que respondan a una dirección de memoria y cambien la "página" de la ROM, copiando en RAM el código principal. Con este sistema no habría limitación de memoria, y ya según el modelo mínimo para el que esté destinado el cartucho tendrás más o menos RAM.

Ya hay gente que ha pasado juegos en formato cinta a cartucho, pero todos deben cumplir la norma de no usar la ROM original del Spectrum.

De todas formas si te paras a pensar, en 16K caben muchas cosas si no haces salvajadas, por lo que si quieres hacer un juego en este formato limítate a los modelos de 16K de RAM (como 7 KB libres para ti) y no pases de los primeros 16K de direccionamiento. Yo estoy haciendo pruebas y en 16K puedo meter un juego sin problemas. Basta limitar el número de sprites y tiles, no pasarte de tamaño de mapa (preferible un arcade o hacer grupos de tiles), etc.

Yo voy a intentar hacer un juego sencillo para Retromadrid, a ver que sale.



Gracias por la explicación ;)
Y ahora una pregunta, que porcentaje de juegos comerciales no usan la ROM original del Spectrum? Es fácil programar de esa manera nuevos juegos?

Sobre lo de los 16K, por ejemplo, un forero de WoS ha sacado varios juegos, de buena acogida, intencionadamente de 16K, lo mismo son candidatos a buenos cartuchos ;), aquí os dejo la lista de sus juegos:

http://www.worldofspectrum.org/infoseekpub.cgi?regexp=^Cyningstan$&loadpics=3

Saludos!

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Creando juegos para Interface II

Mensaje por radastan » Jue Abr 03, 2014 8:51 pm

Ivanzx escribió:Y ahora una pregunta, que porcentaje de juegos comerciales no usan la ROM original del Spectrum? Es fácil programar de esa manera nuevos juegos?


Que ocupen 16K muy pocos, que ocupen 48K algunos. De echo hay gente que se dedica en sus ratos libres a pasarlos, así tenemos algunos juegos pasados. Tienes más info sobre cartuchos programables y software pasado en:

http://www.fruitcake.plus.com/Sinclair/Interface2/Cartridges/Interface2_RC_Cartridges.htm

http://trastero.speccy.org/cosas/droy/cartuchos/cartuchos_s.htm

Hacer juegos para Interface 2 es sencillo hoy día, tenemos muchas herramientas que lo facilitan, sólo hay que tener presente que no debe usarse rutinas de la ROM y limitarte a los 16K del cartucho, pudiendo aprovechar lo que sobre de 16K de la RAM de los primeros ZX Spectrum.

Evidentemente hay que ser inteligente y no querer meter un Head Over Heels en 16K.

Ivanzx escribió:Sobre lo de los 16K, por ejemplo, un forero de WoS ha sacado varios juegos, de buena acogida, intencionadamente de 16K, lo mismo son candidatos a buenos cartuchos ;), aquí os dejo la lista de sus juegos:

http://www.worldofspectrum.org/infoseekpub.cgi?regexp=^Cyningstan$&loadpics=3


Un juego puede ser para 16K y sin embargo no ser posible su traslado a IF2 debido a que usa la ROM del sistema.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Creando juegos para Interface II

Mensaje por radastan » Vie Abr 04, 2014 8:04 am

Esto es un juego que estoy haciendo "ex-profeso" para Interface 2:

Imagen

No será la panacea en lo gráfico, pero desde luego pueden salir cosas majas.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Responder

¿Quién está conectado?

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