Copying and filling routines | |
void * | tonccpy (void *dst, const void *src, uint size) |
VRAM-safe cpy. | |
void * | __toncset (void *dst, u32 fill, uint size) |
VRAM-safe memset, internal routine. | |
INLINE void * | toncset (void *dst, u8 src, uint count) |
VRAM-safe memset, byte version. Size in bytes. | |
INLINE void * | toncset16 (void *dst, u16 src, uint count) |
VRAM-safe memset, halfword version. Size in hwords. | |
INLINE void * | toncset32 (void *dst, u32 src, uint count) |
VRAM-safe memset, word version. Size in words. | |
void | memset16 (void *dst, u16 hw, uint hwcount) |
Fastfill for halfwords, analogous to memset(). | |
void | memcpy16 (void *dst, const void *src, uint hwcount) |
IWRAM_CODE void | memset32 (void *dst, u32 wd, uint wdcount) |
Fast-fill by words, analogous to memset(). | |
IWRAM_CODE void | memcpy32 (void *dst, const void *src, uint wdcount) |
#define | GRIT_CPY(dst, name) memcpy16(dst, name, name##Len/2) |
Simplified copier for GRIT-exported data. | |
Repeated-value creators | |
These function take a hex-value and duplicate it to all fields, like 0x88 -> 0x88888888. | |
INLINE u16 | dup8 (u8 x) |
Duplicate a byte to form a halfword: 0x12 -> 0x1212. | |
INLINE u32 | dup16 (u16 x) |
Duplicate a halfword to form a word: 0x1234 -> 0x12341234. | |
INLINE u32 | quad8 (u8 x) |
Quadruple a byte to form a word: 0x12 -> 0x12121212. | |
INLINE u32 | octup (u8 x) |
Octuple a nybble to form a word: 0x1 -> 0x11111111. | |
Packing routines. | |
INLINE u16 | bytes2hword (u8 b0, u8 b1) |
Pack 2 bytes into a word. Little-endian order. | |
INLINE u32 | bytes2word (u8 b0, u8 b1, u8 b2, u8 b3) |
Pack 4 bytes into a word. Little-endian order. | |
INLINE u32 | hword2word (u16 h0, u16 h1) |
Pack 2 bytes into a word. Little-endian order. | |
Defines | |
#define | countof(_array) ( sizeof(_array)/sizeof(_array[0]) ) |
Get the number of elements in an array. | |
Functions | |
INLINE uint | align (uint x, uint width) |
Align x to the next multiple of width. |
void* __toncset | ( | void * | dst, | |
u32 | fill, | |||
uint | size | |||
) |
VRAM-safe memset, internal routine.
This version mimics memset in functionality, with the benefit of working for VRAM as well. It is also slightly faster than the original memset.
dst | Destination pointer. | |
fill | Word to fill with. | |
size | Fill-length in bytes. |
void memcpy16 | ( | void * | dst, | |
const void * | src, | |||
uint | hwcount | |||
) |
Copy for halfwords.
Uses memcpy32()
if hwn>6 and src and dst are aligned equally.
dst | Destination address. | |
src | Source address. | |
hwcount | Number of halfwords to fill. |
r0 and r1 return as dst + hwcount*2 and src + hwcount*2.
IWRAM_CODE void memcpy32 | ( | void * | dst, | |
const void * | src, | |||
uint | wdcount | |||
) |
Fast-copy by words.
Like CpuFastFill(), only without the requirement of 32byte chunks
dst | Destination address. | |
src | Source address. | |
wdcount | Number of words. |
r0 and r1 return as dst + wdcount*4 and src + wdcount*4.
void memset16 | ( | void * | dst, | |
u16 | hw, | |||
uint | hwcount | |||
) |
Fastfill for halfwords, analogous to memset().
Uses memset32()
if hwcount>5
dst | Destination address. | |
hw | Source halfword (not address). | |
hwcount | Number of halfwords to fill. |
r0 returns as dst + hwcount*2.
IWRAM_CODE void memset32 | ( | void * | dst, | |
u32 | wd, | |||
uint | wdcount | |||
) |
Fast-fill by words, analogous to memset().
Like CpuFastSet(), only without the requirement of 32byte chunks and no awkward store-value-in-memory-first issue.
dst | Destination address. | |
wd | Fill word (not address). | |
wdcount | Number of words to fill. |
r0 returns as dst + wdcount*4.
void* tonccpy | ( | void * | dst, | |
const void * | src, | |||
uint | size | |||
) |
VRAM-safe cpy.
This version mimics memcpy in functionality, with the benefit of working for VRAM as well. It is also slightly faster than the original memcpy, but faster implementations can be made.
dst | Destination pointer. | |
src | Source pointer. | |
size | Fill-length in bytes. |