[DEZ80 1.T04] Introducción a la Memoria de Vídeo

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 ม.ค. 2025

ความคิดเห็น • 30

  • @jcggpersonal
    @jcggpersonal 6 ปีที่แล้ว +9

    Un trabajo más que excelente, Retroman. Sobre la distribución de la memoria de vídeo, creo que también puede ser muy interesante la información que hay disponible en www.cpcmania.com/Docs/Programming/Pintando_pixeles_introduccion_a_la_memoria_de_video.htm

    • @ProfesorRetroman
      @ProfesorRetroman  6 ปีที่แล้ว +4

      Sí, el enlace que has aportado también es muy interesante. No lo he recomendado porque anteriormente la página que mencionas tenía algunos fallos. Por lo que puedo ver, ya han sido corregidos: me alegro mucho. Seguro que también le es útil a más gente como referencia, aunque espero que nadie se confunda con el código en C. Gracias por tu aportación.

    • @danielesquivel3155
      @danielesquivel3155 4 ปีที่แล้ว +1

      :3

    • @josebenavidesg
      @josebenavidesg 4 ปีที่แล้ว

      Gracias Juan Carlos, por el aporte, siempre creo que es bueno ver la misma materia de diferentes puntos de vista.

  • @dgnrlento
    @dgnrlento 4 ปีที่แล้ว +3

    Hola. ¿Que tal? Yo soy del Spectrum. Gracias por su tiempo y por compartir sus conocimientos.

    • @angelnavarrobatista4173
      @angelnavarrobatista4173 3 ปีที่แล้ว +1

      Jajaja. Yo de Commodore. Qué recuerdos mas buenos. Gwbasic y assembler y a correr. Con internet de caracol y grillos. Saludos amigos.

  • @josebenavidesg
    @josebenavidesg 4 ปีที่แล้ว +6

    Fran, Las pantallas modernas que son planas y no son de tubos de rayos catódicos, manejan la misma lógica de como dibujar ?, (usan la memoria de pantalla en linea y se va dibujando de arriba a abajo, con la probabilidad de que se produzca flickering) . Gracias por la paciencia de responder.

    • @ProfesorRetroman
      @ProfesorRetroman  4 ปีที่แล้ว +7

      Parcialmente sí. Los monitores modernos tienen electrónica propia intermedia que incluye memorias de vídeo en el propio monitor (a modo de buffer), conversores analógico-digitales, procesadores de imagen y otras cosas varias. Los cables modernos, como HDMI están pensados para enviar hasta 120 veces un fotograma completo de imagen, codificado y encriptado. Pero todo esto, en el fondo, termina con información del color de cada pixel en esas memorias buffer del monitor. De esa información, se transforma a impulsos eléctricos que van a la matriz de píxeles de la pantalla, codificando aperturas para el color de cada píxel. Y esta información, a la hora de actualizarse, suele hacerse también pixel a pixel, en el orden arriba-abajo, izquierda-derecha, exactamente como el refresco clásico de pantalla, pero más rápido. Hay muchas variantes y formas, muchas capas intermedias (que producen entre 1 y 6 fotogramas de retraso), pero una lógica similar. Flickering y tearing pueden seguir dándose por los mismos motivos que en CRT, aunque no sea exactamente de la misma forma, pero básicamente por actualizar directamente memoria de vídeo y quedarse a medias entre frame y frame. Lo que ocurre es que esto normalmente ya no se hace, sino que se dibuja siempre en un buffer secundario y se hace doble y tripple buffering a través del hardware de las tarjetas gráficas.

    • @josebenavidesg
      @josebenavidesg 4 ปีที่แล้ว +3

      @@ProfesorRetroman gracias por la respuesta muy completa.Es como lo imagine, Al final se dibuja en memoria (tras bambalinas) y luego se mueve todo el buffer de una vez.

    • @elJosem808
      @elJosem808 ปีที่แล้ว +2

      @@ProfesorRetroman Por cada video que termino de ver, bajo a los comentarios porque sé que nos terminarás enseñando aún más con un comentario aquí y otro allá. Yo le llamaría una "experiencia intensiva" XD

  • @jasielc1356
    @jasielc1356 4 ปีที่แล้ว +2

    Video muy bien echo. Gracias.

  • @DavidCarrizoGuitarra
    @DavidCarrizoGuitarra ปีที่แล้ว +1

    Hola profe Retroman y comunidad!!! No estoy encontrando la parte donde se explica las filas debajo de la otra ni la explicacion de los carácteres

    • @ProfesorRetroman
      @ProfesorRetroman  ปีที่แล้ว +1

      Hola David :)
      Respecto al contenido de DEZ80, la mejor forma de seguirlo es en los links que tienes en la descripción de cada vídeo. Tienes siempre un link al curso completo, que está estructurado en el Moodle profesorretroman.com. También tienes todos los niveles del curso en listas de reproducción en el canal.
      Siempre que quieras ver el orden de los vídeos de cualquier serie del canal, los encontrarás organizados en listas, y los últimos cursos también están todos estructurados en el Moodle. Mira a ver si encuentras así lo que buscas y, si no, siempre puedes aprovechar para preguntar tus dudas de forma concreta y las vemos :)
      Un saludo y mucho ánimo!

  • @santiagoalvarez6097
    @santiagoalvarez6097 3 ปีที่แล้ว +3

    gracias por los videos, estoy aprendiendo algo de basic, en libros, me puede servir este lenguaje de programacion, para aprender, el funcionamiento de un pc?

    • @ProfesorRetroman
      @ProfesorRetroman  3 ปีที่แล้ว +2

      No hay de qué. Ensamblador y código máquina son los lenguajes más cercanos a la máquina y, por eso, son los que más ayudan a entender cómo funciona un ordenador por dentro. Todos los ordenadores funcionan igual (con más optimizaciones, unidades y avances, pero igual en esencia), así que lo que aprendas sobre Amstrad CPC te hará mucho más fácil y rápido entender cómo funciona por dentro un PC. Eso puedes verlo también en mis clases de C++ y ensamblador de PC.
      Eso sí, ten paciencia y disfruta de cada pequeño paso. Aprender todo esto lleva tiempo y lo más importante es disfrutar el camino. Lo importante no es la meta, es todo el trayecto. Recórrelo poco a poco y disfruta cada paso.
      Suerte y mucho ánimo.

    • @santiagoalvarez6097
      @santiagoalvarez6097 3 ปีที่แล้ว

      @@ProfesorRetroman gracias profe.

    • @santiagoalvarez6097
      @santiagoalvarez6097 3 ปีที่แล้ว +1

      @@ProfesorRetroman estuve viendo un video que como hacian los video juegos de supernintendo, que eran juegos con poca memoria , y tenian buenos graficos, me parecio interesante, por utilizaban para hacer los escenarios ,al estilo mario bros,, osea pintaban spraites en forma de mosaicos, pocos sprites y lo ubicanban de diferente forma , para armar los escenarios, por ejemplo pintaban un ladrillo, y ese mismo ladrillo, lo ubicaban en varias partes de juego, y no tenian que pintar los escenarios, sino que lo iban armando con sprites como un rompe cabezas. y asi utilizaban poca memoria. me gustaria que enseñara esa tecnica.

  • @kabeza79
    @kabeza79 ปีที่แล้ว +1

    Interesante. Lo que no tengo claro es como es posible escribir y leer sin que haya problemas de sincronismo o colisiones. Entiendo que si el crtc quiere leer pero en ese momento se está escribiendo en la RAM, no leerá y mantiene la imagen

    • @ProfesorRetroman
      @ProfesorRetroman  9 หลายเดือนก่อน +1

      Porque todo eso lo hace el hardware. El propio diseño del Amstrad CPC ya tiene esto en cuenta en su placa y utiliza una señal de la CPU (del Z80) llamada WAIT que la deja paralizada mientras se están haciendo otras cosas. Así, mientras el CRTC lee la memoria, tiene activa la señal WAIT del Z80, por lo que ambos no colisionan. Esto es lo que hace que las instrucciones en Amstrad no se cuenten en ciclos como en otros Z80 (como en ZX Spectrum, por ejemplo), sino en microsegundos. Estas pausas hacen que las instrucciones "redondeen" sus tiempos de ejecución al microsegundo, aproximadamente. Este es el motivo por el que suele decir que la velocidad "efectiva" de reloj en el CPC es de 3.33 Mhz y no 4 Mhz. Son detalles técnicos muy sutiles :).
      El resumen es que no tienes que preocuparte de esos detalles en un Amstrad CPC, como si tienes que hacerlo en una Game Boy, por ejemplo. El hardware ya se encarga de ello por ti.

  • @josebenavidesg
    @josebenavidesg 4 ปีที่แล้ว +3

    Fran muy buena explicación. Una consulta como se escribe el termino para el refresco de la pantalla. Mencionaste algo como fligerin???

    • @ProfesorRetroman
      @ProfesorRetroman  4 ปีที่แล้ว +4

      Flickering (Parpadeo). Es el efecto no deseado que se produce porque cuando se está dibujando en pantalla el contenido de la memoria de vídeo, parte o todo un sprite (o varios) acaban de ser borrados. Esto sucede porque para mover de sitio un sprite hay que borrarlo y redibujarlo. Pero eso hay que hacerlo antes de que esa zona de memoria de vídeo sea leída por el raster para actualizar la imagen del monitor, o suceden estos y otros problemas.

  • @bknxxenacion
    @bknxxenacion 6 ปีที่แล้ว +3

    Una pregunta en el caso de que la computadora tenga una tarjeta de video con su propia memoria, ¿cómo se programa la memeoria de video ? no creo que la tarjeta de video acceda a la memoria de la computadora para ver registro reservado para la memoria de video, ¿cómo es que el procesador escribe en la tarjeta de video?

    • @ProfesorRetroman
      @ProfesorRetroman  6 ปีที่แล้ว +4

      Eso es dependiente siempre de la arquitectura de la computadora. Cada una funciona de una manera diferente. Algunas funcionan usando DMA para copiar de memoria a memoria, otras funcionan con acceso mediante órdenes enviadas al puerto de la tarjeta de vídeo. No se puede dar una respuesta general, aunque las dos formas más usuales son estas: DMA y órdenes al puerto de la tarjeta, igual que para cualquier otro dispositivo de expansión.

    • @jasielc1356
      @jasielc1356 4 ปีที่แล้ว

      @@ProfesorRetroman Gracias por la explicacion

  • @josebenavidesg
    @josebenavidesg 4 ปีที่แล้ว +1

    Consulta, entiendo que el FFFF o FFFFFFFF o FFFFFFFFFFFFFFFF , etc.. seria el limite de la memoria de video en todos los sistemas de 8, 16, 32 y ,64, etc... bits, me refiero que terminan en FFF... ? y el "inicio" en todos los sistemas tienen un estandar desde donde comienza la memoria de video algo como C00..... ? gracias.

    • @ProfesorRetroman
      @ProfesorRetroman  4 ปีที่แล้ว +4

      No, no es así. La memoria de video en Amstrad CPC se encuentra en el último de los 4 bancos de 16k por defecto, y por eso va de C000 a FFFF. Sin embargo, en el propio Amstrad CPC se puede cambiar de sitio y usar otra zona de la RAM como memoria de video. En otros sistemas está en otros sitios, se distribuye diferente, tiene distinto formato, e incluso hay sistemas que no tienen memoria de video. Esto es una particularidad del sistema, y en cada sistema es distinto.

    • @josebenavidesg
      @josebenavidesg 4 ปีที่แล้ว +1

      @@ProfesorRetroman perfecto, entonces para cada sistema habrá que estudiar su arquitectura.(claro una vez dominado este, step by step)

  • @1258thor
    @1258thor 2 ปีที่แล้ว +1

    Una duda que será un tontería pero no le encuentro la solución. Si el Amstrad y un ZX Spectrum llevan el.mismo procesador¿por que el direccionamiento de la memoria es distinto?

    • @ProfesorRetroman
      @ProfesorRetroman  2 ปีที่แล้ว +1

      A qué te refieres con que es distinto el direccionamiento? El direccionamiento es cosa de la CPU, eso no cambia si no usas otra CPU. Lo que quizá quieras decir es el uso que el sistema hace de la memoria. Y matizo bien, el sistema, no la CPU, porque es el sistema entero de la máquina, el que engloba un diseño de cómo usar la memoria y para qué. Eso ya es algo que depende de los chips de apoyo, que son distintos, y del firmware, que también es distinto. Tienen la misma CPU, pero el resto del sistema es diferente:)

    • @1258thor
      @1258thor 2 ปีที่แล้ว +1

      @@ProfesorRetroman A direccionamiento de la memoria de video me quiero referir a que la memoria de video en Amstrad empieza en #C000, sin embargo en Spectrium no pieza en esa dirección