AnimaEngine  1.0.0
Nintendo DS Pokemon Black, White, Black 2, and White 2 sprite extraction and preview toolchain
Functions
nmar.c File Reference
#include "nmar.h"
#include "file_util.h"
#include "nitro_util.h"

Functions

static void DumpSectionHex (const u8 *data, size_t offset, u32 size)
 
static int ReadLabel (const u8 *data, size_t section_end, size_t string_offset, char out_label[32])
 
static void ApplyLabels (const u8 *data, size_t size, NmarFile *out_nmar)
 
static void NmarFrame_SetIdentityTransform (NmarFrame *frame)
 
static void Nmar_ReadFrameElement (const u8 *element, int frame_type, NmarFrame *frame)
 
static u32 Nmar_FrameElementSizeForType (int frame_type)
 
static int TryParseKnbaTiming (const u8 *data, size_t size, size_t section_offset, u32 section_size, NmarFile *out_nmar)
 
static int TryParseSectionData (const u8 *data, size_t section_offset, u32 section_size, NmarFile *out_nmar, int use_hdr_entry_count)
 
int Nmar_Parse (const u8 *data, size_t size, NmarFile *out_nmar)
 Parses an unpacked .NMAR animation resource block from raw bytes. More...
 
int Nmar_GetIdleMapIndex (const NmarFile *nmar)
 Resolves default idle layout map index. More...
 
int Nmar_GetIdleBreakMapIndex (const NmarFile *nmar, int idle_map, int map_count)
 Resolves rare idle break candidate layout map index. More...
 
static int Nmar_FrameDuration (const NmarFrame *frame)
 
static int Nmar_FrameDurationRange (const NmarAnimation *animation, int start_frame, int end_frame, int step)
 
static int Nmar_SelectFrameInRange (const NmarAnimation *animation, int start_frame, int end_frame, int step, int tick)
 
static int Nmar_SelectFrameForward (const NmarAnimation *animation, int tick, int loop)
 
int Nmar_GetFrameAtTick (const NmarFile *nmar, int animation_index, int tick, NmarFrame *out_frame)
 Resolves keyframe attributes at a specific tick timing step. More...
 
int Nmar_GetTotalDuration (const NmarFile *nmar, int animation_index)
 Calculates total duration of a timeline sequence in ticks. More...
 
void Nmar_Free (NmarFile *nmar)
 Deallocates all resources held inside an NmarFile structure. More...
 
void Nmar_PrintInfo (const NmarFile *nmar)
 Debug prints NMAR layout stats to stdout. More...
 

Function Documentation

◆ ApplyLabels()

static void ApplyLabels ( const u8 data,
size_t  size,
NmarFile out_nmar 
)
static

◆ DumpSectionHex()

static void DumpSectionHex ( const u8 data,
size_t  offset,
u32  size 
)
static

◆ Nmar_FrameDuration()

static int Nmar_FrameDuration ( const NmarFrame frame)
static

◆ Nmar_FrameDurationRange()

static int Nmar_FrameDurationRange ( const NmarAnimation animation,
int  start_frame,
int  end_frame,
int  step 
)
static

◆ Nmar_FrameElementSizeForType()

static u32 Nmar_FrameElementSizeForType ( int  frame_type)
static

◆ Nmar_Free()

void Nmar_Free ( NmarFile nmar)

Deallocates all resources held inside an NmarFile structure.

Parameters
nmarPointer to structure.

◆ Nmar_GetFrameAtTick()

int Nmar_GetFrameAtTick ( const NmarFile nmar,
int  animation_index,
int  tick,
NmarFrame out_frame 
)

Resolves keyframe attributes at a specific tick timing step.

Parameters
nmarPointer to parsed NMAR structure.
animation_indexAnimation timeline index.
tickTarget timing step.
out_frameDestination frame structure.
Returns
0 on success; negative value on index errors.

◆ Nmar_GetIdleBreakMapIndex()

int Nmar_GetIdleBreakMapIndex ( const NmarFile nmar,
int  idle_map,
int  map_count 
)

Resolves rare idle break candidate layout map index.

Parameters
nmarPointer to parsed NMAR structure.
idle_mapBase idle map index.
map_countTotal number of maps available.
Returns
Alternative idle map index candidate, or base idle index if none.

◆ Nmar_GetIdleMapIndex()

int Nmar_GetIdleMapIndex ( const NmarFile nmar)

Resolves default idle layout map index.

Parameters
nmarPointer to parsed NMAR structure.
Returns
Map index, or 0 if not found.

◆ Nmar_GetTotalDuration()

int Nmar_GetTotalDuration ( const NmarFile nmar,
int  animation_index 
)

Calculates total duration of a timeline sequence in ticks.

Parameters
nmarPointer to parsed NMAR structure.
animation_indexTarget animation sequence.
Returns
Total tick duration length.

◆ Nmar_Parse()

int Nmar_Parse ( const u8 data,
size_t  size,
NmarFile out_nmar 
)

Parses an unpacked .NMAR animation resource block from raw bytes.

Parameters
dataRaw binary input buffer.
sizeInput stream size in bytes.
out_nmarDestination NmarFile structure.
Returns
0 on success; negative value on formatting or invalid signature errors.

◆ Nmar_PrintInfo()

void Nmar_PrintInfo ( const NmarFile nmar)

Debug prints NMAR layout stats to stdout.

Parameters
nmarPointer to parsed NMAR file.

◆ Nmar_ReadFrameElement()

static void Nmar_ReadFrameElement ( const u8 element,
int  frame_type,
NmarFrame frame 
)
static

◆ Nmar_SelectFrameForward()

static int Nmar_SelectFrameForward ( const NmarAnimation animation,
int  tick,
int  loop 
)
static

◆ Nmar_SelectFrameInRange()

static int Nmar_SelectFrameInRange ( const NmarAnimation animation,
int  start_frame,
int  end_frame,
int  step,
int  tick 
)
static

◆ NmarFrame_SetIdentityTransform()

static void NmarFrame_SetIdentityTransform ( NmarFrame frame)
static

◆ ReadLabel()

static int ReadLabel ( const u8 data,
size_t  section_end,
size_t  string_offset,
char  out_label[32] 
)
static

◆ TryParseKnbaTiming()

static int TryParseKnbaTiming ( const u8 data,
size_t  size,
size_t  section_offset,
u32  section_size,
NmarFile out_nmar 
)
static

◆ TryParseSectionData()

static int TryParseSectionData ( const u8 data,
size_t  section_offset,
u32  section_size,
NmarFile out_nmar,
int  use_hdr_entry_count 
)
static