NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
ef_res_animcurve.h
1#ifndef NW4R_EF_RES_ANIM_CURVE_H
2#define NW4R_EF_RES_ANIM_CURVE_H
3#include <nw4r/types_nw4r.h>
4
5#include <nw4r/math.h>
6
7#define NW4R_EF_MAGIC_ANIMCURVE 0xAC
8#define NW4R_EF_MAGIC_ANIMBAKED 0xAB
9
10namespace nw4r {
11namespace ef {
12
13enum AnimCurveType {
14 AC_TYPE_PARTICLE_U8 = 0,
15 AC_TYPE_PARTICLE_F32 = 3,
16 AC_TYPE_PARTICLE_ROTATE = 6,
17 AC_TYPE_PARTICLE_TEXTURE = 4,
18 AC_TYPE_CHILD = 5
19};
20
21enum AnimCurveTarget {
22 // AC_TYPE_PARTICLE_U8
23 AC_TARGET_COLOR0PRI,
24 AC_TARGET_ALPHA0PRI,
25 AC_TARGET_COLOR0SEC,
26 AC_TARGET_ALPHA0SEC,
27 AC_TARGET_COLOR1PRI,
28 AC_TARGET_ALPHA1PRI,
29 AC_TARGET_COLOR1SEC,
30 AC_TARGET_ALPHA1SEC,
31 AC_TARGET_ACMPREF0,
32 AC_TARGET_ACMPREF1,
33
34 // AC_TYPE_PARTICLE_F32
35 AC_TARGET_SIZE,
36 AC_TARGET_SCALE,
37 AC_TARGET_12,
38 AC_TARGET_TEXTURE1SCALE = 17,
39 AC_TARGET_TEXTURE1ROTATE,
40 AC_TARGET_TEXTURE1TRANSLATE,
41 AC_TARGET_TEXTURE2SCALE,
42 AC_TARGET_TEXTURE2ROTATE,
43 AC_TARGET_TEXTURE2TRANSLATE,
44 AC_TARGET_TEXTUREINDSCALE,
45 AC_TARGET_TEXTUREINDROTATE,
46 AC_TARGET_TEXTUREINDTRANSLATE,
47
48 AC_TARGET_UNK32 = 32,
49 AC_TARGET_FIELD_SPEED,
50 AC_TARGET_UNK34,
51 AC_TARGET_UNK35,
52 AC_TARGET_UNK36,
53 AC_TARGET_UNK38 = 38, // FieldSpin?
54 AC_TARGET_UNK39,
55 AC_TARGET_EMIT_COMMONPARAM = 64,
56 AC_TARGET_EMIT_SCALE,
57 AC_TARGET_EMIT_ROTATE,
58 AC_TARGET_EMIT_TRANSLATE,
59 AC_TARGET_EMIT_SPEED_ORIG,
60 AC_TARGET_EMIT_SPEED_YAXIS,
61 AC_TARGET_EMIT_SPEED_RANDOM,
62 AC_TARGET_EMIT_SPEED_NORMAL,
63 AC_TARGET_EMIT_SPEED_SPECDIR,
64 AC_TARGET_EMIT_EMISSION,
65
66 // AC_TYPE_PARTICLE_ROTATE
67 AC_TARGET_ROTATE = 12,
68
69 // Texture target
70 // AC_TARGET_TEXTURE1 = 23,
71 // AC_TARGET_TEXTURE2 = 24,
72 // AC_TARGET_TEXTUREIND = 25,
73
74 // Child target
75 // AC_TARGET_CHILD = 26,
76
77 // Field target
78 // AC_TARGET_FIELD_GRAVITY = 27,
79 // AC_TARGET_FIELD_SPEED = 28,
80 // AC_TARGET_FIELD_MAGNET = 29,
81 // AC_TARGET_FIELD_NEWTON = 30,
82 // AC_TARGET_FIELD_VORTEX = 31,
83 // AC_TARGET_FIELD_SPIN = 32,
84 // AC_TARGET_FIELD_RANDOM = 33,
85 // AC_TARGET_FIELD_TAIL = 34,
86
87 // Postfield target
88 // AC_TARGET_POSTFIELD_SIZE = 35,
89 // AC_TARGET_POSTFIELD_ROTATE = 36,
90 // AC_TARGET_POSTFIELD_TRANSLATE = 37,
91};
92
94 enum ProcessFlag {
95 PROC_FLAG_SYNC = (1 << 2),
96 PROC_FLAG_STOP = (1 << 3),
97 PROC_FLAG_TIMING = (1 << 4),
98 PROC_FLAG_INFLOOP = (1 << 5),
99 PROC_FLAG_TURN = (1 << 6),
100 PROC_FLAG_FITTING = (1 << 7),
101 };
102
103 u8 magic; // at 0x0
104 u8 kindType; // at 0x1
105 u8 curveFlag; // at 0x2
106 u8 kindEnable; // at 0x3
107 u8 processFlag; // at 0x4
108 u8 loopCount; // at 0x5
109 u16 randomSeed; // at 0x6
110 u16 frameLength; // at 0x8
111 u16 PADDING_0xA; // at 0xA
112 ulong keyTable; // at 0xC
113 ulong rangeTable; // at 0x10
114 ulong randomTable; // at 0x14
115 ulong nameTable; // at 0x18
116 ulong infoTable; // at 0x1C
117};
118
120 u16 count; // at 0x0
121 u16 PADDING_0x2; // at 0x2
122 u8 datas[1]; // at 0x4
123};
124
126 u16 count; // at 0x0
127 u16 PADDING_0x2; // at 0x2
128 u8 datas[1]; // at 0x4
129};
130
132 u16 count; // at 0x0
133 u16 PADDING_0x2; // at 0x2
134 u8 datas[1]; // at 0x4
135};
136
138 struct Name {
139 ulong work; // at 0x0
140 };
141
142 u16 count; // at 0x0
143 u16 PADDING_0x2; // at 0x2
144 Name datas[1]; // at 0x4
145};
146
148private:
149 u8* mAnimCurveData; // at 0x0
150};
151
152} // namespace ef
153} // namespace nw4r
154
155#endif