Seis colores por carácter. ¡ CONSEGUIDO !

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

Moderador: Sir Cilve Sinclair

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por mcleod_ideafix » Dom Ene 18, 2009 4:18 pm

na_th_an escribió:¿Con "Más detallado" te refieres a que se puede usar cualquier bitmap en la zona de bitmap (no sólo 00001111)? Si es así, podrías usar algún programa de diseño para MSX1. ¿Qué formato tienen los datos en memoria?

Sí, exacto. La zona de bitmap puede ser cualquiera. La resolución de la zona es en realidad 112x192. Lo que pasa es que para poder mostrar algo, lo más sencillo era usarlo como una zona de píxeles de más baja resolución, a cambio de poder usar en cada "pixel" un color distinto.
En cuanto al formato, pues hay un área de atributos de 32x192 bytes, pero no están todos contiguos, así que he hecho una rutinilla que dadas las coordenadas de un atributo en BC y un valor de atributo en A, lo "pokea" en la zona correspondiente.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por mcleod_ideafix » Dom Ene 18, 2009 4:33 pm

marce escribió:No creo que sea muy dificil hacer un editor. Nadie se anima? No sé si mi hermano podría hacer uno en Java si le decís como es el formato.


Hombre, a menos que ese alguien ya tuviera escrito un editor, el escribir un programa así ex-profeso no es que sea difícil, pero tampoco es un programa trivial. Dado que hay que pokear a mano los atributos, creo que lo mejor sería que el formato fuera con bitmap y atributos por separado: el bitmap tendría exactamente el mismo formato que en el Spectrum (6144 bytes), luego vendría la zona de atributos de baja resolución (que cubre 9 columnas a derecha e izquierda de la zona de alta resolución, por ejemplo un bloque de 9x24 para la parte izquierda, y otro de 9x24 para la parte derecha), y por último, el bloque de 14x192 atributos para la zona de alta resolución.

El bitmap se cargaría directamente en la zona de bitmap del Spectrum, a continuación se transferirían las zonas de atributos de baja resolución, también directamente al archivo de atributos, y por último, usando la rutina para pokear atributos en alta resolución, se pasaría el último bloque de 14x192.

Más que un editor (o además de) a mi me gustaría probar un conversor de pantallas para un formato así, a menos que Rafa o algún otro que esté inestigando en el tema dé con una rutina que consiga más de estas 14 columnas, claro :)

Como decía antes, no tengo más inventiva para conseguir más columnas... sólo por software, pero añadiendo un poquito de hardware extra sí que podría llegar a 20 o quizás 22 columnas :)
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
marce
Herbert
Mensajes: 79
Registrado: Lun Jun 11, 2007 8:05 pm
Ubicación: Mallorca
Contactar:

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por marce » Dom Ene 18, 2009 4:52 pm

mcleod_ideafix escribió:El bitmap se cargaría directamente en la zona de bitmap del Spectrum, a continuación se transferirían las zonas de atributos de baja resolución, también directamente al archivo de atributos, y por último, usando la rutina para pokear atributos en alta resolución, se pasaría el último bloque de 14x192.


Claro, esa era la idea.

Más que un editor (o además de) a mi me gustaría probar un conversor de pantallas para un formato así, a menos que Rafa o algún otro que esté inestigando en el tema dé con una rutina que consiga más de estas 14 columnas, claro :)


Ambos programas son necesarios. El editor para "afinar" y mejorar con alguna técnica gráfica inspirada en la que se usa en MSX1 lo que se haya convertido. Yo no soy grafista ni nada parecido, pero siempre me ha llamado la atención este tipo de cosas y en su día me gustaba mucho hacer tonterías con el Art Studio. Me publicaron una pantalla en la Micromanía, en la sección (no me acuerdo cóm se llamaba) de parodias de pantallas de carga de juegos modificadas. Lo que quiero decir es que el resultado está claro que sería mucho más atractivo optimizando a mano con un editor.

Como decía antes, no tengo más inventiva para conseguir más columnas... sólo por software, pero añadiendo un poquito de hardware extra sí que podría llegar a 20 o quizás 22 columnas :)


Sería interesante, pero por hardware no me tira nada. Encuentro que tiene más mérito y es más util por software.

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por mcleod_ideafix » Dom Ene 18, 2009 6:09 pm

marce escribió:Sería interesante, pero por hardware no me tira nada.

A mi sí ;)

marce escribió:Encuentro que tiene más mérito y es más util por software.

