From 122724b396fe1a8e394a88928eb723d36f99f424 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Mar 2026 02:02:21 +0000 Subject: [PATCH 01/16] Initial plan From e07ada910a1d783690061d3f2758a68d8f8edc5c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Mar 2026 02:47:26 +0000 Subject: [PATCH 02/16] Add crypto sample: port C game to C# for dotnes NES transpiler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Port the complete crypto.c (3092 lines) game to C# targeting the dotnes NES transpiler. This is a 2-player cooperative dungeon crawler where players carry items to target positions while fighting enemies. Key porting decisions: - All mutable state in static class G - for loops converted to while loops - switch on PAD values converted to if/else chains - Signed char metasprite offsets converted to unsigned bytes (-8→0xF8, -16→0xF0) - OAM attribute byte combinations precomputed (e.g. 1|OAM_FLIP_V→0x81) - Palette bug fixed: 0x379 truncated to 0x79 - vram_write calls skipped (CHR comes from .s file) - int_temp0 uses int type for 16-bit screen coordinate math - Byte arithmetic uses explicit casts where needed Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- samples/crypto/Program.cs | 1885 +++++++++++++++++++++++++++++++++++++ 1 file changed, 1885 insertions(+) create mode 100644 samples/crypto/Program.cs diff --git a/samples/crypto/Program.cs b/samples/crypto/Program.cs new file mode 100644 index 00000000..3b956824 --- /dev/null +++ b/samples/crypto/Program.cs @@ -0,0 +1,1885 @@ +#pragma warning disable CS0649, CS8321, CS0219 +using NES; +using static NES.NESLib; + +const byte PLAYER_1 = 0; +const byte PLAYER_2 = 1; + +const byte PAD_UP = (byte)PAD.UP; +const byte PAD_DOWN = (byte)PAD.DOWN; +const byte PAD_LEFT = (byte)PAD.LEFT; +const byte PAD_RIGHT = (byte)PAD.RIGHT; +const byte PAD_A = (byte)PAD.A; +const byte PAD_B = (byte)PAD.B; +const byte PAD_START = (byte)PAD.START; +const byte PAD_DPAD = PAD_LEFT | PAD_RIGHT | PAD_UP | PAD_DOWN; + +const byte OAM_FLIP_H = 0x40; +const byte OAM_FLIP_V = 0x80; + +const byte min_x = 60; +const byte max_x = 195; +const byte min_y = 60; +const byte max_y = 180; + +const ushort NAMETABLE_A = 0x2000; +const ushort NAMETABLE_B = 0x2400; +const ushort NAMETABLE_C = 0x2800; +const ushort NAMETABLE_D = 0x2C00; + +static byte isBlocked(byte x, byte y) +{ + if (x > 122 && x < 134 && y > 114 && y < 125) + { + return 1; + } + if (x < 128) + { + if (y < 120) + { + return collision_top_left[(x >> 3) + ((y >> 3) << 4)]; + } + else + { + y -= 120; + return collision_bottom_left[(x >> 3) + ((y >> 3) << 4)]; + } + } + else + { + x -= 128; + if (y < 120) + { + return collision_top_right[(x >> 3) + ((y >> 3) << 4)]; + } + else + { + y -= 120; + return collision_bottom_right[(x >> 3) + ((y >> 3) << 4)]; + } + } +} + +static void took_damage() +{ + G.j = 0; + while (G.j < 8) + { + if (G.enemies_health[G.j] == 0) + { + G.j++; + continue; + } + G.temp2 = G.enemies_x[G.j]; + G.temp3 = G.enemies_y[G.j]; + if (G.temp0 > G.temp2) + G.temp4 = (byte)(G.temp0 - G.temp2); + else + G.temp4 = (byte)(G.temp2 - G.temp0); + if (G.temp1 > G.temp3) + G.temp5 = (byte)(G.temp1 - G.temp3); + else + G.temp5 = (byte)(G.temp3 - G.temp1); + if (G.temp4 < G.temp6 && G.temp5 < G.temp7) + { + G.enemies_health[G.j]--; + if (G.enemies_health[G.j] != 0) + { + G.enemy_push_timer[G.j] = 4; + G.enemy_push_dir[G.j] = G.player_dir[G.i]; + } + else + { + sfx_play(1, 0); + } + break; + } + G.j++; + } +} + +static void tick_enemies() +{ + G.temp4 = (byte)(rand8() & 7); + G.i = 0; + while (G.i < 8) + { + if (G.enemies_health[G.i] == 0 && (G.frame & 7) == G.i) + { + G.enemies_x[G.i] = G.enemy_spawn_points_x[G.temp4]; + G.enemies_y[G.i] = G.enemy_spawn_points_y[G.temp4]; + G.enemy_push_timer[G.i] = 0; + G.enemies_health[G.i] = G.spawn_hp; + G.enemies_type[G.i] = (byte)(G.i & 1); + return; + } + G.i++; + } + + G.temp2 = (byte)(G.frame & 7); + G.enemy_leg[G.temp2] = (byte)(1 - G.enemy_leg[G.temp2]); + G.temp1 = G.enemies_enemy[G.temp2]; + + G.temp6 = (byte)(rand8() & 3); + if (G.temp6 == 0) + { + G.temp6 = (byte)(rand8() & 3); + if (G.temp6 == 0) G.temp3 = PAD_LEFT; + else if (G.temp6 == 1) G.temp3 = PAD_RIGHT; + else if (G.temp6 == 2) G.temp3 = PAD_UP; + else G.temp3 = PAD_DOWN; + } + else if (G.temp6 == 1) + { + G.temp3 = G.enemies_dir[G.temp2]; + } + else + { + G.temp0 = (byte)(rand8() & 1); + if (G.temp0 != 0) + { + if (G.enemies_x[G.temp2] > G.player_x[G.temp1]) + G.temp3 = PAD_LEFT; + else + G.temp3 = PAD_RIGHT; + } + else + { + if (G.enemies_y[G.temp2] > G.player_y[G.temp1]) + G.temp3 = PAD_UP; + else + G.temp3 = PAD_DOWN; + } + } + + G.enemies_dir[G.temp2] = G.temp3; + G.temp6 = G.enemies_x[G.temp2]; + G.temp7 = G.enemies_y[G.temp2]; + + if (G.enemy_push_timer[G.temp2] != 0) + { + } + else if (G.temp3 == PAD_RIGHT) + G.enemies_x[G.temp2] += G.enemy_speed; + else if (G.temp3 == PAD_LEFT) + G.enemies_x[G.temp2] -= G.enemy_speed; + else if (G.temp3 == PAD_UP) + G.enemies_y[G.temp2] -= G.enemy_speed; + else if (G.temp3 == PAD_DOWN) + G.enemies_y[G.temp2] += G.enemy_speed; + + G.temp5 = isBlocked(G.enemies_x[G.temp2], G.enemies_y[G.temp2]); + if (G.temp5 != 0) + { + G.enemies_x[G.temp2] = G.temp6; + G.enemies_y[G.temp2] = G.temp7; + } + else + { + G.i = 0; + while (G.i < 8) + { + if (G.temp2 != G.i) + { + if ((byte)(G.enemies_x[G.i] - 6) < G.enemies_x[G.temp2] && (byte)(G.enemies_x[G.i] + 6) > G.enemies_x[G.temp2]) + { + if ((byte)(G.enemies_y[G.i] - 6) < G.enemies_y[G.temp2] && (byte)(G.enemies_y[G.i] + 6) > G.enemies_y[G.temp2]) + { + G.enemies_x[G.temp2] = G.temp6; + G.enemies_y[G.temp2] = G.temp7; + } + } + } + G.i++; + } + } + + G.i = 0; + while (G.i < 8) + { + if (G.enemy_push_timer[G.i] != 0 && (G.frame & 3) != 0) + { + if ((G.frame & 1) != 0) + { + G.enemy_push_timer[G.i]--; + G.temp6 = G.enemies_x[G.i]; + G.temp7 = G.enemies_y[G.i]; + if (G.enemy_push_dir[G.i] == PAD_LEFT) G.enemies_x[G.i] -= 2; + else if (G.enemy_push_dir[G.i] == PAD_RIGHT) G.enemies_x[G.i] += 2; + else if (G.enemy_push_dir[G.i] == PAD_UP) G.enemies_y[G.i] -= 2; + else if (G.enemy_push_dir[G.i] == PAD_DOWN) G.enemies_y[G.i] += 2; + if (isBlocked(G.enemies_x[G.i], G.enemies_y[G.i]) != 0) + { + G.enemies_x[G.i] = G.temp6; + G.enemies_y[G.i] = G.temp7; + } + } + } + + G.temp5 = 0; + G.j = 0; + while (G.j < 2) + { + if ((G.frame & G.enemy_damage_modifier) == 0) + { + if ((byte)(G.enemies_x[G.i] - 5) < G.player_x[G.j] && (byte)(G.enemies_x[G.i] + 5) > G.player_x[G.j]) + { + if ((byte)(G.enemies_y[G.i] - 5) < G.player_y[G.j] && (byte)(G.enemies_y[G.i] + 5) > G.player_y[G.j]) + { + if (G.player_hp[G.j] != 0 && G.player_god_mode[G.j] == 0) + { + G.temp5 = 1; + G.player_hp[G.j]--; + G.player_god_mode[G.j] = 4; + sfx_play(0, 1); + } + if (G.player_hp[G.j] == 0 && G.enemies_enemy[G.i] == G.j) + { + G.enemies_enemy[G.i] = (byte)(1 - G.enemies_enemy[G.i]); + } + } + } + } + G.j++; + } + + G.int_temp0 = G.enemies_x[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_x; + if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } + G.temp0 = (byte)G.int_temp0; + + G.int_temp0 = G.enemies_y[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_y; + if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } + G.temp1 = (byte)G.int_temp0; + + if ((G.enemy_push_timer[G.i] & 1) != 0) + { + if (G.temp5 != 0) + { + if (G.enemies_type[G.i] == 0) + { + if (G.enemies_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, spider_damaged_attack_up); + else if (G.enemies_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, spider_damaged_attack_down); + else if (G.enemies_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, spider_damaged_attack_left); + else if (G.enemies_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, spider_damaged_attack_right); + } + else + { + if (G.enemies_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, bat_damaged_attack_up); + else if (G.enemies_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, bat_damaged_attack_down); + else if (G.enemies_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, bat_damaged_attack_left); + else if (G.enemies_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, bat_damaged_attack_right); + } + } + else + { + if (G.enemy_leg[G.i] != 0) + { + if (G.enemies_type[G.i] == 0) + { + if (G.enemies_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_up); + else if (G.enemies_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_down); + else if (G.enemies_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_left); + else if (G.enemies_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_right); + } + else + { + if (G.enemies_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_up); + else if (G.enemies_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_down); + else if (G.enemies_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_left); + else if (G.enemies_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_right); + } + } + else + { + if (G.enemies_type[G.i] == 0) + { + if (G.enemies_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_up); + else if (G.enemies_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_down); + else if (G.enemies_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_left); + else if (G.enemies_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_right); + } + else + { + if (G.enemies_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_up); + else if (G.enemies_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_down); + else if (G.enemies_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_left); + else if (G.enemies_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_right); + } + } + } + } + else + { + if (G.temp5 != 0) + { + if (G.enemies_type[G.i] == 0) + { + if (G.enemies_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, spider_attack_up); + else if (G.enemies_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, spider_attack_down); + else if (G.enemies_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, spider_attack_left); + else if (G.enemies_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, spider_attack_right); + } + else + { + if (G.enemies_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, bat_attack_up); + else if (G.enemies_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, bat_attack_down); + else if (G.enemies_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, bat_attack_left); + else if (G.enemies_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, bat_attack_right); + } + } + else + { + if (G.enemy_leg[G.i] != 0) + { + if (G.enemies_type[G.i] == 0) + { + if (G.enemies_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_up); + else if (G.enemies_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_down); + else if (G.enemies_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_left); + else if (G.enemies_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_right); + } + else + { + if (G.enemies_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_up); + else if (G.enemies_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_down); + else if (G.enemies_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_left); + else if (G.enemies_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_right); + } + } + else + { + if (G.enemies_type[G.i] == 0) + { + if (G.enemies_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_up); + else if (G.enemies_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_down); + else if (G.enemies_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_left); + else if (G.enemies_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_right); + } + else + { + if (G.enemies_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_up); + else if (G.enemies_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_down); + else if (G.enemies_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_left); + else if (G.enemies_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_right); + } + } + } + } + G.i++; + } +} + +static void draw_player() +{ + if (G.i == 0) + { + if (G.player_carry[0] != 0xFF) + { + if ((G.temp2 & PAD_DPAD) != 0) + { + if (G.player_carry_dir[0] == PAD_UP) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_up); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_up); + } + else if (G.player_carry_dir[0] == PAD_DOWN) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_down); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_down); + } + else if (G.player_carry_dir[0] == PAD_LEFT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_left); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_left); + } + else if (G.player_carry_dir[0] == PAD_RIGHT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_right); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_right); + } + } + else + { + if (G.player_carry_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_up); + else if (G.player_carry_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_down); + else if (G.player_carry_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_left); + else if (G.player_carry_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_right); + } + } + else if (G.player_attack_tick[G.i] != 0) + { + if (G.player_dir[G.i] == PAD_UP) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_up); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_up); + } + else if (G.player_dir[G.i] == PAD_DOWN) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_down); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_down); + } + else if (G.player_dir[G.i] == PAD_LEFT) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_left); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_left); + } + else if (G.player_dir[G.i] == PAD_RIGHT) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_right); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_right); + } + G.player_attack_tick[G.i]--; + } + else if ((G.temp2 & PAD_DPAD) != 0) + { + if (G.player_dir[G.i] == PAD_UP) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_up); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_up); + } + else if (G.player_dir[G.i] == PAD_DOWN) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_down); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_down); + } + else if (G.player_dir[G.i] == PAD_LEFT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_left); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_left); + } + else if (G.player_dir[G.i] == PAD_RIGHT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_right); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_right); + } + } + else + { + if (G.player_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_up); + else if (G.player_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_down); + else if (G.player_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_left); + else if (G.player_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_right); + } + } + else if (G.i == 1) + { + if (G.player_carry[1] != 0xFF) + { + if ((G.temp2 & PAD_DPAD) != 0) + { + if (G.player_carry_dir[1] == PAD_UP) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_up); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_up); + } + else if (G.player_carry_dir[1] == PAD_DOWN) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_down); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_down); + } + else if (G.player_carry_dir[1] == PAD_LEFT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_left); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_left); + } + else if (G.player_carry_dir[1] == PAD_RIGHT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_right); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_right); + } + } + else + { + if (G.player_carry_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_up); + else if (G.player_carry_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_down); + else if (G.player_carry_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_left); + else if (G.player_carry_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_right); + } + } + else if (G.player_attack_tick[G.i] != 0) + { + if (G.player_dir[G.i] == PAD_UP) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_up); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_up); + } + else if (G.player_dir[G.i] == PAD_DOWN) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_down); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_down); + } + else if (G.player_dir[G.i] == PAD_LEFT) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_left); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_left); + } + else if (G.player_dir[G.i] == PAD_RIGHT) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_right); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_right); + } + G.player_attack_tick[G.i]--; + } + else if ((G.temp2 & PAD_DPAD) != 0) + { + if (G.player_dir[G.i] == PAD_UP) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_up); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_up); + } + else if (G.player_dir[G.i] == PAD_DOWN) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_down); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_down); + } + else if (G.player_dir[G.i] == PAD_LEFT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_left); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_left); + } + else if (G.player_dir[G.i] == PAD_RIGHT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_right); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_right); + } + } + else + { + if (G.player_dir[G.i] == PAD_UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_up); + else if (G.player_dir[G.i] == PAD_DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_down); + else if (G.player_dir[G.i] == PAD_LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_left); + else if (G.player_dir[G.i] == PAD_RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_right); + } + } +} + +static void tick_players() +{ + if (G.player_hp[0] >= 4) + { + G.spr = oam_spr(0x10, 0x10, 0x60, 0x00, G.spr); + G.spr = oam_spr(0x10, 0x20, 0x60, 0x00, G.spr); + } + else if (G.player_hp[0] == 3) + { + G.spr = oam_spr(0x10, 0x10, 0x62, 0x00, G.spr); + G.spr = oam_spr(0x10, 0x20, 0x60, 0x00, G.spr); + } + else if (G.player_hp[0] == 2) + { + G.spr = oam_spr(0x10, 0x10, 0x64, 0x00, G.spr); + G.spr = oam_spr(0x10, 0x20, 0x60, 0x00, G.spr); + } + else if (G.player_hp[0] == 1) + { + G.spr = oam_spr(0x10, 0x10, 0x64, 0x00, G.spr); + G.spr = oam_spr(0x10, 0x20, 0x62, 0x00, G.spr); + } + else + { + G.spr = oam_spr(0x10, 0x10, 0x64, 0x00, G.spr); + G.spr = oam_spr(0x10, 0x20, 0x64, 0x00, G.spr); + } + if (G.player_hp[1] >= 4) + { + G.spr = oam_spr(0xE8, 0x10, 0x60, 0x01, G.spr); + G.spr = oam_spr(0xE8, 0x20, 0x60, 0x01, G.spr); + } + else if (G.player_hp[1] == 3) + { + G.spr = oam_spr(0xE8, 0x10, 0x62, 0x01, G.spr); + G.spr = oam_spr(0xE8, 0x20, 0x60, 0x01, G.spr); + } + else if (G.player_hp[1] == 2) + { + G.spr = oam_spr(0xE8, 0x10, 0x64, 0x01, G.spr); + G.spr = oam_spr(0xE8, 0x20, 0x60, 0x01, G.spr); + } + else if (G.player_hp[1] == 1) + { + G.spr = oam_spr(0xE8, 0x10, 0x64, 0x01, G.spr); + G.spr = oam_spr(0xE8, 0x20, 0x62, 0x01, G.spr); + } + else + { + G.spr = oam_spr(0xE8, 0x10, 0x64, 0x01, G.spr); + G.spr = oam_spr(0xE8, 0x20, 0x64, 0x01, G.spr); + } + + G.to_scroll_x = 0; + G.to_scroll_y = 0; + + G.i = 0; + while (G.i < 2) + { + if (G.player_god_mode[G.i] != 0) + { + if ((G.frame & 2) == 0) + { + G.player_god_mode[G.i]--; + pal_col((byte)(16 + (G.i << 2) + 3), palette[16 + (G.i << 2) + 3]); + pal_col((byte)(16 + (G.i << 2) + 1), palette[16 + (G.i << 2) + 1]); + } + else + { + pal_col((byte)(16 + (G.i << 2) + 3), 0x20); + pal_col((byte)(16 + (G.i << 2) + 1), 0x0D); + } + } + if (G.player_hp[G.i] == 0) { G.i++; continue; } + + G.int_temp0 = G.player_x[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_x; + G.temp0 = (byte)G.int_temp0; + + G.int_temp0 = G.player_y[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_y; + G.temp1 = (byte)G.int_temp0; + + G.temp2 = (byte)pad_poll(G.i); + + draw_player(); + + if (G.temp0 < min_x && G.scr_x > 0) + { + G.to_scroll_x = (byte)((min_x - G.temp0) >> 1); + if (G.to_scroll_x > G.scr_x) + G.to_scroll_x = G.scr_x; + G.to_scroll_x_neg = 1; + } + else if (G.temp0 > max_x && G.scr_x < 255) + { + G.to_scroll_x = (byte)((G.temp0 - max_x) >> 1); + if (G.to_scroll_x > (byte)(254 - G.scr_x)) + G.to_scroll_x = (byte)(254 - G.scr_x); + G.to_scroll_x_neg = 0; + } + + if (G.temp1 < min_y && G.scr_y > 0) + { + G.to_scroll_y = (byte)((min_y - G.temp1) >> 1); + if (G.to_scroll_y > G.scr_y) + G.to_scroll_y = G.scr_y; + G.to_scroll_y_neg = 1; + } + else if (G.temp1 > max_y && G.scr_y < 255) + { + G.to_scroll_y = (byte)((G.temp1 - max_y) >> 1); + if (G.to_scroll_y > (byte)(238 - G.scr_y)) + G.to_scroll_y = (byte)(238 - G.scr_y); + G.to_scroll_y_neg = 0; + } + + if ((G.temp2 & PAD_B) != 0) + { + if (G.player_carry[G.i] == 0xFF) + { + G.temp4 = G.player_x[G.i]; + G.temp5 = G.player_y[G.i]; + if (G.player_dir[G.i] == PAD_LEFT) G.temp4 -= 4; + else if (G.player_dir[G.i] == PAD_RIGHT) G.temp4 += 4; + if (G.player_dir[G.i] == PAD_UP) G.temp5 -= 4; + else if (G.player_dir[G.i] == PAD_DOWN) G.temp5 += 2; + G.j = 0; + while (G.j < 4) + { + if (G.item_placed[G.j] == 0) + { + if ((byte)(G.item_x[G.j] - 4) < G.temp4 && (byte)(G.item_x[G.j] + 4) > G.temp4) + { + if ((byte)(G.item_y[G.j] - 5) < G.temp5 && (byte)(G.item_y[G.j] + 5) > G.temp5) + { + if (G.player_carry[(byte)(1 - G.i)] != G.j || G.player_carry_dir[(byte)(1 - G.i)] != G.player_dir[G.i]) + { + G.player_carry[G.i] = G.j; + G.player_carry_dir[G.i] = G.player_dir[G.i]; + sfx_play(5, 3); + } + } + } + } + G.j++; + } + } + } + else + { + G.player_carry[G.i] = 0xFF; + } + + if (G.player_attack_tick[G.i] < 3 && (G.temp2 & PAD_A) != 0) + G.player_attack_tick[G.i] = 16; + + G.temp1 = (byte)(1 - G.i); + + G.temp6 = 0; + if (G.player_carry[G.i] != 0xFF) + { + G.temp6++; + if (G.player_carry[G.temp1] == G.player_carry[G.i]) + G.temp6++; + } + + if (G.temp6 == 2) + { + if (G.i == 0 && (G.frame & 3) == 0) + { + G.temp2 = (byte)((byte)pad_poll(0) & (byte)pad_poll(1)); + if ((G.temp2 & PAD_LEFT) != 0) + { + if (isBlocked((byte)(G.player_x[0] - 1), G.player_y[0]) == 0 && isBlocked((byte)(G.player_x[1] - 1), G.player_y[1]) == 0) + { + G.player_x[0]--; + G.player_x[1]--; + G.item_x[G.player_carry[G.i]]--; + } + } + else if ((G.temp2 & PAD_RIGHT) != 0) + { + if (isBlocked((byte)(G.player_x[0] + 1), G.player_y[0]) == 0 && isBlocked((byte)(G.player_x[1] + 1), G.player_y[1]) == 0) + { + G.player_x[0]++; + G.player_x[1]++; + G.item_x[G.player_carry[G.i]]++; + } + } + if ((G.temp2 & PAD_UP) != 0) + { + if (isBlocked(G.player_x[0], (byte)(G.player_y[0] - 1)) == 0 && isBlocked(G.player_x[1], (byte)(G.player_y[1] - 1)) == 0) + { + G.player_y[0]--; + G.player_y[1]--; + G.item_y[G.player_carry[G.i]]--; + } + } + else if ((G.temp2 & PAD_DOWN) != 0) + { + if (isBlocked(G.player_x[0], (byte)(G.player_y[0] + 1)) == 0 && isBlocked(G.player_x[1], (byte)(G.player_y[1] + 1)) == 0) + { + G.player_y[0]++; + G.player_y[1]++; + G.item_y[G.player_carry[G.i]]++; + } + } + } + } + else if ((G.temp6 == 0 || (G.frame & 7) == G.i) && (G.frame & 1) == G.i) + { + if ((G.player_dir[G.i] & G.temp2) == 0) + { + if ((G.temp2 & PAD_LEFT) != 0) G.player_dir[G.i] = PAD_LEFT; + else if ((G.temp2 & PAD_RIGHT) != 0) G.player_dir[G.i] = PAD_RIGHT; + else if ((G.temp2 & PAD_DOWN) != 0) G.player_dir[G.i] = PAD_DOWN; + else if ((G.temp2 & PAD_UP) != 0) G.player_dir[G.i] = PAD_UP; + } + G.temp4 = G.player_x[G.i]; + G.temp5 = G.player_y[G.i]; + + if ((G.temp2 & PAD_LEFT) != 0) + { + if (G.player_hp[G.temp1] == 0 || G.player_x[G.temp1] < G.player_x[G.i] || (byte)(G.player_x[G.temp1] - G.player_x[G.i]) < 60) + G.player_x[G.i]--; + } + else if ((G.temp2 & PAD_RIGHT) != 0) + { + if (G.player_hp[G.temp1] == 0 || (G.player_x[G.i] < 250 && (G.player_x[G.temp1] > G.player_x[G.i] || (byte)(G.player_x[G.i] - G.player_x[G.temp1]) < 60))) + G.player_x[G.i]++; + } + + if (isBlocked(G.player_x[G.i], G.player_y[G.i]) != 0) + G.player_x[G.i] = G.temp4; + else if (G.player_carry[G.i] != 0xFF) + G.item_x[G.player_carry[G.i]] += (byte)(G.player_x[G.i] - G.temp4); + + if ((G.temp2 & PAD_UP) != 0) + { + if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] < G.player_y[G.i] || (byte)(G.player_y[G.temp1] - G.player_y[G.i]) < 60) + G.player_y[G.i]--; + } + else if ((G.temp2 & PAD_DOWN) != 0) + { + if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] > G.player_y[G.i] || (byte)(G.player_y[G.i] - G.player_y[G.temp1]) < 60) + G.player_y[G.i]++; + } + + if (isBlocked(G.player_x[G.i], G.player_y[G.i]) != 0) + G.player_y[G.i] = G.temp5; + else if (G.player_carry[G.i] != 0xFF) + G.item_y[G.player_carry[G.i]] += (byte)(G.player_y[G.i] - G.temp5); + } + + if (G.player_attack_tick[G.i] == 10) + { + G.temp0 = G.player_x[G.i]; + G.temp1 = G.player_y[G.i]; + G.temp6 = 5; + G.temp7 = 5; + if (G.player_dir[G.i] == PAD_LEFT) { G.temp0 -= 4; G.temp6 = 8; } + else if (G.player_dir[G.i] == PAD_RIGHT) { G.temp0 += 4; G.temp6 = 8; } + if (G.player_dir[G.i] == PAD_UP) { G.temp1 -= 4; G.temp7 = 8; } + else if (G.player_dir[G.i] == PAD_DOWN) { G.temp1 += 3; G.temp7 = 8; } + G.dx = G.temp0; + G.dy = G.temp1; + if (isBlocked(G.temp0, G.temp1) == 0) + took_damage(); + } + G.i++; + } + + G.temp2 = 0; + G.i = 0; + while (G.i < 4) + { + if (G.item_placed[G.i] == 0) + { + if ((byte)(G.item_x[G.i] - item_target_x[G.i]) < 2 || (byte)(item_target_x[G.i] - G.item_x[G.i]) < 2) + { + if ((byte)(G.item_y[G.i] - item_target_y[G.i]) < 2 || (byte)(item_target_y[G.i] - G.item_y[G.i]) < 2) + { + G.item_placed[G.i] = 1; + G.item_x[G.i] = item_target_x[G.i]; + G.item_y[G.i] = item_target_y[G.i]; + if (G.player_carry[0] == G.i) G.player_carry[0] = 0xFF; + if (G.player_carry[1] == G.i) G.player_carry[1] = 0xFF; + sfx_play(2, 3); + } + } + } + if (G.item_placed[G.i] == 0) G.temp2 = 1; + + G.int_temp0 = G.item_x[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_x; + if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } + G.temp0 = (byte)G.int_temp0; + + G.int_temp0 = G.item_y[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_y; + if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } + G.temp1 = (byte)G.int_temp0; + + G.spr = oam_spr((byte)(G.temp0 - 4), (byte)(G.temp1 - 8), (byte)(0xC0 + (G.item_type[G.i] << 1)), 0x03, G.spr); + G.i++; + } + + if (G.temp2 == 0) G.next_level = 1; +} + +static void init() +{ + oam_size(1); + bank_spr(0); + bank_bg(1); + vram_adr(NAMETABLE_A); + vram_unrle(bg_top_left); + vram_adr(NAMETABLE_B); + vram_unrle(bg_top_right); + vram_adr(NAMETABLE_C); + vram_unrle(bg_bottom_left); + vram_adr(NAMETABLE_D); + vram_unrle(bg_bottom_right); + ppu_on_all(); + G.difficulty = 0; + G.next_level = 0; +} + +static void reset() +{ + G.next_level = 0; + G.frame = 0; + G.player_dir[0] = PAD_UP; + G.player_dir[1] = PAD_UP; + G.player_hp[0] = 4; + G.player_hp[1] = 4; + G.scr_x = 128; + G.scr_y = 128; + G.player_x[0] = 120; + G.player_y[0] = 120; + G.player_x[1] = 136; + G.player_y[1] = 120; + G.player_attack_tick[0] = 0; + G.player_attack_tick[1] = 0; + G.enemies_enemy[0] = PLAYER_1; + G.enemies_enemy[1] = PLAYER_2; + G.enemies_enemy[2] = PLAYER_1; + G.enemies_enemy[3] = PLAYER_2; + G.enemies_enemy[4] = PLAYER_1; + G.enemies_enemy[5] = PLAYER_2; + G.enemies_enemy[6] = PLAYER_1; + G.enemies_enemy[7] = PLAYER_2; + G.i = 0; + while (G.i < 8) + { + G.enemies_health[G.i] = 1; + G.enemies_dir[G.i] = PAD_UP; + G.enemy_leg[G.i] = (byte)(G.i & 1); + G.enemies_type[G.i] = (byte)(G.i & 1); + G.i++; + } + G.enemy_spawn_points_x[0] = 184; + G.enemy_spawn_points_y[0] = 24; + G.enemy_spawn_points_x[1] = 232; + G.enemy_spawn_points_y[1] = 72; + G.enemy_spawn_points_x[2] = 232; + G.enemy_spawn_points_y[2] = 168; + G.enemy_spawn_points_x[3] = 184; + G.enemy_spawn_points_y[3] = 216; + G.enemy_spawn_points_x[4] = 72; + G.enemy_spawn_points_y[4] = 217; + G.enemy_spawn_points_x[5] = 24; + G.enemy_spawn_points_y[5] = 167; + G.enemy_spawn_points_x[6] = 24; + G.enemy_spawn_points_y[6] = 73; + G.enemy_spawn_points_x[7] = 72; + G.enemy_spawn_points_y[7] = 24; + G.i = 0; + while (G.i < 8) + { + G.enemies_x[G.i] = G.enemy_spawn_points_x[G.i]; + G.enemies_y[G.i] = G.enemy_spawn_points_y[G.i]; + G.enemy_push_timer[G.i] = 0; + G.i++; + } + G.item_type[0] = 1; + G.item_x[0] = 128; + G.item_y[0] = 88; + G.item_type[1] = 2; + G.item_x[1] = 128; + G.item_y[1] = 108; + G.item_type[2] = 3; + G.item_x[2] = 128; + G.item_y[2] = 128; + G.item_type[3] = 4; + G.item_x[3] = 128; + G.item_y[3] = 148; + + G.i = 0; + while (G.i < 4) + { + G.temp0 = (byte)(rand8() & 0xFE); + G.item_x[G.i] = (byte)(spawn[G.temp0] << 3); + G.item_y[G.i] = (byte)(spawn[G.temp0 + 1] << 3); + byte retry = 0; + G.j = 0; + while (G.j < G.i) + { + if (G.item_x[G.i] == G.item_x[G.j] && G.item_y[G.i] == G.item_y[G.j]) + { + retry = 1; + break; + } + G.j++; + } + if (retry == 0) G.i++; + } + + G.i = 0; + while (G.i < 4) + { + G.item_x[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); + G.item_y[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); + G.i++; + } + + G.player_carry[0] = 0xFF; + G.player_carry[1] = 0xFF; + G.item_placed[0] = 0; + G.item_placed[1] = 0; + G.item_placed[2] = 0; + G.item_placed[3] = 0; + G.player_god_mode[0] = 0; + G.player_god_mode[1] = 0; + + G.difficulty++; + if (G.difficulty == 1) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 1; } + else if (G.difficulty == 2) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 2; } + else if (G.difficulty == 4) { G.enemy_speed = 3; G.enemy_damage_modifier = 31; G.spawn_hp = 2; } + else if (G.difficulty == 6) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 3; } + else if (G.difficulty == 7) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 4; } + else if (G.difficulty == 8) { G.enemy_speed = 4; G.enemy_damage_modifier = 15; G.spawn_hp = 5; } + else if (G.difficulty == 9) { G.enemy_speed = 4; G.enemy_damage_modifier = 7; G.spawn_hp = 6; } + else if (G.difficulty >= 10) { G.enemy_speed = 5; G.enemy_damage_modifier = 7; G.spawn_hp = (byte)(6 + (G.difficulty - 10)); } + scroll(G.scr_x, G.scr_y); +} + +byte[] palette = new byte[] { + 0x0D, 0x00, 0x3D, 0x3C, 0x0D, 0x09, 0x1B, 0x3C, 0x07, 0x28, 0x0F, 0x79, 0x07, 0x21, 0x1C, 0x0F, + 0x00, 0x11, 0x16, 0x0D, 0x00, 0x27, 0x16, 0x0D, 0x00, 0x17, 0x15, 0x29, 0x00, 0x27, 0x16, 0x0D +}; + +byte[] paused_palette = new byte[] { + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x00, 0x11, 0x16, 0x0D, 0x00, 0x27, 0x16, 0x0D, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F +}; + +byte[] bg_menu = new byte[] { + 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xEA, + 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, + 0x81, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE6, + 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, + 0x77, 0xC1, 0xC0, 0xDD, 0x00, 0x00, 0xFB, 0x42, 0x41, 0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, + 0x39, 0x38, 0x40, 0x37, 0x36, 0x40, 0x40, 0x35, 0x34, 0x33, 0x42, 0xDD, 0x00, 0x00, 0xFB, 0xFA, + 0xF9, 0xBC, 0xBB, 0xDF, 0xFF, 0xFF, 0xDE, 0x32, 0x31, 0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, + 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x1F, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, + 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x1E, 0x1D, 0x42, 0x1C, 0x24, 0x1B, 0x1A, 0x19, 0x18, + 0x17, 0x42, 0x16, 0x15, 0x42, 0x24, 0x14, 0x13, 0x12, 0x11, 0x10, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x42, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, + 0x07, 0x09, 0x08, 0x07, 0x42, 0x0C, 0x06, 0x42, 0x05, 0x04, 0x42, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xB6, 0xB5, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x68, 0x67, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xB4, 0xB3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x66, 0x65, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE0, 0xB2, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0xFA, 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xB1, + 0xB0, 0x64, 0x63, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xC1, + 0xC0, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xAF, + 0xAE, 0x62, 0x61, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xBC, + 0xBB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x60, + 0x5F, 0x4A, 0x49, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x5E, + 0x5D, 0x48, 0x47, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x02, 0x0B, 0xFA, 0xF9, + 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, 0xDE, 0xF2, 0xF1, + 0xF2, 0xF1, 0x00, 0x02, 0x0B, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x59, 0x58, 0x00, 0x02, 0x0B, 0x46, 0x45, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x57, 0x56, + 0x00, 0x02, 0x0B, 0x44, 0x43, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x02, 0x0B, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, + 0xFA, 0xF9, 0xFA, 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x02, + 0x0B, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x02, 0x0B, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x02, 0x0B, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, + 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xE2, 0xE1, 0x02, 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xCB, 0xCA, + 0xF2, 0xF1, 0xDF, 0xFF, 0x02, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, + 0xFB, 0xF2, 0xF1, 0x55, 0x02, 0x07, 0x11, 0x84, 0xA5, 0x02, 0x03, 0x21, 0x44, 0x55, 0x59, 0x5A, + 0x02, 0x03, 0x56, 0x55, 0x55, 0x45, 0x55, 0x02, 0x03, 0x15, 0x55, 0x55, 0x44, 0x55, 0x02, 0x03, + 0x11, 0x55, 0x55, 0x54, 0x11, 0x00, 0x00, 0x44, 0x51, 0x55, 0x02, 0x02, 0x11, 0x00, 0x00, 0x44, + 0x55, 0x55, 0x01, 0x04, 0x05, 0x00, 0x00, 0x05, 0x01, 0x04, 0x04, 0x02, 0x00 +}; + +byte[] bg_top_left = new byte[] { + 0x01, 0x00, 0x01, 0x63, 0xFF, 0x01, 0x0B, 0xFE, 0xFD, 0xFD, 0xFC, 0xFF, 0x01, 0x0B, 0x00, 0x01, + 0x02, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF6, 0xF5, + 0xF4, 0xF3, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, + 0x02, 0xFB, 0xF2, 0xF1, 0xF0, 0xEF, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xEE, 0xED, + 0xEC, 0xEB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, + 0x02, 0xFB, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, + 0x02, 0xFB, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, + 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x05, 0xE0, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x00, 0x01, 0x02, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xDC, 0xDB, 0xDA, 0xD9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xD8, 0xD7, 0xFA, 0xF9, 0xFA, 0xF9, 0xD6, 0xD5, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xD4, 0xD3, 0xD2, 0xD1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xD0, 0xCF, 0xF2, 0xF1, 0xF2, 0xF1, 0xCE, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE0, 0xDC, + 0xDB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xD4, 0xD3, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xDF, 0xFF, 0x00, 0x01, 0x02, 0xFB, 0xCD, 0xCC, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xCB, 0xCA, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xC9, 0xC8, 0xC7, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xEA, 0xE9, 0x00, 0x01, 0x02, 0xC6, 0xC5, 0xC4, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xE6, 0xE5, 0x00, 0x01, 0x02, 0xC6, 0xC3, 0xC2, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0x00, 0x00, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xE2, 0xE1, 0x01, 0x02, 0x00, 0x01, 0x02, 0xBF, 0xBE, 0xBD, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xDF, 0xFF, 0x01, 0x02, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xBA, 0xB9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xD6, 0xD5, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xB8, 0xB7, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xCE, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xB6, 0xB5, + 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xCB, 0xCA, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xB4, 0xB3, + 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xDA, 0xD9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE0, 0xB2, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xD2, 0xD1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x05, + 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xB1, + 0xB0, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x05, 0xFB, 0xF2, 0xF1, + 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xAF, 0xAE, 0x00, 0x01, + 0x08, 0x55, 0x01, 0x06, 0x00, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x11, 0x00, 0x55, 0x44, 0x55, + 0x01, 0x03, 0x51, 0x00, 0x55, 0x44, 0x55, 0x11, 0x44, 0x55, 0x05, 0x00, 0x55, 0x01, 0x06, 0x00, + 0x55, 0x01, 0x03, 0x45, 0x55, 0x55, 0x00, 0x05, 0x00, 0x00, 0x05, 0x04, 0x05, 0x01, 0x02, 0x01, + 0x00 +}; + +byte[] collision_top_left = new byte[] { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +byte[] bg_top_right = new byte[] { + 0x02, 0x00, 0x02, 0x5F, 0xFF, 0x02, 0x0B, 0xFE, 0xFD, 0xFD, 0xFC, 0xFF, 0x02, 0x0B, 0x00, 0x02, + 0x03, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF8, 0xF7, 0xFA, 0xF9, 0xDA, 0xD9, 0xF6, 0xF5, 0xF4, + 0xF3, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, + 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF0, 0xEF, 0xF2, 0xF1, 0xD2, 0xD1, 0xEE, 0xED, 0xEC, + 0xEB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, + 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, + 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, + 0x02, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x02, + 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0x02, 0x05, 0xDE, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xDC, 0xDB, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xAD, 0xAC, 0xAB, 0xAA, 0xA9, 0xA8, 0xA7, 0xA6, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xD4, 0xD3, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xA5, 0xA4, 0xA3, 0xA2, 0xA1, 0xA0, 0x9F, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xCD, 0xCC, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x9E, 0x9D, 0x9C, 0xF9, 0x9B, 0x9A, 0x99, 0x98, 0xE2, 0xE0, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xCB, 0xCA, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x97, 0x96, 0x95, 0x94, 0x93, 0x92, 0xF2, 0x91, 0xDD, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x90, 0x8F, 0x8E, 0x8D, 0x8C, 0xF9, 0x8B, 0x8A, 0xDD, 0xFB, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0xDD, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0x81, 0x80, 0x7F, 0x7E, 0x7D, 0x7C, 0x7B, 0xDD, 0xFB, 0xFA, + 0xF9, 0x7A, 0x79, 0x78, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0xDD, 0xFB, 0xF2, + 0xF1, 0x70, 0x6F, 0x6E, 0x00, 0x02, 0x02, 0xE1, 0x02, 0x02, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xDD, 0x00, 0x00, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0xFB, 0xDA, + 0xD9, 0x6D, 0x6C, 0x6E, 0x00, 0x02, 0x02, 0xFF, 0x02, 0x02, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, 0xDE, 0xD2, + 0xD1, 0x6B, 0x6A, 0x69, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xC1, 0xC0, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xBC, 0xBB, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0x68, 0x67, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0x66, 0x65, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0xFA, + 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0xF2, + 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0x64, 0x63, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xC1, 0xC0, 0xE2, 0xE1, 0x02, 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, + 0xDD, 0x00, 0x02, 0x02, 0x62, 0x61, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, + 0xF2, 0xF1, 0xBC, 0xBB, 0xDD, 0x00, 0x02, 0x05, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, + 0x0A, 0x55, 0x02, 0x06, 0x00, 0x44, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x00, 0x54, 0x55, 0x02, + 0x03, 0x11, 0x55, 0x00, 0x05, 0x55, 0x11, 0x44, 0x55, 0x11, 0x55, 0x00, 0x55, 0x02, 0x06, 0x00, + 0x55, 0x55, 0x15, 0x55, 0x02, 0x03, 0x00, 0x05, 0x05, 0x01, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, + 0x02, 0x00 +}; + +byte[] collision_top_right = new byte[] { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01 +}; + +byte[] bg_bottom_left = new byte[] { + 0x01, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x05, 0xFB, 0xFA, 0xF9, + 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x60, 0x5F, 0x00, 0x01, + 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, + 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x5E, 0x5D, 0x00, 0x01, 0x02, 0xFB, 0xFA, + 0xF9, 0xFA, 0xF9, 0xF8, 0xF7, 0xFA, 0xF9, 0x5C, 0x5B, 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, + 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF0, 0xEF, 0xF2, 0xF1, 0x5A, 0x82, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, + 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x7C, 0x7B, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x59, 0x58, 0xEA, 0xE9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x72, 0x71, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x57, 0x56, 0xE6, 0xE5, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xC9, 0xC8, + 0xC7, 0xFA, 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, + 0xE0, 0xFA, 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x02, 0x00, 0x01, 0x02, 0xC6, 0xC5, + 0xC4, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, + 0xFB, 0xF2, 0xF1, 0xCB, 0xCA, 0xF2, 0xF1, 0xDF, 0xFF, 0x01, 0x02, 0x00, 0x01, 0x02, 0xC6, 0xC3, + 0xC2, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x00, + 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xBF, 0xBE, + 0xBD, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0xFF, + 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xDC, + 0xDB, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF8, 0xF7, 0xAD, + 0xAC, 0xAB, 0xAA, 0xA9, 0xA8, 0xA7, 0xA6, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xD4, + 0xD3, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF0, 0xEF, 0xA5, + 0xA4, 0xA3, 0xA2, 0xA1, 0xA0, 0x9F, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0x9E, + 0x9D, 0x9C, 0xF9, 0x9B, 0x9A, 0x99, 0x98, 0xFA, 0xF9, 0xE2, 0xE1, 0x00, 0x01, 0x02, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0x97, + 0x96, 0x95, 0x94, 0x93, 0x92, 0xF2, 0x91, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x90, 0x8F, + 0x8E, 0x8D, 0x8C, 0xF9, 0x8B, 0x8A, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x89, 0x88, 0x87, + 0x86, 0x85, 0x84, 0x83, 0x82, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xC1, 0xC0, 0xE2, 0xE1, 0x01, 0x05, 0xE0, 0xFA, 0x81, 0x80, 0x7F, 0x7E, 0x7D, 0x7C, + 0x7B, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, + 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0xF2, 0xF1, 0xDF, + 0xFF, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0x55, 0x54, 0x53, 0x52, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0x51, 0x50, 0x4F, 0x4E, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0x00, 0x01, 0x03, 0xE1, 0x01, 0x0B, 0x4D, 0x4C, 0x4C, 0x4B, 0xE1, 0x01, 0x0B, 0x00, 0x01, + 0x60, 0x55, 0x50, 0x50, 0x55, 0x44, 0x55, 0x55, 0x00, 0x55, 0x01, 0x06, 0x00, 0x55, 0x45, 0x55, + 0x15, 0x45, 0x55, 0x05, 0x00, 0x55, 0x44, 0x55, 0x51, 0x54, 0x55, 0x55, 0x00, 0x55, 0x54, 0x55, + 0x01, 0x03, 0x11, 0x00, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x51, 0x00, 0x05, 0x01, 0x06, 0x00, + 0x01, 0x08, 0x01, 0x00 +}; + +byte[] collision_bottom_left = new byte[] { + 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 +}; + +byte[] bg_bottom_right = new byte[] { + 0x01, 0x4A, 0x49, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, + 0xF9, 0xDD, 0x00, 0x01, 0x05, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0x48, 0x47, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, + 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xBA, + 0xB9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xB8, + 0xB7, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0x46, + 0x45, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0x44, + 0x43, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xCB, 0xCA, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xE1, 0x01, 0x02, 0xE0, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0x7A, 0x79, 0x78, 0x00, 0x01, 0x02, 0xFF, 0x01, 0x02, 0xDE, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0x70, 0x6F, 0x6E, 0x00, 0x01, 0x02, 0xBA, 0xB9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x00, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0x6D, 0x6C, 0x6E, 0x00, 0x01, 0x02, 0xB8, 0xB7, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0x6B, 0x6A, 0x69, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xBA, + 0xB9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xB8, 0xB7, + 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xDD, 0x00, 0x01, 0x02, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, + 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0x00, 0x01, + 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDD, 0x00, 0x01, + 0x02, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x55, 0x54, 0x53, + 0x52, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, + 0x02, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x51, 0x50, 0x4F, + 0x4E, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, + 0x02, 0xE1, 0x01, 0x0B, 0x4D, 0x4C, 0x4C, 0x4B, 0xE1, 0x01, 0x0B, 0x00, 0x01, 0x63, 0x55, 0x55, + 0x11, 0x55, 0x50, 0x50, 0x55, 0x00, 0x55, 0x01, 0x06, 0x00, 0x05, 0x55, 0x15, 0x45, 0x55, 0x15, + 0x55, 0x00, 0x55, 0x55, 0x51, 0x54, 0x55, 0x11, 0x55, 0x00, 0x44, 0x55, 0x01, 0x03, 0x51, 0x55, + 0x00, 0x54, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x00, 0x05, 0x01, 0x06, 0x00, 0x01, 0x09, 0x01, + 0x00 +}; + +byte[] collision_bottom_right = new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 +}; + +byte[] spawn = new byte[] { + 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x02, 0x03, 0x03, 0x03, + 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x07, 0x03, 0x02, 0x04, 0x03, 0x04, 0x04, 0x04, 0x05, 0x04, + 0x02, 0x05, 0x03, 0x05, 0x04, 0x05, 0x05, 0x05, 0x06, 0x05, 0x07, 0x05, 0x02, 0x06, 0x03, 0x06, + 0x05, 0x06, 0x06, 0x06, 0x07, 0x06, 0x19, 0x02, 0x1A, 0x02, 0x1B, 0x02, 0x1C, 0x02, 0x1D, 0x02, + 0x19, 0x03, 0x1A, 0x03, 0x1B, 0x03, 0x1C, 0x03, 0x1D, 0x03, 0x1A, 0x04, 0x1B, 0x04, 0x1C, 0x04, + 0x1D, 0x04, 0x19, 0x05, 0x1A, 0x05, 0x1B, 0x05, 0x1C, 0x05, 0x1D, 0x05, 0x19, 0x06, 0x1A, 0x06, + 0x1C, 0x06, 0x1D, 0x06, 0x02, 0x16, 0x03, 0x16, 0x05, 0x16, 0x06, 0x16, 0x07, 0x16, 0x02, 0x17, + 0x03, 0x17, 0x05, 0x17, 0x06, 0x17, 0x07, 0x17, 0x02, 0x18, 0x03, 0x18, 0x04, 0x18, 0x05, 0x18, + 0x06, 0x18, 0x07, 0x18, 0x02, 0x19, 0x03, 0x19, 0x04, 0x19, 0x05, 0x19, 0x02, 0x1A, 0x03, 0x1A, + 0x04, 0x1A, 0x05, 0x1A, 0x06, 0x1A, 0x07, 0x1A, 0x02, 0x1B, 0x03, 0x1B, 0x04, 0x1B, 0x05, 0x1B, + 0x06, 0x1B, 0x07, 0x1B, 0x19, 0x16, 0x1A, 0x16, 0x1C, 0x16, 0x1D, 0x16, 0x19, 0x17, 0x1A, 0x17, + 0x1C, 0x17, 0x1D, 0x17, 0x19, 0x18, 0x1A, 0x18, 0x1B, 0x18, 0x1C, 0x18, 0x1D, 0x18, 0x1A, 0x19, + 0x1B, 0x19, 0x1C, 0x19, 0x1D, 0x19, 0x19, 0x1A, 0x1A, 0x1A, 0x1B, 0x1A, 0x1C, 0x1A, 0x1D, 0x1A, + 0x19, 0x1B, 0x1A, 0x1B, 0x1B, 0x1B, 0x1C, 0x1B, 0x1D, 0x1B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 +}; + +byte[] item_target_x = new byte[] { 108, 148, 108, 148 }; +byte[] item_target_y = new byte[] { 99, 140, 139, 99 }; + +byte[] spider_damaged_attack_up = new byte[] { 0xF8, 0xF8, 0x84, 0x01, 0x00, 0xF8, 0x86, 0x01, 0x80 }; +byte[] spider_damaged_attack_down = new byte[] { 0xF8, 0xF8, 0x84, 0x81, 0x00, 0xF8, 0x86, 0x81, 0x80 }; +byte[] spider_damaged_attack_right = new byte[] { 0xF8, 0xF8, 0xA4, 0x01, 0x00, 0xF8, 0xA6, 0x01, 0x80 }; +byte[] spider_damaged_attack_left = new byte[] { 0xF8, 0xF8, 0xA6, 0x41, 0x00, 0xF8, 0xA4, 0x41, 0x80 }; +byte[] spider_damaged_leg_0_up = new byte[] { 0xF8, 0xF8, 0x88, 0x01, 0x00, 0xF8, 0x8A, 0x01, 0x80 }; +byte[] spider_damaged_leg_0_down = new byte[] { 0xF8, 0xF8, 0x88, 0x81, 0x00, 0xF8, 0x8A, 0x81, 0x80 }; +byte[] spider_damaged_leg_0_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x01, 0x00, 0xF8, 0xAA, 0x01, 0x80 }; +byte[] spider_damaged_leg_0_left = new byte[] { 0xF8, 0xF8, 0xAA, 0x41, 0x00, 0xF8, 0xA8, 0x41, 0x80 }; +byte[] spider_damaged_leg_1_up = new byte[] { 0xF8, 0xF8, 0x8A, 0x41, 0x00, 0xF8, 0x88, 0x41, 0x80 }; +byte[] spider_damaged_leg_1_down = new byte[] { 0xF8, 0xF8, 0x8A, 0xC1, 0x00, 0xF8, 0x88, 0xC1, 0x80 }; +byte[] spider_damaged_leg_1_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x81, 0x00, 0xF8, 0xAA, 0x81, 0x80 }; +byte[] spider_damaged_leg_1_left = new byte[] { 0xF8, 0xF8, 0xAA, 0xC1, 0x00, 0xF8, 0xA8, 0xC1, 0x80 }; +byte[] spider_attack_up = new byte[] { 0xF8, 0xF8, 0x84, 0x02, 0x00, 0xF8, 0x86, 0x02, 0x80 }; +byte[] spider_attack_down = new byte[] { 0xF8, 0xF8, 0x84, 0x82, 0x00, 0xF8, 0x86, 0x82, 0x80 }; +byte[] spider_attack_right = new byte[] { 0xF8, 0xF8, 0xA4, 0x02, 0x00, 0xF8, 0xA6, 0x02, 0x80 }; +byte[] spider_attack_left = new byte[] { 0xF8, 0xF8, 0xA6, 0x42, 0x00, 0xF8, 0xA4, 0x42, 0x80 }; +byte[] spider_leg_0_up = new byte[] { 0xF8, 0xF8, 0x88, 0x02, 0x00, 0xF8, 0x8A, 0x02, 0x80 }; +byte[] spider_leg_0_down = new byte[] { 0xF8, 0xF8, 0x88, 0x82, 0x00, 0xF8, 0x8A, 0x82, 0x80 }; +byte[] spider_leg_0_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x02, 0x00, 0xF8, 0xAA, 0x02, 0x80 }; +byte[] spider_leg_0_left = new byte[] { 0xF8, 0xF8, 0xAA, 0x42, 0x00, 0xF8, 0xA8, 0x42, 0x80 }; +byte[] spider_leg_1_up = new byte[] { 0xF8, 0xF8, 0x8A, 0x42, 0x00, 0xF8, 0x88, 0x42, 0x80 }; +byte[] spider_leg_1_down = new byte[] { 0xF8, 0xF8, 0x8A, 0xC2, 0x00, 0xF8, 0x88, 0xC2, 0x80 }; +byte[] spider_leg_1_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x82, 0x00, 0xF8, 0xAA, 0x82, 0x80 }; +byte[] spider_leg_1_left = new byte[] { 0xF8, 0xF8, 0xAA, 0xC2, 0x00, 0xF8, 0xA8, 0xC2, 0x80 }; +byte[] bat_damaged_attack_up = new byte[] { 0xF8, 0xF8, 0x94, 0x01, 0x00, 0xF8, 0x96, 0x01, 0x80 }; +byte[] bat_damaged_attack_down = new byte[] { 0xF8, 0xF8, 0x94, 0x81, 0x00, 0xF8, 0x96, 0x81, 0x80 }; +byte[] bat_damaged_attack_right = new byte[] { 0xF8, 0xF8, 0xB4, 0x01, 0x00, 0xF8, 0xB6, 0x01, 0x80 }; +byte[] bat_damaged_attack_left = new byte[] { 0xF8, 0xF8, 0xB6, 0x41, 0x00, 0xF8, 0xB4, 0x41, 0x80 }; +byte[] bat_damaged_leg_0_up = new byte[] { 0xF8, 0xF8, 0x98, 0x01, 0x00, 0xF8, 0x9A, 0x01, 0x80 }; +byte[] bat_damaged_leg_0_down = new byte[] { 0xF8, 0xF8, 0x98, 0x81, 0x00, 0xF8, 0x9A, 0x81, 0x80 }; +byte[] bat_damaged_leg_0_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x01, 0x00, 0xF8, 0xBA, 0x01, 0x80 }; +byte[] bat_damaged_leg_0_left = new byte[] { 0xF8, 0xF8, 0xBA, 0x41, 0x00, 0xF8, 0xB8, 0x41, 0x80 }; +byte[] bat_damaged_leg_1_up = new byte[] { 0xF8, 0xF8, 0x9A, 0x41, 0x00, 0xF8, 0x98, 0x41, 0x80 }; +byte[] bat_damaged_leg_1_down = new byte[] { 0xF8, 0xF8, 0x9A, 0xC1, 0x00, 0xF8, 0x98, 0xC1, 0x80 }; +byte[] bat_damaged_leg_1_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x81, 0x00, 0xF8, 0xBA, 0x81, 0x80 }; +byte[] bat_damaged_leg_1_left = new byte[] { 0xF8, 0xF8, 0xBA, 0xC1, 0x00, 0xF8, 0xB8, 0xC1, 0x80 }; +byte[] bat_attack_up = new byte[] { 0xF8, 0xF8, 0x94, 0x02, 0x00, 0xF8, 0x96, 0x02, 0x80 }; +byte[] bat_attack_down = new byte[] { 0xF8, 0xF8, 0x94, 0x82, 0x00, 0xF8, 0x96, 0x82, 0x80 }; +byte[] bat_attack_right = new byte[] { 0xF8, 0xF8, 0xB4, 0x02, 0x00, 0xF8, 0xB6, 0x02, 0x80 }; +byte[] bat_attack_left = new byte[] { 0xF8, 0xF8, 0xB6, 0x42, 0x00, 0xF8, 0xB4, 0x42, 0x80 }; +byte[] bat_leg_0_up = new byte[] { 0xF8, 0xF8, 0x98, 0x02, 0x00, 0xF8, 0x9A, 0x02, 0x80 }; +byte[] bat_leg_0_down = new byte[] { 0xF8, 0xF8, 0x98, 0x82, 0x00, 0xF8, 0x9A, 0x82, 0x80 }; +byte[] bat_leg_0_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x02, 0x00, 0xF8, 0xBA, 0x02, 0x80 }; +byte[] bat_leg_0_left = new byte[] { 0xF8, 0xF8, 0xBA, 0x42, 0x00, 0xF8, 0xB8, 0x42, 0x80 }; +byte[] bat_leg_1_up = new byte[] { 0xF8, 0xF8, 0x9A, 0x42, 0x00, 0xF8, 0x98, 0x42, 0x80 }; +byte[] bat_leg_1_down = new byte[] { 0xF8, 0xF8, 0x9A, 0xC2, 0x00, 0xF8, 0x98, 0xC2, 0x80 }; +byte[] bat_leg_1_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x82, 0x00, 0xF8, 0xBA, 0x82, 0x80 }; +byte[] bat_leg_1_left = new byte[] { 0xF8, 0xF8, 0xBA, 0xC2, 0x00, 0xF8, 0xB8, 0xC2, 0x80 }; +byte[] player_carry_0_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x3C, 0x00, 0x00, 0xF8, 0x3E, 0x00, 0x80 }; +byte[] player_carry_0_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x3C, 0x80, 0x00, 0xF8, 0x3E, 0x80, 0x80 }; +byte[] player_carry_0_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x5C, 0x40, 0x00, 0xF8, 0x5A, 0x40, 0x80 }; +byte[] player_carry_0_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x5A, 0x00, 0x00, 0xF8, 0x5C, 0x00, 0x80 }; +byte[] player_carry_0_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x38, 0x00, 0x00, 0xF8, 0x3A, 0x00, 0x80 }; +byte[] player_carry_0_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x3A, 0x40, 0x00, 0xF8, 0x38, 0x40, 0x80 }; +byte[] player_carry_0_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x38, 0x80, 0x00, 0xF8, 0x3A, 0x80, 0x80 }; +byte[] player_carry_0_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x3A, 0xC0, 0x00, 0xF8, 0x38, 0xC0, 0x80 }; +byte[] player_carry_0_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x00, 0x00, 0xF8, 0x58, 0x00, 0x80 }; +byte[] player_carry_0_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x80, 0x00, 0xF8, 0x58, 0x80, 0x80 }; +byte[] player_carry_0_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0x40, 0x00, 0xF8, 0x40, 0x40, 0x80 }; +byte[] player_carry_0_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0xC0, 0x00, 0xF8, 0x40, 0xC0, 0x80 }; +byte[] player_carry_1_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x3C, 0x01, 0x00, 0xF8, 0x3E, 0x01, 0x80 }; +byte[] player_carry_1_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x3C, 0x81, 0x00, 0xF8, 0x3E, 0x81, 0x80 }; +byte[] player_carry_1_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x5C, 0x41, 0x00, 0xF8, 0x5A, 0x41, 0x80 }; +byte[] player_carry_1_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x5A, 0x01, 0x00, 0xF8, 0x5C, 0x01, 0x80 }; +byte[] player_carry_1_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x38, 0x01, 0x00, 0xF8, 0x3A, 0x01, 0x80 }; +byte[] player_carry_1_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x3A, 0x41, 0x00, 0xF8, 0x38, 0x41, 0x80 }; +byte[] player_carry_1_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x38, 0x81, 0x00, 0xF8, 0x3A, 0x81, 0x80 }; +byte[] player_carry_1_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x3A, 0xC1, 0x00, 0xF8, 0x38, 0xC1, 0x80 }; +byte[] player_carry_1_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x56, 0x01, 0x00, 0xF8, 0x58, 0x01, 0x80 }; +byte[] player_carry_1_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x56, 0x81, 0x00, 0xF8, 0x58, 0x81, 0x80 }; +byte[] player_carry_1_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0x41, 0x00, 0xF8, 0x56, 0x41, 0x80 }; +byte[] player_carry_1_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0xC1, 0x00, 0xF8, 0x56, 0xC1, 0x80 }; +byte[] player_0_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x24, 0x00, 0x00, 0xF8, 0x26, 0x00, 0x80 }; +byte[] player_0_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x24, 0x80, 0x00, 0xF8, 0x26, 0x80, 0x80 }; +byte[] player_0_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x46, 0x40, 0x00, 0xF8, 0x44, 0x40, 0x80 }; +byte[] player_0_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x44, 0x00, 0x00, 0xF8, 0x46, 0x00, 0x80 }; +byte[] player_0_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x20, 0x00, 0x00, 0xF8, 0x22, 0x00, 0x80 }; +byte[] player_0_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x22, 0x40, 0x00, 0xF8, 0x20, 0x40, 0x80 }; +byte[] player_0_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x20, 0x80, 0x00, 0xF8, 0x22, 0x80, 0x80 }; +byte[] player_0_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x22, 0xC0, 0x00, 0xF8, 0x20, 0xC0, 0x80 }; +byte[] player_0_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x00, 0x00, 0xF8, 0x42, 0x00, 0x80 }; +byte[] player_0_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x80, 0x00, 0xF8, 0x42, 0x80, 0x80 }; +byte[] player_0_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0x40, 0x00, 0xF8, 0x40, 0x40, 0x80 }; +byte[] player_0_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0xC0, 0x00, 0xF8, 0x40, 0xC0, 0x80 }; +byte[] player_0_meta_spr_attack_0_up = new byte[] { 0xF8, 0x00, 0x48, 0x00, 0x00, 0x00, 0x4A, 0x00, 0xF8, 0xF0, 0x28, 0x00, 0x00, 0xF0, 0x2A, 0x00, 0x80 }; +byte[] player_0_meta_spr_attack_1_up = new byte[] { 0xF8, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x4E, 0x00, 0xF8, 0xF0, 0x2C, 0x00, 0x00, 0xF0, 0x2E, 0x00, 0x80 }; +byte[] player_0_meta_spr_attack_0_down = new byte[] { 0xF8, 0x00, 0x28, 0x80, 0x00, 0x00, 0x2A, 0x80, 0xF8, 0xF0, 0x48, 0x80, 0x00, 0xF0, 0x4A, 0x80, 0x80 }; +byte[] player_0_meta_spr_attack_1_down = new byte[] { 0xF8, 0x00, 0x2C, 0x80, 0x00, 0x00, 0x2E, 0x80, 0xF8, 0xF0, 0x4C, 0x80, 0x00, 0xF0, 0x4E, 0x80, 0x80 }; +byte[] player_0_meta_spr_attack_0_right = new byte[] { 0xF8, 0xF8, 0x30, 0x00, 0x00, 0xF8, 0x32, 0x00, 0x08, 0xF8, 0x34, 0x00, 0x80 }; +byte[] player_0_meta_spr_attack_1_right = new byte[] { 0xF8, 0xF8, 0x50, 0x00, 0x00, 0xF8, 0x52, 0x00, 0x08, 0xF8, 0x54, 0x00, 0x80 }; +byte[] player_0_meta_spr_attack_0_left = new byte[] { 0xF0, 0xF8, 0x34, 0x40, 0xF8, 0xF8, 0x32, 0x40, 0x00, 0xF8, 0x30, 0x40, 0x80 }; +byte[] player_0_meta_spr_attack_1_left = new byte[] { 0xF0, 0xF8, 0x54, 0x40, 0xF8, 0xF8, 0x52, 0x40, 0x00, 0xF8, 0x50, 0x40, 0x80 }; +byte[] player_1_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x24, 0x01, 0x00, 0xF8, 0x26, 0x01, 0x80 }; +byte[] player_1_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x24, 0x81, 0x00, 0xF8, 0x26, 0x81, 0x80 }; +byte[] player_1_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x46, 0x41, 0x00, 0xF8, 0x44, 0x41, 0x80 }; +byte[] player_1_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x44, 0x01, 0x00, 0xF8, 0x46, 0x01, 0x80 }; +byte[] player_1_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x20, 0x01, 0x00, 0xF8, 0x22, 0x01, 0x80 }; +byte[] player_1_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x22, 0x41, 0x00, 0xF8, 0x20, 0x41, 0x80 }; +byte[] player_1_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x20, 0x81, 0x00, 0xF8, 0x22, 0x81, 0x80 }; +byte[] player_1_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x22, 0xC1, 0x00, 0xF8, 0x20, 0xC1, 0x80 }; +byte[] player_1_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x01, 0x00, 0xF8, 0x42, 0x01, 0x80 }; +byte[] player_1_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x81, 0x00, 0xF8, 0x42, 0x81, 0x80 }; +byte[] player_1_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0x41, 0x00, 0xF8, 0x40, 0x41, 0x80 }; +byte[] player_1_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0xC1, 0x00, 0xF8, 0x40, 0xC1, 0x80 }; +byte[] player_1_meta_spr_attack_0_up = new byte[] { 0xF8, 0x00, 0x48, 0x01, 0x00, 0x00, 0x4A, 0x01, 0xF8, 0xF0, 0x28, 0x01, 0x00, 0xF0, 0x2A, 0x01, 0x80 }; +byte[] player_1_meta_spr_attack_1_up = new byte[] { 0xF8, 0x00, 0x4C, 0x01, 0x00, 0x00, 0x4E, 0x01, 0xF8, 0xF0, 0x2C, 0x01, 0x00, 0xF0, 0x2E, 0x01, 0x80 }; +byte[] player_1_meta_spr_attack_0_down = new byte[] { 0xF8, 0x00, 0x28, 0x81, 0x00, 0x00, 0x2A, 0x81, 0xF8, 0xF0, 0x48, 0x81, 0x00, 0xF0, 0x4A, 0x81, 0x80 }; +byte[] player_1_meta_spr_attack_1_down = new byte[] { 0xF8, 0x00, 0x2C, 0x81, 0x00, 0x00, 0x2E, 0x81, 0xF8, 0xF0, 0x4C, 0x81, 0x00, 0xF0, 0x4E, 0x81, 0x80 }; +byte[] player_1_meta_spr_attack_0_right = new byte[] { 0xF8, 0xF8, 0x30, 0x01, 0x00, 0xF8, 0x32, 0x01, 0x08, 0xF8, 0x34, 0x01, 0x80 }; +byte[] player_1_meta_spr_attack_1_right = new byte[] { 0xF8, 0xF8, 0x50, 0x01, 0x00, 0xF8, 0x52, 0x01, 0x08, 0xF8, 0x54, 0x01, 0x80 }; +byte[] player_1_meta_spr_attack_0_left = new byte[] { 0xF0, 0xF8, 0x34, 0x41, 0xF8, 0xF8, 0x32, 0x41, 0x00, 0xF8, 0x30, 0x41, 0x80 }; +byte[] player_1_meta_spr_attack_1_left = new byte[] { 0xF0, 0xF8, 0x54, 0x41, 0xF8, 0xF8, 0x52, 0x41, 0x00, 0xF8, 0x50, 0x41, 0x80 }; + +// Main game code +init(); +oam_clear(); + +while (true) +{ + pal_all(paused_palette); + scroll(0, 0); + ppu_wait_nmi(); + + ppu_off(); + vram_adr(NAMETABLE_A); + vram_unrle(bg_menu); + ppu_on_all(); + + pal_all(palette); + ppu_wait_nmi(); + ppu_wait_nmi(); + + while (true) + { + ppu_wait_nmi(); + G.spr = 0; + oam_clear(); + G.frame++; + if ((G.frame & 8) != 0) + { + G.spr = oam_spr(120, 135, 0x66, 0x03, G.spr); + G.spr = oam_spr(128, 135, 0x68, 0x03, G.spr); + } + else + { + G.spr = oam_spr(120, 135, 0x6A, 0x03, G.spr); + G.spr = oam_spr(128, 135, 0x6C, 0x03, G.spr); + } + + G.spr = oam_spr(0x60, 0xA4, 0xEA, 0x01, G.spr); + G.spr = oam_spr(0x70, 0xA4, 0xF0, 0x01, G.spr); + G.spr = oam_spr(0x78, 0xA4, 0xEA, 0x01, G.spr); + G.spr = oam_spr(0x80, 0xA4, 0xF2, 0x01, G.spr); + G.spr = oam_spr(0x88, 0xA4, 0xF8, 0x01, G.spr); + G.spr = oam_spr(0x90, 0xA4, 0xE4, 0x01, G.spr); + G.spr = oam_spr(0x98, 0xA4, 0xFA, 0x01, G.spr); + + G.spr = oam_spr(0x60, 0xB4, 0xEA, 0x01, G.spr); + G.spr = oam_spr(0x70, 0xB4, 0xFC, 0x01, G.spr); + G.spr = oam_spr(0x78, 0xB4, 0xEA, 0x01, G.spr); + G.spr = oam_spr(0x80, 0xB4, 0xFA, 0x01, G.spr); + G.spr = oam_spr(0x88, 0xB4, 0xFE, 0x01, G.spr); + + G.spr = oam_spr(0x60, 0xC4, 0xF0, 0x01, G.spr); + G.spr = oam_spr(0x70, 0xC4, 0xE0, 0x01, G.spr); + G.spr = oam_spr(0x78, 0xC4, 0x04, 0x01, G.spr); + G.spr = oam_spr(0x80, 0xC4, 0xF2, 0x01, G.spr); + G.spr = oam_spr(0x88, 0xC4, 0xE0, 0x01, G.spr); + G.spr = oam_spr(0x90, 0xC4, 0xF0, 0x01, G.spr); + G.spr = oam_spr(0x98, 0xC4, 0xE4, 0x01, G.spr); + G.spr = oam_spr(0xA0, 0xC4, 0x18, 0x01, G.spr); + + G.spr = oam_spr(0x60, 0xD4, 0xE6, 0x01, G.spr); + G.spr = oam_spr(0x70, 0xD4, 0x04, 0x01, G.spr); + G.spr = oam_spr(0x78, 0xD4, 0xF2, 0x01, G.spr); + G.spr = oam_spr(0x80, 0xD4, 0xF8, 0x01, G.spr); + G.spr = oam_spr(0x88, 0xD4, 0xE6, 0x01, G.spr); + G.spr = oam_spr(0x90, 0xD4, 0xFA, 0x01, G.spr); + + if (((pad_trigger(0) | pad_trigger(1)) & (PAD_A | PAD_B | PAD_START)) != 0) + break; + } + + G.spr = 0; + oam_clear(); + + pal_all(paused_palette); + ppu_wait_nmi(); + + ppu_off(); + vram_adr(NAMETABLE_A); + vram_unrle(bg_top_left); + ppu_on_all(); + + ppu_wait_nmi(); + + G.difficulty = 0; + G.next_level = 1; + + while (true) + { + ppu_wait_nmi(); + G.spr = 0; + oam_clear(); + + if (G.next_level != 0) + { + sfx_play(3, 2); + reset(); + G.spr = 0; + oam_clear(); + pal_all(paused_palette); + G.spr = oam_spr(100, 114, 0xF4, 0x01, G.spr); + G.spr = oam_spr(108, 114, 0xEA, 0x01, G.spr); + G.spr = oam_spr(116, 114, 0xF6, 0x01, G.spr); + G.spr = oam_spr(124, 114, 0xEA, 0x01, G.spr); + G.spr = oam_spr(132, 114, 0xF4, 0x01, G.spr); + if (G.difficulty < 10) + { + G.spr = oam_spr(148, 114, (byte)(0x04 + (G.difficulty << 1)), 0x01, G.spr); + } + else + { + G.spr = oam_spr(148, 114, (byte)(0x05 + (G.difficulty / 10)), 0x01, G.spr); + G.spr = oam_spr(156, 114, (byte)(0x04 + (G.difficulty % 10)), 0x01, G.spr); + } + G.spr = 0; + G.frame = 0; + while (true) + { + ppu_wait_nmi(); + G.frame++; + if (G.frame > 100 && (G.frame == 255 || ((pad_trigger(0) | pad_trigger(1)) & (PAD_A | PAD_B | PAD_START)) != 0)) + { + G.spr++; + break; + } + } + pal_all(palette); + G.spr = 0; + oam_clear(); + } + + if (G.player_hp[0] == 0 || G.player_hp[1] == 0) + { + sfx_play(4, 2); + G.difficulty = 0; + G.next_level = 0; + reset(); + G.spr = 0; + oam_clear(); + pal_all(paused_palette); + G.spr = oam_spr(92, 114, 0xEE, 0x01, G.spr); + G.spr = oam_spr(100, 114, 0xE4, 0x01, G.spr); + G.spr = oam_spr(108, 114, 0xF0, 0x01, G.spr); + G.spr = oam_spr(116, 114, 0xEA, 0x01, G.spr); + G.spr = oam_spr(132, 114, 0x04, 0x01, G.spr); + G.spr = oam_spr(140, 114, 0xF6, 0x01, G.spr); + G.spr = oam_spr(148, 114, 0xEA, 0x01, G.spr); + G.spr = oam_spr(156, 114, 0xF2, 0x01, G.spr); + G.spr = 0; + G.frame = 0; + while (true) + { + ppu_wait_nmi(); + G.frame++; + if (G.frame == 255) G.spr++; + if (G.spr == 4 || (G.spr >= 1 && ((pad_trigger(0) | pad_trigger(1)) & (PAD_A | PAD_B | PAD_START)) != 0)) + break; + } + pal_all(palette); + G.spr = 0; + oam_clear(); + break; + } + + G.temp1 = (byte)(pad_trigger(0) | pad_trigger(1)); + if ((G.temp1 & PAD_START) != 0) + { + G.spr = 0; + oam_clear(); + pal_all(paused_palette); + G.spr = oam_spr(104, 114, 0xE2, 0x01, G.spr); + G.spr = oam_spr(112, 114, 0xE4, 0x01, G.spr); + G.spr = oam_spr(120, 114, 0xE6, 0x01, G.spr); + G.spr = oam_spr(128, 114, 0xE8, 0x01, G.spr); + G.spr = oam_spr(136, 114, 0xEA, 0x01, G.spr); + G.spr = oam_spr(144, 114, 0xEC, 0x01, G.spr); + while ((pad_trigger(0) & PAD_START) == 0) + ppu_wait_nmi(); + pal_all(palette); + G.spr = 0; + oam_clear(); + } + + G.int_temp0 = 124; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_x; + if (G.int_temp0 >= 0 && G.int_temp0 <= 255) + { + G.temp0 = (byte)G.int_temp0; + G.int_temp0 = 116; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_y; + if (G.int_temp0 >= 0 && G.int_temp0 <= 255) + { + G.temp1 = (byte)G.int_temp0; + if ((G.frame & 8) != 0) + { + G.spr = oam_spr(G.temp0, (byte)(G.temp1 - 1), 0x66, 0x03, G.spr); + G.spr = oam_spr((byte)(G.temp0 + 8), (byte)(G.temp1 - 1), 0x68, 0x03, G.spr); + } + else + { + G.spr = oam_spr(G.temp0, (byte)(G.temp1 - 1), 0x6A, 0x03, G.spr); + G.spr = oam_spr((byte)(G.temp0 + 8), (byte)(G.temp1 - 1), 0x6C, 0x03, G.spr); + } + } + } + + tick_players(); + tick_enemies(); + + G.temp0 = 0; + if (G.to_scroll_x != 0) + { + if (G.to_scroll_x_neg != 0) + G.scr_x -= G.to_scroll_x; + else + G.scr_x += G.to_scroll_x; + } + if (G.to_scroll_y != 0) + { + if (G.to_scroll_y_neg != 0) + G.scr_y -= G.to_scroll_y; + else + G.scr_y += G.to_scroll_y; + } + scroll(G.scr_x, G.scr_y); + G.frame++; + } +} + +static class G +{ + public static byte oam_off, i, j, spr, frame, dx, dy, scr_x, scr_y; + public static byte to_scroll_x, to_scroll_y, to_scroll_x_neg, to_scroll_y_neg; + public static byte difficulty, enemy_speed, next_level, enemy_damage_modifier, spawn_hp; + public static byte temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7; + public static int int_temp0; + public static byte[] player_dir = new byte[2], player_attack_tick = new byte[2]; + public static byte[] player_x = new byte[2], player_y = new byte[2]; + public static byte[] player_hp = new byte[2], player_carry = new byte[2], player_carry_dir = new byte[2]; + public static byte[] player_god_mode = new byte[2]; + public static byte[] enemies_x = new byte[8], enemies_y = new byte[8], enemies_enemy = new byte[8]; + public static byte[] enemies_health = new byte[8], enemies_dir = new byte[8], enemies_type = new byte[8]; + public static byte[] enemy_leg = new byte[8], enemy_push_timer = new byte[8], enemy_push_dir = new byte[8]; + public static byte[] enemy_spawn_points_x = new byte[8], enemy_spawn_points_y = new byte[8]; + public static byte[] item_type = new byte[4], item_x = new byte[4], item_y = new byte[4], item_placed = new byte[4]; +} From e8ae7f65cb753dd333e3d238cf130f059a8f4abc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Mar 2026 02:52:41 +0000 Subject: [PATCH 03/16] Port crypto.c game from 8bitworkshop to C# for dotnes transpiler Complete port of the 3092-line C game to ~1885 lines of C#. Includes: - All 7 game functions (isBlocked, took_damage, tick_enemies, draw_player, tick_players, init, reset) - All data arrays (4 RLE backgrounds, 4 collision maps, 112 metasprites, spawn table, palettes) - Static class G for shared mutable game state - while loops (no for/foreach), PAD enum casts, OAM flip flag conversions - Signed char to unsigned byte conversions in metasprite data (-8 -> 248, -16 -> 240) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- samples/crypto/Program.cs | 1934 +++++++++++++++++----------------- samples/crypto/crypto.csproj | 15 + 2 files changed, 982 insertions(+), 967 deletions(-) create mode 100644 samples/crypto/crypto.csproj diff --git a/samples/crypto/Program.cs b/samples/crypto/Program.cs index 3b956824..328ef5a1 100644 --- a/samples/crypto/Program.cs +++ b/samples/crypto/Program.cs @@ -27,237 +27,754 @@ const ushort NAMETABLE_C = 0x2800; const ushort NAMETABLE_D = 0x2C00; -static byte isBlocked(byte x, byte y) -{ - if (x > 122 && x < 134 && y > 114 && y < 125) - { - return 1; - } - if (x < 128) - { - if (y < 120) - { - return collision_top_left[(x >> 3) + ((y >> 3) << 4)]; - } - else - { - y -= 120; - return collision_bottom_left[(x >> 3) + ((y >> 3) << 4)]; - } - } - else - { - x -= 128; - if (y < 120) - { - return collision_top_right[(x >> 3) + ((y >> 3) << 4)]; - } - else - { - y -= 120; - return collision_bottom_right[(x >> 3) + ((y >> 3) << 4)]; - } - } -} - -static void took_damage() -{ - G.j = 0; - while (G.j < 8) - { - if (G.enemies_health[G.j] == 0) - { - G.j++; - continue; - } - G.temp2 = G.enemies_x[G.j]; - G.temp3 = G.enemies_y[G.j]; - if (G.temp0 > G.temp2) - G.temp4 = (byte)(G.temp0 - G.temp2); - else - G.temp4 = (byte)(G.temp2 - G.temp0); - if (G.temp1 > G.temp3) - G.temp5 = (byte)(G.temp1 - G.temp3); - else - G.temp5 = (byte)(G.temp3 - G.temp1); - if (G.temp4 < G.temp6 && G.temp5 < G.temp7) - { - G.enemies_health[G.j]--; - if (G.enemies_health[G.j] != 0) - { - G.enemy_push_timer[G.j] = 4; - G.enemy_push_dir[G.j] = G.player_dir[G.i]; - } - else - { - sfx_play(1, 0); - } - break; - } - G.j++; - } -} -static void tick_enemies() -{ - G.temp4 = (byte)(rand8() & 7); - G.i = 0; - while (G.i < 8) - { - if (G.enemies_health[G.i] == 0 && (G.frame & 7) == G.i) - { - G.enemies_x[G.i] = G.enemy_spawn_points_x[G.temp4]; - G.enemies_y[G.i] = G.enemy_spawn_points_y[G.temp4]; - G.enemy_push_timer[G.i] = 0; - G.enemies_health[G.i] = G.spawn_hp; - G.enemies_type[G.i] = (byte)(G.i & 1); - return; - } - G.i++; - } +byte[] palette = new byte[] { + 0x0D, 0x00, 0x3D, 0x3C, 0x0D, 0x09, 0x1B, 0x3C, 0x07, 0x28, 0x0F, 0x79, 0x07, 0x21, 0x1C, 0x0F, + 0x00, 0x11, 0x16, 0x0D, 0x00, 0x27, 0x16, 0x0D, 0x00, 0x17, 0x15, 0x29, 0x00, 0x27, 0x16, 0x0D +}; - G.temp2 = (byte)(G.frame & 7); - G.enemy_leg[G.temp2] = (byte)(1 - G.enemy_leg[G.temp2]); - G.temp1 = G.enemies_enemy[G.temp2]; +byte[] paused_palette = new byte[] { + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x00, 0x11, 0x16, 0x0D, 0x00, 0x27, 0x16, 0x0D, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F +}; - G.temp6 = (byte)(rand8() & 3); - if (G.temp6 == 0) - { - G.temp6 = (byte)(rand8() & 3); - if (G.temp6 == 0) G.temp3 = PAD_LEFT; - else if (G.temp6 == 1) G.temp3 = PAD_RIGHT; - else if (G.temp6 == 2) G.temp3 = PAD_UP; - else G.temp3 = PAD_DOWN; - } - else if (G.temp6 == 1) - { - G.temp3 = G.enemies_dir[G.temp2]; - } - else - { - G.temp0 = (byte)(rand8() & 1); - if (G.temp0 != 0) - { - if (G.enemies_x[G.temp2] > G.player_x[G.temp1]) - G.temp3 = PAD_LEFT; - else - G.temp3 = PAD_RIGHT; - } - else - { - if (G.enemies_y[G.temp2] > G.player_y[G.temp1]) - G.temp3 = PAD_UP; - else - G.temp3 = PAD_DOWN; - } - } +byte[] bg_menu = new byte[] { + 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xEA, + 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, + 0x81, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE6, + 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, + 0x77, 0xC1, 0xC0, 0xDD, 0x00, 0x00, 0xFB, 0x42, 0x41, 0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, + 0x39, 0x38, 0x40, 0x37, 0x36, 0x40, 0x40, 0x35, 0x34, 0x33, 0x42, 0xDD, 0x00, 0x00, 0xFB, 0xFA, + 0xF9, 0xBC, 0xBB, 0xDF, 0xFF, 0xFF, 0xDE, 0x32, 0x31, 0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, + 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x1F, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, + 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x1E, 0x1D, 0x42, 0x1C, 0x24, 0x1B, 0x1A, 0x19, 0x18, + 0x17, 0x42, 0x16, 0x15, 0x42, 0x24, 0x14, 0x13, 0x12, 0x11, 0x10, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x42, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, + 0x07, 0x09, 0x08, 0x07, 0x42, 0x0C, 0x06, 0x42, 0x05, 0x04, 0x42, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xB6, 0xB5, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x68, 0x67, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xB4, 0xB3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x66, 0x65, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE0, 0xB2, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0xFA, 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xB1, + 0xB0, 0x64, 0x63, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xC1, + 0xC0, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xAF, + 0xAE, 0x62, 0x61, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xBC, + 0xBB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x60, + 0x5F, 0x4A, 0x49, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, + 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x5E, + 0x5D, 0x48, 0x47, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, + 0xF1, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x02, 0x0B, 0xFA, 0xF9, + 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, 0xDE, 0xF2, 0xF1, + 0xF2, 0xF1, 0x00, 0x02, 0x0B, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x59, 0x58, 0x00, 0x02, 0x0B, 0x46, 0x45, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x57, 0x56, + 0x00, 0x02, 0x0B, 0x44, 0x43, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x02, 0x0B, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, + 0xFA, 0xF9, 0xFA, 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x02, + 0x0B, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x02, 0x0B, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x02, 0x0B, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, + 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xE2, 0xE1, 0x02, 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xCB, 0xCA, + 0xF2, 0xF1, 0xDF, 0xFF, 0x02, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, + 0xFB, 0xF2, 0xF1, 0x55, 0x02, 0x07, 0x11, 0x84, 0xA5, 0x02, 0x03, 0x21, 0x44, 0x55, 0x59, 0x5A, + 0x02, 0x03, 0x56, 0x55, 0x55, 0x45, 0x55, 0x02, 0x03, 0x15, 0x55, 0x55, 0x44, 0x55, 0x02, 0x03, + 0x11, 0x55, 0x55, 0x54, 0x11, 0x00, 0x00, 0x44, 0x51, 0x55, 0x02, 0x02, 0x11, 0x00, 0x00, 0x44, + 0x55, 0x55, 0x01, 0x04, 0x05, 0x00, 0x00, 0x05, 0x01, 0x04, 0x04, 0x02, 0x00 +}; - G.enemies_dir[G.temp2] = G.temp3; - G.temp6 = G.enemies_x[G.temp2]; - G.temp7 = G.enemies_y[G.temp2]; +byte[] bg_top_left = new byte[] { + 0x01, 0x00, 0x01, 0x63, 0xFF, 0x01, 0x0B, 0xFE, 0xFD, 0xFD, 0xFC, 0xFF, 0x01, 0x0B, 0x00, 0x01, + 0x02, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF6, 0xF5, + 0xF4, 0xF3, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, + 0x02, 0xFB, 0xF2, 0xF1, 0xF0, 0xEF, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xEE, 0xED, + 0xEC, 0xEB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, + 0x02, 0xFB, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, + 0x02, 0xFB, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, + 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x05, 0xE0, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x00, 0x01, 0x02, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xDC, 0xDB, 0xDA, 0xD9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xD8, 0xD7, 0xFA, 0xF9, 0xFA, 0xF9, 0xD6, 0xD5, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xD4, 0xD3, 0xD2, 0xD1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xD0, 0xCF, 0xF2, 0xF1, 0xF2, 0xF1, 0xCE, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE0, 0xDC, + 0xDB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xD4, 0xD3, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xDF, 0xFF, 0x00, 0x01, 0x02, 0xFB, 0xCD, 0xCC, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xCB, 0xCA, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xC9, 0xC8, 0xC7, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xEA, 0xE9, 0x00, 0x01, 0x02, 0xC6, 0xC5, 0xC4, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xE6, 0xE5, 0x00, 0x01, 0x02, 0xC6, 0xC3, 0xC2, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0x00, 0x00, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xE2, 0xE1, 0x01, 0x02, 0x00, 0x01, 0x02, 0xBF, 0xBE, 0xBD, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xDF, 0xFF, 0x01, 0x02, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xBA, 0xB9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xD6, 0xD5, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xB8, 0xB7, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xCE, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xB6, 0xB5, + 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xCB, 0xCA, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xB4, 0xB3, + 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xDA, 0xD9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE0, 0xB2, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xD2, 0xD1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x05, + 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xB1, + 0xB0, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x05, 0xFB, 0xF2, 0xF1, + 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xAF, 0xAE, 0x00, 0x01, + 0x08, 0x55, 0x01, 0x06, 0x00, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x11, 0x00, 0x55, 0x44, 0x55, + 0x01, 0x03, 0x51, 0x00, 0x55, 0x44, 0x55, 0x11, 0x44, 0x55, 0x05, 0x00, 0x55, 0x01, 0x06, 0x00, + 0x55, 0x01, 0x03, 0x45, 0x55, 0x55, 0x00, 0x05, 0x00, 0x00, 0x05, 0x04, 0x05, 0x01, 0x02, 0x01, + 0x00 +}; - if (G.enemy_push_timer[G.temp2] != 0) - { - } - else if (G.temp3 == PAD_RIGHT) - G.enemies_x[G.temp2] += G.enemy_speed; - else if (G.temp3 == PAD_LEFT) - G.enemies_x[G.temp2] -= G.enemy_speed; - else if (G.temp3 == PAD_UP) - G.enemies_y[G.temp2] -= G.enemy_speed; - else if (G.temp3 == PAD_DOWN) - G.enemies_y[G.temp2] += G.enemy_speed; - - G.temp5 = isBlocked(G.enemies_x[G.temp2], G.enemies_y[G.temp2]); - if (G.temp5 != 0) - { - G.enemies_x[G.temp2] = G.temp6; - G.enemies_y[G.temp2] = G.temp7; - } - else - { - G.i = 0; - while (G.i < 8) - { - if (G.temp2 != G.i) - { - if ((byte)(G.enemies_x[G.i] - 6) < G.enemies_x[G.temp2] && (byte)(G.enemies_x[G.i] + 6) > G.enemies_x[G.temp2]) - { - if ((byte)(G.enemies_y[G.i] - 6) < G.enemies_y[G.temp2] && (byte)(G.enemies_y[G.i] + 6) > G.enemies_y[G.temp2]) - { - G.enemies_x[G.temp2] = G.temp6; - G.enemies_y[G.temp2] = G.temp7; - } - } - } - G.i++; - } - } +byte[] collision_top_left = new byte[] { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 +}; - G.i = 0; - while (G.i < 8) - { - if (G.enemy_push_timer[G.i] != 0 && (G.frame & 3) != 0) - { - if ((G.frame & 1) != 0) - { - G.enemy_push_timer[G.i]--; - G.temp6 = G.enemies_x[G.i]; - G.temp7 = G.enemies_y[G.i]; - if (G.enemy_push_dir[G.i] == PAD_LEFT) G.enemies_x[G.i] -= 2; - else if (G.enemy_push_dir[G.i] == PAD_RIGHT) G.enemies_x[G.i] += 2; - else if (G.enemy_push_dir[G.i] == PAD_UP) G.enemies_y[G.i] -= 2; - else if (G.enemy_push_dir[G.i] == PAD_DOWN) G.enemies_y[G.i] += 2; - if (isBlocked(G.enemies_x[G.i], G.enemies_y[G.i]) != 0) - { - G.enemies_x[G.i] = G.temp6; - G.enemies_y[G.i] = G.temp7; - } - } - } +byte[] bg_top_right = new byte[] { + 0x02, 0x00, 0x02, 0x5F, 0xFF, 0x02, 0x0B, 0xFE, 0xFD, 0xFD, 0xFC, 0xFF, 0x02, 0x0B, 0x00, 0x02, + 0x03, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF8, 0xF7, 0xFA, 0xF9, 0xDA, 0xD9, 0xF6, 0xF5, 0xF4, + 0xF3, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, + 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF0, 0xEF, 0xF2, 0xF1, 0xD2, 0xD1, 0xEE, 0xED, 0xEC, + 0xEB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, + 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, + 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, + 0x02, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x02, + 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0x02, 0x05, 0xDE, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xDC, 0xDB, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xAD, 0xAC, 0xAB, 0xAA, 0xA9, 0xA8, 0xA7, 0xA6, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xD4, 0xD3, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xA5, 0xA4, 0xA3, 0xA2, 0xA1, 0xA0, 0x9F, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xCD, 0xCC, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x9E, 0x9D, 0x9C, 0xF9, 0x9B, 0x9A, 0x99, 0x98, 0xE2, 0xE0, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xCB, 0xCA, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x97, 0x96, 0x95, 0x94, 0x93, 0x92, 0xF2, 0x91, 0xDD, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x90, 0x8F, 0x8E, 0x8D, 0x8C, 0xF9, 0x8B, 0x8A, 0xDD, 0xFB, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0xDD, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0x81, 0x80, 0x7F, 0x7E, 0x7D, 0x7C, 0x7B, 0xDD, 0xFB, 0xFA, + 0xF9, 0x7A, 0x79, 0x78, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0xDD, 0xFB, 0xF2, + 0xF1, 0x70, 0x6F, 0x6E, 0x00, 0x02, 0x02, 0xE1, 0x02, 0x02, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xDD, 0x00, 0x00, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0xFB, 0xDA, + 0xD9, 0x6D, 0x6C, 0x6E, 0x00, 0x02, 0x02, 0xFF, 0x02, 0x02, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, 0xDE, 0xD2, + 0xD1, 0x6B, 0x6A, 0x69, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xC1, 0xC0, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xBC, 0xBB, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0x68, 0x67, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0x66, 0x65, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0xFA, + 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0xF2, + 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0x64, 0x63, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xC1, 0xC0, 0xE2, 0xE1, 0x02, 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, + 0xDD, 0x00, 0x02, 0x02, 0x62, 0x61, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, + 0xF2, 0xF1, 0xBC, 0xBB, 0xDD, 0x00, 0x02, 0x05, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, + 0x0A, 0x55, 0x02, 0x06, 0x00, 0x44, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x00, 0x54, 0x55, 0x02, + 0x03, 0x11, 0x55, 0x00, 0x05, 0x55, 0x11, 0x44, 0x55, 0x11, 0x55, 0x00, 0x55, 0x02, 0x06, 0x00, + 0x55, 0x55, 0x15, 0x55, 0x02, 0x03, 0x00, 0x05, 0x05, 0x01, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, + 0x02, 0x00 +}; - G.temp5 = 0; - G.j = 0; - while (G.j < 2) - { - if ((G.frame & G.enemy_damage_modifier) == 0) - { - if ((byte)(G.enemies_x[G.i] - 5) < G.player_x[G.j] && (byte)(G.enemies_x[G.i] + 5) > G.player_x[G.j]) - { - if ((byte)(G.enemies_y[G.i] - 5) < G.player_y[G.j] && (byte)(G.enemies_y[G.i] + 5) > G.player_y[G.j]) - { - if (G.player_hp[G.j] != 0 && G.player_god_mode[G.j] == 0) - { - G.temp5 = 1; - G.player_hp[G.j]--; - G.player_god_mode[G.j] = 4; - sfx_play(0, 1); - } - if (G.player_hp[G.j] == 0 && G.enemies_enemy[G.i] == G.j) - { - G.enemies_enemy[G.i] = (byte)(1 - G.enemies_enemy[G.i]); - } - } - } - } - G.j++; - } +byte[] collision_top_right = new byte[] { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01 +}; - G.int_temp0 = G.enemies_x[G.i]; - G.int_temp0 <<= 1; - G.int_temp0 -= G.scr_x; - if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } - G.temp0 = (byte)G.int_temp0; +byte[] bg_bottom_left = new byte[] { + 0x01, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x05, 0xFB, 0xFA, 0xF9, + 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x60, 0x5F, 0x00, 0x01, + 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, + 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x5E, 0x5D, 0x00, 0x01, 0x02, 0xFB, 0xFA, + 0xF9, 0xFA, 0xF9, 0xF8, 0xF7, 0xFA, 0xF9, 0x5C, 0x5B, 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, + 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF0, 0xEF, 0xF2, 0xF1, 0x5A, 0x82, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, + 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x7C, 0x7B, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x59, 0x58, 0xEA, 0xE9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x72, 0x71, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x57, 0x56, 0xE6, 0xE5, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xC9, 0xC8, + 0xC7, 0xFA, 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, + 0xE0, 0xFA, 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x02, 0x00, 0x01, 0x02, 0xC6, 0xC5, + 0xC4, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, + 0xFB, 0xF2, 0xF1, 0xCB, 0xCA, 0xF2, 0xF1, 0xDF, 0xFF, 0x01, 0x02, 0x00, 0x01, 0x02, 0xC6, 0xC3, + 0xC2, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x00, + 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xBF, 0xBE, + 0xBD, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0xFF, + 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xDC, + 0xDB, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF8, 0xF7, 0xAD, + 0xAC, 0xAB, 0xAA, 0xA9, 0xA8, 0xA7, 0xA6, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xD4, + 0xD3, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF0, 0xEF, 0xA5, + 0xA4, 0xA3, 0xA2, 0xA1, 0xA0, 0x9F, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, + 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0x9E, + 0x9D, 0x9C, 0xF9, 0x9B, 0x9A, 0x99, 0x98, 0xFA, 0xF9, 0xE2, 0xE1, 0x00, 0x01, 0x02, 0xFB, 0xF2, + 0xF1, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0x97, + 0x96, 0x95, 0x94, 0x93, 0x92, 0xF2, 0x91, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, + 0xFA, 0xF9, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x90, 0x8F, + 0x8E, 0x8D, 0x8C, 0xF9, 0x8B, 0x8A, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x89, 0x88, 0x87, + 0x86, 0x85, 0x84, 0x83, 0x82, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, + 0xFA, 0xF9, 0xC1, 0xC0, 0xE2, 0xE1, 0x01, 0x05, 0xE0, 0xFA, 0x81, 0x80, 0x7F, 0x7E, 0x7D, 0x7C, + 0x7B, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, + 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0xF2, 0xF1, 0xDF, + 0xFF, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0x55, 0x54, 0x53, 0x52, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0x51, 0x50, 0x4F, 0x4E, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0x00, 0x01, 0x03, 0xE1, 0x01, 0x0B, 0x4D, 0x4C, 0x4C, 0x4B, 0xE1, 0x01, 0x0B, 0x00, 0x01, + 0x60, 0x55, 0x50, 0x50, 0x55, 0x44, 0x55, 0x55, 0x00, 0x55, 0x01, 0x06, 0x00, 0x55, 0x45, 0x55, + 0x15, 0x45, 0x55, 0x05, 0x00, 0x55, 0x44, 0x55, 0x51, 0x54, 0x55, 0x55, 0x00, 0x55, 0x54, 0x55, + 0x01, 0x03, 0x11, 0x00, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x51, 0x00, 0x05, 0x01, 0x06, 0x00, + 0x01, 0x08, 0x01, 0x00 +}; - G.int_temp0 = G.enemies_y[G.i]; - G.int_temp0 <<= 1; - G.int_temp0 -= G.scr_y; - if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } - G.temp1 = (byte)G.int_temp0; +byte[] collision_bottom_left = new byte[] { + 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 +}; - if ((G.enemy_push_timer[G.i] & 1) != 0) - { - if (G.temp5 != 0) +byte[] bg_bottom_right = new byte[] { + 0x01, 0x4A, 0x49, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, + 0xF9, 0xDD, 0x00, 0x01, 0x05, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0x48, 0x47, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, + 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xBA, + 0xB9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xB8, + 0xB7, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0x46, + 0x45, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0x44, + 0x43, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xCB, 0xCA, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xE1, 0x01, 0x02, 0xE0, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0x7A, 0x79, 0x78, 0x00, 0x01, 0x02, 0xFF, 0x01, 0x02, 0xDE, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0x70, 0x6F, 0x6E, 0x00, 0x01, 0x02, 0xBA, 0xB9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x00, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0x6D, 0x6C, 0x6E, 0x00, 0x01, 0x02, 0xB8, 0xB7, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0x6B, 0x6A, 0x69, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xBA, + 0xB9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xB8, 0xB7, + 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, + 0xDD, 0x00, 0x01, 0x02, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, + 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, + 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, + 0xF9, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0x00, 0x01, + 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, + 0xF1, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDD, 0x00, 0x01, + 0x02, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x55, 0x54, 0x53, + 0x52, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, + 0x02, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x51, 0x50, 0x4F, + 0x4E, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, + 0x02, 0xE1, 0x01, 0x0B, 0x4D, 0x4C, 0x4C, 0x4B, 0xE1, 0x01, 0x0B, 0x00, 0x01, 0x63, 0x55, 0x55, + 0x11, 0x55, 0x50, 0x50, 0x55, 0x00, 0x55, 0x01, 0x06, 0x00, 0x05, 0x55, 0x15, 0x45, 0x55, 0x15, + 0x55, 0x00, 0x55, 0x55, 0x51, 0x54, 0x55, 0x11, 0x55, 0x00, 0x44, 0x55, 0x01, 0x03, 0x51, 0x55, + 0x00, 0x54, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x00, 0x05, 0x01, 0x06, 0x00, 0x01, 0x09, 0x01, + 0x00 +}; + +byte[] collision_bottom_right = new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 +}; + +byte[] spawn = new byte[] { + 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x02, 0x03, 0x03, 0x03, + 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x07, 0x03, 0x02, 0x04, 0x03, 0x04, 0x04, 0x04, 0x05, 0x04, + 0x02, 0x05, 0x03, 0x05, 0x04, 0x05, 0x05, 0x05, 0x06, 0x05, 0x07, 0x05, 0x02, 0x06, 0x03, 0x06, + 0x05, 0x06, 0x06, 0x06, 0x07, 0x06, 0x19, 0x02, 0x1A, 0x02, 0x1B, 0x02, 0x1C, 0x02, 0x1D, 0x02, + 0x19, 0x03, 0x1A, 0x03, 0x1B, 0x03, 0x1C, 0x03, 0x1D, 0x03, 0x1A, 0x04, 0x1B, 0x04, 0x1C, 0x04, + 0x1D, 0x04, 0x19, 0x05, 0x1A, 0x05, 0x1B, 0x05, 0x1C, 0x05, 0x1D, 0x05, 0x19, 0x06, 0x1A, 0x06, + 0x1C, 0x06, 0x1D, 0x06, 0x02, 0x16, 0x03, 0x16, 0x05, 0x16, 0x06, 0x16, 0x07, 0x16, 0x02, 0x17, + 0x03, 0x17, 0x05, 0x17, 0x06, 0x17, 0x07, 0x17, 0x02, 0x18, 0x03, 0x18, 0x04, 0x18, 0x05, 0x18, + 0x06, 0x18, 0x07, 0x18, 0x02, 0x19, 0x03, 0x19, 0x04, 0x19, 0x05, 0x19, 0x02, 0x1A, 0x03, 0x1A, + 0x04, 0x1A, 0x05, 0x1A, 0x06, 0x1A, 0x07, 0x1A, 0x02, 0x1B, 0x03, 0x1B, 0x04, 0x1B, 0x05, 0x1B, + 0x06, 0x1B, 0x07, 0x1B, 0x19, 0x16, 0x1A, 0x16, 0x1C, 0x16, 0x1D, 0x16, 0x19, 0x17, 0x1A, 0x17, + 0x1C, 0x17, 0x1D, 0x17, 0x19, 0x18, 0x1A, 0x18, 0x1B, 0x18, 0x1C, 0x18, 0x1D, 0x18, 0x1A, 0x19, + 0x1B, 0x19, 0x1C, 0x19, 0x1D, 0x19, 0x19, 0x1A, 0x1A, 0x1A, 0x1B, 0x1A, 0x1C, 0x1A, 0x1D, 0x1A, + 0x19, 0x1B, 0x1A, 0x1B, 0x1B, 0x1B, 0x1C, 0x1B, 0x1D, 0x1B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 +}; + +byte[] item_target_x = new byte[] { 108, 148, 108, 148 }; +byte[] item_target_y = new byte[] { 99, 140, 139, 99 }; + +byte[] spider_damaged_attack_up = new byte[] { 0xF8, 0xF8, 0x84, 0x01, 0x00, 0xF8, 0x86, 0x01, 0x80 }; +byte[] spider_damaged_attack_down = new byte[] { 0xF8, 0xF8, 0x84, 0x81, 0x00, 0xF8, 0x86, 0x81, 0x80 }; +byte[] spider_damaged_attack_right = new byte[] { 0xF8, 0xF8, 0xA4, 0x01, 0x00, 0xF8, 0xA6, 0x01, 0x80 }; +byte[] spider_damaged_attack_left = new byte[] { 0xF8, 0xF8, 0xA6, 0x41, 0x00, 0xF8, 0xA4, 0x41, 0x80 }; +byte[] spider_damaged_leg_0_up = new byte[] { 0xF8, 0xF8, 0x88, 0x01, 0x00, 0xF8, 0x8A, 0x01, 0x80 }; +byte[] spider_damaged_leg_0_down = new byte[] { 0xF8, 0xF8, 0x88, 0x81, 0x00, 0xF8, 0x8A, 0x81, 0x80 }; +byte[] spider_damaged_leg_0_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x01, 0x00, 0xF8, 0xAA, 0x01, 0x80 }; +byte[] spider_damaged_leg_0_left = new byte[] { 0xF8, 0xF8, 0xAA, 0x41, 0x00, 0xF8, 0xA8, 0x41, 0x80 }; +byte[] spider_damaged_leg_1_up = new byte[] { 0xF8, 0xF8, 0x8A, 0x41, 0x00, 0xF8, 0x88, 0x41, 0x80 }; +byte[] spider_damaged_leg_1_down = new byte[] { 0xF8, 0xF8, 0x8A, 0xC1, 0x00, 0xF8, 0x88, 0xC1, 0x80 }; +byte[] spider_damaged_leg_1_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x81, 0x00, 0xF8, 0xAA, 0x81, 0x80 }; +byte[] spider_damaged_leg_1_left = new byte[] { 0xF8, 0xF8, 0xAA, 0xC1, 0x00, 0xF8, 0xA8, 0xC1, 0x80 }; +byte[] spider_attack_up = new byte[] { 0xF8, 0xF8, 0x84, 0x02, 0x00, 0xF8, 0x86, 0x02, 0x80 }; +byte[] spider_attack_down = new byte[] { 0xF8, 0xF8, 0x84, 0x82, 0x00, 0xF8, 0x86, 0x82, 0x80 }; +byte[] spider_attack_right = new byte[] { 0xF8, 0xF8, 0xA4, 0x02, 0x00, 0xF8, 0xA6, 0x02, 0x80 }; +byte[] spider_attack_left = new byte[] { 0xF8, 0xF8, 0xA6, 0x42, 0x00, 0xF8, 0xA4, 0x42, 0x80 }; +byte[] spider_leg_0_up = new byte[] { 0xF8, 0xF8, 0x88, 0x02, 0x00, 0xF8, 0x8A, 0x02, 0x80 }; +byte[] spider_leg_0_down = new byte[] { 0xF8, 0xF8, 0x88, 0x82, 0x00, 0xF8, 0x8A, 0x82, 0x80 }; +byte[] spider_leg_0_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x02, 0x00, 0xF8, 0xAA, 0x02, 0x80 }; +byte[] spider_leg_0_left = new byte[] { 0xF8, 0xF8, 0xAA, 0x42, 0x00, 0xF8, 0xA8, 0x42, 0x80 }; +byte[] spider_leg_1_up = new byte[] { 0xF8, 0xF8, 0x8A, 0x42, 0x00, 0xF8, 0x88, 0x42, 0x80 }; +byte[] spider_leg_1_down = new byte[] { 0xF8, 0xF8, 0x8A, 0xC2, 0x00, 0xF8, 0x88, 0xC2, 0x80 }; +byte[] spider_leg_1_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x82, 0x00, 0xF8, 0xAA, 0x82, 0x80 }; +byte[] spider_leg_1_left = new byte[] { 0xF8, 0xF8, 0xAA, 0xC2, 0x00, 0xF8, 0xA8, 0xC2, 0x80 }; +byte[] bat_damaged_attack_up = new byte[] { 0xF8, 0xF8, 0x94, 0x01, 0x00, 0xF8, 0x96, 0x01, 0x80 }; +byte[] bat_damaged_attack_down = new byte[] { 0xF8, 0xF8, 0x94, 0x81, 0x00, 0xF8, 0x96, 0x81, 0x80 }; +byte[] bat_damaged_attack_right = new byte[] { 0xF8, 0xF8, 0xB4, 0x01, 0x00, 0xF8, 0xB6, 0x01, 0x80 }; +byte[] bat_damaged_attack_left = new byte[] { 0xF8, 0xF8, 0xB6, 0x41, 0x00, 0xF8, 0xB4, 0x41, 0x80 }; +byte[] bat_damaged_leg_0_up = new byte[] { 0xF8, 0xF8, 0x98, 0x01, 0x00, 0xF8, 0x9A, 0x01, 0x80 }; +byte[] bat_damaged_leg_0_down = new byte[] { 0xF8, 0xF8, 0x98, 0x81, 0x00, 0xF8, 0x9A, 0x81, 0x80 }; +byte[] bat_damaged_leg_0_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x01, 0x00, 0xF8, 0xBA, 0x01, 0x80 }; +byte[] bat_damaged_leg_0_left = new byte[] { 0xF8, 0xF8, 0xBA, 0x41, 0x00, 0xF8, 0xB8, 0x41, 0x80 }; +byte[] bat_damaged_leg_1_up = new byte[] { 0xF8, 0xF8, 0x9A, 0x41, 0x00, 0xF8, 0x98, 0x41, 0x80 }; +byte[] bat_damaged_leg_1_down = new byte[] { 0xF8, 0xF8, 0x9A, 0xC1, 0x00, 0xF8, 0x98, 0xC1, 0x80 }; +byte[] bat_damaged_leg_1_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x81, 0x00, 0xF8, 0xBA, 0x81, 0x80 }; +byte[] bat_damaged_leg_1_left = new byte[] { 0xF8, 0xF8, 0xBA, 0xC1, 0x00, 0xF8, 0xB8, 0xC1, 0x80 }; +byte[] bat_attack_up = new byte[] { 0xF8, 0xF8, 0x94, 0x02, 0x00, 0xF8, 0x96, 0x02, 0x80 }; +byte[] bat_attack_down = new byte[] { 0xF8, 0xF8, 0x94, 0x82, 0x00, 0xF8, 0x96, 0x82, 0x80 }; +byte[] bat_attack_right = new byte[] { 0xF8, 0xF8, 0xB4, 0x02, 0x00, 0xF8, 0xB6, 0x02, 0x80 }; +byte[] bat_attack_left = new byte[] { 0xF8, 0xF8, 0xB6, 0x42, 0x00, 0xF8, 0xB4, 0x42, 0x80 }; +byte[] bat_leg_0_up = new byte[] { 0xF8, 0xF8, 0x98, 0x02, 0x00, 0xF8, 0x9A, 0x02, 0x80 }; +byte[] bat_leg_0_down = new byte[] { 0xF8, 0xF8, 0x98, 0x82, 0x00, 0xF8, 0x9A, 0x82, 0x80 }; +byte[] bat_leg_0_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x02, 0x00, 0xF8, 0xBA, 0x02, 0x80 }; +byte[] bat_leg_0_left = new byte[] { 0xF8, 0xF8, 0xBA, 0x42, 0x00, 0xF8, 0xB8, 0x42, 0x80 }; +byte[] bat_leg_1_up = new byte[] { 0xF8, 0xF8, 0x9A, 0x42, 0x00, 0xF8, 0x98, 0x42, 0x80 }; +byte[] bat_leg_1_down = new byte[] { 0xF8, 0xF8, 0x9A, 0xC2, 0x00, 0xF8, 0x98, 0xC2, 0x80 }; +byte[] bat_leg_1_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x82, 0x00, 0xF8, 0xBA, 0x82, 0x80 }; +byte[] bat_leg_1_left = new byte[] { 0xF8, 0xF8, 0xBA, 0xC2, 0x00, 0xF8, 0xB8, 0xC2, 0x80 }; +byte[] player_carry_0_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x3C, 0x00, 0x00, 0xF8, 0x3E, 0x00, 0x80 }; +byte[] player_carry_0_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x3C, 0x80, 0x00, 0xF8, 0x3E, 0x80, 0x80 }; +byte[] player_carry_0_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x5C, 0x40, 0x00, 0xF8, 0x5A, 0x40, 0x80 }; +byte[] player_carry_0_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x5A, 0x00, 0x00, 0xF8, 0x5C, 0x00, 0x80 }; +byte[] player_carry_0_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x38, 0x00, 0x00, 0xF8, 0x3A, 0x00, 0x80 }; +byte[] player_carry_0_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x3A, 0x40, 0x00, 0xF8, 0x38, 0x40, 0x80 }; +byte[] player_carry_0_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x38, 0x80, 0x00, 0xF8, 0x3A, 0x80, 0x80 }; +byte[] player_carry_0_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x3A, 0xC0, 0x00, 0xF8, 0x38, 0xC0, 0x80 }; +byte[] player_carry_0_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x00, 0x00, 0xF8, 0x58, 0x00, 0x80 }; +byte[] player_carry_0_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x80, 0x00, 0xF8, 0x58, 0x80, 0x80 }; +byte[] player_carry_0_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0x40, 0x00, 0xF8, 0x40, 0x40, 0x80 }; +byte[] player_carry_0_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0xC0, 0x00, 0xF8, 0x40, 0xC0, 0x80 }; +byte[] player_carry_1_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x3C, 0x01, 0x00, 0xF8, 0x3E, 0x01, 0x80 }; +byte[] player_carry_1_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x3C, 0x81, 0x00, 0xF8, 0x3E, 0x81, 0x80 }; +byte[] player_carry_1_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x5C, 0x41, 0x00, 0xF8, 0x5A, 0x41, 0x80 }; +byte[] player_carry_1_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x5A, 0x01, 0x00, 0xF8, 0x5C, 0x01, 0x80 }; +byte[] player_carry_1_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x38, 0x01, 0x00, 0xF8, 0x3A, 0x01, 0x80 }; +byte[] player_carry_1_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x3A, 0x41, 0x00, 0xF8, 0x38, 0x41, 0x80 }; +byte[] player_carry_1_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x38, 0x81, 0x00, 0xF8, 0x3A, 0x81, 0x80 }; +byte[] player_carry_1_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x3A, 0xC1, 0x00, 0xF8, 0x38, 0xC1, 0x80 }; +byte[] player_carry_1_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x56, 0x01, 0x00, 0xF8, 0x58, 0x01, 0x80 }; +byte[] player_carry_1_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x56, 0x81, 0x00, 0xF8, 0x58, 0x81, 0x80 }; +byte[] player_carry_1_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0x41, 0x00, 0xF8, 0x56, 0x41, 0x80 }; +byte[] player_carry_1_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0xC1, 0x00, 0xF8, 0x56, 0xC1, 0x80 }; +byte[] player_0_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x24, 0x00, 0x00, 0xF8, 0x26, 0x00, 0x80 }; +byte[] player_0_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x24, 0x80, 0x00, 0xF8, 0x26, 0x80, 0x80 }; +byte[] player_0_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x46, 0x40, 0x00, 0xF8, 0x44, 0x40, 0x80 }; +byte[] player_0_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x44, 0x00, 0x00, 0xF8, 0x46, 0x00, 0x80 }; +byte[] player_0_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x20, 0x00, 0x00, 0xF8, 0x22, 0x00, 0x80 }; +byte[] player_0_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x22, 0x40, 0x00, 0xF8, 0x20, 0x40, 0x80 }; +byte[] player_0_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x20, 0x80, 0x00, 0xF8, 0x22, 0x80, 0x80 }; +byte[] player_0_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x22, 0xC0, 0x00, 0xF8, 0x20, 0xC0, 0x80 }; +byte[] player_0_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x00, 0x00, 0xF8, 0x42, 0x00, 0x80 }; +byte[] player_0_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x80, 0x00, 0xF8, 0x42, 0x80, 0x80 }; +byte[] player_0_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0x40, 0x00, 0xF8, 0x40, 0x40, 0x80 }; +byte[] player_0_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0xC0, 0x00, 0xF8, 0x40, 0xC0, 0x80 }; +byte[] player_0_meta_spr_attack_0_up = new byte[] { 0xF8, 0x00, 0x48, 0x00, 0x00, 0x00, 0x4A, 0x00, 0xF8, 0xF0, 0x28, 0x00, 0x00, 0xF0, 0x2A, 0x00, 0x80 }; +byte[] player_0_meta_spr_attack_1_up = new byte[] { 0xF8, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x4E, 0x00, 0xF8, 0xF0, 0x2C, 0x00, 0x00, 0xF0, 0x2E, 0x00, 0x80 }; +byte[] player_0_meta_spr_attack_0_down = new byte[] { 0xF8, 0x00, 0x28, 0x80, 0x00, 0x00, 0x2A, 0x80, 0xF8, 0xF0, 0x48, 0x80, 0x00, 0xF0, 0x4A, 0x80, 0x80 }; +byte[] player_0_meta_spr_attack_1_down = new byte[] { 0xF8, 0x00, 0x2C, 0x80, 0x00, 0x00, 0x2E, 0x80, 0xF8, 0xF0, 0x4C, 0x80, 0x00, 0xF0, 0x4E, 0x80, 0x80 }; +byte[] player_0_meta_spr_attack_0_right = new byte[] { 0xF8, 0xF8, 0x30, 0x00, 0x00, 0xF8, 0x32, 0x00, 0x08, 0xF8, 0x34, 0x00, 0x80 }; +byte[] player_0_meta_spr_attack_1_right = new byte[] { 0xF8, 0xF8, 0x50, 0x00, 0x00, 0xF8, 0x52, 0x00, 0x08, 0xF8, 0x54, 0x00, 0x80 }; +byte[] player_0_meta_spr_attack_0_left = new byte[] { 0xF0, 0xF8, 0x34, 0x40, 0xF8, 0xF8, 0x32, 0x40, 0x00, 0xF8, 0x30, 0x40, 0x80 }; +byte[] player_0_meta_spr_attack_1_left = new byte[] { 0xF0, 0xF8, 0x54, 0x40, 0xF8, 0xF8, 0x52, 0x40, 0x00, 0xF8, 0x50, 0x40, 0x80 }; +byte[] player_1_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x24, 0x01, 0x00, 0xF8, 0x26, 0x01, 0x80 }; +byte[] player_1_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x24, 0x81, 0x00, 0xF8, 0x26, 0x81, 0x80 }; +byte[] player_1_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x46, 0x41, 0x00, 0xF8, 0x44, 0x41, 0x80 }; +byte[] player_1_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x44, 0x01, 0x00, 0xF8, 0x46, 0x01, 0x80 }; +byte[] player_1_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x20, 0x01, 0x00, 0xF8, 0x22, 0x01, 0x80 }; +byte[] player_1_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x22, 0x41, 0x00, 0xF8, 0x20, 0x41, 0x80 }; +byte[] player_1_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x20, 0x81, 0x00, 0xF8, 0x22, 0x81, 0x80 }; +byte[] player_1_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x22, 0xC1, 0x00, 0xF8, 0x20, 0xC1, 0x80 }; +byte[] player_1_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x01, 0x00, 0xF8, 0x42, 0x01, 0x80 }; +byte[] player_1_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x81, 0x00, 0xF8, 0x42, 0x81, 0x80 }; +byte[] player_1_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0x41, 0x00, 0xF8, 0x40, 0x41, 0x80 }; +byte[] player_1_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0xC1, 0x00, 0xF8, 0x40, 0xC1, 0x80 }; +byte[] player_1_meta_spr_attack_0_up = new byte[] { 0xF8, 0x00, 0x48, 0x01, 0x00, 0x00, 0x4A, 0x01, 0xF8, 0xF0, 0x28, 0x01, 0x00, 0xF0, 0x2A, 0x01, 0x80 }; +byte[] player_1_meta_spr_attack_1_up = new byte[] { 0xF8, 0x00, 0x4C, 0x01, 0x00, 0x00, 0x4E, 0x01, 0xF8, 0xF0, 0x2C, 0x01, 0x00, 0xF0, 0x2E, 0x01, 0x80 }; +byte[] player_1_meta_spr_attack_0_down = new byte[] { 0xF8, 0x00, 0x28, 0x81, 0x00, 0x00, 0x2A, 0x81, 0xF8, 0xF0, 0x48, 0x81, 0x00, 0xF0, 0x4A, 0x81, 0x80 }; +byte[] player_1_meta_spr_attack_1_down = new byte[] { 0xF8, 0x00, 0x2C, 0x81, 0x00, 0x00, 0x2E, 0x81, 0xF8, 0xF0, 0x4C, 0x81, 0x00, 0xF0, 0x4E, 0x81, 0x80 }; +byte[] player_1_meta_spr_attack_0_right = new byte[] { 0xF8, 0xF8, 0x30, 0x01, 0x00, 0xF8, 0x32, 0x01, 0x08, 0xF8, 0x34, 0x01, 0x80 }; +byte[] player_1_meta_spr_attack_1_right = new byte[] { 0xF8, 0xF8, 0x50, 0x01, 0x00, 0xF8, 0x52, 0x01, 0x08, 0xF8, 0x54, 0x01, 0x80 }; +byte[] player_1_meta_spr_attack_0_left = new byte[] { 0xF0, 0xF8, 0x34, 0x41, 0xF8, 0xF8, 0x32, 0x41, 0x00, 0xF8, 0x30, 0x41, 0x80 }; +byte[] player_1_meta_spr_attack_1_left = new byte[] { 0xF0, 0xF8, 0x54, 0x41, 0xF8, 0xF8, 0x52, 0x41, 0x00, 0xF8, 0x50, 0x41, 0x80 }; + +// Main game code +byte isBlocked(byte x, byte y) +{ + if (x > 122 && x < 134 && y > 114 && y < 125) + { + return 1; + } + if (x < 128) + { + if (y < 120) + { + return collision_top_left[(x >> 3) + ((y >> 3) << 4)]; + } + else + { + y -= 120; + return collision_bottom_left[(x >> 3) + ((y >> 3) << 4)]; + } + } + else + { + x -= 128; + if (y < 120) + { + return collision_top_right[(x >> 3) + ((y >> 3) << 4)]; + } + else + { + y -= 120; + return collision_bottom_right[(x >> 3) + ((y >> 3) << 4)]; + } + } +} + +void took_damage() +{ + G.j = 0; + while (G.j < 8) + { + if (G.enemies_health[G.j] == 0) + { + G.j++; + continue; + } + G.temp2 = G.enemies_x[G.j]; + G.temp3 = G.enemies_y[G.j]; + if (G.temp0 > G.temp2) + G.temp4 = (byte)(G.temp0 - G.temp2); + else + G.temp4 = (byte)(G.temp2 - G.temp0); + if (G.temp1 > G.temp3) + G.temp5 = (byte)(G.temp1 - G.temp3); + else + G.temp5 = (byte)(G.temp3 - G.temp1); + if (G.temp4 < G.temp6 && G.temp5 < G.temp7) + { + G.enemies_health[G.j]--; + if (G.enemies_health[G.j] != 0) + { + G.enemy_push_timer[G.j] = 4; + G.enemy_push_dir[G.j] = G.player_dir[G.i]; + } + else + { + sfx_play(1, 0); + } + break; + } + G.j++; + } +} + +void tick_enemies() +{ + G.temp4 = (byte)(rand8() & 7); + G.i = 0; + while (G.i < 8) + { + if (G.enemies_health[G.i] == 0 && (G.frame & 7) == G.i) + { + G.enemies_x[G.i] = G.enemy_spawn_points_x[G.temp4]; + G.enemies_y[G.i] = G.enemy_spawn_points_y[G.temp4]; + G.enemy_push_timer[G.i] = 0; + G.enemies_health[G.i] = G.spawn_hp; + G.enemies_type[G.i] = (byte)(G.i & 1); + return; + } + G.i++; + } + + G.temp2 = (byte)(G.frame & 7); + G.enemy_leg[G.temp2] = (byte)(1 - G.enemy_leg[G.temp2]); + G.temp1 = G.enemies_enemy[G.temp2]; + + G.temp6 = (byte)(rand8() & 3); + if (G.temp6 == 0) + { + G.temp6 = (byte)(rand8() & 3); + if (G.temp6 == 0) G.temp3 = PAD_LEFT; + else if (G.temp6 == 1) G.temp3 = PAD_RIGHT; + else if (G.temp6 == 2) G.temp3 = PAD_UP; + else G.temp3 = PAD_DOWN; + } + else if (G.temp6 == 1) + { + G.temp3 = G.enemies_dir[G.temp2]; + } + else + { + G.temp0 = (byte)(rand8() & 1); + if (G.temp0 != 0) + { + if (G.enemies_x[G.temp2] > G.player_x[G.temp1]) + G.temp3 = PAD_LEFT; + else + G.temp3 = PAD_RIGHT; + } + else + { + if (G.enemies_y[G.temp2] > G.player_y[G.temp1]) + G.temp3 = PAD_UP; + else + G.temp3 = PAD_DOWN; + } + } + + G.enemies_dir[G.temp2] = G.temp3; + G.temp6 = G.enemies_x[G.temp2]; + G.temp7 = G.enemies_y[G.temp2]; + + if (G.enemy_push_timer[G.temp2] != 0) + { + } + else if (G.temp3 == PAD_RIGHT) + G.enemies_x[G.temp2] += G.enemy_speed; + else if (G.temp3 == PAD_LEFT) + G.enemies_x[G.temp2] -= G.enemy_speed; + else if (G.temp3 == PAD_UP) + G.enemies_y[G.temp2] -= G.enemy_speed; + else if (G.temp3 == PAD_DOWN) + G.enemies_y[G.temp2] += G.enemy_speed; + + G.temp5 = isBlocked(G.enemies_x[G.temp2], G.enemies_y[G.temp2]); + if (G.temp5 != 0) + { + G.enemies_x[G.temp2] = G.temp6; + G.enemies_y[G.temp2] = G.temp7; + } + else + { + G.i = 0; + while (G.i < 8) + { + if (G.temp2 != G.i) + { + if ((byte)(G.enemies_x[G.i] - 6) < G.enemies_x[G.temp2] && (byte)(G.enemies_x[G.i] + 6) > G.enemies_x[G.temp2]) + { + if ((byte)(G.enemies_y[G.i] - 6) < G.enemies_y[G.temp2] && (byte)(G.enemies_y[G.i] + 6) > G.enemies_y[G.temp2]) + { + G.enemies_x[G.temp2] = G.temp6; + G.enemies_y[G.temp2] = G.temp7; + } + } + } + G.i++; + } + } + + G.i = 0; + while (G.i < 8) + { + if (G.enemy_push_timer[G.i] != 0 && (G.frame & 3) != 0) + { + if ((G.frame & 1) != 0) + { + G.enemy_push_timer[G.i]--; + G.temp6 = G.enemies_x[G.i]; + G.temp7 = G.enemies_y[G.i]; + if (G.enemy_push_dir[G.i] == PAD_LEFT) G.enemies_x[G.i] -= 2; + else if (G.enemy_push_dir[G.i] == PAD_RIGHT) G.enemies_x[G.i] += 2; + else if (G.enemy_push_dir[G.i] == PAD_UP) G.enemies_y[G.i] -= 2; + else if (G.enemy_push_dir[G.i] == PAD_DOWN) G.enemies_y[G.i] += 2; + if (isBlocked(G.enemies_x[G.i], G.enemies_y[G.i]) != 0) + { + G.enemies_x[G.i] = G.temp6; + G.enemies_y[G.i] = G.temp7; + } + } + } + + G.temp5 = 0; + G.j = 0; + while (G.j < 2) + { + if ((G.frame & G.enemy_damage_modifier) == 0) + { + if ((byte)(G.enemies_x[G.i] - 5) < G.player_x[G.j] && (byte)(G.enemies_x[G.i] + 5) > G.player_x[G.j]) + { + if ((byte)(G.enemies_y[G.i] - 5) < G.player_y[G.j] && (byte)(G.enemies_y[G.i] + 5) > G.player_y[G.j]) + { + if (G.player_hp[G.j] != 0 && G.player_god_mode[G.j] == 0) + { + G.temp5 = 1; + G.player_hp[G.j]--; + G.player_god_mode[G.j] = 4; + sfx_play(0, 1); + } + if (G.player_hp[G.j] == 0 && G.enemies_enemy[G.i] == G.j) + { + G.enemies_enemy[G.i] = (byte)(1 - G.enemies_enemy[G.i]); + } + } + } + } + G.j++; + } + + G.int_temp0 = G.enemies_x[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_x; + if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } + G.temp0 = (byte)G.int_temp0; + + G.int_temp0 = G.enemies_y[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_y; + if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } + G.temp1 = (byte)G.int_temp0; + + if ((G.enemy_push_timer[G.i] & 1) != 0) + { + if (G.temp5 != 0) { if (G.enemies_type[G.i] == 0) { @@ -421,7 +938,7 @@ static void tick_enemies() } } -static void draw_player() +void draw_player() { if (G.i == 0) { @@ -669,7 +1186,7 @@ static void draw_player() } } -static void tick_players() +void tick_players() { if (G.player_hp[0] >= 4) { @@ -880,763 +1397,246 @@ static void tick_players() } } } - } - else if ((G.temp6 == 0 || (G.frame & 7) == G.i) && (G.frame & 1) == G.i) - { - if ((G.player_dir[G.i] & G.temp2) == 0) - { - if ((G.temp2 & PAD_LEFT) != 0) G.player_dir[G.i] = PAD_LEFT; - else if ((G.temp2 & PAD_RIGHT) != 0) G.player_dir[G.i] = PAD_RIGHT; - else if ((G.temp2 & PAD_DOWN) != 0) G.player_dir[G.i] = PAD_DOWN; - else if ((G.temp2 & PAD_UP) != 0) G.player_dir[G.i] = PAD_UP; - } - G.temp4 = G.player_x[G.i]; - G.temp5 = G.player_y[G.i]; - - if ((G.temp2 & PAD_LEFT) != 0) - { - if (G.player_hp[G.temp1] == 0 || G.player_x[G.temp1] < G.player_x[G.i] || (byte)(G.player_x[G.temp1] - G.player_x[G.i]) < 60) - G.player_x[G.i]--; - } - else if ((G.temp2 & PAD_RIGHT) != 0) - { - if (G.player_hp[G.temp1] == 0 || (G.player_x[G.i] < 250 && (G.player_x[G.temp1] > G.player_x[G.i] || (byte)(G.player_x[G.i] - G.player_x[G.temp1]) < 60))) - G.player_x[G.i]++; - } - - if (isBlocked(G.player_x[G.i], G.player_y[G.i]) != 0) - G.player_x[G.i] = G.temp4; - else if (G.player_carry[G.i] != 0xFF) - G.item_x[G.player_carry[G.i]] += (byte)(G.player_x[G.i] - G.temp4); - - if ((G.temp2 & PAD_UP) != 0) - { - if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] < G.player_y[G.i] || (byte)(G.player_y[G.temp1] - G.player_y[G.i]) < 60) - G.player_y[G.i]--; - } - else if ((G.temp2 & PAD_DOWN) != 0) - { - if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] > G.player_y[G.i] || (byte)(G.player_y[G.i] - G.player_y[G.temp1]) < 60) - G.player_y[G.i]++; - } - - if (isBlocked(G.player_x[G.i], G.player_y[G.i]) != 0) - G.player_y[G.i] = G.temp5; - else if (G.player_carry[G.i] != 0xFF) - G.item_y[G.player_carry[G.i]] += (byte)(G.player_y[G.i] - G.temp5); - } - - if (G.player_attack_tick[G.i] == 10) - { - G.temp0 = G.player_x[G.i]; - G.temp1 = G.player_y[G.i]; - G.temp6 = 5; - G.temp7 = 5; - if (G.player_dir[G.i] == PAD_LEFT) { G.temp0 -= 4; G.temp6 = 8; } - else if (G.player_dir[G.i] == PAD_RIGHT) { G.temp0 += 4; G.temp6 = 8; } - if (G.player_dir[G.i] == PAD_UP) { G.temp1 -= 4; G.temp7 = 8; } - else if (G.player_dir[G.i] == PAD_DOWN) { G.temp1 += 3; G.temp7 = 8; } - G.dx = G.temp0; - G.dy = G.temp1; - if (isBlocked(G.temp0, G.temp1) == 0) - took_damage(); - } - G.i++; - } - - G.temp2 = 0; - G.i = 0; - while (G.i < 4) - { - if (G.item_placed[G.i] == 0) - { - if ((byte)(G.item_x[G.i] - item_target_x[G.i]) < 2 || (byte)(item_target_x[G.i] - G.item_x[G.i]) < 2) - { - if ((byte)(G.item_y[G.i] - item_target_y[G.i]) < 2 || (byte)(item_target_y[G.i] - G.item_y[G.i]) < 2) - { - G.item_placed[G.i] = 1; - G.item_x[G.i] = item_target_x[G.i]; - G.item_y[G.i] = item_target_y[G.i]; - if (G.player_carry[0] == G.i) G.player_carry[0] = 0xFF; - if (G.player_carry[1] == G.i) G.player_carry[1] = 0xFF; - sfx_play(2, 3); - } - } - } - if (G.item_placed[G.i] == 0) G.temp2 = 1; - - G.int_temp0 = G.item_x[G.i]; - G.int_temp0 <<= 1; - G.int_temp0 -= G.scr_x; - if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } - G.temp0 = (byte)G.int_temp0; - - G.int_temp0 = G.item_y[G.i]; - G.int_temp0 <<= 1; - G.int_temp0 -= G.scr_y; - if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } - G.temp1 = (byte)G.int_temp0; - - G.spr = oam_spr((byte)(G.temp0 - 4), (byte)(G.temp1 - 8), (byte)(0xC0 + (G.item_type[G.i] << 1)), 0x03, G.spr); - G.i++; - } - - if (G.temp2 == 0) G.next_level = 1; -} - -static void init() -{ - oam_size(1); - bank_spr(0); - bank_bg(1); - vram_adr(NAMETABLE_A); - vram_unrle(bg_top_left); - vram_adr(NAMETABLE_B); - vram_unrle(bg_top_right); - vram_adr(NAMETABLE_C); - vram_unrle(bg_bottom_left); - vram_adr(NAMETABLE_D); - vram_unrle(bg_bottom_right); - ppu_on_all(); - G.difficulty = 0; - G.next_level = 0; -} - -static void reset() -{ - G.next_level = 0; - G.frame = 0; - G.player_dir[0] = PAD_UP; - G.player_dir[1] = PAD_UP; - G.player_hp[0] = 4; - G.player_hp[1] = 4; - G.scr_x = 128; - G.scr_y = 128; - G.player_x[0] = 120; - G.player_y[0] = 120; - G.player_x[1] = 136; - G.player_y[1] = 120; - G.player_attack_tick[0] = 0; - G.player_attack_tick[1] = 0; - G.enemies_enemy[0] = PLAYER_1; - G.enemies_enemy[1] = PLAYER_2; - G.enemies_enemy[2] = PLAYER_1; - G.enemies_enemy[3] = PLAYER_2; - G.enemies_enemy[4] = PLAYER_1; - G.enemies_enemy[5] = PLAYER_2; - G.enemies_enemy[6] = PLAYER_1; - G.enemies_enemy[7] = PLAYER_2; - G.i = 0; - while (G.i < 8) - { - G.enemies_health[G.i] = 1; - G.enemies_dir[G.i] = PAD_UP; - G.enemy_leg[G.i] = (byte)(G.i & 1); - G.enemies_type[G.i] = (byte)(G.i & 1); - G.i++; - } - G.enemy_spawn_points_x[0] = 184; - G.enemy_spawn_points_y[0] = 24; - G.enemy_spawn_points_x[1] = 232; - G.enemy_spawn_points_y[1] = 72; - G.enemy_spawn_points_x[2] = 232; - G.enemy_spawn_points_y[2] = 168; - G.enemy_spawn_points_x[3] = 184; - G.enemy_spawn_points_y[3] = 216; - G.enemy_spawn_points_x[4] = 72; - G.enemy_spawn_points_y[4] = 217; - G.enemy_spawn_points_x[5] = 24; - G.enemy_spawn_points_y[5] = 167; - G.enemy_spawn_points_x[6] = 24; - G.enemy_spawn_points_y[6] = 73; - G.enemy_spawn_points_x[7] = 72; - G.enemy_spawn_points_y[7] = 24; - G.i = 0; - while (G.i < 8) - { - G.enemies_x[G.i] = G.enemy_spawn_points_x[G.i]; - G.enemies_y[G.i] = G.enemy_spawn_points_y[G.i]; - G.enemy_push_timer[G.i] = 0; - G.i++; - } - G.item_type[0] = 1; - G.item_x[0] = 128; - G.item_y[0] = 88; - G.item_type[1] = 2; - G.item_x[1] = 128; - G.item_y[1] = 108; - G.item_type[2] = 3; - G.item_x[2] = 128; - G.item_y[2] = 128; - G.item_type[3] = 4; - G.item_x[3] = 128; - G.item_y[3] = 148; - - G.i = 0; - while (G.i < 4) - { - G.temp0 = (byte)(rand8() & 0xFE); - G.item_x[G.i] = (byte)(spawn[G.temp0] << 3); - G.item_y[G.i] = (byte)(spawn[G.temp0 + 1] << 3); - byte retry = 0; - G.j = 0; - while (G.j < G.i) + } + else if ((G.temp6 == 0 || (G.frame & 7) == G.i) && (G.frame & 1) == G.i) { - if (G.item_x[G.i] == G.item_x[G.j] && G.item_y[G.i] == G.item_y[G.j]) + if ((G.player_dir[G.i] & G.temp2) == 0) { - retry = 1; - break; + if ((G.temp2 & PAD_LEFT) != 0) G.player_dir[G.i] = PAD_LEFT; + else if ((G.temp2 & PAD_RIGHT) != 0) G.player_dir[G.i] = PAD_RIGHT; + else if ((G.temp2 & PAD_DOWN) != 0) G.player_dir[G.i] = PAD_DOWN; + else if ((G.temp2 & PAD_UP) != 0) G.player_dir[G.i] = PAD_UP; } - G.j++; - } - if (retry == 0) G.i++; - } - - G.i = 0; - while (G.i < 4) - { - G.item_x[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); - G.item_y[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); - G.i++; - } - - G.player_carry[0] = 0xFF; - G.player_carry[1] = 0xFF; - G.item_placed[0] = 0; - G.item_placed[1] = 0; - G.item_placed[2] = 0; - G.item_placed[3] = 0; - G.player_god_mode[0] = 0; - G.player_god_mode[1] = 0; - - G.difficulty++; - if (G.difficulty == 1) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 1; } - else if (G.difficulty == 2) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 2; } - else if (G.difficulty == 4) { G.enemy_speed = 3; G.enemy_damage_modifier = 31; G.spawn_hp = 2; } - else if (G.difficulty == 6) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 3; } - else if (G.difficulty == 7) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 4; } - else if (G.difficulty == 8) { G.enemy_speed = 4; G.enemy_damage_modifier = 15; G.spawn_hp = 5; } - else if (G.difficulty == 9) { G.enemy_speed = 4; G.enemy_damage_modifier = 7; G.spawn_hp = 6; } - else if (G.difficulty >= 10) { G.enemy_speed = 5; G.enemy_damage_modifier = 7; G.spawn_hp = (byte)(6 + (G.difficulty - 10)); } - scroll(G.scr_x, G.scr_y); -} - -byte[] palette = new byte[] { - 0x0D, 0x00, 0x3D, 0x3C, 0x0D, 0x09, 0x1B, 0x3C, 0x07, 0x28, 0x0F, 0x79, 0x07, 0x21, 0x1C, 0x0F, - 0x00, 0x11, 0x16, 0x0D, 0x00, 0x27, 0x16, 0x0D, 0x00, 0x17, 0x15, 0x29, 0x00, 0x27, 0x16, 0x0D -}; - -byte[] paused_palette = new byte[] { - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x00, 0x11, 0x16, 0x0D, 0x00, 0x27, 0x16, 0x0D, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F -}; - -byte[] bg_menu = new byte[] { - 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, - 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, - 0xF1, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xEA, - 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, - 0x81, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE6, - 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, - 0x77, 0xC1, 0xC0, 0xDD, 0x00, 0x00, 0xFB, 0x42, 0x41, 0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, - 0x39, 0x38, 0x40, 0x37, 0x36, 0x40, 0x40, 0x35, 0x34, 0x33, 0x42, 0xDD, 0x00, 0x00, 0xFB, 0xFA, - 0xF9, 0xBC, 0xBB, 0xDF, 0xFF, 0xFF, 0xDE, 0x32, 0x31, 0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, - 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x1F, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, - 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x1E, 0x1D, 0x42, 0x1C, 0x24, 0x1B, 0x1A, 0x19, 0x18, - 0x17, 0x42, 0x16, 0x15, 0x42, 0x24, 0x14, 0x13, 0x12, 0x11, 0x10, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x42, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, - 0x07, 0x09, 0x08, 0x07, 0x42, 0x0C, 0x06, 0x42, 0x05, 0x04, 0x42, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xB6, 0xB5, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x68, 0x67, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xB4, 0xB3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x66, 0x65, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE0, 0xB2, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0xFA, 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0xFA, - 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, - 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xB1, - 0xB0, 0x64, 0x63, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xC1, - 0xC0, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xAF, - 0xAE, 0x62, 0x61, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xBC, - 0xBB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x60, - 0x5F, 0x4A, 0x49, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, - 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x5E, - 0x5D, 0x48, 0x47, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, - 0xF1, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x02, 0x0B, 0xFA, 0xF9, - 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, 0xDE, 0xF2, 0xF1, - 0xF2, 0xF1, 0x00, 0x02, 0x0B, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x59, 0x58, 0x00, 0x02, 0x0B, 0x46, 0x45, 0xFA, 0xF9, - 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x57, 0x56, - 0x00, 0x02, 0x0B, 0x44, 0x43, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x02, 0x0B, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, - 0xFA, 0xF9, 0xFA, 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x02, - 0x0B, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x02, 0x0B, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, - 0xFA, 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x02, 0x0B, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, - 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xE2, 0xE1, 0x02, 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, - 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xCB, 0xCA, - 0xF2, 0xF1, 0xDF, 0xFF, 0x02, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, - 0xFB, 0xF2, 0xF1, 0x55, 0x02, 0x07, 0x11, 0x84, 0xA5, 0x02, 0x03, 0x21, 0x44, 0x55, 0x59, 0x5A, - 0x02, 0x03, 0x56, 0x55, 0x55, 0x45, 0x55, 0x02, 0x03, 0x15, 0x55, 0x55, 0x44, 0x55, 0x02, 0x03, - 0x11, 0x55, 0x55, 0x54, 0x11, 0x00, 0x00, 0x44, 0x51, 0x55, 0x02, 0x02, 0x11, 0x00, 0x00, 0x44, - 0x55, 0x55, 0x01, 0x04, 0x05, 0x00, 0x00, 0x05, 0x01, 0x04, 0x04, 0x02, 0x00 -}; - -byte[] bg_top_left = new byte[] { - 0x01, 0x00, 0x01, 0x63, 0xFF, 0x01, 0x0B, 0xFE, 0xFD, 0xFD, 0xFC, 0xFF, 0x01, 0x0B, 0x00, 0x01, - 0x02, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF6, 0xF5, - 0xF4, 0xF3, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, - 0x02, 0xFB, 0xF2, 0xF1, 0xF0, 0xEF, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xEE, 0xED, - 0xEC, 0xEB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, - 0x02, 0xFB, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, - 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, - 0x02, 0xFB, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, - 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x05, 0xE0, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x00, 0x01, 0x02, 0xFB, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xDC, 0xDB, 0xDA, 0xD9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xD8, 0xD7, 0xFA, 0xF9, 0xFA, 0xF9, 0xD6, 0xD5, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xD4, 0xD3, 0xD2, 0xD1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xD0, 0xCF, 0xF2, 0xF1, 0xF2, 0xF1, 0xCE, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE0, 0xDC, - 0xDB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xD4, 0xD3, - 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xDF, 0xFF, 0x00, 0x01, 0x02, 0xFB, 0xCD, 0xCC, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, - 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, - 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xCB, 0xCA, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xC9, 0xC8, 0xC7, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, - 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, - 0xFA, 0xF9, 0xEA, 0xE9, 0x00, 0x01, 0x02, 0xC6, 0xC5, 0xC4, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xE6, 0xE5, 0x00, 0x01, 0x02, 0xC6, 0xC3, 0xC2, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, - 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0x00, 0x00, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, - 0xE2, 0xE1, 0x01, 0x02, 0x00, 0x01, 0x02, 0xBF, 0xBE, 0xBD, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xDF, 0xFF, 0x01, 0x02, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xBA, 0xB9, 0xFA, 0xF9, - 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, - 0xD6, 0xD5, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xB8, 0xB7, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xCE, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, - 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, - 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, - 0xFA, 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xB6, 0xB5, - 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xCB, 0xCA, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xB4, 0xB3, - 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xDA, 0xD9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, - 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE0, 0xB2, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, - 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xD2, 0xD1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x05, - 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xB1, - 0xB0, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x05, 0xFB, 0xF2, 0xF1, - 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xAF, 0xAE, 0x00, 0x01, - 0x08, 0x55, 0x01, 0x06, 0x00, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x11, 0x00, 0x55, 0x44, 0x55, - 0x01, 0x03, 0x51, 0x00, 0x55, 0x44, 0x55, 0x11, 0x44, 0x55, 0x05, 0x00, 0x55, 0x01, 0x06, 0x00, - 0x55, 0x01, 0x03, 0x45, 0x55, 0x55, 0x00, 0x05, 0x00, 0x00, 0x05, 0x04, 0x05, 0x01, 0x02, 0x01, - 0x00 -}; - -byte[] collision_top_left = new byte[] { - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 -}; + G.temp4 = G.player_x[G.i]; + G.temp5 = G.player_y[G.i]; -byte[] bg_top_right = new byte[] { - 0x02, 0x00, 0x02, 0x5F, 0xFF, 0x02, 0x0B, 0xFE, 0xFD, 0xFD, 0xFC, 0xFF, 0x02, 0x0B, 0x00, 0x02, - 0x03, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF8, 0xF7, 0xFA, 0xF9, 0xDA, 0xD9, 0xF6, 0xF5, 0xF4, - 0xF3, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, - 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF0, 0xEF, 0xF2, 0xF1, 0xD2, 0xD1, 0xEE, 0xED, 0xEC, - 0xEB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, - 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, - 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, - 0x02, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x02, - 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0x02, 0x05, 0xDE, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xDC, 0xDB, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xAD, 0xAC, 0xAB, 0xAA, 0xA9, 0xA8, 0xA7, 0xA6, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xD4, 0xD3, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xA5, 0xA4, 0xA3, 0xA2, 0xA1, 0xA0, 0x9F, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xCD, 0xCC, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x9E, 0x9D, 0x9C, 0xF9, 0x9B, 0x9A, 0x99, 0x98, 0xE2, 0xE0, 0xFA, - 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xCB, 0xCA, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x97, 0x96, 0x95, 0x94, 0x93, 0x92, 0xF2, 0x91, 0xDD, 0xFB, 0xF2, - 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x90, 0x8F, 0x8E, 0x8D, 0x8C, 0xF9, 0x8B, 0x8A, 0xDD, 0xFB, 0xFA, - 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0xDD, 0xFB, 0xF2, - 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0x81, 0x80, 0x7F, 0x7E, 0x7D, 0x7C, 0x7B, 0xDD, 0xFB, 0xFA, - 0xF9, 0x7A, 0x79, 0x78, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0xDD, 0xFB, 0xF2, - 0xF1, 0x70, 0x6F, 0x6E, 0x00, 0x02, 0x02, 0xE1, 0x02, 0x02, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xDD, 0x00, 0x00, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0xFB, 0xDA, - 0xD9, 0x6D, 0x6C, 0x6E, 0x00, 0x02, 0x02, 0xFF, 0x02, 0x02, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, 0xDE, 0xD2, - 0xD1, 0x6B, 0x6A, 0x69, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xC1, 0xC0, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xBC, 0xBB, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0x68, 0x67, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0x66, 0x65, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0xFA, - 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0xF2, - 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0x64, 0x63, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xC1, 0xC0, 0xE2, 0xE1, 0x02, 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, - 0xDD, 0x00, 0x02, 0x02, 0x62, 0x61, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, - 0xF2, 0xF1, 0xBC, 0xBB, 0xDD, 0x00, 0x02, 0x05, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, - 0x0A, 0x55, 0x02, 0x06, 0x00, 0x44, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x00, 0x54, 0x55, 0x02, - 0x03, 0x11, 0x55, 0x00, 0x05, 0x55, 0x11, 0x44, 0x55, 0x11, 0x55, 0x00, 0x55, 0x02, 0x06, 0x00, - 0x55, 0x55, 0x15, 0x55, 0x02, 0x03, 0x00, 0x05, 0x05, 0x01, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, - 0x02, 0x00 -}; + if ((G.temp2 & PAD_LEFT) != 0) + { + if (G.player_hp[G.temp1] == 0 || G.player_x[G.temp1] < G.player_x[G.i] || (byte)(G.player_x[G.temp1] - G.player_x[G.i]) < 60) + G.player_x[G.i]--; + } + else if ((G.temp2 & PAD_RIGHT) != 0) + { + if (G.player_hp[G.temp1] == 0 || (G.player_x[G.i] < 250 && (G.player_x[G.temp1] > G.player_x[G.i] || (byte)(G.player_x[G.i] - G.player_x[G.temp1]) < 60))) + G.player_x[G.i]++; + } -byte[] collision_top_right = new byte[] { - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01 -}; + if (isBlocked(G.player_x[G.i], G.player_y[G.i]) != 0) + G.player_x[G.i] = G.temp4; + else if (G.player_carry[G.i] != 0xFF) + G.item_x[G.player_carry[G.i]] += (byte)(G.player_x[G.i] - G.temp4); -byte[] bg_bottom_left = new byte[] { - 0x01, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x05, 0xFB, 0xFA, 0xF9, - 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x60, 0x5F, 0x00, 0x01, - 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, - 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x5E, 0x5D, 0x00, 0x01, 0x02, 0xFB, 0xFA, - 0xF9, 0xFA, 0xF9, 0xF8, 0xF7, 0xFA, 0xF9, 0x5C, 0x5B, 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, - 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF0, 0xEF, 0xF2, 0xF1, 0x5A, 0x82, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, - 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x7C, 0x7B, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x59, 0x58, 0xEA, 0xE9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x72, 0x71, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x57, 0x56, 0xE6, 0xE5, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xC9, 0xC8, - 0xC7, 0xFA, 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, - 0xE0, 0xFA, 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x02, 0x00, 0x01, 0x02, 0xC6, 0xC5, - 0xC4, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, - 0xFB, 0xF2, 0xF1, 0xCB, 0xCA, 0xF2, 0xF1, 0xDF, 0xFF, 0x01, 0x02, 0x00, 0x01, 0x02, 0xC6, 0xC3, - 0xC2, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x00, - 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xBF, 0xBE, - 0xBD, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0xFF, - 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xDC, - 0xDB, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF8, 0xF7, 0xAD, - 0xAC, 0xAB, 0xAA, 0xA9, 0xA8, 0xA7, 0xA6, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xD4, - 0xD3, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF0, 0xEF, 0xA5, - 0xA4, 0xA3, 0xA2, 0xA1, 0xA0, 0x9F, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, - 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0x9E, - 0x9D, 0x9C, 0xF9, 0x9B, 0x9A, 0x99, 0x98, 0xFA, 0xF9, 0xE2, 0xE1, 0x00, 0x01, 0x02, 0xFB, 0xF2, - 0xF1, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0x97, - 0x96, 0x95, 0x94, 0x93, 0x92, 0xF2, 0x91, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, - 0xFA, 0xF9, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x90, 0x8F, - 0x8E, 0x8D, 0x8C, 0xF9, 0x8B, 0x8A, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x89, 0x88, 0x87, - 0x86, 0x85, 0x84, 0x83, 0x82, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, - 0xFA, 0xF9, 0xC1, 0xC0, 0xE2, 0xE1, 0x01, 0x05, 0xE0, 0xFA, 0x81, 0x80, 0x7F, 0x7E, 0x7D, 0x7C, - 0x7B, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, - 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0xF2, 0xF1, 0xDF, - 0xFF, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0x55, 0x54, 0x53, 0x52, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0x51, 0x50, 0x4F, 0x4E, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0x00, 0x01, 0x03, 0xE1, 0x01, 0x0B, 0x4D, 0x4C, 0x4C, 0x4B, 0xE1, 0x01, 0x0B, 0x00, 0x01, - 0x60, 0x55, 0x50, 0x50, 0x55, 0x44, 0x55, 0x55, 0x00, 0x55, 0x01, 0x06, 0x00, 0x55, 0x45, 0x55, - 0x15, 0x45, 0x55, 0x05, 0x00, 0x55, 0x44, 0x55, 0x51, 0x54, 0x55, 0x55, 0x00, 0x55, 0x54, 0x55, - 0x01, 0x03, 0x11, 0x00, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x51, 0x00, 0x05, 0x01, 0x06, 0x00, - 0x01, 0x08, 0x01, 0x00 -}; + if ((G.temp2 & PAD_UP) != 0) + { + if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] < G.player_y[G.i] || (byte)(G.player_y[G.temp1] - G.player_y[G.i]) < 60) + G.player_y[G.i]--; + } + else if ((G.temp2 & PAD_DOWN) != 0) + { + if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] > G.player_y[G.i] || (byte)(G.player_y[G.i] - G.player_y[G.temp1]) < 60) + G.player_y[G.i]++; + } -byte[] collision_bottom_left = new byte[] { - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 -}; + if (isBlocked(G.player_x[G.i], G.player_y[G.i]) != 0) + G.player_y[G.i] = G.temp5; + else if (G.player_carry[G.i] != 0xFF) + G.item_y[G.player_carry[G.i]] += (byte)(G.player_y[G.i] - G.temp5); + } -byte[] bg_bottom_right = new byte[] { - 0x01, 0x4A, 0x49, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, - 0xF9, 0xDD, 0x00, 0x01, 0x05, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0x48, 0x47, - 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, - 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xBA, - 0xB9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xB8, - 0xB7, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0x46, - 0x45, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0x44, - 0x43, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xCB, 0xCA, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xE1, 0x01, 0x02, 0xE0, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0x7A, 0x79, 0x78, 0x00, 0x01, 0x02, 0xFF, 0x01, 0x02, 0xDE, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0x70, 0x6F, 0x6E, 0x00, 0x01, 0x02, 0xBA, 0xB9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x00, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0x6D, 0x6C, 0x6E, 0x00, 0x01, 0x02, 0xB8, 0xB7, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0x6B, 0x6A, 0x69, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xBA, - 0xB9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xB8, 0xB7, - 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, - 0xDD, 0x00, 0x01, 0x02, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, - 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, - 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, - 0xF9, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0x00, 0x01, - 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, - 0xF1, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDD, 0x00, 0x01, - 0x02, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x55, 0x54, 0x53, - 0x52, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, - 0x02, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x51, 0x50, 0x4F, - 0x4E, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, - 0x02, 0xE1, 0x01, 0x0B, 0x4D, 0x4C, 0x4C, 0x4B, 0xE1, 0x01, 0x0B, 0x00, 0x01, 0x63, 0x55, 0x55, - 0x11, 0x55, 0x50, 0x50, 0x55, 0x00, 0x55, 0x01, 0x06, 0x00, 0x05, 0x55, 0x15, 0x45, 0x55, 0x15, - 0x55, 0x00, 0x55, 0x55, 0x51, 0x54, 0x55, 0x11, 0x55, 0x00, 0x44, 0x55, 0x01, 0x03, 0x51, 0x55, - 0x00, 0x54, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x00, 0x05, 0x01, 0x06, 0x00, 0x01, 0x09, 0x01, - 0x00 -}; + if (G.player_attack_tick[G.i] == 10) + { + G.temp0 = G.player_x[G.i]; + G.temp1 = G.player_y[G.i]; + G.temp6 = 5; + G.temp7 = 5; + if (G.player_dir[G.i] == PAD_LEFT) { G.temp0 -= 4; G.temp6 = 8; } + else if (G.player_dir[G.i] == PAD_RIGHT) { G.temp0 += 4; G.temp6 = 8; } + if (G.player_dir[G.i] == PAD_UP) { G.temp1 -= 4; G.temp7 = 8; } + else if (G.player_dir[G.i] == PAD_DOWN) { G.temp1 += 3; G.temp7 = 8; } + G.dx = G.temp0; + G.dy = G.temp1; + if (isBlocked(G.temp0, G.temp1) == 0) + took_damage(); + } + G.i++; + } -byte[] collision_bottom_right = new byte[] { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 -}; + G.temp2 = 0; + G.i = 0; + while (G.i < 4) + { + if (G.item_placed[G.i] == 0) + { + if ((byte)(G.item_x[G.i] - item_target_x[G.i]) < 2 || (byte)(item_target_x[G.i] - G.item_x[G.i]) < 2) + { + if ((byte)(G.item_y[G.i] - item_target_y[G.i]) < 2 || (byte)(item_target_y[G.i] - G.item_y[G.i]) < 2) + { + G.item_placed[G.i] = 1; + G.item_x[G.i] = item_target_x[G.i]; + G.item_y[G.i] = item_target_y[G.i]; + if (G.player_carry[0] == G.i) G.player_carry[0] = 0xFF; + if (G.player_carry[1] == G.i) G.player_carry[1] = 0xFF; + sfx_play(2, 3); + } + } + } + if (G.item_placed[G.i] == 0) G.temp2 = 1; + + G.int_temp0 = G.item_x[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_x; + if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } + G.temp0 = (byte)G.int_temp0; + + G.int_temp0 = G.item_y[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_y; + if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } + G.temp1 = (byte)G.int_temp0; + + G.spr = oam_spr((byte)(G.temp0 - 4), (byte)(G.temp1 - 8), (byte)(0xC0 + (G.item_type[G.i] << 1)), 0x03, G.spr); + G.i++; + } + + if (G.temp2 == 0) G.next_level = 1; +} + +void init() +{ + oam_size(1); + bank_spr(0); + bank_bg(1); + vram_adr(NAMETABLE_A); + vram_unrle(bg_top_left); + vram_adr(NAMETABLE_B); + vram_unrle(bg_top_right); + vram_adr(NAMETABLE_C); + vram_unrle(bg_bottom_left); + vram_adr(NAMETABLE_D); + vram_unrle(bg_bottom_right); + ppu_on_all(); + G.difficulty = 0; + G.next_level = 0; +} -byte[] spawn = new byte[] { - 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x02, 0x03, 0x03, 0x03, - 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x07, 0x03, 0x02, 0x04, 0x03, 0x04, 0x04, 0x04, 0x05, 0x04, - 0x02, 0x05, 0x03, 0x05, 0x04, 0x05, 0x05, 0x05, 0x06, 0x05, 0x07, 0x05, 0x02, 0x06, 0x03, 0x06, - 0x05, 0x06, 0x06, 0x06, 0x07, 0x06, 0x19, 0x02, 0x1A, 0x02, 0x1B, 0x02, 0x1C, 0x02, 0x1D, 0x02, - 0x19, 0x03, 0x1A, 0x03, 0x1B, 0x03, 0x1C, 0x03, 0x1D, 0x03, 0x1A, 0x04, 0x1B, 0x04, 0x1C, 0x04, - 0x1D, 0x04, 0x19, 0x05, 0x1A, 0x05, 0x1B, 0x05, 0x1C, 0x05, 0x1D, 0x05, 0x19, 0x06, 0x1A, 0x06, - 0x1C, 0x06, 0x1D, 0x06, 0x02, 0x16, 0x03, 0x16, 0x05, 0x16, 0x06, 0x16, 0x07, 0x16, 0x02, 0x17, - 0x03, 0x17, 0x05, 0x17, 0x06, 0x17, 0x07, 0x17, 0x02, 0x18, 0x03, 0x18, 0x04, 0x18, 0x05, 0x18, - 0x06, 0x18, 0x07, 0x18, 0x02, 0x19, 0x03, 0x19, 0x04, 0x19, 0x05, 0x19, 0x02, 0x1A, 0x03, 0x1A, - 0x04, 0x1A, 0x05, 0x1A, 0x06, 0x1A, 0x07, 0x1A, 0x02, 0x1B, 0x03, 0x1B, 0x04, 0x1B, 0x05, 0x1B, - 0x06, 0x1B, 0x07, 0x1B, 0x19, 0x16, 0x1A, 0x16, 0x1C, 0x16, 0x1D, 0x16, 0x19, 0x17, 0x1A, 0x17, - 0x1C, 0x17, 0x1D, 0x17, 0x19, 0x18, 0x1A, 0x18, 0x1B, 0x18, 0x1C, 0x18, 0x1D, 0x18, 0x1A, 0x19, - 0x1B, 0x19, 0x1C, 0x19, 0x1D, 0x19, 0x19, 0x1A, 0x1A, 0x1A, 0x1B, 0x1A, 0x1C, 0x1A, 0x1D, 0x1A, - 0x19, 0x1B, 0x1A, 0x1B, 0x1B, 0x1B, 0x1C, 0x1B, 0x1D, 0x1B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 -}; +void reset() +{ + G.next_level = 0; + G.frame = 0; + G.player_dir[0] = PAD_UP; + G.player_dir[1] = PAD_UP; + G.player_hp[0] = 4; + G.player_hp[1] = 4; + G.scr_x = 128; + G.scr_y = 128; + G.player_x[0] = 120; + G.player_y[0] = 120; + G.player_x[1] = 136; + G.player_y[1] = 120; + G.player_attack_tick[0] = 0; + G.player_attack_tick[1] = 0; + G.enemies_enemy[0] = PLAYER_1; + G.enemies_enemy[1] = PLAYER_2; + G.enemies_enemy[2] = PLAYER_1; + G.enemies_enemy[3] = PLAYER_2; + G.enemies_enemy[4] = PLAYER_1; + G.enemies_enemy[5] = PLAYER_2; + G.enemies_enemy[6] = PLAYER_1; + G.enemies_enemy[7] = PLAYER_2; + G.i = 0; + while (G.i < 8) + { + G.enemies_health[G.i] = 1; + G.enemies_dir[G.i] = PAD_UP; + G.enemy_leg[G.i] = (byte)(G.i & 1); + G.enemies_type[G.i] = (byte)(G.i & 1); + G.i++; + } + G.enemy_spawn_points_x[0] = 184; + G.enemy_spawn_points_y[0] = 24; + G.enemy_spawn_points_x[1] = 232; + G.enemy_spawn_points_y[1] = 72; + G.enemy_spawn_points_x[2] = 232; + G.enemy_spawn_points_y[2] = 168; + G.enemy_spawn_points_x[3] = 184; + G.enemy_spawn_points_y[3] = 216; + G.enemy_spawn_points_x[4] = 72; + G.enemy_spawn_points_y[4] = 217; + G.enemy_spawn_points_x[5] = 24; + G.enemy_spawn_points_y[5] = 167; + G.enemy_spawn_points_x[6] = 24; + G.enemy_spawn_points_y[6] = 73; + G.enemy_spawn_points_x[7] = 72; + G.enemy_spawn_points_y[7] = 24; + G.i = 0; + while (G.i < 8) + { + G.enemies_x[G.i] = G.enemy_spawn_points_x[G.i]; + G.enemies_y[G.i] = G.enemy_spawn_points_y[G.i]; + G.enemy_push_timer[G.i] = 0; + G.i++; + } + G.item_type[0] = 1; + G.item_x[0] = 128; + G.item_y[0] = 88; + G.item_type[1] = 2; + G.item_x[1] = 128; + G.item_y[1] = 108; + G.item_type[2] = 3; + G.item_x[2] = 128; + G.item_y[2] = 128; + G.item_type[3] = 4; + G.item_x[3] = 128; + G.item_y[3] = 148; -byte[] item_target_x = new byte[] { 108, 148, 108, 148 }; -byte[] item_target_y = new byte[] { 99, 140, 139, 99 }; + G.i = 0; + while (G.i < 4) + { + G.temp0 = (byte)(rand8() & 0xFE); + G.item_x[G.i] = (byte)(spawn[G.temp0] << 3); + G.item_y[G.i] = (byte)(spawn[G.temp0 + 1] << 3); + byte retry = 0; + G.j = 0; + while (G.j < G.i) + { + if (G.item_x[G.i] == G.item_x[G.j] && G.item_y[G.i] == G.item_y[G.j]) + { + retry = 1; + break; + } + G.j++; + } + if (retry == 0) G.i++; + } -byte[] spider_damaged_attack_up = new byte[] { 0xF8, 0xF8, 0x84, 0x01, 0x00, 0xF8, 0x86, 0x01, 0x80 }; -byte[] spider_damaged_attack_down = new byte[] { 0xF8, 0xF8, 0x84, 0x81, 0x00, 0xF8, 0x86, 0x81, 0x80 }; -byte[] spider_damaged_attack_right = new byte[] { 0xF8, 0xF8, 0xA4, 0x01, 0x00, 0xF8, 0xA6, 0x01, 0x80 }; -byte[] spider_damaged_attack_left = new byte[] { 0xF8, 0xF8, 0xA6, 0x41, 0x00, 0xF8, 0xA4, 0x41, 0x80 }; -byte[] spider_damaged_leg_0_up = new byte[] { 0xF8, 0xF8, 0x88, 0x01, 0x00, 0xF8, 0x8A, 0x01, 0x80 }; -byte[] spider_damaged_leg_0_down = new byte[] { 0xF8, 0xF8, 0x88, 0x81, 0x00, 0xF8, 0x8A, 0x81, 0x80 }; -byte[] spider_damaged_leg_0_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x01, 0x00, 0xF8, 0xAA, 0x01, 0x80 }; -byte[] spider_damaged_leg_0_left = new byte[] { 0xF8, 0xF8, 0xAA, 0x41, 0x00, 0xF8, 0xA8, 0x41, 0x80 }; -byte[] spider_damaged_leg_1_up = new byte[] { 0xF8, 0xF8, 0x8A, 0x41, 0x00, 0xF8, 0x88, 0x41, 0x80 }; -byte[] spider_damaged_leg_1_down = new byte[] { 0xF8, 0xF8, 0x8A, 0xC1, 0x00, 0xF8, 0x88, 0xC1, 0x80 }; -byte[] spider_damaged_leg_1_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x81, 0x00, 0xF8, 0xAA, 0x81, 0x80 }; -byte[] spider_damaged_leg_1_left = new byte[] { 0xF8, 0xF8, 0xAA, 0xC1, 0x00, 0xF8, 0xA8, 0xC1, 0x80 }; -byte[] spider_attack_up = new byte[] { 0xF8, 0xF8, 0x84, 0x02, 0x00, 0xF8, 0x86, 0x02, 0x80 }; -byte[] spider_attack_down = new byte[] { 0xF8, 0xF8, 0x84, 0x82, 0x00, 0xF8, 0x86, 0x82, 0x80 }; -byte[] spider_attack_right = new byte[] { 0xF8, 0xF8, 0xA4, 0x02, 0x00, 0xF8, 0xA6, 0x02, 0x80 }; -byte[] spider_attack_left = new byte[] { 0xF8, 0xF8, 0xA6, 0x42, 0x00, 0xF8, 0xA4, 0x42, 0x80 }; -byte[] spider_leg_0_up = new byte[] { 0xF8, 0xF8, 0x88, 0x02, 0x00, 0xF8, 0x8A, 0x02, 0x80 }; -byte[] spider_leg_0_down = new byte[] { 0xF8, 0xF8, 0x88, 0x82, 0x00, 0xF8, 0x8A, 0x82, 0x80 }; -byte[] spider_leg_0_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x02, 0x00, 0xF8, 0xAA, 0x02, 0x80 }; -byte[] spider_leg_0_left = new byte[] { 0xF8, 0xF8, 0xAA, 0x42, 0x00, 0xF8, 0xA8, 0x42, 0x80 }; -byte[] spider_leg_1_up = new byte[] { 0xF8, 0xF8, 0x8A, 0x42, 0x00, 0xF8, 0x88, 0x42, 0x80 }; -byte[] spider_leg_1_down = new byte[] { 0xF8, 0xF8, 0x8A, 0xC2, 0x00, 0xF8, 0x88, 0xC2, 0x80 }; -byte[] spider_leg_1_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x82, 0x00, 0xF8, 0xAA, 0x82, 0x80 }; -byte[] spider_leg_1_left = new byte[] { 0xF8, 0xF8, 0xAA, 0xC2, 0x00, 0xF8, 0xA8, 0xC2, 0x80 }; -byte[] bat_damaged_attack_up = new byte[] { 0xF8, 0xF8, 0x94, 0x01, 0x00, 0xF8, 0x96, 0x01, 0x80 }; -byte[] bat_damaged_attack_down = new byte[] { 0xF8, 0xF8, 0x94, 0x81, 0x00, 0xF8, 0x96, 0x81, 0x80 }; -byte[] bat_damaged_attack_right = new byte[] { 0xF8, 0xF8, 0xB4, 0x01, 0x00, 0xF8, 0xB6, 0x01, 0x80 }; -byte[] bat_damaged_attack_left = new byte[] { 0xF8, 0xF8, 0xB6, 0x41, 0x00, 0xF8, 0xB4, 0x41, 0x80 }; -byte[] bat_damaged_leg_0_up = new byte[] { 0xF8, 0xF8, 0x98, 0x01, 0x00, 0xF8, 0x9A, 0x01, 0x80 }; -byte[] bat_damaged_leg_0_down = new byte[] { 0xF8, 0xF8, 0x98, 0x81, 0x00, 0xF8, 0x9A, 0x81, 0x80 }; -byte[] bat_damaged_leg_0_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x01, 0x00, 0xF8, 0xBA, 0x01, 0x80 }; -byte[] bat_damaged_leg_0_left = new byte[] { 0xF8, 0xF8, 0xBA, 0x41, 0x00, 0xF8, 0xB8, 0x41, 0x80 }; -byte[] bat_damaged_leg_1_up = new byte[] { 0xF8, 0xF8, 0x9A, 0x41, 0x00, 0xF8, 0x98, 0x41, 0x80 }; -byte[] bat_damaged_leg_1_down = new byte[] { 0xF8, 0xF8, 0x9A, 0xC1, 0x00, 0xF8, 0x98, 0xC1, 0x80 }; -byte[] bat_damaged_leg_1_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x81, 0x00, 0xF8, 0xBA, 0x81, 0x80 }; -byte[] bat_damaged_leg_1_left = new byte[] { 0xF8, 0xF8, 0xBA, 0xC1, 0x00, 0xF8, 0xB8, 0xC1, 0x80 }; -byte[] bat_attack_up = new byte[] { 0xF8, 0xF8, 0x94, 0x02, 0x00, 0xF8, 0x96, 0x02, 0x80 }; -byte[] bat_attack_down = new byte[] { 0xF8, 0xF8, 0x94, 0x82, 0x00, 0xF8, 0x96, 0x82, 0x80 }; -byte[] bat_attack_right = new byte[] { 0xF8, 0xF8, 0xB4, 0x02, 0x00, 0xF8, 0xB6, 0x02, 0x80 }; -byte[] bat_attack_left = new byte[] { 0xF8, 0xF8, 0xB6, 0x42, 0x00, 0xF8, 0xB4, 0x42, 0x80 }; -byte[] bat_leg_0_up = new byte[] { 0xF8, 0xF8, 0x98, 0x02, 0x00, 0xF8, 0x9A, 0x02, 0x80 }; -byte[] bat_leg_0_down = new byte[] { 0xF8, 0xF8, 0x98, 0x82, 0x00, 0xF8, 0x9A, 0x82, 0x80 }; -byte[] bat_leg_0_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x02, 0x00, 0xF8, 0xBA, 0x02, 0x80 }; -byte[] bat_leg_0_left = new byte[] { 0xF8, 0xF8, 0xBA, 0x42, 0x00, 0xF8, 0xB8, 0x42, 0x80 }; -byte[] bat_leg_1_up = new byte[] { 0xF8, 0xF8, 0x9A, 0x42, 0x00, 0xF8, 0x98, 0x42, 0x80 }; -byte[] bat_leg_1_down = new byte[] { 0xF8, 0xF8, 0x9A, 0xC2, 0x00, 0xF8, 0x98, 0xC2, 0x80 }; -byte[] bat_leg_1_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x82, 0x00, 0xF8, 0xBA, 0x82, 0x80 }; -byte[] bat_leg_1_left = new byte[] { 0xF8, 0xF8, 0xBA, 0xC2, 0x00, 0xF8, 0xB8, 0xC2, 0x80 }; -byte[] player_carry_0_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x3C, 0x00, 0x00, 0xF8, 0x3E, 0x00, 0x80 }; -byte[] player_carry_0_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x3C, 0x80, 0x00, 0xF8, 0x3E, 0x80, 0x80 }; -byte[] player_carry_0_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x5C, 0x40, 0x00, 0xF8, 0x5A, 0x40, 0x80 }; -byte[] player_carry_0_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x5A, 0x00, 0x00, 0xF8, 0x5C, 0x00, 0x80 }; -byte[] player_carry_0_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x38, 0x00, 0x00, 0xF8, 0x3A, 0x00, 0x80 }; -byte[] player_carry_0_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x3A, 0x40, 0x00, 0xF8, 0x38, 0x40, 0x80 }; -byte[] player_carry_0_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x38, 0x80, 0x00, 0xF8, 0x3A, 0x80, 0x80 }; -byte[] player_carry_0_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x3A, 0xC0, 0x00, 0xF8, 0x38, 0xC0, 0x80 }; -byte[] player_carry_0_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x00, 0x00, 0xF8, 0x58, 0x00, 0x80 }; -byte[] player_carry_0_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x80, 0x00, 0xF8, 0x58, 0x80, 0x80 }; -byte[] player_carry_0_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0x40, 0x00, 0xF8, 0x40, 0x40, 0x80 }; -byte[] player_carry_0_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0xC0, 0x00, 0xF8, 0x40, 0xC0, 0x80 }; -byte[] player_carry_1_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x3C, 0x01, 0x00, 0xF8, 0x3E, 0x01, 0x80 }; -byte[] player_carry_1_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x3C, 0x81, 0x00, 0xF8, 0x3E, 0x81, 0x80 }; -byte[] player_carry_1_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x5C, 0x41, 0x00, 0xF8, 0x5A, 0x41, 0x80 }; -byte[] player_carry_1_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x5A, 0x01, 0x00, 0xF8, 0x5C, 0x01, 0x80 }; -byte[] player_carry_1_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x38, 0x01, 0x00, 0xF8, 0x3A, 0x01, 0x80 }; -byte[] player_carry_1_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x3A, 0x41, 0x00, 0xF8, 0x38, 0x41, 0x80 }; -byte[] player_carry_1_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x38, 0x81, 0x00, 0xF8, 0x3A, 0x81, 0x80 }; -byte[] player_carry_1_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x3A, 0xC1, 0x00, 0xF8, 0x38, 0xC1, 0x80 }; -byte[] player_carry_1_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x56, 0x01, 0x00, 0xF8, 0x58, 0x01, 0x80 }; -byte[] player_carry_1_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x56, 0x81, 0x00, 0xF8, 0x58, 0x81, 0x80 }; -byte[] player_carry_1_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0x41, 0x00, 0xF8, 0x56, 0x41, 0x80 }; -byte[] player_carry_1_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0xC1, 0x00, 0xF8, 0x56, 0xC1, 0x80 }; -byte[] player_0_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x24, 0x00, 0x00, 0xF8, 0x26, 0x00, 0x80 }; -byte[] player_0_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x24, 0x80, 0x00, 0xF8, 0x26, 0x80, 0x80 }; -byte[] player_0_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x46, 0x40, 0x00, 0xF8, 0x44, 0x40, 0x80 }; -byte[] player_0_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x44, 0x00, 0x00, 0xF8, 0x46, 0x00, 0x80 }; -byte[] player_0_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x20, 0x00, 0x00, 0xF8, 0x22, 0x00, 0x80 }; -byte[] player_0_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x22, 0x40, 0x00, 0xF8, 0x20, 0x40, 0x80 }; -byte[] player_0_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x20, 0x80, 0x00, 0xF8, 0x22, 0x80, 0x80 }; -byte[] player_0_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x22, 0xC0, 0x00, 0xF8, 0x20, 0xC0, 0x80 }; -byte[] player_0_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x00, 0x00, 0xF8, 0x42, 0x00, 0x80 }; -byte[] player_0_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x80, 0x00, 0xF8, 0x42, 0x80, 0x80 }; -byte[] player_0_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0x40, 0x00, 0xF8, 0x40, 0x40, 0x80 }; -byte[] player_0_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0xC0, 0x00, 0xF8, 0x40, 0xC0, 0x80 }; -byte[] player_0_meta_spr_attack_0_up = new byte[] { 0xF8, 0x00, 0x48, 0x00, 0x00, 0x00, 0x4A, 0x00, 0xF8, 0xF0, 0x28, 0x00, 0x00, 0xF0, 0x2A, 0x00, 0x80 }; -byte[] player_0_meta_spr_attack_1_up = new byte[] { 0xF8, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x4E, 0x00, 0xF8, 0xF0, 0x2C, 0x00, 0x00, 0xF0, 0x2E, 0x00, 0x80 }; -byte[] player_0_meta_spr_attack_0_down = new byte[] { 0xF8, 0x00, 0x28, 0x80, 0x00, 0x00, 0x2A, 0x80, 0xF8, 0xF0, 0x48, 0x80, 0x00, 0xF0, 0x4A, 0x80, 0x80 }; -byte[] player_0_meta_spr_attack_1_down = new byte[] { 0xF8, 0x00, 0x2C, 0x80, 0x00, 0x00, 0x2E, 0x80, 0xF8, 0xF0, 0x4C, 0x80, 0x00, 0xF0, 0x4E, 0x80, 0x80 }; -byte[] player_0_meta_spr_attack_0_right = new byte[] { 0xF8, 0xF8, 0x30, 0x00, 0x00, 0xF8, 0x32, 0x00, 0x08, 0xF8, 0x34, 0x00, 0x80 }; -byte[] player_0_meta_spr_attack_1_right = new byte[] { 0xF8, 0xF8, 0x50, 0x00, 0x00, 0xF8, 0x52, 0x00, 0x08, 0xF8, 0x54, 0x00, 0x80 }; -byte[] player_0_meta_spr_attack_0_left = new byte[] { 0xF0, 0xF8, 0x34, 0x40, 0xF8, 0xF8, 0x32, 0x40, 0x00, 0xF8, 0x30, 0x40, 0x80 }; -byte[] player_0_meta_spr_attack_1_left = new byte[] { 0xF0, 0xF8, 0x54, 0x40, 0xF8, 0xF8, 0x52, 0x40, 0x00, 0xF8, 0x50, 0x40, 0x80 }; -byte[] player_1_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x24, 0x01, 0x00, 0xF8, 0x26, 0x01, 0x80 }; -byte[] player_1_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x24, 0x81, 0x00, 0xF8, 0x26, 0x81, 0x80 }; -byte[] player_1_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x46, 0x41, 0x00, 0xF8, 0x44, 0x41, 0x80 }; -byte[] player_1_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x44, 0x01, 0x00, 0xF8, 0x46, 0x01, 0x80 }; -byte[] player_1_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x20, 0x01, 0x00, 0xF8, 0x22, 0x01, 0x80 }; -byte[] player_1_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x22, 0x41, 0x00, 0xF8, 0x20, 0x41, 0x80 }; -byte[] player_1_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x20, 0x81, 0x00, 0xF8, 0x22, 0x81, 0x80 }; -byte[] player_1_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x22, 0xC1, 0x00, 0xF8, 0x20, 0xC1, 0x80 }; -byte[] player_1_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x01, 0x00, 0xF8, 0x42, 0x01, 0x80 }; -byte[] player_1_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x81, 0x00, 0xF8, 0x42, 0x81, 0x80 }; -byte[] player_1_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0x41, 0x00, 0xF8, 0x40, 0x41, 0x80 }; -byte[] player_1_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0xC1, 0x00, 0xF8, 0x40, 0xC1, 0x80 }; -byte[] player_1_meta_spr_attack_0_up = new byte[] { 0xF8, 0x00, 0x48, 0x01, 0x00, 0x00, 0x4A, 0x01, 0xF8, 0xF0, 0x28, 0x01, 0x00, 0xF0, 0x2A, 0x01, 0x80 }; -byte[] player_1_meta_spr_attack_1_up = new byte[] { 0xF8, 0x00, 0x4C, 0x01, 0x00, 0x00, 0x4E, 0x01, 0xF8, 0xF0, 0x2C, 0x01, 0x00, 0xF0, 0x2E, 0x01, 0x80 }; -byte[] player_1_meta_spr_attack_0_down = new byte[] { 0xF8, 0x00, 0x28, 0x81, 0x00, 0x00, 0x2A, 0x81, 0xF8, 0xF0, 0x48, 0x81, 0x00, 0xF0, 0x4A, 0x81, 0x80 }; -byte[] player_1_meta_spr_attack_1_down = new byte[] { 0xF8, 0x00, 0x2C, 0x81, 0x00, 0x00, 0x2E, 0x81, 0xF8, 0xF0, 0x4C, 0x81, 0x00, 0xF0, 0x4E, 0x81, 0x80 }; -byte[] player_1_meta_spr_attack_0_right = new byte[] { 0xF8, 0xF8, 0x30, 0x01, 0x00, 0xF8, 0x32, 0x01, 0x08, 0xF8, 0x34, 0x01, 0x80 }; -byte[] player_1_meta_spr_attack_1_right = new byte[] { 0xF8, 0xF8, 0x50, 0x01, 0x00, 0xF8, 0x52, 0x01, 0x08, 0xF8, 0x54, 0x01, 0x80 }; -byte[] player_1_meta_spr_attack_0_left = new byte[] { 0xF0, 0xF8, 0x34, 0x41, 0xF8, 0xF8, 0x32, 0x41, 0x00, 0xF8, 0x30, 0x41, 0x80 }; -byte[] player_1_meta_spr_attack_1_left = new byte[] { 0xF0, 0xF8, 0x54, 0x41, 0xF8, 0xF8, 0x52, 0x41, 0x00, 0xF8, 0x50, 0x41, 0x80 }; + G.i = 0; + while (G.i < 4) + { + G.item_x[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); + G.item_y[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); + G.i++; + } -// Main game code + G.player_carry[0] = 0xFF; + G.player_carry[1] = 0xFF; + G.item_placed[0] = 0; + G.item_placed[1] = 0; + G.item_placed[2] = 0; + G.item_placed[3] = 0; + G.player_god_mode[0] = 0; + G.player_god_mode[1] = 0; + + G.difficulty++; + if (G.difficulty == 1) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 1; } + else if (G.difficulty == 2) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 2; } + else if (G.difficulty == 4) { G.enemy_speed = 3; G.enemy_damage_modifier = 31; G.spawn_hp = 2; } + else if (G.difficulty == 6) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 3; } + else if (G.difficulty == 7) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 4; } + else if (G.difficulty == 8) { G.enemy_speed = 4; G.enemy_damage_modifier = 15; G.spawn_hp = 5; } + else if (G.difficulty == 9) { G.enemy_speed = 4; G.enemy_damage_modifier = 7; G.spawn_hp = 6; } + else if (G.difficulty >= 10) { G.enemy_speed = 5; G.enemy_damage_modifier = 7; G.spawn_hp = (byte)(6 + (G.difficulty - 10)); } + scroll(G.scr_x, G.scr_y); +} init(); oam_clear(); diff --git a/samples/crypto/crypto.csproj b/samples/crypto/crypto.csproj new file mode 100644 index 00000000..603caf47 --- /dev/null +++ b/samples/crypto/crypto.csproj @@ -0,0 +1,15 @@ + + + + Exe + net10.0 + enable + enable + + + + + + + + From d99b37bf2b42c1aa59378c099443ba758518da87 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Mar 2026 02:58:36 +0000 Subject: [PATCH 04/16] Add crypto sample port (WIP - needs inlining to avoid closures) Co-authored-by: jonathanpeppers <840039+jonathanpeppers@users.noreply.github.com> --- samples/crypto/chr_generic.s | 514 +++++++++++++++++++++++++++++++++++ 1 file changed, 514 insertions(+) create mode 100644 samples/crypto/chr_generic.s diff --git a/samples/crypto/chr_generic.s b/samples/crypto/chr_generic.s new file mode 100644 index 00000000..14da0444 --- /dev/null +++ b/samples/crypto/chr_generic.s @@ -0,0 +1,514 @@ +.segment "CHARS" +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA +.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55 +.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55 +.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA +.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC +.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33 +.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33 +.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC +.byte $3E,$7F,$7F,$7F,$7F,$7F,$7F,$3E +.byte $3C,$42,$5A,$52,$5A,$42,$3C,$00 +.byte $FE,$FF,$7F,$7B,$7B,$00,$00,$00 +.byte $F4,$4A,$52,$52,$00,$00,$00,$00 +.byte $0F,$0F,$0F,$3F,$7E,$7E,$7E,$3C +.byte $0E,$06,$0A,$38,$6C,$6C,$38,$00 +.byte $3C,$7E,$7E,$7E,$3C,$3C,$3C,$18 +.byte $38,$6C,$6C,$38,$10,$38,$10,$00 +.byte $18,$3C,$7E,$FF,$FF,$FF,$3C,$3C +.byte $10,$38,$7C,$FE,$EE,$10,$38,$00 +.byte $7E,$FF,$FF,$FF,$FF,$7E,$3C,$18 +.byte $6C,$FE,$FE,$FE,$7C,$38,$10,$00 +.byte $18,$3C,$7E,$FF,$FF,$7E,$3C,$18 +.byte $10,$38,$7C,$FE,$7C,$38,$10,$00 +.byte $3C,$7E,$7E,$FF,$FF,$FF,$3C,$3C +.byte $38,$7C,$38,$FE,$D6,$10,$38,$00 +.byte $18,$3C,$FF,$FF,$7E,$7E,$7E,$7E +.byte $10,$38,$FE,$7C,$38,$7C,$6C,$00 +.byte $0F,$1F,$7F,$FF,$FC,$FC,$FC,$78 +.byte $0A,$14,$72,$F8,$F8,$F8,$70,$00 +.byte $00,$00,$FF,$FF,$F6,$F6,$F6,$F6 +.byte $00,$00,$EE,$84,$E4,$24,$E4,$00 +.byte $00,$00,$FC,$FC,$FC,$FC,$FF,$FF +.byte $00,$00,$E8,$88,$E8,$28,$EE,$00 +.byte $18,$3C,$7E,$FF,$FF,$DB,$18,$18 +.byte $10,$38,$7C,$D6,$92,$10,$10,$00 +.byte $18,$18,$DB,$FF,$FF,$7E,$3C,$18 +.byte $10,$10,$92,$D6,$7C,$38,$10,$00 +.byte $1C,$3C,$78,$FF,$FF,$78,$3C,$1C +.byte $18,$30,$60,$FE,$60,$30,$18,$00 +.byte $38,$3C,$1E,$FF,$FF,$1E,$3C,$38 +.byte $30,$18,$0C,$FE,$0C,$18,$30,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $3C,$3C,$3C,$38,$38,$38,$38,$38 +.byte $38,$38,$30,$30,$30,$00,$30,$00 +.byte $3C,$3C,$3C,$3C,$00,$00,$00,$00 +.byte $28,$28,$28,$00,$00,$00,$00,$00 +.byte $00,$3C,$7E,$7E,$7E,$7E,$3C,$00 +.byte $00,$28,$7C,$28,$7C,$28,$00,$00 +.byte $0C,$3F,$3F,$3E,$3E,$7E,$7E,$18 +.byte $08,$3E,$28,$3C,$14,$7C,$10,$00 +.byte $00,$76,$7E,$7C,$3E,$7E,$6E,$00 +.byte $00,$64,$48,$10,$24,$4C,$00,$00 +.byte $00,$38,$7C,$7C,$7E,$7E,$7E,$3E +.byte $00,$30,$48,$30,$5C,$48,$34,$00 +.byte $30,$30,$70,$60,$00,$00,$00,$00 +.byte $20,$20,$40,$00,$00,$00,$00,$00 +.byte $0E,$1E,$3C,$38,$38,$3C,$1E,$0E +.byte $0C,$18,$30,$30,$30,$18,$0C,$00 +.byte $70,$78,$3C,$1C,$1C,$3C,$78,$70 +.byte $60,$30,$18,$18,$18,$30,$60,$00 +.byte $00,$00,$3E,$3E,$3E,$3E,$00,$00 +.byte $00,$00,$3C,$18,$3C,$00,$00,$00 +.byte $00,$18,$18,$7E,$7E,$18,$18,$00 +.byte $00,$10,$10,$7C,$10,$10,$00,$00 +.byte $00,$00,$00,$00,$38,$38,$78,$70 +.byte $00,$00,$00,$00,$30,$30,$60,$00 +.byte $00,$00,$00,$3E,$3E,$00,$00,$00 +.byte $00,$00,$00,$3C,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$38,$38,$38 +.byte $00,$00,$00,$00,$00,$30,$30,$00 +.byte $06,$0E,$0E,$1C,$1C,$38,$38,$30 +.byte $04,$0C,$08,$18,$10,$30,$20,$00 +.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3C +.byte $38,$6C,$6C,$6C,$6C,$6C,$38,$00 +.byte $1C,$3C,$3C,$1C,$1C,$1C,$1C,$1C +.byte $18,$38,$18,$18,$18,$18,$18,$00 +.byte $3C,$7E,$7E,$3E,$7C,$7E,$7E,$7E +.byte $38,$6C,$0C,$38,$60,$6C,$7C,$00 +.byte $3C,$7E,$7E,$3E,$3E,$7E,$7E,$3C +.byte $38,$6C,$0C,$38,$0C,$6C,$38,$00 +.byte $7E,$7E,$7E,$7E,$7E,$0E,$0E,$0E +.byte $6C,$6C,$6C,$7C,$0C,$0C,$0C,$00 +.byte $7E,$7E,$7E,$7C,$7E,$7E,$7E,$3C +.byte $7C,$6C,$60,$78,$0C,$6C,$38,$00 +.byte $3C,$7E,$7E,$7C,$7E,$7E,$7E,$3C +.byte $38,$6C,$60,$78,$6C,$6C,$38,$00 +.byte $7E,$7E,$7E,$7E,$0E,$0E,$0E,$0E +.byte $7C,$6C,$6C,$0C,$0C,$0C,$0C,$00 +.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3C +.byte $38,$6C,$6C,$38,$6C,$6C,$38,$00 +.byte $3C,$7E,$7E,$7E,$3E,$7E,$7E,$3C +.byte $38,$6C,$6C,$3C,$0C,$6C,$38,$00 +.byte $00,$38,$38,$38,$38,$38,$38,$00 +.byte $00,$30,$30,$00,$30,$30,$00,$00 +.byte $00,$38,$38,$38,$38,$38,$78,$70 +.byte $00,$30,$30,$00,$30,$30,$60,$00 +.byte $0E,$1E,$3C,$78,$78,$3C,$1E,$0E +.byte $0C,$18,$30,$60,$30,$18,$0C,$00 +.byte $00,$00,$3E,$3E,$3E,$3E,$00,$00 +.byte $00,$00,$3C,$00,$3C,$00,$00,$00 +.byte $70,$78,$3C,$1E,$1E,$3C,$78,$70 +.byte $60,$30,$18,$0C,$18,$30,$60,$00 +.byte $3C,$7E,$7E,$1E,$3C,$38,$38,$38 +.byte $38,$6C,$0C,$18,$30,$00,$30,$00 +.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3E +.byte $38,$44,$5C,$54,$5C,$40,$3C,$00 +.byte $3E,$7F,$77,$7F,$7F,$77,$77,$77 +.byte $3C,$66,$66,$7E,$66,$66,$66,$00 +.byte $7E,$7F,$77,$7F,$7F,$77,$7F,$7E +.byte $7C,$66,$66,$7C,$66,$66,$7C,$00 +.byte $3E,$7F,$77,$70,$70,$77,$7F,$3E +.byte $3C,$66,$60,$60,$60,$66,$3C,$00 +.byte $7C,$7E,$7F,$77,$77,$7F,$7E,$7C +.byte $78,$6C,$66,$66,$66,$6C,$78,$00 +.byte $7F,$7F,$70,$7F,$7F,$70,$7F,$7F +.byte $7E,$60,$60,$7E,$60,$60,$7E,$00 +.byte $7F,$7F,$70,$7C,$7C,$70,$70,$70 +.byte $7E,$60,$60,$78,$60,$60,$60,$00 +.byte $3E,$7F,$77,$7F,$7F,$77,$7F,$3E +.byte $3C,$66,$60,$6E,$66,$66,$3C,$00 +.byte $77,$77,$77,$7F,$7F,$77,$77,$77 +.byte $66,$66,$66,$7E,$66,$66,$66,$00 +.byte $7F,$7F,$1C,$1C,$1C,$1C,$7F,$7F +.byte $7E,$18,$18,$18,$18,$18,$7E,$00 +.byte $07,$07,$07,$07,$77,$77,$7F,$3E +.byte $06,$06,$06,$06,$66,$66,$3C,$00 +.byte $77,$7F,$7E,$7C,$7C,$7E,$7F,$77 +.byte $66,$6C,$78,$70,$78,$6C,$66,$00 +.byte $70,$70,$70,$70,$70,$70,$7F,$7F +.byte $60,$60,$60,$60,$60,$60,$7E,$00 +.byte $FE,$FF,$FF,$FF,$FF,$E7,$E7,$E7 +.byte $EC,$FE,$D6,$D6,$C6,$C6,$C6,$00 +.byte $77,$7F,$7F,$7F,$7F,$7F,$77,$77 +.byte $66,$76,$7E,$7E,$6E,$66,$66,$00 +.byte $3E,$7F,$77,$77,$77,$77,$7F,$3E +.byte $3C,$66,$66,$66,$66,$66,$3C,$00 +.byte $7E,$7F,$77,$7F,$7E,$70,$70,$70 +.byte $7C,$66,$66,$7C,$60,$60,$60,$00 +.byte $3E,$7F,$77,$77,$77,$7F,$7F,$3F +.byte $3C,$66,$66,$66,$66,$6C,$3E,$00 +.byte $7E,$7F,$77,$7F,$7E,$7E,$7F,$77 +.byte $7C,$66,$66,$7C,$78,$6C,$66,$00 +.byte $3E,$7F,$77,$7E,$3F,$77,$7F,$3E +.byte $3C,$66,$60,$3C,$06,$66,$3C,$00 +.byte $7F,$7F,$1C,$1C,$1C,$1C,$1C,$1C +.byte $7E,$18,$18,$18,$18,$18,$18,$00 +.byte $77,$77,$77,$77,$77,$77,$7F,$3E +.byte $66,$66,$66,$66,$66,$66,$3C,$00 +.byte $77,$77,$77,$77,$7F,$3E,$3E,$1C +.byte $66,$66,$66,$66,$3C,$3C,$18,$00 +.byte $E7,$E7,$FF,$FF,$FF,$FF,$FF,$7E +.byte $C6,$C6,$D6,$D6,$D6,$FE,$6C,$00 +.byte $77,$77,$7F,$3E,$3E,$7F,$77,$77 +.byte $66,$66,$3C,$18,$3C,$66,$66,$00 +.byte $77,$77,$77,$7F,$3E,$1C,$1C,$1C +.byte $66,$66,$66,$3C,$18,$18,$18,$00 +.byte $7F,$7F,$0F,$1E,$3C,$78,$7F,$7F +.byte $7E,$06,$0C,$18,$30,$60,$7E,$00 +.byte $1F,$1F,$1C,$1C,$1C,$1C,$1F,$1F +.byte $1E,$18,$18,$18,$18,$18,$1E,$00 +.byte $30,$38,$38,$1C,$1C,$0E,$0E,$06 +.byte $20,$30,$10,$18,$08,$0C,$04,$00 +.byte $F8,$F8,$38,$38,$38,$38,$F8,$F8 +.byte $F0,$30,$30,$30,$30,$30,$F0,$00 +.byte $18,$3C,$7E,$7E,$00,$00,$00,$00 +.byte $10,$38,$6C,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$7F,$7F +.byte $00,$00,$00,$00,$00,$00,$7E,$00 +.byte $30,$30,$38,$18,$00,$00,$00,$00 +.byte $20,$20,$10,$00,$00,$00,$00,$00 +.byte $00,$00,$3C,$3E,$3E,$7E,$7E,$3E +.byte $00,$00,$38,$0C,$3C,$4C,$34,$00 +.byte $70,$70,$7C,$7E,$7E,$7E,$7E,$7C +.byte $60,$60,$78,$6C,$6C,$6C,$78,$00 +.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3C +.byte $00,$00,$38,$6C,$60,$6C,$38,$00 +.byte $0E,$0E,$3E,$7E,$7E,$7E,$7E,$3E +.byte $0C,$0C,$3C,$6C,$6C,$6C,$3C,$00 +.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3E +.byte $00,$00,$38,$64,$7C,$60,$3C,$00 +.byte $00,$3C,$7E,$7E,$7C,$7C,$70,$70 +.byte $00,$38,$6C,$60,$78,$60,$60,$00 +.byte $00,$00,$3E,$7E,$7E,$3E,$7E,$7C +.byte $00,$00,$3C,$6C,$3C,$0C,$78,$00 +.byte $70,$70,$7C,$7E,$7E,$7E,$7E,$7E +.byte $60,$60,$78,$6C,$6C,$6C,$6C,$00 +.byte $00,$1C,$1C,$1C,$1C,$1C,$1C,$1C +.byte $00,$18,$00,$18,$18,$18,$18,$00 +.byte $00,$0E,$0E,$0E,$0E,$7E,$7E,$3C +.byte $00,$0C,$00,$0C,$0C,$6C,$38,$00 +.byte $70,$70,$7E,$7E,$7C,$7C,$7E,$7E +.byte $60,$60,$6C,$78,$70,$78,$6C,$00 +.byte $3C,$3C,$1C,$1C,$1C,$1C,$1C,$1C +.byte $38,$18,$18,$18,$18,$18,$18,$00 +.byte $00,$00,$7E,$7F,$7F,$7F,$77,$77 +.byte $00,$00,$6C,$7E,$56,$66,$66,$00 +.byte $00,$00,$7C,$7E,$7E,$7E,$7E,$7E +.byte $00,$00,$78,$6C,$6C,$6C,$6C,$00 +.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3C +.byte $00,$00,$38,$6C,$6C,$6C,$38,$00 +.byte $00,$00,$7C,$7E,$7E,$7C,$70,$70 +.byte $00,$00,$78,$6C,$78,$60,$60,$00 +.byte $00,$00,$3E,$7E,$7E,$3E,$0E,$0E +.byte $00,$00,$3C,$6C,$3C,$0C,$0C,$00 +.byte $00,$00,$7C,$7E,$7E,$70,$70,$70 +.byte $00,$00,$78,$6C,$60,$60,$60,$00 +.byte $00,$00,$3E,$7E,$7C,$3E,$7E,$7C +.byte $00,$00,$3C,$60,$38,$0C,$78,$00 +.byte $00,$1C,$3E,$3E,$1C,$1C,$1E,$0E +.byte $00,$18,$3C,$18,$18,$18,$0C,$00 +.byte $00,$00,$7E,$7E,$7E,$7E,$7E,$3E +.byte $00,$00,$6C,$6C,$6C,$6C,$34,$00 +.byte $00,$00,$7E,$7E,$7E,$7E,$3E,$1C +.byte $00,$00,$6C,$6C,$6C,$3C,$18,$00 +.byte $00,$00,$E7,$E7,$FF,$FF,$7E,$7E +.byte $00,$00,$C6,$C6,$D6,$7C,$6C,$00 +.byte $00,$00,$7E,$7E,$3C,$3C,$7E,$7E +.byte $00,$00,$6C,$38,$10,$38,$6C,$00 +.byte $00,$00,$7E,$7E,$7E,$3E,$7C,$78 +.byte $00,$00,$6C,$6C,$3C,$18,$70,$00 +.byte $00,$00,$7E,$7E,$3C,$78,$7E,$7E +.byte $00,$00,$7C,$18,$30,$60,$7C,$00 +.byte $0E,$1E,$1C,$3C,$3C,$1C,$1E,$0E +.byte $0C,$18,$18,$30,$18,$18,$0C,$00 +.byte $18,$18,$18,$18,$18,$18,$18,$18 +.byte $10,$10,$10,$10,$10,$10,$10,$00 +.byte $70,$78,$38,$3C,$3C,$38,$78,$70 +.byte $60,$30,$30,$18,$30,$30,$60,$00 +.byte $00,$00,$7F,$FF,$FE,$00,$00,$00 +.byte $00,$00,$76,$DC,$00,$00,$00,$00 +.byte $7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F +.byte $7E,$7E,$7E,$7E,$7E,$7E,$7E,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F0,$F0,$F0,$F0,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0F,$0F,$0F,$0F,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$F0,$F0,$F0,$F0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$F0,$F0,$F0,$F0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$0F,$0F,$0F,$0F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F0,$F0,$F0,$F0,$0F,$0F,$0F,$0F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$0F,$0F,$0F,$0F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F0,$F0,$F0,$F0,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0F,$0F,$0F,$0F,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $7F,$80,$80,$80,$80,$80,$80,$80 +.byte $FF,$00,$00,$00,$00,$00,$00,$00 +.byte $3F,$3F,$C0,$C0,$C0,$C0,$C0,$C0 +.byte $FF,$FF,$00,$00,$00,$00,$00,$00 +.byte $1F,$1F,$1F,$E0,$E0,$E0,$E0,$E0 +.byte $FF,$FF,$FF,$00,$00,$00,$00,$00 +.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 +.byte $FF,$FF,$FF,$FF,$00,$00,$00,$00 +.byte $07,$07,$07,$07,$07,$F8,$F8,$F8 +.byte $FF,$FF,$FF,$FF,$FF,$00,$00,$00 +.byte $03,$03,$03,$03,$03,$03,$FC,$FC +.byte $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 +.byte $01,$01,$01,$01,$01,$01,$01,$FE +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $7F,$80,$80,$80,$80,$80,$80,$80 +.byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $3F,$3F,$C0,$C0,$C0,$C0,$C0,$C0 +.byte $00,$00,$FF,$FF,$FF,$FF,$FF,$FF +.byte $1F,$1F,$1F,$E0,$E0,$E0,$E0,$E0 +.byte $00,$00,$00,$FF,$FF,$FF,$FF,$FF +.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 +.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF +.byte $07,$07,$07,$07,$07,$F8,$F8,$F8 +.byte $00,$00,$00,$00,$00,$FF,$FF,$FF +.byte $03,$03,$03,$03,$03,$03,$FC,$FC +.byte $00,$00,$00,$00,$00,$00,$FF,$FF +.byte $01,$01,$01,$01,$01,$01,$01,$FE +.byte $00,$00,$00,$00,$00,$00,$00,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $80,$80,$80,$80,$80,$80,$80,$80 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $01,$01,$01,$01,$01,$01,$01,$01 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$03,$0C,$30,$C0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $03,$0C,$30,$C0,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $C0,$30,$0C,$03,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$C0,$30,$0C,$03 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $10,$10,$20,$20,$40,$40,$80,$80 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $01,$01,$02,$02,$04,$04,$08,$08 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $80,$80,$40,$40,$20,$20,$10,$10 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $08,$08,$04,$04,$02,$02,$01,$01 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $01,$02,$04,$08,$10,$20,$40,$80 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $80,$40,$20,$10,$08,$04,$02,$01 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $81,$42,$24,$18,$18,$24,$42,$81 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $3C,$42,$81,$81,$81,$81,$42,$3C +.byte $0C,$00,$10,$00,$00,$00,$04,$00 +.byte $0C,$00,$10,$3E,$2E,$2E,$2A,$2E +.byte $00,$3C,$BC,$5A,$00,$20,$24,$7E +.byte $18,$00,$80,$42,$18,$04,$00,$12 +.byte $00,$FF,$00,$FF,$00,$FF,$00,$FF +.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA +.byte $24,$00,$5A,$00,$24,$00,$18,$00 +.byte $24,$00,$5A,$00,$24,$00,$18,$3C +.byte $4D,$41,$00,$2E,$24,$24,$6A,$6E +.byte $0C,$00,$10,$3E,$2E,$2E,$2A,$2E +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $E7,$C3,$C3,$E7,$E7,$DB,$DB,$93 +.byte $24,$24,$C3,$08,$18,$C3,$24,$24 +.byte $18,$66,$42,$91,$89,$42,$66,$18 +.byte $18,$24,$00,$24,$00,$18,$00,$00 +.byte $24,$00,$5A,$00,$24,$00,$18,$3C +.byte $5A,$36,$00,$00,$6C,$3B,$76,$00 +.byte $24,$7E,$54,$45,$48,$7E,$3E,$00 +.byte $00,$08,$14,$2A,$55,$2A,$14,$08 +.byte $80,$49,$36,$3E,$5D,$3E,$36,$49 +.byte $0F,$1F,$3F,$3D,$38,$38,$3C,$16 +.byte $0F,$1F,$3F,$3F,$3F,$3F,$3F,$17 +.byte $F0,$F8,$BC,$14,$A0,$A0,$08,$1C +.byte $F0,$F8,$FC,$FC,$58,$58,$F8,$FC +.byte $F2,$F1,$E1,$0F,$1F,$3B,$11,$00 +.byte $0D,$0E,$0E,$00,$00,$04,$0E,$0F +.byte $00,$E0,$F0,$F0,$F8,$DC,$88,$00 +.byte $C0,$00,$00,$00,$00,$20,$70,$78 +.byte $F2,$F1,$E1,$1F,$3F,$13,$03,$00 +.byte $0D,$0E,$0E,$00,$00,$2C,$3C,$20 +.byte $00,$E0,$F0,$F8,$E0,$C0,$00,$00 +.byte $C0,$00,$00,$04,$1C,$3C,$1C,$00 +.byte $FF,$2F,$7F,$FF,$FF,$F2,$F7,$FF +.byte $00,$FE,$FC,$D0,$00,$EF,$CF,$0D +.byte $FF,$F9,$F9,$FF,$FF,$9F,$9F,$FF +.byte $0F,$6F,$6F,$0F,$F0,$F6,$F6,$F0 +.byte $FF,$FF,$DF,$FF,$FF,$FF,$FF,$FF +.byte $00,$7E,$7C,$7E,$74,$7C,$50,$00 +.byte $05,$67,$4F,$1F,$9D,$3D,$A9,$FF +.byte $FF,$FE,$FF,$FE,$FE,$FF,$FE,$A4 +.byte $00,$0F,$3F,$3F,$7F,$00,$7F,$7F +.byte $0F,$30,$4D,$6D,$AD,$FF,$80,$AD +.byte $7F,$7F,$7F,$00,$7F,$7F,$7F,$00 +.byte $AD,$AD,$AD,$FF,$80,$AD,$AD,$FF +.byte $00,$F0,$FC,$FC,$FE,$00,$FE,$FE +.byte $F0,$0C,$B2,$B6,$B7,$FF,$01,$B7 +.byte $EA,$E2,$FE,$00,$FE,$FE,$FE,$00 +.byte $B5,$BD,$A1,$FF,$01,$B7,$B7,$FF +.byte $00,$22,$4C,$1F,$36,$3F,$5F,$17 +.byte $01,$63,$3F,$20,$2D,$29,$60,$EC +.byte $FF,$7F,$36,$3F,$1F,$5C,$22,$00 +.byte $68,$20,$0D,$29,$20,$77,$43,$01 +.byte $80,$C4,$F2,$FC,$DC,$FC,$FA,$D8 +.byte $00,$86,$DC,$04,$B0,$24,$06,$37 +.byte $FF,$FE,$DC,$FC,$FC,$FA,$C4,$80 +.byte $26,$04,$B0,$20,$04,$CC,$86,$00 +.byte $00,$00,$00,$1C,$26,$2F,$3F,$3F +.byte $00,$00,$1C,$3E,$7F,$7F,$7F,$7F +.byte $1F,$0F,$07,$03,$01,$00,$00,$00 +.byte $3F,$1F,$0F,$07,$02,$01,$00,$00 +.byte $00,$00,$00,$38,$4C,$DC,$F4,$F4 +.byte $00,$00,$38,$74,$FA,$FA,$FA,$FA +.byte $E8,$D0,$A0,$40,$80,$00,$00,$00 +.byte $F4,$E8,$D0,$A0,$40,$80,$00,$00 +.byte $00,$03,$0F,$30,$73,$73,$73,$70 +.byte $03,$0F,$3F,$FF,$FC,$FD,$FD,$FF +.byte $73,$73,$3F,$CF,$33,$0C,$03,$00 +.byte $FC,$FD,$F1,$3F,$0F,$03,$00,$00 +.byte $80,$20,$C8,$72,$3A,$3A,$3A,$7A +.byte $00,$C0,$F0,$BC,$DC,$DC,$DC,$9C +.byte $FA,$FA,$F2,$CE,$38,$E0,$80,$00 +.byte $3C,$FC,$FC,$F0,$C0,$00,$00,$00 +.byte $B0,$B0,$BF,$B0,$BF,$BF,$B0,$B0 +.byte $E0,$E0,$E0,$FF,$EF,$E0,$E0,$E0 +.byte $0B,$0B,$FB,$0B,$FB,$FB,$0B,$0B +.byte $0E,$0E,$0E,$FE,$F6,$0E,$0E,$0E +.byte $00,$00,$00,$0C,$3E,$3E,$7B,$FB +.byte $00,$00,$00,$38,$7C,$7C,$FE,$FE +.byte $7B,$F3,$F3,$66,$7E,$3C,$00,$00 +.byte $FE,$FE,$7C,$7C,$38,$00,$00,$00 +.byte $00,$17,$0F,$1F,$12,$30,$08,$18 +.byte $00,$00,$00,$00,$0D,$0F,$07,$07 +.byte $0F,$1F,$1F,$13,$03,$0E,$0E,$0F +.byte $0F,$1F,$1F,$1C,$0C,$00,$0E,$0F +.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 +.byte $00,$00,$00,$00,$A0,$B0,$E0,$C0 +.byte $C0,$E0,$E0,$C0,$C0,$C0,$E0,$70 +.byte $C0,$E0,$E0,$20,$20,$00,$E0,$70 +.byte $00,$17,$0F,$1F,$12,$30,$08,$18 +.byte $00,$00,$00,$00,$0D,$0F,$07,$07 +.byte $1F,$1F,$0F,$0F,$3F,$7C,$30,$18 +.byte $1F,$3F,$3F,$00,$00,$60,$30,$18 +.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 +.byte $00,$00,$00,$00,$A0,$B0,$E0,$C0 +.byte $C0,$F0,$F8,$E4,$FC,$FC,$7C,$00 +.byte $CC,$FC,$F8,$04,$0C,$0C,$0C,$00 +.byte $00,$17,$0F,$1F,$12,$30,$08,$18 +.byte $00,$00,$00,$00,$0D,$0F,$07,$07 +.byte $0F,$1F,$1F,$13,$03,$0E,$0E,$0F +.byte $0F,$1F,$1F,$1C,$0C,$00,$0E,$0F +.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 +.byte $00,$00,$00,$00,$A0,$B0,$E0,$C0 +.byte $C0,$C0,$C0,$C0,$C0,$C0,$E0,$00 +.byte $C0,$C0,$E0,$20,$00,$C0,$E0,$00 +.byte $00,$00,$17,$0F,$1F,$12,$30,$08 +.byte $00,$00,$00,$00,$00,$0D,$0F,$07 +.byte $18,$1F,$0F,$0F,$3F,$7B,$43,$03 +.byte $07,$1F,$3F,$37,$20,$60,$43,$03 +.byte $00,$00,$C8,$F8,$F0,$40,$40,$00 +.byte $00,$00,$00,$00,$00,$A0,$B0,$E0 +.byte $00,$E0,$E0,$C0,$C0,$80,$80,$C0 +.byte $C0,$F8,$F8,$C0,$00,$00,$80,$C0 +.byte $00,$17,$0F,$1F,$12,$30,$08,$18 +.byte $00,$00,$00,$00,$0D,$0F,$07,$1F +.byte $3F,$3F,$0F,$7F,$7F,$7E,$40,$00 +.byte $3F,$7F,$6F,$60,$60,$60,$40,$00 +.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 +.byte $00,$00,$00,$00,$A0,$B0,$E0,$CC +.byte $D0,$F8,$F0,$C4,$FC,$FC,$7C,$00 +.byte $DC,$F8,$F0,$04,$0C,$0C,$0C,$00 +.byte $00,$17,$0F,$1F,$1F,$3F,$0F,$7F +.byte $00,$00,$00,$00,$00,$00,$30,$60 +.byte $7F,$3F,$1F,$0F,$0F,$0F,$0F,$0F +.byte $7F,$3F,$1F,$00,$00,$06,$0F,$0F +.byte $00,$E0,$F0,$FC,$FC,$FC,$FC,$FC +.byte $00,$18,$08,$04,$04,$00,$0C,$04 +.byte $F8,$F8,$F8,$F8,$F0,$00,$00,$00 +.byte $F8,$F8,$C0,$00,$70,$00,$00,$00 +.byte $00,$17,$0F,$1F,$1A,$19,$0A,$7C +.byte $00,$00,$00,$00,$05,$66,$65,$63 +.byte $7F,$3F,$4F,$7F,$7F,$7E,$00,$00 +.byte $7F,$3F,$4F,$60,$60,$60,$00,$00 +.byte $00,$E8,$F0,$F8,$58,$9C,$50,$38 +.byte $00,$00,$00,$00,$A0,$60,$A0,$C3 +.byte $FC,$FE,$F0,$E0,$F0,$F0,$E0,$70 +.byte $FF,$FE,$F0,$00,$00,$00,$E0,$70 +.byte $FF,$80,$80,$9F,$90,$97,$97,$97 +.byte $00,$7F,$7F,$7F,$7F,$7F,$7F,$7F +.byte $97,$97,$97,$97,$9F,$BF,$FF,$00 +.byte $7F,$7F,$7F,$78,$7F,$60,$40,$00 +.byte $FE,$02,$06,$FE,$0E,$FE,$FE,$FE +.byte $00,$FE,$FC,$F8,$F8,$E8,$E8,$E8 +.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$00 +.byte $E8,$E8,$E8,$08,$F8,$00,$00,$00 +.byte $00,$3F,$7F,$60,$6E,$72,$76,$76 +.byte $00,$00,$1F,$3F,$31,$2D,$29,$29 +.byte $7E,$60,$60,$7F,$7C,$7E,$3F,$00 +.byte $21,$3F,$3F,$38,$1B,$01,$00,$00 +.byte $00,$FC,$FE,$0E,$7E,$4E,$6E,$6E +.byte $00,$00,$F8,$FC,$8C,$B4,$94,$94 +.byte $7E,$0E,$0E,$FE,$3E,$7E,$FC,$00 +.byte $84,$FC,$FC,$1C,$D8,$80,$00,$00 +.byte $00,$7F,$7F,$60,$7F,$7F,$77,$76 +.byte $00,$00,$3F,$3F,$00,$20,$29,$29 +.byte $72,$6E,$60,$77,$7E,$3C,$1F,$00 +.byte $2D,$31,$3F,$3C,$19,$03,$00,$00 +.byte $00,$FE,$FE,$0E,$FE,$FE,$EE,$6E +.byte $00,$00,$FC,$FC,$00,$04,$94,$94 +.byte $4E,$7E,$0E,$EE,$7E,$3C,$F8,$00 +.byte $B4,$8C,$FC,$3C,$98,$C0,$00,$00 +;; From 45ca35bcd5ef7497d3759ef9466195172bb6da11 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Sat, 14 Mar 2026 23:02:32 -0500 Subject: [PATCH 05/16] Replace PAD constant redefinitions with direct PAD enum usage Use PAD.UP, PAD.DOWN, PAD.LEFT, etc. directly instead of redefining const byte PAD_UP = (byte)PAD.UP etc. This follows the neslib convention used by all other samples. PAD_DPAD composite constant is kept since it's not provided by neslib. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- samples/crypto/Program.cs | 278 +++++++++++++++++++------------------- 1 file changed, 136 insertions(+), 142 deletions(-) diff --git a/samples/crypto/Program.cs b/samples/crypto/Program.cs index 328ef5a1..a71accd3 100644 --- a/samples/crypto/Program.cs +++ b/samples/crypto/Program.cs @@ -5,14 +5,8 @@ const byte PLAYER_1 = 0; const byte PLAYER_2 = 1; -const byte PAD_UP = (byte)PAD.UP; -const byte PAD_DOWN = (byte)PAD.DOWN; -const byte PAD_LEFT = (byte)PAD.LEFT; -const byte PAD_RIGHT = (byte)PAD.RIGHT; -const byte PAD_A = (byte)PAD.A; -const byte PAD_B = (byte)PAD.B; -const byte PAD_START = (byte)PAD.START; -const byte PAD_DPAD = PAD_LEFT | PAD_RIGHT | PAD_UP | PAD_DOWN; +// Use PAD enum values directly — neslib provides PAD.UP, PAD.DOWN, etc. +const byte PAD_DPAD = (byte)PAD.LEFT | (byte)PAD.RIGHT | (byte)PAD.UP | (byte)PAD.DOWN; const byte OAM_FLIP_H = 0x40; const byte OAM_FLIP_V = 0x80; @@ -641,10 +635,10 @@ void tick_enemies() if (G.temp6 == 0) { G.temp6 = (byte)(rand8() & 3); - if (G.temp6 == 0) G.temp3 = PAD_LEFT; - else if (G.temp6 == 1) G.temp3 = PAD_RIGHT; - else if (G.temp6 == 2) G.temp3 = PAD_UP; - else G.temp3 = PAD_DOWN; + if (G.temp6 == 0) G.temp3 = (byte)PAD.LEFT; + else if (G.temp6 == 1) G.temp3 = (byte)PAD.RIGHT; + else if (G.temp6 == 2) G.temp3 = (byte)PAD.UP; + else G.temp3 = (byte)PAD.DOWN; } else if (G.temp6 == 1) { @@ -656,16 +650,16 @@ void tick_enemies() if (G.temp0 != 0) { if (G.enemies_x[G.temp2] > G.player_x[G.temp1]) - G.temp3 = PAD_LEFT; + G.temp3 = (byte)PAD.LEFT; else - G.temp3 = PAD_RIGHT; + G.temp3 = (byte)PAD.RIGHT; } else { if (G.enemies_y[G.temp2] > G.player_y[G.temp1]) - G.temp3 = PAD_UP; + G.temp3 = (byte)PAD.UP; else - G.temp3 = PAD_DOWN; + G.temp3 = (byte)PAD.DOWN; } } @@ -676,13 +670,13 @@ void tick_enemies() if (G.enemy_push_timer[G.temp2] != 0) { } - else if (G.temp3 == PAD_RIGHT) + else if (G.temp3 == (byte)PAD.RIGHT) G.enemies_x[G.temp2] += G.enemy_speed; - else if (G.temp3 == PAD_LEFT) + else if (G.temp3 == (byte)PAD.LEFT) G.enemies_x[G.temp2] -= G.enemy_speed; - else if (G.temp3 == PAD_UP) + else if (G.temp3 == (byte)PAD.UP) G.enemies_y[G.temp2] -= G.enemy_speed; - else if (G.temp3 == PAD_DOWN) + else if (G.temp3 == (byte)PAD.DOWN) G.enemies_y[G.temp2] += G.enemy_speed; G.temp5 = isBlocked(G.enemies_x[G.temp2], G.enemies_y[G.temp2]); @@ -721,10 +715,10 @@ void tick_enemies() G.enemy_push_timer[G.i]--; G.temp6 = G.enemies_x[G.i]; G.temp7 = G.enemies_y[G.i]; - if (G.enemy_push_dir[G.i] == PAD_LEFT) G.enemies_x[G.i] -= 2; - else if (G.enemy_push_dir[G.i] == PAD_RIGHT) G.enemies_x[G.i] += 2; - else if (G.enemy_push_dir[G.i] == PAD_UP) G.enemies_y[G.i] -= 2; - else if (G.enemy_push_dir[G.i] == PAD_DOWN) G.enemies_y[G.i] += 2; + if (G.enemy_push_dir[G.i] == (byte)PAD.LEFT) G.enemies_x[G.i] -= 2; + else if (G.enemy_push_dir[G.i] == (byte)PAD.RIGHT) G.enemies_x[G.i] += 2; + else if (G.enemy_push_dir[G.i] == (byte)PAD.UP) G.enemies_y[G.i] -= 2; + else if (G.enemy_push_dir[G.i] == (byte)PAD.DOWN) G.enemies_y[G.i] += 2; if (isBlocked(G.enemies_x[G.i], G.enemies_y[G.i]) != 0) { G.enemies_x[G.i] = G.temp6; @@ -778,24 +772,24 @@ void tick_enemies() { if (G.enemies_type[G.i] == 0) { - if (G.enemies_dir[G.i] == PAD_UP) + if (G.enemies_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, spider_damaged_attack_up); - else if (G.enemies_dir[G.i] == PAD_DOWN) + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, spider_damaged_attack_down); - else if (G.enemies_dir[G.i] == PAD_LEFT) + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, spider_damaged_attack_left); - else if (G.enemies_dir[G.i] == PAD_RIGHT) + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, spider_damaged_attack_right); } else { - if (G.enemies_dir[G.i] == PAD_UP) + if (G.enemies_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, bat_damaged_attack_up); - else if (G.enemies_dir[G.i] == PAD_DOWN) + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, bat_damaged_attack_down); - else if (G.enemies_dir[G.i] == PAD_LEFT) + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, bat_damaged_attack_left); - else if (G.enemies_dir[G.i] == PAD_RIGHT) + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, bat_damaged_attack_right); } } @@ -805,24 +799,24 @@ void tick_enemies() { if (G.enemies_type[G.i] == 0) { - if (G.enemies_dir[G.i] == PAD_UP) + if (G.enemies_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_up); - else if (G.enemies_dir[G.i] == PAD_DOWN) + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_down); - else if (G.enemies_dir[G.i] == PAD_LEFT) + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_left); - else if (G.enemies_dir[G.i] == PAD_RIGHT) + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_right); } else { - if (G.enemies_dir[G.i] == PAD_UP) + if (G.enemies_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_up); - else if (G.enemies_dir[G.i] == PAD_DOWN) + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_down); - else if (G.enemies_dir[G.i] == PAD_LEFT) + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_left); - else if (G.enemies_dir[G.i] == PAD_RIGHT) + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_right); } } @@ -830,24 +824,24 @@ void tick_enemies() { if (G.enemies_type[G.i] == 0) { - if (G.enemies_dir[G.i] == PAD_UP) + if (G.enemies_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_up); - else if (G.enemies_dir[G.i] == PAD_DOWN) + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_down); - else if (G.enemies_dir[G.i] == PAD_LEFT) + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_left); - else if (G.enemies_dir[G.i] == PAD_RIGHT) + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_right); } else { - if (G.enemies_dir[G.i] == PAD_UP) + if (G.enemies_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_up); - else if (G.enemies_dir[G.i] == PAD_DOWN) + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_down); - else if (G.enemies_dir[G.i] == PAD_LEFT) + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_left); - else if (G.enemies_dir[G.i] == PAD_RIGHT) + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_right); } } @@ -859,24 +853,24 @@ void tick_enemies() { if (G.enemies_type[G.i] == 0) { - if (G.enemies_dir[G.i] == PAD_UP) + if (G.enemies_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, spider_attack_up); - else if (G.enemies_dir[G.i] == PAD_DOWN) + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, spider_attack_down); - else if (G.enemies_dir[G.i] == PAD_LEFT) + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, spider_attack_left); - else if (G.enemies_dir[G.i] == PAD_RIGHT) + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, spider_attack_right); } else { - if (G.enemies_dir[G.i] == PAD_UP) + if (G.enemies_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, bat_attack_up); - else if (G.enemies_dir[G.i] == PAD_DOWN) + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, bat_attack_down); - else if (G.enemies_dir[G.i] == PAD_LEFT) + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, bat_attack_left); - else if (G.enemies_dir[G.i] == PAD_RIGHT) + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, bat_attack_right); } } @@ -886,24 +880,24 @@ void tick_enemies() { if (G.enemies_type[G.i] == 0) { - if (G.enemies_dir[G.i] == PAD_UP) + if (G.enemies_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_up); - else if (G.enemies_dir[G.i] == PAD_DOWN) + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_down); - else if (G.enemies_dir[G.i] == PAD_LEFT) + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_left); - else if (G.enemies_dir[G.i] == PAD_RIGHT) + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_right); } else { - if (G.enemies_dir[G.i] == PAD_UP) + if (G.enemies_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_up); - else if (G.enemies_dir[G.i] == PAD_DOWN) + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_down); - else if (G.enemies_dir[G.i] == PAD_LEFT) + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_left); - else if (G.enemies_dir[G.i] == PAD_RIGHT) + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_right); } } @@ -911,24 +905,24 @@ void tick_enemies() { if (G.enemies_type[G.i] == 0) { - if (G.enemies_dir[G.i] == PAD_UP) + if (G.enemies_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_up); - else if (G.enemies_dir[G.i] == PAD_DOWN) + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_down); - else if (G.enemies_dir[G.i] == PAD_LEFT) + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_left); - else if (G.enemies_dir[G.i] == PAD_RIGHT) + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_right); } else { - if (G.enemies_dir[G.i] == PAD_UP) + if (G.enemies_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_up); - else if (G.enemies_dir[G.i] == PAD_DOWN) + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_down); - else if (G.enemies_dir[G.i] == PAD_LEFT) + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_left); - else if (G.enemies_dir[G.i] == PAD_RIGHT) + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_right); } } @@ -946,28 +940,28 @@ void draw_player() { if ((G.temp2 & PAD_DPAD) != 0) { - if (G.player_carry_dir[0] == PAD_UP) + if (G.player_carry_dir[0] == (byte)PAD.UP) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_up); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_up); } - else if (G.player_carry_dir[0] == PAD_DOWN) + else if (G.player_carry_dir[0] == (byte)PAD.DOWN) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_down); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_down); } - else if (G.player_carry_dir[0] == PAD_LEFT) + else if (G.player_carry_dir[0] == (byte)PAD.LEFT) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_left); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_left); } - else if (G.player_carry_dir[0] == PAD_RIGHT) + else if (G.player_carry_dir[0] == (byte)PAD.RIGHT) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_right); @@ -977,40 +971,40 @@ void draw_player() } else { - if (G.player_carry_dir[G.i] == PAD_UP) + if (G.player_carry_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_up); - else if (G.player_carry_dir[G.i] == PAD_DOWN) + else if (G.player_carry_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_down); - else if (G.player_carry_dir[G.i] == PAD_LEFT) + else if (G.player_carry_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_left); - else if (G.player_carry_dir[G.i] == PAD_RIGHT) + else if (G.player_carry_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_right); } } else if (G.player_attack_tick[G.i] != 0) { - if (G.player_dir[G.i] == PAD_UP) + if (G.player_dir[G.i] == (byte)PAD.UP) { if (G.player_attack_tick[G.i] > 8) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_up); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_up); } - else if (G.player_dir[G.i] == PAD_DOWN) + else if (G.player_dir[G.i] == (byte)PAD.DOWN) { if (G.player_attack_tick[G.i] > 8) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_down); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_down); } - else if (G.player_dir[G.i] == PAD_LEFT) + else if (G.player_dir[G.i] == (byte)PAD.LEFT) { if (G.player_attack_tick[G.i] > 8) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_left); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_left); } - else if (G.player_dir[G.i] == PAD_RIGHT) + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) { if (G.player_attack_tick[G.i] > 8) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_right); @@ -1021,28 +1015,28 @@ void draw_player() } else if ((G.temp2 & PAD_DPAD) != 0) { - if (G.player_dir[G.i] == PAD_UP) + if (G.player_dir[G.i] == (byte)PAD.UP) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_up); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_up); } - else if (G.player_dir[G.i] == PAD_DOWN) + else if (G.player_dir[G.i] == (byte)PAD.DOWN) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_down); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_down); } - else if (G.player_dir[G.i] == PAD_LEFT) + else if (G.player_dir[G.i] == (byte)PAD.LEFT) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_left); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_left); } - else if (G.player_dir[G.i] == PAD_RIGHT) + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_right); @@ -1052,13 +1046,13 @@ void draw_player() } else { - if (G.player_dir[G.i] == PAD_UP) + if (G.player_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_up); - else if (G.player_dir[G.i] == PAD_DOWN) + else if (G.player_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_down); - else if (G.player_dir[G.i] == PAD_LEFT) + else if (G.player_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_left); - else if (G.player_dir[G.i] == PAD_RIGHT) + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_right); } } @@ -1068,28 +1062,28 @@ void draw_player() { if ((G.temp2 & PAD_DPAD) != 0) { - if (G.player_carry_dir[1] == PAD_UP) + if (G.player_carry_dir[1] == (byte)PAD.UP) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_up); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_up); } - else if (G.player_carry_dir[1] == PAD_DOWN) + else if (G.player_carry_dir[1] == (byte)PAD.DOWN) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_down); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_down); } - else if (G.player_carry_dir[1] == PAD_LEFT) + else if (G.player_carry_dir[1] == (byte)PAD.LEFT) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_left); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_left); } - else if (G.player_carry_dir[1] == PAD_RIGHT) + else if (G.player_carry_dir[1] == (byte)PAD.RIGHT) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_right); @@ -1099,40 +1093,40 @@ void draw_player() } else { - if (G.player_carry_dir[G.i] == PAD_UP) + if (G.player_carry_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_up); - else if (G.player_carry_dir[G.i] == PAD_DOWN) + else if (G.player_carry_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_down); - else if (G.player_carry_dir[G.i] == PAD_LEFT) + else if (G.player_carry_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_left); - else if (G.player_carry_dir[G.i] == PAD_RIGHT) + else if (G.player_carry_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_right); } } else if (G.player_attack_tick[G.i] != 0) { - if (G.player_dir[G.i] == PAD_UP) + if (G.player_dir[G.i] == (byte)PAD.UP) { if (G.player_attack_tick[G.i] > 8) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_up); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_up); } - else if (G.player_dir[G.i] == PAD_DOWN) + else if (G.player_dir[G.i] == (byte)PAD.DOWN) { if (G.player_attack_tick[G.i] > 8) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_down); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_down); } - else if (G.player_dir[G.i] == PAD_LEFT) + else if (G.player_dir[G.i] == (byte)PAD.LEFT) { if (G.player_attack_tick[G.i] > 8) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_left); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_left); } - else if (G.player_dir[G.i] == PAD_RIGHT) + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) { if (G.player_attack_tick[G.i] > 8) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_right); @@ -1143,28 +1137,28 @@ void draw_player() } else if ((G.temp2 & PAD_DPAD) != 0) { - if (G.player_dir[G.i] == PAD_UP) + if (G.player_dir[G.i] == (byte)PAD.UP) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_up); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_up); } - else if (G.player_dir[G.i] == PAD_DOWN) + else if (G.player_dir[G.i] == (byte)PAD.DOWN) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_down); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_down); } - else if (G.player_dir[G.i] == PAD_LEFT) + else if (G.player_dir[G.i] == (byte)PAD.LEFT) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_left); else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_left); } - else if (G.player_dir[G.i] == PAD_RIGHT) + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) { if ((G.frame & 16) != 0) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_right); @@ -1174,13 +1168,13 @@ void draw_player() } else { - if (G.player_dir[G.i] == PAD_UP) + if (G.player_dir[G.i] == (byte)PAD.UP) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_up); - else if (G.player_dir[G.i] == PAD_DOWN) + else if (G.player_dir[G.i] == (byte)PAD.DOWN) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_down); - else if (G.player_dir[G.i] == PAD_LEFT) + else if (G.player_dir[G.i] == (byte)PAD.LEFT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_left); - else if (G.player_dir[G.i] == PAD_RIGHT) + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_right); } } @@ -1305,16 +1299,16 @@ void tick_players() G.to_scroll_y_neg = 0; } - if ((G.temp2 & PAD_B) != 0) + if ((G.temp2 & (byte)PAD.B) != 0) { if (G.player_carry[G.i] == 0xFF) { G.temp4 = G.player_x[G.i]; G.temp5 = G.player_y[G.i]; - if (G.player_dir[G.i] == PAD_LEFT) G.temp4 -= 4; - else if (G.player_dir[G.i] == PAD_RIGHT) G.temp4 += 4; - if (G.player_dir[G.i] == PAD_UP) G.temp5 -= 4; - else if (G.player_dir[G.i] == PAD_DOWN) G.temp5 += 2; + if (G.player_dir[G.i] == (byte)PAD.LEFT) G.temp4 -= 4; + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) G.temp4 += 4; + if (G.player_dir[G.i] == (byte)PAD.UP) G.temp5 -= 4; + else if (G.player_dir[G.i] == (byte)PAD.DOWN) G.temp5 += 2; G.j = 0; while (G.j < 4) { @@ -1342,7 +1336,7 @@ void tick_players() G.player_carry[G.i] = 0xFF; } - if (G.player_attack_tick[G.i] < 3 && (G.temp2 & PAD_A) != 0) + if (G.player_attack_tick[G.i] < 3 && (G.temp2 & (byte)PAD.A) != 0) G.player_attack_tick[G.i] = 16; G.temp1 = (byte)(1 - G.i); @@ -1360,7 +1354,7 @@ void tick_players() if (G.i == 0 && (G.frame & 3) == 0) { G.temp2 = (byte)((byte)pad_poll(0) & (byte)pad_poll(1)); - if ((G.temp2 & PAD_LEFT) != 0) + if ((G.temp2 & (byte)PAD.LEFT) != 0) { if (isBlocked((byte)(G.player_x[0] - 1), G.player_y[0]) == 0 && isBlocked((byte)(G.player_x[1] - 1), G.player_y[1]) == 0) { @@ -1369,7 +1363,7 @@ void tick_players() G.item_x[G.player_carry[G.i]]--; } } - else if ((G.temp2 & PAD_RIGHT) != 0) + else if ((G.temp2 & (byte)PAD.RIGHT) != 0) { if (isBlocked((byte)(G.player_x[0] + 1), G.player_y[0]) == 0 && isBlocked((byte)(G.player_x[1] + 1), G.player_y[1]) == 0) { @@ -1378,7 +1372,7 @@ void tick_players() G.item_x[G.player_carry[G.i]]++; } } - if ((G.temp2 & PAD_UP) != 0) + if ((G.temp2 & (byte)PAD.UP) != 0) { if (isBlocked(G.player_x[0], (byte)(G.player_y[0] - 1)) == 0 && isBlocked(G.player_x[1], (byte)(G.player_y[1] - 1)) == 0) { @@ -1387,7 +1381,7 @@ void tick_players() G.item_y[G.player_carry[G.i]]--; } } - else if ((G.temp2 & PAD_DOWN) != 0) + else if ((G.temp2 & (byte)PAD.DOWN) != 0) { if (isBlocked(G.player_x[0], (byte)(G.player_y[0] + 1)) == 0 && isBlocked(G.player_x[1], (byte)(G.player_y[1] + 1)) == 0) { @@ -1402,20 +1396,20 @@ void tick_players() { if ((G.player_dir[G.i] & G.temp2) == 0) { - if ((G.temp2 & PAD_LEFT) != 0) G.player_dir[G.i] = PAD_LEFT; - else if ((G.temp2 & PAD_RIGHT) != 0) G.player_dir[G.i] = PAD_RIGHT; - else if ((G.temp2 & PAD_DOWN) != 0) G.player_dir[G.i] = PAD_DOWN; - else if ((G.temp2 & PAD_UP) != 0) G.player_dir[G.i] = PAD_UP; + if ((G.temp2 & (byte)PAD.LEFT) != 0) G.player_dir[G.i] = (byte)PAD.LEFT; + else if ((G.temp2 & (byte)PAD.RIGHT) != 0) G.player_dir[G.i] = (byte)PAD.RIGHT; + else if ((G.temp2 & (byte)PAD.DOWN) != 0) G.player_dir[G.i] = (byte)PAD.DOWN; + else if ((G.temp2 & (byte)PAD.UP) != 0) G.player_dir[G.i] = (byte)PAD.UP; } G.temp4 = G.player_x[G.i]; G.temp5 = G.player_y[G.i]; - if ((G.temp2 & PAD_LEFT) != 0) + if ((G.temp2 & (byte)PAD.LEFT) != 0) { if (G.player_hp[G.temp1] == 0 || G.player_x[G.temp1] < G.player_x[G.i] || (byte)(G.player_x[G.temp1] - G.player_x[G.i]) < 60) G.player_x[G.i]--; } - else if ((G.temp2 & PAD_RIGHT) != 0) + else if ((G.temp2 & (byte)PAD.RIGHT) != 0) { if (G.player_hp[G.temp1] == 0 || (G.player_x[G.i] < 250 && (G.player_x[G.temp1] > G.player_x[G.i] || (byte)(G.player_x[G.i] - G.player_x[G.temp1]) < 60))) G.player_x[G.i]++; @@ -1426,12 +1420,12 @@ void tick_players() else if (G.player_carry[G.i] != 0xFF) G.item_x[G.player_carry[G.i]] += (byte)(G.player_x[G.i] - G.temp4); - if ((G.temp2 & PAD_UP) != 0) + if ((G.temp2 & (byte)PAD.UP) != 0) { if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] < G.player_y[G.i] || (byte)(G.player_y[G.temp1] - G.player_y[G.i]) < 60) G.player_y[G.i]--; } - else if ((G.temp2 & PAD_DOWN) != 0) + else if ((G.temp2 & (byte)PAD.DOWN) != 0) { if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] > G.player_y[G.i] || (byte)(G.player_y[G.i] - G.player_y[G.temp1]) < 60) G.player_y[G.i]++; @@ -1449,10 +1443,10 @@ void tick_players() G.temp1 = G.player_y[G.i]; G.temp6 = 5; G.temp7 = 5; - if (G.player_dir[G.i] == PAD_LEFT) { G.temp0 -= 4; G.temp6 = 8; } - else if (G.player_dir[G.i] == PAD_RIGHT) { G.temp0 += 4; G.temp6 = 8; } - if (G.player_dir[G.i] == PAD_UP) { G.temp1 -= 4; G.temp7 = 8; } - else if (G.player_dir[G.i] == PAD_DOWN) { G.temp1 += 3; G.temp7 = 8; } + if (G.player_dir[G.i] == (byte)PAD.LEFT) { G.temp0 -= 4; G.temp6 = 8; } + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) { G.temp0 += 4; G.temp6 = 8; } + if (G.player_dir[G.i] == (byte)PAD.UP) { G.temp1 -= 4; G.temp7 = 8; } + else if (G.player_dir[G.i] == (byte)PAD.DOWN) { G.temp1 += 3; G.temp7 = 8; } G.dx = G.temp0; G.dy = G.temp1; if (isBlocked(G.temp0, G.temp1) == 0) @@ -1523,8 +1517,8 @@ void reset() { G.next_level = 0; G.frame = 0; - G.player_dir[0] = PAD_UP; - G.player_dir[1] = PAD_UP; + G.player_dir[0] = (byte)PAD.UP; + G.player_dir[1] = (byte)PAD.UP; G.player_hp[0] = 4; G.player_hp[1] = 4; G.scr_x = 128; @@ -1547,7 +1541,7 @@ void reset() while (G.i < 8) { G.enemies_health[G.i] = 1; - G.enemies_dir[G.i] = PAD_UP; + G.enemies_dir[G.i] = (byte)PAD.UP; G.enemy_leg[G.i] = (byte)(G.i & 1); G.enemies_type[G.i] = (byte)(G.i & 1); G.i++; @@ -1702,7 +1696,7 @@ void reset() G.spr = oam_spr(0x88, 0xD4, 0xE6, 0x01, G.spr); G.spr = oam_spr(0x90, 0xD4, 0xFA, 0x01, G.spr); - if (((pad_trigger(0) | pad_trigger(1)) & (PAD_A | PAD_B | PAD_START)) != 0) + if (((pad_trigger(0) | pad_trigger(1)) & ((byte)PAD.A | (byte)PAD.B | (byte)PAD.START)) != 0) break; } @@ -1755,7 +1749,7 @@ void reset() { ppu_wait_nmi(); G.frame++; - if (G.frame > 100 && (G.frame == 255 || ((pad_trigger(0) | pad_trigger(1)) & (PAD_A | PAD_B | PAD_START)) != 0)) + if (G.frame > 100 && (G.frame == 255 || ((pad_trigger(0) | pad_trigger(1)) & ((byte)PAD.A | (byte)PAD.B | (byte)PAD.START)) != 0)) { G.spr++; break; @@ -1790,7 +1784,7 @@ void reset() ppu_wait_nmi(); G.frame++; if (G.frame == 255) G.spr++; - if (G.spr == 4 || (G.spr >= 1 && ((pad_trigger(0) | pad_trigger(1)) & (PAD_A | PAD_B | PAD_START)) != 0)) + if (G.spr == 4 || (G.spr >= 1 && ((pad_trigger(0) | pad_trigger(1)) & ((byte)PAD.A | (byte)PAD.B | (byte)PAD.START)) != 0)) break; } pal_all(palette); @@ -1800,7 +1794,7 @@ void reset() } G.temp1 = (byte)(pad_trigger(0) | pad_trigger(1)); - if ((G.temp1 & PAD_START) != 0) + if ((G.temp1 & (byte)PAD.START) != 0) { G.spr = 0; oam_clear(); @@ -1811,7 +1805,7 @@ void reset() G.spr = oam_spr(128, 114, 0xE8, 0x01, G.spr); G.spr = oam_spr(136, 114, 0xEA, 0x01, G.spr); G.spr = oam_spr(144, 114, 0xEC, 0x01, G.spr); - while ((pad_trigger(0) & PAD_START) == 0) + while ((pad_trigger(0) & (byte)PAD.START) == 0) ppu_wait_nmi(); pal_all(palette); G.spr = 0; From 4fe80a2d5d289b0b084c14722e1b9d6bdb48a222 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Sat, 14 Mar 2026 23:19:32 -0500 Subject: [PATCH 06/16] Support user-defined static fields in oam_spr arguments Extend EmitLdsfldForArg to handle any static field (not just oam_off) by looking up the field's allocated address via GetOrAllocateStaticField. Also fix compound oam_spr argument scanning to track static field names when a static field is part of a binary expression (e.g., G.temp0 + 8). The emission code now checks isStaticField for compound args and loads from the field address instead of trying Locals[-1]. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Utilities/IL2NESWriter.OamSprites.cs | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/dotnes.tasks/Utilities/IL2NESWriter.OamSprites.cs b/src/dotnes.tasks/Utilities/IL2NESWriter.OamSprites.cs index 357b7364..3584b345 100644 --- a/src/dotnes.tasks/Utilities/IL2NESWriter.OamSprites.cs +++ b/src/dotnes.tasks/Utilities/IL2NESWriter.OamSprites.cs @@ -238,12 +238,12 @@ or ILOpCode.And or ILOpCode.Or or ILOpCode.Xor { if (depth > 0) { - // Static field consumed by binary op — just decrement depth + // Static field consumed by binary op — track field name for compound emission depth--; if (depth == 0) { argInfos.Add((false, 0, 0, false, 0, false, 0, 0, - true, compLocalIdx, compBinOp, compBinOpConst, compAddConst, false, null)); + true, compLocalIdx, compBinOp, compBinOpConst, compAddConst, true, il.String)); needed--; firstArgIlIdx = ilIdx; compBinOp = ILOpCode.Nop; compBinOpConst = 0; compLocalIdx = -1; @@ -293,10 +293,18 @@ or ILOpCode.And or ILOpCode.Or or ILOpCode.Xor var arg = argInfos[i]; if (arg.isCompound) { - // Compound expression: addConst + (local BINOP binOpConst) - // or simple: local + addConst (when compoundBinOp is Add) - var loc = Locals[arg.compoundLocalIdx]; - Emit(Opcode.LDA, AddressMode.Absolute, (ushort)loc.Address!); + // Compound expression: addConst + (local/field BINOP binOpConst) + // or simple: local/field + addConst (when compoundBinOp is Add) + if (arg.isStaticField) + { + var addr = GetOrAllocateStaticField(arg.staticFieldName!); + Emit(Opcode.LDA, AddressMode.Absolute, addr); + } + else + { + var loc = Locals[arg.compoundLocalIdx]; + Emit(Opcode.LDA, AddressMode.Absolute, (ushort)loc.Address!); + } // Apply the inner binary operation switch (arg.compoundBinOp) @@ -439,14 +447,18 @@ or ILOpCode.And or ILOpCode.Or or ILOpCode.Xor /// /// Emits LDA for a static field reference used as an oam_spr argument. - /// Maps known NES library static fields to their zero-page addresses. + /// Maps known NES library static fields to their zero-page addresses, + /// or looks up user-defined static fields by allocated address. /// void EmitLdsfldForArg(string? fieldName) { if (fieldName == nameof(NESLib.oam_off)) Emit(Opcode.LDA, AddressMode.ZeroPage, (byte)NESConstants.OAM_OFF); else - throw new TranspileException($"Unsupported static field '{fieldName}' in oam_spr argument.", MethodName); + { + var addr = GetOrAllocateStaticField(fieldName!); + Emit(Opcode.LDA, AddressMode.Absolute, addr); + } } /// From 7c337314cab22f582c77cb5fc6b2a6ca912016f5 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Tue, 17 Mar 2026 19:05:39 -0500 Subject: [PATCH 07/16] Fix merge conflicts and update PAD usage for pad_trigger return type change Resolve OamSprites.cs conflict by taking main's comprehensive fix (PR #239). Update crypto sample: pad_trigger() now returns PAD enum, remove (byte) casts in bitwise expressions against PAD values. The sample still cannot transpile due to closure captures from local functions (~120 byte[] arrays). Inlining the functions is needed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- samples/crypto/Program.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/samples/crypto/Program.cs b/samples/crypto/Program.cs index a71accd3..a37bb340 100644 --- a/samples/crypto/Program.cs +++ b/samples/crypto/Program.cs @@ -1696,7 +1696,7 @@ void reset() G.spr = oam_spr(0x88, 0xD4, 0xE6, 0x01, G.spr); G.spr = oam_spr(0x90, 0xD4, 0xFA, 0x01, G.spr); - if (((pad_trigger(0) | pad_trigger(1)) & ((byte)PAD.A | (byte)PAD.B | (byte)PAD.START)) != 0) + if (((pad_trigger(0) | pad_trigger(1)) & (PAD.A | PAD.B | PAD.START)) != 0) break; } @@ -1749,7 +1749,7 @@ void reset() { ppu_wait_nmi(); G.frame++; - if (G.frame > 100 && (G.frame == 255 || ((pad_trigger(0) | pad_trigger(1)) & ((byte)PAD.A | (byte)PAD.B | (byte)PAD.START)) != 0)) + if (G.frame > 100 && (G.frame == 255 || ((pad_trigger(0) | pad_trigger(1)) & (PAD.A | PAD.B | PAD.START)) != 0)) { G.spr++; break; @@ -1784,7 +1784,7 @@ void reset() ppu_wait_nmi(); G.frame++; if (G.frame == 255) G.spr++; - if (G.spr == 4 || (G.spr >= 1 && ((pad_trigger(0) | pad_trigger(1)) & ((byte)PAD.A | (byte)PAD.B | (byte)PAD.START)) != 0)) + if (G.spr == 4 || (G.spr >= 1 && ((pad_trigger(0) | pad_trigger(1)) & (PAD.A | PAD.B | PAD.START)) != 0)) break; } pal_all(palette); @@ -1805,7 +1805,7 @@ void reset() G.spr = oam_spr(128, 114, 0xE8, 0x01, G.spr); G.spr = oam_spr(136, 114, 0xEA, 0x01, G.spr); G.spr = oam_spr(144, 114, 0xEC, 0x01, G.spr); - while ((pad_trigger(0) & (byte)PAD.START) == 0) + while ((pad_trigger(0) & PAD.START) == 0) ppu_wait_nmi(); pal_all(palette); G.spr = 0; From c7ccca2816469f4f567b0a5680656fd53db1f66a Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Tue, 17 Mar 2026 19:33:33 -0500 Subject: [PATCH 08/16] Inline all 7 local functions in crypto sample to eliminate closures Inlined isBlocked (9 call sites), took_damage, draw_player, tick_enemies, tick_players, init, and reset into the main body. This eliminates the closure struct that blocked transpilation. The transpiler now progresses past the closure check but hits a new limitation: 'Array element access requires the array to be stored in a local variable' in HandleLdelemU1ComplexIndex. Also updated PAD usage for pad_trigger() return type change. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- samples/crypto/Program.cs | 2696 ++++++++++++++++++++++--------------- 1 file changed, 1587 insertions(+), 1109 deletions(-) diff --git a/samples/crypto/Program.cs b/samples/crypto/Program.cs index a37bb340..107a89ba 100644 --- a/samples/crypto/Program.cs +++ b/samples/crypto/Program.cs @@ -538,1308 +538,1786 @@ byte[] player_1_meta_spr_attack_1_left = new byte[] { 0xF0, 0xF8, 0x54, 0x41, 0xF8, 0xF8, 0x52, 0x41, 0x00, 0xF8, 0x50, 0x41, 0x80 }; // Main game code -byte isBlocked(byte x, byte y) + +// [inlined: init] +oam_size(1); +bank_spr(0); +bank_bg(1); +vram_adr(NAMETABLE_A); +vram_unrle(bg_top_left); +vram_adr(NAMETABLE_B); +vram_unrle(bg_top_right); +vram_adr(NAMETABLE_C); +vram_unrle(bg_bottom_left); +vram_adr(NAMETABLE_D); +vram_unrle(bg_bottom_right); +ppu_on_all(); +G.difficulty = 0; +G.next_level = 0; +oam_clear(); + +while (true) { - if (x > 122 && x < 134 && y > 114 && y < 125) - { - return 1; - } - if (x < 128) - { - if (y < 120) - { - return collision_top_left[(x >> 3) + ((y >> 3) << 4)]; - } - else - { - y -= 120; - return collision_bottom_left[(x >> 3) + ((y >> 3) << 4)]; - } - } - else + pal_all(paused_palette); + scroll(0, 0); + ppu_wait_nmi(); + + ppu_off(); + vram_adr(NAMETABLE_A); + vram_unrle(bg_menu); + ppu_on_all(); + + pal_all(palette); + ppu_wait_nmi(); + ppu_wait_nmi(); + + while (true) { - x -= 128; - if (y < 120) + ppu_wait_nmi(); + G.spr = 0; + oam_clear(); + G.frame++; + if ((G.frame & 8) != 0) { - return collision_top_right[(x >> 3) + ((y >> 3) << 4)]; + G.spr = oam_spr(120, 135, 0x66, 0x03, G.spr); + G.spr = oam_spr(128, 135, 0x68, 0x03, G.spr); } else { - y -= 120; - return collision_bottom_right[(x >> 3) + ((y >> 3) << 4)]; + G.spr = oam_spr(120, 135, 0x6A, 0x03, G.spr); + G.spr = oam_spr(128, 135, 0x6C, 0x03, G.spr); } - } -} -void took_damage() -{ - G.j = 0; - while (G.j < 8) - { - if (G.enemies_health[G.j] == 0) - { - G.j++; - continue; - } - G.temp2 = G.enemies_x[G.j]; - G.temp3 = G.enemies_y[G.j]; - if (G.temp0 > G.temp2) - G.temp4 = (byte)(G.temp0 - G.temp2); - else - G.temp4 = (byte)(G.temp2 - G.temp0); - if (G.temp1 > G.temp3) - G.temp5 = (byte)(G.temp1 - G.temp3); - else - G.temp5 = (byte)(G.temp3 - G.temp1); - if (G.temp4 < G.temp6 && G.temp5 < G.temp7) - { - G.enemies_health[G.j]--; - if (G.enemies_health[G.j] != 0) - { - G.enemy_push_timer[G.j] = 4; - G.enemy_push_dir[G.j] = G.player_dir[G.i]; - } - else - { - sfx_play(1, 0); - } + G.spr = oam_spr(0x60, 0xA4, 0xEA, 0x01, G.spr); + G.spr = oam_spr(0x70, 0xA4, 0xF0, 0x01, G.spr); + G.spr = oam_spr(0x78, 0xA4, 0xEA, 0x01, G.spr); + G.spr = oam_spr(0x80, 0xA4, 0xF2, 0x01, G.spr); + G.spr = oam_spr(0x88, 0xA4, 0xF8, 0x01, G.spr); + G.spr = oam_spr(0x90, 0xA4, 0xE4, 0x01, G.spr); + G.spr = oam_spr(0x98, 0xA4, 0xFA, 0x01, G.spr); + + G.spr = oam_spr(0x60, 0xB4, 0xEA, 0x01, G.spr); + G.spr = oam_spr(0x70, 0xB4, 0xFC, 0x01, G.spr); + G.spr = oam_spr(0x78, 0xB4, 0xEA, 0x01, G.spr); + G.spr = oam_spr(0x80, 0xB4, 0xFA, 0x01, G.spr); + G.spr = oam_spr(0x88, 0xB4, 0xFE, 0x01, G.spr); + + G.spr = oam_spr(0x60, 0xC4, 0xF0, 0x01, G.spr); + G.spr = oam_spr(0x70, 0xC4, 0xE0, 0x01, G.spr); + G.spr = oam_spr(0x78, 0xC4, 0x04, 0x01, G.spr); + G.spr = oam_spr(0x80, 0xC4, 0xF2, 0x01, G.spr); + G.spr = oam_spr(0x88, 0xC4, 0xE0, 0x01, G.spr); + G.spr = oam_spr(0x90, 0xC4, 0xF0, 0x01, G.spr); + G.spr = oam_spr(0x98, 0xC4, 0xE4, 0x01, G.spr); + G.spr = oam_spr(0xA0, 0xC4, 0x18, 0x01, G.spr); + + G.spr = oam_spr(0x60, 0xD4, 0xE6, 0x01, G.spr); + G.spr = oam_spr(0x70, 0xD4, 0x04, 0x01, G.spr); + G.spr = oam_spr(0x78, 0xD4, 0xF2, 0x01, G.spr); + G.spr = oam_spr(0x80, 0xD4, 0xF8, 0x01, G.spr); + G.spr = oam_spr(0x88, 0xD4, 0xE6, 0x01, G.spr); + G.spr = oam_spr(0x90, 0xD4, 0xFA, 0x01, G.spr); + + if (((pad_trigger(0) | pad_trigger(1)) & (PAD.A | PAD.B | PAD.START)) != 0) break; - } - G.j++; } -} -void tick_enemies() -{ - G.temp4 = (byte)(rand8() & 7); - G.i = 0; - while (G.i < 8) - { - if (G.enemies_health[G.i] == 0 && (G.frame & 7) == G.i) - { - G.enemies_x[G.i] = G.enemy_spawn_points_x[G.temp4]; - G.enemies_y[G.i] = G.enemy_spawn_points_y[G.temp4]; - G.enemy_push_timer[G.i] = 0; - G.enemies_health[G.i] = G.spawn_hp; - G.enemies_type[G.i] = (byte)(G.i & 1); - return; - } - G.i++; - } + G.spr = 0; + oam_clear(); - G.temp2 = (byte)(G.frame & 7); - G.enemy_leg[G.temp2] = (byte)(1 - G.enemy_leg[G.temp2]); - G.temp1 = G.enemies_enemy[G.temp2]; + pal_all(paused_palette); + ppu_wait_nmi(); - G.temp6 = (byte)(rand8() & 3); - if (G.temp6 == 0) - { - G.temp6 = (byte)(rand8() & 3); - if (G.temp6 == 0) G.temp3 = (byte)PAD.LEFT; - else if (G.temp6 == 1) G.temp3 = (byte)PAD.RIGHT; - else if (G.temp6 == 2) G.temp3 = (byte)PAD.UP; - else G.temp3 = (byte)PAD.DOWN; - } - else if (G.temp6 == 1) - { - G.temp3 = G.enemies_dir[G.temp2]; - } - else - { - G.temp0 = (byte)(rand8() & 1); - if (G.temp0 != 0) - { - if (G.enemies_x[G.temp2] > G.player_x[G.temp1]) - G.temp3 = (byte)PAD.LEFT; - else - G.temp3 = (byte)PAD.RIGHT; - } - else - { - if (G.enemies_y[G.temp2] > G.player_y[G.temp1]) - G.temp3 = (byte)PAD.UP; - else - G.temp3 = (byte)PAD.DOWN; - } - } + ppu_off(); + vram_adr(NAMETABLE_A); + vram_unrle(bg_top_left); + ppu_on_all(); - G.enemies_dir[G.temp2] = G.temp3; - G.temp6 = G.enemies_x[G.temp2]; - G.temp7 = G.enemies_y[G.temp2]; + ppu_wait_nmi(); - if (G.enemy_push_timer[G.temp2] != 0) - { - } - else if (G.temp3 == (byte)PAD.RIGHT) - G.enemies_x[G.temp2] += G.enemy_speed; - else if (G.temp3 == (byte)PAD.LEFT) - G.enemies_x[G.temp2] -= G.enemy_speed; - else if (G.temp3 == (byte)PAD.UP) - G.enemies_y[G.temp2] -= G.enemy_speed; - else if (G.temp3 == (byte)PAD.DOWN) - G.enemies_y[G.temp2] += G.enemy_speed; - - G.temp5 = isBlocked(G.enemies_x[G.temp2], G.enemies_y[G.temp2]); - if (G.temp5 != 0) - { - G.enemies_x[G.temp2] = G.temp6; - G.enemies_y[G.temp2] = G.temp7; - } - else + G.difficulty = 0; + G.next_level = 1; + + while (true) { - G.i = 0; - while (G.i < 8) + ppu_wait_nmi(); + G.spr = 0; + oam_clear(); + + if (G.next_level != 0) { - if (G.temp2 != G.i) + sfx_play(3, 2); + // [inlined: reset] + G.next_level = 0; + G.frame = 0; + G.player_dir[0] = (byte)PAD.UP; + G.player_dir[1] = (byte)PAD.UP; + G.player_hp[0] = 4; + G.player_hp[1] = 4; + G.scr_x = 128; + G.scr_y = 128; + G.player_x[0] = 120; + G.player_y[0] = 120; + G.player_x[1] = 136; + G.player_y[1] = 120; + G.player_attack_tick[0] = 0; + G.player_attack_tick[1] = 0; + G.enemies_enemy[0] = PLAYER_1; + G.enemies_enemy[1] = PLAYER_2; + G.enemies_enemy[2] = PLAYER_1; + G.enemies_enemy[3] = PLAYER_2; + G.enemies_enemy[4] = PLAYER_1; + G.enemies_enemy[5] = PLAYER_2; + G.enemies_enemy[6] = PLAYER_1; + G.enemies_enemy[7] = PLAYER_2; + G.i = 0; + while (G.i < 8) + { + G.enemies_health[G.i] = 1; + G.enemies_dir[G.i] = (byte)PAD.UP; + G.enemy_leg[G.i] = (byte)(G.i & 1); + G.enemies_type[G.i] = (byte)(G.i & 1); + G.i++; + } + G.enemy_spawn_points_x[0] = 184; + G.enemy_spawn_points_y[0] = 24; + G.enemy_spawn_points_x[1] = 232; + G.enemy_spawn_points_y[1] = 72; + G.enemy_spawn_points_x[2] = 232; + G.enemy_spawn_points_y[2] = 168; + G.enemy_spawn_points_x[3] = 184; + G.enemy_spawn_points_y[3] = 216; + G.enemy_spawn_points_x[4] = 72; + G.enemy_spawn_points_y[4] = 217; + G.enemy_spawn_points_x[5] = 24; + G.enemy_spawn_points_y[5] = 167; + G.enemy_spawn_points_x[6] = 24; + G.enemy_spawn_points_y[6] = 73; + G.enemy_spawn_points_x[7] = 72; + G.enemy_spawn_points_y[7] = 24; + G.i = 0; + while (G.i < 8) + { + G.enemies_x[G.i] = G.enemy_spawn_points_x[G.i]; + G.enemies_y[G.i] = G.enemy_spawn_points_y[G.i]; + G.enemy_push_timer[G.i] = 0; + G.i++; + } + G.item_type[0] = 1; + G.item_x[0] = 128; + G.item_y[0] = 88; + G.item_type[1] = 2; + G.item_x[1] = 128; + G.item_y[1] = 108; + G.item_type[2] = 3; + G.item_x[2] = 128; + G.item_y[2] = 128; + G.item_type[3] = 4; + G.item_x[3] = 128; + G.item_y[3] = 148; + + G.i = 0; + while (G.i < 4) { - if ((byte)(G.enemies_x[G.i] - 6) < G.enemies_x[G.temp2] && (byte)(G.enemies_x[G.i] + 6) > G.enemies_x[G.temp2]) + G.temp0 = (byte)(rand8() & 0xFE); + G.item_x[G.i] = (byte)(spawn[G.temp0] << 3); + G.item_y[G.i] = (byte)(spawn[G.temp0 + 1] << 3); + byte retry = 0; + G.j = 0; + while (G.j < G.i) { - if ((byte)(G.enemies_y[G.i] - 6) < G.enemies_y[G.temp2] && (byte)(G.enemies_y[G.i] + 6) > G.enemies_y[G.temp2]) + if (G.item_x[G.i] == G.item_x[G.j] && G.item_y[G.i] == G.item_y[G.j]) { - G.enemies_x[G.temp2] = G.temp6; - G.enemies_y[G.temp2] = G.temp7; + retry = 1; + break; } + G.j++; } + if (retry == 0) G.i++; } - G.i++; - } - } - G.i = 0; - while (G.i < 8) - { - if (G.enemy_push_timer[G.i] != 0 && (G.frame & 3) != 0) - { - if ((G.frame & 1) != 0) + G.i = 0; + while (G.i < 4) + { + G.item_x[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); + G.item_y[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); + G.i++; + } + + G.player_carry[0] = 0xFF; + G.player_carry[1] = 0xFF; + G.item_placed[0] = 0; + G.item_placed[1] = 0; + G.item_placed[2] = 0; + G.item_placed[3] = 0; + G.player_god_mode[0] = 0; + G.player_god_mode[1] = 0; + + G.difficulty++; + if (G.difficulty == 1) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 1; } + else if (G.difficulty == 2) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 2; } + else if (G.difficulty == 4) { G.enemy_speed = 3; G.enemy_damage_modifier = 31; G.spawn_hp = 2; } + else if (G.difficulty == 6) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 3; } + else if (G.difficulty == 7) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 4; } + else if (G.difficulty == 8) { G.enemy_speed = 4; G.enemy_damage_modifier = 15; G.spawn_hp = 5; } + else if (G.difficulty == 9) { G.enemy_speed = 4; G.enemy_damage_modifier = 7; G.spawn_hp = 6; } + else if (G.difficulty >= 10) { G.enemy_speed = 5; G.enemy_damage_modifier = 7; G.spawn_hp = (byte)(6 + (G.difficulty - 10)); } + scroll(G.scr_x, G.scr_y); + G.spr = 0; + oam_clear(); + pal_all(paused_palette); + G.spr = oam_spr(100, 114, 0xF4, 0x01, G.spr); + G.spr = oam_spr(108, 114, 0xEA, 0x01, G.spr); + G.spr = oam_spr(116, 114, 0xF6, 0x01, G.spr); + G.spr = oam_spr(124, 114, 0xEA, 0x01, G.spr); + G.spr = oam_spr(132, 114, 0xF4, 0x01, G.spr); + if (G.difficulty < 10) + { + G.spr = oam_spr(148, 114, (byte)(0x04 + (G.difficulty << 1)), 0x01, G.spr); + } + else + { + G.spr = oam_spr(148, 114, (byte)(0x05 + (G.difficulty / 10)), 0x01, G.spr); + G.spr = oam_spr(156, 114, (byte)(0x04 + (G.difficulty % 10)), 0x01, G.spr); + } + G.spr = 0; + G.frame = 0; + while (true) { - G.enemy_push_timer[G.i]--; - G.temp6 = G.enemies_x[G.i]; - G.temp7 = G.enemies_y[G.i]; - if (G.enemy_push_dir[G.i] == (byte)PAD.LEFT) G.enemies_x[G.i] -= 2; - else if (G.enemy_push_dir[G.i] == (byte)PAD.RIGHT) G.enemies_x[G.i] += 2; - else if (G.enemy_push_dir[G.i] == (byte)PAD.UP) G.enemies_y[G.i] -= 2; - else if (G.enemy_push_dir[G.i] == (byte)PAD.DOWN) G.enemies_y[G.i] += 2; - if (isBlocked(G.enemies_x[G.i], G.enemies_y[G.i]) != 0) + ppu_wait_nmi(); + G.frame++; + if (G.frame > 100 && (G.frame == 255 || ((pad_trigger(0) | pad_trigger(1)) & (PAD.A | PAD.B | PAD.START)) != 0)) { - G.enemies_x[G.i] = G.temp6; - G.enemies_y[G.i] = G.temp7; + G.spr++; + break; } } + pal_all(palette); + G.spr = 0; + oam_clear(); } - G.temp5 = 0; - G.j = 0; - while (G.j < 2) + if (G.player_hp[0] == 0 || G.player_hp[1] == 0) { - if ((G.frame & G.enemy_damage_modifier) == 0) + sfx_play(4, 2); + G.difficulty = 0; + G.next_level = 0; + // [inlined: reset] + G.next_level = 0; + G.frame = 0; + G.player_dir[0] = (byte)PAD.UP; + G.player_dir[1] = (byte)PAD.UP; + G.player_hp[0] = 4; + G.player_hp[1] = 4; + G.scr_x = 128; + G.scr_y = 128; + G.player_x[0] = 120; + G.player_y[0] = 120; + G.player_x[1] = 136; + G.player_y[1] = 120; + G.player_attack_tick[0] = 0; + G.player_attack_tick[1] = 0; + G.enemies_enemy[0] = PLAYER_1; + G.enemies_enemy[1] = PLAYER_2; + G.enemies_enemy[2] = PLAYER_1; + G.enemies_enemy[3] = PLAYER_2; + G.enemies_enemy[4] = PLAYER_1; + G.enemies_enemy[5] = PLAYER_2; + G.enemies_enemy[6] = PLAYER_1; + G.enemies_enemy[7] = PLAYER_2; + G.i = 0; + while (G.i < 8) + { + G.enemies_health[G.i] = 1; + G.enemies_dir[G.i] = (byte)PAD.UP; + G.enemy_leg[G.i] = (byte)(G.i & 1); + G.enemies_type[G.i] = (byte)(G.i & 1); + G.i++; + } + G.enemy_spawn_points_x[0] = 184; + G.enemy_spawn_points_y[0] = 24; + G.enemy_spawn_points_x[1] = 232; + G.enemy_spawn_points_y[1] = 72; + G.enemy_spawn_points_x[2] = 232; + G.enemy_spawn_points_y[2] = 168; + G.enemy_spawn_points_x[3] = 184; + G.enemy_spawn_points_y[3] = 216; + G.enemy_spawn_points_x[4] = 72; + G.enemy_spawn_points_y[4] = 217; + G.enemy_spawn_points_x[5] = 24; + G.enemy_spawn_points_y[5] = 167; + G.enemy_spawn_points_x[6] = 24; + G.enemy_spawn_points_y[6] = 73; + G.enemy_spawn_points_x[7] = 72; + G.enemy_spawn_points_y[7] = 24; + G.i = 0; + while (G.i < 8) + { + G.enemies_x[G.i] = G.enemy_spawn_points_x[G.i]; + G.enemies_y[G.i] = G.enemy_spawn_points_y[G.i]; + G.enemy_push_timer[G.i] = 0; + G.i++; + } + G.item_type[0] = 1; + G.item_x[0] = 128; + G.item_y[0] = 88; + G.item_type[1] = 2; + G.item_x[1] = 128; + G.item_y[1] = 108; + G.item_type[2] = 3; + G.item_x[2] = 128; + G.item_y[2] = 128; + G.item_type[3] = 4; + G.item_x[3] = 128; + G.item_y[3] = 148; + + G.i = 0; + while (G.i < 4) { - if ((byte)(G.enemies_x[G.i] - 5) < G.player_x[G.j] && (byte)(G.enemies_x[G.i] + 5) > G.player_x[G.j]) + G.temp0 = (byte)(rand8() & 0xFE); + G.item_x[G.i] = (byte)(spawn[G.temp0] << 3); + G.item_y[G.i] = (byte)(spawn[G.temp0 + 1] << 3); + byte retry = 0; + G.j = 0; + while (G.j < G.i) { - if ((byte)(G.enemies_y[G.i] - 5) < G.player_y[G.j] && (byte)(G.enemies_y[G.i] + 5) > G.player_y[G.j]) + if (G.item_x[G.i] == G.item_x[G.j] && G.item_y[G.i] == G.item_y[G.j]) { - if (G.player_hp[G.j] != 0 && G.player_god_mode[G.j] == 0) - { - G.temp5 = 1; - G.player_hp[G.j]--; - G.player_god_mode[G.j] = 4; - sfx_play(0, 1); - } - if (G.player_hp[G.j] == 0 && G.enemies_enemy[G.i] == G.j) - { - G.enemies_enemy[G.i] = (byte)(1 - G.enemies_enemy[G.i]); - } + retry = 1; + break; } + G.j++; } + if (retry == 0) G.i++; + } + + G.i = 0; + while (G.i < 4) + { + G.item_x[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); + G.item_y[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); + G.i++; + } + + G.player_carry[0] = 0xFF; + G.player_carry[1] = 0xFF; + G.item_placed[0] = 0; + G.item_placed[1] = 0; + G.item_placed[2] = 0; + G.item_placed[3] = 0; + G.player_god_mode[0] = 0; + G.player_god_mode[1] = 0; + + G.difficulty++; + if (G.difficulty == 1) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 1; } + else if (G.difficulty == 2) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 2; } + else if (G.difficulty == 4) { G.enemy_speed = 3; G.enemy_damage_modifier = 31; G.spawn_hp = 2; } + else if (G.difficulty == 6) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 3; } + else if (G.difficulty == 7) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 4; } + else if (G.difficulty == 8) { G.enemy_speed = 4; G.enemy_damage_modifier = 15; G.spawn_hp = 5; } + else if (G.difficulty == 9) { G.enemy_speed = 4; G.enemy_damage_modifier = 7; G.spawn_hp = 6; } + else if (G.difficulty >= 10) { G.enemy_speed = 5; G.enemy_damage_modifier = 7; G.spawn_hp = (byte)(6 + (G.difficulty - 10)); } + scroll(G.scr_x, G.scr_y); + G.spr = 0; + oam_clear(); + pal_all(paused_palette); + G.spr = oam_spr(92, 114, 0xEE, 0x01, G.spr); + G.spr = oam_spr(100, 114, 0xE4, 0x01, G.spr); + G.spr = oam_spr(108, 114, 0xF0, 0x01, G.spr); + G.spr = oam_spr(116, 114, 0xEA, 0x01, G.spr); + G.spr = oam_spr(132, 114, 0x04, 0x01, G.spr); + G.spr = oam_spr(140, 114, 0xF6, 0x01, G.spr); + G.spr = oam_spr(148, 114, 0xEA, 0x01, G.spr); + G.spr = oam_spr(156, 114, 0xF2, 0x01, G.spr); + G.spr = 0; + G.frame = 0; + while (true) + { + ppu_wait_nmi(); + G.frame++; + if (G.frame == 255) G.spr++; + if (G.spr == 4 || (G.spr >= 1 && ((pad_trigger(0) | pad_trigger(1)) & (PAD.A | PAD.B | PAD.START)) != 0)) + break; } - G.j++; + pal_all(palette); + G.spr = 0; + oam_clear(); + break; } - G.int_temp0 = G.enemies_x[G.i]; - G.int_temp0 <<= 1; - G.int_temp0 -= G.scr_x; - if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } - G.temp0 = (byte)G.int_temp0; + G.temp1 = (byte)(pad_trigger(0) | pad_trigger(1)); + if ((G.temp1 & (byte)PAD.START) != 0) + { + G.spr = 0; + oam_clear(); + pal_all(paused_palette); + G.spr = oam_spr(104, 114, 0xE2, 0x01, G.spr); + G.spr = oam_spr(112, 114, 0xE4, 0x01, G.spr); + G.spr = oam_spr(120, 114, 0xE6, 0x01, G.spr); + G.spr = oam_spr(128, 114, 0xE8, 0x01, G.spr); + G.spr = oam_spr(136, 114, 0xEA, 0x01, G.spr); + G.spr = oam_spr(144, 114, 0xEC, 0x01, G.spr); + while ((pad_trigger(0) & PAD.START) == 0) + ppu_wait_nmi(); + pal_all(palette); + G.spr = 0; + oam_clear(); + } - G.int_temp0 = G.enemies_y[G.i]; + G.int_temp0 = 124; G.int_temp0 <<= 1; - G.int_temp0 -= G.scr_y; - if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } - G.temp1 = (byte)G.int_temp0; - - if ((G.enemy_push_timer[G.i] & 1) != 0) + G.int_temp0 -= G.scr_x; + if (G.int_temp0 >= 0 && G.int_temp0 <= 255) { - if (G.temp5 != 0) + G.temp0 = (byte)G.int_temp0; + G.int_temp0 = 116; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_y; + if (G.int_temp0 >= 0 && G.int_temp0 <= 255) { - if (G.enemies_type[G.i] == 0) + G.temp1 = (byte)G.int_temp0; + if ((G.frame & 8) != 0) { - if (G.enemies_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, spider_damaged_attack_up); - else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, spider_damaged_attack_down); - else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, spider_damaged_attack_left); - else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, spider_damaged_attack_right); + G.spr = oam_spr(G.temp0, (byte)(G.temp1 - 1), 0x66, 0x03, G.spr); + G.spr = oam_spr((byte)(G.temp0 + 8), (byte)(G.temp1 - 1), 0x68, 0x03, G.spr); } else { - if (G.enemies_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, bat_damaged_attack_up); - else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, bat_damaged_attack_down); - else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, bat_damaged_attack_left); - else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, bat_damaged_attack_right); - } - } - else - { - if (G.enemy_leg[G.i] != 0) - { - if (G.enemies_type[G.i] == 0) - { - if (G.enemies_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_up); - else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_down); - else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_left); - else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_right); - } - else - { - if (G.enemies_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_up); - else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_down); - else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_left); - else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_right); - } - } - else - { - if (G.enemies_type[G.i] == 0) - { - if (G.enemies_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_up); - else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_down); - else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_left); - else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_right); - } - else - { - if (G.enemies_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_up); - else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_down); - else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_left); - else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_right); - } + G.spr = oam_spr(G.temp0, (byte)(G.temp1 - 1), 0x6A, 0x03, G.spr); + G.spr = oam_spr((byte)(G.temp0 + 8), (byte)(G.temp1 - 1), 0x6C, 0x03, G.spr); } } } + + // [inlined: tick_players] + if (G.player_hp[0] >= 4) + { + G.spr = oam_spr(0x10, 0x10, 0x60, 0x00, G.spr); + G.spr = oam_spr(0x10, 0x20, 0x60, 0x00, G.spr); + } + else if (G.player_hp[0] == 3) + { + G.spr = oam_spr(0x10, 0x10, 0x62, 0x00, G.spr); + G.spr = oam_spr(0x10, 0x20, 0x60, 0x00, G.spr); + } + else if (G.player_hp[0] == 2) + { + G.spr = oam_spr(0x10, 0x10, 0x64, 0x00, G.spr); + G.spr = oam_spr(0x10, 0x20, 0x60, 0x00, G.spr); + } + else if (G.player_hp[0] == 1) + { + G.spr = oam_spr(0x10, 0x10, 0x64, 0x00, G.spr); + G.spr = oam_spr(0x10, 0x20, 0x62, 0x00, G.spr); + } + else + { + G.spr = oam_spr(0x10, 0x10, 0x64, 0x00, G.spr); + G.spr = oam_spr(0x10, 0x20, 0x64, 0x00, G.spr); + } + if (G.player_hp[1] >= 4) + { + G.spr = oam_spr(0xE8, 0x10, 0x60, 0x01, G.spr); + G.spr = oam_spr(0xE8, 0x20, 0x60, 0x01, G.spr); + } + else if (G.player_hp[1] == 3) + { + G.spr = oam_spr(0xE8, 0x10, 0x62, 0x01, G.spr); + G.spr = oam_spr(0xE8, 0x20, 0x60, 0x01, G.spr); + } + else if (G.player_hp[1] == 2) + { + G.spr = oam_spr(0xE8, 0x10, 0x64, 0x01, G.spr); + G.spr = oam_spr(0xE8, 0x20, 0x60, 0x01, G.spr); + } + else if (G.player_hp[1] == 1) + { + G.spr = oam_spr(0xE8, 0x10, 0x64, 0x01, G.spr); + G.spr = oam_spr(0xE8, 0x20, 0x62, 0x01, G.spr); + } else { - if (G.temp5 != 0) + G.spr = oam_spr(0xE8, 0x10, 0x64, 0x01, G.spr); + G.spr = oam_spr(0xE8, 0x20, 0x64, 0x01, G.spr); + } + + G.to_scroll_x = 0; + G.to_scroll_y = 0; + + G.i = 0; + while (G.i < 2) + { + if (G.player_god_mode[G.i] != 0) { - if (G.enemies_type[G.i] == 0) + if ((G.frame & 2) == 0) { - if (G.enemies_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, spider_attack_up); - else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, spider_attack_down); - else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, spider_attack_left); - else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, spider_attack_right); + G.player_god_mode[G.i]--; + pal_col((byte)(16 + (G.i << 2) + 3), palette[16 + (G.i << 2) + 3]); + pal_col((byte)(16 + (G.i << 2) + 1), palette[16 + (G.i << 2) + 1]); } else { - if (G.enemies_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, bat_attack_up); - else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, bat_attack_down); - else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, bat_attack_left); - else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, bat_attack_right); + pal_col((byte)(16 + (G.i << 2) + 3), 0x20); + pal_col((byte)(16 + (G.i << 2) + 1), 0x0D); } } - else + if (G.player_hp[G.i] == 0) { G.i++; continue; } + + G.int_temp0 = G.player_x[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_x; + G.temp0 = (byte)G.int_temp0; + + G.int_temp0 = G.player_y[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_y; + G.temp1 = (byte)G.int_temp0; + + G.temp2 = (byte)pad_poll(G.i); + + // [inlined: draw_player] + if (G.i == 0) { - if (G.enemy_leg[G.i] != 0) + if (G.player_carry[0] != 0xFF) { - if (G.enemies_type[G.i] == 0) + if ((G.temp2 & PAD_DPAD) != 0) { - if (G.enemies_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_up); - else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_down); - else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_left); - else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_right); + if (G.player_carry_dir[0] == (byte)PAD.UP) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_up); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_up); + } + else if (G.player_carry_dir[0] == (byte)PAD.DOWN) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_down); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_down); + } + else if (G.player_carry_dir[0] == (byte)PAD.LEFT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_left); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_left); + } + else if (G.player_carry_dir[0] == (byte)PAD.RIGHT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_right); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_right); + } } else { - if (G.enemies_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_up); - else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_down); - else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_left); - else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_right); + if (G.player_carry_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_up); + else if (G.player_carry_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_down); + else if (G.player_carry_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_left); + else if (G.player_carry_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_right); } } - else + else if (G.player_attack_tick[G.i] != 0) { - if (G.enemies_type[G.i] == 0) + if (G.player_dir[G.i] == (byte)PAD.UP) { - if (G.enemies_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_up); - else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_down); - else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_left); - else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_right); + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_up); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_up); } - else + else if (G.player_dir[G.i] == (byte)PAD.DOWN) { - if (G.enemies_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_up); - else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_down); - else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_left); - else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_right); + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_down); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_down); } + else if (G.player_dir[G.i] == (byte)PAD.LEFT) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_left); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_left); + } + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_right); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_right); + } + G.player_attack_tick[G.i]--; } - } - } - G.i++; - } -} - -void draw_player() -{ - if (G.i == 0) - { - if (G.player_carry[0] != 0xFF) - { - if ((G.temp2 & PAD_DPAD) != 0) - { - if (G.player_carry_dir[0] == (byte)PAD.UP) - { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_up); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_up); - } - else if (G.player_carry_dir[0] == (byte)PAD.DOWN) - { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_down); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_down); - } - else if (G.player_carry_dir[0] == (byte)PAD.LEFT) + else if ((G.temp2 & PAD_DPAD) != 0) { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_left); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_left); + if (G.player_dir[G.i] == (byte)PAD.UP) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_up); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_up); + } + else if (G.player_dir[G.i] == (byte)PAD.DOWN) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_down); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_down); + } + else if (G.player_dir[G.i] == (byte)PAD.LEFT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_left); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_left); + } + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_right); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_right); + } } - else if (G.player_carry_dir[0] == (byte)PAD.RIGHT) + else { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_right); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_right); + if (G.player_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_up); + else if (G.player_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_down); + else if (G.player_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_left); + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_right); } } - else - { - if (G.player_carry_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_up); - else if (G.player_carry_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_down); - else if (G.player_carry_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_left); - else if (G.player_carry_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_right); - } - } - else if (G.player_attack_tick[G.i] != 0) - { - if (G.player_dir[G.i] == (byte)PAD.UP) - { - if (G.player_attack_tick[G.i] > 8) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_up); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_up); - } - else if (G.player_dir[G.i] == (byte)PAD.DOWN) - { - if (G.player_attack_tick[G.i] > 8) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_down); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_down); - } - else if (G.player_dir[G.i] == (byte)PAD.LEFT) - { - if (G.player_attack_tick[G.i] > 8) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_left); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_left); - } - else if (G.player_dir[G.i] == (byte)PAD.RIGHT) - { - if (G.player_attack_tick[G.i] > 8) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_right); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_right); - } - G.player_attack_tick[G.i]--; - } - else if ((G.temp2 & PAD_DPAD) != 0) - { - if (G.player_dir[G.i] == (byte)PAD.UP) - { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_up); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_up); - } - else if (G.player_dir[G.i] == (byte)PAD.DOWN) - { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_down); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_down); - } - else if (G.player_dir[G.i] == (byte)PAD.LEFT) - { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_left); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_left); - } - else if (G.player_dir[G.i] == (byte)PAD.RIGHT) - { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_right); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_right); - } - } - else - { - if (G.player_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_up); - else if (G.player_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_down); - else if (G.player_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_left); - else if (G.player_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_right); - } - } - else if (G.i == 1) - { - if (G.player_carry[1] != 0xFF) - { - if ((G.temp2 & PAD_DPAD) != 0) + else if (G.i == 1) { - if (G.player_carry_dir[1] == (byte)PAD.UP) + if (G.player_carry[1] != 0xFF) { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_up); + if ((G.temp2 & PAD_DPAD) != 0) + { + if (G.player_carry_dir[1] == (byte)PAD.UP) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_up); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_up); + } + else if (G.player_carry_dir[1] == (byte)PAD.DOWN) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_down); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_down); + } + else if (G.player_carry_dir[1] == (byte)PAD.LEFT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_left); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_left); + } + else if (G.player_carry_dir[1] == (byte)PAD.RIGHT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_right); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_right); + } + } else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_up); + { + if (G.player_carry_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_up); + else if (G.player_carry_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_down); + else if (G.player_carry_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_left); + else if (G.player_carry_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_right); + } } - else if (G.player_carry_dir[1] == (byte)PAD.DOWN) + else if (G.player_attack_tick[G.i] != 0) { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_down); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_down); + if (G.player_dir[G.i] == (byte)PAD.UP) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_up); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_up); + } + else if (G.player_dir[G.i] == (byte)PAD.DOWN) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_down); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_down); + } + else if (G.player_dir[G.i] == (byte)PAD.LEFT) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_left); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_left); + } + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) + { + if (G.player_attack_tick[G.i] > 8) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_right); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_right); + } + G.player_attack_tick[G.i]--; } - else if (G.player_carry_dir[1] == (byte)PAD.LEFT) + else if ((G.temp2 & PAD_DPAD) != 0) { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_left); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_left); + if (G.player_dir[G.i] == (byte)PAD.UP) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_up); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_up); + } + else if (G.player_dir[G.i] == (byte)PAD.DOWN) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_down); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_down); + } + else if (G.player_dir[G.i] == (byte)PAD.LEFT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_left); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_left); + } + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) + { + if ((G.frame & 16) != 0) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_right); + else + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_right); + } } - else if (G.player_carry_dir[1] == (byte)PAD.RIGHT) + else { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_right); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_right); + if (G.player_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_up); + else if (G.player_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_down); + else if (G.player_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_left); + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_right); } } - else - { - if (G.player_carry_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_up); - else if (G.player_carry_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_down); - else if (G.player_carry_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_left); - else if (G.player_carry_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_right); - } - } - else if (G.player_attack_tick[G.i] != 0) - { - if (G.player_dir[G.i] == (byte)PAD.UP) - { - if (G.player_attack_tick[G.i] > 8) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_up); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_up); - } - else if (G.player_dir[G.i] == (byte)PAD.DOWN) - { - if (G.player_attack_tick[G.i] > 8) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_down); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_down); - } - else if (G.player_dir[G.i] == (byte)PAD.LEFT) + + if (G.temp0 < min_x && G.scr_x > 0) { - if (G.player_attack_tick[G.i] > 8) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_left); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_left); + G.to_scroll_x = (byte)((min_x - G.temp0) >> 1); + if (G.to_scroll_x > G.scr_x) + G.to_scroll_x = G.scr_x; + G.to_scroll_x_neg = 1; } - else if (G.player_dir[G.i] == (byte)PAD.RIGHT) + else if (G.temp0 > max_x && G.scr_x < 255) { - if (G.player_attack_tick[G.i] > 8) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_right); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_right); + G.to_scroll_x = (byte)((G.temp0 - max_x) >> 1); + if (G.to_scroll_x > (byte)(254 - G.scr_x)) + G.to_scroll_x = (byte)(254 - G.scr_x); + G.to_scroll_x_neg = 0; } - G.player_attack_tick[G.i]--; - } - else if ((G.temp2 & PAD_DPAD) != 0) - { - if (G.player_dir[G.i] == (byte)PAD.UP) + + if (G.temp1 < min_y && G.scr_y > 0) { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_up); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_up); + G.to_scroll_y = (byte)((min_y - G.temp1) >> 1); + if (G.to_scroll_y > G.scr_y) + G.to_scroll_y = G.scr_y; + G.to_scroll_y_neg = 1; } - else if (G.player_dir[G.i] == (byte)PAD.DOWN) + else if (G.temp1 > max_y && G.scr_y < 255) { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_down); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_down); + G.to_scroll_y = (byte)((G.temp1 - max_y) >> 1); + if (G.to_scroll_y > (byte)(238 - G.scr_y)) + G.to_scroll_y = (byte)(238 - G.scr_y); + G.to_scroll_y_neg = 0; } - else if (G.player_dir[G.i] == (byte)PAD.LEFT) + + if ((G.temp2 & (byte)PAD.B) != 0) { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_left); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_left); + if (G.player_carry[G.i] == 0xFF) + { + G.temp4 = G.player_x[G.i]; + G.temp5 = G.player_y[G.i]; + if (G.player_dir[G.i] == (byte)PAD.LEFT) G.temp4 -= 4; + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) G.temp4 += 4; + if (G.player_dir[G.i] == (byte)PAD.UP) G.temp5 -= 4; + else if (G.player_dir[G.i] == (byte)PAD.DOWN) G.temp5 += 2; + G.j = 0; + while (G.j < 4) + { + if (G.item_placed[G.j] == 0) + { + if ((byte)(G.item_x[G.j] - 4) < G.temp4 && (byte)(G.item_x[G.j] + 4) > G.temp4) + { + if ((byte)(G.item_y[G.j] - 5) < G.temp5 && (byte)(G.item_y[G.j] + 5) > G.temp5) + { + if (G.player_carry[(byte)(1 - G.i)] != G.j || G.player_carry_dir[(byte)(1 - G.i)] != G.player_dir[G.i]) + { + G.player_carry[G.i] = G.j; + G.player_carry_dir[G.i] = G.player_dir[G.i]; + sfx_play(5, 3); + } + } + } + } + G.j++; + } + } } - else if (G.player_dir[G.i] == (byte)PAD.RIGHT) + else { - if ((G.frame & 16) != 0) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_right); - else - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_right); + G.player_carry[G.i] = 0xFF; } - } - else - { - if (G.player_dir[G.i] == (byte)PAD.UP) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_up); - else if (G.player_dir[G.i] == (byte)PAD.DOWN) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_down); - else if (G.player_dir[G.i] == (byte)PAD.LEFT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_left); - else if (G.player_dir[G.i] == (byte)PAD.RIGHT) - G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_right); - } - } -} -void tick_players() -{ - if (G.player_hp[0] >= 4) - { - G.spr = oam_spr(0x10, 0x10, 0x60, 0x00, G.spr); - G.spr = oam_spr(0x10, 0x20, 0x60, 0x00, G.spr); - } - else if (G.player_hp[0] == 3) - { - G.spr = oam_spr(0x10, 0x10, 0x62, 0x00, G.spr); - G.spr = oam_spr(0x10, 0x20, 0x60, 0x00, G.spr); - } - else if (G.player_hp[0] == 2) - { - G.spr = oam_spr(0x10, 0x10, 0x64, 0x00, G.spr); - G.spr = oam_spr(0x10, 0x20, 0x60, 0x00, G.spr); - } - else if (G.player_hp[0] == 1) - { - G.spr = oam_spr(0x10, 0x10, 0x64, 0x00, G.spr); - G.spr = oam_spr(0x10, 0x20, 0x62, 0x00, G.spr); - } - else - { - G.spr = oam_spr(0x10, 0x10, 0x64, 0x00, G.spr); - G.spr = oam_spr(0x10, 0x20, 0x64, 0x00, G.spr); - } - if (G.player_hp[1] >= 4) - { - G.spr = oam_spr(0xE8, 0x10, 0x60, 0x01, G.spr); - G.spr = oam_spr(0xE8, 0x20, 0x60, 0x01, G.spr); - } - else if (G.player_hp[1] == 3) - { - G.spr = oam_spr(0xE8, 0x10, 0x62, 0x01, G.spr); - G.spr = oam_spr(0xE8, 0x20, 0x60, 0x01, G.spr); - } - else if (G.player_hp[1] == 2) - { - G.spr = oam_spr(0xE8, 0x10, 0x64, 0x01, G.spr); - G.spr = oam_spr(0xE8, 0x20, 0x60, 0x01, G.spr); - } - else if (G.player_hp[1] == 1) - { - G.spr = oam_spr(0xE8, 0x10, 0x64, 0x01, G.spr); - G.spr = oam_spr(0xE8, 0x20, 0x62, 0x01, G.spr); - } - else - { - G.spr = oam_spr(0xE8, 0x10, 0x64, 0x01, G.spr); - G.spr = oam_spr(0xE8, 0x20, 0x64, 0x01, G.spr); - } + if (G.player_attack_tick[G.i] < 3 && (G.temp2 & (byte)PAD.A) != 0) + G.player_attack_tick[G.i] = 16; - G.to_scroll_x = 0; - G.to_scroll_y = 0; + G.temp1 = (byte)(1 - G.i); - G.i = 0; - while (G.i < 2) - { - if (G.player_god_mode[G.i] != 0) - { - if ((G.frame & 2) == 0) + G.temp6 = 0; + if (G.player_carry[G.i] != 0xFF) { - G.player_god_mode[G.i]--; - pal_col((byte)(16 + (G.i << 2) + 3), palette[16 + (G.i << 2) + 3]); - pal_col((byte)(16 + (G.i << 2) + 1), palette[16 + (G.i << 2) + 1]); + G.temp6++; + if (G.player_carry[G.temp1] == G.player_carry[G.i]) + G.temp6++; } - else - { - pal_col((byte)(16 + (G.i << 2) + 3), 0x20); - pal_col((byte)(16 + (G.i << 2) + 1), 0x0D); - } - } - if (G.player_hp[G.i] == 0) { G.i++; continue; } - - G.int_temp0 = G.player_x[G.i]; - G.int_temp0 <<= 1; - G.int_temp0 -= G.scr_x; - G.temp0 = (byte)G.int_temp0; - - G.int_temp0 = G.player_y[G.i]; - G.int_temp0 <<= 1; - G.int_temp0 -= G.scr_y; - G.temp1 = (byte)G.int_temp0; - - G.temp2 = (byte)pad_poll(G.i); - - draw_player(); - - if (G.temp0 < min_x && G.scr_x > 0) - { - G.to_scroll_x = (byte)((min_x - G.temp0) >> 1); - if (G.to_scroll_x > G.scr_x) - G.to_scroll_x = G.scr_x; - G.to_scroll_x_neg = 1; - } - else if (G.temp0 > max_x && G.scr_x < 255) - { - G.to_scroll_x = (byte)((G.temp0 - max_x) >> 1); - if (G.to_scroll_x > (byte)(254 - G.scr_x)) - G.to_scroll_x = (byte)(254 - G.scr_x); - G.to_scroll_x_neg = 0; - } - if (G.temp1 < min_y && G.scr_y > 0) - { - G.to_scroll_y = (byte)((min_y - G.temp1) >> 1); - if (G.to_scroll_y > G.scr_y) - G.to_scroll_y = G.scr_y; - G.to_scroll_y_neg = 1; - } - else if (G.temp1 > max_y && G.scr_y < 255) - { - G.to_scroll_y = (byte)((G.temp1 - max_y) >> 1); - if (G.to_scroll_y > (byte)(238 - G.scr_y)) - G.to_scroll_y = (byte)(238 - G.scr_y); - G.to_scroll_y_neg = 0; - } - - if ((G.temp2 & (byte)PAD.B) != 0) - { - if (G.player_carry[G.i] == 0xFF) + if (G.temp6 == 2) { - G.temp4 = G.player_x[G.i]; - G.temp5 = G.player_y[G.i]; - if (G.player_dir[G.i] == (byte)PAD.LEFT) G.temp4 -= 4; - else if (G.player_dir[G.i] == (byte)PAD.RIGHT) G.temp4 += 4; - if (G.player_dir[G.i] == (byte)PAD.UP) G.temp5 -= 4; - else if (G.player_dir[G.i] == (byte)PAD.DOWN) G.temp5 += 2; - G.j = 0; - while (G.j < 4) + if (G.i == 0 && (G.frame & 3) == 0) { - if (G.item_placed[G.j] == 0) + G.temp2 = (byte)((byte)pad_poll(0) & (byte)pad_poll(1)); + if ((G.temp2 & (byte)PAD.LEFT) != 0) { - if ((byte)(G.item_x[G.j] - 4) < G.temp4 && (byte)(G.item_x[G.j] + 4) > G.temp4) + byte _ib_x3 = (byte)(G.player_x[0] - 1); byte _ib_y3 = G.player_y[0]; + byte _ib_result3; + // [inlined: isBlocked] + if (_ib_x3 > 122 && _ib_x3 < 134 && _ib_y3 > 114 && _ib_y3 < 125) + { + _ib_result3 = 1; + } + else if (_ib_x3 < 128) { - if ((byte)(G.item_y[G.j] - 5) < G.temp5 && (byte)(G.item_y[G.j] + 5) > G.temp5) + if (_ib_y3 < 120) { - if (G.player_carry[(byte)(1 - G.i)] != G.j || G.player_carry_dir[(byte)(1 - G.i)] != G.player_dir[G.i]) - { - G.player_carry[G.i] = G.j; - G.player_carry_dir[G.i] = G.player_dir[G.i]; - sfx_play(5, 3); - } + _ib_result3 = collision_top_left[(_ib_x3 >> 3) + ((_ib_y3 >> 3) << 4)]; + } + else + { + _ib_y3 -= 120; + _ib_result3 = collision_bottom_left[(_ib_x3 >> 3) + ((_ib_y3 >> 3) << 4)]; + } + } + else + { + _ib_x3 -= 128; + if (_ib_y3 < 120) + { + _ib_result3 = collision_top_right[(_ib_x3 >> 3) + ((_ib_y3 >> 3) << 4)]; + } + else + { + _ib_y3 -= 120; + _ib_result3 = collision_bottom_right[(_ib_x3 >> 3) + ((_ib_y3 >> 3) << 4)]; + } + } + byte _ib_x4 = (byte)(G.player_x[1] - 1); byte _ib_y4 = G.player_y[1]; + byte _ib_result4; + // [inlined: isBlocked] + if (_ib_x4 > 122 && _ib_x4 < 134 && _ib_y4 > 114 && _ib_y4 < 125) + { + _ib_result4 = 1; + } + else if (_ib_x4 < 128) + { + if (_ib_y4 < 120) + { + _ib_result4 = collision_top_left[(_ib_x4 >> 3) + ((_ib_y4 >> 3) << 4)]; + } + else + { + _ib_y4 -= 120; + _ib_result4 = collision_bottom_left[(_ib_x4 >> 3) + ((_ib_y4 >> 3) << 4)]; + } + } + else + { + _ib_x4 -= 128; + if (_ib_y4 < 120) + { + _ib_result4 = collision_top_right[(_ib_x4 >> 3) + ((_ib_y4 >> 3) << 4)]; + } + else + { + _ib_y4 -= 120; + _ib_result4 = collision_bottom_right[(_ib_x4 >> 3) + ((_ib_y4 >> 3) << 4)]; } } + if (_ib_result3 == 0 && _ib_result4 == 0) + { + G.player_x[0]--; + G.player_x[1]--; + G.item_x[G.player_carry[G.i]]--; + } + } + else if ((G.temp2 & (byte)PAD.RIGHT) != 0) + { + byte _ib_x5 = (byte)(G.player_x[0] + 1); byte _ib_y5 = G.player_y[0]; + byte _ib_result5; + // [inlined: isBlocked] + if (_ib_x5 > 122 && _ib_x5 < 134 && _ib_y5 > 114 && _ib_y5 < 125) + { + _ib_result5 = 1; + } + else if (_ib_x5 < 128) + { + if (_ib_y5 < 120) + { + _ib_result5 = collision_top_left[(_ib_x5 >> 3) + ((_ib_y5 >> 3) << 4)]; + } + else + { + _ib_y5 -= 120; + _ib_result5 = collision_bottom_left[(_ib_x5 >> 3) + ((_ib_y5 >> 3) << 4)]; + } + } + else + { + _ib_x5 -= 128; + if (_ib_y5 < 120) + { + _ib_result5 = collision_top_right[(_ib_x5 >> 3) + ((_ib_y5 >> 3) << 4)]; + } + else + { + _ib_y5 -= 120; + _ib_result5 = collision_bottom_right[(_ib_x5 >> 3) + ((_ib_y5 >> 3) << 4)]; + } + } + byte _ib_x6 = (byte)(G.player_x[1] + 1); byte _ib_y6 = G.player_y[1]; + byte _ib_result6; + // [inlined: isBlocked] + if (_ib_x6 > 122 && _ib_x6 < 134 && _ib_y6 > 114 && _ib_y6 < 125) + { + _ib_result6 = 1; + } + else if (_ib_x6 < 128) + { + if (_ib_y6 < 120) + { + _ib_result6 = collision_top_left[(_ib_x6 >> 3) + ((_ib_y6 >> 3) << 4)]; + } + else + { + _ib_y6 -= 120; + _ib_result6 = collision_bottom_left[(_ib_x6 >> 3) + ((_ib_y6 >> 3) << 4)]; + } + } + else + { + _ib_x6 -= 128; + if (_ib_y6 < 120) + { + _ib_result6 = collision_top_right[(_ib_x6 >> 3) + ((_ib_y6 >> 3) << 4)]; + } + else + { + _ib_y6 -= 120; + _ib_result6 = collision_bottom_right[(_ib_x6 >> 3) + ((_ib_y6 >> 3) << 4)]; + } + } + if (_ib_result5 == 0 && _ib_result6 == 0) + { + G.player_x[0]++; + G.player_x[1]++; + G.item_x[G.player_carry[G.i]]++; + } + } + if ((G.temp2 & (byte)PAD.UP) != 0) + { + byte _ib_x7 = G.player_x[0]; byte _ib_y7 = (byte)(G.player_y[0] - 1); + byte _ib_result7; + // [inlined: isBlocked] + if (_ib_x7 > 122 && _ib_x7 < 134 && _ib_y7 > 114 && _ib_y7 < 125) + { + _ib_result7 = 1; + } + else if (_ib_x7 < 128) + { + if (_ib_y7 < 120) + { + _ib_result7 = collision_top_left[(_ib_x7 >> 3) + ((_ib_y7 >> 3) << 4)]; + } + else + { + _ib_y7 -= 120; + _ib_result7 = collision_bottom_left[(_ib_x7 >> 3) + ((_ib_y7 >> 3) << 4)]; + } + } + else + { + _ib_x7 -= 128; + if (_ib_y7 < 120) + { + _ib_result7 = collision_top_right[(_ib_x7 >> 3) + ((_ib_y7 >> 3) << 4)]; + } + else + { + _ib_y7 -= 120; + _ib_result7 = collision_bottom_right[(_ib_x7 >> 3) + ((_ib_y7 >> 3) << 4)]; + } + } + byte _ib_x8 = G.player_x[1]; byte _ib_y8 = (byte)(G.player_y[1] - 1); + byte _ib_result8; + // [inlined: isBlocked] + if (_ib_x8 > 122 && _ib_x8 < 134 && _ib_y8 > 114 && _ib_y8 < 125) + { + _ib_result8 = 1; + } + else if (_ib_x8 < 128) + { + if (_ib_y8 < 120) + { + _ib_result8 = collision_top_left[(_ib_x8 >> 3) + ((_ib_y8 >> 3) << 4)]; + } + else + { + _ib_y8 -= 120; + _ib_result8 = collision_bottom_left[(_ib_x8 >> 3) + ((_ib_y8 >> 3) << 4)]; + } + } + else + { + _ib_x8 -= 128; + if (_ib_y8 < 120) + { + _ib_result8 = collision_top_right[(_ib_x8 >> 3) + ((_ib_y8 >> 3) << 4)]; + } + else + { + _ib_y8 -= 120; + _ib_result8 = collision_bottom_right[(_ib_x8 >> 3) + ((_ib_y8 >> 3) << 4)]; + } + } + if (_ib_result7 == 0 && _ib_result8 == 0) + { + G.player_y[0]--; + G.player_y[1]--; + G.item_y[G.player_carry[G.i]]--; + } + } + else if ((G.temp2 & (byte)PAD.DOWN) != 0) + { + byte _ib_x9 = G.player_x[0]; byte _ib_y9 = (byte)(G.player_y[0] + 1); + byte _ib_result9; + // [inlined: isBlocked] + if (_ib_x9 > 122 && _ib_x9 < 134 && _ib_y9 > 114 && _ib_y9 < 125) + { + _ib_result9 = 1; + } + else if (_ib_x9 < 128) + { + if (_ib_y9 < 120) + { + _ib_result9 = collision_top_left[(_ib_x9 >> 3) + ((_ib_y9 >> 3) << 4)]; + } + else + { + _ib_y9 -= 120; + _ib_result9 = collision_bottom_left[(_ib_x9 >> 3) + ((_ib_y9 >> 3) << 4)]; + } + } + else + { + _ib_x9 -= 128; + if (_ib_y9 < 120) + { + _ib_result9 = collision_top_right[(_ib_x9 >> 3) + ((_ib_y9 >> 3) << 4)]; + } + else + { + _ib_y9 -= 120; + _ib_result9 = collision_bottom_right[(_ib_x9 >> 3) + ((_ib_y9 >> 3) << 4)]; + } + } + byte _ib_x10 = G.player_x[1]; byte _ib_y10 = (byte)(G.player_y[1] + 1); + byte _ib_result10; + // [inlined: isBlocked] + if (_ib_x10 > 122 && _ib_x10 < 134 && _ib_y10 > 114 && _ib_y10 < 125) + { + _ib_result10 = 1; + } + else if (_ib_x10 < 128) + { + if (_ib_y10 < 120) + { + _ib_result10 = collision_top_left[(_ib_x10 >> 3) + ((_ib_y10 >> 3) << 4)]; + } + else + { + _ib_y10 -= 120; + _ib_result10 = collision_bottom_left[(_ib_x10 >> 3) + ((_ib_y10 >> 3) << 4)]; + } + } + else + { + _ib_x10 -= 128; + if (_ib_y10 < 120) + { + _ib_result10 = collision_top_right[(_ib_x10 >> 3) + ((_ib_y10 >> 3) << 4)]; + } + else + { + _ib_y10 -= 120; + _ib_result10 = collision_bottom_right[(_ib_x10 >> 3) + ((_ib_y10 >> 3) << 4)]; + } + } + if (_ib_result9 == 0 && _ib_result10 == 0) + { + G.player_y[0]++; + G.player_y[1]++; + G.item_y[G.player_carry[G.i]]++; + } } - G.j++; } } - } - else - { - G.player_carry[G.i] = 0xFF; - } - - if (G.player_attack_tick[G.i] < 3 && (G.temp2 & (byte)PAD.A) != 0) - G.player_attack_tick[G.i] = 16; - - G.temp1 = (byte)(1 - G.i); - - G.temp6 = 0; - if (G.player_carry[G.i] != 0xFF) - { - G.temp6++; - if (G.player_carry[G.temp1] == G.player_carry[G.i]) - G.temp6++; - } - - if (G.temp6 == 2) - { - if (G.i == 0 && (G.frame & 3) == 0) + else if ((G.temp6 == 0 || (G.frame & 7) == G.i) && (G.frame & 1) == G.i) { - G.temp2 = (byte)((byte)pad_poll(0) & (byte)pad_poll(1)); + if ((G.player_dir[G.i] & G.temp2) == 0) + { + if ((G.temp2 & (byte)PAD.LEFT) != 0) G.player_dir[G.i] = (byte)PAD.LEFT; + else if ((G.temp2 & (byte)PAD.RIGHT) != 0) G.player_dir[G.i] = (byte)PAD.RIGHT; + else if ((G.temp2 & (byte)PAD.DOWN) != 0) G.player_dir[G.i] = (byte)PAD.DOWN; + else if ((G.temp2 & (byte)PAD.UP) != 0) G.player_dir[G.i] = (byte)PAD.UP; + } + G.temp4 = G.player_x[G.i]; + G.temp5 = G.player_y[G.i]; + if ((G.temp2 & (byte)PAD.LEFT) != 0) { - if (isBlocked((byte)(G.player_x[0] - 1), G.player_y[0]) == 0 && isBlocked((byte)(G.player_x[1] - 1), G.player_y[1]) == 0) + if (G.player_hp[G.temp1] == 0 || G.player_x[G.temp1] < G.player_x[G.i] || (byte)(G.player_x[G.temp1] - G.player_x[G.i]) < 60) + G.player_x[G.i]--; + } + else if ((G.temp2 & (byte)PAD.RIGHT) != 0) + { + if (G.player_hp[G.temp1] == 0 || (G.player_x[G.i] < 250 && (G.player_x[G.temp1] > G.player_x[G.i] || (byte)(G.player_x[G.i] - G.player_x[G.temp1]) < 60))) + G.player_x[G.i]++; + } + + byte _ib_x11 = G.player_x[G.i]; byte _ib_y11 = G.player_y[G.i]; + byte _ib_result11; + // [inlined: isBlocked] + if (_ib_x11 > 122 && _ib_x11 < 134 && _ib_y11 > 114 && _ib_y11 < 125) + { + _ib_result11 = 1; + } + else if (_ib_x11 < 128) + { + if (_ib_y11 < 120) + { + _ib_result11 = collision_top_left[(_ib_x11 >> 3) + ((_ib_y11 >> 3) << 4)]; + } + else { - G.player_x[0]--; - G.player_x[1]--; - G.item_x[G.player_carry[G.i]]--; + _ib_y11 -= 120; + _ib_result11 = collision_bottom_left[(_ib_x11 >> 3) + ((_ib_y11 >> 3) << 4)]; } } - else if ((G.temp2 & (byte)PAD.RIGHT) != 0) + else { - if (isBlocked((byte)(G.player_x[0] + 1), G.player_y[0]) == 0 && isBlocked((byte)(G.player_x[1] + 1), G.player_y[1]) == 0) + _ib_x11 -= 128; + if (_ib_y11 < 120) { - G.player_x[0]++; - G.player_x[1]++; - G.item_x[G.player_carry[G.i]]++; + _ib_result11 = collision_top_right[(_ib_x11 >> 3) + ((_ib_y11 >> 3) << 4)]; + } + else + { + _ib_y11 -= 120; + _ib_result11 = collision_bottom_right[(_ib_x11 >> 3) + ((_ib_y11 >> 3) << 4)]; } } + if (_ib_result11 != 0) + G.player_x[G.i] = G.temp4; + else if (G.player_carry[G.i] != 0xFF) + G.item_x[G.player_carry[G.i]] += (byte)(G.player_x[G.i] - G.temp4); + if ((G.temp2 & (byte)PAD.UP) != 0) { - if (isBlocked(G.player_x[0], (byte)(G.player_y[0] - 1)) == 0 && isBlocked(G.player_x[1], (byte)(G.player_y[1] - 1)) == 0) + if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] < G.player_y[G.i] || (byte)(G.player_y[G.temp1] - G.player_y[G.i]) < 60) + G.player_y[G.i]--; + } + else if ((G.temp2 & (byte)PAD.DOWN) != 0) + { + if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] > G.player_y[G.i] || (byte)(G.player_y[G.i] - G.player_y[G.temp1]) < 60) + G.player_y[G.i]++; + } + + byte _ib_x12 = G.player_x[G.i]; byte _ib_y12 = G.player_y[G.i]; + byte _ib_result12; + // [inlined: isBlocked] + if (_ib_x12 > 122 && _ib_x12 < 134 && _ib_y12 > 114 && _ib_y12 < 125) + { + _ib_result12 = 1; + } + else if (_ib_x12 < 128) + { + if (_ib_y12 < 120) { - G.player_y[0]--; - G.player_y[1]--; - G.item_y[G.player_carry[G.i]]--; + _ib_result12 = collision_top_left[(_ib_x12 >> 3) + ((_ib_y12 >> 3) << 4)]; + } + else + { + _ib_y12 -= 120; + _ib_result12 = collision_bottom_left[(_ib_x12 >> 3) + ((_ib_y12 >> 3) << 4)]; } } - else if ((G.temp2 & (byte)PAD.DOWN) != 0) + else { - if (isBlocked(G.player_x[0], (byte)(G.player_y[0] + 1)) == 0 && isBlocked(G.player_x[1], (byte)(G.player_y[1] + 1)) == 0) + _ib_x12 -= 128; + if (_ib_y12 < 120) + { + _ib_result12 = collision_top_right[(_ib_x12 >> 3) + ((_ib_y12 >> 3) << 4)]; + } + else { - G.player_y[0]++; - G.player_y[1]++; - G.item_y[G.player_carry[G.i]]++; + _ib_y12 -= 120; + _ib_result12 = collision_bottom_right[(_ib_x12 >> 3) + ((_ib_y12 >> 3) << 4)]; } } + if (_ib_result12 != 0) + G.player_y[G.i] = G.temp5; + else if (G.player_carry[G.i] != 0xFF) + G.item_y[G.player_carry[G.i]] += (byte)(G.player_y[G.i] - G.temp5); } - } - else if ((G.temp6 == 0 || (G.frame & 7) == G.i) && (G.frame & 1) == G.i) - { - if ((G.player_dir[G.i] & G.temp2) == 0) - { - if ((G.temp2 & (byte)PAD.LEFT) != 0) G.player_dir[G.i] = (byte)PAD.LEFT; - else if ((G.temp2 & (byte)PAD.RIGHT) != 0) G.player_dir[G.i] = (byte)PAD.RIGHT; - else if ((G.temp2 & (byte)PAD.DOWN) != 0) G.player_dir[G.i] = (byte)PAD.DOWN; - else if ((G.temp2 & (byte)PAD.UP) != 0) G.player_dir[G.i] = (byte)PAD.UP; - } - G.temp4 = G.player_x[G.i]; - G.temp5 = G.player_y[G.i]; - - if ((G.temp2 & (byte)PAD.LEFT) != 0) - { - if (G.player_hp[G.temp1] == 0 || G.player_x[G.temp1] < G.player_x[G.i] || (byte)(G.player_x[G.temp1] - G.player_x[G.i]) < 60) - G.player_x[G.i]--; - } - else if ((G.temp2 & (byte)PAD.RIGHT) != 0) - { - if (G.player_hp[G.temp1] == 0 || (G.player_x[G.i] < 250 && (G.player_x[G.temp1] > G.player_x[G.i] || (byte)(G.player_x[G.i] - G.player_x[G.temp1]) < 60))) - G.player_x[G.i]++; - } - - if (isBlocked(G.player_x[G.i], G.player_y[G.i]) != 0) - G.player_x[G.i] = G.temp4; - else if (G.player_carry[G.i] != 0xFF) - G.item_x[G.player_carry[G.i]] += (byte)(G.player_x[G.i] - G.temp4); - if ((G.temp2 & (byte)PAD.UP) != 0) - { - if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] < G.player_y[G.i] || (byte)(G.player_y[G.temp1] - G.player_y[G.i]) < 60) - G.player_y[G.i]--; - } - else if ((G.temp2 & (byte)PAD.DOWN) != 0) + if (G.player_attack_tick[G.i] == 10) { - if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] > G.player_y[G.i] || (byte)(G.player_y[G.i] - G.player_y[G.temp1]) < 60) - G.player_y[G.i]++; + G.temp0 = G.player_x[G.i]; + G.temp1 = G.player_y[G.i]; + G.temp6 = 5; + G.temp7 = 5; + if (G.player_dir[G.i] == (byte)PAD.LEFT) { G.temp0 -= 4; G.temp6 = 8; } + else if (G.player_dir[G.i] == (byte)PAD.RIGHT) { G.temp0 += 4; G.temp6 = 8; } + if (G.player_dir[G.i] == (byte)PAD.UP) { G.temp1 -= 4; G.temp7 = 8; } + else if (G.player_dir[G.i] == (byte)PAD.DOWN) { G.temp1 += 3; G.temp7 = 8; } + G.dx = G.temp0; + G.dy = G.temp1; + byte _ib_x13 = G.temp0; byte _ib_y13 = G.temp1; + byte _ib_result13; + // [inlined: isBlocked] + if (_ib_x13 > 122 && _ib_x13 < 134 && _ib_y13 > 114 && _ib_y13 < 125) + { + _ib_result13 = 1; + } + else if (_ib_x13 < 128) + { + if (_ib_y13 < 120) + { + _ib_result13 = collision_top_left[(_ib_x13 >> 3) + ((_ib_y13 >> 3) << 4)]; + } + else + { + _ib_y13 -= 120; + _ib_result13 = collision_bottom_left[(_ib_x13 >> 3) + ((_ib_y13 >> 3) << 4)]; + } + } + else + { + _ib_x13 -= 128; + if (_ib_y13 < 120) + { + _ib_result13 = collision_top_right[(_ib_x13 >> 3) + ((_ib_y13 >> 3) << 4)]; + } + else + { + _ib_y13 -= 120; + _ib_result13 = collision_bottom_right[(_ib_x13 >> 3) + ((_ib_y13 >> 3) << 4)]; + } + } + if (_ib_result13 == 0) + { + // [inlined: took_damage] + G.j = 0; + while (G.j < 8) + { + if (G.enemies_health[G.j] == 0) + { + G.j++; + continue; + } + G.temp2 = G.enemies_x[G.j]; + G.temp3 = G.enemies_y[G.j]; + if (G.temp0 > G.temp2) + G.temp4 = (byte)(G.temp0 - G.temp2); + else + G.temp4 = (byte)(G.temp2 - G.temp0); + if (G.temp1 > G.temp3) + G.temp5 = (byte)(G.temp1 - G.temp3); + else + G.temp5 = (byte)(G.temp3 - G.temp1); + if (G.temp4 < G.temp6 && G.temp5 < G.temp7) + { + G.enemies_health[G.j]--; + if (G.enemies_health[G.j] != 0) + { + G.enemy_push_timer[G.j] = 4; + G.enemy_push_dir[G.j] = G.player_dir[G.i]; + } + else + { + sfx_play(1, 0); + } + break; + } + G.j++; + } + } } - - if (isBlocked(G.player_x[G.i], G.player_y[G.i]) != 0) - G.player_y[G.i] = G.temp5; - else if (G.player_carry[G.i] != 0xFF) - G.item_y[G.player_carry[G.i]] += (byte)(G.player_y[G.i] - G.temp5); - } - - if (G.player_attack_tick[G.i] == 10) - { - G.temp0 = G.player_x[G.i]; - G.temp1 = G.player_y[G.i]; - G.temp6 = 5; - G.temp7 = 5; - if (G.player_dir[G.i] == (byte)PAD.LEFT) { G.temp0 -= 4; G.temp6 = 8; } - else if (G.player_dir[G.i] == (byte)PAD.RIGHT) { G.temp0 += 4; G.temp6 = 8; } - if (G.player_dir[G.i] == (byte)PAD.UP) { G.temp1 -= 4; G.temp7 = 8; } - else if (G.player_dir[G.i] == (byte)PAD.DOWN) { G.temp1 += 3; G.temp7 = 8; } - G.dx = G.temp0; - G.dy = G.temp1; - if (isBlocked(G.temp0, G.temp1) == 0) - took_damage(); + G.i++; } - G.i++; - } - G.temp2 = 0; - G.i = 0; - while (G.i < 4) - { - if (G.item_placed[G.i] == 0) + G.temp2 = 0; + G.i = 0; + while (G.i < 4) { - if ((byte)(G.item_x[G.i] - item_target_x[G.i]) < 2 || (byte)(item_target_x[G.i] - G.item_x[G.i]) < 2) + if (G.item_placed[G.i] == 0) { - if ((byte)(G.item_y[G.i] - item_target_y[G.i]) < 2 || (byte)(item_target_y[G.i] - G.item_y[G.i]) < 2) + if ((byte)(G.item_x[G.i] - item_target_x[G.i]) < 2 || (byte)(item_target_x[G.i] - G.item_x[G.i]) < 2) { - G.item_placed[G.i] = 1; - G.item_x[G.i] = item_target_x[G.i]; - G.item_y[G.i] = item_target_y[G.i]; - if (G.player_carry[0] == G.i) G.player_carry[0] = 0xFF; - if (G.player_carry[1] == G.i) G.player_carry[1] = 0xFF; - sfx_play(2, 3); + if ((byte)(G.item_y[G.i] - item_target_y[G.i]) < 2 || (byte)(item_target_y[G.i] - G.item_y[G.i]) < 2) + { + G.item_placed[G.i] = 1; + G.item_x[G.i] = item_target_x[G.i]; + G.item_y[G.i] = item_target_y[G.i]; + if (G.player_carry[0] == G.i) G.player_carry[0] = 0xFF; + if (G.player_carry[1] == G.i) G.player_carry[1] = 0xFF; + sfx_play(2, 3); + } } } - } - if (G.item_placed[G.i] == 0) G.temp2 = 1; + if (G.item_placed[G.i] == 0) G.temp2 = 1; - G.int_temp0 = G.item_x[G.i]; - G.int_temp0 <<= 1; - G.int_temp0 -= G.scr_x; - if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } - G.temp0 = (byte)G.int_temp0; + G.int_temp0 = G.item_x[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_x; + if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } + G.temp0 = (byte)G.int_temp0; - G.int_temp0 = G.item_y[G.i]; - G.int_temp0 <<= 1; - G.int_temp0 -= G.scr_y; - if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } - G.temp1 = (byte)G.int_temp0; - - G.spr = oam_spr((byte)(G.temp0 - 4), (byte)(G.temp1 - 8), (byte)(0xC0 + (G.item_type[G.i] << 1)), 0x03, G.spr); - G.i++; - } - - if (G.temp2 == 0) G.next_level = 1; -} + G.int_temp0 = G.item_y[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_y; + if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } + G.temp1 = (byte)G.int_temp0; -void init() -{ - oam_size(1); - bank_spr(0); - bank_bg(1); - vram_adr(NAMETABLE_A); - vram_unrle(bg_top_left); - vram_adr(NAMETABLE_B); - vram_unrle(bg_top_right); - vram_adr(NAMETABLE_C); - vram_unrle(bg_bottom_left); - vram_adr(NAMETABLE_D); - vram_unrle(bg_bottom_right); - ppu_on_all(); - G.difficulty = 0; - G.next_level = 0; -} + G.spr = oam_spr((byte)(G.temp0 - 4), (byte)(G.temp1 - 8), (byte)(0xC0 + (G.item_type[G.i] << 1)), 0x03, G.spr); + G.i++; + } -void reset() -{ - G.next_level = 0; - G.frame = 0; - G.player_dir[0] = (byte)PAD.UP; - G.player_dir[1] = (byte)PAD.UP; - G.player_hp[0] = 4; - G.player_hp[1] = 4; - G.scr_x = 128; - G.scr_y = 128; - G.player_x[0] = 120; - G.player_y[0] = 120; - G.player_x[1] = 136; - G.player_y[1] = 120; - G.player_attack_tick[0] = 0; - G.player_attack_tick[1] = 0; - G.enemies_enemy[0] = PLAYER_1; - G.enemies_enemy[1] = PLAYER_2; - G.enemies_enemy[2] = PLAYER_1; - G.enemies_enemy[3] = PLAYER_2; - G.enemies_enemy[4] = PLAYER_1; - G.enemies_enemy[5] = PLAYER_2; - G.enemies_enemy[6] = PLAYER_1; - G.enemies_enemy[7] = PLAYER_2; - G.i = 0; - while (G.i < 8) - { - G.enemies_health[G.i] = 1; - G.enemies_dir[G.i] = (byte)PAD.UP; - G.enemy_leg[G.i] = (byte)(G.i & 1); - G.enemies_type[G.i] = (byte)(G.i & 1); - G.i++; - } - G.enemy_spawn_points_x[0] = 184; - G.enemy_spawn_points_y[0] = 24; - G.enemy_spawn_points_x[1] = 232; - G.enemy_spawn_points_y[1] = 72; - G.enemy_spawn_points_x[2] = 232; - G.enemy_spawn_points_y[2] = 168; - G.enemy_spawn_points_x[3] = 184; - G.enemy_spawn_points_y[3] = 216; - G.enemy_spawn_points_x[4] = 72; - G.enemy_spawn_points_y[4] = 217; - G.enemy_spawn_points_x[5] = 24; - G.enemy_spawn_points_y[5] = 167; - G.enemy_spawn_points_x[6] = 24; - G.enemy_spawn_points_y[6] = 73; - G.enemy_spawn_points_x[7] = 72; - G.enemy_spawn_points_y[7] = 24; - G.i = 0; - while (G.i < 8) - { - G.enemies_x[G.i] = G.enemy_spawn_points_x[G.i]; - G.enemies_y[G.i] = G.enemy_spawn_points_y[G.i]; - G.enemy_push_timer[G.i] = 0; - G.i++; - } - G.item_type[0] = 1; - G.item_x[0] = 128; - G.item_y[0] = 88; - G.item_type[1] = 2; - G.item_x[1] = 128; - G.item_y[1] = 108; - G.item_type[2] = 3; - G.item_x[2] = 128; - G.item_y[2] = 128; - G.item_type[3] = 4; - G.item_x[3] = 128; - G.item_y[3] = 148; - - G.i = 0; - while (G.i < 4) - { - G.temp0 = (byte)(rand8() & 0xFE); - G.item_x[G.i] = (byte)(spawn[G.temp0] << 3); - G.item_y[G.i] = (byte)(spawn[G.temp0 + 1] << 3); - byte retry = 0; - G.j = 0; - while (G.j < G.i) + if (G.temp2 == 0) G.next_level = 1; + // [inlined: tick_enemies] + G.temp4 = (byte)(rand8() & 7); + G.i = 0; + while (G.i < 8) { - if (G.item_x[G.i] == G.item_x[G.j] && G.item_y[G.i] == G.item_y[G.j]) + if (G.enemies_health[G.i] == 0 && (G.frame & 7) == G.i) { - retry = 1; - break; + G.enemies_x[G.i] = G.enemy_spawn_points_x[G.temp4]; + G.enemies_y[G.i] = G.enemy_spawn_points_y[G.temp4]; + G.enemy_push_timer[G.i] = 0; + G.enemies_health[G.i] = G.spawn_hp; + G.enemies_type[G.i] = (byte)(G.i & 1); + return; } - G.j++; + G.i++; } - if (retry == 0) G.i++; - } - - G.i = 0; - while (G.i < 4) - { - G.item_x[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); - G.item_y[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); - G.i++; - } - - G.player_carry[0] = 0xFF; - G.player_carry[1] = 0xFF; - G.item_placed[0] = 0; - G.item_placed[1] = 0; - G.item_placed[2] = 0; - G.item_placed[3] = 0; - G.player_god_mode[0] = 0; - G.player_god_mode[1] = 0; - - G.difficulty++; - if (G.difficulty == 1) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 1; } - else if (G.difficulty == 2) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 2; } - else if (G.difficulty == 4) { G.enemy_speed = 3; G.enemy_damage_modifier = 31; G.spawn_hp = 2; } - else if (G.difficulty == 6) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 3; } - else if (G.difficulty == 7) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 4; } - else if (G.difficulty == 8) { G.enemy_speed = 4; G.enemy_damage_modifier = 15; G.spawn_hp = 5; } - else if (G.difficulty == 9) { G.enemy_speed = 4; G.enemy_damage_modifier = 7; G.spawn_hp = 6; } - else if (G.difficulty >= 10) { G.enemy_speed = 5; G.enemy_damage_modifier = 7; G.spawn_hp = (byte)(6 + (G.difficulty - 10)); } - scroll(G.scr_x, G.scr_y); -} -init(); -oam_clear(); - -while (true) -{ - pal_all(paused_palette); - scroll(0, 0); - ppu_wait_nmi(); - - ppu_off(); - vram_adr(NAMETABLE_A); - vram_unrle(bg_menu); - ppu_on_all(); - pal_all(palette); - ppu_wait_nmi(); - ppu_wait_nmi(); + G.temp2 = (byte)(G.frame & 7); + G.enemy_leg[G.temp2] = (byte)(1 - G.enemy_leg[G.temp2]); + G.temp1 = G.enemies_enemy[G.temp2]; - while (true) - { - ppu_wait_nmi(); - G.spr = 0; - oam_clear(); - G.frame++; - if ((G.frame & 8) != 0) + G.temp6 = (byte)(rand8() & 3); + if (G.temp6 == 0) { - G.spr = oam_spr(120, 135, 0x66, 0x03, G.spr); - G.spr = oam_spr(128, 135, 0x68, 0x03, G.spr); + G.temp6 = (byte)(rand8() & 3); + if (G.temp6 == 0) G.temp3 = (byte)PAD.LEFT; + else if (G.temp6 == 1) G.temp3 = (byte)PAD.RIGHT; + else if (G.temp6 == 2) G.temp3 = (byte)PAD.UP; + else G.temp3 = (byte)PAD.DOWN; + } + else if (G.temp6 == 1) + { + G.temp3 = G.enemies_dir[G.temp2]; } else { - G.spr = oam_spr(120, 135, 0x6A, 0x03, G.spr); - G.spr = oam_spr(128, 135, 0x6C, 0x03, G.spr); + G.temp0 = (byte)(rand8() & 1); + if (G.temp0 != 0) + { + if (G.enemies_x[G.temp2] > G.player_x[G.temp1]) + G.temp3 = (byte)PAD.LEFT; + else + G.temp3 = (byte)PAD.RIGHT; + } + else + { + if (G.enemies_y[G.temp2] > G.player_y[G.temp1]) + G.temp3 = (byte)PAD.UP; + else + G.temp3 = (byte)PAD.DOWN; + } } - G.spr = oam_spr(0x60, 0xA4, 0xEA, 0x01, G.spr); - G.spr = oam_spr(0x70, 0xA4, 0xF0, 0x01, G.spr); - G.spr = oam_spr(0x78, 0xA4, 0xEA, 0x01, G.spr); - G.spr = oam_spr(0x80, 0xA4, 0xF2, 0x01, G.spr); - G.spr = oam_spr(0x88, 0xA4, 0xF8, 0x01, G.spr); - G.spr = oam_spr(0x90, 0xA4, 0xE4, 0x01, G.spr); - G.spr = oam_spr(0x98, 0xA4, 0xFA, 0x01, G.spr); - - G.spr = oam_spr(0x60, 0xB4, 0xEA, 0x01, G.spr); - G.spr = oam_spr(0x70, 0xB4, 0xFC, 0x01, G.spr); - G.spr = oam_spr(0x78, 0xB4, 0xEA, 0x01, G.spr); - G.spr = oam_spr(0x80, 0xB4, 0xFA, 0x01, G.spr); - G.spr = oam_spr(0x88, 0xB4, 0xFE, 0x01, G.spr); + G.enemies_dir[G.temp2] = G.temp3; + G.temp6 = G.enemies_x[G.temp2]; + G.temp7 = G.enemies_y[G.temp2]; - G.spr = oam_spr(0x60, 0xC4, 0xF0, 0x01, G.spr); - G.spr = oam_spr(0x70, 0xC4, 0xE0, 0x01, G.spr); - G.spr = oam_spr(0x78, 0xC4, 0x04, 0x01, G.spr); - G.spr = oam_spr(0x80, 0xC4, 0xF2, 0x01, G.spr); - G.spr = oam_spr(0x88, 0xC4, 0xE0, 0x01, G.spr); - G.spr = oam_spr(0x90, 0xC4, 0xF0, 0x01, G.spr); - G.spr = oam_spr(0x98, 0xC4, 0xE4, 0x01, G.spr); - G.spr = oam_spr(0xA0, 0xC4, 0x18, 0x01, G.spr); - - G.spr = oam_spr(0x60, 0xD4, 0xE6, 0x01, G.spr); - G.spr = oam_spr(0x70, 0xD4, 0x04, 0x01, G.spr); - G.spr = oam_spr(0x78, 0xD4, 0xF2, 0x01, G.spr); - G.spr = oam_spr(0x80, 0xD4, 0xF8, 0x01, G.spr); - G.spr = oam_spr(0x88, 0xD4, 0xE6, 0x01, G.spr); - G.spr = oam_spr(0x90, 0xD4, 0xFA, 0x01, G.spr); - - if (((pad_trigger(0) | pad_trigger(1)) & (PAD.A | PAD.B | PAD.START)) != 0) - break; - } - - G.spr = 0; - oam_clear(); - - pal_all(paused_palette); - ppu_wait_nmi(); - - ppu_off(); - vram_adr(NAMETABLE_A); - vram_unrle(bg_top_left); - ppu_on_all(); - - ppu_wait_nmi(); - - G.difficulty = 0; - G.next_level = 1; - - while (true) - { - ppu_wait_nmi(); - G.spr = 0; - oam_clear(); - - if (G.next_level != 0) + if (G.enemy_push_timer[G.temp2] != 0) { - sfx_play(3, 2); - reset(); - G.spr = 0; - oam_clear(); - pal_all(paused_palette); - G.spr = oam_spr(100, 114, 0xF4, 0x01, G.spr); - G.spr = oam_spr(108, 114, 0xEA, 0x01, G.spr); - G.spr = oam_spr(116, 114, 0xF6, 0x01, G.spr); - G.spr = oam_spr(124, 114, 0xEA, 0x01, G.spr); - G.spr = oam_spr(132, 114, 0xF4, 0x01, G.spr); - if (G.difficulty < 10) + } + else if (G.temp3 == (byte)PAD.RIGHT) + G.enemies_x[G.temp2] += G.enemy_speed; + else if (G.temp3 == (byte)PAD.LEFT) + G.enemies_x[G.temp2] -= G.enemy_speed; + else if (G.temp3 == (byte)PAD.UP) + G.enemies_y[G.temp2] -= G.enemy_speed; + else if (G.temp3 == (byte)PAD.DOWN) + G.enemies_y[G.temp2] += G.enemy_speed; + + byte _ib_x1 = G.enemies_x[G.temp2]; byte _ib_y1 = G.enemies_y[G.temp2]; + byte _ib_result1; + // [inlined: isBlocked] + if (_ib_x1 > 122 && _ib_x1 < 134 && _ib_y1 > 114 && _ib_y1 < 125) + { + _ib_result1 = 1; + } + else if (_ib_x1 < 128) + { + if (_ib_y1 < 120) { - G.spr = oam_spr(148, 114, (byte)(0x04 + (G.difficulty << 1)), 0x01, G.spr); + _ib_result1 = collision_top_left[(_ib_x1 >> 3) + ((_ib_y1 >> 3) << 4)]; } else { - G.spr = oam_spr(148, 114, (byte)(0x05 + (G.difficulty / 10)), 0x01, G.spr); - G.spr = oam_spr(156, 114, (byte)(0x04 + (G.difficulty % 10)), 0x01, G.spr); + _ib_y1 -= 120; + _ib_result1 = collision_bottom_left[(_ib_x1 >> 3) + ((_ib_y1 >> 3) << 4)]; } - G.spr = 0; - G.frame = 0; - while (true) + } + else + { + _ib_x1 -= 128; + if (_ib_y1 < 120) { - ppu_wait_nmi(); - G.frame++; - if (G.frame > 100 && (G.frame == 255 || ((pad_trigger(0) | pad_trigger(1)) & (PAD.A | PAD.B | PAD.START)) != 0)) + _ib_result1 = collision_top_right[(_ib_x1 >> 3) + ((_ib_y1 >> 3) << 4)]; + } + else + { + _ib_y1 -= 120; + _ib_result1 = collision_bottom_right[(_ib_x1 >> 3) + ((_ib_y1 >> 3) << 4)]; + } + } + G.temp5 = _ib_result1; + if (G.temp5 != 0) + { + G.enemies_x[G.temp2] = G.temp6; + G.enemies_y[G.temp2] = G.temp7; + } + else + { + G.i = 0; + while (G.i < 8) + { + if (G.temp2 != G.i) { - G.spr++; - break; + if ((byte)(G.enemies_x[G.i] - 6) < G.enemies_x[G.temp2] && (byte)(G.enemies_x[G.i] + 6) > G.enemies_x[G.temp2]) + { + if ((byte)(G.enemies_y[G.i] - 6) < G.enemies_y[G.temp2] && (byte)(G.enemies_y[G.i] + 6) > G.enemies_y[G.temp2]) + { + G.enemies_x[G.temp2] = G.temp6; + G.enemies_y[G.temp2] = G.temp7; + } + } } + G.i++; } - pal_all(palette); - G.spr = 0; - oam_clear(); } - if (G.player_hp[0] == 0 || G.player_hp[1] == 0) + G.i = 0; + while (G.i < 8) { - sfx_play(4, 2); - G.difficulty = 0; - G.next_level = 0; - reset(); - G.spr = 0; - oam_clear(); - pal_all(paused_palette); - G.spr = oam_spr(92, 114, 0xEE, 0x01, G.spr); - G.spr = oam_spr(100, 114, 0xE4, 0x01, G.spr); - G.spr = oam_spr(108, 114, 0xF0, 0x01, G.spr); - G.spr = oam_spr(116, 114, 0xEA, 0x01, G.spr); - G.spr = oam_spr(132, 114, 0x04, 0x01, G.spr); - G.spr = oam_spr(140, 114, 0xF6, 0x01, G.spr); - G.spr = oam_spr(148, 114, 0xEA, 0x01, G.spr); - G.spr = oam_spr(156, 114, 0xF2, 0x01, G.spr); - G.spr = 0; - G.frame = 0; - while (true) + if (G.enemy_push_timer[G.i] != 0 && (G.frame & 3) != 0) { - ppu_wait_nmi(); - G.frame++; - if (G.frame == 255) G.spr++; - if (G.spr == 4 || (G.spr >= 1 && ((pad_trigger(0) | pad_trigger(1)) & (PAD.A | PAD.B | PAD.START)) != 0)) - break; + if ((G.frame & 1) != 0) + { + G.enemy_push_timer[G.i]--; + G.temp6 = G.enemies_x[G.i]; + G.temp7 = G.enemies_y[G.i]; + if (G.enemy_push_dir[G.i] == (byte)PAD.LEFT) G.enemies_x[G.i] -= 2; + else if (G.enemy_push_dir[G.i] == (byte)PAD.RIGHT) G.enemies_x[G.i] += 2; + else if (G.enemy_push_dir[G.i] == (byte)PAD.UP) G.enemies_y[G.i] -= 2; + else if (G.enemy_push_dir[G.i] == (byte)PAD.DOWN) G.enemies_y[G.i] += 2; + byte _ib_x2 = G.enemies_x[G.i]; byte _ib_y2 = G.enemies_y[G.i]; + byte _ib_result2; + // [inlined: isBlocked] + if (_ib_x2 > 122 && _ib_x2 < 134 && _ib_y2 > 114 && _ib_y2 < 125) + { + _ib_result2 = 1; + } + else if (_ib_x2 < 128) + { + if (_ib_y2 < 120) + { + _ib_result2 = collision_top_left[(_ib_x2 >> 3) + ((_ib_y2 >> 3) << 4)]; + } + else + { + _ib_y2 -= 120; + _ib_result2 = collision_bottom_left[(_ib_x2 >> 3) + ((_ib_y2 >> 3) << 4)]; + } + } + else + { + _ib_x2 -= 128; + if (_ib_y2 < 120) + { + _ib_result2 = collision_top_right[(_ib_x2 >> 3) + ((_ib_y2 >> 3) << 4)]; + } + else + { + _ib_y2 -= 120; + _ib_result2 = collision_bottom_right[(_ib_x2 >> 3) + ((_ib_y2 >> 3) << 4)]; + } + } + if (_ib_result2 != 0) + { + G.enemies_x[G.i] = G.temp6; + G.enemies_y[G.i] = G.temp7; + } + } } - pal_all(palette); - G.spr = 0; - oam_clear(); - break; - } - G.temp1 = (byte)(pad_trigger(0) | pad_trigger(1)); - if ((G.temp1 & (byte)PAD.START) != 0) - { - G.spr = 0; - oam_clear(); - pal_all(paused_palette); - G.spr = oam_spr(104, 114, 0xE2, 0x01, G.spr); - G.spr = oam_spr(112, 114, 0xE4, 0x01, G.spr); - G.spr = oam_spr(120, 114, 0xE6, 0x01, G.spr); - G.spr = oam_spr(128, 114, 0xE8, 0x01, G.spr); - G.spr = oam_spr(136, 114, 0xEA, 0x01, G.spr); - G.spr = oam_spr(144, 114, 0xEC, 0x01, G.spr); - while ((pad_trigger(0) & PAD.START) == 0) - ppu_wait_nmi(); - pal_all(palette); - G.spr = 0; - oam_clear(); - } + G.temp5 = 0; + G.j = 0; + while (G.j < 2) + { + if ((G.frame & G.enemy_damage_modifier) == 0) + { + if ((byte)(G.enemies_x[G.i] - 5) < G.player_x[G.j] && (byte)(G.enemies_x[G.i] + 5) > G.player_x[G.j]) + { + if ((byte)(G.enemies_y[G.i] - 5) < G.player_y[G.j] && (byte)(G.enemies_y[G.i] + 5) > G.player_y[G.j]) + { + if (G.player_hp[G.j] != 0 && G.player_god_mode[G.j] == 0) + { + G.temp5 = 1; + G.player_hp[G.j]--; + G.player_god_mode[G.j] = 4; + sfx_play(0, 1); + } + if (G.player_hp[G.j] == 0 && G.enemies_enemy[G.i] == G.j) + { + G.enemies_enemy[G.i] = (byte)(1 - G.enemies_enemy[G.i]); + } + } + } + } + G.j++; + } - G.int_temp0 = 124; - G.int_temp0 <<= 1; - G.int_temp0 -= G.scr_x; - if (G.int_temp0 >= 0 && G.int_temp0 <= 255) - { + G.int_temp0 = G.enemies_x[G.i]; + G.int_temp0 <<= 1; + G.int_temp0 -= G.scr_x; + if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } G.temp0 = (byte)G.int_temp0; - G.int_temp0 = 116; + + G.int_temp0 = G.enemies_y[G.i]; G.int_temp0 <<= 1; G.int_temp0 -= G.scr_y; - if (G.int_temp0 >= 0 && G.int_temp0 <= 255) + if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; } + G.temp1 = (byte)G.int_temp0; + + if ((G.enemy_push_timer[G.i] & 1) != 0) { - G.temp1 = (byte)G.int_temp0; - if ((G.frame & 8) != 0) + if (G.temp5 != 0) { - G.spr = oam_spr(G.temp0, (byte)(G.temp1 - 1), 0x66, 0x03, G.spr); - G.spr = oam_spr((byte)(G.temp0 + 8), (byte)(G.temp1 - 1), 0x68, 0x03, G.spr); + if (G.enemies_type[G.i] == 0) + { + if (G.enemies_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, spider_damaged_attack_up); + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, spider_damaged_attack_down); + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, spider_damaged_attack_left); + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, spider_damaged_attack_right); + } + else + { + if (G.enemies_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, bat_damaged_attack_up); + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, bat_damaged_attack_down); + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, bat_damaged_attack_left); + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, bat_damaged_attack_right); + } } else { - G.spr = oam_spr(G.temp0, (byte)(G.temp1 - 1), 0x6A, 0x03, G.spr); - G.spr = oam_spr((byte)(G.temp0 + 8), (byte)(G.temp1 - 1), 0x6C, 0x03, G.spr); + if (G.enemy_leg[G.i] != 0) + { + if (G.enemies_type[G.i] == 0) + { + if (G.enemies_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_up); + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_down); + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_left); + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_right); + } + else + { + if (G.enemies_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_up); + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_down); + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_left); + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_right); + } + } + else + { + if (G.enemies_type[G.i] == 0) + { + if (G.enemies_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_up); + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_down); + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_left); + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_right); + } + else + { + if (G.enemies_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_up); + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_down); + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_left); + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_right); + } + } + } + } + else + { + if (G.temp5 != 0) + { + if (G.enemies_type[G.i] == 0) + { + if (G.enemies_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, spider_attack_up); + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, spider_attack_down); + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, spider_attack_left); + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, spider_attack_right); + } + else + { + if (G.enemies_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, bat_attack_up); + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, bat_attack_down); + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, bat_attack_left); + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, bat_attack_right); + } + } + else + { + if (G.enemy_leg[G.i] != 0) + { + if (G.enemies_type[G.i] == 0) + { + if (G.enemies_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_up); + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_down); + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_left); + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_right); + } + else + { + if (G.enemies_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_up); + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_down); + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_left); + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_right); + } + } + else + { + if (G.enemies_type[G.i] == 0) + { + if (G.enemies_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_up); + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_down); + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_left); + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_right); + } + else + { + if (G.enemies_dir[G.i] == (byte)PAD.UP) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_up); + else if (G.enemies_dir[G.i] == (byte)PAD.DOWN) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_down); + else if (G.enemies_dir[G.i] == (byte)PAD.LEFT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_left); + else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT) + G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_right); + } + } } } + G.i++; } - tick_players(); - tick_enemies(); - G.temp0 = 0; if (G.to_scroll_x != 0) { From df2157a78afbc9ef2c0e0e5aa1a462048e47a20a Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Fri, 20 Mar 2026 16:50:59 -0500 Subject: [PATCH 09/16] Evaluate constant-only compound oam_spr args at compile time When the backward scan produces a compound expression with no source variable (compoundLocalIdx < 0, compoundStaticFieldName null), evaluate the binary op at compile time instead of throwing. For example, 0 << N = 0, 0 | N = N, etc. Also emit the sample-level workarounds for crypto: - Rewrite compound array assignments to avoid ldelema Byte - Pre-compute division in oam_spr args - Comment out sfx_play (no 6502 subroutine) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Utilities/IL2NESWriter.OamSprites.cs | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/dotnes.tasks/Utilities/IL2NESWriter.OamSprites.cs b/src/dotnes.tasks/Utilities/IL2NESWriter.OamSprites.cs index e6078ae9..ddc72a31 100644 --- a/src/dotnes.tasks/Utilities/IL2NESWriter.OamSprites.cs +++ b/src/dotnes.tasks/Utilities/IL2NESWriter.OamSprites.cs @@ -309,16 +309,21 @@ or ILOpCode.And or ILOpCode.Or or ILOpCode.Xor } else { - // No source variable — this is a constant-only compound expression. - // Only safe for pure add-constant case; if a binary op is present, - // we can't evaluate it at compile time without the source operand. - if (arg.compoundBinOp != 0) + // No source variable — constant-only compound expression. + // Evaluate binary op at compile time: addConst + (0 BINOP binOpConst) + int inner = arg.compoundBinOp switch { - throw new TranspileException( - $"Unsupported constant-only compound oam_spr argument with binary op '{arg.compoundBinOp}'.", - MethodName); - } - int constResult = arg.compoundAddConst; + ILOpCode.Add => arg.compoundBinOpConst, + ILOpCode.Sub => -arg.compoundBinOpConst, + ILOpCode.Shl => 0, // 0 << N = 0 + ILOpCode.Shr or ILOpCode.Shr_un => 0, // 0 >> N = 0 + ILOpCode.And => 0, // 0 & N = 0 + ILOpCode.Or => arg.compoundBinOpConst, // 0 | N = N + ILOpCode.Xor => arg.compoundBinOpConst, // 0 ^ N = N + ILOpCode.Mul => 0, // 0 * N = 0 + _ => arg.compoundBinOpConst + }; + int constResult = arg.compoundAddConst + inner; Emit(Opcode.LDA, AddressMode.Immediate, (byte)(constResult & 0xFF)); goto emitDecspStore; } From da85faad7aaeb9998f32efdfde3dc4980f6f9146 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Fri, 20 Mar 2026 16:50:59 -0500 Subject: [PATCH 10/16] Apply sample workarounds for crypto transpilation - 36 compound array assignments rewritten as explicit read-modify-write - Division in oam_spr args pre-computed to temp variables - sfx_play calls commented out (no built-in subroutine) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- samples/crypto/Program.cs | 90 ++++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/samples/crypto/Program.cs b/samples/crypto/Program.cs index 107a89ba..a0405f98 100644 --- a/samples/crypto/Program.cs +++ b/samples/crypto/Program.cs @@ -646,7 +646,7 @@ if (G.next_level != 0) { - sfx_play(3, 2); + // sfx_play(3, 2); // [inlined: reset] G.next_level = 0; G.frame = 0; @@ -739,8 +739,8 @@ G.i = 0; while (G.i < 4) { - G.item_x[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); - G.item_y[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); + G.item_x[G.i] = (byte)(G.item_x[G.i] + 2 + (rand8() & 0x01) + (rand8() & 0x01)); + G.item_y[G.i] = (byte)(G.item_y[G.i] + 2 + (rand8() & 0x01) + (rand8() & 0x01)); G.i++; } @@ -777,8 +777,10 @@ } else { - G.spr = oam_spr(148, 114, (byte)(0x05 + (G.difficulty / 10)), 0x01, G.spr); - G.spr = oam_spr(156, 114, (byte)(0x04 + (G.difficulty % 10)), 0x01, G.spr); + G.temp0 = (byte)(G.difficulty / 10); + G.temp1 = (byte)(G.difficulty % 10); + G.spr = oam_spr(148, 114, (byte)(0x05 + G.temp0), 0x01, G.spr); + G.spr = oam_spr(156, 114, (byte)(0x04 + G.temp1), 0x01, G.spr); } G.spr = 0; G.frame = 0; @@ -799,7 +801,7 @@ if (G.player_hp[0] == 0 || G.player_hp[1] == 0) { - sfx_play(4, 2); + // sfx_play(4, 2); G.difficulty = 0; G.next_level = 0; // [inlined: reset] @@ -894,8 +896,8 @@ G.i = 0; while (G.i < 4) { - G.item_x[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); - G.item_y[G.i] += (byte)(2 + (rand8() & 0x01) + (rand8() & 0x01)); + G.item_x[G.i] = (byte)(G.item_x[G.i] + 2 + (rand8() & 0x01) + (rand8() & 0x01)); + G.item_y[G.i] = (byte)(G.item_y[G.i] + 2 + (rand8() & 0x01) + (rand8() & 0x01)); G.i++; } @@ -1051,7 +1053,7 @@ { if ((G.frame & 2) == 0) { - G.player_god_mode[G.i]--; + G.player_god_mode[G.i] = (byte)(G.player_god_mode[G.i] - 1); pal_col((byte)(16 + (G.i << 2) + 3), palette[16 + (G.i << 2) + 3]); pal_col((byte)(16 + (G.i << 2) + 1), palette[16 + (G.i << 2) + 1]); } @@ -1153,7 +1155,7 @@ else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_right); } - G.player_attack_tick[G.i]--; + G.player_attack_tick[G.i] = (byte)(G.player_attack_tick[G.i] - 1); } else if ((G.temp2 & PAD_DPAD) != 0) { @@ -1275,7 +1277,7 @@ else G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_right); } - G.player_attack_tick[G.i]--; + G.player_attack_tick[G.i] = (byte)(G.player_attack_tick[G.i] - 1); } else if ((G.temp2 & PAD_DPAD) != 0) { @@ -1374,7 +1376,7 @@ { G.player_carry[G.i] = G.j; G.player_carry_dir[G.i] = G.player_dir[G.i]; - sfx_play(5, 3); + // sfx_play(5, 3); } } } @@ -1474,9 +1476,9 @@ } if (_ib_result3 == 0 && _ib_result4 == 0) { - G.player_x[0]--; - G.player_x[1]--; - G.item_x[G.player_carry[G.i]]--; + G.player_x[0] = (byte)(G.player_x[0] - 1); + G.player_x[1] = (byte)(G.player_x[1] - 1); + G.item_x[G.player_carry[G.i]] = (byte)(G.item_x[G.player_carry[G.i]] - 1); } } else if ((G.temp2 & (byte)PAD.RIGHT) != 0) @@ -1547,9 +1549,9 @@ } if (_ib_result5 == 0 && _ib_result6 == 0) { - G.player_x[0]++; - G.player_x[1]++; - G.item_x[G.player_carry[G.i]]++; + G.player_x[0] = (byte)(G.player_x[0] + 1); + G.player_x[1] = (byte)(G.player_x[1] + 1); + G.item_x[G.player_carry[G.i]] = (byte)(G.item_x[G.player_carry[G.i]] + 1); } } if ((G.temp2 & (byte)PAD.UP) != 0) @@ -1620,9 +1622,9 @@ } if (_ib_result7 == 0 && _ib_result8 == 0) { - G.player_y[0]--; - G.player_y[1]--; - G.item_y[G.player_carry[G.i]]--; + G.player_y[0] = (byte)(G.player_y[0] - 1); + G.player_y[1] = (byte)(G.player_y[1] - 1); + G.item_y[G.player_carry[G.i]] = (byte)(G.item_y[G.player_carry[G.i]] - 1); } } else if ((G.temp2 & (byte)PAD.DOWN) != 0) @@ -1693,9 +1695,9 @@ } if (_ib_result9 == 0 && _ib_result10 == 0) { - G.player_y[0]++; - G.player_y[1]++; - G.item_y[G.player_carry[G.i]]++; + G.player_y[0] = (byte)(G.player_y[0] + 1); + G.player_y[1] = (byte)(G.player_y[1] + 1); + G.item_y[G.player_carry[G.i]] = (byte)(G.item_y[G.player_carry[G.i]] + 1); } } } @@ -1715,12 +1717,12 @@ if ((G.temp2 & (byte)PAD.LEFT) != 0) { if (G.player_hp[G.temp1] == 0 || G.player_x[G.temp1] < G.player_x[G.i] || (byte)(G.player_x[G.temp1] - G.player_x[G.i]) < 60) - G.player_x[G.i]--; + G.player_x[G.i] = (byte)(G.player_x[G.i] - 1); } else if ((G.temp2 & (byte)PAD.RIGHT) != 0) { if (G.player_hp[G.temp1] == 0 || (G.player_x[G.i] < 250 && (G.player_x[G.temp1] > G.player_x[G.i] || (byte)(G.player_x[G.i] - G.player_x[G.temp1]) < 60))) - G.player_x[G.i]++; + G.player_x[G.i] = (byte)(G.player_x[G.i] + 1); } byte _ib_x11 = G.player_x[G.i]; byte _ib_y11 = G.player_y[G.i]; @@ -1758,17 +1760,17 @@ if (_ib_result11 != 0) G.player_x[G.i] = G.temp4; else if (G.player_carry[G.i] != 0xFF) - G.item_x[G.player_carry[G.i]] += (byte)(G.player_x[G.i] - G.temp4); + G.item_x[G.player_carry[G.i]] = (byte)(G.item_x[G.player_carry[G.i]] + G.player_x[G.i] - G.temp4); if ((G.temp2 & (byte)PAD.UP) != 0) { if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] < G.player_y[G.i] || (byte)(G.player_y[G.temp1] - G.player_y[G.i]) < 60) - G.player_y[G.i]--; + G.player_y[G.i] = (byte)(G.player_y[G.i] - 1); } else if ((G.temp2 & (byte)PAD.DOWN) != 0) { if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] > G.player_y[G.i] || (byte)(G.player_y[G.i] - G.player_y[G.temp1]) < 60) - G.player_y[G.i]++; + G.player_y[G.i] = (byte)(G.player_y[G.i] + 1); } byte _ib_x12 = G.player_x[G.i]; byte _ib_y12 = G.player_y[G.i]; @@ -1806,7 +1808,7 @@ if (_ib_result12 != 0) G.player_y[G.i] = G.temp5; else if (G.player_carry[G.i] != 0xFF) - G.item_y[G.player_carry[G.i]] += (byte)(G.player_y[G.i] - G.temp5); + G.item_y[G.player_carry[G.i]] = (byte)(G.item_y[G.player_carry[G.i]] + G.player_y[G.i] - G.temp5); } if (G.player_attack_tick[G.i] == 10) @@ -1876,7 +1878,7 @@ G.temp5 = (byte)(G.temp3 - G.temp1); if (G.temp4 < G.temp6 && G.temp5 < G.temp7) { - G.enemies_health[G.j]--; + G.enemies_health[G.j] = (byte)(G.enemies_health[G.j] - 1); if (G.enemies_health[G.j] != 0) { G.enemy_push_timer[G.j] = 4; @@ -1884,7 +1886,7 @@ } else { - sfx_play(1, 0); + // sfx_play(1, 0); } break; } @@ -1910,7 +1912,7 @@ G.item_y[G.i] = item_target_y[G.i]; if (G.player_carry[0] == G.i) G.player_carry[0] = 0xFF; if (G.player_carry[1] == G.i) G.player_carry[1] = 0xFF; - sfx_play(2, 3); + // sfx_play(2, 3); } } } @@ -1994,13 +1996,13 @@ { } else if (G.temp3 == (byte)PAD.RIGHT) - G.enemies_x[G.temp2] += G.enemy_speed; + G.enemies_x[G.temp2] = (byte)(G.enemies_x[G.temp2] + G.enemy_speed); else if (G.temp3 == (byte)PAD.LEFT) - G.enemies_x[G.temp2] -= G.enemy_speed; + G.enemies_x[G.temp2] = (byte)(G.enemies_x[G.temp2] - G.enemy_speed); else if (G.temp3 == (byte)PAD.UP) - G.enemies_y[G.temp2] -= G.enemy_speed; + G.enemies_y[G.temp2] = (byte)(G.enemies_y[G.temp2] - G.enemy_speed); else if (G.temp3 == (byte)PAD.DOWN) - G.enemies_y[G.temp2] += G.enemy_speed; + G.enemies_y[G.temp2] = (byte)(G.enemies_y[G.temp2] + G.enemy_speed); byte _ib_x1 = G.enemies_x[G.temp2]; byte _ib_y1 = G.enemies_y[G.temp2]; byte _ib_result1; @@ -2067,13 +2069,13 @@ { if ((G.frame & 1) != 0) { - G.enemy_push_timer[G.i]--; + G.enemy_push_timer[G.i] = (byte)(G.enemy_push_timer[G.i] - 1); G.temp6 = G.enemies_x[G.i]; G.temp7 = G.enemies_y[G.i]; - if (G.enemy_push_dir[G.i] == (byte)PAD.LEFT) G.enemies_x[G.i] -= 2; - else if (G.enemy_push_dir[G.i] == (byte)PAD.RIGHT) G.enemies_x[G.i] += 2; - else if (G.enemy_push_dir[G.i] == (byte)PAD.UP) G.enemies_y[G.i] -= 2; - else if (G.enemy_push_dir[G.i] == (byte)PAD.DOWN) G.enemies_y[G.i] += 2; + if (G.enemy_push_dir[G.i] == (byte)PAD.LEFT) G.enemies_x[G.i] = (byte)(G.enemies_x[G.i] - 2); + else if (G.enemy_push_dir[G.i] == (byte)PAD.RIGHT) G.enemies_x[G.i] = (byte)(G.enemies_x[G.i] + 2); + else if (G.enemy_push_dir[G.i] == (byte)PAD.UP) G.enemies_y[G.i] = (byte)(G.enemies_y[G.i] - 2); + else if (G.enemy_push_dir[G.i] == (byte)PAD.DOWN) G.enemies_y[G.i] = (byte)(G.enemies_y[G.i] + 2); byte _ib_x2 = G.enemies_x[G.i]; byte _ib_y2 = G.enemies_y[G.i]; byte _ib_result2; // [inlined: isBlocked] @@ -2127,9 +2129,9 @@ if (G.player_hp[G.j] != 0 && G.player_god_mode[G.j] == 0) { G.temp5 = 1; - G.player_hp[G.j]--; + G.player_hp[G.j] = (byte)(G.player_hp[G.j] - 1); G.player_god_mode[G.j] = 4; - sfx_play(0, 1); + // sfx_play(0, 1); } if (G.player_hp[G.j] == 0 && G.enemies_enemy[G.i] == G.j) { From 630449bdc534b0c24b83642a95be6655fbb1391b Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Sat, 21 Mar 2026 10:48:51 -0500 Subject: [PATCH 11/16] Use jroatch CHR tileset for crypto sample background rendering The crypto game uses bank_bg(1) to put BG tiles at pattern table \. The previous chr_generic.s only had 4KB of tiles at \, leaving \ empty (black screen). Now uses the jroatch.chr tileset from 8bitworkshop (the tileset crypto.c was designed for) duplicated in both pattern table halves so sprites and backgrounds both render correctly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- samples/crypto/chr_generic.s | 515 ++++++++++++++++++++++++++++++++++- samples/crypto/crypto.csproj | 1 + 2 files changed, 514 insertions(+), 2 deletions(-) diff --git a/samples/crypto/chr_generic.s b/samples/crypto/chr_generic.s index 14da0444..ab2d2c16 100644 --- a/samples/crypto/chr_generic.s +++ b/samples/crypto/chr_generic.s @@ -1,4 +1,4 @@ -.segment "CHARS" +.segment "CHARS" .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 @@ -425,10 +425,522 @@ .byte $3C,$FC,$FC,$F0,$C0,$00,$00,$00 .byte $B0,$B0,$BF,$B0,$BF,$BF,$B0,$B0 .byte $E0,$E0,$E0,$FF,$EF,$E0,$E0,$E0 +.byte $00,$00,$00,$0C,$3E,$3E,$7B,$FB +.byte $00,$00,$00,$38,$7C,$7C,$FE,$FE .byte $0B,$0B,$FB,$0B,$FB,$FB,$0B,$0B .byte $0E,$0E,$0E,$FE,$F6,$0E,$0E,$0E +.byte $7B,$F3,$F3,$66,$7E,$3C,$00,$00 +.byte $FE,$FE,$7C,$7C,$38,$00,$00,$00 +.byte $00,$17,$0F,$1F,$12,$30,$08,$18 +.byte $00,$00,$00,$00,$0D,$0F,$07,$07 +.byte $0F,$1F,$1F,$13,$03,$0E,$0E,$0F +.byte $0F,$1F,$1F,$1C,$0C,$00,$0E,$0F +.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 +.byte $00,$00,$00,$00,$A0,$B0,$E0,$C0 +.byte $C0,$E0,$E0,$C0,$C0,$C0,$E0,$70 +.byte $C0,$E0,$E0,$20,$20,$00,$E0,$70 +.byte $00,$17,$0F,$1F,$12,$30,$08,$18 +.byte $00,$00,$00,$00,$0D,$0F,$07,$07 +.byte $1F,$1F,$0F,$0F,$3F,$7C,$30,$18 +.byte $1F,$3F,$3F,$00,$00,$60,$30,$18 +.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 +.byte $00,$00,$00,$00,$A0,$B0,$E0,$C0 +.byte $C0,$F0,$F8,$E4,$FC,$FC,$7C,$00 +.byte $CC,$FC,$F8,$04,$0C,$0C,$0C,$00 +.byte $00,$17,$0F,$1F,$12,$30,$08,$18 +.byte $00,$00,$00,$00,$0D,$0F,$07,$07 +.byte $0F,$1F,$1F,$13,$03,$0E,$0E,$0F +.byte $0F,$1F,$1F,$1C,$0C,$00,$0E,$0F +.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 +.byte $00,$00,$00,$00,$A0,$B0,$E0,$C0 +.byte $C0,$C0,$C0,$C0,$C0,$C0,$E0,$00 +.byte $C0,$C0,$E0,$20,$00,$C0,$E0,$00 +.byte $00,$00,$17,$0F,$1F,$12,$30,$08 +.byte $00,$00,$00,$00,$00,$0D,$0F,$07 +.byte $18,$1F,$0F,$0F,$3F,$7B,$43,$03 +.byte $07,$1F,$3F,$37,$20,$60,$43,$03 +.byte $00,$00,$C8,$F8,$F0,$40,$40,$00 +.byte $00,$00,$00,$00,$00,$A0,$B0,$E0 +.byte $00,$E0,$E0,$C0,$C0,$80,$80,$C0 +.byte $C0,$F8,$F8,$C0,$00,$00,$80,$C0 +.byte $00,$17,$0F,$1F,$12,$30,$08,$18 +.byte $00,$00,$00,$00,$0D,$0F,$07,$1F +.byte $3F,$3F,$0F,$7F,$7F,$7E,$40,$00 +.byte $3F,$7F,$6F,$60,$60,$60,$40,$00 +.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 +.byte $00,$00,$00,$00,$A0,$B0,$E0,$CC +.byte $D0,$F8,$F0,$C4,$FC,$FC,$7C,$00 +.byte $DC,$F8,$F0,$04,$0C,$0C,$0C,$00 +.byte $00,$17,$0F,$1F,$1F,$3F,$0F,$7F +.byte $00,$00,$00,$00,$00,$00,$30,$60 +.byte $7F,$3F,$1F,$0F,$0F,$0F,$0F,$0F +.byte $7F,$3F,$1F,$00,$00,$06,$0F,$0F +.byte $00,$E0,$F0,$FC,$FC,$FC,$FC,$FC +.byte $00,$18,$08,$04,$04,$00,$0C,$04 +.byte $F8,$F8,$F8,$F8,$F0,$00,$00,$00 +.byte $F8,$F8,$C0,$00,$70,$00,$00,$00 +.byte $00,$17,$0F,$1F,$1A,$19,$0A,$7C +.byte $00,$00,$00,$00,$05,$66,$65,$63 +.byte $7F,$3F,$4F,$7F,$7F,$7E,$00,$00 +.byte $7F,$3F,$4F,$60,$60,$60,$00,$00 +.byte $00,$E8,$F0,$F8,$58,$9C,$50,$38 +.byte $00,$00,$00,$00,$A0,$60,$A0,$C3 +.byte $FC,$FE,$F0,$E0,$F0,$F0,$E0,$70 +.byte $FF,$FE,$F0,$00,$00,$00,$E0,$70 +.byte $FF,$80,$80,$9F,$90,$97,$97,$97 +.byte $00,$7F,$7F,$7F,$7F,$7F,$7F,$7F +.byte $97,$97,$97,$97,$9F,$BF,$FF,$00 +.byte $7F,$7F,$7F,$78,$7F,$60,$40,$00 +.byte $FE,$02,$06,$FE,$0E,$FE,$FE,$FE +.byte $00,$FE,$FC,$F8,$F8,$E8,$E8,$E8 +.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$00 +.byte $E8,$E8,$E8,$08,$F8,$00,$00,$00 +.byte $00,$3F,$7F,$60,$6E,$72,$76,$76 +.byte $00,$00,$1F,$3F,$31,$2D,$29,$29 +.byte $7E,$60,$60,$7F,$7C,$7E,$3F,$00 +.byte $21,$3F,$3F,$38,$1B,$01,$00,$00 +.byte $00,$FC,$FE,$0E,$7E,$4E,$6E,$6E +.byte $00,$00,$F8,$FC,$8C,$B4,$94,$94 +.byte $7E,$0E,$0E,$FE,$3E,$7E,$FC,$00 +.byte $84,$FC,$FC,$1C,$D8,$80,$00,$00 +.byte $00,$7F,$7F,$60,$7F,$7F,$77,$76 +.byte $00,$00,$3F,$3F,$00,$20,$29,$29 +.byte $72,$6E,$60,$77,$7E,$3C,$1F,$00 +.byte $2D,$31,$3F,$3C,$19,$03,$00,$00 +.byte $00,$FE,$FE,$0E,$FE,$FE,$EE,$6E +.byte $00,$00,$FC,$FC,$00,$04,$94,$94 +.byte $4E,$7E,$0E,$EE,$7E,$3C,$F8,$00 +.byte $B4,$8C,$FC,$3C,$98,$C0,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA +.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55 +.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55 +.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA +.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC +.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33 +.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33 +.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC +.byte $3E,$7F,$7F,$7F,$7F,$7F,$7F,$3E +.byte $3C,$42,$5A,$52,$5A,$42,$3C,$00 +.byte $FE,$FF,$7F,$7B,$7B,$00,$00,$00 +.byte $F4,$4A,$52,$52,$00,$00,$00,$00 +.byte $0F,$0F,$0F,$3F,$7E,$7E,$7E,$3C +.byte $0E,$06,$0A,$38,$6C,$6C,$38,$00 +.byte $3C,$7E,$7E,$7E,$3C,$3C,$3C,$18 +.byte $38,$6C,$6C,$38,$10,$38,$10,$00 +.byte $18,$3C,$7E,$FF,$FF,$FF,$3C,$3C +.byte $10,$38,$7C,$FE,$EE,$10,$38,$00 +.byte $7E,$FF,$FF,$FF,$FF,$7E,$3C,$18 +.byte $6C,$FE,$FE,$FE,$7C,$38,$10,$00 +.byte $18,$3C,$7E,$FF,$FF,$7E,$3C,$18 +.byte $10,$38,$7C,$FE,$7C,$38,$10,$00 +.byte $3C,$7E,$7E,$FF,$FF,$FF,$3C,$3C +.byte $38,$7C,$38,$FE,$D6,$10,$38,$00 +.byte $18,$3C,$FF,$FF,$7E,$7E,$7E,$7E +.byte $10,$38,$FE,$7C,$38,$7C,$6C,$00 +.byte $0F,$1F,$7F,$FF,$FC,$FC,$FC,$78 +.byte $0A,$14,$72,$F8,$F8,$F8,$70,$00 +.byte $00,$00,$FF,$FF,$F6,$F6,$F6,$F6 +.byte $00,$00,$EE,$84,$E4,$24,$E4,$00 +.byte $00,$00,$FC,$FC,$FC,$FC,$FF,$FF +.byte $00,$00,$E8,$88,$E8,$28,$EE,$00 +.byte $18,$3C,$7E,$FF,$FF,$DB,$18,$18 +.byte $10,$38,$7C,$D6,$92,$10,$10,$00 +.byte $18,$18,$DB,$FF,$FF,$7E,$3C,$18 +.byte $10,$10,$92,$D6,$7C,$38,$10,$00 +.byte $1C,$3C,$78,$FF,$FF,$78,$3C,$1C +.byte $18,$30,$60,$FE,$60,$30,$18,$00 +.byte $38,$3C,$1E,$FF,$FF,$1E,$3C,$38 +.byte $30,$18,$0C,$FE,$0C,$18,$30,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $3C,$3C,$3C,$38,$38,$38,$38,$38 +.byte $38,$38,$30,$30,$30,$00,$30,$00 +.byte $3C,$3C,$3C,$3C,$00,$00,$00,$00 +.byte $28,$28,$28,$00,$00,$00,$00,$00 +.byte $00,$3C,$7E,$7E,$7E,$7E,$3C,$00 +.byte $00,$28,$7C,$28,$7C,$28,$00,$00 +.byte $0C,$3F,$3F,$3E,$3E,$7E,$7E,$18 +.byte $08,$3E,$28,$3C,$14,$7C,$10,$00 +.byte $00,$76,$7E,$7C,$3E,$7E,$6E,$00 +.byte $00,$64,$48,$10,$24,$4C,$00,$00 +.byte $00,$38,$7C,$7C,$7E,$7E,$7E,$3E +.byte $00,$30,$48,$30,$5C,$48,$34,$00 +.byte $30,$30,$70,$60,$00,$00,$00,$00 +.byte $20,$20,$40,$00,$00,$00,$00,$00 +.byte $0E,$1E,$3C,$38,$38,$3C,$1E,$0E +.byte $0C,$18,$30,$30,$30,$18,$0C,$00 +.byte $70,$78,$3C,$1C,$1C,$3C,$78,$70 +.byte $60,$30,$18,$18,$18,$30,$60,$00 +.byte $00,$00,$3E,$3E,$3E,$3E,$00,$00 +.byte $00,$00,$3C,$18,$3C,$00,$00,$00 +.byte $00,$18,$18,$7E,$7E,$18,$18,$00 +.byte $00,$10,$10,$7C,$10,$10,$00,$00 +.byte $00,$00,$00,$00,$38,$38,$78,$70 +.byte $00,$00,$00,$00,$30,$30,$60,$00 +.byte $00,$00,$00,$3E,$3E,$00,$00,$00 +.byte $00,$00,$00,$3C,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$38,$38,$38 +.byte $00,$00,$00,$00,$00,$30,$30,$00 +.byte $06,$0E,$0E,$1C,$1C,$38,$38,$30 +.byte $04,$0C,$08,$18,$10,$30,$20,$00 +.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3C +.byte $38,$6C,$6C,$6C,$6C,$6C,$38,$00 +.byte $1C,$3C,$3C,$1C,$1C,$1C,$1C,$1C +.byte $18,$38,$18,$18,$18,$18,$18,$00 +.byte $3C,$7E,$7E,$3E,$7C,$7E,$7E,$7E +.byte $38,$6C,$0C,$38,$60,$6C,$7C,$00 +.byte $3C,$7E,$7E,$3E,$3E,$7E,$7E,$3C +.byte $38,$6C,$0C,$38,$0C,$6C,$38,$00 +.byte $7E,$7E,$7E,$7E,$7E,$0E,$0E,$0E +.byte $6C,$6C,$6C,$7C,$0C,$0C,$0C,$00 +.byte $7E,$7E,$7E,$7C,$7E,$7E,$7E,$3C +.byte $7C,$6C,$60,$78,$0C,$6C,$38,$00 +.byte $3C,$7E,$7E,$7C,$7E,$7E,$7E,$3C +.byte $38,$6C,$60,$78,$6C,$6C,$38,$00 +.byte $7E,$7E,$7E,$7E,$0E,$0E,$0E,$0E +.byte $7C,$6C,$6C,$0C,$0C,$0C,$0C,$00 +.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3C +.byte $38,$6C,$6C,$38,$6C,$6C,$38,$00 +.byte $3C,$7E,$7E,$7E,$3E,$7E,$7E,$3C +.byte $38,$6C,$6C,$3C,$0C,$6C,$38,$00 +.byte $00,$38,$38,$38,$38,$38,$38,$00 +.byte $00,$30,$30,$00,$30,$30,$00,$00 +.byte $00,$38,$38,$38,$38,$38,$78,$70 +.byte $00,$30,$30,$00,$30,$30,$60,$00 +.byte $0E,$1E,$3C,$78,$78,$3C,$1E,$0E +.byte $0C,$18,$30,$60,$30,$18,$0C,$00 +.byte $00,$00,$3E,$3E,$3E,$3E,$00,$00 +.byte $00,$00,$3C,$00,$3C,$00,$00,$00 +.byte $70,$78,$3C,$1E,$1E,$3C,$78,$70 +.byte $60,$30,$18,$0C,$18,$30,$60,$00 +.byte $3C,$7E,$7E,$1E,$3C,$38,$38,$38 +.byte $38,$6C,$0C,$18,$30,$00,$30,$00 +.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3E +.byte $38,$44,$5C,$54,$5C,$40,$3C,$00 +.byte $3E,$7F,$77,$7F,$7F,$77,$77,$77 +.byte $3C,$66,$66,$7E,$66,$66,$66,$00 +.byte $7E,$7F,$77,$7F,$7F,$77,$7F,$7E +.byte $7C,$66,$66,$7C,$66,$66,$7C,$00 +.byte $3E,$7F,$77,$70,$70,$77,$7F,$3E +.byte $3C,$66,$60,$60,$60,$66,$3C,$00 +.byte $7C,$7E,$7F,$77,$77,$7F,$7E,$7C +.byte $78,$6C,$66,$66,$66,$6C,$78,$00 +.byte $7F,$7F,$70,$7F,$7F,$70,$7F,$7F +.byte $7E,$60,$60,$7E,$60,$60,$7E,$00 +.byte $7F,$7F,$70,$7C,$7C,$70,$70,$70 +.byte $7E,$60,$60,$78,$60,$60,$60,$00 +.byte $3E,$7F,$77,$7F,$7F,$77,$7F,$3E +.byte $3C,$66,$60,$6E,$66,$66,$3C,$00 +.byte $77,$77,$77,$7F,$7F,$77,$77,$77 +.byte $66,$66,$66,$7E,$66,$66,$66,$00 +.byte $7F,$7F,$1C,$1C,$1C,$1C,$7F,$7F +.byte $7E,$18,$18,$18,$18,$18,$7E,$00 +.byte $07,$07,$07,$07,$77,$77,$7F,$3E +.byte $06,$06,$06,$06,$66,$66,$3C,$00 +.byte $77,$7F,$7E,$7C,$7C,$7E,$7F,$77 +.byte $66,$6C,$78,$70,$78,$6C,$66,$00 +.byte $70,$70,$70,$70,$70,$70,$7F,$7F +.byte $60,$60,$60,$60,$60,$60,$7E,$00 +.byte $FE,$FF,$FF,$FF,$FF,$E7,$E7,$E7 +.byte $EC,$FE,$D6,$D6,$C6,$C6,$C6,$00 +.byte $77,$7F,$7F,$7F,$7F,$7F,$77,$77 +.byte $66,$76,$7E,$7E,$6E,$66,$66,$00 +.byte $3E,$7F,$77,$77,$77,$77,$7F,$3E +.byte $3C,$66,$66,$66,$66,$66,$3C,$00 +.byte $7E,$7F,$77,$7F,$7E,$70,$70,$70 +.byte $7C,$66,$66,$7C,$60,$60,$60,$00 +.byte $3E,$7F,$77,$77,$77,$7F,$7F,$3F +.byte $3C,$66,$66,$66,$66,$6C,$3E,$00 +.byte $7E,$7F,$77,$7F,$7E,$7E,$7F,$77 +.byte $7C,$66,$66,$7C,$78,$6C,$66,$00 +.byte $3E,$7F,$77,$7E,$3F,$77,$7F,$3E +.byte $3C,$66,$60,$3C,$06,$66,$3C,$00 +.byte $7F,$7F,$1C,$1C,$1C,$1C,$1C,$1C +.byte $7E,$18,$18,$18,$18,$18,$18,$00 +.byte $77,$77,$77,$77,$77,$77,$7F,$3E +.byte $66,$66,$66,$66,$66,$66,$3C,$00 +.byte $77,$77,$77,$77,$7F,$3E,$3E,$1C +.byte $66,$66,$66,$66,$3C,$3C,$18,$00 +.byte $E7,$E7,$FF,$FF,$FF,$FF,$FF,$7E +.byte $C6,$C6,$D6,$D6,$D6,$FE,$6C,$00 +.byte $77,$77,$7F,$3E,$3E,$7F,$77,$77 +.byte $66,$66,$3C,$18,$3C,$66,$66,$00 +.byte $77,$77,$77,$7F,$3E,$1C,$1C,$1C +.byte $66,$66,$66,$3C,$18,$18,$18,$00 +.byte $7F,$7F,$0F,$1E,$3C,$78,$7F,$7F +.byte $7E,$06,$0C,$18,$30,$60,$7E,$00 +.byte $1F,$1F,$1C,$1C,$1C,$1C,$1F,$1F +.byte $1E,$18,$18,$18,$18,$18,$1E,$00 +.byte $30,$38,$38,$1C,$1C,$0E,$0E,$06 +.byte $20,$30,$10,$18,$08,$0C,$04,$00 +.byte $F8,$F8,$38,$38,$38,$38,$F8,$F8 +.byte $F0,$30,$30,$30,$30,$30,$F0,$00 +.byte $18,$3C,$7E,$7E,$00,$00,$00,$00 +.byte $10,$38,$6C,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$7F,$7F +.byte $00,$00,$00,$00,$00,$00,$7E,$00 +.byte $30,$30,$38,$18,$00,$00,$00,$00 +.byte $20,$20,$10,$00,$00,$00,$00,$00 +.byte $00,$00,$3C,$3E,$3E,$7E,$7E,$3E +.byte $00,$00,$38,$0C,$3C,$4C,$34,$00 +.byte $70,$70,$7C,$7E,$7E,$7E,$7E,$7C +.byte $60,$60,$78,$6C,$6C,$6C,$78,$00 +.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3C +.byte $00,$00,$38,$6C,$60,$6C,$38,$00 +.byte $0E,$0E,$3E,$7E,$7E,$7E,$7E,$3E +.byte $0C,$0C,$3C,$6C,$6C,$6C,$3C,$00 +.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3E +.byte $00,$00,$38,$64,$7C,$60,$3C,$00 +.byte $00,$3C,$7E,$7E,$7C,$7C,$70,$70 +.byte $00,$38,$6C,$60,$78,$60,$60,$00 +.byte $00,$00,$3E,$7E,$7E,$3E,$7E,$7C +.byte $00,$00,$3C,$6C,$3C,$0C,$78,$00 +.byte $70,$70,$7C,$7E,$7E,$7E,$7E,$7E +.byte $60,$60,$78,$6C,$6C,$6C,$6C,$00 +.byte $00,$1C,$1C,$1C,$1C,$1C,$1C,$1C +.byte $00,$18,$00,$18,$18,$18,$18,$00 +.byte $00,$0E,$0E,$0E,$0E,$7E,$7E,$3C +.byte $00,$0C,$00,$0C,$0C,$6C,$38,$00 +.byte $70,$70,$7E,$7E,$7C,$7C,$7E,$7E +.byte $60,$60,$6C,$78,$70,$78,$6C,$00 +.byte $3C,$3C,$1C,$1C,$1C,$1C,$1C,$1C +.byte $38,$18,$18,$18,$18,$18,$18,$00 +.byte $00,$00,$7E,$7F,$7F,$7F,$77,$77 +.byte $00,$00,$6C,$7E,$56,$66,$66,$00 +.byte $00,$00,$7C,$7E,$7E,$7E,$7E,$7E +.byte $00,$00,$78,$6C,$6C,$6C,$6C,$00 +.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3C +.byte $00,$00,$38,$6C,$6C,$6C,$38,$00 +.byte $00,$00,$7C,$7E,$7E,$7C,$70,$70 +.byte $00,$00,$78,$6C,$78,$60,$60,$00 +.byte $00,$00,$3E,$7E,$7E,$3E,$0E,$0E +.byte $00,$00,$3C,$6C,$3C,$0C,$0C,$00 +.byte $00,$00,$7C,$7E,$7E,$70,$70,$70 +.byte $00,$00,$78,$6C,$60,$60,$60,$00 +.byte $00,$00,$3E,$7E,$7C,$3E,$7E,$7C +.byte $00,$00,$3C,$60,$38,$0C,$78,$00 +.byte $00,$1C,$3E,$3E,$1C,$1C,$1E,$0E +.byte $00,$18,$3C,$18,$18,$18,$0C,$00 +.byte $00,$00,$7E,$7E,$7E,$7E,$7E,$3E +.byte $00,$00,$6C,$6C,$6C,$6C,$34,$00 +.byte $00,$00,$7E,$7E,$7E,$7E,$3E,$1C +.byte $00,$00,$6C,$6C,$6C,$3C,$18,$00 +.byte $00,$00,$E7,$E7,$FF,$FF,$7E,$7E +.byte $00,$00,$C6,$C6,$D6,$7C,$6C,$00 +.byte $00,$00,$7E,$7E,$3C,$3C,$7E,$7E +.byte $00,$00,$6C,$38,$10,$38,$6C,$00 +.byte $00,$00,$7E,$7E,$7E,$3E,$7C,$78 +.byte $00,$00,$6C,$6C,$3C,$18,$70,$00 +.byte $00,$00,$7E,$7E,$3C,$78,$7E,$7E +.byte $00,$00,$7C,$18,$30,$60,$7C,$00 +.byte $0E,$1E,$1C,$3C,$3C,$1C,$1E,$0E +.byte $0C,$18,$18,$30,$18,$18,$0C,$00 +.byte $18,$18,$18,$18,$18,$18,$18,$18 +.byte $10,$10,$10,$10,$10,$10,$10,$00 +.byte $70,$78,$38,$3C,$3C,$38,$78,$70 +.byte $60,$30,$30,$18,$30,$30,$60,$00 +.byte $00,$00,$7F,$FF,$FE,$00,$00,$00 +.byte $00,$00,$76,$DC,$00,$00,$00,$00 +.byte $7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F +.byte $7E,$7E,$7E,$7E,$7E,$7E,$7E,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F0,$F0,$F0,$F0,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0F,$0F,$0F,$0F,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$F0,$F0,$F0,$F0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$F0,$F0,$F0,$F0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$0F,$0F,$0F,$0F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F0,$F0,$F0,$F0,$0F,$0F,$0F,$0F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$0F,$0F,$0F,$0F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F0,$F0,$F0,$F0,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0F,$0F,$0F,$0F,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $7F,$80,$80,$80,$80,$80,$80,$80 +.byte $FF,$00,$00,$00,$00,$00,$00,$00 +.byte $3F,$3F,$C0,$C0,$C0,$C0,$C0,$C0 +.byte $FF,$FF,$00,$00,$00,$00,$00,$00 +.byte $1F,$1F,$1F,$E0,$E0,$E0,$E0,$E0 +.byte $FF,$FF,$FF,$00,$00,$00,$00,$00 +.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 +.byte $FF,$FF,$FF,$FF,$00,$00,$00,$00 +.byte $07,$07,$07,$07,$07,$F8,$F8,$F8 +.byte $FF,$FF,$FF,$FF,$FF,$00,$00,$00 +.byte $03,$03,$03,$03,$03,$03,$FC,$FC +.byte $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 +.byte $01,$01,$01,$01,$01,$01,$01,$FE +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $7F,$80,$80,$80,$80,$80,$80,$80 +.byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $3F,$3F,$C0,$C0,$C0,$C0,$C0,$C0 +.byte $00,$00,$FF,$FF,$FF,$FF,$FF,$FF +.byte $1F,$1F,$1F,$E0,$E0,$E0,$E0,$E0 +.byte $00,$00,$00,$FF,$FF,$FF,$FF,$FF +.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 +.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF +.byte $07,$07,$07,$07,$07,$F8,$F8,$F8 +.byte $00,$00,$00,$00,$00,$FF,$FF,$FF +.byte $03,$03,$03,$03,$03,$03,$FC,$FC +.byte $00,$00,$00,$00,$00,$00,$FF,$FF +.byte $01,$01,$01,$01,$01,$01,$01,$FE +.byte $00,$00,$00,$00,$00,$00,$00,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $80,$80,$80,$80,$80,$80,$80,$80 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $01,$01,$01,$01,$01,$01,$01,$01 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$03,$0C,$30,$C0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $03,$0C,$30,$C0,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $C0,$30,$0C,$03,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$C0,$30,$0C,$03 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $10,$10,$20,$20,$40,$40,$80,$80 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $01,$01,$02,$02,$04,$04,$08,$08 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $80,$80,$40,$40,$20,$20,$10,$10 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $08,$08,$04,$04,$02,$02,$01,$01 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $01,$02,$04,$08,$10,$20,$40,$80 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $80,$40,$20,$10,$08,$04,$02,$01 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $81,$42,$24,$18,$18,$24,$42,$81 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $3C,$42,$81,$81,$81,$81,$42,$3C +.byte $0C,$00,$10,$00,$00,$00,$04,$00 +.byte $0C,$00,$10,$3E,$2E,$2E,$2A,$2E +.byte $00,$3C,$BC,$5A,$00,$20,$24,$7E +.byte $18,$00,$80,$42,$18,$04,$00,$12 +.byte $00,$FF,$00,$FF,$00,$FF,$00,$FF +.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA +.byte $24,$00,$5A,$00,$24,$00,$18,$00 +.byte $24,$00,$5A,$00,$24,$00,$18,$3C +.byte $4D,$41,$00,$2E,$24,$24,$6A,$6E +.byte $0C,$00,$10,$3E,$2E,$2E,$2A,$2E +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $E7,$C3,$C3,$E7,$E7,$DB,$DB,$93 +.byte $24,$24,$C3,$08,$18,$C3,$24,$24 +.byte $18,$66,$42,$91,$89,$42,$66,$18 +.byte $18,$24,$00,$24,$00,$18,$00,$00 +.byte $24,$00,$5A,$00,$24,$00,$18,$3C +.byte $5A,$36,$00,$00,$6C,$3B,$76,$00 +.byte $24,$7E,$54,$45,$48,$7E,$3E,$00 +.byte $00,$08,$14,$2A,$55,$2A,$14,$08 +.byte $80,$49,$36,$3E,$5D,$3E,$36,$49 +.byte $0F,$1F,$3F,$3D,$38,$38,$3C,$16 +.byte $0F,$1F,$3F,$3F,$3F,$3F,$3F,$17 +.byte $F0,$F8,$BC,$14,$A0,$A0,$08,$1C +.byte $F0,$F8,$FC,$FC,$58,$58,$F8,$FC +.byte $F2,$F1,$E1,$0F,$1F,$3B,$11,$00 +.byte $0D,$0E,$0E,$00,$00,$04,$0E,$0F +.byte $00,$E0,$F0,$F0,$F8,$DC,$88,$00 +.byte $C0,$00,$00,$00,$00,$20,$70,$78 +.byte $F2,$F1,$E1,$1F,$3F,$13,$03,$00 +.byte $0D,$0E,$0E,$00,$00,$2C,$3C,$20 +.byte $00,$E0,$F0,$F8,$E0,$C0,$00,$00 +.byte $C0,$00,$00,$04,$1C,$3C,$1C,$00 +.byte $FF,$2F,$7F,$FF,$FF,$F2,$F7,$FF +.byte $00,$FE,$FC,$D0,$00,$EF,$CF,$0D +.byte $FF,$F9,$F9,$FF,$FF,$9F,$9F,$FF +.byte $0F,$6F,$6F,$0F,$F0,$F6,$F6,$F0 +.byte $FF,$FF,$DF,$FF,$FF,$FF,$FF,$FF +.byte $00,$7E,$7C,$7E,$74,$7C,$50,$00 +.byte $05,$67,$4F,$1F,$9D,$3D,$A9,$FF +.byte $FF,$FE,$FF,$FE,$FE,$FF,$FE,$A4 +.byte $00,$0F,$3F,$3F,$7F,$00,$7F,$7F +.byte $0F,$30,$4D,$6D,$AD,$FF,$80,$AD +.byte $7F,$7F,$7F,$00,$7F,$7F,$7F,$00 +.byte $AD,$AD,$AD,$FF,$80,$AD,$AD,$FF +.byte $00,$F0,$FC,$FC,$FE,$00,$FE,$FE +.byte $F0,$0C,$B2,$B6,$B7,$FF,$01,$B7 +.byte $EA,$E2,$FE,$00,$FE,$FE,$FE,$00 +.byte $B5,$BD,$A1,$FF,$01,$B7,$B7,$FF +.byte $00,$22,$4C,$1F,$36,$3F,$5F,$17 +.byte $01,$63,$3F,$20,$2D,$29,$60,$EC +.byte $FF,$7F,$36,$3F,$1F,$5C,$22,$00 +.byte $68,$20,$0D,$29,$20,$77,$43,$01 +.byte $80,$C4,$F2,$FC,$DC,$FC,$FA,$D8 +.byte $00,$86,$DC,$04,$B0,$24,$06,$37 +.byte $FF,$FE,$DC,$FC,$FC,$FA,$C4,$80 +.byte $26,$04,$B0,$20,$04,$CC,$86,$00 +.byte $00,$00,$00,$1C,$26,$2F,$3F,$3F +.byte $00,$00,$1C,$3E,$7F,$7F,$7F,$7F +.byte $1F,$0F,$07,$03,$01,$00,$00,$00 +.byte $3F,$1F,$0F,$07,$02,$01,$00,$00 +.byte $00,$00,$00,$38,$4C,$DC,$F4,$F4 +.byte $00,$00,$38,$74,$FA,$FA,$FA,$FA +.byte $E8,$D0,$A0,$40,$80,$00,$00,$00 +.byte $F4,$E8,$D0,$A0,$40,$80,$00,$00 +.byte $00,$03,$0F,$30,$73,$73,$73,$70 +.byte $03,$0F,$3F,$FF,$FC,$FD,$FD,$FF +.byte $73,$73,$3F,$CF,$33,$0C,$03,$00 +.byte $FC,$FD,$F1,$3F,$0F,$03,$00,$00 +.byte $80,$20,$C8,$72,$3A,$3A,$3A,$7A +.byte $00,$C0,$F0,$BC,$DC,$DC,$DC,$9C +.byte $FA,$FA,$F2,$CE,$38,$E0,$80,$00 +.byte $3C,$FC,$FC,$F0,$C0,$00,$00,$00 +.byte $B0,$B0,$BF,$B0,$BF,$BF,$B0,$B0 +.byte $E0,$E0,$E0,$FF,$EF,$E0,$E0,$E0 .byte $00,$00,$00,$0C,$3E,$3E,$7B,$FB .byte $00,$00,$00,$38,$7C,$7C,$FE,$FE +.byte $0B,$0B,$FB,$0B,$FB,$FB,$0B,$0B +.byte $0E,$0E,$0E,$FE,$F6,$0E,$0E,$0E .byte $7B,$F3,$F3,$66,$7E,$3C,$00,$00 .byte $FE,$FE,$7C,$7C,$38,$00,$00,$00 .byte $00,$17,$0F,$1F,$12,$30,$08,$18 @@ -511,4 +1023,3 @@ .byte $00,$00,$FC,$FC,$00,$04,$94,$94 .byte $4E,$7E,$0E,$EE,$7E,$3C,$F8,$00 .byte $B4,$8C,$FC,$3C,$98,$C0,$00,$00 -;; diff --git a/samples/crypto/crypto.csproj b/samples/crypto/crypto.csproj index 603caf47..86d45253 100644 --- a/samples/crypto/crypto.csproj +++ b/samples/crypto/crypto.csproj @@ -5,6 +5,7 @@ net10.0 enable enable + 1 From 2dd1f383d7064a093dae5bd37bdc361f12078f25 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Sat, 21 Mar 2026 11:05:23 -0500 Subject: [PATCH 12/16] Use correct CHR tileset from reference ROM and fix palette values - Replace placeholder jroatch.chr with the actual game CHR data extracted from the purchased reference crypto.nes ROM (16KB, 2 banks) - Set NESChrBanks=2 so BG tiles at pattern table 1 (\) render correctly - Fix palette values to match reference ROM exactly The title screen now renders with correct tile art. Remaining palette color differences are from NES hardware palette mirroring in the NMI handler (byte 0 gets overwritten by bytes 4/8/12 mirror writes). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- samples/crypto/Program.cs | 4 +- samples/crypto/chr_generic.s | 2048 +++++++++++++++++----------------- samples/crypto/crypto.csproj | 2 +- 3 files changed, 1027 insertions(+), 1027 deletions(-) diff --git a/samples/crypto/Program.cs b/samples/crypto/Program.cs index a0405f98..ddf7e423 100644 --- a/samples/crypto/Program.cs +++ b/samples/crypto/Program.cs @@ -23,8 +23,8 @@ byte[] palette = new byte[] { - 0x0D, 0x00, 0x3D, 0x3C, 0x0D, 0x09, 0x1B, 0x3C, 0x07, 0x28, 0x0F, 0x79, 0x07, 0x21, 0x1C, 0x0F, - 0x00, 0x11, 0x16, 0x0D, 0x00, 0x27, 0x16, 0x0D, 0x00, 0x17, 0x15, 0x29, 0x00, 0x27, 0x16, 0x0D + 0x0D, 0x00, 0x3D, 0x3C, 0x0F, 0x09, 0x1B, 0x3C, 0x0F, 0x28, 0x0F, 0x30, 0x0F, 0x21, 0x1C, 0x0F, + 0x0D, 0x11, 0x16, 0x0D, 0x0F, 0x27, 0x16, 0x0D, 0x0F, 0x17, 0x15, 0x29, 0x0F, 0x27, 0x16, 0x0D }; byte[] paused_palette = new byte[] { diff --git a/samples/crypto/chr_generic.s b/samples/crypto/chr_generic.s index ab2d2c16..faa586cf 100644 --- a/samples/crypto/chr_generic.s +++ b/samples/crypto/chr_generic.s @@ -1,1025 +1,1025 @@ .segment "CHARS" -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA -.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55 -.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55 -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55 -.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA -.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC -.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33 -.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33 -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33 -.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC -.byte $3E,$7F,$7F,$7F,$7F,$7F,$7F,$3E -.byte $3C,$42,$5A,$52,$5A,$42,$3C,$00 -.byte $FE,$FF,$7F,$7B,$7B,$00,$00,$00 -.byte $F4,$4A,$52,$52,$00,$00,$00,$00 -.byte $0F,$0F,$0F,$3F,$7E,$7E,$7E,$3C -.byte $0E,$06,$0A,$38,$6C,$6C,$38,$00 -.byte $3C,$7E,$7E,$7E,$3C,$3C,$3C,$18 -.byte $38,$6C,$6C,$38,$10,$38,$10,$00 -.byte $18,$3C,$7E,$FF,$FF,$FF,$3C,$3C -.byte $10,$38,$7C,$FE,$EE,$10,$38,$00 -.byte $7E,$FF,$FF,$FF,$FF,$7E,$3C,$18 -.byte $6C,$FE,$FE,$FE,$7C,$38,$10,$00 -.byte $18,$3C,$7E,$FF,$FF,$7E,$3C,$18 -.byte $10,$38,$7C,$FE,$7C,$38,$10,$00 -.byte $3C,$7E,$7E,$FF,$FF,$FF,$3C,$3C -.byte $38,$7C,$38,$FE,$D6,$10,$38,$00 -.byte $18,$3C,$FF,$FF,$7E,$7E,$7E,$7E -.byte $10,$38,$FE,$7C,$38,$7C,$6C,$00 -.byte $0F,$1F,$7F,$FF,$FC,$FC,$FC,$78 -.byte $0A,$14,$72,$F8,$F8,$F8,$70,$00 -.byte $00,$00,$FF,$FF,$F6,$F6,$F6,$F6 -.byte $00,$00,$EE,$84,$E4,$24,$E4,$00 -.byte $00,$00,$FC,$FC,$FC,$FC,$FF,$FF -.byte $00,$00,$E8,$88,$E8,$28,$EE,$00 -.byte $18,$3C,$7E,$FF,$FF,$DB,$18,$18 -.byte $10,$38,$7C,$D6,$92,$10,$10,$00 -.byte $18,$18,$DB,$FF,$FF,$7E,$3C,$18 -.byte $10,$10,$92,$D6,$7C,$38,$10,$00 -.byte $1C,$3C,$78,$FF,$FF,$78,$3C,$1C -.byte $18,$30,$60,$FE,$60,$30,$18,$00 -.byte $38,$3C,$1E,$FF,$FF,$1E,$3C,$38 -.byte $30,$18,$0C,$FE,$0C,$18,$30,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $3C,$3C,$3C,$38,$38,$38,$38,$38 -.byte $38,$38,$30,$30,$30,$00,$30,$00 -.byte $3C,$3C,$3C,$3C,$00,$00,$00,$00 -.byte $28,$28,$28,$00,$00,$00,$00,$00 -.byte $00,$3C,$7E,$7E,$7E,$7E,$3C,$00 -.byte $00,$28,$7C,$28,$7C,$28,$00,$00 -.byte $0C,$3F,$3F,$3E,$3E,$7E,$7E,$18 -.byte $08,$3E,$28,$3C,$14,$7C,$10,$00 -.byte $00,$76,$7E,$7C,$3E,$7E,$6E,$00 -.byte $00,$64,$48,$10,$24,$4C,$00,$00 -.byte $00,$38,$7C,$7C,$7E,$7E,$7E,$3E -.byte $00,$30,$48,$30,$5C,$48,$34,$00 -.byte $30,$30,$70,$60,$00,$00,$00,$00 -.byte $20,$20,$40,$00,$00,$00,$00,$00 -.byte $0E,$1E,$3C,$38,$38,$3C,$1E,$0E -.byte $0C,$18,$30,$30,$30,$18,$0C,$00 -.byte $70,$78,$3C,$1C,$1C,$3C,$78,$70 -.byte $60,$30,$18,$18,$18,$30,$60,$00 -.byte $00,$00,$3E,$3E,$3E,$3E,$00,$00 -.byte $00,$00,$3C,$18,$3C,$00,$00,$00 -.byte $00,$18,$18,$7E,$7E,$18,$18,$00 -.byte $00,$10,$10,$7C,$10,$10,$00,$00 -.byte $00,$00,$00,$00,$38,$38,$78,$70 -.byte $00,$00,$00,$00,$30,$30,$60,$00 -.byte $00,$00,$00,$3E,$3E,$00,$00,$00 -.byte $00,$00,$00,$3C,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$38,$38,$38 -.byte $00,$00,$00,$00,$00,$30,$30,$00 -.byte $06,$0E,$0E,$1C,$1C,$38,$38,$30 -.byte $04,$0C,$08,$18,$10,$30,$20,$00 -.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3C -.byte $38,$6C,$6C,$6C,$6C,$6C,$38,$00 -.byte $1C,$3C,$3C,$1C,$1C,$1C,$1C,$1C -.byte $18,$38,$18,$18,$18,$18,$18,$00 -.byte $3C,$7E,$7E,$3E,$7C,$7E,$7E,$7E -.byte $38,$6C,$0C,$38,$60,$6C,$7C,$00 -.byte $3C,$7E,$7E,$3E,$3E,$7E,$7E,$3C -.byte $38,$6C,$0C,$38,$0C,$6C,$38,$00 -.byte $7E,$7E,$7E,$7E,$7E,$0E,$0E,$0E -.byte $6C,$6C,$6C,$7C,$0C,$0C,$0C,$00 -.byte $7E,$7E,$7E,$7C,$7E,$7E,$7E,$3C -.byte $7C,$6C,$60,$78,$0C,$6C,$38,$00 -.byte $3C,$7E,$7E,$7C,$7E,$7E,$7E,$3C -.byte $38,$6C,$60,$78,$6C,$6C,$38,$00 -.byte $7E,$7E,$7E,$7E,$0E,$0E,$0E,$0E -.byte $7C,$6C,$6C,$0C,$0C,$0C,$0C,$00 -.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3C -.byte $38,$6C,$6C,$38,$6C,$6C,$38,$00 -.byte $3C,$7E,$7E,$7E,$3E,$7E,$7E,$3C -.byte $38,$6C,$6C,$3C,$0C,$6C,$38,$00 -.byte $00,$38,$38,$38,$38,$38,$38,$00 -.byte $00,$30,$30,$00,$30,$30,$00,$00 -.byte $00,$38,$38,$38,$38,$38,$78,$70 -.byte $00,$30,$30,$00,$30,$30,$60,$00 -.byte $0E,$1E,$3C,$78,$78,$3C,$1E,$0E -.byte $0C,$18,$30,$60,$30,$18,$0C,$00 -.byte $00,$00,$3E,$3E,$3E,$3E,$00,$00 -.byte $00,$00,$3C,$00,$3C,$00,$00,$00 -.byte $70,$78,$3C,$1E,$1E,$3C,$78,$70 -.byte $60,$30,$18,$0C,$18,$30,$60,$00 -.byte $3C,$7E,$7E,$1E,$3C,$38,$38,$38 -.byte $38,$6C,$0C,$18,$30,$00,$30,$00 -.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3E -.byte $38,$44,$5C,$54,$5C,$40,$3C,$00 -.byte $3E,$7F,$77,$7F,$7F,$77,$77,$77 -.byte $3C,$66,$66,$7E,$66,$66,$66,$00 -.byte $7E,$7F,$77,$7F,$7F,$77,$7F,$7E -.byte $7C,$66,$66,$7C,$66,$66,$7C,$00 -.byte $3E,$7F,$77,$70,$70,$77,$7F,$3E -.byte $3C,$66,$60,$60,$60,$66,$3C,$00 -.byte $7C,$7E,$7F,$77,$77,$7F,$7E,$7C -.byte $78,$6C,$66,$66,$66,$6C,$78,$00 -.byte $7F,$7F,$70,$7F,$7F,$70,$7F,$7F -.byte $7E,$60,$60,$7E,$60,$60,$7E,$00 -.byte $7F,$7F,$70,$7C,$7C,$70,$70,$70 -.byte $7E,$60,$60,$78,$60,$60,$60,$00 -.byte $3E,$7F,$77,$7F,$7F,$77,$7F,$3E -.byte $3C,$66,$60,$6E,$66,$66,$3C,$00 -.byte $77,$77,$77,$7F,$7F,$77,$77,$77 -.byte $66,$66,$66,$7E,$66,$66,$66,$00 -.byte $7F,$7F,$1C,$1C,$1C,$1C,$7F,$7F -.byte $7E,$18,$18,$18,$18,$18,$7E,$00 -.byte $07,$07,$07,$07,$77,$77,$7F,$3E -.byte $06,$06,$06,$06,$66,$66,$3C,$00 -.byte $77,$7F,$7E,$7C,$7C,$7E,$7F,$77 -.byte $66,$6C,$78,$70,$78,$6C,$66,$00 -.byte $70,$70,$70,$70,$70,$70,$7F,$7F -.byte $60,$60,$60,$60,$60,$60,$7E,$00 -.byte $FE,$FF,$FF,$FF,$FF,$E7,$E7,$E7 -.byte $EC,$FE,$D6,$D6,$C6,$C6,$C6,$00 -.byte $77,$7F,$7F,$7F,$7F,$7F,$77,$77 -.byte $66,$76,$7E,$7E,$6E,$66,$66,$00 -.byte $3E,$7F,$77,$77,$77,$77,$7F,$3E -.byte $3C,$66,$66,$66,$66,$66,$3C,$00 -.byte $7E,$7F,$77,$7F,$7E,$70,$70,$70 -.byte $7C,$66,$66,$7C,$60,$60,$60,$00 -.byte $3E,$7F,$77,$77,$77,$7F,$7F,$3F -.byte $3C,$66,$66,$66,$66,$6C,$3E,$00 -.byte $7E,$7F,$77,$7F,$7E,$7E,$7F,$77 -.byte $7C,$66,$66,$7C,$78,$6C,$66,$00 -.byte $3E,$7F,$77,$7E,$3F,$77,$7F,$3E -.byte $3C,$66,$60,$3C,$06,$66,$3C,$00 -.byte $7F,$7F,$1C,$1C,$1C,$1C,$1C,$1C -.byte $7E,$18,$18,$18,$18,$18,$18,$00 -.byte $77,$77,$77,$77,$77,$77,$7F,$3E -.byte $66,$66,$66,$66,$66,$66,$3C,$00 -.byte $77,$77,$77,$77,$7F,$3E,$3E,$1C -.byte $66,$66,$66,$66,$3C,$3C,$18,$00 -.byte $E7,$E7,$FF,$FF,$FF,$FF,$FF,$7E -.byte $C6,$C6,$D6,$D6,$D6,$FE,$6C,$00 -.byte $77,$77,$7F,$3E,$3E,$7F,$77,$77 -.byte $66,$66,$3C,$18,$3C,$66,$66,$00 -.byte $77,$77,$77,$7F,$3E,$1C,$1C,$1C -.byte $66,$66,$66,$3C,$18,$18,$18,$00 -.byte $7F,$7F,$0F,$1E,$3C,$78,$7F,$7F -.byte $7E,$06,$0C,$18,$30,$60,$7E,$00 -.byte $1F,$1F,$1C,$1C,$1C,$1C,$1F,$1F -.byte $1E,$18,$18,$18,$18,$18,$1E,$00 -.byte $30,$38,$38,$1C,$1C,$0E,$0E,$06 -.byte $20,$30,$10,$18,$08,$0C,$04,$00 -.byte $F8,$F8,$38,$38,$38,$38,$F8,$F8 -.byte $F0,$30,$30,$30,$30,$30,$F0,$00 -.byte $18,$3C,$7E,$7E,$00,$00,$00,$00 -.byte $10,$38,$6C,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$7F,$7F -.byte $00,$00,$00,$00,$00,$00,$7E,$00 -.byte $30,$30,$38,$18,$00,$00,$00,$00 -.byte $20,$20,$10,$00,$00,$00,$00,$00 -.byte $00,$00,$3C,$3E,$3E,$7E,$7E,$3E -.byte $00,$00,$38,$0C,$3C,$4C,$34,$00 -.byte $70,$70,$7C,$7E,$7E,$7E,$7E,$7C -.byte $60,$60,$78,$6C,$6C,$6C,$78,$00 -.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3C -.byte $00,$00,$38,$6C,$60,$6C,$38,$00 -.byte $0E,$0E,$3E,$7E,$7E,$7E,$7E,$3E -.byte $0C,$0C,$3C,$6C,$6C,$6C,$3C,$00 -.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3E -.byte $00,$00,$38,$64,$7C,$60,$3C,$00 -.byte $00,$3C,$7E,$7E,$7C,$7C,$70,$70 -.byte $00,$38,$6C,$60,$78,$60,$60,$00 -.byte $00,$00,$3E,$7E,$7E,$3E,$7E,$7C -.byte $00,$00,$3C,$6C,$3C,$0C,$78,$00 -.byte $70,$70,$7C,$7E,$7E,$7E,$7E,$7E -.byte $60,$60,$78,$6C,$6C,$6C,$6C,$00 -.byte $00,$1C,$1C,$1C,$1C,$1C,$1C,$1C -.byte $00,$18,$00,$18,$18,$18,$18,$00 -.byte $00,$0E,$0E,$0E,$0E,$7E,$7E,$3C -.byte $00,$0C,$00,$0C,$0C,$6C,$38,$00 -.byte $70,$70,$7E,$7E,$7C,$7C,$7E,$7E -.byte $60,$60,$6C,$78,$70,$78,$6C,$00 -.byte $3C,$3C,$1C,$1C,$1C,$1C,$1C,$1C -.byte $38,$18,$18,$18,$18,$18,$18,$00 -.byte $00,$00,$7E,$7F,$7F,$7F,$77,$77 -.byte $00,$00,$6C,$7E,$56,$66,$66,$00 -.byte $00,$00,$7C,$7E,$7E,$7E,$7E,$7E -.byte $00,$00,$78,$6C,$6C,$6C,$6C,$00 -.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3C -.byte $00,$00,$38,$6C,$6C,$6C,$38,$00 -.byte $00,$00,$7C,$7E,$7E,$7C,$70,$70 -.byte $00,$00,$78,$6C,$78,$60,$60,$00 -.byte $00,$00,$3E,$7E,$7E,$3E,$0E,$0E -.byte $00,$00,$3C,$6C,$3C,$0C,$0C,$00 -.byte $00,$00,$7C,$7E,$7E,$70,$70,$70 -.byte $00,$00,$78,$6C,$60,$60,$60,$00 -.byte $00,$00,$3E,$7E,$7C,$3E,$7E,$7C -.byte $00,$00,$3C,$60,$38,$0C,$78,$00 -.byte $00,$1C,$3E,$3E,$1C,$1C,$1E,$0E -.byte $00,$18,$3C,$18,$18,$18,$0C,$00 -.byte $00,$00,$7E,$7E,$7E,$7E,$7E,$3E -.byte $00,$00,$6C,$6C,$6C,$6C,$34,$00 -.byte $00,$00,$7E,$7E,$7E,$7E,$3E,$1C -.byte $00,$00,$6C,$6C,$6C,$3C,$18,$00 -.byte $00,$00,$E7,$E7,$FF,$FF,$7E,$7E -.byte $00,$00,$C6,$C6,$D6,$7C,$6C,$00 -.byte $00,$00,$7E,$7E,$3C,$3C,$7E,$7E -.byte $00,$00,$6C,$38,$10,$38,$6C,$00 -.byte $00,$00,$7E,$7E,$7E,$3E,$7C,$78 -.byte $00,$00,$6C,$6C,$3C,$18,$70,$00 -.byte $00,$00,$7E,$7E,$3C,$78,$7E,$7E -.byte $00,$00,$7C,$18,$30,$60,$7C,$00 -.byte $0E,$1E,$1C,$3C,$3C,$1C,$1E,$0E -.byte $0C,$18,$18,$30,$18,$18,$0C,$00 -.byte $18,$18,$18,$18,$18,$18,$18,$18 -.byte $10,$10,$10,$10,$10,$10,$10,$00 -.byte $70,$78,$38,$3C,$3C,$38,$78,$70 -.byte $60,$30,$30,$18,$30,$30,$60,$00 -.byte $00,$00,$7F,$FF,$FE,$00,$00,$00 -.byte $00,$00,$76,$DC,$00,$00,$00,$00 -.byte $7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F -.byte $7E,$7E,$7E,$7E,$7E,$7E,$7E,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $F0,$F0,$F0,$F0,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $0F,$0F,$0F,$0F,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$F0,$F0,$F0,$F0 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$F0,$F0,$F0,$F0 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$0F,$0F,$0F,$0F -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $F0,$F0,$F0,$F0,$0F,$0F,$0F,$0F -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$0F,$0F,$0F,$0F -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $F0,$F0,$F0,$F0,$FF,$FF,$FF,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $0F,$0F,$0F,$0F,$FF,$FF,$FF,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $7F,$80,$80,$80,$80,$80,$80,$80 -.byte $FF,$00,$00,$00,$00,$00,$00,$00 -.byte $3F,$3F,$C0,$C0,$C0,$C0,$C0,$C0 -.byte $FF,$FF,$00,$00,$00,$00,$00,$00 -.byte $1F,$1F,$1F,$E0,$E0,$E0,$E0,$E0 -.byte $FF,$FF,$FF,$00,$00,$00,$00,$00 -.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 -.byte $FF,$FF,$FF,$FF,$00,$00,$00,$00 -.byte $07,$07,$07,$07,$07,$F8,$F8,$F8 -.byte $FF,$FF,$FF,$FF,$FF,$00,$00,$00 -.byte $03,$03,$03,$03,$03,$03,$FC,$FC -.byte $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -.byte $01,$01,$01,$01,$01,$01,$01,$FE -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $7F,$80,$80,$80,$80,$80,$80,$80 -.byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $3F,$3F,$C0,$C0,$C0,$C0,$C0,$C0 -.byte $00,$00,$FF,$FF,$FF,$FF,$FF,$FF -.byte $1F,$1F,$1F,$E0,$E0,$E0,$E0,$E0 -.byte $00,$00,$00,$FF,$FF,$FF,$FF,$FF -.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 -.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF -.byte $07,$07,$07,$07,$07,$F8,$F8,$F8 -.byte $00,$00,$00,$00,$00,$FF,$FF,$FF -.byte $03,$03,$03,$03,$03,$03,$FC,$FC -.byte $00,$00,$00,$00,$00,$00,$FF,$FF -.byte $01,$01,$01,$01,$01,$01,$01,$FE -.byte $00,$00,$00,$00,$00,$00,$00,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $80,$80,$80,$80,$80,$80,$80,$80 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $01,$01,$01,$01,$01,$01,$01,$01 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$03,$0C,$30,$C0 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $03,$0C,$30,$C0,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $C0,$30,$0C,$03,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$C0,$30,$0C,$03 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $10,$10,$20,$20,$40,$40,$80,$80 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $01,$01,$02,$02,$04,$04,$08,$08 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $80,$80,$40,$40,$20,$20,$10,$10 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $08,$08,$04,$04,$02,$02,$01,$01 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $01,$02,$04,$08,$10,$20,$40,$80 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $80,$40,$20,$10,$08,$04,$02,$01 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $81,$42,$24,$18,$18,$24,$42,$81 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $3C,$42,$81,$81,$81,$81,$42,$3C -.byte $0C,$00,$10,$00,$00,$00,$04,$00 -.byte $0C,$00,$10,$3E,$2E,$2E,$2A,$2E -.byte $00,$3C,$BC,$5A,$00,$20,$24,$7E -.byte $18,$00,$80,$42,$18,$04,$00,$12 -.byte $00,$FF,$00,$FF,$00,$FF,$00,$FF -.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA -.byte $24,$00,$5A,$00,$24,$00,$18,$00 -.byte $24,$00,$5A,$00,$24,$00,$18,$3C -.byte $4D,$41,$00,$2E,$24,$24,$6A,$6E -.byte $0C,$00,$10,$3E,$2E,$2E,$2A,$2E -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $E7,$C3,$C3,$E7,$E7,$DB,$DB,$93 -.byte $24,$24,$C3,$08,$18,$C3,$24,$24 -.byte $18,$66,$42,$91,$89,$42,$66,$18 -.byte $18,$24,$00,$24,$00,$18,$00,$00 -.byte $24,$00,$5A,$00,$24,$00,$18,$3C -.byte $5A,$36,$00,$00,$6C,$3B,$76,$00 -.byte $24,$7E,$54,$45,$48,$7E,$3E,$00 -.byte $00,$08,$14,$2A,$55,$2A,$14,$08 -.byte $80,$49,$36,$3E,$5D,$3E,$36,$49 -.byte $0F,$1F,$3F,$3D,$38,$38,$3C,$16 -.byte $0F,$1F,$3F,$3F,$3F,$3F,$3F,$17 -.byte $F0,$F8,$BC,$14,$A0,$A0,$08,$1C -.byte $F0,$F8,$FC,$FC,$58,$58,$F8,$FC -.byte $F2,$F1,$E1,$0F,$1F,$3B,$11,$00 -.byte $0D,$0E,$0E,$00,$00,$04,$0E,$0F -.byte $00,$E0,$F0,$F0,$F8,$DC,$88,$00 -.byte $C0,$00,$00,$00,$00,$20,$70,$78 -.byte $F2,$F1,$E1,$1F,$3F,$13,$03,$00 -.byte $0D,$0E,$0E,$00,$00,$2C,$3C,$20 -.byte $00,$E0,$F0,$F8,$E0,$C0,$00,$00 -.byte $C0,$00,$00,$04,$1C,$3C,$1C,$00 -.byte $FF,$2F,$7F,$FF,$FF,$F2,$F7,$FF -.byte $00,$FE,$FC,$D0,$00,$EF,$CF,$0D -.byte $FF,$F9,$F9,$FF,$FF,$9F,$9F,$FF -.byte $0F,$6F,$6F,$0F,$F0,$F6,$F6,$F0 -.byte $FF,$FF,$DF,$FF,$FF,$FF,$FF,$FF -.byte $00,$7E,$7C,$7E,$74,$7C,$50,$00 -.byte $05,$67,$4F,$1F,$9D,$3D,$A9,$FF -.byte $FF,$FE,$FF,$FE,$FE,$FF,$FE,$A4 -.byte $00,$0F,$3F,$3F,$7F,$00,$7F,$7F -.byte $0F,$30,$4D,$6D,$AD,$FF,$80,$AD -.byte $7F,$7F,$7F,$00,$7F,$7F,$7F,$00 -.byte $AD,$AD,$AD,$FF,$80,$AD,$AD,$FF -.byte $00,$F0,$FC,$FC,$FE,$00,$FE,$FE -.byte $F0,$0C,$B2,$B6,$B7,$FF,$01,$B7 -.byte $EA,$E2,$FE,$00,$FE,$FE,$FE,$00 -.byte $B5,$BD,$A1,$FF,$01,$B7,$B7,$FF -.byte $00,$22,$4C,$1F,$36,$3F,$5F,$17 -.byte $01,$63,$3F,$20,$2D,$29,$60,$EC -.byte $FF,$7F,$36,$3F,$1F,$5C,$22,$00 -.byte $68,$20,$0D,$29,$20,$77,$43,$01 -.byte $80,$C4,$F2,$FC,$DC,$FC,$FA,$D8 -.byte $00,$86,$DC,$04,$B0,$24,$06,$37 -.byte $FF,$FE,$DC,$FC,$FC,$FA,$C4,$80 -.byte $26,$04,$B0,$20,$04,$CC,$86,$00 -.byte $00,$00,$00,$1C,$26,$2F,$3F,$3F -.byte $00,$00,$1C,$3E,$7F,$7F,$7F,$7F -.byte $1F,$0F,$07,$03,$01,$00,$00,$00 -.byte $3F,$1F,$0F,$07,$02,$01,$00,$00 -.byte $00,$00,$00,$38,$4C,$DC,$F4,$F4 -.byte $00,$00,$38,$74,$FA,$FA,$FA,$FA -.byte $E8,$D0,$A0,$40,$80,$00,$00,$00 -.byte $F4,$E8,$D0,$A0,$40,$80,$00,$00 -.byte $00,$03,$0F,$30,$73,$73,$73,$70 -.byte $03,$0F,$3F,$FF,$FC,$FD,$FD,$FF -.byte $73,$73,$3F,$CF,$33,$0C,$03,$00 -.byte $FC,$FD,$F1,$3F,$0F,$03,$00,$00 -.byte $80,$20,$C8,$72,$3A,$3A,$3A,$7A -.byte $00,$C0,$F0,$BC,$DC,$DC,$DC,$9C -.byte $FA,$FA,$F2,$CE,$38,$E0,$80,$00 -.byte $3C,$FC,$FC,$F0,$C0,$00,$00,$00 -.byte $B0,$B0,$BF,$B0,$BF,$BF,$B0,$B0 -.byte $E0,$E0,$E0,$FF,$EF,$E0,$E0,$E0 -.byte $00,$00,$00,$0C,$3E,$3E,$7B,$FB -.byte $00,$00,$00,$38,$7C,$7C,$FE,$FE -.byte $0B,$0B,$FB,$0B,$FB,$FB,$0B,$0B -.byte $0E,$0E,$0E,$FE,$F6,$0E,$0E,$0E -.byte $7B,$F3,$F3,$66,$7E,$3C,$00,$00 -.byte $FE,$FE,$7C,$7C,$38,$00,$00,$00 -.byte $00,$17,$0F,$1F,$12,$30,$08,$18 -.byte $00,$00,$00,$00,$0D,$0F,$07,$07 -.byte $0F,$1F,$1F,$13,$03,$0E,$0E,$0F -.byte $0F,$1F,$1F,$1C,$0C,$00,$0E,$0F -.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 -.byte $00,$00,$00,$00,$A0,$B0,$E0,$C0 -.byte $C0,$E0,$E0,$C0,$C0,$C0,$E0,$70 -.byte $C0,$E0,$E0,$20,$20,$00,$E0,$70 -.byte $00,$17,$0F,$1F,$12,$30,$08,$18 -.byte $00,$00,$00,$00,$0D,$0F,$07,$07 -.byte $1F,$1F,$0F,$0F,$3F,$7C,$30,$18 -.byte $1F,$3F,$3F,$00,$00,$60,$30,$18 -.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 -.byte $00,$00,$00,$00,$A0,$B0,$E0,$C0 -.byte $C0,$F0,$F8,$E4,$FC,$FC,$7C,$00 -.byte $CC,$FC,$F8,$04,$0C,$0C,$0C,$00 -.byte $00,$17,$0F,$1F,$12,$30,$08,$18 -.byte $00,$00,$00,$00,$0D,$0F,$07,$07 -.byte $0F,$1F,$1F,$13,$03,$0E,$0E,$0F -.byte $0F,$1F,$1F,$1C,$0C,$00,$0E,$0F -.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 -.byte $00,$00,$00,$00,$A0,$B0,$E0,$C0 -.byte $C0,$C0,$C0,$C0,$C0,$C0,$E0,$00 -.byte $C0,$C0,$E0,$20,$00,$C0,$E0,$00 -.byte $00,$00,$17,$0F,$1F,$12,$30,$08 -.byte $00,$00,$00,$00,$00,$0D,$0F,$07 -.byte $18,$1F,$0F,$0F,$3F,$7B,$43,$03 -.byte $07,$1F,$3F,$37,$20,$60,$43,$03 -.byte $00,$00,$C8,$F8,$F0,$40,$40,$00 -.byte $00,$00,$00,$00,$00,$A0,$B0,$E0 -.byte $00,$E0,$E0,$C0,$C0,$80,$80,$C0 -.byte $C0,$F8,$F8,$C0,$00,$00,$80,$C0 -.byte $00,$17,$0F,$1F,$12,$30,$08,$18 -.byte $00,$00,$00,$00,$0D,$0F,$07,$1F -.byte $3F,$3F,$0F,$7F,$7F,$7E,$40,$00 -.byte $3F,$7F,$6F,$60,$60,$60,$40,$00 -.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 -.byte $00,$00,$00,$00,$A0,$B0,$E0,$CC -.byte $D0,$F8,$F0,$C4,$FC,$FC,$7C,$00 -.byte $DC,$F8,$F0,$04,$0C,$0C,$0C,$00 -.byte $00,$17,$0F,$1F,$1F,$3F,$0F,$7F -.byte $00,$00,$00,$00,$00,$00,$30,$60 -.byte $7F,$3F,$1F,$0F,$0F,$0F,$0F,$0F -.byte $7F,$3F,$1F,$00,$00,$06,$0F,$0F -.byte $00,$E0,$F0,$FC,$FC,$FC,$FC,$FC -.byte $00,$18,$08,$04,$04,$00,$0C,$04 -.byte $F8,$F8,$F8,$F8,$F0,$00,$00,$00 -.byte $F8,$F8,$C0,$00,$70,$00,$00,$00 -.byte $00,$17,$0F,$1F,$1A,$19,$0A,$7C -.byte $00,$00,$00,$00,$05,$66,$65,$63 -.byte $7F,$3F,$4F,$7F,$7F,$7E,$00,$00 -.byte $7F,$3F,$4F,$60,$60,$60,$00,$00 -.byte $00,$E8,$F0,$F8,$58,$9C,$50,$38 -.byte $00,$00,$00,$00,$A0,$60,$A0,$C3 -.byte $FC,$FE,$F0,$E0,$F0,$F0,$E0,$70 -.byte $FF,$FE,$F0,$00,$00,$00,$E0,$70 -.byte $FF,$80,$80,$9F,$90,$97,$97,$97 -.byte $00,$7F,$7F,$7F,$7F,$7F,$7F,$7F -.byte $97,$97,$97,$97,$9F,$BF,$FF,$00 -.byte $7F,$7F,$7F,$78,$7F,$60,$40,$00 -.byte $FE,$02,$06,$FE,$0E,$FE,$FE,$FE -.byte $00,$FE,$FC,$F8,$F8,$E8,$E8,$E8 -.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$00 -.byte $E8,$E8,$E8,$08,$F8,$00,$00,$00 -.byte $00,$3F,$7F,$60,$6E,$72,$76,$76 -.byte $00,$00,$1F,$3F,$31,$2D,$29,$29 -.byte $7E,$60,$60,$7F,$7C,$7E,$3F,$00 -.byte $21,$3F,$3F,$38,$1B,$01,$00,$00 -.byte $00,$FC,$FE,$0E,$7E,$4E,$6E,$6E -.byte $00,$00,$F8,$FC,$8C,$B4,$94,$94 -.byte $7E,$0E,$0E,$FE,$3E,$7E,$FC,$00 -.byte $84,$FC,$FC,$1C,$D8,$80,$00,$00 -.byte $00,$7F,$7F,$60,$7F,$7F,$77,$76 -.byte $00,$00,$3F,$3F,$00,$20,$29,$29 -.byte $72,$6E,$60,$77,$7E,$3C,$1F,$00 -.byte $2D,$31,$3F,$3C,$19,$03,$00,$00 -.byte $00,$FE,$FE,$0E,$FE,$FE,$EE,$6E -.byte $00,$00,$FC,$FC,$00,$04,$94,$94 -.byte $4E,$7E,$0E,$EE,$7E,$3C,$F8,$00 -.byte $B4,$8C,$FC,$3C,$98,$C0,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA -.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55 -.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55 -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55 -.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA -.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC -.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33 -.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33 -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33 -.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC -.byte $3E,$7F,$7F,$7F,$7F,$7F,$7F,$3E -.byte $3C,$42,$5A,$52,$5A,$42,$3C,$00 -.byte $FE,$FF,$7F,$7B,$7B,$00,$00,$00 -.byte $F4,$4A,$52,$52,$00,$00,$00,$00 -.byte $0F,$0F,$0F,$3F,$7E,$7E,$7E,$3C -.byte $0E,$06,$0A,$38,$6C,$6C,$38,$00 -.byte $3C,$7E,$7E,$7E,$3C,$3C,$3C,$18 -.byte $38,$6C,$6C,$38,$10,$38,$10,$00 -.byte $18,$3C,$7E,$FF,$FF,$FF,$3C,$3C -.byte $10,$38,$7C,$FE,$EE,$10,$38,$00 -.byte $7E,$FF,$FF,$FF,$FF,$7E,$3C,$18 -.byte $6C,$FE,$FE,$FE,$7C,$38,$10,$00 -.byte $18,$3C,$7E,$FF,$FF,$7E,$3C,$18 -.byte $10,$38,$7C,$FE,$7C,$38,$10,$00 -.byte $3C,$7E,$7E,$FF,$FF,$FF,$3C,$3C -.byte $38,$7C,$38,$FE,$D6,$10,$38,$00 -.byte $18,$3C,$FF,$FF,$7E,$7E,$7E,$7E -.byte $10,$38,$FE,$7C,$38,$7C,$6C,$00 -.byte $0F,$1F,$7F,$FF,$FC,$FC,$FC,$78 -.byte $0A,$14,$72,$F8,$F8,$F8,$70,$00 -.byte $00,$00,$FF,$FF,$F6,$F6,$F6,$F6 -.byte $00,$00,$EE,$84,$E4,$24,$E4,$00 -.byte $00,$00,$FC,$FC,$FC,$FC,$FF,$FF -.byte $00,$00,$E8,$88,$E8,$28,$EE,$00 -.byte $18,$3C,$7E,$FF,$FF,$DB,$18,$18 -.byte $10,$38,$7C,$D6,$92,$10,$10,$00 -.byte $18,$18,$DB,$FF,$FF,$7E,$3C,$18 -.byte $10,$10,$92,$D6,$7C,$38,$10,$00 -.byte $1C,$3C,$78,$FF,$FF,$78,$3C,$1C -.byte $18,$30,$60,$FE,$60,$30,$18,$00 -.byte $38,$3C,$1E,$FF,$FF,$1E,$3C,$38 -.byte $30,$18,$0C,$FE,$0C,$18,$30,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $3C,$3C,$3C,$38,$38,$38,$38,$38 -.byte $38,$38,$30,$30,$30,$00,$30,$00 -.byte $3C,$3C,$3C,$3C,$00,$00,$00,$00 -.byte $28,$28,$28,$00,$00,$00,$00,$00 -.byte $00,$3C,$7E,$7E,$7E,$7E,$3C,$00 -.byte $00,$28,$7C,$28,$7C,$28,$00,$00 -.byte $0C,$3F,$3F,$3E,$3E,$7E,$7E,$18 -.byte $08,$3E,$28,$3C,$14,$7C,$10,$00 -.byte $00,$76,$7E,$7C,$3E,$7E,$6E,$00 -.byte $00,$64,$48,$10,$24,$4C,$00,$00 -.byte $00,$38,$7C,$7C,$7E,$7E,$7E,$3E -.byte $00,$30,$48,$30,$5C,$48,$34,$00 -.byte $30,$30,$70,$60,$00,$00,$00,$00 -.byte $20,$20,$40,$00,$00,$00,$00,$00 -.byte $0E,$1E,$3C,$38,$38,$3C,$1E,$0E -.byte $0C,$18,$30,$30,$30,$18,$0C,$00 -.byte $70,$78,$3C,$1C,$1C,$3C,$78,$70 -.byte $60,$30,$18,$18,$18,$30,$60,$00 -.byte $00,$00,$3E,$3E,$3E,$3E,$00,$00 -.byte $00,$00,$3C,$18,$3C,$00,$00,$00 -.byte $00,$18,$18,$7E,$7E,$18,$18,$00 -.byte $00,$10,$10,$7C,$10,$10,$00,$00 -.byte $00,$00,$00,$00,$38,$38,$78,$70 -.byte $00,$00,$00,$00,$30,$30,$60,$00 -.byte $00,$00,$00,$3E,$3E,$00,$00,$00 -.byte $00,$00,$00,$3C,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$38,$38,$38 -.byte $00,$00,$00,$00,$00,$30,$30,$00 -.byte $06,$0E,$0E,$1C,$1C,$38,$38,$30 -.byte $04,$0C,$08,$18,$10,$30,$20,$00 -.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3C -.byte $38,$6C,$6C,$6C,$6C,$6C,$38,$00 -.byte $1C,$3C,$3C,$1C,$1C,$1C,$1C,$1C -.byte $18,$38,$18,$18,$18,$18,$18,$00 -.byte $3C,$7E,$7E,$3E,$7C,$7E,$7E,$7E -.byte $38,$6C,$0C,$38,$60,$6C,$7C,$00 -.byte $3C,$7E,$7E,$3E,$3E,$7E,$7E,$3C -.byte $38,$6C,$0C,$38,$0C,$6C,$38,$00 -.byte $7E,$7E,$7E,$7E,$7E,$0E,$0E,$0E -.byte $6C,$6C,$6C,$7C,$0C,$0C,$0C,$00 -.byte $7E,$7E,$7E,$7C,$7E,$7E,$7E,$3C -.byte $7C,$6C,$60,$78,$0C,$6C,$38,$00 -.byte $3C,$7E,$7E,$7C,$7E,$7E,$7E,$3C -.byte $38,$6C,$60,$78,$6C,$6C,$38,$00 -.byte $7E,$7E,$7E,$7E,$0E,$0E,$0E,$0E -.byte $7C,$6C,$6C,$0C,$0C,$0C,$0C,$00 -.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3C -.byte $38,$6C,$6C,$38,$6C,$6C,$38,$00 -.byte $3C,$7E,$7E,$7E,$3E,$7E,$7E,$3C -.byte $38,$6C,$6C,$3C,$0C,$6C,$38,$00 -.byte $00,$38,$38,$38,$38,$38,$38,$00 -.byte $00,$30,$30,$00,$30,$30,$00,$00 -.byte $00,$38,$38,$38,$38,$38,$78,$70 -.byte $00,$30,$30,$00,$30,$30,$60,$00 -.byte $0E,$1E,$3C,$78,$78,$3C,$1E,$0E -.byte $0C,$18,$30,$60,$30,$18,$0C,$00 -.byte $00,$00,$3E,$3E,$3E,$3E,$00,$00 -.byte $00,$00,$3C,$00,$3C,$00,$00,$00 -.byte $70,$78,$3C,$1E,$1E,$3C,$78,$70 -.byte $60,$30,$18,$0C,$18,$30,$60,$00 -.byte $3C,$7E,$7E,$1E,$3C,$38,$38,$38 -.byte $38,$6C,$0C,$18,$30,$00,$30,$00 -.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3E -.byte $38,$44,$5C,$54,$5C,$40,$3C,$00 -.byte $3E,$7F,$77,$7F,$7F,$77,$77,$77 -.byte $3C,$66,$66,$7E,$66,$66,$66,$00 -.byte $7E,$7F,$77,$7F,$7F,$77,$7F,$7E -.byte $7C,$66,$66,$7C,$66,$66,$7C,$00 -.byte $3E,$7F,$77,$70,$70,$77,$7F,$3E -.byte $3C,$66,$60,$60,$60,$66,$3C,$00 -.byte $7C,$7E,$7F,$77,$77,$7F,$7E,$7C -.byte $78,$6C,$66,$66,$66,$6C,$78,$00 -.byte $7F,$7F,$70,$7F,$7F,$70,$7F,$7F -.byte $7E,$60,$60,$7E,$60,$60,$7E,$00 -.byte $7F,$7F,$70,$7C,$7C,$70,$70,$70 -.byte $7E,$60,$60,$78,$60,$60,$60,$00 -.byte $3E,$7F,$77,$7F,$7F,$77,$7F,$3E -.byte $3C,$66,$60,$6E,$66,$66,$3C,$00 -.byte $77,$77,$77,$7F,$7F,$77,$77,$77 -.byte $66,$66,$66,$7E,$66,$66,$66,$00 -.byte $7F,$7F,$1C,$1C,$1C,$1C,$7F,$7F -.byte $7E,$18,$18,$18,$18,$18,$7E,$00 -.byte $07,$07,$07,$07,$77,$77,$7F,$3E -.byte $06,$06,$06,$06,$66,$66,$3C,$00 -.byte $77,$7F,$7E,$7C,$7C,$7E,$7F,$77 -.byte $66,$6C,$78,$70,$78,$6C,$66,$00 -.byte $70,$70,$70,$70,$70,$70,$7F,$7F -.byte $60,$60,$60,$60,$60,$60,$7E,$00 -.byte $FE,$FF,$FF,$FF,$FF,$E7,$E7,$E7 -.byte $EC,$FE,$D6,$D6,$C6,$C6,$C6,$00 -.byte $77,$7F,$7F,$7F,$7F,$7F,$77,$77 -.byte $66,$76,$7E,$7E,$6E,$66,$66,$00 -.byte $3E,$7F,$77,$77,$77,$77,$7F,$3E -.byte $3C,$66,$66,$66,$66,$66,$3C,$00 -.byte $7E,$7F,$77,$7F,$7E,$70,$70,$70 -.byte $7C,$66,$66,$7C,$60,$60,$60,$00 -.byte $3E,$7F,$77,$77,$77,$7F,$7F,$3F -.byte $3C,$66,$66,$66,$66,$6C,$3E,$00 -.byte $7E,$7F,$77,$7F,$7E,$7E,$7F,$77 -.byte $7C,$66,$66,$7C,$78,$6C,$66,$00 -.byte $3E,$7F,$77,$7E,$3F,$77,$7F,$3E -.byte $3C,$66,$60,$3C,$06,$66,$3C,$00 -.byte $7F,$7F,$1C,$1C,$1C,$1C,$1C,$1C -.byte $7E,$18,$18,$18,$18,$18,$18,$00 -.byte $77,$77,$77,$77,$77,$77,$7F,$3E -.byte $66,$66,$66,$66,$66,$66,$3C,$00 -.byte $77,$77,$77,$77,$7F,$3E,$3E,$1C -.byte $66,$66,$66,$66,$3C,$3C,$18,$00 -.byte $E7,$E7,$FF,$FF,$FF,$FF,$FF,$7E -.byte $C6,$C6,$D6,$D6,$D6,$FE,$6C,$00 -.byte $77,$77,$7F,$3E,$3E,$7F,$77,$77 -.byte $66,$66,$3C,$18,$3C,$66,$66,$00 -.byte $77,$77,$77,$7F,$3E,$1C,$1C,$1C -.byte $66,$66,$66,$3C,$18,$18,$18,$00 -.byte $7F,$7F,$0F,$1E,$3C,$78,$7F,$7F -.byte $7E,$06,$0C,$18,$30,$60,$7E,$00 -.byte $1F,$1F,$1C,$1C,$1C,$1C,$1F,$1F -.byte $1E,$18,$18,$18,$18,$18,$1E,$00 -.byte $30,$38,$38,$1C,$1C,$0E,$0E,$06 -.byte $20,$30,$10,$18,$08,$0C,$04,$00 -.byte $F8,$F8,$38,$38,$38,$38,$F8,$F8 -.byte $F0,$30,$30,$30,$30,$30,$F0,$00 -.byte $18,$3C,$7E,$7E,$00,$00,$00,$00 -.byte $10,$38,$6C,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$7F,$7F -.byte $00,$00,$00,$00,$00,$00,$7E,$00 -.byte $30,$30,$38,$18,$00,$00,$00,$00 -.byte $20,$20,$10,$00,$00,$00,$00,$00 -.byte $00,$00,$3C,$3E,$3E,$7E,$7E,$3E -.byte $00,$00,$38,$0C,$3C,$4C,$34,$00 -.byte $70,$70,$7C,$7E,$7E,$7E,$7E,$7C -.byte $60,$60,$78,$6C,$6C,$6C,$78,$00 -.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3C -.byte $00,$00,$38,$6C,$60,$6C,$38,$00 -.byte $0E,$0E,$3E,$7E,$7E,$7E,$7E,$3E -.byte $0C,$0C,$3C,$6C,$6C,$6C,$3C,$00 -.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3E -.byte $00,$00,$38,$64,$7C,$60,$3C,$00 -.byte $00,$3C,$7E,$7E,$7C,$7C,$70,$70 -.byte $00,$38,$6C,$60,$78,$60,$60,$00 -.byte $00,$00,$3E,$7E,$7E,$3E,$7E,$7C -.byte $00,$00,$3C,$6C,$3C,$0C,$78,$00 -.byte $70,$70,$7C,$7E,$7E,$7E,$7E,$7E -.byte $60,$60,$78,$6C,$6C,$6C,$6C,$00 -.byte $00,$1C,$1C,$1C,$1C,$1C,$1C,$1C -.byte $00,$18,$00,$18,$18,$18,$18,$00 -.byte $00,$0E,$0E,$0E,$0E,$7E,$7E,$3C -.byte $00,$0C,$00,$0C,$0C,$6C,$38,$00 -.byte $70,$70,$7E,$7E,$7C,$7C,$7E,$7E -.byte $60,$60,$6C,$78,$70,$78,$6C,$00 -.byte $3C,$3C,$1C,$1C,$1C,$1C,$1C,$1C -.byte $38,$18,$18,$18,$18,$18,$18,$00 -.byte $00,$00,$7E,$7F,$7F,$7F,$77,$77 -.byte $00,$00,$6C,$7E,$56,$66,$66,$00 -.byte $00,$00,$7C,$7E,$7E,$7E,$7E,$7E -.byte $00,$00,$78,$6C,$6C,$6C,$6C,$00 -.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3C -.byte $00,$00,$38,$6C,$6C,$6C,$38,$00 -.byte $00,$00,$7C,$7E,$7E,$7C,$70,$70 -.byte $00,$00,$78,$6C,$78,$60,$60,$00 -.byte $00,$00,$3E,$7E,$7E,$3E,$0E,$0E -.byte $00,$00,$3C,$6C,$3C,$0C,$0C,$00 -.byte $00,$00,$7C,$7E,$7E,$70,$70,$70 -.byte $00,$00,$78,$6C,$60,$60,$60,$00 -.byte $00,$00,$3E,$7E,$7C,$3E,$7E,$7C -.byte $00,$00,$3C,$60,$38,$0C,$78,$00 -.byte $00,$1C,$3E,$3E,$1C,$1C,$1E,$0E -.byte $00,$18,$3C,$18,$18,$18,$0C,$00 -.byte $00,$00,$7E,$7E,$7E,$7E,$7E,$3E -.byte $00,$00,$6C,$6C,$6C,$6C,$34,$00 -.byte $00,$00,$7E,$7E,$7E,$7E,$3E,$1C -.byte $00,$00,$6C,$6C,$6C,$3C,$18,$00 -.byte $00,$00,$E7,$E7,$FF,$FF,$7E,$7E -.byte $00,$00,$C6,$C6,$D6,$7C,$6C,$00 -.byte $00,$00,$7E,$7E,$3C,$3C,$7E,$7E -.byte $00,$00,$6C,$38,$10,$38,$6C,$00 -.byte $00,$00,$7E,$7E,$7E,$3E,$7C,$78 -.byte $00,$00,$6C,$6C,$3C,$18,$70,$00 -.byte $00,$00,$7E,$7E,$3C,$78,$7E,$7E -.byte $00,$00,$7C,$18,$30,$60,$7C,$00 -.byte $0E,$1E,$1C,$3C,$3C,$1C,$1E,$0E -.byte $0C,$18,$18,$30,$18,$18,$0C,$00 -.byte $18,$18,$18,$18,$18,$18,$18,$18 -.byte $10,$10,$10,$10,$10,$10,$10,$00 -.byte $70,$78,$38,$3C,$3C,$38,$78,$70 -.byte $60,$30,$30,$18,$30,$30,$60,$00 -.byte $00,$00,$7F,$FF,$FE,$00,$00,$00 -.byte $00,$00,$76,$DC,$00,$00,$00,$00 -.byte $7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F -.byte $7E,$7E,$7E,$7E,$7E,$7E,$7E,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $F0,$F0,$F0,$F0,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $0F,$0F,$0F,$0F,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$F0,$F0,$F0,$F0 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$F0,$F0,$F0,$F0 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$0F,$0F,$0F,$0F -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $F0,$F0,$F0,$F0,$0F,$0F,$0F,$0F -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$0F,$0F,$0F,$0F -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $F0,$F0,$F0,$F0,$FF,$FF,$FF,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $0F,$0F,$0F,$0F,$FF,$FF,$FF,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $7F,$80,$80,$80,$80,$80,$80,$80 -.byte $FF,$00,$00,$00,$00,$00,$00,$00 -.byte $3F,$3F,$C0,$C0,$C0,$C0,$C0,$C0 -.byte $FF,$FF,$00,$00,$00,$00,$00,$00 -.byte $1F,$1F,$1F,$E0,$E0,$E0,$E0,$E0 -.byte $FF,$FF,$FF,$00,$00,$00,$00,$00 -.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 -.byte $FF,$FF,$FF,$FF,$00,$00,$00,$00 -.byte $07,$07,$07,$07,$07,$F8,$F8,$F8 -.byte $FF,$FF,$FF,$FF,$FF,$00,$00,$00 -.byte $03,$03,$03,$03,$03,$03,$FC,$FC -.byte $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -.byte $01,$01,$01,$01,$01,$01,$01,$FE -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $7F,$80,$80,$80,$80,$80,$80,$80 -.byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $3F,$3F,$C0,$C0,$C0,$C0,$C0,$C0 -.byte $00,$00,$FF,$FF,$FF,$FF,$FF,$FF -.byte $1F,$1F,$1F,$E0,$E0,$E0,$E0,$E0 -.byte $00,$00,$00,$FF,$FF,$FF,$FF,$FF -.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 -.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF -.byte $07,$07,$07,$07,$07,$F8,$F8,$F8 -.byte $00,$00,$00,$00,$00,$FF,$FF,$FF -.byte $03,$03,$03,$03,$03,$03,$FC,$FC -.byte $00,$00,$00,$00,$00,$00,$FF,$FF -.byte $01,$01,$01,$01,$01,$01,$01,$FE -.byte $00,$00,$00,$00,$00,$00,$00,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $FF,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$FF -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $80,$80,$80,$80,$80,$80,$80,$80 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $01,$01,$01,$01,$01,$01,$01,$01 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$03,$0C,$30,$C0 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $03,$0C,$30,$C0,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $C0,$30,$0C,$03,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $00,$00,$00,$00,$C0,$30,$0C,$03 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $10,$10,$20,$20,$40,$40,$80,$80 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $01,$01,$02,$02,$04,$04,$08,$08 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $80,$80,$40,$40,$20,$20,$10,$10 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $08,$08,$04,$04,$02,$02,$01,$01 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $01,$02,$04,$08,$10,$20,$40,$80 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $80,$40,$20,$10,$08,$04,$02,$01 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $81,$42,$24,$18,$18,$24,$42,$81 -.byte $00,$00,$00,$00,$00,$00,$00,$00 -.byte $3C,$42,$81,$81,$81,$81,$42,$3C -.byte $0C,$00,$10,$00,$00,$00,$04,$00 -.byte $0C,$00,$10,$3E,$2E,$2E,$2A,$2E -.byte $00,$3C,$BC,$5A,$00,$20,$24,$7E -.byte $18,$00,$80,$42,$18,$04,$00,$12 -.byte $00,$FF,$00,$FF,$00,$FF,$00,$FF -.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA -.byte $24,$00,$5A,$00,$24,$00,$18,$00 -.byte $24,$00,$5A,$00,$24,$00,$18,$3C -.byte $4D,$41,$00,$2E,$24,$24,$6A,$6E -.byte $0C,$00,$10,$3E,$2E,$2E,$2A,$2E -.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -.byte $E7,$C3,$C3,$E7,$E7,$DB,$DB,$93 -.byte $24,$24,$C3,$08,$18,$C3,$24,$24 -.byte $18,$66,$42,$91,$89,$42,$66,$18 -.byte $18,$24,$00,$24,$00,$18,$00,$00 -.byte $24,$00,$5A,$00,$24,$00,$18,$3C -.byte $5A,$36,$00,$00,$6C,$3B,$76,$00 -.byte $24,$7E,$54,$45,$48,$7E,$3E,$00 -.byte $00,$08,$14,$2A,$55,$2A,$14,$08 -.byte $80,$49,$36,$3E,$5D,$3E,$36,$49 -.byte $0F,$1F,$3F,$3D,$38,$38,$3C,$16 -.byte $0F,$1F,$3F,$3F,$3F,$3F,$3F,$17 -.byte $F0,$F8,$BC,$14,$A0,$A0,$08,$1C -.byte $F0,$F8,$FC,$FC,$58,$58,$F8,$FC -.byte $F2,$F1,$E1,$0F,$1F,$3B,$11,$00 -.byte $0D,$0E,$0E,$00,$00,$04,$0E,$0F -.byte $00,$E0,$F0,$F0,$F8,$DC,$88,$00 -.byte $C0,$00,$00,$00,$00,$20,$70,$78 -.byte $F2,$F1,$E1,$1F,$3F,$13,$03,$00 -.byte $0D,$0E,$0E,$00,$00,$2C,$3C,$20 -.byte $00,$E0,$F0,$F8,$E0,$C0,$00,$00 -.byte $C0,$00,$00,$04,$1C,$3C,$1C,$00 -.byte $FF,$2F,$7F,$FF,$FF,$F2,$F7,$FF -.byte $00,$FE,$FC,$D0,$00,$EF,$CF,$0D -.byte $FF,$F9,$F9,$FF,$FF,$9F,$9F,$FF -.byte $0F,$6F,$6F,$0F,$F0,$F6,$F6,$F0 -.byte $FF,$FF,$DF,$FF,$FF,$FF,$FF,$FF -.byte $00,$7E,$7C,$7E,$74,$7C,$50,$00 -.byte $05,$67,$4F,$1F,$9D,$3D,$A9,$FF -.byte $FF,$FE,$FF,$FE,$FE,$FF,$FE,$A4 -.byte $00,$0F,$3F,$3F,$7F,$00,$7F,$7F -.byte $0F,$30,$4D,$6D,$AD,$FF,$80,$AD -.byte $7F,$7F,$7F,$00,$7F,$7F,$7F,$00 -.byte $AD,$AD,$AD,$FF,$80,$AD,$AD,$FF -.byte $00,$F0,$FC,$FC,$FE,$00,$FE,$FE -.byte $F0,$0C,$B2,$B6,$B7,$FF,$01,$B7 -.byte $EA,$E2,$FE,$00,$FE,$FE,$FE,$00 -.byte $B5,$BD,$A1,$FF,$01,$B7,$B7,$FF -.byte $00,$22,$4C,$1F,$36,$3F,$5F,$17 -.byte $01,$63,$3F,$20,$2D,$29,$60,$EC -.byte $FF,$7F,$36,$3F,$1F,$5C,$22,$00 -.byte $68,$20,$0D,$29,$20,$77,$43,$01 -.byte $80,$C4,$F2,$FC,$DC,$FC,$FA,$D8 -.byte $00,$86,$DC,$04,$B0,$24,$06,$37 -.byte $FF,$FE,$DC,$FC,$FC,$FA,$C4,$80 -.byte $26,$04,$B0,$20,$04,$CC,$86,$00 -.byte $00,$00,$00,$1C,$26,$2F,$3F,$3F -.byte $00,$00,$1C,$3E,$7F,$7F,$7F,$7F -.byte $1F,$0F,$07,$03,$01,$00,$00,$00 -.byte $3F,$1F,$0F,$07,$02,$01,$00,$00 -.byte $00,$00,$00,$38,$4C,$DC,$F4,$F4 -.byte $00,$00,$38,$74,$FA,$FA,$FA,$FA -.byte $E8,$D0,$A0,$40,$80,$00,$00,$00 -.byte $F4,$E8,$D0,$A0,$40,$80,$00,$00 -.byte $00,$03,$0F,$30,$73,$73,$73,$70 -.byte $03,$0F,$3F,$FF,$FC,$FD,$FD,$FF -.byte $73,$73,$3F,$CF,$33,$0C,$03,$00 -.byte $FC,$FD,$F1,$3F,$0F,$03,$00,$00 -.byte $80,$20,$C8,$72,$3A,$3A,$3A,$7A -.byte $00,$C0,$F0,$BC,$DC,$DC,$DC,$9C -.byte $FA,$FA,$F2,$CE,$38,$E0,$80,$00 -.byte $3C,$FC,$FC,$F0,$C0,$00,$00,$00 -.byte $B0,$B0,$BF,$B0,$BF,$BF,$B0,$B0 -.byte $E0,$E0,$E0,$FF,$EF,$E0,$E0,$E0 -.byte $00,$00,$00,$0C,$3E,$3E,$7B,$FB -.byte $00,$00,$00,$38,$7C,$7C,$FE,$FE -.byte $0B,$0B,$FB,$0B,$FB,$FB,$0B,$0B -.byte $0E,$0E,$0E,$FE,$F6,$0E,$0E,$0E -.byte $7B,$F3,$F3,$66,$7E,$3C,$00,$00 -.byte $FE,$FE,$7C,$7C,$38,$00,$00,$00 -.byte $00,$17,$0F,$1F,$12,$30,$08,$18 -.byte $00,$00,$00,$00,$0D,$0F,$07,$07 -.byte $0F,$1F,$1F,$13,$03,$0E,$0E,$0F -.byte $0F,$1F,$1F,$1C,$0C,$00,$0E,$0F -.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 -.byte $00,$00,$00,$00,$A0,$B0,$E0,$C0 -.byte $C0,$E0,$E0,$C0,$C0,$C0,$E0,$70 -.byte $C0,$E0,$E0,$20,$20,$00,$E0,$70 -.byte $00,$17,$0F,$1F,$12,$30,$08,$18 -.byte $00,$00,$00,$00,$0D,$0F,$07,$07 -.byte $1F,$1F,$0F,$0F,$3F,$7C,$30,$18 -.byte $1F,$3F,$3F,$00,$00,$60,$30,$18 -.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 -.byte $00,$00,$00,$00,$A0,$B0,$E0,$C0 -.byte $C0,$F0,$F8,$E4,$FC,$FC,$7C,$00 -.byte $CC,$FC,$F8,$04,$0C,$0C,$0C,$00 -.byte $00,$17,$0F,$1F,$12,$30,$08,$18 -.byte $00,$00,$00,$00,$0D,$0F,$07,$07 -.byte $0F,$1F,$1F,$13,$03,$0E,$0E,$0F -.byte $0F,$1F,$1F,$1C,$0C,$00,$0E,$0F -.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 -.byte $00,$00,$00,$00,$A0,$B0,$E0,$C0 -.byte $C0,$C0,$C0,$C0,$C0,$C0,$E0,$00 -.byte $C0,$C0,$E0,$20,$00,$C0,$E0,$00 -.byte $00,$00,$17,$0F,$1F,$12,$30,$08 -.byte $00,$00,$00,$00,$00,$0D,$0F,$07 -.byte $18,$1F,$0F,$0F,$3F,$7B,$43,$03 -.byte $07,$1F,$3F,$37,$20,$60,$43,$03 -.byte $00,$00,$C8,$F8,$F0,$40,$40,$00 -.byte $00,$00,$00,$00,$00,$A0,$B0,$E0 -.byte $00,$E0,$E0,$C0,$C0,$80,$80,$C0 -.byte $C0,$F8,$F8,$C0,$00,$00,$80,$C0 -.byte $00,$17,$0F,$1F,$12,$30,$08,$18 -.byte $00,$00,$00,$00,$0D,$0F,$07,$1F -.byte $3F,$3F,$0F,$7F,$7F,$7E,$40,$00 -.byte $3F,$7F,$6F,$60,$60,$60,$40,$00 -.byte $00,$C8,$F8,$F0,$40,$40,$00,$00 -.byte $00,$00,$00,$00,$A0,$B0,$E0,$CC -.byte $D0,$F8,$F0,$C4,$FC,$FC,$7C,$00 -.byte $DC,$F8,$F0,$04,$0C,$0C,$0C,$00 -.byte $00,$17,$0F,$1F,$1F,$3F,$0F,$7F -.byte $00,$00,$00,$00,$00,$00,$30,$60 -.byte $7F,$3F,$1F,$0F,$0F,$0F,$0F,$0F -.byte $7F,$3F,$1F,$00,$00,$06,$0F,$0F -.byte $00,$E0,$F0,$FC,$FC,$FC,$FC,$FC -.byte $00,$18,$08,$04,$04,$00,$0C,$04 -.byte $F8,$F8,$F8,$F8,$F0,$00,$00,$00 -.byte $F8,$F8,$C0,$00,$70,$00,$00,$00 -.byte $00,$17,$0F,$1F,$1A,$19,$0A,$7C -.byte $00,$00,$00,$00,$05,$66,$65,$63 -.byte $7F,$3F,$4F,$7F,$7F,$7E,$00,$00 -.byte $7F,$3F,$4F,$60,$60,$60,$00,$00 -.byte $00,$E8,$F0,$F8,$58,$9C,$50,$38 -.byte $00,$00,$00,$00,$A0,$60,$A0,$C3 -.byte $FC,$FE,$F0,$E0,$F0,$F0,$E0,$70 -.byte $FF,$FE,$F0,$00,$00,$00,$E0,$70 -.byte $FF,$80,$80,$9F,$90,$97,$97,$97 -.byte $00,$7F,$7F,$7F,$7F,$7F,$7F,$7F -.byte $97,$97,$97,$97,$9F,$BF,$FF,$00 -.byte $7F,$7F,$7F,$78,$7F,$60,$40,$00 -.byte $FE,$02,$06,$FE,$0E,$FE,$FE,$FE -.byte $00,$FE,$FC,$F8,$F8,$E8,$E8,$E8 -.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$00 -.byte $E8,$E8,$E8,$08,$F8,$00,$00,$00 -.byte $00,$3F,$7F,$60,$6E,$72,$76,$76 -.byte $00,$00,$1F,$3F,$31,$2D,$29,$29 -.byte $7E,$60,$60,$7F,$7C,$7E,$3F,$00 -.byte $21,$3F,$3F,$38,$1B,$01,$00,$00 -.byte $00,$FC,$FE,$0E,$7E,$4E,$6E,$6E -.byte $00,$00,$F8,$FC,$8C,$B4,$94,$94 -.byte $7E,$0E,$0E,$FE,$3E,$7E,$FC,$00 -.byte $84,$FC,$FC,$1C,$D8,$80,$00,$00 -.byte $00,$7F,$7F,$60,$7F,$7F,$77,$76 -.byte $00,$00,$3F,$3F,$00,$20,$29,$29 -.byte $72,$6E,$60,$77,$7E,$3C,$1F,$00 -.byte $2D,$31,$3F,$3C,$19,$03,$00,$00 -.byte $00,$FE,$FE,$0E,$FE,$FE,$EE,$6E -.byte $00,$00,$FC,$FC,$00,$04,$94,$94 -.byte $4E,$7E,$0E,$EE,$7E,$3C,$F8,$00 -.byte $B4,$8C,$FC,$3C,$98,$C0,$00,$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$7C,\$EE,\$EE,\$EE,\$EE,\$7C,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$38,\$78,\$38,\$38,\$38,\$7C,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$7C,\$0E,\$7C,\$E0,\$EE,\$FE,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$FC,\$0E,\$3C,\$0E,\$0E,\$FC,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$3E,\$7E,\$EE,\$EE,\$FE,\$0E,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$FC,\$E0,\$FC,\$0E,\$EE,\$7C,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$7C,\$E0,\$FC,\$EE,\$EE,\$7C,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$FE,\$EE,\$1C,\$1C,\$38,\$38,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$7C,\$EE,\$7C,\$EE,\$EE,\$7C,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$7C,\$EE,\$EE,\$7E,\$0E,\$3C,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$FE,\$1C,\$38,\$70,\$E0,\$FE,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$40,\$60,\$70,\$78,\$7C +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$7E,\$7C,\$78,\$70,\$60,\$40,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$03,\$37,\$7F,\$7F +.byte \$00,\$00,\$00,\$00,\$03,\$07,\$07,\$07 +.byte \$7F,\$3F,\$1F,\$0F,\$00,\$00,\$00,\$00 +.byte \$07,\$03,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$C0,\$E0,\$FC,\$FE +.byte \$00,\$00,\$00,\$00,\$C0,\$E0,\$E0,\$E0 +.byte \$FE,\$FE,\$FC,\$F8,\$70,\$00,\$00,\$00 +.byte \$E0,\$C0,\$00,\$08,\$70,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$03,\$37,\$7F,\$7F,\$7F +.byte \$00,\$00,\$00,\$03,\$07,\$07,\$07,\$07 +.byte \$3F,\$1F,\$0F,\$00,\$00,\$00,\$00,\$00 +.byte \$03,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$C0,\$EC,\$FE,\$FE,\$FE +.byte \$00,\$00,\$00,\$C0,\$E0,\$E0,\$E0,\$E0 +.byte \$FE,\$FC,\$F0,\$00,\$00,\$00,\$00,\$00 +.byte \$C0,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$20 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$20 +.byte \$20,\$40,\$03,\$07,\$1F,\$5F,\$5F,\$07 +.byte \$20,\$60,\$23,\$27,\$23,\$27,\$27,\$27 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$80,\$F0,\$F8,\$FC,\$FC,\$FC +.byte \$00,\$00,\$80,\$00,\$C0,\$E0,\$E0,\$E0 +.byte \$20,\$20,\$40,\$00,\$00,\$00,\$10,\$1C +.byte \$20,\$20,\$60,\$20,\$20,\$20,\$20,\$20 +.byte \$0F,\$07,\$03,\$01,\$03,\$57,\$5F,\$1F +.byte \$20,\$20,\$20,\$20,\$23,\$27,\$27,\$27 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$80,\$E0,\$F0,\$F8,\$F8,\$F8,\$F8 +.byte \$00,\$00,\$00,\$00,\$C0,\$E0,\$E0,\$E0 +.byte \$00,\$0C,\$00,\$0C,\$1E,\$3F,\$3F,\$3F +.byte \$00,\$00,\$FF,\$00,\$00,\$01,\$03,\$03 +.byte \$3F,\$3F,\$1F,\$0F,\$03,\$00,\$00,\$00 +.byte \$03,\$03,\$01,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$60,\$00,\$70,\$70,\$F8,\$FC,\$FC +.byte \$00,\$00,\$FF,\$00,\$00,\$E8,\$FC,\$FC +.byte \$FC,\$F8,\$F8,\$F8,\$F0,\$E0,\$00,\$00 +.byte \$F4,\$F0,\$E0,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$80,\$60,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$80,\$E0,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$10,\$1C,\$3B,\$3F,\$7F,\$7F,\$7F +.byte \$0E,\$0E,\$00,\$03,\$07,\$07,\$07,\$07 +.byte \$7F,\$3F,\$1F,\$0F,\$00,\$00,\$00,\$00 +.byte \$07,\$03,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$08,\$38,\$DC,\$FC,\$FE,\$FE,\$FE +.byte \$70,\$70,\$00,\$C0,\$E0,\$E0,\$E0,\$E0 +.byte \$FE,\$FE,\$FC,\$F8,\$70,\$00,\$00,\$00 +.byte \$E0,\$C0,\$00,\$08,\$70,\$00,\$00,\$00 +.byte \$00,\$10,\$1C,\$3B,\$3F,\$7F,\$7F,\$7F +.byte \$0E,\$0E,\$00,\$03,\$07,\$07,\$07,\$07 +.byte \$3F,\$1F,\$0F,\$00,\$00,\$00,\$00,\$00 +.byte \$03,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$08,\$38,\$DC,\$FC,\$FE,\$FE,\$FE +.byte \$70,\$70,\$00,\$C0,\$E0,\$E0,\$E0,\$E0 +.byte \$FC,\$F8,\$F0,\$00,\$00,\$00,\$00,\$00 +.byte \$C0,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$01,\$03,\$07,\$0F,\$0F,\$0F,\$0F +.byte \$00,\$00,\$00,\$00,\$00,\$01,\$03,\$03 +.byte \$0F,\$1F,\$1F,\$1F,\$0F,\$07,\$03,\$00 +.byte \$03,\$13,\$11,\$10,\$08,\$00,\$00,\$00 +.byte \$00,\$C0,\$E0,\$E0,\$C0,\$E0,\$F0,\$F0 +.byte \$00,\$00,\$00,\$00,\$00,\$E0,\$F0,\$F0 +.byte \$F0,\$F0,\$E0,\$C0,\$C0,\$C0,\$80,\$00 +.byte \$F0,\$F0,\$E0,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$01,\$03,\$07,\$0F,\$0F,\$0F,\$0F +.byte \$00,\$00,\$00,\$00,\$00,\$01,\$03,\$03 +.byte \$0F,\$0F,\$0F,\$0F,\$07,\$07,\$03,\$00 +.byte \$03,\$03,\$01,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$C0,\$E0,\$E0,\$C0,\$E0,\$F0,\$F0 +.byte \$00,\$00,\$00,\$00,\$00,\$E0,\$F0,\$F0 +.byte \$F0,\$F0,\$E0,\$C0,\$E0,\$E0,\$C0,\$00 +.byte \$F0,\$F0,\$E0,\$00,\$00,\$00,\$00,\$00 +.byte \$07,\$0F,\$5F,\$5F,\$0F,\$07,\$00,\$00 +.byte \$27,\$23,\$20,\$20,\$20,\$20,\$20,\$20 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$20,\$20,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$F8,\$F8,\$F0,\$F0,\$E0,\$C0,\$00,\$00 +.byte \$E0,\$C0,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$1F,\$1F,\$0F,\$0F,\$07,\$00,\$00,\$00 +.byte \$27,\$23,\$20,\$0C,\$07,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$F8,\$F8,\$F0,\$F0,\$00,\$00,\$00,\$00 +.byte \$E0,\$C0,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$03,\$0F,\$1F,\$1F,\$1F +.byte \$00,\$00,\$07,\$00,\$08,\$19,\$13,\$13 +.byte \$0F,\$0F,\$0F,\$0F,\$03,\$00,\$00,\$00 +.byte \$03,\$03,\$01,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$60,\$00,\$E0,\$C1,\$E3,\$F7,\$FF +.byte \$00,\$00,\$FF,\$00,\$00,\$E0,\$F0,\$F0 +.byte \$FE,\$FC,\$FC,\$F8,\$F0,\$00,\$00,\$00 +.byte \$F0,\$F0,\$E0,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$04,\$03,\$C0,\$80,\$80,\$00,\$00 +.byte \$00,\$04,\$FF,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$01,\$03,\$07,\$07,\$07,\$07 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$01,\$01 +.byte \$07,\$0F,\$0F,\$0F,\$07,\$03,\$01,\$00 +.byte \$01,\$09,\$08,\$08,\$04,\$00,\$00,\$00 +.byte \$00,\$E0,\$F8,\$FE,\$FC,\$F4,\$F8,\$F8 +.byte \$00,\$00,\$00,\$00,\$03,\$F3,\$FB,\$F8 +.byte \$F8,\$F8,\$F4,\$FC,\$FE,\$F8,\$E0,\$00 +.byte \$F8,\$FB,\$F3,\$03,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$01,\$03,\$07,\$07,\$07,\$07 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$01,\$01 +.byte \$07,\$07,\$07,\$07,\$03,\$01,\$00,\$00 +.byte \$01,\$01,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$E0,\$F8,\$FE,\$FC,\$F4,\$F8,\$F8 +.byte \$00,\$00,\$00,\$00,\$03,\$F3,\$FB,\$F8 +.byte \$F8,\$F8,\$F4,\$FC,\$FE,\$F8,\$E0,\$00 +.byte \$F8,\$FB,\$F3,\$03,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$66,\$FF,\$FF,\$FF,\$7E,\$3C,\$18,\$00 +.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 +.byte \$66,\$FF,\$FF,\$FF,\$7E,\$3C,\$18,\$00 +.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 +.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 +.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 +.byte \$66,\$FF,\$FF,\$FF,\$7E,\$3C,\$18,\$00 +.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 +.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 +.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 +.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 +.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 +.byte \$00,\$00,\$08,\$10,\$10,\$20,\$00,\$00 +.byte \$07,\$1F,\$37,\$6F,\$6F,\$DF,\$FF,\$FF +.byte \$08,\$08,\$04,\$03,\$00,\$00,\$00,\$00 +.byte \$F7,\$F7,\$FB,\$7C,\$7F,\$3F,\$1F,\$07 +.byte \$00,\$00,\$00,\$E0,\$10,\$08,\$08,\$04 +.byte \$E0,\$F8,\$FC,\$1E,\$EE,\$F7,\$F7,\$FB +.byte \$04,\$24,\$44,\$84,\$08,\$00,\$00,\$00 +.byte \$FB,\$DB,\$BB,\$7A,\$F6,\$FC,\$F8,\$E0 +.byte \$00,\$00,\$00,\$03,\$14,\$24,\$21,\$20 +.byte \$07,\$1F,\$3F,\$7C,\$6B,\$DB,\$DE,\$DF +.byte \$20,\$10,\$00,\$03,\$00,\$00,\$00,\$00 +.byte \$DF,\$EF,\$FF,\$7C,\$7F,\$3F,\$1F,\$07 +.byte \$00,\$00,\$00,\$E0,\$10,\$08,\$88,\$44 +.byte \$E0,\$F8,\$FC,\$1E,\$EE,\$F7,\$77,\$BB +.byte \$24,\$20,\$40,\$80,\$00,\$00,\$00,\$00 +.byte \$DB,\$DF,\$BF,\$7E,\$FE,\$FC,\$F8,\$E0 +.byte \$3C,\$64,\$C5,\$C0,\$C0,\$C0,\$64,\$39 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$D9,\$EB,\$C3,\$C3,\$C3,\$F1 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$E3,\$37,\$F6,\$06,\$B7,\$E3 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$E3,\$60,\$6F,\$E3,\$63,\$63,\$E3,\$6F +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$18,\$18,\$3E,\$18,\$18,\$18,\$19,\$CE +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$3E,\$66,\$78,\$0E,\$66,\$7C +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$01,\$03,\$03,\$01,\$01,\$03 +.byte \$00,\$10,\$08,\$06,\$20,\$16,\$08,\$00 +.byte \$07,\$07,\$07,\$07,\$07,\$03,\$01,\$00 +.byte \$20,\$59,\$40,\$92,\$28,\$20,\$20,\$40 +.byte \$00,\$00,\$80,\$C0,\$C0,\$80,\$80,\$C0 +.byte \$00,\$08,\$10,\$60,\$04,\$68,\$10,\$00 +.byte \$E0,\$E0,\$E0,\$E0,\$E0,\$C0,\$80,\$00 +.byte \$04,\$1A,\$02,\$49,\$14,\$84,\$04,\$02 +.byte \$00,\$01,\$03,\$03,\$01,\$01,\$03,\$07 +.byte \$02,\$04,\$06,\$00,\$36,\$08,\$00,\$20 +.byte \$07,\$07,\$07,\$07,\$03,\$01,\$00,\$00 +.byte \$59,\$40,\$42,\$18,\$20,\$20,\$10,\$10 +.byte \$00,\$80,\$C0,\$C0,\$80,\$80,\$C0,\$E0 +.byte \$40,\$20,\$60,\$00,\$6C,\$10,\$00,\$04 +.byte \$E0,\$E0,\$E0,\$E0,\$C0,\$80,\$00,\$00 +.byte \$1A,\$02,\$42,\$18,\$84,\$04,\$08,\$08 +.byte \$00,\$00,\$01,\$03,\$03,\$01,\$01,\$03 +.byte \$00,\$08,\$04,\$06,\$00,\$26,\$18,\$00 +.byte \$07,\$07,\$07,\$07,\$07,\$03,\$01,\$00 +.byte \$30,\$C9,\$00,\$02,\$18,\$20,\$20,\$20 +.byte \$00,\$00,\$80,\$C0,\$C0,\$80,\$80,\$C0 +.byte \$00,\$00,\$08,\$78,\$08,\$70,\$00,\$00 +.byte \$E0,\$E0,\$E0,\$E0,\$E0,\$C0,\$80,\$00 +.byte \$00,\$1C,\$02,\$4A,\$16,\$84,\$02,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$02,\$02,\$02,\$08,\$14,\$2A,\$4A +.byte \$00,\$00,\$01,\$03,\$01,\$09,\$15,\$35 +.byte \$8A,\$6A,\$14,\$02,\$02,\$00,\$00,\$00 +.byte \$75,\$15,\$03,\$01,\$01,\$01,\$00,\$00 +.byte \$00,\$40,\$40,\$40,\$10,\$28,\$54,\$52 +.byte \$00,\$00,\$80,\$C0,\$80,\$90,\$A8,\$AC +.byte \$51,\$56,\$28,\$40,\$40,\$00,\$00,\$00 +.byte \$AE,\$A8,\$C0,\$80,\$80,\$80,\$00,\$00 +.byte \$00,\$02,\$02,\$02,\$00,\$04,\$0A,\$0A +.byte \$00,\$00,\$01,\$03,\$01,\$01,\$05,\$05 +.byte \$12,\$12,\$3C,\$22,\$02,\$00,\$00,\$00 +.byte \$0D,\$0D,\$03,\$01,\$01,\$01,\$00,\$00 +.byte \$00,\$40,\$40,\$40,\$00,\$20,\$50,\$50 +.byte \$00,\$00,\$80,\$C0,\$80,\$80,\$A0,\$A0 +.byte \$48,\$48,\$3C,\$44,\$40,\$00,\$00,\$00 +.byte \$B0,\$B0,\$C0,\$80,\$80,\$80,\$00,\$00 +.byte \$00,\$02,\$02,\$02,\$00,\$04,\$0A,\$0A +.byte \$00,\$00,\$01,\$03,\$01,\$01,\$05,\$05 +.byte \$12,\$12,\$3C,\$22,\$02,\$00,\$00,\$00 +.byte \$0D,\$0D,\$03,\$01,\$01,\$01,\$00,\$00 +.byte \$00,\$40,\$40,\$40,\$00,\$20,\$50,\$50 +.byte \$00,\$00,\$80,\$C0,\$80,\$80,\$A0,\$A0 +.byte \$48,\$48,\$3C,\$44,\$40,\$00,\$00,\$00 +.byte \$B0,\$B0,\$C0,\$80,\$80,\$80,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$1F,\$3F,\$7F +.byte \$08,\$86,\$71,\$0A,\$12,\$00,\$08,\$02 +.byte \$7F,\$3F,\$1F,\$00,\$00,\$00,\$00,\$00 +.byte \$20,\$08,\$00,\$12,\$0A,\$71,\$86,\$08 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$98,\$FC +.byte \$00,\$00,\$10,\$22,\$44,\$28,\$28,\$00 +.byte \$FC,\$98,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$28,\$28,\$44,\$22,\$10,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$0F,\$1F,\$3F +.byte \$00,\$07,\$30,\$C9,\$09,\$00,\$04,\$01 +.byte \$3F,\$1F,\$0F,\$00,\$00,\$00,\$00,\$00 +.byte \$10,\$04,\$00,\$09,\$C9,\$30,\$07,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$80,\$CC,\$FE +.byte \$00,\$00,\$90,\$10,\$20,\$16,\$15,\$00 +.byte \$FE,\$CC,\$80,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$15,\$16,\$20,\$10,\$90,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$1F,\$3F,\$7F +.byte \$02,\$02,\$E1,\$11,\$12,\$00,\$08,\$02 +.byte \$7F,\$3F,\$1F,\$00,\$00,\$00,\$00,\$00 +.byte \$20,\$08,\$00,\$12,\$0A,\$32,\$5C,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$98,\$FC +.byte \$00,\$00,\$20,\$40,\$42,\$2C,\$28,\$00 +.byte \$FC,\$98,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$28,\$28,\$28,\$1C,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$01,\$02,\$02,\$04,\$03,\$04,\$1B,\$00 +.byte \$00,\$01,\$01,\$03,\$00,\$03,\$04,\$3F +.byte \$00,\$1B,\$04,\$03,\$04,\$02,\$02,\$01 +.byte \$3F,\$04,\$03,\$00,\$03,\$01,\$01,\$00 +.byte \$00,\$80,\$40,\$20,\$D0,\$20,\$CE,\$00 +.byte \$00,\$00,\$80,\$C0,\$20,\$C0,\$08,\$FC +.byte \$00,\$CE,\$20,\$D0,\$20,\$40,\$80,\$00 +.byte \$FC,\$08,\$C0,\$20,\$C0,\$80,\$00,\$00 +.byte \$00,\$00,\$0C,\$07,\$04,\$04,\$1B,\$00 +.byte \$00,\$00,\$00,\$00,\$03,\$03,\$04,\$3F +.byte \$00,\$1B,\$04,\$04,\$07,\$0C,\$00,\$00 +.byte \$3F,\$04,\$03,\$03,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$C0,\$20,\$CE,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$C0,\$08,\$FC +.byte \$00,\$CE,\$20,\$C0,\$00,\$00,\$00,\$00 +.byte \$FC,\$08,\$C0,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$0C,\$07,\$04,\$04,\$1B,\$00 +.byte \$00,\$00,\$00,\$00,\$03,\$03,\$04,\$3F +.byte \$00,\$1B,\$04,\$04,\$07,\$0C,\$00,\$00 +.byte \$3F,\$04,\$03,\$03,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$C0,\$20,\$CE,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$C0,\$08,\$FC +.byte \$00,\$CE,\$20,\$C0,\$00,\$00,\$00,\$00 +.byte \$FC,\$08,\$C0,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$3C,\$42,\$42,\$24,\$3C,\$3C +.byte \$00,\$00,\$3C,\$42,\$42,\$24,\$24,\$24 +.byte \$3C,\$7E,\$FF,\$BF,\$BF,\$9F,\$42,\$3C +.byte \$24,\$42,\$81,\$C1,\$C1,\$E1,\$7E,\$3C +.byte \$42,\$BD,\$81,\$BD,\$7E,\$7E,\$7E,\$7E +.byte \$42,\$FF,\$FF,\$FF,\$42,\$42,\$42,\$42 +.byte \$7E,\$7E,\$7E,\$7E,\$BD,\$81,\$BD,\$42 +.byte \$42,\$42,\$42,\$42,\$FF,\$FF,\$FF,\$42 +.byte \$00,\$00,\$FC,\$FE,\$C0,\$CC,\$DE,\$DA +.byte \$00,\$00,\$FC,\$80,\$BF,\$BF,\$BF,\$BF +.byte \$F0,\$F0,\$F0,\$F0,\$DA,\$DE,\$4C,\$00 +.byte \$BF,\$BF,\$BF,\$BF,\$BF,\$BF,\$3F,\$3F +.byte \$7E,\$FF,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$7E,\$FF,\$42,\$42,\$24,\$24,\$18,\$18 +.byte \$18,\$18,\$3C,\$3C,\$7E,\$7E,\$FF,\$7E +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$FF,\$7E +.byte \$78,\$CC,\$CC,\$0C,\$38,\$70,\$C0,\$FC +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$30,\$F0,\$30,\$30,\$30,\$30,\$30,\$FC +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$07,\$03,\$03,\$03,\$03,\$03,\$03,\$07 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$CF,\$63,\$63,\$63,\$C3,\$03,\$03,\$8F +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$0F,\$01,\$0F,\$19,\$19,\$CD +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$3B,\$9B,\$9B,\$8E,\$8E,\$CC +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$0C,\$3E,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$9E,\$33,\$3F,\$30,\$3B,\$1E +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$76,\$3A,\$30,\$30,\$30,\$7C +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$80,\$40,\$00,\$83,\$C3,\$C0,\$C0,\$80 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$80,\$C0,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$FC,\$EE,\$EE,\$EE,\$FC,\$E0,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$7C,\$EE,\$EE,\$EE,\$FE,\$EE,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$EE,\$EE,\$EE,\$EE,\$EE,\$7C,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$7C,\$E0,\$7C,\$0E,\$EE,\$7C,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$FE,\$E0,\$F0,\$E0,\$E0,\$FE,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$F8,\$EC,\$EE,\$EE,\$EE,\$FC,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$7C,\$E0,\$EE,\$EE,\$EE,\$7E,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$C6,\$EE,\$FE,\$FE,\$EE,\$EE,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$FC,\$EE,\$EE,\$EE,\$FC,\$EE,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$E0,\$E0,\$E0,\$E0,\$EE,\$FE,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$EE,\$EE,\$EE,\$6C,\$38,\$10,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$70,\$F0,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$70,\$D9,\$D9,\$19,\$31,\$61,\$C1,\$F8 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$E0,\$F3,\$B0,\$B0,\$B0,\$B0,\$F0,\$E3 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$C1,\$C3,\$C6,\$C7,\$C6,\$C6,\$C6,\$F3 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$0E,\$0E,\$F0,\$F0,\$F0,\$00,\$00,\$00 +.byte \$F8,\$F8,\$00,\$07,\$07,\$07,\$FF,\$FF +.byte \$E0,\$E0,\$1F,\$1F,\$1F,\$00,\$00,\$00 +.byte \$8F,\$8F,\$90,\$F0,\$F0,\$F0,\$FF,\$FF +.byte \$80,\$80,\$F0,\$F0,\$F0,\$00,\$00,\$00 +.byte \$3F,\$3F,\$0F,\$07,\$07,\$07,\$FF,\$FF +.byte \$00,\$00,\$80,\$80,\$80,\$00,\$00,\$00 +.byte \$FF,\$FF,\$7F,\$3F,\$3F,\$3F,\$FF,\$FF +.byte \$FC,\$FC,\$FF,\$FF,\$FF,\$00,\$00,\$00 +.byte \$81,\$81,\$00,\$00,\$00,\$00,\$FF,\$FF +.byte \$00,\$00,\$07,\$07,\$07,\$00,\$00,\$00 +.byte \$FF,\$FF,\$FC,\$FC,\$FC,\$FC,\$FF,\$FF +.byte \$C0,\$C0,\$3F,\$3F,\$3F,\$00,\$00,\$00 +.byte \$1F,\$1F,\$E0,\$E0,\$E0,\$C0,\$FF,\$FF +.byte \$81,\$81,\$F0,\$F0,\$F0,\$00,\$00,\$00 +.byte \$3F,\$3F,\$0F,\$07,\$07,\$07,\$FF,\$FF +.byte \$1F,\$1F,\$FF,\$FF,\$FF,\$00,\$00,\$00 +.byte \$F0,\$F0,\$80,\$80,\$80,\$80,\$FF,\$FF +.byte \$38,\$38,\$C0,\$C0,\$C0,\$00,\$00,\$00 +.byte \$E3,\$E3,\$03,\$1F,\$1F,\$1F,\$FF,\$FF +.byte \$00,\$00,\$FF,\$FF,\$FF,\$00,\$00,\$00 +.byte \$FF,\$FF,\$00,\$00,\$00,\$00,\$FF,\$FF +.byte \$1C,\$1C,\$03,\$03,\$03,\$00,\$00,\$00 +.byte \$F1,\$F1,\$FE,\$FE,\$FE,\$FE,\$FF,\$FF +.byte \$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$00 +.byte \$1F,\$1F,\$1F,\$1F,\$1F,\$1F,\$1F,\$1F +.byte \$01,\$01,\$01,\$01,\$01,\$01,\$01,\$0E +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$F8 +.byte \$E0,\$E0,\$E0,\$E0,\$E0,\$E0,\$E0,\$E0 +.byte \$0F,\$0F,\$0F,\$0F,\$0F,\$0F,\$0F,\$8F +.byte \$3F,\$07,\$07,\$07,\$07,\$07,\$07,\$00 +.byte \$E0,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$FF +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 +.byte \$3F,\$3F,\$3F,\$3F,\$3F,\$3F,\$3F,\$3F +.byte \$F0,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$07,\$07,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$FF,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC +.byte \$80,\$80,\$81,\$81,\$81,\$81,\$81,\$81 +.byte \$80,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$3F,\$3F,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$E3,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC +.byte \$0E,\$80,\$81,\$81,\$81,\$81,\$81,\$81 +.byte \$07,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$FC,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$C0,\$C0,\$C0,\$C0 +.byte \$FF,\$FF,\$FF,\$FF,\$3F,\$1F,\$1F,\$1F +.byte \$FE,\$8E,\$8E,\$8E,\$81,\$81,\$81,\$81 +.byte \$00,\$38,\$38,\$38,\$3F,\$3F,\$3F,\$3F +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$38 +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$E7 +.byte \$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$1C +.byte \$01,\$81,\$81,\$81,\$81,\$81,\$81,\$F1 +.byte \$03,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$FE,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$C0,\$C0 +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$3F,\$1F +.byte \$F0,\$F0,\$F0,\$0E,\$0E,\$0E,\$01,\$01 +.byte \$0F,\$07,\$07,\$F9,\$F8,\$F8,\$FF,\$FF +.byte \$E3,\$E3,\$E3,\$E0,\$E0,\$E0,\$E0,\$E0 +.byte \$8E,\$8E,\$8E,\$0F,\$0F,\$0F,\$0F,\$0F +.byte \$C0,\$C0,\$C0,\$07,\$07,\$07,\$3F,\$3F +.byte \$1F,\$1F,\$1F,\$1C,\$FC,\$FC,\$E0,\$E0 +.byte \$81,\$81,\$81,\$80,\$80,\$80,\$80,\$80 +.byte \$3F,\$3F,\$3F,\$3F,\$3F,\$3F,\$3F,\$3F +.byte \$1F,\$1F,\$1F,\$1F,\$1F,\$1F,\$1F,\$1F +.byte \$F0,\$F0,\$F0,\$F0,\$F0,\$F0,\$F0,\$F0 +.byte \$38,\$38,\$38,\$00,\$00,\$00,\$00,\$00 +.byte \$E3,\$E3,\$E3,\$E3,\$FF,\$FF,\$FF,\$FF +.byte \$7E,\$7E,\$7E,\$0E,\$0E,\$0E,\$F0,\$F0 +.byte \$41,\$C0,\$C0,\$C8,\$F8,\$F8,\$00,\$07 +.byte \$00,\$00,\$00,\$FC,\$FC,\$FC,\$FF,\$FF +.byte \$00,\$FF,\$FF,\$83,\$83,\$83,\$80,\$80 +.byte \$F8,\$F8,\$F8,\$00,\$00,\$00,\$00,\$00 +.byte \$04,\$03,\$03,\$03,\$FF,\$FF,\$FF,\$FF +.byte \$0F,\$0F,\$0F,\$70,\$70,\$70,\$80,\$80 +.byte \$F8,\$F8,\$F8,\$C0,\$C7,\$C7,\$07,\$3F +.byte \$E0,\$E0,\$E0,\$E0,\$E0,\$E0,\$E3,\$E3 +.byte \$1F,\$0F,\$0F,\$0F,\$0F,\$0F,\$0E,\$0E +.byte \$07,\$07,\$07,\$07,\$07,\$07,\$07,\$07 +.byte \$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC +.byte \$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$00,\$00 +.byte \$3F,\$1F,\$1F,\$1F,\$1F,\$1F,\$1F,\$FF +.byte \$0F,\$0F,\$0F,\$81,\$81,\$81,\$FE,\$FE +.byte \$08,\$F8,\$F8,\$79,\$7F,\$7F,\$00,\$00 +.byte \$00,\$00,\$00,\$1F,\$1F,\$1F,\$1F,\$1F +.byte \$00,\$7F,\$7F,\$70,\$F0,\$F0,\$F0,\$F0 +.byte \$FF,\$FF,\$FF,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$FF,\$FF,\$FF,\$FF +.byte \$01,\$01,\$01,\$00,\$00,\$00,\$00,\$00 +.byte \$01,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$1C,\$1C,\$1C,\$FC,\$FC,\$FC,\$FC,\$FC +.byte \$F0,\$F1,\$F1,\$81,\$81,\$81,\$01,\$01 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$03,\$03 +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FE,\$FE +.byte \$00,\$00,\$00,\$00,\$00,\$80,\$80,\$80 +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$7F,\$3F,\$3F +.byte \$00,\$00,\$00,\$00,\$00,\$1F,\$1F,\$1F +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$F0,\$F0,\$F0 +.byte \$00,\$00,\$00,\$00,\$00,\$C0,\$C0,\$C0 +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$3F,\$1F,\$1F +.byte \$00,\$00,\$00,\$00,\$00,\$3F,\$3F,\$3F +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$E0,\$E0,\$E0 +.byte \$00,\$00,\$00,\$00,\$00,\$F0,\$F0,\$F0 +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$0F,\$07,\$07 +.byte \$00,\$00,\$00,\$00,\$00,\$C7,\$C7,\$C7 +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$3C,\$1C,\$1C +.byte \$00,\$00,\$00,\$00,\$00,\$7F,\$7F,\$7F +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$C0,\$C0,\$C0 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$7F,\$7F +.byte \$00,\$00,\$F8,\$F8,\$F8,\$3F,\$3F,\$3F +.byte \$FF,\$FF,\$07,\$03,\$03,\$E0,\$E0,\$E0 +.byte \$00,\$00,\$0F,\$0F,\$0F,\$00,\$00,\$00 +.byte \$FF,\$FF,\$F8,\$F8,\$F8,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$FE,\$FE,\$FE +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$01,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$FF,\$FF,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$80,\$80,\$80 +.byte \$00,\$00,\$00,\$00,\$00,\$C0,\$C0,\$C0 +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$3F,\$3F,\$3F +.byte \$00,\$00,\$00,\$00,\$00,\$FF,\$FF,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$03,\$03,\$03 +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FE,\$FE,\$FE +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$DE +.byte \$DE,\$DE,\$DE,\$DE,\$2E,\$EE,\$2E,\$DE +.byte \$81,\$81,\$81,\$80,\$80,\$80,\$80,\$FB +.byte \$FB,\$FB,\$FB,\$FB,\$F4,\$F7,\$F4,\$FB +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$2E,\$EE,\$2E,\$DE,\$DE,\$DE,\$DE +.byte \$80,\$80,\$80,\$80,\$80,\$81,\$80,\$80 +.byte \$80,\$F4,\$F7,\$F4,\$FB,\$FB,\$FB,\$FB +.byte \$00,\$08,\$10,\$30,\$C0,\$00,\$00,\$FE +.byte \$76,\$DE,\$7E,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$E0,\$00,\$C0,\$BC,\$83,\$80,\$80,\$FF +.byte \$1E,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$80,\$80,\$80,\$00,\$00,\$00,\$00,\$00 +.byte \$C0,\$DE,\$EE,\$EE,\$EE,\$EE,\$B6,\$36 +.byte \$00,\$00,\$00,\$01,\$01,\$02,\$04,\$18 +.byte \$00,\$00,\$00,\$01,\$00,\$01,\$03,\$07 +.byte \$E0,\$E0,\$0F,\$0F,\$00,\$00,\$00,\$00 +.byte \$FF,\$FF,\$F0,\$F0,\$00,\$00,\$00,\$00 +.byte \$FF,\$FF,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$FF,\$FF,\$FF,\$FF,\$00,\$00,\$00,\$00 +.byte \$0F,\$0F,\$E0,\$E0,\$00,\$00,\$00,\$00 +.byte \$FF,\$FF,\$1F,\$1F,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$A8,\$00,\$50,\$F0,\$F0,\$FE +.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$80,\$80,\$AA,\$80,\$D5,\$FF,\$FF,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$AA,\$00,\$54,\$FF,\$FF,\$FF +.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FF,\$FF,\$FF +.byte \$80,\$80,\$AA,\$80,\$95,\$8F,\$8F,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$40 +.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$00,\$80,\$80,\$80,\$80,\$80,\$80,\$C4 +.byte \$00,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$12 +.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$00,\$80,\$80,\$80,\$80,\$80,\$80,\$91 +.byte \$00,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$FE,\$FE,\$FE,\$5E,\$1E,\$3E,\$FE,\$FE +.byte \$84,\$84,\$84,\$84,\$84,\$84,\$80,\$FF +.byte \$FC,\$FC,\$FC,\$FE,\$FE,\$FF,\$FF,\$FF +.byte \$00,\$00,\$E0,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$FE,\$FE,\$FE,\$3E,\$1E,\$5E,\$FE +.byte \$80,\$80,\$87,\$84,\$84,\$84,\$84,\$84 +.byte \$80,\$FF,\$FF,\$FF,\$FF,\$FE,\$FE,\$FC +.byte \$A0,\$A0,\$A0,\$A0,\$E0,\$80,\$80,\$FF +.byte \$F1,\$FB,\$FB,\$FD,\$FE,\$FF,\$FF,\$FF +.byte \$00,\$5C,\$40,\$40,\$C0,\$00,\$00,\$00 +.byte \$00,\$FE,\$FE,\$CE,\$DE,\$9E,\$3E,\$7E +.byte \$80,\$B0,\$AC,\$A3,\$A0,\$A0,\$A0,\$A0 +.byte \$80,\$FF,\$FF,\$FF,\$FF,\$F7,\$F7,\$F4 +.byte \$07,\$00,\$03,\$3C,\$C0,\$00,\$00,\$FE +.byte \$78,\$3F,\$FF,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$90,\$90,\$88,\$8C,\$83,\$80,\$80,\$FF +.byte \$FD,\$FC,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$80,\$80,\$40,\$20,\$18 +.byte \$00,\$00,\$00,\$00,\$00,\$80,\$C0,\$E0 +.byte \$85,\$85,\$89,\$88,\$88,\$88,\$90,\$90 +.byte \$86,\$FE,\$FE,\$FF,\$FF,\$FF,\$FE,\$FD +.byte \$00,\$00,\$00,\$00,\$00,\$80,\$80,\$9E +.byte \$F6,\$B6,\$EE,\$EE,\$EE,\$EE,\$DE,\$DE +.byte \$18,\$04,\$02,\$01,\$01,\$00,\$00,\$00 +.byte \$1F,\$07,\$03,\$01,\$01,\$00,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$FE,\$FE,\$3E,\$CE,\$6E,\$76,\$16 +.byte \$80,\$80,\$80,\$80,\$80,\$00,\$00,\$E0 +.byte \$80,\$FF,\$FF,\$FC,\$C3,\$3F,\$FF,\$FE +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$7E,\$7E,\$BE,\$BE,\$DE,\$DE,\$0E,\$FE +.byte \$80,\$80,\$81,\$81,\$82,\$80,\$80,\$FF +.byte \$FE,\$FE,\$FD,\$FD,\$FB,\$FB,\$F0,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$0E,\$DE,\$DE,\$BE,\$BE,\$7E,\$7E +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 +.byte \$80,\$F0,\$FB,\$FB,\$FD,\$FD,\$FE,\$FE +.byte \$C0,\$C0,\$C0,\$00,\$30,\$30,\$30,\$30 +.byte \$F0,\$F0,\$F0,\$F0,\$C0,\$C0,\$C0,\$C0 +.byte \$27,\$0F,\$27,\$0E,\$20,\$00,\$00,\$FE +.byte \$FF,\$FF,\$FF,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$80,\$81,\$80,\$80,\$80,\$80,\$80,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$27,\$0F,\$27,\$0F,\$27,\$0F,\$27,\$0F +.byte \$27,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$80,\$81,\$80,\$80,\$80,\$81,\$80,\$80 +.byte \$80,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$C0 +.byte \$F0,\$F0,\$F0,\$F0,\$F0,\$F0,\$F0,\$F0 +.byte \$27,\$0F,\$27,\$0F,\$27,\$0F,\$27,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$80,\$80,\$80,\$81,\$80,\$80,\$81,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$3E,\$7E,\$7E,\$7E,\$FE,\$FE,\$FE,\$FE +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$FF +.byte \$FE,\$FF,\$FF,\$FF,\$FE,\$FE,\$FD,\$FF +.byte \$E0,\$00,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$DE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$FF,\$80,\$80,\$80,\$80,\$80,\$80,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$6E,\$F6,\$F6,\$F6,\$FE,\$FE,\$FE,\$FE +.byte \$80,\$80,\$80,\$00,\$00,\$80,\$80,\$FF +.byte \$FC,\$FB,\$C7,\$1F,\$7F,\$FF,\$FF,\$FF +.byte \$02,\$01,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$FE,\$FF,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$30,\$30,\$30,\$00,\$C0,\$C0,\$C0,\$C0 +.byte \$C0,\$C0,\$C0,\$F0,\$F0,\$F0,\$F0,\$F0 +.byte \$00,\$00,\$20,\$08,\$27,\$0F,\$27,\$0F +.byte \$00,\$FE,\$FE,\$FE,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$80,\$80,\$81,\$80,\$80,\$80,\$81 +.byte \$00,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$7E,\$7E,\$7E,\$BE,\$BE,\$BE,\$BE +.byte \$80,\$80,\$80,\$80,\$80,\$00,\$00,\$80 +.byte \$80,\$FF,\$FF,\$FF,\$FF,\$7F,\$07,\$F9 +.byte \$00,\$02,\$02,\$02,\$02,\$02,\$06,\$3C +.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FC,\$FA +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$C0 +.byte \$80,\$F7,\$F7,\$FB,\$F8,\$FE,\$FE,\$BF +.byte \$00,\$00,\$00,\$80,\$80,\$40,\$1C,\$07 +.byte \$00,\$BE,\$BE,\$3E,\$9E,\$DE,\$DA,\$EF +.byte \$80,\$86,\$83,\$81,\$80,\$80,\$80,\$80 +.byte \$80,\$FD,\$FE,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$30,\$30,\$18,\$0C,\$0C,\$06,\$06 +.byte \$00,\$EE,\$EE,\$F6,\$FA,\$FA,\$FC,\$FC +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$7E +.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$7E,\$7E,\$7E +.byte \$B0,\$B0,\$B0,\$B0,\$E0,\$80,\$80,\$FF +.byte \$E1,\$EB,\$EB,\$ED,\$FE,\$FF,\$FF,\$FF +.byte \$00,\$00,\$E0,\$3E,\$00,\$00,\$00,\$FE +.byte \$FE,\$FE,\$DE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$06,\$03,\$01,\$00,\$00,\$80,\$80,\$FF +.byte \$05,\$0E,\$0F,\$7F,\$7F,\$FF,\$FF,\$FF +.byte \$80,\$00,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$76,\$E6,\$EE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$81,\$83,\$83,\$83,\$83,\$C3,\$C3,\$FF +.byte \$F7,\$FA,\$FE,\$FE,\$FE,\$FE,\$FE,\$FF +.byte \$62,\$30,\$DC,\$6E,\$62,\$60,\$60,\$7E +.byte \$DE,\$EE,\$B2,\$DC,\$DE,\$DE,\$5E,\$7E +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$E0 +.byte \$FF,\$FB,\$FB,\$F9,\$F9,\$F0,\$E0,\$E0 +.byte \$00,\$7E,\$60,\$C0,\$C0,\$00,\$00,\$00 +.byte \$00,\$DC,\$DE,\$4E,\$DE,\$9E,\$3E,\$7E +.byte \$80,\$B8,\$BE,\$B3,\$B0,\$B0,\$B0,\$B0 +.byte \$80,\$F7,\$ED,\$EF,\$EF,\$E7,\$E7,\$E4 +.byte \$00,\$00,\$00,\$06,\$06,\$06,\$06,\$06 +.byte \$00,\$01,\$03,\$05,\$05,\$05,\$05,\$05 +.byte \$00,\$00,\$80,\$80,\$80,\$80,\$80,\$80 +.byte \$00,\$FE,\$7E,\$7E,\$7E,\$7E,\$7C,\$7A +.byte \$80,\$83,\$01,\$81,\$81,\$81,\$81,\$81 +.byte \$80,\$FE,\$7F,\$BF,\$DF,\$EF,\$F7,\$F7 +.byte \$00,\$06,\$06,\$06,\$86,\$82,\$C2,\$C2 +.byte \$00,\$FC,\$FC,\$FC,\$7C,\$7E,\$BE,\$BE +.byte \$80,\$86,\$86,\$83,\$81,\$81,\$80,\$80 +.byte \$80,\$FD,\$FD,\$FE,\$FF,\$FF,\$FF,\$FF +.byte \$0C,\$0C,\$0C,\$06,\$06,\$06,\$06,\$FE +.byte \$FA,\$FA,\$FA,\$FC,\$FC,\$FC,\$FC,\$FE +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$1E +.byte \$BC,\$7C,\$7E,\$3E,\$3E,\$1E,\$1E,\$1E +.byte \$80,\$80,\$80,\$00,\$00,\$00,\$00,\$00 +.byte \$FF,\$FE,\$FC,\$00,\$00,\$00,\$00,\$00 +.byte \$0E,\$3A,\$62,\$C0,\$80,\$00,\$00,\$FE +.byte \$FC,\$F6,\$DE,\$BE,\$7E,\$FE,\$FE,\$FE +.byte \$80,\$80,\$80,\$80,\$81,\$83,\$86,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FE,\$FD,\$FF +.byte \$02,\$02,\$02,\$06,\$06,\$06,\$06,\$FE +.byte \$FE,\$FE,\$FE,\$FC,\$FC,\$FC,\$FC,\$FE +.byte \$8C,\$8C,\$8C,\$8C,\$8C,\$8C,\$8C,\$FF +.byte \$FB,\$FB,\$FB,\$FB,\$FB,\$FB,\$FB,\$FF +.byte \$00,\$60,\$60,\$F0,\$30,\$18,\$18,\$18 +.byte \$00,\$DE,\$DE,\$EE,\$EE,\$F6,\$F6,\$F6 +.byte \$80,\$80,\$8F,\$F9,\$80,\$80,\$80,\$80 +.byte \$80,\$FF,\$FE,\$F7,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$03,\$06,\$08,\$B0,\$00 +.byte \$00,\$F6,\$F6,\$F7,\$E4,\$C6,\$A6,\$BA +.byte \$80,\$B0,\$B0,\$98,\$98,\$98,\$8F,\$80 +.byte \$80,\$EF,\$EF,\$F7,\$F7,\$F7,\$FF,\$FF +.byte \$80,\$E0,\$E0,\$80,\$80,\$80,\$80,\$80 +.byte \$80,\$DF,\$DF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$02 +.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$80,\$83,\$86,\$86,\$86,\$86,\$8C,\$8C +.byte \$80,\$FE,\$FD,\$FD,\$FD,\$FD,\$FB,\$FB +.byte \$80,\$C0,\$E0,\$B8,\$8C,\$86,\$83,\$FF +.byte \$FF,\$BF,\$DF,\$F7,\$FB,\$FD,\$FE,\$FF +.byte \$1E,\$02,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$FC,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$C0,\$80,\$80,\$80,\$80,\$80,\$80,\$FF +.byte \$BF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$0E,\$3C,\$6C,\$C6,\$02,\$00,\$00,\$FE +.byte \$FE,\$FA,\$DA,\$BC,\$FE,\$FE,\$FE,\$FE +.byte \$80,\$80,\$80,\$81,\$83,\$86,\$8C,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FE,\$FD,\$FB,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$80,\$80 +.byte \$60,\$00,\$00,\$00,\$00,\$00,\$80,\$80 +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$FF +.byte \$C0,\$FE,\$FE,\$FE,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$F0,\$1C,\$00,\$00 +.byte \$00,\$FE,\$FE,\$FE,\$EE,\$FA,\$FE,\$FE +.byte \$80,\$80,\$80,\$FF,\$83,\$80,\$80,\$80 +.byte \$80,\$FF,\$FF,\$FE,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$FE,\$00,\$00,\$00,\$F0 +.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$EE +.byte \$80,\$80,\$80,\$81,\$8F,\$80,\$E0,\$FF +.byte \$80,\$FF,\$FF,\$FF,\$FE,\$FF,\$DF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$FE,\$00,\$00 +.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$80,\$80,\$80,\$80,\$80,\$87,\$BC,\$E0 +.byte \$80,\$FF,\$FF,\$FF,\$FF,\$FF,\$FB,\$DF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$FE,\$7E,\$7E,\$BE,\$DE,\$EE,\$F0 +.byte \$80,\$80,\$80,\$80,\$80,\$00,\$80,\$80 +.byte \$80,\$FE,\$FF,\$FF,\$FF,\$3F,\$BF,\$9F +.byte \$18,\$20,\$40,\$80,\$80,\$00,\$00,\$00 +.byte \$E0,\$C0,\$80,\$00,\$00,\$00,\$00,\$00 +.byte \$90,\$90,\$88,\$88,\$88,\$89,\$85,\$FD +.byte \$FE,\$FF,\$FF,\$FF,\$FF,\$FE,\$FE,\$FE +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$07 +.byte \$00,\$FE,\$FE,\$3E,\$C2,\$7C,\$FF,\$FF +.byte \$80,\$80,\$80,\$80,\$80,\$88,\$90,\$90 +.byte \$80,\$FF,\$FF,\$FC,\$F3,\$FF,\$FD,\$FC +.byte \$00,\$80,\$80,\$80,\$80,\$80,\$80,\$80 +.byte \$00,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$C0,\$00,\$FE +.byte \$DE,\$EE,\$EE,\$EE,\$EE,\$DE,\$3E,\$FE +.byte \$80,\$80,\$84,\$84,\$86,\$83,\$80,\$FF +.byte \$FB,\$F7,\$F7,\$F7,\$F7,\$FB,\$FC,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$3E,\$DE,\$DE,\$BE,\$BE,\$BE,\$BE +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 +.byte \$80,\$FC,\$FB,\$FB,\$FD,\$FD,\$FD,\$FD +.byte \$84,\$43,\$40,\$80,\$00,\$00,\$00,\$FE +.byte \$7A,\$BC,\$BE,\$7E,\$FE,\$FE,\$FE,\$FE +.byte \$80,\$80,\$80,\$80,\$83,\$84,\$84,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FC,\$FB,\$FB,\$FF +.byte \$00,\$FE,\$7C,\$20,\$30,\$28,\$28,\$48 +.byte \$00,\$00,\$82,\$DE,\$CE,\$D6,\$D6,\$B6 +.byte \$80,\$83,\$80,\$80,\$80,\$80,\$80,\$80 +.byte \$80,\$FC,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$02,\$06,\$0E,\$0E,\$72,\$02,\$00,\$FE +.byte \$FC,\$F8,\$F0,\$F0,\$8C,\$FC,\$FE,\$FE +.byte \$84,\$88,\$88,\$80,\$80,\$80,\$80,\$FF +.byte \$FB,\$F7,\$F7,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$80,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$E4,\$F0,\$E4,\$F0,\$84,\$80,\$80,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$03,\$03,\$03,\$00,\$0C,\$0C,\$0C,\$0C +.byte \$0F,\$0F,\$0F,\$0F,\$03,\$03,\$03,\$03 +.byte \$00,\$02,\$E2,\$1E,\$0E,\$16,\$26,\$C2 +.byte \$00,\$FC,\$1C,\$E0,\$F0,\$E8,\$D8,\$3C +.byte \$80,\$81,\$80,\$80,\$80,\$80,\$80,\$83 +.byte \$80,\$FE,\$FF,\$FF,\$FF,\$FF,\$FF,\$FC +.byte \$00,\$80,\$00,\$00,\$00,\$80,\$00,\$00 +.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$E4,\$F0,\$E4,\$F0,\$E4,\$F0,\$E4,\$F0 +.byte \$E4,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$80,\$00,\$00,\$80,\$FE +.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$E4,\$F0,\$E4,\$F0,\$E4,\$F0,\$E4,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$03,\$03,\$03,\$03,\$03,\$03,\$03,\$03 +.byte \$0F,\$0F,\$0F,\$0F,\$0F,\$0F,\$0F,\$0F +.byte \$00,\$00,\$00,\$80,\$00,\$00,\$00,\$80 +.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$80,\$80,\$84,\$90,\$E4,\$F0,\$E4,\$F0 +.byte \$80,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$0C,\$0C,\$0C,\$00,\$03,\$03,\$03,\$03 +.byte \$03,\$03,\$03,\$0F,\$0F,\$0F,\$0F,\$0F +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$1E +.byte \$FE,\$3E,\$7E,\$7E,\$3E,\$3E,\$3E,\$1E +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$E0 +.byte \$F3,\$FD,\$FC,\$FE,\$FC,\$FC,\$F8,\$E0 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$EE,\$EE,\$F6,\$F6,\$FE,\$FE,\$FE +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 +.byte \$80,\$FF,\$FF,\$FF,\$FF,\$FF,\$EF,\$EF +.byte \$82,\$82,\$82,\$84,\$80,\$80,\$80,\$FF +.byte \$FD,\$FD,\$FD,\$FB,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$06 +.byte \$FE,\$C6,\$BE,\$7E,\$7E,\$3E,\$0E,\$06 +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$FC +.byte \$FB,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FC +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$FE,\$FE,\$7E,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$FF +.byte \$F8,\$FE,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$20,\$00,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$DE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$FE,\$F8,\$F0,\$C0,\$A8,\$94,\$82,\$FF +.byte \$01,\$07,\$0F,\$3F,\$57,\$EB,\$FD,\$FF +.byte \$FC,\$F8,\$C8,\$88,\$84,\$84,\$40,\$20 +.byte \$00,\$06,\$36,\$76,\$7A,\$7A,\$BE,\$DE +.byte \$FF,\$FD,\$81,\$A3,\$D3,\$8C,\$84,\$84 +.byte \$00,\$82,\$FE,\$DC,\$AC,\$F3,\$FB,\$FB +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$E6,\$F6,\$F6,\$FE,\$FE,\$FE,\$FE +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 +.byte \$80,\$FF,\$FF,\$EF,\$EF,\$F7,\$F7,\$FB +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$EE,\$EE,\$F6,\$F6,\$EE,\$EE,\$FE +.byte \$80,\$80,\$80,\$80,\$80,\$00,\$00,\$80 +.byte \$80,\$FF,\$FF,\$FF,\$FF,\$1F,\$6F,\$F6 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$80,\$40 +.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$7E,\$BE +.byte \$80,\$80,\$86,\$88,\$90,\$E0,\$C0,\$E1 +.byte \$80,\$FF,\$79,\$77,\$6F,\$1F,\$3F,\$1E +.byte \$30,\$30,\$30,\$30,\$30,\$30,\$30,\$30 +.byte \$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$C0 +.byte \$0C,\$0C,\$0C,\$0C,\$FC,\$FC,\$00,\$00 +.byte \$03,\$03,\$03,\$03,\$03,\$03,\$FF,\$FF +.byte \$30,\$30,\$30,\$30,\$3F,\$3F,\$00,\$00 +.byte \$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$FF,\$FF +.byte \$00,\$00,\$FC,\$FC,\$0C,\$0C,\$0C,\$0C +.byte \$FF,\$FF,\$03,\$03,\$03,\$03,\$03,\$03 +.byte \$00,\$00,\$FF,\$FF,\$00,\$00,\$00,\$00 +.byte \$FF,\$FF,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$00,\$3F,\$3F,\$30,\$30,\$30,\$30 +.byte \$FF,\$FF,\$C0,\$C0,\$C0,\$C0,\$C0,\$C0 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$F6,\$FA,\$FA,\$7A,\$8E,\$FE,\$FE,\$FE +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$0F +.byte \$03,\$01,\$00,\$07,\$0F,\$0F,\$0F,\$0F +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$80 +.byte \$DC,\$DC,\$00,\$00,\$00,\$80,\$80,\$80 +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$FF +.byte \$EF,\$9F,\$FF,\$FE,\$FE,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$FE,\$FE,\$EE,\$EE,\$0E,\$EE,\$EE +.byte \$80,\$80,\$80,\$00,\$00,\$00,\$00,\$00 +.byte \$80,\$FF,\$FF,\$7F,\$0C,\$03,\$07,\$07 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$FE,\$FE,\$FE,\$FE,\$7E,\$7E,\$BE +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 +.byte \$80,\$FE,\$FE,\$FD,\$FA,\$F7,\$F7,\$F7 +.byte \$40,\$00,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$C4,\$80,\$80,\$80,\$80,\$80,\$80,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$12,\$00,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$91,\$80,\$80,\$80,\$80,\$80,\$80,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$04,\$08,\$F0,\$00,\$00,\$00,\$00,\$FE +.byte \$FA,\$F6,\$0E,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$92,\$88,\$84,\$83,\$82,\$81,\$81,\$FF +.byte \$ED,\$F7,\$FB,\$FC,\$FD,\$FE,\$FE,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE +.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$FF +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$E0,\$F0,\$F0,\$50,\$00,\$A8,\$00,\$00 +.byte \$E0,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$FF,\$FF,\$FF,\$D5,\$80,\$AA,\$80,\$80 +.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$FF,\$FF,\$FF,\$54,\$00,\$AA,\$00,\$00 +.byte \$FF,\$FF,\$FF,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$8F,\$8F,\$8F,\$95,\$80,\$AA,\$80,\$80 +.byte \$8F,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$FF,\$FE,\$F8,\$20,\$20,\$10,\$88,\$7C +.byte \$00,\$00,\$06,\$DE,\$DE,\$EE,\$76,\$82 +.byte \$FF,\$9F,\$87,\$8C,\$BC,\$82,\$E1,\$91 +.byte \$80,\$E0,\$F8,\$F3,\$C3,\$FD,\$9E,\$EE +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 +.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE +.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 +.byte \$80,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF +.byte \$0C,\$0C,\$0C,\$0C,\$0C,\$0C,\$0C,\$0C +.byte \$03,\$03,\$03,\$03,\$03,\$03,\$03,\$03 +.byte \$00,\$00,\$00,\$00,\$0F,\$0F,\$E0,\$E0 +.byte \$00,\$00,\$00,\$00,\$F0,\$F0,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$FF,\$FF,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$E0,\$E0,\$0F,\$0F +.byte \$00,\$00,\$00,\$00,\$1F,\$1F,\$FF,\$FF +.byte \$00,\$00,\$00,\$00,\$FF,\$FF,\$00,\$00 +.byte \$00,\$00,\$00,\$00,\$00,\$00,\$FF,\$FF diff --git a/samples/crypto/crypto.csproj b/samples/crypto/crypto.csproj index 86d45253..a6aa74cb 100644 --- a/samples/crypto/crypto.csproj +++ b/samples/crypto/crypto.csproj @@ -5,7 +5,7 @@ net10.0 enable enable - 1 + 2 From 6e5fdca80a3f2ef41c71f93f56a5b834481b99e1 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Sat, 21 Mar 2026 11:19:07 -0500 Subject: [PATCH 13/16] Use reference ROM CHR tileset for correct title screen rendering Extract the actual CHR pattern table data from the purchased reference crypto.nes ROM's PPU state at runtime (MMC3 remaps CHR banks). The 8KB CHR now has sprite tiles at pattern table 0 and background tiles at pattern table 1, matching what the game expects with bank_bg(1). Title screen now renders correctly: green maze, CRYPTO logo, menu. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- samples/crypto/chr_generic.s | 2048 +++++++++++++++++----------------- samples/crypto/crypto.csproj | 2 +- 2 files changed, 1025 insertions(+), 1025 deletions(-) diff --git a/samples/crypto/chr_generic.s b/samples/crypto/chr_generic.s index faa586cf..bfe56b33 100644 --- a/samples/crypto/chr_generic.s +++ b/samples/crypto/chr_generic.s @@ -1,1025 +1,1025 @@ .segment "CHARS" -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$7C,\$EE,\$EE,\$EE,\$EE,\$7C,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$38,\$78,\$38,\$38,\$38,\$7C,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$7C,\$0E,\$7C,\$E0,\$EE,\$FE,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$FC,\$0E,\$3C,\$0E,\$0E,\$FC,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$3E,\$7E,\$EE,\$EE,\$FE,\$0E,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$FC,\$E0,\$FC,\$0E,\$EE,\$7C,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$7C,\$E0,\$FC,\$EE,\$EE,\$7C,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$FE,\$EE,\$1C,\$1C,\$38,\$38,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$7C,\$EE,\$7C,\$EE,\$EE,\$7C,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$7C,\$EE,\$EE,\$7E,\$0E,\$3C,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$FE,\$1C,\$38,\$70,\$E0,\$FE,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$40,\$60,\$70,\$78,\$7C -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$7E,\$7C,\$78,\$70,\$60,\$40,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$03,\$37,\$7F,\$7F -.byte \$00,\$00,\$00,\$00,\$03,\$07,\$07,\$07 -.byte \$7F,\$3F,\$1F,\$0F,\$00,\$00,\$00,\$00 -.byte \$07,\$03,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$C0,\$E0,\$FC,\$FE -.byte \$00,\$00,\$00,\$00,\$C0,\$E0,\$E0,\$E0 -.byte \$FE,\$FE,\$FC,\$F8,\$70,\$00,\$00,\$00 -.byte \$E0,\$C0,\$00,\$08,\$70,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$03,\$37,\$7F,\$7F,\$7F -.byte \$00,\$00,\$00,\$03,\$07,\$07,\$07,\$07 -.byte \$3F,\$1F,\$0F,\$00,\$00,\$00,\$00,\$00 -.byte \$03,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$C0,\$EC,\$FE,\$FE,\$FE -.byte \$00,\$00,\$00,\$C0,\$E0,\$E0,\$E0,\$E0 -.byte \$FE,\$FC,\$F0,\$00,\$00,\$00,\$00,\$00 -.byte \$C0,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$20 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$20 -.byte \$20,\$40,\$03,\$07,\$1F,\$5F,\$5F,\$07 -.byte \$20,\$60,\$23,\$27,\$23,\$27,\$27,\$27 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$80,\$F0,\$F8,\$FC,\$FC,\$FC -.byte \$00,\$00,\$80,\$00,\$C0,\$E0,\$E0,\$E0 -.byte \$20,\$20,\$40,\$00,\$00,\$00,\$10,\$1C -.byte \$20,\$20,\$60,\$20,\$20,\$20,\$20,\$20 -.byte \$0F,\$07,\$03,\$01,\$03,\$57,\$5F,\$1F -.byte \$20,\$20,\$20,\$20,\$23,\$27,\$27,\$27 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$80,\$E0,\$F0,\$F8,\$F8,\$F8,\$F8 -.byte \$00,\$00,\$00,\$00,\$C0,\$E0,\$E0,\$E0 -.byte \$00,\$0C,\$00,\$0C,\$1E,\$3F,\$3F,\$3F -.byte \$00,\$00,\$FF,\$00,\$00,\$01,\$03,\$03 -.byte \$3F,\$3F,\$1F,\$0F,\$03,\$00,\$00,\$00 -.byte \$03,\$03,\$01,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$60,\$00,\$70,\$70,\$F8,\$FC,\$FC -.byte \$00,\$00,\$FF,\$00,\$00,\$E8,\$FC,\$FC -.byte \$FC,\$F8,\$F8,\$F8,\$F0,\$E0,\$00,\$00 -.byte \$F4,\$F0,\$E0,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$80,\$60,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$80,\$E0,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$10,\$1C,\$3B,\$3F,\$7F,\$7F,\$7F -.byte \$0E,\$0E,\$00,\$03,\$07,\$07,\$07,\$07 -.byte \$7F,\$3F,\$1F,\$0F,\$00,\$00,\$00,\$00 -.byte \$07,\$03,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$08,\$38,\$DC,\$FC,\$FE,\$FE,\$FE -.byte \$70,\$70,\$00,\$C0,\$E0,\$E0,\$E0,\$E0 -.byte \$FE,\$FE,\$FC,\$F8,\$70,\$00,\$00,\$00 -.byte \$E0,\$C0,\$00,\$08,\$70,\$00,\$00,\$00 -.byte \$00,\$10,\$1C,\$3B,\$3F,\$7F,\$7F,\$7F -.byte \$0E,\$0E,\$00,\$03,\$07,\$07,\$07,\$07 -.byte \$3F,\$1F,\$0F,\$00,\$00,\$00,\$00,\$00 -.byte \$03,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$08,\$38,\$DC,\$FC,\$FE,\$FE,\$FE -.byte \$70,\$70,\$00,\$C0,\$E0,\$E0,\$E0,\$E0 -.byte \$FC,\$F8,\$F0,\$00,\$00,\$00,\$00,\$00 -.byte \$C0,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$01,\$03,\$07,\$0F,\$0F,\$0F,\$0F -.byte \$00,\$00,\$00,\$00,\$00,\$01,\$03,\$03 -.byte \$0F,\$1F,\$1F,\$1F,\$0F,\$07,\$03,\$00 -.byte \$03,\$13,\$11,\$10,\$08,\$00,\$00,\$00 -.byte \$00,\$C0,\$E0,\$E0,\$C0,\$E0,\$F0,\$F0 -.byte \$00,\$00,\$00,\$00,\$00,\$E0,\$F0,\$F0 -.byte \$F0,\$F0,\$E0,\$C0,\$C0,\$C0,\$80,\$00 -.byte \$F0,\$F0,\$E0,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$01,\$03,\$07,\$0F,\$0F,\$0F,\$0F -.byte \$00,\$00,\$00,\$00,\$00,\$01,\$03,\$03 -.byte \$0F,\$0F,\$0F,\$0F,\$07,\$07,\$03,\$00 -.byte \$03,\$03,\$01,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$C0,\$E0,\$E0,\$C0,\$E0,\$F0,\$F0 -.byte \$00,\$00,\$00,\$00,\$00,\$E0,\$F0,\$F0 -.byte \$F0,\$F0,\$E0,\$C0,\$E0,\$E0,\$C0,\$00 -.byte \$F0,\$F0,\$E0,\$00,\$00,\$00,\$00,\$00 -.byte \$07,\$0F,\$5F,\$5F,\$0F,\$07,\$00,\$00 -.byte \$27,\$23,\$20,\$20,\$20,\$20,\$20,\$20 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$20,\$20,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$F8,\$F8,\$F0,\$F0,\$E0,\$C0,\$00,\$00 -.byte \$E0,\$C0,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$1F,\$1F,\$0F,\$0F,\$07,\$00,\$00,\$00 -.byte \$27,\$23,\$20,\$0C,\$07,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$F8,\$F8,\$F0,\$F0,\$00,\$00,\$00,\$00 -.byte \$E0,\$C0,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$03,\$0F,\$1F,\$1F,\$1F -.byte \$00,\$00,\$07,\$00,\$08,\$19,\$13,\$13 -.byte \$0F,\$0F,\$0F,\$0F,\$03,\$00,\$00,\$00 -.byte \$03,\$03,\$01,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$60,\$00,\$E0,\$C1,\$E3,\$F7,\$FF -.byte \$00,\$00,\$FF,\$00,\$00,\$E0,\$F0,\$F0 -.byte \$FE,\$FC,\$FC,\$F8,\$F0,\$00,\$00,\$00 -.byte \$F0,\$F0,\$E0,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$04,\$03,\$C0,\$80,\$80,\$00,\$00 -.byte \$00,\$04,\$FF,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$01,\$03,\$07,\$07,\$07,\$07 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$01,\$01 -.byte \$07,\$0F,\$0F,\$0F,\$07,\$03,\$01,\$00 -.byte \$01,\$09,\$08,\$08,\$04,\$00,\$00,\$00 -.byte \$00,\$E0,\$F8,\$FE,\$FC,\$F4,\$F8,\$F8 -.byte \$00,\$00,\$00,\$00,\$03,\$F3,\$FB,\$F8 -.byte \$F8,\$F8,\$F4,\$FC,\$FE,\$F8,\$E0,\$00 -.byte \$F8,\$FB,\$F3,\$03,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$01,\$03,\$07,\$07,\$07,\$07 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$01,\$01 -.byte \$07,\$07,\$07,\$07,\$03,\$01,\$00,\$00 -.byte \$01,\$01,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$E0,\$F8,\$FE,\$FC,\$F4,\$F8,\$F8 -.byte \$00,\$00,\$00,\$00,\$03,\$F3,\$FB,\$F8 -.byte \$F8,\$F8,\$F4,\$FC,\$FE,\$F8,\$E0,\$00 -.byte \$F8,\$FB,\$F3,\$03,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$66,\$FF,\$FF,\$FF,\$7E,\$3C,\$18,\$00 -.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 -.byte \$66,\$FF,\$FF,\$FF,\$7E,\$3C,\$18,\$00 -.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 -.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 -.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 -.byte \$66,\$FF,\$FF,\$FF,\$7E,\$3C,\$18,\$00 -.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 -.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 -.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 -.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 -.byte \$66,\$99,\$81,\$81,\$42,\$24,\$18,\$00 -.byte \$00,\$00,\$08,\$10,\$10,\$20,\$00,\$00 -.byte \$07,\$1F,\$37,\$6F,\$6F,\$DF,\$FF,\$FF -.byte \$08,\$08,\$04,\$03,\$00,\$00,\$00,\$00 -.byte \$F7,\$F7,\$FB,\$7C,\$7F,\$3F,\$1F,\$07 -.byte \$00,\$00,\$00,\$E0,\$10,\$08,\$08,\$04 -.byte \$E0,\$F8,\$FC,\$1E,\$EE,\$F7,\$F7,\$FB -.byte \$04,\$24,\$44,\$84,\$08,\$00,\$00,\$00 -.byte \$FB,\$DB,\$BB,\$7A,\$F6,\$FC,\$F8,\$E0 -.byte \$00,\$00,\$00,\$03,\$14,\$24,\$21,\$20 -.byte \$07,\$1F,\$3F,\$7C,\$6B,\$DB,\$DE,\$DF -.byte \$20,\$10,\$00,\$03,\$00,\$00,\$00,\$00 -.byte \$DF,\$EF,\$FF,\$7C,\$7F,\$3F,\$1F,\$07 -.byte \$00,\$00,\$00,\$E0,\$10,\$08,\$88,\$44 -.byte \$E0,\$F8,\$FC,\$1E,\$EE,\$F7,\$77,\$BB -.byte \$24,\$20,\$40,\$80,\$00,\$00,\$00,\$00 -.byte \$DB,\$DF,\$BF,\$7E,\$FE,\$FC,\$F8,\$E0 -.byte \$3C,\$64,\$C5,\$C0,\$C0,\$C0,\$64,\$39 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$D9,\$EB,\$C3,\$C3,\$C3,\$F1 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$E3,\$37,\$F6,\$06,\$B7,\$E3 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$E3,\$60,\$6F,\$E3,\$63,\$63,\$E3,\$6F -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$18,\$18,\$3E,\$18,\$18,\$18,\$19,\$CE -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$3E,\$66,\$78,\$0E,\$66,\$7C -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$01,\$03,\$03,\$01,\$01,\$03 -.byte \$00,\$10,\$08,\$06,\$20,\$16,\$08,\$00 -.byte \$07,\$07,\$07,\$07,\$07,\$03,\$01,\$00 -.byte \$20,\$59,\$40,\$92,\$28,\$20,\$20,\$40 -.byte \$00,\$00,\$80,\$C0,\$C0,\$80,\$80,\$C0 -.byte \$00,\$08,\$10,\$60,\$04,\$68,\$10,\$00 -.byte \$E0,\$E0,\$E0,\$E0,\$E0,\$C0,\$80,\$00 -.byte \$04,\$1A,\$02,\$49,\$14,\$84,\$04,\$02 -.byte \$00,\$01,\$03,\$03,\$01,\$01,\$03,\$07 -.byte \$02,\$04,\$06,\$00,\$36,\$08,\$00,\$20 -.byte \$07,\$07,\$07,\$07,\$03,\$01,\$00,\$00 -.byte \$59,\$40,\$42,\$18,\$20,\$20,\$10,\$10 -.byte \$00,\$80,\$C0,\$C0,\$80,\$80,\$C0,\$E0 -.byte \$40,\$20,\$60,\$00,\$6C,\$10,\$00,\$04 -.byte \$E0,\$E0,\$E0,\$E0,\$C0,\$80,\$00,\$00 -.byte \$1A,\$02,\$42,\$18,\$84,\$04,\$08,\$08 -.byte \$00,\$00,\$01,\$03,\$03,\$01,\$01,\$03 -.byte \$00,\$08,\$04,\$06,\$00,\$26,\$18,\$00 -.byte \$07,\$07,\$07,\$07,\$07,\$03,\$01,\$00 -.byte \$30,\$C9,\$00,\$02,\$18,\$20,\$20,\$20 -.byte \$00,\$00,\$80,\$C0,\$C0,\$80,\$80,\$C0 -.byte \$00,\$00,\$08,\$78,\$08,\$70,\$00,\$00 -.byte \$E0,\$E0,\$E0,\$E0,\$E0,\$C0,\$80,\$00 -.byte \$00,\$1C,\$02,\$4A,\$16,\$84,\$02,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$02,\$02,\$02,\$08,\$14,\$2A,\$4A -.byte \$00,\$00,\$01,\$03,\$01,\$09,\$15,\$35 -.byte \$8A,\$6A,\$14,\$02,\$02,\$00,\$00,\$00 -.byte \$75,\$15,\$03,\$01,\$01,\$01,\$00,\$00 -.byte \$00,\$40,\$40,\$40,\$10,\$28,\$54,\$52 -.byte \$00,\$00,\$80,\$C0,\$80,\$90,\$A8,\$AC -.byte \$51,\$56,\$28,\$40,\$40,\$00,\$00,\$00 -.byte \$AE,\$A8,\$C0,\$80,\$80,\$80,\$00,\$00 -.byte \$00,\$02,\$02,\$02,\$00,\$04,\$0A,\$0A -.byte \$00,\$00,\$01,\$03,\$01,\$01,\$05,\$05 -.byte \$12,\$12,\$3C,\$22,\$02,\$00,\$00,\$00 -.byte \$0D,\$0D,\$03,\$01,\$01,\$01,\$00,\$00 -.byte \$00,\$40,\$40,\$40,\$00,\$20,\$50,\$50 -.byte \$00,\$00,\$80,\$C0,\$80,\$80,\$A0,\$A0 -.byte \$48,\$48,\$3C,\$44,\$40,\$00,\$00,\$00 -.byte \$B0,\$B0,\$C0,\$80,\$80,\$80,\$00,\$00 -.byte \$00,\$02,\$02,\$02,\$00,\$04,\$0A,\$0A -.byte \$00,\$00,\$01,\$03,\$01,\$01,\$05,\$05 -.byte \$12,\$12,\$3C,\$22,\$02,\$00,\$00,\$00 -.byte \$0D,\$0D,\$03,\$01,\$01,\$01,\$00,\$00 -.byte \$00,\$40,\$40,\$40,\$00,\$20,\$50,\$50 -.byte \$00,\$00,\$80,\$C0,\$80,\$80,\$A0,\$A0 -.byte \$48,\$48,\$3C,\$44,\$40,\$00,\$00,\$00 -.byte \$B0,\$B0,\$C0,\$80,\$80,\$80,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$1F,\$3F,\$7F -.byte \$08,\$86,\$71,\$0A,\$12,\$00,\$08,\$02 -.byte \$7F,\$3F,\$1F,\$00,\$00,\$00,\$00,\$00 -.byte \$20,\$08,\$00,\$12,\$0A,\$71,\$86,\$08 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$98,\$FC -.byte \$00,\$00,\$10,\$22,\$44,\$28,\$28,\$00 -.byte \$FC,\$98,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$28,\$28,\$44,\$22,\$10,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$0F,\$1F,\$3F -.byte \$00,\$07,\$30,\$C9,\$09,\$00,\$04,\$01 -.byte \$3F,\$1F,\$0F,\$00,\$00,\$00,\$00,\$00 -.byte \$10,\$04,\$00,\$09,\$C9,\$30,\$07,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$80,\$CC,\$FE -.byte \$00,\$00,\$90,\$10,\$20,\$16,\$15,\$00 -.byte \$FE,\$CC,\$80,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$15,\$16,\$20,\$10,\$90,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$1F,\$3F,\$7F -.byte \$02,\$02,\$E1,\$11,\$12,\$00,\$08,\$02 -.byte \$7F,\$3F,\$1F,\$00,\$00,\$00,\$00,\$00 -.byte \$20,\$08,\$00,\$12,\$0A,\$32,\$5C,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$98,\$FC -.byte \$00,\$00,\$20,\$40,\$42,\$2C,\$28,\$00 -.byte \$FC,\$98,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$28,\$28,\$28,\$1C,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$01,\$02,\$02,\$04,\$03,\$04,\$1B,\$00 -.byte \$00,\$01,\$01,\$03,\$00,\$03,\$04,\$3F -.byte \$00,\$1B,\$04,\$03,\$04,\$02,\$02,\$01 -.byte \$3F,\$04,\$03,\$00,\$03,\$01,\$01,\$00 -.byte \$00,\$80,\$40,\$20,\$D0,\$20,\$CE,\$00 -.byte \$00,\$00,\$80,\$C0,\$20,\$C0,\$08,\$FC -.byte \$00,\$CE,\$20,\$D0,\$20,\$40,\$80,\$00 -.byte \$FC,\$08,\$C0,\$20,\$C0,\$80,\$00,\$00 -.byte \$00,\$00,\$0C,\$07,\$04,\$04,\$1B,\$00 -.byte \$00,\$00,\$00,\$00,\$03,\$03,\$04,\$3F -.byte \$00,\$1B,\$04,\$04,\$07,\$0C,\$00,\$00 -.byte \$3F,\$04,\$03,\$03,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$C0,\$20,\$CE,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$C0,\$08,\$FC -.byte \$00,\$CE,\$20,\$C0,\$00,\$00,\$00,\$00 -.byte \$FC,\$08,\$C0,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$0C,\$07,\$04,\$04,\$1B,\$00 -.byte \$00,\$00,\$00,\$00,\$03,\$03,\$04,\$3F -.byte \$00,\$1B,\$04,\$04,\$07,\$0C,\$00,\$00 -.byte \$3F,\$04,\$03,\$03,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$C0,\$20,\$CE,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$C0,\$08,\$FC -.byte \$00,\$CE,\$20,\$C0,\$00,\$00,\$00,\$00 -.byte \$FC,\$08,\$C0,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$3C,\$42,\$42,\$24,\$3C,\$3C -.byte \$00,\$00,\$3C,\$42,\$42,\$24,\$24,\$24 -.byte \$3C,\$7E,\$FF,\$BF,\$BF,\$9F,\$42,\$3C -.byte \$24,\$42,\$81,\$C1,\$C1,\$E1,\$7E,\$3C -.byte \$42,\$BD,\$81,\$BD,\$7E,\$7E,\$7E,\$7E -.byte \$42,\$FF,\$FF,\$FF,\$42,\$42,\$42,\$42 -.byte \$7E,\$7E,\$7E,\$7E,\$BD,\$81,\$BD,\$42 -.byte \$42,\$42,\$42,\$42,\$FF,\$FF,\$FF,\$42 -.byte \$00,\$00,\$FC,\$FE,\$C0,\$CC,\$DE,\$DA -.byte \$00,\$00,\$FC,\$80,\$BF,\$BF,\$BF,\$BF -.byte \$F0,\$F0,\$F0,\$F0,\$DA,\$DE,\$4C,\$00 -.byte \$BF,\$BF,\$BF,\$BF,\$BF,\$BF,\$3F,\$3F -.byte \$7E,\$FF,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$7E,\$FF,\$42,\$42,\$24,\$24,\$18,\$18 -.byte \$18,\$18,\$3C,\$3C,\$7E,\$7E,\$FF,\$7E -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$FF,\$7E -.byte \$78,\$CC,\$CC,\$0C,\$38,\$70,\$C0,\$FC -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$30,\$F0,\$30,\$30,\$30,\$30,\$30,\$FC -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$07,\$03,\$03,\$03,\$03,\$03,\$03,\$07 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$CF,\$63,\$63,\$63,\$C3,\$03,\$03,\$8F -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$0F,\$01,\$0F,\$19,\$19,\$CD -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$3B,\$9B,\$9B,\$8E,\$8E,\$CC -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$0C,\$3E,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$9E,\$33,\$3F,\$30,\$3B,\$1E -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$76,\$3A,\$30,\$30,\$30,\$7C -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$80,\$40,\$00,\$83,\$C3,\$C0,\$C0,\$80 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$80,\$C0,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$FC,\$EE,\$EE,\$EE,\$FC,\$E0,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$7C,\$EE,\$EE,\$EE,\$FE,\$EE,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$EE,\$EE,\$EE,\$EE,\$EE,\$7C,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$7C,\$E0,\$7C,\$0E,\$EE,\$7C,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$FE,\$E0,\$F0,\$E0,\$E0,\$FE,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$F8,\$EC,\$EE,\$EE,\$EE,\$FC,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$7C,\$E0,\$EE,\$EE,\$EE,\$7E,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$C6,\$EE,\$FE,\$FE,\$EE,\$EE,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$FC,\$EE,\$EE,\$EE,\$FC,\$EE,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$E0,\$E0,\$E0,\$E0,\$EE,\$FE,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$EE,\$EE,\$EE,\$6C,\$38,\$10,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$70,\$F0,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$70,\$D9,\$D9,\$19,\$31,\$61,\$C1,\$F8 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$E0,\$F3,\$B0,\$B0,\$B0,\$B0,\$F0,\$E3 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$C1,\$C3,\$C6,\$C7,\$C6,\$C6,\$C6,\$F3 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$0E,\$0E,\$F0,\$F0,\$F0,\$00,\$00,\$00 -.byte \$F8,\$F8,\$00,\$07,\$07,\$07,\$FF,\$FF -.byte \$E0,\$E0,\$1F,\$1F,\$1F,\$00,\$00,\$00 -.byte \$8F,\$8F,\$90,\$F0,\$F0,\$F0,\$FF,\$FF -.byte \$80,\$80,\$F0,\$F0,\$F0,\$00,\$00,\$00 -.byte \$3F,\$3F,\$0F,\$07,\$07,\$07,\$FF,\$FF -.byte \$00,\$00,\$80,\$80,\$80,\$00,\$00,\$00 -.byte \$FF,\$FF,\$7F,\$3F,\$3F,\$3F,\$FF,\$FF -.byte \$FC,\$FC,\$FF,\$FF,\$FF,\$00,\$00,\$00 -.byte \$81,\$81,\$00,\$00,\$00,\$00,\$FF,\$FF -.byte \$00,\$00,\$07,\$07,\$07,\$00,\$00,\$00 -.byte \$FF,\$FF,\$FC,\$FC,\$FC,\$FC,\$FF,\$FF -.byte \$C0,\$C0,\$3F,\$3F,\$3F,\$00,\$00,\$00 -.byte \$1F,\$1F,\$E0,\$E0,\$E0,\$C0,\$FF,\$FF -.byte \$81,\$81,\$F0,\$F0,\$F0,\$00,\$00,\$00 -.byte \$3F,\$3F,\$0F,\$07,\$07,\$07,\$FF,\$FF -.byte \$1F,\$1F,\$FF,\$FF,\$FF,\$00,\$00,\$00 -.byte \$F0,\$F0,\$80,\$80,\$80,\$80,\$FF,\$FF -.byte \$38,\$38,\$C0,\$C0,\$C0,\$00,\$00,\$00 -.byte \$E3,\$E3,\$03,\$1F,\$1F,\$1F,\$FF,\$FF -.byte \$00,\$00,\$FF,\$FF,\$FF,\$00,\$00,\$00 -.byte \$FF,\$FF,\$00,\$00,\$00,\$00,\$FF,\$FF -.byte \$1C,\$1C,\$03,\$03,\$03,\$00,\$00,\$00 -.byte \$F1,\$F1,\$FE,\$FE,\$FE,\$FE,\$FF,\$FF -.byte \$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$00 -.byte \$1F,\$1F,\$1F,\$1F,\$1F,\$1F,\$1F,\$1F -.byte \$01,\$01,\$01,\$01,\$01,\$01,\$01,\$0E -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$F8 -.byte \$E0,\$E0,\$E0,\$E0,\$E0,\$E0,\$E0,\$E0 -.byte \$0F,\$0F,\$0F,\$0F,\$0F,\$0F,\$0F,\$8F -.byte \$3F,\$07,\$07,\$07,\$07,\$07,\$07,\$00 -.byte \$E0,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$FF -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 -.byte \$3F,\$3F,\$3F,\$3F,\$3F,\$3F,\$3F,\$3F -.byte \$F0,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$07,\$07,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$FF,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC -.byte \$80,\$80,\$81,\$81,\$81,\$81,\$81,\$81 -.byte \$80,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$3F,\$3F,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$E3,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC -.byte \$0E,\$80,\$81,\$81,\$81,\$81,\$81,\$81 -.byte \$07,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$FC,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$C0,\$C0,\$C0,\$C0 -.byte \$FF,\$FF,\$FF,\$FF,\$3F,\$1F,\$1F,\$1F -.byte \$FE,\$8E,\$8E,\$8E,\$81,\$81,\$81,\$81 -.byte \$00,\$38,\$38,\$38,\$3F,\$3F,\$3F,\$3F -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$38 -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$E7 -.byte \$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$1C -.byte \$01,\$81,\$81,\$81,\$81,\$81,\$81,\$F1 -.byte \$03,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$FE,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$C0,\$C0 -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$3F,\$1F -.byte \$F0,\$F0,\$F0,\$0E,\$0E,\$0E,\$01,\$01 -.byte \$0F,\$07,\$07,\$F9,\$F8,\$F8,\$FF,\$FF -.byte \$E3,\$E3,\$E3,\$E0,\$E0,\$E0,\$E0,\$E0 -.byte \$8E,\$8E,\$8E,\$0F,\$0F,\$0F,\$0F,\$0F -.byte \$C0,\$C0,\$C0,\$07,\$07,\$07,\$3F,\$3F -.byte \$1F,\$1F,\$1F,\$1C,\$FC,\$FC,\$E0,\$E0 -.byte \$81,\$81,\$81,\$80,\$80,\$80,\$80,\$80 -.byte \$3F,\$3F,\$3F,\$3F,\$3F,\$3F,\$3F,\$3F -.byte \$1F,\$1F,\$1F,\$1F,\$1F,\$1F,\$1F,\$1F -.byte \$F0,\$F0,\$F0,\$F0,\$F0,\$F0,\$F0,\$F0 -.byte \$38,\$38,\$38,\$00,\$00,\$00,\$00,\$00 -.byte \$E3,\$E3,\$E3,\$E3,\$FF,\$FF,\$FF,\$FF -.byte \$7E,\$7E,\$7E,\$0E,\$0E,\$0E,\$F0,\$F0 -.byte \$41,\$C0,\$C0,\$C8,\$F8,\$F8,\$00,\$07 -.byte \$00,\$00,\$00,\$FC,\$FC,\$FC,\$FF,\$FF -.byte \$00,\$FF,\$FF,\$83,\$83,\$83,\$80,\$80 -.byte \$F8,\$F8,\$F8,\$00,\$00,\$00,\$00,\$00 -.byte \$04,\$03,\$03,\$03,\$FF,\$FF,\$FF,\$FF -.byte \$0F,\$0F,\$0F,\$70,\$70,\$70,\$80,\$80 -.byte \$F8,\$F8,\$F8,\$C0,\$C7,\$C7,\$07,\$3F -.byte \$E0,\$E0,\$E0,\$E0,\$E0,\$E0,\$E3,\$E3 -.byte \$1F,\$0F,\$0F,\$0F,\$0F,\$0F,\$0E,\$0E -.byte \$07,\$07,\$07,\$07,\$07,\$07,\$07,\$07 -.byte \$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC,\$FC -.byte \$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$00,\$00 -.byte \$3F,\$1F,\$1F,\$1F,\$1F,\$1F,\$1F,\$FF -.byte \$0F,\$0F,\$0F,\$81,\$81,\$81,\$FE,\$FE -.byte \$08,\$F8,\$F8,\$79,\$7F,\$7F,\$00,\$00 -.byte \$00,\$00,\$00,\$1F,\$1F,\$1F,\$1F,\$1F -.byte \$00,\$7F,\$7F,\$70,\$F0,\$F0,\$F0,\$F0 -.byte \$FF,\$FF,\$FF,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$FF,\$FF,\$FF,\$FF -.byte \$01,\$01,\$01,\$00,\$00,\$00,\$00,\$00 -.byte \$01,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$1C,\$1C,\$1C,\$FC,\$FC,\$FC,\$FC,\$FC -.byte \$F0,\$F1,\$F1,\$81,\$81,\$81,\$01,\$01 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$03,\$03 -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FE,\$FE -.byte \$00,\$00,\$00,\$00,\$00,\$80,\$80,\$80 -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$7F,\$3F,\$3F -.byte \$00,\$00,\$00,\$00,\$00,\$1F,\$1F,\$1F -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$F0,\$F0,\$F0 -.byte \$00,\$00,\$00,\$00,\$00,\$C0,\$C0,\$C0 -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$3F,\$1F,\$1F -.byte \$00,\$00,\$00,\$00,\$00,\$3F,\$3F,\$3F -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$E0,\$E0,\$E0 -.byte \$00,\$00,\$00,\$00,\$00,\$F0,\$F0,\$F0 -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$0F,\$07,\$07 -.byte \$00,\$00,\$00,\$00,\$00,\$C7,\$C7,\$C7 -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$3C,\$1C,\$1C -.byte \$00,\$00,\$00,\$00,\$00,\$7F,\$7F,\$7F -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$C0,\$C0,\$C0 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$7F,\$7F -.byte \$00,\$00,\$F8,\$F8,\$F8,\$3F,\$3F,\$3F -.byte \$FF,\$FF,\$07,\$03,\$03,\$E0,\$E0,\$E0 -.byte \$00,\$00,\$0F,\$0F,\$0F,\$00,\$00,\$00 -.byte \$FF,\$FF,\$F8,\$F8,\$F8,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$FE,\$FE,\$FE -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$01,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$FF,\$FF,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$80,\$80,\$80 -.byte \$00,\$00,\$00,\$00,\$00,\$C0,\$C0,\$C0 -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$3F,\$3F,\$3F -.byte \$00,\$00,\$00,\$00,\$00,\$FF,\$FF,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$03,\$03,\$03 -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FE,\$FE,\$FE -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$DE -.byte \$DE,\$DE,\$DE,\$DE,\$2E,\$EE,\$2E,\$DE -.byte \$81,\$81,\$81,\$80,\$80,\$80,\$80,\$FB -.byte \$FB,\$FB,\$FB,\$FB,\$F4,\$F7,\$F4,\$FB -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$2E,\$EE,\$2E,\$DE,\$DE,\$DE,\$DE -.byte \$80,\$80,\$80,\$80,\$80,\$81,\$80,\$80 -.byte \$80,\$F4,\$F7,\$F4,\$FB,\$FB,\$FB,\$FB -.byte \$00,\$08,\$10,\$30,\$C0,\$00,\$00,\$FE -.byte \$76,\$DE,\$7E,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$E0,\$00,\$C0,\$BC,\$83,\$80,\$80,\$FF -.byte \$1E,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$80,\$80,\$80,\$00,\$00,\$00,\$00,\$00 -.byte \$C0,\$DE,\$EE,\$EE,\$EE,\$EE,\$B6,\$36 -.byte \$00,\$00,\$00,\$01,\$01,\$02,\$04,\$18 -.byte \$00,\$00,\$00,\$01,\$00,\$01,\$03,\$07 -.byte \$E0,\$E0,\$0F,\$0F,\$00,\$00,\$00,\$00 -.byte \$FF,\$FF,\$F0,\$F0,\$00,\$00,\$00,\$00 -.byte \$FF,\$FF,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$FF,\$FF,\$FF,\$FF,\$00,\$00,\$00,\$00 -.byte \$0F,\$0F,\$E0,\$E0,\$00,\$00,\$00,\$00 -.byte \$FF,\$FF,\$1F,\$1F,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$A8,\$00,\$50,\$F0,\$F0,\$FE -.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$80,\$80,\$AA,\$80,\$D5,\$FF,\$FF,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$AA,\$00,\$54,\$FF,\$FF,\$FF -.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FF,\$FF,\$FF -.byte \$80,\$80,\$AA,\$80,\$95,\$8F,\$8F,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$40 -.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$00,\$80,\$80,\$80,\$80,\$80,\$80,\$C4 -.byte \$00,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$12 -.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$00,\$80,\$80,\$80,\$80,\$80,\$80,\$91 -.byte \$00,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$FE,\$FE,\$FE,\$5E,\$1E,\$3E,\$FE,\$FE -.byte \$84,\$84,\$84,\$84,\$84,\$84,\$80,\$FF -.byte \$FC,\$FC,\$FC,\$FE,\$FE,\$FF,\$FF,\$FF -.byte \$00,\$00,\$E0,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$FE,\$FE,\$FE,\$3E,\$1E,\$5E,\$FE -.byte \$80,\$80,\$87,\$84,\$84,\$84,\$84,\$84 -.byte \$80,\$FF,\$FF,\$FF,\$FF,\$FE,\$FE,\$FC -.byte \$A0,\$A0,\$A0,\$A0,\$E0,\$80,\$80,\$FF -.byte \$F1,\$FB,\$FB,\$FD,\$FE,\$FF,\$FF,\$FF -.byte \$00,\$5C,\$40,\$40,\$C0,\$00,\$00,\$00 -.byte \$00,\$FE,\$FE,\$CE,\$DE,\$9E,\$3E,\$7E -.byte \$80,\$B0,\$AC,\$A3,\$A0,\$A0,\$A0,\$A0 -.byte \$80,\$FF,\$FF,\$FF,\$FF,\$F7,\$F7,\$F4 -.byte \$07,\$00,\$03,\$3C,\$C0,\$00,\$00,\$FE -.byte \$78,\$3F,\$FF,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$90,\$90,\$88,\$8C,\$83,\$80,\$80,\$FF -.byte \$FD,\$FC,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$80,\$80,\$40,\$20,\$18 -.byte \$00,\$00,\$00,\$00,\$00,\$80,\$C0,\$E0 -.byte \$85,\$85,\$89,\$88,\$88,\$88,\$90,\$90 -.byte \$86,\$FE,\$FE,\$FF,\$FF,\$FF,\$FE,\$FD -.byte \$00,\$00,\$00,\$00,\$00,\$80,\$80,\$9E -.byte \$F6,\$B6,\$EE,\$EE,\$EE,\$EE,\$DE,\$DE -.byte \$18,\$04,\$02,\$01,\$01,\$00,\$00,\$00 -.byte \$1F,\$07,\$03,\$01,\$01,\$00,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$FE,\$FE,\$3E,\$CE,\$6E,\$76,\$16 -.byte \$80,\$80,\$80,\$80,\$80,\$00,\$00,\$E0 -.byte \$80,\$FF,\$FF,\$FC,\$C3,\$3F,\$FF,\$FE -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$7E,\$7E,\$BE,\$BE,\$DE,\$DE,\$0E,\$FE -.byte \$80,\$80,\$81,\$81,\$82,\$80,\$80,\$FF -.byte \$FE,\$FE,\$FD,\$FD,\$FB,\$FB,\$F0,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$0E,\$DE,\$DE,\$BE,\$BE,\$7E,\$7E -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 -.byte \$80,\$F0,\$FB,\$FB,\$FD,\$FD,\$FE,\$FE -.byte \$C0,\$C0,\$C0,\$00,\$30,\$30,\$30,\$30 -.byte \$F0,\$F0,\$F0,\$F0,\$C0,\$C0,\$C0,\$C0 -.byte \$27,\$0F,\$27,\$0E,\$20,\$00,\$00,\$FE -.byte \$FF,\$FF,\$FF,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$80,\$81,\$80,\$80,\$80,\$80,\$80,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$27,\$0F,\$27,\$0F,\$27,\$0F,\$27,\$0F -.byte \$27,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$80,\$81,\$80,\$80,\$80,\$81,\$80,\$80 -.byte \$80,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$C0 -.byte \$F0,\$F0,\$F0,\$F0,\$F0,\$F0,\$F0,\$F0 -.byte \$27,\$0F,\$27,\$0F,\$27,\$0F,\$27,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$80,\$80,\$80,\$81,\$80,\$80,\$81,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$3E,\$7E,\$7E,\$7E,\$FE,\$FE,\$FE,\$FE -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$FF -.byte \$FE,\$FF,\$FF,\$FF,\$FE,\$FE,\$FD,\$FF -.byte \$E0,\$00,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$DE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$FF,\$80,\$80,\$80,\$80,\$80,\$80,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$6E,\$F6,\$F6,\$F6,\$FE,\$FE,\$FE,\$FE -.byte \$80,\$80,\$80,\$00,\$00,\$80,\$80,\$FF -.byte \$FC,\$FB,\$C7,\$1F,\$7F,\$FF,\$FF,\$FF -.byte \$02,\$01,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$FE,\$FF,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$30,\$30,\$30,\$00,\$C0,\$C0,\$C0,\$C0 -.byte \$C0,\$C0,\$C0,\$F0,\$F0,\$F0,\$F0,\$F0 -.byte \$00,\$00,\$20,\$08,\$27,\$0F,\$27,\$0F -.byte \$00,\$FE,\$FE,\$FE,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$80,\$80,\$81,\$80,\$80,\$80,\$81 -.byte \$00,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$7E,\$7E,\$7E,\$BE,\$BE,\$BE,\$BE -.byte \$80,\$80,\$80,\$80,\$80,\$00,\$00,\$80 -.byte \$80,\$FF,\$FF,\$FF,\$FF,\$7F,\$07,\$F9 -.byte \$00,\$02,\$02,\$02,\$02,\$02,\$06,\$3C -.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FC,\$FA -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$C0 -.byte \$80,\$F7,\$F7,\$FB,\$F8,\$FE,\$FE,\$BF -.byte \$00,\$00,\$00,\$80,\$80,\$40,\$1C,\$07 -.byte \$00,\$BE,\$BE,\$3E,\$9E,\$DE,\$DA,\$EF -.byte \$80,\$86,\$83,\$81,\$80,\$80,\$80,\$80 -.byte \$80,\$FD,\$FE,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$30,\$30,\$18,\$0C,\$0C,\$06,\$06 -.byte \$00,\$EE,\$EE,\$F6,\$FA,\$FA,\$FC,\$FC -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$7E -.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$7E,\$7E,\$7E -.byte \$B0,\$B0,\$B0,\$B0,\$E0,\$80,\$80,\$FF -.byte \$E1,\$EB,\$EB,\$ED,\$FE,\$FF,\$FF,\$FF -.byte \$00,\$00,\$E0,\$3E,\$00,\$00,\$00,\$FE -.byte \$FE,\$FE,\$DE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$06,\$03,\$01,\$00,\$00,\$80,\$80,\$FF -.byte \$05,\$0E,\$0F,\$7F,\$7F,\$FF,\$FF,\$FF -.byte \$80,\$00,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$76,\$E6,\$EE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$81,\$83,\$83,\$83,\$83,\$C3,\$C3,\$FF -.byte \$F7,\$FA,\$FE,\$FE,\$FE,\$FE,\$FE,\$FF -.byte \$62,\$30,\$DC,\$6E,\$62,\$60,\$60,\$7E -.byte \$DE,\$EE,\$B2,\$DC,\$DE,\$DE,\$5E,\$7E -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$E0 -.byte \$FF,\$FB,\$FB,\$F9,\$F9,\$F0,\$E0,\$E0 -.byte \$00,\$7E,\$60,\$C0,\$C0,\$00,\$00,\$00 -.byte \$00,\$DC,\$DE,\$4E,\$DE,\$9E,\$3E,\$7E -.byte \$80,\$B8,\$BE,\$B3,\$B0,\$B0,\$B0,\$B0 -.byte \$80,\$F7,\$ED,\$EF,\$EF,\$E7,\$E7,\$E4 -.byte \$00,\$00,\$00,\$06,\$06,\$06,\$06,\$06 -.byte \$00,\$01,\$03,\$05,\$05,\$05,\$05,\$05 -.byte \$00,\$00,\$80,\$80,\$80,\$80,\$80,\$80 -.byte \$00,\$FE,\$7E,\$7E,\$7E,\$7E,\$7C,\$7A -.byte \$80,\$83,\$01,\$81,\$81,\$81,\$81,\$81 -.byte \$80,\$FE,\$7F,\$BF,\$DF,\$EF,\$F7,\$F7 -.byte \$00,\$06,\$06,\$06,\$86,\$82,\$C2,\$C2 -.byte \$00,\$FC,\$FC,\$FC,\$7C,\$7E,\$BE,\$BE -.byte \$80,\$86,\$86,\$83,\$81,\$81,\$80,\$80 -.byte \$80,\$FD,\$FD,\$FE,\$FF,\$FF,\$FF,\$FF -.byte \$0C,\$0C,\$0C,\$06,\$06,\$06,\$06,\$FE -.byte \$FA,\$FA,\$FA,\$FC,\$FC,\$FC,\$FC,\$FE -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$1E -.byte \$BC,\$7C,\$7E,\$3E,\$3E,\$1E,\$1E,\$1E -.byte \$80,\$80,\$80,\$00,\$00,\$00,\$00,\$00 -.byte \$FF,\$FE,\$FC,\$00,\$00,\$00,\$00,\$00 -.byte \$0E,\$3A,\$62,\$C0,\$80,\$00,\$00,\$FE -.byte \$FC,\$F6,\$DE,\$BE,\$7E,\$FE,\$FE,\$FE -.byte \$80,\$80,\$80,\$80,\$81,\$83,\$86,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FE,\$FD,\$FF -.byte \$02,\$02,\$02,\$06,\$06,\$06,\$06,\$FE -.byte \$FE,\$FE,\$FE,\$FC,\$FC,\$FC,\$FC,\$FE -.byte \$8C,\$8C,\$8C,\$8C,\$8C,\$8C,\$8C,\$FF -.byte \$FB,\$FB,\$FB,\$FB,\$FB,\$FB,\$FB,\$FF -.byte \$00,\$60,\$60,\$F0,\$30,\$18,\$18,\$18 -.byte \$00,\$DE,\$DE,\$EE,\$EE,\$F6,\$F6,\$F6 -.byte \$80,\$80,\$8F,\$F9,\$80,\$80,\$80,\$80 -.byte \$80,\$FF,\$FE,\$F7,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$03,\$06,\$08,\$B0,\$00 -.byte \$00,\$F6,\$F6,\$F7,\$E4,\$C6,\$A6,\$BA -.byte \$80,\$B0,\$B0,\$98,\$98,\$98,\$8F,\$80 -.byte \$80,\$EF,\$EF,\$F7,\$F7,\$F7,\$FF,\$FF -.byte \$80,\$E0,\$E0,\$80,\$80,\$80,\$80,\$80 -.byte \$80,\$DF,\$DF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$02 -.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$80,\$83,\$86,\$86,\$86,\$86,\$8C,\$8C -.byte \$80,\$FE,\$FD,\$FD,\$FD,\$FD,\$FB,\$FB -.byte \$80,\$C0,\$E0,\$B8,\$8C,\$86,\$83,\$FF -.byte \$FF,\$BF,\$DF,\$F7,\$FB,\$FD,\$FE,\$FF -.byte \$1E,\$02,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$FC,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$C0,\$80,\$80,\$80,\$80,\$80,\$80,\$FF -.byte \$BF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$0E,\$3C,\$6C,\$C6,\$02,\$00,\$00,\$FE -.byte \$FE,\$FA,\$DA,\$BC,\$FE,\$FE,\$FE,\$FE -.byte \$80,\$80,\$80,\$81,\$83,\$86,\$8C,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FE,\$FD,\$FB,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$80,\$80 -.byte \$60,\$00,\$00,\$00,\$00,\$00,\$80,\$80 -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$FF -.byte \$C0,\$FE,\$FE,\$FE,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$F0,\$1C,\$00,\$00 -.byte \$00,\$FE,\$FE,\$FE,\$EE,\$FA,\$FE,\$FE -.byte \$80,\$80,\$80,\$FF,\$83,\$80,\$80,\$80 -.byte \$80,\$FF,\$FF,\$FE,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$FE,\$00,\$00,\$00,\$F0 -.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$EE -.byte \$80,\$80,\$80,\$81,\$8F,\$80,\$E0,\$FF -.byte \$80,\$FF,\$FF,\$FF,\$FE,\$FF,\$DF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$FE,\$00,\$00 -.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$80,\$80,\$80,\$80,\$80,\$87,\$BC,\$E0 -.byte \$80,\$FF,\$FF,\$FF,\$FF,\$FF,\$FB,\$DF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$FE,\$7E,\$7E,\$BE,\$DE,\$EE,\$F0 -.byte \$80,\$80,\$80,\$80,\$80,\$00,\$80,\$80 -.byte \$80,\$FE,\$FF,\$FF,\$FF,\$3F,\$BF,\$9F -.byte \$18,\$20,\$40,\$80,\$80,\$00,\$00,\$00 -.byte \$E0,\$C0,\$80,\$00,\$00,\$00,\$00,\$00 -.byte \$90,\$90,\$88,\$88,\$88,\$89,\$85,\$FD -.byte \$FE,\$FF,\$FF,\$FF,\$FF,\$FE,\$FE,\$FE -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$07 -.byte \$00,\$FE,\$FE,\$3E,\$C2,\$7C,\$FF,\$FF -.byte \$80,\$80,\$80,\$80,\$80,\$88,\$90,\$90 -.byte \$80,\$FF,\$FF,\$FC,\$F3,\$FF,\$FD,\$FC -.byte \$00,\$80,\$80,\$80,\$80,\$80,\$80,\$80 -.byte \$00,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$C0,\$00,\$FE -.byte \$DE,\$EE,\$EE,\$EE,\$EE,\$DE,\$3E,\$FE -.byte \$80,\$80,\$84,\$84,\$86,\$83,\$80,\$FF -.byte \$FB,\$F7,\$F7,\$F7,\$F7,\$FB,\$FC,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$3E,\$DE,\$DE,\$BE,\$BE,\$BE,\$BE -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 -.byte \$80,\$FC,\$FB,\$FB,\$FD,\$FD,\$FD,\$FD -.byte \$84,\$43,\$40,\$80,\$00,\$00,\$00,\$FE -.byte \$7A,\$BC,\$BE,\$7E,\$FE,\$FE,\$FE,\$FE -.byte \$80,\$80,\$80,\$80,\$83,\$84,\$84,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FC,\$FB,\$FB,\$FF -.byte \$00,\$FE,\$7C,\$20,\$30,\$28,\$28,\$48 -.byte \$00,\$00,\$82,\$DE,\$CE,\$D6,\$D6,\$B6 -.byte \$80,\$83,\$80,\$80,\$80,\$80,\$80,\$80 -.byte \$80,\$FC,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$02,\$06,\$0E,\$0E,\$72,\$02,\$00,\$FE -.byte \$FC,\$F8,\$F0,\$F0,\$8C,\$FC,\$FE,\$FE -.byte \$84,\$88,\$88,\$80,\$80,\$80,\$80,\$FF -.byte \$FB,\$F7,\$F7,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$80,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$E4,\$F0,\$E4,\$F0,\$84,\$80,\$80,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$03,\$03,\$03,\$00,\$0C,\$0C,\$0C,\$0C -.byte \$0F,\$0F,\$0F,\$0F,\$03,\$03,\$03,\$03 -.byte \$00,\$02,\$E2,\$1E,\$0E,\$16,\$26,\$C2 -.byte \$00,\$FC,\$1C,\$E0,\$F0,\$E8,\$D8,\$3C -.byte \$80,\$81,\$80,\$80,\$80,\$80,\$80,\$83 -.byte \$80,\$FE,\$FF,\$FF,\$FF,\$FF,\$FF,\$FC -.byte \$00,\$80,\$00,\$00,\$00,\$80,\$00,\$00 -.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$E4,\$F0,\$E4,\$F0,\$E4,\$F0,\$E4,\$F0 -.byte \$E4,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$80,\$00,\$00,\$80,\$FE -.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$E4,\$F0,\$E4,\$F0,\$E4,\$F0,\$E4,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$03,\$03,\$03,\$03,\$03,\$03,\$03,\$03 -.byte \$0F,\$0F,\$0F,\$0F,\$0F,\$0F,\$0F,\$0F -.byte \$00,\$00,\$00,\$80,\$00,\$00,\$00,\$80 -.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$80,\$80,\$84,\$90,\$E4,\$F0,\$E4,\$F0 -.byte \$80,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$0C,\$0C,\$0C,\$00,\$03,\$03,\$03,\$03 -.byte \$03,\$03,\$03,\$0F,\$0F,\$0F,\$0F,\$0F -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$1E -.byte \$FE,\$3E,\$7E,\$7E,\$3E,\$3E,\$3E,\$1E -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$E0 -.byte \$F3,\$FD,\$FC,\$FE,\$FC,\$FC,\$F8,\$E0 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$EE,\$EE,\$F6,\$F6,\$FE,\$FE,\$FE -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 -.byte \$80,\$FF,\$FF,\$FF,\$FF,\$FF,\$EF,\$EF -.byte \$82,\$82,\$82,\$84,\$80,\$80,\$80,\$FF -.byte \$FD,\$FD,\$FD,\$FB,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$06 -.byte \$FE,\$C6,\$BE,\$7E,\$7E,\$3E,\$0E,\$06 -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$FC -.byte \$FB,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FC -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$FE,\$FE,\$7E,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$FF -.byte \$F8,\$FE,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$20,\$00,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$DE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$FE,\$F8,\$F0,\$C0,\$A8,\$94,\$82,\$FF -.byte \$01,\$07,\$0F,\$3F,\$57,\$EB,\$FD,\$FF -.byte \$FC,\$F8,\$C8,\$88,\$84,\$84,\$40,\$20 -.byte \$00,\$06,\$36,\$76,\$7A,\$7A,\$BE,\$DE -.byte \$FF,\$FD,\$81,\$A3,\$D3,\$8C,\$84,\$84 -.byte \$00,\$82,\$FE,\$DC,\$AC,\$F3,\$FB,\$FB -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$E6,\$F6,\$F6,\$FE,\$FE,\$FE,\$FE -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 -.byte \$80,\$FF,\$FF,\$EF,\$EF,\$F7,\$F7,\$FB -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$EE,\$EE,\$F6,\$F6,\$EE,\$EE,\$FE -.byte \$80,\$80,\$80,\$80,\$80,\$00,\$00,\$80 -.byte \$80,\$FF,\$FF,\$FF,\$FF,\$1F,\$6F,\$F6 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$80,\$40 -.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$7E,\$BE -.byte \$80,\$80,\$86,\$88,\$90,\$E0,\$C0,\$E1 -.byte \$80,\$FF,\$79,\$77,\$6F,\$1F,\$3F,\$1E -.byte \$30,\$30,\$30,\$30,\$30,\$30,\$30,\$30 -.byte \$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$C0 -.byte \$0C,\$0C,\$0C,\$0C,\$FC,\$FC,\$00,\$00 -.byte \$03,\$03,\$03,\$03,\$03,\$03,\$FF,\$FF -.byte \$30,\$30,\$30,\$30,\$3F,\$3F,\$00,\$00 -.byte \$C0,\$C0,\$C0,\$C0,\$C0,\$C0,\$FF,\$FF -.byte \$00,\$00,\$FC,\$FC,\$0C,\$0C,\$0C,\$0C -.byte \$FF,\$FF,\$03,\$03,\$03,\$03,\$03,\$03 -.byte \$00,\$00,\$FF,\$FF,\$00,\$00,\$00,\$00 -.byte \$FF,\$FF,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$00,\$3F,\$3F,\$30,\$30,\$30,\$30 -.byte \$FF,\$FF,\$C0,\$C0,\$C0,\$C0,\$C0,\$C0 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$F6,\$FA,\$FA,\$7A,\$8E,\$FE,\$FE,\$FE -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$0F -.byte \$03,\$01,\$00,\$07,\$0F,\$0F,\$0F,\$0F -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$80 -.byte \$DC,\$DC,\$00,\$00,\$00,\$80,\$80,\$80 -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$FF -.byte \$EF,\$9F,\$FF,\$FE,\$FE,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$FE,\$FE,\$EE,\$EE,\$0E,\$EE,\$EE -.byte \$80,\$80,\$80,\$00,\$00,\$00,\$00,\$00 -.byte \$80,\$FF,\$FF,\$7F,\$0C,\$03,\$07,\$07 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$FE,\$FE,\$FE,\$FE,\$7E,\$7E,\$BE -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 -.byte \$80,\$FE,\$FE,\$FD,\$FA,\$F7,\$F7,\$F7 -.byte \$40,\$00,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$C4,\$80,\$80,\$80,\$80,\$80,\$80,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$12,\$00,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$91,\$80,\$80,\$80,\$80,\$80,\$80,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$04,\$08,\$F0,\$00,\$00,\$00,\$00,\$FE -.byte \$FA,\$F6,\$0E,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$92,\$88,\$84,\$83,\$82,\$81,\$81,\$FF -.byte \$ED,\$F7,\$FB,\$FC,\$FD,\$FE,\$FE,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$FE -.byte \$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$FF -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$E0,\$F0,\$F0,\$50,\$00,\$A8,\$00,\$00 -.byte \$E0,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$FF,\$FF,\$FF,\$D5,\$80,\$AA,\$80,\$80 -.byte \$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$FF,\$FF,\$FF,\$54,\$00,\$AA,\$00,\$00 -.byte \$FF,\$FF,\$FF,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$8F,\$8F,\$8F,\$95,\$80,\$AA,\$80,\$80 -.byte \$8F,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$FF,\$FE,\$F8,\$20,\$20,\$10,\$88,\$7C -.byte \$00,\$00,\$06,\$DE,\$DE,\$EE,\$76,\$82 -.byte \$FF,\$9F,\$87,\$8C,\$BC,\$82,\$E1,\$91 -.byte \$80,\$E0,\$F8,\$F3,\$C3,\$FD,\$9E,\$EE -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$00,\$00 -.byte \$00,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE,\$FE -.byte \$80,\$80,\$80,\$80,\$80,\$80,\$80,\$80 -.byte \$80,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF,\$FF -.byte \$0C,\$0C,\$0C,\$0C,\$0C,\$0C,\$0C,\$0C -.byte \$03,\$03,\$03,\$03,\$03,\$03,\$03,\$03 -.byte \$00,\$00,\$00,\$00,\$0F,\$0F,\$E0,\$E0 -.byte \$00,\$00,\$00,\$00,\$F0,\$F0,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$FF,\$FF,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$E0,\$E0,\$0F,\$0F -.byte \$00,\$00,\$00,\$00,\$1F,\$1F,\$FF,\$FF -.byte \$00,\$00,\$00,\$00,\$FF,\$FF,\$00,\$00 -.byte \$00,\$00,\$00,\$00,\$00,\$00,\$FF,\$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$7C,$EE,$EE,$EE,$EE,$7C,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$38,$78,$38,$38,$38,$7C,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$7C,$0E,$7C,$E0,$EE,$FE,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$FC,$0E,$3C,$0E,$0E,$FC,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$3E,$7E,$EE,$EE,$FE,$0E,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$FC,$E0,$FC,$0E,$EE,$7C,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$7C,$E0,$FC,$EE,$EE,$7C,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$FE,$EE,$1C,$1C,$38,$38,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$7C,$EE,$7C,$EE,$EE,$7C,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$7C,$EE,$EE,$7E,$0E,$3C,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$FE,$1C,$38,$70,$E0,$FE,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$40,$60,$70,$78,$7C +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $7E,$7C,$78,$70,$60,$40,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$03,$37,$7F,$7F +.byte $00,$00,$00,$00,$03,$07,$07,$07 +.byte $7F,$3F,$1F,$0F,$00,$00,$00,$00 +.byte $07,$03,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$C0,$E0,$FC,$FE +.byte $00,$00,$00,$00,$C0,$E0,$E0,$E0 +.byte $FE,$FE,$FC,$F8,$70,$00,$00,$00 +.byte $E0,$C0,$00,$08,$70,$00,$00,$00 +.byte $00,$00,$00,$03,$37,$7F,$7F,$7F +.byte $00,$00,$00,$03,$07,$07,$07,$07 +.byte $3F,$1F,$0F,$00,$00,$00,$00,$00 +.byte $03,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$C0,$EC,$FE,$FE,$FE +.byte $00,$00,$00,$C0,$E0,$E0,$E0,$E0 +.byte $FE,$FC,$F0,$00,$00,$00,$00,$00 +.byte $C0,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$20 +.byte $00,$00,$00,$00,$00,$00,$00,$20 +.byte $20,$40,$03,$07,$1F,$5F,$5F,$07 +.byte $20,$60,$23,$27,$23,$27,$27,$27 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$80,$F0,$F8,$FC,$FC,$FC +.byte $00,$00,$80,$00,$C0,$E0,$E0,$E0 +.byte $20,$20,$40,$00,$00,$00,$10,$1C +.byte $20,$20,$60,$20,$20,$20,$20,$20 +.byte $0F,$07,$03,$01,$03,$57,$5F,$1F +.byte $20,$20,$20,$20,$23,$27,$27,$27 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$80,$E0,$F0,$F8,$F8,$F8,$F8 +.byte $00,$00,$00,$00,$C0,$E0,$E0,$E0 +.byte $00,$0C,$00,$0C,$1E,$3F,$3F,$3F +.byte $00,$00,$FF,$00,$00,$01,$03,$03 +.byte $3F,$3F,$1F,$0F,$03,$00,$00,$00 +.byte $03,$03,$01,$00,$00,$00,$00,$00 +.byte $00,$60,$00,$70,$70,$F8,$FC,$FC +.byte $00,$00,$FF,$00,$00,$E8,$FC,$FC +.byte $FC,$F8,$F8,$F8,$F0,$E0,$00,$00 +.byte $F4,$F0,$E0,$00,$00,$00,$00,$00 +.byte $00,$80,$60,$00,$00,$00,$00,$00 +.byte $00,$80,$E0,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$10,$1C,$3B,$3F,$7F,$7F,$7F +.byte $0E,$0E,$00,$03,$07,$07,$07,$07 +.byte $7F,$3F,$1F,$0F,$00,$00,$00,$00 +.byte $07,$03,$00,$00,$00,$00,$00,$00 +.byte $00,$08,$38,$DC,$FC,$FE,$FE,$FE +.byte $70,$70,$00,$C0,$E0,$E0,$E0,$E0 +.byte $FE,$FE,$FC,$F8,$70,$00,$00,$00 +.byte $E0,$C0,$00,$08,$70,$00,$00,$00 +.byte $00,$10,$1C,$3B,$3F,$7F,$7F,$7F +.byte $0E,$0E,$00,$03,$07,$07,$07,$07 +.byte $3F,$1F,$0F,$00,$00,$00,$00,$00 +.byte $03,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$08,$38,$DC,$FC,$FE,$FE,$FE +.byte $70,$70,$00,$C0,$E0,$E0,$E0,$E0 +.byte $FC,$F8,$F0,$00,$00,$00,$00,$00 +.byte $C0,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$01,$03,$07,$0F,$0F,$0F,$0F +.byte $00,$00,$00,$00,$00,$01,$03,$03 +.byte $0F,$1F,$1F,$1F,$0F,$07,$03,$00 +.byte $03,$13,$11,$10,$08,$00,$00,$00 +.byte $00,$C0,$E0,$E0,$C0,$E0,$F0,$F0 +.byte $00,$00,$00,$00,$00,$E0,$F0,$F0 +.byte $F0,$F0,$E0,$C0,$C0,$C0,$80,$00 +.byte $F0,$F0,$E0,$00,$00,$00,$00,$00 +.byte $00,$01,$03,$07,$0F,$0F,$0F,$0F +.byte $00,$00,$00,$00,$00,$01,$03,$03 +.byte $0F,$0F,$0F,$0F,$07,$07,$03,$00 +.byte $03,$03,$01,$00,$00,$00,$00,$00 +.byte $00,$C0,$E0,$E0,$C0,$E0,$F0,$F0 +.byte $00,$00,$00,$00,$00,$E0,$F0,$F0 +.byte $F0,$F0,$E0,$C0,$E0,$E0,$C0,$00 +.byte $F0,$F0,$E0,$00,$00,$00,$00,$00 +.byte $07,$0F,$5F,$5F,$0F,$07,$00,$00 +.byte $27,$23,$20,$20,$20,$20,$20,$20 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $20,$20,$00,$00,$00,$00,$00,$00 +.byte $F8,$F8,$F0,$F0,$E0,$C0,$00,$00 +.byte $E0,$C0,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $1F,$1F,$0F,$0F,$07,$00,$00,$00 +.byte $27,$23,$20,$0C,$07,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F8,$F8,$F0,$F0,$00,$00,$00,$00 +.byte $E0,$C0,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$03,$0F,$1F,$1F,$1F +.byte $00,$00,$07,$00,$08,$19,$13,$13 +.byte $0F,$0F,$0F,$0F,$03,$00,$00,$00 +.byte $03,$03,$01,$00,$00,$00,$00,$00 +.byte $00,$60,$00,$E0,$C1,$E3,$F7,$FF +.byte $00,$00,$FF,$00,$00,$E0,$F0,$F0 +.byte $FE,$FC,$FC,$F8,$F0,$00,$00,$00 +.byte $F0,$F0,$E0,$00,$00,$00,$00,$00 +.byte $00,$04,$03,$C0,$80,$80,$00,$00 +.byte $00,$04,$FF,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$01,$03,$07,$07,$07,$07 +.byte $00,$00,$00,$00,$00,$00,$01,$01 +.byte $07,$0F,$0F,$0F,$07,$03,$01,$00 +.byte $01,$09,$08,$08,$04,$00,$00,$00 +.byte $00,$E0,$F8,$FE,$FC,$F4,$F8,$F8 +.byte $00,$00,$00,$00,$03,$F3,$FB,$F8 +.byte $F8,$F8,$F4,$FC,$FE,$F8,$E0,$00 +.byte $F8,$FB,$F3,$03,$00,$00,$00,$00 +.byte $00,$00,$01,$03,$07,$07,$07,$07 +.byte $00,$00,$00,$00,$00,$00,$01,$01 +.byte $07,$07,$07,$07,$03,$01,$00,$00 +.byte $01,$01,$00,$00,$00,$00,$00,$00 +.byte $00,$E0,$F8,$FE,$FC,$F4,$F8,$F8 +.byte $00,$00,$00,$00,$03,$F3,$FB,$F8 +.byte $F8,$F8,$F4,$FC,$FE,$F8,$E0,$00 +.byte $F8,$FB,$F3,$03,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $66,$FF,$FF,$FF,$7E,$3C,$18,$00 +.byte $66,$99,$81,$81,$42,$24,$18,$00 +.byte $66,$FF,$FF,$FF,$7E,$3C,$18,$00 +.byte $66,$99,$81,$81,$42,$24,$18,$00 +.byte $66,$99,$81,$81,$42,$24,$18,$00 +.byte $66,$99,$81,$81,$42,$24,$18,$00 +.byte $66,$FF,$FF,$FF,$7E,$3C,$18,$00 +.byte $66,$99,$81,$81,$42,$24,$18,$00 +.byte $66,$99,$81,$81,$42,$24,$18,$00 +.byte $66,$99,$81,$81,$42,$24,$18,$00 +.byte $66,$99,$81,$81,$42,$24,$18,$00 +.byte $66,$99,$81,$81,$42,$24,$18,$00 +.byte $00,$00,$08,$10,$10,$20,$00,$00 +.byte $07,$1F,$37,$6F,$6F,$DF,$FF,$FF +.byte $08,$08,$04,$03,$00,$00,$00,$00 +.byte $F7,$F7,$FB,$7C,$7F,$3F,$1F,$07 +.byte $00,$00,$00,$E0,$10,$08,$08,$04 +.byte $E0,$F8,$FC,$1E,$EE,$F7,$F7,$FB +.byte $04,$24,$44,$84,$08,$00,$00,$00 +.byte $FB,$DB,$BB,$7A,$F6,$FC,$F8,$E0 +.byte $00,$00,$00,$03,$14,$24,$21,$20 +.byte $07,$1F,$3F,$7C,$6B,$DB,$DE,$DF +.byte $20,$10,$00,$03,$00,$00,$00,$00 +.byte $DF,$EF,$FF,$7C,$7F,$3F,$1F,$07 +.byte $00,$00,$00,$E0,$10,$08,$88,$44 +.byte $E0,$F8,$FC,$1E,$EE,$F7,$77,$BB +.byte $24,$20,$40,$80,$00,$00,$00,$00 +.byte $DB,$DF,$BF,$7E,$FE,$FC,$F8,$E0 +.byte $3C,$64,$C5,$C0,$C0,$C0,$64,$39 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$D9,$EB,$C3,$C3,$C3,$F1 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$E3,$37,$F6,$06,$B7,$E3 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $E3,$60,$6F,$E3,$63,$63,$E3,$6F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $18,$18,$3E,$18,$18,$18,$19,$CE +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$3E,$66,$78,$0E,$66,$7C +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$01,$03,$03,$01,$01,$03 +.byte $00,$10,$08,$06,$20,$16,$08,$00 +.byte $07,$07,$07,$07,$07,$03,$01,$00 +.byte $20,$59,$40,$92,$28,$20,$20,$40 +.byte $00,$00,$80,$C0,$C0,$80,$80,$C0 +.byte $00,$08,$10,$60,$04,$68,$10,$00 +.byte $E0,$E0,$E0,$E0,$E0,$C0,$80,$00 +.byte $04,$1A,$02,$49,$14,$84,$04,$02 +.byte $00,$01,$03,$03,$01,$01,$03,$07 +.byte $02,$04,$06,$00,$36,$08,$00,$20 +.byte $07,$07,$07,$07,$03,$01,$00,$00 +.byte $59,$40,$42,$18,$20,$20,$10,$10 +.byte $00,$80,$C0,$C0,$80,$80,$C0,$E0 +.byte $40,$20,$60,$00,$6C,$10,$00,$04 +.byte $E0,$E0,$E0,$E0,$C0,$80,$00,$00 +.byte $1A,$02,$42,$18,$84,$04,$08,$08 +.byte $00,$00,$01,$03,$03,$01,$01,$03 +.byte $00,$08,$04,$06,$00,$26,$18,$00 +.byte $07,$07,$07,$07,$07,$03,$01,$00 +.byte $30,$C9,$00,$02,$18,$20,$20,$20 +.byte $00,$00,$80,$C0,$C0,$80,$80,$C0 +.byte $00,$00,$08,$78,$08,$70,$00,$00 +.byte $E0,$E0,$E0,$E0,$E0,$C0,$80,$00 +.byte $00,$1C,$02,$4A,$16,$84,$02,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$02,$02,$02,$08,$14,$2A,$4A +.byte $00,$00,$01,$03,$01,$09,$15,$35 +.byte $8A,$6A,$14,$02,$02,$00,$00,$00 +.byte $75,$15,$03,$01,$01,$01,$00,$00 +.byte $00,$40,$40,$40,$10,$28,$54,$52 +.byte $00,$00,$80,$C0,$80,$90,$A8,$AC +.byte $51,$56,$28,$40,$40,$00,$00,$00 +.byte $AE,$A8,$C0,$80,$80,$80,$00,$00 +.byte $00,$02,$02,$02,$00,$04,$0A,$0A +.byte $00,$00,$01,$03,$01,$01,$05,$05 +.byte $12,$12,$3C,$22,$02,$00,$00,$00 +.byte $0D,$0D,$03,$01,$01,$01,$00,$00 +.byte $00,$40,$40,$40,$00,$20,$50,$50 +.byte $00,$00,$80,$C0,$80,$80,$A0,$A0 +.byte $48,$48,$3C,$44,$40,$00,$00,$00 +.byte $B0,$B0,$C0,$80,$80,$80,$00,$00 +.byte $00,$02,$02,$02,$00,$04,$0A,$0A +.byte $00,$00,$01,$03,$01,$01,$05,$05 +.byte $12,$12,$3C,$22,$02,$00,$00,$00 +.byte $0D,$0D,$03,$01,$01,$01,$00,$00 +.byte $00,$40,$40,$40,$00,$20,$50,$50 +.byte $00,$00,$80,$C0,$80,$80,$A0,$A0 +.byte $48,$48,$3C,$44,$40,$00,$00,$00 +.byte $B0,$B0,$C0,$80,$80,$80,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$1F,$3F,$7F +.byte $08,$86,$71,$0A,$12,$00,$08,$02 +.byte $7F,$3F,$1F,$00,$00,$00,$00,$00 +.byte $20,$08,$00,$12,$0A,$71,$86,$08 +.byte $00,$00,$00,$00,$00,$00,$98,$FC +.byte $00,$00,$10,$22,$44,$28,$28,$00 +.byte $FC,$98,$00,$00,$00,$00,$00,$00 +.byte $00,$28,$28,$44,$22,$10,$00,$00 +.byte $00,$00,$00,$00,$00,$0F,$1F,$3F +.byte $00,$07,$30,$C9,$09,$00,$04,$01 +.byte $3F,$1F,$0F,$00,$00,$00,$00,$00 +.byte $10,$04,$00,$09,$C9,$30,$07,$00 +.byte $00,$00,$00,$00,$00,$80,$CC,$FE +.byte $00,$00,$90,$10,$20,$16,$15,$00 +.byte $FE,$CC,$80,$00,$00,$00,$00,$00 +.byte $00,$15,$16,$20,$10,$90,$00,$00 +.byte $00,$00,$00,$00,$00,$1F,$3F,$7F +.byte $02,$02,$E1,$11,$12,$00,$08,$02 +.byte $7F,$3F,$1F,$00,$00,$00,$00,$00 +.byte $20,$08,$00,$12,$0A,$32,$5C,$00 +.byte $00,$00,$00,$00,$00,$00,$98,$FC +.byte $00,$00,$20,$40,$42,$2C,$28,$00 +.byte $FC,$98,$00,$00,$00,$00,$00,$00 +.byte $00,$28,$28,$28,$1C,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $01,$02,$02,$04,$03,$04,$1B,$00 +.byte $00,$01,$01,$03,$00,$03,$04,$3F +.byte $00,$1B,$04,$03,$04,$02,$02,$01 +.byte $3F,$04,$03,$00,$03,$01,$01,$00 +.byte $00,$80,$40,$20,$D0,$20,$CE,$00 +.byte $00,$00,$80,$C0,$20,$C0,$08,$FC +.byte $00,$CE,$20,$D0,$20,$40,$80,$00 +.byte $FC,$08,$C0,$20,$C0,$80,$00,$00 +.byte $00,$00,$0C,$07,$04,$04,$1B,$00 +.byte $00,$00,$00,$00,$03,$03,$04,$3F +.byte $00,$1B,$04,$04,$07,$0C,$00,$00 +.byte $3F,$04,$03,$03,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$C0,$20,$CE,$00 +.byte $00,$00,$00,$00,$00,$C0,$08,$FC +.byte $00,$CE,$20,$C0,$00,$00,$00,$00 +.byte $FC,$08,$C0,$00,$00,$00,$00,$00 +.byte $00,$00,$0C,$07,$04,$04,$1B,$00 +.byte $00,$00,$00,$00,$03,$03,$04,$3F +.byte $00,$1B,$04,$04,$07,$0C,$00,$00 +.byte $3F,$04,$03,$03,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$C0,$20,$CE,$00 +.byte $00,$00,$00,$00,$00,$C0,$08,$FC +.byte $00,$CE,$20,$C0,$00,$00,$00,$00 +.byte $FC,$08,$C0,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$3C,$42,$42,$24,$3C,$3C +.byte $00,$00,$3C,$42,$42,$24,$24,$24 +.byte $3C,$7E,$FF,$BF,$BF,$9F,$42,$3C +.byte $24,$42,$81,$C1,$C1,$E1,$7E,$3C +.byte $42,$BD,$81,$BD,$7E,$7E,$7E,$7E +.byte $42,$FF,$FF,$FF,$42,$42,$42,$42 +.byte $7E,$7E,$7E,$7E,$BD,$81,$BD,$42 +.byte $42,$42,$42,$42,$FF,$FF,$FF,$42 +.byte $00,$00,$FC,$FE,$C0,$CC,$DE,$DA +.byte $00,$00,$FC,$80,$BF,$BF,$BF,$BF +.byte $F0,$F0,$F0,$F0,$DA,$DE,$4C,$00 +.byte $BF,$BF,$BF,$BF,$BF,$BF,$3F,$3F +.byte $7E,$FF,$00,$00,$00,$00,$00,$00 +.byte $7E,$FF,$42,$42,$24,$24,$18,$18 +.byte $18,$18,$3C,$3C,$7E,$7E,$FF,$7E +.byte $00,$00,$00,$00,$00,$00,$FF,$7E +.byte $78,$CC,$CC,$0C,$38,$70,$C0,$FC +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $30,$F0,$30,$30,$30,$30,$30,$FC +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $07,$03,$03,$03,$03,$03,$03,$07 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $CF,$63,$63,$63,$C3,$03,$03,$8F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$0F,$01,$0F,$19,$19,$CD +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$3B,$9B,$9B,$8E,$8E,$CC +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0C,$3E,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$9E,$33,$3F,$30,$3B,$1E +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$76,$3A,$30,$30,$30,$7C +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $80,$40,$00,$83,$C3,$C0,$C0,$80 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$80,$C0,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$FC,$EE,$EE,$EE,$FC,$E0,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$7C,$EE,$EE,$EE,$FE,$EE,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$EE,$EE,$EE,$EE,$EE,$7C,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$7C,$E0,$7C,$0E,$EE,$7C,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$FE,$E0,$F0,$E0,$E0,$FE,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$F8,$EC,$EE,$EE,$EE,$FC,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$7C,$E0,$EE,$EE,$EE,$7E,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$C6,$EE,$FE,$FE,$EE,$EE,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$FC,$EE,$EE,$EE,$FC,$EE,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$E0,$E0,$E0,$E0,$EE,$FE,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$EE,$EE,$EE,$6C,$38,$10,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$70,$F0,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $70,$D9,$D9,$19,$31,$61,$C1,$F8 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $E0,$F3,$B0,$B0,$B0,$B0,$F0,$E3 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $C1,$C3,$C6,$C7,$C6,$C6,$C6,$F3 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0E,$0E,$F0,$F0,$F0,$00,$00,$00 +.byte $F8,$F8,$00,$07,$07,$07,$FF,$FF +.byte $E0,$E0,$1F,$1F,$1F,$00,$00,$00 +.byte $8F,$8F,$90,$F0,$F0,$F0,$FF,$FF +.byte $80,$80,$F0,$F0,$F0,$00,$00,$00 +.byte $3F,$3F,$0F,$07,$07,$07,$FF,$FF +.byte $00,$00,$80,$80,$80,$00,$00,$00 +.byte $FF,$FF,$7F,$3F,$3F,$3F,$FF,$FF +.byte $FC,$FC,$FF,$FF,$FF,$00,$00,$00 +.byte $81,$81,$00,$00,$00,$00,$FF,$FF +.byte $00,$00,$07,$07,$07,$00,$00,$00 +.byte $FF,$FF,$FC,$FC,$FC,$FC,$FF,$FF +.byte $C0,$C0,$3F,$3F,$3F,$00,$00,$00 +.byte $1F,$1F,$E0,$E0,$E0,$C0,$FF,$FF +.byte $81,$81,$F0,$F0,$F0,$00,$00,$00 +.byte $3F,$3F,$0F,$07,$07,$07,$FF,$FF +.byte $1F,$1F,$FF,$FF,$FF,$00,$00,$00 +.byte $F0,$F0,$80,$80,$80,$80,$FF,$FF +.byte $38,$38,$C0,$C0,$C0,$00,$00,$00 +.byte $E3,$E3,$03,$1F,$1F,$1F,$FF,$FF +.byte $00,$00,$FF,$FF,$FF,$00,$00,$00 +.byte $FF,$FF,$00,$00,$00,$00,$FF,$FF +.byte $1C,$1C,$03,$03,$03,$00,$00,$00 +.byte $F1,$F1,$FE,$FE,$FE,$FE,$FF,$FF +.byte $C0,$C0,$C0,$C0,$C0,$C0,$C0,$00 +.byte $1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F +.byte $01,$01,$01,$01,$01,$01,$01,$0E +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$F8 +.byte $E0,$E0,$E0,$E0,$E0,$E0,$E0,$E0 +.byte $0F,$0F,$0F,$0F,$0F,$0F,$0F,$8F +.byte $3F,$07,$07,$07,$07,$07,$07,$00 +.byte $E0,$FC,$FC,$FC,$FC,$FC,$FC,$FF +.byte $80,$80,$80,$80,$80,$80,$80,$80 +.byte $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F +.byte $F0,$00,$00,$00,$00,$00,$00,$00 +.byte $07,$07,$FF,$FF,$FF,$FF,$FF,$FF +.byte $FF,$FC,$FC,$FC,$FC,$FC,$FC,$FC +.byte $80,$80,$81,$81,$81,$81,$81,$81 +.byte $80,$00,$00,$00,$00,$00,$00,$00 +.byte $3F,$3F,$FF,$FF,$FF,$FF,$FF,$FF +.byte $E3,$FC,$FC,$FC,$FC,$FC,$FC,$FC +.byte $0E,$80,$81,$81,$81,$81,$81,$81 +.byte $07,$00,$00,$00,$00,$00,$00,$00 +.byte $FC,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$C0,$C0,$C0,$C0 +.byte $FF,$FF,$FF,$FF,$3F,$1F,$1F,$1F +.byte $FE,$8E,$8E,$8E,$81,$81,$81,$81 +.byte $00,$38,$38,$38,$3F,$3F,$3F,$3F +.byte $00,$00,$00,$00,$00,$00,$00,$38 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$E7 +.byte $FC,$FC,$FC,$FC,$FC,$FC,$FC,$1C +.byte $01,$81,$81,$81,$81,$81,$81,$F1 +.byte $03,$00,$00,$00,$00,$00,$00,$00 +.byte $FE,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$C0,$C0 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$3F,$1F +.byte $F0,$F0,$F0,$0E,$0E,$0E,$01,$01 +.byte $0F,$07,$07,$F9,$F8,$F8,$FF,$FF +.byte $E3,$E3,$E3,$E0,$E0,$E0,$E0,$E0 +.byte $8E,$8E,$8E,$0F,$0F,$0F,$0F,$0F +.byte $C0,$C0,$C0,$07,$07,$07,$3F,$3F +.byte $1F,$1F,$1F,$1C,$FC,$FC,$E0,$E0 +.byte $81,$81,$81,$80,$80,$80,$80,$80 +.byte $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F +.byte $1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F +.byte $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0 +.byte $38,$38,$38,$00,$00,$00,$00,$00 +.byte $E3,$E3,$E3,$E3,$FF,$FF,$FF,$FF +.byte $7E,$7E,$7E,$0E,$0E,$0E,$F0,$F0 +.byte $41,$C0,$C0,$C8,$F8,$F8,$00,$07 +.byte $00,$00,$00,$FC,$FC,$FC,$FF,$FF +.byte $00,$FF,$FF,$83,$83,$83,$80,$80 +.byte $F8,$F8,$F8,$00,$00,$00,$00,$00 +.byte $04,$03,$03,$03,$FF,$FF,$FF,$FF +.byte $0F,$0F,$0F,$70,$70,$70,$80,$80 +.byte $F8,$F8,$F8,$C0,$C7,$C7,$07,$3F +.byte $E0,$E0,$E0,$E0,$E0,$E0,$E3,$E3 +.byte $1F,$0F,$0F,$0F,$0F,$0F,$0E,$0E +.byte $07,$07,$07,$07,$07,$07,$07,$07 +.byte $FC,$FC,$FC,$FC,$FC,$FC,$FC,$FC +.byte $C0,$C0,$C0,$C0,$C0,$C0,$00,$00 +.byte $3F,$1F,$1F,$1F,$1F,$1F,$1F,$FF +.byte $0F,$0F,$0F,$81,$81,$81,$FE,$FE +.byte $08,$F8,$F8,$79,$7F,$7F,$00,$00 +.byte $00,$00,$00,$1F,$1F,$1F,$1F,$1F +.byte $00,$7F,$7F,$70,$F0,$F0,$F0,$F0 +.byte $FF,$FF,$FF,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF +.byte $01,$01,$01,$00,$00,$00,$00,$00 +.byte $01,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $1C,$1C,$1C,$FC,$FC,$FC,$FC,$FC +.byte $F0,$F1,$F1,$81,$81,$81,$01,$01 +.byte $00,$00,$00,$00,$00,$00,$03,$03 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FE,$FE +.byte $00,$00,$00,$00,$00,$80,$80,$80 +.byte $FF,$FF,$FF,$FF,$FF,$7F,$3F,$3F +.byte $00,$00,$00,$00,$00,$1F,$1F,$1F +.byte $FF,$FF,$FF,$FF,$FF,$F0,$F0,$F0 +.byte $00,$00,$00,$00,$00,$C0,$C0,$C0 +.byte $FF,$FF,$FF,$FF,$FF,$3F,$1F,$1F +.byte $00,$00,$00,$00,$00,$3F,$3F,$3F +.byte $FF,$FF,$FF,$FF,$FF,$E0,$E0,$E0 +.byte $00,$00,$00,$00,$00,$F0,$F0,$F0 +.byte $FF,$FF,$FF,$FF,$FF,$0F,$07,$07 +.byte $00,$00,$00,$00,$00,$C7,$C7,$C7 +.byte $FF,$FF,$FF,$FF,$FF,$3C,$1C,$1C +.byte $00,$00,$00,$00,$00,$7F,$7F,$7F +.byte $FF,$FF,$FF,$FF,$FF,$C0,$C0,$C0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$7F,$7F +.byte $00,$00,$F8,$F8,$F8,$3F,$3F,$3F +.byte $FF,$FF,$07,$03,$03,$E0,$E0,$E0 +.byte $00,$00,$0F,$0F,$0F,$00,$00,$00 +.byte $FF,$FF,$F8,$F8,$F8,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$FE,$FE,$FE +.byte $FF,$FF,$FF,$FF,$FF,$01,$00,$00 +.byte $00,$00,$00,$00,$00,$FF,$FF,$FF +.byte $FF,$FF,$FF,$FF,$FF,$80,$80,$80 +.byte $00,$00,$00,$00,$00,$C0,$C0,$C0 +.byte $FF,$FF,$FF,$FF,$FF,$3F,$3F,$3F +.byte $00,$00,$00,$00,$00,$FF,$FF,$FF +.byte $FF,$FF,$FF,$FF,$FF,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$03,$03,$03 +.byte $FF,$FF,$FF,$FF,$FF,$FE,$FE,$FE +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$DE +.byte $DE,$DE,$DE,$DE,$2E,$EE,$2E,$DE +.byte $81,$81,$81,$80,$80,$80,$80,$FB +.byte $FB,$FB,$FB,$FB,$F4,$F7,$F4,$FB +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$2E,$EE,$2E,$DE,$DE,$DE,$DE +.byte $80,$80,$80,$80,$80,$81,$80,$80 +.byte $80,$F4,$F7,$F4,$FB,$FB,$FB,$FB +.byte $00,$08,$10,$30,$C0,$00,$00,$FE +.byte $76,$DE,$7E,$FE,$FE,$FE,$FE,$FE +.byte $E0,$00,$C0,$BC,$83,$80,$80,$FF +.byte $1E,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $80,$80,$80,$00,$00,$00,$00,$00 +.byte $C0,$DE,$EE,$EE,$EE,$EE,$B6,$36 +.byte $00,$00,$00,$01,$01,$02,$04,$18 +.byte $00,$00,$00,$01,$00,$01,$03,$07 +.byte $E0,$E0,$0F,$0F,$00,$00,$00,$00 +.byte $FF,$FF,$F0,$F0,$00,$00,$00,$00 +.byte $FF,$FF,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$FF,$FF,$00,$00,$00,$00 +.byte $0F,$0F,$E0,$E0,$00,$00,$00,$00 +.byte $FF,$FF,$1F,$1F,$00,$00,$00,$00 +.byte $00,$00,$A8,$00,$50,$F0,$F0,$FE +.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $80,$80,$AA,$80,$D5,$FF,$FF,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$AA,$00,$54,$FF,$FF,$FF +.byte $FE,$FE,$FE,$FE,$FE,$FF,$FF,$FF +.byte $80,$80,$AA,$80,$95,$8F,$8F,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$40 +.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $00,$80,$80,$80,$80,$80,$80,$C4 +.byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$12 +.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $00,$80,$80,$80,$80,$80,$80,$91 +.byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$FE +.byte $FE,$FE,$FE,$5E,$1E,$3E,$FE,$FE +.byte $84,$84,$84,$84,$84,$84,$80,$FF +.byte $FC,$FC,$FC,$FE,$FE,$FF,$FF,$FF +.byte $00,$00,$E0,$00,$00,$00,$00,$00 +.byte $00,$FE,$FE,$FE,$3E,$1E,$5E,$FE +.byte $80,$80,$87,$84,$84,$84,$84,$84 +.byte $80,$FF,$FF,$FF,$FF,$FE,$FE,$FC +.byte $A0,$A0,$A0,$A0,$E0,$80,$80,$FF +.byte $F1,$FB,$FB,$FD,$FE,$FF,$FF,$FF +.byte $00,$5C,$40,$40,$C0,$00,$00,$00 +.byte $00,$FE,$FE,$CE,$DE,$9E,$3E,$7E +.byte $80,$B0,$AC,$A3,$A0,$A0,$A0,$A0 +.byte $80,$FF,$FF,$FF,$FF,$F7,$F7,$F4 +.byte $07,$00,$03,$3C,$C0,$00,$00,$FE +.byte $78,$3F,$FF,$FE,$FE,$FE,$FE,$FE +.byte $90,$90,$88,$8C,$83,$80,$80,$FF +.byte $FD,$FC,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$80,$80,$40,$20,$18 +.byte $00,$00,$00,$00,$00,$80,$C0,$E0 +.byte $85,$85,$89,$88,$88,$88,$90,$90 +.byte $86,$FE,$FE,$FF,$FF,$FF,$FE,$FD +.byte $00,$00,$00,$00,$00,$80,$80,$9E +.byte $F6,$B6,$EE,$EE,$EE,$EE,$DE,$DE +.byte $18,$04,$02,$01,$01,$00,$00,$00 +.byte $1F,$07,$03,$01,$01,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$FE,$FE,$3E,$CE,$6E,$76,$16 +.byte $80,$80,$80,$80,$80,$00,$00,$E0 +.byte $80,$FF,$FF,$FC,$C3,$3F,$FF,$FE +.byte $00,$00,$00,$00,$00,$00,$00,$FE +.byte $7E,$7E,$BE,$BE,$DE,$DE,$0E,$FE +.byte $80,$80,$81,$81,$82,$80,$80,$FF +.byte $FE,$FE,$FD,$FD,$FB,$FB,$F0,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$0E,$DE,$DE,$BE,$BE,$7E,$7E +.byte $80,$80,$80,$80,$80,$80,$80,$80 +.byte $80,$F0,$FB,$FB,$FD,$FD,$FE,$FE +.byte $C0,$C0,$C0,$00,$30,$30,$30,$30 +.byte $F0,$F0,$F0,$F0,$C0,$C0,$C0,$C0 +.byte $27,$0F,$27,$0E,$20,$00,$00,$FE +.byte $FF,$FF,$FF,$FE,$FE,$FE,$FE,$FE +.byte $80,$81,$80,$80,$80,$80,$80,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $27,$0F,$27,$0F,$27,$0F,$27,$0F +.byte $27,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $80,$81,$80,$80,$80,$81,$80,$80 +.byte $80,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 +.byte $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0 +.byte $27,$0F,$27,$0F,$27,$0F,$27,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $80,$80,$80,$81,$80,$80,$81,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$FE +.byte $3E,$7E,$7E,$7E,$FE,$FE,$FE,$FE +.byte $80,$80,$80,$80,$80,$80,$80,$FF +.byte $FE,$FF,$FF,$FF,$FE,$FE,$FD,$FF +.byte $E0,$00,$00,$00,$00,$00,$00,$FE +.byte $DE,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $FF,$80,$80,$80,$80,$80,$80,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$FE +.byte $6E,$F6,$F6,$F6,$FE,$FE,$FE,$FE +.byte $80,$80,$80,$00,$00,$80,$80,$FF +.byte $FC,$FB,$C7,$1F,$7F,$FF,$FF,$FF +.byte $02,$01,$00,$00,$00,$00,$00,$FE +.byte $FE,$FF,$FE,$FE,$FE,$FE,$FE,$FE +.byte $30,$30,$30,$00,$C0,$C0,$C0,$C0 +.byte $C0,$C0,$C0,$F0,$F0,$F0,$F0,$F0 +.byte $00,$00,$20,$08,$27,$0F,$27,$0F +.byte $00,$FE,$FE,$FE,$FF,$FF,$FF,$FF +.byte $00,$80,$80,$81,$80,$80,$80,$81 +.byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$7E,$7E,$7E,$BE,$BE,$BE,$BE +.byte $80,$80,$80,$80,$80,$00,$00,$80 +.byte $80,$FF,$FF,$FF,$FF,$7F,$07,$F9 +.byte $00,$02,$02,$02,$02,$02,$06,$3C +.byte $00,$FE,$FE,$FE,$FE,$FE,$FC,$FA +.byte $80,$80,$80,$80,$80,$80,$80,$C0 +.byte $80,$F7,$F7,$FB,$F8,$FE,$FE,$BF +.byte $00,$00,$00,$80,$80,$40,$1C,$07 +.byte $00,$BE,$BE,$3E,$9E,$DE,$DA,$EF +.byte $80,$86,$83,$81,$80,$80,$80,$80 +.byte $80,$FD,$FE,$FF,$FF,$FF,$FF,$FF +.byte $00,$30,$30,$18,$0C,$0C,$06,$06 +.byte $00,$EE,$EE,$F6,$FA,$FA,$FC,$FC +.byte $00,$00,$00,$00,$00,$00,$00,$7E +.byte $FE,$FE,$FE,$FE,$FE,$7E,$7E,$7E +.byte $B0,$B0,$B0,$B0,$E0,$80,$80,$FF +.byte $E1,$EB,$EB,$ED,$FE,$FF,$FF,$FF +.byte $00,$00,$E0,$3E,$00,$00,$00,$FE +.byte $FE,$FE,$DE,$FE,$FE,$FE,$FE,$FE +.byte $06,$03,$01,$00,$00,$80,$80,$FF +.byte $05,$0E,$0F,$7F,$7F,$FF,$FF,$FF +.byte $80,$00,$00,$00,$00,$00,$00,$FE +.byte $76,$E6,$EE,$FE,$FE,$FE,$FE,$FE +.byte $81,$83,$83,$83,$83,$C3,$C3,$FF +.byte $F7,$FA,$FE,$FE,$FE,$FE,$FE,$FF +.byte $62,$30,$DC,$6E,$62,$60,$60,$7E +.byte $DE,$EE,$B2,$DC,$DE,$DE,$5E,$7E +.byte $80,$80,$80,$80,$80,$80,$80,$E0 +.byte $FF,$FB,$FB,$F9,$F9,$F0,$E0,$E0 +.byte $00,$7E,$60,$C0,$C0,$00,$00,$00 +.byte $00,$DC,$DE,$4E,$DE,$9E,$3E,$7E +.byte $80,$B8,$BE,$B3,$B0,$B0,$B0,$B0 +.byte $80,$F7,$ED,$EF,$EF,$E7,$E7,$E4 +.byte $00,$00,$00,$06,$06,$06,$06,$06 +.byte $00,$01,$03,$05,$05,$05,$05,$05 +.byte $00,$00,$80,$80,$80,$80,$80,$80 +.byte $00,$FE,$7E,$7E,$7E,$7E,$7C,$7A +.byte $80,$83,$01,$81,$81,$81,$81,$81 +.byte $80,$FE,$7F,$BF,$DF,$EF,$F7,$F7 +.byte $00,$06,$06,$06,$86,$82,$C2,$C2 +.byte $00,$FC,$FC,$FC,$7C,$7E,$BE,$BE +.byte $80,$86,$86,$83,$81,$81,$80,$80 +.byte $80,$FD,$FD,$FE,$FF,$FF,$FF,$FF +.byte $0C,$0C,$0C,$06,$06,$06,$06,$FE +.byte $FA,$FA,$FA,$FC,$FC,$FC,$FC,$FE +.byte $00,$00,$00,$00,$00,$00,$00,$1E +.byte $BC,$7C,$7E,$3E,$3E,$1E,$1E,$1E +.byte $80,$80,$80,$00,$00,$00,$00,$00 +.byte $FF,$FE,$FC,$00,$00,$00,$00,$00 +.byte $0E,$3A,$62,$C0,$80,$00,$00,$FE +.byte $FC,$F6,$DE,$BE,$7E,$FE,$FE,$FE +.byte $80,$80,$80,$80,$81,$83,$86,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FE,$FD,$FF +.byte $02,$02,$02,$06,$06,$06,$06,$FE +.byte $FE,$FE,$FE,$FC,$FC,$FC,$FC,$FE +.byte $8C,$8C,$8C,$8C,$8C,$8C,$8C,$FF +.byte $FB,$FB,$FB,$FB,$FB,$FB,$FB,$FF +.byte $00,$60,$60,$F0,$30,$18,$18,$18 +.byte $00,$DE,$DE,$EE,$EE,$F6,$F6,$F6 +.byte $80,$80,$8F,$F9,$80,$80,$80,$80 +.byte $80,$FF,$FE,$F7,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$03,$06,$08,$B0,$00 +.byte $00,$F6,$F6,$F7,$E4,$C6,$A6,$BA +.byte $80,$B0,$B0,$98,$98,$98,$8F,$80 +.byte $80,$EF,$EF,$F7,$F7,$F7,$FF,$FF +.byte $80,$E0,$E0,$80,$80,$80,$80,$80 +.byte $80,$DF,$DF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$02 +.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $80,$83,$86,$86,$86,$86,$8C,$8C +.byte $80,$FE,$FD,$FD,$FD,$FD,$FB,$FB +.byte $80,$C0,$E0,$B8,$8C,$86,$83,$FF +.byte $FF,$BF,$DF,$F7,$FB,$FD,$FE,$FF +.byte $1E,$02,$00,$00,$00,$00,$00,$FE +.byte $FC,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $C0,$80,$80,$80,$80,$80,$80,$FF +.byte $BF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $0E,$3C,$6C,$C6,$02,$00,$00,$FE +.byte $FE,$FA,$DA,$BC,$FE,$FE,$FE,$FE +.byte $80,$80,$80,$81,$83,$86,$8C,$FF +.byte $FF,$FF,$FF,$FF,$FE,$FD,$FB,$FF +.byte $00,$00,$00,$00,$00,$00,$80,$80 +.byte $60,$00,$00,$00,$00,$00,$80,$80 +.byte $80,$80,$80,$80,$80,$80,$80,$FF +.byte $C0,$FE,$FE,$FE,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$F0,$1C,$00,$00 +.byte $00,$FE,$FE,$FE,$EE,$FA,$FE,$FE +.byte $80,$80,$80,$FF,$83,$80,$80,$80 +.byte $80,$FF,$FF,$FE,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$FE,$00,$00,$00,$F0 +.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$EE +.byte $80,$80,$80,$81,$8F,$80,$E0,$FF +.byte $80,$FF,$FF,$FF,$FE,$FF,$DF,$FF +.byte $00,$00,$00,$00,$00,$FE,$00,$00 +.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $80,$80,$80,$80,$80,$87,$BC,$E0 +.byte $80,$FF,$FF,$FF,$FF,$FF,$FB,$DF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$FE,$7E,$7E,$BE,$DE,$EE,$F0 +.byte $80,$80,$80,$80,$80,$00,$80,$80 +.byte $80,$FE,$FF,$FF,$FF,$3F,$BF,$9F +.byte $18,$20,$40,$80,$80,$00,$00,$00 +.byte $E0,$C0,$80,$00,$00,$00,$00,$00 +.byte $90,$90,$88,$88,$88,$89,$85,$FD +.byte $FE,$FF,$FF,$FF,$FF,$FE,$FE,$FE +.byte $00,$00,$00,$00,$00,$00,$00,$07 +.byte $00,$FE,$FE,$3E,$C2,$7C,$FF,$FF +.byte $80,$80,$80,$80,$80,$88,$90,$90 +.byte $80,$FF,$FF,$FC,$F3,$FF,$FD,$FC +.byte $00,$80,$80,$80,$80,$80,$80,$80 +.byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$C0,$00,$FE +.byte $DE,$EE,$EE,$EE,$EE,$DE,$3E,$FE +.byte $80,$80,$84,$84,$86,$83,$80,$FF +.byte $FB,$F7,$F7,$F7,$F7,$FB,$FC,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$3E,$DE,$DE,$BE,$BE,$BE,$BE +.byte $80,$80,$80,$80,$80,$80,$80,$80 +.byte $80,$FC,$FB,$FB,$FD,$FD,$FD,$FD +.byte $84,$43,$40,$80,$00,$00,$00,$FE +.byte $7A,$BC,$BE,$7E,$FE,$FE,$FE,$FE +.byte $80,$80,$80,$80,$83,$84,$84,$FF +.byte $FF,$FF,$FF,$FF,$FC,$FB,$FB,$FF +.byte $00,$FE,$7C,$20,$30,$28,$28,$48 +.byte $00,$00,$82,$DE,$CE,$D6,$D6,$B6 +.byte $80,$83,$80,$80,$80,$80,$80,$80 +.byte $80,$FC,$FF,$FF,$FF,$FF,$FF,$FF +.byte $02,$06,$0E,$0E,$72,$02,$00,$FE +.byte $FC,$F8,$F0,$F0,$8C,$FC,$FE,$FE +.byte $84,$88,$88,$80,$80,$80,$80,$FF +.byte $FB,$F7,$F7,$FF,$FF,$FF,$FF,$FF +.byte $00,$80,$00,$00,$00,$00,$00,$FE +.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $E4,$F0,$E4,$F0,$84,$80,$80,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $03,$03,$03,$00,$0C,$0C,$0C,$0C +.byte $0F,$0F,$0F,$0F,$03,$03,$03,$03 +.byte $00,$02,$E2,$1E,$0E,$16,$26,$C2 +.byte $00,$FC,$1C,$E0,$F0,$E8,$D8,$3C +.byte $80,$81,$80,$80,$80,$80,$80,$83 +.byte $80,$FE,$FF,$FF,$FF,$FF,$FF,$FC +.byte $00,$80,$00,$00,$00,$80,$00,$00 +.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $E4,$F0,$E4,$F0,$E4,$F0,$E4,$F0 +.byte $E4,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$80,$00,$00,$80,$FE +.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $E4,$F0,$E4,$F0,$E4,$F0,$E4,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $03,$03,$03,$03,$03,$03,$03,$03 +.byte $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F +.byte $00,$00,$00,$80,$00,$00,$00,$80 +.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $80,$80,$84,$90,$E4,$F0,$E4,$F0 +.byte $80,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $0C,$0C,$0C,$00,$03,$03,$03,$03 +.byte $03,$03,$03,$0F,$0F,$0F,$0F,$0F +.byte $00,$00,$00,$00,$00,$00,$00,$1E +.byte $FE,$3E,$7E,$7E,$3E,$3E,$3E,$1E +.byte $80,$80,$80,$80,$80,$80,$80,$E0 +.byte $F3,$FD,$FC,$FE,$FC,$FC,$F8,$E0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$EE,$EE,$F6,$F6,$FE,$FE,$FE +.byte $80,$80,$80,$80,$80,$80,$80,$80 +.byte $80,$FF,$FF,$FF,$FF,$FF,$EF,$EF +.byte $82,$82,$82,$84,$80,$80,$80,$FF +.byte $FD,$FD,$FD,$FB,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$06 +.byte $FE,$C6,$BE,$7E,$7E,$3E,$0E,$06 +.byte $80,$80,$80,$80,$80,$80,$80,$FC +.byte $FB,$FF,$FF,$FF,$FF,$FF,$FF,$FC +.byte $00,$00,$00,$00,$00,$00,$00,$FE +.byte $FE,$FE,$7E,$FE,$FE,$FE,$FE,$FE +.byte $80,$80,$80,$80,$80,$80,$80,$FF +.byte $F8,$FE,$FF,$FF,$FF,$FF,$FF,$FF +.byte $20,$00,$00,$00,$00,$00,$00,$FE +.byte $DE,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $FE,$F8,$F0,$C0,$A8,$94,$82,$FF +.byte $01,$07,$0F,$3F,$57,$EB,$FD,$FF +.byte $FC,$F8,$C8,$88,$84,$84,$40,$20 +.byte $00,$06,$36,$76,$7A,$7A,$BE,$DE +.byte $FF,$FD,$81,$A3,$D3,$8C,$84,$84 +.byte $00,$82,$FE,$DC,$AC,$F3,$FB,$FB +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$E6,$F6,$F6,$FE,$FE,$FE,$FE +.byte $80,$80,$80,$80,$80,$80,$80,$80 +.byte $80,$FF,$FF,$EF,$EF,$F7,$F7,$FB +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$EE,$EE,$F6,$F6,$EE,$EE,$FE +.byte $80,$80,$80,$80,$80,$00,$00,$80 +.byte $80,$FF,$FF,$FF,$FF,$1F,$6F,$F6 +.byte $00,$00,$00,$00,$00,$00,$80,$40 +.byte $00,$FE,$FE,$FE,$FE,$FE,$7E,$BE +.byte $80,$80,$86,$88,$90,$E0,$C0,$E1 +.byte $80,$FF,$79,$77,$6F,$1F,$3F,$1E +.byte $30,$30,$30,$30,$30,$30,$30,$30 +.byte $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 +.byte $0C,$0C,$0C,$0C,$FC,$FC,$00,$00 +.byte $03,$03,$03,$03,$03,$03,$FF,$FF +.byte $30,$30,$30,$30,$3F,$3F,$00,$00 +.byte $C0,$C0,$C0,$C0,$C0,$C0,$FF,$FF +.byte $00,$00,$FC,$FC,$0C,$0C,$0C,$0C +.byte $FF,$FF,$03,$03,$03,$03,$03,$03 +.byte $00,$00,$FF,$FF,$00,$00,$00,$00 +.byte $FF,$FF,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$3F,$3F,$30,$30,$30,$30 +.byte $FF,$FF,$C0,$C0,$C0,$C0,$C0,$C0 +.byte $00,$00,$00,$00,$00,$00,$00,$FE +.byte $F6,$FA,$FA,$7A,$8E,$FE,$FE,$FE +.byte $00,$00,$00,$00,$00,$00,$00,$0F +.byte $03,$01,$00,$07,$0F,$0F,$0F,$0F +.byte $00,$00,$00,$00,$00,$00,$00,$80 +.byte $DC,$DC,$00,$00,$00,$80,$80,$80 +.byte $80,$80,$80,$80,$80,$80,$80,$FF +.byte $EF,$9F,$FF,$FE,$FE,$FF,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$FE,$FE,$EE,$EE,$0E,$EE,$EE +.byte $80,$80,$80,$00,$00,$00,$00,$00 +.byte $80,$FF,$FF,$7F,$0C,$03,$07,$07 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$FE,$FE,$FE,$FE,$7E,$7E,$BE +.byte $80,$80,$80,$80,$80,$80,$80,$80 +.byte $80,$FE,$FE,$FD,$FA,$F7,$F7,$F7 +.byte $40,$00,$00,$00,$00,$00,$00,$FE +.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $C4,$80,$80,$80,$80,$80,$80,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $12,$00,$00,$00,$00,$00,$00,$FE +.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $91,$80,$80,$80,$80,$80,$80,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $04,$08,$F0,$00,$00,$00,$00,$FE +.byte $FA,$F6,$0E,$FE,$FE,$FE,$FE,$FE +.byte $92,$88,$84,$83,$82,$81,$81,$FF +.byte $ED,$F7,$FB,$FC,$FD,$FE,$FE,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$FE +.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $80,$80,$80,$80,$80,$80,$80,$FF +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $E0,$F0,$F0,$50,$00,$A8,$00,$00 +.byte $E0,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $FF,$FF,$FF,$D5,$80,$AA,$80,$80 +.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $FF,$FF,$FF,$54,$00,$AA,$00,$00 +.byte $FF,$FF,$FF,$FE,$FE,$FE,$FE,$FE +.byte $8F,$8F,$8F,$95,$80,$AA,$80,$80 +.byte $8F,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $FF,$FE,$F8,$20,$20,$10,$88,$7C +.byte $00,$00,$06,$DE,$DE,$EE,$76,$82 +.byte $FF,$9F,$87,$8C,$BC,$82,$E1,$91 +.byte $80,$E0,$F8,$F3,$C3,$FD,$9E,$EE +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE +.byte $80,$80,$80,$80,$80,$80,$80,$80 +.byte $80,$FF,$FF,$FF,$FF,$FF,$FF,$FF +.byte $0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C +.byte $03,$03,$03,$03,$03,$03,$03,$03 +.byte $00,$00,$00,$00,$0F,$0F,$E0,$E0 +.byte $00,$00,$00,$00,$F0,$F0,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$FF,$FF +.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF +.byte $00,$00,$00,$00,$E0,$E0,$0F,$0F +.byte $00,$00,$00,$00,$1F,$1F,$FF,$FF +.byte $00,$00,$00,$00,$FF,$FF,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$FF,$FF diff --git a/samples/crypto/crypto.csproj b/samples/crypto/crypto.csproj index a6aa74cb..86d45253 100644 --- a/samples/crypto/crypto.csproj +++ b/samples/crypto/crypto.csproj @@ -5,7 +5,7 @@ net10.0 enable enable - 2 + 1 From bf3ab2174b42c266aaf954a8727e241a9d77f311 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Sat, 21 Mar 2026 12:13:46 -0500 Subject: [PATCH 14/16] Fix CHR tile data corruption from backslash-dollar escaping The Python-generated chr_generic.s had '\' instead of '' due to string escaping. The assembler parsed the backslash as part of the hex value, corrupting every tile. Fixed by stripping backslashes. Also set NESChrBanks=2 to match the 16KB CHR layout (8KB data padded to 16KB by the assembler). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- samples/crypto/crypto.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/crypto/crypto.csproj b/samples/crypto/crypto.csproj index 86d45253..a6aa74cb 100644 --- a/samples/crypto/crypto.csproj +++ b/samples/crypto/crypto.csproj @@ -5,7 +5,7 @@ net10.0 enable enable - 1 + 2 From f1db9bf1e3da77f2efbee053491b84d17b336312 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Sat, 21 Mar 2026 13:49:15 -0500 Subject: [PATCH 15/16] Add full 16KB CHR from reference ROM, revert MMC3 experiment Added both CHR banks from the reference crypto.nes ROM as separate chr_crypto_0.s and chr_crypto_1.s files. The second bank contains font tiles that the reference ROM swaps in via MMC3 scanline IRQ mid-frame. Reverted set_chr_mode() experiment -- without scanline IRQ support, setting font pages globally breaks the maze tiles. The menu text remains garbled until scanline IRQ is implemented (issue #306). The game is playable: CRYPTO logo renders correctly, maze and sprites work, press Start to begin gameplay. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../crypto/{chr_generic.s => chr_crypto_0.s} | 0 samples/crypto/chr_crypto_1.s | 1025 +++++++++++++++++ samples/crypto/crypto.csproj | 2 +- 3 files changed, 1026 insertions(+), 1 deletion(-) rename samples/crypto/{chr_generic.s => chr_crypto_0.s} (100%) create mode 100644 samples/crypto/chr_crypto_1.s diff --git a/samples/crypto/chr_generic.s b/samples/crypto/chr_crypto_0.s similarity index 100% rename from samples/crypto/chr_generic.s rename to samples/crypto/chr_crypto_0.s diff --git a/samples/crypto/chr_crypto_1.s b/samples/crypto/chr_crypto_1.s new file mode 100644 index 00000000..4ffa851d --- /dev/null +++ b/samples/crypto/chr_crypto_1.s @@ -0,0 +1,1025 @@ +.segment "CHARS" +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $81,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $DC,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $8E,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $1F,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F7,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $9F,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$E0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$0F,$0F,$03,$03,$03,$03,$9F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$EE,$FF,$73,$63,$63,$63,$F7 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$F0,$F8,$0C,$FC,$FC,$00,$FC +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $C0,$81,$03,$06,$07,$07,$06,$83 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $30,$19,$0F,$0F,$06,$06,$06,$1F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$F0,$F8,$D8,$D8,$D8,$D8,$DC +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$0F,$8F,$C6,$C6,$C6,$06,$CE +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$1F,$3F,$60,$7F,$7F,$60,$3F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $06,$F6,$FE,$8E,$06,$06,$8E,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$E0,$F1,$83,$03,$03,$03,$E1 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $80,$9E,$1F,$07,$06,$86,$86,$9F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $C1,$CD,$FC,$FC,$CC,$C1,$C1,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$03,$03 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$71,$71 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$0E,$0E +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$80,$80 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$FF,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$0E,$0E,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $06,$00,$82,$FE,$FC,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $03,$03,$03,$E1,$E0,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $03,$03,$03,$9F,$9F,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $63,$63,$63,$F7,$F7,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0C,$0C,$1C,$F8,$F0,$00,$80,$80 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $C6,$C6,$C7,$E7,$E6,$06,$0F,$0F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0F,$1F,$30,$3F,$1E,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $60,$60,$60,$FE,$FE,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F8,$30,$30,$F1,$E1,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $19,$18,$0C,$0F,$03,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$0E,$0E,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$FA,$FE,$86 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$01,$03 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$03,$03,$00,$0F,$0F,$03 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$E0,$E0,$60,$6E,$7F,$73 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$F0,$F8,$1C +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$8E,$CF,$C7 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$0F,$1F,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$EE,$FF,$78 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$B0,$F0,$70,$31,$01,$F8 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$03,$0F,$0C,$18,$18,$19 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $E0,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $07,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $30,$30,$30,$30,$78,$78,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $87,$86,$86,$86,$CF,$CF,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $31,$31,$31,$33,$3F,$1D,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $86,$06,$00,$82,$FE,$FC,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $83,$03,$03,$03,$E1,$E0,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $87,$86,$86,$06,$1F,$1F,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $81,$81,$C3,$E7,$FF,$3C,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $01,$01,$01,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $1C,$18,$18,$18,$3D,$3D,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $18,$18,$00,$09,$F9,$F0,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0E,$0C,$0C,$0E,$87,$83,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $1E,$18,$18,$18,$7F,$7F,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $8C,$8C,$8C,$9C,$FE,$EE,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $71,$31,$31,$71,$F1,$B0,$30,$F0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $1C,$18,$18,$1C,$0F,$07,$00,$07 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $C3,$C3,$C3,$E7,$7E,$3C,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$E0,$F0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$8E,$8F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$73,$73 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$FA,$FE +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$E0,$F1 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$9E,$9F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$3C,$FE,$C3,$81,$81 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$01,$01 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$3B,$3F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$E8,$F8 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$83,$C7 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$7B,$7F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$9C,$9C +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$BB,$FB +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$E7,$E7,$C3,$C3,$C3 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $80,$80,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $C3,$C3,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $7F,$3D,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $BC,$BC,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $E7,$E7,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $1F,$0E,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FE,$7C,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $E0,$C0,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0F,$0D,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$80,$80,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $80,$80,$83,$83,$80,$80,$80,$80 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $03,$01,$3D,$7F,$E3,$C1,$C1,$E3 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$70,$F8,$98,$18,$18,$18 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$C7,$C7,$C3,$C3,$C3,$C3 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$39,$39,$18,$18,$18,$19 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$7C,$FE,$C7,$83,$83,$C7 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F0,$30,$30,$00,$E1,$F1,$31,$71 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $07,$0E,$0C,$0F,$07,$00,$0C,$0C +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$B0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$03 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $80,$00,$00,$C0,$C0,$C0,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $19,$03,$06,$0C,$1F,$1F,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $06,$7E,$FE,$86,$FF,$F7,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $D8,$D8,$D8,$D9,$DD,$DC,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $06,$06,$06,$06,$CE,$CE,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $3E,$3C,$3C,$37,$73,$73,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F0,$C0,$C0,$C0,$FC,$FC,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $70,$30,$30,$70,$E3,$C3,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $1C,$18,$18,$1C,$8F,$87,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F8,$FC,$CE,$C6,$E3,$E3,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$01,$01,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $C0,$C0,$C0,$C0,$E0,$E0,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$0F,$1F,$30,$3F,$1E,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $60,$60,$60,$60,$FE,$FE,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $30,$F0,$F0,$30,$F9,$B9,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$03,$07,$CC,$CF,$07,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $18,$18,$18,$18,$1F,$0F,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $8C,$F0,$3C,$8C,$FC,$F8,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $61,$60,$60,$E1,$F1,$71,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $8C,$8C,$8C,$8C,$CF,$C7,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $BD,$99,$99,$81,$E7,$E7,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $01,$01,$01,$01,$03,$03,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$C0,$C0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$1F,$1F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$7C,$FE +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$F0,$F8 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$CF,$CF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$70,$70,$30,$37,$37 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$80,$80,$00,$07,$0F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$E7,$E7,$C6,$CC,$D8 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$01,$01,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$80,$C0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$3F,$7F,$60,$FE,$FE +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$E1,$F1 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$83,$87 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$18,$18,$18,$7F,$7F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$FC,$FC +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$E0,$E1 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$C0,$C0,$80,$9C,$9C +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$C3,$C3,$C3,$E7,$A5 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$03,$03,$01,$01,$01 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $C0,$C0,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $7B,$7B,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FE,$EE,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F3,$E1,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0F,$07,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FC,$F8,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F3,$F1,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F9,$F9,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $78,$78,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $8F,$8F,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $7F,$7F,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FE,$F6,$06,$FE,$FC,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F1,$F0,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $9E,$9E,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$FF,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $01,$01,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$80,$80,$80,$80,$80 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$77,$7F,$39,$31,$31,$31 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$F8,$FC,$0C,$FC,$FC,$0C +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$D0,$F1,$30,$30,$01,$13 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$07,$8F,$1C,$18,$18,$1C +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$F7,$FF,$3C,$30,$30,$30 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$F0,$F8,$0C,$FC,$FC,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F0,$E0,$E1,$63,$66,$67,$67,$66 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F0,$70,$79,$69,$6F,$66,$66,$60 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$E0,$F0,$30,$30,$30,$30 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$0E,$0F,$07,$06,$06,$06 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0C,$00,$3C,$3C,$0C,$0C,$0C,$0C +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$F7,$FF,$8E,$06,$06,$8E +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$C0,$E1,$63,$63,$63,$63 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $80,$80,$9D,$1F,$0E,$0C,$8C,$8C +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $FF,$C1,$CD,$FC,$FC,$CC,$C1,$C1 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $C0,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0F,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$F0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$0C +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $F8,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $01,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$80 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$01 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$E0,$E0,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $E0,$60,$60,$E0,$E0,$60,$60,$E0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $38,$30,$30,$38,$1F,$0F,$00,$0F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $E6,$C6,$C6,$C6,$EF,$EF,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $80,$80,$80,$80,$F1,$F1,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $C1,$C1,$C1,$C1,$EF,$EF,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $36,$36,$36,$36,$76,$76,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $B6,$B6,$B6,$B6,$B7,$B7,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $61,$E1,$E1,$61,$F3,$73,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$07,$0F,$18,$1F,$0F,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $3C,$30,$30,$30,$FF,$FF,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $1C,$0C,$0C,$1C,$FC,$EC,$0C,$FC +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $E7,$66,$66,$E7,$C3,$81,$00,$01 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $38,$30,$30,$38,$1F,$0F,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $78,$60,$60,$60,$FE,$FE,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $E0,$C0,$00,$00,$81,$81,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $0F,$0F,$0C,$0C,$1F,$1F,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$E0,$E0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$70,$F0 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$DC,$FE +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$80,$80,$00,$81,$81 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$01,$01,$00,$87,$C7 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$7F,$7F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$FC,$FE +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$C3,$E3 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$07,$8F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$F7,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$EE,$FE +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$81,$C3 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$0F,$1F +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$EE,$FF +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$C0,$E0,$70,$31,$71 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$1F,$1F,$0C,$0C,$0C +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 diff --git a/samples/crypto/crypto.csproj b/samples/crypto/crypto.csproj index a6aa74cb..9ac6dfe9 100644 --- a/samples/crypto/crypto.csproj +++ b/samples/crypto/crypto.csproj @@ -6,7 +6,7 @@ enable enable 2 - + From f999cc0cb378a135c8e31a538920109de49678bf Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Sat, 21 Mar 2026 14:07:36 -0500 Subject: [PATCH 16/16] Add FamiTone2 sound effects to crypto sample Copy famitone2.s and demosounds.s from the fami sample, add extern declarations for sfx_play/famitone_update, initialize the sound engine at startup, and uncomment all 6 sfx_play calls. Sound effects now play for pickup, attack, damage, enemy kill, item placement, and level completion. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- samples/crypto/Program.cs | 21 +- samples/crypto/demosounds.s | 70 ++ samples/crypto/famitone2.s | 1322 +++++++++++++++++++++++++++++++++++ 3 files changed, 1407 insertions(+), 6 deletions(-) create mode 100644 samples/crypto/demosounds.s create mode 100644 samples/crypto/famitone2.s diff --git a/samples/crypto/Program.cs b/samples/crypto/Program.cs index ddf7e423..c8c2bd63 100644 --- a/samples/crypto/Program.cs +++ b/samples/crypto/Program.cs @@ -2,6 +2,10 @@ using NES; using static NES.NESLib; +// Link FamiTone2 sound engine (from famitone2.s / demosounds.s) +static extern void sfx_play(byte sound, byte channel); +static extern void famitone_update(); + const byte PLAYER_1 = 0; const byte PLAYER_2 = 1; @@ -543,6 +547,11 @@ oam_size(1); bank_spr(0); bank_bg(1); + +// Initialize sound effects +sfx_init("demo_sounds"); +unsafe { nmi_set_callback(&famitone_update); } + vram_adr(NAMETABLE_A); vram_unrle(bg_top_left); vram_adr(NAMETABLE_B); @@ -646,7 +655,7 @@ if (G.next_level != 0) { - // sfx_play(3, 2); + sfx_play(3, 2); // [inlined: reset] G.next_level = 0; G.frame = 0; @@ -801,7 +810,7 @@ if (G.player_hp[0] == 0 || G.player_hp[1] == 0) { - // sfx_play(4, 2); + sfx_play(4, 2); G.difficulty = 0; G.next_level = 0; // [inlined: reset] @@ -1376,7 +1385,7 @@ { G.player_carry[G.i] = G.j; G.player_carry_dir[G.i] = G.player_dir[G.i]; - // sfx_play(5, 3); + sfx_play(5, 3); } } } @@ -1886,7 +1895,7 @@ } else { - // sfx_play(1, 0); + sfx_play(1, 0); } break; } @@ -1912,7 +1921,7 @@ G.item_y[G.i] = item_target_y[G.i]; if (G.player_carry[0] == G.i) G.player_carry[0] = 0xFF; if (G.player_carry[1] == G.i) G.player_carry[1] = 0xFF; - // sfx_play(2, 3); + sfx_play(2, 3); } } } @@ -2131,7 +2140,7 @@ G.temp5 = 1; G.player_hp[G.j] = (byte)(G.player_hp[G.j] - 1); G.player_god_mode[G.j] = 4; - // sfx_play(0, 1); + sfx_play(0, 1); } if (G.player_hp[G.j] == 0 && G.enemies_enemy[G.i] == G.j) { diff --git a/samples/crypto/demosounds.s b/samples/crypto/demosounds.s new file mode 100644 index 00000000..f40bf822 --- /dev/null +++ b/samples/crypto/demosounds.s @@ -0,0 +1,70 @@ +;this file for FamiTone2 libary generated by nsf2data tool + + .export _demo_sounds +_demo_sounds: + .word @ntsc + .word @pal +@ntsc: + .word @sfx_ntsc_0 + .word @sfx_ntsc_1 + .word @sfx_ntsc_2 + .word @sfx_ntsc_3 +@pal: + .word @sfx_pal_0 + .word @sfx_pal_1 + .word @sfx_pal_2 + .word @sfx_pal_3 + +@sfx_ntsc_0: + .byte $80,$bf,$81,$56,$82,$03,$83,$bf,$84,$a6,$85,$02,$04,$81,$3a,$82 + .byte $02,$84,$c4,$85,$01,$04,$81,$ab,$82,$01,$84,$52,$04,$81,$1c,$84 + .byte $e1,$85,$00,$04,$81,$d5,$82,$00,$84,$a9,$04,$80,$b8,$81,$1c,$82 + .byte $01,$83,$b8,$84,$e1,$04,$81,$d5,$82,$00,$84,$a9,$04,$80,$30,$00 +@sfx_pal_0: + .byte $80,$bf,$81,$19,$82,$03,$83,$bf,$84,$75,$85,$02,$04,$81,$11,$82 + .byte $02,$84,$a4,$85,$01,$03,$81,$8c,$82,$01,$84,$3a,$03,$81,$08,$84 + .byte $d1,$85,$00,$04,$81,$c6,$82,$00,$84,$9d,$03,$80,$b8,$81,$08,$82 + .byte $01,$83,$b8,$84,$d1,$03,$81,$c6,$82,$00,$84,$9d,$04,$80,$30,$00 +@sfx_ntsc_1: + .byte $89,$3f,$8a,$0d,$01,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05 + .byte $01,$8a,$03,$01,$89,$3e,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$8a + .byte $0b,$01,$89,$3d,$8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$8a,$03,$01 + .byte $89,$3c,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$8a,$0b,$01,$89,$3b + .byte $8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$8a,$03,$01,$89,$3a,$8a,$01 + .byte $01,$8a,$0f,$01,$8a,$0d,$01,$8a,$0b,$01,$89,$39,$8a,$09,$01,$8a + .byte $07,$01,$8a,$05,$01,$8a,$03,$01,$89,$38,$8a,$01,$01,$8a,$0f,$01 + .byte $8a,$0d,$01,$8a,$0b,$01,$89,$37,$8a,$09,$01,$8a,$07,$01,$8a,$05 + .byte $01,$8a,$03,$01,$89,$36,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$8a + .byte $0b,$01,$89,$35,$8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$8a,$03,$01 + .byte $89,$34,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$8a,$0b,$01,$89,$33 + .byte $8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$8a,$03,$01,$89,$32,$8a,$01 + .byte $01,$8a,$0f,$01,$8a,$0d,$01,$8a,$0b,$01,$89,$31,$8a,$09,$01,$8a + .byte $07,$01,$8a,$05,$01,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d + .byte $01,$00 +@sfx_pal_1: + .byte $89,$3f,$8a,$0d,$01,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05 + .byte $01,$89,$3e,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$89 + .byte $3d,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$89,$3c,$8a + .byte $03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$89,$3b,$8a,$0b,$01 + .byte $8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$89,$3a,$8a,$03,$01,$8a,$01 + .byte $01,$8a,$0f,$01,$8a,$0d,$01,$89,$39,$8a,$0b,$01,$8a,$09,$01,$8a + .byte $07,$01,$8a,$05,$01,$89,$38,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01 + .byte $8a,$0d,$01,$89,$37,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05 + .byte $01,$89,$36,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$89 + .byte $35,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$89,$34,$8a + .byte $03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$89,$33,$8a,$0b,$01 + .byte $8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$89,$32,$8a,$03,$01,$8a,$01 + .byte $01,$8a,$0f,$01,$8a,$0d,$01,$89,$31,$8a,$0b,$01,$8a,$09,$01,$8a + .byte $07,$01,$8a,$05,$01,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01,$00 +@sfx_ntsc_2: + .byte $80,$bf,$81,$d5,$82,$00,$02,$81,$6a,$02,$80,$b4,$04,$80,$b8,$81 + .byte $d5,$02,$81,$6a,$02,$80,$b2,$04,$00 +@sfx_pal_2: + .byte $80,$bf,$81,$c6,$82,$00,$02,$81,$62,$02,$80,$b4,$03,$80,$b8,$81 + .byte $c6,$02,$81,$62,$01,$80,$b2,$04,$00 +@sfx_ntsc_3: + .byte $86,$81,$87,$6a,$88,$00,$01,$87,$70,$01,$87,$6a,$01,$87,$70,$01 + .byte $87,$6a,$01,$00 +@sfx_pal_3: + .byte $86,$81,$87,$62,$88,$00,$01,$87,$68,$01,$87,$62,$01,$87,$68,$01 + .byte $87,$62,$01,$00 diff --git a/samples/crypto/famitone2.s b/samples/crypto/famitone2.s new file mode 100644 index 00000000..f80e9f4f --- /dev/null +++ b/samples/crypto/famitone2.s @@ -0,0 +1,1322 @@ + +;settings, uncomment or put them into your main program; the latter makes possible updates easier + +; FT_BASE_ADR = $0300 ;page in the RAM used for FT2 variables, should be $xx00 +; FT_TEMP = $00 ;3 bytes in zeropage used by the library as a scratchpad +; FT_DPCM_OFF = $c000 ;$c000..$ffc0, 64-byte steps +; FT_SFX_STREAMS = 4 ;number of sound effects played at once, 1..4 + +; FT_DPCM_ENABLE ;undefine to exclude all DMC code +; FT_SFX_ENABLE ;undefine to exclude all sound effects code +; FT_THREAD ;undefine if you are calling sound effects from the same thread as the sound update call + +; FT_PAL_SUPPORT ;undefine to exclude PAL support +; FT_NTSC_SUPPORT ;undefine to exclude NTSC support + + .import popa + +FT_BASE_ADR =$0500 ;page in RAM, should be $xx00 +FT_DPCM_OFF =$c000 ;sample data start address + +.define FT_THREAD 1 ;undefine if you call sound effects in the same thread as sound update +.define FT_PAL_SUPPORT 1 ;undefine to exclude PAL support +.define FT_NTSC_SUPPORT 1 ;undefine to exclude NTSC support +.define FT_SFX_ENABLE 1 +.define FT_DPCM_ENABLE 0 +.define FT_SFX_STREAMS 4 + +.segment "ZEROPAGE" + +FT_TEMP: .res 3 + +.segment "CODE" + + .export _famitone_init,_famitone_update + .export _music_play,_music_stop,_music_pause +.if(FT_SFX_ENABLE) + .export _sfx_init + .export _sfx_play +.endif +.if(FT_DPCM_ENABLE) + .export _sample_play +.endif + +;void __fastcall__ famitone_init(void* music_data); + +_famitone_init=FamiToneInit + + + +;void __fastcall__ famitone_update(void); + +_famitone_update=FamiToneUpdate + + + +;void __fastcall__ music_play(unsigned char song); + +_music_play=FamiToneMusicPlay + + + +;void __fastcall__ music_stop(void); + +_music_stop=FamiToneMusicStop + + + +;void __fastcall__ music_pause(unsigned char pause); + +_music_pause=FamiToneMusicPause + + +.if(FT_SFX_ENABLE) +;void __fastcall__ sfx_init(void* sounds_data); +_sfx_init=FamiToneSfxInit + +;void __fastcall__ sfx_play(unsigned char sound,unsigned char channel); +_sfx_play: + + and #$03 + tax + lda @sfxPriority,x + tax + jsr popa + jmp FamiToneSfxPlay + +@sfxPriority: + + .byte FT_SFX_CH0,FT_SFX_CH1,FT_SFX_CH2,FT_SFX_CH3 +.endif + +.if(FT_DPCM_ENABLE) +;void __fastcall__ sample_play(unsigned char sample); +_sample_play=FamiToneSamplePlay +.endif + +;FamiTone2 v1.12 + + + +;internal defines +;FT_PITCH_FIX if either NTSC or PAL defined + .if(FT_PAL_SUPPORT && FT_NTSC_SUPPORT) +FT_PITCH_FIX = 1 + .else +FT_PITCH_FIX = 0 + .endif + +FT_DPCM_PTR = (FT_DPCM_OFF&$3fff)>>6 + + +;zero page variables + +FT_TEMP_PTR = FT_TEMP ;word +FT_TEMP_PTR_L = FT_TEMP_PTR+0 +FT_TEMP_PTR_H = FT_TEMP_PTR+1 +FT_TEMP_VAR1 = FT_TEMP+2 + + +;envelope structure offsets, 5 bytes per envelope, grouped by variable type + +FT_ENVELOPES_ALL = 3+3+3+2 ;3 for the pulse and triangle channels, 2 for the noise channel +FT_ENV_STRUCT_SIZE = 5 + +FT_ENV_VALUE = FT_BASE_ADR+0*FT_ENVELOPES_ALL +FT_ENV_REPEAT = FT_BASE_ADR+1*FT_ENVELOPES_ALL +FT_ENV_ADR_L = FT_BASE_ADR+2*FT_ENVELOPES_ALL +FT_ENV_ADR_H = FT_BASE_ADR+3*FT_ENVELOPES_ALL +FT_ENV_PTR = FT_BASE_ADR+4*FT_ENVELOPES_ALL + + +;channel structure offsets, 7 bytes per channel + +FT_CHANNELS_ALL = 5 +FT_CHN_STRUCT_SIZE = 9 + +FT_CHN_PTR_L = FT_BASE_ADR+0*FT_CHANNELS_ALL +FT_CHN_PTR_H = FT_BASE_ADR+1*FT_CHANNELS_ALL +FT_CHN_NOTE = FT_BASE_ADR+2*FT_CHANNELS_ALL +FT_CHN_INSTRUMENT = FT_BASE_ADR+3*FT_CHANNELS_ALL +FT_CHN_REPEAT = FT_BASE_ADR+4*FT_CHANNELS_ALL +FT_CHN_RETURN_L = FT_BASE_ADR+5*FT_CHANNELS_ALL +FT_CHN_RETURN_H = FT_BASE_ADR+6*FT_CHANNELS_ALL +FT_CHN_REF_LEN = FT_BASE_ADR+7*FT_CHANNELS_ALL +FT_CHN_DUTY = FT_BASE_ADR+8*FT_CHANNELS_ALL + + +;variables and aliases + +FT_ENVELOPES = FT_BASE_ADR +FT_CH1_ENVS = FT_ENVELOPES+0 +FT_CH2_ENVS = FT_ENVELOPES+3 +FT_CH3_ENVS = FT_ENVELOPES+6 +FT_CH4_ENVS = FT_ENVELOPES+9 + +FT_CHANNELS = FT_ENVELOPES+FT_ENVELOPES_ALL*FT_ENV_STRUCT_SIZE +FT_CH1_VARS = FT_CHANNELS+0 +FT_CH2_VARS = FT_CHANNELS+1 +FT_CH3_VARS = FT_CHANNELS+2 +FT_CH4_VARS = FT_CHANNELS+3 +FT_CH5_VARS = FT_CHANNELS+4 + + +FT_CH1_NOTE = FT_CH1_VARS+.lobyte(FT_CHN_NOTE) +FT_CH2_NOTE = FT_CH2_VARS+.lobyte(FT_CHN_NOTE) +FT_CH3_NOTE = FT_CH3_VARS+.lobyte(FT_CHN_NOTE) +FT_CH4_NOTE = FT_CH4_VARS+.lobyte(FT_CHN_NOTE) +FT_CH5_NOTE = FT_CH5_VARS+.lobyte(FT_CHN_NOTE) + +FT_CH1_INSTRUMENT = FT_CH1_VARS+.lobyte(FT_CHN_INSTRUMENT) +FT_CH2_INSTRUMENT = FT_CH2_VARS+.lobyte(FT_CHN_INSTRUMENT) +FT_CH3_INSTRUMENT = FT_CH3_VARS+.lobyte(FT_CHN_INSTRUMENT) +FT_CH4_INSTRUMENT = FT_CH4_VARS+.lobyte(FT_CHN_INSTRUMENT) +FT_CH5_INSTRUMENT = FT_CH5_VARS+.lobyte(FT_CHN_INSTRUMENT) + +FT_CH1_DUTY = FT_CH1_VARS+.lobyte(FT_CHN_DUTY) +FT_CH2_DUTY = FT_CH2_VARS+.lobyte(FT_CHN_DUTY) +FT_CH3_DUTY = FT_CH3_VARS+.lobyte(FT_CHN_DUTY) +FT_CH4_DUTY = FT_CH4_VARS+.lobyte(FT_CHN_DUTY) +FT_CH5_DUTY = FT_CH5_VARS+.lobyte(FT_CHN_DUTY) + +FT_CH1_VOLUME = FT_CH1_ENVS+.lobyte(FT_ENV_VALUE)+0 +FT_CH2_VOLUME = FT_CH2_ENVS+.lobyte(FT_ENV_VALUE)+0 +FT_CH3_VOLUME = FT_CH3_ENVS+.lobyte(FT_ENV_VALUE)+0 +FT_CH4_VOLUME = FT_CH4_ENVS+.lobyte(FT_ENV_VALUE)+0 + +FT_CH1_NOTE_OFF = FT_CH1_ENVS+.lobyte(FT_ENV_VALUE)+1 +FT_CH2_NOTE_OFF = FT_CH2_ENVS+.lobyte(FT_ENV_VALUE)+1 +FT_CH3_NOTE_OFF = FT_CH3_ENVS+.lobyte(FT_ENV_VALUE)+1 +FT_CH4_NOTE_OFF = FT_CH4_ENVS+.lobyte(FT_ENV_VALUE)+1 + +FT_CH1_PITCH_OFF = FT_CH1_ENVS+.lobyte(FT_ENV_VALUE)+2 +FT_CH2_PITCH_OFF = FT_CH2_ENVS+.lobyte(FT_ENV_VALUE)+2 +FT_CH3_PITCH_OFF = FT_CH3_ENVS+.lobyte(FT_ENV_VALUE)+2 + + +FT_VARS = FT_CHANNELS+FT_CHANNELS_ALL*FT_CHN_STRUCT_SIZE + +FT_PAL_ADJUST = FT_VARS+0 +FT_SONG_LIST_L = FT_VARS+1 +FT_SONG_LIST_H = FT_VARS+2 +FT_INSTRUMENT_L = FT_VARS+3 +FT_INSTRUMENT_H = FT_VARS+4 +FT_TEMPO_STEP_L = FT_VARS+5 +FT_TEMPO_STEP_H = FT_VARS+6 +FT_TEMPO_ACC_L = FT_VARS+7 +FT_TEMPO_ACC_H = FT_VARS+8 +FT_SONG_SPEED = FT_CH5_INSTRUMENT +FT_PULSE1_PREV = FT_CH3_DUTY +FT_PULSE2_PREV = FT_CH5_DUTY +FT_DPCM_LIST_L = FT_VARS+9 +FT_DPCM_LIST_H = FT_VARS+10 +FT_DPCM_EFFECT = FT_VARS+11 +FT_OUT_BUF = FT_VARS+12 ;11 bytes + + +;sound effect stream variables, 2 bytes and 15 bytes per stream +;when sound effects are disabled, this memory is not used + +FT_SFX_ADR_L = FT_VARS+23 +FT_SFX_ADR_H = FT_VARS+24 +FT_SFX_BASE_ADR = FT_VARS+25 + +FT_SFX_STRUCT_SIZE = 15 +FT_SFX_REPEAT = FT_SFX_BASE_ADR+0 +FT_SFX_PTR_L = FT_SFX_BASE_ADR+1 +FT_SFX_PTR_H = FT_SFX_BASE_ADR+2 +FT_SFX_OFF = FT_SFX_BASE_ADR+3 +FT_SFX_BUF = FT_SFX_BASE_ADR+4 ;11 bytes + + +;aliases for sound effect channels to use in user calls + +FT_SFX_CH0 = FT_SFX_STRUCT_SIZE*0 +FT_SFX_CH1 = FT_SFX_STRUCT_SIZE*1 +FT_SFX_CH2 = FT_SFX_STRUCT_SIZE*2 +FT_SFX_CH3 = FT_SFX_STRUCT_SIZE*3 + + +;aliases for the APU registers + +APU_PL1_VOL = $4000 +APU_PL1_SWEEP = $4001 +APU_PL1_LO = $4002 +APU_PL1_HI = $4003 +APU_PL2_VOL = $4004 +APU_PL2_SWEEP = $4005 +APU_PL2_LO = $4006 +APU_PL2_HI = $4007 +APU_TRI_LINEAR = $4008 +APU_TRI_LO = $400a +APU_TRI_HI = $400b +APU_NOISE_VOL = $400c +APU_NOISE_LO = $400e +APU_NOISE_HI = $400f +APU_DMC_FREQ = $4010 +APU_DMC_RAW = $4011 +APU_DMC_START = $4012 +APU_DMC_LEN = $4013 +APU_SND_CHN = $4015 + + +;aliases for the APU registers in the output buffer + + .if(!FT_SFX_ENABLE) ;if sound effects are disabled, write to the APU directly +FT_MR_PULSE1_V = APU_PL1_VOL +FT_MR_PULSE1_L = APU_PL1_LO +FT_MR_PULSE1_H = APU_PL1_HI +FT_MR_PULSE2_V = APU_PL2_VOL +FT_MR_PULSE2_L = APU_PL2_LO +FT_MR_PULSE2_H = APU_PL2_HI +FT_MR_TRI_V = APU_TRI_LINEAR +FT_MR_TRI_L = APU_TRI_LO +FT_MR_TRI_H = APU_TRI_HI +FT_MR_NOISE_V = APU_NOISE_VOL +FT_MR_NOISE_F = APU_NOISE_LO + .else ;otherwise write to the output buffer +FT_MR_PULSE1_V = FT_OUT_BUF +FT_MR_PULSE1_L = FT_OUT_BUF+1 +FT_MR_PULSE1_H = FT_OUT_BUF+2 +FT_MR_PULSE2_V = FT_OUT_BUF+3 +FT_MR_PULSE2_L = FT_OUT_BUF+4 +FT_MR_PULSE2_H = FT_OUT_BUF+5 +FT_MR_TRI_V = FT_OUT_BUF+6 +FT_MR_TRI_L = FT_OUT_BUF+7 +FT_MR_TRI_H = FT_OUT_BUF+8 +FT_MR_NOISE_V = FT_OUT_BUF+9 +FT_MR_NOISE_F = FT_OUT_BUF+10 + .endif + + + +;------------------------------------------------------------------------------ +; reset APU, initialize FamiTone +;------------------------------------------------------------------------------ + +FamiToneInit: + + sta FT_SONG_LIST_L ;store music data pointer for further use + stx FT_SONG_LIST_H + sta 0 + ldx #FT_SFX_CH0 + jsr _FT2SfxUpdate + .endif + .if FT_SFX_STREAMS>1 + ldx #FT_SFX_CH1 + jsr _FT2SfxUpdate + .endif + .if FT_SFX_STREAMS>2 + ldx #FT_SFX_CH2 + jsr _FT2SfxUpdate + .endif + .if FT_SFX_STREAMS>3 + ldx #FT_SFX_CH3 + jsr _FT2SfxUpdate + .endif + + + ;send data from the output buffer to the APU + + lda FT_OUT_BUF ;pulse 1 volume + sta APU_PL1_VOL + lda FT_OUT_BUF+1 ;pulse 1 period LSB + sta APU_PL1_LO + lda FT_OUT_BUF+2 ;pulse 1 period MSB, only applied when changed + cmp FT_PULSE1_PREV + beq @no_pulse1_upd + sta FT_PULSE1_PREV + sta APU_PL1_HI +@no_pulse1_upd: + + lda FT_OUT_BUF+3 ;pulse 2 volume + sta APU_PL2_VOL + lda FT_OUT_BUF+4 ;pulse 2 period LSB + sta APU_PL2_LO + lda FT_OUT_BUF+5 ;pulse 2 period MSB, only applied when changed + cmp FT_PULSE2_PREV + beq @no_pulse2_upd + sta FT_PULSE2_PREV + sta APU_PL2_HI +@no_pulse2_upd: + + lda FT_OUT_BUF+6 ;triangle volume (plays or not) + sta APU_TRI_LINEAR + lda FT_OUT_BUF+7 ;triangle period LSB + sta APU_TRI_LO + lda FT_OUT_BUF+8 ;triangle period MSB + sta APU_TRI_HI + + lda FT_OUT_BUF+9 ;noise volume + sta APU_NOISE_VOL + lda FT_OUT_BUF+10 ;noise period + sta APU_NOISE_LO + + .endif + + .if(FT_THREAD) + pla + sta FT_TEMP_PTR_H + pla + sta FT_TEMP_PTR_L + .endif + + rts + + +;internal routine, sets up envelopes of a channel according to current instrument +;in X envelope group offset, A instrument number + +_FT2SetInstrument: + asl a ;instrument number is pre multiplied by 4 + tay + lda FT_INSTRUMENT_H + adc #0 ;use carry to extend range for 64 instruments + sta