summaryrefslogtreecommitdiff
path: root/arm9/lib/src/GX_g3.c
blob: 66e34dc70ee958369420655ed2d6f337ec17084a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "global.h"
#include "main.h"
#include "gx.h"


void G3_BeginMakeDL(struct DL *displaylist, void *r1, u32 r2){
    displaylist->var0C = r2;
    displaylist->var08 = r1;
    displaylist->var00 = r1;
    displaylist->var04 = (u32 *)r1 + 1;
    displaylist->var10 = 0x0;
}

s32 G3_EndMakeDL(struct DL *displaylist){
    if (displaylist->var08 == displaylist->var00)
        return 0;
    //pads the buffer with 0 to 4byte alignment if needed
    switch((u32)displaylist->var00 & 0x3)
    {
    case 0:
        return displaylist->var00 - displaylist->var08;
    case 1:
        *displaylist->var00++ = 0x0;
    case 2:
        *displaylist->var00++ = 0x0;
    case 3:
        *displaylist->var00++ = 0x0;
    }
    if (displaylist->var10)
    {
        *displaylist->var04++ = 0x0;
        displaylist->var10 = 0x0;
    }
    displaylist->var00 = (u8 *)displaylist->var04;
    return displaylist->var00 - displaylist->var08;
}