Buffers de trabajo intermedios en volcados de pantallas

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

Moderador: Sir Cilve Sinclair

Avatar de Usuario
TrueVideo
Jack The Nipper
Mensajes: 195
Registrado: Mié May 23, 2007 8:34 am
Ubicación: BCN
Contactar:

Mensaje por TrueVideo » Dom Oct 07, 2007 12:52 pm

Gandulf escribió:Bufff, eso es rapidísimo, pero la memoria que ocupa lo hace un poco inviable. Yo programo para 48K siempre (almenos de momento seguiré así) y si usara pre-rotados no me cabrían los sprites en el spectrum. Pero si lo tienes que aplicar a un par de sprites o a unos cuantos y tienes memoria para ello, pues sí, es la opción.


Claro. El problema es que incluso con 128K voy apuradísimo de memoria (ahora mismo no me caben, he tenido que hacer algunas perrerías que no me gustan nada), por eso estoy pensando en adoptar alguna técnica alternativa.

Cuando me dices eso de enchufar un raster me dejas como el del chiste del taller de coches al que le dicen que le han cambiado la "junta de trócolo". Me imagino la funcionalidad de lo que comentas, pero es una aplicación?. ¿un aparato? ?¿


Es una forma rápida de "ver" cuánto tarda en ejecutarse una rutina. Pones un color en el borde en la entrada y otro color diferente a la salida. Al ejecutar la franja resultante te dice el número de líneas que ha consumido, con lo que dividiendo se obtienen los t-states aproximados. Seguramente tiene otros nombres, pero yo siempre le he llamado medir con rasters. Lo utilizo constantemente con todas las rutinas importantes.. así sé cuánto margen tengo antes de pasarme de frame y dónde es prioritario optimizar.

De todas formas te puedo decir exactamente los t-states que consume la impresión de un sprite del tamaño que me dijiste, sin el raster., luego te lo miro


Ok, perfecto. No olvides medirlo con el tamaño máximo (no alineado) y si utiliza máscaras, fondos y esas cosas, dímelo también. Gracias.

J

Gandulf
Nonamed
Mensajes: 1067
Registrado: Lun May 07, 2007 10:06 pm

Mensaje por Gandulf » Dom Oct 07, 2007 1:29 pm

@TRUEVIDEO

Sí, es impresión de sprites con máscaras sobre fondos, pero los fondos son tiles y se tratan de otra forma totalmente distinta.

A ver si tengo luego un rato y te digos los t-states por byte y para el ejemplo de tamaño que pusiste.

La rutina tarda lo mismo para una rotación de 2 bits que para una de 6, es independiente del desplazamiento, lo cual está muy bien :)
Un saludo,

Gandulf

sromero
Nonamed
Mensajes: 1221
Registrado: Mar Abr 17, 2007 12:35 pm
Ubicación: Valencia
Contactar:

Mensaje por sromero » Dom Oct 07, 2007 1:40 pm

Gandulf escribió:Imagino que era lo que tenía aquella época, que como no se podía leer mucho sobre el tema (alto a los del opensource, me refiero a documentación sobre sprites y técnicas, no a código fuente :P ) pues la gente hacía lo que se lo ocurría así de primeras.


Es que el código fuente, correctamente comentado (incluso a veces sin estarlo), es documentación sobre técnicas, es conocimiento y casi puede ser un libro o la manera de aprender a hacer algo de una forma mejor :P

Yo programo para 48K siempre


La verdad es que yo siempre he hecho todo para 48K también, pero creo que a partir de ahora me voy a centrar en los modelos 128K, por varios motivos: el primero es porque es el modelo que yo más uso (+2A, concretamente +2E), segundo porque es el modelo que más gente tiene hoy en día (principalmente, porque son más recientes, más baratos, más fáciles de conseguir, y su teclado está durando más que el de los modelos anteriores).

La verdad es que estaría bien hacer una encuesta en los foros o en las news preguntando qué modelo de Spectrum usa la gente, ¿no?

