Foto de perfil de AgusQuartz agusquartz
← Volver al inicio
ASM 8086 · emu8086 · Low Level Game

Simon Says ASM

Juego de memoria desarrollado en Assembly 8086 para emu8086. El proyecto recrea la dinámica de Simon Dice con interfaz en modo texto, regiones coloreadas mediante servicios de video BIOS INT 10h, mouse, niveles, dificultad progresiva, puntaje y pantallas completas de victoria o derrota.

Proyecto

Qué demuestra

No es solo un juego: es una muestra de control de hardware virtual, flujo de ejecución, estado de juego y UI sin librerías modernas.

🎮
Gameplay

Secuencias de memoria

El programa genera una secuencia de colores, la muestra al jugador y valida cada click contra la posición esperada en la ronda.

🖱️
Input

Interacción con mouse

Detecta clicks y coordenadas para decidir si el usuario presionó el cuadrante gris, azul, rojo o verde.

🧩
State

Niveles y dificultad

Maneja puntaje, nivel, dificultad fácil/media/difícil y un modo automático que ajusta la velocidad durante la partida.

Bajo nivel

Highlights técnicos

El valor del proyecto está en resolver una experiencia interactiva usando recursos muy cercanos al sistema, priorizando modo texto por rendimiento frente al dibujo gráfico pixel-by-pixel en emu8086.

Interrupciones del sistema

Usa servicios BIOS y DOS para construir la pantalla en modo texto, mover cursor, imprimir texto, leer tiempo, esperar y controlar mouse.

INT 10hINT 21hINT 33hINT 15h

Macros reutilizables

Define macros para pintar regiones, mover cursor e imprimir caracteres repetidos, reduciendo repetición en las pantallas.

paintmovecursorprint

UI en modo texto

Construye pantallas completas en modo texto con rectángulos de color, mensajes centrados, carga visual, menú de dificultad y tablero del juego, evitando dibujar píxel por píxel en modo gráfico.

Text Mode UIColor AttributesBIOS INT 10h

Generación pseudoaleatoria

Construye secuencias usando tiempo, semillas y operaciones aritméticas para producir valores que representan colores.

SeedsModuloArraysGame Loop
Código

Fragmento representativo

Las macros muestran cómo se abstraen operaciones repetidas de la interfaz en modo texto: pintar regiones, mover el cursor y reutilizar servicios de video BIOS sin dibujar píxeles individualmente.

text-mode-macros.asm8086
paint macro x1, y1, x2, y2, color
    mov al, 0d
    mov ah, 06h
    mov bh, color
    mov ch, y1
    mov cl, x1
    mov dh, y2
    mov dl, x2
    int 10h
endm

movecursor macro x, y
    mov ah, 02h
    mov bh, 0d
    mov dh, y
    mov dl, x
    int 10h
endm
Reflexión

Qué aprendí construyéndolo

Diseñar con restricciones

Crear una interfaz jugable sin HTML, CSS, canvas ni librerías obliga a pensar en coordenadas de modo texto, regiones, atributos de color y flujo de pantalla.

Controlar estado manualmente

El juego exige administrar arrays, índices, dificultad, secuencias, intentos, puntaje y reinicio sin estructuras de alto nivel.

Escribir código mantenible en ASM

El siguiente paso sería extraer constantes con EQU, ordenar mejor las rutinas y cuidar más la simetría entre push/pop para robustez.