aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNielsCoding <48092678+heavydemon21@users.noreply.github.com>2023-04-03 15:24:51 +0200
committerNielsCoding <48092678+heavydemon21@users.noreply.github.com>2023-04-03 15:24:51 +0200
commit1a9c57d249c93663d3fc25490716de508d61cec3 (patch)
tree09742e511a841e4e185f89332337a19b2042fda4
parent68862666219c07ee62c9e59dd6866c1c7b26cc00 (diff)
player controller update
-rw-r--r--.vscode/settings.json4
-rw-r--r--src/GameLoop/shop.c78
-rw-r--r--src/GameLoop/shop.h32
-rw-r--r--src/GameLoop/startingScreen.c32
-rw-r--r--src/GameLoop/startingScreen.h14
-rw-r--r--src/demo.c1
-rw-r--r--src/engine/entity.c50
-rw-r--r--src/engine/entity.h4
-rw-r--r--src/engine/player_controller.c143
-rw-r--r--src/engine/player_controller.h2
-rw-r--r--src/game_loop/gameplay.c49
-rw-r--r--src/game_loop/starting_screen.c4
-rw-r--r--src/static/title_screen_icon.hex119
-rw-r--r--src/static/title_screen_letteres_large.hex230
14 files changed, 473 insertions, 289 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json
index d027762..f4d72ed 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -8,5 +8,7 @@
}
},
"cmake.configureOnOpen": false,
- "files.eol": "\n"
+ "files.eol": "\n",
+ "nrf-connect.topdir": "${nrf-connect.sdk:2.1.2}",
+ "nrf-connect.toolchain.path": "${nrf-connect.toolchain:2.1.2}"
}
diff --git a/src/GameLoop/shop.c b/src/GameLoop/shop.c
deleted file mode 100644
index fb7ef4c..0000000
--- a/src/GameLoop/shop.c
+++ /dev/null
@@ -1,78 +0,0 @@
-#include "shop.h"
-#include "engine/maths.h"
-#include "ppu/ppu.h"
-
-bool hh_show_Shop(){
- static hh_e_ShopStates hh_e_Shop = hh_e_shop_init;
- static hh_e_upgrades upgrades[HH_SHOP_UPG_DISPLAY] = {0};
- static uint8_t selected = 0;
-
- switch (hh_e_Shop)
- {
- case hh_e_shop_init:
- hh_clear_screen();
- hh_clear_sprite();
-
- //TODO: render shop bg from level file here
- //hh_setup_shop();
- hh_shop_init(&upgrades);
- selected = HH_SHOP_UPG_DISPLAY/2;
- hh_shop_display(selected, &upgrades);
- hh_e_Shop = hh_e_shop_main;
- return false;
- break;
- case hh_e_shop_main:
- if(g_hh_controller_p1.dpad_left || g_hh_controller_p1.dpad_right){
- hh_shift_selected(&selected,(g_hh_controller_p1.dpad_right?1:0),0,HH_SHOP_UPG_DISPLAY);
- hh_shop_display(selected, &upgrades);
- }
- if(g_hh_controller_p1.button_primary){
- //apply selected upgrade
- hh_e_Shop = hh_e_shop_end;
- }
- if(g_hh_controller_p1.button_secondary){
- hh_e_Shop = hh_e_shop_end;
- }
- break;
- case hh_e_shop_end:
- hh_e_Shop = hh_e_shop_init;
- return true;
- break;
- default:
- hh_e_Shop = hh_e_shop_init;
- break;
- }
- return false;
-}
-
-void hh_shop_init(hh_e_upgrades* in) {
- for (int i = 0; i < HH_SHOP_UPG_DISPLAY; i++) {
- in[i] = i%HH_SHOP_UPG_COUNT;
- }
-}
-
-void hh_shop_display(uint8_t selected, hh_e_upgrades* upgrades) {
- const vec_cor start = {48,16};
- const uint8_t up = 8,
- space = 24+8;
-
- for (int i = 0; i < HH_SHOP_UPG_DISPLAY; i++) {
- hh_ppu_update_foreground(i+16,
- (hh_s_ppu_loc_fam_entry){
- .horizontal_flip = false, .vertical_flip = false,
- .position_x = i*space+start.x, .position_y = start.y + (i==selected?up:0),
- .palette_index = 7,
- .tilemap_index = i
- });
- }
-}
-
-void hh_shift_selected(uint8_t* pos, bool dir, uint8_t min, uint8_t max) {
- if (dir) {
- pos = CLAMP(++pos,min,max);
- } else {
- if (pos > 0) {
- pos--;
- }
- }
-}
diff --git a/src/GameLoop/shop.h b/src/GameLoop/shop.h
deleted file mode 100644
index 5cd6b53..0000000
--- a/src/GameLoop/shop.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "input.h"
-#include "engine/draw_screen.h"
-
-
-
-#include <stdint.h>
-#include <stdbool.h>
-
-typedef enum {
- hh_e_shop_init,
- hh_e_shop_main,
- hh_e_shop_end
-} hh_e_ShopStates;
-
-/** @brief amount of upgrade types */
-#define HH_SHOP_UPG_COUNT 2
-/** @brief count of visible upgrades in shop */
-#define HH_SHOP_UPG_DISPLAY 4
-/** @brief all possible upgrades */
-typedef enum {
- hh_e_UPG_JUMP,
- hh_e_UPG_HEALTH
-} hh_e_upgrades;
-
-/** @brief init */
-void hh_shop_init(hh_e_upgrades* in);
-/** @brief deals with displayed entity rendering */
-void hh_shop_display(uint8_t selected, hh_e_upgrades* upgrades);
-/** @brief moves 'cursor' through selection field */
-void hh_shift_selected(uint8_t* pos, bool dir, uint8_t min, uint8_t max);
-
-bool hh_show_Shop();
diff --git a/src/GameLoop/startingScreen.c b/src/GameLoop/startingScreen.c
deleted file mode 100644
index 4fc5af9..0000000
--- a/src/GameLoop/startingScreen.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#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
deleted file mode 100644
index f51cc66..0000000
--- a/src/GameLoop/startingScreen.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#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 4fa1be2..725e560 100644
--- a/src/demo.c
+++ b/src/demo.c
@@ -17,6 +17,7 @@
#include "game_loop/gameplay.h"
#include "game_loop/shop.h"
+#include <stdbool.h>
hh_g_all_levels hh_game;
diff --git a/src/engine/entity.c b/src/engine/entity.c
index 58b62c9..7b780cf 100644
--- a/src/engine/entity.c
+++ b/src/engine/entity.c
@@ -127,3 +127,53 @@ bool hh_distance_circles (vec2 object_1, vec2 object_2, int radius_1, int radius
return false;
}
}
+
+void hh_jump_entity(hh_entity* object_1){
+ if (object_1->is_grounded == true) {//JUMP
+ object_1->vel.y = -10;
+ object_1->is_grounded = false;
+ }
+}
+void hh_gravity_entity(hh_entity* object_1){
+ if (object_1->is_grounded == false && object_1->vel.y < 6) {
+ object_1->vel.y += 1; //gravity
+ }
+}
+void hh_hit_entity(hh_entity* object_1, int8_t* hit_timer, int8_t* direction){
+ if(object_1->is_hit == true){
+ hit_timer = 9;
+ object_1->is_hit = false;
+ }
+ if(hit_timer > -10){
+ hit_timer--;
+ }
+
+ if(hit_timer <= 0){
+ if(direction != 0){
+ if(object_1->vel.x > -1 * object_1->speed && object_1->vel.x < object_1->speed) {
+ object_1->vel.x = object_1->vel.x + direction;
+ } else {
+ if (object_1->vel.x > 0) {
+ object_1->vel.x--;
+ } else if(object_1->vel.x < 0) {
+ object_1->vel.x++;
+ }
+ }
+ } else {
+ if (object_1->vel.x > 0) {
+ object_1->vel.x--;
+ } else if(object_1->vel.x < 0) {
+ object_1->vel.x++;
+ }
+ }
+
+ } else {
+ if (object_1->vel.x > 0) {
+ object_1->vel.x--;
+ } else if(object_1->vel.x < 0) {
+ object_1->vel.x++;
+ }
+ object_1->vel.y++;
+ }
+
+}
diff --git a/src/engine/entity.h b/src/engine/entity.h
index 68b450d..b681bd8 100644
--- a/src/engine/entity.h
+++ b/src/engine/entity.h
@@ -43,4 +43,8 @@ hh_entity hh_enemy_collision(hh_entity temp_player, hh_entity temp_enemy);
/// @return true if objects collids
bool hh_distance_circles(vec2 object_1, vec2 object_2, int radius_1, int radius_2);
+// TODO: comments on functions below
+void hh_jump_entity(hh_entity* );
+void hh_gravity_entity(hh_entity* );
+void hh_hit_entity(hh_entity* object_1, int8_t* hit_timer, int8_t* direction);
diff --git a/src/engine/player_controller.c b/src/engine/player_controller.c
index cec28df..096243b 100644
--- a/src/engine/player_controller.c
+++ b/src/engine/player_controller.c
@@ -7,30 +7,8 @@
#include "engine/animator.h"
#include "engine/bullet.h"
-void hh_player_actions() {
- static hh_entity player={
- .hp = 4,
- .speed = 6,
- .is_grounded = false,
- .is_hit = false,
- .radius = 8,
- .pos = (vec2){128+16,32},
- .vel = (vec2){0,0},
- .size = (vec2){32,32},
- .render = {
- .frame0 = 80,
- .palette = 3,
- .ppu_foreground_index = 0,
- .fam = (hh_s_ppu_loc_fam_entry){
- .horizontal_flip = false,
- .vertical_flip = false,
- .palette_index = 3,
- .tilemap_index = 80,
- }
- }
- }, player_new = {0};
-
- static hh_entity bullet={
+void hh_player_actions(hh_entity* player, vec_cor cam_pos){
+ static hh_entity bullet={
// .hp = 4,
.speed = 6,
.is_grounded = true,
@@ -49,124 +27,37 @@ void hh_player_actions() {
}
}
};
+ static hh_entity player_new = {0};
+ player_new = *player;
- static hh_entity enemy={
- .hp = 4,
- .speed = 6,
- .is_grounded = false,
- .is_hit = false,
- .radius = 8,
- .pos = (vec2){128,48},
- .vel = (vec2){0,0},
- .size = (vec2){16,16},
- .render = {
- .frame0 = 20,
- .palette = 7,
- .ppu_foreground_index = 16,
- .fam = (hh_s_ppu_loc_fam_entry){
- .horizontal_flip = false,
- .vertical_flip = false,
- .palette_index = 7,
- .tilemap_index = 1,
- }
- }
- };
- 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
+ hh_hit_entity(player,hit_timer,direction_x);
+ hh_gravity_entity(player);
+ if(g_hh_controller_p1.button_primary){
+ hh_jump_entity(player);
}
-
-/*
- 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,
+ .x = player->vel.x,
+ .y = player->vel.y,
};
-
- player_new = hh_enemy_collision(player, enemy);
-
+
player_new.pos = (vec2){
- .x = player.pos.x + player_new.vel.x,
- .y = player.pos.y + player_new.vel.y,
+ .x = player->pos.x + player_new.vel.x,
+ .y = player->pos.y + player_new.vel.y,
};
- player = hh_background_collision( player, player_new);
+ *player = hh_background_collision ( *player, player_new);
- vec_cor cam_pos;//value in tiles
- cam_pos = hh_draw_screen(player.pos);
- hh_shoot_bullet(player.pos, cam_pos ,&bullet);
+ hh_shoot_bullet(player->pos, cam_pos ,&bullet);
uint16_t idx = 16;
- idx = hh_update_sprite(idx, &player, cam_pos);
- idx = hh_update_sprite(idx, &enemy, cam_pos);
+ idx = hh_update_sprite(idx, player, cam_pos);
+ // idx = hh_update_sprite(idx, &enemy, cam_pos);
idx =16;
diff --git a/src/engine/player_controller.h b/src/engine/player_controller.h
index 400c18e..4a325e8 100644
--- a/src/engine/player_controller.h
+++ b/src/engine/player_controller.h
@@ -4,4 +4,4 @@
#include "engine/entity.h"
// inputs
-void hh_player_actions();
+void hh_player_actions(hh_entity* player, vec_cor cam_pos);
diff --git a/src/game_loop/gameplay.c b/src/game_loop/gameplay.c
index 295eb5d..bc6c98d 100644
--- a/src/game_loop/gameplay.c
+++ b/src/game_loop/gameplay.c
@@ -5,6 +5,47 @@
void hh_gameplay(hh_g_all_levels game, hh_e_game_state* hh_game_state){
static hh_e_gameplay gameplay = hh_e_setup_screen;
+ static hh_entity player1={
+ .hp = 4,
+ .speed = 6,
+ .is_grounded = false,
+ .is_hit = false,
+ .radius = 8,
+ .pos = (vec2){32,32},
+ .size = (vec2){32,32},
+ .vel = (vec2){0,0},
+ .render = {
+ .frame0 = 80,
+ .palette = 3,
+ .fam = (hh_s_ppu_loc_fam_entry){
+ .horizontal_flip = false,
+ .vertical_flip = false,
+ .palette_index = 3,
+ .tilemap_index = 80,
+ }
+ }
+ };
+ // enemy gets replaced here is just for reference
+ 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 = 1,
+ }
+ }
+ };
switch (gameplay)
{
@@ -13,10 +54,12 @@ void hh_gameplay(hh_g_all_levels game, hh_e_game_state* hh_game_state){
gameplay = hh_e_play_level;
break;
case hh_e_play_level:
- // todo: here come all the different functions for the gameplay
- hh_player_actions();
-
+ // TODO: here come all the different functions for the gameplay
+ vec_cor cam_pos;//value in tiles
+ cam_pos = hh_draw_screen(player1.pos);
+ hh_player_actions(&player1,cam_pos);
+ // enemy's
diff --git a/src/game_loop/starting_screen.c b/src/game_loop/starting_screen.c
index 6ab0278..c11e4fc 100644
--- a/src/game_loop/starting_screen.c
+++ b/src/game_loop/starting_screen.c
@@ -1,8 +1,8 @@
-#include "starting_screen.h""
+#include "starting_screen.h"
#include "input.h"
#include "engine/title_screen.h"
#include "engine/draw_screen.h"
-// #include "engine/player_controller.h"
+#include "engine/player_controller.h"
bool hh_show_starting_screen(){
static hh_e_screen_states hh_e_starting_screen = hh_e_state_show;
diff --git a/src/static/title_screen_icon.hex b/src/static/title_screen_icon.hex
new file mode 100644
index 0000000..a1e5f0b
--- /dev/null
+++ b/src/static/title_screen_icon.hex
@@ -0,0 +1,119 @@
+;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
diff --git a/src/static/title_screen_letteres_large.hex b/src/static/title_screen_letteres_large.hex
new file mode 100644
index 0000000..fea1c77
--- /dev/null
+++ b/src/static/title_screen_letteres_large.hex
@@ -0,0 +1,230 @@
+;title screen letters (Large)
+;indices: 3
+;23 32 56
+;165 48 48
+;207 87 60
+
+0000: 00 00 00 00 00 00 00 00 02 02 00 00 00 00 00 00
+0010: 00 00 00 00 00 00 00 00 02 02 02 00 00 00 00 00
+0020: 00 00 00 00 00 00 00 02 02 02 02 00 00 00 00 00
+0030: 00 00 00 00 00 00 00 02 02 02 00 00 00 00 00 00
+0040: 00 00 00 00 00 00 00 02 02 02 00 00 00 00 00 00
+0050: 00 00 00 00 00 00 00 02 02 02 00 00 00 00 00 00
+0060: 00 00 00 00 00 00 00 02 02 02 00 00 00 00 00 00
+0070: 00 00 00 00 00 00 02 02 02 00 00 00 00 00 00 00
+0080: 00 00 00 00 00 00 02 02 02 00 00 00 00 00 00 00
+0090: 00 00 00 00 00 00 02 02 02 00 00 00 00 00 00 00
+00a0: 00 00 00 00 00 00 02 02 02 00 00 00 00 00 00 00
+00b0: 00 00 00 00 00 00 02 02 02 00 00 00 00 00 00 00
+00c0: 00 00 00 00 00 00 02 02 02 00 00 00 00 00 00 00
+00d0: 00 00 00 00 00 00 02 02 02 00 00 00 00 00 00 00
+00e0: 00 00 00 00 00 00 02 02 01 00 00 00 00 00 00 00
+00f0: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+0100: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+0110: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+0120: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+0130: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 01
+0140: 00 00 00 00 00 00 01 01 01 01 01 01 01 01 01 01
+0150: 00 00 00 00 00 00 01 01 01 01 01 01 01 01 01 01
+0160: 00 00 00 00 01 01 01 01 01 01 01 01 01 01 00 00
+0170: 00 00 00 00 01 01 01 01 01 01 00 00 00 00 00 00
+0180: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+0190: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+01a0: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+01b0: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+01c0: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+01d0: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+01e0: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+01f0: 00 00 00 00 00 00 00 01 01 00 00 00 00 00 00 00
+0200: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+0210: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+0220: 00 00 00 00 00 00 01 01 01 01 00 00 00 00 00 00
+0230: 01 01 01 01 01 01 01 01 01 01 01 00 00 00 00 00
+0240: 01 01 01 01 01 01 01 01 01 01 00 00 00 00 00 00
+0250: 01 01 01 00 00 00 01 01 01 00 00 00 00 00 00 00
+0260: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+0270: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+0280: 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00 00
+0290: 00 00 00 00 00 00 00 01 01 00 00 00 00 00 00 00
+02a0: 00 00 00 00 00 00 00 01 01 00 00 00 00 00 00 00
+02b0: 00 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00
+02c0: 00 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00
+02d0: 00 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00
+02e0: 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
+02f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0310: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0320: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0330: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0340: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0350: 00 00 00 00 00 00 02 02 02 02 00 00 00 00 00 00
+0360: 00 00 00 00 00 02 02 02 02 02 02 00 00 00 00 00
+0370: 00 00 00 00 02 02 02 02 02 02 02 02 00 00 00 00
+0380: 00 00 00 02 02 02 02 02 02 02 02 02 02 00 00 00
+0390: 00 00 00 02 02 02 02 02 02 02 02 02 02 02 00 00
+03a0: 00 00 02 02 02 02 02 02 02 02 02 02 02 02 00 00
+03b0: 00 00 02 02 02 02 02 02 02 02 02 02 02 02 00 00
+03c0: 00 00 02 02 02 02 02 02 02 02 02 02 02 02 00 00
+03d0: 00 00 02 02 02 02 02 02 02 02 02 02 01 01 00 00
+03e0: 00 00 02 02 02 02 02 02 02 02 01 01 01 01 00 00
+03f0: 00 00 02 02 02 02 02 01 01 01 01 01 01 01 00 00
+0400: 00 00 02 02 01 01 01 01 01 01 01 01 01 01 00 00
+0410: 00 00 01 01 01 01 01 01 01 01 01 01 01 01 00 00
+0420: 00 00 01 01 01 01 01 01 01 01 01 01 01 01 00 00
+0430: 00 00 01 01 01 01 01 01 01 01 01 01 01 01 00 00
+0440: 00 00 01 01 01 01 01 01 01 01 01 01 01 01 00 00
+0450: 00 00 01 01 01 01 01 01 01 01 01 01 01 01 00 00
+0460: 00 00 01 01 01 01 01 01 01 01 01 01 01 00 00 00
+0470: 00 00 00 01 01 01 01 01 01 01 01 01 01 00 00 00
+0480: 00 00 00 00 01 01 01 01 01 01 01 01 00 00 00 00
+0490: 00 00 00 00 00 01 01 01 01 01 00 00 00 00 00 00
+04a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+04b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+04c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+04d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+04e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+04f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0500: 00 00 00 00 00 00 00 00 00 00 00 00 02 02 00 00
+0510: 00 00 00 00 00 00 00 00 00 00 00 00 02 02 02 00
+0520: 00 00 00 00 00 00 00 00 00 00 00 00 02 02 02 00
+0530: 00 00 00 00 00 00 00 00 00 00 00 00 02 02 02 00
+0540: 00 00 00 00 00 00 00 00 00 00 00 00 02 02 02 00
+0550: 00 00 00 00 00 00 00 00 00 00 00 00 02 02 02 00
+0560: 00 00 00 00 00 00 00 00 00 00 00 00 02 02 02 00
+0570: 00 00 00 00 00 00 00 00 00 00 00 00 02 02 02 00
+0580: 00 00 00 00 00 00 00 00 00 00 00 00 02 02 00 00
+0590: 00 00 00 00 00 00 00 00 00 00 00 00 02 02 00 00
+05a0: 00 00 00 00 00 00 00 00 00 00 00 00 02 02 00 00
+05b0: 00 00 00 00 00 02 02 02 02 00 00 00 02 02 00 00
+05c0: 00 00 00 00 02 02 02 02 02 02 00 00 02 02 00 00
+05d0: 00 00 00 00 02 02 02 00 00 00 02 00 02 02 00 00
+05e0: 00 00 00 02 02 02 00 00 00 00 00 02 02 02 00 00
+05f0: 00 00 00 02 02 00 00 00 00 00 00 02 02 02 00 00
+0600: 00 00 02 02 02 00 00 00 00 00 00 00 02 02 00 00
+0610: 00 00 02 02 00 00 00 00 00 00 00 00 01 01 00 00
+0620: 00 00 02 01 00 00 00 00 00 00 00 00 01 01 00 00
+0630: 00 00 01 01 00 00 00 00 00 00 00 00 01 01 00 00
+0640: 00 01 01 00 00 00 00 00 00 00 00 00 01 01 00 00
+0650: 00 01 01 00 00 00 00 00 00 00 00 00 01 01 00 00
+0660: 00 01 01 00 00 00 00 00 00 00 00 00 01 01 00 00
+0670: 00 01 01 00 00 00 00 00 00 00 00 01 01 01 00 00
+0680: 00 01 01 00 00 00 00 00 00 00 00 01 01 01 00 00
+0690: 00 01 01 00 00 00 00 00 00 00 00 01 01 01 00 00
+06a0: 00 01 01 00 00 00 00 00 00 00 01 01 01 01 00 00
+06b0: 00 01 01 00 00 00 00 00 00 00 01 01 01 01 00 00
+06c0: 00 00 01 01 00 00 00 00 00 01 01 01 01 01 00 00
+06d0: 00 00 01 01 01 00 00 00 01 01 01 00 01 01 00 00
+06e0: 00 00 00 01 01 01 01 01 01 01 00 00 01 01 00 00
+06f0: 00 00 00 00 01 01 01 01 01 00 00 00 00 01 01 00
+0700: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0710: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0720: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0730: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0740: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0750: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+07a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+07b0: 00 02 02 00 00 00 00 00 00 00 00 00 00 02 02 00
+07c0: 00 02 02 02 00 00 00 00 00 00 00 00 00 02 02 00
+07d0: 00 02 02 02 00 00 00 00 00 00 00 00 00 02 02 00
+07e0: 00 02 02 02 00 00 00 00 00 00 00 00 00 02 02 00
+07f0: 00 02 02 02 00 00 00 00 00 00 00 00 00 02 02 00
+0800: 00 02 02 02 00 00 00 00 00 00 00 00 00 02 02 00
+0810: 00 00 02 02 00 00 00 00 00 00 00 00 00 02 02 00
+0820: 00 00 02 02 00 00 00 00 00 00 00 00 02 02 02 00
+0830: 00 00 02 02 02 00 00 00 00 00 00 00 02 02 00 00
+0840: 00 00 02 02 02 00 00 00 00 00 00 00 02 02 00 00
+0850: 00 00 02 02 02 00 00 00 00 00 00 00 02 02 00 00
+0860: 00 00 00 02 02 00 00 00 00 00 00 00 02 01 00 00
+0870: 00 00 00 02 01 01 00 00 00 00 00 00 01 00 00 00
+0880: 00 00 00 01 01 01 00 00 00 00 00 01 01 00 00 00
+0890: 00 00 00 00 01 01 00 00 00 00 00 01 01 00 00 00
+08a0: 00 00 00 00 01 01 01 00 00 00 00 01 01 00 00 00
+08b0: 00 00 00 00 00 01 01 00 00 00 00 01 00 00 00 00
+08c0: 00 00 00 00 00 01 01 01 00 00 01 01 00 00 00 00
+08d0: 00 00 00 00 00 00 01 01 00 00 01 00 00 00 00 00
+08e0: 00 00 00 00 00 00 01 01 01 01 01 00 00 00 00 00
+08f0: 00 00 00 00 00 00 00 01 01 01 00 00 00 00 00 00
+0900: 00 00 00 02 02 00 00 00 00 00 00 00 02 02 02 00
+0910: 00 00 00 02 02 00 00 00 00 00 00 00 02 02 02 00
+0920: 00 00 00 02 02 00 00 00 00 00 00 00 02 02 02 00
+0930: 00 00 02 02 02 00 00 00 00 00 00 00 02 02 02 00
+0940: 00 00 02 02 02 00 00 00 00 00 00 02 02 02 00 00
+0950: 00 00 02 02 02 00 00 00 00 00 00 02 02 02 00 00
+0960: 00 00 02 02 02 02 00 00 00 00 02 02 02 00 00 00
+0970: 00 00 02 02 02 02 02 02 02 02 02 02 00 00 00 00
+0980: 00 00 02 02 00 00 02 02 02 02 00 00 00 00 00 00
+0990: 00 00 02 01 00 00 00 00 00 00 00 00 00 00 00 00
+09a0: 00 00 01 01 00 00 00 00 00 00 00 00 00 01 01 00
+09b0: 00 00 01 01 00 00 00 00 00 00 00 00 01 01 01 00
+09c0: 00 00 00 01 01 00 00 00 00 00 00 01 01 01 00 00
+09d0: 00 00 00 01 01 01 00 00 00 00 01 01 01 01 00 00
+09e0: 00 00 00 00 01 01 01 01 01 01 01 01 00 00 00 00
+09f0: 00 00 00 00 00 01 01 01 01 01 00 00 00 00 00 00
+0a00: 00 00 00 02 02 02 00 00 00 00 00 00 02 02 02 00
+0a10: 00 00 00 02 02 00 00 00 00 00 00 00 02 02 02 00
+0a20: 00 00 00 02 02 00 00 00 00 00 00 00 00 02 02 00
+0a30: 00 00 00 02 02 00 00 00 00 00 00 00 00 02 02 00
+0a40: 00 00 00 00 02 00 00 00 00 00 00 00 00 02 02 00
+0a50: 00 00 00 00 00 00 02 02 02 02 02 02 02 02 02 00
+0a60: 00 00 00 00 02 02 02 02 02 02 02 02 02 02 02 00
+0a70: 00 00 00 01 02 02 02 00 00 00 00 00 02 02 01 00
+0a80: 00 00 01 01 01 00 00 00 00 00 00 00 00 01 01 00
+0a90: 00 01 01 01 00 00 00 00 00 00 00 00 00 01 01 00
+0aa0: 00 01 01 01 00 00 00 00 00 00 00 00 01 01 01 00
+0ab0: 00 01 01 01 00 00 00 00 00 00 00 00 01 01 01 00
+0ac0: 00 01 01 01 01 00 00 00 00 00 00 01 01 01 01 00
+0ad0: 00 00 01 01 01 01 01 00 01 01 01 01 01 01 01 00
+0ae0: 00 00 00 01 01 01 01 01 01 01 01 01 00 01 01 00
+0af0: 00 00 00 00 00 01 01 01 01 01 00 00 00 01 01 00
+0b00: 00 00 02 02 02 00 00 00 00 00 00 00 02 02 00 00
+0b10: 00 00 02 02 02 00 00 00 00 00 00 00 00 02 00 00
+0b20: 00 00 02 02 00 00 00 00 00 00 00 00 00 02 02 00
+0b30: 00 02 02 02 00 00 00 00 00 00 00 00 00 02 02 00
+0b40: 00 02 02 02 00 00 00 00 00 00 00 00 00 02 02 00
+0b50: 00 02 02 02 00 00 00 00 00 00 00 00 00 02 02 00
+0b60: 00 02 02 02 00 00 00 00 00 00 00 00 00 02 01 00
+0b70: 00 02 01 01 00 00 00 00 00 00 00 00 00 01 01 00
+0b80: 00 01 01 01 00 00 00 00 00 00 00 00 00 01 01 00
+0b90: 00 01 01 01 00 00 00 00 00 00 00 00 01 01 01 00
+0ba0: 00 01 01 01 00 00 00 00 00 00 00 00 01 01 00 00
+0bb0: 00 00 01 01 01 00 00 00 00 00 00 00 01 01 00 00
+0bc0: 00 00 01 01 01 00 00 00 00 00 00 01 01 00 00 00
+0bd0: 00 00 00 01 01 01 01 01 00 00 01 01 01 00 00 00
+0be0: 00 00 00 00 01 01 01 01 01 01 01 01 00 00 00 00
+0bf0: 00 00 00 00 00 01 01 01 01 01 00 00 00 00 00 00
+0c00: 00 00 02 02 02 00 00 00 00 00 00 00 02 02 00 00
+0c10: 00 00 02 02 02 00 00 00 00 00 00 02 02 00 00 00
+0c20: 00 00 02 02 02 00 00 00 00 00 00 02 02 00 00 00
+0c30: 00 00 02 02 02 00 00 00 00 00 00 02 00 00 00 00
+0c40: 00 02 02 02 00 00 00 00 00 00 02 00 00 00 00 00
+0c50: 00 02 02 02 00 00 00 00 00 00 00 00 00 00 00 00
+0c60: 00 02 02 02 00 00 00 00 00 00 00 00 00 00 00 00
+0c70: 00 02 01 01 00 00 00 00 00 00 00 00 00 00 00 00
+0c80: 00 01 01 01 00 00 00 00 00 00 00 00 00 00 00 00
+0c90: 00 01 01 01 00 00 00 00 00 00 00 00 00 01 01 00
+0ca0: 00 01 01 01 00 00 00 00 00 00 00 00 00 01 01 00
+0cb0: 00 01 01 01 01 00 00 00 00 00 00 00 01 01 01 00
+0cc0: 00 00 01 01 01 00 00 00 00 00 00 01 01 01 00 00
+0cd0: 00 00 00 01 01 01 00 00 00 01 01 01 01 00 00 00
+0ce0: 00 00 00 01 01 01 01 01 01 01 01 01 00 00 00 00
+0cf0: 00 00 00 00 00 01 01 01 01 01 00 00 00 00 00 00
+0d00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0d10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0d20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0d30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0d40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0d50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0d60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0d70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0d80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0d90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0da0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0db0: 00 00 00 00 00 00 00 02 02 02 02 02 00 00 00 00
+0dc0: 00 00 00 00 00 00 02 02 02 02 02 02 02 00 00 00
+0dd0: 00 00 00 00 00 02 02 00 00 00 02 02 02 00 00 00
+0de0: 00 00 00 00 02 02 00 00 00 00 00 02 02 02 00 00
+0df0: 00 00 00 02 02 02 00 00 00 00 00 00 02 02 00 00