# HG changeset patch # User William Morgan # Date 1389572029 28800 # Node ID 889227ec630c023b74b4d1c8f2aa2be247954d48 # Parent 5ec4707a3fd13d0ad5a35f2d967635a169d0f96c cursor and input code added. diff -r 5ec4707a3fd1 -r 889227ec630c src/main.c --- a/src/main.c Sun Jan 12 16:03:33 2014 -0800 +++ b/src/main.c Sun Jan 12 16:13:49 2014 -0800 @@ -1,11 +1,76 @@ #include #include "creep.h" +const u32 cursor_tiles[4*8] = { + 0x21100000, // top left + 0x10000000, + 0x10000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000000, // bottom left + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x10000000, + 0x10000000, + 0x21100000, + + 0x00000112, // top right + 0x00000001, + 0x00000001, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000000, // bottom right + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000001, + 0x00000001, + 0x00000112, + +}; + u16 tilemap[40*28]; u16 countdown; +int cursor_x = 0; +int cursor_y = 0; +const int cursor_size_px = 2 * 8; // two tiles of 8 pixels each + +void joy_event_handler(u16 joy, u16 changed, u16 state) { + u16 went_down = changed & state; + if (went_down & BUTTON_UP) { + cursor_y -= cursor_size_px; + } + if (went_down & BUTTON_DOWN) { + cursor_y += cursor_size_px; + } + if (went_down & BUTTON_LEFT) { + cursor_x -= cursor_size_px; + } + if (went_down & BUTTON_RIGHT) { + cursor_x += cursor_size_px; + } +} + int main(void) { + JOY_init(); + JOY_setEventHandler(&joy_event_handler); + + u8 cursor_tile_index = 1; + VDP_loadTileData((const u32 *)cursor_tiles, cursor_tile_index, 4, 0); + u16 i; VDP_setPlanSize(64, 32); for (i = 6; i < 40*28; i += 4) @@ -21,6 +86,7 @@ tilemap[39 + 14*40] = TILE_ATTR_FULL(1, 0, 0, 0, 'G' + TILE_FONTINDEX); for (;;) { + VDP_setSprite(0, cursor_x, cursor_y, SPRITE_SIZE(2,2), TILE_ATTR_FULL(PAL0, 1, 0, 0, cursor_tile_index), 0); VDP_waitVSync(); VDP_updateSprites(); for (i = 0; i < 28; i++)