# Aventures en Egipte

<p align="center">
  <img src="https://jailgames.sustancia.synology.me/games/aee/cover.png" alt="Cover" width="480" />
</p>

**Aventures en Egipte** (Adventures in Egypt) és un joc retro 2D on Sam s'endinsa en les tombes egípcies per descobrir els tresors amagats dins de les piràmides. Hauràs de travessar diverses cambres esquivant mòmies i criatures que vigilen cada zona.

- **Versió original:** 1.1 (3 de març del 2000), escrita en Pascal per **JailDesigner**
- **Reconstrucció 2025:** C++20 amb SDL3, per **JailDoctor**
- **Gènere:** Aventura / Acció — un jugador

Més informació i captures: [jailgames.sustancia.synology.me/game/aee](https://jailgames.sustancia.synology.me/game/aee/)

## Captures

<p align="center">
  <img src="https://jailgames.sustancia.synology.me/games/aee/screenshot-1.png" alt="Screenshot 1" width="320" />
  <img src="https://jailgames.sustancia.synology.me/games/aee/screenshot-2.png" alt="Screenshot 2" width="320" />
  <img src="https://jailgames.sustancia.synology.me/games/aee/screenshot-3.png" alt="Screenshot 3" width="320" />
</p>

## Característiques tècniques

- Renderitzador software paletitzat de 8 bits (320×200, 256 colors) — el motor original "Jail"
- Backend de presentació modern amb **SDL3GPU** (Vulkan/Metal) i shaders GLSL compilats a SPIR-V
- Efectes PostFX i CRT-Pi amb presets configurables (CRT, NTSC, scanlines, corbatura, etc.)
- Supersampling (3×/6×/9×) amb downscaling Lanczos
- Aspect ratio commutable: píxels quadrats ↔ 4:3 CRT
- Àudio mesclat en temps real amb **JailAudio** (OGG via stb_vorbis, WAV)
- Arquitectura d'emulador: fil del joc independent del fil de presentació a 60 FPS
- Overlay amb notificacions, informació de render i fonts bitmap UTF-8

## Compilació

Dependències: SDL3, CMake ≥ 3.10, compilador C++20. Si `glslc` està disponible, els shaders es compilen a SPIR-V automàticament; en cas contrari s'usen els precompilats.

```bash
# Linux
cmake -B build
cmake --build build

# Windows (MinGW)
cmake -B build -G "MinGW Makefiles"
cmake --build build
```

L'executable es genera a l'arrel del projecte. La carpeta `data/` ha d'estar al directori de treball quan s'executa.

## Controls

### Joc
Controls originals del joc (teclat). Consulta `config.yaml` per a la configuració.

### Presentació (tecles de funció)

| Tecla | Acció |
|-------|-------|
| F1 / F2 | Reduir / augmentar el zoom de la finestra |
| F3 | Alternar pantalla completa |
| F4 | Activar / desactivar shaders |
| F5 | Alternar aspect ratio (quadrat ↔ 4:3 CRT) |
| F6 | Alternar supersampling |
| F7 | Canviar tipus de shader (PostFX ↔ CRT-Pi) |
| F8 | Canviar preset de shader |
| F9 | Alternar filtre d'estirament (nearest ↔ linear) |
| F10 | Cicle d'informació de render (off → dalt → baix) |
| ESC | Doble pulsació per eixir |

Totes les tecles són reconfigurables des del fitxer de configuració.

## Configuració

Els fitxers de configuració es guarden a `~/.config/jailgames/aee/`:

| Fitxer | Contingut |
|--------|-----------|
| `config.yaml` | Configuració general (vídeo, àudio, finestra, tecles) |
| `postfx.yaml` | Presets del shader PostFX (CRT, NTSC, CURVED, SCANLINES, SUBTLE, CRT LIVE) |
| `crtpi.yaml` | Presets del shader CRT-Pi (DEFAULT, CURVED, SHARP, MINIMAL) |

## Crèdits

- **JailDesigner** — joc original (Pascal, any 2000)
- **JailDoctor** — port i reconstrucció moderna (C++ / SDL3, 2025)

---

<p align="center">JAILGAMES · Fet amb ♥</p>
