¡No me carga las Fuentes al pasar de .bas a .tzx!

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

Moderador: Sir Cilve Sinclair

¡No me carga las Fuentes al pasar de .bas a .tzx!

Notapor AncientBits el Mar Ene 09, 2018 12:28 am

Chavales, tenéis que ayudarme como sea. Hemos terminado el nuevo juego de Ancient Bits que esta programando con BASin 0.13.

Es un juego tipo Elige tu propia Aventura con muuuucho texto, y le puse unas Fuentes super chulas que el programa te las incluye en el código vía POKE y DATA.


[center]Imagen

Así se ve en el BASin, con el código de las fuentes insertado en el programa...[/center]



Cuando ejecuto el .bas desde el BASin me carga el juego con las fuentes sin problemas, pero al pasar el .bas a .tzx y cargarlo con otros emuladores el juego funciona pero... ¡¡las fuentes no se ven, sólo las fuentes predeterminadas del ZX Spectrum!!

Para pasar .bas a .tzx me voy dentro de BASin a TOOLS --> TAPE CREATOR --> ADD FROM CURRENT PROGRAM --> Y EN PROPERTIES AUTORUN LINE 0

Ohh Dios mío... ¡ayuda!


EDITADO: Como había editado el set de fuentes he probado a usar otras fuentes que vienen en el pack, incluso hacer un programa sólo con el código de las fuentes y un PRINT "Hello World" y lo mismo... el Display del BASin lo muestra correctamente pero el emulador (lo he probado en ZXSpin, SpectrumAnywhere y ZXDS de la NDS) no muestra más que las fuentes predeterminadas del ZX Spectrum.
Imagen

Imagen

Imagen
Avatar de Usuario
AncientBits
rst 0
 
Mensajes: 9
Registrado: Sab Sep 30, 2017 10:50 am

Re: ¡No me carga las Fuentes al pasar de .bas a .tzx!

Notapor hikoki el Mar Ene 09, 2018 1:47 pm

¿Has pensado en usar FZX ? Aquí te explican cómo : https://www.worldofspectrum.org/forums/ ... ion/44088/

Edito:

La última versión de FZX se encuentra en : https://spectrumcomputing.co.uk/index.p ... 6&id=28171
hikoki
Freddy Hardest
 
Mensajes: 551
Registrado: Sab Nov 23, 2013 9:27 am

Re: ¡No me carga las Fuentes al pasar de .bas a .tzx!

Notapor AncientBits el Mar Ene 09, 2018 4:03 pm

Hola hikoki! Sí, mi primera intención fue usar las fuentes FZX, pero no encontré la manera de integrarlas en el programa con BASin.

Cuando ponía el código...

CLEAR 59999: LOAD "Sinclair"CODE 60000: LOAD "FZXdriver"CODE 65000: RANDOMIZE USR 65000

con el driver y las fuentes junto al ejecutable de BASin el programa me decía que encontraba el archivo pero que "but some reason it can do what you are trying to do...". Así que cuando encontré la manera de cargar las fuentes con el BASin y enviar el código BASIC al programa desistí de usar las FZX.

He hecho un nuevo programa "Hello World" con otras fuentes distintas y pasa lo mismo...

Imagen

BASin localiza las nuevas fuentes en la dirección 15616 por defecto... no sé si puede ser eso.

