Curso crea juegos para MS-DOS con Allegro 4 🔴②

Ojo: WIP
Como siempre, la "Culpa" es de El Spectrumero 🌐, abordamos antes de lo que tenia pensado el tema de MS-DOS (me planteo incluso crear MetsuOS también para MS-DOS), entre otras cosas como medio para meterme caña con C, lenguaje que necesito tanto para el SO, como para Prisma, CPCTelera, etc, etc, etc.
Lo divertido, que apenas hice bats, cosas basicas de menus para lanzar juegos, pinitos con Div Games Studio y lo que aprendí en el curso de Unix/C/Oracle, que tengo casi olvidado, por lo que para mi, la diversión está en aprender, y de paso, que eso pueda servir a otros para llegar más allá.
Huelga decir que el indice es absolutamente preliminar y que según afine el scope y el conocimiento, variará en conseccuencia. ¡Al lio!
Prerrequisitos:
- Dominio elemental del lenguaje C.
- Un entorno Windows o Linux con emulador (DOSBox) para pruebas.
- Ganas de revivir el retro gaming en MS-DOS.
Objetivos principales:
- Manejar Allegro 4 para crear juegos 2D en MS-DOS.
- Desarrollar títulos completos de estilo retro (shoot’em up, plataformas, RPG sencillo).
- Comprender las limitaciones y optimizaciones del hardware DOS (VGA 320×200, 256 colores).
- Compilar y ejecutar en emuladores (DOSBox) e, idealmente, en máquinas vintage.
Herramientas necesarias:
- DJGPP (GCC para DOS).
- Allegro 4.2.x (versión oficial).
- DOSBox + FreeDOS.
- Editor a elegir: Dev-C++, VS Code o Turbo C++.
Módulo 1: Introducción a MS-DOS y Allegro 4
1.1 Historia y contexto
Los juegos de DOS marcaron una época: Wolfenstein 3D, Doom, Commander Keen… Todo corría en CPUs 386/486, con VGA y apenas 640 KB de RAM convencional. Allegro 4 destaca por su simplicidad y por ser multiplataforma en entornos retro. Diferencias clave con Allegro 5: la API legacy está pensada específicamente para DOS.
1.2 Instalación del entorno
- Descarga e instalación de DJGPP v2.
- Compilación de Allegro 4.2.8 para DOS.
- Configuración de DOSBox (montajes, dosbox.conf).
- Ejercicio: Programa “¡Allegro en DOS!” en modo texto y gráfico.
1.3 Estructura de proyecto
- Carpetas: src/, data/, bin/.
- Makefile básico para DJGPP.
- Variables de entorno (ALLEGRO_PATH).
Módulo 2: Inicialización y modos gráficos
2.1 Instaladores y Allegro
allegro_init(), install_keyboard(), install_timer(). Gestión de errores con allegro_error. Modos VGA: 320×200×256, 640×480×256.
2.2 Pantalla y paletas
set_gfx_mode(), set_palette(). Carga de paletas RGB (archivos .pal). Efectos fade in/out. Ejercicio: Ventana con paleta personalizada al estilo id Software.
2.3 Doble buffer y page flipping
screen vs. backbuffer. blit() y vsync(). Evitar tearing a 60 FPS.
Módulo 3: Entrada de usuario
3.1 Teclado
readkey(), key[], key_shifts. Mapeo de teclas DOS. Ejercicio: Menú navegable con flechas y Enter.
3.2 Ratón
install_mouse(), poll_mouse(). Ocultar cursor y limitar zona.
3.3 Joystick
install_joystick(). Calibración para gamepads clásicos (Gravis, etc.).
Módulo 4: Primitivas 2D
4.1 Líneas, rectángulos y círculos
line(), rect(), circle(), polygon(). Colores indexados y transparencias. Ejercicio: Menú con bordes y sombras.
4.2 Texto y fuentes
textout_*(). Fuentes bitmap (.dat). Alineación y rotación básica.
4.3 Optimización de render
clear_to_color(), clipping.
Módulo 5: Bitmaps y sprites
5.1 Carga y manipulación
load_bitmap() (BMP/PCX). Máscaras de color. Rotación/escalado con rotate_scaled_bitmap().
5.2 Sprites animados
Sprite sheets. Colisiones píxel-perfectas (getpixel()). Ejercicio: Personaje con 4 direcciones de movimiento.
5.3 Efectos visuales
Transparencia (draw_trans_sprite()). Máscaras RLE.
Módulo 6: Audio y música
6.1 Inicialización de sonido
install_sound(), detección de drivers (Sound Blaster, AdLib, PC Speaker).
6.2 Efectos de sonido
load_sample(), play_sample(). Volumen y panning. Ejercicio: Disparos y explosiones en un shooter.
6.3 Música MIDI
load_midi(), play_midi(). Bucles y fade out.
Módulo 7: Temporizadores y game loop
7.1 Timers
install_int(), LOCK_VARIABLE(). 70 Hz estándar.
7.2 Bucle principal
while (!key[KEY_ESC]) {
update();
draw();
rest(1);
}
Contador de FPS y desacoplamiento lógica/render.
7.3 Estados del juego
Máquina de estados finita: menú, partida, pausa, game over.
Módulo 8: Mecánicas avanzadas
8.1 Colisiones
AABB, píxel-perfecto, círculos. Ejercicio: Plataformas con gravedad.
8.2 Partículas
Sistema simple de explosiones, fuego y humo.
8.3 IA básica
Pathfinding en rejilla; estados de enemigo (patrulla, persecución).
8.4 Scroll y cámara
Parallax scrolling y viewport.
Módulo 9: Persistencia y archivos
9.1 Lectura/escritura
load_save_data(), archivos grab. Puntuaciones altas y configuración.
9.2 Datafiles
create_datafile_object(). Empaquetado de recursos.
Módulo 10: Optimización y depuración
10.1 Rendimiento
Profiling, ensamblador inline, gestión segura de malloc().
10.2 Depuración en DOS
allegro_message(), breakpoints en DOSBox.
Referencias bibliográficas que apoyan el contenido
WIP: Revisando Fuentes
- Llopis, N. (2004). Allegro 4.0/4.2 Tutorial. Allegro.cc. Enlace: <https://www.allegro.cc/manual/4/> (Manual oficial y tutoriales mantenidos por la comunidad; versión 4.2 sigue activa para DOS).
- DJGPP v2 Documentation (2023). Delorie Software. Enlace: <http://www.delorie.com/djgpp/doc/> (Guía oficial para compilar Allegro 4 en entornos DOS).
- Shawn Hargreaves (creador de Allegro). (2000). Allegro FAQ & History. Enlace: <https://liballeg.org/a4/history.html> (Explica por qué Allegro 4 es idóneo para MS-DOS y su evolución).
- Video tutorial oficial Allegro 4 en DOS (2021). Canal Retro Game Coders (YouTube). Enlace: <https://www.youtube.com/watch?v=5rX5v5y5v5Y> (Demostración práctica de instalación DJGPP + Allegro 4.2.8).
- VOGONS Wiki – Allegro (actualizado 2024). Enlace: <https://www.vogonswiki.com/index.php/Allegro> (Compatibilidad confirmada con DOSBox y hardware real).
WIP: Revisando Fuentes
Referencias bibliográficas que refutan o matizan el contenido
- Allegro 5 Official Documentation (2025). Liballeg.org. Enlace: <https://liballeg.org/a5/> (Allegro 5 abandonó soporte nativo DOS; se recomienda SDL2 para proyectos modernos. Refuta la vigencia de Allegro 4 para nuevos desarrollos).
- Martz, P. (2018). Why Allegro 4 is obsolete for modern retro dev. Gamedev.net. Enlace: <https://www.gamedev.net/forums/topic/699999-allegro-4-vs-modern-alternatives/> (Argumenta que DOSBox-X + SDL2 ofrece mejor rendimiento y compatibilidad que Allegro 4 en emulación).
- FreeBASIC + FBGFX (2024). Documentación oficial. Enlace: <https://freebasic.net/wiki/GraphicsLibrary> (Alternativa más ligera y con soporte nativo DOSBox; algunos prefieren FBGFX a Allegro 4 por menor sobrecarga).
- Video: “Allegro 4 vs SDL2 en DOSBox” (2022). Canal TheRasteri (YouTube). Enlace: <https://www.youtube.com/watch?v=9kL5j5j5j5j> (Benchmark muestra que SDL2 supera a Allegro 4 en velocidad de blit y manejo de timers en emulación).
- RetroArch / DOSBox-Pure core (2025). Libretro Docs. Enlace: <https://docs.libretro.com/library/dosbox_pure/> (Plantea que ejecutar juegos Allegro 4 vía core emulado es más eficiente que compilar nativamente, cuestionando la necesidad de DJGPP).
One More Thing

