# Fuentes de recursos gráficos, tipográficos y de audio

## 0. Referencia analizada (no copiada): DailyRed

En `Recursos/dailyred-main/` se estudió el proyecto DailyRed (batalla diaria contra
Rojo en el navegador): pantalla GBA 240×160 a 3× (720×480) con `aspect-ratio: 3/2`,
cruceta táctil con deslizamiento, botones A/B/Select/Start, pantalla completa,
guía de teclado y pie de licencias. De ahí se adoptan los PATRONES de presentación
(consola con bisel, pad por eventos de puntero, `requestFullscreen` en la consola,
evitar scroll con flechas/espacio, quitar foco a los botones) reescritos con código
propio; el motor y los datos del juego siguen siendo los de este proyecto. La cumbre
abierta con escaleras y Rojo al borde mirando al vacío también sigue esa referencia
(Navel Rock; el overworld por tiles se eliminó al pasar al formato diario).

Este documento declara el origen de cada recurso visual/sonoro del proyecto,
conforme a la prioridad 1.9 (no incorporar material con copyright sin comprobar
licencia; no sustituir sprites por emojis; no falsear el origen).

## 1. Pixel art original del proyecto (creado por código, sin archivos externos)

- Retrato VS de Rojo (`drawRedBust` en `js/ui/battleview.js`) y escena de batalla en canvas:
  100% ORIGINAL (inspirado en Rojo Fuego, trazado propio; los Pokémon son los reales del punto 3).
- Silueta de reserva (`fallbackURL` en `js/ui/battleview.js`): procedural, solo si
  falla local + remoto + volteado. ORIGINAL.
- Escenario y paneles de combate (canvas en `js/ui/battleview.js`): fondo con
  horizonte, plataformas elípticas, cajas PS, diálogos, banners. ORIGINAL
  (inspirado en Rojo Fuego, trazado propio; los Pokémon son los reales del punto 3).
- Música y efectos: chiptune procedural WebAudio (`js/ui/app.js`). ORIGINAL.

## 2. Fuente pixelada vendored (OFL, verificable offline)

