1
0
mirror of https://github.com/Gehstock/Mist_FPGA.git synced 2026-04-17 00:00:41 +00:00

Display selected Gear

This commit is contained in:
Marcel
2019-04-28 11:12:40 +02:00
parent 76464562a9
commit d651f3d21e
39 changed files with 1006 additions and 425 deletions

View File

@@ -1,94 +0,0 @@
//============================================================================
// gearshift
//
// Turn gearup and geardown buttons into state that can flip the correct switches
// for sprint
//
//
// Copyright (c) 2019 Alan Steremberg - alanswx
//
//
//============================================================================
module gearshift
(
input CLK,
input gearup,
input geardown,
output gear1,
output gear2,
output gear3
);
reg [2:0] gear=3'b0;
always @(posedge CLK) begin
reg old_gear_up;
reg old_gear_down;
if (gearup==1)
begin
if (old_gear_up==0)
begin
old_gear_up=1;
if (gear<4)
begin
gear=gear+1;
end
end
end
else
begin
old_gear_up=0;
end
if (geardown==1)
begin
if (old_gear_down==0)
begin
old_gear_down=1;
if (gear>0)
begin
gear=gear-1;
end
end
end
else
begin
old_gear_up=0;
end
casex(gear)
3'b000:
begin
gear1=0;
gear2=1;
gear3=1;
end
3'b001:
begin
gear1=1;
gear2=0;
gear3=1;
end
3'b010:
begin
gear1=1;
gear2=1;
gear3=0;
end
3'b011:
begin
gear1=1;
gear2=1;
gear3=1;
end
endcase
end
endmodule

View File

@@ -0,0 +1,89 @@
-- Gear Shift
-- (c) 2019 alanswx
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
entity gearshift is
port(
Clk : in std_logic;
reset : in std_logic;
gearup : in std_logic;
geardown : in std_logic;
gearout : out std_logic_vector(2 downto 0);
gear1 : out std_logic;
gear2 : out std_logic;
gear3 : out std_logic
);
end gearshift;
architecture rtl of gearshift is
signal gear : std_logic_vector(2 downto 0):= (others =>'0');
signal old_gear_up : std_logic:='0';
signal old_gear_down : std_logic:='0';
begin
gearout<=gear;
process (clk, gear)
begin
if rising_edge(clk) then
if (reset='1') then
gear<="000";
elsif (gearup='1') then
if (old_gear_up='0') then
old_gear_up<='1';
if (gear < 3) then
gear<= gear +1;
end if;
end if;
elsif (geardown='1') then
if (old_gear_down='0') then
old_gear_down<='1';
if (gear>0) then
gear<=gear-1;
end if;
end if;
else
old_gear_up<='0';
old_gear_down<='0';
end if;
end if;
case gear is
when "000" => gear1 <= '0' ;
when "001" => gear1 <= '1' ;
when "010" => gear1 <= '1' ;
when "011" => gear1 <= '1' ;
when others => gear1 <= '1' ;
end case;
case gear is
when "000" => gear2 <= '1' ;
when "001" => gear2 <= '0' ;
when "010" => gear2 <= '1' ;
when "011" => gear2 <= '1' ;
when others => gear2 <= '1' ;
end case;
case gear is
when "000" => gear3 <= '1' ;
when "001" => gear3 <= '1' ;
when "010" => gear3 <= '0' ;
when "011" => gear3 <= '1' ;
when others => gear3 <= '1' ;
end case;
end process;
end rtl;

View File

@@ -19,10 +19,10 @@ module joy2quad
input CLK,
input [31:0] clkdiv,
input right,
input left,
output reg [1:0] steer
input c_right,
input c_left,
output reg steerA,
output reg steerB
);
@@ -40,12 +40,12 @@ always @(posedge CLK) begin
casex(state)
4'b0000:
begin
steer=2'b00;
if (left==1)
{steerB,steerA} =2'b00;
if (c_left==1)
begin
state=4'b0001;
end
if (right==1)
if (c_right==1)
begin
state=4'b0101;
end
@@ -53,42 +53,42 @@ always @(posedge CLK) begin
end
4'b0001:
begin
steer=2'b00;
{steerB,steerA}=2'b00;
state=4'b0010;
end
4'b0010:
begin
steer=2'b01;
{steerB,steerA}=2'b01;
state=3'b0011;
end
4'b0011:
begin
steer=2'b11;
{steerB,steerA}=2'b11;
state=4'b0100;
end
4'b0100:
begin
steer=2'b10;
{steerB,steerA}=2'b10;
state=4'b000;
end
4'b0101:
begin
steer=2'b00;
{steerB,steerA}=2'b00;
state=4'b0110;
end
4'b0110:
begin
steer=2'b10;
{steerB,steerA}=2'b10;
state=4'b0111;
end
4'b0111:
begin
steer=2'b11;
{steerB,steerA}=2'b11;
state=4'b1000;
end
4'b1000:
begin
steer=2'b01;
{steerB,steerA}=2'b01;
state=4'b0000;
end
@@ -97,4 +97,4 @@ always @(posedge CLK) begin
end
end
endmodule
endmodule

View File

