Bueno la pregunta es a tipo general, pongo el CPC, porque es el que tuvé, y más o menos me miro el ASM...
El tema es cuando hacían los juegos en ASM, supongo que por mucha velocidad que le dé a los micros, no existia lo que a día de hoy se llama el doble buffer que creo que es lo que se usa normalmente para refreecar la pantalla, vamos a decir los FPS, o sea el numero de veces que se pinta la pantalla...
Entonces mi duda es la siguente, si yo dibujo un muñeco y lo muevo, y tengo un fondo por detás, que es lo que pasa, que dibujo la reticula del personaje hacia la izquierda, pinto de negro el que ha quedado ("Como estela") a la derecha y pinto otra vez esa porción de background...
La verdad es que no se muy bien como va esto, y el tema de las transparencias es algo que no entienco mucho, como se puede hacer algo transparence, supongo que será una combinación lógica una and una Xor o algo asi, pero entonces esos gráficos serán más lentod que uno digamos que ocupará toda su superficie y viendo un poquito en negro, aunque quede mal, no?¿...
Refresco de pantalla en el CPC?¿
- mentalthink
- Amiga 2500
- Mensajes: 2840
- Registrado: 11 Abr 2010, 15:06
- Gracias dadas: 45 veces
- Gracias recibidas: 14 veces
- 6128
- Amiga 2500
- Mensajes: 2831
- Registrado: 27 Ene 2010, 18:06
- Sistema Favorito: Amstrad CPC
- primer_sistema: Amstrad CPC
- consola_favorita: Sega Genesis/Megadrive
- Primera consola: Sega Genesis/Megadrive
- Ubicación: León
- Gracias dadas: 146 veces
- Gracias recibidas: 35 veces
Re: Refresco de pantalla en el CPC?¿
Yo de programación cero patatero, pero por lo que he leído en el foro de Amstrad eso que dices se hace con máscaras.
Pásate por el foro y busca un poquillo pues hay varios hilos sobre pintar sprites y moverlos por la pantalla.
Pásate por el foro y busca un poquillo pues hay varios hilos sobre pintar sprites y moverlos por la pantalla.
- Joss
- Atari 1040 STf
- Mensajes: 930
- Registrado: 17 Jul 2012, 20:07
- Gracias dadas: 14 veces
- Gracias recibidas: 2 veces
Re: Refresco de pantalla en el CPC?¿
Uno de ellos es por ejemplo este:
Sprites - amstrad.es
También te puedes mirar los tutoriales de Mochilote sobre el tema:
cpcmania
Sprites - amstrad.es
También te puedes mirar los tutoriales de Mochilote sobre el tema:
cpcmania
- jotego
- Atari 1040 STf
- Mensajes: 657
- Registrado: 16 Ene 2013, 23:25
- Sistema Favorito: Atari ST
- primer_sistema: Amstrad CPC
- consola_favorita: Sony PlayStation 2
- Primera consola: Atari Lynx
- Ubicación: Valencia (España)
- Gracias dadas: 27 veces
- Gracias recibidas: 44 veces
- Contactar:
Re: Refresco de pantalla en el CPC?¿
Hay muchas técnicas y cada una requiere distinta potencia en el procesador. No he analizado el código de ningún juego de CPC pero me imagino que harían esto:
-Esperar al refresco vertical de la pantalla
-Durante el tiempo en que la pantalla no se refresca:
-Repintar el fondo que haya cambiado, por ejemplo, porque el personaje se ha movido
-Pintar el personaje, pero sólo las partes que son opacas. Se elige un "color" como transparente, generalmente el "0"
Para pintar sólo las partes opacas, lo ingenuo sería utilizar una estructura "if", del tipo: "si el color no es negro, píntalo, sino, te lo saltas". Pero esto sería demasiado lento por todas las comprobaciones e instrucciones de salto. Lo que se suele hacer es preparar una máscara del personaje, que es un dibujo en el que la parte transparente se pone a "1" y la opaca a "0". Entonces se puede reemplazar la estructura "if" por operaciones lógicas que se pueden ejecutar en un bucle. En este caso: "coge el fondo, hazle la AND con la máscara y al resultado, hazle la OR con el personaje, ahora escribe el resultado dónde estaba el fondo". Esta secuencia AND-OR deja el fondo intacto donde el personaje es "transparente" y copia el píxel del personaje cuando este es opaco.
Este es un resumen rápido, pero creo que se entiende la idea.
-Esperar al refresco vertical de la pantalla
-Durante el tiempo en que la pantalla no se refresca:
-Repintar el fondo que haya cambiado, por ejemplo, porque el personaje se ha movido
-Pintar el personaje, pero sólo las partes que son opacas. Se elige un "color" como transparente, generalmente el "0"
Para pintar sólo las partes opacas, lo ingenuo sería utilizar una estructura "if", del tipo: "si el color no es negro, píntalo, sino, te lo saltas". Pero esto sería demasiado lento por todas las comprobaciones e instrucciones de salto. Lo que se suele hacer es preparar una máscara del personaje, que es un dibujo en el que la parte transparente se pone a "1" y la opaca a "0". Entonces se puede reemplazar la estructura "if" por operaciones lógicas que se pueden ejecutar en un bucle. En este caso: "coge el fondo, hazle la AND con la máscara y al resultado, hazle la OR con el personaje, ahora escribe el resultado dónde estaba el fondo". Esta secuencia AND-OR deja el fondo intacto donde el personaje es "transparente" y copia el píxel del personaje cuando este es opaco.
Este es un resumen rápido, pero creo que se entiende la idea.
- EdgeM
- Atari 1040 STf
- Mensajes: 803
- Registrado: 01 Feb 2008, 12:55
- Gracias dadas: 2 veces
- Gracias recibidas: 5 veces
Re: Refresco de pantalla en el CPC?¿
Por mi parte, añadir que en el CPC sí que se puede hacer doble buffer... siempre que haya memoria "base" disponible, claro. Es tan fácil como apuntar con el CRTC a una nueva dirección en el siguiente refresco, teniendo en cuenta que el Gate Array sólo ve los primeros 64KB de memoria... aunque tengamos una expansión de 512KB
Por cierto, programando el CRTC se pueden conseguir tasas de refresco distintas (50Hz, 60Hz, 75Hz) siempre que el monitor lo permita, así como tener una resolución ampliada, a costa de usar más memoria para la imagen de vídeo.

