|
@@ -22,6 +22,7 @@
|
22
|
22
|
#include <rand.h>
|
23
|
23
|
#include <stdint.h>
|
24
|
24
|
|
|
25
|
+#include "gb/gb.h"
|
25
|
26
|
#include "maps.h"
|
26
|
27
|
#include "obj.h"
|
27
|
28
|
#include "sprites.h"
|
|
@@ -297,14 +298,35 @@ int32_t game(void) NONBANKED {
|
297
|
298
|
}
|
298
|
299
|
}
|
299
|
300
|
|
|
301
|
+ // re-draw ship sprite when we've just rotated or are starting or stopping acceleration
|
|
302
|
+ uint8_t redraw = (acc & ACC_R) || ((prev_acc & (ACC_X | ACC_Y)) != (acc & (ACC_X | ACC_Y)));
|
|
303
|
+
|
|
304
|
+ if (key_pressed(J_START)) {
|
|
305
|
+ uint8_t hiwater = SPR_NUM_START;
|
|
306
|
+ spr_draw(SPR_PAUSE, FLIP_NONE, 0, 0, 0, &hiwater);
|
|
307
|
+ hide_sprites_range(hiwater, MAX_HARDWARE_SPRITES);
|
|
308
|
+
|
|
309
|
+ while (1) {
|
|
310
|
+ key_read();
|
|
311
|
+ if (key_pressed(J_START)) {
|
|
312
|
+ break;
|
|
313
|
+ } else if (key_pressed(J_SELECT)) {
|
|
314
|
+ return score;
|
|
315
|
+ }
|
|
316
|
+ vsync();
|
|
317
|
+ }
|
|
318
|
+
|
|
319
|
+ // re-draw ship sprite
|
|
320
|
+ redraw = 1;
|
|
321
|
+ }
|
|
322
|
+
|
300
|
323
|
pos_x += spd_x;
|
301
|
324
|
pos_y += spd_y;
|
302
|
325
|
move_bkg(pos_x >> POS_SCALE_BG, pos_y >> POS_SCALE_BG);
|
303
|
326
|
|
304
|
327
|
uint8_t hiwater = SPR_NUM_START;
|
305
|
328
|
|
306
|
|
- // re-draw ship sprite when we've just rotated or are starting or stopping acceleration
|
307
|
|
- if ((acc & ACC_R) || ((prev_acc & (ACC_X | ACC_Y)) != (acc & (ACC_X | ACC_Y)))) {
|
|
329
|
+ if (redraw) {
|
308
|
330
|
spr_ship(rot, acc & (ACC_X | ACC_Y), &hiwater);
|
309
|
331
|
ship_hiwater = hiwater;
|
310
|
332
|
} else {
|