Digimon World 3 decomp
The European version, SLES_039.36
Loading...
Searching...
No Matches
slides.c
Go to the documentation of this file.
1/* The two parts of the title, which slide in from the sides of the screen */
2
3#include "menus/title.h"
4
5/* Draws the second part of the title (sprite 1) for the European version's language 0 */
7 SpriteDrawer sprite;
8
9 initSpriteDrawer(&sprite);
10 sprite.setLayerId(task->layerId, 0);
11 sprite.setAltClut(0, 0x1F0);
12 sprite.setTexture(0x280, STDWTITL_TEXTURE_Y);
13 sprite.draw(FILE_CACHE.getEntry(STDWTITL_spriteBank), 1, task->x, task->y);
14}
15
16/* The second part of the title for the European version's language 0: waits until
17 shown, then slides in from the right in 10 steps; with skip it starts in place */
19 switch (task->state) {
20 case TASK_INIT:
21 default:
22 if (task->skip == 0) {
23 task->x = 527;
24 task->y = 34;
25 task->nextState(task);
26 } else {
27 task->setState(task, TASK_DONE);
28 }
29 break;
30 case TASK_RUN:
31 switch (task->substate) {
32 case 0:
33 break;
34 case 1:
35 task->steps = 10;
36 task->nextSubstate(task);
37 /* fallthrough */
38 case 2:
39 task->x = task->steps * 32 + 207;
40 if (task->steps-- <= 0) {
41 task->setState(task, TASK_DONE);
42 }
44 break;
45 }
46 break;
47 case TASK_DONE:
48 if (task->substate == 0) {
49 task->x = 207;
50 task->y = 34;
51 task->nextSubstate(task);
52 }
54 break;
55 case TASK_KILL:
56 break;
57 }
58}
59
60/* Starts sliding in the second part of the title (the task's show), only while it waits */
62 if (task->state == TASK_RUN) {
63 task->setSubstate(task, 1);
64 }
65}
66
67/* Creates the second part of the title (task) for the European version's language 0 */
70
73 task->depth = 2;
74 task->skip = skip;
75 return task;
76}
77
78/* Draws the second part of the title (sprite 1) */
80 SpriteDrawer sprite;
81
82 initSpriteDrawer(&sprite);
83 sprite.setLayerId(task->layerId, 0);
84 sprite.setAltClut(0, 0x1F0);
85 sprite.setTexture(0x280, STDWTITL_TEXTURE_Y);
86 sprite.draw(FILE_CACHE.getEntry(STDWTITL_spriteBank), 1, task->x, task->y);
87}
88
89/* The second part of the title: waits until shown, then slides in from the right
90 in 10 steps (skip is not used) */
92 switch (task->state) {
93 case TASK_INIT:
94 default:
95 task->x = 339;
96 task->y = 111;
97 task->nextState(task);
98 break;
99 case TASK_RUN:
100 switch (task->substate) {
101 case 0:
102 break;
103 case 1:
104 task->steps = 10;
105 task->nextSubstate(task);
106 /* fallthrough */
107 case 2:
108 task->x = task->steps * 32 + 19;
109 if (task->steps-- <= 0) {
110 task->setState(task, TASK_DONE);
111 }
113 break;
114 }
115 break;
116 case TASK_DONE:
117 if (task->substate == 0) {
118 task->x = 19;
119 task->y = 111;
120 task->nextSubstate(task);
121 }
123 break;
124 case TASK_KILL:
125 break;
126 }
127}
128
129/* Creates the second part of the title (task) */
132
135 task->depth = 2;
136 task->skip = skip;
137 return task;
138}
139
140/* Draws the first part of the title (sprite 0) for the European version's language 0 */
142 SpriteDrawer sprite;
143
144 initSpriteDrawer(&sprite);
145 sprite.setLayerId(task->layerId, 0);
146 sprite.setAltClut(0, 0x1F0);
147 sprite.setTexture(0x280, STDWTITL_TEXTURE_Y);
148 sprite.draw(FILE_CACHE.getEntry(STDWTITL_spriteBank), 0, task->x, task->y);
149}
150
151/* The first part of the title for the European version's language 0: waits until
152 shown, then slides in from the left in 10 steps; with skip it starts in place */
154 switch (task->state) {
155 case TASK_INIT:
156 default:
157 if (task->skip == 0) {
158 task->x = -303;
159 task->y = 61;
160 task->nextState(task);
161 } else {
162 task->setState(task, TASK_DONE);
163 }
164 break;
165 case TASK_RUN:
166 switch (task->substate) {
167 case 0:
168 break;
169 case 1:
170 task->steps = 10;
171 task->nextSubstate(task);
172 /* fallthrough */
173 case 2:
174 task->x = -(task->steps * 320) / 10 + 17;
175 if (task->steps-- <= 0) {
176 task->setState(task, TASK_DONE);
177 }
179 break;
180 }
181 break;
182 case TASK_DONE:
183 if (task->substate == 0) {
184 task->x = 17;
185 task->y = 61;
186 task->nextSubstate(task);
187 }
189 break;
190 case TASK_KILL:
191 break;
192 }
193}
194
195/* Starts sliding in the first part of the title (the task's show), only while it waits */
197 if (task->state == TASK_RUN) {
198 task->setSubstate(task, 1);
199 }
200}
201
202/* Creates the first part of the title (task) for the European version's language 0 */
205
208 task->depth = 2;
209 task->skip = skip;
210 return task;
211}
212
213/* Draws the first part of the title (sprite 0) */
215 SpriteDrawer sprite;
216
217 initSpriteDrawer(&sprite);
218 sprite.setLayerId(task->layerId, 0);
219 sprite.setAltClut(0, 0x1F0);
220 sprite.setTexture(0x280, STDWTITL_TEXTURE_Y);
221 sprite.draw(FILE_CACHE.getEntry(STDWTITL_spriteBank), 0, task->x, task->y);
222}
223
224/* The first part of the title: waits until shown, then slides in from the left in
225 10 steps (skip is not used) */
227 switch (task->state) {
228 case TASK_INIT:
229 default:
230 task->x = -301;
231 task->y = 24;
232 task->nextState(task);
233 break;
234 case TASK_RUN:
235 switch (task->substate) {
236 case 0:
237 break;
238 case 1:
239 task->steps = 10;
240 task->nextSubstate(task);
241 /* fallthrough */
242 case 2:
243 task->x = -(task->steps * 320) / 10 + 19;
244 if (task->steps-- <= 0) {
245 task->setState(task, TASK_DONE);
246 }
248 break;
249 }
250 break;
251 case TASK_DONE:
252 if (task->substate == 0) {
253 task->x = 19;
254 task->y = 24;
255 task->nextSubstate(task);
256 }
258 break;
259 case TASK_KILL:
260 break;
261 }
262}
263
264/* Creates the first part of the title (task) */
267
270 task->depth = 2;
271 task->skip = skip;
272 return task;
273}
signed int s32
Definition common.h:11
s32 STDWTITL_spriteBank
Definition title.c:72
#define TASK_RUN
Definition task.h:35
#define TASK_KILL
Definition task.h:37
#define TASK_INIT
Tasks: every game object is a task, a heap block that starts with this header and is updated once per...
Definition task.h:34
#define TASK_DONE
Definition task.h:36
FileCache FILE_CACHE
The file cache.
Definition file_cache.c:7
void STDWTITL_drawTitle0Alt(SlideTask *task)
Draws the first part of the title (sprite 0) for the European version's language 0.
Definition slides.c:141
void STDWTITL_drawTitle1Alt(SlideTask *task)
Draws the second part of the title (sprite 1) for the European version's language 0.
Definition slides.c:6
SlideTask * STDWTITL_startTitle0AltTask(s32 skip)
Creates the first part of the title (task) for the European version's language 0.
Definition slides.c:203
void STDWTITL_tickTitle1(SlideTask *task)
The second part of the title: waits until shown, then slides in from the right in 10 steps (skip is n...
Definition slides.c:91
void STDWTITL_drawTitle0(SlideTask *task)
Draws the first part of the title (sprite 0)
Definition slides.c:214
void STDWTITL_showTitle0(SlideTask *task)
Starts sliding in the first part of the title (the task's show), only while it waits.
Definition slides.c:196
SlideTask * STDWTITL_startTitle1AltTask(s32 skip)
Creates the second part of the title (task) for the European version's language 0.
Definition slides.c:68
void STDWTITL_showTitle1(SlideTask *task)
Starts sliding in the second part of the title (the task's show), only while it waits.
Definition slides.c:61
void STDWTITL_tickTitle1Alt(SlideTask *task)
The second part of the title for the European version's language 0: waits until shown,...
Definition slides.c:18
SlideTask * STDWTITL_startTitle1Task(s32 skip)
Creates the second part of the title (task)
Definition slides.c:130
void STDWTITL_drawTitle1(SlideTask *task)
Draws the second part of the title (sprite 1)
Definition slides.c:79
void STDWTITL_tickTitle0Alt(SlideTask *task)
The first part of the title for the European version's language 0: waits until shown,...
Definition slides.c:153
void STDWTITL_tickTitle0(SlideTask *task)
The first part of the title: waits until shown, then slides in from the left in 10 steps (skip is not...
Definition slides.c:226
SlideTask * STDWTITL_startTitle0Task(s32 skip)
Creates the first part of the title (task)
Definition slides.c:265
void initSpriteDrawer(SpriteDrawer *obj)
Clears a sprite drawer to neutral (no scale, gray tint, follows the scroll), gives it its methods and...
void *(* getEntry)(u32 fileAndIndex)
Definition file.h:96
A part of the title that slides in from a side of the screen.
Definition title.h:149
void(* nextState)(struct SlideTask *task)
Definition title.h:150
void(* setState)(struct SlideTask *task, s32 state)
Definition title.h:150
void(* setSubstate)(struct SlideTask *task, s32 substate)
Definition title.h:150
s32 x
Definition title.h:153
s32 depth
Definition title.h:156
s32 skip
Definition title.h:151
s32 substate
Definition title.h:150
s32 steps
Definition title.h:152
s32 layerId
Definition title.h:155
s32 state
Definition title.h:150
s32 y
Definition title.h:154
void(* nextSubstate)(struct SlideTask *task)
Definition title.h:150
void(* show)(struct SlideTask *task)
Definition title.h:158
Draws sprites from a sprite sheet (such as file 0x277, the menu graphics): a sheet has a table of fra...
Definition gfx.h:223
void(* setAltClut)()
(x, y)
Definition gfx.h:243
void(* setLayerId)()
(id, depth)
Definition gfx.h:244
void(* draw)()
(sheet, frame, x, y)
Definition gfx.h:246
void(* setTexture)()
(x, y)
Definition gfx.h:242
void * createTask(void(*update)(), s32 size, s32 childrenSize)
createTaskWithId for a task nothing needs to find
Definition task.c:105
STDWTITL.PRO: the title screen, the opening movies and a notice screen.
#define STDWTITL_TEXTURE_Y
The VRAM row of the title's sprites (SpriteDrawer.setTexture)
Definition title.h:49
#define STDWTITL_TITLE_LAYER
Definition title.h:30