Yo creo que saldría mayoría de 128K, pero la verdad es que estaría bien saberlo. Total, no estamos hablando de un mercado de 1.000.000 de usuarios, si somos 1000 ó 2000 ya nos podemos dar con un canto en los dientes X-D
NoP / Compiler

Avatar de Usuario
Ralphy
Freddy Hardest
Mensajes: 589
Registrado: Dom May 27, 2007 10:58 am
Ubicación: Lo 100 to picha, no tor mundo puehé DKI.

Mensaje por Ralphy » Dom Oct 07, 2007 7:59 pm

¿ Modelo +2E ? No me suena. ¿ También es de carcasa negra ? ¿ Tiene mas compatibilidad con los juegos de 48K como el +2 gris ?
ADVERTENCIA: Las autoridades spectrumeras advierten que Ralphy desprotege sériamente sus juegos.

En el nombre del anime, del manga, y del espíritu otaku: Imagen ¡¡¡ A ni MÉN !!!

¡¡¡ OTAKUS AL PODER !!!

Avatar de Usuario
zyloj
Freddy Hardest
Mensajes: 711
Registrado: Mar Abr 17, 2007 12:31 am
Ubicación: cada día más lejos de aquí
Contactar:

Mensaje por zyloj » Dom Oct 07, 2007 8:29 pm

Ralphy escribió:¿ Modelo +2E ? No me suena. ¿ También es de carcasa negra ? ¿ Tiene mas compatibilidad con los juegos de 48K como el +2 gris ?

Google es tu amigo.

Saludos

Avatar de Usuario
Ralphy
Freddy Hardest
Mensajes: 589
Registrado: Dom May 27, 2007 10:58 am
Ubicación: Lo 100 to picha, no tor mundo puehé DKI.

Mensaje por Ralphy » Dom Oct 07, 2007 11:31 pm

Porras, si es exácto al modelo que poseo. La misma carcasa negra, lo curioso es que no pone en la misma "+2A" pero sí en el menú al encenderlo.
ADVERTENCIA: Las autoridades spectrumeras advierten que Ralphy desprotege sériamente sus juegos.

En el nombre del anime, del manga, y del espíritu otaku: Imagen ¡¡¡ A ni MÉN !!!

¡¡¡ OTAKUS AL PODER !!!

Benway
Manic Miner
Mensajes: 215
Registrado: Lun May 07, 2007 7:43 pm
Ubicación: Madrid
Contactar:

Mensaje por Benway » Dom Oct 07, 2007 11:36 pm

Es que el +2E es un +2A ó +2B al que se le substituye la rom por otra nueva que da soporte para Discos Duros. ;)

Jose Leandro, en el artículo cuyo link puso ziloj, en el primer párrafo escribió: El proyecto + E ( http://www.zxplus3e.plus.com/ ) consiste en la sustitución de las ROM originales de los Spectrum 2+A, B y +3, por unas ROM modificadas con nuevos comandos y la capacidad de manejar discos duros con una interfaz hardware muy sencilla.


Es decir, que si cojes tu +2A y le añades el montaje que se describe en el artículo, dispondrás de un +2E ;)
Un saludo.
Imagen - Imagen - Imagen

sromero
Nonamed
Mensajes: 1221
Registrado: Mar Abr 17, 2007 12:35 pm
Ubicación: Valencia
Contactar:

Mensaje por sromero » Lun Oct 08, 2007 7:13 am

Ralphy escribió:¿ Modelo +2E ? No me suena. ¿ También es de carcasa negra ? ¿ Tiene mas compatibilidad con los juegos de 48K como el +2 gris ?


Como ya te han comentado, es una modificación de las ROMs (abrir spectrum, quitar roms del +2 de sus zocalos, regrabarlas con un firmware concreto en ellas, volver a ponerlas) que hace que el +2A se convierta en +2E pudiendo gestionar dispositivos IDE como discos duros, cdroms, lectores de tarjetas (eso sí, tienes que hacerte o comprar el hardware para hacerlo, el cambio de ROM sólo prepara al "S.O." del spectrum).

