libdragon
Loading...
Searching...
No Matches
sprite_internal.h
Go to the documentation of this file.
1
5#ifndef __LIBDRAGON_SPRITE_INTERNAL_H
6#define __LIBDRAGON_SPRITE_INTERNAL_H
7
8#include <stdbool.h>
9#include <surface.h>
10
11#define SPRITE_FLAG_NUMLODS 0x0007
12#define SPRITE_FLAG_HAS_TEXPARMS 0x0008
13#define SPRITE_FLAG_HAS_DETAIL 0x0010
14#define SPRITE_FLAG_FITS_TMEM 0x0020
15
25typedef struct sprite_ext_s {
26 uint16_t size;
27 uint16_t version;
28 uint32_t pal_file_pos;
30 struct sprite_lod_s {
31 uint16_t width;
32 uint16_t height;
33 uint32_t fmt_file_pos;
34 } lods[7];
35 struct {
36 uint16_t flags;
37 uint16_t padding;
38 };
40 struct texparms_s {
41 struct {
42 float translate;
43 float repeats;
44 int16_t scale_log;
45 bool mirror;
46 int8_t padding;
47 } s, t; // S/T directions of texture parameters
48 } texparms;
50 struct detail_s {
51 struct texparms_s texparms;
54 uint8_t padding[3];
55 } detail;
57
58_Static_assert(sizeof(sprite_ext_t) == 124, "invalid sizeof(sprite_ext_t)");
59
61bool __sprite_upgrade(sprite_t *sprite);
62
63#endif
Sprite structure.
Definition sprite.h:42
uint32_t pal_file_pos
Definition sprite_internal.h:28
uint32_t fmt_file_pos
Top 8 bits: format; lowest 24 bits: absolute offset in the file.
Definition sprite_internal.h:33
bool use_main_texture
True if the detail texture is the same as the LOD0 of the main texture.
Definition sprite_internal.h:53
uint16_t version
Version of the structure (currently 1)
Definition sprite_internal.h:27
bool __sprite_upgrade(sprite_t *sprite)
Convert a sprite from the old format with implicit texture format.
Definition sprite.c:39
uint16_t height
Height of this LOD.
Definition sprite_internal.h:32
uint16_t size
Size of the structure itself (for forward compatibility)
Definition sprite_internal.h:26
float blend_factor
Blending factor for the detail texture at maximum zoom (0=hidden, 1=opaque)
Definition sprite_internal.h:52
uint16_t width
Width of this LOD.
Definition sprite_internal.h:31
Internal structure used as additional sprite header.
Definition sprite_internal.h:25
Detail texture parameters.
Definition sprite_internal.h:50
Information on LODs.
Definition sprite_internal.h:30
RDP texture parameters.
Definition sprite_internal.h:40
Surface buffers used to draw images.