Thank you to everyone for the replies. I managed to get this working, below is the code.
#include <Arduboy2.h>
const byte PROGMEM walk_towards[] =
{
16, 16,
0x00, 0xa8, 0x7a, 0x7a, 0xde, 0x3d, 0xdf, 0x3f, 0x1f, 0xce, 0x1f, 0xfc, 0x6e, 0x50, 0xd0, 0x20,
0xf, 0xf, 0x13, 0x92, 0xfd, 0xca, 0xd5, 0xf4, 0x14, 0x15, 0xca, 0xfd, 0x86, 0x9, 0x9, 0x7,
0x00, 0xa8, 0x7a, 0x7a, 0xde, 0x3d, 0xdf, 0x3f, 0x1f, 0xce, 0x1f, 0xfc, 0x6e, 0x50, 0xd0, 0x20,
0x7, 0x9, 0x9, 0x86, 0xfd, 0xca, 0x15, 0x14, 0xf4, 0xd5, 0xca, 0xfd, 0x92, 0x13, 0xf, 0xf
};
const byte PROGMEM walk_away[] =
{
16, 16,
0x00, 0x80, 0x40, 0x5e, 0x6c, 0xdf, 0x5e, 0xbf, 0xbf, 0x5f, 0xdd, 0x6e, 0x7a, 0x5a, 0x88, 0x00,
0x1c, 0x23, 0x21, 0x99, 0xfe, 0xc7, 0xcb, 0x7b, 0x1b, 0xb, 0x4f, 0xff, 0x86, 0x9, 0x9, 0x6,
0x00, 0x80, 0x40, 0x5e, 0x6c, 0xdf, 0x5e, 0xbf, 0xbf, 0x5f, 0xdd, 0x6e, 0x7a, 0x5a, 0x88, 0x00,
0x6, 0x9, 0x9, 0x86, 0xff, 0x4f, 0xb, 0x1b, 0x7b, 0xcb, 0xc7, 0xfe, 0x99, 0x21, 0x23, 0x1c
};
const byte PROGMEM walk_left[] =
{
16, 16,
0x10, 0x68, 0x3d, 0x3f, 0xee, 0xf, 0xdf, 0x2f, 0x6e, 0xbf, 0x6e, 0x6e, 0xf8, 0x50, 0xa0, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x1, 0xc6, 0xba, 0x9e, 0x93, 0x92, 0xff, 0xf, 0x7, 0x00, 0x00, 0x00,
0x18, 0xc, 0x7d, 0x3f, 0xee, 0xf, 0xdf, 0x2f, 0x6f, 0xbf, 0x6e, 0x6e, 0xd8, 0x50, 0x28, 0x18,
0x00, 0x00, 0x00, 0xa0, 0xdd, 0x92, 0x8e, 0xda, 0xb3, 0xea, 0x8c, 0x9f, 0xd3, 0xf3, 0x8c, 0x00
};
const byte PROGMEM walk_right[] =
{
16, 16,
0xc0, 0xa0, 0x50, 0xf8, 0x6e, 0x6e, 0xbf, 0x6e, 0x2f, 0xdf, 0xf, 0xee, 0x3f, 0x3d, 0x68, 0x10,
0x00, 0x00, 0x00, 0x7, 0xf, 0xff, 0x92, 0x93, 0x9e, 0xba, 0xc6, 0x1, 0x00, 0x00, 0x00, 0x00,
0x18, 0x28, 0x50, 0xd8, 0x6e, 0x6e, 0xbf, 0x6f, 0x2f, 0xdf, 0xf, 0xee, 0x3f, 0x7d, 0xc, 0x18,
0x00, 0x8c, 0xf3, 0xd3, 0x9f, 0x8c, 0xea, 0xb3, 0xda, 0x8e, 0x92, 0xdd, 0xa0, 0x00, 0x00, 0x00,
};
Arduboy2 arduboy;
Sprites sprites;
byte frame = 0;
byte x = 0;
byte y = 0;
char cdir = 'T'; // T, L, R, A
#define CHAR_WIDTH 16
#define CHAR_HEIGHT 16
#define X_MAX (WIDTH - CHAR_WIDTH)
#define Y_MAX (HEIGHT - CHAR_HEIGHT)
void setup()
{
arduboy.begin();
arduboy.clear();
arduboy.setFrameRate(30);
}
void loop() {
if (!(arduboy.nextFrame())){
return;
}
if(arduboy.pressed(RIGHT_BUTTON) && (x < X_MAX)){
x++;
cdir = 'R';
}
if(arduboy.pressed(LEFT_BUTTON) && (x > 0)){
x--;
cdir = 'L';
}
if(arduboy.pressed(UP_BUTTON) && (y > 0)){
y--;
cdir = 'A';
}
if(arduboy.pressed(DOWN_BUTTON) && (y < Y_MAX)){
y++;
cdir = 'T';
}
arduboy.clear();
arduboy.setCursor(x, y);
if(cdir == 'T'){
sprites.drawSelfMasked(x, y, walk_towards, frame);
}
else if(cdir == 'L'){
sprites.drawSelfMasked(x, y, walk_left, frame);
}
else if(cdir == 'R'){
sprites.drawSelfMasked(x, y, walk_right, frame);
}
else if(cdir == 'A'){
sprites.drawSelfMasked(x, y, walk_away, frame);
}
if (arduboy.everyXFrames(8)) frame++;
if (frame > 1) frame = 0;
arduboy.display();
}