@@ -11,13 +11,15 @@ module osd (
input SPI_SS3,
input SPI_DI,
input [1:0] rotate, //[0] - rotate [1] - left or right
// VGA signals coming from core
input [5:0] R_in,
input [5:0] G_in,
input [5:0] B_in,
input HSync,
input VSync,
// VGA signals going to video connector
output [5:0] R_out,
output [5:0] G_out,
@@ -59,7 +61,7 @@ always@(posedge SPI_SCK, posedge SPI_SS3) begin
if(cnt == 7) begin
cmd <= {sbuf[6:0], SPI_DI};
// lower three command bits are line address
bcnt <= {sbuf[1:0], SPI_DI, 8'h00};
@@ -91,7 +93,7 @@ reg [9:0] vs_low, vs_high;
wire vs_pol = vs_high < vs_low;
wire [9:0] dsp_height = vs_pol ? vs_low : vs_high;
wire doublescan = (dsp_height>350);
wire doublescan = (dsp_height>350);
reg ce_pix;
always @(negedge clk_sys) begin
@@ -124,13 +126,13 @@ always @(posedge clk_sys) begin
hsD2 <= hsD;
// falling edge of HSync
if(!hsD && hsD2) begin
if(!hsD && hsD2) begin
h_cnt <= 0;
hs_high <= h_cnt;
end
// rising edge of HSync
else if(hsD && !hsD2) begin
else if(hsD && !hsD2) begin
h_cnt <= 0;
hs_low <= h_cnt;
v_cnt <= v_cnt + 1'd1;
@@ -142,13 +144,13 @@ always @(posedge clk_sys) begin
vsD2 <= vsD;
// falling edge of VSync
if(!vsD && vsD2) begin
if(!vsD && vsD2) begin
v_cnt <= 0;
vs_high <= v_cnt;
end
// rising edge of VSync
else if(vsD && !vsD2) begin
else if(vsD && !vsD2) begin
v_cnt <= 0;
vs_low <= v_cnt;
end
@@ -160,17 +162,30 @@ wire [9:0] h_osd_start = ((dsp_width - OSD_WIDTH)>> 1) + OSD_X_OFFSET;
wire [9:0] h_osd_end = h_osd_start + OSD_WIDTH;
wire [9:0] v_osd_start = ((dsp_height- (OSD_HEIGHT<<doublescan))>> 1) + OSD_Y_OFFSET;
wire [9:0] v_osd_end = v_osd_start + (OSD_HEIGHT<<doublescan);
wire [9:0] osd_hcnt = h_cnt - h_osd_start + 1'd1; // one pixel offset for osd_byte register
wire [9:0] osd_hcnt = h_cnt - h_osd_start;
wire [9:0] osd_vcnt = v_cnt - v_osd_start;
wire [9:0] osd_hcnt_next = osd_hcnt + 2'd1; // one pixel offset for osd pixel
wire [9:0] osd_hcnt_next2 = osd_hcnt + 2'd2; // two pixel offset for osd byte address register
wire osd_de = osd_enable &&
wire osd_de = osd_enable &&
(HSync != hs_pol) && (h_cnt >= h_osd_start) && (h_cnt < h_osd_end) &&
(VSync != vs_pol) && (v_cnt >= v_osd_start) && (v_cnt < v_osd_end);
reg [7:0] osd_byte;
always @(posedge clk_sys) if(ce_pix) osd_byte <= osd_buffer[{doublescan ? osd_vcnt[7:5] : osd_vcnt[6:4], osd_hcnt[7:0]}];
reg [10:0] osd_buffer_addr;
wire [7:0] osd_byte = osd_buffer[osd_buffer_addr];
reg osd_pixel;
wire osd_pixel = osd_byte[doublescan ? osd_vcnt[4:2] : osd_vcnt[3:1]];
always @(posedge clk_sys) begin
if(ce_pix) begin
osd_buffer_addr <= rotate[0] ? {rotate[1] ? osd_hcnt_next2[7:5] : ~osd_hcnt_next2[7:5],
rotate[1] ? (doublescan ? ~osd_vcnt[7:0] : ~{osd_vcnt[6:0], 1'b0}) :
(doublescan ? osd_vcnt[7:0] : {osd_vcnt[6:0], 1'b0})} :
{doublescan ? osd_vcnt[7:5] : osd_vcnt[6:4], osd_hcnt_next2[7:0]};
osd_pixel <= rotate[0] ? osd_byte[rotate[1] ? osd_hcnt_next[4:2] : ~osd_hcnt_next[4:2]] :
osd_byte[doublescan ? osd_vcnt[4:2] : osd_vcnt[3:1]];
end
end
assign R_out = !osd_de ? R_in : {osd_pixel, osd_pixel, OSD_COLOR[2], R_in[5:3]};
assign G_out = !osd_de ? G_in : {osd_pixel, osd_pixel, OSD_COLOR[1], G_in[5:3]};

View File

@@ -21,7 +21,9 @@ use IEEE.STD_LOGIC_UNSIGNED.all;
entity playfield is
port(
clk6 : in std_logic;
display : in std_logic_vector(7 downto 0);
Gear_Shift_1 : in std_logic_vector(2 downto 0);
Gear_Shift_2 : in std_logic_vector(2 downto 0);
Display : in std_logic_vector(7 downto 0);
HCount : in std_logic_vector(8 downto 0);
VCount : in std_logic_vector(7 downto 0);
H256_s : out std_logic;
@@ -65,7 +67,7 @@ signal P2_13 : std_logic;
signal P3_6 : std_logic;
signal A6_6 : std_logic;
signal A6_3 : std_logic;
signal Display_7 : std_logic;
begin
-- Video synchronization signals
@@ -89,8 +91,36 @@ P2_13 <= (HSync nor VSync);
P3_6 <= (HBlank or VBlank);
char_addr <= display(5 downto 0) & V4 & V2 & V1;
process(Hcount,Vcount,V4,V2,V1,Gear_Shift_1,Gear_Shift_2,Display)
begin
-- this is the right side of the screen for the gear shift
if (HCount(7 downto 3) = "11111" and Vcount(7 downto 3)="11011") then
Display_7 <= '0'; -- 1 is white, 0 is black
case Gear_Shift_2 is
when "000" => char_addr <= "110001" & V4 & V2 & V1;
when "001" => char_addr <= "110010" & V4 & V2 & V1;
when "010" => char_addr <= "110011" & V4 & V2 & V1;
when "011" => char_addr <= "110100" & V4 & V2 & V1;
when others => char_addr <= "001110" & V4 & V2 & V1;
end case;
-- this is the left side of the screen for the gear shift
elsif (HCount(7 downto 3) = "00000" and Vcount(7 downto 3)="11011") then
Display_7 <= '1'; -- 1 is white, 0 is black
case Gear_Shift_1 is
when "000" => char_addr <= "110001" & V4 & V2 & V1;
when "001" => char_addr <= "110010" & V4 & V2 & V1;
when "010" => char_addr <= "110011" & V4 & V2 & V1;
when "011" => char_addr <= "110100" & V4 & V2 & V1;
when others => char_addr <= "001110" & V4 & V2 & V1;
end case;
-- debug all chars
-- char_addr <= num & V4 & V2 & V1;
else
-- default behaviour
char_addr <= Display(5 downto 0) & V4 & V2 & V1;
Display_7 <= Display(7);
end if;
end process;
-- Background character ROMs
R4: entity work.sprom
@@ -103,13 +133,6 @@ port map(
Address => char_addr,
q => char_data(3 downto 0)
);
--R4: entity work.Char_MSB
--port map(
-- clock => clk6,
-- Address => char_addr,
-- q => char_data(3 downto 0)
-- );
P4: entity work.sprom
generic map(
@@ -122,15 +145,6 @@ port map(
q => char_data(7 downto 4)
);
--P4: entity work.Char_LSB
--port map(
-- clock => clk6,
-- Address => char_addr,
-- q => char_data(7 downto 4)
-- );
-- 74LS166 video shift register
R3: process(clk6, P3_3, VBlank_n_s, char_data, shift_data)
begin

View File

@@ -46,17 +46,15 @@ port(
Trak_Sel_I : in std_logic; -- Track select button
Gas1_I : in std_logic; -- Gas pedals
Gas2_I : in std_logic;
Gear1_1_I : in std_logic; -- Gear shifters, 4th gear = no other gear selected
Gear1_2_I : in std_logic;
Gear2_1_I : in std_logic;
Gear2_2_I : in std_logic;
Gear3_1_I : in std_logic;
Gear3_2_I : in std_logic;
c_gearup : in std_logic;
c_geardown : in std_logic;
c_left : in std_logic;
c_right : in std_logic;
c_gearup2 : in std_logic;
c_geardown2 : in std_logic;
c_left2 : in std_logic;
c_right2 : in std_logic;
Test_I : in std_logic; -- Self-test switch
Steer_1A_I : in std_logic; -- Steering wheel inputs, these are quadrature encoders
Steer_1B_I : in std_logic;
Steer_2A_I : in std_logic;
Steer_2B_I : in std_logic;
Lamp1_O : out std_logic; -- Player 1 and 2 start button LEDs
Lamp2_O : out std_logic
);
@@ -155,7 +153,30 @@ signal SW1 : std_logic_vector(7 downto 0);
signal Inputs : std_logic_vector(1 downto 0);
signal Collisions1 : std_logic_vector(1 downto 0);
signal Collisions2 : std_logic_vector(1 downto 0);
signal Gearnum : std_logic_vector(2 downto 0);
signal Gear1 : std_logic;
signal Gear2 : std_logic;
signal Gear3 : std_logic;
signal SteerA : std_logic;
signal SteerB : std_logic;
signal Gearnum2 : std_logic_vector(2 downto 0);
signal Gear21 : std_logic;
signal Gear22 : std_logic;
signal Gear23 : std_logic;
signal Steer2A : std_logic;
signal Steer2B : std_logic;
COMPONENT joy2quad
PORT
(
CLK : IN STD_LOGIC;
clkdiv : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
c_right : IN STD_LOGIC;
c_left : IN STD_LOGIC;
SteerA : OUT STD_LOGIC;
SteerB : OUT STD_LOGIC
);
END COMPONENT;
begin
-- Configuration DIP switches, these can be brought out to external switches if desired
@@ -188,7 +209,9 @@ port map(
Background: entity work.playfield
port map(
clk6 => clk_6,
display => display,
Gear_Shift_1 => Gearnum,
Gear_Shift_2 => Gearnum2,
Display => display,
HCount => HCount,
VCount => VCount,
HBlank => HBlank,
@@ -283,24 +306,72 @@ port map(
Trak_Sel => not Trak_Sel_I,
Gas1 => not Gas1_I,
Gas2 => not Gas2_I,
Gear1_1 => not Gear1_1_I,
Gear1_2 => not Gear1_2_I,
Gear2_1 => not Gear2_1_I,
Gear2_2 => not Gear2_2_I,
Gear3_1 => not Gear3_1_I,
Gear3_2 => not Gear3_2_I,
Gear1_1 => not Gear1,
Gear1_2 => not Gear21,
Gear2_1 => not Gear2,
Gear2_2 => not Gear22,
Gear3_1 => not Gear3,
Gear3_2 => not Gear23,
Self_Test => not Test_I,
Steering1A_n => Steer_1A_I,
Steering1B_n => Steer_1B_I,
Steering2A_n => Steer_2A_I,
Steering2B_n => Steer_2B_I,
Steering1A_n => SteerA,
Steering1B_n => SteerB,
Steering2A_n => Steer2A,
Steering2B_n => Steer2B,
SteerRst1_n => SteerRst1_n,
SteerRst2_n => SteerRst2_n,
Adr => Adr,
Inputs => Inputs
);
RotaryEncoder: joy2quad
port map(
CLK => clk_6,
clkdiv => x"000057E4",
c_right => c_right,
c_left => c_left,
SteerA=> SteerA,
SteerB=> SteerB
);
Gears: entity work.gearshift
port map(
CLK => clk_6,
reset => not Reset_n,
gearout => Gearnum,
gearup => c_gearup,
geardown => c_geardown,
gear1 => Gear1,
gear2 => Gear2,
gear3 => Gear3
);
RotaryEncoder2: joy2quad
port map(
CLK => clk_6,
clkdiv => x"000057E4",
c_right => c_right2,
c_left => c_left2,
SteerA=> Steer2A,
SteerB=> Steer2B
);
Gears2: entity work.gearshift
port map(
CLK => clk_6,
reset => not Reset_n,
gearout => Gearnum2,
gearup => c_gearup2,
geardown => c_geardown2,
gear1 => Gear21,
gear2 => Gear22,
gear3 => Gear23
);
Sound: entity work.audio
port map(
Clk_6 => Clk_6,

View File

@@ -64,24 +64,22 @@ sprint2 sprint2(
.RGB(RGB),
.Audio1_O(audio1),
.Audio2_O(audio2),
.Coin1_I(m_coin),
.Coin1_I(~btn_coin),
.Coin2_I(1'b1),
.Start1_I(m_start1),
.Start2_I(m_start2),
.Start1_I(~btn_one_player),
.Start2_I(~btn_two_players),
.Trak_Sel_I(~status[2]),
.Gas1_I(m_fire1),
.Gas2_I(m_fire2),
.Gear1_1_I(~gear11),
.Gear1_2_I(~gear21),
.Gear2_1_I(~gear12),
.Gear2_2_I(~gear22),
.Gear3_1_I(~gear13),
.Gear3_2_I(~gear23),
.Gas1_I(~gas),
.Gas2_I(~gas2),
.c_gearup(gearup),
.c_geardown(geardown),
.c_left(left),
.c_right(right),
.c_gearup2(gearup2),
.c_geardown2(geardown2),
.c_left2(left2),
.c_right2(right2),
.Test_I(~status[1]),
.Steer_1A_I(steer1[1]),
.Steer_1B_I(steer1[0]),
.Steer_2A_I(steer2[1]),
.Steer_2B_I(steer2[0]),
.Lamp1_O(),
.Lamp2_O()
);
@@ -150,7 +148,17 @@ reg btn_fire2 = 0;
reg btn_fire3 = 0;
reg btn_coin = 0;
wire pressed = ps2_key[9];
wire [7:0] code = ps2_key[7:0];
wire [7:0] code = ps2_key[7:0];
wire gearup = btn_fire3 | joystick_0[5];
wire geardown = btn_fire2 | joystick_0[6];
wire right = btn_left | joystick_0[1];
wire left = btn_right | joystick_0[0];
wire gearup2 = joystick_1[5];
wire geardown2 = joystick_1[6];
wire right2 = joystick_1[1];
wire left2 = joystick_1[0];
wire gas = btn_fire1 | joystick_0[4];
wire gas2 = joystick_1[4];
always @(posedge clk_24) begin
reg old_state;
@@ -171,56 +179,4 @@ always @(posedge clk_24) begin
end
end
wire m_left1 = (btn_left | joystick_1[1]);
wire m_right1 = (btn_right | joystick_1[0]);
wire m_left2 = (joystick_0[1]);
wire m_right2 = (joystick_0[0]);
wire m_fire1 = ~(btn_fire1 | joystick_1[4]);
wire m_fire2 = ~(joystick_0[4]);
wire m_start1 = ~(btn_one_player);
wire m_start2 = ~(btn_two_players);
wire m_coin = ~(btn_coin);
wire m_gearup1 = (btn_fire2 | joystick_1[5]);
wire m_geardown1 = (btn_fire3 | joystick_1[6]);
wire m_gearup2 = (joystick_0[5]);
wire m_geardown2 = (joystick_0[6]);
wire [1:0] steer1;
joy2quad steerp1(
.CLK(clk_24),
.clkdiv('d22500),
.right(m_right1),
.left(m_left1),
.steer(steer1)
);
wire [1:0] steer2;
joy2quad steerp2(
.CLK(clk_24),
.clkdiv('d22500),
.right(m_right2),
.left(m_left2),
.steer(steer2)
);
wire gear11,gear12,gear13;
gearshift gearshiftp1(
.CLK(clk_12),
.gearup(m_gearup1),
.geardown(m_geardown1),
.gear1(gear11),
.gear2(gear12),
.gear3(gear13)
);
wire gear21,gear22,gear23;
gearshift gearshiftp2(
.CLK(clk_12),
.gearup(m_gearup2),
.geardown(m_geardown2),
.gear1(gear21),
.gear2(gear22),
.gear3(gear23)
);
endmodule

View File

@@ -18,7 +18,7 @@
#
# Quartus II 64-Bit
# Version 13.1.4 Build 182 03/12/2014 SJ Web Edition
# Date created = 16:19:23 March 07, 2019
# Date created = 11:06:18 April 28, 2019
#
# -------------------------------------------------------------------------- #
#
@@ -45,21 +45,21 @@ set_global_assignment -name LAST_QUARTUS_VERSION 13.1
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
set_global_assignment -name SYSTEMVERILOG_FILE rtl/sprint2_mist.sv
set_global_assignment -name VHDL_FILE rtl/sprint2.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65_Pack.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65_MCode.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65_ALU.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65.vhd
set_global_assignment -name VHDL_FILE rtl/sync.vhd
set_global_assignment -name SYSTEMVERILOG_FILE rtl/joy2quad.sv
set_global_assignment -name SYSTEMVERILOG_FILE rtl/gearshift.sv
set_global_assignment -name VHDL_FILE rtl/playfield.vhd
set_global_assignment -name VHDL_FILE rtl/motion.vhd
set_global_assignment -name VHDL_FILE rtl/sync.vhd
set_global_assignment -name VHDL_FILE rtl/collision.vhd
set_global_assignment -name VHDL_FILE rtl/cpu_mem.vhd
set_global_assignment -name VHDL_FILE rtl/Inputs.vhd
set_global_assignment -name VHDL_FILE rtl/sprint2_sound.vhd
set_global_assignment -name VHDL_FILE rtl/screech.vhd
set_global_assignment -name VHDL_FILE rtl/EngineSound.vhd
set_global_assignment -name VHDL_FILE rtl/gearshift.vhd
set_global_assignment -name SYSTEMVERILOG_FILE rtl/joy2quad.sv
set_global_assignment -name VHDL_FILE rtl/T65/T65_Pack.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65_MCode.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65_ALU.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65.vhd
set_global_assignment -name SYSTEMVERILOG_FILE rtl/dac.sv
set_global_assignment -name SYSTEMVERILOG_FILE rtl/video_mixer.sv
set_global_assignment -name SYSTEMVERILOG_FILE rtl/scandoubler.sv
@@ -116,6 +116,11 @@ set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS OFF
set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144
set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8
set_global_assignment -name TOP_LEVEL_ENTITY sprint2_mist
set_global_assignment -name DEVICE_FILTER_PACKAGE TQFP
set_global_assignment -name VHDL_INPUT_VERSION VHDL_2008
set_global_assignment -name VHDL_SHOW_LMF_MAPPING_MESSAGES OFF
set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2005
set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF
# Fitter Assignments
# ==================

View File

@@ -1,97 +0,0 @@
//============================================================================
// gearshift
//
// Turn gearup and geardown buttons into state that can flip the correct switches
// for sprint
//
//
// Copyright (c) 2019 Alan Steremberg - alanswx
//
//
//============================================================================
module gearshift
(
input CLK,
input gearup,
input geardown,
output [1:0]gear_num,
output gear1,
output gear2,
output gear3
);
reg [2:0] gear=3'b0;
always @(posedge CLK) begin
reg old_gear_up;
reg old_gear_down;
if (gearup==1)
begin
if (old_gear_up==0)
begin
old_gear_up=1;
if (gear<4)
begin
gear=gear+1;
end
end
end
else
begin
old_gear_up=0;
end
if (geardown==1)
begin
if (old_gear_down==0)
begin
old_gear_down=1;
if (gear>0)
begin
gear=gear-1;
end
end
end
else
begin
old_gear_up=0;
end
casex(gear)
3'b000:
begin
gear1=0;
gear2=1;
gear3=1;
gear_num=2'b01;
end
3'b001:
begin
gear1=1;
gear2=0;
gear3=1;
gear_num=2'b10;
end
3'b010:
begin
gear1=1;
gear2=1;
gear3=0;
gear_num=2'b11;
end
3'b011:
begin
gear1=1;
gear2=1;
gear3=1;
gear_num=2'b00;
end
endcase
end
endmodule

View File

@@ -0,0 +1,89 @@
-- Gear Shift
-- (c) 2019 alanswx
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
entity gearshift is
port(
Clk : in std_logic;
reset : in std_logic;
gearup : in std_logic;
geardown : in std_logic;
gearout : out std_logic_vector(2 downto 0);
gear1 : out std_logic;
gear2 : out std_logic;
gear3 : out std_logic
);
end gearshift;
architecture rtl of gearshift is
signal gear : std_logic_vector(2 downto 0):= (others =>'0');
signal old_gear_up : std_logic:='0';
signal old_gear_down : std_logic:='0';
begin
gearout<=gear;
process (clk, gear)
begin
if rising_edge(clk) then
if (reset='1') then
gear<="000";
elsif (gearup='1') then
if (old_gear_up='0') then
old_gear_up<='1';
if (gear < 3) then
gear<= gear +1;
end if;
end if;
elsif (geardown='1') then
if (old_gear_down='0') then
old_gear_down<='1';
if (gear>0) then
gear<=gear-1;
end if;
end if;
else
old_gear_up<='0';
old_gear_down<='0';
end if;
end if;
case gear is
when "000" => gear1 <= '0' ;
when "001" => gear1 <= '1' ;
when "010" => gear1 <= '1' ;
when "011" => gear1 <= '1' ;
when others => gear1 <= '1' ;
end case;
case gear is
when "000" => gear2 <= '1' ;
when "001" => gear2 <= '0' ;
when "010" => gear2 <= '1' ;
when "011" => gear2 <= '1' ;
when others => gear2 <= '1' ;
end case;
case gear is
when "000" => gear3 <= '1' ;
when "001" => gear3 <= '1' ;
when "010" => gear3 <= '0' ;
when "011" => gear3 <= '1' ;
when others => gear3 <= '1' ;
end case;
end process;
end rtl;

View File

@@ -19,10 +19,10 @@ module joy2quad
input CLK,
input [31:0] clkdiv,
input right,
input left,
output reg [1:0] steer
input c_right,
input c_left,
output reg steerA,
output reg steerB
);
@@ -40,12 +40,12 @@ always @(posedge CLK) begin
casex(state)
4'b0000:
begin
steer=2'b00;
if (left==1)
{steerB,steerA} =2'b00;
if (c_left==1)
begin
state=4'b0001;
end
if (right==1)
if (c_right==1)
begin
state=4'b0101;
end
@@ -53,42 +53,42 @@ always @(posedge CLK) begin
end
4'b0001:
begin
steer=2'b00;
{steerB,steerA}=2'b00;
state=4'b0010;
end
4'b0010:
begin
steer=2'b01;
{steerB,steerA}=2'b01;
state=3'b0011;
end
4'b0011:
begin
steer=2'b11;
{steerB,steerA}=2'b11;
state=4'b0100;
end
4'b0100:
begin
steer=2'b10;
{steerB,steerA}=2'b10;
state=4'b000;
end
4'b0101:
begin
steer=2'b00;
{steerB,steerA}=2'b00;
state=4'b0110;
end
4'b0110:
begin
steer=2'b10;
{steerB,steerA}=2'b10;
state=4'b0111;
end
4'b0111:
begin
steer=2'b11;
{steerB,steerA}=2'b11;
state=4'b1000;
end
4'b1000:
begin
steer=2'b01;
{steerB,steerA}=2'b01;
state=4'b0000;
end
@@ -97,4 +97,4 @@ always @(posedge CLK) begin
end
end
endmodule
endmodule

View File

@@ -11,13 +11,15 @@ module osd (
input SPI_SS3,
input SPI_DI,
input [1:0] rotate, //[0] - rotate [1] - left or right
// VGA signals coming from core
input [5:0] R_in,
input [5:0] G_in,
input [5:0] B_in,
input HSync,
input VSync,
// VGA signals going to video connector
output [5:0] R_out,
output [5:0] G_out,
@@ -59,7 +61,7 @@ always@(posedge SPI_SCK, posedge SPI_SS3) begin
if(cnt == 7) begin
cmd <= {sbuf[6:0], SPI_DI};
// lower three command bits are line address
bcnt <= {sbuf[1:0], SPI_DI, 8'h00};
@@ -91,7 +93,7 @@ reg [9:0] vs_low, vs_high;
wire vs_pol = vs_high < vs_low;
wire [9:0] dsp_height = vs_pol ? vs_low : vs_high;
wire doublescan = (dsp_height>350);
wire doublescan = (dsp_height>350);
reg ce_pix;
always @(negedge clk_sys) begin
@@ -124,13 +126,13 @@ always @(posedge clk_sys) begin
hsD2 <= hsD;
// falling edge of HSync
if(!hsD && hsD2) begin
if(!hsD && hsD2) begin
h_cnt <= 0;
hs_high <= h_cnt;
end
// rising edge of HSync
else if(hsD && !hsD2) begin
else if(hsD && !hsD2) begin
h_cnt <= 0;
hs_low <= h_cnt;
v_cnt <= v_cnt + 1'd1;
@@ -142,13 +144,13 @@ always @(posedge clk_sys) begin
vsD2 <= vsD;
// falling edge of VSync
if(!vsD && vsD2) begin
if(!vsD && vsD2) begin
v_cnt <= 0;
vs_high <= v_cnt;
end
// rising edge of VSync
else if(vsD && !vsD2) begin
else if(vsD && !vsD2) begin
v_cnt <= 0;
vs_low <= v_cnt;
end
@@ -160,17 +162,30 @@ wire [9:0] h_osd_start = ((dsp_width - OSD_WIDTH)>> 1) + OSD_X_OFFSET;
wire [9:0] h_osd_end = h_osd_start + OSD_WIDTH;
wire [9:0] v_osd_start = ((dsp_height- (OSD_HEIGHT<<doublescan))>> 1) + OSD_Y_OFFSET;
wire [9:0] v_osd_end = v_osd_start + (OSD_HEIGHT<<doublescan);
wire [9:0] osd_hcnt = h_cnt - h_osd_start + 1'd1; // one pixel offset for osd_byte register
wire [9:0] osd_hcnt = h_cnt - h_osd_start;
wire [9:0] osd_vcnt = v_cnt - v_osd_start;
wire [9:0] osd_hcnt_next = osd_hcnt + 2'd1; // one pixel offset for osd pixel
wire [9:0] osd_hcnt_next2 = osd_hcnt + 2'd2; // two pixel offset for osd byte address register
wire osd_de = osd_enable &&
wire osd_de = osd_enable &&
(HSync != hs_pol) && (h_cnt >= h_osd_start) && (h_cnt < h_osd_end) &&
(VSync != vs_pol) && (v_cnt >= v_osd_start) && (v_cnt < v_osd_end);
reg [7:0] osd_byte;
always @(posedge clk_sys) if(ce_pix) osd_byte <= osd_buffer[{doublescan ? osd_vcnt[7:5] : osd_vcnt[6:4], osd_hcnt[7:0]}];
reg [10:0] osd_buffer_addr;
wire [7:0] osd_byte = osd_buffer[osd_buffer_addr];
reg osd_pixel;
wire osd_pixel = osd_byte[doublescan ? osd_vcnt[4:2] : osd_vcnt[3:1]];
always @(posedge clk_sys) begin
if(ce_pix) begin
osd_buffer_addr <= rotate[0] ? {rotate[1] ? osd_hcnt_next2[7:5] : ~osd_hcnt_next2[7:5],
rotate[1] ? (doublescan ? ~osd_vcnt[7:0] : ~{osd_vcnt[6:0], 1'b0}) :
(doublescan ? osd_vcnt[7:0] : {osd_vcnt[6:0], 1'b0})} :
{doublescan ? osd_vcnt[7:5] : osd_vcnt[6:4], osd_hcnt_next2[7:0]};
osd_pixel <= rotate[0] ? osd_byte[rotate[1] ? osd_hcnt_next[4:2] : ~osd_hcnt_next[4:2]] :
osd_byte[doublescan ? osd_vcnt[4:2] : osd_vcnt[3:1]];
end
end
assign R_out = !osd_de ? R_in : {osd_pixel, osd_pixel, OSD_COLOR[2], R_in[5:3]};
assign G_out = !osd_de ? G_in : {osd_pixel, osd_pixel, OSD_COLOR[1], G_in[5:3]};

View File

@@ -21,6 +21,7 @@ use IEEE.STD_LOGIC_UNSIGNED.all;
entity playfield is
port(
Clk6 : in std_logic;
Gear_Shift_1 : in std_logic_vector(2 downto 0);
Display : in std_logic_vector(7 downto 0);
HCount : in std_logic_vector(8 downto 0);
VCount : in std_logic_vector(7 downto 0);
@@ -65,7 +66,7 @@ signal P2_13 : std_logic;
signal P3_6 : std_logic;
signal A6_6 : std_logic;
signal A6_3 : std_logic;
signal Display_7 : std_logic;
begin
-- Video synchronization signals
@@ -88,9 +89,26 @@ P2_13 <= (HSync nor VSync);
P3_6 <= (HBlank or VBlank);
char_addr <= display(5 downto 0) & V4 & V2 & V1;
process(Hcount,Vcount, V4, V2, V1, Display, Gear_Shift_1)
begin
-- this is the left side of the screen for the gear shift
if (HCount(7 downto 3) = "00000" and Vcount(7 downto 3)="11011") then
Display_7 <= '1'; -- 1 is white, 0 is black
case Gear_Shift_1 is
when "000" => char_addr <= "110001" & V4 & V2 & V1;
when "001" => char_addr <= "110010" & V4 & V2 & V1;
when "010" => char_addr <= "110011" & V4 & V2 & V1;
when "011" => char_addr <= "110100" & V4 & V2 & V1;
when others => char_addr <= "001110" & V4 & V2 & V1;
end case;
-- debug all chars
-- char_addr <= num & V4 & V2 & V1;
else
-- default behaviour
char_addr <= display(5 downto 0) & V4 & V2 & V1;
Display_7 <= display(7);
end if;
end process;
-- Background character ROMs
R4: entity work.sprom
@@ -137,7 +155,7 @@ R2: process(clk6, R7_12, display, H256, P2_13, P3_6)
begin
if rising_edge(clk6) then
if R7_12 = '0' then
R2_reg <= (H256 & display(7) & P3_6 & P2_13);
R2_reg <= (H256 & Display_7 & P3_6 & P2_13);
end if;
end if;
end process;

View File

@@ -42,12 +42,11 @@ port(
Coin2_I : in std_logic;
Start_I : in std_logic; -- Start button
Gas_I : in std_logic; -- Gas pedal
Gear1_I : in std_logic; -- Gear shifter, 4th gear = no other gear selected
Gear2_I : in std_logic;
Gear3_I : in std_logic;
c_gearup : in std_logic;
c_geardown : in std_logic;
c_left : in std_logic;
c_right : in std_logic;
Test_I : in std_logic; -- Self-test switch
SteerA_I : in std_logic; -- Steering wheel inputs, these are quadrature encoders
SteerB_I : in std_logic;
StartLamp_O : out std_logic -- Start button lamp
);
end sprint1;
@@ -144,6 +143,24 @@ signal SW1 : std_logic_vector(7 downto 0);
signal Inputs : std_logic_vector(1 downto 0);
signal Collisions1 : std_logic_vector(1 downto 0);
signal Collisions2 : std_logic_vector(1 downto 0);
signal Gearnum : std_logic_vector(2 downto 0);
signal Gear1 : std_logic;
signal Gear2 : std_logic;
signal Gear3 : std_logic;
signal SteerA : std_logic;
signal SteerB : std_logic;
COMPONENT joy2quad
PORT
(
CLK : IN STD_LOGIC;
clkdiv : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
c_right : IN STD_LOGIC;
c_left : IN STD_LOGIC;
SteerA : OUT STD_LOGIC;
SteerB : OUT STD_LOGIC
);
END COMPONENT;
begin
-- Configuration DIP switches, these can be brought out to external switches if desired
@@ -176,6 +193,7 @@ port map(
Background: entity work.playfield
port map(
clk6 => clk_6,
Gear_Shift_1 => Gearnum,
display => display,
HCount => HCount,
VCount => VCount,
@@ -263,18 +281,42 @@ port map(
Coin2_n => Coin2_I,
Start => not Start_I, -- Active high in real hardware, inverting these makes more sense with the FPGA
Gas => not Gas_I,
Gear1 => not Gear1_I,
Gear2 => not Gear2_I,
Gear3 => not Gear3_I,
Gear1 => not Gear1,
Gear2 => not Gear2,
Gear3 => not Gear3,
Self_Test => not Test_I,
Steering1A_n => SteerA_I,
Steering1B_n => SteerB_I,
Steering1A_n => SteerA,
Steering1B_n => SteerB,
SteerRst1_n => SteerRst1_n,
Adr => Adr,
Inputs => Inputs
);
);
RotaryEncoder: joy2quad
port map(
CLK => clk_6,
clkdiv => x"000057E4",
c_right => c_right,
c_left => c_left,
SteerA=> SteerA,
SteerB=> SteerB
);
Gears: entity work.gearshift
port map(
CLK => clk_6,
reset => not Reset_n,
gearout => Gearnum,
gearup => c_gearup,
geardown => c_geardown,
gear1 => Gear1,
gear2 => Gear2,
gear3 => Gear3
);
Sound: entity work.audio
port map(
Clk_6 => Clk_6,

View File

@@ -23,7 +23,7 @@ localparam CONF_STR = {
"O1,Test Mode,Off,On;",
"O34,Scanlines,Off,25%,50%,75%;",
"T6,Reset;",
"V,v1.10.",`BUILD_DATE
"V,v1.20.",`BUILD_DATE
};
assign LED = 1;
@@ -65,12 +65,11 @@ sprint1 sprint1(
.Coin2_I(1'b1),
.Start_I(~btn_one_player),
.Gas_I(~(btn_fire1 | joystick_0[4] | joystick_1[4])),
.Gear1_I(gear1),
.Gear2_I(gear2),
.Gear3_I(gear3),
.c_gearup(gearup),
.c_geardown(geardown),
.c_left(left),
.c_right(right),
.Test_I(~status[1]),
.SteerA_I(steer[1]),
.SteerB_I(steer[0]),
.StartLamp_O()
);
@@ -137,7 +136,11 @@ reg btn_fire2 = 0;
reg btn_fire3 = 0;
reg btn_coin = 0;
wire pressed = ps2_key[9];
wire [7:0] code = ps2_key[7:0];
wire [7:0] code = ps2_key[7:0];
wire gearup = btn_fire3 | joystick_0[5] | joystick_1[5];
wire geardown = btn_fire2 | joystick_0[6] | joystick_1[6];
wire right = btn_left | joystick_0[1] | joystick_1[1];
wire left = btn_right | joystick_0[0] | joystick_1[0];
always @(posedge clk_24) begin
reg old_state;
@@ -158,24 +161,4 @@ always @(posedge clk_24) begin
end
end
wire [1:0] steer;
joy2quad steer1(
.CLK(clk_24),
.clkdiv('d22500),
.right(btn_right | joystick_0[0] | joystick_1[0]),
.left(btn_left | joystick_0[1] | joystick_1[1]),
.steer(steer)
);
wire gear1,gear2,gear3;
gearshift gearshift1(
.CLK(clk_12),
.gearup(btn_fire3 | joystick_0[5] | joystick_1[5]),
.geardown(btn_fire2 | joystick_0[6] | joystick_1[6]),
.gear1(gear1),
.gear2(gear2),
.gear3(gear3)
);
endmodule

View File

@@ -139,7 +139,7 @@ begin
end process;
Crash_sound: process(crash_n, display, noise)
Crash_sound: process(crash_n, display, noise, crash)
begin
if crash_n = '0' then
crash <= display(3 downto 0);

View File

@@ -60,7 +60,7 @@ module video_mixer
// 0 = 16-240 range. 1 = 0-255 range. (only for YPbPr color space)
input ypbpr_full,
input [1:0] rotate, //[0] - rotate [1] - left or right
// color
input [DWIDTH:0] R,
input [DWIDTH:0] G,
@@ -182,6 +182,7 @@ osd #(OSD_X_OFFSET, OSD_Y_OFFSET, OSD_COLOR) osd
.B_in(b_out),
.HSync(hs),
.VSync(vs),
.rotate(rotate),
.R_out(red),
.G_out(green),

View File

@@ -28,4 +28,3 @@ DATE = "19:51:47 November 12, 2017"
# Revisions
PROJECT_REVISION = "sprint1"
PROJECT_REVISION = "sprint2"

View File

@@ -18,7 +18,7 @@
#
# Quartus II 64-Bit
# Version 13.1.4 Build 182 03/12/2014 SJ Web Edition
# Date created = 16:39:28 March 07, 2019
# Date created = 10:21:26 April 28, 2019
#
# -------------------------------------------------------------------------- #
#
@@ -45,18 +45,22 @@ set_global_assignment -name LAST_QUARTUS_VERSION 13.1
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
set_global_assignment -name SYSTEMVERILOG_FILE rtl/sprint1_mist.sv
set_global_assignment -name VHDL_FILE rtl/sprint1.vhd
set_global_assignment -name VERILOG_FILE rtl/pll.v
set_global_assignment -name VHDL_FILE rtl/sprint1_sound.vhd
set_global_assignment -name VHDL_FILE rtl/sync.vhd
set_global_assignment -name VHDL_FILE rtl/collision.vhd
set_global_assignment -name VHDL_FILE rtl/screech.vhd
set_global_assignment -name VHDL_FILE rtl/cpu_mem.vhd
set_global_assignment -name VHDL_FILE rtl/playfield.vhd
set_global_assignment -name VHDL_FILE rtl/EngineSound.vhd
set_global_assignment -name VHDL_FILE rtl/Inputs.vhd
set_global_assignment -name VHDL_FILE rtl/motion.vhd
set_global_assignment -name SYSTEMVERILOG_FILE rtl/gearshift.sv
set_global_assignment -name VHDL_FILE rtl/screech.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65_Pack.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65_MCode.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65_ALU.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65.vhd
set_global_assignment -name VHDL_FILE rtl/gearshift.vhd
set_global_assignment -name SYSTEMVERILOG_FILE rtl/joy2quad.sv
set_global_assignment -name VERILOG_FILE rtl/pll.v
set_global_assignment -name SYSTEMVERILOG_FILE rtl/video_mixer.sv
set_global_assignment -name SYSTEMVERILOG_FILE rtl/scandoubler.sv
set_global_assignment -name SYSTEMVERILOG_FILE rtl/osd.sv
@@ -65,11 +69,6 @@ set_global_assignment -name SYSTEMVERILOG_FILE rtl/mist_io.sv
set_global_assignment -name SYSTEMVERILOG_FILE rtl/hq2x.sv
set_global_assignment -name VHDL_FILE rtl/dpram.vhd
set_global_assignment -name SYSTEMVERILOG_FILE rtl/dac.sv
set_global_assignment -name SYSTEMVERILOG_FILE rtl/build_id.sv
set_global_assignment -name VHDL_FILE rtl/T65/T65_Pack.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65_MCode.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65_ALU.vhd
set_global_assignment -name VHDL_FILE rtl/T65/T65.vhd
# Pin & Location Assignments
# ==========================
@@ -120,6 +119,7 @@ set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS OFF
set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144
set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8
set_global_assignment -name TOP_LEVEL_ENTITY sprint1_mist
set_global_assignment -name DEVICE_FILTER_PACKAGE TQFP
# Fitter Assignments
# ==================
@@ -167,10 +167,10 @@ set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -
set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
# end DESIGN_PARTITION(Top)
# -------------------------
# end ENTITY(sprint1_mist)
# ------------------------
# ------------------------
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top

View File

@@ -1,2 +1,2 @@
`define BUILD_DATE "190321"
`define BUILD_TIME "004002"
`define BUILD_DATE "190421"
`define BUILD_TIME "114651"

View File

@@ -0,0 +1,17 @@
:1000000000000000000000000000000000000000F0
:1000100000000000000000000000000000000000E0
:1000200000000000000000000000000000000000D0
:1000300000000000000000000000000000000000C0
:1000400000000000000000000000000000000000B0
:1000500000000000000000000000000000000000A0
:100060000000000000000000000000000000000090
:100070000000000000000000000000000000000878
:100080000A0A0A0A0A0E0000000000000000000030
:100090000000000000000000000000000000000060
:1000A0000000000000000000000000000000000050
:1000B0000000000000000000000000000000000040
:1000C0000000000000000000000000000000000030
:1000D0000000000000000000000000000000000020
:1000E0000808080808080808080808080808080A8E
:1000F0000A0A0B0B0B0A0A0A0A0A0A0A0A0A0A0A5D
:00000001FF

View File

@@ -1 +0,0 @@
AA<41><41>ΑΑ!!ααααΰΰθθδδμμββκκζζξξ

View File

@@ -0,0 +1,3 @@
:100000001111010141418181C1C12121E1E1E1E100
:10001000E0E0E8E8E4E4ECECE2E2EAEAE6E6EEEE70
:00000001FF

View File

@@ -0,0 +1,33 @@
:1000000000000000000000000F0F0202020F0F00AE
:100010000F0F0909090F060003070C08080C04005C
:100020000F0F08080C0703000F0F09090908080043
:100030000F0F01010101000003070C08090F0F0059
:100040000F0F0101010F0F0008080F0F0808000033
:10005000040C0808080F07000F0F03070E0C080018
:100060000F0F0808080808000F0F0103010F0F0009
:100070000F0F0103070F0F00070F0808080F0700F5
:100080000F0F020202030100070F080A0E070B0000
:100090000F0F02060F0D0900040D0909090F0600D4
:1000A00000000F0F00000000070F0808080F0700EE
:1000B0000103070E070301000F0F0703070F0F00CF
:1000C0000C0E0703070E0C0000010F0F01000000CB
:1000D0000C0E0F0B090808000000000000000000D3
:1000E0000000000000000000000000000000000010
:1000F0000000000000000000000000000000000000
:1001000000000000000000000300000000000000EC
:1001100003030000000000000303030000000000D0
:1001200003030303000000000303030303000000B4
:100130000303030303030000030303030303030098
:100140000303030303030303000303030303030382
:10015000000003030303030300000003030303037E
:10016000000000000303030300000000000303037A
:100170000000000000000303000000000000000376
:1001800003070C080807030008080F0F0808000001
:100190000C0E0F0B0B090800040C0909090F0600CF
:1001A000030302020F0F0200040C0808080F0700E7
:1001B000070F0909090F060000000E0F01000000DB
:1001C0000609090B0B0E0600000909090D070300BB
:1001D000000000000000000003000F0F0F0F0F0FC2
:1001E00003030F0F0F0F0F0F00000F0F0F0F0F0F55
:1001F00000000F0F0F0F0F0F0F0F0F0F0F0F0F0F2D
:00000001FF

View File

@@ -0,0 +1,33 @@
:100000000000000000000000080C0602060C0800BA
:100010000E0E0202020E0C00080C0602020604007C
:100020000E0E0202060C08000E0E02020202000072
:100030000E0E020202020200080C06020202020078
:100040000E0E0000000E0E0002020E0E0202000054
:1000500000000000000E0E000E0E00080C0602004C
:100060000E0E0000000000000E0E0C080C0E0E001C
:100070000E0E0C08000E0E000C0E0202020E0C00FA
:100080000E0E0202020E0C000C0E0202020E0C00FA
:100090000E0E0202020E0C000C0E020206040000FC
:1000A00002020E0E020200000E0E0000000E0E00F4
:1000B0000E0E0000000E0E000E0E0008000E0E00C8
:1000C000060E0C080C0E06000E0E00000E0E0000B0
:1000D0000202020A0E0E06000000000000000000EE
:1000E0000000000000000000000000000000000010
:1000F0000000000000000000000000000000000000
:1001000000000000000000000F00000000000000E0
:100110000F0F0000000000000F0F0F000000000094
:100120000F0F0F0F000000000F0F0F0F0F00000048
:100130000F0F0F0F0F0F00000F0F0F0F0F0F0F00FC
:100140000F0F0F0F0F0F0F0F000F0F0F0F0F0F0FCE
:1001500000000F0F0F0F0F0F0000000F0F0F0F0FFA
:10016000000000000F0F0F0F00000000000F0F0F26
:100170000000000000000F0F000000000000000F52
:10018000080C0202060C080000040E0E000000001D
:10019000040602020A0E0C000002020A0E06020009
:1001A00000080C060E0E00000E0E0A0A0A0A0000D5
:1001B000080C060202020000060602020A0E0600F1
:1001C0000C0E0A02020C00000C0E0202020E0C00C1
:1001D00000000000000000000F000F0F0F0F0F0FB6
:1001E0000F0F0F0F0F0F0F0F00000F0F0F0F0F0F3D
:1001F00000000C0C0C0C0C0C0C0C0C0C0C0C0C0C57
:00000001FF

View File

@@ -0,0 +1,3 @@
:10000000E0E0E00000000000000000000000000050
:1000100000000000000000000000000000000000E0
:00000001FF

View File

@@ -0,0 +1,129 @@
:10000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
:10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
:10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
:10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
:10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
:10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
:10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
:10008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
:10009000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
:1000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
:1000B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
:1000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
:1000D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
:1000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
:1000F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
:10010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
:10011000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
:10012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
:10013000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
:10014000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
:10015000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
:10016000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
:10017000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
:10018000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
:10019000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
:1001A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
:1001B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
:1001C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
:1001D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
:1001E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
:1001F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
:10020000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
:10021000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
:10022000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
:10023000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
:10024000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
:10025000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
:10026000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
:10027000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
:10028000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
:10029000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
:1002A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
:1002B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
:1002C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
:1002D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
:1002E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
:1002F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
:10030000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
:10031000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
:10032000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
:10033000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
:10034000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
:10035000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
:10036000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
:10037000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
:10038000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10039000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:1003B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
:1003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:1003D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:1003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:1003F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
:100400004C8D3CA201A406A503F01BB525D92700FD
:100410009011992700D007B520D922009005B5206A
:10042000992200CA10E5204F348D300C8D400CE627
:1004300004A9398539A9398538A206A903853E2042
:10044000B035202F36A503D004A50ED0D920C9364B
:1004500020082F202432205231A505D0E8A503F032
:10046000C5A9088511850020C9362C2E083006A59F
:1004700000293FD0F2A9008511E60220F234A5023E
:10048000C50390ADA9008502A9042C32081002A969
:1004900002C504B09A4C032C206933A538291F38B3
:1004A000E90F1002A9004A8538A5060A0A0A05388C
:1004B000A8A92D8539A93B8538B1381024B52A1053
:1004C00003200B3AC940AD5B339003AD5C33853AF2
:1004D000B52AC980A53A9003200B3A952AA9099517
:1004E0002BA503F053B138297F8538186509C92039
:1004F0009002A9208509F8A53818A40588F0076599
:100500003888F0026538A4027920009920009027ED
:10051000A900792500992500C50AD01BA5021869F4
:1005200001A80A0A2517D00F9805178517A9108565
:10053000078508E60EE60ED8C60D600101030385A7
:10054000858787000001038587000000000103857F
:10055000870000A900853EA21EA9398539A93985E1
:100560003820B035A9568538A9398539A91FAA85FB
:100570003E4CB035A503F00AA502D06CA504C90114
:10058000D066A500290FD060AD28082AAD2F082914
:10059000802A2AC9039002A902C506F0098506A986
:1005A0000085404C8231AD3208850AAD330829C040
:1005B000260A260A05062A2A2AAABDE92D850AF056
:1005C00027A944204937A50A4A4A4A4AF00320AAE3
:1005D0003EA000913AA50A20AA3EA020913AA9B0D7
:1005E000A040913AA060913A6000020406091216F8
:1005F0002000020406081012150002030407091166
:1006000014A537C902B005A2024C973660A512C9DD
:10061000249004C964900BA51B4A9006E605182A8D
:10062000851BA514C9249004C964900BA51D4A908C
:1006300006E605182A851D60A506C901F0C3B0CDE0
:10064000A503D004A50BD025A000A52BC9089008B0
:10065000A91CC53790028537A537C9079067C930EF
:10066000B00DC914900529014C6D2E2903D056A94F
:10067000048539853BA906853CA2248638863AE65E
:100680003AA539C9079006A538C960B036B13A9184
:1006900038E638E63AA53A291FC91F90F0A50C297B
:1006A00004D0049138F00EA5382920D004A9BFD079
:1006B00002A9BE9138A53818653CAA90BEE639E675
:1006C0003BD0B8E60C60A50FD00B2C31087006307B
:1006D00004A904850EA5002907F008C904D0038DDC
:1006E000700C60A50FF0FB2C310850083008E60EA6
:1006F000E60E1000E60EE60EC60F8D710CA50EC9B3
:100700001E90DFA91E850E60A204B51910034CE3EC
:100710002FB518C9E8B010C91AB01DB52AC9409044
:1007200017C9C0B013D00AB52AC9409004C9C090F7
:100730000720013A952AE608B510D023B52A301FC4
:10074000200B3A952AA9238536B5192901F002E62E
:1007500005B51929809519A503F004A9088516B5D2
:1007600010C9F09015B5192901D002C605A98095C8
:1007700019A506C902D00320382EB5192902D05C6C
:10078000206933A000B138C9BEF00FC9BFD04DA554
:100790003838E9208538B002C639B5192901D03971
:1007A000A506F008B51909029519D012A536300E24
:1007B000A538291F38E53620AD39C904901EA53863
:1007C000291F8536A503D004A50BD00DA000A900D4
:1007D0009138A020913820982C20EB2F863F20764E
:1007E00032A63FCACA30034C0A2F60A506C901F0E1
:1007F0000EB010A536C91ED006B52AC980B0034C6C
:00000001FF

View File

@@ -0,0 +1,129 @@
:10000000823060B5192901F0F6B518290FC906909C
:100010005DC90CB059A000B5102907C904B52AB0B4
:1000200005200B3AA00248B518290FC909900968A4
:1000300020013A48980960A8206933A53838E92199
:100040008538B002C639B138291FD04E683043C94F
:1000500040902F843A9829600901A8B138291FF0EF
:1000600031A53A29020920A8B138291FD02DA506AB
:10007000C902D00EB5102907C904900EB52AC9804F
:10008000B007B52A200B3A952A60B52AC98090F9A5
:10009000B0F0B52A20013A952A6068B52A1869801F
:1000A000952A60A503D01BA5002940F016A50EC90E
:1000B00004B010AD310829C0F0090A2A2A094020ED
:1000C000493760A9C1204937A606B5271522F0187F
:1000D000A940204937A53A8538A53B8539A9B0857F
:1000E0003AA606E8E820F23560A204A505F062B55C
:1000F00019305AB52B8538B52A48863E20143A491E
:10010000FF18690120B539A63EA53A18753095301B
:10011000A53B7510C9F09006B42A3002A9009510CD
:10012000B52B853868863E20113A49FF18690120B1
:10013000B539A63EA53A1875319531A53B7518C954
:10014000E89002A9E8C919B002A9199518CACA10FD
:100150009E60A503F00EA5004A90094A9007A511DC
:100160002903851160A900A609F004C6090904A69F
:1001700008F004C6080902A607F004C607090185AD
:1001800011608D800CA9808519851B851DA90085AE
:100190001120532DA602F640A506F00BC901F0214F
:1001A000C902F0244C8D3CA968850DA9398539A96F
:1001B000738538A21EA91B853E20B035A2164CAC13
:1001C00035A968850D4CA235A960850D20A235A9F9
:1001D00001851B851DA9398539A9908538A218A9E3
:1001E00017853E20B035A9D7852CA929852EA95879
:1001F000851AA9A0851CA93C85128514A904852D02
:10020000852F60B13A9138A900913AA020B13A9176
:1002100038A900913AA000E638E63AA53A291FC964
:100220001FD0E060A50DD042A506F03EC902D0283F
:10023000A505C901D034A202B5191006A204B5194A
:1002400030168519A9809519B5108510B51885182F
:10025000B52B852BB52A852AA204B5193008B52AF5
:100260003004B5103005CACA10F060A602B540C906
:1002700003B0F74C9431A503D020A50129E0D01597
:10028000B510C9E09013B52A100F200B3A952AA596
:1002900037C9309042A900850560B51930FBA50625
:1002A000C901D00AB510C9B59004C9BF900AB510EC
:1002B000C9DD90E5C9E7B0E1A51E186904D518901D
:1002C000D8A51649FF186901853E18651ED518B0D6
:1002D000C8B52AC98090C2E637D004A9808537E620
:1002E00007A5374A4AC9049002A903A8B52BC90833
:1002F000B005B96533952BA503D004A900F014A56A
:100300003E386A186901651E38F518853CA901B0A8
:1003100002A900853EB52BC9089004A902D01DA5ED
:100320003729FCC90C9004A900F011853DA53C209B
:10033000AD39C903A900B002A902053D053EA8B91F
:100340005933952AB5192901F002E605B519298016
:100350009519A98085364C382E1C642858285830A9
:10036000501070107005060607B5101869084A4A43
:100370004A491F8538A9048539A900853AB5181856
:10038000690F090749FF0A263A0A263A186538858F
:1003900038A53A6539853960A902853A8538A904B6
:1003A000853B8539A9BD8D62078D6707A21AA0001C
:1003B000A506C901D002A005843CA53A186920858C
:1003C0003A9002E63BA900A8913AA43C913ACAD0DF
:1003D000E9A516F079A51E49FF4A4A4AAACACAA544
:1003E0003818692085389002E639CAD0F2A51E294E
:1003F0000749FF853B1869B0A0009138A43C9138AB
:10040000A53818692085389002E639A51618653B8D
:10041000F03CC909901A38E908853BA9A89138A091
:10042000009138A5381869208538A53B9002E63937
:100430001869A0AAA538C960900BA539C907D005CD
:100440008A18691AAA8AA0009138A43C913860A938
:1004500080851985478548A9008540854185168591
:10046000038505850285048501A50ED014A50BF032
:1004700004C60BD00BC6061004A90285064C8231B7
:1004800060A90E8516A5170A0A851720C93620749B
:100490002DA5002910D0088D300C8D400CF010A532
:1004A0000EC902900A8D310CC90490038D410C2CA9
:1004B00080083022A50EC90490D138E904850EA920
:1004C000028503A902850BA9008520852185258544
:1004D0002685404C823170B3A50EC90290ADC60E80
:1004E000C60EA9018503A5172908F0D7A904851709
:1004F000D0D1A503C902B00160A900850DA60CA545
:10050000468646850CA61BA547851B8647A61DA5C6
:1005100048851D864820E631A000843BA949853ADC
:10052000A9278538A9048539A207A900853CB13AD5
:10053000853DB138C9BED00338B00118663CE638F5
:10054000CA10EFA53C913AA207C638263DB00AA9C9
:10055000009138A0209138D00CE60DA9BE9138A9A1
:10056000BFA0209138A000CA10DFE63AA53818696C
:100570000885389002E639291FC91FD0ABA5381865
:10058000692885389002E639A539C907909AA538B7
:10059000C9609094A504C901D007C502D0034C825C
:1005A0003160A9398539A9738538A21AA913853E06
:1005B000A904853B8A853A48A96020493768AACAB8
:1005C0003004E43EB0EA60A0B0C502D00EAAA50394
:1005D000F008A5002910D002A0008A843AAAD00A07
:1005E000A9608538A9048539D008A9068539A9A04C
:1005F0008538A900A0209138A0009138B525F016C3
:1006000029F0F0084A4A4A4A053A9138B525290F97
:10061000053AA0209138B52029F04A4A4A4A053ABD
:10062000A0409138B520290F053AA060913860A507
:1006300003F022A90E8516A9C120493720C936200A
:10064000742D2C2E08300EA50029108D110CF0EC05
:100650008D100CD0E7A90085378D110CA9C4204955
:1006600037A900A8913AA020913AA040913AA06001
:10067000913AA500098029E1850020C936A50FD04F
:1006800004A500D0F5A504C901D004A900850CA2D9
:1006900000860786088609E60520E239C920B002EF
:1006A000A920C9E09002A9E0951820E2392938C9AB
:1006B00020F0F71869A0952AA9809510A90295192C
:1006C000A904952BA980853660AD000CC9D8B0F976
:1006D000AD000CC9D890F9E600D002E6018D800C7F
:1006E000A516186915853EA51FC53EB004A63E9007
:1006F0001CC9E89004A2E7D014AA38E51EA820ADD2
:1007000039C902900AD006CA981002E8E8861E206D
:10071000E930209833A503F006A504290F09B08D10
:10072000A005A90020C735A901A603F004C503F060
:100730000320C73520E23920C62E20A3308D510C6E
:10074000ADC00830034CB13C60A200A000863C86DE
:100750003D182A263C2A263D4AAA2940D026BDD14A
:1007600037853ABDD237853B8A0A0A8538AD3008CD
:1007700029C04A4A4A4A4A0538AABDA9378538BD20
:10078000AA378539B138F020A63CF004A900F0065C
:10079000A63DF0020980A200813AA53A1869208599
:1007A0003A9002E63BC810DC60DB37E837F93709DE
:1007B000381338243839384D386138723887389BC7
:1007C00038AD38BE38D338E738FA380939183929FE
:1007D00039A104A104A104A1048404204849474884
:1007E0002053434F52452000424553544520505515
:1007F0004E4B545A41484C20004D45494C4C4555B0
:00000001FF

View File

@@ -0,0 +1,129 @@
:10000000522053434F5245200020205245434F5227
:100010004420003120434F494E203220504C41595A
:100020004552530031204D55454E5A4520322053FC
:100030005049454C4552202000203120504945432D
:10004000452032204A4F5545555253200031204615
:10005000494348412032204A554741444F52455375
:10006000003120434F494E20203120504C4159450A
:10007000520031204D55454E5A45202031205350D5
:1000800049454C45522000203120504945434520E8
:100090002031204A4F5545555220003120464943D2
:1000A00048412031204A554741444F5200322043B5
:1000B0004F494E53203120504C4159455200322077
:1000C0004D55454E5A454E203120535049454C45DB
:1000D0005220002032205049454345532031204AC8
:1000E0004F55455552200032204649434841532040
:1000F00031204A554741444F520020202020424F92
:100100004E555320464F52200020465245494553F4
:1001100020535049454C20005041525449452047F6
:100120005241545549544520005041525449444F7E
:100130002047524154495320003D202020202020B8
:1001400020202020202020202020202020202020AF
:10015000202020203D003E7F7F7F7F7F7F7F7F7F2D
:100160007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F9F
:100170007F3F003D3E3F3E3F3E3F3E3F3E3F3E3F96
:100180003E3F3E3F3E3F3E3F3E3F3E3F3E3F3D00C7
:100190003D3E3F3E3F3E3F202020203E3F3E3F3EF3
:1001A0003F202020203E3F3E3F3E3F3D001005497E
:1001B000FF18690160853CA900853D853A853BA50E
:1001C0003C1004A9FF853D4638B003D00E6018A549
:1001D0003A653C853AA53B653D853B063C263D4C52
:1001E000C739061326151002E613A5132902F006D7
:1001F000A51349018513A5150513D002E613A51310
:100200006038E940200B3A1869406049FF186901DD
:100210006038E9404A4AAABD1B3A60000D192531F1
:100220003C47515B636A71767A7E7F7F7F7E7A7608
:10023000716A635B51473C3125190D00F3E7DBCF51
:10024000C4B9AFA59D968F8A868281818182868A74
:100250008F969DA5AFB9C4CFDBE7F3000000000087
:10026000000000000000000000000000000000008E
:10027000000000000000000000000000000000007E
:10028000000000000000000000000000000000006E
:10029000000000000000000000000000000000005E
:1002A000000000000000000000000000000000004E
:1002B000000000000000000000000000000000003E
:1002C000000000000000000000000000000000002E
:1002D000000000000000000000000000000000001E
:1002E000000000000000000000000000000000000E
:1002F00000000000000000000000000000000000FE
:1003000000000000000000000000000000000000ED
:1003100000000000000000000000000000000000DD
:1003200000000000000000000000000000000000CD
:1003300000000000000000000000000000000000BD
:1003400000000000000000000000000000000000AD
:10035000000000000000000000000000000000009D
:10036000000000000000000000000000000000008D
:10037000000000000000000000000000000000007D
:10038000000000000000000000000000000000006D
:10039000000000000000000000000000000000005D
:1003A000000000000000000000000000000000004D
:1003B000000000000000000000000000000000003D
:1003C000000000000000000000000000000000002D
:1003D000000000000000000000000000000000001D
:1003E000000000000000000000000000000000000D
:1003F00000000000000000000000000000000000FD
:10040000488D000E58AD000C2920F00268408A4843
:10041000D8BABD0501C92C9045C944B041AD4008CA
:10042000A2012A26432A2642B542D00CB544F01830
:10043000D644D014E60FD01029FCC9F8D00AB54430
:10044000F002E60FA9209544CA10DDADC00829408E
:10045000D008854285438544854568AA68404C8D0F
:100460003C48D8AD000C49FF38E948B006A90085E2
:100470001FF0121006A9FF851FD00A851FAD0010BE
:1004800049FF2A261F8D500C8D600C6840D8A27F32
:100490009AA9008D500C8D600C8D700CAA9500E807
:1004A000D0FBA9FF851B851DADC0081004584C0367
:1004B0002C78A2008E500C8E600C8A1869049D0066
:1004C000041869019D00051869019D00061869015D
:1004D0009D00078D800CE8D0E18A1869045D000456
:1004E000D0338A1869055D0005D02A8A1869065D2F
:1004F0000006D0218A1869075D0007D0188D800C8E
:10050000E8D0D68A9D00049D00059D00069D000749
:10051000E8D0F1F032386AF023A2089002A20186F6
:1005200011A200A000E8D0FD8D800CC8D0F7861184
:10053000E8D0FD8D800CC8D0F718F0DA8D800C2C37
:10054000C00810F84C8D3CA90085118D310C8D41EF
:100550000C8D100CA9E4853AA904853BA92C853F94
:10056000A200A9048538A900853EA8A955513EC816
:10057000D0FB8D800CE63FC638D0F2DDA43EF03CC7
:100580005DA43E853C4A4A4A4A20AA3EC63A913A70
:10059000A53C20AA3EA020913AA000E63AA9928D5F
:1005A0006404A98F8D8404A98D8DA4048A09B09157
:1005B0003AA53A186960853A9002E63BE8E005D032
:1005C000A1A53BC904D006A53AC9E4F010A98291BF
:1005D0003AA020A981913AA040A984913AA9008526
:1005E0003CADC0088538AD2E088539AD8008853A08
:1005F000AD28082AAD2F086A29C0853BAD40088583
:100600003DAD000CC9FAB0F9AD000CC9FA90F9E69D
:10061000008D800C8D510CA51F20AA3E8DC005A514
:100620001F4A4A4A4A20AA3E8DA005A611A53CD0E1
:1006300011A500291FD0128A0A290FD002A901AAE8
:10064000D007A5002901D051AAADC00845382940DE
:10065000F002A281AD2E0845392980F002A282ADB8
:100660008008453A29C0F002A284AD28082AAD2F9F
:10067000086A29C0C53B853BF00D0A2A2AAAA910A1
:100680004ACA10FC0980AAAD4008453D29C0F002C5
:10069000A28886118A1002853C2CC00830034C01C8
:1006A0003E4C8D3C92D8D234AA16290F09B0C9BA53
:1006B000900338E9396000000000000000000000ED
:1006C000000000000000000000000000000000002A
:1006D000000000000000000000000000000000001A
:1006E000000000000000000000000000000000000A
:1006F00000000000000000000000000000000000FA
:1007000000000000000000000000000000000000E9
:1007100000000000000000000000000000000000D9
:1007200000000000000000000000000000000000C9
:1007300000000000000000000000000000000000B9
:1007400000000000000000000000000000000000A9
:100750000000000000000000000000000000000099
:100760000000000000000000000000000000000089
:100770000000000000000000000000000000000079
:100780000000000000000000000000000000000069
:100790000000000000000000000000000000000059
:1007A0000000000000000000000000000000000049
:1007B0000000000000000000000000000000000039
:1007C0000000000000000000000000000000000029
:1007D0000000000000000000000000000000000019
:1007E0000000000000000000000000000000000009
:1007F00000000000000000000000613C8D3C003C57
:00000001FF

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 28 KiB