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