Asset Overview
Una Aventura Inesperada uses two types of graphics assets:- Tile-based sprites - 8x8 pixel tiles for game objects
- Full-screen bitmaps - 256x192 pixel images for menus/cinematics
Asset File Types
Header Files (.h)
Header files declare external bitmap arrays (~/workspace/source/source/HUD.h):
.s files
Assembly Files (.s)
Assembly files contain the actual bitmap data in ARM assembly format:Tile System
Tile Definition
Tiles are stored as 8×8 pixel arrays inteselas.h (~/workspace/source/source/teselas.h:1):
- Each value is a palette index (0-26)
- 64 bytes per 8×8 tile
- Indexed color (256 color palette)
Tile Memory Layout
Tiles are loaded into VRAM sequentially (~/workspace/source/source/main.c:1067):
Tile index = (memory offset) / 64. For example,
tileMemory+(64*8) = index 8.Sprite Definitions
The game uses composite sprites built from multiple tiles:Player Sprite (16×16 pixels)
Enemy Sprite (16×16 pixels)
NPC Sprite (16×16 pixels)
Box Sprite (16×16 pixels)
Wall Tiles
Palette System
The game uses a 27-color palette defined at startup (~/workspace/source/source/main.c:175):
RGB15 Format
Nintendo DS uses 15-bit color (RGB555):- Red: 5 bits (0-31)
- Green: 5 bits (0-31)
- Blue: 5 bits (0-31)
- Total: 32,768 possible colors
Color index 12 (dark purple) is used as the transparent color for sprites.
Image Assets
The game includes these full-screen (256×192) bitmap assets:Menu Assets
| File | Purpose | Usage |
|---|---|---|
menuPrincipal.h/.s | Main menu screen | Title screen with “Start” and “Credits” buttons |
menuCreditos.h/.s | Credits screen | Developer information |
HUD.h/.s | In-game HUD | Stamina bar and game UI |
Cinematic Assets
Question Assets
Asset Pipeline
Source to Game Flow
Create Source Image
Design graphics in any image editor:
- Format: PNG or BMP
- Size: 256×192 for fullscreen, 8×8/16×16 for tiles
- Colors: Use palette-friendly colors (limit to ~27 colors)
Convert with grit
Convert image to NDS format:Generates:
image.s- Assembly bitmap dataimage.h- C header declarations
Tile Creation Workflow
- Design 8×8 tiles in a pixel art editor
- Extract palette indices (0-26) for each pixel
- Create C array in
teselas.h: - Load into VRAM with
dmaCopy()inInicializarTeselas() - Reference by index in map arrays
Memory Usage
Tile Memory
The game loads approximately 94 tiles into VRAM:Bitmap Memory
Each fullscreen bitmap:ConfigurarInterrupciones() (main.c:256)
Creating New Assets
Adding a New Tile
- Design your 8×8 tile
- Add to
teselas.h: - Load in
InicializarTeselas(): - Use in map arrays:
Adding a New Bitmap
- Create 256×192 PNG image
- Convert with grit:
- Add to
main.c: - Display:
Remember to add both the
.h and .s files to your build system.