diff options
author | Logan Hunt <loganthebean222@gmail.com> | 2020-08-10 14:04:44 -0600 |
---|---|---|
committer | Logan Hunt <loganthebean222@gmail.com> | 2020-08-10 14:04:44 -0600 |
commit | e09a23f0a4f342aa83854ce8cc11aacc09e350fd (patch) | |
tree | 07e8b8365705d9df134e59fa2a0215ba1d902c35 /source/toolbox.c | |
parent | 7f856467a086ec9a3ebd1ccdf12e578dffb9c98b (diff) | |
download | geometry-dash-gba-e09a23f0a4f342aa83854ce8cc11aacc09e350fd.tar.gz geometry-dash-gba-e09a23f0a4f342aa83854ce8cc11aacc09e350fd.zip |
Added rotation
Diffstat (limited to 'source/toolbox.c')
-rw-r--r-- | source/toolbox.c | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/source/toolbox.c b/source/toolbox.c new file mode 100644 index 0000000..32042a0 --- /dev/null +++ b/source/toolbox.c @@ -0,0 +1,82 @@ +// +// toolbox.c +// +// Tools source for obj_demo +// +// (20060922-20060924, cearn) +// +// === NOTES === +// * This is a _small_ set of typedefs, #defines and inlines that can +// be found in tonclib, and might not represent the +// final forms. + +#include "../include/toolbox.h" + +// === (tonc_core.c) ================================================== + +u16 __key_curr= 0, __key_prev= 0; + +// === (tonc_oam.c) =================================================== + +void oam_init(OBJ_ATTR *obj, u32 count) +{ + u32 nn= count; + u32 *dst= (u32*)obj; + + // Hide each object + while(nn--) + { + *dst++= ATTR0_HIDE; + *dst++= 0; + } + // init oam + oam_copy(oam_mem, obj, count); +} + +void oam_copy(OBJ_ATTR *dst, const OBJ_ATTR *src, u32 count) +{ + +// NOTE: while struct-copying is the Right Thing to do here, +// there's a strange bug in DKP that sometimes makes it not work +// If you see problems, just use the word-copy version. +#if 1 + while(count--) + *dst++ = *src++; +#else + u32 *dstw= (u32*)dst, *srcw= (u32*)src; + while(count--) + { + *dstw++ = *srcw++; + *dstw++ = *srcw++; + } +#endif + +} + +void obj_copy(OBJ_ATTR *dst, const OBJ_ATTR *src, u32 count) +{ + int ii; + for(ii=0; ii<count; ii++) + { + dst[ii].attr0= src[ii].attr0; + dst[ii].attr1= src[ii].attr1; + dst[ii].attr2= src[ii].attr2; + } +} + +void obj_affine_copy (OBJ_AFFINE *dst, const OBJ_AFFINE *src, u32 count) { + // Copy affine attributes from one pointer to another + for (int i = 0; i < count; i++) { + dst->pa = src->pa; dst->pb = src->pb; + dst->pc = src->pc; dst->pd = src->pd; + + dst++; + src++; + } +} + +void obj_affine_identity(OBJ_AFFINE *aff) { + // Make a pointer point to a identity affine matrix + aff->pa = 1 << 8; aff->pb = 0; + aff->pc = 0 ; aff->pd = 1 << 8; +} |