Ok, so... As usual, every new libnds release I get some problems converting it to pascal. This time a sprite related struct is changed and, when I saw the c source, my face looked like this one: :shock:
Ladies and Gentlemen, the scary "monster":
Code:
typedef union {
struct {
struct {
u16 posY: 8;
union {
struct {
u8: 1;
bool isHidden: 1;
u8: 6;
};
struct {
bool isRotoscale: 1;
bool rsDouble: 1;
tObjMode objMode: 2;
bool isMosaic: 1;
tObjColMode colMode: 1;
tObjShape objShape: 2;
};
};
};
union {
struct {
u16 posX: 9;
u8: 7;
};
struct {
u8: 8;
union {
struct {
u8: 4;
bool hFlip: 1;
bool vFlip: 1;
u8: 2;
};
struct {
u8: 1;
u8 rsMatrixIdx: 5;
tObjSize objSize: 2;
};
};
};
};
struct {
u16 tileIdx: 10;
tObjPriority objPriority: 2;
u8 objPal: 4;
};
u16 attribute3;
};
struct {
uint16 attribute[3];
uint16 filler;
};
} SpriteEntry, * pSpriteEntry;
The main thing that drives me nuts is the fact that neither structs nor unions have a name, as some bit fields too. I could try to break this big nested struct in something smaller (and more readable), but I don't know how this change will be internally "digested" by the library.
Bookmarks