Yo tengo un +2E con lector de tarjetas CF, por ejemplo.
NoP / Compiler

Gandulf
Nonamed
Mensajes: 1067
Registrado: Lun May 07, 2007 10:06 pm

Mensaje por Gandulf » Lun Oct 08, 2007 6:39 pm

Se me olvidaba comentar que para que esa rutina y métodos sean eficientes (y la mayoría de las que tengo) necesitan que el sprite se guarde con este formato:

ByteMascara-ByteGrafico-ByteMascara-ByteGrafico.....

Y por supuesto el último byte de máscara ser #FF y el último del gráfico #00 (esto ya se supone al ser gráficos que hay que rotar)

Para sacar del ZXPaintBrush los gráficos en este formato, me hice un programa muy sencillo de PC que me convierte los .HEX y los .ZXP (este formato si lleva colores) a .ASM (DB #XX, #XX) mezclando máscara y sprite.

@TrueVideo
Casi acabo antes mandándote la rutina por e-mail, suelta y aislada, indicándote las direcciones de las tablas de rotación de valores.
Un saludo,

Gandulf

sromero
Nonamed
Mensajes: 1221
Registrado: Mar Abr 17, 2007 12:35 pm
Ubicación: Valencia
Contactar:

Mensaje por sromero » Lun Oct 08, 2007 6:44 pm

Gandulf escribió:@TrueVideo
Casi acabo antes mandándote la rutina por e-mail, suelta y aislada, indicándote las direcciones de las tablas de rotación de valores.


1 año más en este foro y te veo haciendo parches para el kernel de Linux X-D






















PD: es broma X-D
NoP / Compiler

Gandulf
Nonamed
Mensajes: 1067
Registrado: Lun May 07, 2007 10:06 pm

Mensaje por Gandulf » Lun Oct 08, 2007 6:48 pm

1 año más en este foro y te veo haciendo parches para el kernel de Linux X-D

Grrrr, algún día comentaré mi primeria experiencia con Linux, que no dudo que fue lo que motivó mi acérrimo odio hacia él :lol:, vaya tela. Aquello sí que tenía tela, que había que recompilar en kernel cada vez que modificabas algo, y tardaba 8 horas en recompilarse, por el reloj, era acojonante aquella filosofía del "pasa de tecnología microsoft" :lol: :lol: , hablo por supuesto de hace muuuuuchos años. Ah, y en arrancar las X ríete de las cargas del spectrum X-DDD
Un saludo,

Gandulf

sromero
Nonamed
Mensajes: 1221
Registrado: Mar Abr 17, 2007 12:35 pm
Ubicación: Valencia
Contactar:

Mensaje por sromero » Lun Oct 08, 2007 6:58 pm

Gandulf escribió:1 año más en este foro y te veo haciendo parches para el kernel de Linux X-D

Grrrr, algún día comentaré mi primeria experiencia con Linux, que no dudo que fue lo que motivó mi acérrimo odio hacie él :lol:, vaya tela. Aquello sí que tenía tela, que había que recompilar en kernel cada vez que modificabas algo, y tardaba 8 horas en recompilarse, por el reloj, era acojonante aquella filosofía del "pasa de tecnología microsoft" :lol: :lol: , hablo por supuesto de hace muuuuuchos años. Ah, y en arrancar las X ríete de las cargas del spectrum X-DDD


¿Cuántos miles de millones de años hace que no tocas Linux? :-)

Antes, uno se sentaba frente a un Linux y se veía con las manos atadas. Hoy, es al revés, 2 ó 3 meses con Linux, y te sientas frente a un Windows y ves que cuesta 4 veces más hacer lo mismo. No lo digo de coña. Además, coge una KUbuntú (descarga gratuita, o pides el CD y te lo mandan gratis a casa) y verás la facilidad de uso (viene en LIVE-CD y LIVE-DVD para probarla sin instalar nada, y un iconito para instalar en un PC vacío de forma automática, aunque si quieres que coexista con tu win te recomiendo que en el paso de particionado eligas el manual).