- mentalthink
- Amiga 2500
- Mensajes: 2840
- Registrado: 11 Abr 2010, 15:06
- Gracias dadas: 45 veces
- Gracias recibidas: 14 veces
Re: Refresco de pantalla en el CPC?¿
@6128 y Joss gracias, a parte asi me recuerdo que tengo que pasar un poco más por Asmtrad.esp...
Jotego, lo que me comentas me ha ido de fábula, no por el hecho del tema de las or y la and para el sprite, si no por lo que me has comentado antes de poder evitar hacer los for... supongo que al igual que se usa para imagen, se podrá utilizar para otro tipos de datos, con el consecuente incremento de velocidad.. Voy a pensar sobre lo que me comentas pero para mis cosas de diario...
Gracias a todos por la info.
Edge M. que justo estaba escribiendo a la par que has posteado... Pues gracias por la info, lo que siempre me parece interesante del CPC, es que se puedan tocar cosas del monitor, es algo bastante "raro" a mi parecer... es que la máquina se las trae... Por mucho que los chicos de Retro entre amigos se metan con nosotros
Jotego, lo que me comentas me ha ido de fábula, no por el hecho del tema de las or y la and para el sprite, si no por lo que me has comentado antes de poder evitar hacer los for... supongo que al igual que se usa para imagen, se podrá utilizar para otro tipos de datos, con el consecuente incremento de velocidad.. Voy a pensar sobre lo que me comentas pero para mis cosas de diario...
Gracias a todos por la info.
Edge M. que justo estaba escribiendo a la par que has posteado... Pues gracias por la info, lo que siempre me parece interesante del CPC, es que se puedan tocar cosas del monitor, es algo bastante "raro" a mi parecer... es que la máquina se las trae... Por mucho que los chicos de Retro entre amigos se metan con nosotros

- EdgeM
- Atari 1040 STf
- Mensajes: 803
- Registrado: 01 Feb 2008, 12:55
- Gracias dadas: 2 veces
- Gracias recibidas: 5 veces
Re: Refresco de pantalla en el CPC?¿
El CPC es una máquina grandiosa, pese al cachondeo que tienen en el podcast a su costa ^_^
- 6128
- Amiga 2500
- Mensajes: 2831
- Registrado: 27 Ene 2010, 18:06
- Sistema Favorito: Amstrad CPC
- primer_sistema: Amstrad CPC
- consola_favorita: Sega Genesis/Megadrive
- Primera consola: Sega Genesis/Megadrive
- Ubicación: León
- Gracias dadas: 146 veces
- Gracias recibidas: 35 veces
Re: Refresco de pantalla en el CPC?¿
Por cierto, Mentalthink. Que no te he preguntado. ¿Qué tienes en mente? ¿Cuándo veremos algo de ese juego para CPC made in Mentalthink?



- mentalthink
- Amiga 2500
- Mensajes: 2840
- Registrado: 11 Abr 2010, 15:06
- Gracias dadas: 45 veces
- Gracias recibidas: 14 veces
Re: Refresco de pantalla en el CPC?¿
Hola 6128 pérdona que no te haya respondido hasta ahora que no había visto este post..
Pues lo puedes ver aquí , en el foro puse un Post de esté Blog...
http://blacksun-game.blogspot.com.es/
El video que pone Video beta 0.1, ahí podrás ver un poquito como está quedando , pero ya te digo que hay cosas que no están programadas y y cosas que cambiaré, así como algunos errores, pero bueno la parte de código chunga pues ya la he terminao más o menos...
Ya me dices a ver que te parece

Pues lo puedes ver aquí , en el foro puse un Post de esté Blog...
http://blacksun-game.blogspot.com.es/
El video que pone Video beta 0.1, ahí podrás ver un poquito como está quedando , pero ya te digo que hay cosas que no están programadas y y cosas que cambiaré, así como algunos errores, pero bueno la parte de código chunga pues ya la he terminao más o menos...
Ya me dices a ver que te parece


- 6128
- Amiga 2500
- Mensajes: 2831
- Registrado: 27 Ene 2010, 18:06
- Sistema Favorito: Amstrad CPC
- primer_sistema: Amstrad CPC
- consola_favorita: Sega Genesis/Megadrive
- Primera consola: Sega Genesis/Megadrive
- Ubicación: León
- Gracias dadas: 146 veces
- Gracias recibidas: 35 veces
Re: Refresco de pantalla en el CPC?¿
Los fondos son una chulada.
Luego a portarlo a CPC.
Aunque se pierdan los fondos seguirá siendo un matamarcianos cojonudo.
Luego a portarlo a CPC.

Aunque se pierdan los fondos seguirá siendo un matamarcianos cojonudo.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados