Here's my game with a working inventory system
- Code: Select all
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;
const byte tilemap1[] PROGMEM = {17,11,
8,8,
2, 2, 2, 2, 2, 2, 2, 2,26,26,26,26,26,26,26,26, 2,
2, 2, 2, 2, 2, 2, 2,19,26,26,26,26,26,26,26,26,20,
2, 2, 2, 2, 2, 2, 2,19,25,26,26,25,25,25,25,25,20,
2, 2, 2, 2, 2, 2,18, 4, 8,25,26,56,57,58,59,60,20,
2, 2, 2, 2, 2, 4, 8, 8, 8,65,25,51,52,53,54,55,20,
2, 2, 2, 2, 4, 8, 8, 8, 8, 8, 8,46,47,48,49,50,20, /////////112x64 pix res
18,18,18, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3,
28, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,29,
21,21, 6, 8, 8, 8,22,23,24, 8, 8, 8, 8, 8, 5,21,21,
2, 2,19, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,20, 2, 2,
2, 2, 2,21,21,21,21,21,21,21,21,21,21,21, 2, 2, 2};
const byte tilemap2[] PROGMEM = {17,11,
8,8,
2, 2, 2, 2, 2, 2, 2,19,30,30, 3,18,18,18,18,18, 2,
2, 2, 2, 2, 2, 2, 2,19, 8, 8,27,27,27,27,27,27,20,
2, 2, 2, 2, 2, 2, 2,19, 8, 8,26,26,26,26,26,26,20,
2, 2, 2, 2, 2, 2,18, 4, 8, 8,25,26,26,26,26,26,20,
2, 2, 2, 2, 2, 4, 8, 8, 8, 8, 8,26,26,26,26,26,20,
2, 2, 2, 2, 4, 8, 8, 8, 8, 8, 8,26,26,26,26,26,20, /////////112x64 pix res
18,18,18, 4, 8, 8, 8,27, 8, 8, 8, 8,25,25,25,25, 3,
28, 8, 8, 8, 8, 8,27,26,27, 8, 8, 8, 8, 8, 8, 8,29,
21,21, 6, 8, 8,27,26,26,26,27, 8, 8, 8, 8, 5,21,21,
2, 2,19, 8, 8,25,25,25,25,25, 8, 8, 8, 8,20, 2, 2,
2, 2, 2,21,21,21,21,21,21,21,21,21,21,21, 2, 2, 2};
const byte tilemap3[] PROGMEM = {17,11,
8,8,
2, 2, 2, 2, 2, 2, 2, 2,18,18,18,18,18,18,18,18, 2,
2, 2, 2, 2, 2, 2, 2,19, 8, 8, 8, 8, 8, 8, 8, 8,20,
2, 2, 2, 2, 2, 2, 2,19, 8, 8, 8, 8, 8, 8, 8, 8,20,
2,18,18,18,18,18,18, 4, 8, 8, 8, 8, 5,21,21,21, 2,
19, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 2, 2, 2, 2, 2,
19, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 2, 2, 2, 2, 2, 2, /////////112x64 pix res
19, 8, 8, 5,21,21,21, 6, 8, 8,20, 2, 2, 2, 2, 2, 2,
19, 8, 8,20, 2, 2, 2,19, 8, 8,20, 2, 2, 2, 2, 2, 2,
19,34, 8,20, 2, 2, 2,19, 8, 8,20, 2, 2, 2, 2, 2, 2,
2,21,21, 2, 2, 2, 2,19, 8, 8,20, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2,19,28,28,20, 2, 2, 2, 2, 2, 2};
const byte tilemap4[] PROGMEM = {17,11,
8,8,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2,18,18,18,18,18, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
19, 8, 8, 8,36, 8,20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
19, 8, 8, 8, 8, 8,20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /////////112x64 pix res
19, 8, 8, 5,21,21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
19, 8, 8,20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
19,35, 8,20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2,21,21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2};
const byte tilemap5[] PROGMEM = {12,11,
8,8,
45,45,45,45,45,45,45,45,45,45,45,45,
45,45,37,37,37,37,37,37,37,45,45,45,
45,41,61,61,61,61,66,62,61,40,45,45,
45,41, 8, 8, 8, 8,67,63, 8,40,45,45,
45,41, 8, 8, 8, 8, 8,64, 8,40,45,45,
45,41, 8, 8, 8, 8, 8, 8, 8,40,45,45, /////////112x64 pix res
45,41, 8, 8, 8, 8, 8, 8, 8,40,45,45,
45,41, 8, 8, 8, 8, 8, 8, 8,40,45,45,
45,41, 8, 8, 8, 8, 8, 8, 8,40,45,45,
45,45,42,42,44, 8,43,42,42,45,45,45,
45,45,45,45,41,28,40,45,45,45,45,45,};
const byte bush[] PROGMEM = {B00101100,B01010010,B10001001,B01000010,B10010001,B01001010,B00100100,B01111110,};
const byte port_noir[] PROGMEM = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,};
const byte rock_terrain_master[] PROGMEM = {B00000010,B00010000,B01000000,B00000010,B00010000,B00001000,B01000001,B00000100,};
const byte rock_valley_ne[] PROGMEM = {B10100000,B11001001,B01110000,B00001100,B00000101,B00000100,B00000110,B00000011,};
const byte rock_valley_nw[] PROGMEM = {B00000101,B10010011,B00001110,B00110000,B10100000,B00100000,B01100000,B11000000,};
const byte rock_valley_se[] PROGMEM = {B00000011,B00000110,B00000100,B00000101,B00001100,B01110000,B11001001,B10100000,};
const byte rock_valley_sw[] PROGMEM = {B11000000,B01100000,B00100000,B10100000,B00110000,B00001110,B10010011,B00000101,};
const byte turtle_rock[] PROGMEM = {B01101100,B10110010,B11010001,B01010101,B01010010,B10011001,B10000001,B11111110,};
const byte void_tile[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte water_left_bottom[] PROGMEM = {B10001111,B10000000,B11110000,B10000000,B10001111,B10000000,B11110000,B11111111,};
const byte water_left_middle[] PROGMEM = {B10001111,B10000000,B11110000,B10000000,B10001111,B10000000,B11110000,B10000000,};
const byte water_left_top[] PROGMEM = {B11111111,B10000000,B11110000,B10001111,B10000000,B10000000,B11110000,B10000000,};
const byte water_right_bottom[] PROGMEM = {B1110001,B00000001,B0000111,B00000001,B11110001,B00000001,B00001111,B11111111,};
const byte water_right_middle[] PROGMEM = {B11110001,B00000001,B00001111,B00000001,B11110001,B00000001,B00001111,B00000001,};
const byte water_right_top[] PROGMEM = {B11111111,B00000001,B00001111,B00000001,B11110001,B00000001,B00001111,B00000001,};
const byte water_middle_bottom[] PROGMEM = {B11110000,B00000000,B00001111,B00000000,B11110000,B00000000,B00001111,B11111111,};
const byte water_middle_middle[] PROGMEM = {B11110000,B00000000,B00001111,B00000000,B11110000,B00000000,B00001111,B00000000,};
const byte water_middle_top[] PROGMEM = {B11111111,B00000000,B11110000,B00000000,B00001111,B00000000,B11110000,B00000000,};
const byte rock_s[] PROGMEM = {B00010010,B00000000,B01001000,B00000100,B00100001,B10001100,B01110010,B10000001,};
const byte rock_e[] PROGMEM = {B00000101,B00100010,B00001010,B10000010,B00100100,B00010100,B10000010,B00001001,};
const byte rock_n[] PROGMEM = {B10000001,B01110010,B10001100,B00100001,B00000100,B01001000,B00000000,B00010010,};
const byte rock_w[] PROGMEM = {B10100000,B01000100,B01010000,B01000001,B00100100,B00101000,B01000001,B10010000,};
const byte bush_left[] PROGMEM = {B00111011,B01000100,B10100000,B10010100,B01000010,B10000000,B10001000,B01110111,};
const byte bush_middle[] PROGMEM = {B10111101,B01000010,B00001000,B10000100,B00010000,B00100001,B10001000,B01110111,};
const byte bush_right[] PROGMEM = {B11011100,B00100010,B00000101,B00101001,B01000010,B00000001,B00010001,B11101110,};
const byte tree_base[] PROGMEM = {B01010100,B01000100,B10100010,B10001010,B10000010,B01101100,B00101000,B00101000,};
const byte tree_repeat[] PROGMEM = {B01010100,B01000100,B10000010,B10010010,B10101010,B01101100,B00101000,B01000100,};
const byte tree_top[] PROGMEM = {B00000000,B00000000,B00000000,B00010000,B00101000,B00101000,B00101000,B01000100,};
const byte exit_1[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_2[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_3[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_4[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_5[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_6[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte cave_ladder[] PROGMEM = {B11000011,B11011011,B11000011,B11011011,B11000011,B11011011,B11000011,B11011011,};
const byte ladder[] PROGMEM = {B00111100,B00100100,B00111100,B00100100,B00111100,B00100100,B00111100,B00100100,};
const byte tombstone[] PROGMEM = {B00111100,B01000010,B10000001,B10111001,B10000001,B10101101,B10000001,B11111111,};
const byte WallB[] PROGMEM = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B11111111,};
const byte WallBL[] PROGMEM = {B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,B10000000,B11111111,};
const byte WallBR[] PROGMEM = {B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,B00000001,B11111111,};
const byte WallL[] PROGMEM = {B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,};
const byte WallR[] PROGMEM = {B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,};
const byte WallT[] PROGMEM = {B11111111,B00000000,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,};
const byte WallTL[] PROGMEM = {B11111111,B10000000,B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,};
const byte WallTR[] PROGMEM = {B11111111,B00000001,B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,};
const byte blackwall[] PROGMEM = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,};
const byte houseB1[] PROGMEM = {B01010011,B01010010,B01010010,B01010001,B11110000,B10011111,B10010010,B11111111,};
const byte houseB2[] PROGMEM = {B11111000,B01001000,B01001000,B11110000,B00000000,B11111111,B01001000,B11111111,};
const byte houseB3[] PROGMEM = {B00111100,B01100110,B11000011,B10011001,B10000001,B10000101,B10000001,B11111111,};
const byte houseB4[] PROGMEM = {B00011111,B00010010,B00010010,B00001111,B00000000,B11111111,B00010010,B11111111,};
const byte houseB5[] PROGMEM = {B11001010,B01001010,B01001010,B10001010,B00001111,B11111001,B01001001,B11111111,};
const byte houseT1[] PROGMEM = {B11111111,B01010010,B01011111,B01010000,B01010000,B11110001,B10010010,B11110010,};
const byte houseT2[] PROGMEM = {B11111111,B01001001,B11111111,B00000000,B00000000,B11110000,B01001000,B01001000,};
const byte houseT3[] PROGMEM = {B11111111,B00100100,B11111111,B00000000,B01111110,B10100101,B11111111,B00000000,};
const byte houseT4[] PROGMEM = {B11111111,B10010010,B11111111,B00000000,B00000000,B00001111,B00010010,B00010010,};
const byte houseT5[] PROGMEM = {B11111111,B01001010,B11111010,B00001010,B00001010,B10001111,B01001001,B01001111,};
const byte roof1[] PROGMEM = {B00000000,B00011111,B00110010,B00101101,B01000000,B01010010,B11101101,B10000000,};
const byte roof2[] PROGMEM = {B00000000,B11111111,B01001001,B10110110,B00000000,B01001001,B10110110,B00000000,};
const byte roof3[] PROGMEM = {B00000000,B11111111,B00100100,B11011011,B00000000,B00100100,B11011011,B00000000,};
const byte roof4[] PROGMEM = {B00000111,B11111100,B10010111,B01101100,B00000100,B10010111,B01101101,B00000000,};
const byte roof5[] PROGMEM = {B10000000,B11111000,B11001100,B10110100,B10000010,B11001010,B10110111,B00000001,};
const byte wallpaper[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,};
const byte bedbottom[] PROGMEM = {B10111101,B11000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte bedmid[] PROGMEM = {B11111111,B10000001,B10000001,B10000001,B10111101,B11000011,B10000001,B10000001,};
const byte bedtop[] PROGMEM = {B00000000,B00000000,B00000000,B00111100,B11000011,B10000001,B10111101,B10100101,};
const byte menu1[] PROGMEM = {88,48,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00010001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000,B10000000,B00100110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B01000000,B00101000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B01000000,B01001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B00100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B11111111,B11110000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B10000000,B00010000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11110000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10100000,B01001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B00100000,B00101000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B01000000,B00100110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B01000000,B00010001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000,B10000000,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte menu2[] PROGMEM = {88,48,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00011001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B10000000,B00010111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B10000000,B00110111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B11000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B00000000,B00001111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00001111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01000000,B00110111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B11000000,B00010111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B10000000,B00011001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B10000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte key[] PROGMEM = {16,17,B11111111,B11100000,B10000000,B00100000,B10000000,B00100000,B10000011,B10100000,B10000010,B10100000,B10010111,B10100000,B10101110,B00100000,B10011100,B00100000,B10011000,B00100000,B10000000,B00100000,B11111111,B11100000,B00000000,B00000000,B10000000,B00000000,B10100110,B10100000,B11001100,B11100000,B10100110,B00100000,B00000000,B11000000,};
const byte chest[] PROGMEM = {B00000000,B00000000,B01111110,B10000001,B11111111,B10011001,B10000001,B11111111,};
const byte bedsidebottom[] PROGMEM = {B10000001,B10111101,B10100101,B10111101,B10000001,B11111111,B00000000,B00000000,};
const byte bedsidetop[] PROGMEM = {B00000000,B00000000,B00000000,B11111111,B10000001,B10000001,B10000001,B11111111,};
const byte sox[] PROGMEM = {16,17,B11111111,B11100000,B10000000,B00100000,B10000111,B10100000,B10000100,B10100000,B10000111,B10100000,B10011100,B10100000,B10100000,B10100000,B10100001,B00100000,B10011110,B00100000,B10000000,B00100000,B11111111,B11100000,B00000000,B00000000,B01100000,B00000000,B10000100,B10100000,B00101010,B01000000,B11000100,B10100000,B00000000,B00000000,};
const byte *spritesheet[] = {bush, //0
port_noir, //1
rock_terrain_master, //2
rock_valley_ne, //3
rock_valley_nw, //4
rock_valley_se, //5
rock_valley_sw, //6
turtle_rock, //7
void_tile, //8
water_left_bottom, //9
water_left_middle, //10
water_left_top, //11
water_right_bottom, //12
water_right_middle, //13
water_right_top, //14
water_middle_bottom, //15
water_middle_middle, //16
water_middle_top, //17
rock_s, //18
rock_e, //19
rock_w, //20
rock_n, //21
bush_left, //22
bush_middle, //23
bush_right, //24
tree_base, //25
tree_repeat, //26
tree_top, //27
exit_1, //28
exit_2, //29
exit_3, //30
exit_4, //31
exit_5, //32
exit_6, //33
cave_ladder, //34
ladder, //35
tombstone, //36
WallB, //37
WallBL, //38
WallBR, //39
WallL, //40
WallR, //41
WallT, //42
WallTL, //43
WallTR, //44
blackwall, //45
houseB1, //46
houseB2, //47
houseB3, //48
houseB4, //49
houseB5, //50
houseT1, //51
houseT2, //52
houseT3, //53
houseT4, //54
houseT5, //55
roof1, //56
roof2, //57
roof3, //58
roof4, //59
roof5, //60
wallpaper, //61
bedtop, //62
bedmid, //63
bedbottom, //64
chest, //65
bedsidetop, //66
bedsidebottom}; //67
const byte backblack[] PROGMEM = {8,8,0x7E,0x42,0x42,0x3C,0x7E,0x3C,0x3C,0x24,};
const byte backgrey[] PROGMEM = {8,8,0x1,0x1,0x1,0xC1,0x81,0xC0,0x40,0x0,};
const byte frontblack[] PROGMEM = {8,8,0x7E,0x66,0x42,0x38,0x78,0x38,0x3C,0x24,};
const byte frontgrey[] PROGMEM = {8,8,0x80,0x80,0x80,0x87,0x87,0x7,0x2,0x0,};
const byte leftblack[] PROGMEM = {8,8,0x3E,0x32,0x22,0x1C,0x1C,0x1C,0x1C,0x14,};
const byte leftgrey[] PROGMEM = {8,8,0x0,0x0,0x0,0x60,0x60,0x60,0x40,0x0,};
const byte rightblack[] PROGMEM = {8,8,0x7C,0x4C,0x44,0x38,0x3C,0x38,0x38,0x28,};
const byte rightgrey[] PROGMEM = {8,8,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,};
int player_x = 70; //cant get these to center
int player_y = 40; //cant get these to center
int player_direction = 0;
int room = 1;
int co_ords = 1;
int menu_1 = 1;
int key_1 = 1;
int sox_1 = 1;
int x,y; ///if 0 player spite will not move, -50,50 no tilemap
//////CAMERA//////
int camerax = -20 ;
int cameray = -20 ;
int animTransition;
void setup() {
gb.begin();
gb.titleScreen(F("test"));
gb.setFrameRate(62); ////////for sprite
gb.display.persistence = false;
// animTransition=-6;
}
/////////PLAYER_MOVEMENT\\\\\\\\\
void loop() {
if(gb.update()){
if (gb.buttons.repeat(BTN_RIGHT,1));{x--;}
if (gb.buttons.repeat(BTN_LEFT,1));{x++;}
if (gb.buttons.repeat(BTN_DOWN,1));{y--;}
if (gb.buttons.repeat(BTN_UP,1));{y++;}
// if(player_x > 64 ) {camerax-=2; player_x -=2;} //Y Scrolling right
//else if(player_x < 10 ){camerax+=2; player_x +=2;} //Y Scrolling left
// if(player_y > 28 ) {cameray-=2; player_y -=2;} //Y Scrolling Down
//else if(player_y < 10 ){cameray+=2; player_y +=2;} //Y Scrolling Up
// if(cameray > 0)cameray=0;
//else if(cameray < -24) cameray = -24;
// if(camerax > 0)camerax=0;
//else if(camerax < -36) camerax = -36;
if(player_x > 59 && camerax < 0 && camerax > -52){player_x = 59;camerax--;}
else if(player_x < 15 && camerax < 0 && camerax > -52){player_x = 15;camerax++;}
else if(player_x > 59 && camerax <= 0 && camerax >= -52)camerax--;
else if(player_x < 15 && camerax <= 0 && camerax >= -52)camerax++;
if(player_y > 28 && cameray < 0 && cameray > -40){player_y = 28;cameray--;}
else if(player_y < 15 && cameray < 0 && cameray > -40){player_y = 15;cameray++;}
else if(player_y > 28 && cameray <= 0 && cameray >= -40)cameray--;
else if(player_y < 15 && cameray <= 0 && cameray >= -40)cameray++;
if(camerax > 0)camerax= 0;
else if(camerax < -52) camerax = -52;
if(cameray > 0)cameray= 0;
else if(cameray < -40) cameray = -40;
if(room == 1){
gb.display.clear();
gb.display.drawTilemap(camerax,cameray,tilemap1,spritesheet);} // draw the tilemap
// gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
if(room == 2){
gb.display.clear();
gb.display.drawTilemap(camerax,cameray,tilemap2,spritesheet);} // draw the tilemap
// gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
if(room == 3){
gb.display.clear();
gb.display.drawTilemap(camerax,cameray,tilemap3,spritesheet);} // draw the tilemap
// gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
if(room == 4){
gb.display.clear();
gb.display.drawTilemap(camerax,cameray,tilemap4,spritesheet);} // draw the tilemap
// gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
if(room == 5){
gb.display.clear();
gb.display.drawTilemap(camerax,cameray,tilemap5,spritesheet);} // draw the tilemap
// gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
//if(gb.buttons.repeat(BTN_A,1)){
// gb.display.setColor(BLACK);
// gb.display.fillRect(0,0,84,48);
// gb.display.setColor(WHITE);
// gb.display.fillRect(animTransition,animTransition,84-(2*animTransition),48-(2*animTransition));
// gb.display.setColor(BLACK);
// {animTransition = animTransition + 6;}
// }
// if(gb.buttons.repeat(BTN_B,1)){
// gb.display.setColor(BLACK);
// gb.display.fillRect(0,0,84,48);
// gb.display.setColor(WHITE);
// gb.display.fillRect(animTransition,animTransition,84-(2*animTransition),48-(2*animTransition));
// gb.display.setColor(BLACK);
// {animTransition = animTransition - 6;}
// }
if(gb.buttons.repeat(BTN_UP,1)){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,backblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,backgrey);
}
player_direction = 1;
player_y = player_y - 1;
if(checkcolision())player_y++; // ADD by Summoner123 - If have colision on the new position regreat one Pixel
}
if(player_y <= 0){
player_y = 0;}
if(gb.buttons.repeat(BTN_DOWN,1)){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,frontblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,frontgrey);
}
player_direction = 2;
player_y = player_y + 1;
if(checkcolision())player_y--; // ADD by Summoner123 - If have colision on the new position regreat one Pixel
}
if(player_y >= 40){
player_y = 40;}
if(gb.buttons.repeat(BTN_RIGHT,1)){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,rightblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,rightgrey);
}
player_direction = 3;
player_x = player_x + 1;
if(checkcolision())player_x--; // ADD by Summoner123 - If have colision on the new position regreat one Pixel
}
if(player_x >= 77){
player_x = 77;}
if(gb.buttons.repeat(BTN_LEFT,1)){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,leftblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,leftgrey);
}
player_direction = 4;
player_x = player_x - 1;
if(checkcolision())player_x++; // ADD by Summoner123 - If have colision on the new position regreat one Pixel
}
if(player_x <= -2){
player_x = -2;}
////////////PLAYER DIRECTION/////////////
if (player_direction == 1){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,backblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,backgrey);
}
}
else if (player_direction == 2){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,frontblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,frontgrey);
}
}
else if (player_direction == 3){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,rightblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,rightgrey);
}
}
else if (player_direction == 4){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,leftblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,leftgrey);
}
}
else { gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,frontblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,frontgrey);
}
}
}
gb.display.setColor(BLACK);
if(gb.buttons.held(BTN_B,20)){
co_ords = co_ords + 1;}
if(co_ords == 0){
gb.display.cursorY = 12; gb.display.println( menu_1 );gb.display.println( menu_1 );}
if(co_ords == 1){
gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );}
else if(co_ords == 2){
gb.display.cursorY = 12; gb.display.println( camerax );gb.display.println( cameray );}
else if(co_ords >= 3){
co_ords = 0;}
/////////////////////////////////////TEST MENU OVERLAY///////////////////////////////////////////////
if (gb.buttons.pressed(BTN_C)){
menu_1 = menu_1 + 1;}
if(menu_1 == 3){
gb.display.setColor(BLACK);
gb.display.drawBitmap(0,0,menu1);
gb.display.setColor(WHITE);
gb.display.drawBitmap(0,0,menu2);
gb.display.setColor(BLACK);}
// else if(menu_1 == 1){
// gb.display.cursorY = 12; gb.display.println( camerax );gb.display.println( cameray );}
//if (gb.buttons.pressed(BTN_A)){
// menu_1 = menu_1 + 1;}
else if(menu_1 >= 5){
menu_1 = 1;}
if(menu_1 == 3 && key_1 == 3){
gb.display.drawBitmap(8,8,key);
}
if(menu_1 == 3 && sox_1 == 3){
gb.display.drawBitmap(22,8,sox);
}
//if (gb.buttons.pressed(BTN_C)){
// key_1 = key_1 + 1;}
// else if(key_1 >= 5){
// key_1 = 1;
//}
////////////////////////////END TEST MENY//////////////////////////////////////
}
bool checkcolision() // Transformed it into a function
{
uint16_t i;
for(i=0; i < gb.display.numcolision + 1; i++)
{
if(gb.collideRectRect(player_x,player_y,8,8,gb.display.solid[i].x,gb.display.solid[i].y,8,8))///changed player_x,y back to 8
{
// if(gb.display.solid[i].spritecol == void_tile); //Do nothing because it's floor - This line not needed
if(gb.display.solid[i].spritecol == bush) return true;
else if(gb.display.solid[i].spritecol == port_noir) return true;
else if(gb.display.solid[i].spritecol == rock_terrain_master) {gb.popup(F(" ""Rock"" "),1); return true;} //Return True if character have touched the wall
else if(gb.display.solid[i].spritecol == rock_valley_ne) return true;
else if(gb.display.solid[i].spritecol == rock_valley_nw) return true;
else if(gb.display.solid[i].spritecol == rock_valley_se) return true;
else if(gb.display.solid[i].spritecol == rock_valley_sw) return true;
else if(gb.display.solid[i].spritecol == turtle_rock) return true;
else if(gb.display.solid[i].spritecol == water_left_bottom) return true;
else if(gb.display.solid[i].spritecol == water_left_middle) return true;
else if(gb.display.solid[i].spritecol == water_left_top) return true;
else if(gb.display.solid[i].spritecol == water_right_bottom) return true;
else if(gb.display.solid[i].spritecol == water_right_middle) return true;
else if(gb.display.solid[i].spritecol == water_right_top) return true;
else if(gb.display.solid[i].spritecol == water_middle_bottom) return true;
else if(gb.display.solid[i].spritecol == water_middle_middle) return true;
else if(gb.display.solid[i].spritecol == water_middle_top) return true;
else if(gb.display.solid[i].spritecol == rock_n) return true;
else if(gb.display.solid[i].spritecol == rock_e) return true;
else if(gb.display.solid[i].spritecol == rock_s) return true;
else if(gb.display.solid[i].spritecol == rock_w) return true;
else if(gb.display.solid[i].spritecol == bush_left) return true;
else if(gb.display.solid[i].spritecol == bush_middle) return true;
else if(gb.display.solid[i].spritecol == bush_right) return true;
//else if(gb.display.solid[i].spritecol == bush_left) {gb.popup(F(" ""A bush!!"" "),1); return true;}
//else if(gb.display.solid[i].spritecol == bush_middle) {gb.popup(F(" ""A bush!!"" "),1); return true;}
//else if(gb.display.solid[i].spritecol == bush_right) {gb.popup(F(" ""A bush!!"" "),1); return true;}
else if(gb.display.solid[i].spritecol == tree_base) return true;
else if(gb.display.solid[i].spritecol == tree_repeat) return true;
else if(gb.display.solid[i].spritecol == tree_top) return true;
else if((gb.display.solid[i].spritecol == exit_1) && room == 1) {room = 2; player_x = 68; camerax = -52;}
else if((gb.display.solid[i].spritecol == exit_1) && room == 2) {room = 1; player_x = 68; camerax = -52;}
else if((gb.display.solid[i].spritecol == exit_1) && room == 3) {room = 2; player_y = 9; cameray = 0;}
else if((gb.display.solid[i].spritecol == exit_1) && room == 5) {room = 1; player_y = 27; player_x = 59; camerax = -45; cameray = -21;}
else if((gb.display.solid[i].spritecol == exit_2) && room == 1) {room = 2; player_x = 9; camerax = 0;}
else if((gb.display.solid[i].spritecol == exit_2) && room == 2) {room = 1; player_x = 9; camerax = 0;}
else if((gb.display.solid[i].spritecol == exit_3) && room == 2) {room = 3; player_y = 32; cameray = -40;}
else if(gb.display.solid[i].spritecol == exit_4) return true;
else if(gb.display.solid[i].spritecol == exit_5) return true;
else if(gb.display.solid[i].spritecol == exit_6) return true;
else if((gb.display.solid[i].spritecol == cave_ladder) && room ==3) {room = 4; player_x = 16; player_y = 24; camerax = 0; cameray = -48;}
else if((gb.display.solid[i].spritecol == ladder) && room == 4) {room = 3; player_x = 16; player_y = 24; camerax = 0; cameray = -48;}
else if((gb.display.solid[i].spritecol == tombstone) && gb.buttons.pressed(BTN_A)) {gb.popup(F(" ""Here Lies Dave!"" "),10); return true;}
else if(gb.display.solid[i].spritecol == tombstone) return true;
else if(gb.display.solid[i].spritecol == WallB) return true;
else if(gb.display.solid[i].spritecol == WallBL) return true;
else if(gb.display.solid[i].spritecol == WallBR) return true;
else if(gb.display.solid[i].spritecol == WallT) return true;
else if(gb.display.solid[i].spritecol == WallTL) return true;
else if(gb.display.solid[i].spritecol == WallTR) return true;
else if(gb.display.solid[i].spritecol == WallL) return true;
else if(gb.display.solid[i].spritecol == WallR) return true;
else if(gb.display.solid[i].spritecol == houseB1) return true;
else if(gb.display.solid[i].spritecol == houseB2) return true;
else if((gb.display.solid[i].spritecol == houseB3) && room == 1 && key_1 == 3) {room = 5; player_y = 32; player_x = 40; camerax = -0; cameray = -40;}
else if((gb.display.solid[i].spritecol == houseB3) && room == 1 && key_1 == 1) return true;
else if(gb.display.solid[i].spritecol == houseB4) return true;
else if(gb.display.solid[i].spritecol == houseB5) return true;
else if(gb.display.solid[i].spritecol == houseT1) return true;
else if(gb.display.solid[i].spritecol == houseT2) return true;
else if(gb.display.solid[i].spritecol == houseT3) return true;
else if(gb.display.solid[i].spritecol == houseT4) return true;
else if(gb.display.solid[i].spritecol == houseT5) return true;
else if(gb.display.solid[i].spritecol == roof1) return true;
else if(gb.display.solid[i].spritecol == roof2) return true;
else if(gb.display.solid[i].spritecol == roof3) return true;
else if(gb.display.solid[i].spritecol == roof4) return true;
else if(gb.display.solid[i].spritecol == roof5) return true;
else if((gb.display.solid[i].spritecol == bedtop) && gb.buttons.pressed(BTN_A)) {gb.popup(F(" ""Aaah! My bed"" "),10); return true;}
else if(gb.display.solid[i].spritecol == bedtop) return true;
else if((gb.display.solid[i].spritecol == bedmid) && gb.buttons.pressed(BTN_A)) {gb.popup(F(" ""Aaah! My bed"" "),10); return true;}
else if(gb.display.solid[i].spritecol == bedmid) return true;
else if((gb.display.solid[i].spritecol == bedbottom) && gb.buttons.pressed(BTN_A)) {gb.popup(F(" ""Aaah! My bed"" "),10);}
else if((gb.display.solid[i].spritecol == chest) && room == 1 && gb.buttons.pressed(BTN_A) && key_1 == 1) {gb.popup(F(" ""You got key"" "),10); key_1 = 3; return true;}
else if((gb.display.solid[i].spritecol == chest) && room == 1 && gb.buttons.pressed(BTN_A) && key_1 == 3) {gb.popup(F(" ""It's empty!!"" "),10); return true;}
else if(gb.display.solid[i].spritecol == chest) return true;
else if((gb.display.solid[i].spritecol == bedsidebottom) && room == 5 && gb.buttons.pressed(BTN_A) && sox_1 == 1) {gb.popup(F(" ""You got a sock?"" "),10); sox_1 = 3; return true;}
else if((gb.display.solid[i].spritecol == bedsidebottom) && room == 5 && gb.buttons.pressed(BTN_A) && sox_1 == 3) {gb.popup(F(" ""It's empty!!"" "),10); return true;}
else if(gb.display.solid[i].spritecol == bedsidetop) return true;
else if(gb.display.solid[i].spritecol == bedsidebottom) return true;
}
}
return false; // Return false if don't touch anything
}
And here it is my explanation to my inventory (although i will have to change the layout at some point if i'm including text on the screen due to size limitations of the Gamebuino's screen - I do have some ideas around how to achieve this)
First off we start with an integer for the menu/inventory
(I called mine Menu but you van call yours whatever you like)
- Code: Select all
int menu_1 = 1;
This allows us to call the menu/inventory when we want
Next we create a Sprite for our menu
- Code: Select all
const byte menu1[] PROGMEM = {88,48,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00010001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000,B10000000,B00100110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B01000000,B00101000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B01000000,B01001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B00100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B11111111,B11110000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B10000000,B00010000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11110000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10100000,B01001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B00100000,B00101000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B01000000,B00100110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B01000000,B00010001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000,B10000000,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte menu2[] PROGMEM = {88,48,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00011001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B10000000,B00010111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B10000000,B00110111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B11000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B00000000,B00001111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00001111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01000000,B00110111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B11000000,B00010111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B10000000,B00011001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B10000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
- menu.jpg (3.35 KiB) Viewed 14280 times
- menu2.jpg (3.37 KiB) Viewed 14280 times
We have to create a Sprite that displays both the black pixels and the white pixels - this is due to the default colour of the Gamebuino being transparent and if we do not add the white pixels we would be able to see through our menu and this looks terrible
then comes the code that actually displays/draws the menu
- Code: Select all
if (gb.buttons.pressed(BTN_C)){
menu_1 = menu_1 + 1;}
if(menu_1 == 3){
gb.display.setColor(BLACK);
gb.display.drawBitmap(0,0,menu1);
gb.display.setColor(WHITE);
gb.display.drawBitmap(0,0,menu2);
gb.display.setColor(BLACK);}
else if(menu_1 >= 5){
menu_1 = 1;}
If button C is pressed our menu_1 integer increases (for some reason this increases by 2 each time?? work in progress lol)
If its 1 it does nothing
if its 3 it displays both our BLACK and WHITE menu/inventory sprite
if it goes to 5 then it resets to 1
simply adding the above code would enable you to display a blank menu/inventory by pressing the C button on your Gamebuino whilst in the game
How do we add items to our menu/inventory I hear you ask...?
this was a little bit more tricky for me to work out, due to my lack of programming knowledge, but I did figure out a way and it works perfectly for me. doing this I was able to add an item to a chest and enable a trigger that allowed you to search the chest and pick up the item
first we need to add the item integer
- Code: Select all
int key_1 = 1;
My item was a key - so I named it key
I created the item Sprite and added it to my code (this also includes the text
- Code: Select all
const byte key[] PROGMEM = {16,17,B11111111,B11100000,B10000000,B00100000,B10000000,B00100000,B10000011,B10100000,B10000010,B10100000,B10010111,B10100000,B10101110,B00100000,B10011100,B00100000,B10011000,B00100000,B10000000,B00100000,B11111111,B11100000,B00000000,B00000000,B10000000,B00000000,B10100110,B10100000,B11001100,B11100000,B10100110,B00100000,B00000000,B11000000,};
- key.jpg (922 Bytes) Viewed 14280 times
We then write the code to say if the menu is active (on screen) and the key is in possetion - display key in inventory (this is simply drawing the key sprite in top of our menu/inventory)
- Code: Select all
if(menu_1 == 3 && key_1 == 3){
gb.display.drawBitmap(8,8,key);
}
so how do we pick up the key from a location (say a chest?)
- Code: Select all
else if((gb.display.solid[i].spritecol == chest) && room == 1 && gb.buttons.pressed(BTN_A) && key_1 == 1) {gb.popup(F(" ""You got key"" "),10); key_1 = 3; return true;}
else if((gb.display.solid[i].spritecol == chest) && room == 1 && gb.buttons.pressed(BTN_A) && key_1 == 3) {gb.popup(F(" ""It's empty!!"" "),10); return true;}
else if(gb.display.solid[i].spritecol == chest) return true;
I'll break this down a bit to help understanding
if((gb.display.solid[i].spritecol == chest) && room == 1 && gb.buttons.pressed(BTN_A) && key_1 == 1) {gb.popup(F(" ""You got key"" "),10); key_1 = 3; return true;}
If collision is detected with our chest sprite AND we are in the correct TileMap AND we press button A - the key integer changes and we get a message saying "You got key"
if((gb.display.solid[i].spritecol == chest) && room == 1 && gb.buttons.pressed(BTN_A) && key_1 == 3) {gb.popup(F(" ""It's empty!!"" "),10); return true;}
If collision is detected with our chest sprite AND we are in the correct TileMap AND we press button A AND the key is already in possession - we get a message that tells us the chest is empty "It's empty!!"
if(gb.display.solid[i].spritecol == chest) return true;
This line gives our chest collision detection so we don't walk through it
add these all together and we get a nice little menu/inventory system that lets us do the following
Press C to show/hide menu/inventory
Collect item from location (say a chest)
add item to our menu/inventory
now we have the key - let's use it to access the house
in my code the house will not allow you to enter unless you have the key in your possession this was done in the following way
- Code: Select all
else if((gb.display.solid[i].spritecol == houseB3) && room == 1 && key_1 == 3) {room = 5; player_y = 32; player_x = 40; camerax = -0; cameray = -40;}
else if((gb.display.solid[i].spritecol == houseB3) && room == 1 && key_1 == 1) return true;
if((gb.display.solid[i].spritecol == houseB3) && room == 1 && key_1 == 3) {room = 5; player_y = 32; player_x = 40; camerax = -0; cameray = -40;}
If collision is detected with the House Door AND we are in the correct TileMap AND key is in our possession change TileMap to inside house and set character/camera x/y co-ordinates
if((gb.display.solid[i].spritecol == houseB3) && room == 1 && key_1 == 1) return true;
If collision is detected with the House Door AND we are in the correct TileMap AND key is NOT our possession set collision detection so we don't walk through it but do nothing
(you could add some text that says "door is locked" or "key required" if wanted)
and that's it
I've added a HEX file to my original first post in this thread - so if you want to test it you can without having to compile it - there's also a hidden item (well it's not hidden very well but I've not mentioned it here) for you to find
I'll keep adding to this and updating you on what i find that could be useful to anyone that's interested
EDIT
I added some debugging tools to the uploaded HEX file and examples
Long press button B will scroll between showing player x/y co-ords, camera x/y co-ords and no co-ords, this should help if using my example to add your own tilemaps so you can see what your player/camera co-ords should be set to when changing tilemaps