Files

59 lines
1.1 KiB
Plaintext

// Groove Coaster Android/arcade *_ext.dat
// LoadExtData starts reading at byte 6. Bytes after notes are not consumed by
// the recovered Android routine and are intentionally left untyped.
struct NoteTimingEntry {
u32 timeMs;
u32 mode;
float value;
} [[single_color]];
struct NoteTimingList {
u16 size;
NoteTimingEntry entries[size];
} [[single_color]];
enum NoteType : u8 {
NONE = 0,
NORMAL = 1,
FLICK = 2,
HOLD = 3,
SCRATCH = 4,
BEAT = 5,
MERRY_GO_ROUND = 6,
HIDDEN = 7,
HIDDEN2 = 8,
CRITICAL = 9,
SLIDE_HOLD = 10,
SLIDE_COUNTER = 11,
TURN = 12,
SPIN = 13,
FINISH = 14,
DUAL_HOLD = 15,
};
struct Note {
u32 timeMs;
NoteType type;
u8 typeOverride;
s16 params16[9];
u8 flag24;
float params25[3];
u8 flag37;
u8 flag38;
float params39[4];
u32 params55[3];
float param67;
u32 param71;
float params75[5];
u32 param95;
} [[single_color]];
struct StageExtension {
NoteTimingList noteTimings[4];
u32 unknown;
u32 noteCount;
Note notes[noteCount];
};
u8 prefix[6] @ 0x00;
StageExtension extension @ 0x06;