Más mérito, indudable. Más útil, no: por hardware tienes más tiempo de CPU para dedicarlo a un juego que aproveche este "nuevo" modo de pantalla.
Web: ZX Projects | Twitter: @zxprojects

juanjo
rst 0
Mensajes: 31
Registrado: Dom Ene 18, 2009 6:03 pm

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por juanjo » Dom Ene 18, 2009 6:09 pm

Saludos, soy el hermano de marce. Yo podria hacer un editor de imagenes en Java si alguien hace una rutina que cargue un fichero con la imagen.

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por mcleod_ideafix » Dom Ene 18, 2009 6:11 pm

juanjo escribió:Saludos, soy el hermano de marce. Yo podria hacer un editor de imagenes en Java si alguien hace una rutina que cargue un fichero con la imagen.

Hola! Muchas gracias por el ofrecimiento. Yo de JAVA, ni puñetera idea. Pides una rutina que cargue un fichero con la imagen... ¿qué tipo de imagen y adonde hay que cargarla?
Web: ZX Projects | Twitter: @zxprojects

juanjo
rst 0
Mensajes: 31
Registrado: Dom Ene 18, 2009 6:03 pm

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por juanjo » Dom Ene 18, 2009 6:32 pm

mcleod_ideafix escribió:Hola! Muchas gracias por el ofrecimiento. Yo de JAVA, ni puñetera idea. Pides una rutina que cargue un fichero con la imagen... ¿qué tipo de imagen y adonde hay que cargarla?


Ah, no habia leido el comentario sobre como seria la carga. Pues nada, explicame el formato y yo hago el programa. El editor tendria un conversor para cargar imagenes.

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por mcleod_ideafix » Dom Ene 18, 2009 7:05 pm

El formato del fichero de salida podría ser el siguiente:

6144 bytes con lo que es el bitmap en sí, en el mismo formato que el Spectrum (vamos, lo que va desde la posición 16384 hasta la 22527).
A continuación, 216 bytes con los valores de atributos en baja resolución (9x24) de la parte izquierda de la pantalla. Es decir, los atributos de la posición de carácter 0,0, luego la 0,1, y así hasta la 0,8, y después la 1,0, la 1,1... 1,8, seguido de la 2,0, .... 2,8 y hasta llegar a 23,0 ... 23,8.
A continuación, otros 216 bytes con la misma disposición, pero para la parte derecha de la pantalla, es decir, la parte de pantalla que va desde la posición (0,23) hasta (24,31).
A continuación, 2688 bytes con los atributos en alta resolución para la parte central de la pantalla, es decir la ventana de gráficos que va desde el scan 0, columna 9, hasta el scan 191, columna 22.

Por cierto, aquí va el código fuente de lo que tengo hecho, para que lo uséis donde sea conveniente. Igual al mirarlo se te ocurre algún formato de salida más conveniente.
Web: ZX Projects | Twitter: @zxprojects

juanjo
rst 0
Mensajes: 31
Registrado: Dom Ene 18, 2009 6:03 pm

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por juanjo » Dom Ene 18, 2009 8:03 pm

mcleod_ideafix escribió:El formato del fichero de salida podría ser el siguiente:

6144 bytes con lo que es el bitmap en sí, en el mismo formato que el Spectrum (vamos, lo que va desde la posición 16384 hasta la 22527).
A continuación, 216 bytes con los valores de atributos en baja resolución (9x24) de la parte izquierda de la pantalla. Es decir, los atributos de la posición de carácter 0,0, luego la 0,1, y así hasta la 0,8, y después la 1,0, la 1,1... 1,8, seguido de la 2,0, .... 2,8 y hasta llegar a 23,0 ... 23,8.
A continuación, otros 216 bytes con la misma disposición, pero para la parte derecha de la pantalla, es decir, la parte de pantalla que va desde la posición (0,23) hasta (24,31).
A continuación, 2688 bytes con los atributos en alta resolución para la parte central de la pantalla, es decir la ventana de gráficos que va desde el scan 0, columna 9, hasta el scan 191, columna 22.

Por cierto, aquí va el código fuente de lo que tengo hecho, para que lo uséis donde sea conveniente. Igual al mirarlo se te ocurre algún formato de salida más conveniente.


Vale con esto ya puedo empezar a hacer el editor. Dos cosillas:
-Los bits de atributos como son? el MSB es flash, el bit 6 el bright, y luego 3 bits para paper y 3 bits para ink?
-Para cargar la imagen en memoria hara falta una rutina modificada no? O nos dices las direcciones donde hay que cargar el fichero...

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por mcleod_ideafix » Dom Ene 18, 2009 8:20 pm

