Skip to content

Commit b91bc46

Browse files
committed
KASEN'S ROLLING SPHEAL
1 parent 4524ae1 commit b91bc46

File tree

3 files changed

+267
-0
lines changed

3 files changed

+267
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,267 @@
1+
## Rolling Spheal Animation
2+
- Please credit Kasen for use
3+
4+
![spheal.png](spheal.png)
5+
6+
![spheal.gif](spheal.gif)
7+
8+
This requires some code changes to make work properly.
9+
10+
Since there's so many frames, the `sPicTable` is different from normal. Here's mine:
11+
12+
```
13+
static const struct SpriteFrameImage sPicTable_Spheal[] = {
14+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 0),
15+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 1),
16+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 2),
17+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 3),
18+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 4),
19+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 5),
20+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 6),
21+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 7),
22+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 8),
23+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 9),
24+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 10),
25+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 11),
26+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 12),
27+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 13),
28+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 14),
29+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 15),
30+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 16),
31+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 17),
32+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 18),
33+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 19),
34+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 20),
35+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 21),
36+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 22),
37+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 23),
38+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 24),
39+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 25),
40+
overworld_frame(gObjectEventPic_Spheal, 4, 4, 26),
41+
};
42+
```
43+
44+
You'll also need custom animations for the actual rolling. These go in `src\data\object_events\object_event_anims.h`:
45+
46+
```
47+
static const union AnimCmd *const sAnimTable_Spheal[] = {
48+
[ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth,
49+
[ANIM_STD_FACE_NORTH] = sAnim_FaceNorth,
50+
[ANIM_STD_FACE_WEST] = sAnim_FaceWest,
51+
[ANIM_STD_FACE_EAST] = sAnim_FaceEast,
52+
[ANIM_STD_GO_SOUTH] = sAnim_GoSouthSpheal,
53+
[ANIM_STD_GO_NORTH] = sAnim_GoNorthSpheal,
54+
[ANIM_STD_GO_WEST] = sAnim_GoWestSpheal,
55+
[ANIM_STD_GO_EAST] = sAnim_GoEastSpheal,
56+
[ANIM_STD_GO_FAST_SOUTH] = sAnim_GoSouthFastSpheal,
57+
[ANIM_STD_GO_FAST_NORTH] = sAnim_GoNorthFastSpheal,
58+
[ANIM_STD_GO_FAST_WEST] = sAnim_GoWestFastSpheal,
59+
[ANIM_STD_GO_FAST_EAST] = sAnim_GoEastFastSpheal,
60+
[ANIM_STD_GO_FASTER_SOUTH] = sAnim_GoSouthFasterSpheal,
61+
[ANIM_STD_GO_FASTER_NORTH] = sAnim_GoNorthFasterSpheal,
62+
[ANIM_STD_GO_FASTER_WEST] = sAnim_GoWestFasterSpheal,
63+
[ANIM_STD_GO_FASTER_EAST] = sAnim_GoEastFasterSpheal,
64+
[ANIM_STD_GO_FASTEST_SOUTH] = sAnim_GoSouthFastestSpheal,
65+
[ANIM_STD_GO_FASTEST_NORTH] = sAnim_GoNorthFastestSpheal,
66+
[ANIM_STD_GO_FASTEST_WEST] = sAnim_GoWestFastestSpheal,
67+
[ANIM_STD_GO_FASTEST_EAST] = sAnim_GoEastFastestSpheal,
68+
};
69+
```
70+
71+
These are a bit fast for my taste but I couldn't really make them slower without some desync issues.
72+
73+
```
74+
static const union AnimCmd sAnim_GoSouthSpheal[] =
75+
{
76+
ANIMCMD_FRAME(3, 2),
77+
ANIMCMD_FRAME(4, 2),
78+
ANIMCMD_FRAME(5, 2),
79+
ANIMCMD_FRAME(6, 2),
80+
ANIMCMD_FRAME(7, 2),
81+
ANIMCMD_FRAME(8, 2),
82+
ANIMCMD_FRAME(9, 2),
83+
ANIMCMD_FRAME(10, 2),
84+
ANIMCMD_JUMP(0),
85+
};
86+
87+
static const union AnimCmd sAnim_GoNorthSpheal[] =
88+
{
89+
ANIMCMD_FRAME(11, 2),
90+
ANIMCMD_FRAME(12, 2),
91+
ANIMCMD_FRAME(13, 2),
92+
ANIMCMD_FRAME(14, 2),
93+
ANIMCMD_FRAME(15, 2),
94+
ANIMCMD_FRAME(16, 2),
95+
ANIMCMD_FRAME(17, 2),
96+
ANIMCMD_FRAME(18, 2),
97+
ANIMCMD_JUMP(0),
98+
};
99+
100+
static const union AnimCmd sAnim_GoWestSpheal[] =
101+
{
102+
ANIMCMD_FRAME(19, 2),
103+
ANIMCMD_FRAME(20, 2),
104+
ANIMCMD_FRAME(21, 2),
105+
ANIMCMD_FRAME(22, 2),
106+
ANIMCMD_FRAME(23, 2),
107+
ANIMCMD_FRAME(24, 2),
108+
ANIMCMD_FRAME(25, 2),
109+
ANIMCMD_FRAME(26, 2),
110+
ANIMCMD_JUMP(0),
111+
};
112+
113+
static const union AnimCmd sAnim_GoEastSpheal[] =
114+
{
115+
ANIMCMD_FRAME(19, 2, .hFlip = TRUE),
116+
ANIMCMD_FRAME(20, 2, .hFlip = TRUE),
117+
ANIMCMD_FRAME(21, 2, .hFlip = TRUE),
118+
ANIMCMD_FRAME(22, 2, .hFlip = TRUE),
119+
ANIMCMD_FRAME(23, 2, .hFlip = TRUE),
120+
ANIMCMD_FRAME(24, 2, .hFlip = TRUE),
121+
ANIMCMD_FRAME(25, 2, .hFlip = TRUE),
122+
ANIMCMD_FRAME(26, 2, .hFlip = TRUE),
123+
ANIMCMD_JUMP(0),
124+
};
125+
126+
static const union AnimCmd sAnim_GoSouthFastSpheal[] =
127+
{
128+
ANIMCMD_FRAME(3, 1),
129+
ANIMCMD_FRAME(4, 1),
130+
ANIMCMD_FRAME(5, 1),
131+
ANIMCMD_FRAME(6, 1),
132+
ANIMCMD_FRAME(7, 1),
133+
ANIMCMD_FRAME(8, 1),
134+
ANIMCMD_FRAME(9, 1),
135+
ANIMCMD_FRAME(10, 1),
136+
ANIMCMD_JUMP(0),
137+
};
138+
139+
static const union AnimCmd sAnim_GoNorthFastSpheal[] =
140+
{
141+
ANIMCMD_FRAME(11, 1),
142+
ANIMCMD_FRAME(12, 1),
143+
ANIMCMD_FRAME(13, 1),
144+
ANIMCMD_FRAME(14, 1),
145+
ANIMCMD_FRAME(15, 1),
146+
ANIMCMD_FRAME(16, 1),
147+
ANIMCMD_FRAME(17, 1),
148+
ANIMCMD_FRAME(18, 1),
149+
ANIMCMD_JUMP(0),
150+
};
151+
152+
static const union AnimCmd sAnim_GoWestFastSpheal[] =
153+
{
154+
ANIMCMD_FRAME(19, 1),
155+
ANIMCMD_FRAME(20, 1),
156+
ANIMCMD_FRAME(21, 1),
157+
ANIMCMD_FRAME(22, 1),
158+
ANIMCMD_FRAME(23, 1),
159+
ANIMCMD_FRAME(24, 1),
160+
ANIMCMD_FRAME(25, 1),
161+
ANIMCMD_FRAME(26, 1),
162+
ANIMCMD_JUMP(0),
163+
};
164+
165+
static const union AnimCmd sAnim_GoEastFastSpheal[] =
166+
{
167+
ANIMCMD_FRAME(19, 1, .hFlip = TRUE),
168+
ANIMCMD_FRAME(20, 1, .hFlip = TRUE),
169+
ANIMCMD_FRAME(21, 1, .hFlip = TRUE),
170+
ANIMCMD_FRAME(22, 1, .hFlip = TRUE),
171+
ANIMCMD_FRAME(23, 1, .hFlip = TRUE),
172+
ANIMCMD_FRAME(24, 1, .hFlip = TRUE),
173+
ANIMCMD_FRAME(25, 1, .hFlip = TRUE),
174+
ANIMCMD_FRAME(26, 1, .hFlip = TRUE),
175+
ANIMCMD_JUMP(0),
176+
};
177+
178+
static const union AnimCmd sAnim_GoSouthFasterSpheal[] =
179+
{
180+
ANIMCMD_FRAME(3, 1),
181+
ANIMCMD_FRAME(5, 1),
182+
ANIMCMD_FRAME(7, 1),
183+
ANIMCMD_FRAME(9, 1),
184+
ANIMCMD_JUMP(0),
185+
};
186+
187+
static const union AnimCmd sAnim_GoNorthFasterSpheal[] =
188+
{
189+
ANIMCMD_FRAME(11, 1),
190+
ANIMCMD_FRAME(13, 1),
191+
ANIMCMD_FRAME(15, 1),
192+
ANIMCMD_FRAME(17, 1),
193+
ANIMCMD_JUMP(0),
194+
};
195+
196+
static const union AnimCmd sAnim_GoWestFasterSpheal[] =
197+
{
198+
ANIMCMD_FRAME(19, 1),
199+
ANIMCMD_FRAME(21, 1),
200+
ANIMCMD_FRAME(23, 1),
201+
ANIMCMD_FRAME(25, 1),
202+
ANIMCMD_JUMP(0),
203+
};
204+
205+
static const union AnimCmd sAnim_GoEastFasterSpheal[] =
206+
{
207+
ANIMCMD_FRAME(19, 1, .hFlip = TRUE),
208+
ANIMCMD_FRAME(21, 1, .hFlip = TRUE),
209+
ANIMCMD_FRAME(23, 1, .hFlip = TRUE),
210+
ANIMCMD_FRAME(25, 1, .hFlip = TRUE),
211+
ANIMCMD_JUMP(0),
212+
};
213+
214+
static const union AnimCmd sAnim_GoSouthFastestSpheal[] =
215+
{
216+
ANIMCMD_FRAME(3, 1),
217+
ANIMCMD_FRAME(5, 1),
218+
ANIMCMD_FRAME(7, 1),
219+
ANIMCMD_FRAME(9, 1),
220+
ANIMCMD_JUMP(0),
221+
};
222+
223+
static const union AnimCmd sAnim_GoNorthFastestSpheal[] =
224+
{
225+
ANIMCMD_FRAME(13, 1),
226+
ANIMCMD_FRAME(15, 1),
227+
ANIMCMD_FRAME(17, 1),
228+
ANIMCMD_FRAME(11, 1),
229+
ANIMCMD_JUMP(0),
230+
};
231+
232+
static const union AnimCmd sAnim_GoWestFastestSpheal[] =
233+
{
234+
ANIMCMD_FRAME(21, 1),
235+
ANIMCMD_FRAME(23, 1),
236+
ANIMCMD_FRAME(25, 1),
237+
ANIMCMD_FRAME(19, 1),
238+
ANIMCMD_JUMP(0),
239+
};
240+
241+
static const union AnimCmd sAnim_GoEastFastestSpheal[] =
242+
{
243+
ANIMCMD_FRAME(21, 1, .hFlip = TRUE),
244+
ANIMCMD_FRAME(23, 1, .hFlip = TRUE),
245+
ANIMCMD_FRAME(25, 1, .hFlip = TRUE),
246+
ANIMCMD_FRAME(19, 1, .hFlip = TRUE),
247+
ANIMCMD_JUMP(0),
248+
};
249+
```
250+
251+
And finally, still in the same file:
252+
253+
```diff
254+
static const struct StepAnimTable sStepAnimTables[] = {
255+
{
256+
.anims = sAnimTable_QuintyPlump,
257+
.animPos = {1, 3, 0, 2},
258+
},
259+
{
260+
.anims = sAnimTable_Standard,
261+
.animPos = {1, 3, 0, 2},
262+
},
263+
+ {
264+
+ .anims = sAnimTable_Spheal,
265+
+ .animPos = {0, 0, 0, 0},
266+
+ },
267+
```
Loading
Loading

0 commit comments

Comments
 (0)