Lo que no entiendo es por qué el Display de BASin (que en teoría muestra lo que se vería en la pantalla de nuestra TV al ejecutar el programa) carga las fuentes (incluso tuve que incluir un aviso previo de CARGANDO FUENTES porque tarda unos 8 segundos y hasta relentiza el efecto flash que le puse al aviso) y una vez cargadas las muestra durante todo el programa y en los emuladores (he probado en 3 distintos) no las carga correctamente en memoria y sólo muestra las fuentes predeterminadas del ZX Spectrum... :(


Probé también a salvar el programa como .z80 y en ese caso si lo salvo en una pantalla de texto sí me muestra las fuentes, pero al continuar el programa la siguiente pantalla ya sale con las fuentes normales. En el .z80 puedo abrir el listado desde el emulador y veo que el código POKE/DATA de las fuentes está ahí... pero no lo lee o lo lee pero no almacena en memoria...

Para ser sinceros, yo envío el código de las fuentes a través de la aplicación de las fuentes del BASin pero no tengo ni idea de qué quiere decir el código. ¿Alguién podría explicarme un poco qué hacen estas líneas? Sin esas líneas los DATA no sirven para nada...

Código: Seleccionar todo
10 RESTORE 11:
FOR F=15616 TO 16383:
READ A:
POKE F,A:
NEXT F

Y luego ya van todas las líneas de DATA...
Imagen

Imagen

Imagen
Avatar de Usuario
AncientBits
rst 0
 
Mensajes: 9
Registrado: Sab Sep 30, 2017 10:50 am

Re: ¡No me carga las Fuentes al pasar de .bas a .tzx!

Notapor hikoki el Mar Ene 09, 2018 4:48 pm

A ver si otro forero te ayuda con los pokes.

Sobre FZX, no puedo trastear ahora. Lo único que se me ocurre es que cargues el fichero basin dentro de ZX-Editor que es compatible con basin, no deberia haber problemas con ese editor porque es del mismo autor que FZX Editor. También podrías probar con BasinC que es un fork actualizado, o directamente utilizar Bas2Tap.
Suerte y a ver simte ayudan por aquí
hikoki
Freddy Hardest
 
Mensajes: 551
Registrado: Sab Nov 23, 2013 9:27 am

Re: ¡No me carga las Fuentes al pasar de .bas a .tzx!

Notapor zup el Mar Ene 09, 2018 7:59 pm

¿Te has fijado que estás pokeando la ROM del Spectrum? En un Spectrum real no pasaría nada por hacerlo, y cuando digo no pasaría nada quiere decir que no se cargaría un nuevo tipo de letra porque la ROM es inalterable. Algunos emuladores (y al parecer BASIN) permiten que se altere la ROM y por eso te funciona ahí.

Por otra parte la memoria de video del Spectrum no está basada en caracteres, por lo que al cambiar de tipo de letra el cambio no es efectivo hasta que imprimes algo (lo que está ya impreso en pantalla no se modifica). De ahí que en el .z80 la pantalla permanezca con el tipo de letra que usas y al imprimir algo salga con el tipo tradicional.

La forma correcta de usar tu tipo de letra es reservar 768 bytes en alguna parte (p.ej.: a partir de 64600) y para asegurarte de que no se machaque usas un bonito CLEAR. Luego cargas tu tipo de letra ahí (con los DATA o con un LOAD CODE) y pokeas la variable del sistema CHARS (23606) con la dirección de tu tipo de letra. El código te quedaría algo así:

Código: Seleccionar todo
8 CLEAR 64599
9 POKE 23606,88: POKE 23607,252
10 RESTORE 11: FOR F=64600 TO 65367: READ A: POKE F,A: NEXT F

... (montones de DATAs)...


Esto funciona, pero se lleva por delante un montón de espacio que puedes usar para cosas mejores. Mi recomendación es generar el tipo de letra y grabarlo en cinta/disco, poniendo un SAVE "font" CODE 64600,768 cuando ya esté hecho. Después, para utilizarlo en tu programa solo tendrías que usar

Código: Seleccionar todo
8 CLEAR 64599
9 POKE 23606,88: POKE 23607,252
10 LOAD "font" CODE 64600


(En todo esto hay un pequeño bug... en los dos casos, los POKEs que le dicen al Spectrum el tipo de letra a usar están puestos antes de generar o cargar el tipo de letra y si algo falla la rutina de impresión no funcionará bien. Para saber a que me refiero, teclea POKE 23606,88: POKE 23607,252 en un emulador y verás lo que pasa)
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...
zup
Freddy Hardest
 
Mensajes: 587
Registrado: Vie Ago 15, 2008 2:43 pm

Re: ¡No me carga las Fuentes al pasar de .bas a .tzx!

Notapor hikoki el Mar Ene 09, 2018 8:15 pm

Mi consejo,
Descarga ZX-Blockeditor y Basinc, haz todo desde el GUI de estos programas. Solo tienes que editar FZX.tap
Abre FZX.tap con BasinC, edita el listado Basic. Obtén un nuevo .tap con Tool->export.
Abre el nuevo tap con ZX-Blockeditor, sustituye la pantalla de carga por la tuya, borra las fuentes que no utilices.
Ultima edición por hikoki el Mie Ene 10, 2018 2:43 pm, editado 1 vez en total
hikoki
Freddy Hardest
 
Mensajes: 551
Registrado: Sab Nov 23, 2013 9:27 am

Re: ¡No me carga las Fuentes al pasar de .bas a .tzx!

Notapor AncientBits el Mie Ene 10, 2018 12:08 am

Pues efectivamente ZUP... el BASin me estaba enviando por defecto las fuentes a una dirección en la ROM...

¿Por qué lo hicieron así sabiendo que esos programas luego van a ejecutarse en otros emuladores o máquina real? ¿Les gusta ver sufrir a la gente?

He intentado meterlo en otra dirección fuera de la ROM, haciendo el CLEAR como tú dices pero se alteran las letras (por ejemplo el espacio me pone un "?", algunas fuentes especiales desaparecen y se mantienen las básicas, etc.).

Creo que voy a coger un .bas del programa que tengo guardado antes de meter las fuentes y lo abriré con una versión más nueva del BASin (esa Fork que habéis dicho) y a ver si ahí me pone las fuentes fuera de la ROM en algún sitio seguro...

Muchas gracias, ZUP e hikoki, aunque no haya podido solucionarlo aún, el saber por qué pasaba ya es un alivio...


P.D.: 9 POKE 23606,88: POKE 23607,252

¿Por qué el número 88, ZUP? Entiendo que 23606 es la dirección de los caracteres pero no entiendo el 88 ni el 252...


EDITADO:

Ahh... vale, vale... ¿por esto que sale en el capítulo 25 del manual, no?

POKE n,v-256*1NT (v/256)
POKE n+1,lNT (v/256)
Imagen

Imagen

Imagen
Avatar de Usuario
AncientBits
rst 0
 
Mensajes: 9
Registrado: Sab Sep 30, 2017 10:50 am


Volver a Programación y nuevos desarrollos

¿Quién está conectado?

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