Desarrollo de videojuegos en Ensamblador Z80
| Sitio: | Moodle UA 2023-24 |
| Curso: | VIDEOJUEGOS I (21038) |
| Libro: | Desarrollo de videojuegos en Ensamblador Z80 |
| Imprimido por: | , Invitado |
| Día: | sábado, 4 de abril de 2026, 05:56 |
Descripción
Vídeos y material de aprendizaje sobre desarrollo de juegos, modelo Entidad-Componente-Sistema (ECS), programación en Amstrad CPC con CPCtelera y ensamblador Z80
Tabla de contenidos
- 1. Listas de vídeos
- 2. Código máquina y Ensamblador
- 3. C y Ensamblador
- 4. GameEngine en C con CPCtelera
- 5. Videojuego, GameEngine y Técnicas en Ensamblador Z80
- 5.1. Introducción, bases y modelo ECS
- 5.2. Game Design
- 5.3. Sistema Físico
- 5.4. Colisiones
- 5.5. Render: distintas técnicas
- 5.6. Inteligencia Artificial
- 5.7. Animaciones
- 5.8. Técnicas de programación
- 5.9. Mejoras, debug y optimizaciones
- 5.10. Música e Interrupciones
- 5.11. Pantallas de carga, strings y fuentes de texto
- 6. Ingeniería y filosofía de trabajo
1. Listas de vídeos
Listas completas de clases de cursos anteriores
- Curso 2022/23
- Bases: Instrucciones, símbolos, variables, pila, arrays, debugger
- Curso 2021/22
- CPCtelera, desafíos, aprendizaje, arrays, VSYNC, ECS, Componentes, Estrategias de Render, colisione, Game Design
- Curso 2020/21
- Bases de ensamblador, linker, gestión memoria y renderizar sprites a mano. Técnicas de Render: double buffer, tilemap, flickering, scroll, cámara, Interrupciones, raster, música.
- Curso 2019/20
- Arquitectura ECS desde 0. Macros y constantes. IA: Árboles de decisión, abstracción, movimiento, patrullas. Técnicas de render. Animaciones. Colisiones y optimizaciones. Gestión de proyectos. Interrupciones, música y fuentes propias de texto.
- Curso 2018/19
- Micro-GameEngine orientado a objetos. Control por teclado. Macros. Punteros a función. Herencia. Double Buffer. Niveles y tilemaps comprimidos. Cargadores propios de casete.
- Curso 2017/18
- Ensamblador, CPCtelera y movimientos. Saltos con tabla. Teoría de colisiones. Estructuras de datos en ensamblador e IX. Música e interrupciones. Scroll por software y double buffer. Llamar a C desde ensamblador.
2. Código máquina y Ensamblador
2.1. Nivel 0: Introducción
|
1. Introducción
|
2. Estructura
|
|
3. Líneas
|
4. Evaluación
|
2.2. Nivel 1: Sprite en Código Máquina
Para trabajar más cómodo, usa Linux e instala CPCtelera 1.5. Con CPCtelera 1.5. tienes el comando cpct_winape que instala WinAPE automáticamente.
PRÁCTICA
|
P01. Introducción
|
Instalar CPCtelera (y WinAPE)
|
P03. Reto 1.1
|
P04. Jugando con el código
|
|
P05. Paso a Paso
|
P06. Los colores
|
P07. De 2 en 2
|
P08. El formato
|
|
P09. Por la pantalla
|
P10. RETO: Pinta
|
P11. RETO: Memoria de Vídeo
|
P12. DESAFIO: Sprite
|
TEORÍA
|
T1. Ciclo de la CPU
|
T2. Binario
|
T3. Hexadecimal
|
T4. Memoria de Vídeo
|
|
T5. Formato de píxel
|
T6. Distribución Mem.Video
|
T7. Instrucciones Z80
|
2.3. Nivel 2: Animaciones en Código Máquina
PRÁCTICA
|
P1. Introducción
|
P2. RETO: Animar píxeles
|
P3. EJ: Píxel animado
|
|
P4. RETO: En movimiento
|
P5. Repeticiones
|
P6. RETO: A lo grande
|
|
P7. Posiciones variables
|
P8. RETO: Repeticiones
|
P9. DESAFIO: Animación
|
TEORÍA
|
T1. Tiempo, animaciones
|
T2. Monitor: Raster Scan
|
T3. Positivos y negativos
|
|
T4. Repeticiones, bucles
|
T5. Almacenamiento: Variables
|
2.4. Nivel 3: Ensamblador
PRÁCTICA
|
P01. Introducción
|
P02. RETO: Ensambla
|
P03. EJ: Reto 1.1
|
P04. Movimiento
|
|
P05. RETO: Teclado
|
P06. Condicionales 2
|
P07. Pulsaciones
|
P08. Usando variables
|
|
P09. RETO: minijuego
|
P10. RETO: Control
|
P11. DESAFÍO: Videojuego
|
TEORÍA
|
T1. Ensamblador
|
T4. Pila de programa
|
3. C y Ensamblador
Entendiendo C y Ensamblador desde 0. Comprendiendo las bases para poder empezar a programar en ensamblador.
- ¿Cómo se pinta un sprite?
- ¿Cómo se pinta un sprite? CPU, RAM, Registros, Funciones...
- Mover sprites
- Variables, tipos, funciones, const, enum, if...
- Colisiones
- condicionales avanzados, stack, lectura de teclado, geometría...
4.1. ECS Básico
- Starfield Effect (1)
- Teoría ECS, Entity Manager, Inversión de control
- Starfield Effect (2)
- Raster, render, destrucción de entidades, operaciones de bit, debug, timing
4.2. ECS Estándar
- Atari Assault (1)
- Componentes, sprites, conversión PNG, borrado básico, teclado, forall por tipo
- Atari Assault (2)
- Comportamientos IA, Animaciones, Responsabilidades y Game Manager, static, union
- Atari Assault (3)
- Punteros, constantes, inicialización estática, inspección del binario, movimiento de enemigos, gestión del juego, entidades fantasma y borrado, clonado de entidades y ciclo de juego, refactorización, colisiones: teoría y sistema básico
5. Videojuego, GameEngine y Técnicas en Ensamblador Z80
5.1. Introducción, bases y modelo ECS
Curso 2019/20:- [1.2] Ejemplo básico: dibujar y mover un cuadrado
- [1.3] Introducción arquitectura Entity-Component-System
- [1.4] Arquitectura ECS: Implementación básica inicial
- [2.2] Ensamblador, linker, includes y símbolos globales
- [2.3] Gestión automática con macros y constantes
- [3.3] Sistemas físico, input y render
- [1.1] Programando en Hexadecimal
- [1.2] Cómo funcionan Ensamblador y Linker
- [2.3] Cómo se generan los binarios en CPCtelera
- [2.2] Cómo implementar el motor de entidades de un Game Engine
- [2.4] Reservar memoria: ¿Qué es y cómo funciona?
- [3.1] Las instrucciones no son funciones: Entendiendo qué instrucciones son válidas, cuáles no y por qué.
- [3.2] La memoria no se crea ni se destruye: Entendiendo mejor qué es reserva y liberación de memoria.
- [3.3] Cómo crear entidades en el motor ECS básico: Ejemplo de uso de un GameEngine básico ya creado
5.2. Game Design
Curso 2019/20:
Curso 2020/21:
5.4. Colisiones
5.5. Render: distintas técnicas
Curso 2019/20:
- [6.2] Enfrentándose a flickering y tearing: analizando el raster
- [6.3] Técnicas de render y restauración del fondo (1)
- [6.4] Técnicas de render y restauración del fondo (2): XOR, tiles tocados y sprites por partes
- [7.3] Primer dibujado XOR: evitar costes con código automodificable
- [8.4] Entendiendo el dibujado de tilemaps en CPCtelera y colisiones
- [11.2] Compresión de binarios e imágenes en CPCtelera
Curso 2020/21:
- [1.3] Cómo Renderizar Sprites a Mano
- [1.4] Cómo modificar la resolución de pantalla en Amstrad
- [3.4] Cómo renderizar sprites con CPCtelera: ejemplo en sistema de render de motor ECS básico
- [4.1] La memoria de vídeo, destripada: entendiendo el funcionamiento de la memoria de vídeo al detalle
- [4.4] Cómo renderizar sprites a mano en 32x16 (128x128)
- [5.1] Cómo renderizar sprites a mano en 32x16 (128x128) 2ª parte
- [5.2] Cómo borrar el rastro del dibujado: redibujando el color de fondo
- [6.3] Cómo se producen flickering y tearing: entendiendo al detalle el funcionamiento del raster y el dibujado de la pantalla
- [6.4] Cómo implementar double buffer en 16K: usando una pantalla de 32x16 (128x128)
- [7.4] Scroll por software con double buffer en CPCtelera 1.5
-
5.6. Inteligencia Artificial
- [3.4] IA Básica (Teoría): Árboles de Decisión y Niveles de Abstracción
- [3.5] Implementando el sistema de IA básico: Bases del Move-to
- [4.1] Revisión y dudas sobre arquitectura ECS
- [4.2] Revisión sistema de IA básico: teoría e implementación
- [4.3] Sistema de IA: Implementando la acción Move-to
- [5.2] Sistema de IA: Comportamiento Patrol básico (1)
- [5.3] Sistema de IA: Comportamiento Patrol básico (2)
- [6.1] Revisión IA Patrol y ECS
5.7. Animaciones
5.8. Técnicas de programación
Curso 2020/21:
5.9. Mejoras, debug y optimizaciones
5.10. Música e Interrupciones
5.11. Pantallas de carga, strings y fuentes de texto
- [12.2] Pantallas de carga en 3 minutos con CPCtelera
- [12.3] Problemas escribiendo strings y fuentes de texto personalizadas