Nueva utilidad para ordenar pantallas de carga -> Version B35 :D

Aquí solo proyectos que incluyan el código fuente

Moderador: Fundadores

Reglas del Foro
Si no se incluyen los fuentes, se debe usar el foro de proyectos de software generales
Avatar de Usuario
Spirax !Sinclair 1
Demonio tercer orden
Demonio tercer orden
Mensajes: 715
Registrado: 09 Oct 2017, 17:03
Ubicación: Leganes (Madrid)
Has thanked: 24 times
Been thanked: 46 times

Nueva utilidad para ordenar pantallas de carga -> Version B35 :D

Mensaje por Spirax »

Bueno, nueva, nueva no se.
lo que se es que la he echo yo este año, jajajaja

a lo mejor ya hay algo asi, pero como no pretendo inventar la rueda ..... jajajaja a lo mejor a alguno le vale y vemos cosas tan chulas como el Abu Simbel adjunto que he modificado yo... :twisted:

al lio.
llevaba desde el milenio pasado desconectado del mundillo del Spectrum hasta que hace unos meses me pico otra vez el gusanillo :P

hace poco tube contacto con el tzxduino/Maxduino que nos permite cargar lo juegos en tzx directamente al spectrum original sin modificaciones en el Spectrum.
despues empece a ver como acelerar las cargas, releyendo mucho sobre como funcionaba la rutina de cargando leches. consegui un programilla llamado OTLA que permitia convertir una imagen .z80 en un tzx con carga rapida, y consegi que me funcionara a 3000bauds, nunca a 6000, pero esa es otra historia que vendra mas adelante.
con el uso del tzxdino y las imagenes originales de juegos en tzx, recorde los que tenian protecion alkatraz con carga de pantallas muy chulas ejemplo el Xevious.
y me puse a ivestigar con el objetivo de hacer algo parecido.
Resultado de mis investigaciones surgio la necesidad del programa que comparto hoy en modo beta (Diria Alfa ya que no lo ha probado nadie mas que yo)

El progama nos permite cargar una pantalla de 6912 bytes en carga normal sin cabecera, para poder crearnos una tabla de posiciones.
una vez cargada entramos en modo de edicion.
lo primero que tenemos que hacer el buscar un hueco en la pantalla para recolocar el contador de caracteres que usamos en el modeo edicion. nota aunque no haya ningun hueco podemos marcar los caracteres donde esta el marcador sin problemas, mover con las teclas opqa y pulsar "u" en un area libre, esto cogera los colores de esa posicion y los usara como papel y tinta, si por un casual esa posicion estuviera invertida podemos invertir los colores pulsando i.
y a partir de aqui es ir selecionando con el espacio los caracteres por el orden que queremos cargarlos. esto nos ira borrando la pantalla.
para volver al menu pulsamos "m" y podemos probar en memoria como nos iria quedando con "p"
una vez acabado podemos grabar la pila y los datos en cinta.

podemos recuperar una pila para seguir con la edicion si tenemos una pantalla en memoria y probar el efecto de cargar desde cinta a velocidad normal.
si cargamos una pantalla se reiniciara la pila, por lo que si lo que queremos es seguir editando primero cargar la pantalla y luego la pila.

ale sin mas preambulos os dejo dos adjuntos, uno con el programa y otro con una modificacion de mi cosecha sobre el Abu SImbel.

no dispongo de much tiempo asi que no espereis actualizaciones continuas.
la rutina de carga es la de la rom modicada para cargar usando la pila de datos en el stack. publicare los fuentes para que la podais usar en vuestras cargas mientras afino la de carga rapida ;)

a ver que os parece espero vuestros comentarios.
abu resubido, le amplie el tiempo del tono guia con el borde negro.
os dejo un par de videos para veais como van quedando las pantallas
video 1 -> Abu simbel (version previa de carga pero la pantalla carga igual)
video 2 -> Atic Atac, Carga completa (al ser de Ultimate no se puede distribuir publicamente, pero si puedo compartir la tabla de posiciones de carga de pantalla ;) )
Video 3 -> Army Moves, usado el programa Ordena para cargar la pantalla desde cinta a velocidad normal


edito para actualziar la version:
hay una neva version en este enlace version B35
https://mega.nz/file/PdkE0QSY#POm6EL8fY ... o9hK2d8n88
saludos
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Última edición por Spirax el 13 Feb 2023, 16:22, editado 8 veces en total.
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3376
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 28 times
Been thanked: 146 times

Re: Nueva utilidad para ordenar pantallas de carga :D

Mensaje por Kyp »

