|
@@ -23,7 +23,9 @@
|
23
|
23
|
#include <gbdk/platform.h>
|
24
|
24
|
#include <gbdk/metasprites.h>
|
25
|
25
|
#include <rand.h>
|
|
26
|
+#include <stdint.h>
|
26
|
27
|
|
|
28
|
+#include "asm/types.h"
|
27
|
29
|
#include "maps.h"
|
28
|
30
|
#include "obj.h"
|
29
|
31
|
#include "sprites.h"
|
|
@@ -38,7 +40,7 @@ static void highscore(uint8_t is_black) NONBANKED {
|
38
|
40
|
hide_sprites_range(SPR_NUM_START, MAX_HARDWARE_SPRITES);
|
39
|
41
|
win_score_clear(is_black);
|
40
|
42
|
|
41
|
|
- move_win(MINWNDPOSX + 0, MINWNDPOSY);
|
|
43
|
+ move_win(MINWNDPOSX, MINWNDPOSY);
|
42
|
44
|
SHOW_WIN;
|
43
|
45
|
|
44
|
46
|
for (uint8_t i = 0; i < SCORE_NUM; i++) {
|
|
@@ -70,7 +72,7 @@ static void splash_win(void) NONBANKED {
|
70
|
72
|
win_splash_draw(-low, high);
|
71
|
73
|
}
|
72
|
74
|
|
73
|
|
- move_win(MINWNDPOSX + 0, MINWNDPOSY + DEVICE_SCREEN_PX_HEIGHT - 16);
|
|
75
|
+ move_win(MINWNDPOSX, MINWNDPOSY + DEVICE_SCREEN_PX_HEIGHT - 16);
|
74
|
76
|
SHOW_WIN;
|
75
|
77
|
}
|
76
|
78
|
|
|
@@ -113,6 +115,48 @@ static void splash(void) NONBANKED {
|
113
|
115
|
}
|
114
|
116
|
}
|
115
|
117
|
|
|
118
|
+uint16_t ask_name(void) NONBANKED {
|
|
119
|
+ disable_interrupts();
|
|
120
|
+ DISPLAY_OFF;
|
|
121
|
+ map_title();
|
|
122
|
+ SHOW_BKG;
|
|
123
|
+ SHOW_SPRITES;
|
|
124
|
+ SPRITES_8x8;
|
|
125
|
+
|
|
126
|
+ hide_sprites_range(SPR_NUM_START, MAX_HARDWARE_SPRITES);
|
|
127
|
+
|
|
128
|
+ // TODO ask for name
|
|
129
|
+
|
|
130
|
+ move_win(MINWNDPOSX, MINWNDPOSY);
|
|
131
|
+ SHOW_WIN;
|
|
132
|
+
|
|
133
|
+ DISPLAY_ON;
|
|
134
|
+ enable_interrupts();
|
|
135
|
+
|
|
136
|
+ uint16_t name = convert_name('a', 'a', 'a');
|
|
137
|
+
|
|
138
|
+ while (1) {
|
|
139
|
+ key_read();
|
|
140
|
+
|
|
141
|
+ if (key_pressed(J_LEFT)) {
|
|
142
|
+ // TODO
|
|
143
|
+ } else if (key_pressed(J_RIGHT)) {
|
|
144
|
+ // TODO
|
|
145
|
+ } else if (key_pressed(J_UP)) {
|
|
146
|
+ // TODO
|
|
147
|
+ } else if (key_pressed(J_DOWN)) {
|
|
148
|
+ // TODO
|
|
149
|
+ } else if (key_pressed(J_A)) {
|
|
150
|
+ // TODO
|
|
151
|
+ break;
|
|
152
|
+ }
|
|
153
|
+
|
|
154
|
+ vsync();
|
|
155
|
+ }
|
|
156
|
+
|
|
157
|
+ return name;
|
|
158
|
+}
|
|
159
|
+
|
116
|
160
|
void main(void) NONBANKED {
|
117
|
161
|
spr_init();
|
118
|
162
|
snd_init();
|
|
@@ -127,9 +171,11 @@ void main(void) NONBANKED {
|
127
|
171
|
while (1) {
|
128
|
172
|
int32_t score = game();
|
129
|
173
|
|
130
|
|
- // TODO ask for name of player
|
131
|
|
- struct scores s = { .name = 0x00, .score = score };
|
132
|
|
- score_add(s);
|
|
174
|
+ if (score_ranking(score)) {
|
|
175
|
+ uint16_t name = ask_name();
|
|
176
|
+ struct scores s = { .name = name, .score = score };
|
|
177
|
+ score_add(s);
|
|
178
|
+ }
|
133
|
179
|
|
134
|
180
|
splash();
|
135
|
181
|
}
|