Digimon World 3 decomp
The European version, SLES_039.36
Loading...
Searching...
No Matches
partner.c
Go to the documentation of this file.
1/* A partner's panel: its windows, its drawing, its exp roll and the steps
2 that give its Digimon their exp, levels, skills and new Digimon. */
3
4#include "battle/report.h"
5
6/* Creates the text windows of a partner's panel */
8 TextWindow *window;
9 s32 y = partner->index * 50;
10 s32 i;
11
12 windows->name = createTextWindow(partner->layer, 1, 0x3D, y + 0x28);
13 windows->levelLabel = createTextWindow(partner->layer, 3, 0x3E, y + 0x38);
14 windows->level = createTextWindow(partner->layer, 3, 0x5B, y + 0x38);
15 windows->expLabel = createTextWindow(partner->layer, 3, 0x6A, y + 0x45);
16 windows->exp = createTextWindow(partner->layer, 3, 0x67, y + 0x45);
17 for (i = 0; i < 3; i++) {
18 y = partner->index * 50 + i * 15;
19 windows->slots[i].name = createTextWindow(partner->layer, 1, 0x8D, y + 0x28);
20 windows->slots[i].level = createTextWindow(partner->layer, 3, 0x114, y + 0x2C);
21 }
22 window = createTextWindow(partner->layer, 1, 0x14, 0xC2);
23 windows->message = window;
24 window->setLines(window, 2);
25}
26
27/* Fills a partner's panel with its name, level, exp and Digimon, or hides it */
29 PartnerStats *stats;
30 s32 member;
31 s32 i;
32
33 if (show != 0) {
34 member = GAME.funcs.getPartyMember(partner->index);
35 stats = GAME.funcs.getPartnerStats(member);
36 windows->name->setString(windows->name, stats, -1);
37 windows->level->setNumber(windows->level, 0, stats->stats[STAT_LEVEL]);
38 windows->level->setRightAlign(windows->level, 1);
40 windows->exp->setNumber(windows->exp, 0, partner->shownExp);
41 windows->exp->setRightAlign(windows->exp, 1);
42 windows->exp->setSpacing(windows->exp, 7, 0);
44 GAME.funcs.getPartnerSlots(member, partner->slots);
45 for (i = 0; i < 3; i++) {
46 if (partner->slots[i] >= 4) {
47 GAME.funcs.getPartnerEntry(member, partner->slots[i], &partner->entry);
48 windows->slots[i].name->setString(windows->slots[i].name, FILE_CACHE.load(TEXT_FILE(TEXT_DIGIMON_NAMES)), GET_DIGIMON(partner->slots[i])->nameId);
49 windows->slots[i].level->setNumber(windows->slots[i].level, 0, partner->entry.level);
50 windows->slots[i].level->setRightAlign(windows->slots[i].level, 1);
51 } else {
52 windows->slots[i].name->setVisible(windows->slots[i].name, 0);
53 windows->slots[i].level->setVisible(windows->slots[i].level, 0);
54 }
55 }
56 } else {
57 windows->name->setVisible(windows->name, 0);
58 windows->level->setVisible(windows->level, 0);
59 windows->levelLabel->setVisible(windows->levelLabel, 0);
60 windows->exp->setVisible(windows->exp, 0);
61 windows->expLabel->setVisible(windows->expLabel, 0);
62 for (i = 0; i < 3; i++) {
63 windows->slots[i].name->setVisible(windows->slots[i].name, 0);
64 windows->slots[i].level->setVisible(windows->slots[i].level, 0);
65 }
66 }
67}
68
69/* Draws a partner's panel: the level and slot blinks, the cursor, the
70 partner's animation and its frames */
72 SpriteDrawer sprite;
73 s32 digimon;
74 s32 y;
75 s32 i;
76
77 initSpriteDrawer(&sprite);
78 sprite.setLayerId(partner->layer, partner->depth);
79 sprite.setTexture(0x280, 0);
80 if (partner->substate >= 20) {
81 if (partner->levelBlink.on != 0) {
82 if (GFX.funcs.getTime() - partner->levelBlink.time >= 3) {
83 partner->levelBlink.time = GFX.funcs.getTime();
84 if (++partner->levelBlink.frame >= 11) {
85 partner->levelBlink.frame = 10;
86 }
87 }
88 sprite.setClutRow(partner->levelBlink.frame);
89 y = partner->index * 50;
90 sprite.draw(FILE_CACHE.getEntry((FILE_FGTREP_SPRITES - 1) << 16), 0x22, 0x63, y + 0x2B);
91 sprite.setClutRow(0);
92 }
93 for (i = 0; i < 3; i++) {
94 if (partner->slotBlinks[i].blink.on != 0) {
95 if (GFX.funcs.getTime() - partner->slotBlinks[i].blink.time >= 3) {
96 partner->slotBlinks[i].blink.time = GFX.funcs.getTime();
97 if (++partner->slotBlinks[i].blink.frame >= 11) {
98 partner->slotBlinks[i].blink.frame = 10;
99 }
100 }
101 sprite.setClutRow(partner->slotBlinks[i].blink.frame);
102 y = partner->index * 50 + i * 15;
103 sprite.draw(FILE_CACHE.getEntry((FILE_FGTREP_SPRITES - 1) << 16), 0x23, 0xEF, y + 0x23);
104 }
105 }
106 sprite.setClutRow(0);
107 }
108 if (partner->selected != 0) {
109 if (GFX.funcs.getTime() - partner->cursorTime >= 5) {
110 partner->cursorTime = GFX.funcs.getTime();
111 if (++partner->cursorFrame >= 4) {
112 partner->cursorFrame = 0;
113 }
114 }
115 sprite.setClutRow(partner->cursorFrame);
116 y = partner->index * 50;
117 sprite.draw(FILE_CACHE.getEntry((FILE_FGTREP_SPRITES - 1) << 16), 0x24, 0x11, y + 0x26);
118 if (partner->substate >= 20) {
119 if (partner->slot >= 0 && partner->slots[partner->slot] >= 4) {
120 y = partner->index * 50 + partner->slot * 15;
121 sprite.draw(FILE_CACHE.getEntry((FILE_FGTREP_SPRITES - 1) << 16), 0x25, 0x87, y + 0x26);
122 }
123 }
124 sprite.setClutRow(0);
125 }
126 if (partner->fade.level != 0) {
127 if (partner->fade.level != 0x1000) {
128 sprite.setScale(partner->fade.level, 0x1000, 0x1000);
129 }
130 digimon = GAME.funcs.getPartyMember(partner->index);
131 y = partner->index * 50;
132 if (partner->fade.level != 0x1000) {
133 sprite.setPivot(0x11, y + 0x3A);
134 }
135 if (GFX.funcs.getTime() - partner->frameTime >= 13) {
136 partner->frameTime = GFX.funcs.getTime();
137 if (++partner->frame >= 8 || STFGTREP_animations[digimon][partner->frame] == -1) {
138 partner->frame = 0;
139 }
140 }
141 sprite.draw(FILE_CACHE.getEntry((FILE_FGTREP_SPRITES - 1) << 16), STFGTREP_animations[digimon][partner->frame], 0x14, y + 0x28);
142 if (partner->levelBlink.on != 0) {
143 sprite.setClutRow(partner->levelBlink.frame);
144 }
145 sprite.draw(FILE_CACHE.getEntry((FILE_FGTREP_SPRITES - 1) << 16), 0x1F, 0x11, y + 0x26);
146 if (partner->levelBlink.on != 0) {
147 sprite.setClutRow(0);
148 }
149 for (i = 0; i < 3; i++) {
150 y = partner->index * 50 + i * 15;
151 if (partner->fade.level != 0x1000) {
152 sprite.setPivot(0x87, y + 0x2D);
153 }
154 if (partner->slotBlinks[i].blink.on != 0) {
155 sprite.setClutRow(partner->slotBlinks[i].blink.frame);
156 } else {
157 sprite.setClutRow(0);
158 }
159 sprite.draw(FILE_CACHE.getEntry((FILE_FGTREP_SPRITES - 1) << 16), 0x20, 0x87, y + 0x26);
160 }
161 }
162}
163
164/* Rolls the shown exp towards the target, digit by digit; 0 once it is there */
166 ReportPartnerWindows *windows = partner->children;
167 s32 digits = 0;
168 s32 n;
169 s32 step;
170 s32 i;
171
172 if (++partner->rollTime >= 10) {
173 partner->shownExp = partner->targetExp;
174 STFGTREP_fillPartnerWindows(partner, windows, 1);
175 return 0;
176 }
177 n = partner->targetExp;
178 for (i = 10; n != 0; i *= 10) {
179 digits++;
180 n -= n % i;
181 }
182 step = 1;
183 for (i = digits - 1; i != 0; i--) {
184 step *= 10;
185 step++;
186 }
187 partner->shownExp += step;
188 if (partner->shownExp > step * 9) {
189 partner->shownExp -= step * 9 + 1;
190 }
191 STFGTREP_fillPartnerWindows(partner, windows, 1);
192 return 1;
193}
194
195/* Gives the slot's Digimon its share of the battle's exp, if it was used
196 in the battle, and blinks the slot when its level goes up */
197static inline void giveDigimonExp(ReportPartner *partner) {
198 s32 member;
199
200 member = GAME.funcs.getPartyMember(partner->index);
201 GAME.funcs.getPartnerSlots(member, partner->slots);
202 if (BATTLE_RESULT.partners[partner->index].used[partner->slot] != 0 && partner->slots[partner->slot] >= 4) {
203 partner->slotBlinks[partner->slot].blink.on = STFGTREP_funcs.addDigimonExp(
204 member, partner->slots[partner->slot],
205 STFGTREP_funcs.getDigimonExp(member, partner->slots[partner->slot],
207 }
208 partner->substate++;
209}
210
211/* When the slot's Digimon went up a level, plays its sound and shows it in
212 the message */
213static inline void showDigimonLevelUp(ReportPartner *partner, ReportPartnerWindows *windows) {
214 if (partner->slotBlinks[partner->slot].blink.on != 0) {
215 if (partner->voice != -1) {
216 SOUND.keyOff(partner->sound, partner->voice);
217 partner->voice = -1;
218 }
219 partner->voice = SOUND.playSound(0x4000C);
220 partner->sound = 0x4000C;
222 windows->message->setTypeDelay(windows->message, 6);
223 STFGTREP_fillPartnerWindows(partner, windows, 1);
224 partner->substate = 25;
225 partner->step = 0;
226 } else {
227 partner->substate = 24;
228 }
229}
230
231/* Gives the slot's Digimon its next skill and shows it in the message */
232static inline void giveNextSkill(ReportPartner *partner, ReportPartnerWindows *windows) {
233 s32 member;
234 s32 id;
235
236 member = GAME.funcs.getPartyMember(partner->index);
237 GAME.funcs.getPartnerSlots(member, partner->slots);
238 id = STFGTREP_funcs.addSkill(member, partner->slots[partner->slot]);
239 if (id != 0) {
242 windows->message->setTypeDelay(windows->message, 6);
243 partner->substate = 25;
244 partner->step = 1;
245 } else {
246 partner->substate = 23;
247 }
248}
249
250/* Marks known the next skill of the slot's Digimon and shows it in the
251 message */
252static inline void markNextSkillKnown(ReportPartner *partner, ReportPartnerWindows *windows) {
253 s32 member;
254 s32 id;
255
256 member = GAME.funcs.getPartyMember(partner->index);
257 GAME.funcs.getPartnerSlots(member, partner->slots);
258 id = STFGTREP_funcs.learnSkill(member, partner->slots[partner->slot]);
259 if (id != 0) {
262 windows->message->setTypeDelay(windows->message, 6);
263 partner->substate = 25;
264 partner->step = 2;
265 } else {
266 partner->substate = 24;
267 }
268}
269
270/* Gives the partner its exp; when its level goes up, blinks the level and
271 shows the new level in the message */
272static inline void raisePartnerLevel(ReportPartner *partner, ReportPartnerWindows *windows) {
273 s32 member = GAME.funcs.getPartyMember(partner->index);
274 PartnerStats *stats;
275
276 if (STFGTREP_funcs.addExp(member, partner->exp) != 0) {
277 stats = GAME.funcs.getPartnerStats(member);
278 partner->levelBlink.on = 1;
279 if (partner->voice != -1) {
280 SOUND.keyOff(partner->sound, partner->voice);
281 partner->voice = -1;
282 }
283 partner->voice = SOUND.playSound(0x4000B);
284 partner->sound = 0x4000B;
286 windows->message->setSubString(windows->message, stats->name, -1, 1);
287 windows->message->setNumber(windows->message, 2, stats->stats[STAT_LEVEL]);
288 windows->message->setTypeDelay(windows->message, 6);
289 partner->substate = 45;
290 partner->step = 3;
291 } else {
292 partner->substate = 41;
293 }
294 STFGTREP_fillPartnerWindows(partner, windows, 1);
295}
296
297/* Gives the partner the next Digimon of its evolution list and shows it in
298 the message */
299static inline void learnNextDigimon(ReportPartner *partner, ReportPartnerWindows *windows) {
300 s32 learnt;
301 DigimonData *digimon;
302
304 if (learnt != 0) {
305 digimon = GET_DIGIMON(learnt);
307 windows->message->setSubString(windows->message, FILE_CACHE.load(TEXT_FILE(TEXT_DIGIMON_NAMES)), digimon->nameId, 1);
308 windows->message->setTypeDelay(windows->message, 6);
309 STFGTREP_fillPartnerWindows(partner, windows, 1);
310 partner->substate = 45;
311 partner->step = 4;
312 partner->learned = 1;
313 } else if (partner->learned != 0) {
314 partner->substate = 42;
315 } else {
316 partner->substate = 50;
317 }
318}
319
320/* A panel's steps: it fades in and out, gives each slot's Digimon its exp,
321 with the levels and skills that brings (giveDigimonExp, showDigimonLevelUp,
322 giveNextSkill, markNextSkillKnown), then the partner's exp and the Digimon it
323 learns (raisePartnerLevel, learnNextDigimon), each with its message */
325 s32 done;
326 s32 i;
327
328 switch (partner->substate) {
329 case 0: /* the match depends on it, which starts the jump table at 0 */
330 break;
331 case 1:
332 STFGTREP_funcs.startFade(&partner->fade, 1);
333 partner->substate++;
334 break;
335 case 2:
336 if (STFGTREP_funcs.updateFade(&partner->fade) != 0) {
337 STFGTREP_fillPartnerWindows(partner, windows, 1);
338 partner->substate = 5;
339 }
340 break;
341 case 11:
342 STFGTREP_funcs.startFade(&partner->fade, 0);
343 STFGTREP_fillPartnerWindows(partner, windows, 0);
344 partner->substate++;
345 break;
346 case 12:
347 if (STFGTREP_funcs.updateFade(&partner->fade) != 0) {
348 partner->substate = 15;
349 }
350 break;
351 case 20:
352 giveDigimonExp(partner);
353 break;
354 case 21:
355 showDigimonLevelUp(partner, windows);
356 break;
357 case 22:
358 giveNextSkill(partner, windows);
359 break;
360 case 23:
361 markNextSkillKnown(partner, windows);
362 break;
363 case 24:
364 if (++partner->slot >= 3) {
365 partner->slot = -1;
366 partner->substate = 40;
367 } else {
368 partner->substate = 20;
369 }
370 break;
371 case 25:
372 case 45:
373 if (windows->message->isFinished(windows->message) != 0) {
374 windows->message->setVisible(windows->message, 0);
375 partner->report->arrowOn = 0;
376 switch (partner->step) {
377 case 0:
378 case 1:
379 default:
380 partner->substate = 22;
381 break;
382 case 2:
383 partner->substate = 23;
384 break;
385 case 3:
386 case 4:
387 partner->substate = 41;
388 break;
389 case 5:
390 partner->substate = 50;
391 break;
392 }
393 } else if (windows->message->isWaitingForButton(windows->message) != 0) {
394 if (PAD_PRESSED(PAD_CROSS)) {
396 } else {
397 partner->report->arrowOn = 1;
398 }
399 } else if (PAD_PRESSED(PAD_CROSS)) {
400 windows->message->showPage(windows->message);
401 }
402 break;
403 case 40:
404 raisePartnerLevel(partner, windows);
405 break;
406 case 41:
407 learnNextDigimon(partner, windows);
408 break;
409 case 42:
410 if (GAME.funcs.listPartnerEntries(GAME.funcs.getPartyMember(partner->index), partner->entries) >= 4) {
412 windows->message->setTypeDelay(windows->message, 6);
413 partner->substate = 45;
414 partner->step = 5;
415 } else {
416 partner->substate = 50;
417 }
418 break;
419 case 50:
420 done = 1;
421 if (partner->levelBlink.on != 0) {
422 done = partner->levelBlink.frame >= 10;
423 }
424 if (done) {
425 for (i = 0; i < 3; i++) {
426 if (partner->slotBlinks[i].blink.on != 0 && partner->slotBlinks[i].blink.frame < 10) {
427 done = 0;
428 }
429 }
430 if (done) {
431 partner->substate = 5;
432 partner->selected = 0;
433 }
434 }
435 break;
436 }
437 if (partner->substate >= 20 && STFGTREP_rollExp(partner) != 0) {
439 }
440}
441
442/* A partner's panel task */
444 PartnerStats *stats;
445
446 switch (partner->state) {
447 case TASK_INIT:
448 default:
449 partner->nextState(partner);
450 STFGTREP_createPartnerWindows(partner, windows);
451 partner->fade.duration = 10;
453 partner->shownExp = stats->exp;
454 if (partner->shownExp > 999998) {
455 partner->rollTime = 10;
456 }
457 if (partner->boosted == 0) {
458 partner->boostExp(partner);
459 }
460 partner->targetExp = stats->exp + partner->exp;
461 if (partner->targetExp > 999999) {
462 partner->targetExp = 999999;
463 }
464 break;
465 case TASK_RUN:
466 STFGTREP_runPartner(partner, windows);
467 STFGTREP_drawPartner(partner);
468 break;
469 case TASK_DONE:
470 case TASK_KILL:
471 break;
472 }
473}
474
475/* ReportPartner.show: fades the panel in (substate 1) */
477 partner->substate = 1;
478}
479
480/* ReportPartner.hide: fades the panel out (substate 11) */
482 partner->substate = 11;
483}
484
485/* ReportPartner.raise: gives the exp to the partner's Digimon, with its new
486 levels and skills (substate 20) */
488 partner->substate = 20;
489}
490
491/* Adds a fifth to the exp once, if the partner wears item 0x141 */
493 PartnerStats *stats;
494
495 if (partner->boosted == 0) {
497 if (stats->equip[4] == 0x141 || stats->equip[5] == 0x141) {
498 partner->exp += partner->exp / 5;
499 }
500 }
501 partner->boosted = 1;
502 return partner->exp;
503}
504
505/* ReportPartner.select: shows the cursor on the panel until its exp is given */
507 partner->selected = 1;
508}
509
510/* Creates the panel of party member index, who gets exp */
513
514 partner->show = STFGTREP_showPartner;
515 partner->hide = STFGTREP_hidePartner;
516 partner->raise = STFGTREP_raisePartner;
517 partner->boostExp = STFGTREP_boostExp;
519 partner->layer = SCREEN_LAYER;
520 partner->depth = 6;
521 partner->report = report;
522 partner->voice = -1;
523 partner->index = index;
524 partner->exp = exp;
525 return partner;
526}
s32 STFGTREP_boostExp(ReportPartner *partner)
Adds a fifth to the exp once, if the partner wears item 0x141.
Definition partner.c:492
void STFGTREP_runPartner(ReportPartner *partner, ReportPartnerWindows *windows)
A panel's steps: it fades in and out, gives each slot's Digimon its exp, with the levels and skills t...
Definition partner.c:324
void STFGTREP_showPartner(ReportPartner *partner)
ReportPartner.show: fades the panel in (substate 1)
Definition partner.c:476
void STFGTREP_drawPartner(ReportPartner *partner)
Draws a partner's panel: the level and slot blinks, the cursor, the partner's animation and its frame...
Definition partner.c:71
static void raisePartnerLevel(ReportPartner *partner, ReportPartnerWindows *windows)
Gives the partner its exp; when its level goes up, blinks the level and shows the new level in the me...
Definition partner.c:272
static void learnNextDigimon(ReportPartner *partner, ReportPartnerWindows *windows)
Gives the partner the next Digimon of its evolution list and shows it in the message.
Definition partner.c:299
void STFGTREP_selectPartner(ReportPartner *partner)
ReportPartner.select: shows the cursor on the panel until its exp is given.
Definition partner.c:506
void STFGTREP_hidePartner(ReportPartner *partner)
ReportPartner.hide: fades the panel out (substate 11)
Definition partner.c:481
s32 STFGTREP_rollExp(ReportPartner *partner)
Rolls the shown exp towards the target, digit by digit; 0 once it is there.
Definition partner.c:165
void STFGTREP_fillPartnerWindows(ReportPartner *partner, ReportPartnerWindows *windows, s32 show)
Fills a partner's panel with its name, level, exp and Digimon, or hides it.
Definition partner.c:28
static void markNextSkillKnown(ReportPartner *partner, ReportPartnerWindows *windows)
Marks known the next skill of the slot's Digimon and shows it in the message.
Definition partner.c:252
void STFGTREP_createPartnerWindows(ReportPartner *partner, ReportPartnerWindows *windows)
Creates the text windows of a partner's panel.
Definition partner.c:7
static void showDigimonLevelUp(ReportPartner *partner, ReportPartnerWindows *windows)
When the slot's Digimon went up a level, plays its sound and shows it in the message.
Definition partner.c:213
void STFGTREP_raisePartner(ReportPartner *partner)
ReportPartner.raise: gives the exp to the partner's Digimon, with its new levels and skills (substate...
Definition partner.c:487
static void giveNextSkill(ReportPartner *partner, ReportPartnerWindows *windows)
Gives the slot's Digimon its next skill and shows it in the message.
Definition partner.c:232
static void giveDigimonExp(ReportPartner *partner)
Gives the slot's Digimon its share of the battle's exp, if it was used in the battle,...
Definition partner.c:197
void STFGTREP_updatePartner(ReportPartner *partner, ReportPartnerWindows *windows)
A partner's panel task.
Definition partner.c:443
ReportPartner * STFGTREP_createPartner(FightReport *report, s32 index, s32 exp)
Creates the panel of party member index, who gets exp.
Definition partner.c:511
signed int s32
Definition common.h:11
GfxState GFX
GFX: the graphics state and its methods.
Definition display.c:209
GameState GAME
The save data, the game mode and the methods.
Definition state.c:64
#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
#define TEXT_SKILL_NAMES
SKLNAM.
Definition file.h:223
#define TEXT_FILE(file)
Definition file.h:190
#define TEXT_FIGHT_REPORT
FGTRPT: STFGTREP's.
Definition file.h:212
#define TEXT_DIGIMON_NAMES
DIGNAM.
Definition file.h:211
FileCache FILE_CACHE
The file cache.
Definition file_cache.c:7
#define STAT_LEVEL
Indices of a partner's stats (PartnerStats.stats, computeStats, setStat)
Definition game_state.h:279
DigimonData *(* GET_DIGIMON)(s32 id)
getDigimon for the overlays, in the small data (.sdata) between game/items.c's and file/file_table....
Definition get_digimon.c:10
#define SCREEN_LAYER
The layer over the whole screen that most modes create first and draw their menus on (FIELDSTG and ST...
Definition gfx.h:45
BattleResult BATTLE_RESULT
Definition items.c:888
#define PAD_CROSS
Definition pad.h:31
#define PAD_PRESSED(button)
One button of pad 1: newly pressed, auto-repeated while held, or held.
Definition pad.h:140
STFGTREP.PRO: mode 0x1400, the report after a battle.
#define FILE_FGTREP_SPRITES
The sprite archive the overlay loads.
Definition report.h:20
SoundState SOUND
rsin and rcos (libgte) read rsin_tbl[a - 0x800] and the like: their addresses before the table fall i...
Definition sound.c:180
#define SOUND_COUNT
SYSTEM10: a number counts up or down.
Definition sound.h:45
#define SOUND_MENU_CONFIRM
SYSTEM07.
Definition sound.h:44
void initSpriteDrawer(SpriteDrawer *obj)
Clears a sprite drawer to neutral (no scale, gray tint, follows the scroll), gives it its methods and...
BattleReward STFGTREP_rewards[]
Definition stfgtrep.c:345
FightReportFuncs STFGTREP_funcs
Definition stfgtrep.c:1070
s32 STFGTREP_animations[][7]
each partner Digimon's sprite frames, -1 ending them early
Definition stfgtrep.c:1060
s16 battle
row of STFGTREP_rewards
Definition game_state.h:398
struct BattleResult::@9 partners[3]
u8 used[3]
the Digimon of each slot was used
Definition game_state.h:403
s32 digimonExp
shared by the Digimon used
Definition report.h:25
Digimon definition (DIGIMON_DATA, 52 of them; the first 8 are the partners)
Definition game_state.h:86
u8 nameId
string in file 0x4F
Definition game_state.h:105
s32(* addSkill)(s32 partner, s32 id)
Definition report.h:140
s32(* learnDigimon)(s32 partner)
Definition report.h:138
s32(* addExp)(s32 partner, s32 exp)
Definition report.h:137
void(* startFade)(PanelAnim *fade, s32 fadeIn)
Definition report.h:133
s32(* learnSkill)(s32 partner, s32 id)
Definition report.h:141
s32(* addDigimonExp)(s32 partner, s32 id, s32 exp)
Definition report.h:139
s32(* updateFade)(PanelAnim *fade)
Definition report.h:134
s32(* getDigimonExp)(s32 partner, s32 id, s32 exp, s32 used)
Definition report.h:142
The main task of the screen (STFGTREP_createScreen)
Definition report.h:104
s32 arrowOn
the message waits for a button
Definition report.h:113
s32 used
Digimon used in the battle.
Definition report.h:112
void *(* load)(u32 file)
Definition file.h:92
void *(* getEntry)(u32 fileAndIndex)
Definition file.h:96
s32(* getPartnerEntry)()
-1 if it hasn't the Digimon
Definition game_state.h:36
struct PartnerStats *(* getPartnerStats)(s32 partner)
Definition game_state.h:38
s32(* getPartyMember)(u32 index)
Definition game_state.h:24
s32(* getPartnerSlots)()
(partner, s16 *out): the count
Definition game_state.h:32
s32(* listPartnerEntries)()
(partner, s16 *out): the count
Definition game_state.h:34
GameFuncs funcs
Definition game_state.h:582
s32(* getTime)(void)
Definition gfx.h:31
GfxFuncs funcs
Definition gfx.h:77
s32 level
Definition menu.h:21
s32 duration
Definition menu.h:19
s8 level
shown in the lab; 1 when added
Definition game_state.h:249
A partner Digimon from its name on (Partner.info), as getPartnerStats gives it.
Definition game_state.h:303
s16 stats[19]
Definition game_state.h:306
char name[0x18]
Definition game_state.h:304
The children of a partner's panel.
Definition report.h:90
TextWindow * name
Definition report.h:91
struct ReportPartnerWindows::@7 slots[3]
TextWindow * expLabel
Definition report.h:95
TextWindow * levelLabel
Definition report.h:93
TextWindow * level
Definition report.h:92
TextWindow * exp
Definition report.h:94
TextWindow * message
Definition report.h:100
The panel of a partner of the party (STFGTREP_createPartner)
Definition report.h:51
s32 selected
Definition report.h:59
s32 substate
Definition report.h:52
void(* nextState)(struct ReportPartner *task)
Definition report.h:52
s16 voice
-1 for none
Definition report.h:74
s32 learned
Definition report.h:72
PartnerEntry entry
Definition report.h:64
s32 targetExp
Definition report.h:76
struct FightReport * report
Definition report.h:53
struct ReportPartner::@6 slotBlinks[3]
void(* show)(struct ReportPartner *partner)
Definition report.h:82
s32 exp
what the partner gets
Definition report.h:57
s32 frame
of the partner's animation
Definition report.h:60
ReportBlink blink
Definition report.h:70
s32 rollTime
Definition report.h:77
s32 cursorFrame
Definition report.h:80
s16 entries[44]
listPartnerEntries
Definition report.h:63
s32 frameTime
Definition report.h:61
void(* raise)(struct ReportPartner *partner)
Definition report.h:84
s16 slots[3]
Definition report.h:62
void(* select)(struct ReportPartner *partner)
Definition report.h:86
s32 boosted
the exp accessory was applied
Definition report.h:58
s32(* boostExp)(struct ReportPartner *partner)
Definition report.h:85
ReportBlink levelBlink
Definition report.h:67
s32 shownExp
Definition report.h:75
void(* hide)(struct ReportPartner *partner)
Definition report.h:83
s32 index
in the party
Definition report.h:56
s32 slot
whose Digimon gets its exp, -1 for none
Definition report.h:65
PanelAnim fade
Definition report.h:79
s32 cursorTime
Definition report.h:81
void * children
Definition report.h:52
short(* playSound)(s32 id)
returns the voice of a key-on
Definition sound.h:187
void(* keyOff)(s32 id, s16 voice)
Definition sound.h:189
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(* setPivot)()
(x, y)
Definition gfx.h:250
void(* setScale)()
(x, y, z), ONE = 1.0
Definition gfx.h:248
void(* setLayerId)()
(id, depth)
Definition gfx.h:244
void(* setClutRow)()
(row)
Definition gfx.h:247
void(* draw)()
(sheet, frame, x, y)
Definition gfx.h:246
void(* setTexture)()
(x, y)
Definition gfx.h:242
A text window (createTextWindow): up to six text buffers (0 is shown, 1-5 are "work" buffers that con...
Definition text.h:131
s32(* isWaitingForButton)()
Definition text.h:188
s32(* isFinished)()
s32: callers don't truncate the result to a byte
Definition text.h:186
void(* setSpacing)()
no prototype: callers would truncate s16 args
Definition text.h:176
void(* setRightAlign)()
no prototype: callers would truncate u8 args
Definition text.h:178
void(* setTypeDelay)()
Definition text.h:172
void(* setLines)()
no prototype: callers would truncate u8 args
Definition text.h:184
void(* setSubString)()
Definition text.h:168
void(* setNumber)()
Definition text.h:166
void(* setString)()
Definition text.h:165
void(* showPage)()
Definition text.h:170
void(* setVisible)(struct TextWindow *obj, u8 arg)
Definition text.h:177
void * createTask(void(*update)(), s32 size, s32 childrenSize)
createTaskWithId for a task nothing needs to find
Definition task.c:105
TextWindow * createTextWindow(s16 layerId, s16 style, s16 x, s16 y)
A text window on a layer, in a font style, at (x, y)