Probando en emulador... Spin 0.7... En modo 128 +2 funciona bien pero en modo 48K sale corrupta la pantalla y da un R Tape loading error al terminar de cargar la pantalla.
Independientemente de eso... Que muy bien como carga la pantalla :D
Avatar de Usuario
Spirax !Sinclair 1
Demonio tercer orden
Demonio tercer orden
Mensajes: 715
Registrado: 09 Oct 2017, 17:03
Ubicación: Leganes (Madrid)
Has thanked: 24 times
Been thanked: 46 times

Re: Nueva utilidad para ordenar pantallas de carga :D

Mensaje por Spirax »

Hola Kyp.
gracias por probarlo.
efectivamoente en la ultima modificacion que hice le rebaje el syncronismo del tono guia a la pantalla de 2000 a 1500 sin darme cuenta y parece que no le sentó bien..
lo raro que un gomas sin modificar con el maxduino iva bien que es en el que hago las pruebas, por defecto tengo el spectaculator en modo 128k, jejeje y tambien iva bien.
lo probe y vi que efectivamente en el spectaculator hacia algo raro, si despues del r-tape error le das al run y reinicias la carga desde el 1er bloque turbo ya cargaba bien.

pero he resubido una nueva version del abu simbel corregido.
sino te importa vuelve a bajarlo y lo pruebas de nuevo.

te veo en retroparla :|
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

Re: Nueva utilidad para ordenar pantallas de carga :D

Mensaje por dandare »

muy resultón. Sí señor. Enhorabuena.
Imagen
Imagen
Avatar de Usuario
mad3001 !Atari
Demonio segundo orden
Demonio segundo orden
Mensajes: 1921
Registrado: 25 Nov 2015, 00:15
Ubicación: Mostoles(Madrid)
Has thanked: 81 times
Been thanked: 113 times

Re: Nueva utilidad para ordenar pantallas de carga :D

Mensaje por mad3001 »

Queda chulo, no se porqué al leer pensaba que era carga con un contador o algo así...(al estilo ranarama)... será que despues de cenar y tomar una cervecita uno entiende peor las cosas :))
Volviendo a los origenes... programa en assembler
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

Re: Nueva utilidad para ordenar pantallas de carga :D

Mensaje por dandare »

mad3001 escribió: 18 Ene 2018, 23:36 Queda chulo, no se porqué al leer pensaba que era carga con un contador o algo así...(al estilo ranarama)... será que despues de cenar y tomar una cervecita uno entiende peor las cosas :))
Yo también entendí eso al principio :D
Imagen
Imagen
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3376
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 28 times
Been thanked: 146 times

Re: Nueva utilidad para ordenar pantallas de carga :D

Mensaje por Kyp »

Spirax escribió: 18 Ene 2018, 22:14 pero he resubido una nueva version del abu simbel corregido.
sino te importa vuelve a bajarlo y lo pruebas de nuevo.
Ahora si. Funciona tanto en modo 48K como en 128K +2
A ver si encuentro un rato y lo pruebo en el Spectrum 'real'.

Me encanta el efecto de ir cargando la pantalla de forma desordenada. La primera vez que lo vi fue en el Fairlight y me quedé pasmao :o

Hace no mucho estuve buscando juegos que hicieran lo mismo (buscar juegos con protección Alkatraz en WOS) y aunque hay unos pocos, que además tengan una pantalla chula son muy muy pocos.
Avatar de Usuario
Spirax !Sinclair 1
Demonio tercer orden
Demonio tercer orden
Mensajes: 715
Registrado: 09 Oct 2017, 17:03
Ubicación: Leganes (Madrid)
Has thanked: 24 times
Been thanked: 46 times

Re: Nueva utilidad para ordenar pantallas de carga :D

Mensaje por Spirax »

dandare escribió: 19 Ene 2018, 10:51
mad3001 escribió: 18 Ene 2018, 23:36 Queda chulo, no se porqué al leer pensaba que era carga con un contador o algo así...(al estilo ranarama)... será que despues de cenar y tomar una cervecita uno entiende peor las cosas :))
Yo también entendí eso al principio :D
si, perdon, esa parte la tengo que explicar un poco mejor.
el contador es solo para llevar un contador de los caracteres usados como referencia durante la edicion, de 0 a 768, que son los maximos que deberia de haber.
la idea es que al poner el contador usamos si existe una parte vacia de la pantalla con lo cual no necesariamente tenemos que usar las 768 posiciones.
al arrancar nuestro cargador ponemos el PAPER y BORDER como el fondo y las partes vacias no hace falta selecionarlas.
cargamos la tabla y despues la pantalla.

