Digimon World 3 decomp
The European version, SLES_039.36
Loading...
Searching...
No Matches
field_map.h
Go to the documentation of this file.
1#ifndef FIELD_MAP_H
2#define FIELD_MAP_H
3
4/*
5 * What the stage overlays and the executable use of FIELDSTG (fieldstg.h has
6 * the rest): its layers and task ids, the map and the functions that read
7 * it, the records of the tables that each stage gives FIELDSTG, the field's
8 * state, and the functions the stages and the executable call.
9 * The map is a tree of cells: a grid of 128-pixel cells, then levels of 64,
10 * 32, 16 and 8 pixels, each cell four of the next level's, then a byte for
11 * each pixel of the 8x8 blocks.
12 */
13
14#include "engine/game.h"
15
16/* The field's drawing layers, by their ids (GFX.funcs.createLayer), as
17 FIELDSTG_updateField creates them */
18#define FIELD_LAYER_BACK 0x1000 /* the background's color */
19#define FIELD_LAYER_COVER 0x1001 /* the cover that fades the screen (FIELDSTG_drawCover) */
20#define FIELD_LAYER_MAP 0x1002 /* the map, its objects and characters, and the menus */
21#define FIELD_LAYER_BANNER 0x1003 /* the area name banner */
22#define FIELD_LAYER_TEXT 0x1004 /* the message and talk boxes */
23
24/* The ids of the field's tasks (createTaskWithId, TASK_REGISTRY.funcs.find) */
25#define FIELD_TASK_MAP 4 /* FIELDSTG_createMapStreamer's */
26#define FIELD_TASK_ACTOR 5 /* every character (FIELDSTG_createActor) */
27#define FIELD_TASK_FIELD 7 /* the field's main task (FIELDSTG_createField) */
28#define FIELD_TASK_BANNER 9 /* the area name banner */
29#define FIELD_TASK_HIDDEN_SPOTS 0xB
30#define FIELD_TASK_CAMERA 0x10
31#define FIELD_TASK_ICON 0x16 /* the icon over the player's head */
32#define FIELD_TASK_LAUNCHER 0x17 /* a stage's launchers (FIELDSTG_runLaunch) */
33#define FIELD_TASK_COMMANDS 0x32D /* script command 813 (FIELDSTG_startCommandTask): the field commands */
34
35/*
36 * The field commands, which an event script hands FIELD_TASK_COMMANDS as the
37 * first argument of a pose command (FIELDSTG_handleFieldCommand). The
38 * PLAY_ commands play the sound of their SOUNDTST name; a STOP_ command
39 * keys off the sound its PLAY_ command holds.
40 */
41#define FIELD_COMMAND_HALT_PARTNERS 0x337 /* the partners stop following */
42#define FIELD_COMMAND_ICON1 0x338 /* the player icon's substate 1, with ITEM_GET */
43#define FIELD_COMMAND_ICON2 0x339 /* its substate 2 */
44#define FIELD_COMMAND_ICON3 0x34A /* its substate 3, with ITEM_GET */
45#define FIELD_COMMAND_HIDE_OBJECTS(n) (0x34D + (n)) /* hides the map objects of group n */
46#define FIELD_COMMAND_SHOW_OBJECTS(n) (0x353 + (n)) /* shows them */
47#define FIELD_OBJECT_GROUPS 6
48#define FIELD_OBJECT_GROUP_ANIM 100 /* the StageTile.anim of group 0; group n has 100 + n */
49#define FIELD_COMMAND_PLAY_INFO_SIG 0x365
50#define FIELD_COMMAND_PLAY_GAYALOOP 0x366
51#define FIELD_COMMAND_STOP_GAYALOOP 0x367
52#define FIELD_COMMAND_PLAY_WEAR_OFF 0x368
53#define FIELD_COMMAND_PLAY_DEMO_BGM 0x369
54#define FIELD_COMMAND_PLAY_SE000002 0x36A
55#define FIELD_COMMAND_PLAY_BEAM_SHT 0x36B
56#define FIELD_COMMAND_PLAY_SWITCH02 0x36C
57#define FIELD_COMMAND_PLAY_MASK_SET 0x36D
58#define FIELD_COMMAND_PLAY_BM_ERASE 0x36E
59#define FIELD_COMMAND_PLAY_LD_ERASE 0x36F
60#define FIELD_COMMAND_PLAY_PLAYER11 0x370
61#define FIELD_COMMAND_STOP_PLAYER11 0x371
62#define FIELD_COMMAND_SHAKE_CAMERA 0x372
63#define FIELD_COMMAND_STOP_CAMERA_SHAKE 0x373
64#define FIELD_COMMAND_PLAY_TRAP_OFF 0x374
65#define FIELD_COMMAND_PLAY_SAVEDEMO 0x375
66#define FIELD_COMMAND_SEARCH_EVENT_SPOT 0x376 /* FIELDSTG_searchEventSpot */
67#define FIELD_COMMAND_PLAY_SWITCH03 0x377
68#define FIELD_COMMAND_PLAY_SN_ENTRY 0x378
69#define FIELD_COMMAND_PLAY_SN_ERASE 0x379
70#define FIELD_COMMAND_PLAY_TELEPORT 0x37A
71#define FIELD_COMMAND_PLAY_BULB_003 0x37C
72#define FIELD_COMMAND_PLAY_GONDRA_S 0x37D
73#define FIELD_COMMAND_PLAY_PIYOPIYO 0x37E
74#define FIELD_COMMAND_PLAY_COMCD103 0x37F
75#define FIELD_COMMAND_PLAY_COMCD201 0x380
76#define FIELD_COMMAND_PLAY_COMCD111 0x381
77#define FIELD_COMMAND_PLAY_BEAM_HIT 0x382
78#define FIELD_COMMAND_PLAY_SWITCH01 0x383
79#define FIELD_COMMAND_PLAY_COMCD115 0x384
80#define FIELD_COMMAND_STOP_COMCD115 0x385
81#define FIELD_COMMAND_STOP_BEAM_HIT 0x386
82
83/* Some of FieldMap's maps (files): those of the floors the player walks on
84 come first, and GAME.mapIndex picks one (FieldMap.setMap, SLOT_MAP) */
85#define FIELD_MAP_FLOOR0 0
86#define FIELD_MAP_FLOOR1 1
87#define FIELD_MAP_AREAS 4 /* a cell's value: its battle area (FieldBattles), or 0 */
88#define FIELD_MAP_TRIGGERS 7 /* a cell's value: a direction (3 bits) and a StageSlot (5) */
89
90typedef struct FieldMap {
91 /* 0x00 */ s32 files[8]; /* the file entry of each map, set by setFile */
92 /* 0x20 */ s32 width; /* of the grid, in cells */
93 /* 0x24 */ s32 height;
94 /* 0x28 */ u8 *grid;
95 /* 0x2C */ u8 *cells64;
96 /* 0x30 */ s16 *cells32;
97 /* 0x34 */ s16 *cells16;
98 /* 0x38 */ s16 *cells8;
99 /* 0x3C */ u8 *pixels;
100 /* 0x40 */ void (*setFile)(s32 index, s32 file); /* FIELDSTG_setMapFile */
101 /* 0x44 */ s32 (*getCell)(s32 index, Vec2 *pos); /* FIELDSTG_getMapCell */
102 /* 0x48 */ void (*getWalkStep)(Vec2 *pos, s32 scale, s32 dir, Vec2 *out); /* FIELDSTG_getWalkStep */
103 /* 0x4C */ void (*getFlyStep)(Vec2 *pos, s32 scale, s32 dir, Vec2 *out); /* FIELDSTG_getFlyStep */
104 /* 0x50 */ void (*setFirstMap)(s32 index); /* FIELDSTG_setFirstMap: the map the player starts on
105 (GAME.mapIndex), when the mode is new */
106 /* 0x54 */ void (*setMap)(s32 index); /* FIELDSTG_setMap: the map the player is on */
107 /* 0x58 */ s32 (*isTileFree)(Vec2 *pos); /* FIELDSTG_isTileFree: 0 where a character or an object stands */
108} FieldMap;
109
111
112/* Where an actor's frames go in VRAM: one of the records after the
113 FieldImage (Actor.image) */
114typedef struct ActorImage {
115 /* 0x0 */ s16 x; /* the texture page */
116 /* 0x2 */ s16 y;
117 /* 0x4 */ s16 imageX; /* where FIELDSTG_animateActor loads each frame */
118 /* 0x6 */ s16 imageY;
119 /* 0x8 */ s16 u;
120 /* 0xA */ s16 v;
121 /* 0xC */ s16 clutX;
122 /* 0xE */ s16 clutY;
123} ActorImage;
124
125/* The image of the field's effects (FieldState.images),
126 then the actors' ActorImages */
127typedef struct FieldImage {
128 /* 0x00 */ ActorImage shadow; /* the actors' shadow (FIELDSTG_drawActor) */
129 /* 0x10 */ s16 x; /* in VRAM */
130 /* 0x12 */ s16 y;
131 /* 0x14 */ s16 w;
132 /* 0x16 */ s16 h;
133 /* 0x18 */ s16 u;
134 /* 0x1A */ s16 v;
135 /* 0x1C */ s16 clutX;
136 /* 0x1E */ s16 clutY;
137} FieldImage;
138
139/* An event of the table FieldState.events, up to
140 the first id -1, which FIELDSTG_startEvent starts */
141typedef struct FieldEvent {
142 /* 0x00 */ s32 id;
143 /* 0x04 */ s16 *script; /* FIELDSTG_runEvent's, or NULL */
144 /* 0x08 */ s32 text; /* a file and index, the file counted from
145 TEXT_FILE(1); or 0 */
146 /* 0x0C */ void *(*start)(void); /* without a script: the task it starts, or NULL */
147 /* 0x10 */ void (*end)(void); /* or NULL */
148} FieldEvent;
149
150/*
151 * The commands of an event script (FieldEvent.script), as FIELDSTG_runEvent
152 * reads them: a halfword kind << 8 | variant, then a fixed number of
153 * arguments. x and y are in pixels, ids are the characters' (Actor.key1)
154 * below 0x320 and the script commands' from 0x320 on.
155 */
156#define SCRIPT_END 0 /* ends the event (and any unknown kind) */
157#define SCRIPT_PLACE(id, x, y) 0x100, id, x, y /* puts a character at (x, y) */
158#define SCRIPT_POSE(id, set, dir) 0x101, id, set, dir /* Actor.setPose: its animation set, facing dir */
159/* the same word for a script command's id: FIELDSTG_setEventPose creates its task
160 if none runs and hands it the command and the argument (FIELDSTG_handleScriptCommand) */
161#define SCRIPT_COMMAND(id, command, arg) 0x101, id, command, arg
162#define SCRIPT_WALK(id, x, y, dir) 0x102, id, x, y, dir /* Actor.setGoal: walks to (x, y), then faces dir */
163/* box of the event's boxes shows the event text's entry: a talk box at the corner
164 kind next to the character id, or for kind 4 a message box (FIELDSTG_createSpeech) */
165#define SCRIPT_TALK(box, entry, id, kind) 0x200, box, entry, id, kind
166#define SCRIPT_WAIT(frames) 0x300, frames
167#define SCRIPT_WAIT_BOX 0x301 /* until box 0 closes */
168#define SCRIPT_WAIT_WALK(id) 0x302, id /* until the character gets to its goal */
169#define SCRIPT_WAIT_ANIM(id) 0x303, id /* until its animation ends */
170#define SCRIPT_LEAVE(mode, x, y, dir) 0x304, mode, x, y, dir /* FIELDSTG_leaveField; ends the event */
171#define SCRIPT_FOLLOW(snap, id) 0x600, snap, id /* FIELDSTG_followWithCamera */
172#define SCRIPT_LOOK_AT(snap, x, y) 0x601, snap, x, y /* FIELDSTG_pointCamera */
173
174/* What a character says (FIELDSTG_runActorAction): the first whose conditions hold,
175 or the last, which has none */
176typedef struct FieldTalk {
177 /* 0x0 */ u16 *conditions; /* FLAGS_00.checkConditions's */
178 /* 0x4 */ u16 *actions; /* FLAGS_00.applyActions's when it ends, or NULL */
179 /* 0x8 */ s32 entry; /* its text's entry in the field's text file (FIELDSTG_createTalk) */
180} FieldTalk;
181
182/* The characters (Actor.key1, FieldActorEntry.id) that FIELDSTG_updateField
183 creates for the party. A field can list one of the player's other
184 characters, 1, 0x6A, 0x146 or 0x147, to lead instead, without partners. */
185#define FIELD_CHARACTER_PLAYER 2
186#define FIELD_CHARACTER_PARTNERS 3 /* + the partner (GAME.funcs.getPartyPartner) */
187
188/* The FLAGS_00 flag that every encounter sets (FIELDSTG_startEncounter);
189 until it is set, the stages' slots run an event before the first battle */
190#define FIELD_FLAG_ENCOUNTERED 0xF
191
192/* A character of the field (FieldState.actors, a list of pointers up to NULL), which FIELDSTG_updateField creates
193 unless its conditions fail; the player's other characters (FIELD_CHARACTER_PLAYER) lead the party instead. */
194typedef struct FieldActorEntry {
195 /* 0x00 */ u16 *conditions; /* FLAGS_00.checkConditions's, or NULL */
196 /* 0x04 */ struct FieldTalk *talks; /* up to the first without conditions */
197 /* 0x08 */ s16 id;
198 /* 0x0A */ s16 image; /* its ActorImage, of FieldState.images.actors from 2 (FIELDSTG_createActor) */
199 /* 0x0C */ s16 x; /* in pixels */
200 /* 0x0E */ s16 y;
201 /* 0x10 */ s16 dir;
203
204/*
205 * An object of a map, which FIELDSTG draws: a record of the table at
206 * FieldState.objects, which ends with margin = 0
207 */
208typedef struct StageTile {
209 /* 0x00 */ u8 visible;
210 /* 0x01 */ u8 anim; /* which of a stage's animations sets frame (1-3);
211 FIELDSTG finds objects by it (its lift, 2 and 3,
212 the field commands' groups, FIELD_OBJECT_GROUP_ANIM
213 on) and draws 0xFF from its effect sprites */
214 /* 0x02 */ u8 margin; /* how far off the view it is still drawn; 0 ends the table */
215 /* 0x03 */ u8 depth;
216 /* 0x04 */ u8 frame;
217 /* 0x05 */ u8 cycle; /* 1 cycles the frame, 2 the CLUT row, 3 the row back and forth */
218 /* 0x06 */ u8 cycleFirst;
219 /* 0x07 */ u8 cycleLast;
220 /* 0x08 */ u8 cycleDelay;
221 /* 0x09 */ u8 clutRow;
222 /* 0x0A */ s16 x;
223 /* 0x0C */ s16 y;
224 /* 0x0E */ s16 sortY; /* drawn sorted at this y, or 0 */
225 /* 0x10 */ s16 cycleTime; /* in 1/256 frames; bit 15: going back */
226} StageTile;
227
228/*
229 * The lift: the map objects 3 (always shown) and 2 (shown while it moves),
230 * which move 0x7F pixels up or down the screen with the player, shaking
231 * before and after, each time a script command sets TASK_DONE: FIELDSTG's
232 * (FIELDSTG_createLift, script command 826) and the copies of WSTAG261 and
233 * WSTAG934 (common/update_tile_lift.inc.c)
234 */
235#define LIFT_UP 0x348 /* the lift's script commands: up the screen, */
236#define LIFT_DOWN 0x349 /* and back down to the objects' place on the map */
237
238typedef struct Lift {
240 /* 0x50 */ StageTile *tiles[2]; /* the map objects 3 and 2 */
241 /* 0x58 */ s16 raised; /* the objects are 0x7F up from their place, and the next
242 move takes them down (LIFT_DOWN; flag 0x1C3D at the start) */
243 /* 0x5A */ s16 timer;
244 /* 0x5C */ s16 shake; /* the step of the shake table, then a frame count */
245 /* 0x5E */ s16 pad5E; /* never read or written */
246 /* 0x60 */ s16 y[2]; /* the objects' y when the move started */
247 /* 0x64 */ s32 playerY;
248 /* 0x68 */ s16 homeY[2]; /* the objects' place on the map */
249} Lift;
250
251/* The kinds of StageSlot (type). SLOT_DEPTH, SLOT_MAP, SLOT_EVENT, the slides
252 and SLOT_LAUNCH act as the player steps on them; the others show a balloon
253 and wait for cross, and those up to SLOT_GAUGE only while the player faces
254 them (FIELDSTG_findTrigger) */
255#define SLOT_EXIT 1 /* leaves for mode arg at (x, y), facing dir */
256#define SLOT_CLIMB_UP 2
257#define SLOT_CLIMB_DOWN 3
258#define SLOT_DROP 4
259#define SLOT_DEPTH 5 /* the player's depth, arg */
260#define SLOT_MAP 6 /* the map the player is on, arg (FieldMap.setMap) */
261#define SLOT_GAUGE 7 /* the gauge game */
262#define SLOT_EVENT 8 /* starts the event arg */
263#define SLOT_WARP1 9 /* a warp (FieldWarp at arg) with effect and cutscene 1 */
264#define SLOT_WARP0 10 /* the same with effect and cutscene 0 */
265#define SLOT_SLIDE 11
266#define SLOT_STOP_SLIDE 12
267#define SLOT_LAUNCH 13 /* sends the player flying (FIELDSTG_launchActor) */
268#define SLOT_LAUNCH_OUT 14 /* the same, then leaves for mode arg */
269
270/*
271 * What the player can trigger on a map (FIELDSTG_updateTriggers): a record
272 * of the table at FieldState.slots, which ends with type 0,
273 * where the points are copied to. The stages fill arg to placeArg
274 * from their place points (copyPlacePoints, in src/field/stages/common).
275 */
276typedef struct StageSlot {
277 /* 0x00 */ u16 conditions[2][2]; /* flag code and value, or code 0xFFFF */
278 /* 0x08 */ u16 type; /* SLOT_EXIT... */
279 /* 0x0A */ u16 arg; /* by type: a mode, a depth, a map, an event or a height (in 16
280 pixels, plus 1 for a climb); a warp's and a launch's SlotDest starts here */
281 /* 0x0C */ u16 x;
282 /* 0x0E */ u16 y;
283 /* 0x10 */ u16 dir;
284 /* 0x12 */ u16 hideAnim; /* the animation of the map objects to hide, or 0 */
285 /* 0x14 */ u16 place; /* copied to GAME.place, the place (FieldBattles.id) */
286 /* 0x16 */ u16 placeArg; /* copied to GAME.placeArg: with place, the next stage's place points */
287} StageSlot;
288
289/* Where a slot leads: a StageSlot from its arg on, as the warps (FieldTask.warp)
290 and the launches (Launch.dest) read it */
291typedef struct SlotDest {
292 /* 0x0 */ s16 mode;
293 /* 0x2 */ s16 x; /* in pixels */
294 /* 0x4 */ s16 y;
295 /* 0x6 */ s16 dir;
296 /* 0x8 */ u16 hideAnim; /* which a warp doesn't read */
297 /* 0xA */ u16 place; /* copied to GAME.place, the place (FieldBattles.id) */
298 /* 0xC */ u16 placeArg; /* copied to GAME.placeArg */
299} SlotDest;
300
301/* A slot's destination: its arg on, read as signed halfwords */
302#define SLOT_DEST(slot) ((SlotDest *)&(slot)->arg)
303
304/* What an actor is doing, its substate (FIELDSTG_runActorAction) */
305#define ACTOR_POSED 0 /* in the pose an event set (FIELDSTG_setActorPose) */
306#define ACTOR_STAND 1
307#define ACTOR_WALK 2
308#define ACTOR_RUN 3
309#define ACTOR_STOP 4 /* stops after a run */
310#define ACTOR_WALK_OUT 5 /* walks off through an exit (FIELDSTG_walkActorInDir) */
311#define ACTOR_CLIMB 0x40 /* holds on to a wall (FIELDSTG_controlClimb) */
312#define ACTOR_CLIMB_UP 0x41
313#define ACTOR_CLIMB_DOWN 0x42
314#define ACTOR_GET_ON_WALL 0x43 /* from below (FIELDSTG_startClimbUp) */
315#define ACTOR_GET_OVER_EDGE 0x44 /* onto the wall from above (FIELDSTG_startClimbDown) */
316#define ACTOR_CLIMB_OFF_TOP 0x45
317#define ACTOR_CLIMB_OFF_BOTTOM 0x46
318#define ACTOR_DROP 0x47 /* FIELDSTG_startDrop */
319#define ACTOR_GAUGE 0x48 /* plays the gauge game (FIELDSTG_startActorGauge) */
320#define ACTOR_SEARCH 0x49 /* searches a hidden spot */
321#define ACTOR_TALK 0x4A /* answers the actor that talks to it (talkPartner) */
322#define ACTOR_FLY 0x4B /* flies on, triangle held (FIELDSTG_controlFlight) */
323#define ACTOR_FLOAT 0x4C /* slows down in the air */
324#define ACTOR_USE 0x4D /* works one of the objects 0x148, 0x15F and 0x160 */
325#define ACTOR_USED 0x4E /* that object */
326#define ACTOR_SLIDE 0x4F /* FIELDSTG_startActorSlide */
327#define ACTOR_STOP_SLIDE 0x50
328
329/*
330 * A character on the field (FIELDSTG_createActor): the player (kind 0) and the
331 * other characters. Registered with id FIELD_TASK_ACTOR, key1 = character, key2 = kind.
332 * x and y are in 1/256 tile units.
333 */
334typedef struct Actor {
336 /* 0x050 */ Vec2 pos;
337 /* 0x058 */ Vec2 tile;
338 /* 0x060 */ s32 dir;
339 /* 0x064 */ s32 z; /* how high it is off the ground, in 1/256 pixels (drawn that much higher) */
340 /* 0x068 */ s32 speed; /* 0x400, 0x4CC in PAL's 50 Hz */
341 /* 0x06C */ struct ActorImage *image;
342 /* 0x070 */ struct FieldImage *fieldImage; /* the field's image, for the shadow */
343 /* 0x074 */ s32 hasShadow; /* drawn with a shadow */
344 /* 0x078 */ s32 depth; /* the layer's ordering table entry */
345 /* 0x07C */ struct FieldActorEntry *entry; /* what created it, or NULL */
346 /* 0x080 */ s32 halfWidth; /* half its width (FIELDSTG_actorWidths): its box's half width, and half that its half height */
347 /* 0x084 */ s32 flying; /* the flying player (FIELDSTG_controlFlight) */
348 /* 0x088 */ struct Actor *talkPartner; /* the actor that talks to it */
349 /* 0x08C */ s32 climbSide; /* a climb shifts it a tile right (1) or left (0) */
350 /* 0x090 */ s32 climbHeight; /* how high it has climbed, in 1/256 pixels (its shadow stays below) */
351 /* 0x094 */ s32 wallHeight; /* the top of the climb */
352 /* 0x098 */ s32 pad98; /* never read or written */
353 /* 0x09C */ s32 animFile; /* its animations' file and index (FIELDSTG_fileEntries), or 0 */
354 /* 0x0A0 */ s32 animSet; /* the animation set it plays (setAnim) */
355 /* 0x0A4 */ s32 loadedSet; /* the set setAnims was loaded for */
356 /* 0x0A8 */ s32 setAnims[5]; /* the set's animations, for the directions 0 to 4 */
357 /* 0x0BC */ s32 walks; /* the pad walks it (ACTOR_WALK) instead of running */
358 /* 0x0C0 */ s32 reloadImage; /* set to reload the frame's image */
359 /* 0x0C4 */ s32 zSpeed; /* added to z each frame */
360 /* 0x0C8 */ s16 voice; /* a sound voice, or -1 */
361 /* 0x0CA */ s16 padCA; /* never read or written */
362 /* 0x0CC */ s32 animPos; /* the next word of the direction's frames */
363 /* 0x0D0 */ s32 animTime; /* the frame's time left */
364 /* 0x0D4 */ s32 frame[4]; /* the frame's image, the one loaded, and two values */
365 /* 0x0E4 */ s16 frameWidth; /* the loaded image's width in pixels */
366 /* 0x0E6 */ s16 frameHeight; /* and its height */
367 /* 0x0E8 */ s32 animDone; /* the animation ended (isAnimDone) */
368 /* 0x0EC */ s32 walking; /* walking to the goal (setGoal, FIELDSTG_walkToGoal) */
369 /* 0x0F0 */ s32 goalX; /* the tile it walks to */
370 /* 0x0F4 */ s32 goalY;
371 /* 0x0F8 */ s32 goalDir; /* the direction it then faces */
372 /* 0x0FC */ u16 *talkActions; /* the talk's flag actions, applied when it ends, or NULL */
373 /* 0x100 */ s32 keepsDir; /* doesn't turn to the one who talks to it (characters 0x28-0x2A,
374 0x3E and 0x11A) */
375 /* 0x104 */ struct Trail *trail; /* a follower's: the leader's steps */
376 /* 0x108 */ void (*control)(struct Actor *); /* its update by kind, or NULL (resetControl) */
377 /* 0x10C */ s32 scriptFlag; /* cleared by FIELDSTG_clearScriptFlag; nothing in FIELDSTG or the stages reads it */
378 /* 0x110 */ void (*walkInDir)(struct Actor *, s32 dir);
379 /* 0x114 */ void (*climbUp)();
380 /* 0x118 */ void (*climbDown)();
381 /* 0x11C */ void (*dropDown)();
382 /* 0x120 */ void (*playGauge)();
383 /* 0x124 */ void (*warp)(struct Actor *, SlotDest *dest, s32 kind);
384 /* 0x128 */ void (*unused128)(); /* a method slot between warp and startWalk that
385 FIELDSTG_createActor never sets and nothing calls */
386 /* 0x12C */ void (*startWalk)(struct Actor *);
387 /* 0x130 */ void (*resetControl)(struct Actor *);
388 /* 0x134 */ void (*setDir)(struct Actor *, s32 dir);
389 /* 0x138 */ s32 (*isAnimDone)(struct Actor *);
390 /* 0x13C */ void (*setGoal)(struct Actor *, s32, s32, s32);
391 /* 0x140 */ s32 (*isWalking)(struct Actor *);
392 /* 0x144 */ void (*setAnim)(struct Actor *, s32);
393 /* 0x148 */ void (*setPose)(struct Actor *, s32, s32 dir);
394 /* 0x14C */ void (*getFacingTile)(struct Actor *, Vec2 *out);
395 /* 0x150 */ void (*startSlide)(struct Actor *, s32 dir);
396 /* 0x154 */ void (*stopSlide)(struct Actor *);
397 /* 0x158 */ void (*launch)(struct Actor *, SlotDest *dest);
398} Actor;
399
400/* A battle of an area's BattleList, which can start on the field (see
401 FIELDSTG_startEncounter); FIGHTSTG's Battle is the battle itself */
402typedef struct AreaBattle {
403 /* 0x0 */ s32 encounter; /* of FIELDSTG_encounters */
404 /* 0x4 */ s32 stage; /* the fight stage, for BATTLE_SETUP.stage */
405 /* 0x8 */ s32 music; /* for BATTLE_SETUP.music (MUSIC_); the empty slots,
406 { 0, 0, MUSIC(1, 0) }, keep the bare MUSIC(1, 0) */
407} AreaBattle;
408
409/* The battles of an area of the map (its cells' value at FieldMap.files[4]),
410 one picked at random */
411typedef struct BattleList {
412 /* 0x0 */ s32 count; /* how often they come: an index of FIELDSTG_battleRates */
413 /* 0x4 */ AreaBattle *battles[8];
414} BattleList;
415
416/*
417 * The battles of a place (FieldState.battles), by
418 * area of the map: the fourth area's are also the ones that events start
419 * (FIELDSTG_startEventBattle5, FIELDSTG_startEventBattle). A stage with several places has a list of
420 * them, which FieldState.findBattles searches for the id.
421 */
422typedef struct FieldBattles {
423 /* 0x00 */ s32 serial; /* a number of its own, 1 to 448 over the stages; nothing reads it */
424 /* 0x04 */ s32 id; /* the place, GAME.place */
425 /* 0x08 */ s32 pad8; /* 0 in every list; nothing reads it */
426 /* 0x0C */ BattleList *battles[4];
428
429/*
430 * The field's state (FIELDSTG_state): what a stage tells FIELDSTG about itself,
431 * filled by its setup function (stageFuncs[0], FIELDSTG_setupField for the
432 * field's own), then what FIELDSTG keeps of the field. The first 0x64 bytes
433 * are cleared by FIELDSTG_pickStage, which also picks the stage overlay for
434 * the current mode.
435 *
436 * The setup functions set start with a constructor, (Vec2){x, y}: GCC
437 * clobbers the whole field before its two stores, which keeps the stores to
438 * FIELDSTG_state on either side of it but lets the constants rise above it. The
439 * match depends on that form: two stores of their own schedule otherwise.
440 */
441typedef struct FieldState {
442 /* 0x00 */ s32 stageFile; /* the stage overlay's file */
443 /* 0x04 */ struct Task *(*stageInit)(void *owner); /* starts the stage's task */
444 /* 0x08 */ s32 mapFile; /* the file of the map's tiles (FIELDSTG_createMapStreamer) */
445 /* 0x0C */ s32 sheetEntry; /* the stage's sprite sheet, loaded before the field starts, or 0 */
446 /* 0x10 */ StageTile *objects; /* the map objects, up to the first margin 0 */
447 /* 0x14 */ StageSlot *slots; /* up to the first type 0 */
448 /* 0x18 */ s32 imageEntry; /* an image archive's file entry, loaded at (0x140, 0x100), or 0 */
449 /* 0x1C */ s32 imageFile; /* or an image archive file, or 0 */
451 /* 0x24 */ FieldEvent *events; /* up to the first id -1 */
452 /* 0x28 */ union {
453 FieldImage *field; /* the field's image (the first two ActorImages) */
454 ActorImage *actors; /* then the actors', from actors[2] */
456 /* 0x2C */ Vec2 start; /* where the player starts */
457 /* 0x34 */ s32 startDir; /* and its direction */
458 /* 0x38 */ CVECTOR spriteColor; /* the field's sprites' color, unless cd is 0 */
459 /* 0x3C */ s32 soundBank; /* SOUND.loadBank's, or 0 */
460 /* 0x40 */ s32 music; /* SOUND.playSound's, or 0 */
461 /* 0x44 */ s32 textFile; /* the stage's text file, for the talks */
462 /* 0x48 */ s32 eventText; /* the running event's text file and entry */
463 /* 0x4C */ FieldActorEntry **actors; /* the characters, up to the first NULL */
464 /* 0x50 */ s32 menuOpen; /* the field menu (START) or the inn (FIELDSTG_openInn) is open:
465 the pad doesn't move the player */
466 /* 0x54 */ s32 frozen; /* no control, triggers or encounters for the player: while the
467 area name banner shows (FIELDSTG_createBanner) and as the field closes */
468 /* 0x58 */ s32 busy; /* an event, a warp, a launch or a battle has the player */
469 /* 0x5C */ s32 battleStarting; /* an encounter started (FIELDSTG_startEncounter) */
470 /* 0x60 */ s32 acting; /* the player talks, climbs, slides or searches */
471 /* 0x64 */ Vec2 defaultStart; /* where the player starts without a mode argument */
472 /* 0x6C */ s32 defaultStartDir; /* and its direction */
473 /* 0x70 */ void (*init)(void); /* FIELDSTG_pickStage */
474 /* 0x74 */ s32 (*getFileEntry)(s32 character); /* FIELDSTG_fileEntries's */
475 /* 0x78 */ s32 (*getActorWidth)(s32 character); /* FIELDSTG_actorWidths's */
476 /* 0x7C */ FieldBattles *(*findBattles)(FieldBattles *list, s32 id); /* the place of the list with that id */
477} FieldState;
478
480
481/* The children of a yes/no question at the bottom of the screen: FIELDSTG's
482 ChoiceTask and the stages' copies of it (StageMenu) */
483typedef struct ChoiceChildren {
484 /* 0x00 */ TextWindow *title;
485 /* 0x04 */ TextWindow *options[2];
486 /* 0x0C */ Cursor *cursor;
487 /* 0x10 */ struct EventTask *event; /* the answer's (FIELDSTG_startEvent) */
489
490/* FIELDSTG functions the stages call */
491struct EventTask *FIELDSTG_startEvent(s32 id); /* creates the task of an event object */
492StageTile *FIELDSTG_findObject(s32 anim); /* the first map object with that animation */
493StageTile *FIELDSTG_findNextObject(void); /* and the next, or NULL */
494void *FIELDSTG_startEventBattle5(void); /* starts a battle: the handler of the stages' events 9000 */
495
496/* FIELDSTG's functions and data that the executable calls (game/events.c, system/overlay.c), by
497 these names in its link (config/eu/undefined_syms.txt) */
498void FIELDSTG_leaveField(s32 mode, s32 arg, s32 x, s32 y, s32 dir); /* leaves the field for a mode */
499void FIELDSTG_startListedEvent(s32 index); /* starts the event FIELDSTG_eventIds[index] */
500void FIELDSTG_openInn(void); /* opens the inn */
501typedef struct FieldBattleFuncs {
502 void (*startEventBattle)(s32 index); /* FIELDSTG_startEventBattle */
503 void (*startAreaBattle)(void); /* FIELDSTG_startAreaBattle */
506
507#endif
signed int s32
Definition common.h:11
signed short s16
Definition common.h:9
unsigned short u16
Definition common.h:10
unsigned char u8
Definition common.h:8
#define TASK_HEADER(Type)
Definition task.h:39
FieldMap FIELDSTG_map
Definition fieldstg.c:3660
void FIELDSTG_startListedEvent(s32 index)
starts the event FIELDSTG_eventIds[index]
Definition field.c:1019
void FIELDSTG_openInn(void)
opens the inn
Definition field.c:1027
void * FIELDSTG_startEventBattle5(void)
starts a battle: the handler of the stages' events 9000
Definition field.c:1010
struct EventTask * FIELDSTG_startEvent(s32 id)
FIELDSTG functions the stages call.
Definition event.c:250
StageTile * FIELDSTG_findNextObject(void)
and the next, or NULL
void FIELDSTG_leaveField(s32 mode, s32 arg, s32 x, s32 y, s32 dir)
FIELDSTG's functions and data that the executable calls (game/events.c, system/overlay....
Definition field.c:702
FieldState FIELDSTG_state
Definition fieldstg.c:2641
StageTile * FIELDSTG_findObject(s32 anim)
the first map object with that animation
FieldBattleFuncs FIELDSTG_battleFuncs
Definition fieldstg.c:3653
Where an actor's frames go in VRAM: one of the records after the FieldImage (Actor....
Definition field_map.h:114
s16 x
the texture page
Definition field_map.h:115
s16 imageX
where FIELDSTG_animateActor loads each frame
Definition field_map.h:117
A character on the field (FIELDSTG_createActor): the player (kind 0) and the other characters.
Definition field_map.h:334
s16 frameHeight
and its height
Definition field_map.h:366
s32 keepsDir
doesn't turn to the one who talks to it (characters 0x28-0x2A, 0x3E and 0x11A)
Definition field_map.h:373
s32 goalX
the tile it walks to
Definition field_map.h:369
s32 goalY
Definition field_map.h:370
u16 * talkActions
the talk's flag actions, applied when it ends, or NULL
Definition field_map.h:372
s32 animSet
the animation set it plays (setAnim)
Definition field_map.h:354
s32 climbSide
a climb shifts it a tile right (1) or left (0)
Definition field_map.h:349
void(* walkInDir)(struct Actor *, s32 dir)
Definition field_map.h:378
s32 animTime
the frame's time left
Definition field_map.h:363
s32 z
how high it is off the ground, in 1/256 pixels (drawn that much higher)
Definition field_map.h:339
void(* setGoal)(struct Actor *, s32, s32, s32)
Definition field_map.h:390
void(* unused128)()
a method slot between warp and startWalk that FIELDSTG_createActor never sets and nothing calls
Definition field_map.h:384
s32 walks
the pad walks it (ACTOR_WALK) instead of running
Definition field_map.h:357
s32 pad98
never read or written
Definition field_map.h:352
void(* warp)(struct Actor *, SlotDest *dest, s32 kind)
Definition field_map.h:383
s32 loadedSet
the set setAnims was loaded for
Definition field_map.h:355
s32 setAnims[5]
the set's animations, for the directions 0 to 4
Definition field_map.h:356
void(* climbDown)()
Definition field_map.h:380
void(* dropDown)()
Definition field_map.h:381
s32 wallHeight
the top of the climb
Definition field_map.h:351
struct ActorImage * image
Definition field_map.h:341
s32 goalDir
the direction it then faces
Definition field_map.h:371
void(* startWalk)(struct Actor *)
Definition field_map.h:386
s32 depth
the layer's ordering table entry
Definition field_map.h:344
struct Trail * trail
a follower's: the leader's steps
Definition field_map.h:375
void(* getFacingTile)(struct Actor *, Vec2 *out)
Definition field_map.h:394
void(* launch)(struct Actor *, SlotDest *dest)
Definition field_map.h:397
s16 voice
a sound voice, or -1
Definition field_map.h:360
s32 frame[4]
the frame's image, the one loaded, and two values
Definition field_map.h:364
s32(* isAnimDone)(struct Actor *)
Definition field_map.h:389
s32 flying
the flying player (FIELDSTG_controlFlight)
Definition field_map.h:347
Vec2 pos
Definition field_map.h:336
s32 animDone
the animation ended (isAnimDone)
Definition field_map.h:367
s32 climbHeight
how high it has climbed, in 1/256 pixels (its shadow stays below)
Definition field_map.h:350
void(* playGauge)()
Definition field_map.h:382
s16 frameWidth
the loaded image's width in pixels
Definition field_map.h:365
s32(* isWalking)(struct Actor *)
Definition field_map.h:391
Vec2 tile
Definition field_map.h:337
void(* startSlide)(struct Actor *, s32 dir)
Definition field_map.h:395
s32 walking
walking to the goal (setGoal, FIELDSTG_walkToGoal)
Definition field_map.h:368
s32 animFile
its animations' file and index (FIELDSTG_fileEntries), or 0
Definition field_map.h:353
struct FieldImage * fieldImage
the field's image, for the shadow
Definition field_map.h:342
void(* resetControl)(struct Actor *)
Definition field_map.h:387
s32 halfWidth
half its width (FIELDSTG_actorWidths): its box's half width, and half that its half height
Definition field_map.h:346
s32 animPos
the next word of the direction's frames
Definition field_map.h:362
void(* setPose)(struct Actor *, s32, s32 dir)
Definition field_map.h:393
s32 dir
Definition field_map.h:338
void(* control)(struct Actor *)
its update by kind, or NULL (resetControl)
Definition field_map.h:376
s32 reloadImage
set to reload the frame's image
Definition field_map.h:358
s32 hasShadow
drawn with a shadow
Definition field_map.h:343
s32 scriptFlag
cleared by FIELDSTG_clearScriptFlag; nothing in FIELDSTG or the stages reads it
Definition field_map.h:377
void(* setDir)(struct Actor *, s32 dir)
Definition field_map.h:388
s32 speed
0x400, 0x4CC in PAL's 50 Hz
Definition field_map.h:340
void(* stopSlide)(struct Actor *)
Definition field_map.h:396
struct Actor * talkPartner
the actor that talks to it
Definition field_map.h:348
s32 zSpeed
added to z each frame
Definition field_map.h:359
s16 padCA
never read or written
Definition field_map.h:361
void(* climbUp)()
Definition field_map.h:379
struct FieldActorEntry * entry
what created it, or NULL
Definition field_map.h:345
void(* setAnim)(struct Actor *, s32)
Definition field_map.h:392
A battle of an area's BattleList, which can start on the field (see FIELDSTG_startEncounter); FIGHTST...
Definition field_map.h:402
s32 encounter
of FIELDSTG_encounters
Definition field_map.h:403
s32 stage
the fight stage, for BATTLE_SETUP.stage
Definition field_map.h:404
s32 music
for BATTLE_SETUP.music (MUSIC_); the empty slots, { 0, 0, MUSIC(1, 0) }, keep the bare MUSIC(1,...
Definition field_map.h:405
The battles of an area of the map (its cells' value at FieldMap.files[4]), one picked at random.
Definition field_map.h:411
s32 count
how often they come: an index of FIELDSTG_battleRates
Definition field_map.h:412
AreaBattle * battles[8]
Definition field_map.h:413
The children of a yes/no question at the bottom of the screen: FIELDSTG's ChoiceTask and the stages' ...
Definition field_map.h:483
TextWindow * options[2]
Definition field_map.h:485
Cursor * cursor
Definition field_map.h:486
TextWindow * title
Definition field_map.h:484
struct EventTask * event
the answer's (FIELDSTG_startEvent)
Definition field_map.h:487
A menu cursor: a text window showing one of the CURSOR_FRAMES glyphs.
Definition text.h:19
An event (FIELDSTG_runEvent, made by FIELDSTG_startEvent): it runs a script of 16-bit words,...
Definition field_mode.h:277
A character of the field (FieldState.actors, a list of pointers up to NULL), which FIELDSTG_updateFie...
Definition field_map.h:194
s16 x
in pixels
Definition field_map.h:199
struct FieldTalk * talks
up to the first without conditions
Definition field_map.h:196
s16 image
its ActorImage, of FieldState.images.actors from 2 (FIELDSTG_createActor)
Definition field_map.h:198
u16 * conditions
FLAGS_00.checkConditions's, or NULL.
Definition field_map.h:195
void(* startEventBattle)(s32 index)
FIELDSTG_startEventBattle.
Definition field_map.h:502
void(* startAreaBattle)(void)
FIELDSTG_startAreaBattle.
Definition field_map.h:503
The battles of a place (FieldState.battles), by area of the map: the fourth area's are also the ones ...
Definition field_map.h:422
s32 id
the place, GAME.place
Definition field_map.h:424
s32 serial
a number of its own, 1 to 448 over the stages; nothing reads it
Definition field_map.h:423
BattleList * battles[4]
Definition field_map.h:426
s32 pad8
0 in every list; nothing reads it
Definition field_map.h:425
An event of the table FieldState.events, up to the first id -1, which FIELDSTG_startEvent starts.
Definition field_map.h:141
void(* end)(void)
or NULL
Definition field_map.h:147
s32 text
a file and index, the file counted from TEXT_FILE(1); or 0
Definition field_map.h:144
s16 * script
FIELDSTG_runEvent's, or NULL.
Definition field_map.h:143
The image of the field's effects (FieldState.images), then the actors' ActorImages.
Definition field_map.h:127
ActorImage shadow
the actors' shadow (FIELDSTG_drawActor)
Definition field_map.h:128
s16 x
in VRAM
Definition field_map.h:129
void(* getWalkStep)(Vec2 *pos, s32 scale, s32 dir, Vec2 *out)
FIELDSTG_getWalkStep.
Definition field_map.h:102
void(* setFile)(s32 index, s32 file)
FIELDSTG_setMapFile.
Definition field_map.h:100
s16 * cells16
Definition field_map.h:97
s32 files[8]
the file entry of each map, set by setFile
Definition field_map.h:91
u8 * grid
Definition field_map.h:94
u8 * pixels
Definition field_map.h:99
s32(* getCell)(s32 index, Vec2 *pos)
FIELDSTG_getMapCell.
Definition field_map.h:101
void(* setMap)(s32 index)
FIELDSTG_setMap: the map the player is on.
Definition field_map.h:106
s32 width
of the grid, in cells
Definition field_map.h:92
s16 * cells8
Definition field_map.h:98
s32 height
Definition field_map.h:93
void(* setFirstMap)(s32 index)
FIELDSTG_setFirstMap: the map the player starts on (GAME.mapIndex), when the mode is new.
Definition field_map.h:104
void(* getFlyStep)(Vec2 *pos, s32 scale, s32 dir, Vec2 *out)
FIELDSTG_getFlyStep.
Definition field_map.h:103
s32(* isTileFree)(Vec2 *pos)
FIELDSTG_isTileFree: 0 where a character or an object stands.
Definition field_map.h:107
u8 * cells64
Definition field_map.h:95
s16 * cells32
Definition field_map.h:96
The field's state (FIELDSTG_state): what a stage tells FIELDSTG about itself, filled by its setup fun...
Definition field_map.h:441
s32 frozen
no control, triggers or encounters for the player: while the area name banner shows (FIELDSTG_createB...
Definition field_map.h:466
s32 sheetEntry
the stage's sprite sheet, loaded before the field starts, or 0
Definition field_map.h:445
s32 busy
an event, a warp, a launch or a battle has the player
Definition field_map.h:468
s32 imageEntry
an image archive's file entry, loaded at (0x140, 0x100), or 0
Definition field_map.h:448
s32 defaultStartDir
and its direction
Definition field_map.h:472
s32 battleStarting
an encounter started (FIELDSTG_startEncounter)
Definition field_map.h:469
FieldEvent * events
up to the first id -1
Definition field_map.h:451
s32 soundBank
SOUND.loadBank's, or 0.
Definition field_map.h:459
StageTile * objects
the map objects, up to the first margin 0
Definition field_map.h:446
s32 imageFile
or an image archive file, or 0
Definition field_map.h:449
void(* init)(void)
FIELDSTG_pickStage.
Definition field_map.h:473
s32 menuOpen
the field menu (START) or the inn (FIELDSTG_openInn) is open: the pad doesn't move the player
Definition field_map.h:464
FieldBattles * battles
Definition field_map.h:450
Vec2 start
where the player starts
Definition field_map.h:456
StageSlot * slots
up to the first type 0
Definition field_map.h:447
ActorImage * actors
then the actors', from actors[2]
Definition field_map.h:454
s32 acting
the player talks, climbs, slides or searches
Definition field_map.h:470
s32(* getFileEntry)(s32 character)
FIELDSTG_fileEntries's.
Definition field_map.h:474
s32(* getActorWidth)(s32 character)
FIELDSTG_actorWidths's.
Definition field_map.h:475
s32 mapFile
the file of the map's tiles (FIELDSTG_createMapStreamer)
Definition field_map.h:444
s32 startDir
and its direction
Definition field_map.h:457
CVECTOR spriteColor
the field's sprites' color, unless cd is 0
Definition field_map.h:458
s32 eventText
the running event's text file and entry
Definition field_map.h:462
Vec2 defaultStart
where the player starts without a mode argument
Definition field_map.h:471
s32 textFile
the stage's text file, for the talks
Definition field_map.h:461
union FieldState::@12 images
FieldImage * field
the field's image (the first two ActorImages)
Definition field_map.h:453
s32 music
SOUND.playSound's, or 0.
Definition field_map.h:460
FieldActorEntry ** actors
the characters, up to the first NULL
Definition field_map.h:463
s32 stageFile
the stage overlay's file
Definition field_map.h:442
What a character says (FIELDSTG_runActorAction): the first whose conditions hold, or the last,...
Definition field_map.h:176
s32 entry
its text's entry in the field's text file (FIELDSTG_createTalk)
Definition field_map.h:179
u16 * actions
FLAGS_00.applyActions's when it ends, or NULL.
Definition field_map.h:178
u16 * conditions
FLAGS_00.checkConditions's.
Definition field_map.h:177
s16 y[2]
the objects' y when the move started
Definition field_map.h:246
s16 raised
the objects are 0x7F up from their place, and the next move takes them down (LIFT_DOWN; flag 0x1C3D a...
Definition field_map.h:241
s16 shake
the step of the shake table, then a frame count
Definition field_map.h:244
s16 pad5E
never read or written
Definition field_map.h:245
StageTile * tiles[2]
the map objects 3 and 2
Definition field_map.h:240
s16 timer
Definition field_map.h:243
s16 homeY[2]
the objects' place on the map
Definition field_map.h:248
s32 playerY
Definition field_map.h:247
Where a slot leads: a StageSlot from its arg on, as the warps (FieldTask.warp) and the launches (Laun...
Definition field_map.h:291
s16 x
in pixels
Definition field_map.h:293
u16 hideAnim
which a warp doesn't read
Definition field_map.h:296
u16 place
copied to GAME.place, the place (FieldBattles.id)
Definition field_map.h:297
u16 placeArg
copied to GAME.placeArg
Definition field_map.h:298
What the player can trigger on a map (FIELDSTG_updateTriggers): a record of the table at FieldState....
Definition field_map.h:276
u16 arg
by type: a mode, a depth, a map, an event or a height (in 16 pixels, plus 1 for a climb); a warp's an...
Definition field_map.h:279
u16 conditions[2][2]
flag code and value, or code 0xFFFF
Definition field_map.h:277
u16 place
copied to GAME.place, the place (FieldBattles.id)
Definition field_map.h:285
u16 type
SLOT_EXIT...
Definition field_map.h:278
u16 hideAnim
the animation of the map objects to hide, or 0
Definition field_map.h:284
u16 placeArg
copied to GAME.placeArg: with place, the next stage's place points
Definition field_map.h:286
An object of a map, which FIELDSTG draws: a record of the table at FieldState.objects,...
Definition field_map.h:208
u8 margin
how far off the view it is still drawn; 0 ends the table
Definition field_map.h:214
s16 cycleTime
in 1/256 frames; bit 15: going back
Definition field_map.h:225
u8 cycleDelay
Definition field_map.h:220
u8 anim
which of a stage's animations sets frame (1-3); FIELDSTG finds objects by it (its lift,...
Definition field_map.h:210
u8 cycle
1 cycles the frame, 2 the CLUT row, 3 the row back and forth
Definition field_map.h:217
u8 cycleFirst
Definition field_map.h:218
s16 sortY
drawn sorted at this y, or 0
Definition field_map.h:224
Any task, seen through its header.
Definition task.h:62
A text window (createTextWindow): up to six text buffers (0 is shown, 1-5 are "work" buffers that con...
Definition text.h:131
Definition gfx.h:352