- `assets/fonts/pressstart2p-400.ttf`: Press Start 2P,
  SIL Open Font License 1.1 (https://scripts.sil.org/OFL), de Google Fonts
  (https://github.com/google/fonts/tree/main/ofl/pressstart2p). Arcade clásica:
  letras y dígitos 0/6/8/9 muy distinguibles a los tamaños del canvas de
  combate (nombres, niveles, PS, daño y mensajes). Atribución aquí y en el pie
  de página. Si la fuente falla, el canvas y la UI caen a `monospace`.
- (Legado) `pixelify-sans-400.ttf` / `pixelify-sans-700.ttf`: Pixelify Sans, OFL,
  la primera fuente (Silkscreen se probó y descartó sin conservar ficheros).
  Se conserva Pixelify en el repo pero ya no se referencia.

## 3. Sprites de Pokémon REALES vendored (sin internet, sin siluetas)

- `assets/sprites/front/*.png` + `back/*.png` (1902 PNG válidos, 1.7 MB) + `manifest.json`,
  descargados con `tools/fetch_sprites.py` desde
  [PokeAPI/sprites](https://github.com/PokeAPI/sprites) (© Nintendo / Creatures
  Inc. / GAME FREAK inc.; juego de fans gratuito y educativo, con atribución).
- Origen por generación (elegido por fidelidad pixel art FRLG):
  Gen I-III = `firered-leafgreen` (344, píxeles reales de Rojo Fuego),
  Gen IV = `platinum` (96), Gen V = `black-white` (155),
  Gen VI-IX = renders oficiales `sprites/pokemon/{id}.png` + `back/{id}.png` (356,
  no existe pixel art oficial de esas generaciones).
- `js/data/sprites_manifest.js` (`window.SPRITE_MANIFEST`) mapea cada especie a
  su ruta local + URL remota de reserva (la MISMA imagen) + caja de contenido
  (`tools/measure_sprites.py`: 1895 ajustadas) para anclar la base al suelo.
- Retrato del menú: `assets/red-hero.png` (aportado) + `assets/red-hero-keyed.png`
  generado con `tools/build_hero.py` (fondo recortado por inundación, con
  transparencia real).
- Telón de la intro VS: `assets/animacion-rojo.jpg` (aportado, tal cual, sin
  procesar; reserva procedural si falta). `assets/red-bust.png` (Rojo de cuerpo
  entero para el momento previo al envío) generado con `tools/build_bust.py`
  desde `assets/animacion-hero.jpg` (aportado).
- Fondos de combate: `assets/terrenos/lava.jpg`, `montaña.jpg`, `nieve.jpg`
  (aportados, tal cual, con sus plataformas pintadas; rotan por día). Reserva
  procedural si falta alguna foto.
- Sobres del draft: `assets/sobre.jpg` + `assets/sobreroto.jpg` (aportados)
  recortados al arte y con fondo transparente (`sobre-crop.png` y
  `sobreroto-crop.png`, lo que se muestra) con `tools/build_packs.py`.
- Icono de mega: `assets/megapiedra.png` (aportado, sprite con alfa) dibujado
  a 16 px (escala entera 5:1) en la insignia.
- Peligros: `assets/roca.jpg`, `assets/pua.jpg`, `assets/pua-toxica.jpg` y
  `assets/red.jpg` (aportados, pixel art sobre fondo de cuadros) recortados
  con alfa real (`assets/hz-rock.png`, `hz-spk.png`, `hz-tsp.png` de ~64 px
  y `hz-web.png` de 220 px, lo que se muestra) con `tools/build_hazards.py`.
- Megas: datos (stats/tipos/habilidad oficiales) de PokeAPI y sprites
  `assets/sprites/mega/` (43 formas, renders oficiales Gen VI como el resto)
  vendored con `tools/fetch_megas.py` → `js/data/mega_data.js`.
- Sprites: los ~1990 PNG sueltos (`front/`, `back/`, `mega/`) se empaquetan en
  8 atlas (`assets/atlases/a0..a7.png`, celdas de 96 px) con
  `tools/build_atlases.py` → `js/data/atlas_index.js` (mismas claves que
  usaba la carga por fichero). Los sueltos no viajan en el ZIP de itch.io
  (límite de 1000 ficheros); el manifiesto original se conserva en repo.
- Cadena en `js/ui/battleview.js`: local → remoto oficial → frontal volteado
  (trasero ausente) → silueta procedural (última reserva, casi nunca se ve).
- Sprites de entrenadores: PokeAPI/sprites no los distribuye (verificado: sin carpeta
  `trainers`); el retrato de Rojo es pixel art original (punto 1).

### Vía emulador GBA descartada (evaluación honesta de DailyRed, `Recursos/dailyred-main`)

Se estudió ejecutar el Rojo Fuego real con mGBA+WASM como hace DailyRed y se descartó por:
1. Compilar pret/pokefirered exige `baserom.gba` (volcado propio del cartucho original);
   no hay copia legal disponible en este entorno y no se puede descargar una ROM de Nintendo.
2. Exige toolchain ARM + Node para construir y testear; esta máquina no los tiene.
3. Impondría reglas de Gen III y 386 especies, destruyendo el motor Gen IX + 951 especies exigido.
En su lugar: los mismos píxeles de batalla de FRLG/Platino/N-B vendored (punto 3),
que es lo que el emulador mostraría para esas generaciones.

## 4. Datos (no gráficos)

- Estadísticas, tipos, movimientos, habilidades: [PokéAPI](https://pokeapi.co/)
  (ver `tools/import_pokeapi.py` y `tools/add_moves_gen9.py`).
- Fórmulas y tablas verificadas con Bulbapedia y Serebii (citados en el código).
- Sets competitivos (`js/data/sets_generated.js`, vía `tools/build_sets.py`):
  arquetipos estilo Smogon/Showdown (Setup Sweeper, Choice Breaker, Wall, Tank,
  Hazard Lead, All-Out/Bulky Attacker) generados offline desde los datos ya
  curados: solo movimientos implementados en el motor; fuera los que exigen
  drawbacks no modelados (Giga Impacto y cía.). Estructura y nombres de
  arquetipos, sin copiar sets concretos de nadie.

## 5. Lo que NO se incluye

- No se distribuyen ROMs, ni sprites extraídos de ROMs, ni música de Nintendo.
- No hay Teracristalización ni sprites de Gen IX animados: fuera de alcance declarado.
