12 for (i = 0; i < 3; i++) {
15 for (i = 0; i < 2; i++) {
18 for (i = 0; i < 6; i++) {
21 for (i = 0; i < 7; i++) {
26 (*items)->setDepth(*items, screen->
depth - 1);
48 for (i = 0; i < 3; i++) {
49 if (screen->
slots[i] < 2) {
65 for (i = 0; i < 2; i++) {
69 for (i = 0; i < 13; i++) {
85 for (i = 0; i < 13; i++) {
92 (*items)->setVisible(*items, 0);
126 if (screen->
choice >= 2) {
130 if (old != screen->
choice) {
158 if (screen->
step == 0) {
236 if (screen->
step == 20) {
241 for (i = 0; i < 6; i++) {
242 if (entry.
skills[i] != 0) {
389 switch (screen->
state) {
418 return (
Task *)screen;
STGDGLAB.PRO: the Digimon Lab (MODE_DIGI_LAB; "デジモンラボ" in STAGSLCT's list of scenes),...
#define FILE_LAB_SPRITES
The lab's sprite sheet; the next file is its texture archive.
GameState GAME
The save data, the game mode and the methods.
#define TASK_INIT
Tasks: every game object is a task, a heap block that starts with this header and is updated once per...
Cursor * createCursor(s16 layerId, s32 depth, s16 x, s16 y)
A menu cursor on a layer at (x, y)
LabEntryList * STGDGLAB_createEntryList(s32 partner, s32 allEntries, s32 closable)
Creates the list of a partner's entries (task): only its slots unless ALLENTRIES; CLOSABLE lets trian...
LabEntryPanel * STGDGLAB_createEntryPanel(s32 partner, s32 slot)
Creates the second screen's panel (task) where one of the partner's entries is picked for one of its ...
#define TEXT_DIGI_LAB
DGLABO: STGDGLAB's.
#define TEXT_DIGIMON_NAMES
DIGNAM.
#define FILE_MENU_SPRITES
Files the engine loads by number.
FileCache FILE_CACHE
The file cache.
DigimonData *(* GET_DIGIMON)(s32 id)
getDigimon for the overlays, in the small data (.sdata) between game/items.c's and file/file_table....
#define STRETCH_SPRITE(sprite, level, x, y)
#define SCREEN_LAYER
The layer over the whole screen that most modes create first and draw their menus on (FIELDSTG and ST...
#define PAD_PRESSED(button)
One button of pad 1: newly pressed, auto-repeated while held, or held.
#define PAD_REPEATED(button)
LabSkillPanel * STGDGLAB_createSkillPanel(s32 member, s32 slot)
Creates the second screen's skill panel (task) for a slot of a partner (the MEMBER parameter is a par...
static void openSlotOption(LabSlotScreen *screen)
Once the screen's panels have faded out, goes on to the entry list for the picked option,...
void STGDGLAB_showSlotScreen(LabSlotScreen *screen, LabSlotScreenWindows *windows, s32 show)
Shows the party member's slots and stats, or hides the screen's windows.
void STGDGLAB_updateSlotScreen(LabSlotScreen *screen, void *children)
The second screen's task: creates its windows, then runs and draws it.
static void pickSlotOption(LabSlotScreen *screen, LabSlotScreenWindows *windows)
Up and down pick "Change digivolve type" or "Load technique"; cross opens the entry list (or says it ...
static void closeMessage(LabSlotScreen *screen, LabSlotScreenWindows *windows, s32 panel)
Cross closes the message: fades its panel out and hides it.
void STGDGLAB_createSlotScreenWindows(LabSlotScreen *screen, LabSlotScreenWindows *windows)
Creates the second screen's windows and cursor.
void STGDGLAB_drawSlotScreen(LabSlotScreen *screen, void *children)
Draws the second screen's frames.
Task * STGDGLAB_createSlotScreen(Lab *lab)
Creates the main menu's second screen (task), the party member's three slots.
static void loadSlotScreen(LabSlotScreen *screen)
Reads the party member's slots and entries and fades the screen's panels in.
void STGDGLAB_runSlotScreen(LabSlotScreen *screen, LabSlotScreenWindows *windows)
The second screen's states: picks between the entries and the skills, opens the list of the member's ...
SoundState SOUND
rsin and rcos (libgte) read rsin_tbl[a - 0x800] and the like: their addresses before the table fall i...
#define SOUND_MENU_CONFIRM
SYSTEM07.
#define SOUND_SELECT
Sounds the overlays share, with SOUNDTST's names.
#define SOUND_MENU_CANCEL
SYSTEM01.
#define SOUND_CURSOR
SYSTEM02: a cursor moves.
void initSpriteDrawer(SpriteDrawer *obj)
Clears a sprite drawer to neutral (no scale, gray tint, follows the scroll), gives it its methods and...
void(* setPos)()
(cursor, x, y)
void(* setVisible)()
(cursor, visible)
u8 nameId
string in file 0x4F
void *(* getEntry)(u32 fileAndIndex)
s32(* getPartnerEntry)()
-1 if it hasn't the Digimon
void(* computeStats)(s32 partner, union PartnerTotals *out)
s32(* getPartyMember)(u32 index)
s32(* getPartnerSlots)()
(partner, s16 *out): the count
s32(* listPartnerEntries)()
(partner, s16 *out): the count
Partner partners[PARTNER_COUNT]
void(* close)(struct LabEntryList *panel)
s32(* updateFade)(PanelAnim *fade)
void(* startFade)(PanelAnim *fade, s32 fadeIn)
TextWindow * list[13]
two columns: 6, then 7
struct LabSkillPanel * skillsPanel
struct LabEntryList * entryList
TextWindow * slotNames[3]
the slots' Digimon
struct LabEntryPanel * entryPanel
The main menu's second screen (STGDGLAB_createSlotScreen)
void(* setState)(struct LabSlotScreen *task, s32 state)
s16 slots[3]
getPartnerSlots
void(* nextState)(struct LabSlotScreen *task)
s16 entries[45]
listPartnerEntries
void(* setStep)(struct LabSlotScreen *task, s32 step)
s32 picked
the list's cursor when an entry was picked
void(* setSubstate)(struct LabSlotScreen *task, s32 substate)
The mode's main task (STGDGLAB_createLab)
s32(* openMenu)(struct Lab *lab)
s32(* closeMenu)(struct Lab *lab)
s32 member
the party member the screens show
s32(* menuOpen)(struct Lab *lab)
One of a partner's Digimon (getPartnerEntry, setPartnerEntry)
s16 skills[6]
SKILL_ID and the flags below, 0 for none.
One of the eight partner Digimon.
s32 battleDigivolve
an entry id, compared with the slots': the Digimon the battle starts it as, 0 for its own
short(* playSound)(s32 id)
returns the voice of a key-on
Draws sprites from a sprite sheet (such as file 0x277, the menu graphics): a sheet has a table of fra...
void(* setScale)()
(x, y, z), ONE = 1.0
void(* setLayerId)()
(id, depth)
void(* draw)()
(sheet, frame, x, y)
void(* setTexture)()
(x, y)
Any task, seen through its header.
A text window (createTextWindow): up to six text buffers (0 is shown, 1-5 are "work" buffers that con...
void(* setPalette)(struct TextWindow *obj, u8 arg)
void(* setRightAlign)()
no prototype: callers would truncate u8 args
void(* setVisible)(struct TextWindow *obj, u8 arg)
void * createTask(void(*update)(), s32 size, s32 childrenSize)
createTaskWithId for a task nothing needs to find
#define PALETTE_BLUE
a light blue: what is highlighted or current
#define PALETTE_WHITE
The text windows' palettes (TextWindow.palette, setPalette): rows of the font's CLUTs,...
TextWindow * createTextWindow(s16 layerId, s16 style, s16 x, s16 y)
A text window on a layer, in a font style, at (x, y)
computeStats' result: the stats with the equipment added, by STAT_* or by name.
s16 lowered[3]
taken from battle[0], [1] and [4]
struct PartnerTotals::@10 fields