diff --git a/snake/keymapping.h b/snake/keymapping.h new file mode 100644 index 0000000..ff67192 --- /dev/null +++ b/snake/keymapping.h @@ -0,0 +1,39 @@ +#pragma once + +#include +#include + +/* We still have beef with keyboard, even in userspace */ +#define KEYCODE_SHIFT 42 +#define KEYCODE_ENTER 28 +#define KEYCODE_BACKSPACE 14 +#define KEYCODE_SPACE 57 +#define KEYCODE_ESCAPE 1 +#define KEYCODE_A 30 +#define KEYCODE_S 31 +#define KEYCODE_D 32 +#define KEYCODE_W 17 +#define KEYCODE_Q 16 +#define KEYCODE_ENTER 28 +#define KEYCODE_LEFT 75 +#define KEYCODE_RIGHT 77 +#define KEYCODE_UP 72 +#define KEYCODE_DOWN 80 +#define KEYCODE_1 2 +#define KEYCODE_2 3 + +bool is_keycode_for_press_left(uint8_t keycode) { + return keycode == KEYCODE_LEFT || keycode == KEYCODE_A; +} + +bool is_keycode_for_press_right(uint8_t keycode) { + return keycode == KEYCODE_RIGHT || keycode == KEYCODE_D; +} + +bool is_keycode_for_press_up(uint8_t keycode) { + return keycode == KEYCODE_UP || keycode == KEYCODE_W; +} + +bool is_keycode_for_press_down(uint8_t keycode) { + return keycode == KEYCODE_DOWN || keycode == KEYCODE_S; +} diff --git a/snake/misc_utils.h b/snake/misc_utils.h index 67d99af..07f8019 100644 --- a/snake/misc_utils.h +++ b/snake/misc_utils.h @@ -11,7 +11,7 @@ void _Noreturn panic(const char* message) { __builtin_unreachable(); } -#define check(expr) if (!(expr)){ panic( "Assertion failed at " __FILE__ ": " #expr); } +#define check(expr) if (!(expr)){ panic( "Assertion failed at " __FILE__ ": " #expr "\n"); } typedef struct { int x, y; @@ -85,38 +85,6 @@ const char* StringBuilder_get_cstr(StringBuilder* self) { return self->buf; } - -/* We still have beef with keyboard, even in userspace */ -#define KEYCODE_SHIFT 42 -#define KEYCODE_ENTER 28 -#define KEYCODE_BACKSPACE 14 -#define KEYCODE_SPACE 57 -#define KEYCODE_ESCAPE 1 -#define KEYCODE_A 30 -#define KEYCODE_S 31 -#define KEYCODE_D 32 -#define KEYCODE_W 17 -#define KEYCODE_Q 16 -#define KEYCODE_ENTER 28 -#define KEYCODE_LEFT 75 -#define KEYCODE_RIGHT 77 -#define KEYCODE_UP 72 -#define KEYCODE_DOWN 80 -#define KEYCODE_1 2 -#define KEYCODE_2 3 - -bool is_keycode_for_press_left(uint8_t keycode) { - return keycode == KEYCODE_LEFT || keycode == KEYCODE_A; -} - -bool is_keycode_for_press_right(uint8_t keycode) { - return keycode == KEYCODE_RIGHT || keycode == KEYCODE_D; -} - -bool is_keycode_for_press_up(uint8_t keycode) { - return keycode == KEYCODE_UP || keycode == KEYCODE_W; -} - -bool is_keycode_for_press_down(uint8_t keycode) { - return keycode == KEYCODE_DOWN || keycode == KEYCODE_S; +uint32_t time_ms(void) { + return (uint32_t)syscall(SYS_time_ms, 0); } diff --git a/snake/random.h b/snake/random.h index bea5a1b..4e891dd 100644 --- a/snake/random.h +++ b/snake/random.h @@ -1,4 +1,34 @@ #pragma once #include +#include "misc_utils.h" +typedef struct { + uint32_t state; +} RandomEngine; + +static void RandomEngine_init(RandomEngine* self) { + self->state = 0x6d2b79f5u; +} + +static uint32_t RandomEngine_rnd(RandomEngine* self) { + uint32_t x = self->state; + + if (x == 0) { + x = 0x6d2b79f5u; + } + + x ^= x << 13; + x ^= x >> 17; + x ^= x << 5; + x = x * 1664525u + 1013904223u; + + self->state = x; + return x; +} + +static uint32_t RandomEngine_rnd_interval( + RandomEngine* self, uint32_t from, uint32_t until) { + check(from < until); + return from + RandomEngine_rnd(self) % (until - from); +} diff --git a/snake/snake b/snake/snake index f9aba71..01f7bb8 100755 Binary files a/snake/snake and b/snake/snake differ diff --git a/snake/snake.c b/snake/snake.c index dfd0e90..07a9ff3 100644 --- a/snake/snake.c +++ b/snake/snake.c @@ -5,8 +5,9 @@ #include #include #include "misc_utils.h" +#include "keymapping.h" #include "pause_effect.h" - +#include "random.h" #include "sprites.h" #include "sprite_data.h" #include "maps.h" @@ -31,7 +32,7 @@ typedef enum { game_screen_pause, game_screen_select_map, game_screen_select_apple_count, -} GameScreen; +} game_screen_t; #define SNAKE_START_Y 2 @@ -43,7 +44,7 @@ typedef enum { snake_direction_right = 1, snake_direction_top = 2, snake_direction_bottom = 3, -} SnakeDirection; +} snake_direction_t; #define WALKING_ANIM_TIME_SLOW 500 #define HATCHING_ANIM_TIME_SLOW 200 @@ -52,45 +53,54 @@ typedef enum { typedef enum { waiting_reason_step, + waiting_reason_p1, waiting_reason_p2, waiting_reason_cross, - waiting_reason_m2, + + /* we go from cross pupa state to m1 pupa state through 'step', + * not through a separate animation target */ waiting_reason_m1, waiting_reason_zero_pupa, -} WaitingReason; + + waiting_reason_postmortum, +} waiting_reason_t; struct Snake { bool is_space_pressed; - GameScreen game_screen; + game_screen_t game_screen; bool have_game; /* from 0 to PLAYABLE_MAPS_COUNT - 1 */ int selected_map_index; /* from 1 to SNAKE_GAMEMODE_MAX_APPLES, default is SNAKE_GAMEMODE_DEFAULT_APPLES */ int gamemode_apples_count; + RandomEngine r_eng; tile_t world[WORLD_WIDTH][WORLD_HEIGHT]; uint8_t ghost_apples[WORLD_WIDTH][WORLD_HEIGHT]; ivec2 snake_head; - ivec2 snake_pupa; - SnakeDirection cur_snake_direction; - SnakeDirection new_snake_direction; + ivec2 snake_tail; + snake_direction_t cur_snake_direction; + snake_direction_t new_snake_direction; /* If we are about to make a step into a wall, we start dying, * we enter into dying mode, where we keep making steps, but the head * just disappears after walking, moving back. - * When the pupa disappears this way, we enter is_dead state, where + * When the pupa disappears this way, we enter 'awaiting postmortum' state, where * nothing moves. * If we are about to hit ourselves, we don't even move, - * we immediately draw one small splash and enter is_dead state. + * we immediately draw one small splash and enter 'awaiting postmortum' state. * There is no winning state, you just raise your score until you are dead. */ bool is_dying; - bool is_dead; int score; + /* from -1 to PUDDLE_SPRITES - 1 (where -1 means there is no puddle) */ + int puddle_sprite; + ivec2 puddle_center; + /* This stuff regulates game flow and animation progress */ - WaitingReason waiting_reason; - uint32_t waiting_time; + waiting_reason_t waiting_reason; + uint32_t waiting_time; // Measures how much time we already accumulated bool is_time_sped_up; } snake = {1}; @@ -100,11 +110,30 @@ void init_snake() { snake.have_game = false; snake.selected_map_index = 0; snake.gamemode_apples_count = SNAKE_GAMEMODE_DEFAULT_APPLES; + snake.r_eng = (RandomEngine){.state = time_ms()}; /* snake_head and snake_pupa and snake.world * and other gameplay-related variables will be initialized during * map loading */ } +bool place_random_apple() { + for (int t = 0; t < 50; t++) { + uint32_t i = RandomEngine_rnd_interval(&snake.r_eng, 0, WORLD_WIDTH * WORLD_HEIGHT); + if ((&snake.world[0][0])[i] == tile_empty) { + (&snake.world[0][0])[i] = tile_apple; + return true; + } + } + /* I had enough */ + for (uint32_t i = 0; i < WORLD_WIDTH * WORLD_HEIGHT; i++) { + if ((&snake.world[0][0])[i] == tile_empty) { + (&snake.world[0][0])[i] = tile_apple; + return true; + } + } + return false; +} + void start_snake_game() { snake.have_game = true; snake.game_screen = game_screen_gaming; @@ -115,19 +144,206 @@ void start_snake_game() { snake.world[tx][SNAKE_START_Y] = tile_snake_l; } snake.world[SNAKE_START_PUPA_X][SNAKE_START_Y] = tile_pupa_0_l; + for (int app = 0; app < snake.gamemode_apples_count; app++) { + + } snake.new_snake_direction = snake.cur_snake_direction = snake_direction_left; snake.is_dying = false; - snake.is_dead = false; snake.score = 0; snake.waiting_reason = waiting_reason_step; snake.waiting_time = 0; snake.is_time_sped_up = false; + snake.puddle_sprite = -1; } +void set_tile(ivec2 pos, tile_t val) { + check(0 <= pos.x && pos.x < WORLD_WIDTH && 0 <= pos.y && pos.y < WORLD_HEIGHT); + snake.world[pos.x][pos.y] = val; +} -uint32_t time_ms(void) { - return (uint32_t)syscall(SYS_time_ms, 0); +tile_t get_tile(ivec2 pos) { + check(0 <= pos.x && pos.x < WORLD_WIDTH && 0 <= pos.y && pos.y < WORLD_HEIGHT); + return snake.world[pos.x][pos.y]; +} + +snake_direction_t get_opposite_direction(snake_direction_t x) { + if (x == snake_direction_left) { + return snake_direction_right; + } else if (x == snake_direction_right) { + return snake_direction_left; + } else if (x == snake_direction_top) { + return snake_direction_bottom; + } else { + return snake_direction_top; + } +} + +ivec2 world_walk_direction(ivec2 v, snake_direction_t dir) { + if (dir == snake_direction_left) { + return (ivec2){v.x == 0 ? WORLD_WIDTH - 1 : v.x - 1, v.y}; + } else if (dir == snake_direction_right) { + return (ivec2){v.x + 1 == WORLD_WIDTH ? 0 : v.x + 1, v.y}; + } else if (dir == snake_direction_top) { + return (ivec2){v.x, v.y == 0 ? WORLD_HEIGHT - 1 : v.y - 1}; + } else { + return (ivec2){v.x, v.y + 1 == WORLD_HEIGHT ? 0 : v.y + 1}; + } +} + +ivec2 get_puddle_center_for_contact(ivec2 head, snake_direction_t dir) { + ivec2 tile_pos = (ivec2){TILE_WIDTH * head.x, TILE_HEIGHT * head.y}; + if (dir == snake_direction_left || dir == snake_direction_right) { + tile_pos.y += TILE_WIDTH / 2; + } else if (dir == snake_direction_bottom) { + tile_pos.y += TILE_WIDTH; + } + if (dir == snake_direction_top || dir == snake_direction_bottom) { + tile_pos.x += TILE_WIDTH / 2; + } else if (dir == snake_direction_right) { + tile_pos.x += TILE_WIDTH; + } + return tile_pos; +} + +/* takes snake tile, returns cardinal direction of snake origin */ +snake_direction_t get_snake_origin_dir(tile_t tile) { + switch (tile) { + case tile_snake_l: + return snake_direction_right; + case tile_snake_r: + return snake_direction_left; + case tile_snake_t: + return snake_direction_bottom; + case tile_snake_b: + return snake_direction_top; + case tile_snake_bl: + return snake_direction_bottom; + case tile_snake_br: + return snake_direction_bottom; + case tile_snake_lb: + return snake_direction_left; + case tile_snake_rb: + return snake_direction_right; + case tile_snake_tl: + return snake_direction_top; + case tile_snake_tr: + return snake_direction_top; + case tile_snake_lt: + return snake_direction_left; + case tile_snake_rt: + return snake_direction_right; + default: + check(false); + } +} + +tile_t construct_snake_tile(snake_direction_t from, snake_direction_t to) { + check(from != to); + if (from == snake_direction_left) { + if (to == snake_direction_right) + return tile_snake_r; + if (to == snake_direction_top) + return tile_snake_lt; + /* to bottom */ + return tile_snake_lb; + } + if (from == snake_direction_right) { + if (to == snake_direction_left) + return tile_snake_l; + if (to == snake_direction_top) + return tile_snake_rt; + /* to bottom */ + return tile_snake_rb; + } + if (from == snake_direction_top) { + if (to == snake_direction_left) + return tile_snake_tl; + if (to == snake_direction_right) + return tile_snake_tr; + /* to bottom */ + return tile_snake_b; + } + if (from == snake_direction_bottom) { + if (to == snake_direction_left) + return tile_snake_bl; + if (to == snake_direction_right) + return tile_snake_br; + /* to top */ + return tile_snake_t; + } + check(false); +} + +tile_t construct_head_snake_tile(snake_direction_t to) { + return construct_snake_tile(get_opposite_direction(to), to); +} + +tile_t construct_zero_pupa(snake_direction_t to) { + if (to == snake_direction_left) + return tile_pupa_0_l; + if (to == snake_direction_right) + return tile_pupa_0_r; + if (to == snake_direction_top) + return tile_pupa_0_t; + if (to == snake_direction_bottom) + return tile_pupa_0_b; + check(false); +} + +/* takes snake tile, returns it's target direction*/ +snake_direction_t get_snake_destination(tile_t tile) { + switch (tile) { + case tile_snake_l: + return snake_direction_left; + case tile_snake_r: + return snake_direction_right; + case tile_snake_t: + return snake_direction_top; + case tile_snake_b: + return snake_direction_bottom; + case tile_snake_bl: + return snake_direction_left; + case tile_snake_br: + return snake_direction_right; + case tile_snake_lb: + return snake_direction_bottom; + case tile_snake_rb: + return snake_direction_bottom; + case tile_snake_tl: + return snake_direction_left; + case tile_snake_tr: + return snake_direction_right; + case tile_snake_lt: + return snake_direction_top; + case tile_snake_rt: + return snake_direction_top; + default: + check(false); + } +} + +snake_direction_t get_zero_pupa_destination(tile_t tile) { + if (tile == tile_pupa_0_r) + return snake_direction_right; + if (tile == tile_pupa_0_l) + return snake_direction_left; + if (tile == tile_pupa_0_t) + return snake_direction_top; + if (tile == tile_pupa_0_b) + return snake_direction_bottom; + check(false); +} + +/* takes a tile that can possibly become a tail. Either straight snake or pupa */ +bool is_tail_pupa(tile_t tile) { + if (18 <= tile && tile <= 21) + return false; + if (tile == tile_pupa_0_r || tile == tile_pupa_0_l || + tile == tile_pupa_0_b || tile == tile_pupa_0_t) { + return true; + } + check(false); } void clear_frame(uint8_t color) { @@ -200,18 +416,70 @@ void draw_hud(const char *text) { } } +/* You see, we never store pupa hatching stage in world array. + * Instead, we store pupa 0 in world matrix and deduce the correct tile + * in draw_game_world using snake.waiting_reason + */ +tile_t correct_game_tile(tile_t x) { + /* waiting for p2 => we are in p1 */ + if (snake.waiting_reason == waiting_reason_p2) { + if (x == tile_pupa_0_l) + return tile_pupa_p1_l; + if (x == tile_pupa_0_r) + return tile_pupa_p1_r; + if (x == tile_pupa_0_t) + return tile_pupa_p1_t; + if (x == tile_pupa_0_b) + return tile_pupa_p1_b; + } + /* waiting for cross => we are in p2 */ + if (snake.waiting_reason == waiting_reason_cross) { + if (x == tile_pupa_0_l) + return tile_pupa_p2_l; + if (x == tile_pupa_0_r) + return tile_pupa_p2_r; + if (x == tile_pupa_0_t) + return tile_pupa_p2_t; + if (x == tile_pupa_0_b) + return tile_pupa_p2_b; + } + /* waiting for m1 => we are in m2 */ + if (snake.waiting_reason == waiting_reason_m1) { + if (x == tile_pupa_0_l) + return tile_pupa_m2_l; + if (x == tile_pupa_0_r) + return tile_pupa_m2_r; + if (x == tile_pupa_0_t) + return tile_pupa_m2_t; + if (x == tile_pupa_0_b) + return tile_pupa_m2_b; + } + /* waiting for zero_pupa => we are in m1 */ + if (snake.waiting_reason == waiting_reason_zero_pupa) { + if (x == tile_pupa_0_l) + return tile_pupa_m1_l; + if (x == tile_pupa_0_r) + return tile_pupa_m1_r; + if (x == tile_pupa_0_t) + return tile_pupa_m1_t; + if (x == tile_pupa_0_b) + return tile_pupa_m1_b; + } + /* When waiting postmortum, step or p1, pupa looks exactly the same + * (default is zero pupa) */ + return x; +} + void draw_game_world() { if (!snake.have_game) return; for (int tx = 0; tx < WORLD_WIDTH; tx++) { for (int ty = 0; ty < WORLD_HEIGHT; ty++) { - tile_t tt = snake.world[tx][ty]; + tile_t tt = correct_game_tile(snake.world[tx][ty]); if (tt == tile_empty) continue; check((uint8_t)tt < TILE_SPRITES); - // if (tt == tile_snake_l) - // panic("sadasd"); draw_sprite(TILE_WIDTH * tx, TILE_WIDTH * ty - TILE_HEIGHT_OFFSET, TILE_WIDTH, TILE_HEIGHT, &sprite_data.tile[tt].tex[0][0]); } @@ -223,10 +491,7 @@ void draw_game_world() { } } -void draw_frame() { - clear_frame(226); - draw_game_world(); - +void draw_game_text() { StringBuilder hud = { 0 }; if (snake.game_screen == game_screen_gaming) { StringBuilder_append_u32(&hud, snake.score); @@ -245,12 +510,29 @@ void draw_frame() { StringBuilder_append_cstr(&hud, map_list.maps[snake.selected_map_index].name); } else if (snake.game_screen == game_screen_select_apple_count) { StringBuilder_append_cstr(&hud, "SELECT DIFFICULTY\n" - "HOW MANY APPLES ON MAP\nCURRENTLY SELECTED\n"); + "HOW MANY APPLES\nCURRENTLY SELECTED\n"); StringBuilder_append_u32(&hud, snake.gamemode_apples_count); } draw_hud(StringBuilder_get_cstr(&hud)); } +void draw_game_puddles() { + if (snake.puddle_sprite > 0) { + const PuddleSprite* sprite = &sprite_data.puddle[snake.puddle_sprite]; + draw_sprite( + snake.puddle_center.x - PUDDLE_WIDTH / 2, + snake.puddle_center.y - PUDDLE_WIDTH / 2, + PUDDLE_WIDTH, PUDDLE_WIDTH, (&sprite->tex[0][0])); + } +} + +void draw_frame() { + clear_frame(226); + draw_game_puddles(); + draw_game_world(); + draw_game_text(); +} + /* Called when game_screen is game_screen_gaming */ void handle_gaming_keycode(uint8_t keycode) { if (keycode == KEYCODE_ESCAPE) { @@ -286,7 +568,7 @@ int handle_incoming_keycode_after_halt(uint8_t keycode) { if (snake.game_screen == game_screen_gaming) { handle_gaming_keycode(keycode); } else if (snake.game_screen == game_screen_pause) { - if (keycode == KEYCODE_1) { + if (keycode == KEYCODE_1 || (keycode == KEYCODE_ENTER && !snake.have_game)) { snake.game_screen = game_screen_select_map; } else if (keycode == KEYCODE_ESCAPE && snake.have_game) { snake.game_screen = game_screen_gaming; @@ -321,10 +603,135 @@ int handle_incoming_keycode_after_halt(uint8_t keycode) { return 0; } +/* Time flows only in gaming mode. This function can call frame drawing */ +void handle_time_difference(uint32_t time_diff) { + if (snake.game_screen != game_screen_gaming) + return; + if (snake.waiting_reason == waiting_reason_postmortum) + return; + snake.waiting_time += time_diff; + uint32_t target_required_time; + if (snake.is_time_sped_up) { + if (snake.waiting_reason == waiting_reason_step) { + target_required_time = WALKING_ANIM_TIME_SLOW; + } else { + target_required_time = HATCHING_ANIM_TIME_SLOW; + } + } else { + if (snake.waiting_reason == waiting_reason_step) { + target_required_time = WALKING_ANIM_TIME_FAST; + } else { + target_required_time = HATCHING_ANIM_TIME_FAST; + } + } + if (snake.waiting_time > target_required_time) { + snake.waiting_time -= target_required_time; + if (snake.waiting_reason == waiting_reason_step) { + ivec2 tile_pos_ahead = world_walk_direction( + snake.snake_head, snake.new_snake_direction); + tile_t tile_ahead = get_tile(tile_pos_ahead); + /* Processing collisions */ + if (tile_ahead == tile_apple) { + snake.ghost_apples[tile_pos_ahead.x][tile_pos_ahead.y] = 1; + } else if (18 <= tile_ahead && tile_ahead <= 49) { + snake.waiting_reason = waiting_reason_postmortum; + snake.puddle_center = get_puddle_center_for_contact( + snake.snake_head, snake.new_snake_direction); + snake.puddle_sprite = 0; + return; + } else if (2 <= tile_ahead && tile_ahead <= 17) { + snake.is_dying = true; + snake.puddle_center = get_puddle_center_for_contact( + snake.snake_head, snake.new_snake_direction); + if (snake.puddle_sprite + 1 < PUDDLE_SPRITES) { + snake.puddle_sprite++; + } + } + /* normal stuff */ + /* Step 1 */ + ivec2 old_head_pos = snake.snake_head; + if (tile_ahead == tile_empty || tile_ahead == tile_apple) { + set_tile(tile_pos_ahead, + construct_head_snake_tile(snake.new_snake_direction)); + snake.snake_head = tile_pos_ahead; + } + /* Step 2 */ + set_tile(old_head_pos, construct_snake_tile( + get_opposite_direction(snake.cur_snake_direction), snake.new_snake_direction)); + snake.cur_snake_direction = snake.new_snake_direction; + + /* Steps 3... */ + if (is_tail_pupa(get_tile(snake.snake_tail))) { + /* Step 3a */ + snake_direction_t pupa_dir = get_zero_pupa_destination(get_tile(snake.snake_tail)); + ivec2 penultimate_pos = world_walk_direction(snake.snake_tail, pupa_dir); + set_tile(snake.snake_tail, tile_empty); + /* Step 4a */ + snake_direction_t penultimate_part_dir = get_snake_destination(get_tile(penultimate_pos)); + set_tile(penultimate_pos, construct_zero_pupa(penultimate_part_dir)); + snake.snake_tail = penultimate_pos; + /* WARNING: we updated snake_tail by moving pupa forward, we + * WARNING: should check if we moved onto a ghost apple */ + // check, this is important. This is the only place where we move pupa to a new pos + // we check for ghost apples. Clear ghost apples and enter + // p1-waiting state (instead of remaining in step awaiting state) + if (snake.ghost_apples[penultimate_pos.x][penultimate_pos.y]) { + snake.ghost_apples[penultimate_pos.x][penultimate_pos.y] = 0; + + syscall(SYS_set_beep, 5000); + snake.waiting_reason = waiting_reason_p1; + /* Nothing changed on screen because we need to wait even + * for the first stage of hatching. + * We could go to p1 immediately, though */ + } + } else { + snake_direction_t tail_dir = get_snake_destination(get_tile(snake.snake_tail)); + set_tile(snake.snake_tail, construct_zero_pupa(tail_dir)); + + syscall(SYS_set_beep, 3000); + snake.waiting_reason = waiting_reason_m1; + } + + /* If we went with route 3a, pupa has moved and we definitely can + * place an apple. But if it had not and we went through route 3b, + * well, okay, we just won't have a free space for apple */ + if (tile_ahead == tile_apple) { + place_random_apple(); + } + } /* But there are more animation + targets that can finish, other than 'step' */ + else if (snake.waiting_reason == waiting_reason_p1) { + snake.waiting_reason = waiting_reason_p2; + } else if (snake.waiting_reason == waiting_reason_p2) { + snake.waiting_reason = waiting_reason_cross; + } else if (snake.waiting_reason == waiting_reason_cross) { + /* Finished pupa hatching */ + snake_direction_t tail_dir = get_zero_pupa_destination(get_tile(snake.snake_tail)); + set_tile(snake.snake_tail, construct_zero_pupa(tail_dir)); + syscall(SYS_set_beep, 0); + snake.waiting_reason = waiting_reason_step; + } else if (snake.waiting_reason == waiting_reason_m1) { + snake.waiting_reason = waiting_reason_cross; + } else if (snake.waiting_reason == waiting_reason_zero_pupa) { + /* Finished pupa regrowing */ + syscall(SYS_set_beep, 0); + snake.waiting_reason = waiting_reason_step; + } + } +} + +void after_awake_action(uint32_t time_diff) { + handle_time_difference(time_diff); + snake.is_time_sped_up = false; + draw_frame(); + syscall(SYS_swap_frame, (uintptr_t)frame); +} + int main(void) { init_snake(); syscall(SYS_switch_to_graphics, 0); + uint32_t prev_time = time_ms(); while (1) { /* Returned from halt, we can enjoy keyboard input and animation progress*/ for (int ch;(ch = syscall(SYS_getc, 0)) >= 0;) { @@ -337,9 +744,13 @@ int main(void) { snake.is_time_sped_up = true; } /* snake.is_time_sped_up will be relevant when checking animation end */ - draw_frame(); - syscall(SYS_swap_frame, (uintptr_t)frame); + uint32_t current_time = time_ms(); + after_awake_action(current_time - prev_time); + + prev_time = current_time; + syscall(SYS_halt, 0); + } quit: syscall(SYS_switch_to_text, 0); diff --git a/snake/sprite_data.h b/snake/sprite_data.h index 44cbe67..7e4c31e 100644 --- a/snake/sprite_data.h +++ b/snake/sprite_data.h @@ -2,8 +2,6 @@ #include "sprites.h" -// Generated by generate_sprite_data.py -// This header defines a static const SpriteData object. static const SpriteData sprite_data = { .tile = { @@ -1805,222 +1803,222 @@ static const SpriteData sprite_data = { .puddle = { [0] = { /* puddle_1.png */ .tex = { - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 4, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 40, 47, 47, 4, 47, 47, 4, 47, 4, 47, 47, 4, 47, 12, 40, 40, 40, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 40, 47, 47, 47, 4, 4, 47, 4, 4, 4, 40, 4, 47, 40, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 112, 112, 112, 47, 4, 4, 4, 4, 4, 4, 40, 40, 12, 12, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 40, 40, 4, 40, 4, 40, 4, 40, 40, 4, 47, 112, 112, 47, 4, 47, 47, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 112, 47, 40, 40, 40, 40, 4, 4, 40, 4, 4, 40, 40, 4, 4, 112, 47, 47, 4, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 112, 112, 40, 4, 40, 4, 40, 12, 40, 4, 40, 112, 4, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 40, 40, 4, 40, 40, 40, 40, 40, 112, 40, 4, 40, 40, 47, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 4, 4, 47, 4, 112, 112, 112, 40, 4, 4, 112, 112, 40, 4, 40, 112, 112, 112, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 4, 40, 40, 40, 4, 40, 4, 4, 40, 40, 4, 112, 112, 40, 40, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 40, 40, 4, 4, 40, 40, 112, 40, 40, 4, 112, 40, 40, 4, 4, 4, 47, 47, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 4, 4, 40, 112, 40, 40, 4, 40, 40, 4, 112, 4, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 40, 40, 40, 40, 112, 112, 40, 40, 4, 40, 40, 4, 112, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 4, 4, 47, 4, 4, 4, 4, 4, 4, 40, 112, 40, 40, 4, 40, 40, 4, 112, 112, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 112, 112, 4, 4, 40, 40, 40, 4, 40, 4, 4, 40, 4, 112, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 112, 47, 47, 4, 40, 40, 4, 40, 4, 4, 4, 4, 40, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 40, 4, 4, 40, 4, 47, 47, 47, 4, 4, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 112, 4, 4, 47, 47, 4, 4, 112, 112, 47, 47, 47, 4, 47, 47, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 4, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 112, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 } } }, [1] = { /* puddle_2.png */ .tex = { - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 40, 47, 47, 112, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 40, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 40, 40, 47, 47, 47, 47, 47, 47, 47, 112, 47, 47, 47, 47, 47, 112, 47, 47, 4, 47, 47, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 112, 47, 47, 47, 47, 47, 4, 47, 112, 47, 47, 47, 47, 47, 4, 4, 4, 112, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 112, 47, 4, 4, 112, 4, 47, 112, 112, 4, 112, 40, 4, 112, 4, 47, 47, 47, 47, 112, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 40, 47, 47, 47, 4, 112, 47, 4, 4, 112, 40, 4, 4, 112, 40, 112, 40, 4, 112, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 112, 112, 4, 4, 112, 4, 4, 4, 40, 40, 112, 40, 4, 112, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 112, 47, 112, 40, 4, 40, 4, 40, 4, 40, 4, 40, 40, 40, 39, 40, 40, 47, 47, 4, 4, 47, 40, 40, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 40, 40, 40, 47, 4, 4, 4, 4, 112, 4, 112, 4, 40, 40, 4, 40, 4, 4, 4, 40, 40, 39, 4, 112, 40, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 4, 40, 40, 40, 40, 4, 4, 4, 40, 40, 4, 4, 4, 4, 4, 12, 40, 112, 40, 4, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 112, 112, 40, 4, 4, 4, 40, 40, 40, 40, 40, 39, 39, 4, 112, 40, 40, 40, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 40, 40, 40, 47, 47, 47, 47, 47, 4, 4, 12, 4, 40, 40, 40, 40, 4, 40, 40, 40, 4, 4, 112, 112, 112, 47, 40, 4, 112, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 112, 47, 4, 4, 40, 40, 4, 40, 40, 4, 40, 40, 4, 40, 4, 112, 40, 40, 4, 112, 47, 112, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 112, 40, 4, 40, 4, 40, 12, 40, 40, 40, 40, 40, 40, 4, 4, 4, 112, 4, 112, 112, 47, 47, 47, 40, 40, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 4, 4, 40, 40, 40, 40, 4, 40, 40, 4, 40, 40, 40, 40, 4, 40, 40, 40, 40, 40, 39, 112, 4, 112, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 4, 4, 4, 40, 4, 112, 112, 112, 40, 40, 40, 40, 40, 4, 40, 40, 40, 40, 112, 40, 40, 40, 40, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 4, 4, 40, 4, 40, 40, 40, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 40, 40, 47, 47, 47, 47, 47, 4, 4, 40, 40, 4, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 4, 4, 4, 4, 4, 4, 4, 47, 47, 40, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 4, 40, 4, 40, 112, 40, 40, 40, 40, 40, 40, 40, 4, 39, 40, 4, 4, 112, 112, 47, 47, 47, 47, 40, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 4, 40, 4, 12, 40, 40, 40, 112, 112, 40, 40, 4, 40, 40, 4, 112, 40, 40, 40, 40, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 4, 4, 40, 4, 4, 4, 4, 40, 4, 40, 112, 12, 40, 4, 40, 40, 40, 112, 4, 40, 4, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 4, 4, 40, 40, 39, 112, 112, 40, 4, 40, 40, 12, 4, 40, 4, 40, 40, 4, 112, 39, 40, 40, 4, 47, 47, 47, 40, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 40, 40, 47, 47, 4, 40, 40, 40, 112, 40, 4, 40, 40, 40, 4, 40, 4, 4, 4, 40, 40, 4, 40, 40, 40, 40, 40, 47, 47, 47, 40, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 4, 4, 4, 40, 4, 4, 40, 40, 4, 40, 40, 4, 4, 40, 40, 4, 40, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 112, 4, 4, 4, 40, 40, 40, 40, 40, 40, 40, 40, 112, 40, 40, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 4, 112, 4, 112, 4, 40, 112, 4, 4, 4, 112, 40, 40, 112, 40, 40, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 112, 112, 112, 112, 112, 4, 112, 112, 4, 112, 4, 40, 40, 40, 112, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 40, 40, 47, 47, 4, 112, 4, 4, 112, 47, 4, 112, 4, 4, 112, 40, 112, 40, 40, 40, 4, 47, 47, 47, 40, 40, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 47, 47, 47, 47, 112, 47, 4, 47, 4, 112, 112, 4, 4, 40, 4, 47, 47, 47, 47, 40, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 4, 47, 47, 47, 47, 47, 47, 4, 47, 4, 4, 47, 47, 47, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 40, 47, 47, 4, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 40, 47, 47, 47, 47, 4, 47, 47, 47, 47, 40, 40, 47, 47, 47, 47, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 } } }, [2] = { /* puddle_3.png */ .tex = { - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 47, 47, 47, 4, 47, 47, 47, 47, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 40, 47, 47, 112, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 40, 40, 40, 40, 47, 40, 40, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 40, 40, 47, 47, 4, 47, 47, 47, 47, 112, 47, 47, 47, 47, 47, 112, 47, 47, 4, 47, 40, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 4, 40, 40, 40, 40, 47, 47, 47, 47, 47, 4, 47, 47, 4, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 112, 47, 4, 4, 4, 4, 4, 40, 4, 4, 40, 40, 4, 4, 4, 4, 4, 112, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 47, 4, 40, 4, 4, 4, 40, 4, 4, 4, 4, 4, 112, 4, 47, 47, 47, 47, 112, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 40, 47, 47, 4, 4, 112, 4, 4, 4, 112, 40, 4, 40, 112, 40, 4, 4, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 40, 112, 40, 112, 4, 4, 4, 47, 47, 47, 47, 47, 40, 40, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 40, 40, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 112, 4, 4, 4, 47, 4, 4, 47, 40, 40, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 40, 40, 40, 47, 4, 4, 40, 40, 4, 40, 40, 40, 40, 40, 4, 4, 40, 40, 40, 40, 40, 40, 4, 4, 4, 4, 4, 47, 47, 47, 47, 47, 40, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 4, 40, 4, 4, 4, 4, 4, 40, 40, 40, 40, 40, 4, 40, 4, 4, 4, 40, 4, 4, 4, 4, 4, 47, 47, 47, 47, 40, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 4, 4, 40, 40, 4, 4, 4, 4, 4, 4, 40, 40, 4, 4, 4, 112, 4, 4, 4, 4, 4, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 40, 40, 40, 40, 47, 47, 112, 4, 40, 4, 4, 112, 40, 4, 4, 112, 112, 40, 4, 4, 40, 40, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 47, 47, 47, 40, 47, 47, 47, 47 }, + { 47, 47, 40, 40, 111, 40, 40, 4, 112, 4, 4, 4, 4, 40, 4, 4, 112, 4, 40, 4, 4, 4, 40, 4, 40, 40, 40, 4, 4, 4, 4, 47, 47, 47, 40, 40, 47, 47, 47, 47 }, + { 47, 47, 47, 112, 40, 40, 4, 4, 4, 4, 4, 40, 40, 4, 40, 4, 4, 112, 112, 40, 4, 4, 112, 112, 112, 112, 4, 40, 4, 4, 4, 47, 47, 40, 40, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 111, 4, 4, 40, 4, 40, 4, 40, 4, 4, 4, 40, 4, 4, 4, 40, 4, 4, 4, 4, 4, 4, 4, 4, 40, 4, 4, 4, 47, 47, 40, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 112, 111, 40, 40, 4, 4, 4, 40, 4, 40, 40, 4, 40, 40, 4, 4, 4, 4, 4, 4, 4, 4, 112, 4, 40, 40, 4, 4, 40, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 111, 111, 111, 40, 4, 4, 4, 40, 40, 112, 112, 4, 4, 4, 4, 4, 40, 40, 40, 4, 4, 4, 112, 40, 40, 4, 4, 40, 47, 47, 47, 47, 40, 40, 47, 47, 47 }, + { 47, 47, 40, 40, 47, 111, 111, 111, 4, 4, 4, 40, 112, 4, 4, 40, 4, 112, 112, 4, 40, 4, 40, 40, 4, 4, 40, 4, 4, 4, 40, 4, 47, 47, 40, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 40, 112, 4, 4, 4, 4, 40, 4, 4, 40, 4, 112, 40, 40, 4, 4, 4, 4, 40, 4, 40, 4, 4, 40, 40, 40, 4, 47, 47, 40, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 4, 4, 111, 4, 40, 4, 40, 4, 4, 4, 4, 4, 40, 4, 4, 4, 40, 4, 40, 4, 4, 4, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 4, 4, 40, 4, 4, 40, 4, 4, 4, 4, 4, 4, 4, 40, 4, 4, 40, 4, 4, 40, 4, 4, 40, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 40, 4, 4, 4, 4, 4, 40, 4, 4, 40, 4, 40, 4, 112, 4, 4, 112, 40, 4, 4, 4, 40, 47, 47, 4, 47, 47, 47, 47 }, + { 47, 47, 40, 40, 47, 47, 4, 40, 4, 40, 4, 4, 4, 4, 4, 4, 40, 40, 4, 4, 40, 40, 4, 4, 40, 4, 40, 112, 112, 4, 4, 4, 40, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 4, 4, 4, 40, 40, 40, 4, 4, 4, 40, 4, 40, 40, 4, 4, 4, 4, 4, 111, 112, 4, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 40, 40, 40, 4, 40, 40, 4, 4, 4, 4, 40, 4, 4, 40, 4, 4, 4, 4, 4, 40, 112, 112, 4, 111, 4, 112, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 40, 47, 47, 4, 40, 4, 4, 4, 4, 4, 40, 4, 4, 4, 40, 4, 4, 4, 112, 4, 4, 4, 112, 112, 111, 4, 47, 47, 47, 40, 40, 47, 47, 47, 47 }, + { 47, 47, 47, 4, 4, 47, 47, 4, 40, 47, 4, 112, 112, 4, 4, 40, 4, 4, 4, 4, 4, 4, 4, 4, 112, 4, 111, 111, 111, 112, 112, 47, 47, 47, 47, 40, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 40, 40, 40, 47, 4, 4, 4, 4, 40, 4, 4, 4, 4, 4, 40, 40, 40, 4, 4, 112, 4, 111, 111, 111, 4, 40, 47, 47, 47, 47, 40, 40, 47, 47 }, + { 47, 47, 47, 47, 47, 40, 47, 47, 47, 47, 4, 4, 4, 40, 40, 40, 4, 4, 4, 4, 40, 40, 40, 40, 40, 112, 111, 111, 4, 4, 47, 40, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 40, 47, 47, 4, 4, 40, 40, 40, 4, 40, 40, 40, 4, 112, 112, 4, 4, 112, 112, 112, 4, 112, 111, 111, 4, 47, 47, 47, 40, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 40, 40, 40, 40, 47, 40, 40, 40, 4, 112, 112, 112, 40, 112, 112, 112, 112, 112, 112, 111, 47, 47, 47, 47, 40, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 40, 40, 40, 47, 47, 40, 47, 47, 40, 40, 4, 4, 40, 40, 40, 40, 112, 112, 112, 112, 112, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 40, 47, 47, 47, 47, 4, 47, 47, 47, 47, 40, 47, 4, 40, 4, 40, 4, 40, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 40, 47, 47, 47, 47, 47, 47, 47, 40, 47, 47, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 } } }, [3] = { /* puddle_4.png */ .tex = { - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 4, 47, 47, 47, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 47, 4, 4, 4, 4, 4, 4, 4, 4, 4, 47, 47, 47, 47, 47, 47, 112, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 40, 47, 47, 112, 4, 4, 112, 112, 112, 112, 112, 112, 4, 4, 4, 47, 40, 40, 4, 40, 112, 40, 4, 4, 47, 47, 47, 47, 4, 4, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 40, 40, 47, 47, 4, 112, 112, 4, 4, 4, 4, 40, 4, 112, 4, 4, 40, 40, 4, 112, 40, 40, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 112, 47, 47, 4, 4, 4, 4, 4, 4, 112, 40, 40, 40, 40, 40, 40, 40, 4, 112, 112, 40, 4, 112, 4, 4, 47, 40, 47, 4, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 112, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 40, 40, 4, 4, 4, 40, 40, 40, 40, 4, 4, 4, 4, 112, 47, 112, 112, 112, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 4, 4, 4, 112, 112, 4, 4, 4, 4, 40, 4, 4, 4, 40, 4, 4, 40, 4, 4, 112, 4, 40, 4, 112, 112, 4, 47, 40, 40, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 112, 4, 4, 4, 4, 40, 112, 4, 4, 4, 112, 40, 4, 40, 112, 40, 40, 4, 4, 4, 4, 4, 40, 40, 4, 47, 40, 40, 47, 47, 47, 47, 47, 47, 40 }, + { 47, 47, 47, 47, 47, 112, 40, 40, 4, 4, 4, 40, 4, 40, 4, 4, 40, 40, 40, 4, 40, 112, 40, 112, 4, 4, 4, 40, 112, 4, 40, 40, 4, 40, 4, 40, 47, 47, 40, 47 }, + { 47, 47, 47, 47, 47, 4, 4, 4, 40, 40, 4, 40, 4, 40, 4, 4, 40, 40, 40, 40, 4, 4, 4, 4, 112, 4, 4, 4, 4, 112, 112, 112, 4, 4, 40, 4, 47, 40, 47, 47 }, + { 47, 47, 47, 40, 4, 4, 4, 4, 4, 4, 40, 4, 40, 40, 40, 40, 40, 4, 4, 40, 40, 40, 40, 40, 40, 4, 4, 4, 4, 40, 4, 40, 112, 40, 4, 4, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 4, 4, 40, 4, 4, 4, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 40, 40, 40, 4, 4, 40, 40, 40, 4, 40, 112, 4, 4, 47, 40, 40, 47 }, + { 47, 47, 40, 40, 4, 4, 4, 40, 40, 4, 40, 4, 4, 40, 112, 112, 40, 40, 40, 40, 40, 40, 40, 40, 4, 4, 4, 4, 4, 4, 4, 40, 4, 112, 4, 4, 47, 47, 47, 47 }, + { 40, 40, 40, 4, 4, 4, 112, 4, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 12, 40, 40, 40, 40, 40, 4, 4, 4, 40, 4, 112, 112, 4, 47, 47, 4, 47 }, + { 47, 47, 4, 40, 4, 4, 40, 4, 4, 40, 40, 40, 40, 40, 40, 12, 40, 40, 40, 12, 12, 12, 40, 40, 40, 40, 40, 112, 112, 112, 40, 40, 4, 112, 4, 112, 47, 47, 47, 47 }, + { 47, 47, 4, 4, 4, 40, 4, 4, 40, 112, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 4, 40, 40, 40, 40, 40, 4, 40, 4, 4, 4, 4, 4, 4, 4, 4, 47, 47, 47, 47 }, + { 47, 47, 4, 4, 4, 4, 40, 40, 40, 40, 40, 4, 40, 40, 40, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 40, 40, 40, 4, 4, 4, 40, 40, 40, 40, 4, 47, 47, 47 }, + { 4, 4, 4, 4, 4, 40, 40, 40, 40, 40, 40, 112, 40, 40, 40, 40, 12, 12, 40, 12, 12, 40, 40, 40, 4, 40, 40, 40, 40, 4, 112, 4, 4, 40, 40, 40, 4, 4, 4, 47 }, + { 47, 47, 4, 111, 4, 4, 40, 4, 40, 4, 40, 112, 40, 40, 40, 40, 40, 40, 40, 40, 112, 40, 40, 40, 40, 40, 40, 40, 4, 4, 112, 4, 4, 4, 112, 4, 4, 47, 47, 47 }, + { 47, 47, 4, 40, 4, 4, 40, 40, 4, 4, 40, 112, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 4, 40, 40, 4, 4, 40, 4, 4, 4, 4, 4, 4, 47, 47, 47 }, + { 47, 47, 47, 4, 4, 4, 112, 112, 4, 4, 40, 40, 40, 12, 40, 40, 40, 40, 12, 40, 40, 40, 4, 40, 4, 40, 40, 40, 40, 40, 40, 4, 40, 40, 40, 4, 4, 47, 4, 4 }, + { 47, 47, 47, 4, 4, 4, 112, 4, 40, 40, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 40, 40, 40, 40, 4, 4, 4, 4, 4, 4, 4, 40, 4, 47, 47, 47 }, + { 47, 40, 40, 4, 4, 4, 112, 4, 40, 4, 40, 40, 4, 4, 4, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 40, 112, 4, 4, 4, 40, 40, 4, 4, 4, 47, 4, 4 }, + { 40, 47, 47, 4, 4, 4, 112, 4, 4, 40, 40, 40, 4, 40, 40, 40, 40, 40, 4, 40, 40, 40, 40, 40, 112, 40, 4, 112, 40, 4, 4, 4, 4, 40, 40, 4, 4, 47, 47, 47 }, + { 47, 47, 40, 40, 4, 4, 40, 40, 40, 40, 40, 4, 40, 4, 4, 4, 40, 40, 40, 40, 40, 40, 4, 4, 40, 4, 40, 112, 112, 4, 4, 4, 4, 4, 4, 40, 4, 47, 47, 47 }, + { 47, 47, 47, 47, 4, 40, 4, 4, 40, 40, 4, 40, 40, 40, 40, 40, 40, 112, 4, 40, 4, 40, 40, 40, 4, 40, 4, 4, 4, 4, 112, 4, 4, 4, 4, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 4, 4, 40, 40, 40, 40, 40, 40, 40, 40, 4, 40, 112, 4, 40, 4, 4, 4, 4, 4, 40, 40, 4, 4, 4, 4, 112, 47, 4, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 40, 40, 40, 4, 40, 40, 40, 40, 4, 4, 40, 4, 112, 112, 40, 4, 4, 40, 112, 4, 4, 40, 112, 4, 111, 4, 4, 4, 4, 40, 40, 47, 47, 47, 47 }, + { 47, 47, 47, 4, 4, 40, 47, 40, 40, 40, 40, 40, 112, 4, 4, 40, 112, 4, 112, 4, 4, 4, 40, 4, 112, 4, 111, 40, 4, 112, 112, 47, 4, 4, 47, 40, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 40, 40, 4, 40, 40, 4, 40, 4, 40, 4, 112, 112, 4, 4, 40, 40, 40, 4, 4, 112, 4, 40, 4, 4, 4, 4, 4, 4, 4, 4, 40, 40, 47, 47 }, + { 47, 47, 47, 47, 47, 40, 47, 40, 40, 4, 4, 4, 40, 40, 40, 40, 4, 112, 4, 4, 40, 40, 40, 40, 40, 112, 4, 111, 40, 4, 47, 4, 4, 4, 4, 47, 47, 4, 47, 47 }, + { 47, 47, 47, 47, 47, 40, 47, 47, 4, 4, 4, 40, 40, 4, 40, 40, 40, 4, 112, 112, 4, 4, 112, 112, 4, 4, 4, 111, 111, 4, 4, 47, 4, 4, 47, 4, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 40, 40, 40, 4, 40, 40, 40, 40, 4, 112, 112, 112, 40, 112, 112, 4, 112, 112, 112, 111, 47, 4, 4, 4, 4, 47, 4, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 40, 40, 40, 47, 40, 40, 47, 47, 40, 40, 4, 4, 40, 40, 40, 40, 112, 4, 112, 112, 112, 4, 4, 4, 47, 47, 47, 47, 47, 4, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 40, 47, 47, 47, 47, 4, 47, 47, 4, 40, 4, 47, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 4, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 40, 40, 4, 4, 4, 4, 4, 4, 40, 47, 47, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 4, 4, 4, 47, 47, 40, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 } } }, [4] = { /* puddle_5.png */ .tex = { - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 4, 40, 4, 4, 4, 4, 4, 40, 40, 4, 4, 4, 4, 40, 40, 40, 40, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 4, 4, 47, 47, 47, 47, 40, 40, 4, 4, 4, 40, 40, 4, 4, 4, 40, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 40, 40, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 4, 4, 47, 40, 47, 40, 4, 4, 4, 4, 4, 4, 40, 112, 112, 112, 40, 40, 4, 4, 4, 40, 4, 4, 4, 4, 4, 4, 40, 4, 47, 47, 4, 4, 4, 47, 47, 47 }, + { 47, 47, 47, 4, 4, 40, 4, 4, 40, 40, 40, 40, 4, 4, 40, 40, 40, 4, 4, 40, 4, 112, 4, 4, 40, 40, 4, 112, 40, 4, 4, 4, 4, 4, 4, 4, 47, 47, 47, 47 }, + { 47, 47, 40, 40, 4, 4, 4, 4, 40, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 112, 40, 4, 112, 4, 4, 4, 40, 40, 4, 4, 4, 4, 47, 47, 47, 47 }, + { 47, 47, 47, 4, 4, 40, 4, 40, 4, 4, 4, 40, 40, 40, 40, 4, 4, 40, 40, 40, 4, 4, 40, 40, 40, 40, 4, 4, 4, 4, 40, 4, 4, 40, 40, 4, 47, 47, 47, 47 }, + { 47, 47, 47, 4, 4, 40, 4, 40, 40, 112, 4, 40, 40, 40, 40, 40, 40, 4, 40, 4, 40, 40, 4, 4, 112, 4, 40, 4, 112, 40, 4, 40, 40, 4, 4, 4, 47, 47, 47, 47 }, + { 47, 47, 4, 4, 4, 112, 4, 40, 40, 4, 40, 112, 40, 40, 4, 40, 40, 40, 40, 40, 40, 40, 40, 4, 4, 4, 4, 40, 40, 4, 40, 40, 40, 4, 4, 4, 4, 4, 47, 40 }, + { 47, 47, 4, 4, 4, 40, 40, 40, 4, 4, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 112, 4, 4, 12, 12, 40, 4, 40, 40, 4, 40, 4, 4, 4, 47, 40, 47 }, + { 47, 4, 4, 4, 4, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 12, 4, 4, 112, 112, 112, 4, 4, 40, 4, 4, 40, 47, 47 }, + { 47, 4, 4, 4, 40, 40, 40, 40, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 12, 40, 4, 4, 40, 4, 40, 112, 40, 4, 4, 4, 47, 47, 47 }, + { 47, 4, 4, 40, 4, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 40, 40, 40, 40, 4, 40, 40, 40, 4, 40, 112, 4, 4, 4, 4, 40, 47 }, + { 47, 4, 4, 4, 4, 40, 4, 40, 40, 40, 40, 40, 40, 12, 12, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 40, 4, 4, 4, 40, 40, 4, 112, 40, 4, 4, 4, 47, 47 }, + { 4, 4, 4, 40, 40, 40, 112, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 12, 12, 12, 40, 40, 40, 40, 40, 40, 40, 4, 40, 4, 40, 4, 40, 112, 4, 4, 4, 4, 47 }, + { 4, 4, 40, 40, 40, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 12, 40, 40, 40, 40, 40, 40, 40, 40, 12, 12, 40, 40, 12, 4, 112, 4, 4, 4, 47 }, + { 4, 4, 40, 4, 40, 40, 40, 4, 40, 12, 12, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 12, 12, 4, 40, 12, 12, 4, 4, 4, 4, 4, 4, 47 }, + { 4, 4, 4, 40, 4, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 12, 40, 40, 40, 40, 40, 40, 40, 40, 40, 12, 40, 40, 4, 4, 40, 40, 40, 40, 40, 4, 4, 4, 47 }, + { 4, 4, 4, 40, 4, 40, 40, 40, 40, 40, 40, 12, 40, 40, 40, 40, 40, 12, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 112, 40, 4, 4, 40, 40, 4, 4, 4, 47 }, + { 4, 4, 40, 4, 40, 40, 40, 40, 40, 40, 12, 40, 40, 40, 40, 40, 40, 40, 12, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 112, 40, 40, 4, 4, 4, 4, 4, 4, 47 }, + { 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 4, 40, 40, 40, 40, 4, 4, 4, 4, 4, 47 }, + { 4, 4, 40, 4, 40, 4, 40, 40, 40, 40, 40, 12, 40, 40, 12, 40, 40, 40, 40, 40, 40, 40, 4, 40, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 4, 4, 4 }, + { 4, 4, 40, 40, 40, 4, 40, 40, 40, 40, 40, 12, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 4, 40, 4, 4, 4, 47 }, + { 4, 4, 40, 40, 40, 40, 112, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 12, 12, 12, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 4, 4, 40, 40, 4, 4, 40, 4, 4, 4 }, + { 4, 4, 4, 4, 40, 40, 112, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 112, 40, 40, 4, 4, 4, 40, 40, 40, 40, 4, 4, 47 }, + { 4, 4, 4, 40, 4, 40, 40, 40, 40, 40, 40, 4, 40, 40, 4, 4, 40, 40, 40, 40, 40, 40, 4, 4, 40, 4, 40, 112, 112, 40, 40, 4, 40, 40, 40, 4, 4, 4, 4, 47 }, + { 47, 4, 4, 4, 4, 40, 4, 40, 40, 40, 4, 40, 40, 40, 12, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 40, 4, 4, 112, 40, 40, 4, 4, 40, 4, 4, 4, 47 }, + { 47, 4, 4, 4, 40, 40, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 40, 4, 40, 40, 40, 40, 40, 4, 4, 4, 4, 40, 4, 4, 4, 4, 4, 47 }, + { 47, 47, 4, 4, 40, 4, 40, 40, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 112, 4, 40, 40, 4, 4, 40, 4, 4, 4, 4, 4, 47 }, + { 47, 47, 4, 4, 4, 4, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 4, 40, 40, 112, 40, 40, 40, 4, 4, 40, 40, 40, 40, 40, 40, 40, 4, 4, 47 }, + { 47, 47, 47, 4, 4, 4, 4, 40, 4, 40, 40, 40, 40, 40, 40, 4, 40, 40, 40, 4, 40, 40, 40, 40, 40, 40, 40, 40, 40, 4, 4, 40, 4, 4, 4, 4, 40, 4, 47, 47 }, + { 47, 47, 47, 4, 4, 4, 4, 4, 40, 4, 4, 4, 40, 40, 40, 40, 40, 40, 40, 4, 40, 40, 40, 40, 40, 112, 40, 40, 40, 40, 40, 40, 4, 4, 4, 4, 4, 4, 47, 47 }, + { 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 40, 40, 4, 40, 40, 40, 40, 40, 40, 4, 4, 112, 40, 4, 4, 4, 111, 40, 40, 40, 40, 40, 4, 4, 4, 4, 4, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 4, 4, 4, 40, 4, 4, 4, 4, 40, 40, 40, 4, 40, 112, 112, 40, 40, 40, 40, 112, 40, 40, 111, 4, 40, 40, 40, 40, 4, 4, 4, 4, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 40, 4, 4, 4, 4, 40, 40, 4, 4, 40, 40, 4, 40, 40, 40, 40, 40, 40, 40, 112, 112, 112, 40, 4, 40, 4, 40, 40, 4, 4, 4, 4, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 40, 4, 4, 4, 4, 4, 4, 4, 4, 4, 40, 4, 40, 4, 4, 4, 4, 40, 4, 4, 4, 4, 4, 4, 40, 4, 4, 4, 4, 47, 47, 47, 4, 47 }, + { 47, 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 40, 40, 40, 40, 40, 40, 4, 40, 4, 4, 4, 40, 40, 4, 40, 4, 4, 4, 47, 4, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 4, 4, 47, 47, 4, 4, 4, 4, 4, 4, 40, 40, 4, 4, 4, 4, 4, 40, 4, 4, 4, 40, 4, 4, 4, 4, 4, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 4, 47, 47, 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47 }, + { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 } } }, },