Digimon World 3 decomp
The European version, SLES_039.36
Loading...
Searching...
No Matches
scene.c
Go to the documentation of this file.
1/* STPLNMET's scene: the mode's root task */
2
3#include "menus/player_name.h"
4
5/* Puts the layer's origin at the center of the screen and gives it 5 callbacks */
6void STPLNMET_centerLayer(Task *task, PlayerNameScreen **screen, Layer *layer, RECT *rect) {
7 layer->setOffset(layer, rect->w / 2, rect->h / 2);
8 layer->allocCallbacks(layer, 5);
9}
10
11/* The mode's root task: sets up the 320x240 display, a near-black layer and a
12 second layer above it, then creates the name screen */
14 RECT rect;
15 Layer *layer;
16
17 switch (task->state) {
18 case TASK_INIT:
19 default:
20 GFX.funcs.reset();
21 GFX.funcs.allocPrimBuffers(0x19000);
23 rect.x = 0;
24 rect.y = 0;
25 rect.w = 0x140;
26 rect.h = 0xF0;
27 layer = GFX.funcs.createLayer(&rect, 1, SCREEN_LAYER);
28 layer->setBgColor(layer, 1, 1, 1);
29 STPLNMET_centerLayer(task, screen, layer, &rect);
30 GFX.funcs.createLayer(&rect, 3, 0x1001);
31 GFX.funcs.moveLayer(0x1001, 0x1000, 1);
32 *screen = STPLNMET_createScreen();
33 task->nextState(task);
34 break;
35 case TASK_RUN:
36 case TASK_DONE:
37 case TASK_KILL:
38 break;
39 }
40}
41
42/* The mode's entry point (MODE_ENTRY_POINTS): starts the root task */
44 return createTask(STPLNMET_updateScene, sizeof(Task), sizeof(PlayerNameScreen *));
45}
GfxState GFX
GFX: the graphics state and its methods.
Definition display.c:209
#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 SCREEN_WIDTH
The screen the modes draw on (setDisplayMode, their layers' rects)
Definition gfx.h:36
#define SCREEN_HEIGHT
Definition gfx.h:37
#define SCREEN_LAYER
The layer over the whole screen that most modes create first and draw their menus on (FIELDSTG and ST...
Definition gfx.h:45
Task * STPLNMET_start(void)
The mode's entry point (MODE_ENTRY_POINTS): starts the root task.
Definition scene.c:43
void STPLNMET_centerLayer(Task *task, PlayerNameScreen **screen, Layer *layer, RECT *rect)
Puts the layer's origin at the center of the screen and gives it 5 callbacks.
Definition scene.c:6
void STPLNMET_updateScene(Task *task, PlayerNameScreen **screen)
The mode's root task: sets up the 320x240 display, a near-black layer and a second layer above it,...
Definition scene.c:13
PlayerNameScreen * STPLNMET_createScreen(void)
Creates the player's name screen (task)
Definition screen.c:171
STPLNMET.PRO: the player's name entry (MODE_PLAYER_NAME).
void(* reset)(void)
Definition gfx.h:17
void(* moveLayer)()
Definition gfx.h:29
void(* allocPrimBuffers)(s32 size)
Definition gfx.h:18
struct Layer *(* createLayer)(RECT *rect, s32 otShift, s32 id)
Definition gfx.h:24
void(* setDisplayMode)(s32 w, s32 h, s32 hires, s32 interlace)
Definition gfx.h:26
GfxFuncs funcs
Definition gfx.h:77
A drawing layer (GFX.funcs.createLayer): a DRAWENV with a pair of ordering tables,...
Definition gfx.h:128
void(* setBgColor)()
no prototype: callers would truncate u8 args
Definition gfx.h:152
void(* setOffset)()
no prototype: callers would truncate s16 args
Definition gfx.h:147
void(* allocCallbacks)()
Definition gfx.h:159
The main task of the screen (STPLNMET_createScreen)
Definition player_name.h:82
Any task, seen through its header.
Definition task.h:62
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