#include "sprites.h"
#include "dma.h"
+enum {
+ SIDX_DEL0, SIDX_DEL1, SIDX_DEL2,
+ SIDX_TIME,
+ SIDX_ICONS_BASE
+};
+
+enum {
+ SNAM_DEL0 = 512,
+ SNAM_DEL1 = SNAM_DEL0 + 8,
+ SNAM_DEL2 = SNAM_DEL1 + 8
+};
+
#define MENU_HEIGHT 17
#define TRACK_HEIGHT 18
#define VP_HEIGHT (160 - MENU_HEIGHT - TRACK_HEIGHT)
static void handle_keys(void);
+static void show_msgbox(int en);
extern struct { unsigned char r, g, b; } bgimg_cmap[];
extern unsigned char bgimg_pixels[];
{0, 0, -AXIS1, 0, 0, 0, 93},
};
+#define MAX_SIDX 8
+static uint16_t oam[4 * MAX_SIDX];
+
+
int main(void)
{
int i;
r = i / 5 + 6;
*cptr++ = r | (r << 5) | (r << 10);
}
- dma_copy16(3, fbptr[0], bgimg_pixels, 240 * 160 / 2);
- dma_copy16(3, fbptr[1], bgimg_pixels, 240 * 160 / 2);
+ dma_copy16(3, fbptr[0], bgimg_pixels, 240 * 160 / 2, 0);
+ dma_copy16(3, fbptr[1], bgimg_pixels, 240 * 160 / 2, 0);
init_sprites();
- set_sprite(0, 0, 512, 42, 42, 0, SPR_SZ64);
xgl_init();
xgl_viewport(0, 0, 240, VP_HEIGHT);
key_repeat(75, 75, KEY_LEFT | KEY_RIGHT | KEY_DOWN | KEY_UP);
+ /* every vblank, copy the shadow OAM automatically */
+ /*dma_copy16(3, (void*)OAM_ADDR, oam, sizeof oam / 2, DMACNT_VBLANK |
+ DMACNT_REPEAT | DMACNT_INC_RELOAD);*/
+
for(;;) {
handle_keys();
fb = fbptr[backbuf] + 240 * MENU_HEIGHT;
polyfill_framebuffer(fb, 240, VP_HEIGHT);
- memset(fb, 14, 240 * VP_HEIGHT);
+ //memset(fb, 14, 240 * VP_HEIGHT);
+ dma_fill16(3, fb, 0x0e0e, 240 * VP_HEIGHT / 2);
xgl_load_identity();
xgl_translate(0, 0, 8 << 16);
wait_vblank();
present(backbuf);
+ dma_copy16(3, (void*)OAM_ADDR, oam, sizeof oam / 2, 0);
}
return 0;
}
if(KEYPRESS(KEY_A)) {
- show_del ^= 1;
+ if(!show_del) {
+ if(show_obj) show_del = 1;
+ } else {
+ show_del = 0;
+ }
+ show_msgbox(show_del);
}
if(KEYPRESS(KEY_B)) {
if(show_del) {
show_obj = 0;
show_del = 0;
+ show_msgbox(0);
+ }
+ }
+}
+
+static void show_msgbox(int en)
+{
+ int i;
+
+ if(en) {
+ for(i=0; i<3; i++) {
+ set_sprite(oam, SIDX_DEL0 + i, SNAM_DEL0 + i * 8, 42 + i * 64, 42, 0, SPR_SZ64);
+ }
+ } else {
+ for(i=0; i<3; i++) {
+ set_sprite(oam, SIDX_DEL0 + i, 0, 0, 0, 0, 0);
}
}
}