aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUnavailableDev <69792062+UnavailableDev@users.noreply.github.com>2023-03-22 10:42:34 +0100
committerGitHub <noreply@github.com>2023-03-22 10:42:34 +0100
commit7f51cd925883bbf958baa289d4d19231667c9eba (patch)
tree21800c4233b3be015cb9aa1f1448b2ab4db4c832
parente43428eef0d96839cd9a5b2d25e31c90555cfb6c (diff)
parent49112a1999c008fb6fa6c9c368eb2be0d92d15dc (diff)
Merge pull request #44 from UnavailableDev/game-engine
Game engine
-rw-r--r--src/GameLoop/shop.c30
-rw-r--r--src/GameLoop/shop.h16
-rw-r--r--src/GameLoop/startingScreen.c32
-rw-r--r--src/GameLoop/startingScreen.h14
-rw-r--r--src/demo.c153
-rw-r--r--src/engine/bullet.c44
-rw-r--r--src/engine/bullet.h16
-rw-r--r--src/engine/draw_screen.c35
-rw-r--r--src/engine/draw_screen.h5
-rw-r--r--src/engine/entity.c81
-rw-r--r--src/engine/entity.h25
-rw-r--r--src/engine/player_controller.c182
-rw-r--r--src/engine/sprite_controller.c4
-rw-r--r--src/engine/sprite_controller.h32
-rw-r--r--src/engine/title_screen.c93
-rw-r--r--src/engine/title_screen.h3
-rw-r--r--src/makefile6
-rw-r--r--src/ppusim/input.c1
-rw-r--r--src/ppusim/sim.c3
-rw-r--r--src/static/background/shop.hex331
-rw-r--r--src/static/background/shop_ext.hex459
-rw-r--r--src/static/background/title_screen_icon.hex102
-rw-r--r--src/static/foreground/title_screen_letteres_large.hex (renamed from src/static/title_screen_letteres_large.hex)0
-rw-r--r--src/static/title_screen_icon.hex119
24 files changed, 1514 insertions, 272 deletions
diff --git a/src/GameLoop/shop.c b/src/GameLoop/shop.c
new file mode 100644
index 0000000..eb6bed5
--- /dev/null
+++ b/src/GameLoop/shop.c
@@ -0,0 +1,30 @@
+#include "shop.h"
+
+
+bool hh_show_Shop(){
+ static hh_e_ShopStates hh_e_Shop = hh_e_STATE_SHOW;
+
+ switch (hh_e_Shop)
+ {
+ case hh_e_STATE_SHOW:
+ //hh_clear_screen();
+
+ //hh_setup_shop();
+ hh_e_Shop = hh_e_STATE_Input;
+ return false;
+ break;
+ case hh_e_STATE_Input:
+ if(g_hh_controller_p1.button_primary){
+ hh_e_Shop = hh_e_STATE_END;
+ }
+ break;
+ case hh_e_STATE_END:
+ hh_e_Shop = hh_e_STATE_SHOW;
+ return true;
+ break;
+ default:
+ hh_e_Shop = hh_e_STATE_SHOW;
+ break;
+ }
+ return false;
+}
diff --git a/src/GameLoop/shop.h b/src/GameLoop/shop.h
new file mode 100644
index 0000000..4014f58
--- /dev/null
+++ b/src/GameLoop/shop.h
@@ -0,0 +1,16 @@
+#include "input.h"
+#include "engine/draw_screen.h"
+
+
+
+#include <stdint.h>
+#include <stdbool.h>
+
+typedef enum {
+ hh_e_STATE_SHOW,
+ hh_e_STATE_Input,
+ hh_e_STATE_END
+} hh_e_ShopStates;
+
+
+bool hh_show_Shop();
diff --git a/src/GameLoop/startingScreen.c b/src/GameLoop/startingScreen.c
new file mode 100644
index 0000000..4fc5af9
--- /dev/null
+++ b/src/GameLoop/startingScreen.c
@@ -0,0 +1,32 @@
+#include "startingScreen.h"
+#include "input.h"
+#include "engine/title_screen.h"
+#include "engine/draw_screen.h"
+// #include "engine/player_controller.h"
+
+bool hh_show_startingScreen(){
+ static hh_e_screenStates hh_e_startingScreen = hh_e_STATE_SHOW;
+
+ switch (hh_e_startingScreen)
+ {
+ case hh_e_STATE_SHOW:
+ hh_clear_screen();
+ hh_init_title_screen();
+ hh_e_startingScreen = hh_e_STATE_Input;
+ return false;
+ break;
+ case hh_e_STATE_Input:
+ if(g_hh_controller_p1.button_primary){
+ hh_e_startingScreen = hh_e_STATE_END;
+ }
+ break;
+ case hh_e_STATE_END:
+ hh_e_startingScreen = hh_e_STATE_SHOW;
+ return true;
+ break;
+ default:
+ hh_e_startingScreen = hh_e_STATE_SHOW;
+ break;
+ }
+ return false;
+}
diff --git a/src/GameLoop/startingScreen.h b/src/GameLoop/startingScreen.h
new file mode 100644
index 0000000..f51cc66
--- /dev/null
+++ b/src/GameLoop/startingScreen.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include <stdint.h>
+#include <stdbool.h>
+
+typedef enum {
+ hh_e_STATE_SHOW,
+ hh_e_STATE_Input,
+ hh_e_STATE_END
+} hh_e_screenStates;
+
+
+bool hh_show_startingScreen();
+
diff --git a/src/demo.c b/src/demo.c
index 95347cb..22ee8b7 100644
--- a/src/demo.c
+++ b/src/demo.c
@@ -11,22 +11,21 @@
#include "engine/draw_screen.h"
#include "engine/player_controller.h"
#include "engine/sprite_controller.h"
+#include "GameLoop/startingScreen.h"
+typedef enum {
+ hh_e_STATE_startingScreen,
+ hh_e_STATE_Shop,
+ hh_e_STATE_Gameplay,
+ hh_e_STATE_GameOver,
+ hh_e_STATE_HighScore
+} hh_e_GameState;
+hh_e_GameState hh_gameStates;
-hh_s_entity_player g_hh_player_1 = {
- .pos_x = 31000, // 0b0000 0001 0011 0110
- .pos_y = 21000,
- .radius = 8,
- .speed = 100,
- .direction_x = 1,
- .rotation = 8,
- .in_air = false,
-};
-void hh_player_movement();
-uint16_t g_hh_pos_x; // 0b0000 0001 0011 0110
+uint16_t g_hh_pos_x = 1000; // 0b0000 0001 0011 0110
uint16_t g_hh_pos_y;
uint8_t g_hh_left = 0;
uint8_t g_hh_right = 0;
@@ -35,7 +34,7 @@ uint8_t g_hh_down = 0;
uint8_t g_hh_pos_x_bit[2];
uint8_t g_hh_pos_y_bit[2];
uint8_t g_hh_data_send[3];
-int g_hh_tile_x;
+int g_hh_tile_size = 8;
int g_hh_tile_y;
typedef struct {
@@ -48,16 +47,54 @@ hh_entity hh_g_player, hh_g_player_new;
void hh_demo_setup() {
hh_setup_palettes();
- hh_setup_screen();
+ // hh_setup_screen();
+
}
void hh_demo_loop(unsigned long frame) {
- // hh_player_movement();
-
- hh_player_actions();
-
+
+ switch (hh_gameStates)
+ {
+ case hh_e_STATE_startingScreen:
+ bool ret = hh_show_startingScreen();
+ if(ret){
+ hh_gameStates = hh_e_STATE_Shop;
+ }
+ break;
+ case hh_e_STATE_Shop:
+ // TODO:
+ // if(hh_show_Shop()){
+ hh_clear_screen();
+ hh_clear_sprite();
+ hh_setup_screen();
+ hh_clear_sprite();
+ hh_gameStates = hh_e_STATE_Gameplay;
+ // }
+ // function: new level is chosen goto level
+ break;
+ case hh_e_STATE_Gameplay:
+ hh_player_actions();
+
+ // TODO:
+ // function: if level complete goto shop
+ // function: if player is dead goto game over
+ break;
+ case hh_e_STATE_GameOver:
+ // TODO:
+ // function: show game over screen
+ // function: after time goto high score
+ break;
+ case hh_e_STATE_HighScore:
+ // TODO:
+ // fucntion: show all previously scored points
+ // function: button pressed goto starting screen
+ break;
+ default:
+ hh_gameStates = hh_e_STATE_startingScreen;
+ break;
+ }
}
// void sendData(uint8_t address, uint16_t data) {
@@ -71,84 +108,8 @@ void hh_demo_loop(unsigned long frame) {
// HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET);
// }
-void hh_player_movement() {
- int8_t directionX = (-1 * g_hh_controller_p1.dpad_left) + (1 * g_hh_controller_p1.dpad_right); // -1 = L || 1 == R
- int8_t directionY = (-1 * g_hh_controller_p1.dpad_up) + (1 * g_hh_controller_p1.dpad_down); // -1 = D || 1 == U
-
- uint8_t i, j;
- uint8_t rotation = 0; // 0-7
-
- // rotation calc
- for (i = -1; i < 2; i++) {
- for (j = -1; j < 2; j++) {
- if (directionX == i) {
- if (directionY == j) {
- if (i != 0 && j != 0) // dont update when player idle
- {
- g_hh_player_1.rotation = rotation;
- }
- }
- }
- rotation++;
- }
- }
- // direction calc
- if (directionX != 0) // update direction if player is not idle
- {
- g_hh_player_1.direction_x = directionX;
- }
- // collision map x-axis
-
- // tile calc including radius and direction for background coliision
-
- uint16_t tileColX;
- uint16_t tileColY = (g_hh_player_1.pos_y / 100) / 16;
- ;
-
- // remaining space between grid and exact
- uint8_t modTileX;
- uint8_t modTileY;
-
- if (g_hh_player_1.in_air == false && directionX != 0) {
- if (directionX == 1) {
- tileColX = ((g_hh_player_1.pos_x / 100) + g_hh_player_1.radius) / 16;
- modTileX = (g_hh_player_1.pos_x + (100 * g_hh_player_1.radius)) % 1600;
- } else if (directionX == -1) {
- tileColX = ((g_hh_player_1.pos_x / 100) - g_hh_player_1.radius) / 16;
- modTileX = (g_hh_player_1.pos_x - (100 * g_hh_player_1.radius)) % 1600;
- }
-
- if (HH_DEMO_HITBOX_TILEMAP[tileColY][tileColX + directionX] != 1) {
- g_hh_player_1.pos_x = g_hh_player_1.pos_x + (directionX * g_hh_player_1.speed); // NEW x set
- }
-
- else if (HH_DEMO_HITBOX_TILEMAP[tileColY][tileColX + directionX] == 1) {
- if (modTileX < g_hh_player_1.speed) {
- g_hh_player_1.pos_x = g_hh_player_1.pos_x + (directionX * modTileX); // NEW x set
- } else {
- g_hh_player_1.pos_x = g_hh_player_1.pos_x + (directionX * g_hh_player_1.speed); // NEW x set
- }
- }
-
- } else // if in air different all borders have to be checked
- {
- }
- if(directionY != 0)
- {
- // g_hh_player_1.pos_y = g_hh_player_1.pos_y + (directionY * g_hh_player_1.speed * 2); // NEW x set
- }
- // collision map floor (y-axis) (falling)
- // if falling no jump press (implement)
- /*
- tileColY = (( g_hh_player_1.pos_y / 100) + g_hh_player_1.radius) / 16; //bottom of player box
- modTileY = 1;
- if(HH_DEMO_HITBOX_TILEMAP[tileColY+1][tileColX] != 1) //rework after jumping
- {
- g_hh_player_1.pos_y = g_hh_player_1.pos_y + 5 ;// NEW y set //makew var gravity
- //playerStat = falling; //for later use of graphics/sound
- }
- */
- // else if(HH_DEMO_HITBOX_TILEMAP[])
-}
+
+
+
diff --git a/src/engine/bullet.c b/src/engine/bullet.c
new file mode 100644
index 0000000..5aa9e51
--- /dev/null
+++ b/src/engine/bullet.c
@@ -0,0 +1,44 @@
+#include "bullet.h"
+#include "engine/sprite_controller.h"
+
+
+void shootBullet(vec2 playerPos, Bullet* bullet){
+ // Set bullet's x and y coordinates to player's coordinates
+ bullet->x = playerPos.x;
+ bullet->y = playerPos.y;
+ // Set bullet's velocity to a fixed value
+ bullet->velocity = 1;
+ // Set bullet's status to active
+ bullet->isActive = true;
+}
+void updateBullet(Bullet* bullet, int deltaTime){
+ // Only update bullet if it is active
+ static int latestLocationBullet = 0;
+ if (bullet->isActive) {
+ // Move bullet based on velocity and deltaTime
+ bullet->x += bullet->velocity * deltaTime;
+ drawBullet(bullet);
+ // Check if bullet has moved 16 pixels
+ if (bullet->x - latestLocationBullet > 32) {
+ // Set bullet's status to inactive
+ bullet->isActive = false;
+ drawBullet(&(Bullet){.x = -16,.y = -16. });
+ }
+ }
+ else{
+ latestLocationBullet = bullet->x;
+ }
+}
+void drawBullet(Bullet* bullet){
+
+
+ hh_ppu_update_foreground(10, (hh_s_ppu_loc_fam_entry)
+ {
+ .position_x = bullet->x,
+ .position_y = bullet->y,
+ .horizontal_flip = false,
+ .vertical_flip = false,
+ .palette_index = 7,
+ .tilemap_index = 84, // change tilemap to the correct foreground index;
+ });
+}
diff --git a/src/engine/bullet.h b/src/engine/bullet.h
new file mode 100644
index 0000000..ad67d84
--- /dev/null
+++ b/src/engine/bullet.h
@@ -0,0 +1,16 @@
+#pragma once
+#include "player_controller.h"
+
+typedef struct {
+ int x;
+ int y;
+ int velocity;
+ int isActive;
+ int hit;
+} Bullet;
+
+
+//Bullet* createBullet(float x, float y, float velocity, float direction);
+void shootBullet(vec2 playerPos, Bullet* bullet);
+void updateBullet(Bullet* bullet, int deltaTime);
+void drawBullet(Bullet* bullet);
diff --git a/src/engine/draw_screen.c b/src/engine/draw_screen.c
index c4f3389..0c31bf6 100644
--- a/src/engine/draw_screen.c
+++ b/src/engine/draw_screen.c
@@ -2,8 +2,8 @@
#include "engine/sprite_controller.h"
uint8_t hh_world_to_tile(vec2 pos){
-
- FILE* level = fopen("../test/bin/level1_test.bin", "rb"); /* open binary file */
+ //TODO: remove magic file name here
+ FILE* level = fopen("static/level1_test.bin", "rb"); /* open binary file */
if (!level) { /* check if file opened successfully */
fprintf(stderr, "Error: Failed to open file.\n");
return 0;
@@ -39,9 +39,10 @@ void hh_draw_screen(vec_cor viewport){
void hh_setup_screen(){
//(HH_map_size_X*HH_map_size_Y)
int size = 2400; // max X = 40 en max Y = 80
- FILE* level = fopen("../test/bin/level1_test.bin", "rb"); /* open binary file */
+ //TODO: remove magic file name here
+ FILE* level = fopen("static/level1_test.bin", "rb"); /* open binary file */
if (!level) { /* check if file opened successfully */
- fprintf(stderr, "Error: Failed to open file.\n");
+ fprintf(stderr, "Error: Failed to open level file.\n");
return;
}
fseek(level, (0* sizeof(int)) + sizeof(int), SEEK_SET);
@@ -60,3 +61,29 @@ void hh_setup_screen(){
}
free(tile);
}
+void hh_clear_screen(){
+ // (HH_PPU_SCREEN_HEIGHT*HH_PPU_SCREEN_WIDTH)/(HH_PPU_SPRITE_HEIGHT*HH_PPU_SPRITE_WIDTH)
+ for (int i = 0; i < HH_PPU_BG_CANVAS_TILES_H*HH_PPU_BG_CANVAS_TILES_V; i++) {
+ hh_s_ppu_loc_bam_entry temp = {
+ .vertical_flip=false,.horizontal_flip = false,
+ .palette_index = 3,.tilemap_index = 0
+ };
+ hh_ppu_update_background(i,temp);
+ hh_ppu_update_color(3,0,(hh_ppu_rgb_color_t){0x0,0x0,0x0});
+ }
+ hh_ppu_update_aux((hh_s_ppu_loc_aux){
+ .bg_shift_x = 0,
+ .bg_shift_y = 0,
+ .fg_fetch = 0,
+ .sysreset = 0,
+ });
+}
+
+void hh_clear_sprite(){
+ for (int i = 0; i < HH_PPU_FG_SPRITE_COUNT; i++) {
+ hh_ppu_update_foreground(i,(hh_s_ppu_loc_fam_entry){
+ .position_x = -16,
+ .position_y = -16,
+ });
+ }
+}
diff --git a/src/engine/draw_screen.h b/src/engine/draw_screen.h
index b181108..95765e5 100644
--- a/src/engine/draw_screen.h
+++ b/src/engine/draw_screen.h
@@ -3,6 +3,7 @@
// every function call for drawing the screen goes here.
#include "engine/maths.h"
+#include "ppu/consts.h"
#include "ppu/ppu.h"
#include <stdio.h>
@@ -19,3 +20,7 @@ uint8_t hh_world_to_tile(vec2 pos);
void hh_draw_screen(vec2 viewport);
/** @brief send data to BAM memory from binary level */
void hh_setup_screen();
+/** @brief send black screen to background memory */
+void hh_clear_screen();
+/** @brief clears all sprite data */
+void hh_clear_sprite();
diff --git a/src/engine/entity.c b/src/engine/entity.c
index 153e7e1..535759d 100644
--- a/src/engine/entity.c
+++ b/src/engine/entity.c
@@ -43,4 +43,85 @@ void hh_solve_collision(vec2 pos_environment, hh_entity* entity){
// entity->vel.x = 0;
// }
}
+hh_entity hh_background_collision (hh_entity temp_old_entity,hh_entity temp_new_entity){
+ temp_old_entity.is_grounded = false;
+
+// solves x collision
+ if (temp_old_entity.vel.x <= 0) {
+ if (hh_colidable(hh_world_to_tile((vec2){.x=temp_new_entity.pos.x + 0, .y=temp_old_entity.pos.y + 0})) ||
+ hh_colidable(hh_world_to_tile((vec2){.x=temp_new_entity.pos.x + 0, .y=temp_old_entity.pos.y + 15}))) {
+ temp_new_entity.pos.x = (temp_new_entity.pos.x & ~15) + 16,
+ temp_new_entity.vel.x = 0;
+ }
+ } else {
+ if (hh_colidable(hh_world_to_tile((vec2){.x=temp_new_entity.pos.x + 16, .y=temp_old_entity.pos.y + 0})) ||
+ hh_colidable(hh_world_to_tile((vec2){.x=temp_new_entity.pos.x + 16, .y=temp_old_entity.pos.y + 15}))) {
+ temp_new_entity.pos.x = temp_new_entity.pos.x & ~15, // <-- magic comma, NOT TOUCHY
+ temp_new_entity.vel.x = 0;
+ }
+ }
+
+ //solves y collision
+ if (temp_old_entity.vel.y <= 0) {
+ if (hh_colidable(hh_world_to_tile((vec2){.x=temp_new_entity.pos.x + 0, .y=temp_new_entity.pos.y + 0})) ||
+ hh_colidable(hh_world_to_tile((vec2){.x=temp_new_entity.pos.x + 15, .y=temp_new_entity.pos.y + 0}))) {
+ temp_new_entity.pos.y = (temp_new_entity.pos.y & ~15) + 16,
+ temp_new_entity.vel.y = 0;
+ }
+ } else {
+ if (hh_colidable(hh_world_to_tile((vec2){.x=temp_new_entity.pos.x + 0, .y=temp_new_entity.pos.y + 15})) ||
+ hh_colidable(hh_world_to_tile((vec2){.x=temp_new_entity.pos.x + 15, .y=temp_new_entity.pos.y + 15}))) {
+ temp_new_entity.pos.y = temp_new_entity.pos.y & ~15,
+ temp_new_entity.vel.y = 0;
+ temp_old_entity.is_grounded = true;
+ }
+ }
+ temp_old_entity.pos = temp_new_entity.pos;
+ temp_old_entity.vel = temp_new_entity.vel;
+ return temp_old_entity;
+}
+
+hh_entity hh_enemy_collision(hh_entity temp_player, hh_entity temp_enemy){
+
+ bool collide = hh_distance_circles( temp_player.pos, temp_enemy.pos, temp_player.radius, temp_enemy.radius);
+
+ if (collide == true && temp_player.is_hit == false)
+ {
+ temp_player.is_hit = true;
+ //angle = atan2( tempEntity.pos_y - tempPlayer.pos_y, tempEntity.pos_x - tempPlayer.pos_x);
+ if(temp_player.pos.x <= temp_enemy.pos.x) //player left of enemy -- creates flinch movement L or R
+ {
+ // printf("BONK-left!/n");
+ temp_player.vel.y = -5;
+ temp_player.vel.x = -8;
+ } else {
+ // printf("BONK-right!/n");
+ temp_player.vel.y = -5;
+ temp_player.vel.x = 8;
+ }
+ // ghost mode / invulnerable or other things on hit
+ // temp_player.hp--;
+
+ } else {
+ temp_player.is_hit = false;
+
+ }
+
+
+return temp_player;
+}
+
+
+bool hh_distance_circles (vec2 object_1, vec2 object_2, int radius_1, int radius_2){
+ int a_squared = (object_1.x - object_2.x) * (object_1.x - object_2.x);
+ int b_squared = (object_1.y - object_2.y) * (object_1.y - object_2.y);
+ int c_squared = a_squared + b_squared;
+ int radius = ( radius_1 + radius_2) * ( radius_1 + radius_2 );
+
+ if( c_squared <= radius ){
+ return true;
+ } else {
+ return false;
+ }
+}
diff --git a/src/engine/entity.h b/src/engine/entity.h
index f45dae2..cad6ba4 100644
--- a/src/engine/entity.h
+++ b/src/engine/entity.h
@@ -2,6 +2,7 @@
#include <stdint.h>
#include <stdbool.h>
+#include <stdio.h>
#include "ppu/types.h"
@@ -32,6 +33,8 @@ typedef struct {
typedef struct {
vec2 pos, vel, vec;
bool is_grounded;
+ bool is_hit;
+ uint8_t radius;
int8_t hp;
int8_t speed;
hh_s_rendering render;
@@ -55,3 +58,25 @@ bool hh_collision(vec2 pos1, vec2 pos2);
/// @param entity position
/// @return solved new entity position
void hh_solve_collision(vec2 pos_environment, hh_entity* entity);
+
+/// @brief solve collision of entity with background tiles
+/// @param temp_old_entity old data of entity
+/// @param temp_new_entity new data of entity where it wants to go to
+/// @return updated new entity where it actually can go to
+hh_entity hh_background_collision (hh_entity temp_old_entity, hh_entity temp_new_entity);
+
+/// @brief solve collision of player with enemy
+/// @param temp_player data of player
+/// @param temp_enemy data of enemy
+/// @return updated player with new stats if hitted with enemy
+hh_entity hh_enemy_collision(hh_entity temp_player, hh_entity temp_enemy);
+
+/// @brief calculate if circles (entity) hit each other
+/// @param object_1 position of first object (entity)
+/// @param object_2 position of second object (entity)
+/// @param radius_1 radius of first object (entity)
+/// @param radius_2 radius of second object (entity)
+/// @return true if objects collids
+bool hh_distance_circles (vec2 object_1, vec2 object_2, int radius_1, int radius_2);
+
+
diff --git a/src/engine/player_controller.c b/src/engine/player_controller.c
index 22f6eb6..647b00c 100644
--- a/src/engine/player_controller.c
+++ b/src/engine/player_controller.c
@@ -6,29 +6,143 @@
#include "input.h"
+#include "engine/bullet.h"
void hh_player_actions() {
+ static Bullet bullet ={
+ .isActive=false,
+ };
static hh_entity player={
.hp = 4,
.speed = 6,
.is_grounded = false,
+ .is_hit = false,
+ .radius = 8,
.pos = (vec2){32,32},
.vel = (vec2){0,0},
.vec = (vec2){0,0},
.render = {
+ .frame0 = 80,
+ .palette = 3,
+ .fam = (hh_s_ppu_loc_fam_entry){
+ .horizontal_flip = false,
+ .vertical_flip = false,
+ .palette_index = 2,
+ .tilemap_index = 60,
+ }
+ }
+ }, player_new = {0};
+
+
+ static hh_entity enemy={
+ .hp = 4,
+ .speed = 6,
+ .is_grounded = false,
+ .is_hit = false,
+ .radius = 8,
+ .pos = (vec2){128,48},
+ .vel = (vec2){0,0},
+ .vec = (vec2){0,0},
+ .render = {
.frame0 = 20,
.palette = 7,
.fam = (hh_s_ppu_loc_fam_entry){
.horizontal_flip = false,
.vertical_flip = false,
.palette_index = 7,
- .tilemap_index = 2,
+ .tilemap_index = 1,
}
}
- }, player_new = {0};
-
+ };
+ player_new = player;
// hh_input_read();
+ static uint8_t hit = 0;
+ int8_t hit_timer = 0;
+ int8_t direction_x = (-1 * g_hh_controller_p1.dpad_left) + (1 * g_hh_controller_p1.dpad_right);
+ int8_t direction_y = (-1 * g_hh_controller_p1.dpad_up) + (1 * g_hh_controller_p1.dpad_down);
+
+ if(player.is_hit == true){
+ hit_timer = 9;
+ player.is_hit = false;
+ }
+ if(hit_timer > -10){
+ hit_timer--;
+ }
+
+ if(hit_timer <= 0){
+ if(direction_x != 0){
+ if(player.vel.x > -1 * player.speed && player.vel.x < player.speed) {
+ player.vel.x = player.vel.x + direction_x;
+ } else {
+ if (player.vel.x > 0) {
+ player.vel.x--;
+ } else if(player.vel.x < 0) {
+ player.vel.x++;
+ }
+ }
+ } else {
+ if (player.vel.x > 0) {
+ player.vel.x--;
+ } else if(player.vel.x < 0) {
+ player.vel.x++;
+ }
+ }
+
+ /* // movement Y (w-s) disable gravity to use this
+ if(direction_y != 0){
+ if(player.vel.y > -4 && player.vel.y < 4 ) {
+ player.vel.y = player.vel.y + direction_y;
+ }
+ } else {
+ if (player.vel.y > 0) {
+ player.vel.y--;
+ } else if(player.vel.y < 0) {
+ player.vel.y++;
+ }
+ }
+
+ */
+ } else {
+ if (player.vel.x > 0) {
+ player.vel.x--;
+ } else if(player.vel.x < 0) {
+ player.vel.x++;
+ }
+ player.vel.y++;
+ }
+
+
+ if (g_hh_controller_p1.button_primary && player.is_grounded == true) {//JUMP
+ player.vel.y = -10;
+ player.is_grounded = false;
+ } else if (player.vel.y < 6){
+ player.vel.y += 1; //gravity
+ }
+
+ if(g_hh_controller_p1.button_secondary==true){
+ shootBullet(player.pos,&bullet);
+ }
+ updateBullet(&bullet,5);
+
+
+
+/*
player.vel = (vec2){.x = (-1 * g_hh_controller_p1.dpad_left) + (1 * g_hh_controller_p1.dpad_right),
.y = (-1 * g_hh_controller_p1.dpad_up) + (1 * g_hh_controller_p1.dpad_down) };
+
+ player_new.vel = (vec2){
+ .x = player.vel.x,
+ .y = player.vel.y,
+ };
+*/
+
+ player_new.vel = (vec2){
+ .x = player.vel.x,
+ .y = player.vel.y,
+ };
+
+ player_new = hh_enemy_collision(player, enemy);
+
+
// const int8_t maa = 3;
// const int8_t mbb = -3;
// if (g_hh_controller_p1.dpad_up)
@@ -55,8 +169,8 @@ void hh_player_actions() {
// player.vel.x = CLAMP(player.vel.x,-32,32);
player_new.pos = (vec2){
- .x = player.pos.x + player.vel.x,
- .y = player.pos.y + player.vel.y,
+ .x = player.pos.x + player_new.vel.x,
+ .y = player.pos.y + player_new.vel.y,
};
@@ -97,40 +211,9 @@ void hh_player_actions() {
// }
// }
- player_new.is_grounded = false;
-
- // solves x collision
- if (player.vel.x <= 0) {
- if (hh_colidable(hh_world_to_tile((vec2){.x=player_new.pos.x + 0, .y=player.pos.y + 0})) ||
- hh_colidable(hh_world_to_tile((vec2){.x=player_new.pos.x + 0, .y=player.pos.y + 15}))) {
- player_new.pos.x = (player_new.pos.x & ~15) + 16,
- player_new.vel.x = 0;
- }
- } else {
- if (hh_colidable(hh_world_to_tile((vec2){.x=player_new.pos.x + 16, .y=player.pos.y + 0})) ||
- hh_colidable(hh_world_to_tile((vec2){.x=player_new.pos.x + 16, .y=player.pos.y + 15}))) {
- player_new.pos.x = player_new.pos.x & ~15, // <-- magic comma, NOT TOUCHY
- player_new.vel.x = 0;
- }
- }
-
- //solves y collision
- if (player.vel.y <= 0) {
- if (hh_colidable(hh_world_to_tile((vec2){.x=player_new.pos.x + 0, .y=player_new.pos.y + 0})) ||
- hh_colidable(hh_world_to_tile((vec2){.x=player_new.pos.x + 0, .y=player_new.pos.y + 15}))) {
- player_new.pos.y = (player_new.pos.y & ~15) + 16,
- player_new.vel.y = 0;
- }
- } else {
- if (hh_colidable(hh_world_to_tile((vec2){.x=player_new.pos.x + 0, .y=player_new.pos.y + 16})) ||
- hh_colidable(hh_world_to_tile((vec2){.x=player_new.pos.x + 16, .y=player_new.pos.y + 15}))) {
- player_new.pos.y = player_new.pos.y & ~15,
- player_new.vel.y = 0;
- player_new.is_grounded = true;
- }
- }
-
- player = player_new;
+ player = hh_background_collision ( player, player_new);
+
+ //player = player_new;
vec_cor cam_pos;//value in tiles
// cam_pos = (vec2){0,0};
@@ -141,10 +224,29 @@ void hh_player_actions() {
player.render.fam.position_x = (player.pos.x-cam_pos.x);
player.render.fam.position_y = (player.pos.y-cam_pos.y);
+ enemy.render.fam.position_x = (enemy.pos.x-cam_pos.x);
+ enemy.render.fam.position_y = (enemy.pos.y-cam_pos.y);
player.render.fam.tilemap_index = 2;//TODO: these two lines should be redundant
player.render.fam.palette_index = 7;
- hh_ppu_update_foreground(0, player.render.fam);
+ // hh_ppu_update_foreground(0, player.render.fam);
+
+ for (int i = 0; i < 4; i++)
+ {
+ hh_s_ppu_loc_fam_entry temp = player.render.fam;
+ temp.position_x = player.render.fam.position_x+(!(player.vel.x>0)?-1:1)*(i%2?8:-8);
+ temp.position_y = player.render.fam.position_y+(i>1?0:-16);
+ temp.tilemap_index = player.render.frame0 + i;
+ temp.palette_index = player.render.palette;
+ temp.horizontal_flip = !(player.vel.x>0);
+ hh_ppu_update_foreground(i,temp);
+ }
+
+
+
+ hh_ppu_update_foreground(4, enemy.render.fam);
}
+
+
diff --git a/src/engine/sprite_controller.c b/src/engine/sprite_controller.c
index 5d93cf8..b38b647 100644
--- a/src/engine/sprite_controller.c
+++ b/src/engine/sprite_controller.c
@@ -10,11 +10,13 @@ uint8_t hh_get_palette(uint8_t tile_idx) {
}
void hh_setup_palettes(){
+ //TODO: use simpler function
for (int idx = 0; idx < HH_PPU_PALETTE_COUNT; idx++) {
for (int col = 0; col < HH_PPU_PALETTE_COLOR_COUNT; col++) {
hh_ppu_update_color(idx,col,hh_g_palette[idx][col]);
}
- }
+ }
+ // hh_ppu_update_palette_table(hh_g_palette);
}
bool hh_colidable(uint8_t tile_idx){
diff --git a/src/engine/sprite_controller.h b/src/engine/sprite_controller.h
index fbb230c..fc6d3d3 100644
--- a/src/engine/sprite_controller.h
+++ b/src/engine/sprite_controller.h
@@ -11,15 +11,27 @@
//TODO: pack data inside of sprite_palette LUT
//HH_PPU_PALETTE_COUNT
-#define HH_SPRITE_COUNT 40
-#define HH_PAL_IDX_SKY 0
+#define HH_SPRITE_COUNT 80
+#define HH_PAL_IDX_SKY 512
#define HH_PAL_IDX_BRICK 1
const static uint8_t hh_g_sprite_palette[HH_SPRITE_COUNT] = {
+ //TODO: make a buffer of 16 no-collider sprites (instead of the current 1)
0,1,1,1,1,1,1,1,1,1, //1+9
1,1,1,1,1,1,1,1,1,1, //6+4
1,1,1,1,1,1,1,1,1, //9
- 7,7,7,2,7,7,1,2,7
+ 7,7,7,2,7,7,1,2,7,
+ 7,7,7,7, //??
+
+ 7,6,6,6,6,6,6,6, //baskets
+ 7,7,7,7,7,7,7,7,7,7, //shop
+ 7,7,7,7,7, //shop
+ 6,6,6,6,6, //(hi-)score
+
+ 3,3,3,3,3,3, //title_screen icon
+ 6,6,6,6,/*6,6,6,6,6,6, //title_screen large letters
+ 6,6,6,6,*/
//other palettes here:
+ // [HH_PAL_IDX_SKY] = 0,
};
@@ -51,13 +63,13 @@ const static hh_ppu_loc_palette_table_t hh_g_palette = {
{0x0,0x0,0x0},
{0x0,0x0,0x0},
{0x0,0x0,0x0}},
- {//player
+ {//player //TODO: use one less color && update player indexed sprites
{0x0,0x0,0x0},
{0x1,0x1,0x1},
{0x4,0x2,0x5},
- {0x7,0x3,0x6},
- {0x1,0x1,0x3},
- {0xe,0xe,0xe},
+ {0x7,0x3,0x7},
+ {0xe,0xe,0xe},
+ {0xe,0xe,0xe}, //elemental
{0x0,0x0,0x0},
{0x0,0x0,0x0}},
{
@@ -69,7 +81,7 @@ const static hh_ppu_loc_palette_table_t hh_g_palette = {
{0x0,0x0,0x0},
{0x0,0x0,0x0},
{0x0,0x0,0x0}},
- {
+ {//elemental
{0x0,0x0,0x0},
{0x0,0x0,0x0},
{0x0,0x0,0x0},
@@ -79,7 +91,7 @@ const static hh_ppu_loc_palette_table_t hh_g_palette = {
{0x0,0x0,0x0},
{0x0,0x0,0x0}},
{//white
- {0xf,0xf,0xf},
+ {0x1,0x2,0x3},
{0xf,0xf,0xf},
{0xf,0xf,0xf},
{0xf,0xf,0xf},
@@ -87,7 +99,7 @@ const static hh_ppu_loc_palette_table_t hh_g_palette = {
{0xf,0xf,0xf},
{0xf,0xf,0xf},
{0xf,0xf,0xf}},
- {
+ {//Dev palette (7)
{0x0,0xf,0xf},
{0xf,0xf,0xf},
{0xf,0x0,0xf},
diff --git a/src/engine/title_screen.c b/src/engine/title_screen.c
new file mode 100644
index 0000000..9c7ed48
--- /dev/null
+++ b/src/engine/title_screen.c
@@ -0,0 +1,93 @@
+#include "ppu/ppu.h"
+#include "ppu/types.h"
+#include "ppu/consts.h"
+
+
+#include "engine/draw_screen.h"
+#include "engine/entity.h"
+
+void hh_init_title_screen(){
+
+ // hh_clear_screen();
+
+ //send data
+ uint8_t idx = 0;
+ const uint8_t tilemap_offset = 59;
+ int tiles_h = HH_PPU_BG_CANVAS_TILES_H;
+ int vp_h = HH_PPU_SCREEN_WIDTH/HH_PPU_SPRITE_WIDTH; //screen_h in tiles
+ int vert_offset = tiles_h*3;
+
+ const uint8_t arr[4][4] = {
+ {0,1,1,0},
+ {2,3,3,2},
+ {4,0,0,4},
+ {5,6,6,5},
+ };
+ int val, counter =0;
+ hh_ppu_update_color(5, 0, (hh_ppu_rgb_color_t) {0x1, 0x1, 0x1});
+ for (int i = 0; i < 4; i++) {
+ for (int j = 0; j < 4; j++) {
+ val = arr[i][j];
+
+ hh_s_ppu_loc_bam_entry temp = {
+ .vertical_flip=false, .horizontal_flip = ((j % 4 < 2) ? false : true),
+ .palette_index = (counter == 9 || counter == 10? 5:3), .tilemap_index = (val > 0 ? (tilemap_offset + val) : 0)
+ };
+
+ int vert_pos = tiles_h*i;
+ int x_pos = j;
+ idx = vert_offset + vert_pos + x_pos + vp_h/2-2;
+
+ hh_ppu_update_background(idx,temp);
+ counter++;
+ }
+
+ }
+
+
+ const uint8_t letters_offset = 66;
+ const int _size_hooded = 7, _size_v = 2;
+
+ // char* hh = "hooded";
+ int hooded_lookup[7][2]={
+ {0,1},{0,2},//H
+ {3,4},{3,4},//oo
+ {5,6},{13,9},//de
+ {5,6}//d
+ };
+
+ counter = 8;
+ for (int i = 0; i < _size_hooded; i++) {
+ for (int vert = 1; vert <= _size_v; vert++) {
+ //TODO: move 'H' a few pixels to the right for a more cohesive font spacing
+ hh_ppu_update_foreground(counter++, (hh_s_ppu_loc_fam_entry) {
+ .vertical_flip = false, .horizontal_flip = false,
+ .palette_index = 6, .tilemap_index = letters_offset + hooded_lookup[i][vert-1],
+ .position_x = (16*i + 64+48), .position_y = (16*(vert > 1 ? 0:1)*-1 + 64+8+16 +(i==2 || i==3 ? 6:0))
+ });
+ }
+ }
+
+
+ hh_ppu_update_color(5, 1, (hh_ppu_rgb_color_t) {0xa, 0x3, 0x3});
+ hh_ppu_update_color(5, 2, (hh_ppu_rgb_color_t) {0xc, 0x5, 0x3});
+
+ const int _size_havoc = 6;
+ int lookup_havoc[6][2]={
+ {0,1},{0,2},//H
+ {13,10},{7,8},//av
+ {13,11},{13,12}//oc
+ };
+
+ counter = 8 + (_size_hooded * _size_v);
+ for (int i = 0; i < _size_havoc; i++) {
+ for (int vert = 1; vert <= _size_v; vert++) {
+ //TODO: move 'H' a few pixels to the right for a more cohesive font spacing
+ hh_ppu_update_foreground(counter++, (hh_s_ppu_loc_fam_entry) {
+ .vertical_flip = false, .horizontal_flip = (i > 4 && vert==0 ? 1:0),
+ .palette_index = 5, .tilemap_index = letters_offset + lookup_havoc[i][vert-1],
+ .position_x = (16*i +64+32+8), .position_y = (16*(vert > 1 ? 0:1)*-1 + 64+8+48)
+ });
+ }
+ }
+}
diff --git a/src/engine/title_screen.h b/src/engine/title_screen.h
new file mode 100644
index 0000000..b5eda63
--- /dev/null
+++ b/src/engine/title_screen.h
@@ -0,0 +1,3 @@
+#pragma once
+
+void hh_init_title_screen();
diff --git a/src/makefile b/src/makefile
index d7d9087..cd248e2 100644
--- a/src/makefile
+++ b/src/makefile
@@ -37,7 +37,11 @@ LOCAL_SRCS += main.c \
engine/draw_screen.c \
engine/camera.c \
engine/maths.c \
- engine/entity.c
+ engine/entity.c \
+ engine/bullet.c \
+ engine/title_screen.c \
+ GameLoop/shop.c \
+ GameLoop/startingScreen.c
CFLAGS += $(SHARED_FLAGS)
LFLAGS += $(SHARED_FLAGS)
diff --git a/src/ppusim/input.c b/src/ppusim/input.c
index 5323fb1..4bc7018 100644
--- a/src/ppusim/input.c
+++ b/src/ppusim/input.c
@@ -13,4 +13,5 @@ void hh_input_read() {
g_hh_controller_p1.dpad_left = kb[SDL_SCANCODE_A];
g_hh_controller_p1.dpad_right = kb[SDL_SCANCODE_D];
g_hh_controller_p1.button_primary = kb[SDL_SCANCODE_SPACE];
+ g_hh_controller_p1.button_secondary = kb[SDL_SCANCODE_R];
}
diff --git a/src/ppusim/sim.c b/src/ppusim/sim.c
index a5fec45..8b67acc 100644
--- a/src/ppusim/sim.c
+++ b/src/ppusim/sim.c
@@ -29,7 +29,8 @@ void hh_ppu_init() {
}
void hh_ppu_load_tilemap() {
- char* filename = "../test/bin/tiles.bin";
+ //TODO: remove magic file name here
+ char* filename = "static/tiles.bin";
FILE* fp = fopen(filename,"rb");
if (!fp){
fprintf(stderr,"Error: Failed to load tiles.");
diff --git a/src/static/background/shop.hex b/src/static/background/shop.hex
new file mode 100644
index 0000000..8c08feb
--- /dev/null
+++ b/src/static/background/shop.hex
@@ -0,0 +1,331 @@
+;indices: 9
+;75 24 38
+;a5 30 30
+;cf 57 3c
+;1e 1d 39
+;40 27 51
+;7a 36 7b
+;10 14 1f
+;eb ed e9
+;17 20 38
+
+000000: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+000010: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+000020: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000030: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000040: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000050: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000060: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000070: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000080: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000090: 06 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01
+0000a0: 06 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01
+0000b0: 06 06 01 00 00 00 00 00 00 00 00 00 00 00 01 06
+0000c0: 06 06 06 01 00 00 00 00 00 00 00 00 00 01 06 06
+0000d0: 06 06 06 06 01 01 00 00 00 00 00 01 01 06 06 06
+0000e0: 06 06 06 06 06 06 01 01 01 01 01 06 06 06 06 06
+0000f0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000100: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000110: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000120: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000130: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000140: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000150: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000160: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000170: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000180: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000190: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0001a0: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0001b0: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0001c0: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0001d0: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0001e0: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0001f0: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000200: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000210: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000220: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000230: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000240: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000250: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000260: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000270: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000280: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000290: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0002a0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0002b0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0002c0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0002d0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0002e0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0002f0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000300: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000310: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000320: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000330: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000340: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000350: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000360: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000370: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000380: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000390: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+0003a0: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+0003b0: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+0003c0: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+0003d0: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+0003e0: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+0003f0: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000400: 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
+000410: 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
+000420: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000430: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000440: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000450: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000460: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000470: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000480: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000490: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0004a0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0004b0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0004c0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0004d0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0004e0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0004f0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000500: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000510: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000520: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000530: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000540: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000550: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000560: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000570: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000580: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000590: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0005a0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0005b0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0005c0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0005d0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0005e0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+0005f0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000600: 01 01 01 01 01 01 01 01 06 06 06 06 06 06 06 06
+000610: 01 01 01 01 01 01 01 01 06 06 06 06 06 06 06 06
+000620: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000630: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000640: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000650: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000660: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000670: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000680: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000690: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+0006a0: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+0006b0: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+0006c0: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+0006d0: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+0006e0: 01 01 01 01 01 01 01 01 06 06 06 06 06 06 06 06
+0006f0: 01 01 01 01 01 01 01 01 06 06 06 06 06 06 06 06
+000700: 06 06 06 06 06 06 06 01 06 06 06 06 06 06 01 01
+000710: 06 06 06 06 06 06 01 06 06 06 06 06 06 06 01 01
+000720: 06 06 06 06 06 01 06 06 06 06 06 06 06 01 01 01
+000730: 06 06 06 06 01 06 06 06 06 06 06 06 01 06 01 01
+000740: 06 06 06 01 06 06 06 06 06 06 06 01 06 06 01 01
+000750: 06 06 01 06 06 06 06 06 06 06 01 06 06 06 01 01
+000760: 06 01 06 06 06 06 06 06 06 01 06 06 06 06 01 01
+000770: 01 06 06 06 06 06 06 06 01 06 06 06 06 06 01 01
+000780: 06 06 06 06 06 06 06 01 06 06 06 06 06 06 01 01
+000790: 06 06 06 06 06 06 01 06 06 06 06 06 06 06 01 01
+0007a0: 06 06 06 06 06 01 06 06 06 06 06 06 06 01 01 01
+0007b0: 06 06 06 06 01 06 06 06 06 06 06 06 01 06 01 01
+0007c0: 06 06 06 01 06 06 06 06 06 06 06 01 06 06 01 01
+0007d0: 06 06 01 06 06 06 06 06 06 06 01 06 06 06 01 01
+0007e0: 06 01 06 06 06 06 06 06 06 01 06 06 06 06 01 01
+0007f0: 01 06 06 06 06 06 06 06 01 06 06 06 06 06 01 01
+000800: 06 06 06 06 06 06 06 01 06 06 06 06 06 06 06 01
+000810: 06 06 06 06 06 06 01 06 06 06 06 06 06 06 01 06
+000820: 06 06 06 06 06 01 06 06 06 06 06 06 06 01 06 06
+000830: 06 06 06 06 01 06 06 06 06 06 06 06 01 06 06 06
+000840: 06 06 06 01 06 06 06 06 06 06 06 01 06 06 06 06
+000850: 06 06 01 06 06 06 06 06 06 06 01 06 06 06 06 06
+000860: 06 01 06 06 06 06 06 06 06 01 06 06 06 06 06 06
+000870: 01 06 06 06 06 06 06 06 01 06 06 06 06 06 06 06
+000880: 06 06 06 06 06 06 06 01 06 06 06 06 06 06 06 01
+000890: 06 06 06 06 06 06 01 06 06 06 06 06 06 06 01 06
+0008a0: 06 06 06 06 06 01 06 06 06 06 06 06 06 01 06 06
+0008b0: 06 06 06 06 01 06 06 06 06 06 06 06 01 06 06 06
+0008c0: 06 06 06 01 06 06 06 06 06 06 06 01 06 06 06 06
+0008d0: 06 06 01 06 06 06 06 06 06 06 01 06 06 06 06 06
+0008e0: 06 01 06 06 06 06 06 06 06 01 06 06 06 06 06 06
+0008f0: 01 06 06 06 06 06 06 06 01 06 06 06 06 06 06 06
+000900: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000910: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000920: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000930: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000940: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000950: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000960: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000970: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000980: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000990: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0009a0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0009b0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0009c0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0009d0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0009e0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0009f0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000a00: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000a10: 06 06 06 01 01 06 06 06 06 06 06 06 06 06 06 06
+000a20: 06 06 01 01 01 01 06 06 06 06 06 06 06 06 06 06
+000a30: 06 01 01 01 01 01 01 06 06 06 06 06 06 06 06 06
+000a40: 06 01 01 01 01 01 01 06 06 06 06 06 06 06 06 06
+000a50: 06 06 01 01 01 01 06 06 06 06 06 06 06 06 06 06
+000a60: 06 06 06 01 01 06 06 06 06 06 06 06 06 06 06 06
+000a70: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000a80: 06 06 06 06 06 06 06 06 06 06 01 01 06 06 06 06
+000a90: 06 06 06 06 06 06 06 06 06 01 01 01 01 06 06 06
+000aa0: 06 06 06 06 06 06 06 06 01 01 01 01 01 01 06 06
+000ab0: 06 06 06 06 06 06 06 06 01 01 01 01 01 01 06 06
+000ac0: 06 06 06 06 06 06 06 06 06 01 01 01 01 06 06 06
+000ad0: 06 06 06 06 06 06 06 06 06 06 01 01 06 06 06 06
+000ae0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000af0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000b00: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000b10: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000b20: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000b30: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000b40: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000b50: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000b60: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000b70: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000b80: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000b90: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000ba0: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000bb0: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000bc0: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000bd0: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000be0: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000bf0: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+000c00: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000c10: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000c20: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000c30: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000c40: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000c50: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000c60: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000c70: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+000c80: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+000c90: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+000ca0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+000cb0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+000cc0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+000cd0: 06 06 06 06 06 06 01 01 01 01 06 06 06 06 06 01
+000ce0: 06 06 06 06 06 01 01 01 01 01 06 06 06 06 06 01
+000cf0: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 01
+000d00: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 01
+000d10: 06 06 06 06 01 01 01 01 01 06 06 06 06 06 06 01
+000d20: 06 06 06 06 01 01 01 01 06 06 06 06 06 06 06 01
+000d30: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+000d40: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+000d50: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+000d60: 06 06 06 06 06 06 01 01 01 01 06 06 06 06 06 01
+000d70: 06 06 06 06 06 01 01 01 01 01 06 06 06 06 06 01
+000d80: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 01
+000d90: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 01
+000da0: 06 06 06 06 01 01 01 01 01 06 06 06 06 06 06 01
+000db0: 06 06 06 06 01 01 01 01 06 06 06 06 06 06 06 01
+000dc0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+000dd0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+000de0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+000df0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+000e00: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 06
+000e10: 06 06 06 06 01 01 01 01 01 06 06 06 06 06 06 06
+000e20: 06 06 06 06 01 01 01 01 06 06 06 06 06 06 06 06
+000e30: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000e40: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000e50: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000e60: 06 06 06 06 06 06 01 01 01 01 06 06 06 06 06 06
+000e70: 06 06 06 06 06 01 01 01 01 01 06 06 06 06 06 06
+000e80: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 06
+000e90: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 06
+000ea0: 06 06 06 06 01 01 01 01 01 06 06 06 06 06 06 06
+000eb0: 06 06 06 06 01 01 01 01 06 06 06 06 06 06 06 06
+000ec0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000ed0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000ee0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000ef0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000f00: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000f10: 06 07 07 06 07 06 07 07 07 07 06 06 06 06 06 06
+000f20: 06 07 07 06 07 06 06 07 07 06 06 06 06 06 06 06
+000f30: 06 07 07 07 07 06 06 07 07 06 06 07 07 07 07 06
+000f40: 06 07 07 06 07 06 06 07 07 06 06 06 06 06 06 06
+000f50: 06 07 07 06 07 06 07 07 07 07 06 06 06 06 06 06
+000f60: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000f70: 06 07 07 07 07 07 07 07 07 07 07 07 07 07 07 06
+000f80: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000f90: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000fa0: 06 07 07 07 07 06 07 07 07 07 06 07 07 07 07 06
+000fb0: 06 07 06 06 06 06 07 07 06 06 06 07 07 06 07 06
+000fc0: 06 07 07 07 07 06 07 07 06 06 06 07 07 06 07 06
+000fd0: 06 06 06 07 07 06 07 07 06 06 06 07 07 06 07 06
+000fe0: 06 07 07 07 07 06 07 07 07 07 06 07 07 07 07 06
+000ff0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001000: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001010: 07 07 07 07 06 07 07 07 07 06 07 07 07 07 06 07
+001020: 07 06 06 06 06 07 07 06 06 06 07 07 06 07 06 07
+001030: 07 07 07 07 06 07 07 06 06 06 07 07 06 07 06 07
+001040: 06 06 07 07 06 07 07 06 06 06 07 07 06 07 06 07
+001050: 07 07 07 07 06 07 07 07 07 06 07 07 07 07 06 07
+001060: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001070: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001080: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001090: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0010a0: 07 07 07 07 06 07 07 07 07 06 07 07 06 06 06 06
+0010b0: 07 07 06 07 06 07 07 06 06 06 07 07 06 06 06 06
+0010c0: 07 07 07 06 06 07 07 07 07 06 06 06 06 06 06 07
+0010d0: 07 07 06 07 06 07 07 06 06 06 07 07 06 06 07 06
+0010e0: 07 07 06 07 06 07 07 07 07 06 07 07 06 06 07 07
+0010f0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001100: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001110: 07 07 07 06 07 07 07 07 06 07 07 06 06 06 06 06
+001120: 07 06 07 06 07 07 06 06 06 07 07 06 06 06 06 07
+001130: 07 07 06 06 07 07 07 07 06 06 06 06 06 06 07 07
+001140: 07 06 07 06 07 07 06 06 06 07 07 06 06 07 06 07
+001150: 07 06 07 06 07 07 07 07 06 07 07 06 06 07 07 07
+001160: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001170: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001180: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001190: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0011a0: 06 07 07 07 06 06 06 06 06 07 07 06 06 06 06 07
+0011b0: 07 06 07 07 06 06 06 06 07 07 07 06 06 06 06 06
+0011c0: 06 07 07 06 06 06 06 07 07 07 06 06 06 07 07 07
+0011d0: 07 07 06 06 06 06 07 07 07 06 06 06 07 07 06 06
+0011e0: 07 06 06 06 06 07 07 07 06 06 06 06 07 07 07 06
+0011f0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001200: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001210: 07 07 07 06 06 07 07 07 07 07 06 06 06 06 07 07
+001220: 07 07 06 06 06 06 06 07 07 07 06 06 06 07 06 07
+001230: 07 06 06 06 06 06 07 07 07 06 06 06 07 07 07 07
+001240: 07 06 06 06 06 07 07 07 06 06 06 07 06 07 07 06
+001250: 06 06 06 06 07 07 07 06 06 06 06 07 07 07 06 06
+001260: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001270: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001280: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001290: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0012a0: 07 07 06 06 06 06 07 07 07 06 06 06 07 06 06 07
+0012b0: 07 07 06 06 07 06 06 07 07 06 06 07 06 06 07 07
+0012c0: 07 06 06 06 06 07 07 07 06 06 06 06 07 07 07 06
+0012d0: 06 06 06 07 06 07 07 06 06 06 06 07 07 07 06 06
+0012e0: 06 06 06 07 07 07 06 06 06 06 07 07 07 06 06 06
+0012f0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001300: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001310: 07 06 06 06 06 07 07 07 06 06 06 06 06 06 06 06
+001320: 07 06 06 06 07 06 07 07 06 06 06 06 06 06 06 06
+001330: 06 06 06 06 07 07 07 06 06 06 06 06 06 06 06 06
+001340: 06 06 06 07 07 07 06 06 06 06 06 06 06 06 06 06
+001350: 06 06 07 07 07 06 06 06 06 06 06 06 06 06 06 06
+001360: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001370: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001380: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001390: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0013a0: 06 06 06 07 07 07 07 06 06 06 06 06 06 06 06 06
+0013b0: 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06 06
+0013c0: 06 06 07 07 07 06 06 06 06 06 06 06 06 06 06 06
+0013d0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+0013e0: 06 07 07 07 06 06 06 06 06 06 06 06 06 06 06 06
+0013f0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 \ No newline at end of file
diff --git a/src/static/background/shop_ext.hex b/src/static/background/shop_ext.hex
new file mode 100644
index 0000000..d151156
--- /dev/null
+++ b/src/static/background/shop_ext.hex
@@ -0,0 +1,459 @@
+;indices: 9
+;75 24 38
+;a5 30 30
+;cf 57 3c
+;1e 1d 39
+;40 27 51
+;7a 36 7b
+;10 14 1f
+;eb ed e9
+;17 20 38
+
+000000: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+000010: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+000020: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000030: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000040: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000050: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000060: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000070: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000080: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000090: 06 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01
+0000a0: 06 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01
+0000b0: 06 06 01 00 00 00 00 00 00 00 00 00 00 00 01 06
+0000c0: 06 06 06 01 00 00 00 00 00 00 00 00 00 01 06 06
+0000d0: 06 06 06 06 01 01 00 00 00 00 00 01 01 06 06 06
+0000e0: 06 06 06 06 06 06 01 01 01 01 01 06 06 06 06 06
+0000f0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000100: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000110: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000120: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+000130: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+000140: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+000150: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+000160: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+000170: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+000180: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+000190: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+0001a0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+0001b0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+0001c0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+0001d0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+0001e0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+0001f0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07
+000200: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000210: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000220: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000230: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000240: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000250: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000260: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000270: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000280: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000290: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0002a0: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0002b0: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0002c0: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0002d0: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0002e0: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0002f0: 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000300: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000310: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000320: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000330: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000340: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000350: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000360: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000370: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000380: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000390: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0003a0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0003b0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0003c0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0003d0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0003e0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0003f0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000400: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000410: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000420: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000430: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000440: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000450: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000460: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000470: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000480: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000490: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+0004a0: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+0004b0: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+0004c0: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+0004d0: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+0004e0: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+0004f0: 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06
+000500: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000510: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000520: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000530: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000540: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000550: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000560: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000570: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000580: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000590: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+0005a0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+0005b0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+0005c0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+0005d0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+0005e0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+0005f0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000600: 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
+000610: 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
+000620: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000630: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000640: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000650: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000660: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000670: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000680: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000690: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+0006a0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+0006b0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+0006c0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+0006d0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+0006e0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+0006f0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+000700: 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
+000710: 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
+000720: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000730: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000740: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000750: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000760: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000770: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000780: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000790: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0007a0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0007b0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0007c0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0007d0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0007e0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+0007f0: 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06
+000800: 06 06 06 06 06 06 06 06 01 01 01 01 01 01 01 01
+000810: 06 06 06 06 06 06 06 06 01 01 01 01 01 01 01 01
+000820: 06 06 06 06 06 06 06 06 01 01 06 06 06 06 06 06
+000830: 06 06 06 06 06 06 06 06 01 01 06 06 06 06 06 06
+000840: 06 06 06 06 06 06 06 06 01 01 06 06 06 06 06 06
+000850: 06 06 06 06 06 06 06 06 01 01 06 06 06 06 06 06
+000860: 06 06 06 06 06 06 06 06 01 01 06 06 06 06 06 06
+000870: 06 06 06 06 06 06 06 06 01 01 06 06 06 06 06 06
+000880: 06 06 06 06 06 06 06 06 01 01 06 06 06 06 06 06
+000890: 06 06 06 06 06 06 06 06 01 01 06 06 06 06 06 06
+0008a0: 06 06 06 06 06 06 06 06 01 01 06 06 06 06 06 06
+0008b0: 06 06 06 06 06 06 06 06 01 01 06 06 06 06 06 06
+0008c0: 06 06 06 06 06 06 06 06 01 01 06 06 06 06 06 06
+0008d0: 06 06 06 06 06 06 06 06 01 01 06 06 06 06 06 06
+0008e0: 06 06 06 06 06 06 06 06 01 01 01 01 01 01 01 01
+0008f0: 06 06 06 06 06 06 06 06 01 01 01 01 01 01 01 01
+000900: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000910: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000920: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000930: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000940: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000950: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000960: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000970: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000980: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000990: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0009a0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0009b0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0009c0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0009d0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0009e0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+0009f0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000a00: 01 01 01 01 01 01 01 01 06 06 06 06 06 06 06 06
+000a10: 01 01 01 01 01 01 01 01 06 06 06 06 06 06 06 06
+000a20: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000a30: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000a40: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000a50: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000a60: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000a70: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000a80: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000a90: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000aa0: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000ab0: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000ac0: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000ad0: 06 06 06 06 06 06 01 01 06 06 06 06 06 06 06 06
+000ae0: 01 01 01 01 01 01 01 01 06 06 06 06 06 06 06 06
+000af0: 01 01 01 01 01 01 01 01 06 06 06 06 06 06 06 06
+000b00: 01 01 06 06 06 06 06 06 01 06 06 06 06 06 06 06
+000b10: 01 01 06 06 06 06 06 06 06 01 06 06 06 06 06 06
+000b20: 01 01 01 06 06 06 06 06 06 06 01 06 06 06 06 06
+000b30: 01 01 06 01 06 06 06 06 06 06 06 01 06 06 06 06
+000b40: 01 01 06 06 01 06 06 06 06 06 06 06 01 06 06 06
+000b50: 01 01 06 06 06 01 06 06 06 06 06 06 06 01 06 06
+000b60: 01 01 06 06 06 06 01 06 06 06 06 06 06 06 01 06
+000b70: 01 01 06 06 06 06 06 01 06 06 06 06 06 06 06 01
+000b80: 01 01 06 06 06 06 06 06 01 06 06 06 06 06 06 06
+000b90: 01 01 06 06 06 06 06 06 06 01 06 06 06 06 06 06
+000ba0: 01 01 01 06 06 06 06 06 06 06 01 06 06 06 06 06
+000bb0: 01 01 06 01 06 06 06 06 06 06 06 01 06 06 06 06
+000bc0: 01 01 06 06 01 06 06 06 06 06 06 06 01 06 06 06
+000bd0: 01 01 06 06 06 01 06 06 06 06 06 06 06 01 06 06
+000be0: 01 01 06 06 06 06 01 06 06 06 06 06 06 06 01 06
+000bf0: 01 01 06 06 06 06 06 01 06 06 06 06 06 06 06 01
+000c00: 06 06 06 06 06 06 06 01 06 06 06 06 06 06 06 01
+000c10: 06 06 06 06 06 06 01 06 06 06 06 06 06 06 01 06
+000c20: 06 06 06 06 06 01 06 06 06 06 06 06 06 01 06 06
+000c30: 06 06 06 06 01 06 06 06 06 06 06 06 01 06 06 06
+000c40: 06 06 06 01 06 06 06 06 06 06 06 01 06 06 06 06
+000c50: 06 06 01 06 06 06 06 06 06 06 01 06 06 06 06 06
+000c60: 06 01 06 06 06 06 06 06 06 01 06 06 06 06 06 06
+000c70: 01 06 06 06 06 06 06 06 01 06 06 06 06 06 06 06
+000c80: 06 06 06 06 06 06 06 01 06 06 06 06 06 06 06 01
+000c90: 06 06 06 06 06 06 01 06 06 06 06 06 06 06 01 06
+000ca0: 06 06 06 06 06 01 06 06 06 06 06 06 06 01 06 06
+000cb0: 06 06 06 06 01 06 06 06 06 06 06 06 01 06 06 06
+000cc0: 06 06 06 01 06 06 06 06 06 06 06 01 06 06 06 06
+000cd0: 06 06 01 06 06 06 06 06 06 06 01 06 06 06 06 06
+000ce0: 06 01 06 06 06 06 06 06 06 01 06 06 06 06 06 06
+000cf0: 01 06 06 06 06 06 06 06 01 06 06 06 06 06 06 06
+000d00: 06 06 06 06 06 06 06 01 06 06 06 06 06 06 01 01
+000d10: 06 06 06 06 06 06 01 06 06 06 06 06 06 06 01 01
+000d20: 06 06 06 06 06 01 06 06 06 06 06 06 06 01 01 01
+000d30: 06 06 06 06 01 06 06 06 06 06 06 06 01 06 01 01
+000d40: 06 06 06 01 06 06 06 06 06 06 06 01 06 06 01 01
+000d50: 06 06 01 06 06 06 06 06 06 06 01 06 06 06 01 01
+000d60: 06 01 06 06 06 06 06 06 06 01 06 06 06 06 01 01
+000d70: 01 06 06 06 06 06 06 06 01 06 06 06 06 06 01 01
+000d80: 06 06 06 06 06 06 06 01 06 06 06 06 06 06 01 01
+000d90: 06 06 06 06 06 06 01 06 06 06 06 06 06 06 01 01
+000da0: 06 06 06 06 06 01 06 06 06 06 06 06 06 01 01 01
+000db0: 06 06 06 06 01 06 06 06 06 06 06 06 01 06 01 01
+000dc0: 06 06 06 01 06 06 06 06 06 06 06 01 06 06 01 01
+000dd0: 06 06 01 06 06 06 06 06 06 06 01 06 06 06 01 01
+000de0: 06 01 06 06 06 06 06 06 06 01 06 06 06 06 01 01
+000df0: 01 06 06 06 06 06 06 06 01 06 06 06 06 06 01 01
+000e00: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000e10: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000e20: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000e30: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000e40: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000e50: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000e60: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000e70: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000e80: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000e90: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000ea0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000eb0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000ec0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000ed0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000ee0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000ef0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000f00: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000f10: 06 06 06 01 01 06 06 06 06 06 06 06 06 06 06 06
+000f20: 06 06 01 01 01 01 06 06 06 06 06 06 06 06 06 06
+000f30: 06 01 01 01 01 01 01 06 06 06 06 06 06 06 06 06
+000f40: 06 01 01 01 01 01 01 06 06 06 06 06 06 06 06 06
+000f50: 06 06 01 01 01 01 06 06 06 06 06 06 06 06 06 06
+000f60: 06 06 06 01 01 06 06 06 06 06 06 06 06 06 06 06
+000f70: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000f80: 06 06 06 06 06 06 06 06 06 06 01 01 06 06 06 06
+000f90: 06 06 06 06 06 06 06 06 06 01 01 01 01 06 06 06
+000fa0: 06 06 06 06 06 06 06 06 01 01 01 01 01 01 06 06
+000fb0: 06 06 06 06 06 06 06 06 01 01 01 01 01 01 06 06
+000fc0: 06 06 06 06 06 06 06 06 06 01 01 01 01 06 06 06
+000fd0: 06 06 06 06 06 06 06 06 06 06 01 01 06 06 06 06
+000fe0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+000ff0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001000: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+001010: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+001020: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+001030: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+001040: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+001050: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+001060: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+001070: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+001080: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+001090: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+0010a0: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+0010b0: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+0010c0: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+0010d0: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+0010e0: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+0010f0: 06 01 01 06 06 06 06 06 06 06 06 06 06 06 06 06
+001100: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001110: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001120: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001130: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001140: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001150: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001160: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+001170: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001180: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001190: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0011a0: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0011b0: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0011c0: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0011d0: 01 06 06 06 06 06 01 01 01 01 06 06 06 06 06 06
+0011e0: 01 06 06 06 06 06 01 01 01 01 01 06 06 06 06 06
+0011f0: 01 06 06 06 06 06 01 01 01 01 01 01 06 06 06 06
+001200: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001210: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001220: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001230: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001240: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001250: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001260: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+001270: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001280: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001290: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0012a0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0012b0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0012c0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0012d0: 06 06 06 06 06 06 01 01 01 01 06 06 06 06 06 06
+0012e0: 06 06 06 06 06 01 01 01 01 01 06 06 06 06 06 06
+0012f0: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 06
+001300: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001310: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001320: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001330: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001340: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001350: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001360: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+001370: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+001380: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+001390: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+0013a0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+0013b0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+0013c0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+0013d0: 06 06 06 06 06 06 01 01 01 01 06 06 06 06 06 01
+0013e0: 06 06 06 06 06 01 01 01 01 01 06 06 06 06 06 01
+0013f0: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 01
+001400: 01 06 06 06 06 06 01 01 01 01 01 01 06 06 06 06
+001410: 01 06 06 06 06 06 06 01 01 01 01 01 06 06 06 06
+001420: 01 06 06 06 06 06 06 06 01 01 01 01 06 06 06 06
+001430: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001440: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001450: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001460: 01 06 06 06 06 06 01 01 01 01 06 06 06 06 06 06
+001470: 01 06 06 06 06 06 01 01 01 01 01 06 06 06 06 06
+001480: 01 06 06 06 06 06 01 01 01 01 01 01 06 06 06 06
+001490: 01 06 06 06 06 06 01 01 01 01 01 01 06 06 06 06
+0014a0: 01 06 06 06 06 06 06 01 01 01 01 01 06 06 06 06
+0014b0: 01 06 06 06 06 06 06 06 01 01 01 01 06 06 06 06
+0014c0: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0014d0: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0014e0: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0014f0: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001500: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 06
+001510: 06 06 06 06 01 01 01 01 01 06 06 06 06 06 06 06
+001520: 06 06 06 06 01 01 01 01 06 06 06 06 06 06 06 06
+001530: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001540: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001550: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001560: 06 06 06 06 06 06 01 01 01 01 06 06 06 06 06 06
+001570: 06 06 06 06 06 01 01 01 01 01 06 06 06 06 06 06
+001580: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 06
+001590: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 06
+0015a0: 06 06 06 06 01 01 01 01 01 06 06 06 06 06 06 06
+0015b0: 06 06 06 06 01 01 01 01 06 06 06 06 06 06 06 06
+0015c0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0015d0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0015e0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0015f0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001600: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 01
+001610: 06 06 06 06 01 01 01 01 01 06 06 06 06 06 06 01
+001620: 06 06 06 06 01 01 01 01 06 06 06 06 06 06 06 01
+001630: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+001640: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+001650: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+001660: 06 06 06 06 06 06 01 01 01 01 06 06 06 06 06 01
+001670: 06 06 06 06 06 01 01 01 01 01 06 06 06 06 06 01
+001680: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 01
+001690: 06 06 06 06 01 01 01 01 01 01 06 06 06 06 06 01
+0016a0: 06 06 06 06 01 01 01 01 01 06 06 06 06 06 06 01
+0016b0: 06 06 06 06 01 01 01 01 06 06 06 06 06 06 06 01
+0016c0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+0016d0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+0016e0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+0016f0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01
+001700: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001710: 06 07 07 06 07 06 07 07 07 07 06 06 06 06 06 06
+001720: 06 07 07 06 07 06 06 07 07 06 06 06 06 06 06 06
+001730: 06 07 07 07 07 06 06 07 07 06 06 07 07 07 07 06
+001740: 06 07 07 06 07 06 06 07 07 06 06 06 06 06 06 06
+001750: 06 07 07 06 07 06 07 07 07 07 06 06 06 06 06 06
+001760: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001770: 06 07 07 07 07 07 07 07 07 07 07 07 07 07 07 06
+001780: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001790: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0017a0: 06 07 07 07 07 06 07 07 07 07 06 07 07 07 07 06
+0017b0: 06 07 06 06 06 06 07 07 06 06 06 07 07 06 07 06
+0017c0: 06 07 07 07 07 06 07 07 06 06 06 07 07 06 07 06
+0017d0: 06 06 06 07 07 06 07 07 06 06 06 07 07 06 07 06
+0017e0: 06 07 07 07 07 06 07 07 07 07 06 07 07 07 07 06
+0017f0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001800: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001810: 07 07 07 07 06 07 07 07 07 06 07 07 07 07 06 07
+001820: 07 06 06 06 06 07 07 06 06 06 07 07 06 07 06 07
+001830: 07 07 07 07 06 07 07 06 06 06 07 07 06 07 06 07
+001840: 06 06 07 07 06 07 07 06 06 06 07 07 06 07 06 07
+001850: 07 07 07 07 06 07 07 07 07 06 07 07 07 07 06 07
+001860: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001870: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001880: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001890: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0018a0: 07 07 07 07 06 07 07 07 07 06 07 07 06 06 06 06
+0018b0: 07 07 06 07 06 07 07 06 06 06 07 07 06 06 06 06
+0018c0: 07 07 07 06 06 07 07 07 07 06 06 06 06 06 06 07
+0018d0: 07 07 06 07 06 07 07 06 06 06 07 07 06 06 07 06
+0018e0: 07 07 06 07 06 07 07 07 07 06 07 07 06 06 07 07
+0018f0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001900: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001910: 07 07 07 06 07 07 07 07 06 07 07 06 06 06 06 06
+001920: 07 06 07 06 07 07 06 06 06 07 07 06 06 06 06 07
+001930: 07 07 06 06 07 07 07 07 06 06 06 06 06 06 07 07
+001940: 07 06 07 06 07 07 06 06 06 07 07 06 06 07 06 07
+001950: 07 06 07 06 07 07 07 07 06 07 07 06 06 07 07 07
+001960: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001970: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001980: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001990: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+0019a0: 06 07 07 07 06 06 06 06 06 07 07 06 06 06 06 07
+0019b0: 07 06 07 07 06 06 06 06 07 07 07 06 06 06 06 06
+0019c0: 06 07 07 06 06 06 06 07 07 07 06 06 06 07 07 07
+0019d0: 07 07 06 06 06 06 07 07 07 06 06 06 07 07 06 06
+0019e0: 07 06 06 06 06 07 07 07 06 06 06 06 07 07 07 06
+0019f0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001a00: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001a10: 07 07 07 06 06 07 07 07 07 07 06 06 06 06 07 07
+001a20: 07 07 06 06 06 06 06 07 07 07 06 06 06 07 06 07
+001a30: 07 06 06 06 06 06 07 07 07 06 06 06 07 07 07 07
+001a40: 07 06 06 06 06 07 07 07 06 06 06 07 06 07 07 06
+001a50: 06 06 06 06 07 07 07 06 06 06 06 07 07 07 06 06
+001a60: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001a70: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001a80: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001a90: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001aa0: 07 07 06 06 06 06 07 07 07 06 06 06 07 06 06 07
+001ab0: 07 07 06 06 07 06 06 07 07 06 06 07 06 06 07 07
+001ac0: 07 06 06 06 06 07 07 07 06 06 06 06 07 07 07 06
+001ad0: 06 06 06 07 06 07 07 06 06 06 06 07 07 07 06 06
+001ae0: 06 06 06 07 07 07 06 06 06 06 07 07 07 06 06 06
+001af0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001b00: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001b10: 07 06 06 06 06 07 07 07 06 06 06 06 06 06 06 06
+001b20: 07 06 06 06 07 06 07 07 06 06 06 06 06 06 06 06
+001b30: 06 06 06 06 07 07 07 06 06 06 06 06 06 06 06 06
+001b40: 06 06 06 07 07 07 06 06 06 06 06 06 06 06 06 06
+001b50: 06 06 07 07 07 06 06 06 06 06 06 06 06 06 06 06
+001b60: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001b70: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001b80: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001b90: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
+001ba0: 06 06 06 07 07 07 07 06 06 06 06 06 06 06 06 06
+001bb0: 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06 06
+001bc0: 06 06 07 07 07 06 06 06 06 06 06 06 06 06 06 06
+001bd0: 06 06 06 07 07 06 06 06 06 06 06 06 06 06 06 06
+001be0: 06 07 07 07 06 06 06 06 06 06 06 06 06 06 06 06
+001bf0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 \ No newline at end of file
diff --git a/src/static/background/title_screen_icon.hex b/src/static/background/title_screen_icon.hex
new file mode 100644
index 0000000..120eaa1
--- /dev/null
+++ b/src/static/background/title_screen_icon.hex
@@ -0,0 +1,102 @@
+;indices: 4
+;17 20 38
+;10 14 1f
+;40 27 51
+;7a 36 7b
+
+000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 02
+0000b0: 00 00 00 00 00 00 00 00 00 00 02 02 02 02 03 03
+0000c0: 00 00 00 00 00 00 00 02 02 02 03 03 03 03 03 03
+0000d0: 00 00 00 00 02 02 02 03 03 03 03 03 03 03 03 03
+0000e0: 00 00 02 02 03 03 03 03 03 03 03 03 03 03 03 03
+0000f0: 02 02 03 03 03 03 03 03 03 03 03 03 03 03 03 03
+000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 02
+000110: 00 00 00 00 00 00 00 00 00 00 00 00 00 02 03 03
+000120: 00 00 00 00 00 00 00 00 00 00 00 00 02 03 03 03
+000130: 00 00 00 00 00 00 00 00 00 00 00 02 03 03 03 03
+000140: 00 00 00 00 00 00 00 00 00 00 02 03 03 03 03 03
+000150: 00 00 00 00 00 00 00 00 00 00 02 03 03 03 03 03
+000160: 00 00 00 00 00 00 00 00 00 02 03 03 03 03 03 03
+000170: 00 00 00 00 00 00 00 00 02 03 03 03 03 03 03 03
+000180: 00 00 00 00 00 00 00 00 02 03 03 03 03 03 03 03
+000190: 00 00 00 00 00 00 00 02 03 03 03 03 03 03 03 03
+0001a0: 00 00 00 00 00 00 00 02 03 03 03 03 03 03 03 03
+0001b0: 00 00 00 00 00 00 00 02 03 03 03 03 03 03 03 03
+0001c0: 00 00 00 00 00 00 02 03 03 03 03 03 03 03 03 01
+0001d0: 00 00 00 00 00 00 02 03 03 03 03 03 03 03 01 01
+0001e0: 00 00 00 00 00 00 02 03 03 03 03 03 03 03 01 01
+0001f0: 00 00 00 00 00 02 03 03 03 03 03 03 03 01 01 01
+000200: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
+000210: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
+000220: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
+000230: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
+000240: 03 03 03 03 03 03 03 03 03 03 01 01 01 01 01 01
+000250: 03 03 03 03 03 03 03 01 01 01 01 01 01 01 01 01
+000260: 03 03 03 03 03 01 01 01 01 01 01 01 01 01 01 01
+000270: 03 03 03 01 01 01 01 01 01 01 01 01 01 01 01 01
+000280: 03 03 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000290: 03 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+0002a0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+0002b0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+0002c0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+0002d0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+0002e0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+0002f0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000300: 00 00 00 00 00 02 03 03 03 03 03 03 03 01 01 01
+000310: 00 00 00 00 00 02 03 03 03 03 03 03 03 01 01 01
+000320: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
+000330: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
+000340: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
+000350: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
+000360: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
+000370: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
+000380: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
+000390: 00 00 00 00 00 00 02 03 03 03 03 03 01 01 01 01
+0003a0: 00 00 00 00 00 00 02 03 03 03 03 03 01 01 01 01
+0003b0: 00 00 00 00 00 00 02 03 03 03 03 03 01 01 01 01
+0003c0: 00 00 00 00 00 00 00 02 03 03 03 03 01 01 01 01
+0003d0: 00 00 00 00 00 00 00 02 03 03 03 03 01 01 01 01
+0003e0: 00 00 00 00 00 00 00 02 03 03 03 03 01 01 01 01
+0003f0: 00 00 00 00 00 00 00 00 02 03 03 03 01 01 01 01
+000400: 00 00 00 00 00 00 00 00 02 03 03 03 01 01 01 01
+000410: 00 00 00 00 00 00 00 00 00 02 03 03 01 01 01 01
+000420: 00 00 00 00 00 00 00 00 00 02 03 03 03 01 01 01
+000430: 00 00 00 00 00 00 00 00 00 00 02 03 03 01 01 01
+000440: 00 00 00 00 00 00 00 00 00 00 02 03 03 01 01 01
+000450: 00 00 00 00 00 00 00 00 00 00 00 02 03 03 01 01
+000460: 00 00 00 00 00 00 00 00 00 00 00 02 03 03 01 01
+000470: 00 00 00 00 00 00 00 00 00 00 00 00 02 03 03 01
+000480: 00 00 00 00 00 00 00 00 00 00 00 00 00 02 03 03
+000490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 03
+0004a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02
+0004b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0004c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0004d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0004e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0004f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+000500: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000510: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000520: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000530: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000540: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000550: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000560: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000570: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000580: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+000590: 03 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+0005a0: 03 03 03 01 01 01 01 01 01 01 01 01 01 01 01 01
+0005b0: 02 03 03 03 03 01 01 01 01 01 01 01 01 01 01 01
+0005c0: 00 02 02 03 03 03 03 01 01 01 01 01 01 01 01 01
+0005d0: 00 00 00 02 02 02 03 03 03 03 03 03 01 01 01 01
+0005e0: 00 00 00 00 00 00 02 02 02 02 02 03 03 03 03 03
+0005f0: 00 00 00 00 00 00 00 00 00 00 00 02 02 02 02 02 \ No newline at end of file
diff --git a/src/static/title_screen_letteres_large.hex b/src/static/foreground/title_screen_letteres_large.hex
index fea1c77..fea1c77 100644
--- a/src/static/title_screen_letteres_large.hex
+++ b/src/static/foreground/title_screen_letteres_large.hex
diff --git a/src/static/title_screen_icon.hex b/src/static/title_screen_icon.hex
deleted file mode 100644
index a1e5f0b..0000000
--- a/src/static/title_screen_icon.hex
+++ /dev/null
@@ -1,119 +0,0 @@
-;Main character icon for title screen
-;indices: 4
-;23 32 56
-;16 20 31
-;64 39 81
-;122 54 123
-
-0000: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0010: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0020: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0030: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0040: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0050: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0060: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0070: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0080: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0090: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-00a0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-00b0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-00c0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-00d0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-00e0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-00f0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-01a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 02
-01b0: 00 00 00 00 00 00 00 00 00 00 02 02 02 02 03 03
-01c0: 00 00 00 00 00 00 00 02 02 02 03 03 03 03 03 03
-01d0: 00 00 00 00 02 02 02 03 03 03 03 03 03 03 03 03
-01e0: 00 00 02 02 03 03 03 03 03 03 03 03 03 03 03 03
-01f0: 02 02 03 03 03 03 03 03 03 03 03 03 03 03 03 03
-0200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 02
-0210: 00 00 00 00 00 00 00 00 00 00 00 00 00 02 03 03
-0220: 00 00 00 00 00 00 00 00 00 00 00 00 02 03 03 03
-0230: 00 00 00 00 00 00 00 00 00 00 00 02 03 03 03 03
-0240: 00 00 00 00 00 00 00 00 00 00 02 03 03 03 03 03
-0250: 00 00 00 00 00 00 00 00 00 00 02 03 03 03 03 03
-0260: 00 00 00 00 00 00 00 00 00 02 03 03 03 03 03 03
-0270: 00 00 00 00 00 00 00 00 02 03 03 03 03 03 03 03
-0280: 00 00 00 00 00 00 00 00 02 03 03 03 03 03 03 03
-0290: 00 00 00 00 00 00 00 02 03 03 03 03 03 03 03 03
-02a0: 00 00 00 00 00 00 00 02 03 03 03 03 03 03 03 03
-02b0: 00 00 00 00 00 00 00 02 03 03 03 03 03 03 03 03
-02c0: 00 00 00 00 00 00 02 03 03 03 03 03 03 03 03 01
-02d0: 00 00 00 00 00 00 02 03 03 03 03 03 03 03 01 01
-02e0: 00 00 00 00 00 00 02 03 03 03 03 03 03 03 01 01
-02f0: 00 00 00 00 00 02 03 03 03 03 03 03 03 01 01 01
-0300: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
-0310: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
-0320: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
-0330: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
-0340: 03 03 03 03 03 03 03 03 03 03 01 01 01 01 01 01
-0350: 03 03 03 03 03 03 03 01 01 01 01 01 01 01 01 01
-0360: 03 03 03 03 03 01 01 01 01 01 01 01 01 01 01 01
-0370: 03 03 03 01 01 01 01 01 01 01 01 01 01 01 01 01
-0380: 03 03 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0390: 03 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-03a0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-03b0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-03c0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-03d0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-03e0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-03f0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0400: 00 00 00 00 00 02 03 03 03 03 03 03 03 01 01 01
-0410: 00 00 00 00 00 02 03 03 03 03 03 03 03 01 01 01
-0420: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
-0430: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
-0440: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
-0450: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
-0460: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
-0470: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
-0480: 00 00 00 00 00 02 03 03 03 03 03 03 01 01 01 01
-0490: 00 00 00 00 00 00 02 03 03 03 03 03 01 01 01 01
-04a0: 00 00 00 00 00 00 02 03 03 03 03 03 01 01 01 01
-04b0: 00 00 00 00 00 00 02 03 03 03 03 03 01 01 01 01
-04c0: 00 00 00 00 00 00 00 02 03 03 03 03 01 01 01 01
-04d0: 00 00 00 00 00 00 00 02 03 03 03 03 01 01 01 01
-04e0: 00 00 00 00 00 00 00 02 03 03 03 03 01 01 01 01
-04f0: 00 00 00 00 00 00 00 00 02 03 03 03 01 01 01 01
-0500: 00 00 00 00 00 00 00 00 02 03 03 03 01 01 01 01
-0510: 00 00 00 00 00 00 00 00 00 02 03 03 01 01 01 01
-0520: 00 00 00 00 00 00 00 00 00 02 03 03 03 01 01 01
-0530: 00 00 00 00 00 00 00 00 00 00 02 03 03 01 01 01
-0540: 00 00 00 00 00 00 00 00 00 00 02 03 03 01 01 01
-0550: 00 00 00 00 00 00 00 00 00 00 00 02 03 03 01 01
-0560: 00 00 00 00 00 00 00 00 00 00 00 02 03 03 01 01
-0570: 00 00 00 00 00 00 00 00 00 00 00 00 02 03 03 01
-0580: 00 00 00 00 00 00 00 00 00 00 00 00 00 02 03 03
-0590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 03
-05a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02
-05b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-05c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-05d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-05e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-05f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0600: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0610: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0620: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0630: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0640: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0650: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0660: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0670: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0680: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-0690: 03 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
-06a0: 03 03 03 01 01 01 01 01 01 01 01 01 01 01 01 01
-06b0: 02 03 03 03 03 01 01 01 01 01 01 01 01 01 01 01
-06c0: 00 02 02 03 03 03 03 01 01 01 01 01 01 01 01 01
-06d0: 00 00 00 02 02 02 03 03 03 03 03 03 01 01 01 01
-06e0: 00 00 00 00 00 00 02 02 02 02 02 03 03 03 03 03
-06f0: 00 00 00 00 00 00 00 00 00 00 00 02 02 02 02 02