explico un poco mas como funciona el programa mientras me currare un mini manual y compartire los fuentes de la rutina de carga de la rom modificada para usar la tabla de direcciones.

como podeis ver nos vamos moviendo por la pantalla en modo atributo de 32 columnas (0 a 31) x 24 filas (0 a 23)
cada vez que selecionamos un caracter de 8x8+atributos, calculo la posicion del primer byte del caracter basandome en la fila columna en la que estamos.
y guardo solo dicha posicion en una tabla.
y aumento el tamaño de la tabla en +2
si borramos una posicion, cojo la posicion del ultimo caracter de la tabla, elimino la direccion de la tabla y restauro la pantalla con lo que tenia.

al finalizar la edicion tendremos una tabla con las direcciones de todas las posiciones de inicio del caracter ( que ocupa 2 bytes por direccion + 2 bytes al final a 0 para marcar el final de la tabla) asi la tabla es menor para la carga. despues antes de cargar la pantalla añadimos a la tabla las posiciones de los atributos calculados.

como en tiempo de carga no se pueden exceder los calculos entre bits en tiempo real o se dessincroniza la carga y en la tabla solo guardo la posicion del 1er byte lo que hago es.
cargamos la tabla de direcciones inial como temporal y antes de iniciar la carga de los datos de la pantalla, re-calculamos la tabla con las direcciones de los attributos de cada caracter.
y creamos una tabla nueva con direccion inicial de caracter+direccion de attributos,
a la hora de cargar seguimos este patron cogemos la primera direccion de la tabla, la usamos como ix para la primera linea del caracter, incrementamos ixh con lo cual pasamos a la siguiente linea de caracter y asi hasta completar las 8 lineas del caracter,
despues cogemos la siguiente direccion de la pila recalculada que sera la direccion del attributo del caracter actual que calculamos antes de iniciar la carga.
y asi hasta completar la tabla.

espero explicarme bien, jajaja me lio me lio y lo enredo y es mas facil de lo que parece leyendolo.

saludos
en breve os pogo el source la rutina de carga empleada en el programa.

com decia el maximo deberia de ser 768, pero no le he puesto limite por lo siguiente.
se podria hacer que al principio pusiera un logo o mensaje para despues completar la carga de la pantalla reescribiendo encima de lo anterior.
a ver si me curro un ejemplo de esto cuando tenga algo mas de tiempo.
saludos
Última edición por Spirax el 19 Ene 2018, 16:20, editado 1 vez en total.
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

Re: Nueva utilidad para ordenar pantallas de carga :D

Mensaje por dandare »

Sí, ya me hice una pantalla. Si te parece bien, saca los fuentes y vemos en detalle el proceso B-)
Imagen
Imagen
Avatar de Usuario
Spirax !Sinclair 1
Demonio tercer orden
Demonio tercer orden
Mensajes: 715
Registrado: 09 Oct 2017, 17:03
Ubicación: Leganes (Madrid)
Has thanked: 24 times
Been thanked: 46 times

Re: Nueva utilidad para ordenar pantallas de carga :D

Mensaje por Spirax »

dandare escribió: 19 Ene 2018, 13:53 Sí, ya me hice una pantalla. Si te parece bien, saca los fuentes y vemos en detalle el proceso B-)
jajaja no me has dado tiempo, le estaba poniendo unos cuantos comentarios.
solo he comentado los cambios sobre la rutina de carga de la rom y lo que he echo yo
por favor no seais muy criticos, no soy programador por lo que seguro que hay cosas que hago mal ;) (o me entretengo mucho como con el creapia sin usar ix, jajaja)
adjunto un minicargador y los fuentes de la rutina de carga

el tap lo que hace es carga un mini basic para cargar el codigo de carga en 54100, y despues ya nos permite cargar la pila y pantalla ordenada creadas con el OrdenaB13, carga la pila con la rutina de la rom y ejecuta el cargador para la pantalla.

a ver como salgo parado de los comentarios de los que pilotan en CM ;)
se incluye es asm listo para compilar con sjasmplus

edito:
perdon para los que ya se lo habian descargado, con las prisas no me di cuennta el .tap de dentro del fichero compimido hay que renombarlo a .tzx o mejor bajarse otra vez el nuevo ;)
lo resubo para los que se lo descarguen a partir de ahora y añado una pantalla prueba.tzx para poder probar el cargador.

en la prueba vereis a que me refiero con hacer un cls con el papel que necesitemos antes de cargar la pantalla, jejeje
cargarlo tal cual y despues probar a poner PAPER 0: INK 0: BORDER 0: CLS : RUN
y volver a cargar la prueba
saludos
:mrgreen:
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Responder

Volver a “Proyectos de software abiertos”