Digimon World 3 decomp
The European version, SLES_039.36
Loading...
Searching...
No Matches
draw_keyboard.inc.c
Go to the documentation of this file.
1/* Draws the keyboard, the cursor, the partner and the name entry's panels */
3 SpriteDrawer sprite;
4 s32 i;
5 s32 key;
6
7 initSpriteDrawer(&sprite);
8 sprite.setTexture(task->vramX, task->vramY);
9 sprite.setLayerId(task->layer, task->depth);
10 if (task->keyboardScale.level != 0) {
11 if (task->active) {
12 if (GFX.funcs.getTime() - task->keyTime >= 5) {
13 task->keyTime = GFX.funcs.getTime();
14 if (++task->keyFrame >= 4) {
15 task->keyFrame = 0;
16 }
17 }
18 sprite.setClutRow(task->keyFrame);
19 if (task->column < 10 || task->row < 3) {
21 task->column * 14 + 0x2F + task->column / 5 * 8, task->row * 18 + 0x5A);
22 } else {
23 for (i = 0; OVL_NAME(keyboard).pages[task->page].cells[task->row][task->column + i].kind != 1; i--) {
24 }
25 switch (task->column + i + task->row * 15) {
26 case NAME_KEY_LEFT:
27 default:
28 key = 0;
29 break;
30 case NAME_KEY_RIGHT:
31 key = 1;
32 break;
33 case NAME_KEY_DELETE:
34 key = 2;
35 OVL_NAME(bigKeys)[2].sprite = NAME_ENTRY_TEXT_SPRITE(0x3C);
36 break;
37 case NAME_KEY_SPACE:
38 key = 3;
39 OVL_NAME(bigKeys)[3].sprite = NAME_ENTRY_TEXT_SPRITE(0x44);
40 break;
41 case NAME_KEY_END:
42 key = 4;
43 OVL_NAME(bigKeys)[4].sprite = NAME_ENTRY_TEXT_SPRITE(0x4C);
44 break;
45 }
46 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), OVL_NAME(bigKeys)[key].sprite,
47 OVL_NAME(bigKeys)[key].x, OVL_NAME(bigKeys)[key].y);
48 }
49 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x28, task->cursor * 19 + 0x4B, 0x40);
50 sprite.setClutRow(0);
51 }
52 if (task->keyboardScale.level != ONE) {
53 sprite.setScale(task->keyboardScale.level, ONE, ONE);
54 }
55 if (task->keyboardScale.level != ONE) {
56 sprite.setPivot(0x18, 0x20);
57 }
58 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x1D, 0x18, 0x15);
59 if (task->mode != 2) {
60 if (task->keyboardScale.level != ONE) {
61 sprite.setPivot(0x20, 0x3F);
62 }
63 if (task->partner != -1) {
64 if (GFX.funcs.getTime() - task->partnerTime >= 13) {
65 task->partnerTime = GFX.funcs.getTime();
66 if (++task->partnerFrame >= 7 ||
67 OVL_NAME(nameAnims)[task->partner][task->partnerFrame] == -1) {
68 task->partnerFrame = 0;
69 }
70 }
72 OVL_NAME(nameAnims)[task->partner][task->partnerFrame], 0x22, 0x30);
73 } else {
74 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x36, 0x20, 0x2E);
75 }
76 if (GFX.funcs.getTime() - task->clutTime >= 5) {
77 task->clutTime = GFX.funcs.getTime();
78 if (++task->clutRow >= 14) {
79 task->clutRow = 0;
80 }
81 }
82 sprite.setLayerId(task->layer, task->depth - 1);
83 sprite.setClutRow(task->clutRow);
84 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x1F, 0x20, 0x2E);
85 sprite.setClutRow(0);
86 sprite.setLayerId(task->layer, task->depth);
87 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x1E, 0x20, 0x2E);
88 }
89 if (task->keyboardScale.level != ONE) {
90 sprite.setPivot(0x20, 0x49);
91 }
92 if (task->mode != 2) {
94 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x34, 0x4B, 0x40);
95 } else {
96 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x37, 0x4B, 0x40);
97 }
98 } else {
99 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x35, 0x4B, 0x40);
100 }
101 if (task->keyboardScale.level != ONE) {
102 sprite.setScale(ONE, task->keyboardScale.level, ONE);
103 }
104 if (OVL_NAME(keyboard).pageCount >= 2) {
105 if (GFX.funcs.getTime() - task->arrowTime >= 7) {
106 task->arrowTime = GFX.funcs.getTime();
107 if (++task->arrowFrame >= 6) {
108 task->arrowFrame = 0;
109 }
110 }
111 sprite.setClutRow(OVL_NAME(keyArrowCluts)[task->arrowFrame]);
112 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x32, 0xA, 0x5E);
113 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x33, 0x119, 0x5E);
114 sprite.setClutRow(0);
115 }
116 sprite.setClutRow(4);
117 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x2C, 0xCB, 0xC3);
118 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x2D, 0xDE, 0xC3);
122 sprite.setClutRow(0);
123 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x25, 0x1D, 0x54);
124 }
125 sprite.setLayerId(task->layer, task->depth - 1);
126 if (task->messageScale.level != 0) {
127 if (task->messageScale.level != ONE) {
128 sprite.setScale(ONE, task->messageScale.level, ONE);
129 sprite.setPivot(0, 0x78);
130 }
131 sprite.draw(FILE_CACHE.getEntry(NAME_ENTRY_SPRITES), 0x26, 0, 0x64);
132 }
133}
#define OVL_NAME(name)
The name of this overlay's copy of a function of src/shared/.
Definition battle_mode.h:26
signed int s32
Definition common.h:11
#define NAME_ENTRY_SPRITES
Definition deck_editor.h:17
GfxState GFX
GFX: the graphics state and its methods.
Definition display.c:209
void drawKeyboard(NameEntry *task)
Draws the keyboard, the cursor, the partner and the name entry's panels.
FileCache FILE_CACHE
The file cache.
Definition file_cache.c:7
#define NAME_KEY_DELETE
The keyboard's special keys: row * 15 + column of their first cell.
Definition name_entry.h:20
#define NAME_ENTRY_JAPANESE
The Japanese keyboard (three pages) is for language 0 of the European version, the Japanese version's...
Definition name_entry.h:34
#define NAME_KEY_RIGHT
Definition name_entry.h:23
#define NAME_KEY_LEFT
row 6: moves the cursor
Definition name_entry.h:22
#define NAME_KEY_END
row 6, column 13: where Start goes
Definition name_entry.h:24
#define NAME_ENTRY_TEXT_SPRITE(sprite)
A sprite of the keyboard drawn per language, one after the other (USA: the first)
Definition name_entry.h:41
#define NAME_KEY_SPACE
row 5
Definition name_entry.h:21
void initSpriteDrawer(SpriteDrawer *obj)
Clears a sprite drawer to neutral (no scale, gray tint, follows the scroll), gives it its methods and...
void *(* getEntry)(u32 fileAndIndex)
Definition file.h:96
s32(* getTime)(void)
Definition gfx.h:31
GfxFuncs funcs
Definition gfx.h:77
A name entry: the keyboard, the name typed so far and the panels that open and close.
Definition name_entry.h:95
Draws sprites from a sprite sheet (such as file 0x277, the menu graphics): a sheet has a table of fra...
Definition gfx.h:223
void(* setPivot)()
(x, y)
Definition gfx.h:250
void(* setScale)()
(x, y, z), ONE = 1.0
Definition gfx.h:248
void(* setLayerId)()
(id, depth)
Definition gfx.h:244
void(* setClutRow)()
(row)
Definition gfx.h:247
void(* draw)()
(sheet, frame, x, y)
Definition gfx.h:246
void(* setTexture)()
(x, y)
Definition gfx.h:242