Al menos, para programadores y gente con una mínima experiencia en computadoras, es una gozada. El problema es cuando estás tan acostumbrado a una cosa que incluso algo mejor te hace sentirte lento utilizándolo. Pero una vez pasada esa impresión inicial ... de verdad de la buena.

De todas formas, no voy a intentar convencerte de nada, sólo decirte que aquellos tiempos en que estabas 8 horas compilando un kernel (o, incluso, que tuvieras que hacerlo) han quedado muy atrás. Hace ya tiempo que un kernel se compila en 20 minutos y que sólo lo hacemos los administradores de sistemas (en servidores) y quien instala algún driver experimental para algun hardware muy muy nuevo.

saludos.
NoP / Compiler

Avatar de Usuario
TrueVideo
Jack The Nipper
Mensajes: 195
Registrado: Mié May 23, 2007 8:34 am
Ubicación: BCN
Contactar:

Mensaje por TrueVideo » Lun Oct 08, 2007 7:58 pm

@TrueVideo
Casi acabo antes mandándote la rutina por e-mail, suelta y aislada, indicándote las direcciones de las tablas de rotación de valores.[/quote]

Gracias, pero con un cálculo aproximado del tiempo de ejecución ya me vale. Sólo es para hacerme una idea y decidir si vale la pena el cambio.

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

Mensaje por radastan » Mié Oct 17, 2007 2:42 pm

Bueno aquí van mis trucos:

Copiar el buffer a pantalla, sin que se vea pillado por el trazado de TV, es tan sencillo como esperar al retrazado y ejecutar la lectura del teclado... para así empezar a escribir cuando ya lleva un camino recorrido la escritura en pantalla. Otra técnica que estoy invetigando es sincronizar el volcado dle buffer cuando no se imprimen las líneas pares en pantalla (recordemos que el ZX Spectrum sólo escribe las líneas impares de una TV), ya que en esos momentos la VRAM está menos solicitada y va un pelí más rápida en acceso teóricamente.

Si no usas scroll es mucho mejor usar un buffer que sólo reescriba la parte de pantalla que se ha modificado, ganas una velocidad burrísima. Eso si, es bastante más complicado.

En lo que respecta a sprites, clarísimo: lo mejor es usar una rutina para cada tipo de tamaño, pierdes más memoria en código pero puedes acelerar mucho la impresión de los sprites si tienes varios tamaños fijos. Dinamic empleaba esta técnica, y les fué muy bien.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Gandulf
Nonamed
Mensajes: 1067
Registrado: Lun May 07, 2007 10:06 pm

Mensaje por Gandulf » Mié Oct 17, 2007 3:38 pm

@RADASTAN:
Otra técnica que estoy invetigando es sincronizar el volcado del buffer cuando no se imprimen las líneas pares en pantalla

Uff, eso lo veo bastante chungo. Hay que ir a toda leche para volcar un buffer una vez te pasa el retrazo, como tu bien dices, pero si en cada línea de volcado nos tenemos que preocupar de sincronizar con algo veo la cosa un poco fastidiada. ¿Algún resultado alentador? Hablo de volcados completos cuando hay scroll, si son trozos de volcado no hay problema de ninguna forma.

Más que nada porque si haces el volcado a cañón, ya te van a coincidir los momentos de línea impar y de línea par, con lo cual tb te beneficias de esa parte.

Yo probé a hacer algo como el "scanlines", o sea, volcar líneas pares en un retrazo e impares en el siguiente retrazo, que sobre el papel era cojonudo, pero luego en la realidad es desastroso :lol: , con tan poca resolución obtienes un estupendo baile de san vito en la pantalla.
Un saludo,

Gandulf

Responder

¿Quién está conectado?

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