Digimon World 3 decomp
The European version, SLES_039.36
Loading...
Searching...
No Matches
file_loader.c
Go to the documentation of this file.
1/* The task that loads the field's files before it starts */
2
3#include "field/field_mode.h"
4
5/* The task (FIELDSTG_loadFieldFiles's) goes unused */
7 s32 mode = GAME.funcs.getMode();
8 s32 found = 0;
9 s32 i;
10
11 for (i = 0; FIELDSTG_file5DModes[i] != 0; i++) {
12 if (FIELDSTG_file5DModes[i] == (s16)mode) {
13 found = 1;
14 break;
15 }
16 }
17 if (found) {
19 }
20}
21
22/* Requests the files of the actions the map's slots offer: climbs, drops
23 and the gauge game. The task (FIELDSTG_loadFieldFiles's) goes unused. */
26 s32 climbs = 0;
27 s32 drops = 0;
28 s32 gauges = 0;
29
30 for (; entry->type != 0; entry++) {
31 switch (entry->type) {
32 case SLOT_CLIMB_UP:
33 case SLOT_CLIMB_DOWN:
34 climbs = 1;
35 break;
36 case SLOT_DROP:
37 drops = 1;
38 break;
39 case SLOT_GAUGE:
40 gauges = 1;
41 break;
42 }
43 }
44 if (climbs) {
46 }
47 if (drops) {
49 }
50 if (gauges) {
52 }
53}
54
55/* Loads the field's files, a step at a time: 1 once done */
57 TimLoader sprites;
58 TimLoader loader;
59
60 switch (task->step) {
61 case 0:
62 switch (task->counter) {
63 case 0:
64 default:
66 task->tickCounter(task);
67 /* fallthrough */
68 case 1:
70 return 0;
71 }
72 initTimLoader(&sprites);
77 task->nextStep(task);
78 break;
79 }
80 break;
81 case 1:
82 switch (task->counter) {
83 case 0:
84 default:
86 task->nextStep(task);
87 break;
88 }
89 if (FIELDSTG_state.imageEntry != 0) {
91 }
92 if (FIELDSTG_state.sheetEntry != 0) {
94 }
95 if (FIELDSTG_state.imageFile != 0) {
97 }
98 task->tickCounter(task);
99 /* fallthrough */
100 case 1:
101 if (FIELDSTG_state.imageEntry != 0) {
103 return 0;
104 }
105 initTimLoader(&loader);
109 }
110 task->tickCounter(task);
111 /* fallthrough */
112 case 2:
113 if (FIELDSTG_state.imageFile != 0) {
115 return 0;
116 }
117 initTimLoader(&loader);
121 }
122 task->tickCounter(task);
123 /* fallthrough */
124 case 3:
126 return 0;
127 }
128 task->nextStep(task);
129 break;
130 }
131 break;
132 case 2:
133 if (FIELDSTG_state.imageFile != 0) {
135 }
136 task->nextStep(task);
137 /* fallthrough */
138 case 3:
144 task->nextStep(task);
145 return 1;
146 default:
147 return 1;
148 }
149 return 0;
150}
151
152/* The file loader's update: loads the field's files from its first step on
153 (FIELDSTG_loadFieldFiles) */
155 switch (task->state) {
156 case TASK_INIT:
157 default:
158 task->nextState(task);
159 task->substate = task->key2;
160 /* fallthrough */
161 case TASK_RUN:
162 if (FIELDSTG_loadFieldFiles(task) != 0) {
163 task->setState(task, TASK_KILL);
164 }
165 break;
166 case TASK_DONE:
167 case TASK_KILL:
168 break;
169 }
170}
171
172/* Creates the file loader, which starts at a step */
174 Task *task = createTask(FIELDSTG_runFileLoader, sizeof(Task) + 4, 0); /* 4 bytes more than it uses */
175
176 task->key2 = step;
177 return task;
178}
signed int s32
Definition common.h:11
signed short s16
Definition common.h:9
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 SLOT_CLIMB_UP
Definition field_map.h:256
#define SLOT_CLIMB_DOWN
Definition field_map.h:257
#define SLOT_GAUGE
the gauge game
Definition field_map.h:261
#define SLOT_DROP
Definition field_map.h:258
FIELDSTG.PRO: the field mode, where the player walks around the map.
#define FIELD_CLIMB_FILE
Definition field_mode.h:604
#define FIELD_DROP_FILE
Definition field_mode.h:601
#define FIELD_SPRITES_X
Where the field keeps its textures in VRAM: the two images of FIELD_SPRITES_FILE (its entries 2 and 3...
Definition field_mode.h:27
#define FIELD_SPRITES_FILE
The field's effect sprites (FIELDSTG_drawSpotEffect): the discs number their files differently.
Definition field_mode.h:591
#define FIELD_OBJECTS_CLUT_Y
Definition field_mode.h:32
#define FIELD_SPRITES_Y
Definition field_mode.h:29
#define FIELD_OBJECTS_Y
Definition field_mode.h:31
#define FIELD_SPRITES2_X
Definition field_mode.h:28
#define FIELD_OBJECTS_X
Definition field_mode.h:30
#define FIELD_GAUGE_FILE
Definition field_mode.h:602
s16 FIELDSTG_file5DModes[]
the modes that load the field file 0x5D (FIELDSTG_requestInnNames)
Definition fieldstg.c:1804
FieldState FIELDSTG_state
Definition fieldstg.c:2641
#define TEXT_INN_NAMES
HTLNAM.
Definition file.h:213
#define TEXT_FILE(file)
Definition file.h:190
#define TEXT_STATUS
STATUS: the field menu's and STSTATUS's.
Definition file.h:225
#define FILE_MENU_SPRITES
Files the engine loads by number.
Definition file.h:188
FileCache FILE_CACHE
The file cache.
Definition file_cache.c:7
s32 FIELDSTG_loadFieldFiles(Task *task)
Loads the field's files, a step at a time: 1 once done.
Definition file_loader.c:56
void FIELDSTG_runFileLoader(Task *task)
The file loader's update: loads the field's files from its first step on (FIELDSTG_loadFieldFiles)
void FIELDSTG_requestInnNames(Task *task)
The task (FIELDSTG_loadFieldFiles's) goes unused.
Definition file_loader.c:6
Task * FIELDSTG_createFileLoader(s32 step)
Creates the file loader, which starts at a step.
void FIELDSTG_requestSlotFiles(Task *task)
Requests the files of the actions the map's slots offer: climbs, drops and the gauge game.
Definition file_loader.c:24
s32 sheetEntry
the stage's sprite sheet, loaded before the field starts, or 0
Definition field_map.h:445
s32 imageEntry
an image archive's file entry, loaded at (0x140, 0x100), or 0
Definition field_map.h:448
s32 imageFile
or an image archive file, or 0
Definition field_map.h:449
StageSlot * slots
up to the first type 0
Definition field_map.h:447
s32 textFile
the stage's text file, for the talks
Definition field_map.h:461
void(* free)(s32 file)
Definition file.h:93
void *(* load)(u32 file)
Definition file.h:92
s32(* isLoading)(s32 file)
Definition file.h:88
void(* request)(s32 file)
Definition file.h:90
void *(* getEntry)(u32 fileAndIndex)
Definition file.h:96
s32(* getMode)(void)
Definition game_state.h:19
GameFuncs funcs
Definition game_state.h:582
What the player can trigger on a map (FIELDSTG_updateTriggers): a record of the table at FieldState....
Definition field_map.h:276
u16 type
SLOT_EXIT...
Definition field_map.h:278
Any task, seen through its header.
Definition task.h:62
s32 key2
Definition task.h:63
void(* setState)(struct Task *task, s32 state)
Definition task.h:63
s32 counter
Definition task.h:63
s32 substate
Definition task.h:63
void(* nextState)(struct Task *task)
Definition task.h:63
void(* nextStep)(struct Task *task)
Definition task.h:63
s32 state
Definition task.h:63
s32 step
Definition task.h:63
void(* tickCounter)(struct Task *task)
Definition task.h:63
Uploads TIM images to VRAM (initTimLoader); acts on TIM_LOADER.
Definition gfx.h:325
void(* setClutPos)()
(x, y)
Definition gfx.h:337
void(* setImagePos)()
(x, y)
Definition gfx.h:336
void(* loadArchive)()
(archive): each image 64 halfwords to the right
Definition gfx.h:338
void * createTask(void(*update)(), s32 size, s32 childrenSize)
createTaskWithId for a task nothing needs to find
Definition task.c:105
void initTimLoader(TimLoader *obj)
Clears a TIM loader, gives it its methods and binds it.
Definition tim_loader.c:119