juanjo escribió:-Los bits de atributos como son? el MSB es flash, el bit 6 el bright, y luego 3 bits para paper y 3 bits para ink?

Exacto.

juanjo escribió:-Para cargar la imagen en memoria hara falta una rutina modificada no? O nos dices las direcciones donde hay que cargar el fichero...

Basta con que generes un fichero binario con la disposición que he puesto. Luego cada uno tendrá que convertir los datos a bloques "db" en ASM o similar, y usar una rutina de carga, que sería algo parecido a lo que puedes ver en "Demo1" en el código fuente.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
marce
Herbert
Mensajes: 79
Registrado: Lun Jun 11, 2007 8:05 pm
Ubicación: Mallorca
Contactar:

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por marce » Dom Ene 18, 2009 8:25 pm

mcleod_ideafix escribió:
marce escribió:Más mérito, indudable. Más útil, no: por hardware tienes más tiempo de CPU para dedicarlo a un juego que aproveche este "nuevo" modo de pantalla.


Desde luego supongo que sería más barato, sencillo y accesible que lo del chip del msx, pero poder ejecutarlo en cualquier spectrum o emulador me parece más interesante. Pero nada, adelante, nada te impide hacer las dos cosas y el programa de Juanjo podría servir para ambos. Mientras no abandones la versión soft me parece perfecto.

Cómo sería esta "gráfica"? Muy complicada? Usaría la misma salida de video del spectrum o una propia, como el GFX9000 de MSX? Serviría para todos los modelos? (perdona la acribillada).

Avatar de Usuario
marce
Herbert
Mensajes: 79
Registrado: Lun Jun 11, 2007 8:05 pm
Ubicación: Mallorca
Contactar:

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por marce » Dom Ene 18, 2009 8:30 pm

mcleod_ideafix escribió:Basta con que generes un fichero binario con la disposición que he puesto. Luego cada uno tendrá que convertir los datos a bloques "db" en ASM o similar, y usar una rutina de carga, que sería algo parecido a lo que puedes ver en "Demo1" en el código fuente.


No puedes hacerlo de forma que se cargue la rutina por una parte y los datos por otra? Simplemente sabiendo en qué dirección deben ir los datos. Incluso con el .tap que has subido, ¿no se podría machacar la imagen de la chica?.

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por mcleod_ideafix » Dom Ene 18, 2009 8:38 pm

marce escribió:No puedes hacerlo de forma que se cargue la rutina por una parte y los datos por otra? Simplemente sabiendo en qué dirección deben ir los datos. Incluso con el .tap que has subido, ¿no se podría machacar la imagen de la chica?.

Precisamente por eso prefiero que se genere un fichero binario, para poder cargar la rutina por una parte, y los datos, cuando sean necesarios, por otra. No hay dirección fija adonde deban ir los datos, excepto quizás por el bitmap y el archivo de atributos de baja resolución, que estarían en los lugares "de siempre". El archivo de atributos de alta resolución, si miras el código fuente, verás que realmente no tiene una dirección específica, ya que los datos de los atributos están "mezclados" con el código que se encarga de mostrarlos. Es por eso que necesito una rutina para pokear un valor de atributo.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por mcleod_ideafix » Dom Ene 18, 2009 8:39 pm

marce escribió:Desde luego supongo que sería más barato, sencillo y accesible que lo del chip del msx

No estaba pensando para nada en el chip de MSX: estaba pensando en usar DMA para acelerar aún más la transferencia de atributos a la pantalla.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
marce
Herbert
Mensajes: 79
Registrado: Lun Jun 11, 2007 8:05 pm
Ubicación: Mallorca
Contactar:

Re: Seis colores por carácter. ¡ CONSEGUIDO !

Mensaje por marce » Dom Ene 18, 2009 8:59 pm

mcleod_ideafix escribió:Precisamente por eso prefiero que se genere un fichero binario, para poder cargar la rutina por una parte, y los datos, cuando sean necesarios, por otra. No hay dirección fija adonde deban ir los datos, excepto quizás por el bitmap y el archivo de atributos de baja resolución, que estarían en los lugares "de siempre". El archivo de atributos de alta resolución, si miras el código fuente, verás que realmente no tiene una dirección específica, ya que los datos de los atributos están "mezclados" con el código que se encarga de mostrarlos. Es por eso que necesito una rutina para pokear un valor de atributo.


Entonces con cada pantalla tienes que cargar su propia rutina?

Responder

¿Quién está conectado?

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