-
Notifications
You must be signed in to change notification settings - Fork 0
/
pause.c
executable file
·99 lines (85 loc) · 2.82 KB
/
pause.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include "stats_screen.h"
#include "myLib.h"
void pause();
enum {SPLASH, INSTRUCTIONS, GAME_OVERWORLD, GAME_ARENA, PAUSE, WIN, LOSE};
extern int state;
OBJ_ATTR shadowOAM[128];
int points = 5;
int selector_position = 0;
extern int playerHealth;
extern int player_damage;
void pause() {
REG_DISPCTL = MODE0 | BG3_ENABLE | SPRITE_ENABLE;
REG_BG3CNT = CBB(0) | SBB(28) | BG_SIZE3 | COLOR256;
loadPalette(stats_screenPal);
DMANow(3, (unsigned int*)stats_screenTiles, &CHARBLOCKBASE[0], stats_screenTilesLen);
DMANow(3, (unsigned int*)stats_screenMap, &SCREENBLOCKBASE[28], stats_screenMapLen);
//sets up selector arrow
shadowOAM[127].attr0 = 56 | ATTR0_8BPP | ATTR0_SQUARE;
shadowOAM[127].attr1 = 25 | ATTR1_SIZE8;
shadowOAM[127].attr2 = 772;
//sets up points remaining indicator
shadowOAM[126].attr0 = 32 | ATTR0_8BPP | ATTR0_SQUARE;
shadowOAM[126].attr1 = 106 | ATTR1_SIZE8;
shadowOAM[126].attr2 = 800;
//sets up vitality points indicator
shadowOAM[125].attr0 = 57 | ATTR0_8BPP | ATTR0_SQUARE;
shadowOAM[125].attr1 = 90 | ATTR1_SIZE8;
shadowOAM[125].attr2 = 802;
//sets up strength points indicator
shadowOAM[124].attr0 = 73 | ATTR0_8BPP | ATTR0_SQUARE;
shadowOAM[124].attr1 = 90 | ATTR1_SIZE8;
shadowOAM[124].attr2 = 802;
//Disable unused sprites
int i;
for (i=0; i<128; ++i) {
OAM[i].attr0 = ATTR0_HIDE;
}
//This loop keeps the background from being redrawn continously
int button_pushed = 0;
while (!button_pushed) {
OAM[127] = shadowOAM[127];
OAM[126] = shadowOAM[126];
OAM[125] = shadowOAM[125];
OAM[124] = shadowOAM[124];
shadowOAM[126].attr2 = 800 + (2 * points);
key_poll();
if (key_hit(BUTTON_A) || (key_hit(BUTTON_B)))
button_pushed = 1;
if (key_hit(BUTTON_UP) && (selector_position > 0)) {
--selector_position;
shadowOAM[127].attr0 = 56 | ATTR0_8BPP | ATTR0_SQUARE;
}
if (key_hit(BUTTON_DOWN) && (selector_position < 1)) {
++selector_position;
shadowOAM[127].attr0 = 72 | ATTR0_8BPP | ATTR0_SQUARE;
}
if (key_hit(BUTTON_RIGHT) && (selector_position == 0) && (points > 0)) {
++playerHealth;
--points;
shadowOAM[125].attr2 = 800 + (2 * playerHealth);
}
if (key_hit(BUTTON_LEFT) && (selector_position == 0) && (playerHealth > 1)) {
--playerHealth;
++points;
shadowOAM[125].attr2 = 800 + (2 * playerHealth);
}
if (key_hit(BUTTON_RIGHT) && (selector_position == 1) && (points > 0)) {
++player_damage;
--points;
shadowOAM[124].attr2 = 800 + (2 * player_damage);
}
if (key_hit(BUTTON_LEFT) && (selector_position == 1) && (player_damage > 1)) {
--player_damage;
++points;
shadowOAM[124].attr2 = 800 + (2 * player_damage);
}
}
if (key_hit(BUTTON_A)) {
int i;
for (i=0; i<128; ++i) {
OAM[i].attr0 = ATTR0_HIDE;
}
state = GAME_OVERWORLD;
}
}