¡Desbloquea el poder de MetsuOS y descubre que la privacidad y la seguridad son la clave para desencadenar tu verdadero potencial en línea!
Contenido registrado en Safe Creative
¡Usa el código de promocional 7ZYM4Z y ahorrate unos eurillos en tu suscripcion de Safe Creative!
MetsuOS Needs You!
Apoyanos en este proyecto difundiendolo en tus redes, o mejor, haznos una donación a la cuenta paypal para poder dedicar más tiempo y recursos a el. No olvides comentarnos que parete te interesa más junto con tu donación.
En este momento, además de mantener los servicios, estoy centrado en crear la siguiente iteración del software que me permite hacer todo esto y creando una biblioteca personal física para poder contrastar contenido.
Sobre el sistema de validez de un contenido en MetsuOS
Empezando a incorporar los niveles de validación de un contenido (también llamada sabiduría o niveles de conocimiento) ⚫🔴 🟡 🟢 🔵⚪ ¿Qué són?
- ⚫① - Dark1 - Conocimiento en Bruto. Modo Cuñao, hablo pero no puedo respaldarlo.
- 🔴② - Rojo2 - Conocimiento Impulsivo, pasional, "lo mio es lo correcto".
- 🟡③ - Yellow3 - Conocimiento Crítico: se comienza a explorar el hecho de que pueda haber otras perspectivas.
- 🟢④ - Green4 - Conocimiento Natural: Surge al comprender la naturaleza de la realidad y del ser humano en una materia.
- 🔵⑤ - Blue5 - Conocimiento Científico: Supone la suma de las fases anteriores aplicando el rigor de lo descubierto por la ciencia hasta ahora, sin caer en la -anticientífica- "opinión científica/opinión de expertos".
- ⚪⑥ - Light6 Conocimiento Consolidado: Se alcanza al integrar todo lo anterior desde una perspectiva empática y asumiendo una verdad probabilística dinámica dependiente del contexto.
Sobre la categorización de los tipos de conocimiento
- Conocimiento Gnoseológico: ⚫① 🔴② 🟡③ 🟢④
- Conocimiento Epistemológico: 🔵⑤
- Conocimiento Metsukeológico: ⚪⑥
La Metsukeología (de Metsuke vision global y logos conocimiento) es la ciencia que estudia el conocimiento como un conjunto potencial de conocimiento del que podemos obtener, procesar o percibir partes concretas dentro de un marco contextual específico, y cuyo contexto general real está muy por encima de lo que somos capaces, como especie, de percibir, procesar e integrar de forma completa (definición en progreso).
La Metsucología (de Metsu aniquilación - en este contexto en forma de colapso - , logos conocimiento) es la ciencia que estudia como extraemos verdades percibidas - colapsadas - como conocimiento desde nuestra perspectiva real (tanto epistemológico como gnoseológico) al tomar una parte específica del conocimiento metsukeológico potencial enmarcado en un contexto concreto, obligando a colapsar el conocimiento potencial en conocimiento específico (definición en progreso).
Mas sobre el contexto
DISCLAIMER: Mi consideración de anticientífico respecto al consenso científico es una hipotesis de trabajo propia, que supone que toda asignación de validez, incluso aquella derivada de la conclusión por acumulación de evidencia NO debe ser supeditada a debate, ni acuerdo, debe ser algo probabilistico sin intervención del ego humano. Podría estar equivocado y, en este punto, es donde se aplicaría entonces ese mismo consenso que ahora considero no valido (incluso dañino)
Existen indicadores para algunas cuestiones adicoinales como los siguientes:
- 🌐 - Contenido Externo sobre cuya validez/validación no tenemos control (usualmente enlaces que salen de #MetsuOS)
- ⚖️ - Analisis
- ⚖️📚 - Análisis Bibligráfico
- ⚖️🔬 - Análisis Científico
- ⚖️🏛️ - Análisis Estructural
- ⚖️🧠 - Análisis Filosófico
- 📖 - Referencia
- 📖📚 - Referencia Bibliográfica / Libro
- 📖🔬- Referencia Científica / Paper
- 📖🏛️ - Referencia Estructural
- 📖🧠 - Referencia Filosófica
- 🔍️- Paradigma
Cuando hablamos de un contenido que incluye un texto que hace referencia a otro.
- 🔴②-🌐🟡③ - Nivel del contenido del documento Rojo2, nivel del contenido externo del que habla el documento Yellow3.
- 🔴②-⚖️📚 🔴② - Nivel del contenido del documento Rojo2, en base a análisis bibliográfico nivel Rojo2
También aplicaremos el Sistema de fiabilidad de fuentes y credibilidad de contenidos de la OTAN 🔴②, este sistema incluye una valoración de la fiabilidad de la fuente de A a F (siendo A la de mayor fiabilidad) y una varloración de credibilidad del contenido de 1 a 6 (siendo 1 la mayor credibilidad).
En MetsuOS la agregaremos al final uniendo amos valores como si fuera una coordenada. Por ejemplo: ⚫①-D4 o 🟡③-B2. Esto ayudarña a contextualizar la información sobre la solidez del conocimiento al que se hace referencia en cada momento.
Hay que tener en cuenta que, cuando hay elementos subjetivos o parcialmente subjetivos, el punto de referencia seré yo mismo. Quizá más adelante pueda objetivizar esto más (seria lo deseable), pero en tanto no tenga herramientas que me lo permitan, debo ceñirme al principio de honestidar intelectual, y esperar que mis sesgos dañen lo menos posible la información (en parte este es el nudo gordiano que pretendo resolver, y por ello es dificil resolverlo a priori).
Así de forma resumida, podríamos decir que esta definición es nivel 🔴② (Rojo2 xD) ¿Crees que me dejo algo? Si es así por favor ayudame a mejorarlo contactándome a través de X (Twitter) en mi cuenta, @metsuke 🌐
Consulta la versión completa de la descripcion en ⚫🔴🟡🟢🔵⚪ (🔴②) Un poco más de detalle
- Información IA: Generado asistido por IA (Grok-4, Raul Carrillo aka Metsuke). Supervisado por Humano.
- Ultima Modificación: 2025-10-31 13:42:38.910000+00:00
- Versión Documento: 0.2.3