Digimon World 3 decomp
The European version, SLES_039.36
Loading...
Searching...
No Matches
overlay.c
Go to the documentation of this file.
1#include "engine/game.h"
2
3/* Each mode's overlay (mode >> 8): its entry point and its file */
20
22
23/*
24 * The root task (created by main): loads the overlay of the current game
25 * mode and calls its entry point, which returns the mode's top task. Once a
26 * new mode is requested it dies, and main creates it again.
27 */
28void updateModeTask(Task *task, Task **children) {
29 switch (task->state) {
30 case 0:
31 default:
33 children[0] = MODE_ENTRY_POINTS[GAME.funcs.getMode() >> 8]();
34 task->nextState(task);
35 break;
36 case 1:
37 if (GAME.funcs.isModeChangePending() != 0) {
38 task->setState(task, TASK_KILL);
39 }
40 break;
41 case 2:
42 case 3:
43 break;
44 }
45}
46
47/* Creates the task that runs the current mode (updateModeTask) */
48void *createModeTask(void) {
49 return createTask(updateModeTask, sizeof(Task), 4);
50}
51
52/* Copies the overlay of the current mode (mode >> 8) to OVERLAY_ADDRESS */
53void loadModeOverlay(void) {
54 s32 id = GAME.funcs.getMode() >> 8;
55 u8 *src;
56 void *dst;
57
58 if (OVERLAY_LOADER.mode != id) {
62 dst = OVERLAY_ADDRESS;
64 }
65}
66
67/* Copies a file to the second overlay area (SUB_OVERLAY_ADDRESS) */
69 u8 *src;
70 void *dst;
71
72 if (OVERLAY_LOADER.subOverlay != id) {
74 src = FILE_CACHE.load(id);
77 }
78}
Task * FIGHTSTG_start(void)
The mode's entry point (MODE_ENTRY_POINTS): starts the root task.
Definition start.c:32
Task * STFGTREP_start(void)
The mode's entry point (MODE_ENTRY_POINTS)
Definition scene.c:35
Task * CARDGAME_start(void)
The mode's entry point (MODE_ENTRY_POINTS)
Definition scene.c:51
#define NULL
Definition common.h:17
signed int s32
Definition common.h:11
unsigned char u8
Definition common.h:8
Task * CNTY_SEL_start(void)
The mode's entry point (MODE_ENTRY_POINTS): clears VRAM, starts the root task and loads the screen's ...
GameState GAME
The save data, the game mode and the methods.
Definition state.c:64
#define TASK_KILL
Definition task.h:37
Task * FIELDSTG_start(void)
FIELDSTG's entry point: creates its root task.
Definition start.c:34
#define CD_SECTOR_SIZE
The bytes of data in a sector (Mode 2 Form 1), as the reader reads them.
Definition file.h:48
FileCache FILE_CACHE
The file cache.
Definition file_cache.c:7
FileTableFuncs FILE_TABLE
The disc's file table.
void * memcpy(void *dst, const void *src, int size)
void *const SUB_OVERLAY_ADDRESS
Definition main.c:92
void *const OVERLAY_ADDRESS
Where the modes' overlays (the .PRO files of AAA/PRO) load, after the executable, and the stages and ...
Definition main.c:91
Task * STGDGLAB_createScene(void)
Starts the mode: creates its scene task.
Definition scene.c:13
Task * STGTRAIN_start(void)
The mode's entry point (MODE_ENTRY_POINTS): starts the root task.
Definition scene.c:45
Task * STDGNAME_start(void)
The mode's entry point (MODE_ENTRY_POINTS): starts the root task.
Definition scene.c:34
Task * STPLNMET_start(void)
The mode's entry point (MODE_ENTRY_POINTS): starts the root task.
Definition scene.c:43
Task * STDWTITL_start(void)
The overlay's entry: creates its main task (STDWTITL_tickScreen)
Definition scene.c:77
s32 MODE_OVERLAY_FILES[23]
Definition overlay.c:12
void loadSubOverlay(s32 id)
Copies a file to the second overlay area (SUB_OVERLAY_ADDRESS)
Definition overlay.c:68
void updateModeTask(Task *task, Task **children)
The root task (created by main): loads the overlay of the current game mode and calls its entry point...
Definition overlay.c:28
Task *(* MODE_ENTRY_POINTS[23])(void)
Each mode's overlay (mode >> 8): its entry point and its file.
Definition overlay.c:4
void loadModeOverlay(void)
Copies the overlay of the current mode (mode >> 8) to OVERLAY_ADDRESS.
Definition overlay.c:53
OverlayLoader OVERLAY_LOADER
Definition overlay.c:21
void * createModeTask(void)
Creates the task that runs the current mode (updateModeTask)
Definition overlay.c:48
#define FILE_FIELDSTG
Definition overlay.h:44
Task * STITSHOP_start(void)
#define FILE_STGMCARD
Definition overlay.h:55
#define FILE_CNTY_SEL
Definition overlay.h:43
Task * STCRDDEK_start(void)
#define FILE_FIGHTSTG
Definition overlay.h:45
#define FILE_STPLNMET
Definition overlay.h:58
Task * STGMCARD_start(void)
#define FILE_STGTRAIN
Definition overlay.h:56
#define FILE_STITSHOP
Definition overlay.h:57
#define FILE_STFGTREP
Definition overlay.h:53
Task * STSTATUS_start(void)
Task * STCRDABM_start(void)
#define FILE_CARDGAME
The mode overlays' files (MODE_OVERLAY_FILES), by their disc names: each one's sector count in FILE_S...
Definition overlay.h:41
#define FILE_SHOCKTST
Definition overlay.h:46
#define FILE_STCRDABM
Definition overlay.h:49
#define FILE_SOUNDTST
Definition overlay.h:47
#define FILE_STSTATUS
Definition overlay.h:59
#define FILE_STGDGLAB
Definition overlay.h:54
#define FILE_STDGNAME
Definition overlay.h:42
#define FILE_STCRDSHP
Definition overlay.h:51
Task * STCRDSHP_start(void)
Task * SHOCKTST_start(void)
#define FILE_STCRDDEK
Definition overlay.h:50
#define FILE_STAGSLCT
Definition overlay.h:48
#define FILE_STDWTITL
Definition overlay.h:52
Task * SOUNDTST_start(void)
Creates the sound test's root task.
Definition sound_test.c:633
Task * STAGSLCT_start(void)
Creates the stage select's root task.
void *(* load)(u32 file)
Definition file.h:92
s32(* getSectorCount)(s32 file)
Definition file.h:17
s32(* getMode)(void)
Definition game_state.h:19
s32(* isModeChangePending)()
Definition game_state.h:22
GameFuncs funcs
Definition game_state.h:582
Loads the overlay of the current mode (OVERLAY_LOADER)
Definition overlay.h:10
s32 subOverlay
Definition overlay.h:12
void(* loadModeOverlay)(void)
Definition overlay.h:13
s32 mode
whose overlay is loaded
Definition overlay.h:11
Any task, seen through its header.
Definition task.h:62
void(* setState)(struct Task *task, s32 state)
Definition task.h:63
void(* nextState)(struct Task *task)
Definition task.h:63
s32 state
Definition task.h:63
void * createTask(void(*update)(), s32 size, s32 childrenSize)
createTaskWithId for a task nothing needs to find
Definition task.c:105