Add technical report, update docs/README, remove orphaned victory asset
- Add doc/AScreamFromTheDark_report.md: deep technical report covering
architecture, features, historical workarounds and known debt.
- Rewrite README.md to reflect the current 'A Scream from the Dark'
identity (ghost enemy, stamina/jump, fog of war, going-deeper victory)
instead of the stale 'gioco carino' copy with old file paths.
- Update doc/generation.md: goal is now a random south-edge hatch,
not the max-Manhattan-distance portal.
- Remove orphaned src/victory.{c,h} and its include in render.c;
the victory sequence was replaced by the full-screen next_level image.
- Regenerate tracked png2asset outputs to match current build.
This commit is contained in:
@@ -1,89 +1,87 @@
|
||||
# gioco carino (Cute Isometric Game Boy Maze)
|
||||
# A Scream from the Dark
|
||||
|
||||
Un motore isometrico sperimentale per Game Boy (DMG/CGB) scritto in C con **GBDK-2020**. Genera un labirinto casuale ed esegue il rendering in proiezione isometrica con autotiling dinamico, movimento interpolato del personaggio, e un set di test automatizzati headless tramite l'emulatore **PyBoy** ed elaborazione d'immagine con **OpenCV**.
|
||||
Un survival-horror procedurale in prospettiva isometrica per Game Boy (DMG/CGB), scritto in C con **GBDK-2020**. Sei imprigionato in un labirinto 7×7 generato casualmente, illuminato solo da un ristretto quadrato di visibilità. Un **fantasma** si nasconde nel buio e ti bracca non appena entri nel suo raggio visivo. L'unica via di fuga è la **botola** sul bordo sud della mappa: raggiungerla significa "sprofondare più giù" (*Going Deeper*) e generare un nuovo livello.
|
||||
|
||||
---
|
||||
|
||||
## 🎮 Caratteristiche Principali
|
||||
## 🎮 Caratteristiche
|
||||
|
||||
* **Proiezione Isometrica**: Rendering di una mappa 2.5D su schermo Game Boy (tile 32x16 pixel disegnate a diamante).
|
||||
* **Labirinto Casuale Dinamico**: Algoritmo di backtracking iterativo (con stack in WRAM per evitare l'overflow dello stack hardware) che genera ogni volta un percorso 7x7 unico.
|
||||
* **Movimento Interpolato (Lerp)**: Spostamenti fluidi del personaggio e della telecamera interpolati linearmente su 16 tick macchina.
|
||||
* **Delayed Auto Shift (DAS)**: Controlli reattivi e confortevoli con delay iniziale di 12 frame e ripetizione ogni 6 frame per il movimento continuo tenendo premuto il D-Pad.
|
||||
* **Autotiling Intelligente**: Calcolo dei vicini (maschera a 4 bit) per selezionare automaticamente il bordo e gli angoli di ciascuna tessera del pavimento (16 varianti per ognuno dei 2 stili di pavimento alternati a scacchiera).
|
||||
* **Pipeline di Asset Ottimizzata**: Generazione procedurale di tile e sprite da script Python (`generate_assets.py`) e compilazione in C tramite `png2asset`.
|
||||
- Animazione completa dei movimenti del giocatore.
|
||||
- Transizione al Game Over alla collisione.
|
||||
- Menu Iniziale con copertina d'arte a 2-bit nativa per hardware Game Boy.
|
||||
- **Proiezione isometrica 2.5D**: rendering della mappa a diamante (tile 32×16 px) su schermo Game Boy, con autotiling dinamico.
|
||||
- **Labirinto casuale**: algoritmo DFS iterativo con stack in WRAM (per evitare overflow dello stack hardware) che genera un "perfect maze" 7×7 unico ad ogni partita, poi "rotto" con riaperture casuali al 15% per creare loop e percorsi alternativi.
|
||||
- **Fog of War**: visibilità 5×5 basata sulla distanza di Chebyshev, con affievolimento della luce sui bordi. Il fantasma si attiva solo quando entra in questo riquadro.
|
||||
- **Movimento interpolato (LERP)**: spostamenti fluidi del personaggio e della telecamera su 16 tick a punto fisso (no float).
|
||||
- **Delayed Auto-Shift (DAS)**: controlli alla Tetris — delay iniziale di 12 frame e ripetizione ogni 6 frame per il movimento continuo tenendo premuto il D-Pad.
|
||||
- **Salto evasivo con Stamina**: A+direzione scavalca il blocco adiacente atterrando 2 tile più in là (la cella intermedia deve essere un muro). Costa 60 punti stamina; la barra si ricarica di 1 punto al secondo.
|
||||
- **AI del fantasma**: pathfinding greedy con distanza al quadrato (niente sqrt, niente A*), cooldown di 1 secondo tra i passi, hitbox pixel-perfect (12×6 px) per una morte "giusta".
|
||||
- **Audio procedurale**: colonna sonora sintetizzata manipolando direttamente i registri APU via VBL interrupt (nessun campione).
|
||||
- **Schermate a tutto schermo**: copertina 2-bit nativa per il titolo, immagine "Going Deeper" per la vittoria, metasprite "GAME OVER" per la sconfitta.
|
||||
- **Test headless**: pipeline di verifica con PyBoy + OpenCV senza emulatore grafico.
|
||||
|
||||
### Soundtrack
|
||||
|
||||
Il gioco implementa la musica generata proceduralmente manipolando i registri audio hardware del Game Boy in `engine.c`.
|
||||
|
||||
1. **Title Theme:** Una solenne e misteriosa melodia composta da 32 battute basata sugli accordi La minore, Sol, Fa e Mi, che accompagna la schermata d'avvio a schermo intero.
|
||||
2. **Gameplay Theme:** Un battito ritmico ansioso che accelera progressivamente l'intensità all'inseguimento del fantasma, aumentando la pressione psicologica sul giocatore.
|
||||
3. **Game Over Theme:** Un concerto tragico polifonico di 128 note con percussioni sinfoniche, basso virtuoso e drammatica discesa melodica, per sottolineare la sconfitta del giocatore.
|
||||
|
||||
## Compilazione
|
||||
Assicurati di aver installato [GBDK-2020](https://github.com/gbdk-2020/gbdk-2020).
|
||||
1. **Title Theme**: solenne e misteriosa, 32 battute sugli accordi La minore, Sol, Fa e Mi.
|
||||
2. **Gameplay Theme**: battito ritmico ansioso ("eerie pulse") che accelera la tensione dell'inseguimento.
|
||||
3. **Game Over Theme**: concerto tragico polifonico di 128 note con percussioni (noise channel), basso virtuoso e drammatica discesa melodica.
|
||||
4. **Going Deeper**: melodia misteriosa discendente di 96 step (Am → Fmaj7 → Dm → E7 → C aug → abisso).
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Dettagli Tecnici
|
||||
## 🛠️ Dettagli tecnici
|
||||
|
||||
### Architettura dei File
|
||||
* [main.c](file:///home/enne2/dev/gameboy-hello/iso_test/main.c): Punto di ingresso del gioco. Esegue l'inizializzazione del ciclo macchina e del joypad e si sincronizza con l'intervallo di VBlank (`wait_vbl_done()`).
|
||||
* [engine.c](file:///home/enne2/dev/gameboy-hello/iso_test/engine.c) / [engine.h](file:///home/enne2/dev/gameboy-hello/iso_test/engine.h): Core del motore isometrico. Contiene la logica del labirinto, l'autotiling, lo scorrimento della telecamera, l'interpolazione del movimento e il supporto DAS.
|
||||
* [player.c](file:///home/enne2/dev/gameboy-hello/iso_test/player.c) / [player.h](file:///home/enne2/dev/gameboy-hello/iso_test/player.h) & [tiles.c](file:///home/enne2/dev/gameboy-hello/iso_test/tiles.c) / [tiles.h](file:///home/enne2/dev/gameboy-hello/iso_test/tiles.h): Asset grafici compilati (metasprite per il giocatore in 4 direzioni e varianti di piastrelle).
|
||||
* [generate_assets.py](file:///home/enne2/dev/gameboy-hello/iso_test/generate_assets.py): Script Python PIL per generare le texture di tiles e sprite a partire da matrici di pixel.
|
||||
### Architettura dei file
|
||||
- [`main.c`](src/main.c): entry point, loop VBL sincronizzato, macchina a stati `app_state` (0 = title, 1 = game).
|
||||
- [`engine.c`](src/engine.c) / [`engine.h`](src/engine.h): "direttore d'orchestra" — `title_init/update`, `engine_init`, `engine_update`.
|
||||
- [`globals.c`](src/globals.c) / [`globals.h`](src/globals.h): stato globale centralizzato (mappa, camera, player, enemy, stamina, `game_over`) per evitare dipendenze circolari tra moduli.
|
||||
- [`maze.c`](src/maze.c): generazione procedurale DFS + loop + posizionamento botola.
|
||||
- [`player_logic.c`](src/player_logic.c): input, DAS, state machine del movimento, salto, stamina.
|
||||
- [`enemy_logic.c`](src/enemy_logic.c): AI greedy, cooldown, rendering nemico, hitbox pixel-perfect.
|
||||
- [`render.c`](src/render.c): proiezione isometrica, fog of war, autotiling multi-pass, stamina UI, sprite player.
|
||||
- [`sound.c`](src/sound.c): sequencer audio via VBL interrupt, 4 tracce.
|
||||
- `tiles.c / player.c / enemy.c / gameover.c / next_level.c / stamina.c / title_bg.c`: asset generati da `png2asset`.
|
||||
- [`scripts/`](scripts/): generazione procedurale di tile/sprite (`generate_assets.py`, `generate_enemy.py`), quantizzazione immagini (`process_next_level.py`), test headless.
|
||||
|
||||
### Formato delle Coordinate Isometriche
|
||||
Le coordinate logiche del labirinto $2D$ `(lx, ly)` vengono convertite in coordinate dello schermo Game Boy `(iso_x, iso_y)` per i background tiles tramite la seguente formula:
|
||||
$$iso\_x = (lx - ly) \times 2 + 12$$
|
||||
$$iso\_y = (lx + ly) \times 1 + 2$$
|
||||
Questo permette di mappare una griglia ruotata a diamante perfettamente centrata nello spazio di visualizzazione.
|
||||
### Formato delle coordinate isometriche
|
||||
Le coordinate logiche `(lx, ly)` vengono convertite in coordinate schermo `(iso_x, iso_y)`:
|
||||
```
|
||||
iso_x = (lx - ly) * 2 + 12
|
||||
iso_y = (lx + ly) * 1 + 2
|
||||
```
|
||||
e in coordinate pixel fisiche per camera/collisione:
|
||||
```
|
||||
px = (lx - ly) * 16 + 96
|
||||
py = (lx + ly) * 8 + 16
|
||||
```
|
||||
Camera centrata: `scroll_x = px - 64`, `scroll_y = py - 72`.
|
||||
|
||||
Per un'analisi approfondita di codice, funzionalità e workaround storici, vedi [`doc/AScreamFromTheDark_report.md`](doc/AScreamFromTheDark_report.md).
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Requisiti e Build
|
||||
## 🚀 Requisiti e build
|
||||
|
||||
### Prerequisiti
|
||||
1. **GBDK-2020**: Installato in `/home/enne2/.local/gbdk`.
|
||||
2. **Python 3**: Con i seguenti pacchetti installati per i test e la rigenerazione degli asset:
|
||||
1. **GBDK-2020** installato in `/home/enne2/.local/gbdk`.
|
||||
2. **Python 3** con i pacchetti per la rigenerazione degli asset e i test:
|
||||
```bash
|
||||
pip install --user Pillow pyboy opencv-python numpy
|
||||
```
|
||||
|
||||
### Compilazione
|
||||
Per compilare la ROM ed esportare `hello_iso.gb`:
|
||||
```bash
|
||||
make clean && make
|
||||
```
|
||||
Questo comando:
|
||||
1. Esegue `generate_assets.py` per creare `tiles.png` e `player.png`.
|
||||
2. Usa `png2asset` per convertire le PNG in codice sorgente C.
|
||||
3. Usa il compilatore `lcc` di GBDK per compilare e linkare tutti i file sorgente C nella ROM finale.
|
||||
1. Esegue gli script Python per creare `tiles.png`, `player.png`, `enemy.png`.
|
||||
2. Usa `png2asset` per convertire i PNG in sorgenti C.
|
||||
3. Usa il compilatore `lcc` di GBDK per compilare e linkare i sorgenti in `build/hello_iso.gb` (e `build/test_gameover.gb`).
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Test e Analisi Automatica
|
||||
## 🧪 Test e analisi automatica
|
||||
|
||||
Il progetto include tre livelli di verifica headless per testare la correttezza logica e visuale senza avviare manualmente un emulatore grafico.
|
||||
1. **Screenshot** — `python3 scripts/test_pyboy.py`: avvia la ROM in PyBoy per 120 frame e salva `assets/hello_iso_gb.png`.
|
||||
2. **Test di movimento in WRAM** — `python3 scripts/test_movement.py`: legge la griglia del labirinto in WRAM (indirizzo risolto dinamicamente via `hello_iso.noi`) e simula pressioni direzionali verificando `player_lx/ly`.
|
||||
3. **Rilevamento glitch con OpenCV** — `python3 scripts/opencv_analyze_tiles.py`: esamina lo screenshot cercando disallineamenti o buchi neri tra le giunzioni isometriche.
|
||||
4. **ROM di test isolata** — `make build/test_gameover.gb`: renderizza solo player + metasprite GAME OVER per validare la schermata di sconfitta.
|
||||
|
||||
1. **Generazione Screenshot**:
|
||||
```bash
|
||||
python3 test_pyboy.py
|
||||
```
|
||||
Avvia la ROM in PyBoy per 120 frame e salva un'immagine `hello_iso_gb.png` del display.
|
||||
|
||||
2. **Test di Movimento in WRAM**:
|
||||
```bash
|
||||
python3 test_movement.py
|
||||
```
|
||||
Carica la ROM in PyBoy, legge lo stato della griglia del labirinto in WRAM (a partire dall'indirizzo `0xC0B1`) e simula la pressione dei tasti direzionali, verificando che la posizione del player (indirizzi `0xC4F4` e `0xC4F5`) cambi correttamente secondo le collisioni calcolate.
|
||||
|
||||
3. **Rilevamento Glitch con OpenCV**:
|
||||
```bash
|
||||
python3 opencv_analyze_tiles.py
|
||||
```
|
||||
Utilizza OpenCV per esaminare lo screenshot generato, cercando disallineamenti o buchi neri tra le giunzioni delle piastrelle isometriche, segnalando eventuali problemi di rendering.
|
||||
La documentazione tecnica dettagliata per modulo è in [`doc/`](doc/).
|
||||
@@ -0,0 +1,185 @@
|
||||
# A Scream from the Dark — Report Tecnico Approfondito
|
||||
|
||||
> Labirinto isometrico con inseguimento per Game Boy (DMG/CGB), scritto in C con **GBDK-2020**.
|
||||
> Repository: `gameboy-hello-iso` · Target ROM: `build/hello_iso.gb` (32 KB).
|
||||
> ~5941 righe di C/H + ~1710 righe di script Python per la pipeline asset.
|
||||
|
||||
---
|
||||
|
||||
## 1. Identità del gioco
|
||||
|
||||
"A Scream from the Dark" è un piccolo survival-horror procedurale in prospettiva isometrica 2.5D. Il giocatore è imprigionato in un labirinto 7×7 generato casualmente, illuminato solo da un ristretto quadrato di visibilità (Fog of War). Un **fantasma** si nasconde nel buio e bracca il giocatore non appena entra nel suo riquadro visivo (5×5). L'unica via di fuga è una **botola** (`maze[y][x] == 2`) piazzata sul bordo sud della mappa: raggiungerla significa "sprofondare più giù" (*Going Deeper*) e avanzare di livello.
|
||||
|
||||
Loop di gioco:
|
||||
1. **Title screen** — copertina 2-bit + tema solenne/misterioso (32 battute).
|
||||
2. **Gameplay** — esplorazione a griglia con movimento interpolato, salto evasivo a consumo di stamina, AI greedy del fantasma, hitbox pixel-perfect.
|
||||
3. **Game Over (Sconfitta)** — "fermo immagine" drammatico di 45 frame → schermo nero → metasprite `GAME OVER` + concerto tragico polifonico di 128 note con percussioni (noise channel).
|
||||
4. **Going Deeper (Vittoria)** — reset scroll + immagine a tutto schermo `next_level.png` + melodia misteriosa discendente di 96 step. Premi START per rigenerare un nuovo livello.
|
||||
|
||||
---
|
||||
|
||||
## 2. Architettura del codice
|
||||
|
||||
### 2.1 Organizzazione modulare
|
||||
Il progetto nasceva da un monolite `engine.c` di oltre 1000 righe, poi rifattorizzato in moduli a singola responsabilità. L'orchestrazione avviene in `main.c` / `engine.c`; lo stato mutabile è centralizzato in `globals.c`/`globals.h` per evitare dipendenze circolari tra moduli C.
|
||||
|
||||
| File | Ruolo |
|
||||
|------|-------|
|
||||
| `main.c` | Entry point, loop VBL, macchina a stati `app_state` (0=title, 1=game). |
|
||||
| `engine.c` | "Direttore d'orchestra": `title_init/update`, `engine_init`, `engine_update`. |
|
||||
| `globals.c/h` | Stato globale: mappa, camera, player, enemy, stamina, game_over. |
|
||||
| `maze.c` | Generazione procedurale DFS + creazione loop + posizionamento botola. |
|
||||
| `player_logic.c` | Input, DAS, state machine del movimento, salto, stamina. |
|
||||
| `enemy_logic.c` | AI greedy, cooldown, rendering nemico, hitbox pixel-perfect. |
|
||||
| `render.c` | Proiezione isometrica, fog of war, autotiling, multi-pass, stamina UI, sprite player. |
|
||||
| `sound.c` | Sequencer audio via VBL interrupt, 4 tracce (title/gameplay/gameover/next_level). |
|
||||
| `tiles.c/player.c/enemy.c/gameover.c/next_level.c/stamina.c/title_bg.c` | Asset generati da `png2asset`. |
|
||||
|
||||
### 2.2 Pipeline asset (Python → C)
|
||||
`scripts/generate_assets.py` (PIL) produce `tiles.png`/`player.png` da matrici di pixel; `generate_enemy.py` genera il fantasma; `process_next_level.py` quantizza `next_level_original.png` a 4 livelli con soglie fisse. Il `Makefile` poi invoca `png2asset` per convertire ogni PNG in `src/*.c` (map, metasprite, tile data). `make clean` cancella anche i C generati, forzando la rigenerazione.
|
||||
|
||||
---
|
||||
|
||||
## 3. Funzionalità chiave in dettaglio
|
||||
|
||||
### 3.1 Proiezione isometrica
|
||||
Conversione griglia logica `(lx,ly)` → schermo:
|
||||
```
|
||||
iso_x = (lx - ly) * 2 + 12 // tile 32x16 → metà larghezza
|
||||
iso_y = (lx + ly) * 1 + 2 // tile altezza 8px logica
|
||||
```
|
||||
Coordinate fisiche pixel del player/nemico usate per camera & collision:
|
||||
```
|
||||
px = (lx - ly) * 16 + 96
|
||||
py = (lx + ly) * 8 + 16
|
||||
```
|
||||
Camera centrata: `scroll_x = px - 64`, `scroll_y = py - 72` (160×144 display → centro 80×72, con offset hardware).
|
||||
|
||||
### 3.2 Generazione del labirinto (`maze.c`)
|
||||
- **DFS iterativo con stack in WRAM** (`stack_x[49]/stack_y[49]`): evita l'overflow dello stack hardware del LR35902 ricorrendo a un array in RAM. Celle dispari = stanze, celle pari = muri divisori; scava il muro di mezzo con la media aritmetica delle coordinate.
|
||||
- **Fase 2 — loop**: riapre muri residui che collegano due corridoi opposti con probabilità 15%. Vitale per il gameplay d'inseguimento (permette di aggirare il fantasma).
|
||||
- **Fase 3 — botola**: sceglie un punto **casuale** sul bordo sud (`y = MAP_SIZE-2`) tra le celle calpestabili, invece della "distanza di Manhattan massima" originaria (la doc `generation.md` è rimasta indietro rispetto al codice: vedi §7 Incongruenze). Fallback estremo su `(5,5)` se la riga fosse inaccessibile.
|
||||
|
||||
### 3.3 Movimento & DAS (`player_logic.c`)
|
||||
- **State machine rigida**: durante `is_moving` (16 frame di LERP) ogni input è ignorato → movimento strettamente grid-based stile Zelda/Pokémon.
|
||||
- **LERP** a punto fisso: `px = start_px + ((target_px - start_px) * move_progress) >> 4` (divisione per 16 via shift, no float).
|
||||
- **DAS (Delayed Auto Shift)** alla Tetris: `DAS_DELAY=12` frame di attesa iniziale, poi `DAS_REPEAT=6` frame tra ripetizioni. `keys_pressed = keys & ~prev_keys` rileva il fronte di salita.
|
||||
- **Salto evasivo**: A+direzione → atterraggio 2 tile più in là. Condizioni: cella intermedia DEVE essere muro (`maze==0`), cella di arrivo pavimento/vittoria, stamina ≥ 60. Consuma 60 stamina. L'arco parabolico è solo visivo: `y_offset = (move_progress * (16 - move_progress)) >> 2` (apice 16px a frame 8). La logica resta 2D.
|
||||
- **Stamina**: ricarica 1 punto/s (60 frame). Barra UI a 5 segmenti sprite (ID 18–22) in alto a destra, conversione `stamina*40/100` → pixel.
|
||||
|
||||
### 3.4 Fog of War (`render.c` + `enemy_logic.c`)
|
||||
Distanza di **Chebyshev** `max(|dx|,|dy|)` invece di euclidea (no sqrt, no lookup): quadrato di visibilità 5×5.
|
||||
- `dist > 2` → cella non disegnata (nera).
|
||||
- `dist == 2` → offset grafico scuro ("Tile Dark") per simulare affievolimento della luce prima del buio.
|
||||
- Il nemico si "sveglia" e insegue solo se `dist <= 2` (entra nel cono visivo): coerente con la nebbia.
|
||||
|
||||
### 3.5 Autotiling & multi-pass rendering
|
||||
- **Maschera a 4 bit** sui vicini (TL, TR, BL, BR) per scegliere varianti di bordo/angolo (16 varianti × 2 stili di pavimento alternati a scacchiera `is_alt = (lx+ly)%2==0`).
|
||||
- **Problema overlapping isometrico**: il background GB non ha trasparenza hardware; i tile disegnati dopo "tagliano" quelli prima con angoli piatti. Soluzione ibrida:
|
||||
1. **Pass 1**: pavimenti normali con bitmasking dinamico degli angoli (ricolorano in base al vicino).
|
||||
2. **Pass 2**: la botola (oggetto complessa, 243+81+162 varianti con maschera a 4 vicini `state_tl + state_tr*3 + state_bl*9 + state_br*27`) disegnata **per ultima**, sovrascrive i pavimenti frontali ma si fonde grazie alle maschere dei propri angoli inferiori.
|
||||
- Questo evita l'uso di sprite hardware per la botola (che causerebbero flickering per il limite di 10 sprite/scanline) e contiene il consumo di VRAM (limite 256 tile).
|
||||
|
||||
### 3.6 Ottimizzazione rendering
|
||||
Trasferisce solo le 16 righe visibili invece di tutte le 32: `set_bkg_tiles(0, 2, 32, 16, &map_buffer[2*32])`. Aggiornamento a `move_progress==8` (metà passo) per fluidità del fog of war. `map_buffer` usato con wrap `& 31` per gestire lo scroll modulare.
|
||||
|
||||
### 3.7 AI del fantasma (`enemy_logic.c`)
|
||||
- **Greedy invece di A***: confronta la distanza al quadrato `dx²+dy²` delle 4 celle adiacenti calpestabili e sceglie la minima. No sqrt (pesante su 4 MHz), no heap/nodi (frame drops inammissibili). Difetto voluto: si incastra in vicoli a U → diventa una dinamica di gameplay (seminarlo col level design).
|
||||
- **Cooldown**: dopo ogni passo (16 frame di LERP) rimane congelato 60 frame (1 s). Il giocatore è più veloce → il salto evasivo è il salvavita.
|
||||
- **Hitbox pixel-perfect**: la morte non scatta per coincidenza di cella logica, ma per sovrapposizione dei pixel fisici con tolleranza `|dx|<12 && |dy|<6`. Più "giusta" agli occhi del giocatore.
|
||||
- Culling off-screen: `enemy_screen_x` e `_y` con wrap `& 255` + soglie `-8..168` / `-8..152`; se fuori range o `ep_dist > 2` lo sprite viene spostato a `(0,0)` (offscreen).
|
||||
|
||||
### 3.8 Audio (`sound.c`)
|
||||
Sequencer agganciato al **VBL interrupt** (`add_VBL(play_music_tick)`), ~60 Hz, non blocca il rendering. Usa i 4 canali APU:
|
||||
- **CH1** (pulse+sweep): arpeggi rapidi (gameover/next_level), tema title.
|
||||
- **CH2** (pulse): bassi/melodie tenute (gameover ch2_seq, basso title/next_level un'ottava sotto con `n/2`).
|
||||
- **CH4** (noise): percussioni — `step%8==0` trigger; freq `0x68` (thud basso) per `step<64`, `0x42` (crash) per `step>=64`.
|
||||
- **CH3** (wave): non utilizzato.
|
||||
|
||||
Tracce:
|
||||
- **Title**: `title_melody[32]`, 30 frame/nota, basso ogni 4 step, accordi Am–G–F–E.
|
||||
- **Gameplay**: `eerie_reg_vals[96]`, 20 frame/nota, pattern A min–D min–E7 (ansia crescente).
|
||||
- **Game Over**: `ch1_seq[128]` + `ch2_seq[128]`, 10 frame/nota, 16 accordi con intensificazione (arpeggi più alti nella seconda metà).
|
||||
- **Going Deeper**: `next_level_seq[96]`, 15 frame/nota, 6 sezioni (Am, Fmaj7, Dm, E7, C aug, discesa finale nel buio `N_G2 N_E3 N_C3… N_C2 R…`).
|
||||
|
||||
Frequenze delle note: costanti `N_*` precalcolate come `(2048 - 131072/freq)` → scritte direttamente in `NR13/NR23` (low) e `NR14/NR24` (high | 0x80 trigger).
|
||||
|
||||
---
|
||||
|
||||
## 4. Workaround e fix storici (dalla git history)
|
||||
|
||||
La cronologia di 23 commit racconta un'intensa fase di caccia ai bug hardware-specifici del Game Boy. Riepilogo dei workaround più significativi:
|
||||
|
||||
| Commit | Problema | Workaround |
|
||||
|--------|----------|------------|
|
||||
| `93deb35` | **VRAM shared memory overlap**: i tile della stamina UI (sprite) sovrascrivevano i tile del background perché caricati nello stesso blocco VRAM. | Caricare `stamina_tiles` **dopo** i background tile e a partire da `tiles_TILE_COUNT` (indici ≥128, fuori dal blocco condiviso). `base_tile = tiles_TILE_COUNT` in `update_stamina_display`. |
|
||||
| `6d94992` | **2-frame lag tra tile**: il DAS non era sincronizzato col ciclo di movimento. | Sincronizzazione del timer DAS con la state machine del passo. |
|
||||
| `7d85aec` | Labirinto "perfetto" intrappolava il giocatore. | Fase 2: riapertura casuale 15% dei muri → loop evasivi. |
|
||||
| `b47455c` | Offset rendering nemico errato + collisione approssimata. | Calcolo `screen_x = ((px - scroll) & 255) + 24/+16` e hitbox pixel-perfect 12×6. |
|
||||
| `c983631` | Palette sprite errata per il nemico su DMG + game over troppo brusco. | `OBP1_REG = 0x1B` (palette invertita per fantasma bianco) + `game_over_timer` di delay. |
|
||||
| `e07e8c6` | Nemico invisibile fuori schermo a causa dello scroll. | Wrap `& 255` + culling con soglie fisiche. |
|
||||
| `8d71a23` / `1b0e1a0` | Artefatti sprite sulle scale. | Primo tentativo sprite-based con `-spr8x16`, poi **revert** a tile-based (le scale tornano nel background). |
|
||||
| `f14e264` | Scale come ostacolo bloccava il fantasma. | Ridisegno come **botola nel terreno**: il fantasma può camminarci sopra (tile 2 è calpestabile per l'AI: `maze[ly][lx] != 0`). |
|
||||
| `cb19677` | Glitch immagine next_level + scroll non allineato. | Reset `SCX_REG=SCY_REG=0` prima di mostrare l'immagine a tutto schermo + miglioramento quantizzazione colore. |
|
||||
| `d8fd746` | Quantizzazione dell'immagine perdeva i toni scuri. | Soglie fisse in `process_next_level.py`: `<40` nero, `40–128` grigio scuro (85), `128–200` grigio chiaro (170), `≥200` bianco. |
|
||||
| `cc656d0` | Musica next_level poco udibile + fine brusco. | Envelope più alto (`NR12_REG=0xC5`) e discesa graduale fino a `N_C2 R…`. |
|
||||
|
||||
**Pattern ricorrente di workaround GB**: ogni "feature" ha dovuto litigare con i limiti hardware — VRAM da 256 tile condivisa tra BG e sprite, assenza di trasparenza nel background, limite 10 sprite/scanline, CPU 4 MHz senza FPU, stack da 8 bit. La filosofia è **"ingannare l'hardware con la matematica"**: LERP a punto fisso, distanze al quadrato/Chebyshev, multi-pass con bitmasking, sequencer audio via interrupt.
|
||||
|
||||
---
|
||||
|
||||
## 5. Test & verifica headless
|
||||
|
||||
Pipeline di verifica senza emulatore grafico (PyBoy + OpenCV):
|
||||
1. **`test_pyboy.py` / `take_screenshot.py`**: avvia la ROM in PyBoy per N frame e salva screenshot (`hello_iso_gb.png`).
|
||||
2. **`test_movement.py`**: legge la griglia maze in WRAM (indirizzo cercato dinamicamente via `hello_iso.noi`) e simula pressioni direzionali, verificando `player_lx/ly`. Nota: lo script cerca `hello_iso.noi` ma il Makefile produce `test_gameover.noi` in `build/` — potenziale incongruenza di percorso (vedi §7).
|
||||
3. **`opencv_analyze_tiles.py` / `opencv_check_centering.py`**: rilevano disallineamenti/buchi neri tra giunzioni isometriche e centratura.
|
||||
4. **`test_gameover_render.c`** + target `test_gameover.gb`: ROM standalone che renderizza solo player + metasprite GAME OVER per validare visivamente la schermata di sconfitta isolata.
|
||||
|
||||
---
|
||||
|
||||
## 6. Punti di forza tecnici
|
||||
|
||||
- **Modularizzazione pulita** con stato centralizzato: leggibile e manutenibile nonostante i vincoli embedded.
|
||||
- **Commenti didattici** in italiano: ogni modulo spiega il *perché* delle scelte (es. "non usiamo sqrt perché troppo costosa"), utile come materiale di studio GB dev.
|
||||
- **Niente float**: tutto a punto fisso con shift (`>> 4`, `>> 2`), essenziale sul LR35902.
|
||||
- **Audio interamente procedurale**: nessun campione, solo registri APU; la ROM resta compatta (32 KB).
|
||||
- **Pipeline asset riproducibile**: `make clean && make` rigenera tutto da PNG sorgenti.
|
||||
|
||||
---
|
||||
|
||||
## 7. Incongruenze, debiti tecnici e osservazioni
|
||||
|
||||
1. **README obsoleto**: il `README.md` storico parlava di "gioco carino", titoli `file:///home/enne2/dev/gameboy-hello/iso_test/...` (percorso storico diverso da quello attuale `gameboy-hello-iso`) e non menzionava "A Scream from the Dark", né il salto/stamina/fantasma/botola. Risolto in questa revisione allineando il README all'identità attuale.
|
||||
2. **`doc/generation.md` vs `maze.c`**: la doc descriveva il posizionamento del traguardo via **distanza di Manhattan massima**; il codice attuale sceglie invece un **punto casuale sul bordo sud**. Risolto in questa revisione aggiornando `doc/generation.md`.
|
||||
3. **`victory.c/h` orfani**: l'asset `victory` (scritta VITTORIA) era ancora compilato e incluso da `render.c` ma la sequenza di vittoria è stata sostituita dall'immagine a tutto schermo `next_level` (commit `3aa20fd`). Risolto in questa revisione rimuovendo l'inclusione e i file morti.
|
||||
4. **`test_movement.py`**: cerca `hello_iso.noi` nella cwd, ma il `.noi` viene generato in `build/` (per `test_gameover`); per la ROM principale il `.noi` non è tra i target Makefile espliciti. Lo script può fallire se eseguito fuori da `build/`. (Osservazione residua, non bloccante.)
|
||||
5. **`game_over` come `volatile`**: marcato `volatile` in `globals.h` (corretto, modificato da ISR audio/VBL), ma alcuni aggiornamenti avvengono anche dal main loop non-atomic — in pratica sicuro perché la lettura/scrittura è a 8 bit sul LR35902 (atomica), ma vale la pena documentarlo.
|
||||
6. **`app_state` ridefinito** in `globals.h` e `engine.h` (entrambi `extern uint8_t app_state`): duplicazione inoffensiva ma ridondante.
|
||||
7. **Spawn player fallback**: ricerca la prima cella libera se `(1,1)` è muro (teoricamente impossibile col DFS partendo da 1,1) — difensivo, buon codice.
|
||||
8. **`title_update` vuoto**: il loop del titolo non fa nulla a parte il polling (gestito in `main.c`). La musica continua via interrupt. Pulito ma il corpo vuoto andrebbe commentato o rimosso se non serve estensione futura.
|
||||
9. **Costante `N_E2 = 458`** in `next_level_seq` mentre le altre note `N_*2` sono nell'ordine di 44–961: c'è un salto numerico marcato. `N_C2=44` è la nota più grave (registro APU = 44 → freq ~131 Hz, Do2). `N_E2=458` non segue la formula `2048-131072/f` in modo coerente con gli altri `N_*2` (es. `N_D2` non è definito): vale la pena verificare che la discesa finale `N_G2 N_E3 N_C3 … N_E2 N_C3 N_G2 … N_C2` suoni effettivamente come inteso. Sospetto di coerenza tonale da validare all'ascolto.
|
||||
|
||||
---
|
||||
|
||||
## 8. Mappa mentale del flusso runtime
|
||||
|
||||
```
|
||||
main.loop (VBL-synced)
|
||||
├─ app_state==0 → title_update (no-op) [musica: VBL interrupt → play_music_tick]
|
||||
│ └─ J_START fronte → engine_init()
|
||||
└─ app_state==1 → engine_update
|
||||
├─ if game_over:
|
||||
│ ├─ game_over_timer>0 → countdown; a 0: svuota BG (sconfitta) o mostra next_level (vittoria)
|
||||
│ ├─ timer==0 → metasprite GAME OVER + player + (enemy se vicino)
|
||||
│ └─ J_START → engine_init() (riavvio)
|
||||
├─ update_enemy_logic() [AI greedy, cooldown, hitbox → game_over=1]
|
||||
└─ update_player_movement [DAS, LERP, salto, stamina, vittoria → game_over=2]
|
||||
└─ durante is_moving: scroll/move_bkg + draw_map a frame 8 + sprite
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Conclusione
|
||||
|
||||
"A Scream from the Dark" è un piccolo gioiello di ingegneria embedded: realizza proiezione isometrica, generazione procedurale, AI di inseguimento, audio polifonico e un'interfaccia stamina — tutto nei 32 KB e 8 KB WRAM di un Game Boy del 1989. Il valore didattico è alto: ogni modulo è un caso di studio su come **tradurre feature "moderne" in matematica a punto fisso e gestione diretta dei registri hardware**. Le incongruenze principali erano cosmetiche (README/doc da allineare all'identità attuale, asset `victory` orfano) e non intaccavano la correttezza; sono state risolte in questa revisione. Il codice è in ottima forma per essere esteso (più livelli con difficoltà crescente, nuovi nemici, oggetti raccoglibili) o usato come base per tutorial di sviluppo GB.
|
||||
+6
-3
@@ -17,7 +17,10 @@ Un "Perfect Maze" è frustrante in un gioco di inseguimento, perché intrappola
|
||||
Pertanto, è stata aggiunta una *Fase 2* alla generazione: l'algoritmo scansiona i muri rimanenti e, se un muro divide due stanze adiacenti, lo abbatte con una probabilità del 15%.
|
||||
Questo genera anelli (loop) all'interno del labirinto, permettendo al giocatore tattiche evasive per aggirare il fantasma.
|
||||
|
||||
## Posizionamento del Traguardo (Vittoria)
|
||||
## Posizionamento del Traguardo (La Botola)
|
||||
|
||||
La casella traguardo (il "Portale") deve essere logicamente il punto più lontano dalla partenza (situata in alto a sinistra a `1,1`).
|
||||
Per trovarla, l'algoritmo calcola la **Distanza di Manhattan** (`|X1 - X2| + |Y1 - Y2|`) di ogni cella percorribile rispetto a `1,1`. La cella con il valore più alto viene designata con ID 2, trasformandola graficamente nel portale di fine livello.
|
||||
La casella traguardo è una **botola** nel terreno (ID 2) che il giocatore deve raggiungere per "sprofondare più giù" (*Going Deeper*) e avanzare di livello.
|
||||
Invece di cercare il punto matematicamente più lontano dalla partenza, l'algoritmo attuale sceglie un **punto casuale sul bordo sud** della mappa (`y = MAP_SIZE - 2`) tra le celle calpestabili di quella riga. Questo permette alla botola di apparire in una posizione imprevedibile lungo il bordo sud ad ogni partita.
|
||||
Se, per un caso limite, la riga in fondo fosse inaccessibile, esiste un **fallback estremo** che posiziona la botola nell'angolo `(MAP_SIZE-2, MAP_SIZE-2)`.
|
||||
|
||||
Nota: storicamente il posizionamento usava la **Distanza di Manhattan** massima rispetto a `1,1`; il comportamento è stato cambiato per aumentare la varietà delle partite. La botola è disegnata con un oggetto complesso a maschera 4-vicini nel Pass 2 del renderer (vedi `graphics.md`).
|
||||
|
||||
+159
-40
@@ -1,5 +1,4 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /enemy.png -c /enemy.c -sw 16 -sh 16 -bpp 2 -noflip -keep_palette_order -sp 0x10
|
||||
|
||||
#include <stdint.h>
|
||||
#include <gbdk/platform.h>
|
||||
@@ -8,49 +7,169 @@
|
||||
BANKREF(enemy)
|
||||
|
||||
const palette_color_t enemy_palettes[32] = {
|
||||
RGB8(224,248,207), RGB8(134,192,108), RGB8( 48,104, 80), RGB8( 7, 24, 33),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8(224,248,207), RGB8(134,192,108), RGB8( 48,104, 80), RGB8( 7, 24, 33)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
|
||||
};
|
||||
|
||||
const uint8_t enemy_tiles[512] = {
|
||||
0x07,0x07,0x08,0x0f,0x17,0x18,0x1f,0x12,0x1c,0x13,0x3f,0x23,0x2e,0x31,0x17,0x18,
|
||||
0x09,0x0e,0x09,0x0e,0x04,0x07,0x04,0x07,0x05,0x06,0x0b,0x0d,0x06,0x06,0x00,0x00,
|
||||
0xc0,0xc0,0x20,0xe0,0xd0,0x30,0xf0,0x50,0x70,0x90,0xf0,0x90,0xf8,0x18,0xfc,0x04,
|
||||
0xf8,0x08,0xf0,0x30,0xc0,0x40,0xc0,0x40,0xc0,0x40,0x80,0x80,0x00,0x00,0x00,0x00,
|
||||
0x07,0x07,0x08,0x0f,0x17,0x18,0x1f,0x12,0x1c,0x13,0x1f,0x13,0x2e,0x31,0x27,0x38,
|
||||
0x13,0x1c,0x09,0x0e,0x04,0x07,0x04,0x07,0x05,0x06,0x02,0x03,0x01,0x01,0x00,0x00,
|
||||
0xc0,0xc0,0x20,0xe0,0xd0,0x30,0xf0,0x50,0x70,0x90,0xf0,0x90,0xf8,0x18,0xfc,0x04,
|
||||
0xf8,0x08,0xf0,0x30,0xc0,0x40,0xc0,0x40,0xc0,0x40,0xc0,0x40,0x80,0x80,0x00,0x00,
|
||||
0x03,0x03,0x04,0x07,0x0b,0x0c,0x0f,0x0a,0x0e,0x09,0x0f,0x09,0x1f,0x18,0x3f,0x20,
|
||||
0x1f,0x10,0x0f,0x0c,0x03,0x02,0x03,0x02,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,
|
||||
0xe0,0xe0,0x10,0xf0,0xe8,0x18,0xf8,0x48,0x38,0xc8,0xfc,0xc4,0x74,0x8c,0xe8,0x18,
|
||||
0x90,0x70,0x90,0x70,0x20,0xe0,0x20,0xe0,0xa0,0x60,0xd0,0xb0,0x60,0x60,0x00,0x00,
|
||||
0x03,0x03,0x04,0x07,0x0b,0x0c,0x0f,0x0a,0x0e,0x09,0x0f,0x09,0x1f,0x18,0x3f,0x20,
|
||||
0x1f,0x10,0x0f,0x0c,0x03,0x02,0x03,0x02,0x03,0x02,0x03,0x02,0x01,0x01,0x00,0x00,
|
||||
0xe0,0xe0,0x10,0xf0,0xe8,0x18,0xf8,0x48,0x38,0xc8,0xf8,0xc8,0x74,0x8c,0xe4,0x1c,
|
||||
0xc8,0x38,0x90,0x70,0x20,0xe0,0x20,0xe0,0xa0,0x60,0x40,0xc0,0x80,0x80,0x00,0x00,
|
||||
0x03,0x03,0x04,0x07,0x0b,0x0c,0x0f,0x08,0x0f,0x08,0x0f,0x08,0x1f,0x18,0x3f,0x20,
|
||||
0x1f,0x10,0x0f,0x0c,0x03,0x02,0x03,0x02,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,
|
||||
0xe0,0xe0,0x10,0xf0,0xe8,0x18,0xf8,0x08,0xf8,0x08,0xf8,0x08,0xe8,0x18,0xd0,0x30,
|
||||
0x90,0x70,0x90,0x70,0x20,0xe0,0x20,0xe0,0xa0,0x60,0xd0,0xb0,0x60,0x60,0x00,0x00,
|
||||
0x03,0x03,0x04,0x07,0x0b,0x0c,0x0f,0x08,0x0f,0x08,0x0f,0x08,0x1f,0x18,0x3f,0x20,
|
||||
0x1f,0x10,0x0f,0x0c,0x03,0x02,0x03,0x02,0x03,0x02,0x03,0x02,0x01,0x01,0x00,0x00,
|
||||
0xe0,0xe0,0x10,0xf0,0xe8,0x18,0xf8,0x08,0xf8,0x08,0xf8,0x08,0xe8,0x18,0xd0,0x30,
|
||||
0x90,0x70,0x90,0x70,0x20,0xe0,0x20,0xe0,0xa0,0x60,0x40,0xc0,0x80,0x80,0x00,0x00,
|
||||
0x07,0x07,0x08,0x0f,0x17,0x18,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x17,0x18,0x0b,0x0c,
|
||||
0x09,0x0e,0x09,0x0e,0x04,0x07,0x04,0x07,0x05,0x06,0x0b,0x0d,0x06,0x06,0x00,0x00,
|
||||
0xc0,0xc0,0x20,0xe0,0xd0,0x30,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf8,0x18,0xfc,0x04,
|
||||
0xf8,0x08,0xf0,0x30,0xc0,0x40,0xc0,0x40,0xc0,0x40,0x80,0x80,0x00,0x00,0x00,0x00,
|
||||
0x07,0x07,0x08,0x0f,0x17,0x18,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x17,0x18,0x0b,0x0c,
|
||||
0x09,0x0e,0x09,0x0e,0x04,0x07,0x04,0x07,0x05,0x06,0x02,0x03,0x01,0x01,0x00,0x00,
|
||||
0xc0,0xc0,0x20,0xe0,0xd0,0x30,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf8,0x18,0xfc,0x04,
|
||||
0xf8,0x08,0xf0,0x30,0xc0,0x40,0xc0,0x40,0xc0,0x40,0xc0,0x40,0x80,0x80,0x00,0x00
|
||||
0x07,0x07,0x08,0x0f,
|
||||
0x17,0x18,0x1f,0x12,
|
||||
0x1c,0x13,0x3f,0x23,
|
||||
0x2e,0x31,0x17,0x18,
|
||||
0x09,0x0e,0x09,0x0e,
|
||||
0x04,0x07,0x04,0x07,
|
||||
0x05,0x06,0x0b,0x0d,
|
||||
0x06,0x06,0x00,0x00,
|
||||
|
||||
0xc0,0xc0,0x20,0xe0,
|
||||
0xd0,0x30,0xf0,0x50,
|
||||
0x70,0x90,0xf0,0x90,
|
||||
0xf8,0x18,0xfc,0x04,
|
||||
0xf8,0x08,0xf0,0x30,
|
||||
0xc0,0x40,0xc0,0x40,
|
||||
0xc0,0x40,0x80,0x80,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0x07,0x07,0x08,0x0f,
|
||||
0x17,0x18,0x1f,0x12,
|
||||
0x1c,0x13,0x1f,0x13,
|
||||
0x2e,0x31,0x27,0x38,
|
||||
0x13,0x1c,0x09,0x0e,
|
||||
0x04,0x07,0x04,0x07,
|
||||
0x05,0x06,0x02,0x03,
|
||||
0x01,0x01,0x00,0x00,
|
||||
|
||||
0xc0,0xc0,0x20,0xe0,
|
||||
0xd0,0x30,0xf0,0x50,
|
||||
0x70,0x90,0xf0,0x90,
|
||||
0xf8,0x18,0xfc,0x04,
|
||||
0xf8,0x08,0xf0,0x30,
|
||||
0xc0,0x40,0xc0,0x40,
|
||||
0xc0,0x40,0xc0,0x40,
|
||||
0x80,0x80,0x00,0x00,
|
||||
|
||||
0x03,0x03,0x04,0x07,
|
||||
0x0b,0x0c,0x0f,0x0a,
|
||||
0x0e,0x09,0x0f,0x09,
|
||||
0x1f,0x18,0x3f,0x20,
|
||||
0x1f,0x10,0x0f,0x0c,
|
||||
0x03,0x02,0x03,0x02,
|
||||
0x03,0x02,0x01,0x01,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0xe0,0xe0,0x10,0xf0,
|
||||
0xe8,0x18,0xf8,0x48,
|
||||
0x38,0xc8,0xfc,0xc4,
|
||||
0x74,0x8c,0xe8,0x18,
|
||||
0x90,0x70,0x90,0x70,
|
||||
0x20,0xe0,0x20,0xe0,
|
||||
0xa0,0x60,0xd0,0xb0,
|
||||
0x60,0x60,0x00,0x00,
|
||||
|
||||
0x03,0x03,0x04,0x07,
|
||||
0x0b,0x0c,0x0f,0x0a,
|
||||
0x0e,0x09,0x0f,0x09,
|
||||
0x1f,0x18,0x3f,0x20,
|
||||
0x1f,0x10,0x0f,0x0c,
|
||||
0x03,0x02,0x03,0x02,
|
||||
0x03,0x02,0x03,0x02,
|
||||
0x01,0x01,0x00,0x00,
|
||||
|
||||
0xe0,0xe0,0x10,0xf0,
|
||||
0xe8,0x18,0xf8,0x48,
|
||||
0x38,0xc8,0xf8,0xc8,
|
||||
0x74,0x8c,0xe4,0x1c,
|
||||
0xc8,0x38,0x90,0x70,
|
||||
0x20,0xe0,0x20,0xe0,
|
||||
0xa0,0x60,0x40,0xc0,
|
||||
0x80,0x80,0x00,0x00,
|
||||
|
||||
0x03,0x03,0x04,0x07,
|
||||
0x0b,0x0c,0x0f,0x08,
|
||||
0x0f,0x08,0x0f,0x08,
|
||||
0x1f,0x18,0x3f,0x20,
|
||||
0x1f,0x10,0x0f,0x0c,
|
||||
0x03,0x02,0x03,0x02,
|
||||
0x03,0x02,0x01,0x01,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0xe0,0xe0,0x10,0xf0,
|
||||
0xe8,0x18,0xf8,0x08,
|
||||
0xf8,0x08,0xf8,0x08,
|
||||
0xe8,0x18,0xd0,0x30,
|
||||
0x90,0x70,0x90,0x70,
|
||||
0x20,0xe0,0x20,0xe0,
|
||||
0xa0,0x60,0xd0,0xb0,
|
||||
0x60,0x60,0x00,0x00,
|
||||
|
||||
0x03,0x03,0x04,0x07,
|
||||
0x0b,0x0c,0x0f,0x08,
|
||||
0x0f,0x08,0x0f,0x08,
|
||||
0x1f,0x18,0x3f,0x20,
|
||||
0x1f,0x10,0x0f,0x0c,
|
||||
0x03,0x02,0x03,0x02,
|
||||
0x03,0x02,0x03,0x02,
|
||||
0x01,0x01,0x00,0x00,
|
||||
|
||||
0xe0,0xe0,0x10,0xf0,
|
||||
0xe8,0x18,0xf8,0x08,
|
||||
0xf8,0x08,0xf8,0x08,
|
||||
0xe8,0x18,0xd0,0x30,
|
||||
0x90,0x70,0x90,0x70,
|
||||
0x20,0xe0,0x20,0xe0,
|
||||
0xa0,0x60,0x40,0xc0,
|
||||
0x80,0x80,0x00,0x00,
|
||||
|
||||
0x07,0x07,0x08,0x0f,
|
||||
0x17,0x18,0x1f,0x10,
|
||||
0x1f,0x10,0x1f,0x10,
|
||||
0x17,0x18,0x0b,0x0c,
|
||||
0x09,0x0e,0x09,0x0e,
|
||||
0x04,0x07,0x04,0x07,
|
||||
0x05,0x06,0x0b,0x0d,
|
||||
0x06,0x06,0x00,0x00,
|
||||
|
||||
0xc0,0xc0,0x20,0xe0,
|
||||
0xd0,0x30,0xf0,0x10,
|
||||
0xf0,0x10,0xf0,0x10,
|
||||
0xf8,0x18,0xfc,0x04,
|
||||
0xf8,0x08,0xf0,0x30,
|
||||
0xc0,0x40,0xc0,0x40,
|
||||
0xc0,0x40,0x80,0x80,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0x07,0x07,0x08,0x0f,
|
||||
0x17,0x18,0x1f,0x10,
|
||||
0x1f,0x10,0x1f,0x10,
|
||||
0x17,0x18,0x0b,0x0c,
|
||||
0x09,0x0e,0x09,0x0e,
|
||||
0x04,0x07,0x04,0x07,
|
||||
0x05,0x06,0x02,0x03,
|
||||
0x01,0x01,0x00,0x00,
|
||||
|
||||
0xc0,0xc0,0x20,0xe0,
|
||||
0xd0,0x30,0xf0,0x10,
|
||||
0xf0,0x10,0xf0,0x10,
|
||||
0xf8,0x18,0xfc,0x04,
|
||||
0xf8,0x08,0xf0,0x30,
|
||||
0xc0,0x40,0xc0,0x40,
|
||||
0xc0,0x40,0xc0,0x40,
|
||||
0x80,0x80,0x00,0x00
|
||||
|
||||
};
|
||||
|
||||
const metasprite_t enemy_metasprite0[] = {
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /enemy.png -c /enemy.c -sw 16 -sh 16 -bpp 2 -noflip -keep_palette_order -sp 0x10
|
||||
|
||||
#ifndef METASPRITE_enemy_H
|
||||
#define METASPRITE_enemy_H
|
||||
|
||||
|
||||
+105
-28
@@ -1,5 +1,4 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /gameover.png -c /gameover.c -bpp 2 -noflip -keep_palette_order
|
||||
|
||||
#include <stdint.h>
|
||||
#include <gbdk/platform.h>
|
||||
@@ -8,37 +7,115 @@
|
||||
BANKREF(gameover)
|
||||
|
||||
const palette_color_t gameover_palettes[32] = {
|
||||
RGB8(224,248,207), RGB8(134,192,108), RGB8( 48,104, 80), RGB8( 7, 24, 33),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8(224,248,207), RGB8(134,192,108), RGB8( 48,104, 80), RGB8( 7, 24, 33)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
|
||||
};
|
||||
|
||||
const uint8_t gameover_tiles[320] = {
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xfc,0xfe,0xf8,0xfc,0xf8,0xfd,0xf8,0xfd,
|
||||
0xf8,0xfd,0xf8,0xfc,0xfc,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x1e,0xff,0x0c,0x1e,0x08,0xfd,0xf8,0xfd,0x88,0xfc,
|
||||
0x88,0xdd,0x08,0xdd,0x08,0x1d,0x19,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x79,0xff,0x38,0x7d,0x18,0xbc,0x18,0xbd,0x18,0x3d,
|
||||
0x18,0xbd,0x18,0xbd,0x18,0xbd,0x99,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x98,0xff,0x18,0xbc,0x18,0x3d,0x18,0xbc,0x18,0xbd,
|
||||
0x18,0xbd,0x18,0xbc,0x18,0xbf,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xff,0x0f,0x1f,0x0f,0xff,0x1f,0x3f,0x0f,0xff,
|
||||
0xff,0xff,0x0f,0x1f,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,0xf8,0xfc,0xf8,0xfd,0xf8,0xfd,0xf8,0xfd,
|
||||
0xf8,0xfd,0xf8,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x39,0xff,0x18,0x3d,0x18,0xbd,0x18,0xbd,0x18,0xbd,
|
||||
0x18,0xbd,0x1c,0x3e,0x3e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x98,0xff,0x18,0xbc,0x18,0xbd,0x18,0xbc,0x18,0xbd,
|
||||
0x18,0xbd,0x38,0x7c,0x78,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x18,0xff,0x08,0x1c,0x08,0xfd,0x18,0x3c,0x08,0xfd,
|
||||
0xf8,0xfd,0x08,0x1d,0x19,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0x1f,0x3f,0x1f,0xbf,0x3f,0x7f,0x1f,0xbf,
|
||||
0x1f,0xbf,0x1f,0xbf,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xfe,0xff,
|
||||
0xfc,0xfe,0xf8,0xfc,
|
||||
0xf8,0xfd,0xf8,0xfd,
|
||||
0xf8,0xfd,0xf8,0xfc,
|
||||
0xfc,0xfe,0xfe,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x1e,0xff,
|
||||
0x0c,0x1e,0x08,0xfd,
|
||||
0xf8,0xfd,0x88,0xfc,
|
||||
0x88,0xdd,0x08,0xdd,
|
||||
0x08,0x1d,0x19,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x79,0xff,
|
||||
0x38,0x7d,0x18,0xbc,
|
||||
0x18,0xbd,0x18,0x3d,
|
||||
0x18,0xbd,0x18,0xbd,
|
||||
0x18,0xbd,0x99,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x98,0xff,
|
||||
0x18,0xbc,0x18,0x3d,
|
||||
0x18,0xbc,0x18,0xbd,
|
||||
0x18,0xbd,0x18,0xbc,
|
||||
0x18,0xbf,0x9f,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x1f,0xff,
|
||||
0x0f,0x1f,0x0f,0xff,
|
||||
0x1f,0x3f,0x0f,0xff,
|
||||
0xff,0xff,0x0f,0x1f,
|
||||
0x1f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xfc,0xff,
|
||||
0xf8,0xfc,0xf8,0xfd,
|
||||
0xf8,0xfd,0xf8,0xfd,
|
||||
0xf8,0xfd,0xf8,0xfc,
|
||||
0xfc,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x39,0xff,
|
||||
0x18,0x3d,0x18,0xbd,
|
||||
0x18,0xbd,0x18,0xbd,
|
||||
0x18,0xbd,0x1c,0x3e,
|
||||
0x3e,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x98,0xff,
|
||||
0x18,0xbc,0x18,0xbd,
|
||||
0x18,0xbc,0x18,0xbd,
|
||||
0x18,0xbd,0x38,0x7c,
|
||||
0x78,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x18,0xff,
|
||||
0x08,0x1c,0x08,0xfd,
|
||||
0x18,0x3c,0x08,0xfd,
|
||||
0xf8,0xfd,0x08,0x1d,
|
||||
0x19,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x3f,0xff,
|
||||
0x1f,0x3f,0x1f,0xbf,
|
||||
0x3f,0x7f,0x1f,0xbf,
|
||||
0x1f,0xbf,0x1f,0xbf,
|
||||
0x9f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff
|
||||
|
||||
};
|
||||
|
||||
const metasprite_t gameover_metasprite0[] = {
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /gameover.png -c /gameover.c -bpp 2 -noflip -keep_palette_order
|
||||
|
||||
#ifndef METASPRITE_gameover_H
|
||||
#define METASPRITE_gameover_H
|
||||
|
||||
|
||||
+945
-237
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,4 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /next_level.png -c /next_level.c -map -bpp 2 -noflip -max_palettes 1
|
||||
|
||||
#ifndef METASPRITE_next_level_H
|
||||
#define METASPRITE_next_level_H
|
||||
|
||||
|
||||
+141
-36
@@ -1,5 +1,4 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /player.png -c /player.c -sw 16 -sh 16 -bpp 2 -noflip -keep_palette_order
|
||||
|
||||
#include <stdint.h>
|
||||
#include <gbdk/platform.h>
|
||||
@@ -8,45 +7,151 @@
|
||||
BANKREF(player)
|
||||
|
||||
const palette_color_t player_palettes[32] = {
|
||||
RGB8(224,248,207), RGB8(134,192,108), RGB8( 48,104, 80), RGB8( 7, 24, 33),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8(224,248,207), RGB8(134,192,108), RGB8( 48,104, 80), RGB8( 7, 24, 33)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
|
||||
};
|
||||
|
||||
const uint8_t player_tiles[448] = {
|
||||
0x0f,0x0f,0x10,0x1f,0x27,0x3f,0x2b,0x3c,0x2e,0x39,0x2f,0x39,0x2f,0x38,0x2f,0x39,
|
||||
0x1f,0x1c,0x2f,0x3f,0x28,0x3f,0x38,0x2f,0x3c,0x3f,0x0a,0x0e,0x1e,0x1e,0x1e,0x1e,
|
||||
0xf0,0xf0,0x08,0xf8,0xe4,0xfc,0xd4,0x3c,0xd4,0x3c,0xf4,0x3c,0xf4,0x1c,0xf4,0xfc,
|
||||
0xf8,0x38,0xf4,0xfc,0x14,0xfc,0x1c,0xf4,0x3c,0xfc,0x50,0x70,0x78,0x78,0x78,0x78,
|
||||
0x0f,0x0f,0x10,0x1f,0x27,0x3f,0x2b,0x3c,0x2e,0x39,0x2f,0x39,0x2f,0x38,0x2f,0x39,
|
||||
0x1f,0x1c,0x2f,0x3f,0x28,0x3f,0x38,0x2f,0x3c,0x3f,0x08,0x0c,0x1c,0x1c,0x1c,0x1c,
|
||||
0xf0,0xf0,0x08,0xf8,0xe4,0xfc,0xd4,0x3c,0xd4,0x3c,0xf4,0x3c,0xf4,0x1c,0xf4,0xfc,
|
||||
0xf8,0x38,0xf4,0xfc,0x14,0xfc,0x1c,0xf4,0x3c,0xfc,0x20,0x60,0xe0,0xe0,0xe0,0xe0,
|
||||
0x0f,0x0f,0x10,0x1f,0x27,0x3f,0x2b,0x3c,0x2b,0x3c,0x2f,0x3c,0x2f,0x38,0x2f,0x3f,
|
||||
0x1f,0x1c,0x2f,0x3f,0x28,0x3f,0x38,0x2f,0x3c,0x3f,0x0a,0x0e,0x1e,0x1e,0x1e,0x1e,
|
||||
0xf0,0xf0,0x08,0xf8,0xe4,0xfc,0xd4,0x3c,0x74,0x9c,0xf4,0x9c,0xf4,0x1c,0xf4,0x9c,
|
||||
0xf8,0x38,0xf4,0xfc,0x14,0xfc,0x1c,0xf4,0x3c,0xfc,0x50,0x70,0x78,0x78,0x78,0x78,
|
||||
0x0f,0x0f,0x10,0x1f,0x27,0x3f,0x2b,0x3c,0x2b,0x3c,0x2f,0x3c,0x2f,0x38,0x2f,0x3f,
|
||||
0x1f,0x1c,0x2f,0x3f,0x28,0x3f,0x38,0x2f,0x3c,0x3f,0x04,0x06,0x07,0x07,0x07,0x07,
|
||||
0xf0,0xf0,0x08,0xf8,0xe4,0xfc,0xd4,0x3c,0x74,0x9c,0xf4,0x9c,0xf4,0x1c,0xf4,0x9c,
|
||||
0xf8,0x38,0xf4,0xfc,0x14,0xfc,0x1c,0xf4,0x3c,0xfc,0x10,0x30,0x38,0x38,0x38,0x38,
|
||||
0x0f,0x0f,0x10,0x1f,0x27,0x3f,0x20,0x3f,0x20,0x3f,0x20,0x3f,0x20,0x3f,0x20,0x3f,
|
||||
0x1f,0x1f,0x2f,0x3f,0x28,0x3f,0x38,0x2f,0x3c,0x3f,0x0a,0x0e,0x1e,0x1e,0x1e,0x1e,
|
||||
0xf0,0xf0,0x08,0xf8,0xe4,0xfc,0x04,0xfc,0x04,0xfc,0x04,0xfc,0x04,0xfc,0x04,0xfc,
|
||||
0xf8,0xf8,0xf4,0xfc,0x14,0xfc,0x1c,0xf4,0x3c,0xfc,0x50,0x70,0x78,0x78,0x78,0x78,
|
||||
0x0f,0x0f,0x10,0x1f,0x27,0x3f,0x20,0x3f,0x20,0x3f,0x20,0x3f,0x20,0x3f,0x20,0x3f,
|
||||
0x1f,0x1f,0x2f,0x3f,0x28,0x3f,0x38,0x2f,0x3c,0x3f,0x04,0x06,0x07,0x07,0x07,0x07,
|
||||
0xf0,0xf0,0x08,0xf8,0xe4,0xfc,0x04,0xfc,0x04,0xfc,0x04,0xfc,0x04,0xfc,0x04,0xfc,
|
||||
0xf8,0xf8,0xf4,0xfc,0x14,0xfc,0x1c,0xf4,0x3c,0xfc,0x10,0x30,0x38,0x38,0x38,0x38,
|
||||
0x0f,0x0f,0x10,0x1f,0x27,0x3f,0x20,0x3f,0x20,0x3f,0x20,0x3f,0x20,0x3f,0x20,0x3f,
|
||||
0x1f,0x1f,0x2f,0x3f,0x28,0x3f,0x38,0x2f,0x3c,0x3f,0x08,0x0c,0x1c,0x1c,0x1c,0x1c,
|
||||
0xf0,0xf0,0x08,0xf8,0xe4,0xfc,0x04,0xfc,0x04,0xfc,0x04,0xfc,0x04,0xfc,0x04,0xfc,
|
||||
0xf8,0xf8,0xf4,0xfc,0x14,0xfc,0x1c,0xf4,0x3c,0xfc,0x20,0x60,0xe0,0xe0,0xe0,0xe0
|
||||
0x0f,0x0f,0x10,0x1f,
|
||||
0x27,0x3f,0x2b,0x3c,
|
||||
0x2e,0x39,0x2f,0x39,
|
||||
0x2f,0x38,0x2f,0x39,
|
||||
0x1f,0x1c,0x2f,0x3f,
|
||||
0x28,0x3f,0x38,0x2f,
|
||||
0x3c,0x3f,0x0a,0x0e,
|
||||
0x1e,0x1e,0x1e,0x1e,
|
||||
|
||||
0xf0,0xf0,0x08,0xf8,
|
||||
0xe4,0xfc,0xd4,0x3c,
|
||||
0xd4,0x3c,0xf4,0x3c,
|
||||
0xf4,0x1c,0xf4,0xfc,
|
||||
0xf8,0x38,0xf4,0xfc,
|
||||
0x14,0xfc,0x1c,0xf4,
|
||||
0x3c,0xfc,0x50,0x70,
|
||||
0x78,0x78,0x78,0x78,
|
||||
|
||||
0x0f,0x0f,0x10,0x1f,
|
||||
0x27,0x3f,0x2b,0x3c,
|
||||
0x2e,0x39,0x2f,0x39,
|
||||
0x2f,0x38,0x2f,0x39,
|
||||
0x1f,0x1c,0x2f,0x3f,
|
||||
0x28,0x3f,0x38,0x2f,
|
||||
0x3c,0x3f,0x08,0x0c,
|
||||
0x1c,0x1c,0x1c,0x1c,
|
||||
|
||||
0xf0,0xf0,0x08,0xf8,
|
||||
0xe4,0xfc,0xd4,0x3c,
|
||||
0xd4,0x3c,0xf4,0x3c,
|
||||
0xf4,0x1c,0xf4,0xfc,
|
||||
0xf8,0x38,0xf4,0xfc,
|
||||
0x14,0xfc,0x1c,0xf4,
|
||||
0x3c,0xfc,0x20,0x60,
|
||||
0xe0,0xe0,0xe0,0xe0,
|
||||
|
||||
0x0f,0x0f,0x10,0x1f,
|
||||
0x27,0x3f,0x2b,0x3c,
|
||||
0x2b,0x3c,0x2f,0x3c,
|
||||
0x2f,0x38,0x2f,0x3f,
|
||||
0x1f,0x1c,0x2f,0x3f,
|
||||
0x28,0x3f,0x38,0x2f,
|
||||
0x3c,0x3f,0x0a,0x0e,
|
||||
0x1e,0x1e,0x1e,0x1e,
|
||||
|
||||
0xf0,0xf0,0x08,0xf8,
|
||||
0xe4,0xfc,0xd4,0x3c,
|
||||
0x74,0x9c,0xf4,0x9c,
|
||||
0xf4,0x1c,0xf4,0x9c,
|
||||
0xf8,0x38,0xf4,0xfc,
|
||||
0x14,0xfc,0x1c,0xf4,
|
||||
0x3c,0xfc,0x50,0x70,
|
||||
0x78,0x78,0x78,0x78,
|
||||
|
||||
0x0f,0x0f,0x10,0x1f,
|
||||
0x27,0x3f,0x2b,0x3c,
|
||||
0x2b,0x3c,0x2f,0x3c,
|
||||
0x2f,0x38,0x2f,0x3f,
|
||||
0x1f,0x1c,0x2f,0x3f,
|
||||
0x28,0x3f,0x38,0x2f,
|
||||
0x3c,0x3f,0x04,0x06,
|
||||
0x07,0x07,0x07,0x07,
|
||||
|
||||
0xf0,0xf0,0x08,0xf8,
|
||||
0xe4,0xfc,0xd4,0x3c,
|
||||
0x74,0x9c,0xf4,0x9c,
|
||||
0xf4,0x1c,0xf4,0x9c,
|
||||
0xf8,0x38,0xf4,0xfc,
|
||||
0x14,0xfc,0x1c,0xf4,
|
||||
0x3c,0xfc,0x10,0x30,
|
||||
0x38,0x38,0x38,0x38,
|
||||
|
||||
0x0f,0x0f,0x10,0x1f,
|
||||
0x27,0x3f,0x20,0x3f,
|
||||
0x20,0x3f,0x20,0x3f,
|
||||
0x20,0x3f,0x20,0x3f,
|
||||
0x1f,0x1f,0x2f,0x3f,
|
||||
0x28,0x3f,0x38,0x2f,
|
||||
0x3c,0x3f,0x0a,0x0e,
|
||||
0x1e,0x1e,0x1e,0x1e,
|
||||
|
||||
0xf0,0xf0,0x08,0xf8,
|
||||
0xe4,0xfc,0x04,0xfc,
|
||||
0x04,0xfc,0x04,0xfc,
|
||||
0x04,0xfc,0x04,0xfc,
|
||||
0xf8,0xf8,0xf4,0xfc,
|
||||
0x14,0xfc,0x1c,0xf4,
|
||||
0x3c,0xfc,0x50,0x70,
|
||||
0x78,0x78,0x78,0x78,
|
||||
|
||||
0x0f,0x0f,0x10,0x1f,
|
||||
0x27,0x3f,0x20,0x3f,
|
||||
0x20,0x3f,0x20,0x3f,
|
||||
0x20,0x3f,0x20,0x3f,
|
||||
0x1f,0x1f,0x2f,0x3f,
|
||||
0x28,0x3f,0x38,0x2f,
|
||||
0x3c,0x3f,0x04,0x06,
|
||||
0x07,0x07,0x07,0x07,
|
||||
|
||||
0xf0,0xf0,0x08,0xf8,
|
||||
0xe4,0xfc,0x04,0xfc,
|
||||
0x04,0xfc,0x04,0xfc,
|
||||
0x04,0xfc,0x04,0xfc,
|
||||
0xf8,0xf8,0xf4,0xfc,
|
||||
0x14,0xfc,0x1c,0xf4,
|
||||
0x3c,0xfc,0x10,0x30,
|
||||
0x38,0x38,0x38,0x38,
|
||||
|
||||
0x0f,0x0f,0x10,0x1f,
|
||||
0x27,0x3f,0x20,0x3f,
|
||||
0x20,0x3f,0x20,0x3f,
|
||||
0x20,0x3f,0x20,0x3f,
|
||||
0x1f,0x1f,0x2f,0x3f,
|
||||
0x28,0x3f,0x38,0x2f,
|
||||
0x3c,0x3f,0x08,0x0c,
|
||||
0x1c,0x1c,0x1c,0x1c,
|
||||
|
||||
0xf0,0xf0,0x08,0xf8,
|
||||
0xe4,0xfc,0x04,0xfc,
|
||||
0x04,0xfc,0x04,0xfc,
|
||||
0x04,0xfc,0x04,0xfc,
|
||||
0xf8,0xf8,0xf4,0xfc,
|
||||
0x14,0xfc,0x1c,0xf4,
|
||||
0x3c,0xfc,0x20,0x60,
|
||||
0xe0,0xe0,0xe0,0xe0
|
||||
|
||||
};
|
||||
|
||||
const metasprite_t player_metasprite0[] = {
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /player.png -c /player.c -sw 16 -sh 16 -bpp 2 -noflip -keep_palette_order
|
||||
|
||||
#ifndef METASPRITE_player_H
|
||||
#define METASPRITE_player_H
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "player.h"
|
||||
#include "enemy.h"
|
||||
#include "gameover.h"
|
||||
#include "victory.h"
|
||||
#include "stamina.h"
|
||||
#include "maze.h"
|
||||
|
||||
|
||||
+132
-34
@@ -1,5 +1,4 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /stamina.png -c /stamina.c -bpp 2 -noflip -keep_palette_order
|
||||
|
||||
#include <stdint.h>
|
||||
#include <gbdk/platform.h>
|
||||
@@ -8,43 +7,142 @@
|
||||
BANKREF(stamina)
|
||||
|
||||
const palette_color_t stamina_palettes[32] = {
|
||||
RGB8(224,248,207), RGB8(134,192,108), RGB8( 48,104, 80), RGB8( 7, 24, 33),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8(224,248,207), RGB8(134,192,108), RGB8( 48,104, 80), RGB8( 7, 24, 33)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
|
||||
};
|
||||
|
||||
const uint8_t stamina_tiles[416] = {
|
||||
0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xff,0xff,0x00,0xff,0xff,0x7f,0xff,0x7f,0xff,0x7f,0xff,0x7f,0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xff,0xff,0x00,0xff,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xff,0xff,0x00,0xff,0xff,0x1f,0xff,0x1f,0xff,0x1f,0xff,0x1f,0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xff,0xff,0x00,0xff,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xff,0xff,0x00,0xff,0xff,0x07,0xff,0x07,0xff,0x07,0xff,0x07,0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xff,0xff,0x00,0xff,0xff,0x03,0xff,0x03,0xff,0x03,0xff,0x03,0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xff,0xff,0x00,0xff,0xff,0x01,0xff,0x01,0xff,0x01,0xff,0x01,0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xff,0xff,0x00,0xff,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7f,0xff,0x00,0xff,0x7f,0xff,0x7f,0xff,0x7f,0xff,0x7f,0xff,0x00,0xff,0x7f,0xff,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xfe,0xff,0x00,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff,0x00,0xff,0xfe,0xff,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7f,0xff,0x00,0xff,0x7f,0x80,0x7f,0x80,0x7f,0x80,0x7f,0x80,0x00,0xff,0x7f,0xff,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xfe,0xff,0x00,0xff,0xfe,0x01,0xfe,0x01,0xfe,0x01,0xfe,0x01,0x00,0xff,0xfe,0xff,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
0xff,0xff,0x00,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0xff,0xff,0x00,0xff,
|
||||
0xff,0x7f,0xff,0x7f,
|
||||
0xff,0x7f,0xff,0x7f,
|
||||
0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0xff,0xff,0x00,0xff,
|
||||
0xff,0x3f,0xff,0x3f,
|
||||
0xff,0x3f,0xff,0x3f,
|
||||
0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0xff,0xff,0x00,0xff,
|
||||
0xff,0x1f,0xff,0x1f,
|
||||
0xff,0x1f,0xff,0x1f,
|
||||
0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0xff,0xff,0x00,0xff,
|
||||
0xff,0x0f,0xff,0x0f,
|
||||
0xff,0x0f,0xff,0x0f,
|
||||
0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0xff,0xff,0x00,0xff,
|
||||
0xff,0x07,0xff,0x07,
|
||||
0xff,0x07,0xff,0x07,
|
||||
0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0xff,0xff,0x00,0xff,
|
||||
0xff,0x03,0xff,0x03,
|
||||
0xff,0x03,0xff,0x03,
|
||||
0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0xff,0xff,0x00,0xff,
|
||||
0xff,0x01,0xff,0x01,
|
||||
0xff,0x01,0xff,0x01,
|
||||
0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0xff,0xff,0x00,0xff,
|
||||
0xff,0x00,0xff,0x00,
|
||||
0xff,0x00,0xff,0x00,
|
||||
0x00,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0x7f,0xff,0x00,0xff,
|
||||
0x7f,0xff,0x7f,0xff,
|
||||
0x7f,0xff,0x7f,0xff,
|
||||
0x00,0xff,0x7f,0xff,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0xfe,0xff,0x00,0xff,
|
||||
0xfe,0xff,0xfe,0xff,
|
||||
0xfe,0xff,0xfe,0xff,
|
||||
0x00,0xff,0xfe,0xff,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0x7f,0xff,0x00,0xff,
|
||||
0x7f,0x80,0x7f,0x80,
|
||||
0x7f,0x80,0x7f,0x80,
|
||||
0x00,0xff,0x7f,0xff,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
|
||||
0xfe,0xff,0x00,0xff,
|
||||
0xfe,0x01,0xfe,0x01,
|
||||
0xfe,0x01,0xfe,0x01,
|
||||
0x00,0xff,0xfe,0xff,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00
|
||||
|
||||
};
|
||||
|
||||
const metasprite_t stamina_metasprite0[] = {
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /stamina.png -c /stamina.c -bpp 2 -noflip -keep_palette_order
|
||||
|
||||
#ifndef METASPRITE_stamina_H
|
||||
#define METASPRITE_stamina_H
|
||||
|
||||
|
||||
+619
-159
@@ -1,5 +1,4 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /tiles.png -c /tiles.c -map -bpp 2 -noflip -keep_palette_order
|
||||
|
||||
#include <stdint.h>
|
||||
#include <gbdk/platform.h>
|
||||
@@ -8,168 +7,629 @@
|
||||
BANKREF(tiles)
|
||||
|
||||
const palette_color_t tiles_palettes[32] = {
|
||||
RGB8(224,248,207), RGB8(134,192,108), RGB8( 48,104, 80), RGB8( 7, 24, 33),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8(224,248,207), RGB8(134,192,108), RGB8( 48,104, 80), RGB8( 7, 24, 33)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
,
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
|
||||
};
|
||||
|
||||
const uint8_t tiles_tiles[2416] = {
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfc,0xf0,0xf0,0xc0,0xc3,
|
||||
0xff,0xff,0xfc,0xfc,0xf0,0xf0,0xc0,0xc0,0x00,0x03,0x03,0x1c,0x1f,0x60,0x7f,0x80,
|
||||
0xff,0xff,0x3f,0x3f,0x0f,0x0f,0x03,0x03,0x00,0x80,0x80,0x78,0xf8,0x07,0xff,0x00,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f,0x1f,0x1f,0x07,0x87,0x81,0x71,
|
||||
0x81,0x8e,0xe0,0xe1,0xf8,0xf8,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x00,0x1f,0xe0,0x01,0x1e,0x00,0x01,0xc0,0xc0,0xf0,0xf0,0xfc,0xfc,0xff,0xff,
|
||||
0xfe,0x01,0xf8,0x06,0xc0,0x38,0x00,0xc0,0x03,0x03,0x0f,0x0f,0x3f,0x3f,0xff,0xff,
|
||||
0x03,0xc3,0x0f,0x0f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x00,0x01,0x01,0x06,0x07,0x38,0x3f,0xc0,0xff,0x01,0xfc,0x04,0xf0,0x10,0xc0,0x43,
|
||||
0x3f,0xc0,0xfc,0x00,0xf0,0x00,0xc0,0x00,0x00,0x03,0x03,0x1c,0x1f,0x60,0x7f,0x80,
|
||||
0xff,0x01,0xfe,0x07,0xf8,0x3f,0xc0,0xff,0x01,0xff,0x04,0xfc,0x10,0xf0,0x40,0xc3,
|
||||
0xc0,0xff,0x00,0xfc,0x00,0xf0,0x00,0xc0,0x00,0x03,0x03,0x1c,0x1f,0x60,0x7f,0x80,
|
||||
0xf0,0x0e,0x3e,0x01,0x0f,0x00,0x03,0x00,0x00,0x80,0x80,0x78,0xf8,0x07,0xff,0x00,
|
||||
0x00,0x00,0x00,0xe0,0xe0,0x1e,0xfe,0x01,0x7f,0x00,0x1f,0x00,0x07,0x80,0x81,0x70,
|
||||
0x0f,0xfe,0x01,0x3f,0x00,0x0f,0x00,0x03,0x00,0x80,0x80,0x78,0xf8,0x07,0xff,0x00,
|
||||
0xff,0x00,0xff,0xe0,0x1f,0xfe,0x01,0xff,0x00,0x7f,0x00,0x1f,0x00,0x87,0x80,0x71,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,0xf0,0xfc,0xc3,
|
||||
0xff,0xff,0xff,0xfc,0xff,0xf0,0xff,0xc0,0xfc,0x03,0xe0,0x1c,0x80,0x60,0x00,0x80,
|
||||
0xff,0xff,0xff,0x3f,0xff,0x0f,0xff,0x03,0x7f,0x80,0x07,0x78,0x00,0x07,0x00,0x00,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0x1f,0x7f,0x87,0x0f,0x71,
|
||||
0xf0,0x8e,0xfe,0xe1,0xff,0xf8,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0xe0,0xe0,0x1e,0xfe,0x01,0xff,0xc0,0xff,0xf0,0xff,0xfc,0xff,0xff,
|
||||
0x00,0x01,0x01,0x06,0x07,0x38,0x3f,0xc0,0xff,0x03,0xff,0x0f,0xff,0x3f,0xff,0xff,
|
||||
0x3f,0xc3,0xff,0x0f,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xfe,0x01,0xf8,0x06,0xc0,0x38,0x00,0xc0,0x01,0x01,0x07,0x04,0x1f,0x10,0x7c,0x43,
|
||||
0x00,0xc0,0x03,0x00,0x0f,0x00,0x3f,0x00,0xfc,0x03,0xe0,0x1c,0x80,0x60,0x00,0x80,
|
||||
0x01,0xff,0x07,0xfe,0x3f,0xf8,0xff,0xc0,0xff,0x01,0xff,0x04,0xff,0x10,0xfc,0x43,
|
||||
0xff,0xc0,0xff,0x00,0xff,0x00,0xff,0x00,0xfc,0x03,0xe0,0x1c,0x80,0x60,0x00,0x80,
|
||||
0x01,0x0e,0xc0,0x01,0xf0,0x00,0xfc,0x00,0x7f,0x80,0x07,0x78,0x00,0x07,0x00,0x00,
|
||||
0xff,0x00,0x1f,0xe0,0x01,0x1e,0x00,0x01,0x80,0x00,0xe0,0x00,0x78,0x80,0x0e,0x70,
|
||||
0xfe,0x0f,0xff,0x01,0xff,0x00,0xff,0x00,0x7f,0x80,0x07,0x78,0x00,0x07,0x00,0x00,
|
||||
0x00,0xff,0xe0,0xff,0xfe,0x1f,0xff,0x01,0xff,0x00,0xff,0x00,0x7f,0x80,0x0f,0x70,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,0xf0,0xff,0xc3,0xff,
|
||||
0xff,0xff,0xfc,0xff,0xf0,0xff,0xc0,0xff,0x03,0xff,0x1c,0xff,0x60,0xff,0x80,0xff,
|
||||
0xff,0xff,0x3f,0xff,0x0f,0xff,0x03,0xff,0x80,0xff,0x78,0xff,0x07,0xff,0x00,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0x1f,0xff,0x87,0xff,0x71,0xff,
|
||||
0x8e,0xff,0xe1,0xff,0xf8,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x00,0xff,0xe0,0xff,0x1e,0xff,0x01,0xff,0xc0,0xff,0xf0,0xff,0xfc,0xff,0xff,0xff,
|
||||
0x01,0xff,0x06,0xff,0x38,0xff,0xc0,0xff,0x03,0xff,0x0f,0xff,0x3f,0xff,0xff,0xff,
|
||||
0xc3,0xff,0x0f,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x00,0x01,0x01,0x06,0x07,0x38,0x3f,0xc0,0xff,0x01,0xfc,0x07,0xf0,0x1f,0xc3,0x7f,
|
||||
0x3f,0xc0,0xfc,0x03,0xf0,0x0f,0xc0,0x3f,0x03,0xff,0x1c,0xff,0x60,0xff,0x80,0xff,
|
||||
0xff,0x01,0xfe,0x07,0xf8,0x3f,0xc0,0xff,0x01,0xff,0x04,0xff,0x10,0xff,0x43,0xff,
|
||||
0xc0,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x03,0xff,0x1c,0xff,0x60,0xff,0x80,0xff,
|
||||
0xf0,0x0e,0x3e,0xc1,0x0f,0xf0,0x03,0xfc,0x80,0xff,0x78,0xff,0x07,0xff,0x00,0xff,
|
||||
0x00,0x00,0x00,0xe0,0xe0,0x1e,0xfe,0x01,0x7f,0x80,0x1f,0xe0,0x87,0xf8,0x71,0xfe,
|
||||
0x0f,0xfe,0x01,0xff,0x00,0xff,0x00,0xff,0x80,0xff,0x78,0xff,0x07,0xff,0x00,0xff,
|
||||
0xff,0x00,0xff,0xe0,0x1f,0xfe,0x01,0xff,0x00,0xff,0x00,0xff,0x80,0xff,0x70,0xff,
|
||||
0xff,0xff,0xfc,0xff,0xf0,0xff,0xc0,0xff,0x03,0xff,0x1f,0xfc,0x7f,0xe0,0xff,0x80,
|
||||
0xff,0xff,0x3f,0xff,0x0f,0xff,0x03,0xff,0x80,0xff,0xf8,0x7f,0xff,0x07,0xff,0x00,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0x1f,0xff,0x87,0xff,0xf1,0x7f,
|
||||
0x8f,0xfe,0xe1,0xff,0xf8,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x00,0xff,0xe0,0x1f,0xfe,0x01,0xff,0xc0,0xff,0xf0,0xff,0xfc,0xff,0xff,0xff,
|
||||
0xff,0x01,0xfe,0x07,0xf8,0x3f,0xc0,0xff,0x03,0xff,0x0f,0xff,0x3f,0xff,0xff,0xff,
|
||||
0xfe,0x01,0xf8,0x06,0xc0,0x38,0x00,0xc0,0x01,0x01,0x04,0x07,0x10,0x1f,0x43,0x7f,
|
||||
0x00,0xc0,0x00,0x03,0x00,0x0f,0x00,0x3f,0x03,0xff,0x1f,0xfc,0x7f,0xe0,0xff,0x80,
|
||||
0x01,0xff,0x07,0xfe,0x3f,0xf8,0xff,0xc0,0xff,0x01,0xfc,0x07,0xf0,0x1f,0xc3,0x7f,
|
||||
0xff,0xc0,0xfc,0x03,0xf0,0x0f,0xc0,0x3f,0x03,0xff,0x1f,0xfc,0x7f,0xe0,0xff,0x80,
|
||||
0x01,0x0e,0x00,0xc1,0x00,0xf0,0x00,0xfc,0x80,0xff,0xf8,0x7f,0xff,0x07,0xff,0x00,
|
||||
0xff,0x00,0x1f,0xe0,0x01,0x1e,0x00,0x01,0x00,0x80,0x00,0xe0,0x80,0xf8,0xf0,0x7e,
|
||||
0xfe,0x0f,0x3f,0xc1,0x0f,0xf0,0x03,0xfc,0x80,0xff,0xf8,0x7f,0xff,0x07,0xff,0x00,
|
||||
0x00,0xff,0xe0,0xff,0xfe,0x1f,0xff,0x01,0x7f,0x80,0x1f,0xe0,0x87,0xf8,0xf1,0x7e,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfc,0xf0,0xf0,0xc3,0xc0,
|
||||
0xff,0xff,0xfc,0xfc,0xf0,0xf0,0xc3,0xc0,0x0f,0x00,0x3f,0x00,0xff,0x03,0xff,0x0f,
|
||||
0xff,0xff,0x3f,0x3f,0x0f,0x0f,0x03,0xc3,0x00,0xf0,0x00,0xfc,0xc0,0xff,0xf0,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f,0x1f,0x1f,0x07,0x07,0x01,0xc1,
|
||||
0x80,0x80,0xe0,0xe0,0xf8,0xf8,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x3f,0x3f,0x3f,0x0f,0x0f,0x03,0x03,0xc0,0xc0,0xf0,0xf0,0xfc,0xfc,0xff,0xff,
|
||||
0xfc,0xff,0xfc,0xfc,0xf0,0xf0,0xc0,0xc0,0x03,0x03,0x0f,0x0f,0x3f,0x3f,0xff,0xff,
|
||||
0x03,0x03,0x0f,0x0f,0x3f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x00,0x01,0x01,0x06,0x07,0x38,0x3f,0xc0,0xff,0x01,0xfc,0x04,0xf0,0x10,0xc3,0x40,
|
||||
0x3f,0xc0,0xfc,0x00,0xf0,0x00,0xc3,0x00,0x0f,0x00,0x3f,0x00,0xff,0x03,0xff,0x0f,
|
||||
0xff,0x01,0xfe,0x07,0xf8,0x3f,0xc0,0xff,0x01,0xff,0x04,0xfc,0x10,0xf0,0x43,0xc0,
|
||||
0xc0,0xff,0x00,0xfc,0x00,0xf0,0x03,0xc0,0x0f,0x00,0x3f,0x00,0xff,0x03,0xff,0x0f,
|
||||
0xf0,0x0e,0x3e,0x01,0x0f,0x00,0x03,0xc0,0x00,0xf0,0x00,0xfc,0xc0,0xff,0xf0,0xff,
|
||||
0x00,0x00,0x00,0xe0,0xe0,0x1e,0xfe,0x01,0x7f,0x00,0x1f,0x00,0x07,0x00,0x01,0xc0,
|
||||
0x0f,0xfe,0x01,0x3f,0x00,0x0f,0x00,0xc3,0x00,0xf0,0x00,0xfc,0xc0,0xff,0xf0,0xff,
|
||||
0xff,0x00,0xff,0xe0,0x1f,0xfe,0x01,0xff,0x00,0x7f,0x00,0x1f,0x00,0x07,0x00,0xc1,
|
||||
0x80,0x00,0xe0,0x00,0xf8,0x00,0xfe,0x00,0x7f,0x80,0x07,0x78,0x00,0x07,0x00,0x00,
|
||||
0xff,0x3f,0x3f,0x3f,0x0f,0x0f,0x03,0x03,0xc0,0x00,0xf0,0x00,0x7c,0x80,0x0f,0x70,
|
||||
0x00,0x80,0x00,0xe0,0x00,0xf8,0x00,0xfe,0x80,0xff,0xf8,0x7f,0xff,0x07,0xff,0x00,
|
||||
0xff,0x3f,0x3f,0x3f,0x0f,0x0f,0x03,0x03,0x00,0xc0,0x00,0xf0,0x80,0xfc,0xf0,0x7f,
|
||||
0xfc,0xff,0xfc,0xfc,0xf0,0xf0,0xc0,0xc0,0x03,0x00,0x0f,0x00,0x3f,0x00,0xfc,0x03,
|
||||
0x03,0x02,0x0f,0x08,0x3f,0x20,0xff,0x80,0xfc,0x03,0xe0,0x1c,0x80,0x60,0x00,0x80,
|
||||
0xfc,0xff,0xfc,0xfc,0xf0,0xf0,0xc0,0xc0,0x00,0x03,0x00,0x0f,0x00,0x3f,0x03,0xff,
|
||||
0x02,0x03,0x08,0x0f,0x20,0x3f,0x80,0xff,0x03,0xff,0x1f,0xfc,0x7f,0xe0,0xff,0x80,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfc,0xf0,0xf3,0xc0,
|
||||
0xff,0xff,0xff,0xfc,0xfc,0xf0,0xf3,0xc0,0xcf,0x00,0x3f,0x00,0xff,0x03,0xff,0x0f,
|
||||
0xff,0xff,0xff,0x3f,0x3f,0x0f,0x0f,0xc3,0x03,0xf0,0x00,0xfc,0xc0,0xff,0xf0,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0x1f,0x3f,0x07,0x0f,0xc1,
|
||||
0xfc,0x80,0xff,0xe0,0xff,0xf8,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x3f,0x3f,0x3f,0xcf,0x0f,0xf3,0x03,0xfc,0xc0,0xff,0xf0,0xff,0xfc,0xff,0xff,
|
||||
0xfc,0xff,0xfc,0xfc,0xf3,0xf0,0xcf,0xc0,0x3f,0x03,0xff,0x0f,0xff,0x3f,0xff,0xff,
|
||||
0x3f,0x03,0xff,0x0f,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xfe,0x01,0xf8,0x06,0xc0,0x38,0x00,0xc0,0x01,0x01,0x07,0x04,0x1c,0x10,0x73,0x40,
|
||||
0x00,0xc0,0x03,0x00,0x0c,0x00,0x33,0x00,0xcf,0x00,0x3f,0x00,0xff,0x03,0xff,0x0f,
|
||||
0x01,0xff,0x07,0xfe,0x3f,0xf8,0xff,0xc0,0xff,0x01,0xff,0x04,0xfc,0x10,0xf3,0x40,
|
||||
0xff,0xc0,0xff,0x00,0xfc,0x00,0xf3,0x00,0xcf,0x00,0x3f,0x00,0xff,0x03,0xff,0x0f,
|
||||
0x01,0x0e,0xc0,0x01,0x30,0x00,0x0c,0xc0,0x03,0xf0,0x00,0xfc,0xc0,0xff,0xf0,0xff,
|
||||
0xff,0x00,0x1f,0xe0,0x01,0x1e,0x00,0x01,0x80,0x00,0xe0,0x00,0x38,0x00,0x0e,0xc0,
|
||||
0xfe,0x0f,0xff,0x01,0x3f,0x00,0x0f,0xc0,0x03,0xf0,0x00,0xfc,0xc0,0xff,0xf0,0xff,
|
||||
0x00,0xff,0xe0,0xff,0xfe,0x1f,0xff,0x01,0xff,0x00,0xff,0x00,0x3f,0x00,0x0f,0xc0,
|
||||
0x7c,0x00,0x1f,0x00,0x07,0x00,0x01,0x00,0x00,0x80,0x80,0x78,0xf8,0x07,0xff,0x00,
|
||||
0xff,0x3f,0x3f,0x3f,0xcf,0x0f,0xf3,0x03,0x3c,0x00,0x0f,0x00,0x03,0x80,0x80,0x70,
|
||||
0xfc,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x80,0x7f,0xf8,0x07,0xff,0x00,0xff,
|
||||
0xff,0x3f,0x3f,0x3f,0xcf,0x0f,0xf3,0x03,0xfc,0x00,0xff,0x00,0xff,0x80,0x7f,0xf0,
|
||||
0xfc,0xff,0xfc,0xfc,0xf3,0xf0,0xcf,0xc0,0x3c,0x00,0xf0,0x00,0xc0,0x00,0x00,0x03,
|
||||
0x3e,0x02,0xf8,0x08,0xe0,0x20,0x80,0x80,0x00,0x03,0x03,0x1c,0x1f,0x60,0x7f,0x80,
|
||||
0xfc,0xff,0xfc,0xfc,0xf3,0xf0,0xcf,0xc0,0x3f,0x00,0xff,0x00,0xff,0x00,0xff,0x03,
|
||||
0x3f,0x02,0xff,0x08,0xff,0x20,0xff,0x80,0xff,0x03,0xfc,0x1f,0xe0,0x7f,0x80,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,0xf0,0xff,0xc0,0xff,
|
||||
0xff,0xff,0xfc,0xff,0xf0,0xff,0xc0,0xff,0x00,0xff,0x00,0xff,0x03,0xff,0x0f,0xff,
|
||||
0xff,0xff,0x3f,0xff,0x0f,0xff,0xc3,0xff,0xf0,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0x1f,0xff,0x07,0xff,0xc1,0xff,
|
||||
0x80,0xff,0xe0,0xff,0xf8,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x3f,0xff,0x3f,0xff,0x0f,0xff,0x03,0xff,0xc0,0xff,0xf0,0xff,0xfc,0xff,0xff,0xff,
|
||||
0xff,0xff,0xfc,0xff,0xf0,0xff,0xc0,0xff,0x03,0xff,0x0f,0xff,0x3f,0xff,0xff,0xff,
|
||||
0x03,0xff,0x0f,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x00,0x01,0x01,0x06,0x07,0x38,0x3f,0xc0,0xff,0x01,0xfc,0x07,0xf0,0x1f,0xc0,0x7f,
|
||||
0x3f,0xc0,0xfc,0x03,0xf0,0x0f,0xc0,0x3f,0x00,0xff,0x00,0xff,0x03,0xff,0x0f,0xff,
|
||||
0xff,0x01,0xfe,0x07,0xf8,0x3f,0xc0,0xff,0x01,0xff,0x04,0xff,0x10,0xff,0x40,0xff,
|
||||
0xc0,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x03,0xff,0x0f,0xff,
|
||||
0xf0,0x0e,0x3e,0xc1,0x0f,0xf0,0xc3,0xfc,0xf0,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0xe0,0xe0,0x1e,0xfe,0x01,0x7f,0x80,0x1f,0xe0,0x07,0xf8,0xc1,0xfe,
|
||||
0x0f,0xfe,0x01,0xff,0x00,0xff,0xc0,0xff,0xf0,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x00,0xff,0xe0,0x1f,0xfe,0x01,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0xc0,0xff,
|
||||
0x80,0x7f,0xe0,0x1f,0xf8,0x07,0xfe,0x01,0x7f,0x80,0x07,0x78,0x00,0x07,0x00,0x00,
|
||||
0x3f,0xff,0x3f,0xff,0x0f,0xff,0x03,0xff,0xc0,0x3f,0xf0,0x0f,0x7c,0x83,0x0f,0x70,
|
||||
0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x80,0xff,0xf8,0x7f,0xff,0x07,0xff,0x00,
|
||||
0x3f,0xff,0x3f,0xff,0x0f,0xff,0x03,0xff,0x00,0xff,0x00,0xff,0x80,0xff,0xf0,0x7f,
|
||||
0xff,0xff,0xfc,0xff,0xf0,0xff,0xc0,0xff,0x03,0xfc,0x0f,0xf0,0x3f,0xc0,0xfc,0x03,
|
||||
0x03,0xfe,0x0f,0xf8,0x3f,0xe0,0xff,0x80,0xfc,0x03,0xe0,0x1c,0x80,0x60,0x00,0x80,
|
||||
0xff,0xff,0xfc,0xff,0xf0,0xff,0xc0,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x03,0xff,
|
||||
0x02,0xff,0x08,0xff,0x20,0xff,0x80,0xff,0x03,0xff,0x1f,0xfc,0x7f,0xe0,0xff,0x80,
|
||||
0xfe,0x01,0xf8,0x06,0xc0,0x38,0x00,0xc0,0x01,0x01,0x04,0x07,0x10,0x1f,0x40,0x7f,
|
||||
0x00,0xc0,0x00,0x03,0x00,0x0f,0x00,0x3f,0x00,0xff,0x00,0xff,0x03,0xff,0x0f,0xff,
|
||||
0x01,0xff,0x07,0xfe,0x3f,0xf8,0xff,0xc0,0xff,0x01,0xfc,0x07,0xf0,0x1f,0xc0,0x7f,
|
||||
0xff,0xc0,0xfc,0x03,0xf0,0x0f,0xc0,0x3f,0x00,0xff,0x00,0xff,0x03,0xff,0x0f,0xff,
|
||||
0x01,0x0e,0x00,0xc1,0x00,0xf0,0xc0,0xfc,0xf0,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x00,0x1f,0xe0,0x01,0x1e,0x00,0x01,0x00,0x80,0x00,0xe0,0x00,0xf8,0xc0,0xfe,
|
||||
0xfe,0x0f,0x3f,0xc1,0x0f,0xf0,0xc3,0xfc,0xf0,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,
|
||||
0x00,0xff,0xe0,0xff,0xfe,0x1f,0xff,0x01,0x7f,0x80,0x1f,0xe0,0x07,0xf8,0xc1,0xfe,
|
||||
0x00,0x7f,0x00,0x1f,0x00,0x07,0x00,0x01,0x00,0x80,0x80,0x78,0xf8,0x07,0xff,0x00,
|
||||
0x3f,0xff,0x3f,0xff,0x0f,0xff,0x03,0xff,0x00,0x3f,0x00,0x0f,0x00,0x83,0x80,0x70,
|
||||
0x80,0x7f,0xe0,0x1f,0xf8,0x07,0xfe,0x01,0xff,0x80,0x7f,0xf8,0x07,0xff,0x00,0xff,
|
||||
0x3f,0xff,0x3f,0xff,0x0f,0xff,0x03,0xff,0xc0,0x3f,0xf0,0x0f,0xfc,0x83,0x7f,0xf0,
|
||||
0xff,0xff,0xfc,0xff,0xf0,0xff,0xc0,0xff,0x00,0xfc,0x00,0xf0,0x00,0xc0,0x00,0x03,
|
||||
0x02,0xfe,0x08,0xf8,0x20,0xe0,0x80,0x80,0x00,0x03,0x03,0x1c,0x1f,0x60,0x7f,0x80,
|
||||
0xff,0xff,0xfc,0xff,0xf0,0xff,0xc0,0xff,0x03,0xfc,0x0f,0xf0,0x3f,0xc0,0xff,0x03,
|
||||
0x03,0xfe,0x0f,0xf8,0x3f,0xe0,0xff,0x80,0xff,0x03,0xfc,0x1f,0xe0,0x7f,0x80,0xff
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xfc,0xfc,
|
||||
0xf0,0xf0,0xc0,0xc3,
|
||||
0xff,0xff,0xfc,0xfc,
|
||||
0xf0,0xf0,0xc0,0xc0,
|
||||
0x00,0x03,0x03,0x1c,
|
||||
0x1f,0x60,0x7f,0x80,
|
||||
0xff,0xff,0x3f,0x3f,
|
||||
0x0f,0x0f,0x03,0x03,
|
||||
0x00,0x80,0x80,0x78,
|
||||
0xf8,0x07,0xff,0x00,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x7f,0x7f,0x1f,0x1f,
|
||||
0x07,0x87,0x81,0x71,
|
||||
0x81,0x8e,0xe0,0xe1,
|
||||
0xf8,0xf8,0xfe,0xfe,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0x00,0x1f,0xe0,
|
||||
0x01,0x1e,0x00,0x01,
|
||||
0xc0,0xc0,0xf0,0xf0,
|
||||
0xfc,0xfc,0xff,0xff,
|
||||
0xfe,0x01,0xf8,0x06,
|
||||
0xc0,0x38,0x00,0xc0,
|
||||
0x03,0x03,0x0f,0x0f,
|
||||
0x3f,0x3f,0xff,0xff,
|
||||
0x03,0xc3,0x0f,0x0f,
|
||||
0x3f,0x3f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x00,0x01,0x01,0x06,
|
||||
0x07,0x38,0x3f,0xc0,
|
||||
0xff,0x01,0xfc,0x04,
|
||||
0xf0,0x10,0xc0,0x43,
|
||||
0x3f,0xc0,0xfc,0x00,
|
||||
0xf0,0x00,0xc0,0x00,
|
||||
0x00,0x03,0x03,0x1c,
|
||||
0x1f,0x60,0x7f,0x80,
|
||||
0xff,0x01,0xfe,0x07,
|
||||
0xf8,0x3f,0xc0,0xff,
|
||||
0x01,0xff,0x04,0xfc,
|
||||
0x10,0xf0,0x40,0xc3,
|
||||
0xc0,0xff,0x00,0xfc,
|
||||
0x00,0xf0,0x00,0xc0,
|
||||
0x00,0x03,0x03,0x1c,
|
||||
0x1f,0x60,0x7f,0x80,
|
||||
0xf0,0x0e,0x3e,0x01,
|
||||
0x0f,0x00,0x03,0x00,
|
||||
0x00,0x80,0x80,0x78,
|
||||
0xf8,0x07,0xff,0x00,
|
||||
0x00,0x00,0x00,0xe0,
|
||||
0xe0,0x1e,0xfe,0x01,
|
||||
0x7f,0x00,0x1f,0x00,
|
||||
0x07,0x80,0x81,0x70,
|
||||
0x0f,0xfe,0x01,0x3f,
|
||||
0x00,0x0f,0x00,0x03,
|
||||
0x00,0x80,0x80,0x78,
|
||||
0xf8,0x07,0xff,0x00,
|
||||
0xff,0x00,0xff,0xe0,
|
||||
0x1f,0xfe,0x01,0xff,
|
||||
0x00,0x7f,0x00,0x1f,
|
||||
0x00,0x87,0x80,0x71,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xfc,
|
||||
0xff,0xf0,0xfc,0xc3,
|
||||
0xff,0xff,0xff,0xfc,
|
||||
0xff,0xf0,0xff,0xc0,
|
||||
0xfc,0x03,0xe0,0x1c,
|
||||
0x80,0x60,0x00,0x80,
|
||||
0xff,0xff,0xff,0x3f,
|
||||
0xff,0x0f,0xff,0x03,
|
||||
0x7f,0x80,0x07,0x78,
|
||||
0x00,0x07,0x00,0x00,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0x7f,0xff,0x1f,
|
||||
0x7f,0x87,0x0f,0x71,
|
||||
0xf0,0x8e,0xfe,0xe1,
|
||||
0xff,0xf8,0xff,0xfe,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0xe0,
|
||||
0xe0,0x1e,0xfe,0x01,
|
||||
0xff,0xc0,0xff,0xf0,
|
||||
0xff,0xfc,0xff,0xff,
|
||||
0x00,0x01,0x01,0x06,
|
||||
0x07,0x38,0x3f,0xc0,
|
||||
0xff,0x03,0xff,0x0f,
|
||||
0xff,0x3f,0xff,0xff,
|
||||
0x3f,0xc3,0xff,0x0f,
|
||||
0xff,0x3f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xfe,0x01,0xf8,0x06,
|
||||
0xc0,0x38,0x00,0xc0,
|
||||
0x01,0x01,0x07,0x04,
|
||||
0x1f,0x10,0x7c,0x43,
|
||||
0x00,0xc0,0x03,0x00,
|
||||
0x0f,0x00,0x3f,0x00,
|
||||
0xfc,0x03,0xe0,0x1c,
|
||||
0x80,0x60,0x00,0x80,
|
||||
0x01,0xff,0x07,0xfe,
|
||||
0x3f,0xf8,0xff,0xc0,
|
||||
0xff,0x01,0xff,0x04,
|
||||
0xff,0x10,0xfc,0x43,
|
||||
0xff,0xc0,0xff,0x00,
|
||||
0xff,0x00,0xff,0x00,
|
||||
0xfc,0x03,0xe0,0x1c,
|
||||
0x80,0x60,0x00,0x80,
|
||||
0x01,0x0e,0xc0,0x01,
|
||||
0xf0,0x00,0xfc,0x00,
|
||||
0x7f,0x80,0x07,0x78,
|
||||
0x00,0x07,0x00,0x00,
|
||||
0xff,0x00,0x1f,0xe0,
|
||||
0x01,0x1e,0x00,0x01,
|
||||
0x80,0x00,0xe0,0x00,
|
||||
0x78,0x80,0x0e,0x70,
|
||||
0xfe,0x0f,0xff,0x01,
|
||||
0xff,0x00,0xff,0x00,
|
||||
0x7f,0x80,0x07,0x78,
|
||||
0x00,0x07,0x00,0x00,
|
||||
0x00,0xff,0xe0,0xff,
|
||||
0xfe,0x1f,0xff,0x01,
|
||||
0xff,0x00,0xff,0x00,
|
||||
0x7f,0x80,0x0f,0x70,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xfc,0xff,
|
||||
0xf0,0xff,0xc3,0xff,
|
||||
0xff,0xff,0xfc,0xff,
|
||||
0xf0,0xff,0xc0,0xff,
|
||||
0x03,0xff,0x1c,0xff,
|
||||
0x60,0xff,0x80,0xff,
|
||||
0xff,0xff,0x3f,0xff,
|
||||
0x0f,0xff,0x03,0xff,
|
||||
0x80,0xff,0x78,0xff,
|
||||
0x07,0xff,0x00,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x7f,0xff,0x1f,0xff,
|
||||
0x87,0xff,0x71,0xff,
|
||||
0x8e,0xff,0xe1,0xff,
|
||||
0xf8,0xff,0xfe,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x00,0xff,0xe0,0xff,
|
||||
0x1e,0xff,0x01,0xff,
|
||||
0xc0,0xff,0xf0,0xff,
|
||||
0xfc,0xff,0xff,0xff,
|
||||
0x01,0xff,0x06,0xff,
|
||||
0x38,0xff,0xc0,0xff,
|
||||
0x03,0xff,0x0f,0xff,
|
||||
0x3f,0xff,0xff,0xff,
|
||||
0xc3,0xff,0x0f,0xff,
|
||||
0x3f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x00,0x01,0x01,0x06,
|
||||
0x07,0x38,0x3f,0xc0,
|
||||
0xff,0x01,0xfc,0x07,
|
||||
0xf0,0x1f,0xc3,0x7f,
|
||||
0x3f,0xc0,0xfc,0x03,
|
||||
0xf0,0x0f,0xc0,0x3f,
|
||||
0x03,0xff,0x1c,0xff,
|
||||
0x60,0xff,0x80,0xff,
|
||||
0xff,0x01,0xfe,0x07,
|
||||
0xf8,0x3f,0xc0,0xff,
|
||||
0x01,0xff,0x04,0xff,
|
||||
0x10,0xff,0x43,0xff,
|
||||
0xc0,0xff,0x00,0xff,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x03,0xff,0x1c,0xff,
|
||||
0x60,0xff,0x80,0xff,
|
||||
0xf0,0x0e,0x3e,0xc1,
|
||||
0x0f,0xf0,0x03,0xfc,
|
||||
0x80,0xff,0x78,0xff,
|
||||
0x07,0xff,0x00,0xff,
|
||||
0x00,0x00,0x00,0xe0,
|
||||
0xe0,0x1e,0xfe,0x01,
|
||||
0x7f,0x80,0x1f,0xe0,
|
||||
0x87,0xf8,0x71,0xfe,
|
||||
0x0f,0xfe,0x01,0xff,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x80,0xff,0x78,0xff,
|
||||
0x07,0xff,0x00,0xff,
|
||||
0xff,0x00,0xff,0xe0,
|
||||
0x1f,0xfe,0x01,0xff,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x80,0xff,0x70,0xff,
|
||||
0xff,0xff,0xfc,0xff,
|
||||
0xf0,0xff,0xc0,0xff,
|
||||
0x03,0xff,0x1f,0xfc,
|
||||
0x7f,0xe0,0xff,0x80,
|
||||
0xff,0xff,0x3f,0xff,
|
||||
0x0f,0xff,0x03,0xff,
|
||||
0x80,0xff,0xf8,0x7f,
|
||||
0xff,0x07,0xff,0x00,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x7f,0xff,0x1f,0xff,
|
||||
0x87,0xff,0xf1,0x7f,
|
||||
0x8f,0xfe,0xe1,0xff,
|
||||
0xf8,0xff,0xfe,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0x00,0xff,0xe0,
|
||||
0x1f,0xfe,0x01,0xff,
|
||||
0xc0,0xff,0xf0,0xff,
|
||||
0xfc,0xff,0xff,0xff,
|
||||
0xff,0x01,0xfe,0x07,
|
||||
0xf8,0x3f,0xc0,0xff,
|
||||
0x03,0xff,0x0f,0xff,
|
||||
0x3f,0xff,0xff,0xff,
|
||||
0xfe,0x01,0xf8,0x06,
|
||||
0xc0,0x38,0x00,0xc0,
|
||||
0x01,0x01,0x04,0x07,
|
||||
0x10,0x1f,0x43,0x7f,
|
||||
0x00,0xc0,0x00,0x03,
|
||||
0x00,0x0f,0x00,0x3f,
|
||||
0x03,0xff,0x1f,0xfc,
|
||||
0x7f,0xe0,0xff,0x80,
|
||||
0x01,0xff,0x07,0xfe,
|
||||
0x3f,0xf8,0xff,0xc0,
|
||||
0xff,0x01,0xfc,0x07,
|
||||
0xf0,0x1f,0xc3,0x7f,
|
||||
0xff,0xc0,0xfc,0x03,
|
||||
0xf0,0x0f,0xc0,0x3f,
|
||||
0x03,0xff,0x1f,0xfc,
|
||||
0x7f,0xe0,0xff,0x80,
|
||||
0x01,0x0e,0x00,0xc1,
|
||||
0x00,0xf0,0x00,0xfc,
|
||||
0x80,0xff,0xf8,0x7f,
|
||||
0xff,0x07,0xff,0x00,
|
||||
0xff,0x00,0x1f,0xe0,
|
||||
0x01,0x1e,0x00,0x01,
|
||||
0x00,0x80,0x00,0xe0,
|
||||
0x80,0xf8,0xf0,0x7e,
|
||||
0xfe,0x0f,0x3f,0xc1,
|
||||
0x0f,0xf0,0x03,0xfc,
|
||||
0x80,0xff,0xf8,0x7f,
|
||||
0xff,0x07,0xff,0x00,
|
||||
0x00,0xff,0xe0,0xff,
|
||||
0xfe,0x1f,0xff,0x01,
|
||||
0x7f,0x80,0x1f,0xe0,
|
||||
0x87,0xf8,0xf1,0x7e,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xfc,0xfc,
|
||||
0xf0,0xf0,0xc3,0xc0,
|
||||
0xff,0xff,0xfc,0xfc,
|
||||
0xf0,0xf0,0xc3,0xc0,
|
||||
0x0f,0x00,0x3f,0x00,
|
||||
0xff,0x03,0xff,0x0f,
|
||||
0xff,0xff,0x3f,0x3f,
|
||||
0x0f,0x0f,0x03,0xc3,
|
||||
0x00,0xf0,0x00,0xfc,
|
||||
0xc0,0xff,0xf0,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x7f,0x7f,0x1f,0x1f,
|
||||
0x07,0x07,0x01,0xc1,
|
||||
0x80,0x80,0xe0,0xe0,
|
||||
0xf8,0xf8,0xfe,0xfe,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0x3f,0x3f,0x3f,
|
||||
0x0f,0x0f,0x03,0x03,
|
||||
0xc0,0xc0,0xf0,0xf0,
|
||||
0xfc,0xfc,0xff,0xff,
|
||||
0xfc,0xff,0xfc,0xfc,
|
||||
0xf0,0xf0,0xc0,0xc0,
|
||||
0x03,0x03,0x0f,0x0f,
|
||||
0x3f,0x3f,0xff,0xff,
|
||||
0x03,0x03,0x0f,0x0f,
|
||||
0x3f,0x3f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x00,0x01,0x01,0x06,
|
||||
0x07,0x38,0x3f,0xc0,
|
||||
0xff,0x01,0xfc,0x04,
|
||||
0xf0,0x10,0xc3,0x40,
|
||||
0x3f,0xc0,0xfc,0x00,
|
||||
0xf0,0x00,0xc3,0x00,
|
||||
0x0f,0x00,0x3f,0x00,
|
||||
0xff,0x03,0xff,0x0f,
|
||||
0xff,0x01,0xfe,0x07,
|
||||
0xf8,0x3f,0xc0,0xff,
|
||||
0x01,0xff,0x04,0xfc,
|
||||
0x10,0xf0,0x43,0xc0,
|
||||
0xc0,0xff,0x00,0xfc,
|
||||
0x00,0xf0,0x03,0xc0,
|
||||
0x0f,0x00,0x3f,0x00,
|
||||
0xff,0x03,0xff,0x0f,
|
||||
0xf0,0x0e,0x3e,0x01,
|
||||
0x0f,0x00,0x03,0xc0,
|
||||
0x00,0xf0,0x00,0xfc,
|
||||
0xc0,0xff,0xf0,0xff,
|
||||
0x00,0x00,0x00,0xe0,
|
||||
0xe0,0x1e,0xfe,0x01,
|
||||
0x7f,0x00,0x1f,0x00,
|
||||
0x07,0x00,0x01,0xc0,
|
||||
0x0f,0xfe,0x01,0x3f,
|
||||
0x00,0x0f,0x00,0xc3,
|
||||
0x00,0xf0,0x00,0xfc,
|
||||
0xc0,0xff,0xf0,0xff,
|
||||
0xff,0x00,0xff,0xe0,
|
||||
0x1f,0xfe,0x01,0xff,
|
||||
0x00,0x7f,0x00,0x1f,
|
||||
0x00,0x07,0x00,0xc1,
|
||||
0x80,0x00,0xe0,0x00,
|
||||
0xf8,0x00,0xfe,0x00,
|
||||
0x7f,0x80,0x07,0x78,
|
||||
0x00,0x07,0x00,0x00,
|
||||
0xff,0x3f,0x3f,0x3f,
|
||||
0x0f,0x0f,0x03,0x03,
|
||||
0xc0,0x00,0xf0,0x00,
|
||||
0x7c,0x80,0x0f,0x70,
|
||||
0x00,0x80,0x00,0xe0,
|
||||
0x00,0xf8,0x00,0xfe,
|
||||
0x80,0xff,0xf8,0x7f,
|
||||
0xff,0x07,0xff,0x00,
|
||||
0xff,0x3f,0x3f,0x3f,
|
||||
0x0f,0x0f,0x03,0x03,
|
||||
0x00,0xc0,0x00,0xf0,
|
||||
0x80,0xfc,0xf0,0x7f,
|
||||
0xfc,0xff,0xfc,0xfc,
|
||||
0xf0,0xf0,0xc0,0xc0,
|
||||
0x03,0x00,0x0f,0x00,
|
||||
0x3f,0x00,0xfc,0x03,
|
||||
0x03,0x02,0x0f,0x08,
|
||||
0x3f,0x20,0xff,0x80,
|
||||
0xfc,0x03,0xe0,0x1c,
|
||||
0x80,0x60,0x00,0x80,
|
||||
0xfc,0xff,0xfc,0xfc,
|
||||
0xf0,0xf0,0xc0,0xc0,
|
||||
0x00,0x03,0x00,0x0f,
|
||||
0x00,0x3f,0x03,0xff,
|
||||
0x02,0x03,0x08,0x0f,
|
||||
0x20,0x3f,0x80,0xff,
|
||||
0x03,0xff,0x1f,0xfc,
|
||||
0x7f,0xe0,0xff,0x80,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xfc,
|
||||
0xfc,0xf0,0xf3,0xc0,
|
||||
0xff,0xff,0xff,0xfc,
|
||||
0xfc,0xf0,0xf3,0xc0,
|
||||
0xcf,0x00,0x3f,0x00,
|
||||
0xff,0x03,0xff,0x0f,
|
||||
0xff,0xff,0xff,0x3f,
|
||||
0x3f,0x0f,0x0f,0xc3,
|
||||
0x03,0xf0,0x00,0xfc,
|
||||
0xc0,0xff,0xf0,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0x7f,0xff,0x1f,
|
||||
0x3f,0x07,0x0f,0xc1,
|
||||
0xfc,0x80,0xff,0xe0,
|
||||
0xff,0xf8,0xff,0xfe,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0x3f,0x3f,0x3f,
|
||||
0xcf,0x0f,0xf3,0x03,
|
||||
0xfc,0xc0,0xff,0xf0,
|
||||
0xff,0xfc,0xff,0xff,
|
||||
0xfc,0xff,0xfc,0xfc,
|
||||
0xf3,0xf0,0xcf,0xc0,
|
||||
0x3f,0x03,0xff,0x0f,
|
||||
0xff,0x3f,0xff,0xff,
|
||||
0x3f,0x03,0xff,0x0f,
|
||||
0xff,0x3f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xfe,0x01,0xf8,0x06,
|
||||
0xc0,0x38,0x00,0xc0,
|
||||
0x01,0x01,0x07,0x04,
|
||||
0x1c,0x10,0x73,0x40,
|
||||
0x00,0xc0,0x03,0x00,
|
||||
0x0c,0x00,0x33,0x00,
|
||||
0xcf,0x00,0x3f,0x00,
|
||||
0xff,0x03,0xff,0x0f,
|
||||
0x01,0xff,0x07,0xfe,
|
||||
0x3f,0xf8,0xff,0xc0,
|
||||
0xff,0x01,0xff,0x04,
|
||||
0xfc,0x10,0xf3,0x40,
|
||||
0xff,0xc0,0xff,0x00,
|
||||
0xfc,0x00,0xf3,0x00,
|
||||
0xcf,0x00,0x3f,0x00,
|
||||
0xff,0x03,0xff,0x0f,
|
||||
0x01,0x0e,0xc0,0x01,
|
||||
0x30,0x00,0x0c,0xc0,
|
||||
0x03,0xf0,0x00,0xfc,
|
||||
0xc0,0xff,0xf0,0xff,
|
||||
0xff,0x00,0x1f,0xe0,
|
||||
0x01,0x1e,0x00,0x01,
|
||||
0x80,0x00,0xe0,0x00,
|
||||
0x38,0x00,0x0e,0xc0,
|
||||
0xfe,0x0f,0xff,0x01,
|
||||
0x3f,0x00,0x0f,0xc0,
|
||||
0x03,0xf0,0x00,0xfc,
|
||||
0xc0,0xff,0xf0,0xff,
|
||||
0x00,0xff,0xe0,0xff,
|
||||
0xfe,0x1f,0xff,0x01,
|
||||
0xff,0x00,0xff,0x00,
|
||||
0x3f,0x00,0x0f,0xc0,
|
||||
0x7c,0x00,0x1f,0x00,
|
||||
0x07,0x00,0x01,0x00,
|
||||
0x00,0x80,0x80,0x78,
|
||||
0xf8,0x07,0xff,0x00,
|
||||
0xff,0x3f,0x3f,0x3f,
|
||||
0xcf,0x0f,0xf3,0x03,
|
||||
0x3c,0x00,0x0f,0x00,
|
||||
0x03,0x80,0x80,0x70,
|
||||
0xfc,0x00,0xff,0x00,
|
||||
0xff,0x00,0xff,0x00,
|
||||
0xff,0x80,0x7f,0xf8,
|
||||
0x07,0xff,0x00,0xff,
|
||||
0xff,0x3f,0x3f,0x3f,
|
||||
0xcf,0x0f,0xf3,0x03,
|
||||
0xfc,0x00,0xff,0x00,
|
||||
0xff,0x80,0x7f,0xf0,
|
||||
0xfc,0xff,0xfc,0xfc,
|
||||
0xf3,0xf0,0xcf,0xc0,
|
||||
0x3c,0x00,0xf0,0x00,
|
||||
0xc0,0x00,0x00,0x03,
|
||||
0x3e,0x02,0xf8,0x08,
|
||||
0xe0,0x20,0x80,0x80,
|
||||
0x00,0x03,0x03,0x1c,
|
||||
0x1f,0x60,0x7f,0x80,
|
||||
0xfc,0xff,0xfc,0xfc,
|
||||
0xf3,0xf0,0xcf,0xc0,
|
||||
0x3f,0x00,0xff,0x00,
|
||||
0xff,0x00,0xff,0x03,
|
||||
0x3f,0x02,0xff,0x08,
|
||||
0xff,0x20,0xff,0x80,
|
||||
0xff,0x03,0xfc,0x1f,
|
||||
0xe0,0x7f,0x80,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xfc,0xff,
|
||||
0xf0,0xff,0xc0,0xff,
|
||||
0xff,0xff,0xfc,0xff,
|
||||
0xf0,0xff,0xc0,0xff,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x03,0xff,0x0f,0xff,
|
||||
0xff,0xff,0x3f,0xff,
|
||||
0x0f,0xff,0xc3,0xff,
|
||||
0xf0,0xff,0xfc,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x7f,0xff,0x1f,0xff,
|
||||
0x07,0xff,0xc1,0xff,
|
||||
0x80,0xff,0xe0,0xff,
|
||||
0xf8,0xff,0xfe,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x3f,0xff,0x3f,0xff,
|
||||
0x0f,0xff,0x03,0xff,
|
||||
0xc0,0xff,0xf0,0xff,
|
||||
0xfc,0xff,0xff,0xff,
|
||||
0xff,0xff,0xfc,0xff,
|
||||
0xf0,0xff,0xc0,0xff,
|
||||
0x03,0xff,0x0f,0xff,
|
||||
0x3f,0xff,0xff,0xff,
|
||||
0x03,0xff,0x0f,0xff,
|
||||
0x3f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x00,0x01,0x01,0x06,
|
||||
0x07,0x38,0x3f,0xc0,
|
||||
0xff,0x01,0xfc,0x07,
|
||||
0xf0,0x1f,0xc0,0x7f,
|
||||
0x3f,0xc0,0xfc,0x03,
|
||||
0xf0,0x0f,0xc0,0x3f,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x03,0xff,0x0f,0xff,
|
||||
0xff,0x01,0xfe,0x07,
|
||||
0xf8,0x3f,0xc0,0xff,
|
||||
0x01,0xff,0x04,0xff,
|
||||
0x10,0xff,0x40,0xff,
|
||||
0xc0,0xff,0x00,0xff,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x03,0xff,0x0f,0xff,
|
||||
0xf0,0x0e,0x3e,0xc1,
|
||||
0x0f,0xf0,0xc3,0xfc,
|
||||
0xf0,0xff,0xfc,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x00,0x00,0x00,0xe0,
|
||||
0xe0,0x1e,0xfe,0x01,
|
||||
0x7f,0x80,0x1f,0xe0,
|
||||
0x07,0xf8,0xc1,0xfe,
|
||||
0x0f,0xfe,0x01,0xff,
|
||||
0x00,0xff,0xc0,0xff,
|
||||
0xf0,0xff,0xfc,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0x00,0xff,0xe0,
|
||||
0x1f,0xfe,0x01,0xff,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x00,0xff,0xc0,0xff,
|
||||
0x80,0x7f,0xe0,0x1f,
|
||||
0xf8,0x07,0xfe,0x01,
|
||||
0x7f,0x80,0x07,0x78,
|
||||
0x00,0x07,0x00,0x00,
|
||||
0x3f,0xff,0x3f,0xff,
|
||||
0x0f,0xff,0x03,0xff,
|
||||
0xc0,0x3f,0xf0,0x0f,
|
||||
0x7c,0x83,0x0f,0x70,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x80,0xff,0xf8,0x7f,
|
||||
0xff,0x07,0xff,0x00,
|
||||
0x3f,0xff,0x3f,0xff,
|
||||
0x0f,0xff,0x03,0xff,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x80,0xff,0xf0,0x7f,
|
||||
0xff,0xff,0xfc,0xff,
|
||||
0xf0,0xff,0xc0,0xff,
|
||||
0x03,0xfc,0x0f,0xf0,
|
||||
0x3f,0xc0,0xfc,0x03,
|
||||
0x03,0xfe,0x0f,0xf8,
|
||||
0x3f,0xe0,0xff,0x80,
|
||||
0xfc,0x03,0xe0,0x1c,
|
||||
0x80,0x60,0x00,0x80,
|
||||
0xff,0xff,0xfc,0xff,
|
||||
0xf0,0xff,0xc0,0xff,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x00,0xff,0x03,0xff,
|
||||
0x02,0xff,0x08,0xff,
|
||||
0x20,0xff,0x80,0xff,
|
||||
0x03,0xff,0x1f,0xfc,
|
||||
0x7f,0xe0,0xff,0x80,
|
||||
0xfe,0x01,0xf8,0x06,
|
||||
0xc0,0x38,0x00,0xc0,
|
||||
0x01,0x01,0x04,0x07,
|
||||
0x10,0x1f,0x40,0x7f,
|
||||
0x00,0xc0,0x00,0x03,
|
||||
0x00,0x0f,0x00,0x3f,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x03,0xff,0x0f,0xff,
|
||||
0x01,0xff,0x07,0xfe,
|
||||
0x3f,0xf8,0xff,0xc0,
|
||||
0xff,0x01,0xfc,0x07,
|
||||
0xf0,0x1f,0xc0,0x7f,
|
||||
0xff,0xc0,0xfc,0x03,
|
||||
0xf0,0x0f,0xc0,0x3f,
|
||||
0x00,0xff,0x00,0xff,
|
||||
0x03,0xff,0x0f,0xff,
|
||||
0x01,0x0e,0x00,0xc1,
|
||||
0x00,0xf0,0xc0,0xfc,
|
||||
0xf0,0xff,0xfc,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0xff,0x00,0x1f,0xe0,
|
||||
0x01,0x1e,0x00,0x01,
|
||||
0x00,0x80,0x00,0xe0,
|
||||
0x00,0xf8,0xc0,0xfe,
|
||||
0xfe,0x0f,0x3f,0xc1,
|
||||
0x0f,0xf0,0xc3,0xfc,
|
||||
0xf0,0xff,0xfc,0xff,
|
||||
0xff,0xff,0xff,0xff,
|
||||
0x00,0xff,0xe0,0xff,
|
||||
0xfe,0x1f,0xff,0x01,
|
||||
0x7f,0x80,0x1f,0xe0,
|
||||
0x07,0xf8,0xc1,0xfe,
|
||||
0x00,0x7f,0x00,0x1f,
|
||||
0x00,0x07,0x00,0x01,
|
||||
0x00,0x80,0x80,0x78,
|
||||
0xf8,0x07,0xff,0x00,
|
||||
0x3f,0xff,0x3f,0xff,
|
||||
0x0f,0xff,0x03,0xff,
|
||||
0x00,0x3f,0x00,0x0f,
|
||||
0x00,0x83,0x80,0x70,
|
||||
0x80,0x7f,0xe0,0x1f,
|
||||
0xf8,0x07,0xfe,0x01,
|
||||
0xff,0x80,0x7f,0xf8,
|
||||
0x07,0xff,0x00,0xff,
|
||||
0x3f,0xff,0x3f,0xff,
|
||||
0x0f,0xff,0x03,0xff,
|
||||
0xc0,0x3f,0xf0,0x0f,
|
||||
0xfc,0x83,0x7f,0xf0,
|
||||
0xff,0xff,0xfc,0xff,
|
||||
0xf0,0xff,0xc0,0xff,
|
||||
0x00,0xfc,0x00,0xf0,
|
||||
0x00,0xc0,0x00,0x03,
|
||||
0x02,0xfe,0x08,0xf8,
|
||||
0x20,0xe0,0x80,0x80,
|
||||
0x00,0x03,0x03,0x1c,
|
||||
0x1f,0x60,0x7f,0x80,
|
||||
0xff,0xff,0xfc,0xff,
|
||||
0xf0,0xff,0xc0,0xff,
|
||||
0x03,0xfc,0x0f,0xf0,
|
||||
0x3f,0xc0,0xff,0x03,
|
||||
0x03,0xfe,0x0f,0xf8,
|
||||
0x3f,0xe0,0xff,0x80,
|
||||
0xff,0x03,0xfc,0x1f,
|
||||
0xe0,0x7f,0x80,0xff
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /tiles.png -c /tiles.c -map -bpp 2 -noflip -keep_palette_order
|
||||
|
||||
#ifndef METASPRITE_tiles_H
|
||||
#define METASPRITE_tiles_H
|
||||
|
||||
|
||||
+877
-220
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,4 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /title_bg.png -c /title_bg.c -map -bpp 2 -noflip -keep_palette_order -max_palettes 1
|
||||
|
||||
#ifndef METASPRITE_title_bg_H
|
||||
#define METASPRITE_title_bg_H
|
||||
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /victory.png -c /victory.c -bpp 2 -noflip -keep_palette_order
|
||||
|
||||
#include <stdint.h>
|
||||
#include <gbdk/platform.h>
|
||||
#include <gbdk/metasprites.h>
|
||||
|
||||
BANKREF(victory)
|
||||
|
||||
const palette_color_t victory_palettes[32] = {
|
||||
RGB8(224,248,207), RGB8(134,192,108), RGB8( 48,104, 80), RGB8( 7, 24, 33),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0),
|
||||
RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0), RGB8( 0, 0, 0)
|
||||
};
|
||||
|
||||
const uint8_t victory_tiles[224] = {
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x88,0xff,0x88,0xdd,0x88,0xdd,0x88,0xdd,
|
||||
0xc1,0xeb,0xc1,0xe3,0xe3,0xf7,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xc3,0xe7,0xe3,0xf7,0xe3,0xf7,
|
||||
0xe3,0xf7,0xe3,0xf7,0xc3,0xe7,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0x81,0xc3,0x83,0xdf,0x8f,0xdf,
|
||||
0x8f,0xdf,0x83,0xdf,0x81,0xc3,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x81,0xff,0x80,0xc1,0xe3,0xf7,0xe3,0xf7,
|
||||
0xe3,0xf7,0xe3,0xf7,0xe3,0xf7,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0x81,0xc3,0x81,0xdb,0x81,0xdb,
|
||||
0x81,0xdb,0x81,0xdb,0x81,0xc3,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x83,0xff,0x81,0xc3,0x81,0xdb,0x81,0xc3,
|
||||
0x81,0xdb,0x89,0xdb,0x89,0xdb,0x99,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x99,0xff,0x88,0xdd,0xc1,0xeb,0xc1,0xe3,
|
||||
0xe3,0xf7,0xe3,0xf7,0xe3,0xf7,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
||||
};
|
||||
|
||||
const metasprite_t victory_metasprite0[] = {
|
||||
METASPR_ITEM(-8, -28, 0, S_PAL(0)),
|
||||
METASPR_ITEM(0, 8, 2, S_PAL(0)),
|
||||
METASPR_ITEM(0, 8, 4, S_PAL(0)),
|
||||
METASPR_ITEM(0, 8, 6, S_PAL(0)),
|
||||
METASPR_ITEM(0, 8, 8, S_PAL(0)),
|
||||
METASPR_ITEM(0, 8, 10, S_PAL(0)),
|
||||
METASPR_ITEM(0, 8, 12, S_PAL(0)),
|
||||
METASPR_TERM
|
||||
};
|
||||
|
||||
const metasprite_t* const victory_metasprites[1] = {
|
||||
victory_metasprite0
|
||||
};
|
||||
@@ -1,31 +0,0 @@
|
||||
//AUTOGENERATED FILE FROM png2asset
|
||||
// Conversion args: /victory.png -c /victory.c -bpp 2 -noflip -keep_palette_order
|
||||
|
||||
#ifndef METASPRITE_victory_H
|
||||
#define METASPRITE_victory_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <gbdk/platform.h>
|
||||
#include <gbdk/metasprites.h>
|
||||
|
||||
#define victory_TILE_ORIGIN 0
|
||||
#define victory_TILE_W 8
|
||||
#define victory_TILE_H 16
|
||||
#define victory_WIDTH 56
|
||||
#define victory_HEIGHT 16
|
||||
#define victory_TILE_COUNT 14
|
||||
#define victory_PALETTE_COUNT 8
|
||||
#define victory_COLORS_PER_PALETTE 4
|
||||
#define victory_TOTAL_COLORS 32
|
||||
#define victory_PIVOT_X 28
|
||||
#define victory_PIVOT_Y 8
|
||||
#define victory_PIVOT_W 56
|
||||
#define victory_PIVOT_H 16
|
||||
extern const metasprite_t* const victory_metasprites[1];
|
||||
|
||||
BANKREF_EXTERN(victory)
|
||||
|
||||
extern const palette_color_t victory_palettes[32];
|
||||
extern const uint8_t victory_tiles[224];
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user