AnimaEngine  1.0.0
Nintendo DS Pokemon Black, White, Black 2, and White 2 sprite extraction and preview toolchain
nmar.h
Go to the documentation of this file.
1 
6 #ifndef NMAR_H
7 #define NMAR_H
8 
9 #include "common.h"
10 
14 typedef struct NmarEntry {
15  int map_index;
17  char label[32];
19 
23 typedef struct NmarFrame {
25  int map_index;
26  int duration;
29  int rotation;
30  int scale_x;
31  int scale_y;
35 
39 typedef struct NmarAnimation {
41  int loop_start;
43  int format;
45  char label[32];
48 
52 typedef struct NmarFile {
58 
66 int Nmar_Parse(
67  const u8 *data,
68  size_t size,
69  NmarFile *out_nmar
70 );
71 
77 int Nmar_GetIdleMapIndex(const NmarFile *nmar);
78 
87  const NmarFile *nmar,
88  int idle_map,
89  int map_count
90 );
91 
101  const NmarFile *nmar,
102  int animation_index,
103  int tick,
104  NmarFrame *out_frame
105 );
106 
114  const NmarFile *nmar,
115  int animation_index
116 );
117 
122 void Nmar_Free(NmarFile *nmar);
123 
128 void Nmar_PrintInfo(const NmarFile *nmar);
129 
130 #endif
131 
Common types, macros, and standard library includes used throughout AnimaEngine.
unsigned int u32
Definition: common.h:16
unsigned short u16
Definition: common.h:15
unsigned char u8
Definition: common.h:14
struct NmarEntry NmarEntry
Represents an individual layout mapping metadata entry record.
int Nmar_GetIdleBreakMapIndex(const NmarFile *nmar, int idle_map, int map_count)
Resolves rare idle break candidate layout map index.
Definition: nmar.c:460
struct NmarAnimation NmarAnimation
Represents an individual animation timeline sequence block.
void Nmar_PrintInfo(const NmarFile *nmar)
Debug prints NMAR layout stats to stdout.
Definition: nmar.c:655
int Nmar_GetIdleMapIndex(const NmarFile *nmar)
Resolves default idle layout map index.
Definition: nmar.c:443
int Nmar_GetFrameAtTick(const NmarFile *nmar, int animation_index, int tick, NmarFrame *out_frame)
Resolves keyframe attributes at a specific tick timing step.
Definition: nmar.c:587
struct NmarFrame NmarFrame
Represents a single keyframe configuration block in a multi-animation sequence.
void Nmar_Free(NmarFile *nmar)
Deallocates all resources held inside an NmarFile structure.
Definition: nmar.c:636
struct NmarFile NmarFile
Unpacked representation of a complete .NMAR resource.
int Nmar_GetTotalDuration(const NmarFile *nmar, int animation_index)
Calculates total duration of a timeline sequence in ticks.
Definition: nmar.c:618
int Nmar_Parse(const u8 *data, size_t size, NmarFile *out_nmar)
Parses an unpacked .NMAR animation resource block from raw bytes.
Definition: nmar.c:357
Represents an individual animation timeline sequence block.
Definition: nmar.h:39
NmarFrame * frames
Definition: nmar.h:46
int loop_start
Definition: nmar.h:41
int playback_type
Definition: nmar.h:42
char label[32]
Definition: nmar.h:45
int frame_count
Definition: nmar.h:40
int format
Definition: nmar.h:43
u32 raw_frame_offset
Definition: nmar.h:44
Represents an individual layout mapping metadata entry record.
Definition: nmar.h:14
char label[32]
Definition: nmar.h:17
u16 flags
Definition: nmar.h:16
int map_index
Definition: nmar.h:15
Unpacked representation of a complete .NMAR resource.
Definition: nmar.h:52
NmarAnimation * animations
Definition: nmar.h:56
int entry_count
Definition: nmar.h:53
int animation_count
Definition: nmar.h:55
NmarEntry * entries
Definition: nmar.h:54
Represents a single keyframe configuration block in a multi-animation sequence.
Definition: nmar.h:23
int scale_x
Definition: nmar.h:30
int translate_x
Definition: nmar.h:32
int duration
Definition: nmar.h:26
u16 marker
Definition: nmar.h:27
u32 raw_element_offset
Definition: nmar.h:24
int scale_y
Definition: nmar.h:31
int rotation
Definition: nmar.h:29
int transform_type
Definition: nmar.h:28
int map_index
Definition: nmar.h:25
int translate_y
Definition: nmar.h:33