https://github.com/mateo-velasquez/laberinto
Project developed during the sixth semester of the Systems Engineering program at the Catholic University of Córdoba. It consists of a maze programmed in Assembly for a Raspberry Pi 3B+ running without an operating system, as part of the course Computer Architecture II.
https://github.com/mateo-velasquez/laberinto
assembly raspberry-pi-3
Last synced: about 1 month ago
JSON representation
Project developed during the sixth semester of the Systems Engineering program at the Catholic University of Córdoba. It consists of a maze programmed in Assembly for a Raspberry Pi 3B+ running without an operating system, as part of the course Computer Architecture II.
- Host: GitHub
- URL: https://github.com/mateo-velasquez/laberinto
- Owner: mateo-velasquez
- License: mit
- Created: 2025-03-22T20:39:22.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-18T16:25:46.000Z (about 1 year ago)
- Last Synced: 2025-07-12T22:33:26.529Z (12 months ago)
- Topics: assembly, raspberry-pi-3
- Language: Assembly
- Homepage:
- Size: 8.44 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Maze Game – Bare Metal Assembly on Raspberry Pi 3B+
This repository contains a low-level game project developed during the **sixth semester** of the **Systems Engineering** program at the **Catholic University of Córdoba**, for the course **Computer Architecture II**, taught by **Agustín Miguel Laprovitta**.
---
## 🧠 Project Description
The goal of this project was to design and program a maze-style game entirely in **pure Assembly**, running **bare-metal** on a **Raspberry Pi 3B+** — that is, **without an operating system**.
This project allowed me to work directly with the **kernel**, manage hardware-level input/output, and explore how software interacts closely with physical devices.
---
## 🕹️ How the Game Works
- The player navigates a maze with a goal to reach the **green tile** to win.
- If the player steps on a **mine**, the game ends in defeat.
- The game handles **input controls**, **state management**, and **visual transitions** between win/loss conditions entirely through Assembly code.
---
## 🖼️ Game States Overview
Here are screenshots of the different states of the game at both the **visual** and **control** levels.
### 🔵 Game Start
- **Start screen**: Visual layout before gameplay begins.
- **Control setup**: Button mappings and instructions.
| Screen | Controls |
|--------|----------|
|  |  |
---
### ✅ Victory Condition
- When the player reaches the **green tile**, the victory screen is displayed.
| Screen | Controls |
|--------|----------|
|  |  |
---
### ❌ Defeat Condition
- Stepping on a **mine** results in defeat.
| Screen | Controls |
|--------|----------|
|  |  |
---
## 💡 Key Learning Outcome
This project provided me with a deep understanding of **bare-metal programming**, **low-level hardware control**, and how to develop interactive software without relying on operating systems or high-level abstractions.
I also learned how to debug at the hardware level, structure an Assembly project, and manage device input/output directly via registers.
---
## ⚙️ Technologies Used
- **Assembly (ARMv8)**
- **Raspberry Pi 3B+**
- Bare-metal programming (no OS)
- Custom kernel logic
---