summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
Diffstat (limited to 'src/code')
-rw-r--r--src/code/gfxalloc.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/code/gfxalloc.c b/src/code/gfxalloc.c
new file mode 100644
index 0000000..62b63c5
--- /dev/null
+++ b/src/code/gfxalloc.c
@@ -0,0 +1,29 @@
+#include "gfxalloc.h"
+#include "alignment.h"
+
+Gfx* gfxopen(Gfx* gfxHead) {
+ return gfxHead + 1;
+}
+
+Gfx* gfxclose(Gfx* gfxHead, Gfx* gfx) {
+ if (gfxHead + 1 != gfx) {
+ gSPBranchList(gfxHead, gfx);
+ return gfx;
+ } else {
+ gSPNoOp(gfxHead);
+ return gfxHead;
+ }
+}
+
+void* gfxalloc(Gfx** gfxP, size_t size) {
+ u8* ptr;
+ Gfx* dst;
+
+ size = ALIGN8(size);
+ ptr = (u8*)(*gfxP + 1);
+ dst = (Gfx*)(ptr + size);
+ gSPBranchList(*gfxP, dst);
+
+ *gfxP = dst;
+ return ptr;
+}