19#define OVL_NAME(name) STGDGLAB_##name
22#if VERSION_US || VERSION_JP
23#define FILE_LAB_SPRITES 0x2B6
25#define FILE_LAB_SPRITES 0x2C5
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 ...
void STGDGLAB_hideWindows(LabPartyScreen *screen)
Hides the first screen's text windows: all its children but the last, the entry list.
LabEntry STGDGLAB_entries[]
the items of the recipes
void STGDGLAB_drawEntryList(LabEntryList *panel, LabEntryListWindows *windows)
Draws the panel's frames, its scroll arrows and the icons of the skills of the id under the cursor.
void STGDGLAB_setScrollBarX(ScrollBar *bar, s32 x, s32 width)
scroll_bar.c
s32 STGDGLAB_openLabMenu(Lab *lab)
Lab.openMenu: opens the main menu's page again; 1 if the menu was running.
s32 STGDGLAB_filesLoading(void)
Whether the lab's strings are still loading.
void STGDGLAB_showEntryList(LabEntryList *panel, LabEntryListWindows *windows, s32 show)
Shows the list of ids and the stats and skills of the one under the cursor; or hides the panel's wind...
void STGDGLAB_runPartyScreen(LabPartyScreen *screen, LabPartyScreenWindows *windows)
The first screen's states: fades its panels in, picks a partner with left and right,...
void STGDGLAB_loadFiles(void)
Loads the lab's textures and requests its strings: the lab's and the Digimon's and skills' names and ...
PartnerAnim STGDGLAB_partnerAnims[]
The partners' animation frames, -1 ends.
ScrollBar * STGDGLAB_createScrollBar(void)
void STGDGLAB_closeEntryList(LabEntryList *panel)
The entry list's close: fades it out and hides its windows and cursor.
void STGDGLAB_drawFader(ScreenFade *task)
LabRecipe STGDGLAB_recipes1[]
void STGDGLAB_showEntryPanelOptions(LabEntryPanel *panel, LabEntryPanelWindows *windows, s32 show)
Shows the panel's options (the names of its three slots, then two strings of file 0x3A),...
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.
void STGDGLAB_resetRecipeCursor(LabRecipeScreen *screen)
Puts the third screen's cursor on the row's first recipe, at its first id found (the last one when no...
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...
Task *(* STGDGLAB_screens[])(Lab *lab)
The main menu's screens.
void STGDGLAB_updateFader(ScreenFade *task)
void STGDGLAB_updateScene(Task *task, Lab **child)
scene.c
void STGDGLAB_setScrollBarPos(ScrollBar *bar, s32 pos)
void STGDGLAB_updateEntryList(LabEntryList *panel, LabEntryListWindows *windows)
The entry list's task: lists the partner's slots and, with allEntries, its other entries,...
void STGDGLAB_createSlotScreenWindows(LabSlotScreen *screen, LabSlotScreenWindows *windows)
slot_screen.c
void STGDGLAB_updateLab(Lab *lab, LabChildren *children)
The mode's main task: loads the files and packs the party, then runs the lab (STGDGLAB_runLab) and dr...
void STGDGLAB_setScrollBarCount(ScrollBar *bar, s32 pageSize, s32 count)
void STGDGLAB_drawSlotScreen(LabSlotScreen *screen, void *children)
Draws the second screen's frames.
s32 STGDGLAB_getItemSprite(s32 id)
The sprite of a recipe's id (STGDGLAB_entries), 0 for an id not there.
void STGDGLAB_runEntryList(LabEntryList *panel, LabEntryListWindows *windows)
The panel's states: fades in, moves the cursor through the ids and scrolls the list; triangle closes ...
Task * STGDGLAB_createRecipeScreen(Lab *lab)
Creates the main menu's third screen (task), the recipes, and fades the menu's page out.
LabRecipe STGDGLAB_recipes6[]
void STGDGLAB_drawPartyScreen(LabPartyScreen *screen, void *children)
Draws the first screen's frames and the party's animations.
s32 STGDGLAB_updateFade(PanelAnim *fade)
void STGDGLAB_updateRecipeScreen(LabRecipeScreen *screen, LabRecipeScreenWindows *win)
The third screen: a row of recipes at a time, the picked id's name and description on cross.
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...
Task * STGDGLAB_createPartyScreen(Lab *lab)
Creates the main menu's first screen (task), where a partner joins the party in the member's place.
Task * STGDGLAB_createSlotScreen(Lab *lab)
Creates the main menu's second screen (task), the party member's three slots.
void STGDGLAB_openMenu(LabMenu *menu)
menu.c
void STGDGLAB_setScrollBarRange(ScrollBar *bar, s32 top, s32 bottom)
s32 STGDGLAB_closeLabMenu(Lab *lab)
Lab.closeMenu: closes the main menu's page; 1 if the menu was running.
void STGDGLAB_updatePartyScreen(LabPartyScreen *screen, void *children)
The first screen's task: lists the unlocked partners outside the party, plus an empty pick to take th...
LabRecipe STGDGLAB_recipes3[]
void STGDGLAB_drawMenu(LabMenu *menu, void *children)
Draws the main menu's frames and the party's animations.
void STGDGLAB_showPartyPage(LabPartyScreen *screen, LabPartyScreenWindows *windows)
party_screen.c
void STGDGLAB_updateEntryPanel(LabEntryPanel *panel, LabEntryPanelWindows *windows)
The panel's task: lists the partner's entries two by two, with the shoulder buttons scrolling five ro...
LabMenu * STGDGLAB_createMenu(Lab *lab)
Creates the lab's main menu (task)
LabRecipe STGDGLAB_recipes4[]
s32 STGDGLAB_tableItems[]
STGDGLAB's data, in its order: the recipe screen's, the menu's, the party screen's and the lab's.
void STGDGLAB_fadeOutLab(Lab *lab)
Lab.fadeOut: fades the screen out in 0x1E frames, as the lab is left.
s32 STGDGLAB_countRowIds(LabRecipeScreen *screen, u32 row)
How many of the row's four recipes the third screen shows: those whose first id the partner has (STGD...
LabWindowPos STGDGLAB_layout[]
Where the windows go: the five stats' labels, their values and the name.
s32 STGDGLAB_moveRecipeCursor(LabRecipeScreen *screen, s32 step)
Moves the third screen's cursor by step slots, to the first column with an id; whether it moved.
s32 STGDGLAB_labMenuRunning(Lab *lab)
Lab.menuOpen: 1 when the main menu's task is running (its page not fading)
void STGDGLAB_updateMenu(LabMenu *menu, void *children)
The main menu's task: runs and draws the menu; while its page fades (TASK_DONE, from STGDGLAB_openMen...
void STGDGLAB_showSkillPanel(LabSkillPanel *panel, LabSkillPanelWindows *windows, s32 show)
Shows the slot's Digimon's skills, each marked or not and in the palette of marked,...
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 ...
LabRecipe STGDGLAB_recipes5[]
void STGDGLAB_startFader(ScreenFade *task, s32 fadeIn, s32 duration)
void STGDGLAB_showMenuPage(LabMenu *menu, LabMenuWindows *windows)
Shows the main menu's page: the name and five stats (STGDGLAB_menuStats) of the lab's party member,...
s32 STGDGLAB_updateLerp(MenuLerp *lerp)
void STGDGLAB_runMenu(LabMenu *menu, LabMenuWindows *windows)
The main menu's states: fades its panels in, picks one of the three screens with up and down,...
void STGDGLAB_createSkillPanelWindows(LabSkillPanel *panel, LabSkillPanelWindows *windows)
skill_panel.c
s32 STGDGLAB_pageStats[]
the stats the first screen's page shows
s32 STGDGLAB_menuStats[]
the stats the menu's page shows
ScreenFade * STGDGLAB_createFader(void)
void STGDGLAB_closeMenu(LabMenu *menu)
The main menu's close: fades its page out and hides its stats and name, while a screen is open over i...
void STGDGLAB_runLab(Lab *lab, LabChildren *children)
lab.c
LabRecipe STGDGLAB_recipes7[]
void STGDGLAB_showEntryPanel(LabEntryPanel *panel, LabEntryPanelWindows *windows, s32 show)
Shows the page of the partner's entries, and the stats and skills of the one under the cursor; or hid...
s32 STGDGLAB_getItemB(s32 id)
The third value (b) of a recipe's id in STGDGLAB_entries, 0 for an id not there; LabFuncs....
void STGDGLAB_updateScrollBar(ScrollBar *bar)
void STGDGLAB_createEntryListWindows(LabEntryList *panel, LabEntryListWindows *windows)
entry_list.c
void STGDGLAB_updateSkillPanel(LabSkillPanel *panel, LabSkillPanelWindows *windows)
The panel of a partner's Digimon's skills: up and down pick one, cross marks it to pass on or unmarks...
void STGDGLAB_createEntryPanelWindows(LabEntryPanel *panel, LabEntryPanelWindows *windows)
entry_panel.c
void STGDGLAB_startLerp(MenuLerp *lerp, s32 from, s32 to, s32 frames)
LabRecipe STGDGLAB_recipes2[]
s32 STGDGLAB_hasRecipeId(LabRecipeScreen *screen, s32 row, u32 col)
Whether the partner has the first id of the recipe (row, col); 0 for a column past the recipes.
void STGDGLAB_startFade(PanelAnim *fade, s32 fadeIn)
LabRecipe STGDGLAB_recipes0[]
to STGDGLAB_recipes7, by table
s32 STGDGLAB_findRecipe(LabRecipeScreen *screen, s32 row, u32 col, s32 slot)
recipe_screen.c
void STGDGLAB_drawRecipeScreen(LabRecipeScreen *screen, LabRecipeScreenWindows *win)
Draws the third screen: the picked id, the frames, the recipes of the row (the ids found,...
void STGDGLAB_packParty(Lab *lab)
Counts the party and moves its members to the first places of GAME.party.
Lab * STGDGLAB_createLab(void)
Creates the mode's main task, the lab.
#define TASK_HEADER(Type)
A menu cursor: a text window showing one of the CURSOR_FRAMES glyphs.
The overlay's tables and helpers.
LabRecipe * recipes[8]
[row * 4 + col]
PartnerAnim * anim
STGDGLAB_partnerAnims, by partner.
LabWindowPos * layout
STGDGLAB_layout.
TextWindow * levelLabel
"Skill LV", left of values[13]
TextWindow * values[14]
the battle stats, the resistances, the level
A panel of the main menu (STGDGLAB_createEntryList)
void(* close)(struct LabEntryList *panel)
PanelAnim titlePanel
their levels follow fade's
s32 ids[50]
the partner's slots, then (allEntries) its other entries
s32 allEntries
list the other entries after the slots
s32 closable
triangle closes it
s32 blink
the scroll arrows
ScrollBar * scrollBar
USA only.
TextWindow * values[14]
the battle stats, the resistances, the level
TextWindow * levelLabel
"Skill LV", left of values[13]
A panel of the second screen (STGDGLAB_createEntryPanel): a partner's entries and its three slots.
s16 entries[47]
listPartnerEntries
s32 slot
the one the picked entry goes in
s16 slots[3]
getPartnerSlots
s32 option
the slot to digivolve to in battle, 3 for none
An entry of STGDGLAB_entries: a Digimon of the recipes (GET_DIGIMON)
s16 b
0x100-0x135, one per Digimon; only STGDGLAB_getItemB reads it, and nothing in src/ calls that (LabFun...
The lab's helpers (STGDGLAB_data.funcs)
s32(* updateFade)(PanelAnim *fade)
void(* startLerp)(MenuLerp *lerp, s32 from, s32 to, s32 frames)
s32(* filesLoading)(void)
void(* startFade)(PanelAnim *fade, s32 fadeIn)
s32(* updateLerp)(MenuLerp *lerp)
struct LabEntryList * panel
TextWindow * entriesHint
as LabMenuWindows'
The main menu's first screen (STGDGLAB_createPartyScreen)
s32 frames[3]
the party's animation frames
s32 partners[PARTNER_COUNT]
the unlocked partners outside the party, -1 for none
s32 pageRow
1: the page is 0x7A lower, 0 (at the top) while the entry list is open
s32 frame
the picked partner's
u8 pad[0xC4 - 0xB4]
never read or written
TextWindow * prev
by the arrows
TextWindow * name
the picked id's
TextWindow * title
with the partner's name
The main menu's third screen (STGDGLAB_createRecipeScreen)
s32 complete[4]
0: a recipe of the row lacks ids
s32 table
into STGDGLAB_data.recipes
s32 pad5C
never read or written
s32 slots
how many of found[row] are in use
s32 pad298
never read or written: createTask allocates 0x29C bytes
s32 nextRow
L1 and R1 move to it.
s32 found[4][4][5]
the owned ids of each recipe
A recipe of STGDGLAB_data's tables.
s16 needed
how many of the ids the partner must have
TextWindow * learned
how many skills are marked
TextWindow * learnedLabel
TextWindow * mp
the picked skill's
A panel of the second screen (STGDGLAB_createSkillPanel)
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)
s16 slots[3]
getPartnerSlots
u8 pad[0xC8 - 0xC0]
never read or written
s16 entries[45]
listPartnerEntries
s32 picked
the list's cursor when an entry was picked
Where a window of the menu or the first screen goes, and its string.
s32 string
of TEXT_DIGI_LAB, -1: none
The mode's main task (STGDGLAB_createLab)
s32 partySize
the party's slots: PARTY_SIZE
void(* packParty)(struct Lab *lab)
s32(* openMenu)(struct Lab *lab)
void(* fadeOut)(struct Lab *lab)
s32(* closeMenu)(struct Lab *lab)
s32 member
the party member the screens show
s32(* menuOpen)(struct Lab *lab)
Opens or closes a menu panel: level goes 0 -> ONE in duration frames (or back at twice the speed),...
A partner Digimon's animation in a menu: up to seven sprite ids, -1 ending it early (the sprites are ...
One of a partner's Digimon (getPartnerEntry, setPartnerEntry)
Fades the whole screen to black and back with a subtractive rectangle.
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...