Nuevo proyecto para CPC
Moderador: Fundadores
Reglas del Foro
Si no se incluyen los fuentes, se debe usar el foro de proyectos de software generales
Si no se incluyen los fuentes, se debe usar el foro de proyectos de software generales
- Kyp
- Hermano de Lucifer
- Mensajes: 3401
- Registrado: 30 Sep 2013, 14:54
- Ubicación: Madrid
- Has thanked: 30 times
- Been thanked: 161 times
Re: Nuevo proyecto para CPC
La razón por la que en el Spectrum las líneas saltan de 8 en 8 es por un tema de optimización de los cálculos a la hora de pintar. La distribución de memoria de la pantalla está pensada para que para pasar de una línea a la que hay justo debajo hay que sumar 256 en vez de 32. Es decir, suponiendo que la dirección la tienes en un registro de 16 bits, en vez de sumar 32 al registro completo (una suma de 16 bits) le sumas 1 al byte alto del registro (incrementar el registro) y ahorras unos cuantos ciclos de reloj.
En el Amstrad no lo veo tan claro.
En el Amstrad no lo veo tan claro.
- Bubu
- Demonio segundo orden
- Mensajes: 1125
- Registrado: 02 May 2013, 20:35
Re: Nuevo proyecto para CPC
La razón de ese salto es porque el registro de la vídeoRAM es así:
010rrsss rrrccccc
donde:
s=0 a 7, e indica una de las 7 filas dentro de cada carácter
rrrrr=0 a 31 (sólo tiene sentido de 0 a 23), e indica una de las 24 filas de caracteres
ccccc=0 a 31, e indica una de las 32 columnas de caracteres, de cada fila de caracteres
De ahí a que al incrementarse la posición de memoria, se apunta a la siguiente columna, pero es que cuando ésta llega a la última columna, no se pasa al siguiente s, sino al siguiente r, y no sólo eso, cuando r llega a 7, (8 filas), ¡¡pasamos al siguiente s!! AjAjAjAJJAJAjAJAjA
Así que la razón del salto es que r está roto en 2 partes, por una parte rr, y por otra rrr.
Si el registro hubiera sido así:
010rrrrr sssccccc
¿qué pasaría? Pues que tras pintar todas las c, pasamos al siguiente s de la misma r. Cuando terminamos todas las s de esa r, entonces pasamos a otra r. ¿No hubiera sido esto lo más lógico?
Las pantallas de carga irían estrictamente de arriba a abajo, sin saltos ni tercios ni leches.
¿Y todo esto por qué es? Por cómo está diseñada la ULA por dentro, ya que es ésta la que interpreta ese tipo de registro "010rrsss rrrcccc".
Por eso preguntaba si en el Amstrad existe otra "ULA", porque si es así pues ya tenemos la explicación, jiji.
010rrsss rrrccccc
donde:
s=0 a 7, e indica una de las 7 filas dentro de cada carácter
rrrrr=0 a 31 (sólo tiene sentido de 0 a 23), e indica una de las 24 filas de caracteres
ccccc=0 a 31, e indica una de las 32 columnas de caracteres, de cada fila de caracteres
De ahí a que al incrementarse la posición de memoria, se apunta a la siguiente columna, pero es que cuando ésta llega a la última columna, no se pasa al siguiente s, sino al siguiente r, y no sólo eso, cuando r llega a 7, (8 filas), ¡¡pasamos al siguiente s!! AjAjAjAJJAJAjAJAjA
Así que la razón del salto es que r está roto en 2 partes, por una parte rr, y por otra rrr.
Si el registro hubiera sido así:
010rrrrr sssccccc
¿qué pasaría? Pues que tras pintar todas las c, pasamos al siguiente s de la misma r. Cuando terminamos todas las s de esa r, entonces pasamos a otra r. ¿No hubiera sido esto lo más lógico?
Las pantallas de carga irían estrictamente de arriba a abajo, sin saltos ni tercios ni leches.
¿Y todo esto por qué es? Por cómo está diseñada la ULA por dentro, ya que es ésta la que interpreta ese tipo de registro "010rrsss rrrcccc".
Por eso preguntaba si en el Amstrad existe otra "ULA", porque si es así pues ya tenemos la explicación, jiji.
Si algo funciona... no lo toques. ¡¡Pero ni de coña!!
- Kyp
- Hermano de Lucifer
- Mensajes: 3401
- Registrado: 30 Sep 2013, 14:54
- Ubicación: Madrid
- Has thanked: 30 times
- Been thanked: 161 times
Re: Nuevo proyecto para CPC
Si, pero r está partido así, en dos partes, aposta por lo que decía antes, para ayudar a optimizar los cálculos en los programas
Y si, los CPCs también tienen ULA pero no la misma que el Spectrum.
Y si, los CPCs también tienen ULA pero no la misma que el Spectrum.
- Bubu
- Demonio segundo orden
- Mensajes: 1125
- Registrado: 02 May 2013, 20:35
Re: Nuevo proyecto para CPC
Pues yo que pogramo bastante en ensamblador, no le veo la facilidad ni mucho menos nada que se optimice a que r esté roto. Sería mucho más fácil todo si el registro fuera consecutivo:
010rrrrr sssccccc
Todo lo contrario, con r roto hay que estar continuamente haciendo rotaciones del contenido con RRCA para incrementar. Una locura...
010rrrrr sssccccc
Todo lo contrario, con r roto hay que estar continuamente haciendo rotaciones del contenido con RRCA para incrementar. Una locura...
Si algo funciona... no lo toques. ¡¡Pero ni de coña!!
- Bubu
- Demonio segundo orden
- Mensajes: 1125
- Registrado: 02 May 2013, 20:35
Re: Nuevo proyecto para CPC
¿Cómo se llama la ULA del Amstrad? Tengo curiosidad por echarle una visual
Si algo funciona... no lo toques. ¡¡Pero ni de coña!!
- wilco2009
- Hermano de Lucifer
- Mensajes: 8156
- Registrado: 01 Abr 2013, 23:47
- Ubicación: Valencia
- Has thanked: 47 times
- Been thanked: 107 times
Re: Nuevo proyecto para CPC
GateArray.
Aunque está ayudado por otro chips como el VDU.
Aunque está ayudado por otro chips como el VDU.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".
Douglas Adams. Guía del autoestopista galáctico.
Douglas Adams. Guía del autoestopista galáctico.
- Bubu
- Demonio segundo orden
- Mensajes: 1125
- Registrado: 02 May 2013, 20:35
Re: Nuevo proyecto para CPC
okis, gracias, wilco2009
derdhal, ¿qué modo estás usando en tu juego? ¿Has pensado lo que hacer con la música?
derdhal, ¿qué modo estás usando en tu juego? ¿Has pensado lo que hacer con la música?
Si algo funciona... no lo toques. ¡¡Pero ni de coña!!
- derdhal
- USUARIO BANEADO
- Mensajes: 721
- Registrado: 23 Jun 2013, 20:33
- Ubicación: Valencia
Re: Nuevo proyecto para CPC
Estoy en Modo 0... como la inmensa mayoría de juegos en Amstrad.
La música es algo que tengo pendiente... porque no sé ni por donde meterle mano... no tengo ni idea... ni de componer ni de como hacer que suene en el Amstrad. Seguramente para hacer que suene tenga que echar mano de alguna librería tipo cpcrslib.
La música es algo que tengo pendiente... porque no sé ni por donde meterle mano... no tengo ni idea... ni de componer ni de como hacer que suene en el Amstrad. Seguramente para hacer que suene tenga que echar mano de alguna librería tipo cpcrslib.
- Bubu
- Demonio segundo orden
- Mensajes: 1125
- Registrado: 02 May 2013, 20:35
Re: Nuevo proyecto para CPC
En el caso del Spectrum yo lo que hago es componer con un tracker especial que se llama Beepola, y éste trae una opción para exportar en ensamblador. Al exportar, copio y pego eso en mi código fuente, y yo sólo tengo que hacer la llamada con un CALL y ya suena, jiji. Supongo que en Amstrad será así tamién.
Si algo funciona... no lo toques. ¡¡Pero ni de coña!!
- tacha
- Hermano de Lucifer
- Mensajes: 3167
- Registrado: 04 Abr 2013, 20:22
- Ubicación: Montevideo, Uruguay
- Has thanked: 52 times
- Been thanked: 35 times
- Contactar:
Re: Nuevo proyecto para CPC
Te vengo siguiendo desde el principio, pero te escucho mudo siempre al ver un proyecto de esta indole me dan ganas de meterle mano en cuanto a sonido y musica. Pero como tu, no tengo idea de como en un CPC. Si programar musica en el CPC fuera 100% compatible al Spectrum de seguro que hasta te mando un .bin ya que me hice un tracker para spectrum programado en ZXBoriel y compilado en assembler, que deje guardado en una carpeta de por aqui, aunque esta en beta se puede prgramar con el... Los registros del AY son los mismos, no se si los puertos e instrucciones sean igual.derdhal escribió:Estoy en Modo 0... como la inmensa mayoría de juegos en Amstrad.
La música es algo que tengo pendiente... porque no sé ni por donde meterle mano... no tengo ni idea... ni de componer ni de como hacer que suene en el Amstrad. Seguramente para hacer que suene tenga que echar mano de alguna librería tipo cpcrslib.
Alguien sabe si un .bin en assemler de Spectrum correria en Amstrad manipulando el AY-3-83912?
aqui una muestra de mi tracker, no deis corte al video XD esta editado con el ZXspin.
Un saludo.
66 6C 6F 70 70 69 6E 67 20 6D 61 73 63 61 20 50 30 6C 6C 34 / 6D 61 73 20 63 6F 74 69 6C 6C 61 20 73 65 72 E1 73 20 74 75 20 49 7A 61 72 6F 20 3A 70