C y Ensamblador desde 0: ¿Cómo se pinta un sprite? (CPU, RAM, programas, registros, funciones y +)

Описание к видео C y Ensamblador desde 0: ¿Cómo se pinta un sprite? (CPU, RAM, programas, registros, funciones y +)

==== Episodio 1 - 12/ago/2022 ==== [ Todos: https://bit.ly/C-ASM_desde0 ]
En este episodio aprendemos a pintar sprites para un Mini-Shooter: un videojuego simple con 2 naves y un disparo. Lo hacemos en C y Ensamblador usando CPCtelera para Amstrad CPC. Usar 2 lenguajes nos da 2 ejemplos de cómo programar para entender mejor todo el proceso: ambos puntos de vista se complementan.

Descarga los materiales: los links están al final de esta descripción.

Explicando las bases de la programación en C y Ensamblador: la CPU y el código máquina, qué es un programa y cómo funciona exactamente. Aprovechamos para entender que los ordenadores sólo hacen 3 operaciones distintas: Leer datos, almacenar datos y calcular (realizar operaciones matemáticas sobre los datos). Sólo con eso, más instrucciones para cambiar el orden de ejecución del programa (saltos condicionales) podemos hacer absolutamente todo. Con este conocimiento podremos entender mejor los programas que hagamos en C, Ensamblador y cualquier otro lenguaje. Entremedias resolvemos una duda respecto a qué es el Stack (la pila) de programa y dónde está (en la RAM). Y con esto explicamos también que todos los datos que nuestros programas almacenan y leen sólo pueden estar en 2 sitios: la RAM y los registros de la CPU. También resolvemos una duda sencilla sobre qué son lvalues y rvalues.

¿Aprender C y Ensamblador desde 0 haciendo videojuegos? Esta es tu serie.
Explicamos paso a paso:
* Cómo funciona la CPU, RAM, el código máquina y los programas
* Cómo se traducen C y Ensamblador a código máquina (compilador, ensamblador y linker)
* Cómo crear un proyecto de CPCtelera 1.5
* La asignación como operación más importante del lenguaje C
* Cómo convertir sprites desde PNG a datos para Amstrad, en sus distintos modos
* Cómo dibujar sprites

Y aprovechamos para resolver diversas dudas interesantes, y ver funciones de CPCtelera como cpct_disableFirmware, cpct_setVideoMode, cpct_setPalette, cpct_drawSprite y cpct_getScreenPtr. También vemos las instrucciones de ensamblador LD, CALL, JR, EX y PUSH. Vemos algunos tipos de datos básicos en C, y cosas como qué son extern, const y arrays. Explicamos qué son las macros, cómo funciona include y para qué se usan los ficheros de cabecera (.h). Revisamos cómo funciona la memoria de vídeo en Amstrad y cómo pintar un sprite con ello.

==== Fé de erratas ====
- Minuto 43:20 Los valores hexadecimales correctos son F9, 96, 96, F9 (Gracias José García Pérez)

==== Contenidos ====
0:00:00 Bienvenida
0:01:50 Índice de contenidos y resumen
0:02:57 CPCtelera: descarga preinstalada para VirtualBox
0:05:02 CPCtelera: cómo empezar un nuevo proyecto
0:10:53 Qué es un programa: el código máquina, la CPU y la RAM
0:19:50 Sólo hay 3 operaciones: Almacenar, leer y calcular
0:24:00 Lenguaje C: asignaciones y expresiones, lo más importante
0:30:22 ¿Cómo se pintan los sprites?: desde PNG a píxeles, el proceso completo
0:32:10 Compilación, ensamblado, linkado y carga: del PC a la RAM del Amstrad
0:40:58 Cómo se pintan los sprites: desde PNG a píxeles, el proceso completo
0:54:30 CPCtelera: cómo convertir sprites en PNG a arrays de datos en C
0:58:24 CPCtelera: macros y comandos de conversión de sprites y tiles (Makefile)
1:10:48 Lenguaje C: función main, punto de entrada del programa
1:11:33 Inicialización del Amstrad: firmware, modo de vídeo, paleta y borde
1:21:17 CPCtelera: Pintar un sprite en C
1:27:35 Variables y punteros en C: Almacenar una dirección de memoria calculada
1:33:10 Lenguaje C: El tipo de un puntero se refiere a los datos a los que apunta
1:40:19 Ensamblador Z80: Crear un programa inicial
1:44:33 Ensamblador Z80: Inicialización del CPC. Firmware, modo de vídeo, paleta y borde
1:59:06 Ensamblador Z80: Calcular dirección de memoria de vídeo para dibujar un sprite
2:05:12 Ensamblador Z80: Dibujar un sprite
2:10:58 ¿Es mejor nuestro código ensamblador o el del compilador? Comparando resultados
2:19:03 Convertir colores de un PNG a la paleta de Amstrad CPC
2:22:22 Cómo descargar la máquina virtual de CPCtelera preinstalada
2:24:05 Resumen del siguiente episodio y despedida

Utilizamos la máquina virtual de VirtualBox de CPCtelera 1.5 ( https://archive.org/details/CPCtelera... ),con esta configuración:
-Linux Manjaro XFCE 5.15.19-1 x86_64
-CPCtelera 1.5 dev (06/02/2022)
-Visual Studio Code 1.64.0
-RGAS 1.2.5
-GCC 11.1.0
-clang 13.0.0

=== Asset Licenses & Links ===
- VirtualBox ( https://www.virtualbox.org/ )
- CPCtelera preinstalada VirtualBox ( https://archive.org/details/CPCtelera... )
- Space Shooter Asset Pack by Chasergaming (CC-BY-SA 4.0, https://chasersgaming.itch.io/asset-p... )
- Music by McKlain (   / mcklain   )
- - Galactic Tomb. Level 1. Pherenos (   / galactic-tomb-level-1-pherenos   )
- - La Guerra de Gamber - Menu Theme ( https://mcklain.bandcamp.com/track/la... )

#GameDev #programming #Amstrad #Coding #CPCtelera

Комментарии

Информация по комментариям в разработке