Refresco de pantalla en el CPC?¿

Sistemas 464, 664, 6128, 472, ...
Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Refresco de pantalla en el CPC?¿

Mensajepor mentalthink » 12 Feb 2013, 21:02

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?¿...

Avatar de Usuario
6128
Amiga 2500
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?¿

Mensajepor 6128 » 12 Feb 2013, 21:28

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.

Avatar de Usuario
Joss
Atari 1040 STf
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?¿

Mensajepor Joss » 12 Feb 2013, 21:35

Uno de ellos es por ejemplo este:

Sprites - amstrad.es

También te puedes mirar los tutoriales de Mochilote sobre el tema:

cpcmania

Avatar de Usuario
jotego
Atari 1040 STf
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?¿

Mensajepor jotego » 12 Feb 2013, 21:42

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.

Avatar de Usuario
EdgeM
Atari 1040 STf
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?¿

Mensajepor EdgeM » 12 Feb 2013, 22:23

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 :P 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.

Avatar de Usuario
mentalthink
Amiga 2500
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?¿

Mensajepor mentalthink » 12 Feb 2013, 22:24

@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 :P

Avatar de Usuario
EdgeM
Atari 1040 STf
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?¿

Mensajepor EdgeM » 13 Feb 2013, 08:10

El CPC es una máquina grandiosa, pese al cachondeo que tienen en el podcast a su costa ^_^

Avatar de Usuario
6128
Amiga 2500
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?¿

Mensajepor 6128 » 15 Feb 2013, 18:17

Por cierto, Mentalthink. Que no te he preguntado. ¿Qué tienes en mente? ¿Cuándo veremos algo de ese juego para CPC made in Mentalthink? :-ss

;)

Avatar de Usuario
mentalthink
Amiga 2500
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?¿

Mensajepor mentalthink » 15 Feb 2013, 20:07

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 :oops: ;)

Avatar de Usuario
6128
Amiga 2500
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?¿

Mensajepor 6128 » 15 Feb 2013, 20:45

Los fondos son una chulada.

Luego a portarlo a CPC. :mrgreen:
Aunque se pierdan los fondos seguirá siendo un matamarcianos cojonudo.


Volver a “Amstrad CPC”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado