Ivanzx escribió: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?
Respondiendo rápidamente... creo que el IF2 solo funcionaba bien en los 16 y 48k, y no estoy seguro de cómo se comporta con un 128k/+2. Desde luego, no funcionará correctamente en un +2A/+3.
La limitación (tradicional) es que el juego debe caber en 16k de código (el espacio de la ROM), pero esta limitación es solo para el código que va en el cartucho (distinción importante). Aunque Shadow of the Unicorn no es un juego estrictamente de IF2, sustituía los 16k de ROM por los suyos propios y además cargaba parte del juego desde cinta, con lo que se saltaba a la torera los 48k del Spectrum. También podrías comprimir un juego, meterlo a un cartucho y descomprimirlo a RAM para saltarte esos 16k. Por último, hay un montaje hardware que permite usar 32k para el juego.
La otra limitación es que pierdes todo lo que había en la ROM, así que tu juego no podrá usar esas rutinas. Si por algún motivo, necesitas algo de la ROM (p.ej.: la rutina de carga), tendrás que meterlo en el cartucho.
Si tuvieras un juego de 16k viable (=no usa la ROM, aunque esto en 16k puede ser complicado) y quisiera adaptarlo, tienes dos caminos. Uno es cambiar todos los saltos absolutos para que estén en el espacio de direcciones de la ROM, el otro es meter en el cartucho el juego tal cual y reubicarlo en RAM nada más arrancar el spectrum.
En cuanto a por qué no se utiliza, hay varios motivos:
- Los interfaces con ROM son los que más se pegan de leches entre ellos. Eso quiere decir que un IF2 se lleva a patadas con un divide, un MF3 y demás.
- Solo tienes compatibilidad garantizada en los 16k/48k (aunque luego lo puedes sacar en cinta para usarlo en +2A/+3).
- En su día, para jugar a esto necesitabas un IF2 (no lo tenía todo el mundo) y cartuchos. Teniendo en cuenta que el precio del cartucho era el triple que el de la cinta, te puedes imaginar la de cartuchos que se vendieron.
radastan escribió:¿Lo mete en pila? ¿qué bestia, no?
No es tan raro, al menos no en PCs. En los Turbo Pascal/Turbo C y otros compiladores, es muy normal meter los parámetros de una función dentro de la pila, y luego usar BP para acceder a estos parámetros. Traducido a Z80, copias SP a IX y usar IX+nn para acceder a las variables locales. Además, meter esas variables en la pila te garantiza que el espacio no estará asignado permanentemente.
radastan escribió:No será la panacea en lo gráfico, pero desde luego pueden salir cosas majas.
La forma más bestia de meter cosas en IF2 sería rellenar el cartucho con código comprimido y después descomprimirlo en RAM al arrancar el programa. De esta manera sería fácil tener más de 16k de código+datos, con lo que te cargas la compatibilidad con los 16k (pero dejas a todo el mundo boquiabierto).
La generación procedural sería otra gran opción, pero para ese tipo de burradas hace falta ser un genio.