diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/DebugSystem.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/DebugSystem.vhd
deleted file mode 100644
index 27f115c9..00000000
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/DebugSystem.vhd
+++ /dev/null
@@ -1,197 +0,0 @@
--- Z80, Monitor ROM, 4k RAM and two 16450 UARTs
--- that can be synthesized and used with
--- the NoICE debugger that can be found at
--- http://www.noicedebugger.com/
-
-library IEEE;
-use IEEE.std_logic_1164.all;
-
-entity DebugSystem is
- port(
- Reset_n : in std_logic;
- Clk : in std_logic;
- NMI_n : in std_logic;
- RXD0 : in std_logic;
- CTS0 : in std_logic;
- DSR0 : in std_logic;
- RI0 : in std_logic;
- DCD0 : in std_logic;
- RXD1 : in std_logic;
- CTS1 : in std_logic;
- DSR1 : in std_logic;
- RI1 : in std_logic;
- DCD1 : in std_logic;
- TXD0 : out std_logic;
- RTS0 : out std_logic;
- DTR0 : out std_logic;
- TXD1 : out std_logic;
- RTS1 : out std_logic;
- DTR1 : out std_logic;
-As : out std_logic_vector(15 downto 0);
-Ds : out std_logic_vector(7 downto 0);
-ROM_Ds : out std_logic_vector(7 downto 0)
- );
-end DebugSystem;
-
-architecture struct of DebugSystem is
-
- signal M1_n : std_logic;
- signal MREQ_n : std_logic;
- signal IORQ_n : std_logic;
- signal RD_n : std_logic;
- signal WR_n : std_logic;
- signal RFSH_n : std_logic;
- signal HALT_n : std_logic;
- signal WAIT_n : std_logic;
- signal INT_n : std_logic;
- signal RESET_s : std_logic;
- signal BUSRQ_n : std_logic;
- signal BUSAK_n : std_logic;
- signal A : std_logic_vector(15 downto 0);
- signal D : std_logic_vector(7 downto 0);
- signal ROM_D : std_logic_vector(7 downto 0);
- signal SRAM_D : std_logic_vector(7 downto 0);
- signal UART0_D : std_logic_vector(7 downto 0);
- signal UART1_D : std_logic_vector(7 downto 0);
- signal CPU_D : std_logic_vector(7 downto 0);
-
- signal Mirror : std_logic;
-
- signal IOWR_n : std_logic;
- signal RAMCS_n : std_logic;
- signal UART0CS_n : std_logic;
- signal UART1CS_n : std_logic;
-
- signal BaudOut0 : std_logic;
- signal BaudOut1 : std_logic;
-
-begin
- As <= A;
- Ds <= D;
- ROM_Ds <= ROM_D;
-
- Wait_n <= '1';
- BusRq_n <= '1';
- INT_n <= '1';
-
- process (Reset_n, Clk)
- begin
- if Reset_n = '0' then
- Reset_s <= '0';
- Mirror <= '0';
- elsif Clk'event and Clk = '1' then
- Reset_s <= '1';
- if IORQ_n = '0' and A(7 downto 4) = "1111" then
- Mirror <= D(0);
- end if;
- end if;
- end process;
-
- IOWR_n <= WR_n or IORQ_n;
- RAMCS_n <= (not Mirror and not A(15)) or MREQ_n;
- UART0CS_n <= '0' when IORQ_n = '0' and A(7 downto 3) = "00000" else '1';
- UART1CS_n <= '0' when IORQ_n = '0' and A(7 downto 3) = "10000" else '1';
-
--- CPU_D <=
--- SRAM_D when RAMCS_n = '0' else
--- UART0_D when UART0CS_n = '0' else
--- UART1_D when UART1CS_n = '0' else
--- ROM_D;
-
- CPU_D <=
- ROM_D;
-
- u0 : entity work.T80s
- generic map(Mode => 0, T2Write => 1, IOWait => 0)
--- generic map(Mode => 1, T2Write => 1, IOWait => 0)
- port map(
- RESET_n => RESET_s,
- CLK_n => Clk,
- WAIT_n => WAIT_n,
- INT_n => INT_n,
- NMI_n => NMI_n,
- BUSRQ_n => BUSRQ_n,
- M1_n => M1_n,
- MREQ_n => MREQ_n,
- IORQ_n => IORQ_n,
- RD_n => RD_n,
- WR_n => WR_n,
- RFSH_n => RFSH_n,
- HALT_n => HALT_n,
- BUSAK_n => BUSAK_n,
- A => A,
- DI => CPU_D,
- DO => D);
-
- -- u1 : entity work.MonZ80
- -- port map(
- -- Clk => Clk,
- -- A => A(10 downto 0),
- -- D => ROM_D);
-
- u1 : entity work.bagmanrom
- port map(
- clock => not Clk,
- address => A(14 downto 0),
- q => ROM_D);
-
- u2 : entity work.SSRAM
- generic map(
- AddrWidth => 12)
- port map(
- Clk => Clk,
- CE_n => RAMCS_n,
- WE_n => WR_n,
- A => A(11 downto 0),
- DIn => D,
- DOut => SRAM_D);
-
- u3 : entity work.T16450
- port map(
- MR_n => Reset_s,
- XIn => Clk,
- RClk => BaudOut0,
- CS_n => UART0CS_n,
- Rd_n => RD_n,
- Wr_n => IOWR_n,
- A => A(2 downto 0),
- D_In => D,
- D_Out => UART0_D,
- SIn => RXD0,
- CTS_n => CTS0,
- DSR_n => DSR0,
- RI_n => RI0,
- DCD_n => DCD0,
- SOut => TXD0,
- RTS_n => RTS0,
- DTR_n => DTR0,
- OUT1_n => open,
- OUT2_n => open,
- BaudOut => BaudOut0,
- Intr => open);
-
- u4 : entity work.T16450
- port map(
- MR_n => Reset_s,
- XIn => Clk,
- RClk => BaudOut1,
- CS_n => UART1CS_n,
- Rd_n => RD_n,
- Wr_n => IOWR_n,
- A => A(2 downto 0),
- D_In => D,
- D_Out => UART1_D,
- SIn => RXD1,
- CTS_n => CTS1,
- DSR_n => DSR1,
- RI_n => RI1,
- DCD_n => DCD1,
- SOut => TXD1,
- RTS_n => RTS1,
- DTR_n => DTR1,
- OUT1_n => open,
- OUT2_n => open,
- BaudOut => BaudOut1,
- Intr => open);
-
-end;
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/DebugSystemXR.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/DebugSystemXR.vhd
deleted file mode 100644
index ca8fa877..00000000
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/DebugSystemXR.vhd
+++ /dev/null
@@ -1,185 +0,0 @@
--- Z80, Monitor ROM, external SRAM interface and two 16450 UARTs
--- that can be synthesized and used with
--- the NoICE debugger that can be found at
--- http://www.noicedebugger.com/
-
-library IEEE;
-use IEEE.std_logic_1164.all;
-
-entity DebugSystemXR is
- port(
- Reset_n : in std_logic;
- Clk : in std_logic;
- NMI_n : in std_logic;
- OE_n : out std_logic;
- WE_n : out std_logic;
- RAMCS_n : out std_logic;
- ROMCS_n : out std_logic;
- PGM_n : out std_logic;
- A : out std_logic_vector(16 downto 0);
- D : inout std_logic_vector(7 downto 0);
- RXD0 : in std_logic;
- CTS0 : in std_logic;
- DSR0 : in std_logic;
- RI0 : in std_logic;
- DCD0 : in std_logic;
- RXD1 : in std_logic;
- CTS1 : in std_logic;
- DSR1 : in std_logic;
- RI1 : in std_logic;
- DCD1 : in std_logic;
- TXD0 : out std_logic;
- RTS0 : out std_logic;
- DTR0 : out std_logic;
- TXD1 : out std_logic;
- RTS1 : out std_logic;
- DTR1 : out std_logic
- );
-end entity DebugSystemXR;
-
-architecture struct of DebugSystemXR is
-
- signal M1_n : std_logic;
- signal MREQ_n : std_logic;
- signal IORQ_n : std_logic;
- signal RD_n : std_logic;
- signal WR_n : std_logic;
- signal RFSH_n : std_logic;
- signal HALT_n : std_logic;
- signal WAIT_n : std_logic;
- signal INT_n : std_logic;
- signal RESET_s : std_logic;
- signal BUSRQ_n : std_logic;
- signal BUSAK_n : std_logic;
- signal A_i : std_logic_vector(15 downto 0);
- signal D_i : std_logic_vector(7 downto 0);
- signal ROM_D : std_logic_vector(7 downto 0);
- signal UART0_D : std_logic_vector(7 downto 0);
- signal UART1_D : std_logic_vector(7 downto 0);
- signal CPU_D : std_logic_vector(7 downto 0);
-
- signal Mirror : std_logic;
-
- signal IOWR_n : std_logic;
- signal RAMCS_n_i : std_logic;
- signal UART0CS_n : std_logic;
- signal UART1CS_n : std_logic;
-
- signal BaudOut0 : std_logic;
- signal BaudOut1 : std_logic;
-
-begin
-
- Wait_n <= '1';
- BusRq_n <= '1';
- INT_n <= '1';
-
- OE_n <= RD_n;
- WE_n <= WR_n;
- RAMCS_n <= RAMCS_n_i;
- ROMCS_n <= '1';
- PGM_n <= '1';
- A(14 downto 0) <= A_i(14 downto 0);
- A(16 downto 15) <= "00";
- D <= D_i when WR_n = '0' else "ZZZZZZZZ";
-
- process (Reset_n, Clk)
- begin
- if Reset_n = '0' then
- Reset_s <= '0';
- Mirror <= '0';
- elsif Clk'event and Clk = '1' then
- Reset_s <= '1';
- if IORQ_n = '0' and A_i(7 downto 4) = "1111" then
- Mirror <= D_i(0);
- end if;
- end if;
- end process;
-
- IOWR_n <= WR_n or IORQ_n;
- RAMCS_n_i <= (not Mirror and not A_i(15)) or MREQ_n;
- UART0CS_n <= '0' when IORQ_n = '0' and A_i(7 downto 3) = "00000" else '1';
- UART1CS_n <= '0' when IORQ_n = '0' and A_i(7 downto 3) = "10000" else '1';
-
- CPU_D <=
- D when RAMCS_n_i = '0' else
- UART0_D when UART0CS_n = '0' else
- UART1_D when UART1CS_n = '0' else
- ROM_D;
-
- u0 : entity work.T80s
- generic map(Mode => 1, T2Write => 1, IOWait => 0)
- port map(
- RESET_n => RESET_s,
- CLK_n => Clk,
- WAIT_n => WAIT_n,
- INT_n => INT_n,
- NMI_n => NMI_n,
- BUSRQ_n => BUSRQ_n,
- M1_n => M1_n,
- MREQ_n => MREQ_n,
- IORQ_n => IORQ_n,
- RD_n => RD_n,
- WR_n => WR_n,
- RFSH_n => RFSH_n,
- HALT_n => HALT_n,
- BUSAK_n => BUSAK_n,
- A => A_i,
- DI => CPU_D,
- DO => D_i);
-
- u1 : entity work.MonZ80
- port map(
- Clk => Clk,
- A => A_i(10 downto 0),
- D => ROM_D);
-
- u3 : entity work.T16450
- port map(
- MR_n => Reset_s,
- XIn => Clk,
- RClk => BaudOut0,
- CS_n => UART0CS_n,
- Rd_n => RD_n,
- Wr_n => IOWR_n,
- A => A_i(2 downto 0),
- D_In => D_i,
- D_Out => UART0_D,
- SIn => RXD0,
- CTS_n => CTS0,
- DSR_n => DSR0,
- RI_n => RI0,
- DCD_n => DCD0,
- SOut => TXD0,
- RTS_n => RTS0,
- DTR_n => DTR0,
- OUT1_n => open,
- OUT2_n => open,
- BaudOut => BaudOut0,
- Intr => open);
-
- u4 : entity work.T16450
- port map(
- MR_n => Reset_s,
- XIn => Clk,
- RClk => BaudOut1,
- CS_n => UART1CS_n,
- Rd_n => RD_n,
- Wr_n => IOWR_n,
- A => A_i(2 downto 0),
- D_In => D_i,
- D_Out => UART1_D,
- SIn => RXD1,
- CTS_n => CTS1,
- DSR_n => DSR1,
- RI_n => RI1,
- DCD_n => DCD1,
- SOut => TXD1,
- RTS_n => RTS1,
- DTR_n => DTR1,
- OUT1_n => open,
- OUT2_n => open,
- BaudOut => BaudOut1,
- Intr => open);
-
-end;
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/keyboard.v b/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/keyboard.v
deleted file mode 100644
index 70c8a56e..00000000
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/keyboard.v
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-module keyboard
-(
- input clk,
- input reset,
- input ps2_kbd_clk,
- input ps2_kbd_data,
-
- output reg[9:0] joystick
-);
-
-reg [11:0] shift_reg = 12'hFFF;
-wire[11:0] kdata = {ps2_kbd_data,shift_reg[11:1]};
-wire [7:0] kcode = kdata[9:2];
-reg release_btn = 0;
-
-reg [7:0] code;
-reg input_strobe = 0;
-
-always @(negedge clk) begin
- reg old_reset = 0;
-
- old_reset <= reset;
-
- if(~old_reset & reset)begin
- joystick <= 0;
- end
-
- if(input_strobe) begin
- case(code)
- 'h16: joystick[1] <= ~release_btn; // 1
- 'h1E: joystick[2] <= ~release_btn; // 2
-// 'h26: joystick[2] <= ~release_btn;
-// 'h25: joystick[2] <= ~release_btn;
- 'h75: joystick[4] <= ~release_btn; // arrow up
- 'h72: joystick[5] <= ~release_btn; // arrow down
- 'h6B: joystick[6] <= ~release_btn; // arrow left
- 'h74: joystick[7] <= ~release_btn; // arrow right
-
- 'h29: joystick[0] <= ~release_btn; // Space
- 'h11: joystick[8] <= ~release_btn; // Left Alt
- 'h0d: joystick[9] <= ~release_btn; // Tab
- 'h76: joystick[3] <= ~release_btn; // Escape
- endcase
- end
-end
-
-always @(posedge clk) begin
- reg [3:0] prev_clk = 0;
- reg old_reset = 0;
- reg action = 0;
-
- old_reset <= reset;
- input_strobe <= 0;
-
- if(~old_reset & reset)begin
- prev_clk <= 0;
- shift_reg <= 12'hFFF;
- end else begin
- prev_clk <= {ps2_kbd_clk,prev_clk[3:1]};
- if(prev_clk == 1) begin
- if (kdata[11] & ^kdata[10:2] & ~kdata[1] & kdata[0]) begin
- shift_reg <= 12'hFFF;
- if (kcode == 8'he0) ;
- // Extended key code follows
- else if (kcode == 8'hf0)
- // Release code follows
- action <= 1;
- else begin
- // Cancel extended/release flags for next time
- action <= 0;
- release_btn <= action;
- code <= kcode;
- input_strobe <= 1;
- end
- end else begin
- shift_reg <= kdata;
- end
- end
- end
-end
-endmodule
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/mist_pll_12M_14M.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/mist_pll_12M_14M.vhd
deleted file mode 100644
index 4865e696..00000000
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/mist_pll_12M_14M.vhd
+++ /dev/null
@@ -1,424 +0,0 @@
--- megafunction wizard: %ALTPLL%
--- GENERATION: STANDARD
--- VERSION: WM1.0
--- MODULE: altpll
-
--- ============================================================
--- File Name: mist_pll_12M_14M.vhd
--- Megafunction Name(s):
--- altpll
---
--- Simulation Library Files(s):
--- altera_mf
--- ============================================================
--- ************************************************************
--- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
---
--- 13.1.0 Build 162 10/23/2013 SJ Web Edition
--- ************************************************************
-
-
---Copyright (C) 1991-2013 Altera Corporation
---Your use of Altera Corporation's design tools, logic functions
---and other software and tools, and its AMPP partner logic
---functions, and any output files from any of the foregoing
---(including device programming or simulation files), and any
---associated documentation or information are expressly subject
---to the terms and conditions of the Altera Program License
---Subscription Agreement, Altera MegaCore Function License
---Agreement, or other applicable license agreement, including,
---without limitation, that your use is for the sole purpose of
---programming logic devices manufactured by Altera and sold by
---Altera or its authorized distributors. Please refer to the
---applicable agreement for further details.
-
-
-LIBRARY ieee;
-USE ieee.std_logic_1164.all;
-
-LIBRARY altera_mf;
-USE altera_mf.all;
-
-ENTITY mist_pll_12M_14M IS
- PORT
- (
- inclk0 : IN STD_LOGIC := '0';
- c0 : OUT STD_LOGIC ;
- c1 : OUT STD_LOGIC ;
- c2 : OUT STD_LOGIC ;
- locked : OUT STD_LOGIC
- );
-END mist_pll_12M_14M;
-
-
-ARCHITECTURE SYN OF mist_pll_12m_14m IS
-
- SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0);
- SIGNAL sub_wire1 : STD_LOGIC ;
- SIGNAL sub_wire2 : STD_LOGIC ;
- SIGNAL sub_wire3 : STD_LOGIC ;
- SIGNAL sub_wire4 : STD_LOGIC ;
- SIGNAL sub_wire5 : STD_LOGIC ;
- SIGNAL sub_wire6 : STD_LOGIC_VECTOR (1 DOWNTO 0);
- SIGNAL sub_wire7_bv : BIT_VECTOR (0 DOWNTO 0);
- SIGNAL sub_wire7 : STD_LOGIC_VECTOR (0 DOWNTO 0);
-
-
-
- COMPONENT altpll
- GENERIC (
- bandwidth_type : STRING;
- clk0_divide_by : NATURAL;
- clk0_duty_cycle : NATURAL;
- clk0_multiply_by : NATURAL;
- clk0_phase_shift : STRING;
- clk1_divide_by : NATURAL;
- clk1_duty_cycle : NATURAL;
- clk1_multiply_by : NATURAL;
- clk1_phase_shift : STRING;
- clk2_divide_by : NATURAL;
- clk2_duty_cycle : NATURAL;
- clk2_multiply_by : NATURAL;
- clk2_phase_shift : STRING;
- compensate_clock : STRING;
- inclk0_input_frequency : NATURAL;
- intended_device_family : STRING;
- lpm_hint : STRING;
- lpm_type : STRING;
- operation_mode : STRING;
- pll_type : STRING;
- port_activeclock : STRING;
- port_areset : STRING;
- port_clkbad0 : STRING;
- port_clkbad1 : STRING;
- port_clkloss : STRING;
- port_clkswitch : STRING;
- port_configupdate : STRING;
- port_fbin : STRING;
- port_inclk0 : STRING;
- port_inclk1 : STRING;
- port_locked : STRING;
- port_pfdena : STRING;
- port_phasecounterselect : STRING;
- port_phasedone : STRING;
- port_phasestep : STRING;
- port_phaseupdown : STRING;
- port_pllena : STRING;
- port_scanaclr : STRING;
- port_scanclk : STRING;
- port_scanclkena : STRING;
- port_scandata : STRING;
- port_scandataout : STRING;
- port_scandone : STRING;
- port_scanread : STRING;
- port_scanwrite : STRING;
- port_clk0 : STRING;
- port_clk1 : STRING;
- port_clk2 : STRING;
- port_clk3 : STRING;
- port_clk4 : STRING;
- port_clk5 : STRING;
- port_clkena0 : STRING;
- port_clkena1 : STRING;
- port_clkena2 : STRING;
- port_clkena3 : STRING;
- port_clkena4 : STRING;
- port_clkena5 : STRING;
- port_extclk0 : STRING;
- port_extclk1 : STRING;
- port_extclk2 : STRING;
- port_extclk3 : STRING;
- self_reset_on_loss_lock : STRING;
- width_clock : NATURAL
- );
- PORT (
- clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0);
- inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
- locked : OUT STD_LOGIC
- );
- END COMPONENT;
-
-BEGIN
- sub_wire7_bv(0 DOWNTO 0) <= "0";
- sub_wire7 <= To_stdlogicvector(sub_wire7_bv);
- sub_wire4 <= sub_wire0(2);
- sub_wire3 <= sub_wire0(0);
- sub_wire1 <= sub_wire0(1);
- c1 <= sub_wire1;
- locked <= sub_wire2;
- c0 <= sub_wire3;
- c2 <= sub_wire4;
- sub_wire5 <= inclk0;
- sub_wire6 <= sub_wire7(0 DOWNTO 0) & sub_wire5;
-
- altpll_component : altpll
- GENERIC MAP (
- bandwidth_type => "AUTO",
- clk0_divide_by => 420,
- clk0_duty_cycle => 50,
- clk0_multiply_by => 191,
- clk0_phase_shift => "0",
- clk1_divide_by => 360,
- clk1_duty_cycle => 50,
- clk1_multiply_by => 191,
- clk1_phase_shift => "0",
- clk2_divide_by => 105,
- clk2_duty_cycle => 50,
- clk2_multiply_by => 191,
- clk2_phase_shift => "0",
- compensate_clock => "CLK0",
- inclk0_input_frequency => 37037,
- intended_device_family => "Cyclone III",
- lpm_hint => "CBX_MODULE_PREFIX=mist_pll_12M_14M",
- lpm_type => "altpll",
- operation_mode => "NORMAL",
- pll_type => "AUTO",
- port_activeclock => "PORT_UNUSED",
- port_areset => "PORT_UNUSED",
- port_clkbad0 => "PORT_UNUSED",
- port_clkbad1 => "PORT_UNUSED",
- port_clkloss => "PORT_UNUSED",
- port_clkswitch => "PORT_UNUSED",
- port_configupdate => "PORT_UNUSED",
- port_fbin => "PORT_UNUSED",
- port_inclk0 => "PORT_USED",
- port_inclk1 => "PORT_UNUSED",
- port_locked => "PORT_USED",
- port_pfdena => "PORT_UNUSED",
- port_phasecounterselect => "PORT_UNUSED",
- port_phasedone => "PORT_UNUSED",
- port_phasestep => "PORT_UNUSED",
- port_phaseupdown => "PORT_UNUSED",
- port_pllena => "PORT_UNUSED",
- port_scanaclr => "PORT_UNUSED",
- port_scanclk => "PORT_UNUSED",
- port_scanclkena => "PORT_UNUSED",
- port_scandata => "PORT_UNUSED",
- port_scandataout => "PORT_UNUSED",
- port_scandone => "PORT_UNUSED",
- port_scanread => "PORT_UNUSED",
- port_scanwrite => "PORT_UNUSED",
- port_clk0 => "PORT_USED",
- port_clk1 => "PORT_USED",
- port_clk2 => "PORT_USED",
- port_clk3 => "PORT_UNUSED",
- port_clk4 => "PORT_UNUSED",
- port_clk5 => "PORT_UNUSED",
- port_clkena0 => "PORT_UNUSED",
- port_clkena1 => "PORT_UNUSED",
- port_clkena2 => "PORT_UNUSED",
- port_clkena3 => "PORT_UNUSED",
- port_clkena4 => "PORT_UNUSED",
- port_clkena5 => "PORT_UNUSED",
- port_extclk0 => "PORT_UNUSED",
- port_extclk1 => "PORT_UNUSED",
- port_extclk2 => "PORT_UNUSED",
- port_extclk3 => "PORT_UNUSED",
- self_reset_on_loss_lock => "OFF",
- width_clock => 5
- )
- PORT MAP (
- inclk => sub_wire6,
- clk => sub_wire0,
- locked => sub_wire2
- );
-
-
-
-END SYN;
-
--- ============================================================
--- CNX file retrieval info
--- ============================================================
--- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0"
--- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000"
--- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1"
--- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz"
--- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low"
--- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1"
--- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0"
--- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0"
--- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0"
--- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0"
--- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0"
--- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0"
--- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0"
--- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0"
--- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0"
--- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8"
--- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "420"
--- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "360"
--- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "105"
--- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000"
--- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000"
--- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000"
--- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "12.278571"
--- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "14.325000"
--- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "49.114285"
--- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0"
--- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0"
--- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1"
--- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0"
--- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0"
--- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575"
--- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1"
--- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "27.000"
--- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz"
--- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000"
--- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1"
--- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1"
--- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz"
--- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III"
--- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1"
--- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1"
--- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1"
--- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available"
--- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0"
--- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg"
--- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg"
--- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "ps"
--- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any"
--- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0"
--- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0"
--- Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0"
--- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "191"
--- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "191"
--- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "191"
--- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1"
--- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "12.28800000"
--- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "14.31800000"
--- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "49.15200000"
--- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0"
--- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0"
--- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0"
--- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz"
--- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz"
--- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz"
--- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1"
--- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0"
--- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000"
--- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000"
--- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000"
--- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0"
--- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg"
--- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg"
--- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "ps"
--- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0"
--- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0"
--- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1"
--- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0"
--- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0"
--- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0"
--- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0"
--- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0"
--- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0"
--- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0"
--- Retrieval info: PRIVATE: RECONFIG_FILE STRING "mist_pll_12M_14M.mif"
--- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0"
--- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1"
--- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0"
--- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0"
--- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0"
--- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000"
--- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz"
--- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500"
--- Retrieval info: PRIVATE: SPREAD_USE STRING "0"
--- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0"
--- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1"
--- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1"
--- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1"
--- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1"
--- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1"
--- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
--- Retrieval info: PRIVATE: USE_CLK0 STRING "1"
--- Retrieval info: PRIVATE: USE_CLK1 STRING "1"
--- Retrieval info: PRIVATE: USE_CLK2 STRING "1"
--- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0"
--- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0"
--- Retrieval info: PRIVATE: USE_CLKENA2 STRING "0"
--- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0"
--- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0"
--- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
--- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO"
--- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "420"
--- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50"
--- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "191"
--- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0"
--- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "360"
--- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50"
--- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "191"
--- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0"
--- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "105"
--- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50"
--- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "191"
--- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0"
--- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0"
--- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "37037"
--- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III"
--- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll"
--- Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL"
--- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO"
--- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED"
--- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED"
--- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED"
--- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED"
--- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED"
--- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED"
--- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF"
--- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5"
--- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]"
--- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]"
--- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0"
--- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1"
--- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2"
--- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0"
--- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked"
--- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0
--- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0
--- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0
--- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1
--- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2
--- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0
--- Retrieval info: GEN_FILE: TYPE_NORMAL mist_pll_12M_14M.vhd TRUE
--- Retrieval info: GEN_FILE: TYPE_NORMAL mist_pll_12M_14M.ppf TRUE
--- Retrieval info: GEN_FILE: TYPE_NORMAL mist_pll_12M_14M.inc FALSE
--- Retrieval info: GEN_FILE: TYPE_NORMAL mist_pll_12M_14M.cmp FALSE
--- Retrieval info: GEN_FILE: TYPE_NORMAL mist_pll_12M_14M.bsf FALSE
--- Retrieval info: GEN_FILE: TYPE_NORMAL mist_pll_12M_14M_inst.vhd FALSE
--- Retrieval info: LIB_FILE: altera_mf
--- Retrieval info: CBX_MODULE_PREFIX: ON
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/video_mixer2.sv b/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/video_mixer2.sv
deleted file mode 100644
index 04cfd4ba..00000000
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/video_mixer2.sv
+++ /dev/null
@@ -1,242 +0,0 @@
-//
-//
-// Copyright (c) 2017 Sorgelig
-//
-// This program is GPL Licensed. See COPYING for the full license.
-//
-//
-////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-`timescale 1ns / 1ps
-
-//
-// LINE_LENGTH: Length of display line in pixels
-// Usually it's length from HSync to HSync.
-// May be less if line_start is used.
-//
-// HALF_DEPTH: If =1 then color dept is 3 bits per component
-// For half depth 6 bits monochrome is available with
-// mono signal enabled and color = {G, R}
-
-module video_mixer
-#(
- parameter LINE_LENGTH = 768,
- parameter HALF_DEPTH = 0,
-
- parameter OSD_COLOR = 3'd4,
- parameter OSD_X_OFFSET = 10'd0,
- parameter OSD_Y_OFFSET = 10'd0
-)
-(
- // master clock
- // it should be multiple by (ce_pix*4).
- input clk_sys,
-
- // Pixel clock or clock_enable (both are accepted).
- input ce_pix,
-
- // Some systems have multiple resolutions.
- // ce_pix_actual should match ce_pix where every second or fourth pulse is enabled,
- // thus half or qurter resolutions can be used without brake video sync while switching resolutions.
- // For fixed single resolution (or when video sync stability isn't required) ce_pix_actual = ce_pix.
- input ce_pix_actual,
-
- // OSD SPI interface
- input SPI_SCK,
- input SPI_SS3,
- input SPI_DI,
-
- // scanlines (00-none 01-25% 10-50% 11-75%)
- input [1:0] scanlines,
-
- // 0 = HVSync 31KHz, 1 = CSync 15KHz
- input scandoubler_disable,
-
- // High quality 2x scaling
- input hq2x,
-
- // YPbPr always uses composite sync
- input ypbpr,
-
- // 0 = 16-240 range. 1 = 0-255 range. (only for YPbPr color space)
- input ypbpr_full,
-
- // color
- input [DWIDTH:0] R,
- input [DWIDTH:0] G,
- input [DWIDTH:0] B,
-
- // Monochrome mode (for HALF_DEPTH only)
- input mono,
-
- // interlace sync. Positive pulses.
- input HSync,
- input VSync,
-
- // Falling of this signal means start of informative part of line.
- // It can be horizontal blank signal.
- // This signal can be used to reduce amount of required FPGA RAM for HQ2x scan doubler
- // If FPGA RAM is not an issue, then simply set it to 0 for whole line processing.
- // Keep in mind: due to algo first and last pixels of line should be black to avoid side artefacts.
- // Thus, if blank signal is used to reduce the line, make sure to feed at least one black (or paper) pixel
- // before first informative pixel.
- input line_start,
-
- // MiST video output signals
- output [5:0] VGA_R,
- output [5:0] VGA_G,
- output [5:0] VGA_B,
- output VGA_VS,
- output VGA_HS
-);
-
-localparam DWIDTH = HALF_DEPTH ? 2 : 5;
-
-wire [DWIDTH:0] R_sd;
-wire [DWIDTH:0] G_sd;
-wire [DWIDTH:0] B_sd;
-wire hs_sd, vs_sd;
-
-scandoubler #(.LENGTH(LINE_LENGTH), .HALF_DEPTH(HALF_DEPTH)) scandoubler
-(
- .*,
- .hs_in(HSync),
- .vs_in(VSync),
- .r_in(R),
- .g_in(G),
- .b_in(B),
-
- .hs_out(hs_sd),
- .vs_out(vs_sd),
- .r_out(R_sd),
- .g_out(G_sd),
- .b_out(B_sd)
-);
-
-wire [DWIDTH:0] rt = (scandoubler_disable ? R : R_sd);
-wire [DWIDTH:0] gt = (scandoubler_disable ? G : G_sd);
-wire [DWIDTH:0] bt = (scandoubler_disable ? B : B_sd);
-
-generate
- if(HALF_DEPTH) begin
- wire [5:0] r = mono ? {gt,rt} : {rt,rt};
- wire [5:0] g = mono ? {gt,rt} : {gt,gt};
- wire [5:0] b = mono ? {gt,rt} : {bt,bt};
- end else begin
- wire [5:0] r = rt;
- wire [5:0] g = gt;
- wire [5:0] b = bt;
- end
-endgenerate
-
-wire hs = (scandoubler_disable ? HSync : hs_sd);
-wire vs = (scandoubler_disable ? VSync : vs_sd);
-
-reg scanline = 0;
-always @(posedge clk_sys) begin
- reg old_hs, old_vs;
-
- old_hs <= hs;
- old_vs <= vs;
-
- if(old_hs && ~hs) scanline <= ~scanline;
- if(old_vs && ~vs) scanline <= 0;
-end
-
-wire [5:0] r_out, g_out, b_out;
-always @(*) begin
- case(scanlines & {scanline, scanline})
- 1: begin // reduce 25% = 1/2 + 1/4
- r_out = {1'b0, r[5:1]} + {2'b00, r[5:2]};
- g_out = {1'b0, g[5:1]} + {2'b00, g[5:2]};
- b_out = {1'b0, b[5:1]} + {2'b00, b[5:2]};
- end
-
- 2: begin // reduce 50% = 1/2
- r_out = {1'b0, r[5:1]};
- g_out = {1'b0, g[5:1]};
- b_out = {1'b0, b[5:1]};
- end
-
- 3: begin // reduce 75% = 1/4
- r_out = {2'b00, r[5:2]};
- g_out = {2'b00, g[5:2]};
- b_out = {2'b00, b[5:2]};
- end
-
- default: begin
- r_out = r;
- g_out = g;
- b_out = b;
- end
- endcase
-end
-
-wire [5:0] red, green, blue;
-osd #(OSD_X_OFFSET, OSD_Y_OFFSET, OSD_COLOR) osd
-(
- .*,
-
- .R_in(r_out),
- .G_in(g_out),
- .B_in(b_out),
- .HSync(hs),
- .VSync(vs),
-
- .R_out(red),
- .G_out(green),
- .B_out(blue)
-);
-
-wire [5:0] yuv_full[225] = '{
- 6'd0, 6'd0, 6'd0, 6'd0, 6'd1, 6'd1, 6'd1, 6'd1,
- 6'd2, 6'd2, 6'd2, 6'd3, 6'd3, 6'd3, 6'd3, 6'd4,
- 6'd4, 6'd4, 6'd5, 6'd5, 6'd5, 6'd5, 6'd6, 6'd6,
- 6'd6, 6'd7, 6'd7, 6'd7, 6'd7, 6'd8, 6'd8, 6'd8,
- 6'd9, 6'd9, 6'd9, 6'd9, 6'd10, 6'd10, 6'd10, 6'd11,
- 6'd11, 6'd11, 6'd11, 6'd12, 6'd12, 6'd12, 6'd13, 6'd13,
- 6'd13, 6'd13, 6'd14, 6'd14, 6'd14, 6'd15, 6'd15, 6'd15,
- 6'd15, 6'd16, 6'd16, 6'd16, 6'd17, 6'd17, 6'd17, 6'd17,
- 6'd18, 6'd18, 6'd18, 6'd19, 6'd19, 6'd19, 6'd19, 6'd20,
- 6'd20, 6'd20, 6'd21, 6'd21, 6'd21, 6'd21, 6'd22, 6'd22,
- 6'd22, 6'd23, 6'd23, 6'd23, 6'd23, 6'd24, 6'd24, 6'd24,
- 6'd25, 6'd25, 6'd25, 6'd25, 6'd26, 6'd26, 6'd26, 6'd27,
- 6'd27, 6'd27, 6'd27, 6'd28, 6'd28, 6'd28, 6'd29, 6'd29,
- 6'd29, 6'd29, 6'd30, 6'd30, 6'd30, 6'd31, 6'd31, 6'd31,
- 6'd31, 6'd32, 6'd32, 6'd32, 6'd33, 6'd33, 6'd33, 6'd33,
- 6'd34, 6'd34, 6'd34, 6'd35, 6'd35, 6'd35, 6'd35, 6'd36,
- 6'd36, 6'd36, 6'd36, 6'd37, 6'd37, 6'd37, 6'd38, 6'd38,
- 6'd38, 6'd38, 6'd39, 6'd39, 6'd39, 6'd40, 6'd40, 6'd40,
- 6'd40, 6'd41, 6'd41, 6'd41, 6'd42, 6'd42, 6'd42, 6'd42,
- 6'd43, 6'd43, 6'd43, 6'd44, 6'd44, 6'd44, 6'd44, 6'd45,
- 6'd45, 6'd45, 6'd46, 6'd46, 6'd46, 6'd46, 6'd47, 6'd47,
- 6'd47, 6'd48, 6'd48, 6'd48, 6'd48, 6'd49, 6'd49, 6'd49,
- 6'd50, 6'd50, 6'd50, 6'd50, 6'd51, 6'd51, 6'd51, 6'd52,
- 6'd52, 6'd52, 6'd52, 6'd53, 6'd53, 6'd53, 6'd54, 6'd54,
- 6'd54, 6'd54, 6'd55, 6'd55, 6'd55, 6'd56, 6'd56, 6'd56,
- 6'd56, 6'd57, 6'd57, 6'd57, 6'd58, 6'd58, 6'd58, 6'd58,
- 6'd59, 6'd59, 6'd59, 6'd60, 6'd60, 6'd60, 6'd60, 6'd61,
- 6'd61, 6'd61, 6'd62, 6'd62, 6'd62, 6'd62, 6'd63, 6'd63,
- 6'd63
-};
-
-// http://marsee101.blog19.fc2.com/blog-entry-2311.html
-// Y = 16 + 0.257*R + 0.504*G + 0.098*B (Y = 0.299*R + 0.587*G + 0.114*B)
-// Pb = 128 - 0.148*R - 0.291*G + 0.439*B (Pb = -0.169*R - 0.331*G + 0.500*B)
-// Pr = 128 + 0.439*R - 0.368*G - 0.071*B (Pr = 0.500*R - 0.419*G - 0.081*B)
-
-wire [18:0] y_8 = 19'd04096 + ({red, 8'd0} + {red, 3'd0}) + ({green, 9'd0} + {green, 2'd0}) + ({blue, 6'd0} + {blue, 5'd0} + {blue, 2'd0});
-wire [18:0] pb_8 = 19'd32768 - ({red, 7'd0} + {red, 4'd0} + {red, 3'd0}) - ({green, 8'd0} + {green, 5'd0} + {green, 3'd0}) + ({blue, 8'd0} + {blue, 7'd0} + {blue, 6'd0});
-wire [18:0] pr_8 = 19'd32768 + ({red, 8'd0} + {red, 7'd0} + {red, 6'd0}) - ({green, 8'd0} + {green, 6'd0} + {green, 5'd0} + {green, 4'd0} + {green, 3'd0}) - ({blue, 6'd0} + {blue , 3'd0});
-
-wire [7:0] y = ( y_8[17:8] < 16) ? 8'd16 : ( y_8[17:8] > 235) ? 8'd235 : y_8[15:8];
-wire [7:0] pb = (pb_8[17:8] < 16) ? 8'd16 : (pb_8[17:8] > 240) ? 8'd240 : pb_8[15:8];
-wire [7:0] pr = (pr_8[17:8] < 16) ? 8'd16 : (pr_8[17:8] > 240) ? 8'd240 : pr_8[15:8];
-
-assign VGA_R = ypbpr ? (ypbpr_full ? yuv_full[pr-8'd16] : pr[7:2]) : red;
-assign VGA_G = ypbpr ? (ypbpr_full ? yuv_full[y -8'd16] : y[7:2]) : green;
-assign VGA_B = ypbpr ? (ypbpr_full ? yuv_full[pb-8'd16] : pb[7:2]) : blue;
-assign VGA_VS = (scandoubler_disable | ypbpr) ? 1'b1 : ~vs_sd;
-assign VGA_HS = scandoubler_disable ? ~(HSync ^ VSync) : ypbpr ? ~(hs_sd ^ vs_sd) : ~hs_sd;
-
-endmodule
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/README.txt b/Arcade_MiST/Konami Classic/Pooyan_MiST/README.txt
index 2bc84c26..8274ab71 100644
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/README.txt
+++ b/Arcade_MiST/Konami Classic/Pooyan_MiST/README.txt
@@ -1,3 +1,8 @@
+Arcade: Pooyan port to MiST by Gehstock
+
+POOYAN.ROM is required at the root of the SD-Card.
+
+
---------------------------------------------------------------------------------
-- POOYAN by Dar (darfpga@aol.fr) (29/10/2017)
-- http://darfpga.blogspot.fr
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Release/POOYAN.ROM b/Arcade_MiST/Konami Classic/Pooyan_MiST/Release/POOYAN.ROM
new file mode 100644
index 00000000..3e7649d5
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Pooyan_MiST/Release/POOYAN.ROM differ
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Release/pooyan_mist.rbf b/Arcade_MiST/Konami Classic/Pooyan_MiST/Release/pooyan_mist.rbf
new file mode 100644
index 00000000..096bd5df
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Pooyan_MiST/Release/pooyan_mist.rbf differ
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/clean.bat b/Arcade_MiST/Konami Classic/Pooyan_MiST/clean.bat
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/clean.bat
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/clean.bat
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/pooyan_mist(RGB).rbf b/Arcade_MiST/Konami Classic/Pooyan_MiST/pooyan_mist(RGB).rbf
deleted file mode 100644
index 3019a6a0..00000000
Binary files a/Arcade_MiST/Konami Classic/Pooyan_MiST/pooyan_mist(RGB).rbf and /dev/null differ
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/pooyan_mist(wo OSD).rbf b/Arcade_MiST/Konami Classic/Pooyan_MiST/pooyan_mist(wo OSD).rbf
deleted file mode 100644
index ef990afc..00000000
Binary files a/Arcade_MiST/Konami Classic/Pooyan_MiST/pooyan_mist(wo OSD).rbf and /dev/null differ
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/pooyan_mist.qpf b/Arcade_MiST/Konami Classic/Pooyan_MiST/pooyan_mist.qpf
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/pooyan_mist.qpf
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/pooyan_mist.qpf
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/pooyan_mist.qsf b/Arcade_MiST/Konami Classic/Pooyan_MiST/pooyan_mist.qsf
new file mode 100644
index 00000000..6df614b5
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Pooyan_MiST/pooyan_mist.qsf
@@ -0,0 +1,213 @@
+# -------------------------------------------------------------------------- #
+#
+# Copyright (C) 1991-2014 Altera Corporation
+# Your use of Altera Corporation's design tools, logic functions
+# and other software and tools, and its AMPP partner logic
+# functions, and any output files from any of the foregoing
+# (including device programming or simulation files), and any
+# associated documentation or information are expressly subject
+# to the terms and conditions of the Altera Program License
+# Subscription Agreement, Altera MegaCore Function License
+# Agreement, or other applicable license agreement, including,
+# without limitation, that your use is for the sole purpose of
+# programming logic devices manufactured by Altera and sold by
+# Altera or its authorized distributors. Please refer to the
+# applicable agreement for further details.
+#
+# -------------------------------------------------------------------------- #
+#
+# Quartus II 64-Bit
+# Version 13.1.4 Build 182 03/12/2014 SJ Web Edition
+# Date created = 16:13:47 September 09, 2019
+#
+# -------------------------------------------------------------------------- #
+#
+# Notes:
+#
+# 1) The default values for assignments are stored in the file:
+# pooyan_mist_assignment_defaults.qdf
+# If this file doesn't exist, see file:
+# assignment_defaults.qdf
+#
+# 2) Altera recommends that you do not modify this file. This
+# file is updated automatically by the Quartus II software
+# and any changes you make may be lost or overwritten.
+#
+# -------------------------------------------------------------------------- #
+
+
+
+# Project-Wide Assignments
+# ========================
+set_global_assignment -name ORIGINAL_QUARTUS_VERSION 15.1.0
+set_global_assignment -name PROJECT_CREATION_TIME_DATE "17:45:13 JUNE 17,2016"
+set_global_assignment -name LAST_QUARTUS_VERSION 13.1
+set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
+set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl"
+set_global_assignment -name SYSTEMVERILOG_FILE rtl/pooyan_mist.sv
+set_global_assignment -name VHDL_FILE rtl/pooyan.vhd
+set_global_assignment -name VHDL_FILE rtl/gen_video.vhd
+set_global_assignment -name VHDL_FILE rtl/gen_ram.vhd
+set_global_assignment -name VHDL_FILE rtl/YM2149_linmix_sep.vhd
+set_global_assignment -name VHDL_FILE rtl/pooyan_sound_board.vhd
+set_global_assignment -name VERILOG_FILE rtl/pll.v
+set_global_assignment -name VHDL_FILE rtl/rom/pooyan_sprite_grphx2.vhd
+set_global_assignment -name VHDL_FILE rtl/rom/pooyan_sprite_grphx1.vhd
+set_global_assignment -name VHDL_FILE rtl/rom/pooyan_sprite_color_lut.vhd
+set_global_assignment -name VHDL_FILE rtl/rom/pooyan_sound_prog.vhd
+set_global_assignment -name VHDL_FILE rtl/rom/pooyan_prog.vhd
+set_global_assignment -name VHDL_FILE rtl/rom/pooyan_palette.vhd
+set_global_assignment -name VHDL_FILE rtl/rom/pooyan_char_grphx2.vhd
+set_global_assignment -name VHDL_FILE rtl/rom/pooyan_char_grphx1.vhd
+set_global_assignment -name VHDL_FILE rtl/rom/pooyan_char_color_lut.vhd
+set_global_assignment -name VHDL_FILE rtl/T80/T80se.vhd
+set_global_assignment -name VHDL_FILE rtl/T80/T80_Reg.vhd
+set_global_assignment -name VHDL_FILE rtl/T80/T80_Pack.vhd
+set_global_assignment -name VHDL_FILE rtl/T80/T80_MCode.vhd
+set_global_assignment -name VHDL_FILE rtl/T80/T80_ALU.vhd
+set_global_assignment -name VHDL_FILE rtl/T80/T80.vhd
+set_global_assignment -name QIP_FILE ../../../../common/mist/mist.qip
+
+# Pin & Location Assignments
+# ==========================
+set_location_assignment PIN_7 -to LED
+set_location_assignment PIN_54 -to CLOCK_27
+set_location_assignment PIN_144 -to VGA_R[5]
+set_location_assignment PIN_143 -to VGA_R[4]
+set_location_assignment PIN_142 -to VGA_R[3]
+set_location_assignment PIN_141 -to VGA_R[2]
+set_location_assignment PIN_137 -to VGA_R[1]
+set_location_assignment PIN_135 -to VGA_R[0]
+set_location_assignment PIN_133 -to VGA_B[5]
+set_location_assignment PIN_132 -to VGA_B[4]
+set_location_assignment PIN_125 -to VGA_B[3]
+set_location_assignment PIN_121 -to VGA_B[2]
+set_location_assignment PIN_120 -to VGA_B[1]
+set_location_assignment PIN_115 -to VGA_B[0]
+set_location_assignment PIN_114 -to VGA_G[5]
+set_location_assignment PIN_113 -to VGA_G[4]
+set_location_assignment PIN_112 -to VGA_G[3]
+set_location_assignment PIN_111 -to VGA_G[2]
+set_location_assignment PIN_110 -to VGA_G[1]
+set_location_assignment PIN_106 -to VGA_G[0]
+set_location_assignment PIN_136 -to VGA_VS
+set_location_assignment PIN_119 -to VGA_HS
+set_location_assignment PIN_65 -to AUDIO_L
+set_location_assignment PIN_80 -to AUDIO_R
+set_location_assignment PIN_105 -to SPI_DO
+set_location_assignment PIN_88 -to SPI_DI
+set_location_assignment PIN_126 -to SPI_SCK
+set_location_assignment PIN_91 -to SPI_SS3
+set_location_assignment PIN_13 -to CONF_DATA0
+set_location_assignment PIN_49 -to SDRAM_A[0]
+set_location_assignment PIN_44 -to SDRAM_A[1]
+set_location_assignment PIN_42 -to SDRAM_A[2]
+set_location_assignment PIN_39 -to SDRAM_A[3]
+set_location_assignment PIN_4 -to SDRAM_A[4]
+set_location_assignment PIN_6 -to SDRAM_A[5]
+set_location_assignment PIN_8 -to SDRAM_A[6]
+set_location_assignment PIN_10 -to SDRAM_A[7]
+set_location_assignment PIN_11 -to SDRAM_A[8]
+set_location_assignment PIN_28 -to SDRAM_A[9]
+set_location_assignment PIN_50 -to SDRAM_A[10]
+set_location_assignment PIN_30 -to SDRAM_A[11]
+set_location_assignment PIN_32 -to SDRAM_A[12]
+set_location_assignment PIN_83 -to SDRAM_DQ[0]
+set_location_assignment PIN_79 -to SDRAM_DQ[1]
+set_location_assignment PIN_77 -to SDRAM_DQ[2]
+set_location_assignment PIN_76 -to SDRAM_DQ[3]
+set_location_assignment PIN_72 -to SDRAM_DQ[4]
+set_location_assignment PIN_71 -to SDRAM_DQ[5]
+set_location_assignment PIN_69 -to SDRAM_DQ[6]
+set_location_assignment PIN_68 -to SDRAM_DQ[7]
+set_location_assignment PIN_86 -to SDRAM_DQ[8]
+set_location_assignment PIN_87 -to SDRAM_DQ[9]
+set_location_assignment PIN_98 -to SDRAM_DQ[10]
+set_location_assignment PIN_99 -to SDRAM_DQ[11]
+set_location_assignment PIN_100 -to SDRAM_DQ[12]
+set_location_assignment PIN_101 -to SDRAM_DQ[13]
+set_location_assignment PIN_103 -to SDRAM_DQ[14]
+set_location_assignment PIN_104 -to SDRAM_DQ[15]
+set_location_assignment PIN_58 -to SDRAM_BA[0]
+set_location_assignment PIN_51 -to SDRAM_BA[1]
+set_location_assignment PIN_85 -to SDRAM_DQMH
+set_location_assignment PIN_67 -to SDRAM_DQML
+set_location_assignment PIN_60 -to SDRAM_nRAS
+set_location_assignment PIN_64 -to SDRAM_nCAS
+set_location_assignment PIN_66 -to SDRAM_nWE
+set_location_assignment PIN_59 -to SDRAM_nCS
+set_location_assignment PIN_33 -to SDRAM_CKE
+set_location_assignment PIN_43 -to SDRAM_CLK
+
+# Classic Timing Assignments
+# ==========================
+set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
+set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
+set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL ON
+
+# Analysis & Synthesis Assignments
+# ================================
+set_global_assignment -name FAMILY "Cyclone III"
+set_global_assignment -name TOP_LEVEL_ENTITY pooyan_mist
+
+# Fitter Assignments
+# ==================
+set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF
+set_global_assignment -name DEVICE EP3C25E144C8
+set_global_assignment -name ENABLE_CONFIGURATION_PINS OFF
+set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "PASSIVE SERIAL"
+set_global_assignment -name FORCE_CONFIGURATION_VCCIO ON
+set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL"
+set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO"
+set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO"
+set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO"
+set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "USE AS REGULAR IO"
+set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS REGULAR IO"
+set_global_assignment -name ENABLE_BOOT_SEL_PIN OFF
+set_global_assignment -name ENABLE_NCE_PIN OFF
+
+# EDA Netlist Writer Assignments
+# ==============================
+set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (VHDL)"
+
+# Assembler Assignments
+# =====================
+set_global_assignment -name USE_CONFIGURATION_DEVICE OFF
+set_global_assignment -name GENERATE_RBF_FILE ON
+
+# SignalTap II Assignments
+# ========================
+set_global_assignment -name ENABLE_SIGNALTAP OFF
+set_global_assignment -name USE_SIGNALTAP_FILE output_files/stp1.stp
+
+# Power Estimation Assignments
+# ============================
+set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW"
+set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)"
+
+# Advanced I/O Timing Assignments
+# ===============================
+set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall
+set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise
+set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall
+set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise
+
+# -------------------------
+# start ENTITY(pooyan_mist)
+
+ # start DESIGN_PARTITION(Top)
+ # ---------------------------
+
+ # Incremental Compilation Assignments
+ # ===================================
+ 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
+
+ # end DESIGN_PARTITION(Top)
+ # -------------------------
+
+# end ENTITY(pooyan_mist)
+# -----------------------
+set_location_assignment PIN_127 -to SPI_SS2
+set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
\ No newline at end of file
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/time_pilot_mist.srf b/Arcade_MiST/Konami Classic/Pooyan_MiST/pooyan_mist.srf
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/time_pilot_mist.srf
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/pooyan_mist.srf
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T80.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/T80/T80.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T80.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/T80/T80.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T80_ALU.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/T80/T80_ALU.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T80_ALU.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/T80/T80_ALU.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T80_MCode.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/T80/T80_MCode.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T80_MCode.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/T80/T80_MCode.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T80_Pack.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/T80/T80_Pack.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T80_Pack.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/T80/T80_Pack.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T80_Reg.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/T80/T80_Reg.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T80_Reg.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/T80/T80_Reg.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T80se.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/T80/T80se.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T80se.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/T80/T80se.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/YM2149_linmix_sep.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/YM2149_linmix_sep.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/YM2149_linmix_sep.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/YM2149_linmix_sep.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/build_id.tcl b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/build_id.tcl
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/build_id.tcl
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/build_id.tcl
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/gen_ram.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/gen_ram.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/gen_ram.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/gen_ram.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/gen_video.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/gen_video.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/gen_video.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/gen_video.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pll.ppf b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pll.ppf
new file mode 100644
index 00000000..93e67f9f
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pll.ppf
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/pll.qip b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pll.qip
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/pll.qip
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pll.qip
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pll.v b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pll.v
new file mode 100644
index 00000000..3c7dc7fe
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pll.v
@@ -0,0 +1,365 @@
+// megafunction wizard: %ALTPLL%
+// GENERATION: STANDARD
+// VERSION: WM1.0
+// MODULE: altpll
+
+// ============================================================
+// File Name: pll.v
+// Megafunction Name(s):
+// altpll
+//
+// Simulation Library Files(s):
+// altera_mf
+// ============================================================
+// ************************************************************
+// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
+//
+// 13.1.4 Build 182 03/12/2014 SJ Web Edition
+// ************************************************************
+
+
+//Copyright (C) 1991-2014 Altera Corporation
+//Your use of Altera Corporation's design tools, logic functions
+//and other software and tools, and its AMPP partner logic
+//functions, and any output files from any of the foregoing
+//(including device programming or simulation files), and any
+//associated documentation or information are expressly subject
+//to the terms and conditions of the Altera Program License
+//Subscription Agreement, Altera MegaCore Function License
+//Agreement, or other applicable license agreement, including,
+//without limitation, that your use is for the sole purpose of
+//programming logic devices manufactured by Altera and sold by
+//Altera or its authorized distributors. Please refer to the
+//applicable agreement for further details.
+
+
+// synopsys translate_off
+`timescale 1 ps / 1 ps
+// synopsys translate_on
+module pll (
+ inclk0,
+ c0,
+ c1,
+ c2,
+ locked);
+
+ input inclk0;
+ output c0;
+ output c1;
+ output c2;
+ output locked;
+
+ wire [4:0] sub_wire0;
+ wire sub_wire2;
+ wire [0:0] sub_wire7 = 1'h0;
+ wire [2:2] sub_wire4 = sub_wire0[2:2];
+ wire [0:0] sub_wire3 = sub_wire0[0:0];
+ wire [1:1] sub_wire1 = sub_wire0[1:1];
+ wire c1 = sub_wire1;
+ wire locked = sub_wire2;
+ wire c0 = sub_wire3;
+ wire c2 = sub_wire4;
+ wire sub_wire5 = inclk0;
+ wire [1:0] sub_wire6 = {sub_wire7, sub_wire5};
+
+ altpll altpll_component (
+ .inclk (sub_wire6),
+ .clk (sub_wire0),
+ .locked (sub_wire2),
+ .activeclock (),
+ .areset (1'b0),
+ .clkbad (),
+ .clkena ({6{1'b1}}),
+ .clkloss (),
+ .clkswitch (1'b0),
+ .configupdate (1'b0),
+ .enable0 (),
+ .enable1 (),
+ .extclk (),
+ .extclkena ({4{1'b1}}),
+ .fbin (1'b1),
+ .fbmimicbidir (),
+ .fbout (),
+ .fref (),
+ .icdrclk (),
+ .pfdena (1'b1),
+ .phasecounterselect ({4{1'b1}}),
+ .phasedone (),
+ .phasestep (1'b1),
+ .phaseupdown (1'b1),
+ .pllena (1'b1),
+ .scanaclr (1'b0),
+ .scanclk (1'b0),
+ .scanclkena (1'b1),
+ .scandata (1'b0),
+ .scandataout (),
+ .scandone (),
+ .scanread (1'b0),
+ .scanwrite (1'b0),
+ .sclkout0 (),
+ .sclkout1 (),
+ .vcooverrange (),
+ .vcounderrange ());
+ defparam
+ altpll_component.bandwidth_type = "AUTO",
+ altpll_component.clk0_divide_by = 26,
+ altpll_component.clk0_duty_cycle = 50,
+ altpll_component.clk0_multiply_by = 47,
+ altpll_component.clk0_phase_shift = "0",
+ altpll_component.clk1_divide_by = 104,
+ altpll_component.clk1_duty_cycle = 50,
+ altpll_component.clk1_multiply_by = 47,
+ altpll_component.clk1_phase_shift = "0",
+ altpll_component.clk2_divide_by = 395,
+ altpll_component.clk2_duty_cycle = 50,
+ altpll_component.clk2_multiply_by = 208,
+ altpll_component.clk2_phase_shift = "0",
+ altpll_component.compensate_clock = "CLK0",
+ altpll_component.inclk0_input_frequency = 37037,
+ altpll_component.intended_device_family = "Cyclone III",
+ altpll_component.lpm_hint = "CBX_MODULE_PREFIX=pll",
+ altpll_component.lpm_type = "altpll",
+ altpll_component.operation_mode = "NORMAL",
+ altpll_component.pll_type = "AUTO",
+ altpll_component.port_activeclock = "PORT_UNUSED",
+ altpll_component.port_areset = "PORT_UNUSED",
+ altpll_component.port_clkbad0 = "PORT_UNUSED",
+ altpll_component.port_clkbad1 = "PORT_UNUSED",
+ altpll_component.port_clkloss = "PORT_UNUSED",
+ altpll_component.port_clkswitch = "PORT_UNUSED",
+ altpll_component.port_configupdate = "PORT_UNUSED",
+ altpll_component.port_fbin = "PORT_UNUSED",
+ altpll_component.port_inclk0 = "PORT_USED",
+ altpll_component.port_inclk1 = "PORT_UNUSED",
+ altpll_component.port_locked = "PORT_USED",
+ altpll_component.port_pfdena = "PORT_UNUSED",
+ altpll_component.port_phasecounterselect = "PORT_UNUSED",
+ altpll_component.port_phasedone = "PORT_UNUSED",
+ altpll_component.port_phasestep = "PORT_UNUSED",
+ altpll_component.port_phaseupdown = "PORT_UNUSED",
+ altpll_component.port_pllena = "PORT_UNUSED",
+ altpll_component.port_scanaclr = "PORT_UNUSED",
+ altpll_component.port_scanclk = "PORT_UNUSED",
+ altpll_component.port_scanclkena = "PORT_UNUSED",
+ altpll_component.port_scandata = "PORT_UNUSED",
+ altpll_component.port_scandataout = "PORT_UNUSED",
+ altpll_component.port_scandone = "PORT_UNUSED",
+ altpll_component.port_scanread = "PORT_UNUSED",
+ altpll_component.port_scanwrite = "PORT_UNUSED",
+ altpll_component.port_clk0 = "PORT_USED",
+ altpll_component.port_clk1 = "PORT_USED",
+ altpll_component.port_clk2 = "PORT_USED",
+ altpll_component.port_clk3 = "PORT_UNUSED",
+ altpll_component.port_clk4 = "PORT_UNUSED",
+ altpll_component.port_clk5 = "PORT_UNUSED",
+ altpll_component.port_clkena0 = "PORT_UNUSED",
+ altpll_component.port_clkena1 = "PORT_UNUSED",
+ altpll_component.port_clkena2 = "PORT_UNUSED",
+ altpll_component.port_clkena3 = "PORT_UNUSED",
+ altpll_component.port_clkena4 = "PORT_UNUSED",
+ altpll_component.port_clkena5 = "PORT_UNUSED",
+ altpll_component.port_extclk0 = "PORT_UNUSED",
+ altpll_component.port_extclk1 = "PORT_UNUSED",
+ altpll_component.port_extclk2 = "PORT_UNUSED",
+ altpll_component.port_extclk3 = "PORT_UNUSED",
+ altpll_component.self_reset_on_loss_lock = "OFF",
+ altpll_component.width_clock = 5;
+
+
+endmodule
+
+// ============================================================
+// CNX file retrieval info
+// ============================================================
+// Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0"
+// Retrieval info: PRIVATE: BANDWIDTH STRING "1.000"
+// Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1"
+// Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz"
+// Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low"
+// Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1"
+// Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0"
+// Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0"
+// Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0"
+// Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0"
+// Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0"
+// Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0"
+// Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0"
+// Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0"
+// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0"
+// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8"
+// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "26"
+// Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "104"
+// Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "395"
+// Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000"
+// Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000"
+// Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000"
+// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "48.807693"
+// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "12.201923"
+// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "14.217722"
+// Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0"
+// Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0"
+// Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1"
+// Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0"
+// Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0"
+// Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575"
+// Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1"
+// Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "27.000"
+// Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz"
+// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000"
+// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1"
+// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1"
+// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz"
+// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III"
+// Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1"
+// Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1"
+// Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1"
+// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available"
+// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0"
+// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg"
+// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps"
+// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "ps"
+// Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any"
+// Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0"
+// Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0"
+// Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0"
+// Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "47"
+// Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "47"
+// Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "208"
+// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1"
+// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "48.78400000"
+// Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "12.19600000"
+// Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "14.22800000"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz"
+// Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1"
+// Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0"
+// Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000"
+// Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000"
+// Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000"
+// Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0"
+// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg"
+// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg"
+// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "ps"
+// Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0"
+// Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0"
+// Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1"
+// Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0"
+// Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0"
+// Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0"
+// Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0"
+// Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0"
+// Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0"
+// Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0"
+// Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll.mif"
+// Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0"
+// Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1"
+// Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0"
+// Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0"
+// Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0"
+// Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000"
+// Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz"
+// Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500"
+// Retrieval info: PRIVATE: SPREAD_USE STRING "0"
+// Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0"
+// Retrieval info: PRIVATE: STICKY_CLK0 STRING "1"
+// Retrieval info: PRIVATE: STICKY_CLK1 STRING "1"
+// Retrieval info: PRIVATE: STICKY_CLK2 STRING "1"
+// Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1"
+// Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1"
+// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
+// Retrieval info: PRIVATE: USE_CLK0 STRING "1"
+// Retrieval info: PRIVATE: USE_CLK1 STRING "1"
+// Retrieval info: PRIVATE: USE_CLK2 STRING "1"
+// Retrieval info: PRIVATE: USE_CLKENA0 STRING "0"
+// Retrieval info: PRIVATE: USE_CLKENA1 STRING "0"
+// Retrieval info: PRIVATE: USE_CLKENA2 STRING "0"
+// Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0"
+// Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0"
+// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
+// Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO"
+// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "26"
+// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50"
+// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "47"
+// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0"
+// Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "104"
+// Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50"
+// Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "47"
+// Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0"
+// Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "395"
+// Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50"
+// Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "208"
+// Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0"
+// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0"
+// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "37037"
+// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III"
+// Retrieval info: CONSTANT: LPM_TYPE STRING "altpll"
+// Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL"
+// Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO"
+// Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF"
+// Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5"
+// Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]"
+// Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0"
+// Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1"
+// Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2"
+// Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0"
+// Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked"
+// Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0
+// Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0
+// Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0
+// Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1
+// Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2
+// Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.v TRUE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.ppf TRUE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.inc FALSE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.cmp FALSE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.bsf FALSE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll_inst.v FALSE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll_bb.v FALSE
+// Retrieval info: LIB_FILE: altera_mf
+// Retrieval info: CBX_MODULE_PREFIX: ON
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/pooyan.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pooyan.vhd
similarity index 98%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/pooyan.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pooyan.vhd
index 431ca119..2672b350 100644
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/pooyan.vhd
+++ b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pooyan.vhd
@@ -77,14 +77,16 @@ port(
reset : in std_logic;
video_r : out std_logic_vector(2 downto 0);
video_g : out std_logic_vector(2 downto 0);
- video_b : out std_logic_vector(2 downto 0);
+ video_b : out std_logic_vector(1 downto 0);
video_clk : out std_logic;
video_vblank : out std_logic;
video_hblank : out std_logic;
video_hs : out std_logic;
video_vs : out std_logic;
audio_out : out std_logic_vector(10 downto 0);
-
+ roms_addr : out std_logic_vector(14 downto 0);
+ roms_do : in std_logic_vector(7 downto 0);
+ roms_rd : out std_logic;
dip_switch_1 : in std_logic_vector(7 downto 0); -- Coinage_B / Coinage_A
dip_switch_2 : in std_logic_vector(7 downto 0); -- Sound(8)/Difficulty(7-5)/Bonus(4)/Cocktail(3)/lives(2-1)
@@ -599,15 +601,9 @@ rgb_palette_addr <=
process (clock_6)
begin
if rising_edge(clock_6) then
- if hblank = '1' or vblank = '1' then
- video_r <= "000";
- video_g <= "000";
- video_b <= "000";
- else
- video_r <= rgb_palette_do(2 downto 0);
- video_g <= rgb_palette_do(5 downto 3);
- video_b <= rgb_palette_do(7 downto 6) & '0';
- end if;
+ video_r <= rgb_palette_do(2 downto 0);
+ video_g <= rgb_palette_do(5 downto 3);
+ video_b <= rgb_palette_do(7 downto 6);
end if;
end process;
@@ -684,13 +680,17 @@ port map(
DO => cpu_do
);
+ roms_addr <= cpu_addr(14 downto 0);
+cpu_rom_do <= roms_do;
+ roms_rd <= '1';
+
-- cpu1 program ROM
-rom_cpu1 : entity work.pooyan_prog
-port map(
- clk => clock_6n,
- addr => cpu_addr(14 downto 0),
- data => cpu_rom_do
-);
+--rom_cpu1 : entity work.pooyan_prog
+--port map(
+-- clk => clock_6n,
+-- addr => cpu_addr(14 downto 0),
+-- data => cpu_rom_do
+--);
-- working/char RAM 0x8000-0x8FFF
wram : entity work.gen_ram
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pooyan_mist.sv b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pooyan_mist.sv
new file mode 100644
index 00000000..838a244c
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pooyan_mist.sv
@@ -0,0 +1,234 @@
+module pooyan_mist(
+ output LED,
+ output [5:0] VGA_R,
+ output [5:0] VGA_G,
+ output [5:0] VGA_B,
+ output VGA_HS,
+ output VGA_VS,
+ output AUDIO_L,
+ output AUDIO_R,
+ input SPI_SCK,
+ output SPI_DO,
+ input SPI_DI,
+ input SPI_SS2,
+ input SPI_SS3,
+ input CONF_DATA0,
+ input CLOCK_27,
+ output [12:0] SDRAM_A,
+ inout [15:0] SDRAM_DQ,
+ output SDRAM_DQML,
+ output SDRAM_DQMH,
+ output SDRAM_nWE,
+ output SDRAM_nCAS,
+ output SDRAM_nRAS,
+ output SDRAM_nCS,
+ output [1:0] SDRAM_BA,
+ output SDRAM_CLK,
+ output SDRAM_CKE
+);
+
+
+`include "rtl\build_id.v"
+
+localparam CONF_STR = {
+ "POOYAN;;",
+ "O2,Rotate Controls,Off,On;",
+ "O34,Scandoubler Fx,None,CRT 25%,CRT 50%,CRT 75%;",
+ "T6,Reset;",
+ "V,v1.25.",`BUILD_DATE
+};
+
+assign LED = 1;
+assign AUDIO_R = AUDIO_L;
+assign SDRAM_CLK = clock_48;
+
+wire clock_48, clock_12, clock_14, pll_locked;
+pll pll(
+ .inclk0(CLOCK_27),
+ .c0(clock_48),
+ .c1(clock_12),
+ .c2(clock_14),
+ .locked(pll_locked)
+ );
+
+wire [31:0] status;
+wire [1:0] buttons;
+wire [1:0] switches;
+wire [11:0] kbjoy;
+wire [7:0] joystick_0;
+wire [7:0] joystick_1;
+wire scandoublerD;
+wire ypbpr;
+wire [10:0] audio;
+wire hs, vs;
+wire hb, vb;
+wire blankn = ~(hb | vb);
+wire [2:0] r, g;
+wire [1:0] b;
+wire [14:0] rom_addr;
+wire [15:0] rom_do;
+wire rom_rd;
+wire ioctl_downl;
+wire [7:0] ioctl_index;
+wire ioctl_wr;
+wire [24:0] ioctl_addr;
+wire [7:0] ioctl_dout;
+wire key_strobe;
+wire key_pressed;
+wire [7:0] key_code;
+
+data_io data_io(
+ .clk_sys ( clock_48 ),
+ .SPI_SCK ( SPI_SCK ),
+ .SPI_SS2 ( SPI_SS2 ),
+ .SPI_DI ( SPI_DI ),
+ .ioctl_download( ioctl_downl ),
+ .ioctl_index ( ioctl_index ),
+ .ioctl_wr ( ioctl_wr ),
+ .ioctl_addr ( ioctl_addr ),
+ .ioctl_dout ( ioctl_dout )
+);
+
+sdram rom(
+ .*,
+ .init ( ~pll_locked ),
+ .clk ( clock_48 ),
+ .wtbt ( 2'b00 ),
+ .dout ( rom_do ),
+ .din ( {ioctl_dout, ioctl_dout} ),
+ .addr ( ioctl_downl ? ioctl_addr : rom_addr ),
+ .we ( ioctl_downl & ioctl_wr ),
+ .rd ( !ioctl_downl),
+ .ready()
+);
+
+reg reset = 1;
+reg rom_loaded = 0;
+always @(posedge clock_48) begin
+ reg ioctl_downlD;
+ ioctl_downlD <= ioctl_downl;
+
+ if (ioctl_downlD & ~ioctl_downl) rom_loaded <= 1;
+ reset <= status[0] | buttons[1] | status[6] | ~rom_loaded;
+end
+
+pooyan pooyan(
+ .clock_12(clock_12),
+ .clock_14(clock_14),
+ .reset(reset),
+ .video_r(r),
+ .video_g(g),
+ .video_b(b),
+ .video_hblank(hb),
+ .video_vblank(vb),
+ .video_hs(hs),
+ .video_vs(vs),
+ .audio_out(audio),
+ .roms_addr ( rom_addr ),
+ .roms_do ( rom_do[7:0] ),
+ .roms_rd ( rom_rd ),
+ .dip_switch_1("11111111"),// Coinage_B / Coinage_A
+ .dip_switch_2("11111011"),// Sound(8)/Difficulty(7-5)/Bonus(4)/Cocktail(3)/lives(2-1)
+ .start2(btn_two_players),
+ .start1(btn_one_player),
+ .coin1(btn_coin),
+ .fire1(m_fire),
+ .right1(m_right),
+ .left1(m_left),
+ .down1(m_down),
+ .up1(m_up),
+ .fire2(m_fire),
+ .right2(m_right),
+ .left2(m_left),
+ .down2(m_down),
+ .up2(m_up),
+ .sw("00000000")
+ );
+
+
+mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video(
+ .clk_sys ( clock_48 ),
+ .SPI_SCK ( SPI_SCK ),
+ .SPI_SS3 ( SPI_SS3 ),
+ .SPI_DI ( SPI_DI ),
+ .R ( blankn ? r : 0 ),
+ .G ( blankn ? g : 0 ),
+ .B ( blankn ? {b,1'b0} : 0 ),
+ .HSync ( hs ),
+ .VSync ( vs ),
+ .VGA_R ( VGA_R ),
+ .VGA_G ( VGA_G ),
+ .VGA_B ( VGA_B ),
+ .VGA_VS ( VGA_VS ),
+ .VGA_HS ( VGA_HS ),
+ .rotate ( {1'b1,status[2]} ),
+ .scandoubler_disable( scandoublerD ),
+ .scanlines ( status[4:3] ),
+ .ypbpr ( ypbpr )
+ );
+
+user_io #(.STRLEN(($size(CONF_STR)>>3)))user_io(
+ .clk_sys (clock_48 ),
+ .conf_str (CONF_STR ),
+ .SPI_CLK (SPI_SCK ),
+ .SPI_SS_IO (CONF_DATA0 ),
+ .SPI_MISO (SPI_DO ),
+ .SPI_MOSI (SPI_DI ),
+ .buttons (buttons ),
+ .switches (switches ),
+ .scandoubler_disable (scandoublerD ),
+ .ypbpr (ypbpr ),
+ .key_strobe (key_strobe ),
+ .key_pressed (key_pressed ),
+ .key_code (key_code ),
+ .joystick_0 (joystick_0 ),
+ .joystick_1 (joystick_1 ),
+ .status (status )
+ );
+
+dac #(.C_bits(16))dac(
+ .clk_i(clock_48),
+ .res_n_i(1),
+ .dac_i({audio, 5'b00000}),
+ .dac_o(AUDIO_L)
+ );
+// Rotated Normal
+wire m_up = ~status[2] ? btn_left | joystick_0[1] | joystick_1[1] : btn_up | joystick_0[3] | joystick_1[3];
+wire m_down = ~status[2] ? btn_right | joystick_0[0] | joystick_1[0] : btn_down | joystick_0[2] | joystick_1[2];
+wire m_left = ~status[2] ? btn_down | joystick_0[2] | joystick_1[2] : btn_left | joystick_0[1] | joystick_1[1];
+wire m_right = ~status[2] ? btn_up | joystick_0[3] | joystick_1[3] : btn_right | joystick_0[0] | joystick_1[0];
+wire m_fire = btn_fire1 | joystick_0[4] | joystick_1[4];
+//wire m_bomb = btn_fire2 | joystick_0[5] | joystick_1[5];
+
+reg btn_one_player = 0;
+reg btn_two_players = 0;
+reg btn_left = 0;
+reg btn_right = 0;
+reg btn_down = 0;
+reg btn_up = 0;
+reg btn_fire1 = 0;
+//reg btn_fire2 = 0;
+//reg btn_fire3 = 0;
+reg btn_coin = 0;
+
+always @(posedge clock_48) begin
+ reg old_state;
+ old_state <= key_strobe;
+ if(old_state != key_strobe) begin
+ case(key_code)
+ 'h75: btn_up <= key_pressed; // up
+ 'h72: btn_down <= key_pressed; // down
+ 'h6B: btn_left <= key_pressed; // left
+ 'h74: btn_right <= key_pressed; // right
+ 'h76: btn_coin <= key_pressed; // ESC
+ 'h05: btn_one_player <= key_pressed; // F1
+ 'h06: btn_two_players <= key_pressed; // F2
+ //'h14: btn_fire3 <= key_pressed; // ctrl
+ //'h11: btn_fire2 <= key_pressed; // alt
+ 'h29: btn_fire1 <= key_pressed; // Space
+ endcase
+ end
+end
+
+
+endmodule
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/pooyan_sound_board.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pooyan_sound_board.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/pooyan_sound_board.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pooyan_sound_board.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_char_color_lut.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_char_color_lut.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_char_color_lut.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_char_color_lut.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_char_grphx1.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_char_grphx1.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_char_grphx1.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_char_grphx1.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_char_grphx2.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_char_grphx2.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_char_grphx2.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_char_grphx2.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_palette.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_palette.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_palette.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_palette.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_prog.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_prog.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_prog.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_prog.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_sound_prog.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_sound_prog.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_sound_prog.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_sound_prog.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_sprite_color_lut.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_sprite_color_lut.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_sprite_color_lut.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_sprite_color_lut.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_sprite_grphx1.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_sprite_grphx1.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_sprite_grphx1.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_sprite_grphx1.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_sprite_grphx2.vhd b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_sprite_grphx2.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/proms/pooyan_sprite_grphx2.vhd
rename to Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/rom/pooyan_sprite_grphx2.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Power Surge.jpg b/Arcade_MiST/Konami Classic/Power Surge.jpg
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Power Surge.jpg
rename to Arcade_MiST/Konami Classic/Power Surge.jpg
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/Power_Surge.qpf b/Arcade_MiST/Konami Classic/Power_Surge_MiST/Power_Surge.qpf
new file mode 100644
index 00000000..d0673bf0
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/Power_Surge.qpf
@@ -0,0 +1,31 @@
+# -------------------------------------------------------------------------- #
+#
+# Copyright (C) 2016 Intel Corporation. All rights reserved.
+# Your use of Intel Corporation's design tools, logic functions
+# and other software and tools, and its AMPP partner logic
+# functions, and any output files from any of the foregoing
+# (including device programming or simulation files), and any
+# associated documentation or information are expressly subject
+# to the terms and conditions of the Intel Program License
+# Subscription Agreement, the Intel Quartus Prime License Agreement,
+# the Intel MegaCore Function License Agreement, or other
+# applicable license agreement, including, without limitation,
+# that your use is for the sole purpose of programming logic
+# devices manufactured by Intel and sold by Intel or its
+# authorized distributors. Please refer to the applicable
+# agreement for further details.
+#
+# -------------------------------------------------------------------------- #
+#
+# Quartus Prime
+# Version 16.1.0 Build 196 10/24/2016 SJ Lite Edition
+# Date created = 11:17:10 October 25, 2017
+#
+# -------------------------------------------------------------------------- #
+
+QUARTUS_VERSION = "16.1"
+DATE = "11:17:10 October 25, 2017"
+
+# Revisions
+
+PROJECT_REVISION = "Power_Surge"
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/pooyan_mist.qsf b/Arcade_MiST/Konami Classic/Power_Surge_MiST/Power_Surge.qsf
similarity index 72%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/pooyan_mist.qsf
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/Power_Surge.qsf
index eee0e35c..6e401c65 100644
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/pooyan_mist.qsf
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/Power_Surge.qsf
@@ -1,6 +1,6 @@
# -------------------------------------------------------------------------- #
#
-# Copyright (C) 1991-2013 Altera Corporation
+# Copyright (C) 1991-2014 Altera Corporation
# Your use of Altera Corporation's design tools, logic functions
# and other software and tools, and its AMPP partner logic
# functions, and any output files from any of the foregoing
@@ -17,15 +17,15 @@
# -------------------------------------------------------------------------- #
#
# Quartus II 64-Bit
-# Version 13.1.0 Build 162 10/23/2013 SJ Web Edition
-# Date created = 14:18:08 November 05, 2017
+# Version 13.1.4 Build 182 03/12/2014 SJ Web Edition
+# Date created = 17:50:10 March 09, 2019
#
# -------------------------------------------------------------------------- #
#
# Notes:
#
# 1) The default values for assignments are stored in the file:
-# pooyan_mist_assignment_defaults.qdf
+# time_pilot_mist_assignment_defaults.qdf
# If this file doesn't exist, see file:
# assignment_defaults.qdf
#
@@ -43,53 +43,11 @@ set_global_assignment -name ORIGINAL_QUARTUS_VERSION 15.1.0
set_global_assignment -name PROJECT_CREATION_TIME_DATE "17:45:13 JUNE 17,2016"
set_global_assignment -name LAST_QUARTUS_VERSION 13.1
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
-set_global_assignment -name TOP_LEVEL_ENTITY pooyan_mist
+set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL
+set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl"
-# Classic Timing Assignments
+# Pin & Location Assignments
# ==========================
-set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
-set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
-set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL ON
-
-# Analysis & Synthesis Assignments
-# ================================
-set_global_assignment -name FAMILY "Cyclone III"
-
-# Fitter Assignments
-# ==================
-set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF
-set_global_assignment -name DEVICE EP3C25E144C8
-set_global_assignment -name ENABLE_CONFIGURATION_PINS OFF
-set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "PASSIVE SERIAL"
-set_global_assignment -name FORCE_CONFIGURATION_VCCIO ON
-set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL"
-set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO"
-set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO"
-set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO"
-set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "USE AS REGULAR IO"
-set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS REGULAR IO"
-
-# EDA Netlist Writer Assignments
-# ==============================
-set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (VHDL)"
-
-# Assembler Assignments
-# =====================
-set_global_assignment -name USE_CONFIGURATION_DEVICE OFF
-set_global_assignment -name GENERATE_RBF_FILE ON
-
-# SignalTap II Assignments
-# ========================
-set_global_assignment -name ENABLE_SIGNALTAP OFF
-set_global_assignment -name USE_SIGNALTAP_FILE output_files/stp1.stp
-
-# Power Estimation Assignments
-# ============================
-set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW"
-set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)"
-
-
-
set_location_assignment PIN_7 -to LED
set_location_assignment PIN_54 -to CLOCK_27
set_location_assignment PIN_144 -to VGA_R[5]
@@ -117,48 +75,90 @@ set_location_assignment PIN_80 -to AUDIO_R
set_location_assignment PIN_105 -to SPI_DO
set_location_assignment PIN_88 -to SPI_DI
set_location_assignment PIN_126 -to SPI_SCK
+set_location_assignment PIN_127 -to SPI_SS2
set_location_assignment PIN_91 -to SPI_SS3
set_location_assignment PIN_13 -to CONF_DATA0
+# Classic Timing Assignments
+# ==========================
+set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
+set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
+set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL ON
+# Analysis & Synthesis Assignments
+# ================================
+set_global_assignment -name TOP_LEVEL_ENTITY SNES_top
+set_global_assignment -name FAMILY "Cyclone III"
+# Fitter Assignments
+# ==================
+set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF
+set_global_assignment -name DEVICE EP3C25E144C8
+set_global_assignment -name ENABLE_CONFIGURATION_PINS OFF
+set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "PASSIVE SERIAL"
+set_global_assignment -name FORCE_CONFIGURATION_VCCIO ON
+set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL"
+set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO"
+set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO"
+set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO"
+set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "USE AS REGULAR IO"
+set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name ENABLE_BOOT_SEL_PIN OFF
set_global_assignment -name ENABLE_NCE_PIN OFF
+
+# EDA Netlist Writer Assignments
+# ==============================
+set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (VHDL)"
+
+# Assembler Assignments
+# =====================
+set_global_assignment -name USE_CONFIGURATION_DEVICE OFF
+set_global_assignment -name GENERATE_RBF_FILE ON
+
+# SignalTap II Assignments
+# ========================
+set_global_assignment -name ENABLE_SIGNALTAP OFF
+set_global_assignment -name USE_SIGNALTAP_FILE output_files/stp1.stp
+
+# Power Estimation Assignments
+# ============================
+set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW"
+set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)"
+
+# Advanced I/O Timing Assignments
+# ===============================
set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall
set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise
set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall
set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise
+
+# ----------------------------
+# start ENTITY(TimePilot_MiST)
+
+ # start DESIGN_PARTITION(Top)
+ # ---------------------------
+
+ # Incremental Compilation Assignments
+ # ===================================
+
+ # end DESIGN_PARTITION(Top)
+ # -------------------------
+
+# end ENTITY(TimePilot_MiST)
+# --------------------------
+set_global_assignment -name DEVICE_FILTER_PACKAGE TQFP
+set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144
+set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8
+set_global_assignment -name VERILOG_FILE "../Neuer Ordner (2)/rtl/DE0-CV/SNES_top.v"
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_global_assignment -name VHDL_FILE rtl/pooyan_mist.vhd
-set_global_assignment -name VHDL_FILE rtl/proms/pooyan_sprite_grphx2.vhd
-set_global_assignment -name VHDL_FILE rtl/proms/pooyan_sprite_grphx1.vhd
-set_global_assignment -name VHDL_FILE rtl/proms/pooyan_sprite_color_lut.vhd
-set_global_assignment -name VHDL_FILE rtl/proms/pooyan_sound_prog.vhd
-set_global_assignment -name VHDL_FILE rtl/proms/pooyan_prog.vhd
-set_global_assignment -name VHDL_FILE rtl/proms/pooyan_palette.vhd
-set_global_assignment -name VHDL_FILE rtl/proms/pooyan_char_grphx2.vhd
-set_global_assignment -name VHDL_FILE rtl/proms/pooyan_char_grphx1.vhd
-set_global_assignment -name VHDL_FILE rtl/proms/pooyan_char_color_lut.vhd
-set_global_assignment -name VHDL_FILE rtl/YM2149_linmix_sep.vhd
-set_global_assignment -name VHDL_FILE rtl/T8080se.vhd
-set_global_assignment -name VHDL_FILE rtl/T80se.vhd
-set_global_assignment -name VHDL_FILE rtl/T80_Reg.vhd
-set_global_assignment -name VHDL_FILE rtl/T80_Pack.vhd
-set_global_assignment -name VHDL_FILE rtl/T80_MCode.vhd
-set_global_assignment -name VHDL_FILE rtl/T80_ALU.vhd
-set_global_assignment -name VHDL_FILE rtl/T80.vhd
-set_global_assignment -name VERILOG_FILE rtl/scandoubler.v
-set_global_assignment -name QIP_FILE rtl/mist_pll_12M_14M.qip
-set_global_assignment -name VERILOG_FILE rtl/mist_io.v
-set_global_assignment -name VERILOG_FILE rtl/keyboard.v
-set_global_assignment -name SYSTEMVERILOG_FILE rtl/hq2x.sv
-set_global_assignment -name VHDL_FILE rtl/gen_video.vhd
-set_global_assignment -name VHDL_FILE rtl/gen_ram.vhd
-set_global_assignment -name VHDL_FILE rtl/dac.vhd
-set_global_assignment -name VHDL_FILE rtl/pooyan_sound_board.vhd
-set_global_assignment -name VHDL_FILE rtl/pooyan.vhd
-set_global_assignment -name VERILOG_FILE rtl/osd.v
-set_global_assignment -name SYSTEMVERILOG_FILE rtl/video_mixer.sv
+set_global_assignment -name SOURCE_FILE "../Neuer Ordner (2)/rtl/snes_core.sflp"
+set_global_assignment -name SOURCE_FILE "../Neuer Ordner (2)/rtl/dma_core.sflp"
+set_global_assignment -name SOURCE_FILE "../Neuer Ordner (2)/rtl/display.sflp"
+set_global_assignment -name SOURCE_FILE "../Neuer Ordner (2)/rtl/DE0-CV/VGA_ctrl.sflp"
+set_global_assignment -name SOURCE_FILE "../Neuer Ordner (2)/rtl/DE0-CV/dsdac16.sflp"
+set_global_assignment -name SOURCE_FILE "../Neuer Ordner (2)/rtl/DE0-CV/DDS_50to10738635.sflp"
+set_global_assignment -name SOURCE_FILE "../Neuer Ordner (2)/rtl/DE0-CV/DDS_50to1024000.sflp"
+set_global_assignment -name SOURCE_FILE "../Neuer Ordner (2)/rtl/DE0-CV/core.sflp"
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
\ No newline at end of file
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/Power_Surge.srf b/Arcade_MiST/Konami Classic/Power_Surge_MiST/Power_Surge.srf
new file mode 100644
index 00000000..f32844fc
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/Power_Surge.srf
@@ -0,0 +1,5 @@
+{ "" "" "" "*" { } { } 0 10492 "" 0 0 "Quartus II" 0 -1 0 ""}
+{ "" "" "" "*" { } { } 0 13310 "" 0 0 "Quartus II" 0 -1 0 ""}
+{ "" "" "" "*" { } { } 0 276027 "" 0 0 "Quartus II" 0 -1 0 ""}
+{ "" "" "" "*" { } { } 0 10273 "" 0 0 "Quartus II" 0 -1 0 ""}
+{ "" "" "" "*" { } { } 0 10268 "" 0 0 "Quartus II" 0 -1 0 ""}
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/README.txt b/Arcade_MiST/Konami Classic/Power_Surge_MiST/README.txt
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/README.txt
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/README.txt
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/Snapshot/Power_Surge.rbf b/Arcade_MiST/Konami Classic/Power_Surge_MiST/Snapshot/Power_Surge.rbf
new file mode 100644
index 00000000..57ef1c68
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/Snapshot/Power_Surge.rbf differ
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/clean.bat b/Arcade_MiST/Konami Classic/Power_Surge_MiST/clean.bat
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/clean.bat
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/clean.bat
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T80.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T80.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T80.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T80.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T8080se.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T8080se.vhd
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/T8080se.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T8080se.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T80_ALU.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T80_ALU.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T80_ALU.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T80_ALU.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T80_MCode.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T80_MCode.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T80_MCode.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T80_MCode.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T80_Pack.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T80_Pack.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T80_Pack.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T80_Pack.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T80_Reg.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T80_Reg.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T80_Reg.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T80_Reg.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T80se.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T80se.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T80se.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/T80/T80se.vhd
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/TimePilot_MiST.sv b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/TimePilot_MiST.sv
new file mode 100644
index 00000000..99917e42
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/TimePilot_MiST.sv
@@ -0,0 +1,210 @@
+//============================================================================
+// Arcade: Time Pilot
+//
+// Port to MiST
+// Copyright (C) 2017 Gehstock
+//
+// Time pilot by Dar (darfpga@aol.fr) (29/10/2017)
+// http://darfpga.blogspot.fr
+//
+// This program is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 of the License, or (at your option)
+// any later version.
+//
+// This program is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+// more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//============================================================================
+
+module TimePilot_MiST(
+ output LED,
+ output [5:0] VGA_R,
+ output [5:0] VGA_G,
+ output [5:0] VGA_B,
+ output VGA_HS,
+ output VGA_VS,
+ output AUDIO_L,
+ output AUDIO_R,
+ input SPI_SCK,
+ output SPI_DO,
+ input SPI_DI,
+ input SPI_SS2,
+ input SPI_SS3,
+ input CONF_DATA0,
+ input CLOCK_27
+);
+
+`include "rtl\build_id.v"
+
+localparam CONF_STR = {
+ "PSurge;;",
+ "O2,Rotate Controls,Off,On;",
+ "O34,Scanlines,Off,25%,50%,75%;",
+ "T6,Reset;",
+ "V,v1.10.",`BUILD_DATE
+};
+
+assign LED = 1;
+assign AUDIO_R = AUDIO_L;
+
+wire clock_24, clock_14, clock_12, pix_ce;
+wire pll_locked;
+pll pll(
+ .inclk0(CLOCK_27),
+ .areset(0),
+ .c0(clock_24),//24,57600000
+ .c1(clock_14),//14.31800000
+ .c2(clock_12),//12.28800000
+ .locked(pll_locked)
+ );
+
+wire [31:0] status;
+wire [1:0] buttons;
+wire [1:0] switches;
+wire [7:0] joystick_0;
+wire [7:0] joystick_1;
+wire scandoublerD;
+wire ypbpr;
+wire [10:0] ps2_key;
+reg [10:0] audio;
+wire hb, vb;
+wire blankn = ~(hb | vb);
+wire ce_vid;
+wire hs, vs;
+wire [4:0] r,g,b;
+
+time_pilot time_pilot(
+ .clock_12(clock_12),
+ .clock_14(clock_14),
+ .reset(status[0] | status[6] | buttons[1]),
+ .video_r(r),
+ .video_g(g),
+ .video_b(b),
+ .video_hblank(hb),
+ .video_vblank(vb),
+ .video_clk(pix_ce),
+ .video_hs(hs),
+ .video_vs(vs),
+ .audio_out(audio),
+ .dip_switch_1("11111111"), // Cabinet Unknown Lives Lives Initial_Energy Unknown Unknown Unknown
+ .dip_switch_2("11111010"), // Stop_at_Junctions Unknown Unknown Cheat Coin_B Coin_B Coin_A Coin_A
+ .start2(btn_two_players),
+ .start1(btn_one_player),
+ .coin1(btn_coin),
+ .fire1(m_fire),
+ .right1(m_right),
+ .left1(m_left),
+ .down1(m_down),
+ .up1(m_up),
+ .fire2(m_fire),
+ .right2(m_right),
+ .left2(m_left),
+ .down2(m_down),
+ .up2(m_up),
+ .dbg_cpu_addr()
+ );
+
+video_mixer video_mixer(
+ .clk_sys(clock_24),
+ .ce_pix(pix_ce),
+ .ce_pix_actual(pix_ce),
+ .SPI_SCK(SPI_SCK),
+ .SPI_SS3(SPI_SS3),
+ .SPI_DI(SPI_DI),
+ .R(blankn ? r[2:0] : "000"),
+ .G(blankn ? g[2:0] : "000"),
+ .B(blankn ? b[2:0] : "000"),
+ .HSync(hs),
+ .VSync(vs),
+ .VGA_R(VGA_R),
+ .VGA_G(VGA_G),
+ .VGA_B(VGA_B),
+ .VGA_VS(VGA_VS),
+ .VGA_HS(VGA_HS),
+ .rotate({1'b0,status[2]}),
+ .scandoublerD(scandoublerD),
+ .scanlines(scandoublerD ? 2'b00 : status[4:3]),
+ .ypbpr(ypbpr),
+ .ypbpr_full(1),
+ .line_start(0),
+ .mono(0)
+ );
+
+mist_io #(
+ .STRLEN(($size(CONF_STR)>>3)))
+mist_io(
+ .clk_sys (clock_24 ),
+ .conf_str (CONF_STR ),
+ .SPI_SCK (SPI_SCK ),
+ .CONF_DATA0 (CONF_DATA0 ),
+ .SPI_SS2 (SPI_SS2 ),
+ .SPI_DO (SPI_DO ),
+ .SPI_DI (SPI_DI ),
+ .buttons (buttons ),
+ .switches (switches ),
+ .scandoublerD (scandoublerD ),
+ .ypbpr (ypbpr ),
+ .ps2_key (ps2_key ),
+ .joystick_0 (joystick_0 ),
+ .joystick_1 (joystick_1 ),
+ .status (status )
+ );
+
+dac dac(
+ .clk_i(clock_24),
+ .res_n_i(1),
+ .dac_i({"0000", audio}),
+ .dac_o(AUDIO_L)
+ );
+// NORMAL ROTATED
+wire m_up = btn_right | joystick_0[0] | joystick_1[0];// : btn_up | joystick_0[3] | joystick_1[3];
+wire m_down = btn_left | joystick_0[1] | joystick_1[1];// : btn_down | joystick_0[2] | joystick_1[2];
+wire m_left = btn_up | joystick_0[3] | joystick_1[3];// : btn_left | joystick_0[1] | joystick_1[1];
+wire m_right = btn_down | joystick_0[2] | joystick_1[2];// : btn_right | joystick_0[0] | joystick_1[0];
+wire m_fire = btn_fire1 | joystick_0[4] | joystick_1[4];
+wire m_bomb = btn_fire2 | joystick_0[5] | joystick_1[5];
+/*
+wire m_up = status[2] ? btn_up & joystick_0[3] & joystick_1[3] : btn_right & joystick_0[0] & joystick_1[0];
+wire m_down = status[2] ? btn_down & joystick_0[2] & joystick_1[2] : btn_left & joystick_0[1] & joystick_1[1];
+wire m_left = status[2] ? btn_left & joystick_0[1] & joystick_1[1] : btn_up & joystick_0[3] & joystick_1[3];
+wire m_right = status[2] ? btn_right & joystick_0[0] & joystick_1[0] : btn_down & joystick_0[2] & joystick_1[2];
+*/
+reg btn_one_player = 0;
+reg btn_two_players = 0;
+reg btn_left = 0;
+reg btn_right = 0;
+reg btn_down = 0;
+reg btn_up = 0;
+reg btn_fire1 = 0;
+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];
+
+always @(posedge clock_24) begin
+ reg old_state;
+ old_state <= ps2_key[10];
+ if(old_state != ps2_key[10]) begin
+ case(code)
+ 'h75: btn_up <= pressed; // up
+ 'h72: btn_down <= pressed; // down
+ 'h6B: btn_left <= pressed; // left
+ 'h74: btn_right <= pressed; // right
+ 'h76: btn_coin <= pressed; // ESC
+ 'h05: btn_one_player <= pressed; // F1
+ 'h06: btn_two_players <= pressed; // F2
+ 'h14: btn_fire3 <= pressed; // ctrl
+ 'h11: btn_fire2 <= pressed; // alt
+ 'h29: btn_fire1 <= pressed; // Space
+ endcase
+ end
+end
+
+endmodule
\ No newline at end of file
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/YM2149_linmix_sep.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/YM2149_linmix_sep.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/YM2149_linmix_sep.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/YM2149_linmix_sep.vhd
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/build_id.tcl b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/build_id.tcl
new file mode 100644
index 00000000..938515d8
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/build_id.tcl
@@ -0,0 +1,35 @@
+# ================================================================================
+#
+# Build ID Verilog Module Script
+# Jeff Wiencrot - 8/1/2011
+#
+# Generates a Verilog module that contains a timestamp,
+# from the current build. These values are available from the build_date, build_time,
+# physical_address, and host_name output ports of the build_id module in the build_id.v
+# Verilog source file.
+#
+# ================================================================================
+
+proc generateBuildID_Verilog {} {
+
+ # Get the timestamp (see: http://www.altera.com/support/examples/tcl/tcl-date-time-stamp.html)
+ set buildDate [ clock format [ clock seconds ] -format %y%m%d ]
+ set buildTime [ clock format [ clock seconds ] -format %H%M%S ]
+
+ # Create a Verilog file for output
+ set outputFileName "rtl/build_id.v"
+ set outputFile [open $outputFileName "w"]
+
+ # Output the Verilog source
+ puts $outputFile "`define BUILD_DATE \"$buildDate\""
+ puts $outputFile "`define BUILD_TIME \"$buildTime\""
+ close $outputFile
+
+ # Send confirmation message to the Messages window
+ post_message "Generated build identification Verilog module: [pwd]/$outputFileName"
+ post_message "Date: $buildDate"
+ post_message "Time: $buildTime"
+}
+
+# Comment out this line to prevent the process from automatically executing when the file is sourced:
+generateBuildID_Verilog
\ No newline at end of file
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/dac.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/dac.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/dac.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/dac.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/gen_ram.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/gen_ram.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/gen_ram.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/gen_ram.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/gen_video.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/gen_video.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/gen_video.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/gen_video.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/hq2x.sv b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/hq2x.sv
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/hq2x.sv
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/hq2x.sv
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/mist_io.v b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/mist_io.v
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/mist_io.v
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/mist_io.v
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/osd.v b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/osd.v
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/osd.v
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/osd.v
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/mist_pll_12M_14M.qip b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/pll.qip
similarity index 57%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/mist_pll_12M_14M.qip
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/pll.qip
index 02816126..afd958be 100644
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/mist_pll_12M_14M.qip
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/pll.qip
@@ -1,4 +1,4 @@
set_global_assignment -name IP_TOOL_NAME "ALTPLL"
set_global_assignment -name IP_TOOL_VERSION "13.1"
-set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "mist_pll_12M_14M.vhd"]
-set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "mist_pll_12M_14M.ppf"]
+set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "pll.v"]
+set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.ppf"]
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/pll.v b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/pll.v
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/pll.v
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/pll.v
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/make_time_pilot_proms.bat b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/make_time_pilot_proms.bat
new file mode 100644
index 00000000..a9f10f38
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/make_time_pilot_proms.bat
@@ -0,0 +1,18 @@
+
+copy /B p1 + p2 + p3 time_pilot_prog.bin
+make_vhdl_prom time_pilot_prog.bin time_pilot_prog.vhd
+copy /B p6 + p7 time_pilot_sound.bin
+make_vhdl_prom time_pilot_sound.bin time_pilot_sound_prog.vhd
+make_vhdl_prom p4 time_pilot_char_grphx.vhd
+copy /B p5 + tm5 time_pilot_sprite_grphx.bin
+make_vhdl_prom time_pilot_sprite_grphx.bin time_pilot_sprite_grphx.vhd
+
+
+
+make_vhdl_prom timeplt.b4 time_pilot_palette_blue_green.vhd
+make_vhdl_prom timeplt.b5 time_pilot_palette_green_red.vhd
+make_vhdl_prom timeplt.e9 time_pilot_sprite_color_lut.vhd
+make_vhdl_prom timeplt.e12 time_pilot_char_color_lut.vhd
+
+
+
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/make_vhdl_prom.exe b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/make_vhdl_prom.exe
new file mode 100644
index 00000000..1e5618bf
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/make_vhdl_prom.exe differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p1 b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p1
new file mode 100644
index 00000000..f36fbb60
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p1 differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p2 b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p2
new file mode 100644
index 00000000..c3bd1c0d
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p2 differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p3 b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p3
new file mode 100644
index 00000000..fe1f94d4
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p3 differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p4 b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p4
new file mode 100644
index 00000000..b26423d5
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p4 differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p5 b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p5
new file mode 100644
index 00000000..2a876c69
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p5 differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p6 b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p6
new file mode 100644
index 00000000..fff20838
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p6 differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p7 b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p7
new file mode 100644
index 00000000..b589ba82
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/p7 differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/psurge (1).zip b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/psurge (1).zip
new file mode 100644
index 00000000..0aaa800a
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/psurge (1).zip differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/psurge (2).zip b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/psurge (2).zip
new file mode 100644
index 00000000..1daa9ad2
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/psurge (2).zip differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/psurge.zip b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/psurge.zip
new file mode 100644
index 00000000..0516a649
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/psurge.zip differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/time_pilot_prog.bin b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/time_pilot_prog.bin
new file mode 100644
index 00000000..e8c66970
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/time_pilot_prog.bin differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/time_pilot_sound.bin b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/time_pilot_sound.bin
new file mode 100644
index 00000000..07566882
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/time_pilot_sound.bin differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/time_pilot_sprite_grphx.bin b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/time_pilot_sprite_grphx.bin
new file mode 100644
index 00000000..7cea2538
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/time_pilot_sprite_grphx.bin differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/timeplt.b4 b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/timeplt.b4
new file mode 100644
index 00000000..0bcb1f06
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/timeplt.b4 differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/timeplt.b5 b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/timeplt.b5
new file mode 100644
index 00000000..1f27bc69
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/timeplt.b5 differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/timeplt.e12 b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/timeplt.e12
new file mode 100644
index 00000000..783fe6bc
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/timeplt.e12 differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/timeplt.e9 b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/timeplt.e9
new file mode 100644
index 00000000..4658fadb
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/timeplt.e9 differ
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/tm5 b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/tm5
new file mode 100644
index 00000000..2bcb5f04
Binary files /dev/null and b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/rom/tm5 differ
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/scandoubler.v b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/scandoubler.v
similarity index 100%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/scandoubler.v
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/scandoubler.v
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot.vhd
new file mode 100644
index 00000000..237e7df9
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot.vhd
@@ -0,0 +1,803 @@
+---------------------------------------------------------------------------------
+-- Time pilot by Dar (darfpga@aol.fr) (29/10/2017)
+-- http://darfpga.blogspot.fr
+---------------------------------------------------------------------------------
+-- gen_ram.vhd & io_ps2_keyboard
+--------------------------------
+-- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com)
+-- http://www.syntiac.com/fpga64.html
+---------------------------------------------------------------------------------
+-- T80/T80se - Version : 0247
+-----------------------------
+-- Z80 compatible microprocessor core
+-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org)
+---------------------------------------------------------------------------------
+-- YM2149 (AY-3-8910)
+-- Copyright (c) MikeJ - Jan 2005
+---------------------------------------------------------------------------------
+-- Educational use only
+-- Do not redistribute synthetized file with roms
+-- Do not redistribute roms whatever the form
+-- Use at your own risk
+---------------------------------------------------------------------------------
+
+-- Features :
+-- TV 15KHz mode only (atm)
+-- Coctail mode ok
+-- Sound ok
+
+-- Use with MAME roms from timeplt.zip
+--
+-- Use make_time_pilot_proms.bat to build vhd file from binaries
+
+-- time_pilot_prog.vhd : tm1, tm2,tm3
+-- time_pilot_sprite_grphx.vhd : tm4, tm5
+-- time_pilot_char_grphx.vhd : tm6
+-- time_pilot_sound_prog.vhd : tm7
+-- time_pilot_palette_blue_green.vhd : timeplt.b4
+-- time_pilot_palette_green_red.vhd : timeplt.b5
+-- time_pilot_sprite_color_lut.vhd : timeplt.e9
+-- time_pilot_char_color_lut.vhd : timeplt.e12
+
+-- Time Pilot Hardware caracteristics :
+--
+-- VIDEO : 1xZ80@3MHz CPU accessing its program rom, working ram,
+-- sprite data ram, I/O, sound board register and trigger.
+-- 24Kx8bits program rom
+--
+-- One char tile map 32x28
+-- 8Kx8bits graphics rom 2bits/pixel
+-- 4 colors/32sets among 16 colors
+--
+-- 24 sprites with priorities and flip H/V
+-- 16Kx8bits graphics rom 2bits/pixel
+-- 3 colors/64sets among 16 colors (different of char colors).
+--
+-- Char/sprites color palette 2x16 colors among 32768 colors
+-- 15bits 5red/5green/5blue
+--
+-- Working ram : 4Kx8bits
+-- Sprites data ram : 256x16bits
+-- Sprites line buffer rams : 1 scan line delay flip/flop 2x256x4bits
+
+-- SOUND : 1xZ80@1.79MHz CPU accessing its program rom, working ram, 2x-AY3-8910
+-- 8Kx8bits program rom
+--
+-- 1xAY-3-8910
+-- I/O noise input and command/trigger from video board.
+-- 3 sound channels
+--
+-- 1xAY-3-8910
+-- 3 sound channels
+--
+-- 6 RC filters with 4 states : transparent or cut 600Hz, 700Hz, 3.4KHz
+--
+---------------------------------------------------------------------------------
+
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+use ieee.numeric_std.all;
+
+entity time_pilot is
+port(
+ clock_12 : in std_logic;
+ clock_14 : in std_logic;
+ reset : in std_logic;
+ video_r : out std_logic_vector(4 downto 0);
+ video_g : out std_logic_vector(4 downto 0);
+ video_b : out std_logic_vector(4 downto 0);
+ video_clk : out std_logic;
+ video_hblank : out std_logic;
+ video_vblank : out std_logic;
+ video_hs : out std_logic;
+ video_vs : out std_logic;
+ audio_out : out std_logic_vector(10 downto 0);
+
+ dip_switch_1 : in std_logic_vector(7 downto 0); -- Coinage_B / Coinage_A
+ dip_switch_2 : in std_logic_vector(7 downto 0); -- Sound(8)/Difficulty(7-5)/Bonus(4)/Cocktail(3)/lives(2-1)
+
+ start2 : in std_logic;
+ start1 : in std_logic;
+ coin1 : in std_logic;
+
+ fire1 : in std_logic;
+ right1 : in std_logic;
+ left1 : in std_logic;
+ down1 : in std_logic;
+ up1 : in std_logic;
+
+ fire2 : in std_logic;
+ right2 : in std_logic;
+ left2 : in std_logic;
+ down2 : in std_logic;
+ up2 : in std_logic;
+
+ dbg_cpu_addr : out std_logic_vector(15 downto 0)
+);
+end time_pilot;
+
+architecture struct of time_pilot is
+
+ signal reset_n: std_logic;
+ signal clock_12n : std_logic;
+ signal clock_6 : std_logic := '0';
+ signal clock_6n : std_logic;
+ signal clock_div : std_logic_vector(1 downto 0) := "00";
+
+ signal hcnt : std_logic_vector(5 downto 0); -- horizontal counter
+ signal vcnt : std_logic_vector(8 downto 0); -- vertical counter
+ signal pxcnt : std_logic_vector(2 downto 0); -- pixel counter
+ signal spcnt : std_logic_vector(4 downto 0); -- sprite counter
+
+ signal hsync0 : std_logic;
+
+ signal hblank : std_logic;
+ signal vblank : std_logic;
+
+ signal cpu_ena : std_logic;
+
+ signal cpu_addr : std_logic_vector(15 downto 0);
+ signal cpu_di : std_logic_vector( 7 downto 0);
+ signal cpu_do : std_logic_vector( 7 downto 0);
+ signal cpu_wr_n : std_logic;
+ signal cpu_mreq_n : std_logic;
+ signal cpu_nmi_n : std_logic;
+ signal cpu_int_n : std_logic;
+
+ signal cpu_rom_do : std_logic_vector( 7 downto 0);
+
+ signal wram_addr : std_logic_vector(11 downto 0);
+ signal wram_we : std_logic;
+ signal wram_do : std_logic_vector( 7 downto 0);
+
+ signal ch_graphx_addr_f: std_logic_vector(12 downto 0);
+ signal ch_graphx_addr : std_logic_vector(12 downto 0);
+ signal ch_graphx_do : std_logic_vector( 7 downto 0);
+ signal ch_pixels : std_logic_vector( 7 downto 0);
+ signal ch_data1 : std_logic_vector( 7 downto 0);
+ signal ch_pixel_bit1 : std_logic;
+ signal ch_pixel_bit2 : std_logic;
+ signal ch_color_set : std_logic_vector(4 downto 0);
+ signal ch_palette_addr : std_logic_vector(7 downto 0);
+ signal ch_palette_do : std_logic_vector(3 downto 0);
+
+ signal spram_addr : std_logic_vector(7 downto 0);
+ signal spram1_we : std_logic;
+ signal spram1_do : std_logic_vector(7 downto 0);
+ signal spram2_we : std_logic;
+ signal spram2_do : std_logic_vector(7 downto 0);
+
+ signal sp_graphx_addr : std_logic_vector(13 downto 0);
+ signal sp_graphx_do : std_logic_vector(7 downto 0);
+ signal vcnt_r : std_logic_vector(8 downto 0);
+ signal sp_line : std_logic_vector(7 downto 0);
+ signal sp_on_line : std_logic;
+ signal sp_attr : std_logic_vector(7 downto 0);
+ signal sp_posh : std_logic_vector(7 downto 0);
+ signal sp_pixels : std_logic_vector(7 downto 0);
+ signal sp_color_set : std_logic_vector(5 downto 0);
+ signal sp_palette_addr : std_logic_vector(7 downto 0);
+ signal sp_palette_do : std_logic_vector(3 downto 0);
+ signal sp_read_out : std_logic_vector(3 downto 0);
+ signal sp_blank : std_logic;
+
+ signal rgb_palette_addr : std_logic_vector(4 downto 0);
+ signal rgb_palette_bg_do : std_logic_vector(7 downto 0);
+ signal rgb_palette_gr_do : std_logic_vector(7 downto 0);
+
+ signal sp_buffer_write_addr : std_logic_vector(7 downto 0);
+ signal sp_buffer_write_we : std_logic;
+ signal sp_buffer_read_addr : std_logic_vector(7 downto 0);
+
+ signal sp_buffer_ram1_addr : std_logic_vector(7 downto 0);
+ signal sp_buffer_ram1_we : std_logic;
+ signal sp_buffer_ram1_di : std_logic_vector(3 downto 0);
+ signal sp_buffer_ram1_do : std_logic_vector(3 downto 0);
+
+ signal sp_buffer_ram2_addr : std_logic_vector(7 downto 0);
+ signal sp_buffer_ram2_we : std_logic;
+ signal sp_buffer_ram2_di : std_logic_vector(3 downto 0);
+ signal sp_buffer_ram2_do : std_logic_vector(3 downto 0);
+
+ signal sp_buffer_sel : std_logic;
+
+ signal itt_n : std_logic_vector(7 downto 0);
+ signal flip : std_logic;
+ signal C0xx_we : std_logic;
+ signal C3xx_we : std_logic;
+ signal sound_cmd : std_logic_vector(7 downto 0);
+ signal sound_trig : std_logic;
+
+ signal input_0 : std_logic_vector(7 downto 0);
+ signal input_1 : std_logic_vector(7 downto 0);
+ signal input_2 : std_logic_vector(7 downto 0);
+
+begin
+
+video_clk <= clock_6n;
+clock_12n <= not clock_12;
+clock_6n <= not clock_6;
+reset_n <= not reset;
+
+-- debug
+process (reset, clock_12)
+begin
+ if rising_edge(clock_12) and cpu_ena ='1' and cpu_mreq_n ='0' then
+ dbg_cpu_addr <= cpu_addr;
+ end if;
+end process;
+
+-- make 6MHz clock from 12MHz
+process (clock_12)
+begin
+ if reset='1' then
+ clock_6 <= '0';
+ else
+ if rising_edge(clock_12) then
+ clock_6 <= not clock_6;
+ end if;
+ end if;
+end process;
+
+
+--------------------------
+-- Video/sprite scanner --
+--------------------------
+
+-- make hcnt and vcnt video scanner from pixel clocks and counts
+--
+-- pxcnt |0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|
+-- hcnt | N | N+1 |
+-- cpu_adr/do | |
+
+--
+-- hcnt [0..47] => 48 x 8 = 384 pixels, 384/6.144Mhz => 1 line is 62.5us (16.000KHz)
+-- vcnt [252..255,256..511] => 260 lines, 1 frame is 260 x 62.5us = 16.250ms (61.54Hz)
+
+process (reset, clock_6)
+begin
+ if reset='1' then
+ pxcnt <= "000";
+ hcnt <= "000000";
+ vcnt <= '0'&X"FC";
+ spcnt <= "00000";
+ else
+ if rising_edge(clock_6) then
+ pxcnt <= pxcnt + '1';
+ if pxcnt = "111" then
+ hcnt <= hcnt + '1';
+
+ if hcnt = "101111" then -- char from #0 to #47 (one line)
+ hcnt <= "000000";
+ if vcnt = '1'&X"FF" then
+ vcnt <= '0'&X"FC";
+ else
+ vcnt <= vcnt + '1';
+ end if;
+ end if;
+
+ -- sprite down counter
+ if hcnt(0) = '1' then -- every is 16 bits (2 char)
+ if hcnt = "101111" then
+ spcnt <= "11111"; -- start with sprite #31
+ else
+ spcnt <= spcnt - '1'; -- downto sprite #8
+ end if;
+ end if;
+
+ end if;
+ end if;
+ end if;
+end process;
+
+cpu_ena <= not pxcnt(0);
+
+-- inputs
+input_0 <= "111" & not start2 & not start1 & '1' & '1' & not coin1; -- ?/ ?/ ?/ 2S/ 1S/SVC/ C2/ C1
+input_1 <= "111" & not fire1 & not down1 & not up1 & not right1 & not left1; -- ?/1FL/1SR/1SL/1DW/1UP/1RI/1LE
+input_2 <= "111" & not fire2 & not down2 & not up2 & not right2 & not left2; -- ?/2FL/2SR/2SL/2DW/2UP/2RI/2LE
+
+-- cpu input address decoding (mirror mostly from Mame)
+cpu_di <= cpu_rom_do when cpu_addr(15 downto 0) < X"6" else -- 0000-5FFF 011000 00000 00000
+
+
+ X"80" when cpu_addr(14 downto 0) = X"6" and
+ cpu_addr(2 downto 0) = "100" else -- 6004 Protection 110000000000100
+
+ wram_do when cpu_addr(15 downto 12) = X"A" else -- A000-AFFF
+
+ spram1_do when cpu_addr(15 downto 12) = X"B" and
+ cpu_addr(10) = '0' else -- B000-B3FF
+
+ spram2_do when cpu_addr(15 downto 12) = X"B" and
+ cpu_addr(10) = '1' else -- B400-B7FF
+
+ vcnt(7 downto 0) when cpu_addr(15 downto 12) = X"C" and
+ cpu_addr( 9 downto 8) = "00" else -- C000-C0FF
+
+ X"FF" when cpu_addr(15 downto 12) = X"C" and
+ cpu_addr( 9 downto 8) = "01" else -- C100-C1FF
+
+ dip_switch_2 when cpu_addr(15 downto 12) = X"C" and
+ cpu_addr( 9 downto 8) = "10" else -- C200-C2FF
+
+ input_0 when cpu_addr(15 downto 12) = X"C" and
+ cpu_addr( 9 downto 8) = "11" and
+ cpu_addr( 6 downto 5) = "00" else -- C300-C31F
+
+ input_1 when cpu_addr(15 downto 12) = X"C" and
+ cpu_addr( 9 downto 8) = "11" and
+ cpu_addr( 6 downto 5) = "01" else -- C320-C32F
+
+ input_2 when cpu_addr(15 downto 12) = X"C" and
+ cpu_addr( 9 downto 8) = "11" and
+ cpu_addr( 6 downto 5) = "10" else -- C340-C34F
+
+ dip_switch_1 when cpu_addr(15 downto 12) = X"C" and
+ cpu_addr( 9 downto 8) = "11" and
+ cpu_addr( 6 downto 5) = "11" else -- C360-C36F
+
+ X"FF";
+
+-- working ram address multiplexer cpu/video scanner
+wram_addr <= cpu_addr(11 downto 0) when cpu_ena = '1' else
+ '0' & pxcnt(1) & vcnt(7 downto 3) & hcnt(4 downto 0) when flip = '0' else
+ '0' & pxcnt(1) & not vcnt(7 downto 3) & not hcnt(4 downto 0);
+
+-- sprite data ram address multiplexer cpu/sprite scanner
+spram_addr <= cpu_addr(7 downto 0) when cpu_ena = '1' else "00" & spcnt & pxcnt(1);
+
+-- write enable to working ram, sprite data ram and misc registers
+wram_we <= '1' when cpu_wr_n = '0' and cpu_ena = '1' and cpu_addr(15 downto 12) = X"A" else '0';
+spram1_we <= '1' when cpu_wr_n = '0' and cpu_ena = '1' and cpu_addr(15 downto 12) = X"B" and cpu_addr(10) = '0' else '0';
+spram2_we <= '1' when cpu_wr_n = '0' and cpu_ena = '1' and cpu_addr(15 downto 12) = X"B" and cpu_addr(10) = '1' else '0';
+C0xx_we <= '1' when cpu_wr_n = '0' and cpu_ena = '1' and cpu_addr(15 downto 12) = X"C" and cpu_addr(9 downto 8) = "00" else '0';
+C3xx_we <= '1' when cpu_wr_n = '0' and cpu_ena = '1' and cpu_addr(15 downto 12) = X"C" and cpu_addr(9 downto 8) = "11" else '0';
+
+-- Misc registers : interrupt enable/clear, cocktail flip, sound trigger
+-- m_mainlatch->q_out_cb<0>().set_nop();
+-- m_mainlatch->q_out_cb<4>().set_nop();
+-- m_mainlatch->q_out_cb<5>().set_nop();
+-- m_mainlatch->q_out_cb<6>().set_nop();
+
+process (clock_6)
+begin
+ if rising_edge(clock_6) then
+ if C0xx_we = '1' then
+ sound_cmd <= cpu_do;
+ end if;
+
+ if C3xx_we = '1' then
+-- if cpu_addr(3 downto 1) = "000" then itt_n <= cpu_do; end if;
+ if cpu_addr(3 downto 1) = "001" then flip <= not cpu_do(0); end if;
+ if cpu_addr(3 downto 1) = "010" then sound_trig <= cpu_do(0); end if;
+ end if;
+ cpu_nmi_n <= vblank;
+--cpu_int_n
+-- if itt_n(0) = '0' then
+-- cpu_nmi_n <= '1';
+-- else -- lauch nmi and end of frame
+-- if (vcnt = 493) and (hcnt = "000000") and (pxcnt = "000") then
+-- cpu_nmi_n <= '0';
+-- else
+-- cpu_nmi_n <= '1';
+-- end if;
+-- end if;
+ end if;
+end process;
+
+
+----------------------
+--- sprite machine ---
+----------------------
+-- sprite data rams are scanned from sprites addresse 31 to 8 at each line
+
+-- latch current sprite data with respect to pixel and hcnt in relation
+-- with sprite data ram addressing
+process (clock_6)
+begin
+ if rising_edge(clock_6) then
+
+ if (hcnt(0) = '0') and (pxcnt = "001") then
+ sp_posh <= spram1_do ; -- a.k.a. X
+ sp_attr <= spram2_do ; -- color and flip x/y
+ vcnt_r <= vcnt;
+ end if;
+
+ -- sprite is on current line if sp_line is below 16
+ -- and if sprite vertical position (a.k.a. Y) is below xF0
+ if (hcnt(0) = '0') and (pxcnt = "011") then
+ if sp_line(7 downto 4) = "0000" and spram2_do < X"F0" then
+ sp_on_line <= '1';
+ else
+ sp_on_line <= '0';
+ end if;
+ end if;
+
+ -- delay sp_color_set
+ if (hcnt(0) = '0') and (pxcnt = "100") then
+ sp_color_set <= sp_attr(5 downto 0);
+ end if;
+
+ end if;
+end process;
+
+-- sp_line (valid only when pxcnt = "011")
+sp_line <= not(vcnt_r(7 downto 0)) - spram2_do;
+
+-- address sprite graphics rom with sprite code and tile number and sprite line counter
+-- with respect to sprite flip x/y controls
+with sp_attr(7 downto 6) select
+ sp_graphx_addr <= spram1_do & sp_line(3) & hcnt(0) & pxcnt(2) & sp_line(2 downto 0) when "11",
+ spram1_do & sp_line(3) & not hcnt(0) & not pxcnt(2) & sp_line(2 downto 0) when "10",
+ spram1_do & not sp_line(3) & hcnt(0) & pxcnt(2) & not sp_line(2 downto 0) when "01",
+ spram1_do & not sp_line(3) & not hcnt(0) & not pxcnt(2) & not sp_line(2 downto 0) when others;
+
+-- latch and shift sprite graphics data with respect to flipx control
+-- 8bits => 4x2bits = 4pixels / 4colors (3colors + transparent)
+process (clock_6)
+begin
+ if rising_edge(clock_6) then
+
+ if pxcnt(1 downto 0) = "00" then
+ if sp_on_line = '1' then
+ if sp_attr(6) = '1' then
+ sp_pixels <= sp_graphx_do;
+ else
+ sp_pixels(3 downto 0) <= sp_graphx_do(0) & sp_graphx_do(1) & sp_graphx_do(2) & sp_graphx_do(3);
+ sp_pixels(7 downto 4) <= sp_graphx_do(4) & sp_graphx_do(5) & sp_graphx_do(6) & sp_graphx_do(7);
+ end if;
+ else
+ sp_pixels <= (others => '0');
+ end if;
+ else
+ sp_pixels(3 downto 0) <= sp_pixels(2 downto 0) & '0';
+ sp_pixels(7 downto 4) <= sp_pixels(6 downto 4) & '0';
+ end if;
+
+ end if;
+
+end process;
+
+-- address sprite color palette 4 colors, 64 sets => 16 colors
+sp_palette_addr <= sp_color_set & sp_pixels(3) & sp_pixels(7);
+
+-- write sprite to line buffer at posh position
+process (clock_6)
+begin
+ if rising_edge(clock_6) then
+ if hcnt(0) = '0' and pxcnt = "101" then
+ sp_buffer_write_addr <= sp_posh;
+ else
+ sp_buffer_write_addr <= sp_buffer_write_addr + '1';
+ end if;
+ end if;
+end process;
+
+-- write colors to buffer when not transparent
+sp_buffer_write_we <= '0' when sp_palette_do = "0000" else '1';
+
+-- read sprite line buffer and erase after read
+process (clock_12)
+begin
+ if rising_edge(clock_12) then
+ if hcnt = "101111" and pxcnt = "111" then
+ sp_buffer_read_addr <= "11111010"; -- tune horizontal position of sprites
+ else
+ if clock_6 = '0' then
+ sp_buffer_read_addr <= sp_buffer_read_addr + '1';
+ else
+ if vcnt(0) = '0' then
+ sp_read_out <= sp_buffer_ram1_do;
+ else
+ sp_read_out <= sp_buffer_ram2_do;
+ end if;
+ end if;
+ end if;
+ end if;
+end process;
+
+-- toggle read/write sprite line buffer every other line
+
+-- wait pxcnt = "101" to allow last sprite (#8) to be written to line buffer
+process (clock_6)
+begin
+ if rising_edge(clock_6) then
+ if pxcnt = "101" then sp_buffer_sel <= vcnt(0); end if;
+ end if;
+end process;
+
+sp_buffer_ram1_addr <= sp_buffer_read_addr when sp_buffer_sel = '0' else sp_buffer_write_addr;
+sp_buffer_ram2_addr <= sp_buffer_read_addr when sp_buffer_sel = '1' else sp_buffer_write_addr;
+
+sp_buffer_ram1_di <= "0000" when sp_buffer_sel = '0' else sp_palette_do;
+sp_buffer_ram2_di <= "0000" when sp_buffer_sel = '1' else sp_palette_do;
+
+sp_buffer_ram1_we <= not clock_6 when sp_buffer_sel = '0' else sp_buffer_write_we;
+sp_buffer_ram2_we <= not clock_6 when sp_buffer_sel = '1' else sp_buffer_write_we;
+
+--------------------
+--- char machine ---
+--------------------
+
+-- latch current char data with respect to vcnt and hcnt in relation
+-- with wram ram addressing
+process (clock_6)
+begin
+ if rising_edge(clock_6) and pxcnt = "001" then
+ ch_data1 <= wram_do ;
+ end if;
+
+ if rising_edge(clock_6) and pxcnt = "100" then
+ ch_color_set <= ch_data1(4 downto 0) ;
+ end if;
+
+end process;
+
+-- address char graphics rom with char code, pixel count and vertical line counter
+-- with respect to char flip x/y controls
+with ch_data1(7 downto 6) select
+ ch_graphx_addr_f <= ch_data1(5) & wram_do & pxcnt(2) & vcnt(2 downto 0) when "00",
+ ch_data1(5) & wram_do & not pxcnt(2) & vcnt(2 downto 0) when "01",
+ ch_data1(5) & wram_do & pxcnt(2) & not(vcnt(2 downto 0)) when "10",
+ ch_data1(5) & wram_do & not pxcnt(2) & not(vcnt(2 downto 0)) when others;
+
+-- in cocktail flip mode negate h/v counters
+ch_graphx_addr <= ch_graphx_addr_f when flip ='0' else ch_graphx_addr_f xor "0000000001111";
+
+-- latch and shift char graphics data with respect to flipx control and cocktail flip control
+-- 8bits => 4x2bits = 4pixels / 4colors
+process (clock_6)
+begin
+ if rising_edge(clock_6) then
+ if pxcnt(1 downto 0) = "00" then
+ if (ch_data1(6) xor flip) = '0' then
+ ch_pixels <= ch_graphx_do;
+ else
+ ch_pixels(3 downto 0) <= ch_graphx_do(0) & ch_graphx_do(1) &ch_graphx_do(2) &ch_graphx_do(3);
+ ch_pixels(7 downto 4) <= ch_graphx_do(4) & ch_graphx_do(5) &ch_graphx_do(6) &ch_graphx_do(7);
+ end if;
+ else
+ ch_pixels(3 downto 0) <= ch_pixels(2 downto 0) & '0';
+ ch_pixels(7 downto 4) <= ch_pixels(6 downto 4) & '0';
+ end if;
+ end if;
+
+end process;
+
+-- address char color palette 4 colors, 64 sets => 16 colors
+ch_palette_addr <= '0' & ch_color_set & ch_pixels(3) & ch_pixels(7);
+
+---------------------
+-- mux char/sprite --
+---------------------
+
+-- char data controls sprite display/hide
+process (clock_6)
+begin
+ if rising_edge(clock_6) then
+ sp_blank <= ch_color_set(4);
+ end if;
+end process;
+
+-- select rbg color and bank with respect to char/sprite selection
+rgb_palette_addr <=
+ '1' & ch_palette_do when (sp_read_out = "0000" or sp_blank = '1') else
+ '0' & sp_read_out;
+
+-- register and assign rbg palette output
+process (clock_6)
+begin
+ if rising_edge(clock_6) then
+ if hblank = '1' or vblank = '1' then
+ video_r <= "00000";
+ video_g <= "00000";
+ video_b <= "00000";
+ else
+ video_r <= rgb_palette_gr_do(5 downto 1);
+ video_g <= rgb_palette_bg_do(2 downto 0) & rgb_palette_gr_do(7 downto 6);
+ video_b <= rgb_palette_bg_do(7 downto 3);
+ end if;
+ end if;
+end process;
+
+video_hblank <= hblank;
+video_vblank <= vblank;
+
+----------------------------
+-- video syncs and blanks --
+----------------------------
+
+process(clock_6)
+ constant hcnt_base : integer := 36;
+ variable vsync_cnt : std_logic_vector(3 downto 0);
+begin
+ if rising_edge(clock_6) and pxcnt = "110" then
+
+ if hcnt = hcnt_base+0 then hsync0 <= '0';
+ elsif hcnt = hcnt_base+3 then hsync0 <= '1';
+ end if;
+
+ if hcnt = hcnt_base then
+ if vcnt = 500 then
+ vsync_cnt := X"0";
+ else
+ if vsync_cnt < X"F" then vsync_cnt := vsync_cnt + '1'; end if;
+ end if;
+ end if;
+
+ if hcnt = hcnt_base-4 then
+ hblank <= '1';
+ if vcnt = 490 then
+ vblank <= '1'; -- 492 ok
+ elsif vcnt = 262 then
+ vblank <= '0'; -- 262 ok
+ end if;
+ elsif hcnt = 0 then
+ hblank <= '0';
+ end if;
+
+ video_hs <= hsync0;
+
+ if vsync_cnt = 0 then video_vs <= '0';
+ elsif vsync_cnt = 8 then video_vs <= '1';
+ end if;
+
+ end if;
+end process;
+
+------------------------------
+-- components & sound board --
+------------------------------
+
+-- microprocessor Z80
+cpu : entity work.T80se
+generic map(Mode => 0, T2Write => 1, IOWait => 1)
+port map(
+ RESET_n => reset_n,
+ CLK_n => clock_6,
+ CLKEN => cpu_ena,
+ WAIT_n => '1',
+ INT_n => cpu_int_n,
+ NMI_n => cpu_nmi_n,
+ BUSRQ_n => '1',
+ M1_n => open,
+ MREQ_n => cpu_mreq_n,
+ IORQ_n => open,
+ RD_n => open,
+ WR_n => cpu_wr_n,
+ RFSH_n => open,
+ HALT_n => open,
+ BUSAK_n => open,
+ A => cpu_addr,
+ DI => cpu_di,
+ DO => cpu_do
+);
+
+-- cpu1 program ROM
+rom_cpu1 : entity work.time_pilot_prog
+port map(
+ clk => clock_6n,
+ addr => cpu_addr(14 downto 0),
+ data => cpu_rom_do
+);
+
+-- working/char RAM 0xA000-0xAFFF
+wram : entity work.gen_ram
+generic map( dWidth => 8, aWidth => 12)
+port map(
+ clk => clock_6n,
+ we => wram_we,
+ addr => wram_addr,
+ d => cpu_do,
+ q => wram_do
+);
+
+-- sprite RAM1 0xB000-0xB0FF
+spram1 : entity work.gen_ram
+generic map( dWidth => 8, aWidth => 8)
+port map(
+ clk => clock_6n,
+ we => spram1_we,
+ addr => spram_addr,
+ d => cpu_do,
+ q => spram1_do
+);
+
+-- sprite RAM2 0xB400-0xB4FF
+spram2 : entity work.gen_ram
+generic map( dWidth => 8, aWidth => 8)
+port map(
+ clk => clock_6n,
+ we => spram2_we,
+ addr => spram_addr,
+ d => cpu_do,
+ q => spram2_do
+);
+
+-- sprite line buffer 1
+splinebuf1 : entity work.gen_ram
+generic map( dWidth => 4, aWidth => 8)
+port map(
+ clk => clock_12n,
+ we => sp_buffer_ram1_we,
+ addr => sp_buffer_ram1_addr,
+ d => sp_buffer_ram1_di,
+ q => sp_buffer_ram1_do
+);
+
+-- sprite line buffer 2
+splinebuf2 : entity work.gen_ram
+generic map( dWidth => 4, aWidth => 8)
+port map(
+ clk => clock_12n,
+ we => sp_buffer_ram2_we,
+ addr => sp_buffer_ram2_addr,
+ d => sp_buffer_ram2_di,
+ q => sp_buffer_ram2_do
+);
+
+-- char graphics ROM
+char_graphics : entity work.time_pilot_char_grphx
+port map(
+ clk => clock_6,
+ addr => ch_graphx_addr,
+ data => ch_graphx_do
+);
+
+-- char palette ROM
+ch_palette : entity work.time_pilot_char_color_lut
+port map(
+ clk => clock_6,
+ addr => ch_palette_addr,
+ data => ch_palette_do
+);
+
+-- sprite graphics ROM
+sp_graphics : entity work.time_pilot_sprite_grphx
+port map(
+ clk => clock_6,
+ addr => sp_graphx_addr,
+ data => sp_graphx_do
+);
+
+-- sprite palette ROM
+sp_palette : entity work.time_pilot_sprite_color_lut
+port map(
+ clk => clock_6,
+ addr => sp_palette_addr,
+ data => sp_palette_do
+);
+
+-- rgb palette ROM 1
+rgb_palette_gb : entity work.time_pilot_palette_blue_green
+port map(
+ clk => clock_6,
+ addr => rgb_palette_addr,
+ data => rgb_palette_bg_do
+);
+
+-- rgb palette ROM 2
+rgb_palette_br : entity work.time_pilot_palette_green_red
+port map(
+ clk => clock_6,
+ addr => rgb_palette_addr,
+ data => rgb_palette_gr_do
+);
+
+-- sound board
+--time_pilot_sound_board : entity work.time_pilot_sound_board
+--port map(
+--clock_14 => clock_14,
+--reset => reset,
+
+--sound_trig => sound_trig,
+--sound_cmd => sound_cmd,
+
+--audio_out => audio_out,
+
+--dbg_cpu_addr => open
+--);
+
+end struct;
\ No newline at end of file
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_char_color_lut.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_char_color_lut.vhd
new file mode 100644
index 00000000..5bc294f3
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_char_color_lut.vhd
@@ -0,0 +1,38 @@
+library ieee;
+use ieee.std_logic_1164.all,ieee.numeric_std.all;
+
+entity time_pilot_char_color_lut is
+port (
+ clk : in std_logic;
+ addr : in std_logic_vector(7 downto 0);
+ data : out std_logic_vector(3 downto 0)
+);
+end entity;
+
+architecture prom of time_pilot_char_color_lut is
+ type rom is array(0 to 255) of std_logic_vector(3 downto 0);
+ signal rom_data: rom := (
+ "0000","1101","1111","1100","1010","0100","0001","1111","1011","0100","0001","1111","1100","0100","0001","1111",
+ "1110","0100","0001","1111","0000","0100","0001","1111","1010","0100","0101","0001","1011","0100","0101","0001",
+ "1100","0100","0101","0001","1110","0100","0101","0001","0000","0100","0101","0001","1010","0110","1000","0010",
+ "1011","0110","1000","0010","1100","0110","1000","0010","1110","0110","1000","0010","0000","0110","1000","0010",
+ "0000","0001","0100","1111","0000","0100","0010","0110","0000","0001","1000","0100","0000","1101","0001","0101",
+ "0000","0010","0011","0001","0000","1100","1111","0011","0000","0101","0010","1000","1010","0001","0100","0011",
+ "0000","0110","1111","0010","0000","1111","0011","0101","0000","0011","0001","1111","1010","0010","1101","0101",
+ "0000","0001","1111","1000","1010","0010","1101","0101","1010","1011","1001","1111","1001","1001","1001","1001",
+ "1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111",
+ "1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111",
+ "1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111",
+ "1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111",
+ "1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111",
+ "1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111",
+ "1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111",
+ "1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111","1111");
+begin
+process(clk)
+begin
+ if rising_edge(clk) then
+ data <= rom_data(to_integer(unsigned(addr)));
+ end if;
+end process;
+end architecture;
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_char_grphx.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_char_grphx.vhd
new file mode 100644
index 00000000..ed6bdea0
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_char_grphx.vhd
@@ -0,0 +1,534 @@
+library ieee;
+use ieee.std_logic_1164.all,ieee.numeric_std.all;
+
+entity time_pilot_char_grphx is
+port (
+ clk : in std_logic;
+ addr : in std_logic_vector(12 downto 0);
+ data : out std_logic_vector(7 downto 0)
+);
+end entity;
+
+architecture prom of time_pilot_char_grphx is
+ type rom is array(0 to 8191) of std_logic_vector(7 downto 0);
+ signal rom_data: rom := (
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"87",X"C3",X"E1",X"F0",X"F0",X"E1",X"C3",X"87",
+ X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"87",X"87",X"87",X"87",X"87",X"87",X"87",X"87",
+ X"0F",X"0F",X"F0",X"F0",X"F0",X"0F",X"0F",X"0F",X"0F",X"0F",X"F0",X"F0",X"F0",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"F0",X"78",X"3C",X"1E",X"0F",X"0F",X"0F",X"0F",X"F0",X"E1",X"C3",X"87",
+ X"00",X"00",X"00",X"FF",X"FF",X"11",X"11",X"11",X"00",X"00",X"00",X"FF",X"FF",X"88",X"88",X"88",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"FF",X"FF",X"88",X"88",
+ X"88",X"88",X"88",X"88",X"88",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"66",X"99",X"99",X"66",X"00",X"00",X"00",X"10",X"E0",X"00",X"00",X"00",X"00",X"00",
+ X"31",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"EC",X"EE",X"77",X"99",X"99",X"66",X"00",X"00",
+ X"00",X"00",X"66",X"F9",X"F9",X"66",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",
+ X"11",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",X"CC",X"EE",X"77",X"F9",X"F9",X"66",X"00",X"00",
+ X"11",X"32",X"74",X"74",X"75",X"32",X"01",X"00",X"CC",X"E2",X"E5",X"E9",X"E1",X"C2",X"0C",X"00",
+ X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",
+ X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"88",
+ X"11",X"11",X"11",X"FF",X"FF",X"11",X"11",X"11",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"88",
+ X"11",X"11",X"11",X"FF",X"FF",X"00",X"00",X"00",X"88",X"88",X"88",X"FF",X"FF",X"00",X"00",X"00",
+ X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"88",X"88",X"88",X"FF",X"FF",X"88",X"88",X"88",
+ X"00",X"00",X"00",X"FF",X"FF",X"11",X"11",X"11",X"00",X"00",X"00",X"FF",X"FF",X"88",X"88",X"88",
+ X"11",X"11",X"11",X"FF",X"FF",X"11",X"11",X"11",X"88",X"88",X"88",X"FF",X"FF",X"88",X"88",X"88",
+ X"00",X"00",X"00",X"FF",X"FF",X"11",X"11",X"11",X"00",X"00",X"00",X"88",X"88",X"88",X"88",X"88",
+ X"11",X"11",X"11",X"FF",X"FF",X"00",X"00",X"00",X"88",X"88",X"88",X"88",X"88",X"00",X"00",X"00",
+ X"11",X"11",X"11",X"11",X"11",X"00",X"00",X"00",X"88",X"88",X"88",X"FF",X"FF",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"11",X"11",X"11",X"11",X"11",X"00",X"00",X"00",X"FF",X"FF",X"88",X"88",X"88",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"70",X"F0",X"D2",X"A0",X"E1",X"B0",X"E2",X"70",X"90",X"42",X"02",X"7F",X"B7",X"74",X"59",X"20",
+ X"00",X"49",X"A4",X"CE",X"AA",X"0C",X"B4",X"50",X"A0",X"F0",X"70",X"B8",X"70",X"D0",X"F8",X"60",
+ X"70",X"F0",X"D0",X"F2",X"A4",X"93",X"35",X"7B",X"E0",X"70",X"F0",X"B2",X"58",X"24",X"82",X"ED",
+ X"37",X"73",X"39",X"46",X"90",X"F2",X"F0",X"70",X"CF",X"CE",X"89",X"A8",X"42",X"F8",X"F0",X"E0",
+ X"00",X"01",X"03",X"F7",X"F7",X"01",X"03",X"00",X"08",X"0C",X"0E",X"FF",X"FF",X"0C",X"0E",X"00",
+ X"71",X"F1",X"F1",X"F1",X"F1",X"F1",X"F1",X"71",X"80",X"F1",X"F1",X"F1",X"F1",X"F1",X"F1",X"80",
+ X"00",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"00",X"A4",X"B4",X"B4",X"B4",X"B4",X"B4",X"B4",X"A4",
+ X"70",X"F0",X"F0",X"FF",X"F0",X"70",X"70",X"77",X"E0",X"F0",X"F0",X"FF",X"F0",X"E0",X"E0",X"EE",
+ X"70",X"70",X"70",X"70",X"F0",X"0F",X"F0",X"70",X"E0",X"E0",X"E0",X"E0",X"F0",X"0F",X"F0",X"E0",
+ X"1E",X"1E",X"1E",X"1E",X"1E",X"1E",X"1E",X"1E",X"C3",X"C3",X"C3",X"C3",X"C3",X"C3",X"C3",X"C3",
+ X"1E",X"3C",X"78",X"F0",X"F0",X"78",X"3C",X"1E",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"F0",X"F0",X"F0",X"0F",X"0F",X"0F",X"0F",X"0F",X"F0",X"F0",X"F0",X"0F",X"0F",
+ X"1E",X"3C",X"78",X"F0",X"0F",X"0F",X"0F",X"0F",X"87",X"C3",X"E1",X"F0",X"0F",X"0F",X"0F",X"0F",
+ X"00",X"00",X"03",X"07",X"3F",X"3F",X"07",X"03",X"00",X"00",X"10",X"38",X"FC",X"FC",X"38",X"10",
+ X"70",X"F0",X"F7",X"FF",X"FF",X"FF",X"FF",X"F7",X"80",X"C0",X"E8",X"FC",X"FC",X"FC",X"FC",X"E8",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"F0",X"70",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"03",X"07",X"3F",X"3F",X"37",X"33",X"70",X"F0",X"00",X"08",X"0C",X"0C",X"08",X"00",X"80",X"C0",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"30",X"30",X"30",X"30",X"10",X"00",X"00",
+ X"F7",X"FF",X"FF",X"FF",X"FF",X"FF",X"F7",X"70",X"E8",X"FC",X"FC",X"FC",X"FC",X"EC",X"C8",X"80",
+ X"33",X"33",X"33",X"37",X"3F",X"3F",X"07",X"03",X"00",X"00",X"00",X"08",X"0C",X"0C",X"08",X"00",
+ X"FE",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"F0",X"C3",X"E1",X"87",X"F0",X"87",X"A5",X"A5",
+ X"F0",X"3C",X"F0",X"F0",X"F0",X"B4",X"B4",X"3C",X"F7",X"F3",X"F3",X"F3",X"F3",X"F3",X"F3",X"F3",
+ X"FC",X"FC",X"FC",X"F8",X"F0",X"F0",X"F0",X"88",X"F0",X"F0",X"F0",X"96",X"A5",X"B4",X"F0",X"00",
+ X"F0",X"B4",X"F0",X"F0",X"3C",X"F0",X"F0",X"00",X"F3",X"F3",X"F3",X"F1",X"F0",X"F0",X"F0",X"11",
+ X"07",X"03",X"01",X"30",X"71",X"71",X"30",X"10",X"0F",X"0F",X"0F",X"0F",X"CF",X"CB",X"C1",X"80",
+ X"00",X"30",X"70",X"F3",X"E3",X"43",X"07",X"07",X"00",X"00",X"80",X"0C",X"0E",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"1E",X"0C",X"00",X"08",X"0C",X"2C",X"7C",X"FC",X"E0",X"C0",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"08",X"0C",X"0E",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"EE",X"CC",X"88",X"B8",X"F8",X"F0",X"F0",X"F0",
+ X"77",X"33",X"11",X"D1",X"F1",X"F0",X"F0",X"F0",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F7",X"F3",
+ X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0E",X"0F",X"0F",X"0F",X"0F",X"0F",X"0C",X"00",X"00",
+ X"0C",X"0C",X"08",X"08",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",
+ X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"88",
+ X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",
+ X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"88",
+ X"30",X"43",X"87",X"87",X"87",X"87",X"43",X"30",X"C0",X"2C",X"1E",X"1E",X"1E",X"1E",X"2C",X"C0",
+ X"30",X"70",X"F0",X"F0",X"F0",X"F0",X"70",X"30",X"C0",X"E0",X"F0",X"F0",X"F0",X"F0",X"E0",X"C0",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"0F",X"78",X"78",X"78",X"78",X"78",X"78",X"0F",X"0F",X"E1",X"E1",X"E1",X"E1",X"E1",X"E1",X"0F",
+ X"0F",X"08",X"08",X"78",X"78",X"78",X"78",X"0F",X"0F",X"01",X"01",X"E1",X"E1",X"E1",X"E1",X"0F",
+ X"0F",X"08",X"08",X"08",X"78",X"78",X"78",X"0F",X"0F",X"01",X"01",X"01",X"E1",X"E1",X"E1",X"0F",
+ X"0F",X"08",X"08",X"08",X"08",X"08",X"78",X"0F",X"0F",X"01",X"01",X"01",X"01",X"01",X"E1",X"0F",
+ X"00",X"10",X"54",X"12",X"F1",X"12",X"54",X"10",X"00",X"00",X"44",X"08",X"E0",X"08",X"44",X"00",
+ X"0F",X"08",X"08",X"08",X"08",X"08",X"08",X"0F",X"0F",X"01",X"01",X"01",X"01",X"01",X"01",X"0F",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"01",X"12",X"34",X"79",X"79",X"34",X"12",X"01",X"08",X"84",X"C2",X"E9",X"E9",X"C2",X"84",X"08",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"0F",X"0F",X"0E",X"0E",X"E0",X"0E",X"0E",X"0F",X"0F",X"0F",X"44",X"66",X"77",X"66",X"44",X"0F",
+ X"0F",X"0F",X"66",X"66",X"66",X"66",X"66",X"0F",X"0F",X"0F",X"07",X"07",X"70",X"07",X"07",X"0F",
+ X"0C",X"3F",X"3F",X"0C",X"0C",X"0F",X"0F",X"0F",X"01",X"EF",X"EF",X"01",X"01",X"87",X"87",X"87",
+ X"0F",X"0F",X"0F",X"0C",X"0C",X"3F",X"1D",X"0C",X"87",X"87",X"87",X"01",X"01",X"EF",X"CD",X"89",
+ X"0F",X"0F",X"0F",X"0F",X"F0",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"F0",X"87",X"87",X"87",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"FF",X"FF",X"88",X"88",
+ X"88",X"88",X"88",X"88",X"88",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"66",X"99",X"99",X"66",X"00",X"00",X"00",X"10",X"E0",X"00",X"00",X"00",X"00",X"00",
+ X"31",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"EC",X"EE",X"77",X"99",X"99",X"66",X"00",X"00",
+ X"00",X"00",X"66",X"F9",X"F9",X"66",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",
+ X"11",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",X"CC",X"EE",X"77",X"F9",X"F9",X"66",X"00",X"00",
+ X"11",X"32",X"74",X"74",X"75",X"32",X"01",X"00",X"CC",X"E2",X"E5",X"E9",X"E1",X"C2",X"0C",X"00",
+ X"0F",X"0F",X"0F",X"0F",X"F0",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"F0",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"87",X"87",X"87",X"87",X"87",X"87",X"87",X"87",
+ X"0F",X"0F",X"0F",X"0F",X"F0",X"0F",X"0F",X"0F",X"87",X"87",X"87",X"87",X"87",X"87",X"87",X"87",
+ X"0F",X"0F",X"0F",X"0F",X"F0",X"0F",X"0F",X"0F",X"87",X"87",X"87",X"87",X"F0",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"87",X"87",X"87",X"87",X"F0",X"87",X"87",X"87",
+ X"0F",X"0F",X"0F",X"0F",X"F0",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"F0",X"87",X"87",X"87",
+ X"0F",X"0F",X"0F",X"0F",X"F0",X"0F",X"0F",X"0F",X"87",X"87",X"87",X"87",X"F0",X"87",X"87",X"87",
+ X"0F",X"0F",X"0F",X"0F",X"F0",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"87",X"87",X"87",X"87",
+ X"0F",X"0F",X"0F",X"0F",X"F0",X"0F",X"0F",X"0F",X"87",X"87",X"87",X"87",X"87",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"87",X"87",X"87",X"87",X"F0",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"F0",X"87",X"87",X"87",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0F",X"0F",X"0F",X"0E",X"E0",X"0E",X"0F",X"0F",X"0F",X"2F",X"03",X"41",X"B4",X"12",X"A3",X"0F",
+ X"0F",X"0F",X"4C",X"04",X"A0",X"0A",X"4C",X"0F",X"0F",X"0F",X"0F",X"07",X"70",X"07",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0E",X"0C",X"1C",X"0F",X"1D",X"87",X"87",X"87",X"03",X"41",X"05",X"83",X"C3",
+ X"0E",X"1D",X"0F",X"1C",X"0E",X"0F",X"0F",X"0F",X"C3",X"85",X"C3",X"41",X"03",X"87",X"87",X"87",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0F",X"0F",X"0F",X"0E",X"E0",X"0E",X"0F",X"0F",X"0F",X"0F",X"45",X"44",X"44",X"44",X"45",X"0F",
+ X"0F",X"0F",X"0C",X"88",X"88",X"88",X"0C",X"0F",X"0F",X"0F",X"0F",X"07",X"70",X"07",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0E",X"0C",X"3F",X"0C",X"0E",X"87",X"87",X"87",X"03",X"01",X"EF",X"01",X"03",
+ X"1F",X"0E",X"0C",X"0C",X"0E",X"0F",X"0F",X"0F",X"CF",X"03",X"01",X"01",X"03",X"87",X"87",X"87",
+ X"0F",X"0F",X"0E",X"0E",X"E0",X"0E",X"0E",X"0F",X"0F",X"0F",X"66",X"66",X"66",X"66",X"66",X"0F",
+ X"0F",X"0F",X"22",X"66",X"EE",X"66",X"22",X"0F",X"0F",X"0F",X"07",X"07",X"70",X"07",X"07",X"0F",
+ X"0F",X"0F",X"0F",X"0C",X"0C",X"3F",X"3F",X"0C",X"87",X"87",X"87",X"01",X"01",X"EF",X"EF",X"01",
+ X"0C",X"1D",X"3F",X"0C",X"0C",X"0F",X"0F",X"0F",X"89",X"CD",X"EF",X"01",X"01",X"87",X"87",X"87",
+ X"00",X"00",X"03",X"07",X"3F",X"3F",X"07",X"03",X"00",X"00",X"10",X"38",X"FC",X"FC",X"38",X"10",
+ X"0F",X"3C",X"0F",X"2D",X"E1",X"2D",X"0F",X"3C",X"0F",X"C3",X"4B",X"4B",X"78",X"4B",X"4B",X"C3",
+ X"0F",X"0F",X"0F",X"0F",X"2D",X"0F",X"0F",X"0F",X"0F",X"0F",X"2D",X"A5",X"B4",X"A5",X"2D",X"0F",
+ X"F0",X"70",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"03",X"07",X"3F",X"3F",X"37",X"33",X"70",X"F0",X"00",X"08",X"0C",X"0C",X"08",X"00",X"80",X"C0",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"30",X"30",X"30",X"30",X"10",X"00",X"00",
+ X"F7",X"FF",X"FF",X"FF",X"FF",X"FF",X"F7",X"70",X"E8",X"FC",X"FC",X"FC",X"FC",X"EC",X"C8",X"80",
+ X"33",X"33",X"33",X"37",X"3F",X"3F",X"07",X"03",X"00",X"00",X"00",X"08",X"0C",X"0C",X"08",X"00",
+ X"FE",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"F0",X"C3",X"E1",X"87",X"F0",X"87",X"A5",X"A5",
+ X"F0",X"3C",X"F0",X"F0",X"F0",X"B4",X"B4",X"3C",X"F7",X"F3",X"F3",X"F3",X"F3",X"F3",X"F3",X"F3",
+ X"FC",X"FC",X"FC",X"F8",X"F0",X"F0",X"F0",X"88",X"F0",X"F0",X"F0",X"96",X"A5",X"B4",X"F0",X"00",
+ X"F0",X"B4",X"F0",X"F0",X"3C",X"F0",X"F0",X"00",X"F3",X"F3",X"F3",X"F1",X"F0",X"F0",X"F0",X"11",
+ X"0F",X"0E",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"25",X"21",X"01",X"08",X"48",X"86",X"87",X"87",
+ X"0F",X"0F",X"0F",X"0F",X"F0",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"E1",X"2D",X"2D",X"2D",
+ X"0F",X"0F",X"0F",X"F0",X"07",X"03",X"07",X"0F",X"0F",X"0F",X"0F",X"F0",X"0F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"EE",X"CC",X"88",X"B8",X"F8",X"F0",X"F0",X"F0",
+ X"77",X"33",X"11",X"D1",X"F1",X"F0",X"F0",X"F0",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F7",X"F3",
+ X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"1F",X"0F",X"0F",X"0F",X"0F",X"0F",X"3F",X"FF",X"FF",
+ X"3F",X"3F",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"CE",X"9C",X"99",X"98",X"99",X"99",X"C9",X"FF",X"37",X"93",X"19",X"11",X"F9",X"F9",X"19",X"FF",
+ X"8C",X"99",X"99",X"89",X"99",X"99",X"8C",X"FF",X"33",X"99",X"9F",X"3F",X"9F",X"99",X"33",X"FF",
+ X"88",X"99",X"99",X"98",X"99",X"99",X"88",X"FF",X"71",X"3F",X"9F",X"97",X"9F",X"3F",X"71",X"FF",
+ X"8C",X"99",X"99",X"89",X"99",X"99",X"9C",X"FF",X"13",X"F9",X"FF",X"71",X"F9",X"F9",X"F3",X"FF",
+ X"9C",X"9E",X"9E",X"8E",X"9E",X"9E",X"9C",X"FF",X"93",X"97",X"97",X"17",X"97",X"97",X"93",X"FF",
+ X"E9",X"F9",X"F8",X"F8",X"F8",X"99",X"C9",X"FF",X"19",X"33",X"37",X"3F",X"37",X"33",X"79",X"FF",
+ X"99",X"98",X"98",X"99",X"99",X"99",X"89",X"FF",X"FC",X"F8",X"F0",X"F4",X"FC",X"FC",X"1C",X"FF",
+ X"9C",X"89",X"89",X"89",X"99",X"99",X"9C",X"FF",X"93",X"99",X"19",X"19",X"19",X"99",X"93",X"FF",
+ X"8C",X"99",X"99",X"89",X"99",X"9C",X"9F",X"FF",X"33",X"99",X"99",X"39",X"F9",X"F3",X"F1",X"FF",
+ X"8C",X"99",X"99",X"8C",X"8F",X"99",X"9C",X"FF",X"33",X"99",X"9F",X"33",X"79",X"39",X"93",X"FF",
+ X"89",X"E9",X"E9",X"E9",X"E9",X"E9",X"EC",X"FF",X"19",X"79",X"79",X"79",X"79",X"79",X"73",X"FF",
+ X"99",X"99",X"99",X"99",X"98",X"C8",X"E9",X"FF",X"9C",X"9C",X"9C",X"94",X"90",X"38",X"7C",X"FF",
+ X"99",X"99",X"C9",X"EC",X"CE",X"9E",X"9E",X"FF",X"99",X"99",X"39",X"73",X"37",X"97",X"97",X"FF",
+ X"8C",X"FC",X"FC",X"EC",X"CC",X"9C",X"8C",X"FF",X"13",X"9F",X"3F",X"7F",X"FF",X"FF",X"13",X"FF",
+ X"FC",X"EF",X"CF",X"0F",X"CF",X"9F",X"0C",X"FF",X"13",X"F3",X"F3",X"13",X"F3",X"F3",X"03",X"FF",
+ X"FF",X"EE",X"CC",X"88",X"E8",X"EC",X"EE",X"EF",X"FF",X"7F",X"3F",X"10",X"70",X"7F",X"7F",X"7F",
+ X"FE",X"FE",X"FE",X"FE",X"FF",X"FF",X"FE",X"FF",X"F7",X"F7",X"F7",X"F7",X"FF",X"FF",X"F7",X"FF",
+ X"99",X"99",X"90",X"F9",X"F0",X"F9",X"F9",X"FF",X"99",X"99",X"90",X"F9",X"F0",X"F9",X"F9",X"FF",
+ X"E9",X"C9",X"9F",X"CE",X"FC",X"89",X"EB",X"FF",X"7D",X"19",X"F3",X"37",X"9F",X"39",X"79",X"FF",
+ X"CF",X"9F",X"CE",X"CF",X"9F",X"9F",X"CF",X"FF",X"39",X"93",X"37",X"7F",X"8F",X"9F",X"0F",X"FF",
+ X"FC",X"EE",X"CF",X"CF",X"CF",X"EE",X"FC",X"FF",X"3F",X"77",X"F3",X"F3",X"F3",X"77",X"3F",X"FF",
+ X"FF",X"9E",X"CE",X"08",X"CE",X"9E",X"FF",X"FF",X"FF",X"97",X"37",X"01",X"37",X"97",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"F8",X"FF",X"EF",X"EF",X"CF",X"FF",X"FF",X"FF",X"F1",X"FF",X"7F",X"7F",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FE",X"EC",X"E9",X"FF",X"FF",X"FC",X"F9",X"F3",X"F7",X"7F",X"7F",X"FF",
+ X"CE",X"9E",X"9C",X"8E",X"9E",X"9E",X"C8",X"FF",X"37",X"97",X"17",X"97",X"97",X"97",X"31",X"FF",
+ X"CC",X"99",X"FF",X"FE",X"CF",X"99",X"8C",X"FF",X"33",X"99",X"99",X"33",X"F9",X"F9",X"13",X"FF",
+ X"F8",X"F9",X"E8",X"9F",X"8F",X"F9",X"FC",X"FF",X"91",X"1F",X"13",X"99",X"09",X"99",X"93",X"FF",
+ X"C8",X"99",X"9F",X"8E",X"9E",X"9E",X"CE",X"FF",X"31",X"99",X"F3",X"37",X"97",X"97",X"37",X"FF",
+ X"CC",X"99",X"99",X"CC",X"9F",X"99",X"CC",X"FF",X"33",X"99",X"99",X"31",X"99",X"99",X"33",X"FF",
+ X"FF",X"FF",X"EE",X"FF",X"FF",X"EE",X"FE",X"FC",X"FF",X"FF",X"77",X"FF",X"FF",X"77",X"F7",X"FF",
+ X"FF",X"EF",X"C8",X"9F",X"C8",X"EF",X"FF",X"FF",X"1F",X"7F",X"F1",X"FF",X"F1",X"7F",X"1F",X"FF",
+ X"8C",X"E9",X"FF",X"FF",X"FE",X"EF",X"8E",X"FF",X"F3",X"79",X"39",X"93",X"37",X"7F",X"F7",X"FF",
+ X"FF",X"FE",X"FC",X"08",X"08",X"FE",X"FC",X"FF",X"F7",X"F3",X"F1",X"00",X"00",X"F3",X"F1",X"FF",
+ X"EF",X"EF",X"EF",X"E0",X"E0",X"EF",X"EF",X"EF",X"7F",X"7F",X"7F",X"70",X"70",X"7F",X"7F",X"7F",
+ X"FF",X"F0",X"00",X"0F",X"FF",X"FF",X"FF",X"FF",X"FF",X"F0",X"00",X"0F",X"FF",X"FF",X"FF",X"FF",
+ X"FC",X"FC",X"FC",X"FC",X"0C",X"0C",X"FC",X"FC",X"FF",X"FF",X"FF",X"FF",X"0F",X"0F",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"F1",X"F0",X"FC",X"FE",X"FE",X"3F",X"3F",X"3F",X"3F",X"3F",X"37",X"37",X"37",
+ X"EE",X"EE",X"EC",X"F0",X"F1",X"FF",X"FF",X"FF",X"77",X"77",X"37",X"0F",X"8F",X"FF",X"FF",X"FF",
+ X"33",X"31",X"38",X"3C",X"3E",X"3F",X"0F",X"0F",X"FF",X"FF",X"FF",X"F7",X"F3",X"F1",X"08",X"0C",
+ X"F0",X"F0",X"F3",X"E3",X"C3",X"83",X"13",X"33",X"C0",X"80",X"1F",X"3F",X"7F",X"FF",X"FF",X"FF",
+ X"0F",X"0C",X"F8",X"F8",X"F8",X"F8",X"FC",X"FF",X"0F",X"03",X"C1",X"C1",X"C1",X"C1",X"C3",X"CF",
+ X"FC",X"F8",X"F8",X"F8",X"FC",X"0E",X"0F",X"FF",X"F9",X"F0",X"F0",X"F0",X"F1",X"03",X"07",X"FF",
+ X"9F",X"9F",X"9F",X"9F",X"9F",X"9E",X"9E",X"9E",X"FF",X"FF",X"FF",X"F8",X"F0",X"F3",X"F7",X"F7",
+ X"3F",X"1C",X"88",X"C9",X"C9",X"88",X"1C",X"3F",X"CF",X"83",X"11",X"39",X"39",X"11",X"83",X"CF",
+ X"EF",X"EF",X"9F",X"9F",X"EF",X"EF",X"CF",X"FF",X"79",X"79",X"99",X"99",X"79",X"79",X"39",X"F9",
+ X"FE",X"EE",X"CE",X"80",X"C0",X"EE",X"FE",X"FE",X"77",X"37",X"17",X"00",X"10",X"37",X"77",X"F7",
+ X"3E",X"3E",X"CE",X"CE",X"3E",X"3E",X"CE",X"CE",X"F7",X"F7",X"F7",X"F7",X"F7",X"F7",X"F7",X"F7",
+ X"F0",X"F8",X"FC",X"CE",X"8F",X"CF",X"CF",X"FF",X"F0",X"F0",X"C0",X"10",X"90",X"98",X"9C",X"FE",
+ X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"F0",X"F0",X"FF",X"FF",X"0F",X"0F",X"0F",X"0F",X"F0",X"F0",X"FF",X"FF",X"0F",X"0F",X"0F",X"0F",
+ X"F3",X"F3",X"F3",X"F3",X"F3",X"F3",X"03",X"03",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"0F",X"0F",
+ X"3F",X"3F",X"CF",X"CF",X"3F",X"3F",X"CF",X"CF",X"3C",X"3C",X"CC",X"CC",X"3C",X"3C",X"CC",X"CC",
+ X"F0",X"F0",X"F0",X"F0",X"30",X"31",X"C3",X"C7",X"F0",X"F1",X"F3",X"F7",X"3F",X"3F",X"CF",X"CF",
+ X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"C7",X"C7",X"C7",X"C0",X"C0",X"C7",X"C7",X"C7",
+ X"FE",X"FE",X"FE",X"FE",X"FE",X"FF",X"FF",X"FF",X"F7",X"F7",X"F7",X"F0",X"00",X"0F",X"0F",X"0F",
+ X"FF",X"FF",X"FF",X"0F",X"0F",X"EF",X"E0",X"E0",X"FF",X"FF",X"FF",X"7F",X"7F",X"7F",X"70",X"70",
+ X"FE",X"FE",X"FE",X"E0",X"E0",X"EF",X"EF",X"EF",X"F7",X"F7",X"F7",X"00",X"00",X"7F",X"7F",X"7F",
+ X"FE",X"FE",X"FE",X"00",X"00",X"EE",X"EE",X"EE",X"F7",X"F7",X"F7",X"07",X"07",X"77",X"77",X"77",
+ X"31",X"31",X"31",X"31",X"31",X"31",X"31",X"31",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"F0",X"F0",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"80",X"80",X"8F",X"8F",X"8F",X"8F",X"8F",X"8F",
+ X"5A",X"5A",X"5A",X"5A",X"5A",X"5A",X"5A",X"5A",X"5A",X"5A",X"5A",X"5A",X"5A",X"5A",X"5A",X"5A",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"0F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"00",X"77",X"0F",X"0B",X"78",X"7F",X"67",X"30",X"00",X"C2",X"62",X"62",X"62",X"6E",X"6C",X"C0",
+ X"00",X"33",X"77",X"DD",X"DD",X"77",X"33",X"00",X"00",X"EE",X"EE",X"00",X"00",X"EE",X"EE",X"00",
+ X"00",X"66",X"FF",X"99",X"99",X"FF",X"FF",X"00",X"00",X"CC",X"EE",X"22",X"22",X"EE",X"EE",X"00",
+ X"00",X"44",X"CC",X"88",X"88",X"FF",X"77",X"00",X"00",X"44",X"66",X"22",X"22",X"EE",X"CC",X"00",
+ X"00",X"33",X"77",X"CC",X"88",X"FF",X"FF",X"00",X"00",X"88",X"CC",X"66",X"22",X"EE",X"EE",X"00",
+ X"00",X"88",X"88",X"99",X"99",X"FF",X"FF",X"00",X"00",X"22",X"22",X"22",X"22",X"EE",X"EE",X"00",
+ X"00",X"88",X"88",X"99",X"99",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",
+ X"00",X"55",X"DD",X"99",X"88",X"FF",X"77",X"00",X"00",X"CC",X"EE",X"22",X"22",X"EE",X"CC",X"00",
+ X"00",X"FF",X"FF",X"11",X"11",X"FF",X"FF",X"00",X"00",X"EE",X"EE",X"00",X"00",X"EE",X"EE",X"00",
+ X"00",X"00",X"88",X"FF",X"FF",X"88",X"00",X"00",X"00",X"00",X"22",X"EE",X"EE",X"22",X"00",X"00",
+ X"00",X"88",X"FF",X"FF",X"88",X"00",X"00",X"00",X"00",X"00",X"CC",X"EE",X"22",X"66",X"44",X"00",
+ X"00",X"88",X"CC",X"66",X"33",X"FF",X"FF",X"00",X"00",X"22",X"66",X"CC",X"88",X"EE",X"EE",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"22",X"22",X"22",X"22",X"EE",X"EE",X"00",
+ X"FF",X"FF",X"66",X"33",X"66",X"FF",X"FF",X"00",X"EE",X"EE",X"00",X"00",X"00",X"EE",X"EE",X"00",
+ X"00",X"FF",X"FF",X"33",X"77",X"FF",X"FF",X"00",X"00",X"EE",X"EE",X"88",X"00",X"EE",X"EE",X"00",
+ X"00",X"77",X"FF",X"88",X"88",X"FF",X"77",X"00",X"00",X"CC",X"EE",X"22",X"22",X"EE",X"CC",X"00",
+ X"00",X"66",X"FF",X"99",X"99",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",
+ X"00",X"77",X"FF",X"88",X"88",X"FF",X"77",X"00",X"00",X"AA",X"EE",X"66",X"44",X"CC",X"88",X"00",
+ X"00",X"66",X"FF",X"99",X"99",X"FF",X"FF",X"00",X"00",X"22",X"66",X"CC",X"88",X"EE",X"EE",X"00",
+ X"00",X"44",X"DD",X"99",X"99",X"FF",X"66",X"00",X"00",X"CC",X"EE",X"22",X"22",X"66",X"44",X"00",
+ X"00",X"88",X"88",X"FF",X"FF",X"88",X"88",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",X"00",X"00",
+ X"00",X"FF",X"FF",X"00",X"00",X"FF",X"FF",X"00",X"00",X"CC",X"EE",X"22",X"22",X"EE",X"CC",X"00",
+ X"00",X"FF",X"FF",X"00",X"00",X"FF",X"FF",X"00",X"00",X"88",X"CC",X"66",X"66",X"CC",X"88",X"00",
+ X"FF",X"FF",X"00",X"11",X"00",X"FF",X"FF",X"00",X"EE",X"EE",X"CC",X"88",X"CC",X"EE",X"EE",X"00",
+ X"00",X"CC",X"EE",X"33",X"33",X"EE",X"CC",X"00",X"00",X"66",X"EE",X"88",X"88",X"EE",X"66",X"00",
+ X"00",X"EE",X"FF",X"11",X"11",X"FF",X"EE",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",X"00",X"00",
+ X"00",X"CC",X"EE",X"BB",X"99",X"88",X"88",X"00",X"00",X"22",X"22",X"22",X"AA",X"EE",X"66",X"00",
+ X"00",X"00",X"88",X"88",X"FF",X"FF",X"00",X"00",X"00",X"00",X"22",X"22",X"EE",X"EE",X"00",X"00",
+ X"00",X"99",X"99",X"99",X"77",X"33",X"11",X"11",X"22",X"22",X"22",X"22",X"AA",X"EE",X"66",X"22",
+ X"00",X"00",X"FF",X"FF",X"88",X"88",X"00",X"00",X"00",X"00",X"EE",X"EE",X"22",X"22",X"00",X"00",
+ X"00",X"11",X"33",X"77",X"77",X"33",X"11",X"00",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",
+ X"11",X"11",X"11",X"11",X"77",X"33",X"11",X"00",X"88",X"88",X"88",X"88",X"EE",X"CC",X"88",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"22",X"22",X"00",X"00",X"00",
+ X"00",X"EE",X"EE",X"00",X"00",X"EE",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"22",X"FF",X"FF",X"22",X"22",X"FF",X"FF",X"22",X"88",X"EE",X"EE",X"88",X"88",X"EE",X"EE",X"88",
+ X"00",X"44",X"55",X"DD",X"DD",X"77",X"22",X"00",X"00",X"88",X"CC",X"66",X"66",X"44",X"44",X"00",
+ X"00",X"CC",X"66",X"33",X"11",X"CC",X"CC",X"00",X"00",X"66",X"66",X"00",X"88",X"CC",X"66",X"00",
+ X"00",X"44",X"EE",X"BB",X"BB",X"FF",X"44",X"00",X"AA",X"EE",X"EE",X"22",X"22",X"EE",X"CC",X"00",
+ X"00",X"88",X"CC",X"66",X"22",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"88",X"CC",X"77",X"33",X"00",X"00",X"00",X"00",X"22",X"66",X"CC",X"88",X"00",X"00",
+ X"00",X"00",X"33",X"77",X"CC",X"88",X"00",X"00",X"00",X"00",X"88",X"CC",X"66",X"22",X"00",X"00",
+ X"11",X"55",X"77",X"33",X"33",X"77",X"55",X"11",X"00",X"44",X"CC",X"88",X"88",X"CC",X"44",X"00",
+ X"00",X"11",X"11",X"77",X"77",X"11",X"11",X"00",X"00",X"00",X"00",X"CC",X"CC",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"66",X"77",X"11",X"00",X"00",
+ X"00",X"11",X"11",X"11",X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"66",X"66",X"00",X"00",X"00",
+ X"44",X"66",X"33",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"CC",X"66",X"22",X"00",
+ X"00",X"77",X"FF",X"AA",X"99",X"FF",X"77",X"00",X"00",X"CC",X"EE",X"22",X"22",X"EE",X"CC",X"00",
+ X"00",X"00",X"00",X"FF",X"FF",X"22",X"00",X"00",X"00",X"22",X"22",X"EE",X"EE",X"22",X"22",X"00",
+ X"00",X"66",X"FF",X"99",X"88",X"CC",X"44",X"00",X"00",X"22",X"22",X"22",X"AA",X"EE",X"66",X"00",
+ X"00",X"66",X"FF",X"99",X"99",X"CC",X"44",X"00",X"00",X"CC",X"EE",X"22",X"22",X"66",X"44",X"00",
+ X"00",X"FF",X"FF",X"66",X"22",X"11",X"11",X"00",X"88",X"EE",X"EE",X"88",X"88",X"88",X"88",X"00",
+ X"00",X"99",X"BB",X"AA",X"AA",X"EE",X"EE",X"00",X"00",X"CC",X"EE",X"22",X"22",X"66",X"44",X"00",
+ X"00",X"44",X"DD",X"99",X"99",X"FF",X"77",X"00",X"00",X"CC",X"EE",X"22",X"22",X"EE",X"CC",X"00",
+ X"00",X"CC",X"EE",X"BB",X"99",X"CC",X"CC",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",X"00",X"00",
+ X"00",X"66",X"FF",X"99",X"99",X"FF",X"66",X"00",X"00",X"CC",X"EE",X"22",X"22",X"EE",X"CC",X"00",
+ X"00",X"77",X"FF",X"99",X"99",X"FF",X"66",X"00",X"00",X"CC",X"EE",X"22",X"22",X"66",X"44",X"00",
+ X"00",X"00",X"00",X"22",X"22",X"00",X"00",X"00",X"00",X"00",X"00",X"44",X"44",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"22",X"22",X"00",X"00",X"00",X"00",X"00",X"00",X"66",X"77",X"11",X"00",X"00",
+ X"00",X"88",X"88",X"CC",X"66",X"33",X"11",X"00",X"00",X"22",X"22",X"66",X"CC",X"88",X"00",X"00",
+ X"00",X"22",X"22",X"22",X"22",X"22",X"22",X"00",X"00",X"88",X"88",X"88",X"88",X"88",X"88",X"00",
+ X"00",X"11",X"33",X"66",X"CC",X"88",X"88",X"00",X"00",X"00",X"88",X"CC",X"66",X"22",X"22",X"00",
+ X"00",X"66",X"FF",X"99",X"88",X"CC",X"44",X"00",X"00",X"00",X"00",X"AA",X"AA",X"00",X"00",X"00",
+ X"00",X"00",X"70",X"D0",X"80",X"D0",X"F0",X"00",X"00",X"00",X"00",X"80",X"80",X"F0",X"F0",X"00",
+ X"00",X"00",X"60",X"C0",X"C0",X"F0",X"70",X"00",X"00",X"00",X"60",X"30",X"30",X"F0",X"E0",X"00",
+ X"00",X"00",X"00",X"70",X"90",X"F0",X"F0",X"00",X"00",X"00",X"E0",X"B0",X"10",X"B0",X"F0",X"00",
+ X"00",X"00",X"10",X"10",X"10",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"70",X"20",X"00",X"00",X"00",X"00",X"00",X"10",X"F0",X"10",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"70",X"40",X"40",X"40",X"00",X"00",X"00",X"00",X"90",X"90",X"90",X"F0",X"00",
+ X"00",X"00",X"00",X"70",X"40",X"40",X"40",X"00",X"00",X"00",X"00",X"F0",X"90",X"90",X"10",X"00",
+ X"00",X"00",X"00",X"00",X"10",X"00",X"70",X"00",X"00",X"00",X"00",X"80",X"E0",X"80",X"80",X"00",
+ X"00",X"00",X"00",X"40",X"40",X"40",X"70",X"00",X"00",X"00",X"00",X"F0",X"90",X"90",X"90",X"00",
+ X"00",X"00",X"00",X"40",X"40",X"40",X"70",X"00",X"00",X"00",X"00",X"F0",X"90",X"90",X"F0",X"00",
+ X"00",X"00",X"00",X"70",X"40",X"40",X"40",X"00",X"00",X"00",X"00",X"00",X"80",X"70",X"00",X"00",
+ X"00",X"00",X"00",X"70",X"40",X"40",X"70",X"00",X"00",X"00",X"00",X"F0",X"90",X"90",X"F0",X"00",
+ X"00",X"00",X"00",X"70",X"40",X"40",X"70",X"00",X"00",X"00",X"00",X"F0",X"80",X"80",X"80",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"F0",X"40",X"00",X"00",X"00",X"00",X"10",X"F0",X"F0",X"10",X"00",
+ X"00",X"00",X"F0",X"90",X"90",X"F0",X"00",X"00",X"00",X"F0",X"F0",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"10",X"F0",X"90",X"90",X"F0",X"10",X"00",X"F0",X"F0",X"10",X"10",X"10",X"10",X"F0",X"00",
+ X"33",X"44",X"88",X"8A",X"8A",X"89",X"44",X"33",X"CC",X"22",X"11",X"15",X"15",X"19",X"22",X"CC",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF");
+begin
+process(clk)
+begin
+ if rising_edge(clk) then
+ data <= rom_data(to_integer(unsigned(addr)));
+ end if;
+end process;
+end architecture;
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_mist.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_mist.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_mist.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_mist.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_palette_blue_green.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_palette_blue_green.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_palette_blue_green.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_palette_blue_green.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_palette_green_red.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_palette_green_red.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_palette_green_red.vhd
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_palette_green_red.vhd
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_prog.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_prog.vhd
new file mode 100644
index 00000000..a2c7eddb
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_prog.vhd
@@ -0,0 +1,1558 @@
+library ieee;
+use ieee.std_logic_1164.all,ieee.numeric_std.all;
+
+entity time_pilot_prog is
+port (
+ clk : in std_logic;
+ addr : in std_logic_vector(14 downto 0);
+ data : out std_logic_vector(7 downto 0)
+);
+end entity;
+
+architecture prom of time_pilot_prog is
+ type rom is array(0 to 24575) of std_logic_vector(7 downto 0);
+ signal rom_data: rom := (
+ X"F3",X"C3",X"00",X"30",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"08",X"D9",X"DD",X"E5",X"FD",X"E5",X"3E",X"01",X"32",X"00",
+ X"C2",X"3A",X"A9",X"A8",X"FE",X"FF",X"20",X"05",X"3E",X"00",X"32",X"A9",X"A8",X"3A",X"A9",X"A8",
+ X"E6",X"0F",X"32",X"A9",X"A8",X"3A",X"F5",X"A8",X"3C",X"32",X"F5",X"A8",X"E6",X"01",X"CA",X"DF",
+ X"00",X"3A",X"F3",X"A8",X"FE",X"00",X"C2",X"B2",X"00",X"21",X"40",X"B0",X"11",X"10",X"B0",X"01",
+ X"2F",X"00",X"ED",X"B0",X"21",X"40",X"B4",X"11",X"10",X"B4",X"01",X"2F",X"00",X"ED",X"B0",X"C3",
+ X"DE",X"00",X"21",X"40",X"B0",X"11",X"10",X"B0",X"01",X"F0",X"18",X"7E",X"2F",X"D6",X"10",X"12",
+ X"23",X"13",X"ED",X"A0",X"10",X"F5",X"21",X"40",X"B4",X"11",X"10",X"B4",X"01",X"F0",X"18",X"7E",
+ X"EE",X"C0",X"12",X"23",X"13",X"7E",X"2F",X"D6",X"10",X"12",X"23",X"13",X"10",X"F1",X"00",X"3A",
+ X"00",X"C3",X"E6",X"01",X"20",X"06",X"CD",X"19",X"01",X"C3",X"F1",X"00",X"3E",X"00",X"32",X"F6",
+ X"A8",X"3A",X"00",X"C3",X"E6",X"02",X"20",X"06",X"CC",X"45",X"01",X"C3",X"03",X"01",X"3E",X"00",
+ X"32",X"F7",X"A8",X"3A",X"04",X"60",X"E6",X"80",X"C8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"FD",X"E1",X"DD",X"E1",X"D9",X"08",X"ED",X"45",X"3A",X"F6",X"A8",X"FE",X"00",X"28",X"01",
+ X"C9",X"3E",X"01",X"CD",X"71",X"01",X"3E",X"40",X"32",X"F6",X"A8",X"21",X"FD",X"A8",X"35",X"C0",
+ X"3A",X"B9",X"A8",X"47",X"3A",X"A9",X"A8",X"80",X"32",X"A9",X"A8",X"CD",X"44",X"4C",X"3A",X"B8",
+ X"A8",X"32",X"FD",X"A8",X"C9",X"3A",X"F7",X"A8",X"FE",X"00",X"28",X"01",X"C9",X"3E",X"01",X"CD",
+ X"71",X"01",X"3E",X"40",X"32",X"F7",X"A8",X"21",X"FE",X"A8",X"35",X"C0",X"3A",X"BB",X"A8",X"47",
+ X"3A",X"A9",X"A8",X"80",X"32",X"A9",X"A8",X"CD",X"44",X"4C",X"3A",X"BA",X"A8",X"32",X"FE",X"A8",
+ X"C9",X"32",X"00",X"C0",X"3E",X"FF",X"32",X"04",X"C3",X"3E",X"00",X"32",X"04",X"C3",X"C9",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"C1",X"C2",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"2B",X"2B",X"2B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C3",X"C4",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"2B",X"2B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"19",X"11",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"1A",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"19",X"11",X"1A",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"28",X"27",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"19",X"11",X"24",
+ X"0B",X"0B",X"0B",X"0B",X"07",X"07",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"2E",X"30",X"00",X"00",X"2D",X"2F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"CF",X"CF",X"0B",X"0B",X"CF",X"CF",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"11",X"31",X"34",X"32",X"19",X"31",X"35",X"33",X"04",X"00",X"00",X"00",X"05",X"00",X"00",X"00",
+ X"0B",X"0F",X"02",X"02",X"0B",X"0F",X"02",X"02",X"07",X"0B",X"0B",X"0B",X"07",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"14",X"11",X"00",X"00",X"10",X"00",X"23",X"11",X"17",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"11",X"36",X"37",X"00",X"00",X"38",X"39",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0F",X"0F",X"0B",X"0B",X"0F",X"0F",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"21",X"00",X"00",X"00",X"22",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"18",X"11",X"11",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"14",X"11",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"12",X"11",X"11",X"11",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"10",X"00",X"0B",X"00",X"10",X"00",X"0C",X"51",X"10",X"00",X"00",X"00",X"12",X"11",X"1A",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"19",X"11",X"2E",X"30",X"08",X"00",X"2D",X"2F",X"10",X"00",X"00",X"00",X"18",X"11",
+ X"0B",X"0B",X"0B",X"0B",X"CF",X"CF",X"0B",X"0B",X"CF",X"CF",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"11",X"17",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"11",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"00",X"00",X"21",X"00",X"00",X"00",X"22",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"19",X"00",X"00",X"00",X"10",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"11",X"11",X"15",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"00",X"13",X"11",X"11",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"11",X"14",X"11",X"11",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"11",X"16",X"11",X"11",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"2E",X"30",X"08",X"00",X"2D",X"2F",X"10",X"00",X"00",X"00",X"21",X"00",X"00",X"00",X"22",
+ X"0B",X"CF",X"CF",X"0B",X"0B",X"CF",X"CF",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"21",X"00",X"00",X"00",X"22",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"13",X"11",X"1A",X"00",X"10",X"00",X"54",X"00",X"13",X"11",X"17",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"0F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"03",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"21",X"00",X"00",X"00",X"22",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"21",X"00",X"00",X"00",X"22",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"18",X"11",X"11",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"00",X"18",X"11",X"11",X"00",X"00",X"00",X"00",X"11",X"11",X"1A",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"10",X"11",X"11",X"11",X"12",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"11",X"11",X"15",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"11",X"24",X"23",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"11",X"16",X"11",X"11",X"00",X"21",X"00",X"00",X"00",X"22",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"28",X"27",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"07",X"07",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"2E",X"30",X"08",X"00",X"2D",X"2F",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",
+ X"CF",X"CF",X"0B",X"0B",X"CF",X"CF",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"00",X"18",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"14",X"00",X"00",X"00",X"25",X"00",X"00",X"00",X"26",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"07",X"0B",X"0B",X"0B",X"07",
+ X"00",X"10",X"00",X"00",X"11",X"12",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"11",X"11",X"17",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"19",X"11",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"1A",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"28",X"27",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"19",X"11",X"11",
+ X"0B",X"0B",X"0B",X"0B",X"07",X"07",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"11",X"24",X"23",X"11",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"11",X"14",X"11",X"11",X"00",X"10",X"00",X"00",X"11",X"15",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"10",X"00",X"00",X"00",X"12",X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"11",X"11",X"16",X"11",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"0B",X"00",X"1A",X"00",X"0C",X"51",X"18",X"11",X"1A",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"31",X"28",X"27",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"07",X"07",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"24",X"23",X"17",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"21",X"00",X"00",X"00",X"22",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"11",X"12",X"14",X"11",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"10",X"00",X"00",X"00",X"12",X"11",X"1A",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"13",X"11",X"11",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"11",X"11",X"1A",X"00",X"2E",X"30",X"08",X"00",X"2D",X"2F",X"18",X"11",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"CF",X"CF",X"0B",X"0B",X"CF",X"CF",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"11",X"12",X"28",X"27",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"07",X"07",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"24",X"23",X"11",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"18",X"11",X"00",X"00",X"00",X"00",X"11",X"24",X"23",X"11",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"11",X"11",X"1A",X"00",X"00",X"00",X"10",X"00",X"11",X"11",X"12",X"11",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"14",X"24",X"23",X"11",X"18",X"11",X"11",X"11",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"11",X"24",X"23",X"14",X"11",X"11",X"11",X"17",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"19",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"11",X"1A",X"00",X"50",X"00",X"0B",X"00",X"10",X"00",X"0C",X"11",X"17",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"14",X"11",X"00",X"00",X"04",X"00",X"00",X"00",X"05",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"07",X"0B",X"0B",X"0B",X"07",X"0B",
+ X"00",X"00",X"00",X"10",X"28",X"27",X"11",X"16",X"00",X"00",X"00",X"10",X"00",X"19",X"11",X"17",
+ X"0B",X"0B",X"0B",X"0B",X"07",X"07",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"13",X"11",X"00",X"00",X"21",X"00",X"00",X"00",X"22",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"24",X"23",X"11",X"1A",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"18",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"0B",X"00",X"00",X"00",X"0C",X"51",X"00",X"00",X"00",X"00",X"24",X"23",X"1A",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"00",X"21",X"00",X"00",X"00",X"22",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"2E",X"30",X"00",X"10",X"2D",X"2F",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"CF",X"CF",X"0B",X"0B",X"CF",X"CF",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"13",X"11",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"1A",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"11",X"12",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"19",X"11",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"10",X"00",X"00",X"00",X"12",X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"11",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"11",X"11",X"15",X"00",X"00",X"00",X"10",X"00",X"11",X"11",X"15",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"00",X"00",X"13",X"11",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"00",X"04",X"00",X"00",X"00",X"05",X"00",X"00",X"00",X"18",X"11",X"11",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"07",X"0B",X"0B",X"0B",X"07",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"24",X"23",X"11",X"24",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"23",X"11",X"17",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"13",X"11",X"11",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"11",X"11",X"11",X"41",X"00",X"3A",X"3C",X"02",X"00",X"3B",X"3D",X"02",X"00",X"00",X"00",X"02",
+ X"0B",X"0B",X"0B",X"1A",X"0B",X"82",X"83",X"1A",X"0B",X"82",X"83",X"1A",X"0B",X"0B",X"0B",X"1A",
+ X"41",X"47",X"02",X"02",X"02",X"02",X"02",X"02",X"02",X"19",X"11",X"11",X"02",X"10",X"02",X"02",
+ X"1A",X"1A",X"1A",X"1A",X"1A",X"1A",X"1A",X"1A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"3E",X"3F",X"3F",X"3E",X"02",X"02",X"02",X"02",X"11",X"24",X"23",X"11",X"02",X"02",X"02",X"02",
+ X"EA",X"EA",X"6A",X"6A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"48",X"41",X"02",X"02",X"02",X"02",X"11",X"11",X"1A",X"02",X"02",X"02",X"10",X"02",
+ X"1A",X"1A",X"1A",X"1A",X"1A",X"1A",X"1A",X"1A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"41",X"11",X"11",X"11",X"02",X"3C",X"3A",X"00",X"02",X"3D",X"3B",X"00",X"02",X"00",X"00",X"00",
+ X"1A",X"0B",X"0B",X"0B",X"1A",X"03",X"02",X"0B",X"1A",X"03",X"02",X"0B",X"1A",X"0B",X"0B",X"0B",
+ X"11",X"11",X"15",X"00",X"00",X"00",X"21",X"00",X"00",X"00",X"22",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"02",X"09",X"3A",X"3C",X"11",X"0A",X"3B",X"3D",X"02",X"00",X"00",X"00",X"02",
+ X"0B",X"0B",X"0B",X"1A",X"0B",X"82",X"83",X"22",X"0B",X"82",X"83",X"1A",X"0B",X"0B",X"0B",X"1A",
+ X"00",X"00",X"00",X"02",X"00",X"3A",X"3C",X"02",X"00",X"3B",X"3D",X"02",X"00",X"00",X"00",X"02",
+ X"0B",X"0B",X"0B",X"1A",X"0B",X"82",X"83",X"1A",X"0B",X"82",X"83",X"1A",X"0B",X"0B",X"0B",X"1A",
+ X"02",X"00",X"00",X"00",X"11",X"3C",X"3A",X"09",X"02",X"3D",X"3B",X"0A",X"02",X"00",X"00",X"00",
+ X"1A",X"0B",X"0B",X"0B",X"22",X"03",X"02",X"8B",X"1A",X"03",X"02",X"8B",X"1A",X"0B",X"0B",X"0B",
+ X"02",X"00",X"00",X"00",X"02",X"3C",X"3A",X"00",X"02",X"3D",X"3B",X"00",X"02",X"00",X"00",X"00",
+ X"1A",X"0B",X"0B",X"0B",X"1A",X"03",X"02",X"0B",X"1A",X"03",X"02",X"0B",X"1A",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"06",X"07",X"1A",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"07",X"07",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"11",X"11",X"16",X"11",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"11",X"16",X"11",X"11",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"19",X"11",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"14",X"11",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"11",X"1A",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"00",X"21",X"00",X"00",X"00",X"22",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"11",X"17",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"10",X"00",X"11",X"11",X"12",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"02",X"10",X"02",X"02",X"11",X"16",X"11",X"11",X"02",X"10",X"02",X"02",X"02",X"10",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"02",X"02",X"24",X"23",X"14",X"11",X"02",X"02",X"10",X"02",X"02",X"02",X"13",X"11",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"10",X"02",X"24",X"23",X"12",X"11",X"02",X"02",X"02",X"02",X"28",X"27",X"1A",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"2A",X"2A",X"22",X"22",
+ X"02",X"10",X"02",X"02",X"02",X"13",X"28",X"27",X"02",X"10",X"02",X"02",X"02",X"10",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"2A",X"2A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"10",X"02",X"11",X"36",X"37",X"02",X"02",X"38",X"39",X"02",X"02",X"10",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"10",X"02",X"02",X"02",X"21",X"02",X"02",X"02",X"22",X"02",X"02",X"02",X"10",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"10",X"02",X"02",X"02",X"13",X"24",X"23",X"02",X"18",X"28",X"27",X"02",X"02",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"2A",X"2A",X"22",X"22",X"22",X"22",
+ X"02",X"10",X"02",X"02",X"11",X"16",X"11",X"11",X"11",X"17",X"02",X"02",X"02",X"02",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"10",X"02",X"24",X"23",X"12",X"11",X"02",X"02",X"02",X"02",X"02",X"02",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"10",X"02",X"19",X"11",X"16",X"11",X"12",X"02",X"10",X"02",X"02",X"02",X"10",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"11",X"11",X"11",X"11",X"11",X"11",X"14",X"11",X"02",X"02",X"21",X"02",X"02",X"02",X"22",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"1A",X"02",X"10",X"02",X"16",X"11",X"16",X"11",X"21",X"02",X"10",X"02",X"22",X"02",X"10",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"10",X"02",X"10",X"02",X"13",X"11",X"15",X"02",X"10",X"02",X"10",X"02",X"25",X"02",X"10",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"2A",X"22",X"22",X"22",
+ X"02",X"10",X"02",X"02",X"02",X"13",X"24",X"23",X"02",X"10",X"02",X"02",X"02",X"18",X"11",X"11",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"10",X"02",X"02",X"11",X"12",X"11",X"11",X"02",X"02",X"02",X"02",X"11",X"24",X"23",X"11",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"26",X"02",X"10",X"02",X"17",X"02",X"13",X"11",X"02",X"02",X"10",X"02",X"11",X"11",X"17",X"02",
+ X"2A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"19",X"1A",X"00",X"50",X"10",X"0B",X"00",X"10",X"10",X"0C",X"11",X"17",X"10",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"18",X"11",X"1A",X"00",X"28",X"27",X"16",X"11",X"00",X"00",X"10",X"00",X"00",X"19",X"17",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"07",X"07",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"00",X"04",X"00",X"00",X"00",X"05",X"00",X"00",X"00",X"10",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"07",X"0B",X"0B",X"0B",X"07",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"10",X"00",X"00",X"00",X"18",X"11",X"14",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"2E",X"30",X"08",X"00",X"2D",X"2F",X"10",X"00",X"00",X"00",X"18",X"00",X"00",X"00",X"00",
+ X"0B",X"CF",X"CF",X"0B",X"0B",X"CF",X"CF",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"11",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"24",X"23",X"11",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"06",X"07",X"00",X"00",X"00",X"00",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"07",X"07",X"0B",X"0B",X"0B",X"0B",
+ X"00",X"31",X"34",X"32",X"19",X"31",X"35",X"33",X"17",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0B",X"0F",X"02",X"02",X"0B",X"0F",X"02",X"02",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",
+ X"02",X"04",X"02",X"02",X"02",X"05",X"02",X"02",X"19",X"12",X"11",X"24",X"10",X"02",X"02",X"02",
+ X"22",X"2A",X"22",X"22",X"22",X"2A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"04",X"19",X"11",X"02",X"05",X"13",X"11",X"23",X"17",X"13",X"11",X"02",X"02",X"13",X"11",
+ X"22",X"2A",X"22",X"22",X"22",X"2A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"11",X"11",X"11",X"1A",X"11",X"11",X"1A",X"10",X"11",X"1A",X"10",X"10",X"1A",X"10",X"10",X"10",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"19",X"28",X"27",X"1A",X"10",X"19",X"1A",X"10",X"10",X"10",X"10",X"10",X"10",X"10",X"10",X"10",
+ X"22",X"2A",X"2A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"10",X"02",X"02",X"02",X"16",X"11",X"28",X"27",X"10",X"02",X"02",X"02",X"10",X"02",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"2A",X"2A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"21",X"21",X"21",X"21",X"22",X"22",X"22",X"22",X"10",X"10",X"10",X"10",X"10",X"10",X"10",X"18",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"10",X"21",X"21",X"10",X"10",X"22",X"22",X"10",X"10",X"10",X"10",X"10",X"17",X"10",X"10",X"10",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"10",X"02",X"02",X"02",X"10",X"02",X"02",X"02",X"10",X"02",X"02",X"02",X"10",X"02",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"18",X"11",X"11",X"02",X"02",X"02",X"02",X"02",X"02",X"19",X"11",X"02",X"02",X"10",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"12",X"15",X"18",X"11",X"02",X"18",X"11",X"28",X"11",X"11",X"11",X"11",X"19",X"11",X"11",X"24",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"2A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"11",X"17",X"10",X"10",X"27",X"11",X"15",X"10",X"11",X"11",X"15",X"10",X"23",X"11",X"15",X"10",
+ X"22",X"22",X"22",X"22",X"2A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"10",X"02",X"02",X"02",X"13",X"11",X"28",X"27",X"13",X"11",X"1A",X"02",X"13",X"1A",X"10",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"2A",X"2A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"10",X"02",X"02",X"02",X"10",X"02",X"02",X"19",X"04",X"02",X"02",X"04",X"05",X"02",X"02",X"05",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"2A",X"22",X"22",X"2A",X"2A",X"22",X"22",X"2A",
+ X"02",X"02",X"10",X"10",X"11",X"11",X"15",X"10",X"02",X"02",X"04",X"10",X"02",X"02",X"05",X"10",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"2A",X"22",X"22",X"22",X"2A",X"22",
+ X"21",X"21",X"21",X"02",X"22",X"22",X"22",X"02",X"10",X"10",X"18",X"11",X"10",X"18",X"11",X"11",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"04",X"02",X"02",X"02",X"05",X"02",X"02",X"11",X"17",X"02",X"02",X"11",X"24",X"23",X"11",
+ X"22",X"2A",X"22",X"22",X"22",X"2A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"10",X"02",X"02",X"10",X"10",X"02",X"02",X"13",X"10",X"02",X"02",X"10",X"17",X"02",X"02",X"13",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"10",X"10",X"24",X"23",X"15",X"10",X"02",X"02",X"10",X"10",X"24",X"23",X"15",X"10",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"10",X"02",X"02",X"02",X"15",X"02",X"02",X"02",X"10",X"02",X"02",X"02",X"18",X"11",X"24",X"23",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"02",X"02",X"02",X"02",X"19",X"11",X"02",X"02",X"10",X"02",X"11",X"11",X"12",X"11",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"02",X"10",X"11",X"11",X"11",X"12",X"02",X"02",X"02",X"02",X"11",X"11",X"11",X"11",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"10",X"10",X"24",X"23",X"17",X"10",X"02",X"02",X"02",X"10",X"11",X"11",X"11",X"17",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"3E",X"3F",X"02",X"02",X"02",X"02",X"11",X"11",X"14",X"11",X"02",X"02",X"10",X"02",
+ X"22",X"22",X"EA",X"EA",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"3F",X"3E",X"48",X"41",X"02",X"02",X"02",X"02",X"11",X"24",X"23",X"11",X"02",X"02",X"02",X"02",
+ X"6A",X"6A",X"1A",X"1A",X"32",X"32",X"32",X"32",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"41",X"41",X"41",X"41",X"02",X"02",X"02",X"02",X"11",X"11",X"1A",X"02",X"02",X"02",X"10",X"02",
+ X"1A",X"1A",X"1A",X"1A",X"32",X"32",X"32",X"32",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"41",X"11",X"17",X"00",X"02",X"3C",X"3A",X"00",X"02",X"3D",X"3B",X"00",X"02",X"00",X"00",X"00",
+ X"1A",X"0B",X"0B",X"0B",X"1A",X"03",X"02",X"0B",X"1A",X"03",X"02",X"0B",X"1A",X"0B",X"0B",X"0B",
+ X"10",X"10",X"10",X"02",X"18",X"12",X"12",X"11",X"02",X"19",X"11",X"11",X"02",X"10",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"00",X"10",X"00",X"00",X"00",X"18",X"11",X"1A",X"00",X"00",X"00",X"25",X"00",X"00",X"00",X"26",
+ X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"0B",X"07",X"0B",X"0B",X"0B",X"07",
+ X"02",X"10",X"02",X"02",X"14",X"12",X"28",X"27",X"10",X"02",X"02",X"02",X"10",X"02",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"2A",X"2A",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"02",X"02",X"02",X"19",X"11",X"11",X"02",X"10",X"02",X"02",X"02",X"10",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"10",X"02",X"11",X"11",X"17",X"02",X"19",X"24",X"23",X"1A",X"10",X"02",X"02",X"10",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"10",X"02",X"02",X"02",X"10",X"02",X"02",X"02",X"13",X"11",X"11",X"24",X"10",X"02",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"11",X"12",X"11",X"11",X"11",X"24",X"23",X"11",X"11",X"11",X"11",X"11",X"1A",X"02",X"02",X"02",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"17",X"02",X"02",X"10",X"11",X"11",X"11",X"15",X"11",X"11",X"1A",X"10",X"02",X"02",X"10",X"10",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"10",X"02",X"02",X"11",X"12",X"1A",X"02",X"11",X"1A",X"10",X"02",X"02",X"10",X"18",X"11",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"10",X"02",X"02",X"10",X"18",X"11",X"11",X"16",X"02",X"02",X"02",X"10",X"11",X"24",X"23",X"12",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"02",X"02",X"10",X"10",X"24",X"23",X"17",X"10",X"02",X"02",X"02",X"10",X"11",X"11",X"11",X"17",
+ X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",X"22",
+ X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"0C",X"A0",X"00",X"01",X"01",X"01",X"01",X"04",X"01",X"08",X"05",X"FF",X"FF",X"FF",X"FF",X"00",
+ X"01",X"02",X"03",X"06",X"07",X"04",X"05",X"08",X"09",X"0A",X"0B",X"0C",X"0D",X"1A",X"5F",X"5E",
+ X"60",X"5D",X"61",X"50",X"14",X"09",X"62",X"11",X"11",X"1A",X"11",X"0E",X"25",X"5E",X"64",X"5D",
+ X"63",X"50",X"14",X"21",X"22",X"23",X"09",X"1B",X"24",X"25",X"26",X"27",X"21",X"27",X"15",X"28",
+ X"0C",X"A0",X"00",X"02",X"02",X"02",X"02",X"04",X"01",X"08",X"05",X"FF",X"FF",X"FF",X"FF",X"1B",
+ X"1B",X"06",X"07",X"29",X"21",X"2A",X"2B",X"2C",X"2D",X"2E",X"2F",X"21",X"30",X"51",X"52",X"53",
+ X"54",X"55",X"56",X"57",X"14",X"58",X"65",X"66",X"67",X"5A",X"28",X"45",X"59",X"68",X"69",X"6A",
+ X"5B",X"1B",X"1A",X"59",X"6B",X"6C",X"6D",X"5A",X"2A",X"25",X"26",X"15",X"21",X"15",X"15",X"28",
+ X"0C",X"A0",X"00",X"04",X"03",X"03",X"03",X"04",X"01",X"08",X"05",X"FF",X"FF",X"FF",X"FF",X"3E",
+ X"3F",X"29",X"21",X"40",X"15",X"2A",X"41",X"15",X"09",X"1B",X"42",X"43",X"44",X"45",X"1B",X"46",
+ X"07",X"47",X"48",X"11",X"14",X"21",X"49",X"4A",X"4B",X"1A",X"11",X"14",X"23",X"09",X"1B",X"4C",
+ X"27",X"20",X"1A",X"1B",X"4D",X"4E",X"4F",X"1B",X"50",X"25",X"26",X"15",X"21",X"15",X"15",X"28",
+ X"0C",X"A0",X"00",X"04",X"04",X"04",X"04",X"04",X"01",X"08",X"05",X"FF",X"FF",X"FF",X"FF",X"1B",
+ X"1B",X"06",X"07",X"29",X"21",X"2A",X"2B",X"2C",X"2D",X"2E",X"2F",X"21",X"30",X"1A",X"1B",X"14",
+ X"23",X"09",X"31",X"32",X"33",X"1B",X"33",X"1B",X"33",X"06",X"07",X"0E",X"1B",X"14",X"21",X"34",
+ X"15",X"35",X"36",X"37",X"38",X"39",X"3A",X"3B",X"13",X"25",X"26",X"15",X"3C",X"3D",X"15",X"28",
+ X"0C",X"A0",X"00",X"05",X"05",X"05",X"05",X"04",X"01",X"08",X"05",X"FF",X"FF",X"FF",X"FF",X"1B",
+ X"1B",X"02",X"03",X"06",X"07",X"04",X"05",X"08",X"09",X"0A",X"0B",X"0C",X"0D",X"51",X"52",X"53",
+ X"54",X"55",X"56",X"57",X"14",X"58",X"6E",X"6F",X"70",X"5A",X"28",X"45",X"59",X"68",X"69",X"71",
+ X"5B",X"1B",X"1A",X"59",X"72",X"73",X"74",X"5A",X"5C",X"25",X"26",X"15",X"3C",X"3D",X"15",X"28",
+ X"0C",X"A0",X"00",X"06",X"06",X"06",X"06",X"04",X"01",X"08",X"05",X"FF",X"FF",X"FF",X"FF",X"1B",
+ X"1B",X"06",X"07",X"29",X"21",X"2A",X"2B",X"2C",X"2D",X"2E",X"2F",X"21",X"30",X"0E",X"0F",X"10",
+ X"03",X"11",X"12",X"13",X"14",X"15",X"16",X"17",X"09",X"18",X"19",X"1A",X"1B",X"1C",X"1D",X"1E",
+ X"1F",X"20",X"14",X"21",X"22",X"23",X"09",X"1B",X"24",X"25",X"26",X"27",X"21",X"27",X"15",X"28",
+ X"0C",X"A0",X"00",X"07",X"07",X"07",X"07",X"04",X"01",X"08",X"05",X"FF",X"FF",X"FF",X"FF",X"75",
+ X"59",X"7E",X"7F",X"80",X"81",X"5B",X"76",X"58",X"82",X"69",X"83",X"84",X"5B",X"77",X"59",X"85",
+ X"86",X"87",X"88",X"5B",X"1A",X"59",X"89",X"69",X"8A",X"8B",X"5B",X"45",X"59",X"8C",X"8D",X"8E",
+ X"8F",X"5B",X"78",X"58",X"90",X"91",X"92",X"93",X"5B",X"79",X"7A",X"7B",X"7B",X"7B",X"7C",X"7D",
+ X"0C",X"A0",X"00",X"08",X"08",X"08",X"08",X"04",X"01",X"08",X"05",X"FF",X"FF",X"FF",X"FF",X"1B",
+ X"1B",X"02",X"03",X"06",X"07",X"04",X"05",X"08",X"09",X"0A",X"0B",X"0C",X"0D",X"51",X"52",X"53",
+ X"94",X"95",X"96",X"97",X"14",X"58",X"9A",X"69",X"9B",X"9C",X"5B",X"45",X"59",X"9D",X"7F",X"9E",
+ X"9F",X"5B",X"1A",X"59",X"89",X"69",X"8A",X"8B",X"5B",X"99",X"59",X"98",X"A0",X"A1",X"A2",X"5B",
+ X"0C",X"A0",X"00",X"09",X"09",X"09",X"09",X"04",X"01",X"08",X"05",X"FF",X"FF",X"FF",X"FF",X"3E",
+ X"3F",X"29",X"21",X"40",X"15",X"2A",X"41",X"15",X"09",X"1B",X"42",X"43",X"44",X"45",X"1B",X"46",
+ X"07",X"47",X"48",X"11",X"14",X"21",X"49",X"4A",X"4B",X"1A",X"11",X"14",X"23",X"09",X"1B",X"4C",
+ X"27",X"20",X"36",X"37",X"38",X"39",X"3A",X"3B",X"13",X"25",X"26",X"15",X"3C",X"3D",X"15",X"28",
+ X"0C",X"A0",X"00",X"01",X"01",X"01",X"01",X"04",X"01",X"08",X"05",X"FF",X"FF",X"FF",X"FF",X"1B",
+ X"1B",X"06",X"07",X"29",X"21",X"2A",X"2B",X"2C",X"2D",X"2E",X"2F",X"21",X"30",X"45",X"1B",X"46",
+ X"07",X"47",X"48",X"11",X"14",X"21",X"49",X"4A",X"4B",X"1A",X"11",X"14",X"23",X"09",X"1B",X"4C",
+ X"27",X"20",X"36",X"37",X"38",X"39",X"3A",X"3B",X"13",X"25",X"26",X"15",X"3C",X"3D",X"15",X"28",
+ X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"31",X"40",X"A0",X"C3",X"19",X"32",X"CD",X"EA",X"3D",X"CD",X"4A",X"3E",X"CD",X"59",X"3D",X"CD",
+ X"76",X"3C",X"CD",X"BA",X"3C",X"CD",X"50",X"41",X"CD",X"F5",X"37",X"3E",X"05",X"32",X"10",X"A8",
+ X"06",X"14",X"C5",X"CD",X"1D",X"38",X"01",X"00",X"08",X"0D",X"20",X"FD",X"10",X"FB",X"C1",X"10",
+ X"F1",X"3A",X"C1",X"A8",X"FE",X"02",X"20",X"13",X"21",X"10",X"32",X"06",X"2C",X"11",X"A9",X"A7",
+ X"CD",X"DB",X"36",X"3A",X"9A",X"A8",X"C6",X"B0",X"32",X"E9",X"A6",X"21",X"04",X"32",X"06",X"2C",
+ X"11",X"AB",X"A7",X"CD",X"DB",X"36",X"21",X"0C",X"32",X"06",X"2C",X"11",X"6D",X"A7",X"CD",X"DB",
+ X"36",X"01",X"00",X"F0",X"0D",X"20",X"FD",X"10",X"FB",X"21",X"F0",X"31",X"11",X"40",X"B0",X"01",
+ X"0A",X"00",X"ED",X"B0",X"21",X"FA",X"31",X"11",X"40",X"B4",X"01",X"0A",X"00",X"ED",X"B0",X"3E",
+ X"02",X"32",X"10",X"A8",X"DD",X"21",X"41",X"B4",X"06",X"05",X"DD",X"35",X"00",X"DD",X"23",X"DD",
+ X"23",X"10",X"F7",X"01",X"00",X"0C",X"0D",X"20",X"FD",X"10",X"FB",X"3A",X"45",X"B0",X"FE",X"FF",
+ X"28",X"1D",X"3A",X"10",X"A8",X"3D",X"32",X"10",X"A8",X"20",X"14",X"3E",X"04",X"32",X"10",X"A8",
+ X"3A",X"45",X"B0",X"06",X"13",X"FE",X"13",X"20",X"02",X"06",X"16",X"78",X"32",X"45",X"B0",X"3A",
+ X"41",X"B4",X"FE",X"E8",X"CC",X"DF",X"30",X"FE",X"D8",X"CC",X"E5",X"30",X"FE",X"C8",X"CC",X"EB",
+ X"30",X"FE",X"B8",X"CC",X"F1",X"30",X"FE",X"A0",X"CA",X"F7",X"30",X"C3",X"84",X"30",X"C9",X"3E",
+ X"12",X"32",X"43",X"B0",X"C9",X"3E",X"13",X"32",X"45",X"B0",X"C9",X"3E",X"14",X"32",X"47",X"B0",
+ X"C9",X"3E",X"15",X"32",X"49",X"B0",X"C9",X"CD",X"F1",X"49",X"3E",X"01",X"32",X"98",X"A8",X"3E",
+ X"01",X"32",X"09",X"A8",X"3E",X"BC",X"32",X"52",X"B0",X"32",X"54",X"B0",X"3E",X"02",X"32",X"52",
+ X"B4",X"32",X"54",X"B4",X"3E",X"90",X"32",X"53",X"B4",X"3E",X"A0",X"32",X"55",X"B4",X"3E",X"90",
+ X"32",X"53",X"B0",X"3E",X"91",X"32",X"55",X"B0",X"3E",X"17",X"32",X"45",X"B0",X"01",X"00",X"20",
+ X"0D",X"20",X"FD",X"10",X"FB",X"3A",X"53",X"B0",X"3C",X"3C",X"FE",X"98",X"28",X"0E",X"32",X"53",
+ X"B0",X"3A",X"55",X"B0",X"3C",X"3C",X"32",X"55",X"B0",X"C3",X"2D",X"31",X"3E",X"FF",X"32",X"53",
+ X"B0",X"32",X"55",X"B0",X"3E",X"96",X"32",X"51",X"B4",X"3E",X"BC",X"32",X"50",X"B0",X"3E",X"02",
+ X"32",X"50",X"B4",X"CD",X"50",X"46",X"DD",X"21",X"41",X"B4",X"06",X"05",X"DD",X"34",X"00",X"DD",
+ X"23",X"DD",X"23",X"10",X"F7",X"01",X"00",X"0C",X"0D",X"20",X"FD",X"10",X"FB",X"3A",X"45",X"B0",
+ X"FE",X"FF",X"28",X"06",X"06",X"17",X"78",X"32",X"45",X"B0",X"CD",X"50",X"46",X"3A",X"41",X"B4",
+ X"FE",X"E8",X"CC",X"AD",X"31",X"FE",X"D8",X"CC",X"B3",X"31",X"FE",X"C8",X"CC",X"B9",X"31",X"FE",
+ X"B8",X"CC",X"BF",X"31",X"FE",X"F4",X"CA",X"C5",X"31",X"C3",X"66",X"31",X"C9",X"3E",X"FF",X"32",
+ X"43",X"B0",X"C9",X"3E",X"FF",X"32",X"45",X"B0",X"C9",X"3E",X"FF",X"32",X"47",X"B0",X"C9",X"3E",
+ X"FF",X"32",X"49",X"B0",X"C9",X"06",X"08",X"C5",X"CD",X"1D",X"38",X"3A",X"51",X"B4",X"C6",X"08",
+ X"32",X"51",X"B4",X"01",X"00",X"18",X"0D",X"20",X"FD",X"10",X"FB",X"C1",X"10",X"E9",X"06",X"40",
+ X"C5",X"01",X"00",X"10",X"0D",X"20",X"FD",X"10",X"FB",X"CD",X"50",X"46",X"C1",X"10",X"F1",X"C9",
+ X"BC",X"11",X"BC",X"FF",X"BC",X"FF",X"BC",X"FF",X"BC",X"FF",X"8C",X"F0",X"8C",X"00",X"82",X"10",
+ X"90",X"20",X"90",X"30",X"10",X"15",X"0C",X"13",X"09",X"0E",X"07",X"FF",X"0E",X"0F",X"17",X"FF",
+ X"10",X"0C",X"01",X"19",X"05",X"12",X"20",X"20",X"FF",X"00",X"31",X"40",X"A0",X"3E",X"00",X"32",
+ X"F4",X"A8",X"3E",X"00",X"CD",X"D4",X"49",X"3E",X"00",X"32",X"F3",X"A8",X"CD",X"3C",X"4A",X"3E",
+ X"00",X"32",X"F0",X"A8",X"32",X"F6",X"A8",X"32",X"F7",X"A8",X"3E",X"00",X"32",X"A9",X"A8",X"3E",
+ X"30",X"32",X"C5",X"A8",X"32",X"C6",X"A8",X"21",X"2A",X"36",X"11",X"80",X"B0",X"01",X"4F",X"00",
+ X"ED",X"B0",X"21",X"70",X"B0",X"11",X"71",X"B0",X"36",X"20",X"01",X"0F",X"00",X"ED",X"B0",X"21",
+ X"7A",X"36",X"11",X"6C",X"A8",X"01",X"06",X"00",X"ED",X"B0",X"CD",X"BE",X"36",X"3E",X"00",X"32",
+ X"02",X"C3",X"32",X"F3",X"A8",X"CD",X"E7",X"4C",X"CD",X"27",X"40",X"CD",X"29",X"4C",X"CD",X"D1",
+ X"36",X"CD",X"97",X"49",X"3E",X"00",X"32",X"F4",X"A8",X"CD",X"44",X"4C",X"CD",X"F3",X"4E",X"32",
+ X"C1",X"A8",X"FE",X"01",X"CA",X"89",X"34",X"C3",X"9A",X"32",X"3A",X"CE",X"A8",X"32",X"E0",X"A8",
+ X"32",X"E8",X"A8",X"3E",X"00",X"32",X"E2",X"A8",X"32",X"EA",X"A8",X"32",X"E3",X"A8",X"32",X"EB",
+ X"A8",X"32",X"E4",X"A8",X"32",X"EC",X"A8",X"3A",X"C2",X"A8",X"32",X"E1",X"A8",X"32",X"E9",X"A8",
+ X"21",X"60",X"A8",X"11",X"61",X"A8",X"36",X"20",X"21",X"60",X"A8",X"11",X"61",X"A8",X"01",X"0B",
+ X"00",X"ED",X"B0",X"3E",X"30",X"32",X"65",X"A8",X"32",X"6B",X"A8",X"C3",X"DE",X"32",X"3A",X"E4",
+ X"A8",X"FE",X"FF",X"CA",X"1E",X"33",X"3E",X"01",X"32",X"9A",X"A8",X"3A",X"E0",X"A8",X"32",X"CF",
+ X"A8",X"3A",X"E1",X"A8",X"32",X"9B",X"A8",X"3A",X"E2",X"A8",X"32",X"C0",X"A8",X"3A",X"E3",X"A8",
+ X"32",X"9E",X"A8",X"CD",X"6B",X"33",X"3A",X"CF",X"A8",X"32",X"E0",X"A8",X"3A",X"9B",X"A8",X"32",
+ X"E1",X"A8",X"3A",X"C0",X"A8",X"32",X"E2",X"A8",X"3A",X"9E",X"A8",X"32",X"E3",X"A8",X"3A",X"EC",
+ X"A8",X"FE",X"FF",X"20",X"0B",X"3A",X"E4",X"A8",X"FE",X"FF",X"C2",X"DE",X"32",X"C3",X"6D",X"32",
+ X"3E",X"02",X"32",X"9A",X"A8",X"3A",X"E8",X"A8",X"32",X"CF",X"A8",X"3A",X"E9",X"A8",X"32",X"9B",
+ X"A8",X"3A",X"EA",X"A8",X"32",X"C0",X"A8",X"3A",X"EB",X"A8",X"32",X"9E",X"A8",X"CD",X"6B",X"33",
+ X"3A",X"CF",X"A8",X"32",X"E8",X"A8",X"3A",X"9B",X"A8",X"32",X"E9",X"A8",X"3A",X"C0",X"A8",X"32",
+ X"EA",X"A8",X"3A",X"9E",X"A8",X"32",X"EB",X"A8",X"C3",X"DE",X"32",X"CD",X"FC",X"4F",X"CD",X"E7",
+ X"4C",X"CD",X"81",X"36",X"3E",X"00",X"32",X"F4",X"A8",X"CD",X"E7",X"4C",X"CD",X"B7",X"35",X"FE",
+ X"FF",X"CA",X"F0",X"33",X"32",X"C0",X"A8",X"C5",X"3A",X"CF",X"A8",X"3C",X"32",X"CF",X"A8",X"CD",
+ X"CA",X"4D",X"C1",X"78",X"FE",X"01",X"20",X"06",X"CD",X"4D",X"39",X"C3",X"B5",X"33",X"FE",X"03",
+ X"20",X"06",X"CD",X"7F",X"39",X"C3",X"B5",X"33",X"FE",X"00",X"20",X"06",X"CD",X"E3",X"39",X"C3",
+ X"B5",X"33",X"CD",X"B1",X"39",X"CD",X"09",X"41",X"CD",X"98",X"4E",X"CD",X"AF",X"4E",X"21",X"B1",
+ X"35",X"11",X"4E",X"A6",X"06",X"21",X"CD",X"DB",X"36",X"21",X"81",X"34",X"11",X"6C",X"A6",X"06",
+ X"21",X"CD",X"DB",X"36",X"3A",X"9A",X"A8",X"C6",X"B0",X"32",X"AC",X"A5",X"3E",X"05",X"01",X"00",
+ X"00",X"0D",X"20",X"FD",X"05",X"20",X"FA",X"3D",X"20",X"F7",X"CD",X"D6",X"4E",X"C3",X"74",X"33",
+ X"3E",X"00",X"CD",X"D4",X"49",X"CD",X"19",X"4A",X"3E",X"01",X"32",X"81",X"A8",X"2A",X"50",X"B0",
+ X"26",X"90",X"22",X"52",X"B0",X"24",X"22",X"54",X"B0",X"2A",X"50",X"B4",X"7C",X"D6",X"08",X"67",
+ X"22",X"52",X"B4",X"7C",X"C6",X"10",X"67",X"22",X"54",X"B4",X"3E",X"04",X"32",X"1B",X"A8",X"3E",
+ X"FF",X"32",X"51",X"B0",X"32",X"50",X"B0",X"CD",X"03",X"36",X"3A",X"1B",X"A8",X"FE",X"00",X"20",
+ X"F6",X"01",X"00",X"09",X"C5",X"CD",X"03",X"36",X"C1",X"0D",X"20",X"F8",X"10",X"F6",X"3E",X"00",
+ X"32",X"81",X"A8",X"3E",X"03",X"32",X"93",X"A8",X"3A",X"9B",X"A8",X"3D",X"FE",X"FF",X"20",X"2D",
+ X"CD",X"12",X"52",X"FE",X"FF",X"20",X"10",X"21",X"E4",X"A8",X"3A",X"9A",X"A8",X"FE",X"01",X"28",
+ X"03",X"21",X"EC",X"A8",X"36",X"FF",X"C9",X"DD",X"21",X"E0",X"A8",X"3A",X"9A",X"A8",X"FE",X"01",
+ X"28",X"04",X"DD",X"21",X"E8",X"A8",X"3A",X"C2",X"A8",X"DD",X"77",X"01",X"C9",X"32",X"9B",X"A8",
+ X"C9",X"10",X"0C",X"01",X"19",X"05",X"12",X"20",X"FF",X"3A",X"CE",X"A8",X"32",X"CF",X"A8",X"3E",
+ X"00",X"32",X"C0",X"A8",X"32",X"9E",X"A8",X"3A",X"C2",X"A8",X"32",X"9B",X"A8",X"21",X"60",X"A8",
+ X"11",X"61",X"A8",X"36",X"20",X"21",X"60",X"A8",X"11",X"61",X"A8",X"01",X"0B",X"00",X"ED",X"B0",
+ X"3E",X"30",X"32",X"65",X"A8",X"32",X"6B",X"A8",X"3E",X"03",X"32",X"93",X"A8",X"C3",X"C0",X"34",
+ X"3E",X"00",X"32",X"02",X"C3",X"32",X"F3",X"A8",X"3E",X"01",X"32",X"9A",X"A8",X"CD",X"E7",X"4C",
+ X"CD",X"81",X"36",X"CD",X"E7",X"4C",X"CD",X"B7",X"35",X"FE",X"FF",X"CA",X"37",X"35",X"32",X"C0",
+ X"A8",X"C5",X"3A",X"CF",X"A8",X"3C",X"32",X"CF",X"A8",X"CD",X"CA",X"4D",X"C1",X"78",X"FE",X"01",
+ X"20",X"06",X"CD",X"4D",X"39",X"C3",X"0F",X"35",X"FE",X"03",X"20",X"06",X"CD",X"7F",X"39",X"C3",
+ X"0F",X"35",X"FE",X"00",X"20",X"06",X"CD",X"E3",X"39",X"C3",X"0F",X"35",X"CD",X"B1",X"39",X"CD",
+ X"09",X"41",X"CD",X"98",X"4E",X"CD",X"AF",X"4E",X"21",X"B1",X"35",X"11",X"4D",X"A6",X"06",X"21",
+ X"CD",X"DB",X"36",X"3E",X"05",X"01",X"00",X"00",X"0D",X"20",X"FD",X"05",X"20",X"FA",X"3D",X"20",
+ X"F7",X"CD",X"D6",X"4E",X"C3",X"D3",X"34",X"3E",X"00",X"CD",X"D4",X"49",X"CD",X"19",X"4A",X"3E",
+ X"01",X"32",X"81",X"A8",X"2A",X"50",X"B0",X"26",X"90",X"22",X"52",X"B0",X"24",X"22",X"54",X"B0",
+ X"2A",X"50",X"B4",X"7C",X"D6",X"08",X"67",X"22",X"52",X"B4",X"7C",X"C6",X"10",X"67",X"22",X"54",
+ X"B4",X"3E",X"04",X"32",X"1B",X"A8",X"3E",X"FF",X"32",X"51",X"B0",X"32",X"50",X"B0",X"CD",X"03",
+ X"36",X"3A",X"1B",X"A8",X"FE",X"00",X"20",X"F6",X"01",X"00",X"09",X"C5",X"CD",X"03",X"36",X"C1",
+ X"0D",X"20",X"F8",X"10",X"F6",X"3E",X"00",X"32",X"81",X"A8",X"3E",X"03",X"32",X"93",X"A8",X"3A",
+ X"9B",X"A8",X"3D",X"FE",X"FF",X"20",X"11",X"CD",X"12",X"52",X"FE",X"FF",X"CA",X"6D",X"32",X"3A",
+ X"C2",X"A8",X"32",X"9B",X"A8",X"C3",X"C0",X"34",X"32",X"9B",X"A8",X"CD",X"FC",X"4F",X"C3",X"C0",
+ X"34",X"12",X"05",X"01",X"04",X"19",X"FF",X"CD",X"9E",X"54",X"CD",X"EB",X"47",X"CD",X"7D",X"46",
+ X"CD",X"DB",X"54",X"CD",X"BE",X"3E",X"CD",X"03",X"44",X"CD",X"03",X"44",X"CD",X"03",X"44",X"CD",
+ X"A5",X"42",X"CD",X"34",X"42",X"3A",X"8C",X"A8",X"FE",X"FF",X"C8",X"3A",X"8E",X"A8",X"E6",X"FC",
+ X"FE",X"50",X"20",X"0D",X"3A",X"8E",X"A8",X"E6",X"03",X"47",X"C6",X"B0",X"6F",X"26",X"A8",X"7E",
+ X"C9",X"21",X"92",X"A8",X"35",X"20",X"C0",X"3E",X"08",X"77",X"CD",X"E6",X"53",X"CD",X"AA",X"43",
+ X"C3",X"B7",X"35",X"CD",X"9E",X"54",X"CD",X"DB",X"54",X"CD",X"BE",X"3E",X"CD",X"03",X"44",X"CD",
+ X"03",X"44",X"CD",X"03",X"44",X"CD",X"A5",X"42",X"CD",X"34",X"42",X"21",X"92",X"A8",X"35",X"C0",
+ X"3E",X"08",X"77",X"CD",X"E6",X"53",X"CD",X"AA",X"43",X"C9",X"31",X"2E",X"20",X"01",X"01",X"01",
+ X"20",X"20",X"32",X"35",X"30",X"30",X"30",X"20",X"20",X"20",X"32",X"2E",X"20",X"02",X"02",X"02",
+ X"20",X"20",X"32",X"30",X"30",X"30",X"30",X"20",X"20",X"20",X"33",X"2E",X"20",X"03",X"03",X"03",
+ X"20",X"20",X"31",X"35",X"30",X"30",X"30",X"20",X"20",X"20",X"34",X"2E",X"20",X"04",X"04",X"04",
+ X"20",X"20",X"31",X"30",X"30",X"30",X"30",X"20",X"20",X"20",X"35",X"2E",X"20",X"05",X"05",X"05",
+ X"20",X"20",X"20",X"35",X"30",X"30",X"30",X"20",X"20",X"20",X"20",X"32",X"35",X"30",X"30",X"30",
+ X"30",X"CD",X"9A",X"4C",X"CD",X"29",X"4C",X"CD",X"06",X"30",X"CD",X"09",X"41",X"3A",X"18",X"A8",
+ X"E6",X"1F",X"6F",X"26",X"00",X"11",X"9E",X"36",X"19",X"7E",X"32",X"87",X"A8",X"C9",X"04",X"05",
+ X"05",X"06",X"06",X"06",X"07",X"07",X"07",X"07",X"07",X"07",X"07",X"07",X"07",X"07",X"07",X"07",
+ X"07",X"07",X"07",X"07",X"07",X"07",X"07",X"07",X"07",X"07",X"07",X"07",X"07",X"07",X"21",X"60",
+ X"A8",X"11",X"61",X"A8",X"01",X"0B",X"00",X"ED",X"B0",X"3E",X"30",X"32",X"65",X"A8",X"32",X"6B",
+ X"A8",X"CD",X"EA",X"3D",X"CD",X"4A",X"3E",X"CD",X"44",X"4C",X"C9",X"EB",X"E5",X"DD",X"E1",X"C5",
+ X"01",X"00",X"FC",X"09",X"C1",X"E5",X"FD",X"E1",X"EB",X"7E",X"F6",X"80",X"DD",X"77",X"00",X"78",
+ X"FD",X"77",X"00",X"11",X"E0",X"FF",X"DD",X"19",X"FD",X"19",X"23",X"7E",X"FE",X"FF",X"20",X"E9",
+ X"C9",X"CD",X"23",X"4A",X"21",X"02",X"A9",X"22",X"D0",X"A8",X"21",X"82",X"AC",X"22",X"D2",X"A8",
+ X"C9",X"21",X"43",X"A4",X"22",X"D4",X"A8",X"21",X"43",X"A0",X"22",X"D6",X"A8",X"06",X"1C",X"C5",
+ X"2A",X"D4",X"A8",X"E5",X"D1",X"1B",X"01",X"1C",X"00",X"ED",X"B0",X"2A",X"D6",X"A8",X"E5",X"D1",
+ X"1B",X"01",X"1C",X"00",X"ED",X"B0",X"11",X"20",X"00",X"2A",X"D4",X"A8",X"19",X"22",X"D4",X"A8",
+ X"2A",X"D6",X"A8",X"19",X"22",X"D6",X"A8",X"C1",X"10",X"D5",X"06",X"1C",X"DD",X"2A",X"D0",X"A8",
+ X"FD",X"2A",X"D2",X"A8",X"21",X"5D",X"A4",X"11",X"5D",X"A0",X"C5",X"DD",X"7E",X"00",X"77",X"FD",
+ X"7E",X"00",X"12",X"01",X"20",X"00",X"DD",X"09",X"FD",X"09",X"09",X"E5",X"EB",X"09",X"EB",X"E1",
+ X"C1",X"10",X"E7",X"21",X"D0",X"A8",X"34",X"23",X"23",X"34",X"C9",X"CD",X"23",X"4A",X"21",X"1D",
+ X"A9",X"22",X"D0",X"A8",X"21",X"9D",X"AC",X"22",X"D2",X"A8",X"C9",X"21",X"5D",X"A4",X"22",X"D4",
+ X"A8",X"21",X"5D",X"A0",X"22",X"D6",X"A8",X"06",X"1C",X"C5",X"2A",X"D4",X"A8",X"E5",X"D1",X"2B",
+ X"01",X"1B",X"00",X"ED",X"B8",X"2A",X"D6",X"A8",X"E5",X"D1",X"2B",X"01",X"1B",X"00",X"ED",X"B8",
+ X"11",X"20",X"00",X"2A",X"D4",X"A8",X"19",X"22",X"D4",X"A8",X"2A",X"D6",X"A8",X"19",X"22",X"D6",
+ X"A8",X"C1",X"10",X"D5",X"06",X"1C",X"DD",X"2A",X"D0",X"A8",X"FD",X"2A",X"D2",X"A8",X"21",X"42",
+ X"A4",X"11",X"42",X"A0",X"C5",X"DD",X"7E",X"00",X"77",X"FD",X"7E",X"00",X"12",X"01",X"20",X"00",
+ X"DD",X"09",X"FD",X"09",X"09",X"E5",X"EB",X"09",X"EB",X"E1",X"C1",X"10",X"E7",X"21",X"D0",X"A8",
+ X"35",X"23",X"23",X"35",X"C9",X"CD",X"23",X"4A",X"21",X"82",X"A7",X"22",X"D0",X"A8",X"21",X"A2",
+ X"A7",X"22",X"D2",X"A8",X"21",X"82",X"A3",X"22",X"D4",X"A8",X"21",X"A2",X"A3",X"22",X"D6",X"A8",
+ X"21",X"62",X"AC",X"22",X"D8",X"A8",X"21",X"E2",X"AF",X"22",X"DA",X"A8",X"C9",X"21",X"82",X"A7",
+ X"22",X"D0",X"A8",X"21",X"A2",X"A7",X"22",X"D2",X"A8",X"21",X"82",X"A3",X"22",X"D4",X"A8",X"21",
+ X"A2",X"A3",X"22",X"D6",X"A8",X"3E",X"1B",X"32",X"DC",X"A8",X"2A",X"D0",X"A8",X"EB",X"2A",X"D2",
+ X"A8",X"EB",X"01",X"1C",X"00",X"ED",X"B0",X"2A",X"D4",X"A8",X"EB",X"2A",X"D6",X"A8",X"EB",X"01",
+ X"1C",X"00",X"ED",X"B0",X"11",X"E0",X"FF",X"2A",X"D0",X"A8",X"19",X"22",X"D0",X"A8",X"2A",X"D2",
+ X"A8",X"19",X"22",X"D2",X"A8",X"2A",X"D4",X"A8",X"19",X"22",X"D4",X"A8",X"2A",X"D6",X"A8",X"19",
+ X"22",X"D6",X"A8",X"21",X"DC",X"A8",X"35",X"20",X"C1",X"2A",X"D8",X"A8",X"11",X"42",X"A4",X"01",
+ X"1C",X"00",X"ED",X"B0",X"2A",X"DA",X"A8",X"11",X"42",X"A0",X"01",X"1C",X"00",X"ED",X"B0",X"11",
+ X"E0",X"FF",X"2A",X"D8",X"A8",X"19",X"22",X"D8",X"A8",X"2A",X"DA",X"A8",X"19",X"22",X"DA",X"A8",
+ X"C9",X"CD",X"23",X"4A",X"21",X"62",X"A4",X"22",X"D0",X"A8",X"21",X"42",X"A4",X"22",X"D2",X"A8",
+ X"21",X"62",X"A0",X"22",X"D4",X"A8",X"21",X"42",X"A0",X"22",X"D6",X"A8",X"21",X"02",X"A9",X"22",
+ X"D8",X"A8",X"21",X"82",X"AC",X"22",X"DA",X"A8",X"C9",X"21",X"62",X"A4",X"22",X"D0",X"A8",X"21",
+ X"42",X"A4",X"22",X"D2",X"A8",X"21",X"62",X"A0",X"22",X"D4",X"A8",X"21",X"42",X"A0",X"22",X"D6",
+ X"A8",X"3E",X"1B",X"32",X"DC",X"A8",X"2A",X"D0",X"A8",X"EB",X"2A",X"D2",X"A8",X"EB",X"01",X"1C",
+ X"00",X"ED",X"B0",X"2A",X"D4",X"A8",X"EB",X"2A",X"D6",X"A8",X"EB",X"01",X"1C",X"00",X"ED",X"B0",
+ X"11",X"20",X"00",X"2A",X"D0",X"A8",X"19",X"22",X"D0",X"A8",X"2A",X"D2",X"A8",X"19",X"22",X"D2",
+ X"A8",X"2A",X"D4",X"A8",X"19",X"22",X"D4",X"A8",X"2A",X"D6",X"A8",X"19",X"22",X"D6",X"A8",X"21",
+ X"DC",X"A8",X"35",X"20",X"C1",X"2A",X"D8",X"A8",X"11",X"A2",X"A7",X"01",X"1C",X"00",X"ED",X"B0",
+ X"2A",X"DA",X"A8",X"11",X"A2",X"A3",X"01",X"1C",X"00",X"ED",X"B0",X"11",X"20",X"00",X"2A",X"D8",
+ X"A8",X"19",X"22",X"D8",X"A8",X"2A",X"DA",X"A8",X"19",X"22",X"DA",X"A8",X"C9",X"CD",X"50",X"41",
+ X"2A",X"50",X"B0",X"E5",X"2A",X"50",X"B4",X"E5",X"CD",X"29",X"4C",X"CD",X"F5",X"37",X"06",X"1C",
+ X"C5",X"CD",X"1D",X"38",X"01",X"00",X"08",X"0D",X"20",X"FD",X"10",X"FB",X"C1",X"10",X"F1",X"E1",
+ X"26",X"D0",X"22",X"50",X"B4",X"E1",X"22",X"50",X"B0",X"3E",X"01",X"32",X"09",X"A8",X"C9",X"CD",
+ X"50",X"41",X"2A",X"50",X"B0",X"E5",X"2A",X"50",X"B4",X"E5",X"CD",X"29",X"4C",X"CD",X"A1",X"38",
+ X"06",X"1C",X"C5",X"CD",X"C9",X"38",X"01",X"00",X"08",X"0D",X"20",X"FD",X"10",X"FB",X"C1",X"10",
+ X"F1",X"E1",X"26",X"10",X"22",X"50",X"B4",X"E1",X"22",X"50",X"B0",X"3E",X"03",X"32",X"09",X"A8",
+ X"C9",X"CD",X"50",X"41",X"2A",X"50",X"B0",X"E5",X"2A",X"50",X"B4",X"E5",X"CD",X"29",X"4C",X"CD",
+ X"01",X"37",X"06",X"1C",X"C5",X"CD",X"11",X"37",X"01",X"00",X"08",X"0D",X"20",X"FD",X"10",X"FB",
+ X"C1",X"10",X"F1",X"E1",X"22",X"50",X"B4",X"E1",X"2E",X"D0",X"22",X"50",X"B0",X"3E",X"02",X"32",
+ X"09",X"A8",X"C9",X"CD",X"50",X"41",X"2A",X"50",X"B0",X"E5",X"2A",X"50",X"B4",X"E5",X"CD",X"29",
+ X"4C",X"CD",X"7B",X"37",X"06",X"1C",X"C5",X"CD",X"8B",X"37",X"01",X"00",X"08",X"0D",X"20",X"FD",
+ X"10",X"FB",X"C1",X"10",X"F1",X"E1",X"22",X"50",X"B4",X"E1",X"2E",X"19",X"22",X"50",X"B0",X"3E",
+ X"00",X"32",X"09",X"A8",X"C9",X"00",X"00",X"01",X"FF",X"01",X"4B",X"00",X"86",X"01",X"2D",X"09",
+ X"12",X"08",X"8B",X"00",X"00",X"08",X"08",X"09",X"0A",X"01",X"21",X"11",X"03",X"10",X"11",X"00",
+ X"FF",X"00",X"19",X"04",X"FF",X"04",X"BF",X"00",X"0E",X"01",X"52",X"00",X"4C",X"01",X"95",X"00",
+ X"0C",X"04",X"66",X"00",X"21",X"04",X"D6",X"00",X"1A",X"08",X"47",X"00",X"00",X"08",X"18",X"00",
+ X"05",X"02",X"FF",X"02",X"91",X"04",X"62",X"00",X"37",X"02",X"59",X"00",X"FF",X"00",X"99",X"01",
+ X"25",X"09",X"00",X"08",X"3D",X"09",X"00",X"01",X"FF",X"01",X"75",X"00",X"2F",X"04",X"5B",X"00",
+ X"FF",X"00",X"D6",X"08",X"2C",X"00",X"0D",X"02",X"41",X"00",X"0F",X"10",X"13",X"00",X"FF",X"00",
+ X"7C",X"04",X"6A",X"00",X"1E",X"01",X"51",X"00",X"FF",X"00",X"48",X"08",X"19",X"09",X"01",X"01",
+ X"26",X"09",X"01",X"08",X"55",X"09",X"08",X"01",X"FF",X"01",X"78",X"00",X"5A",X"04",X"3A",X"00",
+ X"7D",X"01",X"FF",X"01",X"1B",X"00",X"B1",X"02",X"2E",X"00",X"1B",X"10",X"13",X"00",X"EC",X"08",
+ X"6B",X"00",X"1D",X"01",X"75",X"00",X"1E",X"08",X"6B",X"00",X"2C",X"02",X"75",X"0A",X"03",X"08",
+ X"5A",X"0A",X"00",X"02",X"A1",X"0A",X"34",X"08",X"1D",X"00",X"06",X"10",X"0F",X"00",X"F5",X"04",
+ X"FF",X"04",X"FF",X"04",X"6C",X"3E",X"30",X"32",X"1D",X"A8",X"32",X"1E",X"A8",X"32",X"1F",X"A8",
+ X"3A",X"CE",X"A8",X"32",X"E0",X"A8",X"32",X"E8",X"A8",X"3E",X"00",X"32",X"E2",X"A8",X"32",X"EA",
+ X"A8",X"32",X"E3",X"A8",X"32",X"EB",X"A8",X"32",X"E4",X"A8",X"32",X"EC",X"A8",X"3A",X"C2",X"A8",
+ X"32",X"E1",X"A8",X"32",X"E9",X"A8",X"3E",X"01",X"32",X"9A",X"A8",X"3A",X"E0",X"A8",X"32",X"CF",
+ X"A8",X"3A",X"E1",X"A8",X"3E",X"00",X"32",X"9B",X"A8",X"3E",X"C0",X"32",X"85",X"A8",X"3A",X"E2",
+ X"A8",X"32",X"C0",X"A8",X"3A",X"E3",X"A8",X"32",X"9E",X"A8",X"CD",X"E7",X"4C",X"3E",X"02",X"32",
+ X"C0",X"A8",X"CD",X"81",X"36",X"21",X"15",X"3A",X"22",X"F8",X"A8",X"7E",X"32",X"FA",X"A8",X"23",
+ X"7E",X"23",X"32",X"FB",X"A8",X"3E",X"00",X"32",X"FC",X"A8",X"3E",X"03",X"32",X"93",X"A8",X"CD",
+ X"9E",X"54",X"CD",X"A7",X"3B",X"CD",X"7D",X"46",X"CD",X"DB",X"54",X"CD",X"BE",X"3E",X"CD",X"03",
+ X"44",X"CD",X"03",X"44",X"CD",X"03",X"44",X"CD",X"A5",X"42",X"CD",X"34",X"42",X"3A",X"FC",X"A8",
+ X"FE",X"C0",X"C8",X"3A",X"A9",X"A8",X"FE",X"00",X"C0",X"3A",X"8C",X"A8",X"FE",X"FF",X"C8",X"3A",
+ X"8E",X"A8",X"E6",X"FC",X"FE",X"50",X"20",X"0D",X"3A",X"8E",X"A8",X"E6",X"03",X"47",X"C6",X"B0",
+ X"6F",X"26",X"A8",X"7E",X"C9",X"21",X"92",X"A8",X"35",X"20",X"B4",X"3E",X"08",X"77",X"CD",X"E6",
+ X"53",X"CD",X"AA",X"43",X"C3",X"4F",X"3B",X"21",X"0A",X"A8",X"06",X"06",X"36",X"00",X"23",X"10",
+ X"FB",X"3A",X"FA",X"A8",X"21",X"0F",X"A8",X"06",X"05",X"CB",X"3F",X"CB",X"16",X"2B",X"10",X"F9",
+ X"3A",X"FB",X"A8",X"3D",X"32",X"FB",X"A8",X"FE",X"00",X"C0",X"2A",X"F8",X"A8",X"7E",X"32",X"FA",
+ X"A8",X"23",X"7E",X"32",X"FB",X"A8",X"23",X"22",X"F8",X"A8",X"3A",X"FC",X"A8",X"3C",X"32",X"FC",
+ X"A8",X"C9",X"E5",X"D5",X"C5",X"DD",X"E5",X"FD",X"E5",X"47",X"3A",X"F4",X"A8",X"FE",X"00",X"20",
+ X"17",X"3A",X"9A",X"A8",X"DD",X"21",X"64",X"A8",X"FE",X"01",X"28",X"04",X"DD",X"21",X"6A",X"A8",
+ X"CD",X"10",X"3C",X"10",X"FB",X"CD",X"4A",X"3E",X"FD",X"E1",X"DD",X"E1",X"C1",X"D1",X"E1",X"C9",
+ X"DD",X"E5",X"DD",X"7E",X"00",X"FE",X"20",X"20",X"02",X"3E",X"30",X"3C",X"FE",X"3A",X"28",X"09",
+ X"DD",X"77",X"00",X"DD",X"E1",X"CD",X"33",X"3C",X"C9",X"3E",X"30",X"DD",X"77",X"00",X"DD",X"2B",
+ X"C3",X"12",X"3C",X"E5",X"D5",X"C5",X"DD",X"E5",X"E1",X"11",X"69",X"3C",X"3A",X"CD",X"A8",X"FE",
+ X"00",X"28",X"03",X"11",X"6F",X"3C",X"2B",X"2B",X"2B",X"06",X"04",X"1A",X"BE",X"28",X"04",X"C1",
+ X"D1",X"E1",X"C9",X"13",X"23",X"10",X"F4",X"3A",X"9B",X"A8",X"FE",X"05",X"28",X"07",X"3C",X"32",
+ X"9B",X"A8",X"CD",X"BA",X"3C",X"C1",X"D1",X"E1",X"C9",X"35",X"30",X"30",X"30",X"30",X"30",X"30",
+ X"30",X"30",X"30",X"30",X"30",X"30",X"3A",X"00",X"C2",X"E6",X"10",X"20",X"05",X"3E",X"0F",X"32",
+ X"93",X"A8",X"DD",X"21",X"FE",X"A4",X"FD",X"21",X"FE",X"A0",X"11",X"E0",X"FF",X"3A",X"93",X"A8",
+ X"47",X"0E",X"00",X"78",X"FE",X"00",X"28",X"0D",X"3E",X"88",X"DD",X"77",X"00",X"3E",X"10",X"FD",
+ X"77",X"00",X"05",X"18",X"0A",X"3E",X"00",X"DD",X"77",X"00",X"3E",X"10",X"FD",X"77",X"00",X"DD",
+ X"19",X"FD",X"19",X"0C",X"79",X"FE",X"05",X"20",X"DA",X"C9",X"DD",X"21",X"BF",X"A7",X"FD",X"21",
+ X"BF",X"A3",X"11",X"E0",X"FF",X"3A",X"9B",X"A8",X"47",X"0E",X"00",X"78",X"FE",X"00",X"28",X"0D",
+ X"3E",X"84",X"DD",X"77",X"00",X"3E",X"14",X"FD",X"77",X"00",X"05",X"18",X"0A",X"3E",X"00",X"DD",
+ X"77",X"00",X"3E",X"14",X"FD",X"77",X"00",X"DD",X"19",X"FD",X"19",X"0C",X"79",X"FE",X"05",X"20",
+ X"DA",X"C9",X"C6",X"20",X"6F",X"CB",X"25",X"26",X"B0",X"7E",X"57",X"26",X"B4",X"2C",X"7E",X"5F",
+ X"78",X"C6",X"20",X"47",X"68",X"CB",X"25",X"26",X"B0",X"7E",X"47",X"26",X"B4",X"2C",X"7E",X"4F",
+ X"7A",X"D6",X"04",X"B8",X"30",X"15",X"7A",X"C6",X"04",X"B8",X"38",X"0F",X"7B",X"D6",X"04",X"B9",
+ X"30",X"09",X"7B",X"C6",X"04",X"B9",X"38",X"03",X"3E",X"00",X"C9",X"7A",X"D6",X"06",X"B8",X"30",
+ X"15",X"7A",X"C6",X"06",X"B8",X"38",X"0F",X"7B",X"D6",X"06",X"B9",X"30",X"09",X"7B",X"C6",X"06",
+ X"B9",X"38",X"03",X"3E",X"01",X"C9",X"3E",X"FF",X"C9",X"10",X"10",X"10",X"10",X"1C",X"1C",X"1C",
+ X"1C",X"1C",X"1C",X"1C",X"1C",X"1C",X"1C",X"1C",X"1C",X"E5",X"C5",X"D5",X"DD",X"E5",X"DD",X"21",
+ X"49",X"3D",X"21",X"1E",X"A3",X"06",X"10",X"11",X"E0",X"FF",X"DD",X"7E",X"00",X"77",X"19",X"DD",
+ X"23",X"10",X"F7",X"3A",X"85",X"A8",X"CB",X"3F",X"CB",X"3F",X"CB",X"3F",X"CB",X"3F",X"DD",X"21",
+ X"1E",X"A7",X"4F",X"06",X"10",X"11",X"E0",X"FF",X"79",X"FE",X"00",X"28",X"0C",X"3E",X"80",X"DD",
+ X"77",X"00",X"DD",X"19",X"05",X"0D",X"C3",X"88",X"3D",X"3A",X"85",X"A8",X"E6",X"0F",X"CB",X"3F",
+ X"CB",X"3F",X"FE",X"00",X"28",X"10",X"EE",X"03",X"C6",X"80",X"FE",X"84",X"20",X"02",X"3E",X"85",
+ X"DD",X"77",X"00",X"DD",X"19",X"05",X"78",X"FE",X"00",X"28",X"0F",X"FE",X"FF",X"28",X"0B",X"3E",
+ X"85",X"DD",X"77",X"00",X"DD",X"19",X"05",X"C3",X"B6",X"3D",X"06",X"02",X"3A",X"85",X"A8",X"E6",
+ X"E0",X"FE",X"E0",X"28",X"0B",X"06",X"01",X"3A",X"85",X"A8",X"E6",X"E0",X"20",X"02",X"06",X"00",
+ X"78",X"32",X"86",X"A8",X"DD",X"E1",X"D1",X"C1",X"E1",X"C9",X"DD",X"21",X"A0",X"A7",X"FD",X"21",
+ X"A0",X"A3",X"21",X"12",X"3E",X"11",X"2E",X"3E",X"06",X"1C",X"7E",X"F6",X"80",X"DD",X"77",X"00",
+ X"1A",X"FD",X"77",X"00",X"D5",X"11",X"E0",X"FF",X"DD",X"19",X"FD",X"19",X"D1",X"13",X"23",X"10",
+ X"E9",X"C9",X"20",X"10",X"0C",X"01",X"19",X"05",X"12",X"31",X"20",X"20",X"08",X"09",X"20",X"13",
+ X"03",X"0F",X"12",X"05",X"20",X"20",X"10",X"0C",X"01",X"19",X"05",X"12",X"32",X"20",X"2C",X"2C",
+ X"2C",X"2C",X"2C",X"2C",X"2C",X"2C",X"2C",X"2C",X"24",X"24",X"24",X"24",X"24",X"24",X"24",X"24",
+ X"2C",X"2C",X"2C",X"2C",X"2C",X"2C",X"2C",X"2C",X"2C",X"2C",X"DD",X"21",X"81",X"A7",X"FD",X"21",
+ X"81",X"A3",X"21",X"60",X"A8",X"06",X"06",X"11",X"E0",X"FF",X"7E",X"F6",X"80",X"DD",X"77",X"00",
+ X"3A",X"82",X"A8",X"FD",X"77",X"00",X"DD",X"19",X"FD",X"19",X"23",X"10",X"ED",X"DD",X"21",X"21",
+ X"A5",X"FD",X"21",X"21",X"A1",X"21",X"66",X"A8",X"06",X"06",X"7E",X"F6",X"80",X"DD",X"77",X"00",
+ X"3A",X"83",X"A8",X"FD",X"77",X"00",X"DD",X"19",X"FD",X"19",X"23",X"10",X"ED",X"DD",X"21",X"41",
+ X"A6",X"FD",X"21",X"41",X"A2",X"21",X"6C",X"A8",X"06",X"06",X"7E",X"F6",X"80",X"DD",X"77",X"00",
+ X"3A",X"84",X"A8",X"FD",X"77",X"00",X"DD",X"19",X"FD",X"19",X"23",X"10",X"ED",X"C9",X"34",X"20",
+ X"24",X"28",X"2C",X"34",X"30",X"30",X"34",X"2C",X"28",X"24",X"20",X"34",X"34",X"34",X"21",X"C9",
+ X"A8",X"35",X"20",X"2B",X"3E",X"07",X"77",X"2B",X"35",X"20",X"24",X"3E",X"30",X"77",X"2B",X"35",
+ X"20",X"1D",X"3E",X"08",X"77",X"3A",X"18",X"A8",X"3C",X"FE",X"20",X"20",X"02",X"3E",X"1F",X"32",
+ X"18",X"A8",X"3A",X"87",X"A8",X"3C",X"FE",X"08",X"20",X"02",X"3E",X"07",X"32",X"87",X"A8",X"21",
+ X"1C",X"A8",X"35",X"C0",X"3A",X"86",X"A8",X"FE",X"02",X"20",X"21",X"3A",X"00",X"A8",X"3C",X"32",
+ X"00",X"A8",X"E6",X"07",X"6F",X"26",X"00",X"11",X"AE",X"3E",X"19",X"46",X"21",X"82",X"A8",X"3A",
+ X"9A",X"A8",X"FE",X"01",X"28",X"03",X"21",X"83",X"A8",X"70",X"18",X"08",X"3E",X"34",X"32",X"82",
+ X"A8",X"32",X"83",X"A8",X"CD",X"4A",X"3E",X"3E",X"40",X"32",X"1C",X"A8",X"3A",X"1B",X"A8",X"FE",
+ X"00",X"20",X"07",X"3A",X"8F",X"A8",X"FE",X"00",X"28",X"23",X"3A",X"53",X"B0",X"3C",X"3C",X"FE",
+ X"98",X"20",X"13",X"3E",X"FF",X"32",X"53",X"B0",X"32",X"55",X"B0",X"3E",X"00",X"32",X"1B",X"A8",
+ X"32",X"8F",X"A8",X"C3",X"5D",X"3F",X"32",X"53",X"B0",X"3C",X"32",X"55",X"B0",X"21",X"8B",X"A8",
+ X"7E",X"FE",X"00",X"28",X"10",X"3A",X"57",X"B0",X"3C",X"FE",X"A0",X"20",X"05",X"3E",X"00",X"77",
+ X"3E",X"FF",X"32",X"57",X"B0",X"3A",X"8D",X"A8",X"FE",X"00",X"28",X"15",X"3A",X"59",X"B0",X"3D",
+ X"FE",X"97",X"20",X"07",X"3E",X"00",X"32",X"8D",X"A8",X"3E",X"FF",X"32",X"59",X"B0",X"32",X"5B",
+ X"B0",X"3A",X"96",X"A8",X"FE",X"00",X"28",X"12",X"3A",X"61",X"B0",X"3C",X"FE",X"A0",X"20",X"07",
+ X"3E",X"00",X"32",X"96",X"A8",X"3E",X"FF",X"32",X"61",X"B0",X"3A",X"99",X"A8",X"FE",X"00",X"28",
+ X"17",X"3D",X"28",X"0F",X"32",X"99",X"A8",X"3A",X"62",X"B4",X"EE",X"02",X"F6",X"80",X"32",X"62",
+ X"B4",X"18",X"05",X"3E",X"FF",X"32",X"63",X"B0",X"3A",X"B4",X"A8",X"FE",X"00",X"28",X"41",X"E6",
+ X"E0",X"20",X"0C",X"3A",X"B4",X"A8",X"CB",X"3F",X"E6",X"01",X"C6",X"0F",X"32",X"65",X"B0",X"3A",
+ X"B4",X"A8",X"3D",X"32",X"B4",X"A8",X"20",X"28",X"3E",X"FF",X"32",X"65",X"B0",X"DD",X"21",X"20",
+ X"A8",X"06",X"00",X"11",X"40",X"B4",X"DD",X"7E",X"00",X"FE",X"02",X"20",X"08",X"3E",X"02",X"12",
+ X"3E",X"01",X"DD",X"77",X"00",X"13",X"13",X"D5",X"11",X"08",X"00",X"DD",X"19",X"D1",X"10",X"E6",
+ X"21",X"B6",X"A8",X"34",X"20",X"10",X"3A",X"B6",X"A8",X"77",X"21",X"89",X"A8",X"34",X"7E",X"FE",
+ X"21",X"20",X"03",X"3E",X"20",X"77",X"C9",X"DD",X"21",X"A0",X"A7",X"FD",X"21",X"A0",X"A3",X"CD",
+ X"3A",X"40",X"DD",X"21",X"BE",X"A7",X"FD",X"21",X"BE",X"A3",X"11",X"E0",X"FF",X"DD",X"E5",X"FD",
+ X"E5",X"3E",X"20",X"06",X"1C",X"DD",X"77",X"00",X"FD",X"77",X"00",X"DD",X"19",X"FD",X"19",X"10",
+ X"F4",X"FD",X"E1",X"DD",X"E1",X"FD",X"23",X"DD",X"23",X"06",X"1C",X"DD",X"77",X"00",X"FD",X"77",
+ X"00",X"DD",X"19",X"FD",X"19",X"10",X"F4",X"C9",X"D5",X"C5",X"78",X"2F",X"CB",X"3F",X"CB",X"3F",
+ X"CB",X"3F",X"3D",X"47",X"69",X"CB",X"3D",X"CB",X"3D",X"CB",X"3D",X"2D",X"26",X"00",X"3E",X"05",
+ X"CB",X"25",X"CB",X"14",X"3D",X"20",X"F9",X"11",X"40",X"A4",X"19",X"48",X"06",X"00",X"09",X"7E",
+ X"C1",X"D1",X"C9",X"E5",X"2A",X"1E",X"A8",X"3A",X"1D",X"A8",X"86",X"32",X"1D",X"A8",X"23",X"26",
+ X"30",X"22",X"1E",X"A8",X"E1",X"C9",X"D5",X"E5",X"6F",X"26",X"00",X"11",X"B3",X"40",X"19",X"7E",
+ X"E1",X"D1",X"C9",X"0C",X"00",X"00",X"00",X"03",X"02",X"08",X"0C",X"03",X"0C",X"0C",X"01",X"02",
+ X"03",X"05",X"00",X"03",X"0C",X"0D",X"07",X"0E",X"0B",X"0F",X"09",X"05",X"06",X"0A",X"00",X"03",
+ X"03",X"0C",X"0C",X"00",X"03",X"03",X"0C",X"0C",X"01",X"03",X"04",X"0C",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"08",X"FF",X"FF",X"FF",X"FF",X"0E",X"09",X"02",X"00",X"0C",X"0C",X"0C",
+ X"0C",X"FF",X"FF",X"03",X"0C",X"0D",X"07",X"0E",X"0B",X"0F",X"09",X"05",X"06",X"0A",X"00",X"00",
+ X"00",X"00",X"00",X"01",X"04",X"02",X"08",X"03",X"03",X"DD",X"21",X"14",X"A8",X"3E",X"FF",X"DD",
+ X"77",X"00",X"DD",X"77",X"01",X"DD",X"77",X"02",X"DD",X"77",X"03",X"21",X"42",X"A4",X"16",X"10",
+ X"06",X"1C",X"1E",X"F0",X"3E",X"35",X"BE",X"28",X"14",X"23",X"7B",X"D6",X"08",X"5F",X"10",X"F4",
+ X"23",X"23",X"23",X"23",X"7A",X"C6",X"08",X"57",X"FE",X"E0",X"20",X"E4",X"C9",X"7A",X"C6",X"04",
+ X"DD",X"77",X"01",X"7B",X"D6",X"0C",X"DD",X"77",X"00",X"DD",X"23",X"DD",X"23",X"C3",X"29",X"41",
+ X"3A",X"C0",X"A8",X"6F",X"26",X"00",X"06",X"06",X"CB",X"25",X"CB",X"14",X"10",X"FA",X"11",X"00",
+ X"2C",X"19",X"7E",X"32",X"9C",X"A8",X"23",X"7E",X"32",X"9D",X"A8",X"23",X"7E",X"32",X"9E",X"A8",
+ X"23",X"7E",X"32",X"B0",X"A8",X"23",X"7E",X"32",X"B1",X"A8",X"23",X"7E",X"32",X"B2",X"A8",X"23",
+ X"7E",X"32",X"B3",X"A8",X"23",X"7E",X"32",X"88",X"A8",X"23",X"7E",X"32",X"B5",X"A8",X"23",X"7E",
+ X"32",X"9F",X"A8",X"32",X"04",X"A8",X"32",X"05",X"A8",X"23",X"7E",X"32",X"87",X"A8",X"23",X"23",
+ X"23",X"23",X"23",X"11",X"62",X"AC",X"3E",X"07",X"32",X"12",X"A8",X"3E",X"07",X"32",X"13",X"A8",
+ X"7E",X"E5",X"D5",X"D5",X"E1",X"CD",X"D9",X"41",X"E1",X"D1",X"01",X"80",X"FF",X"09",X"EB",X"23",
+ X"3A",X"13",X"A8",X"3D",X"32",X"13",X"A8",X"20",X"E7",X"EB",X"01",X"84",X"03",X"09",X"EB",X"3A",
+ X"12",X"A8",X"3D",X"32",X"12",X"A8",X"20",X"D3",X"C9",X"C5",X"D5",X"E5",X"DD",X"E5",X"E5",X"4F",
+ X"06",X"00",X"3E",X"05",X"CB",X"21",X"CB",X"10",X"3D",X"20",X"F9",X"21",X"00",X"10",X"09",X"E5",
+ X"DD",X"E1",X"E1",X"E5",X"11",X"80",X"03",X"19",X"EB",X"E1",X"3E",X"04",X"32",X"11",X"A8",X"3E",
+ X"04",X"32",X"10",X"A8",X"01",X"E0",X"FF",X"DD",X"7E",X"00",X"77",X"DD",X"7E",X"10",X"12",X"09",
+ X"EB",X"09",X"EB",X"DD",X"23",X"3A",X"10",X"A8",X"3D",X"32",X"10",X"A8",X"20",X"E9",X"01",X"81",
+ X"00",X"09",X"EB",X"09",X"EB",X"3A",X"11",X"A8",X"3D",X"32",X"11",X"A8",X"20",X"D1",X"DD",X"E1",
+ X"E1",X"D1",X"C1",X"C9",X"3A",X"0B",X"A8",X"FE",X"00",X"28",X"0E",X"3A",X"F0",X"A8",X"FE",X"01",
+ X"C8",X"3E",X"01",X"32",X"F0",X"A8",X"C3",X"55",X"42",X"3A",X"F0",X"A8",X"FE",X"00",X"C8",X"3E",
+ X"00",X"32",X"F0",X"A8",X"C9",X"3A",X"A0",X"A8",X"FE",X"00",X"C0",X"3A",X"93",X"A8",X"FE",X"00",
+ X"C8",X"3D",X"32",X"93",X"A8",X"CD",X"76",X"3C",X"DD",X"21",X"A0",X"A8",X"3E",X"20",X"DD",X"77",
+ X"00",X"3A",X"09",X"A8",X"DD",X"77",X"01",X"2A",X"50",X"B0",X"CD",X"8C",X"42",X"61",X"22",X"5E",
+ X"B0",X"2A",X"50",X"B4",X"78",X"F6",X"05",X"6F",X"22",X"5E",X"B4",X"C9",X"3A",X"A1",X"A8",X"01",
+ X"0B",X"40",X"FE",X"00",X"C8",X"01",X"05",X"80",X"FE",X"01",X"C8",X"01",X"0B",X"00",X"FE",X"02",
+ X"C8",X"01",X"05",X"00",X"C9",X"21",X"97",X"A8",X"35",X"C0",X"3E",X"04",X"77",X"DD",X"21",X"A0",
+ X"A8",X"DD",X"7E",X"00",X"FE",X"00",X"C8",X"3A",X"5F",X"B0",X"3C",X"06",X"05",X"FE",X"09",X"28",
+ X"07",X"06",X"0B",X"FE",X"0F",X"28",X"01",X"47",X"78",X"32",X"5F",X"B0",X"DD",X"7E",X"00",X"FE",
+ X"01",X"28",X"05",X"DD",X"35",X"00",X"18",X"26",X"DD",X"E5",X"3E",X"08",X"06",X"0F",X"CD",X"F2",
+ X"3C",X"DD",X"E1",X"FE",X"FF",X"28",X"17",X"3E",X"FF",X"32",X"5F",X"B0",X"21",X"93",X"A8",X"34",
+ X"CD",X"76",X"3C",X"3E",X"00",X"32",X"A0",X"A8",X"3E",X"01",X"CD",X"E2",X"3B",X"C9",X"21",X"5E",
+ X"B0",X"11",X"5F",X"B4",X"DD",X"E5",X"3A",X"A1",X"A8",X"F5",X"CD",X"3A",X"55",X"F1",X"47",X"3A",
+ X"A1",X"A8",X"B8",X"28",X"0D",X"CD",X"8C",X"42",X"78",X"F6",X"05",X"32",X"5E",X"B4",X"79",X"32",
+ X"5F",X"B0",X"DD",X"E1",X"3A",X"91",X"A8",X"FE",X"FF",X"28",X"7E",X"3A",X"90",X"A8",X"FE",X"21",
+ X"28",X"22",X"FE",X"24",X"20",X"73",X"3A",X"5E",X"B0",X"32",X"60",X"B0",X"3A",X"5F",X"B4",X"D6",
+ X"04",X"32",X"61",X"B4",X"2A",X"94",X"A8",X"3E",X"1F",X"77",X"11",X"E0",X"FF",X"19",X"3E",X"1E",
+ X"77",X"C3",X"6E",X"43",X"3A",X"5E",X"B0",X"D6",X"04",X"32",X"60",X"B0",X"3A",X"5F",X"B4",X"C6",
+ X"04",X"32",X"61",X"B4",X"2A",X"94",X"A8",X"3E",X"1C",X"77",X"3E",X"1D",X"23",X"77",X"3E",X"9C",
+ X"32",X"61",X"B0",X"3E",X"09",X"32",X"60",X"B4",X"3E",X"04",X"32",X"96",X"A8",X"CD",X"0F",X"4A",
+ X"2A",X"5E",X"B0",X"7D",X"C6",X"10",X"6F",X"26",X"0A",X"22",X"62",X"B0",X"2A",X"5E",X"B4",X"2E",
+ X"03",X"22",X"62",X"B4",X"3E",X"20",X"32",X"99",X"A8",X"3E",X"32",X"CD",X"E2",X"3B",X"3E",X"00",
+ X"32",X"A0",X"A8",X"3E",X"FF",X"32",X"5F",X"B0",X"C9",X"C9",X"3A",X"78",X"A8",X"FE",X"00",X"C8",
+ X"3E",X"0E",X"06",X"08",X"CD",X"F2",X"3C",X"FE",X"FF",X"C8",X"2A",X"5C",X"B0",X"7D",X"C6",X"08",
+ X"6F",X"26",X"09",X"22",X"62",X"B0",X"2A",X"5C",X"B4",X"2E",X"03",X"22",X"62",X"B4",X"3E",X"20",
+ X"32",X"99",X"A8",X"3E",X"0A",X"CD",X"E2",X"3B",X"3A",X"7B",X"A8",X"06",X"40",X"3A",X"85",X"A8",
+ X"80",X"30",X"02",X"3E",X"FF",X"32",X"85",X"A8",X"CD",X"59",X"3D",X"3E",X"FF",X"32",X"5D",X"B0",
+ X"3E",X"00",X"32",X"78",X"A8",X"3A",X"93",X"A8",X"3C",X"32",X"93",X"A8",X"CD",X"76",X"3C",X"CD",
+ X"32",X"4A",X"C9",X"DD",X"21",X"78",X"A8",X"DD",X"7E",X"00",X"FE",X"00",X"C8",X"21",X"5C",X"B0",
+ X"11",X"5D",X"B4",X"CD",X"2B",X"55",X"3A",X"F2",X"A8",X"3D",X"32",X"F2",X"A8",X"FE",X"00",X"20",
+ X"2B",X"3E",X"03",X"32",X"F2",X"A8",X"3A",X"5C",X"B4",X"CB",X"3F",X"CB",X"3F",X"CB",X"3F",X"CB",
+ X"3F",X"CB",X"3F",X"CB",X"3F",X"3C",X"CB",X"27",X"CB",X"27",X"CB",X"27",X"CB",X"27",X"CB",X"27",
+ X"CB",X"27",X"F6",X"39",X"32",X"5C",X"B4",X"3E",X"04",X"32",X"5D",X"B0",X"3A",X"91",X"A8",X"FE",
+ X"FF",X"C8",X"3A",X"90",X"A8",X"FE",X"21",X"28",X"05",X"FE",X"24",X"28",X"01",X"C9",X"DD",X"21",
+ X"78",X"A8",X"3E",X"FD",X"DD",X"86",X"03",X"30",X"04",X"DD",X"77",X"03",X"C9",X"3E",X"00",X"DD",
+ X"77",X"00",X"3E",X"FF",X"32",X"5D",X"B0",X"C9",X"E5",X"D5",X"C5",X"DD",X"E5",X"FD",X"E5",X"7E",
+ X"E6",X"07",X"FE",X"04",X"C2",X"2D",X"45",X"1A",X"E6",X"07",X"FE",X"04",X"C2",X"2D",X"45",X"46",
+ X"1A",X"4F",X"CD",X"68",X"40",X"32",X"8E",X"A8",X"23",X"7E",X"2B",X"FE",X"0B",X"CA",X"35",X"45",
+ X"7E",X"FE",X"36",X"CA",X"7D",X"45",X"FE",X"08",X"20",X"51",X"3A",X"8B",X"A8",X"FE",X"00",X"C2",
+ X"2D",X"45",X"3A",X"89",X"A8",X"E6",X"F8",X"CA",X"2D",X"45",X"3E",X"01",X"CD",X"E2",X"3B",X"3A",
+ X"89",X"A8",X"47",X"3A",X"85",X"A8",X"80",X"30",X"02",X"3E",X"FF",X"32",X"85",X"A8",X"3E",X"00",
+ X"32",X"89",X"A8",X"CD",X"05",X"4A",X"3E",X"04",X"32",X"8B",X"A8",X"3A",X"50",X"B0",X"D6",X"02",
+ X"32",X"56",X"B0",X"3E",X"9C",X"32",X"57",X"B0",X"3A",X"51",X"B4",X"C6",X"08",X"32",X"57",X"B4",
+ X"3E",X"09",X"32",X"56",X"B4",X"CD",X"59",X"3D",X"C3",X"2D",X"45",X"FE",X"21",X"28",X"09",X"FE",
+ X"54",X"CA",X"14",X"46",X"FE",X"24",X"20",X"25",X"CD",X"00",X"4A",X"3E",X"01",X"CD",X"E2",X"3B",
+ X"3E",X"04",X"32",X"8A",X"A8",X"3A",X"88",X"A8",X"2F",X"47",X"3A",X"85",X"A8",X"80",X"38",X"07",
+ X"3E",X"FF",X"32",X"8C",X"A8",X"3E",X"00",X"32",X"85",X"A8",X"CD",X"59",X"3D",X"FD",X"E1",X"DD",
+ X"E1",X"C1",X"D1",X"E1",X"C9",X"3A",X"86",X"A8",X"FE",X"02",X"20",X"F1",X"23",X"3E",X"0D",X"77",
+ X"23",X"3E",X"0E",X"77",X"3A",X"50",X"B0",X"D6",X"04",X"32",X"58",X"B0",X"D6",X"10",X"32",X"5A",
+ X"B0",X"3A",X"51",X"B4",X"32",X"59",X"B4",X"32",X"5B",X"B4",X"3E",X"09",X"32",X"58",X"B4",X"32",
+ X"5A",X"B4",X"3E",X"9B",X"32",X"59",X"B0",X"32",X"5B",X"B0",X"3E",X"04",X"32",X"8D",X"A8",X"3E",
+ X"64",X"CD",X"E2",X"3B",X"CD",X"9D",X"4D",X"CD",X"59",X"3D",X"C3",X"2D",X"45",X"3A",X"78",X"A8",
+ X"FE",X"00",X"C2",X"2D",X"45",X"3E",X"05",X"CD",X"E2",X"3B",X"DD",X"21",X"78",X"A8",X"3E",X"01",
+ X"DD",X"77",X"00",X"3E",X"08",X"DD",X"77",X"02",X"3E",X"20",X"DD",X"77",X"03",X"3E",X"01",X"DD",
+ X"77",X"04",X"DD",X"77",X"05",X"CD",X"FB",X"49",X"CD",X"93",X"40",X"E6",X"01",X"28",X"16",X"3E",
+ X"02",X"DD",X"77",X"01",X"3A",X"50",X"B0",X"D6",X"0F",X"32",X"5C",X"B0",X"3A",X"51",X"B4",X"32",
+ X"5D",X"B4",X"C3",X"DA",X"45",X"3E",X"00",X"DD",X"77",X"01",X"3A",X"50",X"B0",X"C6",X"08",X"32",
+ X"5C",X"B0",X"3A",X"51",X"B4",X"D6",X"08",X"32",X"5D",X"B4",X"3E",X"0F",X"32",X"5C",X"B4",X"3E",
+ X"C0",X"32",X"5D",X"B0",X"3A",X"50",X"B0",X"32",X"52",X"B0",X"32",X"54",X"B0",X"3A",X"51",X"B4",
+ X"D6",X"08",X"32",X"55",X"B4",X"D6",X"10",X"32",X"53",X"B4",X"3E",X"09",X"32",X"52",X"B4",X"32",
+ X"54",X"B4",X"3E",X"90",X"32",X"53",X"B0",X"3E",X"91",X"32",X"55",X"B0",X"3E",X"04",X"32",X"8F",
+ X"A8",X"C3",X"2D",X"45",X"CD",X"37",X"4A",X"3E",X"55",X"77",X"3E",X"80",X"32",X"B4",X"A8",X"2A",
+ X"50",X"B0",X"26",X"0F",X"2D",X"22",X"64",X"B0",X"2A",X"50",X"B4",X"24",X"22",X"64",X"B4",X"3E",
+ X"0F",X"CD",X"E2",X"3B",X"DD",X"21",X"20",X"A8",X"06",X"08",X"11",X"08",X"00",X"DD",X"7E",X"00",
+ X"FE",X"00",X"28",X"05",X"3E",X"02",X"DD",X"77",X"00",X"DD",X"19",X"10",X"F0",X"C3",X"2D",X"45",
+ X"3A",X"98",X"A8",X"3D",X"32",X"98",X"A8",X"20",X"20",X"3A",X"86",X"A8",X"CB",X"27",X"EE",X"FF",
+ X"E6",X"07",X"32",X"98",X"A8",X"3A",X"51",X"B0",X"06",X"99",X"FE",X"99",X"20",X"02",X"06",X"9A",
+ X"78",X"32",X"51",X"B0",X"3E",X"02",X"32",X"50",X"B4",X"3E",X"02",X"77",X"C9",X"21",X"08",X"A8",
+ X"35",X"28",X"01",X"C9",X"3A",X"BE",X"A8",X"3D",X"32",X"BE",X"A8",X"20",X"11",X"3E",X"50",X"32",
+ X"BE",X"A8",X"3A",X"86",X"A8",X"FE",X"02",X"20",X"05",X"3E",X"02",X"CD",X"D4",X"49",X"3A",X"98",
+ X"A8",X"3D",X"32",X"98",X"A8",X"20",X"20",X"3A",X"86",X"A8",X"CB",X"27",X"EE",X"FF",X"E6",X"07",
+ X"32",X"98",X"A8",X"3A",X"51",X"B0",X"06",X"99",X"FE",X"99",X"20",X"02",X"06",X"9A",X"78",X"32",
+ X"51",X"B0",X"3E",X"02",X"32",X"50",X"B4",X"3E",X"08",X"77",X"21",X"50",X"B0",X"11",X"51",X"B4",
+ X"3A",X"80",X"A8",X"FE",X"00",X"20",X"05",X"3E",X"01",X"32",X"F1",X"A8",X"3A",X"80",X"A8",X"FE",
+ X"00",X"C4",X"95",X"48",X"3A",X"F1",X"A8",X"FE",X"00",X"C8",X"3A",X"09",X"A8",X"FE",X"00",X"20",
+ X"04",X"34",X"C3",X"0A",X"47",X"FE",X"01",X"20",X"06",X"1A",X"3D",X"12",X"C3",X"0A",X"47",X"FE",
+ X"02",X"20",X"04",X"35",X"C3",X"0A",X"47",X"1A",X"3C",X"12",X"CD",X"78",X"44",X"7E",X"E6",X"07",
+ X"32",X"10",X"A8",X"1A",X"E6",X"07",X"32",X"11",X"A8",X"46",X"1A",X"4F",X"CD",X"68",X"40",X"CD",
+ X"A6",X"40",X"47",X"3A",X"0C",X"A8",X"FE",X"00",X"28",X"0A",X"78",X"E6",X"01",X"28",X"05",X"3E",
+ X"00",X"C3",X"A1",X"47",X"3A",X"0D",X"A8",X"FE",X"00",X"28",X"0A",X"78",X"E6",X"02",X"28",X"05",
+ X"3E",X"02",X"C3",X"A1",X"47",X"3A",X"0E",X"A8",X"FE",X"00",X"28",X"0A",X"78",X"E6",X"08",X"28",
+ X"05",X"3E",X"03",X"C3",X"A1",X"47",X"3A",X"0F",X"A8",X"FE",X"00",X"28",X"0A",X"78",X"E6",X"04",
+ X"28",X"05",X"3E",X"01",X"C3",X"A1",X"47",X"50",X"3A",X"09",X"A8",X"5F",X"01",X"15",X"56",X"6B",
+ X"26",X"00",X"09",X"7E",X"A2",X"C0",X"7B",X"3C",X"E6",X"03",X"6F",X"26",X"00",X"09",X"7E",X"A2",
+ X"28",X"07",X"7B",X"3C",X"E6",X"03",X"C3",X"A1",X"47",X"7B",X"3D",X"E6",X"03",X"6F",X"26",X"00",
+ X"09",X"7E",X"A2",X"28",X"07",X"7B",X"3D",X"E6",X"03",X"C3",X"A1",X"47",X"7B",X"3C",X"3C",X"E6",
+ X"03",X"47",X"3A",X"09",X"A8",X"B8",X"C8",X"E6",X"01",X"28",X"0A",X"78",X"E6",X"01",X"28",X"0A",
+ X"78",X"32",X"09",X"A8",X"C9",X"78",X"E6",X"01",X"28",X"F6",X"3A",X"10",X"A8",X"FE",X"04",X"C0",
+ X"3A",X"11",X"A8",X"FE",X"04",X"C0",X"78",X"32",X"09",X"A8",X"3A",X"51",X"B4",X"E6",X"FC",X"F6",
+ X"04",X"32",X"51",X"B4",X"3A",X"50",X"B0",X"E6",X"FC",X"F6",X"04",X"32",X"50",X"B0",X"C9",X"C5",
+ X"01",X"00",X"01",X"0D",X"20",X"FD",X"05",X"20",X"FA",X"C1",X"C9",X"E5",X"DD",X"E5",X"21",X"0A",
+ X"A8",X"06",X"06",X"36",X"00",X"23",X"10",X"FB",X"3E",X"00",X"32",X"01",X"A8",X"32",X"02",X"A8",
+ X"3A",X"00",X"C3",X"E6",X"08",X"20",X"05",X"3E",X"01",X"32",X"01",X"A8",X"3A",X"00",X"C3",X"E6",
+ X"10",X"20",X"05",X"3E",X"01",X"32",X"02",X"A8",X"3A",X"CB",X"A8",X"FE",X"00",X"CA",X"2B",X"48",
+ X"3A",X"9A",X"A8",X"FE",X"01",X"CA",X"2B",X"48",X"C3",X"60",X"48",X"DD",X"21",X"0A",X"A8",X"3A",
+ X"20",X"C3",X"CB",X"3F",X"38",X"03",X"DD",X"34",X"04",X"CB",X"3F",X"38",X"03",X"DD",X"34",X"05",
+ X"CB",X"3F",X"38",X"03",X"DD",X"34",X"02",X"CB",X"3F",X"38",X"03",X"DD",X"34",X"03",X"CB",X"3F",
+ X"38",X"03",X"DD",X"34",X"01",X"CB",X"3F",X"38",X"03",X"DD",X"34",X"01",X"DD",X"E1",X"E1",X"C9",
+ X"DD",X"21",X"0A",X"A8",X"3A",X"40",X"C3",X"CB",X"3F",X"38",X"03",X"DD",X"34",X"04",X"CB",X"3F",
+ X"38",X"03",X"DD",X"34",X"05",X"CB",X"3F",X"38",X"03",X"DD",X"34",X"02",X"CB",X"3F",X"38",X"03",
+ X"DD",X"34",X"03",X"CB",X"3F",X"38",X"03",X"DD",X"34",X"01",X"CB",X"3F",X"38",X"03",X"DD",X"34",
+ X"01",X"DD",X"E1",X"E1",X"C9",X"E5",X"D5",X"C5",X"CD",X"9F",X"48",X"C1",X"D1",X"E1",X"C9",X"E5",
+ X"21",X"0C",X"A8",X"7E",X"23",X"86",X"23",X"86",X"23",X"86",X"E1",X"FE",X"00",X"C2",X"FC",X"48",
+ X"7E",X"E6",X"07",X"FE",X"04",X"C0",X"1A",X"E6",X"07",X"FE",X"04",X"C0",X"46",X"1A",X"4F",X"CD",
+ X"68",X"40",X"CD",X"A6",X"40",X"47",X"3A",X"09",X"A8",X"3C",X"E6",X"03",X"6F",X"26",X"00",X"11",
+ X"15",X"56",X"19",X"7E",X"A0",X"28",X"06",X"3E",X"00",X"32",X"F1",X"A8",X"C9",X"3A",X"09",X"A8",
+ X"3D",X"E6",X"03",X"6F",X"26",X"00",X"19",X"7E",X"A0",X"20",X"EC",X"3A",X"09",X"A8",X"6F",X"26",
+ X"00",X"19",X"7E",X"A0",X"28",X"E1",X"3E",X"01",X"32",X"F1",X"A8",X"C9",X"E5",X"D5",X"7E",X"E6",
+ X"07",X"FE",X"04",X"20",X"0A",X"1A",X"E6",X"07",X"FE",X"04",X"20",X"03",X"CD",X"BC",X"48",X"D1",
+ X"E1",X"46",X"1A",X"4F",X"E5",X"D5",X"CD",X"68",X"40",X"CD",X"A6",X"40",X"D1",X"E1",X"47",X"3A",
+ X"0C",X"A8",X"FE",X"00",X"28",X"16",X"78",X"E6",X"01",X"28",X"11",X"3E",X"00",X"32",X"09",X"A8",
+ X"3E",X"01",X"32",X"F1",X"A8",X"1A",X"E6",X"FC",X"F6",X"04",X"12",X"C9",X"3A",X"0D",X"A8",X"FE",
+ X"00",X"28",X"16",X"78",X"E6",X"02",X"28",X"11",X"3E",X"02",X"32",X"09",X"A8",X"3E",X"01",X"32",
+ X"F1",X"A8",X"1A",X"E6",X"FC",X"F6",X"04",X"12",X"C9",X"3A",X"0E",X"A8",X"FE",X"00",X"28",X"16",
+ X"78",X"E6",X"08",X"28",X"11",X"3E",X"03",X"32",X"09",X"A8",X"3E",X"01",X"32",X"F1",X"A8",X"7E",
+ X"E6",X"FC",X"F6",X"04",X"77",X"C9",X"3A",X"0F",X"A8",X"FE",X"00",X"C8",X"78",X"E6",X"04",X"C8",
+ X"3E",X"01",X"32",X"09",X"A8",X"3E",X"01",X"32",X"F1",X"A8",X"7E",X"E6",X"FC",X"F6",X"04",X"77",
+ X"C9",X"21",X"20",X"A6",X"34",X"C9",X"C9",X"CD",X"79",X"4B",X"3A",X"A9",X"A8",X"FE",X"00",X"C0",
+ X"CD",X"EB",X"47",X"3A",X"0B",X"A8",X"FE",X"00",X"C0",X"CD",X"C2",X"49",X"3A",X"A9",X"A8",X"FE",
+ X"00",X"C0",X"3E",X"01",X"32",X"F4",X"A8",X"CD",X"D5",X"3A",X"3E",X"00",X"32",X"F4",X"A8",X"C3",
+ X"97",X"49",X"16",X"40",X"0D",X"20",X"FD",X"3A",X"A9",X"A8",X"FE",X"00",X"C0",X"05",X"20",X"F4",
+ X"15",X"20",X"F1",X"C9",X"F5",X"3A",X"F4",X"A8",X"FE",X"00",X"20",X"04",X"F1",X"C3",X"E3",X"49",
+ X"F1",X"3E",X"00",X"32",X"00",X"C0",X"3E",X"FF",X"32",X"04",X"C3",X"3E",X"00",X"32",X"04",X"C3",
+ X"C9",X"3E",X"4D",X"C3",X"D4",X"49",X"3E",X"4A",X"C3",X"D4",X"49",X"3E",X"09",X"C3",X"D4",X"49",
+ X"3E",X"55",X"C3",X"D4",X"49",X"3E",X"4F",X"C3",X"D4",X"49",X"3E",X"47",X"C3",X"D4",X"49",X"3E",
+ X"49",X"C3",X"D4",X"49",X"3E",X"47",X"C3",X"D4",X"49",X"3E",X"09",X"C3",X"D4",X"49",X"3E",X"10",
+ X"C3",X"D4",X"49",X"3E",X"15",X"C3",X"D4",X"49",X"3E",X"4C",X"C3",X"D4",X"49",X"3E",X"4F",X"C3",
+ X"D4",X"49",X"3E",X"4C",X"C3",X"D4",X"49",X"3E",X"02",X"C3",X"D4",X"49",X"21",X"60",X"A8",X"11",
+ X"61",X"A8",X"01",X"0B",X"00",X"36",X"20",X"ED",X"B0",X"3A",X"00",X"C2",X"06",X"00",X"E6",X"80",
+ X"20",X"01",X"04",X"78",X"32",X"80",X"A8",X"3A",X"00",X"C2",X"06",X"00",X"E6",X"40",X"20",X"01",
+ X"04",X"78",X"32",X"CD",X"A8",X"3A",X"60",X"C3",X"06",X"00",X"E6",X"80",X"20",X"01",X"04",X"78",
+ X"32",X"CB",X"A8",X"3A",X"60",X"C3",X"06",X"00",X"E6",X"40",X"28",X"01",X"04",X"78",X"32",X"CC",
+ X"A8",X"3A",X"60",X"C3",X"CB",X"3F",X"CB",X"3F",X"CB",X"3F",X"CB",X"3F",X"E6",X"03",X"EE",X"03",
+ X"C6",X"02",X"32",X"C2",X"A8",X"3A",X"60",X"C3",X"06",X"40",X"E6",X"08",X"28",X"02",X"06",X"60",
+ X"78",X"32",X"CA",X"A8",X"3A",X"60",X"C3",X"E6",X"07",X"EE",X"07",X"32",X"CE",X"A8",X"3A",X"00",
+ X"C2",X"E6",X"03",X"EE",X"03",X"6F",X"26",X"00",X"11",X"F3",X"4A",X"19",X"7E",X"32",X"B8",X"A8",
+ X"11",X"08",X"00",X"19",X"7E",X"32",X"B9",X"A8",X"3A",X"00",X"C2",X"CB",X"3F",X"CB",X"3F",X"E6",
+ X"03",X"EE",X"03",X"6F",X"26",X"00",X"11",X"F3",X"4A",X"19",X"7E",X"32",X"BA",X"A8",X"11",X"08",
+ X"00",X"19",X"7E",X"32",X"BB",X"A8",X"3A",X"B8",X"A8",X"32",X"FD",X"A8",X"3A",X"BA",X"A8",X"32",
+ X"FE",X"A8",X"C9",X"01",X"02",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"03",X"05",X"01",
+ X"01",X"01",X"01",X"C8",X"18",X"C8",X"1A",X"C8",X"1B",X"C8",X"1D",X"C8",X"1F",X"C8",X"21",X"C8",
+ X"23",X"C8",X"1F",X"C8",X"25",X"C8",X"1D",X"B8",X"19",X"B8",X"1A",X"B8",X"1C",X"B8",X"1E",X"B8",
+ X"20",X"B8",X"22",X"B8",X"24",X"B8",X"20",X"B8",X"26",X"B8",X"1E",X"82",X"C8",X"82",X"B8",X"82",
+ X"A8",X"82",X"98",X"82",X"88",X"82",X"68",X"82",X"58",X"82",X"48",X"82",X"38",X"82",X"28",X"82",
+ X"C8",X"C2",X"B8",X"82",X"A8",X"82",X"98",X"82",X"88",X"82",X"68",X"82",X"58",X"82",X"48",X"82",
+ X"38",X"82",X"28",X"09",X"A6",X"20",X"20",X"20",X"FF",X"CD",X"A6",X"30",X"02",X"12",X"09",X"07",
+ X"08",X"14",X"20",X"13",X"10",X"01",X"12",X"0B",X"13",X"FF",X"5A",X"A6",X"20",X"D0",X"20",X"CD",
+ X"CE",X"CF",X"CF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"CD",X"29",X"4C",X"CD",X"04",X"4C",X"21",
+ X"5E",X"A4",X"11",X"20",X"00",X"06",X"18",X"36",X"00",X"19",X"10",X"FB",X"CD",X"9A",X"4C",X"21",
+ X"03",X"4B",X"11",X"40",X"B0",X"01",X"28",X"00",X"ED",X"B0",X"21",X"2B",X"4B",X"11",X"40",X"B4",
+ X"01",X"28",X"00",X"ED",X"B0",X"21",X"53",X"4B",X"5E",X"23",X"56",X"23",X"46",X"23",X"CD",X"DB",
+ X"36",X"23",X"7E",X"FE",X"FF",X"20",X"F1",X"CD",X"BB",X"4B",X"C9",X"3E",X"FF",X"32",X"8F",X"B0",
+ X"32",X"9F",X"B0",X"32",X"AF",X"B0",X"32",X"BF",X"B0",X"32",X"CF",X"B0",X"21",X"80",X"B0",X"11",
+ X"CF",X"A6",X"06",X"34",X"CD",X"DB",X"36",X"21",X"90",X"B0",X"11",X"D1",X"A6",X"06",X"2C",X"CD",
+ X"DB",X"36",X"21",X"A0",X"B0",X"11",X"D3",X"A6",X"06",X"2C",X"CD",X"DB",X"36",X"21",X"B0",X"B0",
+ X"11",X"D5",X"A6",X"06",X"2C",X"CD",X"DB",X"36",X"21",X"C0",X"B0",X"11",X"D7",X"A6",X"06",X"2C",
+ X"CD",X"DB",X"36",X"C9",X"21",X"00",X"A9",X"11",X"01",X"A9",X"36",X"20",X"01",X"FF",X"06",X"ED",
+ X"B0",X"CD",X"29",X"4C",X"CD",X"F5",X"37",X"06",X"1C",X"C5",X"CD",X"1D",X"38",X"01",X"00",X"10",
+ X"0D",X"20",X"FD",X"10",X"FB",X"C1",X"10",X"F1",X"C9",X"21",X"40",X"B0",X"11",X"41",X"B0",X"01",
+ X"3F",X"00",X"36",X"FF",X"ED",X"B0",X"21",X"40",X"B4",X"11",X"41",X"B4",X"01",X"3F",X"00",X"36",
+ X"FF",X"ED",X"B0",X"C9",X"3A",X"A9",X"A8",X"47",X"3E",X"30",X"32",X"C5",X"A8",X"32",X"C6",X"A8",
+ X"78",X"FE",X"00",X"28",X"19",X"3A",X"C6",X"A8",X"3C",X"32",X"C6",X"A8",X"FE",X"3A",X"20",X"0C",
+ X"3E",X"30",X"32",X"C6",X"A8",X"3A",X"C5",X"A8",X"3C",X"32",X"C5",X"A8",X"10",X"E7",X"21",X"92",
+ X"4C",X"11",X"9F",X"A5",X"06",X"30",X"CD",X"DB",X"36",X"3A",X"C5",X"A8",X"F6",X"80",X"32",X"9F",
+ X"A4",X"3A",X"C6",X"A8",X"F6",X"80",X"32",X"7F",X"A4",X"3E",X"30",X"32",X"9F",X"A0",X"32",X"7F",
+ X"A0",X"C9",X"03",X"12",X"05",X"04",X"09",X"14",X"13",X"FF",X"DD",X"21",X"A2",X"A7",X"FD",X"21",
+ X"A2",X"A3",X"11",X"E0",X"FF",X"0E",X"1C",X"DD",X"E5",X"FD",X"E5",X"3E",X"20",X"06",X"1C",X"DD",
+ X"77",X"00",X"FD",X"77",X"00",X"DD",X"19",X"FD",X"19",X"10",X"F4",X"FD",X"E1",X"DD",X"E1",X"FD",
+ X"23",X"DD",X"23",X"0D",X"20",X"E1",X"C9",X"04",X"04",X"A0",X"00",X"05",X"06",X"80",X"00",X"06",
+ X"07",X"70",X"00",X"07",X"08",X"60",X"00",X"08",X"10",X"20",X"00",X"08",X"10",X"20",X"00",X"08",
+ X"10",X"20",X"00",X"08",X"20",X"20",X"00",X"3E",X"00",X"32",X"07",X"A8",X"3A",X"9E",X"A8",X"47",
+ X"3A",X"CE",X"A8",X"80",X"47",X"3A",X"CF",X"A8",X"80",X"32",X"18",X"A8",X"6F",X"CB",X"3D",X"CB",
+ X"3D",X"CB",X"25",X"CB",X"25",X"26",X"00",X"11",X"C7",X"4C",X"19",X"7E",X"32",X"87",X"A8",X"23",
+ X"7E",X"32",X"88",X"A8",X"23",X"7E",X"32",X"9F",X"A8",X"3E",X"01",X"32",X"06",X"A8",X"32",X"07",
+ X"A8",X"32",X"08",X"A8",X"32",X"1C",X"A8",X"32",X"92",X"A8",X"32",X"98",X"A8",X"32",X"B6",X"A8",
+ X"3E",X"00",X"32",X"8C",X"A8",X"32",X"8E",X"A8",X"32",X"1B",X"A8",X"32",X"81",X"A8",X"32",X"8B",
+ X"A8",X"32",X"8D",X"A8",X"32",X"8F",X"A8",X"32",X"96",X"A8",X"32",X"99",X"A8",X"32",X"B4",X"A8",
+ X"32",X"78",X"A8",X"32",X"A0",X"A8",X"32",X"20",X"A8",X"32",X"28",X"A8",X"32",X"30",X"A8",X"32",
+ X"38",X"A8",X"32",X"40",X"A8",X"32",X"48",X"A8",X"32",X"50",X"A8",X"32",X"58",X"A8",X"CD",X"93",
+ X"40",X"E6",X"0F",X"32",X"89",X"A8",X"3E",X"34",X"32",X"82",X"A8",X"32",X"83",X"A8",X"3E",X"30",
+ X"32",X"84",X"A8",X"3A",X"CA",X"A8",X"32",X"85",X"A8",X"CD",X"59",X"3D",X"CD",X"76",X"3C",X"3E",
+ X"F0",X"32",X"C7",X"A8",X"3E",X"00",X"32",X"C8",X"A8",X"32",X"C9",X"A8",X"C9",X"CD",X"0A",X"4A",
+ X"06",X"20",X"21",X"42",X"A0",X"0E",X"1C",X"16",X"1C",X"7E",X"EE",X"0D",X"77",X"23",X"15",X"20",
+ X"F8",X"23",X"23",X"23",X"23",X"0D",X"20",X"EF",X"C5",X"01",X"00",X"08",X"0D",X"20",X"FD",X"10",
+ X"FB",X"C1",X"10",X"DE",X"3E",X"40",X"32",X"85",X"A8",X"C9",X"2A",X"50",X"B0",X"E5",X"2A",X"50",
+ X"B4",X"E5",X"CD",X"29",X"4C",X"E1",X"22",X"50",X"B4",X"E1",X"22",X"50",X"B0",X"CD",X"98",X"4E",
+ X"CD",X"AF",X"4E",X"3E",X"00",X"32",X"F4",X"A8",X"21",X"8B",X"4E",X"11",X"4C",X"A6",X"06",X"35",
+ X"CD",X"DB",X"36",X"21",X"91",X"4E",X"11",X"6E",X"A6",X"06",X"2D",X"CD",X"DB",X"36",X"3E",X"05",
+ X"01",X"00",X"00",X"0D",X"20",X"FD",X"05",X"20",X"FA",X"3D",X"20",X"F7",X"3E",X"00",X"CD",X"D4",
+ X"49",X"3A",X"C7",X"A8",X"C6",X"0A",X"47",X"CD",X"5C",X"4E",X"10",X"FB",X"3E",X"02",X"01",X"00",
+ X"00",X"0D",X"20",X"FD",X"05",X"20",X"FA",X"3D",X"20",X"F7",X"3A",X"C7",X"A8",X"C6",X"0A",X"47",
+ X"3E",X"00",X"32",X"F4",X"A8",X"C5",X"3E",X"01",X"CD",X"E2",X"3B",X"CD",X"4A",X"3E",X"01",X"00",
+ X"02",X"0D",X"20",X"FD",X"05",X"20",X"FA",X"C1",X"10",X"EB",X"3E",X"04",X"01",X"00",X"00",X"0D",
+ X"20",X"FD",X"05",X"20",X"FA",X"3D",X"20",X"F7",X"CD",X"D6",X"4E",X"C9",X"CD",X"1E",X"4A",X"11",
+ X"00",X"10",X"1D",X"20",X"FD",X"15",X"20",X"FA",X"DD",X"21",X"EE",X"A5",X"DD",X"7E",X"00",X"FE",
+ X"A0",X"20",X"02",X"3E",X"B0",X"3C",X"FE",X"BA",X"28",X"04",X"DD",X"77",X"00",X"C9",X"3E",X"B0",
+ X"DD",X"77",X"00",X"11",X"20",X"00",X"DD",X"19",X"C3",X"6C",X"4E",X"02",X"0F",X"0E",X"15",X"13",
+ X"FF",X"20",X"20",X"20",X"20",X"20",X"30",X"FF",X"21",X"40",X"A4",X"11",X"00",X"A9",X"01",X"80",
+ X"03",X"ED",X"B0",X"21",X"40",X"A0",X"11",X"80",X"AC",X"01",X"80",X"03",X"ED",X"B0",X"C9",X"DD",
+ X"21",X"EB",X"A6",X"FD",X"21",X"EB",X"A2",X"06",X"10",X"0E",X"05",X"3E",X"20",X"DD",X"77",X"00",
+ X"3E",X"25",X"FD",X"77",X"00",X"DD",X"23",X"FD",X"23",X"0D",X"20",X"EF",X"11",X"DB",X"FF",X"DD",
+ X"19",X"FD",X"19",X"10",X"E4",X"C9",X"21",X"00",X"A9",X"11",X"40",X"A4",X"01",X"78",X"03",X"ED",
+ X"B0",X"CD",X"4A",X"3E",X"21",X"80",X"AC",X"11",X"40",X"A0",X"01",X"78",X"03",X"ED",X"B0",X"CD",
+ X"4A",X"3E",X"C9",X"CD",X"29",X"4C",X"CD",X"9A",X"4C",X"21",X"03",X"4B",X"11",X"40",X"B0",X"01",
+ X"28",X"00",X"ED",X"B0",X"21",X"2B",X"4B",X"11",X"40",X"B4",X"01",X"28",X"00",X"ED",X"B0",X"21",
+ X"9D",X"4F",X"5E",X"23",X"56",X"23",X"46",X"23",X"CD",X"DB",X"36",X"23",X"7E",X"FE",X"FF",X"20",
+ X"F1",X"CD",X"EB",X"47",X"3A",X"01",X"A8",X"FE",X"00",X"28",X"0D",X"3A",X"A9",X"A8",X"3D",X"32",
+ X"A9",X"A8",X"CD",X"44",X"4C",X"3E",X"01",X"C9",X"3A",X"A9",X"A8",X"FE",X"01",X"CA",X"21",X"4F",
+ X"C3",X"43",X"4F",X"CD",X"29",X"4C",X"CD",X"9A",X"4C",X"21",X"03",X"4B",X"11",X"40",X"B0",X"01",
+ X"28",X"00",X"ED",X"B0",X"21",X"2B",X"4B",X"11",X"40",X"B4",X"01",X"28",X"00",X"ED",X"B0",X"21",
+ X"CB",X"4F",X"5E",X"23",X"56",X"23",X"46",X"23",X"CD",X"DB",X"36",X"23",X"7E",X"FE",X"FF",X"20",
+ X"F1",X"CD",X"EB",X"47",X"3A",X"01",X"A8",X"FE",X"00",X"28",X"0D",X"3A",X"A9",X"A8",X"3D",X"32",
+ X"A9",X"A8",X"CD",X"44",X"4C",X"3E",X"01",X"C9",X"3A",X"02",X"A8",X"FE",X"00",X"28",X"E2",X"3A",
+ X"A9",X"A8",X"3D",X"3D",X"32",X"A9",X"A8",X"CD",X"44",X"4C",X"3E",X"02",X"C9",X"09",X"A6",X"20",
+ X"20",X"20",X"FF",X"4F",X"A7",X"30",X"10",X"12",X"05",X"13",X"13",X"20",X"0F",X"0E",X"05",X"20",
+ X"10",X"0C",X"01",X"19",X"05",X"12",X"20",X"0F",X"0E",X"0C",X"19",X"FF",X"5A",X"A6",X"20",X"D0",
+ X"20",X"CD",X"CE",X"CF",X"CF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"09",X"A6",X"20",X"20",X"20",
+ X"FF",X"6F",X"A7",X"30",X"10",X"12",X"05",X"13",X"13",X"20",X"0F",X"0E",X"05",X"20",X"0F",X"12",
+ X"20",X"14",X"17",X"0F",X"20",X"10",X"0C",X"01",X"19",X"05",X"12",X"13",X"FF",X"5A",X"A6",X"20",
+ X"D0",X"20",X"CD",X"CE",X"CF",X"CF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"CD",X"29",X"4C",X"CD",
+ X"04",X"4C",X"CD",X"BA",X"3C",X"3A",X"9A",X"A8",X"FE",X"02",X"20",X"11",X"3A",X"CB",X"A8",X"FE",
+ X"00",X"28",X"0A",X"3E",X"FF",X"32",X"02",X"C3",X"32",X"F3",X"A8",X"18",X"08",X"3E",X"00",X"32",
+ X"02",X"C3",X"32",X"F3",X"A8",X"3A",X"9B",X"A8",X"C6",X"B0",X"32",X"CE",X"A6",X"3E",X"30",X"32",
+ X"CE",X"A2",X"21",X"66",X"50",X"11",X"8E",X"A6",X"06",X"30",X"CD",X"DB",X"36",X"3A",X"C1",X"A8",
+ X"FE",X"02",X"20",X"13",X"21",X"72",X"50",X"11",X"6C",X"A6",X"06",X"30",X"CD",X"DB",X"36",X"3A",
+ X"9A",X"A8",X"C6",X"B0",X"32",X"AC",X"A5",X"3E",X"06",X"01",X"00",X"00",X"0D",X"20",X"FD",X"05",
+ X"20",X"FA",X"3D",X"20",X"F7",X"C9",X"13",X"10",X"01",X"12",X"0B",X"13",X"20",X"0C",X"05",X"06",
+ X"14",X"FF",X"10",X"0C",X"01",X"19",X"05",X"12",X"20",X"FF",X"06",X"00",X"11",X"87",X"B0",X"CD",
+ X"74",X"51",X"FE",X"00",X"28",X"2D",X"11",X"97",X"B0",X"04",X"CD",X"74",X"51",X"FE",X"00",X"28",
+ X"22",X"11",X"A7",X"B0",X"04",X"CD",X"74",X"51",X"FE",X"00",X"28",X"17",X"11",X"B7",X"B0",X"04",
+ X"CD",X"74",X"51",X"FE",X"00",X"28",X"0C",X"11",X"C7",X"B0",X"04",X"CD",X"74",X"51",X"FE",X"00",
+ X"28",X"01",X"C9",X"E5",X"C5",X"E5",X"48",X"06",X"00",X"CB",X"21",X"CB",X"21",X"CB",X"21",X"21",
+ X"39",X"51",X"09",X"E5",X"DD",X"E1",X"21",X"C0",X"B0",X"11",X"D0",X"B0",X"DD",X"46",X"06",X"DD",
+ X"4E",X"07",X"ED",X"B8",X"3E",X"32",X"32",X"90",X"B0",X"3C",X"32",X"A0",X"B0",X"3C",X"32",X"B0",
+ X"B0",X"3C",X"32",X"C0",X"B0",X"E1",X"DD",X"56",X"00",X"DD",X"5E",X"01",X"01",X"06",X"00",X"ED",
+ X"B0",X"DD",X"66",X"02",X"DD",X"6E",X"03",X"36",X"20",X"23",X"36",X"20",X"23",X"36",X"20",X"DD",
+ X"E5",X"CD",X"BB",X"4B",X"21",X"61",X"51",X"11",X"29",X"A7",X"06",X"30",X"CD",X"DB",X"36",X"DD",
+ X"E1",X"DD",X"66",X"04",X"DD",X"6E",X"05",X"DD",X"56",X"02",X"DD",X"5E",X"03",X"CD",X"A3",X"51",
+ X"C1",X"E1",X"78",X"FE",X"00",X"CC",X"8C",X"52",X"3E",X"2E",X"32",X"81",X"B0",X"3E",X"20",X"32",
+ X"82",X"B0",X"32",X"86",X"B0",X"32",X"8E",X"B0",X"C9",X"B0",X"87",X"B0",X"83",X"A6",X"6F",X"00",
+ X"50",X"B0",X"97",X"B0",X"93",X"A6",X"71",X"00",X"40",X"B0",X"A7",X"B0",X"A3",X"A6",X"73",X"00",
+ X"30",X"B0",X"B7",X"B0",X"B3",X"A6",X"75",X"00",X"20",X"B0",X"C7",X"B0",X"C3",X"A6",X"77",X"00",
+ X"10",X"05",X"0E",X"14",X"05",X"12",X"20",X"09",X"0E",X"20",X"19",X"0F",X"15",X"12",X"20",X"0E",
+ X"01",X"0D",X"05",X"FF",X"E5",X"D5",X"C5",X"06",X"06",X"1A",X"BE",X"28",X"10",X"FE",X"20",X"28",
+ X"1C",X"7E",X"FE",X"20",X"28",X"11",X"1A",X"BE",X"38",X"13",X"C3",X"97",X"51",X"23",X"13",X"10",
+ X"E8",X"C1",X"D1",X"E1",X"3E",X"FF",X"C9",X"C1",X"D1",X"E1",X"3E",X"FF",X"C9",X"C1",X"D1",X"E1",
+ X"3E",X"00",X"C9",X"7C",X"E6",X"FB",X"47",X"4D",X"3E",X"03",X"32",X"10",X"A8",X"0A",X"EE",X"01",
+ X"02",X"CD",X"81",X"52",X"0A",X"EE",X"01",X"02",X"C5",X"CD",X"EB",X"47",X"C1",X"3A",X"0B",X"A8",
+ X"FE",X"00",X"20",X"21",X"3A",X"0E",X"A8",X"FE",X"00",X"28",X"09",X"7E",X"3D",X"E6",X"1F",X"F6",
+ X"80",X"77",X"18",X"D9",X"3A",X"0F",X"A8",X"FE",X"00",X"28",X"D2",X"7E",X"3C",X"E6",X"1F",X"F6",
+ X"80",X"77",X"C3",X"AD",X"51",X"7E",X"E6",X"7F",X"12",X"13",X"D5",X"11",X"E0",X"FF",X"19",X"E5",
+ X"21",X"E0",X"FF",X"09",X"E5",X"C1",X"E1",X"D1",X"CD",X"81",X"52",X"CD",X"81",X"52",X"CD",X"81",
+ X"52",X"CD",X"81",X"52",X"CD",X"81",X"52",X"3A",X"10",X"A8",X"3D",X"32",X"10",X"A8",X"C2",X"AD",
+ X"51",X"C9",X"CD",X"29",X"4C",X"CD",X"04",X"4C",X"21",X"6E",X"52",X"11",X"8F",X"A6",X"06",X"30",
+ X"CD",X"DB",X"36",X"3A",X"C1",X"A8",X"FE",X"02",X"20",X"13",X"21",X"78",X"52",X"11",X"71",X"A6",
+ X"06",X"30",X"CD",X"DB",X"36",X"3A",X"9A",X"A8",X"C6",X"B0",X"32",X"B1",X"A5",X"3E",X"04",X"01",
+ X"00",X"00",X"0D",X"20",X"FD",X"05",X"20",X"FA",X"3D",X"20",X"F7",X"CD",X"04",X"4C",X"3A",X"CC",
+ X"A8",X"FE",X"01",X"20",X"03",X"C3",X"D0",X"52",X"CD",X"04",X"4C",X"21",X"60",X"A8",X"3A",X"9A",
+ X"A8",X"FE",X"01",X"28",X"03",X"21",X"66",X"A8",X"CD",X"7A",X"50",X"3E",X"FF",X"C9",X"07",X"01",
+ X"0D",X"05",X"20",X"0F",X"16",X"05",X"12",X"FF",X"10",X"0C",X"01",X"19",X"05",X"12",X"20",X"20",
+ X"FF",X"C5",X"01",X"00",X"40",X"0D",X"20",X"FD",X"10",X"FB",X"C1",X"C9",X"C5",X"11",X"6C",X"A8",
+ X"01",X"06",X"00",X"ED",X"B0",X"C1",X"C9",X"03",X"0F",X"0E",X"14",X"09",X"0E",X"15",X"05",X"FF",
+ X"10",X"0C",X"01",X"19",X"FF",X"19",X"05",X"13",X"FF",X"0E",X"0F",X"20",X"FF",X"10",X"12",X"05",
+ X"13",X"13",X"20",X"06",X"09",X"12",X"05",X"FF",X"21",X"A9",X"52",X"11",X"2B",X"A6",X"06",X"30",
+ X"CD",X"DB",X"36",X"C9",X"21",X"A5",X"52",X"11",X"2B",X"A6",X"06",X"30",X"CD",X"DB",X"36",X"C9",
+ X"21",X"97",X"52",X"11",X"86",X"A6",X"06",X"2C",X"CD",X"DB",X"36",X"21",X"A0",X"52",X"11",X"48",
+ X"A6",X"06",X"2C",X"CD",X"DB",X"36",X"21",X"AD",X"52",X"11",X"B3",X"A6",X"06",X"2C",X"CD",X"DB",
+ X"36",X"CD",X"C4",X"52",X"3E",X"00",X"32",X"10",X"A8",X"3E",X"20",X"32",X"10",X"A2",X"3E",X"B9",
+ X"32",X"10",X"A6",X"3E",X"0C",X"32",X"11",X"A8",X"06",X"68",X"0D",X"20",X"FD",X"10",X"FB",X"CD",
+ X"EB",X"47",X"3A",X"0F",X"A8",X"FE",X"00",X"C2",X"68",X"53",X"3A",X"0E",X"A8",X"FE",X"00",X"C2",
+ X"68",X"53",X"3A",X"A9",X"A8",X"FE",X"00",X"28",X"18",X"3A",X"0B",X"A8",X"FE",X"00",X"28",X"11",
+ X"3A",X"10",X"A8",X"FE",X"00",X"20",X"0A",X"21",X"A9",X"A8",X"35",X"CD",X"44",X"4C",X"3E",X"00",
+ X"C9",X"3A",X"10",X"A8",X"FE",X"00",X"28",X"0A",X"3A",X"0B",X"A8",X"FE",X"00",X"28",X"03",X"C3",
+ X"58",X"52",X"21",X"11",X"A8",X"35",X"C2",X"08",X"53",X"3A",X"10",X"A6",X"3D",X"FE",X"AF",X"CA",
+ X"58",X"52",X"32",X"10",X"A6",X"C3",X"03",X"53",X"3A",X"10",X"A8",X"FE",X"00",X"20",X"0B",X"3E",
+ X"01",X"32",X"10",X"A8",X"CD",X"B8",X"52",X"C3",X"22",X"53",X"3E",X"00",X"32",X"10",X"A8",X"CD",
+ X"C4",X"52",X"C3",X"22",X"53",X"DD",X"E5",X"C5",X"D5",X"3A",X"A0",X"A8",X"FE",X"00",X"28",X"51",
+ X"3E",X"00",X"DD",X"77",X"00",X"69",X"CB",X"25",X"26",X"B0",X"3E",X"FF",X"11",X"41",X"00",X"19",
+ X"77",X"CD",X"14",X"4A",X"2A",X"5E",X"B0",X"26",X"09",X"22",X"62",X"B0",X"2A",X"5E",X"B4",X"2E",
+ X"83",X"7C",X"C6",X"10",X"67",X"22",X"62",X"B4",X"3E",X"20",X"32",X"99",X"A8",X"3E",X"0A",X"CD",
+ X"E2",X"3B",X"2A",X"5E",X"B0",X"26",X"9C",X"22",X"60",X"B0",X"2A",X"5E",X"B4",X"2E",X"09",X"22",
+ X"60",X"B4",X"3E",X"04",X"32",X"96",X"A8",X"3E",X"FF",X"32",X"5F",X"B0",X"3E",X"00",X"32",X"A0",
+ X"A8",X"D1",X"C1",X"DD",X"E1",X"C9",X"DD",X"21",X"20",X"A8",X"0E",X"00",X"DD",X"7E",X"00",X"FE",
+ X"00",X"28",X"5F",X"C5",X"DD",X"E5",X"41",X"3E",X"0F",X"CD",X"F2",X"3C",X"DD",X"E1",X"C1",X"FE",
+ X"00",X"CC",X"85",X"53",X"C5",X"DD",X"E5",X"41",X"3E",X"08",X"CD",X"F2",X"3C",X"DD",X"E1",X"C1",
+ X"FE",X"00",X"20",X"3E",X"DD",X"7E",X"00",X"FE",X"02",X"20",X"06",X"CD",X"28",X"4A",X"C3",X"5E",
+ X"54",X"CD",X"2D",X"4A",X"3E",X"05",X"CD",X"E2",X"3B",X"DD",X"7E",X"03",X"2F",X"47",X"3A",X"85",
+ X"A8",X"80",X"38",X"07",X"3E",X"FF",X"32",X"8C",X"A8",X"3E",X"00",X"32",X"85",X"A8",X"CD",X"59",
+ X"3D",X"3E",X"00",X"DD",X"77",X"00",X"69",X"CB",X"25",X"26",X"B0",X"3E",X"FF",X"11",X"41",X"00",
+ X"19",X"77",X"11",X"08",X"00",X"DD",X"19",X"0C",X"79",X"FE",X"08",X"20",X"8F",X"C9",X"69",X"CB",
+ X"25",X"26",X"B0",X"3E",X"FF",X"11",X"41",X"00",X"19",X"77",X"3E",X"32",X"CD",X"E2",X"3B",X"3E",
+ X"00",X"DD",X"77",X"00",X"2A",X"50",X"B0",X"26",X"0A",X"22",X"62",X"B0",X"2A",X"50",X"B4",X"22",
+ X"62",X"B4",X"3E",X"20",X"32",X"99",X"A8",X"DD",X"7E",X"03",X"CB",X"3F",X"47",X"3A",X"85",X"A8",
+ X"80",X"30",X"02",X"3E",X"FF",X"32",X"85",X"A8",X"CD",X"59",X"3D",X"C3",X"52",X"54",X"3A",X"81",
+ X"A8",X"FE",X"00",X"C0",X"21",X"03",X"A8",X"35",X"C0",X"3E",X"80",X"77",X"21",X"07",X"A8",X"35",
+ X"20",X"13",X"3A",X"04",X"A8",X"77",X"2A",X"14",X"A8",X"22",X"19",X"A8",X"7C",X"FE",X"FF",X"28",
+ X"04",X"CD",X"27",X"56",X"C9",X"21",X"06",X"A8",X"35",X"C0",X"3A",X"05",X"A8",X"77",X"2A",X"16",
+ X"A8",X"22",X"19",X"A8",X"7C",X"FE",X"FF",X"C8",X"C3",X"27",X"56",X"21",X"40",X"B0",X"11",X"41",
+ X"B4",X"DD",X"21",X"20",X"A8",X"06",X"08",X"DD",X"7E",X"00",X"FE",X"00",X"C4",X"FD",X"54",X"23",
+ X"23",X"13",X"13",X"C5",X"01",X"08",X"00",X"DD",X"09",X"C1",X"10",X"EB",X"C9",X"FE",X"02",X"20",
+ X"19",X"3A",X"B4",X"A8",X"E6",X"E0",X"20",X"0D",X"3A",X"B4",X"A8",X"CB",X"3F",X"E6",X"01",X"20",
+ X"04",X"3E",X"02",X"18",X"02",X"3E",X"22",X"1B",X"12",X"13",X"DD",X"35",X"05",X"20",X"0C",X"3E",
+ X"08",X"DD",X"77",X"05",X"23",X"7E",X"3C",X"E6",X"03",X"77",X"2B",X"3E",X"FF",X"32",X"91",X"A8",
+ X"DD",X"35",X"04",X"C0",X"DD",X"7E",X"02",X"DD",X"77",X"04",X"DD",X"7E",X"01",X"FE",X"00",X"20",
+ X"04",X"34",X"C3",X"5A",X"55",X"FE",X"01",X"20",X"06",X"1A",X"3D",X"12",X"C3",X"5A",X"55",X"FE",
+ X"02",X"20",X"04",X"35",X"C3",X"5A",X"55",X"1A",X"3C",X"12",X"1A",X"E6",X"07",X"FE",X"04",X"C0",
+ X"7E",X"E6",X"07",X"FE",X"04",X"C0",X"E5",X"C5",X"D5",X"DD",X"E5",X"46",X"1A",X"4F",X"CD",X"68",
+ X"40",X"22",X"94",X"A8",X"3E",X"00",X"32",X"91",X"A8",X"7E",X"32",X"90",X"A8",X"CD",X"A6",X"40",
+ X"DD",X"E1",X"DD",X"46",X"01",X"DD",X"E5",X"CD",X"93",X"55",X"DD",X"E1",X"DD",X"77",X"01",X"D1",
+ X"C1",X"E1",X"C9",X"57",X"58",X"68",X"26",X"00",X"01",X"15",X"56",X"09",X"7E",X"A2",X"20",X"03",
+ X"C3",X"C4",X"55",X"CD",X"93",X"40",X"E6",X"01",X"28",X"02",X"7B",X"C9",X"7B",X"3D",X"E6",X"03",
+ X"6F",X"26",X"00",X"09",X"7E",X"A2",X"20",X"0C",X"7B",X"3C",X"E6",X"03",X"6F",X"26",X"00",X"09",
+ X"7E",X"A2",X"28",X"E6",X"CD",X"93",X"40",X"E6",X"01",X"28",X"11",X"7B",X"3D",X"E6",X"03",X"6F",
+ X"26",X"00",X"09",X"7E",X"A2",X"28",X"16",X"7B",X"3D",X"E6",X"03",X"C9",X"7B",X"3C",X"E6",X"03",
+ X"6F",X"26",X"00",X"09",X"7E",X"A2",X"28",X"16",X"7B",X"3C",X"E6",X"03",X"C9",X"7B",X"3C",X"E6",
+ X"03",X"6F",X"26",X"00",X"09",X"7E",X"A2",X"28",X"16",X"7B",X"3C",X"E6",X"03",X"C9",X"7B",X"3D",
+ X"E6",X"03",X"6F",X"26",X"00",X"09",X"7E",X"A2",X"28",X"05",X"7B",X"3D",X"E6",X"03",X"C9",X"7B",
+ X"3D",X"3D",X"E6",X"03",X"C9",X"01",X"04",X"02",X"08",X"21",X"20",X"A8",X"11",X"21",X"A8",X"36",
+ X"00",X"01",X"3F",X"00",X"ED",X"B0",X"C9",X"E5",X"D5",X"C5",X"DD",X"E5",X"21",X"20",X"A8",X"0E",
+ X"00",X"7E",X"FE",X"00",X"28",X"15",X"0C",X"11",X"08",X"00",X"19",X"3A",X"87",X"A8",X"47",X"79",
+ X"B8",X"20",X"EE",X"3E",X"FF",X"DD",X"E1",X"C1",X"D1",X"E1",X"C9",X"CD",X"F6",X"49",X"E5",X"DD",
+ X"E1",X"C5",X"3E",X"01",X"DD",X"77",X"00",X"3E",X"03",X"DD",X"77",X"01",X"3E",X"01",X"DD",X"77",
+ X"04",X"DD",X"77",X"05",X"3A",X"18",X"A8",X"4F",X"06",X"00",X"CB",X"21",X"CB",X"10",X"21",X"D1",
+ X"56",X"09",X"7E",X"DD",X"77",X"02",X"23",X"7E",X"DD",X"77",X"03",X"C1",X"CB",X"21",X"06",X"00",
+ X"21",X"40",X"B0",X"09",X"E5",X"01",X"00",X"04",X"09",X"D1",X"3A",X"19",X"A8",X"12",X"3E",X"35",
+ X"77",X"23",X"13",X"3A",X"1A",X"A8",X"77",X"3E",X"00",X"12",X"3A",X"19",X"A8",X"C6",X"04",X"32",
+ X"52",X"B0",X"32",X"54",X"B0",X"3A",X"1A",X"A8",X"D6",X"14",X"32",X"53",X"B4",X"C6",X"10",X"32",
+ X"55",X"B4",X"3E",X"09",X"32",X"52",X"B4",X"32",X"54",X"B4",X"3E",X"90",X"32",X"53",X"B0",X"3E",
+ X"91",X"32",X"55",X"B0",X"3E",X"03",X"32",X"1B",X"A8",X"DD",X"E1",X"C1",X"D1",X"E1",X"3E",X"00",
+ X"C9",X"18",X"20",X"18",X"20",X"14",X"28",X"14",X"30",X"10",X"30",X"10",X"30",X"0C",X"30",X"0C",
+ X"40",X"0A",X"40",X"0A",X"40",X"08",X"40",X"08",X"40",X"08",X"40",X"08",X"40",X"08",X"40",X"08",
+ X"40",X"04",X"40",X"04",X"40",X"04",X"40",X"04",X"40",X"04",X"40",X"04",X"40",X"04",X"40",X"04",
+ X"40",X"0A",X"40",X"0A",X"40",X"0A",X"40",X"0A",X"40",X"08",X"40",X"08",X"40",X"08",X"40",X"08",
+ X"40",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF");
+begin
+process(clk)
+begin
+ if rising_edge(clk) then
+ data <= rom_data(to_integer(unsigned(addr)));
+ end if;
+end process;
+end architecture;
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sound_board.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sound_board.vhd
new file mode 100644
index 00000000..a96b88dc
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sound_board.vhd
@@ -0,0 +1,426 @@
+---------------------------------------------------------------------------------
+-- Time pilot sound board by Dar (darfpga@aol.fr) (29/10/2017)
+-- http://darfpga.blogspot.fr
+---------------------------------------------------------------------------------
+-- gen_ram.vhd
+--------------------------------
+-- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com)
+-- http://www.syntiac.com/fpga64.html
+---------------------------------------------------------------------------------
+-- T80/T80se - Version : 0247
+-----------------------------
+-- Z80 compatible microprocessor core
+-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org)
+---------------------------------------------------------------------------------
+-- YM2149 (AY-3-8910)
+-- Copyright (c) MikeJ - Jan 2005
+---------------------------------------------------------------------------------
+-- Educational use only
+-- Do not redistribute synthetized file with roms
+-- Do not redistribute roms whatever the form
+-- Use at your own risk
+---------------------------------------------------------------------------------
+
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+use ieee.numeric_std.all;
+
+entity time_pilot_sound_board is
+port(
+ clock_14 : in std_logic;
+ reset : in std_logic;
+
+ sound_cmd : in std_logic_vector(7 downto 0);
+ sound_trig : in std_logic;
+
+ audio_out : out std_logic_vector(10 downto 0);
+
+ dbg_cpu_addr : out std_logic_vector(15 downto 0)
+ );
+end time_pilot_sound_board;
+
+architecture struct of time_pilot_sound_board is
+
+ signal reset_n: std_logic;
+ signal clock_14n : std_logic;
+
+ signal clock_div1 : std_logic_vector(11 downto 0) := (others => '0');
+ signal biquinary_div : std_logic_vector(3 downto 0) := (others => '0');
+
+ signal cpu_clock : std_logic;
+ signal ayx_clock : std_logic;
+
+ signal cpu_addr : std_logic_vector(15 downto 0);
+ signal cpu_di : std_logic_vector( 7 downto 0);
+ signal cpu_do : std_logic_vector( 7 downto 0);
+ signal cpu_wr_n : std_logic;
+ signal cpu_mreq_n : std_logic;
+ signal cpu_irq_n : std_logic;
+ signal cpu_iorq_n : std_logic;
+ signal cpu_m1_n : std_logic;
+
+ signal cpu_rom_do : std_logic_vector( 7 downto 0);
+ signal wram_do : std_logic_vector( 7 downto 0);
+ signal wram_we : std_logic;
+
+ signal clr_irq_n : std_logic;
+ signal sen1_n : std_logic;
+ signal sen2_n : std_logic;
+ signal sen3_n : std_logic;
+ signal sen4_n : std_logic;
+
+ signal sound_trig_r : std_logic;
+
+ signal ay1_do : std_logic_vector(7 downto 0);
+ signal ay1_cs_n : std_logic;
+ signal ay1_bdir : std_logic;
+ signal ay1_bc1 : std_logic;
+ signal ay1_audio_muxed : std_logic_vector(7 downto 0);
+ signal ay1_audio_chan : std_logic_vector(1 downto 0);
+ signal ay1_port_b_di : std_logic_vector(7 downto 0);
+
+ signal ay2_do : std_logic_vector(7 downto 0);
+ signal ay2_cs_n : std_logic;
+ signal ay2_bdir : std_logic;
+ signal ay2_bc1 : std_logic;
+ signal ay2_audio_muxed : std_logic_vector(7 downto 0);
+ signal ay2_audio_chan : std_logic_vector(1 downto 0);
+
+ signal ay1_chan_a : std_logic_vector(7 downto 0);
+ signal ay1_chan_b : std_logic_vector(7 downto 0);
+ signal ay1_chan_c : std_logic_vector(7 downto 0);
+ signal ay2_chan_a : std_logic_vector(7 downto 0);
+ signal ay2_chan_b : std_logic_vector(7 downto 0);
+ signal ay2_chan_c : std_logic_vector(7 downto 0);
+
+ signal filter_cmd_we : std_logic;
+ signal filter_cmd : std_logic_vector(11 downto 0);
+ signal mult_cmd : std_logic_vector(1 downto 0);
+ signal mult_value : integer range 0 to 779;
+
+ signal Vc_1a : integer range -256*1024 to 256*1024-1;
+ signal Vc_1b : integer range -256*1024 to 256*1024-1;
+ signal Vc_1c : integer range -256*1024 to 256*1024-1;
+ signal Vc_2a : integer range -256*1024 to 256*1024-1;
+ signal Vc_2b : integer range -256*1024 to 256*1024-1;
+ signal Vc_2c : integer range -256*1024 to 256*1024-1;
+ signal Vc : integer range -256*1024 to 256*1024-1;
+ signal Vin : integer range -256 to 255;
+ signal dV : integer range -512 to 511;
+ signal Vcn_a : integer range -1024*1024 to 1024*1024-1;
+ signal Vcn_b : integer range -1024*1024 to 1024*1024-1;
+ signal Vcn_c : integer range -256*1024 to 256*1024-1;
+
+begin
+
+clock_14n <= not clock_14;
+reset_n <= not reset;
+
+-- debug
+process (reset, clock_14)
+begin
+ if rising_edge(clock_14) and cpu_mreq_n ='0' then
+ dbg_cpu_addr <= cpu_addr;
+ end if;
+end process;
+
+--------------------------------------------------------
+-- RC filters equation
+--
+-- Vc : capacitor voltage = output voltage
+-- fs : sample frequency
+-- Vin : voltage at resistor input
+--
+-- Vc(k+1) = Vc(k) + (Vin-Vc(k))/(fs.R.C)
+--
+-- Vcn * 1024 <= Vcn * 1024 + (Vin-Vc) * 1024/(fs.R.C)
+-- With Vcn = 1024 * Vc
+--------------------------------------------------------
+-- Filters will be run at 14.318MHz/512 = 27.96KHz
+--------------------------------------------------------
+-- 6 filters have to be implemented
+-- RC equation is time multiplexed to save multiplier
+-- for small FPGA
+--------------------------------------------------------
+
+-- mux Vc
+with clock_div1(3 downto 0) select
+Vc <= Vc_1a when X"0", -- Vc_xy : [0..255*1024]
+ Vc_1b when X"1", -- => Vc : [-256*1024..255*1024]
+ Vc_1c when X"2",
+ Vc_2a when X"3",
+ Vc_2b when X"4",
+ Vc_2c when others;
+
+-- mux Vin
+with clock_div1(3 downto 0) select
+Vin <= to_integer(unsigned(ay1_chan_a)) when X"0", -- ayx_chan_y : [0..255]
+ to_integer(unsigned(ay1_chan_b)) when X"1", -- => Vin : [-256:255]
+ to_integer(unsigned(ay1_chan_c)) when X"2",
+ to_integer(unsigned(ay2_chan_a)) when X"3",
+ to_integer(unsigned(ay2_chan_b)) when X"4",
+ to_integer(unsigned(ay2_chan_c)) when others;
+
+-- compute dV
+dV <= Vin-Vc/1024; -- Vc/1024 : [0..255], dv : [-255..511] => [-512..511]
+
+-- mux filter cmd
+with clock_div1(3 downto 0) select
+mult_cmd <= filter_cmd( 7 downto 6) when X"0",
+ filter_cmd( 9 downto 8) when X"1",
+ filter_cmd(11 downto 10) when X"2",
+ filter_cmd( 1 downto 0) when X"3",
+ filter_cmd( 3 downto 2) when X"4",
+ filter_cmd( 5 downto 4) when others;
+
+-- mux multiplier value
+with mult_cmd select
+mult_value <= 779 when "10", -- 0.047uF/1KOhm => (1024/fs.R.C = 779, cut fcy 3386Hz)
+ 166 when "01", -- 0.220uF/1KOhm => (1024/fs.R.C = 166, cut fcy 723Hz)
+ 137 when "11", -- 0.267uF/1KOhm => (1024/fs.R.C = 137, cut fcy 596Hz)
+ 779 when others; -- Not use
+
+-- compute Vcn
+Vcn_a <= Vin*1024 when mult_cmd = "00" else Vc + dv*mult_value; -- => Vcn_a : [-1024*1024..1023*1024]
+
+-- limit to > 0
+Vcn_b <= 0 when Vcn_a < 0 else Vcn_a;
+
+-- limit to < 255*1024
+Vcn_c <= 255*1024 when Vcn_b > 255*1024 else Vcn_b;
+
+-- demux/store result and mix channels
+process (clock_14)
+begin
+ if rising_edge(clock_14) then -- 14.318MHz/512 => fs = 27.96KHz
+
+ -- demux & down sample
+ if clock_div1(8 downto 0) = '0'&X"00" then Vc_1a <= Vcn_c; end if;
+ if clock_div1(8 downto 0) = '0'&X"01" then Vc_1b <= Vcn_c; end if;
+ if clock_div1(8 downto 0) = '0'&X"02" then Vc_1c <= Vcn_c; end if;
+ if clock_div1(8 downto 0) = '0'&X"03" then Vc_2a <= Vcn_c; end if;
+ if clock_div1(8 downto 0) = '0'&X"04" then Vc_2b <= Vcn_c; end if;
+ if clock_div1(8 downto 0) = '0'&X"05" then Vc_2c <= Vcn_c; end if;
+
+ -- rescale and mix channels with down sample
+ if clock_div1(8 downto 0) = '0'&X"06" then
+ audio_out <= std_logic_vector(to_unsigned(Vc_1a/1024,11)) +
+ std_logic_vector(to_unsigned(Vc_1b/1024,11)) +
+ std_logic_vector(to_unsigned(Vc_1c/1024,11)) +
+ std_logic_vector(to_unsigned(Vc_2a/1024,11)) +
+ std_logic_vector(to_unsigned(Vc_2b/1024,11)) +
+ std_logic_vector(to_unsigned(Vc_2c/1024,11));
+ end if;
+ end if;
+end process;
+
+
+-- divide clocks
+-- random generator ?
+process (clock_14)
+begin
+ if reset='1' then
+ clock_div1 <= (others =>'0');
+ biquinary_div <= (others =>'0');
+ else
+ if rising_edge(clock_14) then
+ clock_div1 <= clock_div1 + '1';
+
+ if clock_div1 = X"800" then
+ if biquinary_div(3 downto 1) = "100" then
+ biquinary_div(3 downto 1) <= "000";
+ biquinary_div(0) <= not biquinary_div(0);
+ else
+ biquinary_div(3 downto 1) <= biquinary_div(3 downto 1) + '1';
+ end if;
+ end if;
+
+ end if;
+ end if;
+end process;
+
+-- make clocks for cpu and sound generators
+cpu_clock <= clock_div1(2);
+ayx_clock <= not clock_div1(2);
+
+-- mux rom/ram/devices data ouput to cpu data input w.r.t cpu address
+cpu_di <= cpu_rom_do when cpu_addr(15 downto 12) = "0000" else -- 0000-0FFF
+ wram_do when cpu_addr(15 downto 12) = "0011" else -- 3000-3FFF
+ ay1_do when cpu_addr(15 downto 13) = "010" else -- 4000-5FFF
+ ay2_do when cpu_addr(15 downto 13) = "011" else -- 6000-7FFF
+ X"FF";
+
+-- write enable to working ram and filter command register
+wram_we <= '1' when cpu_wr_n = '0' and cpu_addr(15 downto 12) = "0011" else '0';
+filter_cmd_we <= '1' when cpu_wr_n = '0' and cpu_addr(15) = '1' else '0';
+
+-- chip select with r/w direction to AY chips
+sen1_n <= '0' when cpu_mreq_n = '0' and cpu_addr(15 downto 12) = X"4" else '1';
+sen2_n <= '0' when cpu_mreq_n = '0' and cpu_addr(15 downto 12) = X"5" else '1';
+sen3_n <= '0' when cpu_mreq_n = '0' and cpu_addr(15 downto 12) = X"6" else '1';
+sen4_n <= '0' when cpu_mreq_n = '0' and cpu_addr(15 downto 12) = X"7" else '1';
+
+-- finalise AY r/w & address controls
+ay1_bc1 <= not sen2_n or ( cpu_wr_n and not sen1_n);
+ay1_bdir <= not sen2_n or (not cpu_wr_n and not sen1_n);
+ay1_cs_n <= sen1_n and sen2_n;
+
+ay2_bc1 <= not sen4_n or ( cpu_wr_n and not sen3_n);
+ay2_bdir <= not sen4_n or (not cpu_wr_n and not sen3_n);
+ay2_cs_n <= sen3_n and sen4_n;
+
+-- input random (?) to AY1 chip
+ay1_port_b_di <= biquinary_div(0)&biquinary_div(3)&biquinary_div(2)&clock_div1(11)&"0000";
+
+-- clear irq when reset and irq acknowledge
+clr_irq_n <= reset_n and (cpu_m1_n or cpu_iorq_n);
+
+-- regsiter filters commands (11 bits data are cpu address)
+process (cpu_clock)
+begin
+ if rising_edge(cpu_clock) then
+ if filter_cmd_we = '1' then filter_cmd <= cpu_addr(11 downto 0); end if;
+ end if;
+end process;
+
+-- latch sound trigger rising edge to set cpu_irq, and manage clear
+process (clock_14)
+begin
+ if rising_edge(clock_14) then
+
+ sound_trig_r <= sound_trig;
+
+ if clr_irq_n = '0' then
+ cpu_irq_n <= '1';
+ else
+ if sound_trig ='1' and sound_trig_r = '0' then
+ cpu_irq_n <= '0';
+ end if;
+ end if;
+
+ end if;
+end process;
+
+-- demux AY chips output
+process (ayx_clock)
+begin
+ if rising_edge(ayx_clock) then
+ if ay1_audio_chan = "00" then ay1_chan_a <= ay1_audio_muxed; end if;
+ if ay1_audio_chan = "01" then ay1_chan_b <= ay1_audio_muxed; end if;
+ if ay1_audio_chan = "10" then ay1_chan_c <= ay1_audio_muxed; end if;
+ if ay2_audio_chan = "00" then ay2_chan_a <= ay2_audio_muxed; end if;
+ if ay2_audio_chan = "01" then ay2_chan_b <= ay2_audio_muxed; end if;
+ if ay2_audio_chan = "10" then ay2_chan_c <= ay2_audio_muxed; end if;
+ end if;
+end process;
+
+-- microprocessor Z80
+cpu : entity work.T80se
+generic map(Mode => 0, T2Write => 1, IOWait => 1)
+port map(
+ RESET_n => reset_n,
+ CLK_n => cpu_clock,
+ CLKEN => '1',
+ WAIT_n => '1',
+ INT_n => cpu_irq_n,
+ NMI_n => '1',
+ BUSRQ_n => '1',
+ M1_n => cpu_m1_n,
+ MREQ_n => cpu_mreq_n,
+ IORQ_n => cpu_iorq_n,
+ RD_n => open,
+ WR_n => cpu_wr_n,
+ RFSH_n => open,
+ HALT_n => open,
+ BUSAK_n => open,
+ A => cpu_addr,
+ DI => cpu_di,
+ DO => cpu_do
+);
+
+-- cpu1 program ROM
+rom_cpu1 : entity work.time_pilot_sound_prog2
+port map(
+ clk => clock_14n,
+ addr => cpu_addr(11 downto 0),
+ data => cpu_rom_do
+);
+
+-- working RAM
+wram : entity work.gen_ram
+generic map( dWidth => 8, aWidth => 10)
+port map(
+ clk => clock_14n,
+ we => wram_we,
+ addr => cpu_addr(9 downto 0),
+ d => cpu_do,
+ q => wram_do
+);
+
+-- AY-3-8910 #1
+ay_3_8910_1 : entity work.YM2149
+port map(
+ -- data bus
+ I_DA => cpu_do, -- in std_logic_vector(7 downto 0);
+ O_DA => ay1_do, -- out std_logic_vector(7 downto 0);
+ O_DA_OE_L => open, -- out std_logic;
+ -- control
+ I_A9_L => ay1_cs_n, -- in std_logic;
+ I_A8 => '1', -- in std_logic;
+ I_BDIR => ay1_bdir, -- in std_logic;
+ I_BC2 => '1', -- in std_logic;
+ I_BC1 => ay1_bc1, -- in std_logic;
+ I_SEL_L => '1', -- in std_logic;
+
+ O_AUDIO => ay1_audio_muxed, -- out std_logic_vector(7 downto 0);
+ O_CHAN => ay1_audio_chan, -- out std_logic_vector(1 downto 0);
+
+ -- port a
+ I_IOA => sound_cmd, -- in std_logic_vector(7 downto 0);
+ O_IOA => open, -- out std_logic_vector(7 downto 0);
+ O_IOA_OE_L => open, -- out std_logic;
+ -- port b
+ I_IOB => ay1_port_b_di, -- in std_logic_vector(7 downto 0);
+ O_IOB => open, -- out std_logic_vector(7 downto 0);
+ O_IOB_OE_L => open, -- out std_logic;
+
+ ENA => '1', --cpu_ena, -- in std_logic; -- clock enable for higher speed operation
+ RESET_L => reset_n, -- in std_logic;
+ CLK => ayx_clock -- in std_logic -- note 6 Mhz
+);
+
+-- AY-3-8910 #2
+ay_3_8910_2 : entity work.YM2149
+port map(
+ -- data bus
+ I_DA => cpu_do, -- in std_logic_vector(7 downto 0);
+ O_DA => ay2_do, -- out std_logic_vector(7 downto 0);
+ O_DA_OE_L => open, -- out std_logic;
+ -- control
+ I_A9_L => ay2_cs_n, -- in std_logic;
+ I_A8 => '1', -- in std_logic;
+ I_BDIR => ay2_bdir, -- in std_logic;
+ I_BC2 => '1', -- in std_logic;
+ I_BC1 => ay2_bc1, -- in std_logic;
+ I_SEL_L => '1', -- in std_logic;
+
+ O_AUDIO => ay2_audio_muxed, -- out std_logic_vector(7 downto 0);
+ O_CHAN => ay2_audio_chan, -- out std_logic_vector(1 downto 0);
+
+ -- port a
+ I_IOA => (others => '0'), -- in std_logic_vector(7 downto 0);
+ O_IOA => open, -- out std_logic_vector(7 downto 0);
+ O_IOA_OE_L => open, -- out std_logic;
+ -- port b
+ I_IOB => (others => '0'), -- in std_logic_vector(7 downto 0);
+ O_IOB => open, -- out std_logic_vector(7 downto 0);
+ O_IOB_OE_L => open, -- out std_logic;
+
+ ENA => '1', --cpu_ena, -- in std_logic; -- clock enable for higher speed operation
+ RESET_L => reset_n, -- in std_logic;
+ CLK => ayx_clock -- in std_logic -- note 6 Mhz
+);
+
+
+end struct;
\ No newline at end of file
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sound_prog.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sound_prog.vhd
new file mode 100644
index 00000000..fb4a2a9a
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sound_prog.vhd
@@ -0,0 +1,327 @@
+library ieee;
+use ieee.std_logic_1164.all,ieee.numeric_std.all;
+
+entity time_pilot_sound_prog2 is
+port (
+ clk : in std_logic;
+ addr : in std_logic_vector(12 downto 0);
+ data : out std_logic_vector(7 downto 0)
+);
+end entity;
+
+architecture prom of time_pilot_sound_prog2 is
+ type rom is array(0 to 4095) of std_logic_vector(7 downto 0);
+ signal rom_data: rom := (
+ X"21",X"00",X"30",X"06",X"00",X"C3",X"7C",X"01",X"32",X"00",X"50",X"3A",X"00",X"40",X"C9",X"FF",
+ X"32",X"00",X"70",X"3A",X"00",X"60",X"C9",X"FF",X"78",X"CF",X"79",X"32",X"00",X"40",X"C9",X"FF",
+ X"78",X"D7",X"79",X"32",X"00",X"60",X"C9",X"FF",X"87",X"85",X"6F",X"7C",X"CE",X"00",X"67",X"7E",
+ X"23",X"66",X"6F",X"E9",X"FF",X"FF",X"FF",X"FF",X"D9",X"08",X"CD",X"40",X"00",X"08",X"D9",X"C9",
+ X"3E",X"0E",X"CF",X"B7",X"28",X"26",X"32",X"0B",X"30",X"CD",X"2D",X"01",X"3A",X"0B",X"30",X"CB",
+ X"77",X"20",X"3F",X"3A",X"06",X"30",X"B7",X"3A",X"0B",X"30",X"C2",X"E6",X"00",X"21",X"06",X"30",
+ X"36",X"00",X"B7",X"F2",X"FE",X"00",X"CB",X"BF",X"CD",X"89",X"00",X"C9",X"21",X"00",X"30",X"06",
+ X"04",X"AF",X"77",X"23",X"10",X"FC",X"C9",X"21",X"00",X"30",X"06",X"02",X"0E",X"03",X"BE",X"28",
+ X"05",X"23",X"23",X"10",X"F9",X"41",X"79",X"90",X"C9",X"CD",X"77",X"00",X"C8",X"AF",X"77",X"23",
+ X"77",X"C9",X"3A",X"06",X"30",X"B7",X"20",X"27",X"3A",X"09",X"30",X"2A",X"07",X"30",X"BD",X"D8",
+ X"BC",X"D8",X"3E",X"FF",X"32",X"06",X"30",X"06",X"00",X"21",X"00",X"30",X"3A",X"0B",X"30",X"77",
+ X"23",X"70",X"23",X"70",X"23",X"70",X"3E",X"01",X"32",X"04",X"30",X"CD",X"BE",X"02",X"C9",X"3A",
+ X"0B",X"30",X"CB",X"B7",X"CD",X"77",X"00",X"28",X"04",X"23",X"36",X"00",X"C9",X"3A",X"09",X"30",
+ X"47",X"3A",X"07",X"30",X"B8",X"D0",X"21",X"00",X"30",X"3A",X"0B",X"30",X"77",X"23",X"36",X"00",
+ X"3E",X"FF",X"32",X"06",X"30",X"C9",X"3A",X"09",X"30",X"47",X"3A",X"07",X"30",X"B8",X"D0",X"AF",
+ X"32",X"06",X"30",X"3A",X"0B",X"30",X"21",X"00",X"30",X"77",X"23",X"36",X"00",X"C9",X"32",X"0B",
+ X"30",X"CD",X"77",X"00",X"28",X"04",X"23",X"36",X"00",X"C9",X"AF",X"CD",X"77",X"00",X"28",X"08",
+ X"3A",X"0B",X"30",X"77",X"23",X"36",X"00",X"C9",X"CD",X"2D",X"01",X"21",X"00",X"30",X"B7",X"C8",
+ X"3D",X"87",X"4F",X"06",X"00",X"09",X"3A",X"0B",X"30",X"77",X"23",X"70",X"C9",X"3A",X"00",X"30",
+ X"CD",X"4F",X"01",X"32",X"07",X"30",X"3A",X"02",X"30",X"CD",X"4F",X"01",X"32",X"08",X"30",X"3A",
+ X"0B",X"30",X"CD",X"4F",X"01",X"32",X"09",X"30",X"CD",X"61",X"01",X"32",X"0A",X"30",X"C9",X"21",
+ X"AD",X"05",X"CB",X"77",X"28",X"05",X"CB",X"B7",X"21",X"AD",X"05",X"06",X"00",X"4F",X"09",X"7E",
+ X"C9",X"2A",X"07",X"30",X"7C",X"BD",X"38",X"09",X"3A",X"09",X"30",X"BD",X"38",X"0C",X"3E",X"01",
+ X"C9",X"3A",X"09",X"30",X"BC",X"38",X"03",X"3E",X"02",X"C9",X"AF",X"C9",X"70",X"23",X"7C",X"FE",
+ X"34",X"20",X"F9",X"F9",X"ED",X"56",X"21",X"00",X"80",X"22",X"0C",X"30",X"77",X"01",X"3F",X"07",
+ X"DF",X"E7",X"32",X"0E",X"30",X"32",X"0F",X"30",X"CD",X"A2",X"02",X"CD",X"A6",X"02",X"CD",X"AA",
+ X"02",X"CD",X"B0",X"02",X"CD",X"B4",X"02",X"CD",X"B8",X"02",X"3A",X"06",X"30",X"B7",X"28",X"06",
+ X"FB",X"00",X"00",X"F3",X"18",X"0F",X"FB",X"3E",X"0F",X"CF",X"E6",X"40",X"20",X"F9",X"3E",X"0F",
+ X"CF",X"E6",X"40",X"28",X"F9",X"F3",X"3A",X"06",X"30",X"B7",X"20",X"2E",X"3E",X"00",X"32",X"04",
+ X"30",X"3A",X"01",X"30",X"B7",X"3A",X"00",X"30",X"28",X"05",X"CD",X"85",X"02",X"18",X"03",X"CD",
+ X"68",X"02",X"3E",X"01",X"32",X"04",X"30",X"3A",X"03",X"30",X"B7",X"3A",X"02",X"30",X"28",X"05",
+ X"CD",X"85",X"02",X"18",X"B5",X"CD",X"68",X"02",X"18",X"B0",X"3E",X"00",X"32",X"04",X"30",X"3A",
+ X"01",X"30",X"B7",X"3A",X"00",X"30",X"28",X"05",X"CD",X"3C",X"02",X"18",X"9D",X"CD",X"12",X"02",
+ X"18",X"98",X"CB",X"B7",X"32",X"00",X"30",X"CD",X"BE",X"02",X"3A",X"00",X"30",X"21",X"F9",X"04",
+ X"EF",X"B7",X"20",X"6B",X"21",X"01",X"30",X"36",X"01",X"11",X"53",X"05",X"3A",X"00",X"30",X"6F",
+ X"26",X"00",X"29",X"19",X"5E",X"23",X"56",X"ED",X"53",X"10",X"30",X"C9",X"B7",X"C8",X"2A",X"10",
+ X"30",X"CD",X"33",X"00",X"B7",X"C8",X"21",X"00",X"30",X"3D",X"28",X"06",X"36",X"00",X"AF",X"32",
+ X"06",X"30",X"23",X"36",X"00",X"C9",X"B7",X"C8",X"E6",X"03",X"C5",X"47",X"3A",X"04",X"30",X"4F",
+ X"87",X"81",X"80",X"32",X"05",X"30",X"C1",X"C9",X"F5",X"CD",X"BE",X"02",X"F1",X"E6",X"3F",X"21",
+ X"F9",X"04",X"EF",X"B7",X"C2",X"8F",X"02",X"21",X"01",X"30",X"3A",X"04",X"30",X"87",X"5F",X"16",
+ X"00",X"19",X"36",X"01",X"C9",X"B7",X"C8",X"E6",X"3F",X"21",X"53",X"05",X"EF",X"B7",X"C8",X"57",
+ X"21",X"00",X"30",X"3A",X"04",X"30",X"4F",X"06",X"00",X"09",X"09",X"15",X"28",X"01",X"70",X"23",
+ X"70",X"C9",X"06",X"08",X"18",X"06",X"06",X"09",X"18",X"02",X"06",X"0A",X"0E",X"00",X"DF",X"C9",
+ X"06",X"08",X"18",X"06",X"06",X"09",X"18",X"02",X"06",X"0A",X"0E",X"00",X"E7",X"C9",X"01",X"00",
+ X"08",X"3A",X"04",X"30",X"B7",X"20",X"0C",X"DF",X"04",X"DF",X"04",X"DF",X"0E",X"3F",X"CD",X"2D",
+ X"03",X"AF",X"C9",X"E7",X"04",X"E7",X"04",X"E7",X"0E",X"3F",X"CD",X"39",X"03",X"AF",X"C9",X"CD",
+ X"56",X"02",X"3A",X"05",X"30",X"3D",X"21",X"EB",X"02",X"EF",X"C9",X"F7",X"02",X"00",X"03",X"09",
+ X"03",X"12",X"03",X"1B",X"03",X"24",X"03",X"CD",X"A2",X"02",X"0E",X"09",X"CD",X"2D",X"03",X"C9",
+ X"CD",X"A6",X"02",X"0E",X"12",X"CD",X"2D",X"03",X"C9",X"CD",X"AA",X"02",X"0E",X"24",X"CD",X"2D",
+ X"03",X"C9",X"CD",X"B0",X"02",X"0E",X"09",X"CD",X"39",X"03",X"C9",X"CD",X"B4",X"02",X"0E",X"12",
+ X"CD",X"39",X"03",X"C9",X"CD",X"B8",X"02",X"0E",X"24",X"CD",X"39",X"03",X"C9",X"3A",X"0E",X"30",
+ X"B1",X"32",X"0E",X"30",X"06",X"07",X"4F",X"DF",X"C9",X"3A",X"0F",X"30",X"B1",X"32",X"0F",X"30",
+ X"06",X"07",X"4F",X"E7",X"C9",X"06",X"06",X"3A",X"04",X"30",X"B7",X"20",X"02",X"DF",X"C9",X"E7",
+ X"C9",X"06",X"06",X"3A",X"04",X"30",X"B7",X"20",X"04",X"78",X"CF",X"4F",X"C9",X"78",X"D7",X"4F",
+ X"C9",X"3A",X"0E",X"30",X"A0",X"B1",X"32",X"0E",X"30",X"4F",X"06",X"07",X"DF",X"C9",X"3A",X"0F",
+ X"30",X"A0",X"B1",X"32",X"0F",X"30",X"4F",X"06",X"07",X"E7",X"C9",X"21",X"91",X"03",X"3D",X"87",
+ X"5F",X"16",X"00",X"19",X"5E",X"23",X"56",X"4B",X"42",X"3A",X"04",X"30",X"B7",X"28",X"D2",X"18",
+ X"DD",X"08",X"FE",X"10",X"FD",X"20",X"FB",X"21",X"AD",X"03",X"3D",X"87",X"5F",X"16",X"00",X"19",
+ X"5E",X"23",X"56",X"4B",X"42",X"3A",X"04",X"30",X"B7",X"28",X"B6",X"18",X"C1",X"01",X"F7",X"02",
+ X"EF",X"04",X"DF",X"21",X"C9",X"03",X"3D",X"87",X"5F",X"16",X"00",X"19",X"5E",X"23",X"56",X"4B",
+ X"42",X"3A",X"04",X"30",X"B7",X"28",X"9A",X"18",X"A5",X"00",X"F6",X"00",X"ED",X"00",X"DB",X"21",
+ X"E7",X"03",X"3D",X"87",X"5F",X"16",X"00",X"19",X"5E",X"23",X"56",X"4B",X"42",X"3A",X"04",X"30",
+ X"B7",X"CA",X"61",X"03",X"C3",X"6E",X"03",X"09",X"FF",X"12",X"FF",X"24",X"FF",X"C6",X"07",X"47",
+ X"3A",X"04",X"30",X"B7",X"20",X"02",X"DF",X"C9",X"E7",X"C9",X"C6",X"07",X"47",X"3A",X"04",X"30",
+ X"B7",X"78",X"20",X"02",X"CF",X"C9",X"D7",X"C9",X"3D",X"87",X"47",X"4D",X"3A",X"04",X"30",X"B7",
+ X"20",X"05",X"DF",X"4C",X"04",X"DF",X"C9",X"E7",X"4C",X"04",X"E7",X"C9",X"3D",X"87",X"67",X"3A",
+ X"04",X"30",X"B7",X"7C",X"20",X"07",X"CF",X"6F",X"7C",X"3C",X"CF",X"67",X"C9",X"D7",X"6F",X"7C",
+ X"3C",X"D7",X"67",X"C9",X"CD",X"56",X"02",X"7D",X"FE",X"04",X"D0",X"F5",X"21",X"83",X"04",X"3A",
+ X"05",X"30",X"3D",X"87",X"5F",X"16",X"00",X"19",X"5E",X"23",X"56",X"2A",X"0C",X"30",X"7B",X"A5",
+ X"6F",X"7A",X"A4",X"67",X"22",X"0C",X"30",X"F1",X"B7",X"20",X"02",X"77",X"C9",X"21",X"83",X"04",
+ X"87",X"87",X"4F",X"87",X"81",X"4F",X"06",X"00",X"09",X"3A",X"05",X"30",X"3D",X"87",X"5F",X"16",
+ X"00",X"19",X"5E",X"23",X"56",X"2A",X"0C",X"30",X"7B",X"B5",X"6F",X"7A",X"B4",X"67",X"22",X"0C",
+ X"30",X"77",X"C9",X"3F",X"FF",X"FF",X"FC",X"FF",X"F3",X"FC",X"FF",X"F3",X"FF",X"CF",X"FF",X"80",
+ X"00",X"00",X"02",X"00",X"08",X"02",X"00",X"08",X"00",X"20",X"00",X"40",X"00",X"00",X"01",X"00",
+ X"04",X"01",X"00",X"04",X"00",X"10",X"00",X"C0",X"00",X"00",X"03",X"00",X"0C",X"03",X"00",X"0C",
+ X"00",X"30",X"00",X"0E",X"10",X"C6",X"07",X"47",X"3A",X"04",X"30",X"B7",X"20",X"02",X"DF",X"C9",
+ X"E7",X"C9",X"06",X"0B",X"4D",X"3A",X"04",X"30",X"B7",X"20",X"05",X"DF",X"04",X"4C",X"DF",X"C9",
+ X"E7",X"04",X"4C",X"E7",X"C9",X"3A",X"04",X"30",X"B7",X"3E",X"0B",X"47",X"20",X"07",X"CF",X"6F",
+ X"78",X"3C",X"CF",X"67",X"C9",X"D7",X"6F",X"78",X"3C",X"D7",X"67",X"C9",X"4F",X"06",X"0D",X"3A",
+ X"04",X"30",X"B7",X"20",X"02",X"DF",X"C9",X"E7",X"C9",X"BE",X"02",X"B0",X"0F",X"7D",X"0F",X"8E",
+ X"0F",X"5A",X"10",X"F4",X"0F",X"DA",X"05",X"08",X"17",X"DA",X"05",X"82",X"1B",X"99",X"16",X"D2",
+ X"0F",X"2F",X"16",X"76",X"17",X"DA",X"05",X"27",X"1B",X"B6",X"1D",X"DA",X"05",X"9D",X"1C",X"DA",
+ X"05",X"DA",X"05",X"2A",X"1C",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"05",
+ X"10",X"16",X"10",X"9F",X"0F",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"27",X"10",X"38",X"10",X"49",
+ X"10",X"DA",X"05",X"C1",X"0F",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"DA",
+ X"05",X"48",X"1D",X"00",X"00",X"BD",X"0F",X"8A",X"0F",X"9B",X"0F",X"67",X"10",X"01",X"10",X"DD",
+ X"05",X"3B",X"17",X"DD",X"05",X"BE",X"1B",X"CB",X"16",X"DF",X"0F",X"62",X"16",X"8E",X"17",X"DD",
+ X"05",X"44",X"1B",X"F0",X"1D",X"DD",X"05",X"D5",X"1C",X"DD",X"05",X"DD",X"05",X"55",X"1C",X"DD",
+ X"05",X"DD",X"05",X"DD",X"05",X"DD",X"05",X"DD",X"05",X"12",X"10",X"23",X"10",X"AC",X"0F",X"DD",
+ X"05",X"DD",X"05",X"DD",X"05",X"34",X"10",X"45",X"10",X"56",X"10",X"DD",X"05",X"CE",X"0F",X"DD",
+ X"05",X"DD",X"05",X"DD",X"05",X"DD",X"05",X"DD",X"05",X"DD",X"05",X"6F",X"1D",X"00",X"98",X"A0",
+ X"A8",X"D8",X"60",X"00",X"EC",X"00",X"B0",X"78",X"F0",X"C0",X"E8",X"00",X"B2",X"00",X"00",X"E0",
+ X"00",X"00",X"88",X"00",X"00",X"00",X"00",X"00",X"70",X"68",X"B8",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"D0",X"00",X"00",X"00",X"00",X"00",X"00",X"C8",X"3E",X"00",X"C9",X"3E",X"FF",X"C9",
+ X"DD",X"7E",X"00",X"FE",X"FF",X"C8",X"DD",X"36",X"09",X"01",X"CD",X"4C",X"06",X"AF",X"C9",X"DD",
+ X"7E",X"00",X"FE",X"FF",X"28",X"09",X"DD",X"36",X"09",X"02",X"CD",X"4C",X"06",X"AF",X"C9",X"0E",
+ X"00",X"3E",X"02",X"CD",X"ED",X"03",X"3E",X"FF",X"C9",X"DD",X"7E",X"00",X"FE",X"FF",X"28",X"09",
+ X"DD",X"36",X"09",X"03",X"CD",X"4C",X"06",X"AF",X"C9",X"0E",X"00",X"3E",X"03",X"CD",X"ED",X"03",
+ X"3E",X"FF",X"C9",X"DD",X"7E",X"0A",X"FE",X"FF",X"C8",X"DD",X"36",X"09",X"04",X"CD",X"72",X"07",
+ X"AF",X"C9",X"DD",X"7E",X"0A",X"FE",X"FF",X"C8",X"DD",X"36",X"09",X"05",X"CD",X"72",X"07",X"AF",
+ X"C9",X"DD",X"7E",X"00",X"FE",X"FF",X"C8",X"CD",X"3E",X"08",X"AF",X"C9",X"DD",X"35",X"01",X"C0",
+ X"3A",X"48",X"30",X"DD",X"77",X"01",X"DD",X"CB",X"00",X"46",X"C2",X"6F",X"06",X"DD",X"7E",X"07",
+ X"D6",X"01",X"FA",X"6F",X"06",X"DD",X"77",X"07",X"4F",X"DD",X"7E",X"09",X"CD",X"ED",X"03",X"DD",
+ X"35",X"00",X"C0",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"7E",X"47",X"E6",X"1F",X"CA",X"37",X"07",
+ X"FE",X"1F",X"C2",X"45",X"07",X"23",X"DD",X"75",X"02",X"DD",X"74",X"03",X"78",X"E6",X"E0",X"0F",
+ X"0F",X"0F",X"0F",X"4F",X"06",X"00",X"21",X"9F",X"06",X"09",X"5E",X"23",X"56",X"EB",X"E9",X"AF",
+ X"06",X"E5",X"06",X"07",X"07",X"FB",X"06",X"2A",X"07",X"2A",X"07",X"2A",X"07",X"2A",X"07",X"DD",
+ X"6E",X"02",X"DD",X"66",X"03",X"4E",X"CB",X"21",X"06",X"00",X"21",X"34",X"09",X"09",X"5E",X"23",
+ X"56",X"ED",X"53",X"44",X"30",X"DD",X"73",X"04",X"DD",X"72",X"05",X"DD",X"6E",X"02",X"DD",X"66",
+ X"03",X"4E",X"CB",X"21",X"06",X"00",X"21",X"60",X"09",X"09",X"5E",X"23",X"56",X"DD",X"73",X"0B",
+ X"DD",X"72",X"0C",X"18",X"35",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"4E",X"06",X"00",X"21",X"7C",
+ X"0A",X"09",X"7E",X"32",X"48",X"30",X"DD",X"77",X"01",X"18",X"1F",X"DD",X"6E",X"02",X"DD",X"66",
+ X"03",X"7E",X"DD",X"77",X"08",X"18",X"13",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"7E",X"DD",X"77",
+ X"06",X"DD",X"77",X"07",X"DD",X"77",X"0D",X"DD",X"77",X"0E",X"DD",X"6E",X"02",X"DD",X"66",X"03",
+ X"23",X"DD",X"75",X"02",X"DD",X"74",X"03",X"C3",X"73",X"06",X"DD",X"7E",X"09",X"0E",X"00",X"CD",
+ X"ED",X"03",X"DD",X"36",X"00",X"FF",X"C9",X"CD",X"02",X"09",X"DD",X"7E",X"09",X"0E",X"00",X"CD",
+ X"ED",X"03",X"C3",X"26",X"09",X"C5",X"CD",X"02",X"09",X"C1",X"78",X"E6",X"1F",X"3D",X"07",X"4F",
+ X"06",X"00",X"DD",X"6E",X"04",X"DD",X"66",X"05",X"09",X"5E",X"23",X"56",X"EB",X"DD",X"7E",X"09",
+ X"CD",X"08",X"04",X"DD",X"4E",X"06",X"DD",X"71",X"07",X"DD",X"7E",X"09",X"CD",X"ED",X"03",X"C3",
+ X"26",X"09",X"DD",X"35",X"0F",X"C0",X"3A",X"48",X"30",X"DD",X"77",X"0F",X"DD",X"CB",X"0A",X"46",
+ X"C2",X"A5",X"07",X"DD",X"7E",X"0E",X"D6",X"01",X"FA",X"A5",X"07",X"DD",X"77",X"0E",X"DD",X"7E",
+ X"09",X"FE",X"04",X"28",X"08",X"DD",X"4E",X"0E",X"3E",X"02",X"CD",X"ED",X"03",X"DD",X"4E",X"0E",
+ X"3E",X"03",X"CD",X"ED",X"03",X"DD",X"35",X"0A",X"C0",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"2B",
+ X"7E",X"47",X"E6",X"1F",X"28",X"1E",X"FE",X"1F",X"20",X"33",X"DD",X"7E",X"09",X"FE",X"04",X"28",
+ X"07",X"3E",X"02",X"0E",X"00",X"CD",X"ED",X"03",X"3E",X"03",X"0E",X"00",X"CD",X"ED",X"03",X"DD",
+ X"36",X"0A",X"FF",X"C9",X"CD",X"14",X"09",X"DD",X"7E",X"09",X"FE",X"04",X"28",X"07",X"3E",X"02",
+ X"0E",X"00",X"CD",X"ED",X"03",X"3E",X"03",X"0E",X"00",X"CD",X"ED",X"03",X"C9",X"C5",X"CD",X"14",
+ X"09",X"C1",X"78",X"E6",X"1F",X"3D",X"07",X"4F",X"06",X"00",X"DD",X"7E",X"09",X"FE",X"04",X"28",
+ X"12",X"DD",X"6E",X"04",X"DD",X"66",X"05",X"09",X"5E",X"23",X"56",X"EB",X"C5",X"3E",X"02",X"CD",
+ X"08",X"04",X"C1",X"DD",X"6E",X"0B",X"DD",X"66",X"0C",X"09",X"5E",X"23",X"56",X"EB",X"3E",X"03",
+ X"CD",X"08",X"04",X"DD",X"4E",X"0D",X"DD",X"71",X"0E",X"DD",X"7E",X"09",X"FE",X"04",X"28",X"05",
+ X"3E",X"02",X"CD",X"ED",X"03",X"3E",X"03",X"DD",X"4E",X"0D",X"CD",X"ED",X"03",X"C9",X"DD",X"35",
+ X"01",X"C0",X"3A",X"48",X"30",X"DD",X"77",X"01",X"DD",X"CB",X"00",X"46",X"C2",X"5A",X"08",X"DD",
+ X"7E",X"07",X"D6",X"01",X"FA",X"5A",X"08",X"DD",X"77",X"07",X"DD",X"35",X"00",X"C0",X"DD",X"6E",
+ X"02",X"DD",X"66",X"03",X"7E",X"47",X"E6",X"1F",X"CA",X"F0",X"08",X"FE",X"1F",X"C2",X"F6",X"08",
+ X"23",X"DD",X"75",X"02",X"DD",X"74",X"03",X"78",X"E6",X"E0",X"0F",X"0F",X"0F",X"0F",X"4F",X"06",
+ X"00",X"21",X"8A",X"08",X"09",X"5E",X"23",X"56",X"EB",X"E9",X"9A",X"08",X"B8",X"08",X"CE",X"08",
+ X"EB",X"08",X"EB",X"08",X"EB",X"08",X"EB",X"08",X"EB",X"08",X"DD",X"6E",X"02",X"DD",X"66",X"03",
+ X"4E",X"CB",X"21",X"06",X"00",X"21",X"34",X"09",X"09",X"5E",X"23",X"56",X"ED",X"53",X"44",X"30",
+ X"DD",X"73",X"04",X"DD",X"72",X"05",X"18",X"23",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"4E",X"06",
+ X"00",X"21",X"7C",X"0A",X"09",X"7E",X"32",X"48",X"30",X"DD",X"77",X"01",X"18",X"0D",X"DD",X"6E",
+ X"02",X"DD",X"66",X"03",X"7E",X"DD",X"77",X"06",X"DD",X"77",X"07",X"DD",X"6E",X"02",X"DD",X"66",
+ X"03",X"23",X"DD",X"75",X"02",X"DD",X"74",X"03",X"C3",X"5E",X"08",X"DD",X"36",X"00",X"FF",X"C9",
+ X"CD",X"02",X"09",X"C3",X"26",X"09",X"CD",X"02",X"09",X"DD",X"4E",X"06",X"DD",X"71",X"07",X"C3",
+ X"26",X"09",X"78",X"E6",X"E0",X"07",X"07",X"07",X"47",X"3E",X"01",X"18",X"01",X"07",X"10",X"FD",
+ X"DD",X"77",X"00",X"C9",X"78",X"E6",X"E0",X"07",X"07",X"07",X"47",X"3E",X"01",X"18",X"01",X"07",
+ X"10",X"FD",X"DD",X"77",X"0A",X"C9",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"23",X"DD",X"75",X"02",
+ X"DD",X"74",X"03",X"C9",X"8C",X"09",X"90",X"09",X"94",X"09",X"98",X"09",X"9C",X"09",X"A0",X"09",
+ X"A4",X"09",X"A8",X"09",X"AC",X"09",X"B0",X"09",X"B4",X"09",X"B8",X"09",X"BC",X"09",X"C0",X"09",
+ X"C4",X"09",X"C8",X"09",X"CC",X"09",X"D0",X"09",X"D4",X"09",X"D8",X"09",X"DC",X"09",X"E0",X"09",
+ X"04",X"0A",X"08",X"0A",X"0C",X"0A",X"10",X"0A",X"14",X"0A",X"18",X"0A",X"1C",X"0A",X"20",X"0A",
+ X"24",X"0A",X"28",X"0A",X"2C",X"0A",X"30",X"0A",X"34",X"0A",X"38",X"0A",X"3C",X"0A",X"40",X"0A",
+ X"44",X"0A",X"48",X"0A",X"4C",X"0A",X"50",X"0A",X"54",X"0A",X"58",X"0A",X"6B",X"08",X"F2",X"07",
+ X"80",X"07",X"14",X"07",X"AE",X"06",X"4E",X"06",X"F3",X"05",X"9E",X"05",X"4E",X"05",X"01",X"05",
+ X"B9",X"04",X"76",X"04",X"36",X"04",X"F9",X"03",X"C0",X"03",X"8A",X"03",X"57",X"03",X"27",X"03",
+ X"FA",X"02",X"CF",X"02",X"A7",X"02",X"81",X"02",X"5D",X"02",X"3B",X"02",X"1B",X"02",X"FD",X"01",
+ X"E0",X"01",X"C5",X"01",X"AC",X"01",X"94",X"01",X"7D",X"01",X"68",X"01",X"53",X"01",X"40",X"01",
+ X"2E",X"01",X"1D",X"01",X"0D",X"01",X"FE",X"00",X"F0",X"00",X"E3",X"00",X"D6",X"00",X"CA",X"00",
+ X"BE",X"00",X"B4",X"00",X"AA",X"00",X"A0",X"00",X"97",X"00",X"8F",X"00",X"87",X"00",X"7F",X"00",
+ X"78",X"00",X"71",X"00",X"6B",X"00",X"65",X"00",X"5F",X"00",X"5A",X"00",X"55",X"00",X"50",X"00",
+ X"4C",X"00",X"47",X"00",X"6A",X"08",X"F1",X"07",X"7F",X"07",X"15",X"07",X"AD",X"06",X"4D",X"06",
+ X"F2",X"05",X"9D",X"05",X"4D",X"05",X"00",X"05",X"B8",X"04",X"75",X"04",X"35",X"04",X"F8",X"03",
+ X"BF",X"03",X"89",X"03",X"56",X"03",X"26",X"03",X"F9",X"02",X"CE",X"02",X"A6",X"02",X"80",X"02",
+ X"5C",X"02",X"3A",X"02",X"1A",X"02",X"FC",X"01",X"DF",X"01",X"C4",X"01",X"AB",X"01",X"93",X"01",
+ X"7C",X"01",X"67",X"01",X"52",X"01",X"3F",X"01",X"2D",X"01",X"1C",X"01",X"0C",X"01",X"FD",X"00",
+ X"EF",X"00",X"E2",X"00",X"D5",X"00",X"C9",X"00",X"BD",X"00",X"B3",X"00",X"A9",X"00",X"9F",X"00",
+ X"96",X"00",X"8E",X"00",X"86",X"00",X"7E",X"00",X"77",X"00",X"70",X"00",X"6A",X"00",X"64",X"00",
+ X"5E",X"00",X"59",X"00",X"54",X"00",X"4F",X"00",X"4B",X"00",X"46",X"00",X"46",X"3F",X"38",X"31",
+ X"2B",X"26",X"21",X"1C",X"18",X"15",X"12",X"0F",X"0D",X"0C",X"0B",X"0A",X"3A",X"04",X"30",X"FE",
+ X"00",X"C2",X"F5",X"0D",X"3E",X"01",X"2E",X"00",X"CD",X"34",X"04",X"3E",X"02",X"2E",X"00",X"CD",
+ X"34",X"04",X"3E",X"03",X"2E",X"00",X"CD",X"34",X"04",X"3E",X"01",X"CD",X"7B",X"03",X"3E",X"02",
+ X"CD",X"7B",X"03",X"3E",X"03",X"CD",X"7B",X"03",X"21",X"EA",X"0A",X"11",X"14",X"30",X"01",X"30",
+ X"00",X"ED",X"B0",X"3A",X"12",X"30",X"07",X"4F",X"07",X"81",X"4F",X"06",X"00",X"21",X"F3",X"0E",
+ X"09",X"11",X"16",X"30",X"CD",X"E0",X"0A",X"11",X"26",X"30",X"CD",X"E0",X"0A",X"11",X"36",X"30",
+ X"7E",X"12",X"CD",X"E7",X"0A",X"7E",X"12",X"23",X"13",X"C9",X"01",X"01",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3A",X"04",X"30",X"FE",X"00",X"C2",
+ X"7B",X"0E",X"DD",X"21",X"14",X"30",X"CD",X"E0",X"05",X"DD",X"7E",X"08",X"FE",X"01",X"28",X"28",
+ X"FE",X"02",X"28",X"3B",X"DD",X"21",X"24",X"30",X"CD",X"EF",X"05",X"DD",X"21",X"34",X"30",X"CD",
+ X"09",X"06",X"3C",X"28",X"02",X"AF",X"C9",X"DD",X"21",X"14",X"30",X"3E",X"FF",X"DD",X"BE",X"00",
+ X"20",X"04",X"DD",X"BE",X"10",X"C8",X"AF",X"C9",X"DD",X"21",X"14",X"30",X"CD",X"32",X"06",X"DD",
+ X"21",X"34",X"30",X"CD",X"41",X"06",X"DD",X"21",X"24",X"30",X"CD",X"41",X"06",X"18",X"15",X"DD",
+ X"21",X"14",X"30",X"CD",X"23",X"06",X"DD",X"21",X"24",X"30",X"CD",X"EF",X"05",X"DD",X"21",X"34",
+ X"30",X"CD",X"41",X"06",X"DD",X"21",X"14",X"30",X"3E",X"FF",X"DD",X"BE",X"00",X"20",X"09",X"DD",
+ X"BE",X"0A",X"20",X"04",X"DD",X"BE",X"10",X"C8",X"AF",X"C9",X"DD",X"7E",X"00",X"FE",X"FF",X"C8",
+ X"DD",X"36",X"09",X"01",X"CD",X"06",X"0C",X"AF",X"C9",X"DD",X"7E",X"00",X"FE",X"FF",X"28",X"09",
+ X"DD",X"36",X"09",X"02",X"CD",X"06",X"0C",X"AF",X"C9",X"0E",X"00",X"3E",X"02",X"CD",X"ED",X"03",
+ X"3E",X"FF",X"C9",X"DD",X"7E",X"00",X"FE",X"FF",X"28",X"09",X"DD",X"36",X"09",X"03",X"CD",X"06",
+ X"0C",X"AF",X"C9",X"0E",X"00",X"3E",X"03",X"CD",X"ED",X"03",X"3E",X"FF",X"C9",X"DD",X"7E",X"0A",
+ X"FE",X"FF",X"C8",X"DD",X"36",X"09",X"04",X"CD",X"E4",X"0C",X"AF",X"C9",X"DD",X"7E",X"0A",X"FE",
+ X"FF",X"C8",X"DD",X"36",X"09",X"05",X"CD",X"E4",X"0C",X"AF",X"C9",X"DD",X"7E",X"00",X"FE",X"FF",
+ X"C8",X"CD",X"48",X"0D",X"AF",X"C9",X"DD",X"35",X"01",X"C0",X"3A",X"7E",X"30",X"DD",X"77",X"01",
+ X"DD",X"CB",X"00",X"46",X"C2",X"29",X"0C",X"DD",X"7E",X"07",X"D6",X"01",X"FA",X"6F",X"06",X"DD",
+ X"77",X"07",X"4F",X"DD",X"7E",X"09",X"CD",X"ED",X"03",X"DD",X"35",X"00",X"C0",X"DD",X"6E",X"02",
+ X"DD",X"66",X"03",X"7E",X"47",X"E6",X"1F",X"CA",X"37",X"07",X"FE",X"1F",X"C2",X"45",X"07",X"23",
+ X"DD",X"75",X"02",X"DD",X"74",X"03",X"78",X"E6",X"E0",X"0F",X"0F",X"0F",X"0F",X"4F",X"06",X"00",
+ X"21",X"59",X"0C",X"09",X"5E",X"23",X"56",X"EB",X"E9",X"69",X"0C",X"9F",X"0C",X"C1",X"0C",X"B5",
+ X"0C",X"2A",X"07",X"2A",X"07",X"2A",X"07",X"2A",X"07",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"4E",
+ X"CB",X"21",X"06",X"00",X"21",X"34",X"09",X"09",X"5E",X"23",X"56",X"ED",X"53",X"7A",X"30",X"DD",
+ X"73",X"04",X"DD",X"72",X"05",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"4E",X"CB",X"21",X"06",X"00",
+ X"21",X"60",X"09",X"09",X"5E",X"23",X"56",X"DD",X"73",X"0B",X"DD",X"72",X"0C",X"18",X"35",X"DD",
+ X"6E",X"02",X"DD",X"66",X"03",X"4E",X"06",X"00",X"21",X"7C",X"0A",X"09",X"7E",X"32",X"7E",X"30",
+ X"DD",X"77",X"01",X"18",X"1F",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"7E",X"DD",X"77",X"08",X"18",
+ X"13",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"7E",X"DD",X"77",X"06",X"DD",X"77",X"07",X"DD",X"77",
+ X"0D",X"DD",X"77",X"0E",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"23",X"DD",X"75",X"02",X"DD",X"74",
+ X"03",X"C3",X"2D",X"0C",X"DD",X"35",X"0F",X"C0",X"3A",X"7E",X"30",X"DD",X"77",X"0F",X"DD",X"CB",
+ X"0A",X"46",X"C2",X"17",X"0D",X"DD",X"7E",X"0E",X"D6",X"01",X"FA",X"17",X"0D",X"DD",X"77",X"0E",
+ X"DD",X"7E",X"09",X"FE",X"04",X"28",X"08",X"DD",X"4E",X"0E",X"3E",X"02",X"CD",X"ED",X"03",X"DD",
+ X"4E",X"0E",X"3E",X"03",X"CD",X"ED",X"03",X"DD",X"35",X"0A",X"C0",X"DD",X"6E",X"02",X"DD",X"66",
+ X"03",X"2B",X"7E",X"47",X"E6",X"1F",X"CA",X"D4",X"07",X"FE",X"1F",X"C2",X"ED",X"07",X"DD",X"7E",
+ X"09",X"FE",X"04",X"28",X"07",X"3E",X"02",X"0E",X"00",X"CD",X"ED",X"03",X"3E",X"03",X"0E",X"00",
+ X"CD",X"ED",X"03",X"DD",X"36",X"0A",X"FF",X"C9",X"DD",X"35",X"01",X"C0",X"3A",X"7E",X"30",X"DD",
+ X"77",X"01",X"DD",X"CB",X"00",X"46",X"C2",X"64",X"0D",X"DD",X"7E",X"07",X"D6",X"01",X"FA",X"64",
+ X"0D",X"DD",X"77",X"07",X"DD",X"35",X"00",X"C0",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"7E",X"47",
+ X"E6",X"1F",X"CA",X"F0",X"08",X"FE",X"1F",X"C2",X"F6",X"08",X"23",X"DD",X"75",X"02",X"DD",X"74",
+ X"03",X"78",X"E6",X"E0",X"0F",X"0F",X"0F",X"0F",X"4F",X"06",X"00",X"21",X"94",X"0D",X"09",X"5E",
+ X"23",X"56",X"EB",X"E9",X"A4",X"0D",X"C2",X"0D",X"D8",X"0D",X"EB",X"08",X"EB",X"08",X"EB",X"08",
+ X"EB",X"08",X"EB",X"08",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"4E",X"CB",X"21",X"06",X"00",X"21",
+ X"34",X"09",X"09",X"5E",X"23",X"56",X"ED",X"53",X"7A",X"30",X"DD",X"73",X"04",X"DD",X"72",X"05",
+ X"18",X"23",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"4E",X"06",X"00",X"21",X"7C",X"0A",X"09",X"7E",
+ X"32",X"7E",X"30",X"DD",X"77",X"01",X"18",X"0D",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"7E",X"DD",
+ X"77",X"06",X"DD",X"77",X"07",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"23",X"DD",X"75",X"02",X"DD",
+ X"74",X"03",X"C3",X"68",X"0D",X"3E",X"01",X"2E",X"00",X"CD",X"34",X"04",X"3E",X"02",X"2E",X"00",
+ X"CD",X"34",X"04",X"3E",X"03",X"2E",X"00",X"CD",X"34",X"04",X"3E",X"01",X"CD",X"7B",X"03",X"3E",
+ X"02",X"CD",X"7B",X"03",X"3E",X"03",X"CD",X"7B",X"03",X"21",X"4B",X"0E",X"11",X"4A",X"30",X"01",
+ X"30",X"00",X"ED",X"B0",X"3A",X"80",X"30",X"07",X"4F",X"07",X"81",X"4F",X"06",X"00",X"21",X"F3",
+ X"0E",X"09",X"11",X"4C",X"30",X"CD",X"41",X"0E",X"11",X"5C",X"30",X"CD",X"41",X"0E",X"11",X"6C",
+ X"30",X"7E",X"12",X"CD",X"48",X"0E",X"7E",X"12",X"23",X"13",X"C9",X"01",X"01",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"DD",X"21",X"4A",X"30",X"CD",
+ X"9A",X"0B",X"DD",X"7E",X"08",X"FE",X"01",X"28",X"28",X"FE",X"02",X"28",X"3B",X"DD",X"21",X"5A",
+ X"30",X"CD",X"A9",X"0B",X"DD",X"21",X"6A",X"30",X"CD",X"C3",X"0B",X"3C",X"28",X"02",X"AF",X"C9",
+ X"DD",X"21",X"4A",X"30",X"3E",X"FF",X"DD",X"BE",X"00",X"20",X"04",X"DD",X"BE",X"10",X"C8",X"AF",
+ X"C9",X"DD",X"21",X"4A",X"30",X"CD",X"EC",X"0B",X"DD",X"21",X"6A",X"30",X"CD",X"FB",X"0B",X"DD",
+ X"21",X"5A",X"30",X"CD",X"FB",X"0B",X"18",X"15",X"DD",X"21",X"4A",X"30",X"CD",X"DD",X"0B",X"DD",
+ X"21",X"5A",X"30",X"CD",X"A9",X"0B",X"DD",X"21",X"6A",X"30",X"CD",X"FB",X"0B",X"DD",X"21",X"4A",
+ X"30",X"3E",X"FF",X"DD",X"BE",X"00",X"20",X"09",X"DD",X"BE",X"0A",X"20",X"04",X"DD",X"BE",X"10",
+ X"C8",X"AF",X"C9",X"6B",X"10",X"81",X"10",X"95",X"10",X"9D",X"10",X"CD",X"10",X"FB",X"10",X"BD",
+ X"13",X"0F",X"14",X"5F",X"14",X"23",X"11",X"34",X"11",X"43",X"11",X"6B",X"10",X"81",X"10",X"95",
+ X"10",X"52",X"11",X"EC",X"11",X"24",X"12",X"5C",X"12",X"AE",X"12",X"FE",X"12",X"6B",X"10",X"81",
+ X"10",X"95",X"10",X"BF",X"14",X"D1",X"14",X"0A",X"15",X"6B",X"10",X"81",X"10",X"95",X"10",X"FC",
+ X"10",X"11",X"11",X"22",X"11",X"6B",X"10",X"81",X"10",X"95",X"10",X"60",X"14",X"90",X"14",X"BE",
+ X"14",X"FF",X"12",X"15",X"13",X"29",X"13",X"31",X"13",X"40",X"13",X"49",X"13",X"4A",X"13",X"59",
+ X"13",X"62",X"13",X"6B",X"10",X"81",X"10",X"95",X"10",X"6B",X"10",X"81",X"10",X"95",X"10",X"63",
+ X"13",X"7F",X"13",X"80",X"13",X"81",X"13",X"9D",X"13",X"9E",X"13",X"9F",X"13",X"BB",X"13",X"BC",
+ X"13",X"6B",X"10",X"81",X"10",X"95",X"10",X"6B",X"10",X"81",X"10",X"95",X"10",X"3E",X"00",X"32",
+ X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",X"0B",X"C9",X"3E",X"01",
+ X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",X"0B",X"C9",X"3E",
+ X"08",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",X"0B",X"C9",
+ X"3E",X"03",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",X"0B",
+ X"C9",X"3E",X"0C",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",
+ X"0B",X"C9",X"3E",X"05",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",
+ X"1A",X"0B",X"C9",X"3E",X"06",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",
+ X"CD",X"1A",X"0B",X"C9",X"3E",X"0A",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",
+ X"C9",X"CD",X"1A",X"0B",X"C9",X"3E",X"0E",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",
+ X"AF",X"C9",X"CD",X"1A",X"0B",X"C9",X"3E",X"0F",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",
+ X"0A",X"AF",X"C9",X"CD",X"1A",X"0B",X"C9",X"3E",X"12",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",
+ X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",X"0B",X"C9",X"3E",X"13",X"32",X"12",X"30",X"32",X"80",X"30",
+ X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",X"0B",X"C9",X"3E",X"14",X"32",X"12",X"30",X"32",X"80",
+ X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",X"0B",X"C9",X"3E",X"02",X"32",X"12",X"30",X"32",
+ X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",X"0B",X"C9",X"1F",X"0F",X"3F",X"0F",X"5F",
+ X"09",X"7F",X"00",X"22",X"23",X"24",X"25",X"23",X"24",X"25",X"26",X"24",X"25",X"26",X"27",X"A8",
+ X"FF",X"1F",X"0F",X"3F",X"0F",X"5F",X"09",X"26",X"27",X"28",X"29",X"27",X"28",X"29",X"2A",X"28",
+ X"29",X"2A",X"2B",X"AC",X"FF",X"1F",X"08",X"3F",X"0F",X"5F",X"08",X"A2",X"FF",X"1F",X"0D",X"3F",
+ X"0A",X"5F",X"09",X"7F",X"00",X"2E",X"2E",X"20",X"30",X"30",X"20",X"32",X"32",X"20",X"30",X"30",
+ X"20",X"32",X"32",X"20",X"33",X"33",X"20",X"32",X"32",X"20",X"33",X"33",X"20",X"35",X"35",X"20",
+ X"33",X"33",X"20",X"35",X"35",X"20",X"37",X"37",X"20",X"3F",X"05",X"B5",X"FF",X"1F",X"0D",X"3F",
+ X"0A",X"5F",X"09",X"32",X"32",X"20",X"33",X"33",X"20",X"35",X"35",X"20",X"33",X"33",X"20",X"35",
+ X"35",X"20",X"37",X"37",X"20",X"35",X"35",X"20",X"37",X"37",X"20",X"39",X"39",X"20",X"37",X"37",
+ X"20",X"39",X"39",X"20",X"3A",X"3A",X"20",X"3F",X"05",X"B2",X"FF",X"FF",X"1F",X"0E",X"3F",X"0F",
+ X"5F",X"09",X"7F",X"02",X"6B",X"60",X"80",X"70",X"60",X"80",X"74",X"60",X"80",X"3F",X"05",X"B7",
+ X"FF",X"1F",X"0E",X"3F",X"0F",X"5F",X"09",X"64",X"60",X"80",X"6B",X"60",X"80",X"70",X"60",X"80",
+ X"B4",X"FF",X"FF",X"1F",X"0E",X"3F",X"0C",X"5F",X"09",X"7F",X"00",X"4E",X"52",X"55",X"5A",X"52",
+ X"55",X"5A",X"5E",X"FF",X"1F",X"0E",X"3F",X"0C",X"5F",X"09",X"49",X"4E",X"52",X"55",X"4E",X"52",
+ X"55",X"5A",X"FF",X"1F",X"08",X"3F",X"0C",X"5F",X"08",X"46",X"49",X"4E",X"52",X"49",X"4E",X"52",
+ X"55",X"FF",X"1F",X"0E",X"3F",X"0B",X"5F",X"09",X"7F",X"02",X"70",X"7F",X"00",X"70",X"7F",X"02",
+ X"72",X"7F",X"00",X"70",X"7F",X"02",X"73",X"7F",X"00",X"70",X"7F",X"02",X"75",X"7F",X"00",X"70",
+ X"7F",X"02",X"73",X"7F",X"00",X"70",X"7F",X"02",X"72",X"7F",X"00",X"70",X"7F",X"02",X"70",X"7F",
+ X"00",X"70",X"7F",X"02",X"6E",X"7F",X"00",X"70",X"7F",X"02",X"70",X"7F",X"00",X"70",X"7F",X"02",
+ X"72",X"7F",X"00",X"70",X"7F",X"02",X"73",X"7F",X"00",X"70",X"7F",X"02",X"75",X"7F",X"00",X"70",
+ X"7F",X"02",X"73",X"7F",X"00",X"70",X"7F",X"02",X"72",X"7F",X"00",X"70",X"7F",X"02",X"70",X"7F",
+ X"00",X"70",X"7F",X"02",X"6E",X"7F",X"00",X"70",X"7F",X"02",X"70",X"7F",X"00",X"70",X"7F",X"02",
+ X"72",X"7F",X"00",X"70",X"7F",X"02",X"6E",X"7F",X"00",X"70",X"7F",X"02",X"70",X"7F",X"00",X"70",
+ X"7F",X"02",X"72",X"7F",X"00",X"70",X"7F",X"02",X"6E",X"7F",X"00",X"70",X"7F",X"02",X"70",X"7F",
+ X"00",X"70",X"7F",X"02",X"72",X"7F",X"00",X"70",X"7F",X"02",X"B0",X"FF",X"1F",X"08",X"3F",X"0B",
+ X"5F",X"08",X"70",X"70",X"72",X"70",X"73",X"70",X"75",X"70",X"73",X"70",X"72",X"70",X"70",X"70",
+ X"6E",X"70",X"70",X"70",X"72",X"70",X"73",X"70",X"75",X"70",X"73",X"70",X"72",X"70",X"70",X"70",
+ X"6E",X"70",X"70",X"70",X"72",X"70",X"6E",X"70",X"70",X"70",X"72",X"70",X"6E",X"70",X"70",X"70",
+ X"72",X"70",X"B0",X"FF",X"1F",X"02",X"3F",X"0B",X"5F",X"08",X"70",X"70",X"72",X"70",X"73",X"70",
+ X"75",X"70",X"73",X"70",X"72",X"70",X"70",X"70",X"6E",X"70",X"70",X"70",X"72",X"70",X"73",X"70",
+ X"75",X"70",X"73",X"70",X"72",X"70",X"70",X"70",X"6E",X"70",X"70",X"70",X"72",X"70",X"6E",X"70",
+ X"70",X"70",X"72",X"70",X"6E",X"70",X"70",X"70",X"72",X"70",X"B0",X"FF",X"1F",X"0E",X"3F",X"0A",
+ X"5F",X"09",X"7F",X"02",X"77",X"75",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",
+ X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",
+ X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"B7",X"60",
+ X"75",X"73",X"72",X"70",X"2F",X"2F",X"2F",X"2F",X"2F",X"2F",X"2F",X"2F",X"30",X"30",X"30",X"30",
+ X"30",X"30",X"30",X"30",X"30",X"30",X"30",X"30",X"30",X"30",X"30",X"30",X"B0",X"FF",X"1F",X"02",
+ X"3F",X"0A",X"5F",X"08",X"77",X"75",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",
+ X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",
+ X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"37",X"B7",X"60",
+ X"75",X"73",X"72",X"70",X"2F",X"2F",X"2F",X"2F",X"2F",X"2F",X"2F",X"2F",X"30",X"30",X"30",X"30",
+ X"30",X"30",X"30",X"30",X"30",X"30",X"30",X"30",X"30",X"30",X"30",X"30",X"B0",X"FF",X"FF",X"1F",
+ X"0E",X"3F",X"07",X"5F",X"09",X"7F",X"00",X"22",X"23",X"24",X"25",X"26",X"27",X"28",X"29",X"2A");
+begin
+process(clk)
+begin
+ if rising_edge(clk) then
+ data <= rom_data(to_integer(unsigned(addr)));
+ end if;
+end process;
+end architecture;
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sound_prog2.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sound_prog2.vhd
new file mode 100644
index 00000000..0f82de14
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sound_prog2.vhd
@@ -0,0 +1,278 @@
+library ieee;
+use ieee.std_logic_1164.all,ieee.numeric_std.all;
+
+entity time_pilot_sound_prog2 is
+port (
+ clk : in std_logic;
+ addr : in std_logic_vector(11 downto 0);
+ data : out std_logic_vector(7 downto 0)
+);
+end entity;
+
+architecture prom of time_pilot_sound_prog2 is
+ type rom is array(0 to 4095) of std_logic_vector(7 downto 0);
+ signal rom_data: rom := (
+ X"21",X"00",X"30",X"06",X"00",X"C3",X"7C",X"01",X"32",X"00",X"50",X"3A",X"00",X"40",X"C9",X"FF",
+ X"32",X"00",X"70",X"3A",X"00",X"60",X"C9",X"FF",X"78",X"CF",X"79",X"32",X"00",X"40",X"C9",X"FF",
+ X"78",X"D7",X"79",X"32",X"00",X"60",X"C9",X"FF",X"87",X"85",X"6F",X"7C",X"CE",X"00",X"67",X"7E",
+ X"23",X"66",X"6F",X"E9",X"FF",X"FF",X"FF",X"FF",X"D9",X"08",X"CD",X"40",X"00",X"08",X"D9",X"C9",
+ X"3E",X"0E",X"CF",X"B7",X"28",X"26",X"32",X"0B",X"30",X"CD",X"2D",X"01",X"3A",X"0B",X"30",X"CB",
+ X"77",X"20",X"3F",X"3A",X"06",X"30",X"B7",X"3A",X"0B",X"30",X"C2",X"E6",X"00",X"21",X"06",X"30",
+ X"36",X"00",X"B7",X"F2",X"FE",X"00",X"CB",X"BF",X"CD",X"89",X"00",X"C9",X"21",X"00",X"30",X"06",
+ X"04",X"AF",X"77",X"23",X"10",X"FC",X"C9",X"21",X"00",X"30",X"06",X"02",X"0E",X"03",X"BE",X"28",
+ X"05",X"23",X"23",X"10",X"F9",X"41",X"79",X"90",X"C9",X"CD",X"77",X"00",X"C8",X"AF",X"77",X"23",
+ X"77",X"C9",X"3A",X"06",X"30",X"B7",X"20",X"27",X"3A",X"09",X"30",X"2A",X"07",X"30",X"BD",X"D8",
+ X"BC",X"D8",X"3E",X"FF",X"32",X"06",X"30",X"06",X"00",X"21",X"00",X"30",X"3A",X"0B",X"30",X"77",
+ X"23",X"70",X"23",X"70",X"23",X"70",X"3E",X"01",X"32",X"04",X"30",X"CD",X"BE",X"02",X"C9",X"3A",
+ X"0B",X"30",X"CB",X"B7",X"CD",X"77",X"00",X"28",X"04",X"23",X"36",X"00",X"C9",X"3A",X"09",X"30",
+ X"47",X"3A",X"07",X"30",X"B8",X"D0",X"21",X"00",X"30",X"3A",X"0B",X"30",X"77",X"23",X"36",X"00",
+ X"3E",X"FF",X"32",X"06",X"30",X"C9",X"3A",X"09",X"30",X"47",X"3A",X"07",X"30",X"B8",X"D0",X"AF",
+ X"32",X"06",X"30",X"3A",X"0B",X"30",X"21",X"00",X"30",X"77",X"23",X"36",X"00",X"C9",X"32",X"0B",
+ X"30",X"CD",X"77",X"00",X"28",X"04",X"23",X"36",X"00",X"C9",X"AF",X"CD",X"77",X"00",X"28",X"08",
+ X"3A",X"0B",X"30",X"77",X"23",X"36",X"00",X"C9",X"CD",X"2D",X"01",X"21",X"00",X"30",X"B7",X"C8",
+ X"3D",X"87",X"4F",X"06",X"00",X"09",X"3A",X"0B",X"30",X"77",X"23",X"70",X"C9",X"3A",X"00",X"30",
+ X"CD",X"4F",X"01",X"32",X"07",X"30",X"3A",X"02",X"30",X"CD",X"4F",X"01",X"32",X"08",X"30",X"3A",
+ X"0B",X"30",X"CD",X"4F",X"01",X"32",X"09",X"30",X"CD",X"61",X"01",X"32",X"0A",X"30",X"C9",X"21",
+ X"AD",X"05",X"CB",X"77",X"28",X"05",X"CB",X"B7",X"21",X"AD",X"05",X"06",X"00",X"4F",X"09",X"7E",
+ X"C9",X"2A",X"07",X"30",X"7C",X"BD",X"38",X"09",X"3A",X"09",X"30",X"BD",X"38",X"0C",X"3E",X"01",
+ X"C9",X"3A",X"09",X"30",X"BC",X"38",X"03",X"3E",X"02",X"C9",X"AF",X"C9",X"70",X"23",X"7C",X"FE",
+ X"34",X"20",X"F9",X"F9",X"ED",X"56",X"21",X"00",X"80",X"22",X"0C",X"30",X"77",X"01",X"3F",X"07",
+ X"DF",X"E7",X"32",X"0E",X"30",X"32",X"0F",X"30",X"CD",X"A2",X"02",X"CD",X"A6",X"02",X"CD",X"AA",
+ X"02",X"CD",X"B0",X"02",X"CD",X"B4",X"02",X"CD",X"B8",X"02",X"3A",X"06",X"30",X"B7",X"28",X"06",
+ X"FB",X"00",X"00",X"F3",X"18",X"0F",X"FB",X"3E",X"0F",X"CF",X"E6",X"40",X"20",X"F9",X"3E",X"0F",
+ X"CF",X"E6",X"40",X"28",X"F9",X"F3",X"3A",X"06",X"30",X"B7",X"20",X"2E",X"3E",X"00",X"32",X"04",
+ X"30",X"3A",X"01",X"30",X"B7",X"3A",X"00",X"30",X"28",X"05",X"CD",X"85",X"02",X"18",X"03",X"CD",
+ X"68",X"02",X"3E",X"01",X"32",X"04",X"30",X"3A",X"03",X"30",X"B7",X"3A",X"02",X"30",X"28",X"05",
+ X"CD",X"85",X"02",X"18",X"B5",X"CD",X"68",X"02",X"18",X"B0",X"3E",X"00",X"32",X"04",X"30",X"3A",
+ X"01",X"30",X"B7",X"3A",X"00",X"30",X"28",X"05",X"CD",X"3C",X"02",X"18",X"9D",X"CD",X"12",X"02",
+ X"18",X"98",X"CB",X"B7",X"32",X"00",X"30",X"CD",X"BE",X"02",X"3A",X"00",X"30",X"21",X"F9",X"04",
+ X"EF",X"B7",X"20",X"6B",X"21",X"01",X"30",X"36",X"01",X"11",X"53",X"05",X"3A",X"00",X"30",X"6F",
+ X"26",X"00",X"29",X"19",X"5E",X"23",X"56",X"ED",X"53",X"10",X"30",X"C9",X"B7",X"C8",X"2A",X"10",
+ X"30",X"CD",X"33",X"00",X"B7",X"C8",X"21",X"00",X"30",X"3D",X"28",X"06",X"36",X"00",X"AF",X"32",
+ X"06",X"30",X"23",X"36",X"00",X"C9",X"B7",X"C8",X"E6",X"03",X"C5",X"47",X"3A",X"04",X"30",X"4F",
+ X"87",X"81",X"80",X"32",X"05",X"30",X"C1",X"C9",X"F5",X"CD",X"BE",X"02",X"F1",X"E6",X"3F",X"21",
+ X"F9",X"04",X"EF",X"B7",X"C2",X"8F",X"02",X"21",X"01",X"30",X"3A",X"04",X"30",X"87",X"5F",X"16",
+ X"00",X"19",X"36",X"01",X"C9",X"B7",X"C8",X"E6",X"3F",X"21",X"53",X"05",X"EF",X"B7",X"C8",X"57",
+ X"21",X"00",X"30",X"3A",X"04",X"30",X"4F",X"06",X"00",X"09",X"09",X"15",X"28",X"01",X"70",X"23",
+ X"70",X"C9",X"06",X"08",X"18",X"06",X"06",X"09",X"18",X"02",X"06",X"0A",X"0E",X"00",X"DF",X"C9",
+ X"06",X"08",X"18",X"06",X"06",X"09",X"18",X"02",X"06",X"0A",X"0E",X"00",X"E7",X"C9",X"01",X"00",
+ X"08",X"3A",X"04",X"30",X"B7",X"20",X"0C",X"DF",X"04",X"DF",X"04",X"DF",X"0E",X"3F",X"CD",X"2D",
+ X"03",X"AF",X"C9",X"E7",X"04",X"E7",X"04",X"E7",X"0E",X"3F",X"CD",X"39",X"03",X"AF",X"C9",X"CD",
+ X"56",X"02",X"3A",X"05",X"30",X"3D",X"21",X"EB",X"02",X"EF",X"C9",X"F7",X"02",X"00",X"03",X"09",
+ X"03",X"12",X"03",X"1B",X"03",X"24",X"03",X"CD",X"A2",X"02",X"0E",X"09",X"CD",X"2D",X"03",X"C9",
+ X"CD",X"A6",X"02",X"0E",X"12",X"CD",X"2D",X"03",X"C9",X"CD",X"AA",X"02",X"0E",X"24",X"CD",X"2D",
+ X"03",X"C9",X"CD",X"B0",X"02",X"0E",X"09",X"CD",X"39",X"03",X"C9",X"CD",X"B4",X"02",X"0E",X"12",
+ X"CD",X"39",X"03",X"C9",X"CD",X"B8",X"02",X"0E",X"24",X"CD",X"39",X"03",X"C9",X"3A",X"0E",X"30",
+ X"B1",X"32",X"0E",X"30",X"06",X"07",X"4F",X"DF",X"C9",X"3A",X"0F",X"30",X"B1",X"32",X"0F",X"30",
+ X"06",X"07",X"4F",X"E7",X"C9",X"06",X"06",X"3A",X"04",X"30",X"B7",X"20",X"02",X"DF",X"C9",X"E7",
+ X"C9",X"06",X"06",X"3A",X"04",X"30",X"B7",X"20",X"04",X"78",X"CF",X"4F",X"C9",X"78",X"D7",X"4F",
+ X"C9",X"3A",X"0E",X"30",X"A0",X"B1",X"32",X"0E",X"30",X"4F",X"06",X"07",X"DF",X"C9",X"3A",X"0F",
+ X"30",X"A0",X"B1",X"32",X"0F",X"30",X"4F",X"06",X"07",X"E7",X"C9",X"21",X"91",X"03",X"3D",X"87",
+ X"5F",X"16",X"00",X"19",X"5E",X"23",X"56",X"4B",X"42",X"3A",X"04",X"30",X"B7",X"28",X"D2",X"18",
+ X"DD",X"08",X"FE",X"10",X"FD",X"20",X"FB",X"21",X"AD",X"03",X"3D",X"87",X"5F",X"16",X"00",X"19",
+ X"5E",X"23",X"56",X"4B",X"42",X"3A",X"04",X"30",X"B7",X"28",X"B6",X"18",X"C1",X"01",X"F7",X"02",
+ X"EF",X"04",X"DF",X"21",X"C9",X"03",X"3D",X"87",X"5F",X"16",X"00",X"19",X"5E",X"23",X"56",X"4B",
+ X"42",X"3A",X"04",X"30",X"B7",X"28",X"9A",X"18",X"A5",X"00",X"F6",X"00",X"ED",X"00",X"DB",X"21",
+ X"E7",X"03",X"3D",X"87",X"5F",X"16",X"00",X"19",X"5E",X"23",X"56",X"4B",X"42",X"3A",X"04",X"30",
+ X"B7",X"CA",X"61",X"03",X"C3",X"6E",X"03",X"09",X"FF",X"12",X"FF",X"24",X"FF",X"C6",X"07",X"47",
+ X"3A",X"04",X"30",X"B7",X"20",X"02",X"DF",X"C9",X"E7",X"C9",X"C6",X"07",X"47",X"3A",X"04",X"30",
+ X"B7",X"78",X"20",X"02",X"CF",X"C9",X"D7",X"C9",X"3D",X"87",X"47",X"4D",X"3A",X"04",X"30",X"B7",
+ X"20",X"05",X"DF",X"4C",X"04",X"DF",X"C9",X"E7",X"4C",X"04",X"E7",X"C9",X"3D",X"87",X"67",X"3A",
+ X"04",X"30",X"B7",X"7C",X"20",X"07",X"CF",X"6F",X"7C",X"3C",X"CF",X"67",X"C9",X"D7",X"6F",X"7C",
+ X"3C",X"D7",X"67",X"C9",X"CD",X"56",X"02",X"7D",X"FE",X"04",X"D0",X"F5",X"21",X"83",X"04",X"3A",
+ X"05",X"30",X"3D",X"87",X"5F",X"16",X"00",X"19",X"5E",X"23",X"56",X"2A",X"0C",X"30",X"7B",X"A5",
+ X"6F",X"7A",X"A4",X"67",X"22",X"0C",X"30",X"F1",X"B7",X"20",X"02",X"77",X"C9",X"21",X"83",X"04",
+ X"87",X"87",X"4F",X"87",X"81",X"4F",X"06",X"00",X"09",X"3A",X"05",X"30",X"3D",X"87",X"5F",X"16",
+ X"00",X"19",X"5E",X"23",X"56",X"2A",X"0C",X"30",X"7B",X"B5",X"6F",X"7A",X"B4",X"67",X"22",X"0C",
+ X"30",X"77",X"C9",X"3F",X"FF",X"FF",X"FC",X"FF",X"F3",X"FC",X"FF",X"F3",X"FF",X"CF",X"FF",X"80",
+ X"00",X"00",X"02",X"00",X"08",X"02",X"00",X"08",X"00",X"20",X"00",X"40",X"00",X"00",X"01",X"00",
+ X"04",X"01",X"00",X"04",X"00",X"10",X"00",X"C0",X"00",X"00",X"03",X"00",X"0C",X"03",X"00",X"0C",
+ X"00",X"30",X"00",X"0E",X"10",X"C6",X"07",X"47",X"3A",X"04",X"30",X"B7",X"20",X"02",X"DF",X"C9",
+ X"E7",X"C9",X"06",X"0B",X"4D",X"3A",X"04",X"30",X"B7",X"20",X"05",X"DF",X"04",X"4C",X"DF",X"C9",
+ X"E7",X"04",X"4C",X"E7",X"C9",X"3A",X"04",X"30",X"B7",X"3E",X"0B",X"47",X"20",X"07",X"CF",X"6F",
+ X"78",X"3C",X"CF",X"67",X"C9",X"D7",X"6F",X"78",X"3C",X"D7",X"67",X"C9",X"4F",X"06",X"0D",X"3A",
+ X"04",X"30",X"B7",X"20",X"02",X"DF",X"C9",X"E7",X"C9",X"BE",X"02",X"B0",X"0F",X"7D",X"0F",X"8E",
+ X"0F",X"5A",X"10",X"F4",X"0F",X"DA",X"05",X"08",X"17",X"DA",X"05",X"82",X"1B",X"99",X"16",X"D2",
+ X"0F",X"2F",X"16",X"76",X"17",X"DA",X"05",X"27",X"1B",X"B6",X"1D",X"DA",X"05",X"9D",X"1C",X"DA",
+ X"05",X"DA",X"05",X"2A",X"1C",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"05",
+ X"10",X"16",X"10",X"9F",X"0F",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"27",X"10",X"38",X"10",X"49",
+ X"10",X"DA",X"05",X"C1",X"0F",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"DA",X"05",X"DA",
+ X"05",X"48",X"1D",X"00",X"00",X"BD",X"0F",X"8A",X"0F",X"9B",X"0F",X"67",X"10",X"01",X"10",X"DD",
+ X"05",X"3B",X"17",X"DD",X"05",X"BE",X"1B",X"CB",X"16",X"DF",X"0F",X"62",X"16",X"8E",X"17",X"DD",
+ X"05",X"44",X"1B",X"F0",X"1D",X"DD",X"05",X"D5",X"1C",X"DD",X"05",X"DD",X"05",X"55",X"1C",X"DD",
+ X"05",X"DD",X"05",X"DD",X"05",X"DD",X"05",X"DD",X"05",X"12",X"10",X"23",X"10",X"AC",X"0F",X"DD",
+ X"05",X"DD",X"05",X"DD",X"05",X"34",X"10",X"45",X"10",X"56",X"10",X"DD",X"05",X"CE",X"0F",X"DD",
+ X"05",X"DD",X"05",X"DD",X"05",X"DD",X"05",X"DD",X"05",X"DD",X"05",X"6F",X"1D",X"00",X"98",X"A0",
+ X"A8",X"D8",X"60",X"00",X"EC",X"00",X"B0",X"78",X"F0",X"C0",X"E8",X"00",X"B2",X"00",X"00",X"E0",
+ X"00",X"00",X"88",X"00",X"00",X"00",X"00",X"00",X"70",X"68",X"B8",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"D0",X"00",X"00",X"00",X"00",X"00",X"00",X"C8",X"3E",X"00",X"C9",X"3E",X"FF",X"C9",
+ X"DD",X"7E",X"00",X"FE",X"FF",X"C8",X"DD",X"36",X"09",X"01",X"CD",X"4C",X"06",X"AF",X"C9",X"DD",
+ X"7E",X"00",X"FE",X"FF",X"28",X"09",X"DD",X"36",X"09",X"02",X"CD",X"4C",X"06",X"AF",X"C9",X"0E",
+ X"00",X"3E",X"02",X"CD",X"ED",X"03",X"3E",X"FF",X"C9",X"DD",X"7E",X"00",X"FE",X"FF",X"28",X"09",
+ X"DD",X"36",X"09",X"03",X"CD",X"4C",X"06",X"AF",X"C9",X"0E",X"00",X"3E",X"03",X"CD",X"ED",X"03",
+ X"3E",X"FF",X"C9",X"DD",X"7E",X"0A",X"FE",X"FF",X"C8",X"DD",X"36",X"09",X"04",X"CD",X"72",X"07",
+ X"AF",X"C9",X"DD",X"7E",X"0A",X"FE",X"FF",X"C8",X"DD",X"36",X"09",X"05",X"CD",X"72",X"07",X"AF",
+ X"C9",X"DD",X"7E",X"00",X"FE",X"FF",X"C8",X"CD",X"3E",X"08",X"AF",X"C9",X"DD",X"35",X"01",X"C0",
+ X"3A",X"48",X"30",X"DD",X"77",X"01",X"DD",X"CB",X"00",X"46",X"C2",X"6F",X"06",X"DD",X"7E",X"07",
+ X"D6",X"01",X"FA",X"6F",X"06",X"DD",X"77",X"07",X"4F",X"DD",X"7E",X"09",X"CD",X"ED",X"03",X"DD",
+ X"35",X"00",X"C0",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"7E",X"47",X"E6",X"1F",X"CA",X"37",X"07",
+ X"FE",X"1F",X"C2",X"45",X"07",X"23",X"DD",X"75",X"02",X"DD",X"74",X"03",X"78",X"E6",X"E0",X"0F",
+ X"0F",X"0F",X"0F",X"4F",X"06",X"00",X"21",X"9F",X"06",X"09",X"5E",X"23",X"56",X"EB",X"E9",X"AF",
+ X"06",X"E5",X"06",X"07",X"07",X"FB",X"06",X"2A",X"07",X"2A",X"07",X"2A",X"07",X"2A",X"07",X"DD",
+ X"6E",X"02",X"DD",X"66",X"03",X"4E",X"CB",X"21",X"06",X"00",X"21",X"34",X"09",X"09",X"5E",X"23",
+ X"56",X"ED",X"53",X"44",X"30",X"DD",X"73",X"04",X"DD",X"72",X"05",X"DD",X"6E",X"02",X"DD",X"66",
+ X"03",X"4E",X"CB",X"21",X"06",X"00",X"21",X"60",X"09",X"09",X"5E",X"23",X"56",X"DD",X"73",X"0B",
+ X"DD",X"72",X"0C",X"18",X"35",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"4E",X"06",X"00",X"21",X"7C",
+ X"0A",X"09",X"7E",X"32",X"48",X"30",X"DD",X"77",X"01",X"18",X"1F",X"DD",X"6E",X"02",X"DD",X"66",
+ X"03",X"7E",X"DD",X"77",X"08",X"18",X"13",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"7E",X"DD",X"77",
+ X"06",X"DD",X"77",X"07",X"DD",X"77",X"0D",X"DD",X"77",X"0E",X"DD",X"6E",X"02",X"DD",X"66",X"03",
+ X"23",X"DD",X"75",X"02",X"DD",X"74",X"03",X"C3",X"73",X"06",X"DD",X"7E",X"09",X"0E",X"00",X"CD",
+ X"ED",X"03",X"DD",X"36",X"00",X"FF",X"C9",X"CD",X"02",X"09",X"DD",X"7E",X"09",X"0E",X"00",X"CD",
+ X"ED",X"03",X"C3",X"26",X"09",X"C5",X"CD",X"02",X"09",X"C1",X"78",X"E6",X"1F",X"3D",X"07",X"4F",
+ X"06",X"00",X"DD",X"6E",X"04",X"DD",X"66",X"05",X"09",X"5E",X"23",X"56",X"EB",X"DD",X"7E",X"09",
+ X"CD",X"08",X"04",X"DD",X"4E",X"06",X"DD",X"71",X"07",X"DD",X"7E",X"09",X"CD",X"ED",X"03",X"C3",
+ X"26",X"09",X"DD",X"35",X"0F",X"C0",X"3A",X"48",X"30",X"DD",X"77",X"0F",X"DD",X"CB",X"0A",X"46",
+ X"C2",X"A5",X"07",X"DD",X"7E",X"0E",X"D6",X"01",X"FA",X"A5",X"07",X"DD",X"77",X"0E",X"DD",X"7E",
+ X"09",X"FE",X"04",X"28",X"08",X"DD",X"4E",X"0E",X"3E",X"02",X"CD",X"ED",X"03",X"DD",X"4E",X"0E",
+ X"3E",X"03",X"CD",X"ED",X"03",X"DD",X"35",X"0A",X"C0",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"2B",
+ X"7E",X"47",X"E6",X"1F",X"28",X"1E",X"FE",X"1F",X"20",X"33",X"DD",X"7E",X"09",X"FE",X"04",X"28",
+ X"07",X"3E",X"02",X"0E",X"00",X"CD",X"ED",X"03",X"3E",X"03",X"0E",X"00",X"CD",X"ED",X"03",X"DD",
+ X"36",X"0A",X"FF",X"C9",X"CD",X"14",X"09",X"DD",X"7E",X"09",X"FE",X"04",X"28",X"07",X"3E",X"02",
+ X"0E",X"00",X"CD",X"ED",X"03",X"3E",X"03",X"0E",X"00",X"CD",X"ED",X"03",X"C9",X"C5",X"CD",X"14",
+ X"09",X"C1",X"78",X"E6",X"1F",X"3D",X"07",X"4F",X"06",X"00",X"DD",X"7E",X"09",X"FE",X"04",X"28",
+ X"12",X"DD",X"6E",X"04",X"DD",X"66",X"05",X"09",X"5E",X"23",X"56",X"EB",X"C5",X"3E",X"02",X"CD",
+ X"08",X"04",X"C1",X"DD",X"6E",X"0B",X"DD",X"66",X"0C",X"09",X"5E",X"23",X"56",X"EB",X"3E",X"03",
+ X"CD",X"08",X"04",X"DD",X"4E",X"0D",X"DD",X"71",X"0E",X"DD",X"7E",X"09",X"FE",X"04",X"28",X"05",
+ X"3E",X"02",X"CD",X"ED",X"03",X"3E",X"03",X"DD",X"4E",X"0D",X"CD",X"ED",X"03",X"C9",X"DD",X"35",
+ X"01",X"C0",X"3A",X"48",X"30",X"DD",X"77",X"01",X"DD",X"CB",X"00",X"46",X"C2",X"5A",X"08",X"DD",
+ X"7E",X"07",X"D6",X"01",X"FA",X"5A",X"08",X"DD",X"77",X"07",X"DD",X"35",X"00",X"C0",X"DD",X"6E",
+ X"02",X"DD",X"66",X"03",X"7E",X"47",X"E6",X"1F",X"CA",X"F0",X"08",X"FE",X"1F",X"C2",X"F6",X"08",
+ X"23",X"DD",X"75",X"02",X"DD",X"74",X"03",X"78",X"E6",X"E0",X"0F",X"0F",X"0F",X"0F",X"4F",X"06",
+ X"00",X"21",X"8A",X"08",X"09",X"5E",X"23",X"56",X"EB",X"E9",X"9A",X"08",X"B8",X"08",X"CE",X"08",
+ X"EB",X"08",X"EB",X"08",X"EB",X"08",X"EB",X"08",X"EB",X"08",X"DD",X"6E",X"02",X"DD",X"66",X"03",
+ X"4E",X"CB",X"21",X"06",X"00",X"21",X"34",X"09",X"09",X"5E",X"23",X"56",X"ED",X"53",X"44",X"30",
+ X"DD",X"73",X"04",X"DD",X"72",X"05",X"18",X"23",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"4E",X"06",
+ X"00",X"21",X"7C",X"0A",X"09",X"7E",X"32",X"48",X"30",X"DD",X"77",X"01",X"18",X"0D",X"DD",X"6E",
+ X"02",X"DD",X"66",X"03",X"7E",X"DD",X"77",X"06",X"DD",X"77",X"07",X"DD",X"6E",X"02",X"DD",X"66",
+ X"03",X"23",X"DD",X"75",X"02",X"DD",X"74",X"03",X"C3",X"5E",X"08",X"DD",X"36",X"00",X"FF",X"C9",
+ X"CD",X"02",X"09",X"C3",X"26",X"09",X"CD",X"02",X"09",X"DD",X"4E",X"06",X"DD",X"71",X"07",X"C3",
+ X"26",X"09",X"78",X"E6",X"E0",X"07",X"07",X"07",X"47",X"3E",X"01",X"18",X"01",X"07",X"10",X"FD",
+ X"DD",X"77",X"00",X"C9",X"78",X"E6",X"E0",X"07",X"07",X"07",X"47",X"3E",X"01",X"18",X"01",X"07",
+ X"10",X"FD",X"DD",X"77",X"0A",X"C9",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"23",X"DD",X"75",X"02",
+ X"DD",X"74",X"03",X"C9",X"8C",X"09",X"90",X"09",X"94",X"09",X"98",X"09",X"9C",X"09",X"A0",X"09",
+ X"A4",X"09",X"A8",X"09",X"AC",X"09",X"B0",X"09",X"B4",X"09",X"B8",X"09",X"BC",X"09",X"C0",X"09",
+ X"C4",X"09",X"C8",X"09",X"CC",X"09",X"D0",X"09",X"D4",X"09",X"D8",X"09",X"DC",X"09",X"E0",X"09",
+ X"04",X"0A",X"08",X"0A",X"0C",X"0A",X"10",X"0A",X"14",X"0A",X"18",X"0A",X"1C",X"0A",X"20",X"0A",
+ X"24",X"0A",X"28",X"0A",X"2C",X"0A",X"30",X"0A",X"34",X"0A",X"38",X"0A",X"3C",X"0A",X"40",X"0A",
+ X"44",X"0A",X"48",X"0A",X"4C",X"0A",X"50",X"0A",X"54",X"0A",X"58",X"0A",X"6B",X"08",X"F2",X"07",
+ X"80",X"07",X"14",X"07",X"AE",X"06",X"4E",X"06",X"F3",X"05",X"9E",X"05",X"4E",X"05",X"01",X"05",
+ X"B9",X"04",X"76",X"04",X"36",X"04",X"F9",X"03",X"C0",X"03",X"8A",X"03",X"57",X"03",X"27",X"03",
+ X"FA",X"02",X"CF",X"02",X"A7",X"02",X"81",X"02",X"5D",X"02",X"3B",X"02",X"1B",X"02",X"FD",X"01",
+ X"E0",X"01",X"C5",X"01",X"AC",X"01",X"94",X"01",X"7D",X"01",X"68",X"01",X"53",X"01",X"40",X"01",
+ X"2E",X"01",X"1D",X"01",X"0D",X"01",X"FE",X"00",X"F0",X"00",X"E3",X"00",X"D6",X"00",X"CA",X"00",
+ X"BE",X"00",X"B4",X"00",X"AA",X"00",X"A0",X"00",X"97",X"00",X"8F",X"00",X"87",X"00",X"7F",X"00",
+ X"78",X"00",X"71",X"00",X"6B",X"00",X"65",X"00",X"5F",X"00",X"5A",X"00",X"55",X"00",X"50",X"00",
+ X"4C",X"00",X"47",X"00",X"6A",X"08",X"F1",X"07",X"7F",X"07",X"15",X"07",X"AD",X"06",X"4D",X"06",
+ X"F2",X"05",X"9D",X"05",X"4D",X"05",X"00",X"05",X"B8",X"04",X"75",X"04",X"35",X"04",X"F8",X"03",
+ X"BF",X"03",X"89",X"03",X"56",X"03",X"26",X"03",X"F9",X"02",X"CE",X"02",X"A6",X"02",X"80",X"02",
+ X"5C",X"02",X"3A",X"02",X"1A",X"02",X"FC",X"01",X"DF",X"01",X"C4",X"01",X"AB",X"01",X"93",X"01",
+ X"7C",X"01",X"67",X"01",X"52",X"01",X"3F",X"01",X"2D",X"01",X"1C",X"01",X"0C",X"01",X"FD",X"00",
+ X"EF",X"00",X"E2",X"00",X"D5",X"00",X"C9",X"00",X"BD",X"00",X"B3",X"00",X"A9",X"00",X"9F",X"00",
+ X"96",X"00",X"8E",X"00",X"86",X"00",X"7E",X"00",X"77",X"00",X"70",X"00",X"6A",X"00",X"64",X"00",
+ X"5E",X"00",X"59",X"00",X"54",X"00",X"4F",X"00",X"4B",X"00",X"46",X"00",X"46",X"3F",X"38",X"31",
+ X"2B",X"26",X"21",X"1C",X"18",X"15",X"12",X"0F",X"0D",X"0C",X"0B",X"0A",X"3A",X"04",X"30",X"FE",
+ X"00",X"C2",X"F5",X"0D",X"3E",X"01",X"2E",X"00",X"CD",X"34",X"04",X"3E",X"02",X"2E",X"00",X"CD",
+ X"34",X"04",X"3E",X"03",X"2E",X"00",X"CD",X"34",X"04",X"3E",X"01",X"CD",X"7B",X"03",X"3E",X"02",
+ X"CD",X"7B",X"03",X"3E",X"03",X"CD",X"7B",X"03",X"21",X"EA",X"0A",X"11",X"14",X"30",X"01",X"30",
+ X"00",X"ED",X"B0",X"3A",X"12",X"30",X"07",X"4F",X"07",X"81",X"4F",X"06",X"00",X"21",X"F3",X"0E",
+ X"09",X"11",X"16",X"30",X"CD",X"E0",X"0A",X"11",X"26",X"30",X"CD",X"E0",X"0A",X"11",X"36",X"30",
+ X"7E",X"12",X"CD",X"E7",X"0A",X"7E",X"12",X"23",X"13",X"C9",X"01",X"01",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3A",X"04",X"30",X"FE",X"00",X"C2",
+ X"7B",X"0E",X"DD",X"21",X"14",X"30",X"CD",X"E0",X"05",X"DD",X"7E",X"08",X"FE",X"01",X"28",X"28",
+ X"FE",X"02",X"28",X"3B",X"DD",X"21",X"24",X"30",X"CD",X"EF",X"05",X"DD",X"21",X"34",X"30",X"CD",
+ X"09",X"06",X"3C",X"28",X"02",X"AF",X"C9",X"DD",X"21",X"14",X"30",X"3E",X"FF",X"DD",X"BE",X"00",
+ X"20",X"04",X"DD",X"BE",X"10",X"C8",X"AF",X"C9",X"DD",X"21",X"14",X"30",X"CD",X"32",X"06",X"DD",
+ X"21",X"34",X"30",X"CD",X"41",X"06",X"DD",X"21",X"24",X"30",X"CD",X"41",X"06",X"18",X"15",X"DD",
+ X"21",X"14",X"30",X"CD",X"23",X"06",X"DD",X"21",X"24",X"30",X"CD",X"EF",X"05",X"DD",X"21",X"34",
+ X"30",X"CD",X"41",X"06",X"DD",X"21",X"14",X"30",X"3E",X"FF",X"DD",X"BE",X"00",X"20",X"09",X"DD",
+ X"BE",X"0A",X"20",X"04",X"DD",X"BE",X"10",X"C8",X"AF",X"C9",X"DD",X"7E",X"00",X"FE",X"FF",X"C8",
+ X"DD",X"36",X"09",X"01",X"CD",X"06",X"0C",X"AF",X"C9",X"DD",X"7E",X"00",X"FE",X"FF",X"28",X"09",
+ X"DD",X"36",X"09",X"02",X"CD",X"06",X"0C",X"AF",X"C9",X"0E",X"00",X"3E",X"02",X"CD",X"ED",X"03",
+ X"3E",X"FF",X"C9",X"DD",X"7E",X"00",X"FE",X"FF",X"28",X"09",X"DD",X"36",X"09",X"03",X"CD",X"06",
+ X"0C",X"AF",X"C9",X"0E",X"00",X"3E",X"03",X"CD",X"ED",X"03",X"3E",X"FF",X"C9",X"DD",X"7E",X"0A",
+ X"FE",X"FF",X"C8",X"DD",X"36",X"09",X"04",X"CD",X"E4",X"0C",X"AF",X"C9",X"DD",X"7E",X"0A",X"FE",
+ X"FF",X"C8",X"DD",X"36",X"09",X"05",X"CD",X"E4",X"0C",X"AF",X"C9",X"DD",X"7E",X"00",X"FE",X"FF",
+ X"C8",X"CD",X"48",X"0D",X"AF",X"C9",X"DD",X"35",X"01",X"C0",X"3A",X"7E",X"30",X"DD",X"77",X"01",
+ X"DD",X"CB",X"00",X"46",X"C2",X"29",X"0C",X"DD",X"7E",X"07",X"D6",X"01",X"FA",X"6F",X"06",X"DD",
+ X"77",X"07",X"4F",X"DD",X"7E",X"09",X"CD",X"ED",X"03",X"DD",X"35",X"00",X"C0",X"DD",X"6E",X"02",
+ X"DD",X"66",X"03",X"7E",X"47",X"E6",X"1F",X"CA",X"37",X"07",X"FE",X"1F",X"C2",X"45",X"07",X"23",
+ X"DD",X"75",X"02",X"DD",X"74",X"03",X"78",X"E6",X"E0",X"0F",X"0F",X"0F",X"0F",X"4F",X"06",X"00",
+ X"21",X"59",X"0C",X"09",X"5E",X"23",X"56",X"EB",X"E9",X"69",X"0C",X"9F",X"0C",X"C1",X"0C",X"B5",
+ X"0C",X"2A",X"07",X"2A",X"07",X"2A",X"07",X"2A",X"07",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"4E",
+ X"CB",X"21",X"06",X"00",X"21",X"34",X"09",X"09",X"5E",X"23",X"56",X"ED",X"53",X"7A",X"30",X"DD",
+ X"73",X"04",X"DD",X"72",X"05",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"4E",X"CB",X"21",X"06",X"00",
+ X"21",X"60",X"09",X"09",X"5E",X"23",X"56",X"DD",X"73",X"0B",X"DD",X"72",X"0C",X"18",X"35",X"DD",
+ X"6E",X"02",X"DD",X"66",X"03",X"4E",X"06",X"00",X"21",X"7C",X"0A",X"09",X"7E",X"32",X"7E",X"30",
+ X"DD",X"77",X"01",X"18",X"1F",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"7E",X"DD",X"77",X"08",X"18",
+ X"13",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"7E",X"DD",X"77",X"06",X"DD",X"77",X"07",X"DD",X"77",
+ X"0D",X"DD",X"77",X"0E",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"23",X"DD",X"75",X"02",X"DD",X"74",
+ X"03",X"C3",X"2D",X"0C",X"DD",X"35",X"0F",X"C0",X"3A",X"7E",X"30",X"DD",X"77",X"0F",X"DD",X"CB",
+ X"0A",X"46",X"C2",X"17",X"0D",X"DD",X"7E",X"0E",X"D6",X"01",X"FA",X"17",X"0D",X"DD",X"77",X"0E",
+ X"DD",X"7E",X"09",X"FE",X"04",X"28",X"08",X"DD",X"4E",X"0E",X"3E",X"02",X"CD",X"ED",X"03",X"DD",
+ X"4E",X"0E",X"3E",X"03",X"CD",X"ED",X"03",X"DD",X"35",X"0A",X"C0",X"DD",X"6E",X"02",X"DD",X"66",
+ X"03",X"2B",X"7E",X"47",X"E6",X"1F",X"CA",X"D4",X"07",X"FE",X"1F",X"C2",X"ED",X"07",X"DD",X"7E",
+ X"09",X"FE",X"04",X"28",X"07",X"3E",X"02",X"0E",X"00",X"CD",X"ED",X"03",X"3E",X"03",X"0E",X"00",
+ X"CD",X"ED",X"03",X"DD",X"36",X"0A",X"FF",X"C9",X"DD",X"35",X"01",X"C0",X"3A",X"7E",X"30",X"DD",
+ X"77",X"01",X"DD",X"CB",X"00",X"46",X"C2",X"64",X"0D",X"DD",X"7E",X"07",X"D6",X"01",X"FA",X"64",
+ X"0D",X"DD",X"77",X"07",X"DD",X"35",X"00",X"C0",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"7E",X"47",
+ X"E6",X"1F",X"CA",X"F0",X"08",X"FE",X"1F",X"C2",X"F6",X"08",X"23",X"DD",X"75",X"02",X"DD",X"74",
+ X"03",X"78",X"E6",X"E0",X"0F",X"0F",X"0F",X"0F",X"4F",X"06",X"00",X"21",X"94",X"0D",X"09",X"5E",
+ X"23",X"56",X"EB",X"E9",X"A4",X"0D",X"C2",X"0D",X"D8",X"0D",X"EB",X"08",X"EB",X"08",X"EB",X"08",
+ X"EB",X"08",X"EB",X"08",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"4E",X"CB",X"21",X"06",X"00",X"21",
+ X"34",X"09",X"09",X"5E",X"23",X"56",X"ED",X"53",X"7A",X"30",X"DD",X"73",X"04",X"DD",X"72",X"05",
+ X"18",X"23",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"4E",X"06",X"00",X"21",X"7C",X"0A",X"09",X"7E",
+ X"32",X"7E",X"30",X"DD",X"77",X"01",X"18",X"0D",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"7E",X"DD",
+ X"77",X"06",X"DD",X"77",X"07",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"23",X"DD",X"75",X"02",X"DD",
+ X"74",X"03",X"C3",X"68",X"0D",X"3E",X"01",X"2E",X"00",X"CD",X"34",X"04",X"3E",X"02",X"2E",X"00",
+ X"CD",X"34",X"04",X"3E",X"03",X"2E",X"00",X"CD",X"34",X"04",X"3E",X"01",X"CD",X"7B",X"03",X"3E",
+ X"02",X"CD",X"7B",X"03",X"3E",X"03",X"CD",X"7B",X"03",X"21",X"4B",X"0E",X"11",X"4A",X"30",X"01",
+ X"30",X"00",X"ED",X"B0",X"3A",X"80",X"30",X"07",X"4F",X"07",X"81",X"4F",X"06",X"00",X"21",X"F3",
+ X"0E",X"09",X"11",X"4C",X"30",X"CD",X"41",X"0E",X"11",X"5C",X"30",X"CD",X"41",X"0E",X"11",X"6C",
+ X"30",X"7E",X"12",X"CD",X"48",X"0E",X"7E",X"12",X"23",X"13",X"C9",X"01",X"01",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"DD",X"21",X"4A",X"30",X"CD",
+ X"9A",X"0B",X"DD",X"7E",X"08",X"FE",X"01",X"28",X"28",X"FE",X"02",X"28",X"3B",X"DD",X"21",X"5A",
+ X"30",X"CD",X"A9",X"0B",X"DD",X"21",X"6A",X"30",X"CD",X"C3",X"0B",X"3C",X"28",X"02",X"AF",X"C9",
+ X"DD",X"21",X"4A",X"30",X"3E",X"FF",X"DD",X"BE",X"00",X"20",X"04",X"DD",X"BE",X"10",X"C8",X"AF",
+ X"C9",X"DD",X"21",X"4A",X"30",X"CD",X"EC",X"0B",X"DD",X"21",X"6A",X"30",X"CD",X"FB",X"0B",X"DD",
+ X"21",X"5A",X"30",X"CD",X"FB",X"0B",X"18",X"15",X"DD",X"21",X"4A",X"30",X"CD",X"DD",X"0B",X"DD",
+ X"21",X"5A",X"30",X"CD",X"A9",X"0B",X"DD",X"21",X"6A",X"30",X"CD",X"FB",X"0B",X"DD",X"21",X"4A",
+ X"30",X"3E",X"FF",X"DD",X"BE",X"00",X"20",X"09",X"DD",X"BE",X"0A",X"20",X"04",X"DD",X"BE",X"10",
+ X"C8",X"AF",X"C9",X"6B",X"10",X"81",X"10",X"95",X"10",X"9D",X"10",X"CD",X"10",X"FB",X"10",X"BD",
+ X"13",X"0F",X"14",X"5F",X"14",X"23",X"11",X"34",X"11",X"43",X"11",X"6B",X"10",X"81",X"10",X"95",
+ X"10",X"52",X"11",X"EC",X"11",X"24",X"12",X"5C",X"12",X"AE",X"12",X"FE",X"12",X"6B",X"10",X"81",
+ X"10",X"95",X"10",X"BF",X"14",X"D1",X"14",X"0A",X"15",X"6B",X"10",X"81",X"10",X"95",X"10",X"FC",
+ X"10",X"11",X"11",X"22",X"11",X"6B",X"10",X"81",X"10",X"95",X"10",X"60",X"14",X"90",X"14",X"BE",
+ X"14",X"FF",X"12",X"15",X"13",X"29",X"13",X"31",X"13",X"40",X"13",X"49",X"13",X"4A",X"13",X"59",
+ X"13",X"62",X"13",X"6B",X"10",X"81",X"10",X"95",X"10",X"6B",X"10",X"81",X"10",X"95",X"10",X"63",
+ X"13",X"7F",X"13",X"80",X"13",X"81",X"13",X"9D",X"13",X"9E",X"13",X"9F",X"13",X"BB",X"13",X"BC",
+ X"13",X"6B",X"10",X"81",X"10",X"95",X"10",X"6B",X"10",X"81",X"10",X"95",X"10",X"3E",X"00",X"32",
+ X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",X"0B",X"C9",X"3E",X"01",
+ X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",X"0B",X"C9",X"3E",
+ X"08",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",X"0B",X"C9",
+ X"3E",X"03",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",X"0B",
+ X"C9",X"3E",X"0C",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",X"1A",
+ X"0B",X"C9",X"3E",X"05",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",X"CD",
+ X"1A",X"0B",X"C9",X"3E",X"06",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF",X"C9",
+ X"CD",X"1A",X"0B",X"C9",X"3E",X"0A",X"32",X"12",X"30",X"32",X"80",X"30",X"CD",X"8C",X"0A",X"AF");
+begin
+process(clk)
+begin
+ if rising_edge(clk) then
+ data <= rom_data(to_integer(unsigned(addr)));
+ end if;
+end process;
+end architecture;
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sprite_color_lut.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sprite_color_lut.vhd
new file mode 100644
index 00000000..75234eeb
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sprite_color_lut.vhd
@@ -0,0 +1,38 @@
+library ieee;
+use ieee.std_logic_1164.all,ieee.numeric_std.all;
+
+entity time_pilot_sprite_color_lut is
+port (
+ clk : in std_logic;
+ addr : in std_logic_vector(7 downto 0);
+ data : out std_logic_vector(3 downto 0)
+);
+end entity;
+
+architecture prom of time_pilot_sprite_color_lut is
+ type rom is array(0 to 255) of std_logic_vector(3 downto 0);
+ signal rom_data: rom := (
+ "0000","1101","1111","0101","0000","1110","0110","1010","0000","0100","1001","0001","0000","0100","1001","0001",
+ "0000","0100","1001","0001","0000","1100","0101","0001","0000","1110","0101","0001","0000","1101","0101","0001",
+ "0000","1011","0101","0001","0000","0001","1111","0100","0000","0001","1111","0100","0000","0001","1111","0100",
+ "0000","1000","0111","1100","0000","0001","1111","0100","0000","0001","1111","0100","0000","1010","0101","0001",
+ "0000","0101","1001","0001","0000","1011","1101","0101","0000","0110","0101","0001","0000","1010","0011","0001",
+ "0000","1100","0011","0001","0000","1110","0011","0001","0000","1101","0011","0001","0000","1011","0011","0001",
+ "0000","1110","1100","1111","0000","0101","0011","0001","0000","1110","0110","1001","0000","0100","1001","0101",
+ "0000","1001","1110","0110","0000","0100","1110","0101","0000","1001","1110","0101","0000","1011","0101","0001",
+ "0000","1100","0111","0001","0000","0101","1111","1001","0000","0101","0100","1001","0000","1010","0011","0001",
+ "0000","1100","0010","0011","0000","1100","0110","0011","0000","1100","0110","1001","0000","1100","0110","0001",
+ "0000","1110","0110","1100","0000","1100","0010","1111","0000","1100","0010","1001","0000","1100","0010","0001",
+ "0000","0001","1000","1111","0000","1110","0110","1111","0000","1001","1010","1111","0000","0101","0110","1111",
+ "0000","1011","1001","0101","0000","1010","0110","1100","0000","1010","0110","1001","0000","1010","0010","1001",
+ "0000","0110","0001","1111","0000","0100","0001","1111","0000","1010","0011","0001","0000","1010","0010","1100",
+ "0000","0101","1001","0001","0000","1010","0010","0001","0000","1110","0010","1001","0000","1110","0010","1100",
+ "0000","0001","0100","1111","0000","0001","0100","1111","0000","1111","1111","1111","0000","0000","0000","0000");
+begin
+process(clk)
+begin
+ if rising_edge(clk) then
+ data <= rom_data(to_integer(unsigned(addr)));
+ end if;
+end process;
+end architecture;
\ No newline at end of file
diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sprite_grphx.vhd b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sprite_grphx.vhd
new file mode 100644
index 00000000..2ed0ec86
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/time_pilot_sprite_grphx.vhd
@@ -0,0 +1,1046 @@
+library ieee;
+use ieee.std_logic_1164.all,ieee.numeric_std.all;
+
+entity time_pilot_sprite_grphx is
+port (
+ clk : in std_logic;
+ addr : in std_logic_vector(13 downto 0);
+ data : out std_logic_vector(7 downto 0)
+);
+end entity;
+
+architecture prom of time_pilot_sprite_grphx is
+ type rom is array(0 to 16383) of std_logic_vector(7 downto 0);
+ signal rom_data: rom := (
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"91",X"23",
+ X"00",X"00",X"00",X"00",X"40",X"10",X"88",X"5C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"23",X"51",X"00",X"90",X"00",X"00",X"00",X"00",
+ X"4C",X"E8",X"40",X"00",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"80",X"11",X"A3",
+ X"00",X"00",X"00",X"00",X"80",X"10",X"88",X"4C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"23",X"51",X"80",X"10",X"00",X"00",X"00",X"00",
+ X"4C",X"A8",X"00",X"20",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"10",X"00",X"00",X"10",X"00",X"00",X"40",X"00",X"20",X"00",X"11",X"23",
+ X"00",X"00",X"00",X"40",X"00",X"20",X"88",X"4C",X"00",X"00",X"00",X"00",X"40",X"00",X"00",X"40",
+ X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"00",X"23",X"11",X"80",X"00",X"10",X"00",X"00",X"00",
+ X"4C",X"A8",X"00",X"00",X"20",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"20",X"00",X"00",X"20",X"00",X"00",X"00",X"00",X"00",X"40",X"11",X"23",
+ X"00",X"00",X"00",X"80",X"00",X"20",X"88",X"5C",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"23",X"51",X"00",X"80",X"10",X"40",X"00",X"00",
+ X"4C",X"A8",X"80",X"20",X"00",X"20",X"00",X"00",X"00",X"40",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"66",X"57",X"23",X"11",X"11",X"00",X"00",X"11",X"11",X"23",X"EF",X"2F",X"0F",X"8F",
+ X"88",X"4C",X"4C",X"4C",X"2E",X"3F",X"0F",X"0F",X"00",X"00",X"00",X"33",X"EF",X"1F",X"2E",X"4C",
+ X"00",X"10",X"70",X"10",X"00",X"00",X"11",X"11",X"CF",X"E3",X"C7",X"C7",X"8F",X"9F",X"2E",X"4C",
+ X"0F",X"1F",X"1F",X"0F",X"8F",X"67",X"11",X"00",X"C8",X"E0",X"C0",X"88",X"4C",X"3F",X"9F",X"77",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"12",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"13",X"11",X"20",X"22",X"00",X"00",X"00",X"11",
+ X"48",X"4C",X"00",X"80",X"80",X"00",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"84",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"12",X"10",X"11",X"00",X"20",X"22",X"00",X"22",
+ X"0C",X"08",X"00",X"40",X"44",X"00",X"00",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"84",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"01",X"00",X"10",X"11",X"00",X"11",X"22",
+ X"84",X"88",X"00",X"00",X"00",X"00",X"40",X"44",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"12",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"21",X"23",X"00",X"00",X"00",X"10",X"00",X"11",
+ X"C0",X"80",X"88",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"30",X"40",X"40",X"30",X"00",X"00",X"30",X"00",X"E0",X"10",X"10",X"E0",X"00",X"00",X"E0",
+ X"00",X"00",X"02",X"02",X"03",X"00",X"02",X"03",X"00",X"00",X"0E",X"0A",X"0A",X"00",X"00",X"0E",
+ X"40",X"40",X"30",X"00",X"00",X"70",X"20",X"00",X"10",X"10",X"E0",X"00",X"10",X"F0",X"10",X"00",
+ X"02",X"00",X"03",X"02",X"03",X"00",X"00",X"00",X"00",X"00",X"08",X"08",X"0E",X"00",X"00",X"00",
+ X"00",X"30",X"40",X"40",X"30",X"00",X"00",X"30",X"00",X"E0",X"10",X"10",X"E0",X"00",X"00",X"E0",
+ X"00",X"00",X"02",X"02",X"03",X"00",X"02",X"03",X"00",X"00",X"0E",X"0A",X"0A",X"00",X"00",X"0E",
+ X"40",X"40",X"30",X"00",X"40",X"40",X"70",X"00",X"10",X"10",X"E0",X"00",X"F0",X"90",X"90",X"00",
+ X"02",X"00",X"03",X"02",X"03",X"00",X"00",X"00",X"00",X"00",X"08",X"08",X"0E",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"C9",X"33",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"84",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"54",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"83",X"32",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0C",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"BA",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"74",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"C8",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"81",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"84",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"55",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"83",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"C8",X"00",X"00",X"00",X"00",X"00",X"00",X"32",X"01",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"84",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"A8",X"00",X"00",X"00",X"00",X"00",X"00",X"32",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"84",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FC",X"10",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"0C",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"74",X"F8",X"F8",
+ X"00",X"00",X"00",X"00",X"CC",X"E2",X"F1",X"F1",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"F8",X"F8",X"74",X"33",X"00",X"00",X"00",X"00",
+ X"F1",X"F1",X"E2",X"CC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"77",X"FF",X"FF",
+ X"00",X"00",X"00",X"00",X"CC",X"EE",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"77",X"33",X"00",X"00",X"00",X"00",
+ X"FF",X"FF",X"EE",X"CC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"03",X"03",X"03",X"03",
+ X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"03",X"07",X"07",X"07",X"07",X"07",
+ X"80",X"80",X"80",X"C0",X"C0",X"C0",X"C0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"01",X"01",X"01",X"01",X"01",X"01",X"07",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"0C",X"4A",X"4B",X"69",X"E1",X"E1",X"E1",X"E1",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"E1",X"E1",X"E1",X"C3",X"C3",X"C3",X"4B",X"4B",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"03",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"7F",X"7F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"CF",X"CF",X"0F",X"0F",X"0F",X"08",X"0E",X"0E",X"0E",X"0E",X"0E",X"0E",X"0E",
+ X"0F",X"0F",X"3F",X"7F",X"7F",X"7F",X"3F",X"0F",X"0F",X"0F",X"8F",X"CF",X"CF",X"CF",X"8F",X"0F",
+ X"0F",X"0F",X"3C",X"78",X"78",X"78",X"3C",X"0F",X"0E",X"0E",X"86",X"C2",X"C2",X"C2",X"86",X"0E",
+ X"0F",X"0F",X"0F",X"0F",X"3C",X"3C",X"3C",X"3C",X"0F",X"0F",X"0F",X"0F",X"F0",X"F0",X"F0",X"F0",
+ X"0F",X"0F",X"0F",X"0F",X"F0",X"F0",X"F0",X"F0",X"0E",X"0E",X"0E",X"0E",X"86",X"86",X"86",X"86",
+ X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",
+ X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"86",X"86",X"86",X"86",X"86",X"86",X"86",X"86",
+ X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",
+ X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"86",X"86",X"86",X"86",X"86",X"86",X"86",X"86",
+ X"3C",X"1E",X"0F",X"0F",X"0F",X"0F",X"0F",X"03",X"F0",X"F0",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",
+ X"F0",X"F0",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"86",X"0E",X"0E",X"0E",X"0E",X"0E",X"0E",X"08",
+ X"03",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"7F",X"7F",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"CF",X"CF",X"0F",X"0F",X"0F",X"08",X"0E",X"0E",X"0E",X"0E",X"0E",X"0E",X"0E",
+ X"0F",X"0F",X"3C",X"78",X"78",X"78",X"3C",X"0F",X"0F",X"0F",X"87",X"C3",X"C3",X"C3",X"87",X"0F",
+ X"0F",X"0F",X"3F",X"7F",X"7F",X"7F",X"3F",X"0F",X"0E",X"0E",X"8E",X"CE",X"CE",X"CE",X"8E",X"0E",
+ X"03",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"78",X"78",X"0F",X"0F",X"0F",
+ X"0F",X"0F",X"0F",X"C3",X"C3",X"0F",X"0F",X"0F",X"08",X"0E",X"0E",X"0E",X"0E",X"0E",X"0E",X"0E",
+ X"0F",X"0F",X"3F",X"7F",X"7F",X"7F",X"3F",X"0F",X"0F",X"0F",X"8F",X"CF",X"CF",X"CF",X"8F",X"0F",
+ X"0F",X"0F",X"3F",X"7F",X"7F",X"7F",X"3F",X"0F",X"0E",X"0E",X"8E",X"CE",X"CE",X"CE",X"8E",X"0E",
+ X"00",X"00",X"00",X"00",X"03",X"16",X"BC",X"F8",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"7F",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0C",X"86",X"C3",X"E1",
+ X"E9",X"E9",X"E9",X"E9",X"E9",X"F8",X"F8",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"11",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"E9",X"E9",X"E9",X"E9",X"E9",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"E1",X"E1",X"EF",
+ X"00",X"00",X"00",X"00",X"03",X"16",X"BC",X"F8",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"E9",X"E9",X"E9",X"E9",X"F8",X"FC",X"76",X"33",X"08",X"00",X"00",X"08",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"8F",X"F8",X"F8",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",
+ X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"8F",X"F8",X"F8",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"01",X"06",
+ X"00",X"00",X"0F",X"F0",X"F0",X"F8",X"F1",X"F7",X"00",X"00",X"0F",X"E1",X"E1",X"F7",X"CC",X"00",
+ X"01",X"11",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"78",X"F8",X"76",X"11",X"0F",X"F0",X"F0",X"FF",
+ X"84",X"84",X"87",X"E1",X"78",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"0C",X"87",X"E1",X"E1",X"FF",
+ X"00",X"00",X"00",X"00",X"8F",X"E9",X"E9",X"E9",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"23",
+ X"E9",X"E9",X"E9",X"E9",X"E9",X"F8",X"F8",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"32",X"32",X"32",X"32",X"3E",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"8F",X"E9",X"E9",X"E9",
+ X"84",X"84",X"84",X"84",X"87",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"E9",X"E9",X"E9",X"E9",X"E9",X"E1",X"E1",X"FF",
+ X"00",X"00",X"00",X"00",X"03",X"16",X"3C",X"78",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0C",X"86",X"C3",X"F1",
+ X"79",X"69",X"69",X"69",X"69",X"78",X"78",X"FF",X"88",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"11",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"F8",X"F8",X"F9",X"E9",X"E9",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"03",X"16",X"3C",X"79",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"E1",X"E1",X"FF",
+ X"F3",X"E6",X"CC",X"08",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"E1",X"E1",X"FF",
+ X"00",X"00",X"00",X"00",X"03",X"16",X"BC",X"F8",X"00",X"00",X"00",X"00",X"0C",X"84",X"84",X"CC",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"22",X"32",
+ X"E9",X"E9",X"E9",X"E9",X"F8",X"FC",X"76",X"33",X"08",X"00",X"00",X"08",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"32",X"32",X"32",X"16",X"3C",X"F0",X"F1",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"78",X"F0",X"F3",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0C",X"86",X"C3",X"E1",
+ X"E6",X"C4",X"C4",X"C4",X"C4",X"CC",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"00",X"00",X"01",X"23",X"32",X"32",X"33",X"E9",X"E9",X"E9",X"69",X"E1",X"C3",X"86",X"CC",
+ X"00",X"00",X"00",X"00",X"8F",X"F8",X"F8",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"8F",X"F8",X"F8",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0C",X"86",X"C3",X"E1",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"11",X"00",X"00",X"01",X"0F",X"F0",X"F0",X"FF",X"E9",X"E9",X"E9",X"E9",X"E1",X"F3",X"E6",X"CC",
+ X"00",X"00",X"00",X"00",X"03",X"16",X"BC",X"F8",X"00",X"00",X"00",X"00",X"0C",X"84",X"84",X"CC",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"E9",X"E9",X"E9",X"E9",X"F8",X"FC",X"76",X"33",X"08",X"00",X"00",X"08",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"8F",X"F8",X"F8",X"E9",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0C",X"86",X"C3",X"E1",
+ X"E9",X"FF",X"00",X"00",X"0F",X"F0",X"F0",X"FF",X"00",X"00",X"00",X"00",X"0F",X"F0",X"F0",X"FF",
+ X"11",X"00",X"00",X"11",X"0F",X"F0",X"F0",X"FF",X"E9",X"E9",X"E9",X"E9",X"E1",X"F3",X"E6",X"CC",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"90",X"90",X"B0",X"A1",X"93",X"57",X"13",
+ X"88",X"CC",X"5D",X"1D",X"3F",X"1D",X"9D",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"13",X"01",X"01",X"11",X"11",X"01",X"23",X"33",
+ X"5D",X"5D",X"0C",X"08",X"08",X"88",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"90",X"90",X"B0",X"A1",X"57",X"13",
+ X"00",X"88",X"DD",X"DD",X"7F",X"1D",X"1D",X"BF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"01",X"01",X"11",X"11",X"23",X"33",X"00",
+ X"DD",X"1D",X"08",X"08",X"88",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"90",X"90",X"B0",X"47",X"13",
+ X"00",X"00",X"88",X"DD",X"DD",X"7F",X"1D",X"BF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"01",X"01",X"11",X"23",X"33",X"00",X"00",
+ X"9D",X"DD",X"08",X"08",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"90",X"B0",X"B0",X"56",X"03",
+ X"00",X"00",X"88",X"CC",X"DD",X"FF",X"5D",X"3F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"01",X"01",X"33",X"00",X"00",X"00",X"00",
+ X"9D",X"CC",X"08",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"80",X"90",X"B0",X"74",X"30",
+ X"00",X"00",X"00",X"1D",X"6E",X"4E",X"CE",X"4E",X"00",X"00",X"00",X"88",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"AE",X"1D",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"43",X"E1",X"70",X"70",X"21",X"43",
+ X"00",X"10",X"C3",X"2D",X"7A",X"7C",X"F8",X"E1",X"00",X"80",X"C0",X"48",X"68",X"2C",X"48",X"48",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"43",X"2D",X"F0",X"F0",X"70",X"21",X"00",X"00",
+ X"E9",X"6D",X"5F",X"3C",X"5A",X"69",X"68",X"40",X"C8",X"E8",X"E0",X"C0",X"C0",X"C0",X"00",X"00",
+ X"00",X"10",X"10",X"30",X"03",X"61",X"70",X"70",X"40",X"E0",X"E1",X"C3",X"C3",X"3E",X"B6",X"1F",
+ X"40",X"F0",X"F0",X"87",X"3F",X"F1",X"E1",X"E1",X"00",X"00",X"80",X"68",X"2C",X"4E",X"F8",X"F8",
+ X"70",X"21",X"00",X"00",X"00",X"00",X"00",X"00",X"4B",X"C3",X"E1",X"F0",X"F0",X"70",X"00",X"00",
+ X"E9",X"F0",X"69",X"69",X"69",X"00",X"00",X"00",X"48",X"2C",X"4A",X"E0",X"80",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"01",X"10",X"30",X"87",X"E1",
+ X"00",X"30",X"07",X"F3",X"F0",X"E1",X"E9",X"E5",X"00",X"00",X"08",X"68",X"8E",X"48",X"C0",X"68",
+ X"10",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"E1",X"C3",X"D2",X"30",X"10",X"10",X"00",X"00",
+ X"3F",X"87",X"C3",X"C3",X"96",X"B4",X"78",X"00",X"68",X"68",X"E8",X"E8",X"C0",X"C0",X"80",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"30",X"21",X"13",X"57",X"93",
+ X"88",X"CC",X"5D",X"1D",X"3F",X"1D",X"9D",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"93",X"81",X"81",X"91",X"91",X"01",X"23",X"33",
+ X"5D",X"5D",X"0C",X"08",X"08",X"88",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"30",X"21",X"57",X"93",
+ X"00",X"88",X"DD",X"DD",X"7F",X"1D",X"1D",X"BF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"91",X"81",X"81",X"91",X"91",X"23",X"33",X"00",
+ X"DD",X"1D",X"08",X"08",X"88",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"30",X"47",X"93",
+ X"00",X"00",X"88",X"DD",X"DD",X"7F",X"1D",X"BF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"91",X"81",X"81",X"91",X"A3",X"33",X"00",X"00",
+ X"9D",X"DD",X"08",X"08",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"30",X"30",X"56",X"83",
+ X"00",X"00",X"88",X"CC",X"DD",X"FF",X"5D",X"3F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"91",X"81",X"81",X"B3",X"80",X"00",X"00",X"00",
+ X"9D",X"CC",X"08",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"30",X"74",X"B0",
+ X"00",X"00",X"00",X"1D",X"6E",X"4E",X"CE",X"4E",X"00",X"00",X"00",X"88",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"90",X"80",X"80",X"80",X"80",X"00",X"00",X"00",
+ X"AE",X"1D",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"FF",X"88",X"FF",X"00",
+ X"EE",X"22",X"EE",X"00",X"EE",X"22",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"FF",X"99",X"99",X"00",
+ X"EE",X"22",X"EE",X"00",X"EE",X"22",X"22",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"FF",X"88",X"FF",X"00",
+ X"EE",X"22",X"EE",X"00",X"EE",X"22",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"00",X"FF",X"00",X"FF",
+ X"EE",X"22",X"EE",X"00",X"88",X"EE",X"88",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"FF",X"88",X"FF",X"00",
+ X"EE",X"22",X"EE",X"00",X"EE",X"22",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"99",X"99",X"FF",X"00",
+ X"EE",X"22",X"EE",X"00",X"EE",X"22",X"22",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"53",X"43",X"61",X"21",X"30",X"10",X"10",X"10",
+ X"DE",X"9E",X"BC",X"2C",X"68",X"48",X"48",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"80",X"80",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"80",X"80",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"10",X"30",X"21",X"61",X"43",X"53",
+ X"C0",X"48",X"48",X"68",X"2C",X"BC",X"9E",X"DE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"B7",X"D3",X"43",X"61",X"21",X"30",X"10",X"10",
+ X"EF",X"DE",X"9E",X"BC",X"2C",X"68",X"48",X"C0",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"30",X"21",X"61",X"43",X"D3",X"B7",
+ X"C0",X"48",X"68",X"2C",X"BC",X"9E",X"DE",X"EF",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",
+ X"30",X"E1",X"10",X"00",X"00",X"10",X"30",X"40",X"3F",X"7F",X"B7",X"97",X"C3",X"E1",X"21",X"21",
+ X"EF",X"8F",X"3C",X"68",X"2C",X"3C",X"F0",X"80",X"48",X"F0",X"80",X"00",X"00",X"00",X"80",X"80",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"10",X"10",X"10",X"10",X"00",X"00",
+ X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"20",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",
+ X"00",X"00",X"80",X"80",X"80",X"80",X"80",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"10",X"00",X"00",X"90",X"61",X"30",X"10",X"10",X"F0",X"87",X"97",X"D3",X"3F",X"1F",X"D3",X"97",
+ X"48",X"48",X"78",X"0F",X"DE",X"BC",X"9E",X"DE",X"10",X"20",X"C0",X"80",X"80",X"00",X"00",X"80",
+ X"F0",X"21",X"10",X"00",X"00",X"10",X"30",X"30",X"7F",X"3F",X"97",X"C3",X"D3",X"87",X"0F",X"C3",
+ X"8F",X"EF",X"9E",X"BC",X"BC",X"1E",X"87",X"F0",X"80",X"48",X"F0",X"00",X"00",X"80",X"80",X"C0",
+ X"60",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"61",X"30",X"10",X"10",X"10",X"10",X"10",X"00",
+ X"C0",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"40",X"20",X"10",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"20",X"20",X"20",X"30",X"21",X"21",X"61",
+ X"00",X"00",X"00",X"00",X"00",X"80",X"F0",X"0F",X"00",X"00",X"00",X"20",X"40",X"C0",X"80",X"80",
+ X"00",X"F0",X"61",X"10",X"10",X"00",X"00",X"10",X"43",X"D3",X"1F",X"7F",X"97",X"C3",X"97",X"B7",
+ X"9E",X"BC",X"9E",X"CF",X"EF",X"CF",X"9E",X"3C",X"80",X"00",X"80",X"78",X"C0",X"80",X"80",X"80",
+ X"00",X"00",X"00",X"20",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"66",X"33",X"B3",X"63",X"AD",
+ X"00",X"00",X"00",X"22",X"44",X"7E",X"7D",X"7B",X"00",X"00",X"00",X"40",X"80",X"00",X"00",X"88",
+ X"33",X"00",X"00",X"00",X"10",X"20",X"00",X"00",X"CF",X"65",X"63",X"B3",X"11",X"00",X"00",X"00",
+ X"0E",X"7B",X"7D",X"7E",X"22",X"88",X"00",X"00",X"44",X"00",X"88",X"00",X"80",X"40",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"10",X"00",X"00",X"11",X"00",X"00",X"00",X"22",X"11",X"91",X"63",X"65",
+ X"00",X"00",X"00",X"00",X"10",X"20",X"C8",X"C4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"CF",X"65",X"63",X"91",X"11",X"00",X"00",X"00",
+ X"6E",X"95",X"C8",X"A8",X"10",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"00",X"00",X"00",X"00",X"00",X"91",X"51",X"75",
+ X"00",X"00",X"00",X"00",X"00",X"20",X"C8",X"D5",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"75",X"51",X"80",X"00",X"00",X"00",X"00",
+ X"EE",X"C4",X"C8",X"A8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"00",X"00",X"00",X"00",X"00",X"11",X"51",X"75",
+ X"00",X"00",X"00",X"00",X"88",X"00",X"C8",X"C4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"75",X"73",X"22",X"00",X"00",X"00",X"00",
+ X"EE",X"A2",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"10",X"80",X"60",X"30",X"31",
+ X"00",X"00",X"00",X"00",X"A0",X"C0",X"C8",X"E8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"F0",X"50",X"40",X"80",X"10",X"00",X"00",X"00",
+ X"FC",X"C4",X"C0",X"A0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"20",X"10",X"00",X"00",X"00",X"40",X"20",X"20",X"60",X"F1",X"33",
+ X"00",X"00",X"00",X"20",X"C0",X"90",X"A0",X"E8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"10",X"00",X"00",X"00",X"00",X"00",X"73",X"F0",X"60",X"20",X"20",X"40",X"00",X"00",
+ X"FC",X"88",X"C0",X"40",X"20",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"20",X"10",X"00",X"40",X"30",X"00",X"00",X"10",X"20",X"B0",X"F2",X"63",X"C7",
+ X"00",X"00",X"00",X"10",X"20",X"60",X"48",X"FE",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"80",
+ X"00",X"10",X"20",X"00",X"00",X"00",X"00",X"00",X"E7",X"F1",X"50",X"D0",X"40",X"20",X"00",X"00",
+ X"6C",X"F8",X"C0",X"40",X"40",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"20",X"10",X"00",X"60",X"B0",X"00",X"00",X"00",X"00",X"A0",X"E0",X"D0",X"F2",X"E7",
+ X"00",X"40",X"80",X"80",X"C0",X"F4",X"EC",X"3E",X"00",X"00",X"00",X"00",X"80",X"00",X"40",X"00",
+ X"10",X"30",X"40",X"10",X"00",X"00",X"00",X"00",X"C7",X"E3",X"F2",X"70",X"50",X"90",X"00",X"00",
+ X"6C",X"F8",X"E8",X"A0",X"20",X"90",X"80",X"40",X"00",X"A0",X"C0",X"00",X"40",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"61",X"61",X"25",X"16",X"16",X"05",X"05",X"05",
+ X"48",X"0C",X"84",X"84",X"EE",X"0C",X"0C",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"12",X"12",X"10",X"00",X"00",X"00",
+ X"84",X"C0",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"12",X"03",X"01",X"00",X"00",X"00",X"00",X"E0",X"D2",X"5A",X"1E",X"2D",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"07",X"07",X"07",X"07",X"25",X"34",X"70",X"61",
+ X"08",X"0C",X"0C",X"04",X"0C",X"0C",X"48",X"48",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"61",X"61",X"25",X"16",X"77",X"05",X"05",X"05",
+ X"48",X"0C",X"84",X"84",X"84",X"0C",X"0C",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"12",X"12",X"10",X"00",X"00",X"00",
+ X"84",X"C0",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"12",X"03",X"01",X"00",X"00",X"00",X"00",X"E0",X"D2",X"5A",X"1E",X"2D",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"07",X"07",X"07",X"07",X"25",X"34",X"70",X"61",
+ X"08",X"0C",X"0C",X"04",X"0C",X"0C",X"48",X"48",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"71",X"71",X"25",X"16",X"16",X"05",X"05",X"05",
+ X"48",X"0C",X"84",X"84",X"EE",X"0C",X"0C",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"12",X"12",X"10",X"00",X"00",X"00",
+ X"84",X"C0",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"12",X"03",X"01",X"00",X"00",X"00",X"00",X"E0",X"D2",X"5A",X"1E",X"2D",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"07",X"07",X"07",X"07",X"67",X"76",X"FB",X"77",
+ X"08",X"0C",X"0C",X"04",X"8C",X"8C",X"C8",X"48",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"71",X"71",X"25",X"16",X"77",X"05",X"05",X"05",
+ X"48",X"0C",X"84",X"84",X"84",X"0C",X"0C",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"12",X"12",X"10",X"00",X"00",X"00",
+ X"84",X"C0",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"12",X"03",X"01",X"00",X"00",X"00",X"00",X"E0",X"D2",X"5A",X"1E",X"2D",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"11",X"00",X"00",X"00",X"07",X"07",X"07",X"47",X"67",X"BF",X"FF",X"73",
+ X"08",X"0C",X"0C",X"44",X"CC",X"8C",X"C8",X"48",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"71",X"71",X"25",X"16",X"16",X"05",X"05",X"05",
+ X"48",X"0C",X"84",X"84",X"EE",X"0C",X"0C",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"12",X"12",X"10",X"00",X"00",X"00",
+ X"84",X"C0",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"12",X"03",X"01",X"00",X"00",X"00",X"00",X"E0",X"D2",X"5A",X"1E",X"2D",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"11",X"00",X"00",X"00",X"07",X"07",X"17",X"57",X"67",X"BF",X"FF",X"73",
+ X"08",X"0C",X"0C",X"44",X"4C",X"8C",X"C8",X"48",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"71",X"71",X"25",X"16",X"77",X"05",X"05",X"05",
+ X"48",X"0C",X"84",X"84",X"84",X"0C",X"0C",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"12",X"12",X"10",X"00",X"00",X"00",
+ X"84",X"C0",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"12",X"03",X"01",X"00",X"00",X"00",X"00",X"E0",X"D2",X"5A",X"1E",X"2D",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"DF",X"AF",X"67",X"67",X"BF",X"77",X"73",X"73",
+ X"88",X"AE",X"AE",X"44",X"AE",X"EE",X"C8",X"48",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"71",X"71",X"25",X"16",X"16",X"05",X"05",X"05",
+ X"48",X"0C",X"84",X"84",X"EE",X"0C",X"0C",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"12",X"12",X"10",X"00",X"00",X"00",
+ X"84",X"C0",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"12",X"03",X"01",X"00",X"00",X"00",X"00",X"E0",X"D2",X"5A",X"1E",X"2D",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"9F",X"AF",X"77",X"67",X"BF",X"77",X"73",X"73",
+ X"CC",X"AE",X"AE",X"44",X"9D",X"EE",X"C8",X"48",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"71",X"71",X"25",X"16",X"77",X"05",X"05",X"05",
+ X"48",X"0C",X"84",X"84",X"84",X"0C",X"0C",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"12",X"12",X"10",X"00",X"00",X"00",
+ X"84",X"C0",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"12",X"03",X"01",X"11",X"00",X"00",X"00",X"E0",X"F2",X"7A",X"9F",X"7D",
+ X"00",X"00",X"00",X"00",X"00",X"88",X"88",X"CC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"00",X"00",X"11",X"00",X"00",X"00",X"00",X"47",X"EF",X"77",X"37",X"37",X"76",X"73",X"71",
+ X"88",X"8C",X"8C",X"44",X"8C",X"AE",X"EE",X"C8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"12",X"12",X"12",X"12",X"12",X"02",X"02",X"77",
+ X"2C",X"C2",X"C2",X"C2",X"C0",X"E0",X"A4",X"A4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"02",X"02",X"00",X"01",X"00",X"00",
+ X"2C",X"2C",X"68",X"68",X"68",X"E2",X"E2",X"C4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"30",X"03",X"01",X"00",X"00",X"00",X"00",X"E0",X"B4",X"B4",X"5A",X"4B",X"07",X"07",X"07",
+ X"00",X"00",X"00",X"00",X"00",X"08",X"08",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"12",X"12",X"12",X"12",X"30",X"23",X"27",X"32",
+ X"80",X"C4",X"C6",X"C4",X"C0",X"C0",X"E0",X"68",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"12",X"12",X"12",X"12",X"12",X"02",X"02",X"03",
+ X"2C",X"C2",X"C2",X"C2",X"C0",X"E0",X"E0",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"02",X"02",X"00",X"01",X"00",X"00",
+ X"2C",X"2C",X"68",X"68",X"68",X"E2",X"E2",X"C4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"30",X"03",X"01",X"00",X"00",X"00",X"00",X"E0",X"B4",X"B4",X"5A",X"4B",X"07",X"07",X"07",
+ X"00",X"00",X"00",X"00",X"00",X"08",X"08",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"12",X"12",X"12",X"12",X"30",X"23",X"27",X"32",
+ X"80",X"C4",X"C6",X"C4",X"C0",X"C0",X"E0",X"68",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"12",X"12",X"12",X"12",X"12",X"02",X"02",X"77",
+ X"AC",X"8E",X"86",X"82",X"C0",X"E0",X"A4",X"A4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"02",X"02",X"00",X"01",X"00",X"00",
+ X"2C",X"2C",X"68",X"68",X"68",X"E2",X"E2",X"C4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"30",X"03",X"01",X"00",X"00",X"00",X"00",X"E0",X"B4",X"B4",X"5A",X"4B",X"07",X"07",X"8F",
+ X"00",X"00",X"00",X"00",X"00",X"08",X"08",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"9A",X"9B",X"56",X"56",X"BA",X"77",X"37",X"33",
+ X"80",X"C4",X"CE",X"CC",X"C8",X"C4",X"E8",X"E8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"12",X"12",X"12",X"12",X"12",X"02",X"02",X"03",
+ X"AC",X"8E",X"86",X"82",X"C0",X"E0",X"A4",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"02",X"02",X"00",X"01",X"00",X"00",
+ X"2C",X"2C",X"68",X"68",X"68",X"E2",X"E2",X"C4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"30",X"03",X"01",X"00",X"00",X"00",X"00",X"E0",X"B4",X"B4",X"5A",X"4B",X"07",X"07",X"07",
+ X"00",X"00",X"00",X"00",X"00",X"08",X"08",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"13",X"13",X"57",X"32",X"B9",X"77",X"77",X"33",
+ X"80",X"CC",X"C6",X"CC",X"C8",X"C8",X"E0",X"E8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"13",X"12",X"12",X"12",X"02",X"02",X"77",
+ X"2C",X"86",X"86",X"82",X"C0",X"E0",X"A4",X"A4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"02",X"02",X"00",X"01",X"00",X"00",
+ X"2C",X"2C",X"68",X"68",X"68",X"E2",X"E2",X"C4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"30",X"03",X"01",X"00",X"22",X"22",X"33",X"E0",X"B4",X"B4",X"5E",X"4F",X"CF",X"CF",X"67",
+ X"00",X"00",X"00",X"00",X"00",X"08",X"08",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"00",X"11",X"00",X"00",X"00",X"00",X"00",X"FE",X"FE",X"76",X"BB",X"FF",X"67",X"33",X"33",
+ X"80",X"C4",X"CE",X"C4",X"C0",X"C0",X"E0",X"E8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"13",X"12",X"12",X"12",X"02",X"02",X"03",
+ X"2C",X"86",X"86",X"82",X"C0",X"E0",X"A4",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"02",X"02",X"00",X"01",X"00",X"00",
+ X"2C",X"2C",X"68",X"68",X"68",X"E2",X"E2",X"C4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"30",X"03",X"01",X"00",X"00",X"00",X"00",X"E0",X"B4",X"B4",X"5A",X"4B",X"47",X"47",X"23",
+ X"00",X"00",X"00",X"00",X"00",X"08",X"08",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"77",X"BA",X"BB",X"76",X"76",X"67",X"33",X"33",
+ X"C4",X"CC",X"C6",X"C4",X"C8",X"C8",X"E8",X"E8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"13",X"12",X"12",X"12",X"02",X"02",X"77",
+ X"2C",X"86",X"86",X"82",X"C0",X"E0",X"A4",X"A4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"02",X"02",X"00",X"01",X"00",X"00",
+ X"2C",X"2C",X"68",X"68",X"68",X"E2",X"E2",X"C4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"31",X"13",X"11",X"00",X"00",X"00",X"11",X"E0",X"B4",X"F4",X"5E",X"EB",X"FF",X"67",X"23",
+ X"00",X"00",X"22",X"44",X"44",X"4C",X"4C",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"76",X"FF",X"77",X"57",X"33",X"BB",X"77",X"33",
+ X"88",X"C4",X"C6",X"CC",X"C0",X"CC",X"E0",X"E8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"13",X"12",X"12",X"12",X"02",X"02",X"03",
+ X"2C",X"86",X"86",X"82",X"C0",X"E0",X"A4",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"02",X"02",X"00",X"01",X"00",X"00",
+ X"2C",X"2C",X"68",X"68",X"68",X"E2",X"E2",X"C4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"30",X"03",X"23",X"22",X"11",X"11",X"11",X"E0",X"B4",X"F4",X"5E",X"6F",X"27",X"27",X"9F",
+ X"00",X"00",X"00",X"00",X"00",X"4C",X"4C",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"DF",X"76",X"BB",X"BA",X"77",X"77",X"27",X"33",
+ X"C4",X"C4",X"C6",X"C4",X"C8",X"C8",X"EC",X"E8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"10",X"10",X"10",X"01",X"01",X"03",X"07",X"1E",X"3C",
+ X"43",X"C3",X"C3",X"43",X"C3",X"C3",X"42",X"C3",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"00",
+ X"11",X"11",X"11",X"11",X"11",X"11",X"00",X"00",X"3C",X"37",X"33",X"11",X"10",X"00",X"00",X"00",
+ X"C2",X"E0",X"A4",X"86",X"86",X"C0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"10",X"00",X"00",X"00",X"13",X"17",X"3D",X"2D",X"0F",
+ X"00",X"00",X"00",X"80",X"C0",X"84",X"86",X"86",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"00",X"0F",X"16",X"12",X"10",X"10",X"10",X"10",X"10",
+ X"87",X"87",X"86",X"C3",X"C3",X"43",X"C3",X"C3",X"00",X"00",X"88",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"11",X"11",X"11",X"11",X"11",X"11",X"10",X"10",X"10",X"01",X"01",X"03",X"07",X"1E",X"3C",
+ X"43",X"C3",X"C3",X"43",X"C3",X"C3",X"42",X"C3",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"00",
+ X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"3C",X"37",X"33",X"11",X"10",X"00",X"00",X"00",
+ X"C2",X"E0",X"A4",X"86",X"86",X"C0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"10",X"00",X"00",X"00",X"13",X"17",X"3D",X"2D",X"0F",
+ X"00",X"00",X"00",X"80",X"C0",X"84",X"86",X"86",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"0F",X"16",X"12",X"10",X"10",X"10",X"10",X"10",
+ X"87",X"87",X"86",X"C3",X"C3",X"43",X"C3",X"C3",X"00",X"00",X"88",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"10",X"10",X"10",X"01",X"01",X"03",X"07",X"1E",X"3C",
+ X"CB",X"CB",X"C3",X"43",X"C3",X"C3",X"42",X"C3",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"00",
+ X"11",X"11",X"11",X"11",X"11",X"11",X"00",X"00",X"3C",X"37",X"33",X"11",X"10",X"00",X"00",X"00",
+ X"C2",X"E0",X"A4",X"86",X"86",X"C0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"10",X"00",X"00",X"00",X"13",X"17",X"3D",X"2D",X"0F",
+ X"00",X"00",X"00",X"80",X"C0",X"84",X"86",X"86",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"00",X"5F",X"76",X"32",X"BB",X"77",X"11",X"77",X"11",
+ X"C7",X"DF",X"FF",X"CF",X"E3",X"CF",X"CB",X"CF",X"00",X"00",X"88",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"11",X"11",X"11",X"11",X"11",X"11",X"10",X"11",X"10",X"01",X"01",X"03",X"07",X"1E",X"3C",
+ X"CB",X"CB",X"C3",X"43",X"C3",X"C3",X"42",X"C3",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"00",
+ X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"3C",X"37",X"33",X"11",X"10",X"00",X"00",X"00",
+ X"C2",X"E0",X"A4",X"86",X"86",X"C0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"10",X"00",X"00",X"00",X"13",X"57",X"7D",X"7F",X"2F",
+ X"00",X"00",X"00",X"80",X"C0",X"C4",X"E6",X"CE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"AF",X"76",X"FF",X"FF",X"32",X"55",X"77",X"11",
+ X"CF",X"8F",X"E6",X"C7",X"CB",X"CB",X"CF",X"CB",X"00",X"00",X"88",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"10",X"10",X"10",X"01",X"01",X"03",X"07",X"1E",X"3C",
+ X"CB",X"CB",X"C3",X"43",X"C3",X"C3",X"42",X"C3",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"00",
+ X"11",X"11",X"11",X"11",X"11",X"11",X"00",X"00",X"3C",X"37",X"33",X"11",X"10",X"00",X"00",X"00",
+ X"C2",X"E0",X"A4",X"86",X"86",X"C0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"11",X"33",X"11",X"10",X"00",X"11",X"55",X"77",X"37",X"BF",X"BF",X"AF",
+ X"00",X"00",X"22",X"A2",X"EA",X"DD",X"F7",X"E6",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"00",X"EF",X"37",X"FF",X"77",X"33",X"77",X"77",X"11",
+ X"CF",X"FF",X"CE",X"CB",X"EB",X"EF",X"CF",X"CB",X"00",X"00",X"88",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"11",X"11",X"11",X"11",X"11",X"11",X"10",X"10",X"10",X"01",X"01",X"03",X"07",X"1E",X"3C",
+ X"CB",X"CB",X"C3",X"43",X"C3",X"C3",X"42",X"C3",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"00",
+ X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"3C",X"37",X"33",X"11",X"10",X"00",X"00",X"00",
+ X"C2",X"E0",X"A4",X"86",X"86",X"C0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"11",X"BB",X"77",X"77",X"33",X"11",X"11",X"32",X"00",X"AA",X"66",X"BB",X"DF",X"FF",X"6F",X"AF",
+ X"22",X"AA",X"FF",X"EE",X"EA",X"AE",X"BF",X"AE",X"00",X"88",X"00",X"00",X"00",X"88",X"00",X"00",
+ X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"AF",X"FF",X"77",X"DD",X"33",X"99",X"77",X"11",
+ X"EF",X"DF",X"EE",X"CF",X"CB",X"EF",X"CF",X"CB",X"00",X"00",X"88",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",
+ X"69",X"69",X"69",X"69",X"2D",X"2D",X"0F",X"0F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"1E",X"9E",X"9E",X"8F",X"07",X"07",X"07",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"0F",X"0F",X"0F",X"07",X"03",X"03",X"03",
+ X"02",X"86",X"86",X"86",X"86",X"A4",X"2C",X"2C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",
+ X"2D",X"2D",X"69",X"69",X"69",X"69",X"69",X"69",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",
+ X"6D",X"6D",X"69",X"69",X"2D",X"2D",X"0F",X"0F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"1E",X"9E",X"9E",X"8F",X"07",X"07",X"07",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"0F",X"0F",X"0F",X"07",X"03",X"03",X"03",
+ X"02",X"86",X"86",X"86",X"86",X"A4",X"2C",X"2C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"23",X"33",X"11",X"55",X"33",X"01",X"33",X"01",
+ X"AF",X"6F",X"7F",X"EF",X"F9",X"EF",X"ED",X"EF",X"00",X"88",X"88",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",
+ X"ED",X"6D",X"69",X"69",X"2D",X"2D",X"0F",X"0F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"1E",X"9E",X"9E",X"8F",X"07",X"07",X"07",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"0F",X"0F",X"0F",X"27",X"AB",X"77",X"9B",
+ X"02",X"86",X"86",X"86",X"86",X"AE",X"BF",X"6E",X"00",X"00",X"00",X"00",X"00",X"88",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"55",X"BB",X"77",X"77",X"11",X"23",X"33",X"01",
+ X"6F",X"6D",X"FB",X"EB",X"6D",X"FD",X"EF",X"ED",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",
+ X"6D",X"6D",X"69",X"69",X"2D",X"2D",X"0F",X"0F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"1E",X"9E",X"9E",X"8F",X"07",X"07",X"07",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"01",X"55",X"33",X"33",X"11",X"00",X"00",X"11",X"44",X"5F",X"3F",X"DF",X"EF",X"FF",X"33",X"57",
+ X"13",X"D7",X"F7",X"F7",X"D7",X"FD",X"7D",X"7D",X"00",X"44",X"88",X"00",X"00",X"44",X"CC",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"DD",X"77",X"33",X"67",X"11",X"45",X"33",X"01",
+ X"7F",X"EF",X"FF",X"EF",X"ED",X"FF",X"EF",X"ED",X"00",X"88",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"EF",X"EF",X"EF",X"77",X"23",X"01",X"01",X"01",X"3F",X"BF",X"3F",X"3F",X"3F",X"BF",X"3F",X"7F",
+ X"CF",X"CF",X"FF",X"FF",X"FF",X"CF",X"CF",X"CF",X"8F",X"8F",X"8F",X"8E",X"8E",X"8E",X"8C",X"8C",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3F",X"33",X"11",X"11",X"00",X"00",X"00",X"00",
+ X"FF",X"FF",X"CF",X"CF",X"FF",X"FF",X"47",X"77",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"30",X"FC",
+ X"70",X"70",X"F0",X"F0",X"F0",X"C7",X"F7",X"FF",X"00",X"80",X"80",X"80",X"80",X"80",X"80",X"80",
+ X"11",X"11",X"11",X"31",X"61",X"E1",X"E7",X"EF",X"FD",X"FD",X"FF",X"3F",X"3F",X"BF",X"3F",X"7F",
+ X"CF",X"CF",X"CF",X"FF",X"FF",X"FF",X"CF",X"CF",X"CC",X"CC",X"AE",X"AE",X"AE",X"9F",X"9F",X"8F",
+ X"EF",X"EF",X"EF",X"67",X"23",X"01",X"01",X"11",X"3F",X"BF",X"3F",X"7F",X"3F",X"BF",X"3F",X"3F",
+ X"FF",X"FF",X"FF",X"CF",X"CF",X"CF",X"FF",X"FF",X"8F",X"8F",X"8F",X"8E",X"8E",X"8E",X"8C",X"8C",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3F",X"33",X"11",X"11",X"00",X"00",X"00",X"00",
+ X"CF",X"CF",X"FF",X"FF",X"CF",X"CF",X"77",X"47",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"30",X"FC",
+ X"70",X"70",X"F0",X"F0",X"F0",X"F0",X"C7",X"C7",X"00",X"80",X"80",X"80",X"80",X"80",X"80",X"80",
+ X"11",X"11",X"11",X"31",X"71",X"E1",X"E1",X"F7",X"FC",X"FD",X"FD",X"FF",X"3F",X"BF",X"3F",X"3F",
+ X"CF",X"FF",X"FF",X"FF",X"CF",X"CF",X"CF",X"CF",X"C4",X"CC",X"EE",X"AE",X"AE",X"BF",X"9F",X"9F",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"31",X"73",X"73",X"B7",X"3F",
+ X"C0",X"40",X"E8",X"64",X"56",X"56",X"CF",X"47",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3F",X"37",X"37",X"33",X"11",X"11",X"00",X"00",
+ X"47",X"47",X"CF",X"46",X"46",X"44",X"CC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"30",X"71",X"73",X"B7",X"3F",
+ X"C0",X"C0",X"60",X"60",X"74",X"DE",X"56",X"47",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3F",X"37",X"37",X"33",X"11",X"11",X"00",X"00",
+ X"47",X"CF",X"47",X"46",X"46",X"CC",X"CC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"31",X"73",X"73",X"B7",X"3F",
+ X"C0",X"40",X"60",X"64",X"DE",X"56",X"47",X"47",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3F",X"37",X"37",X"33",X"11",X"11",X"00",X"00",
+ X"CF",X"47",X"47",X"46",X"CE",X"44",X"CC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"30",X"71",X"73",X"B7",X"B7",
+ X"C0",X"C0",X"60",X"E8",X"74",X"56",X"56",X"CF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3F",X"37",X"37",X"33",X"11",X"11",X"00",X"00",
+ X"47",X"47",X"47",X"CE",X"46",X"44",X"CC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"40",X"20",X"12",X"57",X"8F",X"0F",X"0F",X"00",X"17",X"2F",X"2F",X"C7",X"2F",X"2F",X"0F",
+ X"06",X"CF",X"4F",X"2F",X"1E",X"2D",X"0F",X"8F",X"00",X"20",X"40",X"84",X"8C",X"6E",X"4E",X"8F",
+ X"07",X"8F",X"9F",X"36",X"21",X"41",X"11",X"00",X"5F",X"2F",X"A7",X"1F",X"0F",X"0F",X"0F",X"CC",
+ X"5F",X"0F",X"4F",X"4F",X"C7",X"A7",X"84",X"80",X"4E",X"AE",X"4E",X"0E",X"0C",X"48",X"20",X"00",
+ X"00",X"00",X"01",X"83",X"63",X"31",X"32",X"47",X"00",X"00",X"CD",X"1F",X"4F",X"9F",X"0F",X"2F",
+ X"00",X"40",X"4B",X"4B",X"CB",X"5F",X"2F",X"8F",X"00",X"00",X"00",X"1C",X"AC",X"CA",X"86",X"0C",
+ X"07",X"13",X"32",X"21",X"41",X"01",X"00",X"00",X"9F",X"8F",X"4F",X"4F",X"6D",X"2D",X"21",X"20",
+ X"5F",X"0F",X"CB",X"BD",X"5E",X"3F",X"4C",X"00",X"4C",X"CC",X"4C",X"88",X"00",X"80",X"40",X"00",
+ X"00",X"10",X"00",X"01",X"23",X"81",X"71",X"12",X"00",X"00",X"B3",X"6B",X"3D",X"0F",X"DF",X"0F",
+ X"10",X"10",X"1C",X"6D",X"7D",X"AF",X"0F",X"9E",X"00",X"00",X"00",X"88",X"5C",X"0C",X"E0",X"88",
+ X"23",X"11",X"11",X"01",X"00",X"00",X"10",X"00",X"4F",X"CF",X"3F",X"6D",X"49",X"80",X"00",X"00",
+ X"9F",X"2F",X"6B",X"BD",X"1C",X"00",X"00",X"00",X"4C",X"0C",X"0C",X"08",X"00",X"80",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"10",X"00",X"00",X"00",X"10",X"76",X"1E",X"8F",X"E7",
+ X"00",X"00",X"00",X"00",X"8C",X"9E",X"AC",X"6B",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"43",X"4F",X"1F",X"13",X"10",X"20",X"00",X"00",
+ X"8F",X"6C",X"3E",X"84",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"00",X"31",
+ X"00",X"00",X"00",X"00",X"00",X"40",X"88",X"64",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"88",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"11",X"62",
+ X"00",X"00",X"00",X"00",X"80",X"A8",X"44",X"3A",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"20",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"44",X"A8",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"22",X"00",X"C6",
+ X"00",X"00",X"00",X"80",X"98",X"2A",X"00",X"13",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"22",X"40",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"2A",X"98",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"00",X"00",X"00",X"80",X"44",X"02",X"00",X"AC",
+ X"00",X"00",X"80",X"88",X"19",X"82",X"00",X"21",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"C8",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"44",X"80",X"00",X"00",X"00",X"00",
+ X"00",X"82",X"19",X"88",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"40",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"00",X"04",
+ X"00",X"00",X"00",X"00",X"00",X"08",X"00",X"44",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"22",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"22",X"00",X"00",X"02",X"80",X"11",X"44",X"00",X"81",
+ X"00",X"00",X"88",X"20",X"00",X"15",X"00",X"20",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"08",
+ X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"44",X"10",X"80",X"02",X"00",X"00",X"00",
+ X"00",X"15",X"00",X"20",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"01",X"00",X"22",X"00",X"41",X"00",X"01",X"44",X"00",X"22",X"80",X"11",X"20",
+ X"00",X"00",X"40",X"11",X"80",X"02",X"00",X"91",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"44",
+ X"00",X"22",X"00",X"01",X"00",X"00",X"00",X"00",X"11",X"88",X"20",X"00",X"44",X"10",X"00",X"00",
+ X"00",X"20",X"08",X"11",X"44",X"00",X"00",X"00",X"00",X"08",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"00",X"00",X"00",X"11",X"00",X"00",X"07",X"1F",
+ X"00",X"00",X"01",X"CF",X"16",X"96",X"3C",X"8F",X"00",X"00",X"80",X"C4",X"00",X"00",X"80",X"08",
+ X"0F",X"30",X"00",X"00",X"00",X"00",X"00",X"00",X"7F",X"F1",X"70",X"00",X"00",X"11",X"00",X"00",
+ X"CF",X"F8",X"E1",X"87",X"43",X"ED",X"10",X"00",X"0C",X"80",X"80",X"00",X"00",X"C4",X"80",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"11",X"01",X"37",X"7F",
+ X"00",X"00",X"12",X"9E",X"1E",X"2D",X"8F",X"CB",X"00",X"00",X"88",X"00",X"00",X"08",X"0C",X"C0",
+ X"07",X"0F",X"70",X"00",X"00",X"00",X"00",X"00",X"1F",X"3C",X"D0",X"00",X"00",X"00",X"00",X"00",
+ X"F0",X"87",X"87",X"C3",X"30",X"FE",X"00",X"00",X"C0",X"08",X"08",X"80",X"E2",X"C0",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"10",X"13",X"3F",
+ X"00",X"00",X"71",X"E1",X"C3",X"87",X"CF",X"DA",X"00",X"00",X"00",X"00",X"08",X"08",X"80",X"48",
+ X"03",X"07",X"1E",X"70",X"00",X"00",X"00",X"00",X"1E",X"3C",X"F0",X"80",X"00",X"00",X"00",X"00",
+ X"C3",X"87",X"F0",X"10",X"66",X"00",X"00",X"00",X"48",X"2E",X"2C",X"C0",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"32",X"30",X"33",
+ X"00",X"00",X"70",X"E1",X"C3",X"87",X"8F",X"DA",X"00",X"00",X"88",X"00",X"08",X"08",X"80",X"0C",
+ X"00",X"01",X"03",X"07",X"34",X"00",X"00",X"00",X"37",X"1E",X"0F",X"78",X"80",X"00",X"00",X"00",
+ X"C3",X"87",X"C3",X"F0",X"11",X"22",X"00",X"00",X"3D",X"2C",X"68",X"C0",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"30",X"30",X"65",X"73",X"77",
+ X"00",X"C4",X"84",X"1E",X"3C",X"0F",X"87",X"87",X"00",X"00",X"00",X"00",X"00",X"A2",X"0C",X"48",
+ X"00",X"00",X"00",X"01",X"01",X"03",X"12",X"00",X"76",X"0F",X"1E",X"2C",X"48",X"80",X"00",X"00",
+ X"B4",X"D1",X"A2",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"21",X"21",X"21",X"21",X"32",X"76",
+ X"00",X"08",X"0C",X"2C",X"5A",X"0F",X"0F",X"1E",X"00",X"00",X"00",X"00",X"44",X"48",X"C0",X"80",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"76",X"74",X"07",X"1E",X"1E",X"2C",X"68",X"C0",
+ X"79",X"E2",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"11",X"33",X"33",
+ X"00",X"0C",X"2C",X"5A",X"0F",X"0F",X"87",X"96",X"00",X"00",X"88",X"00",X"08",X"80",X"80",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"23",X"03",X"07",X"16",X"16",X"16",X"24",X"24",
+ X"F0",X"E2",X"A2",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"16",X"07",X"03",X"03",X"21",X"23",X"33",
+ X"00",X"08",X"79",X"96",X"0F",X"0F",X"87",X"B4",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"13",X"03",X"03",X"03",X"03",X"12",X"02",
+ X"6A",X"6A",X"08",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"E1",X"0F",X"16",X"12",X"03",X"23",X"33",
+ X"00",X"00",X"E2",X"68",X"1E",X"1E",X"96",X"A4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"11",X"01",X"01",X"01",X"01",X"00",X"00",
+ X"6A",X"6A",X"6A",X"48",X"48",X"48",X"48",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"0F",X"1E",X"07",X"07",X"23",X"33",
+ X"00",X"44",X"E0",X"1E",X"1E",X"1E",X"3D",X"B5",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"11",X"01",X"01",X"00",X"00",X"00",X"00",
+ X"F1",X"0C",X"2C",X"2C",X"2C",X"2C",X"2C",X"04",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"10",X"01",X"00",X"00",X"00",X"00",X"00",X"11",X"96",X"1E",X"1E",X"87",X"63",X"33",
+ X"00",X"80",X"48",X"2C",X"2C",X"2C",X"3D",X"B5",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"11",X"01",X"00",X"00",X"00",X"00",X"00",
+ X"C2",X"2C",X"2C",X"1E",X"1E",X"16",X"16",X"02",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"F0",X"1E",X"0F",X"87",X"F2",
+ X"00",X"C8",X"68",X"2C",X"2C",X"0E",X"1F",X"3D",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"73",X"33",X"11",X"00",X"00",X"00",X"00",X"00",
+ X"A4",X"96",X"9E",X"0F",X"07",X"03",X"01",X"00",X"00",X"00",X"00",X"80",X"80",X"48",X"48",X"08",
+ X"00",X"00",X"00",X"00",X"01",X"01",X"32",X"10",X"11",X"10",X"21",X"C3",X"0F",X"0F",X"3C",X"F3",
+ X"80",X"C0",X"48",X"6A",X"59",X"48",X"2C",X"A4",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"F3",X"74",X"22",X"00",X"00",X"00",X"00",X"00",
+ X"DA",X"8F",X"0F",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"80",X"48",X"48",X"0C",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"01",X"03",X"03",X"32",X"B8",X"43",X"87",X"87",X"87",X"0F",X"1E",X"B6",
+ X"00",X"80",X"80",X"80",X"C4",X"A2",X"48",X"E0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"30",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"F7",X"F3",X"44",X"22",X"00",X"00",X"00",X"00",
+ X"96",X"8F",X"0F",X"03",X"00",X"00",X"00",X"00",X"00",X"80",X"48",X"0C",X"0E",X"00",X"00",X"00",
+ X"00",X"11",X"10",X"10",X"30",X"03",X"07",X"03",X"60",X"96",X"1E",X"1E",X"96",X"0F",X"0F",X"78",
+ X"00",X"00",X"00",X"88",X"44",X"80",X"C0",X"68",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"74",X"30",X"10",X"00",X"00",X"00",X"00",X"00",X"F7",X"F3",X"B4",X"66",X"00",X"00",X"00",X"00",
+ X"1E",X"8F",X"0F",X"01",X"00",X"00",X"00",X"00",X"00",X"80",X"48",X"0E",X"00",X"00",X"00",X"00",
+ X"00",X"22",X"10",X"10",X"10",X"03",X"07",X"03",X"C0",X"2C",X"1E",X"1E",X"87",X"0F",X"78",X"7F",
+ X"00",X"00",X"88",X"E6",X"80",X"E0",X"F0",X"96",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",
+ X"74",X"30",X"10",X"00",X"00",X"00",X"00",X"00",X"F7",X"F0",X"E6",X"00",X"00",X"00",X"00",X"00",
+ X"8F",X"0F",X"00",X"00",X"00",X"00",X"00",X"00",X"2C",X"0E",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"FF",
+ X"00",X"00",X"00",X"EE",X"22",X"EE",X"00",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"FF",X"00",X"99",X"99",X"FF",X"00",X"00",
+ X"22",X"EE",X"00",X"EE",X"22",X"22",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"FF",X"88",X"FF",X"00",
+ X"EE",X"22",X"EE",X"00",X"EE",X"22",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"00",X"FF",X"44",X"00",
+ X"EE",X"22",X"EE",X"00",X"22",X"EE",X"22",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"99",X"99",X"FF",X"00",X"00",X"FF",X"44",X"00",
+ X"EE",X"22",X"22",X"00",X"22",X"EE",X"22",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"FF",X"88",X"FF",X"00",
+ X"EE",X"22",X"EE",X"00",X"EE",X"22",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"FF",X"88",X"FF",X"00",
+ X"EE",X"22",X"EE",X"00",X"EE",X"22",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"FF",X"99",X"99",X"00",
+ X"EE",X"22",X"EE",X"00",X"22",X"22",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"FF",X"99",X"99",X"00",
+ X"EE",X"22",X"EE",X"00",X"EE",X"22",X"22",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"88",X"FF",X"00",X"FF",X"88",X"FF",X"00",
+ X"EE",X"22",X"EE",X"00",X"EE",X"22",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
+ X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00");
+begin
+process(clk)
+begin
+ if rising_edge(clk) then
+ data <= rom_data(to_integer(unsigned(addr)));
+ end if;
+end process;
+end architecture;
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/video_mixer.sv b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/video_mixer.sv
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/video_mixer.sv
rename to Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/video_mixer.sv
diff --git a/Arcade_MiST/Konami Classic/ReadMe.txt b/Arcade_MiST/Konami Classic/ReadMe.txt
new file mode 100644
index 00000000..71b6f594
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/ReadMe.txt
@@ -0,0 +1,4 @@
+Games that should work on this Hardware
+
+Chance Kun
+Bikkuri Card
diff --git a/Arcade_MiST/Time Pilot Hardware/Time Pilot.jpg b/Arcade_MiST/Konami Classic/Time Pilot.jpg
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time Pilot.jpg
rename to Arcade_MiST/Konami Classic/Time Pilot.jpg
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/README.txt b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/README.txt
new file mode 100644
index 00000000..0340f2d6
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/README.txt
@@ -0,0 +1,208 @@
+---------------------------------------------------------------------------------
+-- Time pilot by Dar (darfpga@aol.fr) (29/10/2017)
+-- http://darfpga.blogspot.fr
+---------------------------------------------------------------------------------
+-- gen_ram.vhd & io_ps2_keyboard
+--------------------------------
+-- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com)
+-- http://www.syntiac.com/fpga64.html
+---------------------------------------------------------------------------------
+-- T80/T80se - Version : 0247
+-----------------------------
+-- Z80 compatible microprocessor core
+-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org)
+---------------------------------------------------------------------------------
+-- YM2149 (AY-3-8910)
+-- Copyright (c) MikeJ - Jan 2005
+---------------------------------------------------------------------------------
+-- Educational use only
+-- Do not redistribute synthetized file with roms
+-- Do not redistribute roms whatever the form
+-- Use at your own risk
+---------------------------------------------------------------------------------
+-- Features :
+-- TV 15KHz mode only (atm)
+-- Coctail mode ok
+-- Sound ok
+-- No external RAM/SDRAM required
+
+-- Use with MAME roms from timeplt.zip
+--
+-- Use make_time_pilot_proms.bat to build vhd file from binaries
+
+-- Time Pilot Hardware caracteristics :
+--
+-- VIDEO : 1xZ80@3MHz CPU accessing its program rom, working ram,
+-- sprite data ram, I/O, sound board register and trigger.
+-- 24Kx8bits program rom
+--
+-- One char tile map 32x28
+-- 8Kx8bits graphics rom 2bits/pixel
+-- 4 colors/32sets among 16 colors
+--
+-- 24 sprites with priorities and flip H/V
+-- 16Kx8bits graphics rom 2bits/pixel
+-- 3 colors/64sets among 16 colors (different of char colors).
+--
+-- Char/sprites color palette 2x16 colors among 32768 colors
+-- 15bits 5red/5green/5blue
+--
+-- Working ram : 4Kx8bits
+-- Sprites data ram : 256x16bits
+-- Sprites line buffer rams : 1 scan line delay flip/flop 2x256x4bits
+
+-- SOUND : 1xZ80@1.79MHz CPU accessing its program rom, working ram, 2x-AY3-8910
+-- 8Kx8bits program rom
+--
+-- 1xAY-3-8910
+-- I/O noise input and command/trigger from video board.
+-- 3 sound channels
+--
+-- 1xAY-3-8910
+-- 3 sound channels
+--
+-- 6 RC filters with 4 states : transparent or cut 600Hz, 700Hz, 3.4KHz
+--
+---------------------------------------------------------------------------------
+--
+-- Uses 1 pll for 12MHz and 14MHz generation from 50MHz
+--
+-- Board key :
+-- 0 : reset game
+--
+-- Keyboard players inputs :
+--
+-- F3 : Add coin
+-- F2 : Start 2 players
+-- F1 : Start 1 player
+-- SPACE : Fire
+-- RIGHT arrow : rotate right
+-- LEFT arrow : rotate left
+-- UP arrow : rotate up
+-- DOWN arrow : rotate down
+--
+-- Other details : see time_pilot.vhd
+
+---------------------------------------------------------------------------------
+-- Use time_pilot_lite.sdc to compile (Timequest constraints)
+-- /!\
+-- Don't forget to set device configuration mode with memory initialization
+-- (Assignments/Device/Pin options/Configuration mode)
+---------------------------------------------------------------------------------
+
++----------------------------------------------------------------------------------+
+; Fitter Summary ;
++------------------------------------+---------------------------------------------+
+; Fitter Status ; Successful - Sun Nov 05 10:17:02 2017 ;
+; Quartus Prime Version ; 16.1.0 Build 196 10/24/2016 SJ Lite Edition ;
+; Revision Name ; time_pilot_de10_lite ;
+; Top-level Entity Name ; time_pilot_de10_lite ;
+; Family ; MAX 10 ;
+; Device ; 10M50DAF484C6GES ;
+; Timing Models ; Preliminary ;
+; Total logic elements ; 6,231 / 49,760 ( 13 % ) ;
+; Total combinational functions ; 6,005 / 49,760 ( 12 % ) ;
+; Dedicated logic registers ; 1,579 / 49,760 ( 3 % ) ;
+; Total registers ; 1579 ;
+; Total pins ; 105 / 360 ( 29 % ) ;
+; Total virtual pins ; 0 ;
+; Total memory bits ; 475,648 / 1,677,312 ( 28 % ) ;
+; Embedded Multiplier 9-bit elements ; 2 / 288 ( < 1 % ) ;
+; Total PLLs ; 1 / 4 ( 25 % ) ;
+; UFM blocks ; 0 / 1 ( 0 % ) ;
+; ADC blocks ; 0 / 2 ( 0 % ) ;
++------------------------------------+---------------------------------------------+
+
+---------------
+VHDL File list
+---------------
+
+de_10/max10_pll_12M_14M.vhd Pll 12MHz and 14 MHz from 50MHz altera mf
+
+rtl_dar/time_pilot_de10_lite.vhd Top level for de10_lite board
+rtl_dar/time_pilot.vhd Main video board logic
+rtl_dar/time_pilot_sound_board.vhd Main sound board logic
+
+rtl_mikej/YM2149_linmix_sep.vhd Copyright (c) MikeJ - Jan 2005
+
+rtl_T80/T80se.vhdT80 Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org)
+rtl_T80/T80_Reg.vhd
+rtl_T80/T80_Pack.vhd
+rtl_T80/T80_MCode.vhd
+rtl_T80/T80_ALU.vhd
+rtl_T80/T80.vhd
+
+rtl_dar/kbd_joystick.vhd Keyboard key to player/coin input
+rtl_dar/io_ps2_keyboard.vhd Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com)
+rtl_dar/gen_ram.vhd Generic RAM (Peter Wendrich + DAR Modification)
+rtl_dar/decodeur_7_seg.vhd 7 segments display decoder
+
+rtl_dar/time_pilot_prog.vhd Time pilot video board PROMs
+rtl_dar/time_pilot_char_grphx.vhd
+rtl_dar/time_pilot_char_color_lut.vhd
+rtl_dar/time_pilot_sprite_grphx.vhd
+rtl_dar/time_pilot_sprite_color_lut.vhd
+rtl_dar/time_pilot_palette_green_red.vhd
+rtl_dar/time_pilot_palette_blue_green.vhd
+
+rtl_dar/time_pilot_sound_prog.vhd Time pilot sound board PROM
+
+----------------------
+Quartus project files
+----------------------
+de10_lite/time_pilot_de10_lite.sdc Timequest constraints file
+de10_lite/time_pilot_de10_lite.qsf de10_lite settings (files,pins...)
+de10_lite/time_pilot_de10_lite.qpf de10_lite project
+
+-----------------------------
+Required ROMs (Not included)
+-----------------------------
+You need the following 11 ROMs binary files from timeplt.zip (MAME)
+
+tm1, tm2,tm3, tm4, tm5, tm6, tm7
+timeplt.b4
+timeplt.b5
+timeplt.e9
+timeplt.e12
+
+------
+Tools
+------
+You need to build vhdl files from the binary file :
+ - Unzip the roms file in the tools/time_pilot_unzip directory
+ - Double click (execute) the script tools/make_time_pilot_proms.bat to get the following files
+
+time_pilot_prog.vhd : tm1, tm2,tm3
+time_pilot_sprite_grphx.vhd : tm4, tm5
+time_pilot_char_grphx.vhd : tm6
+time_pilot_sound_prog.vhd : tm7
+time_pilot_palette_blue_green.vhd : timeplt.b4
+time_pilot_palette_green_red.vhd : timeplt.b5
+time_pilot_sprite_color_lut.vhd : timeplt.e9
+time_pilot_char_color_lut.vhd : timeplt.e12
+
+
+*DO NOT REDISTRIBUTE THESE FILES*
+
+VHDL files are needed to compile and include roms into the project
+
+The script make_time_pilot_proms.bat uses make_vhdl_prom executables delivered both in linux and windows version. The script itself is delivered only in windows version (.bat) but should be easily ported to linux.
+
+Source code of make_vhdl_prom.c is also delivered.
+
+---------------------------------
+Compiling for de10_lite
+---------------------------------
+You can build the project with ROM image embeded in the sof file.
+*DO NOT REDISTRIBUTE THESE FILES*
+
+3 steps
+
+ - put the VHDL ROM files (.vhd) into the rtl_dar directory
+ - build time_pilot_de10_lite
+ - program time_pilot_de10_lite.sof
+
+------------------------
+------------------------
+End of file
+------------------------
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/Release/time_pilot_mist.rbf b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/Release/time_pilot_mist.rbf
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/Release/time_pilot_mist.rbf
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/Release/time_pilot_mist.rbf
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/clean.bat b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/clean.bat
new file mode 100644
index 00000000..83fb0c47
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/clean.bat
@@ -0,0 +1,15 @@
+@echo off
+del /s *.bak
+del /s *.orig
+del /s *.rej
+rmdir /s /q db
+rmdir /s /q incremental_db
+rmdir /s /q output_files
+rmdir /s /q simulation
+rmdir /s /q greybox_tmp
+del PLLJ_PLLSPE_INFO.txt
+del *.qws
+del *.ppf
+del *.qip
+del *.ddb
+pause
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80.vhd
new file mode 100644
index 00000000..398fa0df
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80.vhd
@@ -0,0 +1,1073 @@
+--
+-- Z80 compatible microprocessor core
+--
+-- Version : 0247
+--
+-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org)
+--
+-- All rights reserved
+--
+-- Redistribution and use in source and synthezised forms, with or without
+-- modification, are permitted provided that the following conditions are met:
+--
+-- Redistributions of source code must retain the above copyright notice,
+-- this list of conditions and the following disclaimer.
+--
+-- Redistributions in synthesized form must reproduce the above copyright
+-- notice, this list of conditions and the following disclaimer in the
+-- documentation and/or other materials provided with the distribution.
+--
+-- Neither the name of the author nor the names of other contributors may
+-- be used to endorse or promote products derived from this software without
+-- specific prior written permission.
+--
+-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
+-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+-- POSSIBILITY OF SUCH DAMAGE.
+--
+-- Please report bugs to the author, but before you do so, please
+-- make sure that this is not a derivative work and that
+-- you have the latest version of this file.
+--
+-- The latest version of this file can be found at:
+-- http://www.opencores.org/cvsweb.shtml/t80/
+--
+-- Limitations :
+--
+-- File history :
+--
+-- 0208 : First complete release
+--
+-- 0210 : Fixed wait and halt
+--
+-- 0211 : Fixed Refresh addition and IM 1
+--
+-- 0214 : Fixed mostly flags, only the block instructions now fail the zex regression test
+--
+-- 0232 : Removed refresh address output for Mode > 1 and added DJNZ M1_n fix by Mike Johnson
+--
+-- 0235 : Added clock enable and IM 2 fix by Mike Johnson
+--
+-- 0237 : Changed 8080 I/O address output, added IntE output
+--
+-- 0238 : Fixed (IX/IY+d) timing and 16 bit ADC and SBC zero flag
+--
+-- 0240 : Added interrupt ack fix by Mike Johnson, changed (IX/IY+d) timing and changed flags in GB mode
+--
+-- 0242 : Added I/O wait, fixed refresh address, moved some registers to RAM
+--
+-- 0247 : Fixed bus req/ack cycle
+--
+
+library IEEE;
+use IEEE.std_logic_1164.all;
+use IEEE.numeric_std.all;
+use work.T80_Pack.all;
+
+entity T80 is
+ generic(
+ Mode : integer := 0; -- 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB
+ IOWait : integer := 0; -- 1 => Single cycle I/O, 1 => Std I/O cycle
+ Flag_C : integer := 0;
+ Flag_N : integer := 1;
+ Flag_P : integer := 2;
+ Flag_X : integer := 3;
+ Flag_H : integer := 4;
+ Flag_Y : integer := 5;
+ Flag_Z : integer := 6;
+ Flag_S : integer := 7
+ );
+ port(
+ RESET_n : in std_logic;
+ CLK_n : in std_logic;
+ CEN : in std_logic;
+ WAIT_n : in std_logic;
+ INT_n : in std_logic;
+ NMI_n : in std_logic;
+ BUSRQ_n : in std_logic;
+ M1_n : out std_logic;
+ IORQ : out std_logic;
+ NoRead : out std_logic;
+ Write : out std_logic;
+ RFSH_n : out std_logic;
+ HALT_n : out std_logic;
+ BUSAK_n : out std_logic;
+ A : out std_logic_vector(15 downto 0);
+ DInst : in std_logic_vector(7 downto 0);
+ DI : in std_logic_vector(7 downto 0);
+ DO : out std_logic_vector(7 downto 0);
+ MC : out std_logic_vector(2 downto 0);
+ TS : out std_logic_vector(2 downto 0);
+ IntCycle_n : out std_logic;
+ IntE : out std_logic;
+ Stop : out std_logic
+ );
+end T80;
+
+architecture rtl of T80 is
+
+ constant aNone : std_logic_vector(2 downto 0) := "111";
+ constant aBC : std_logic_vector(2 downto 0) := "000";
+ constant aDE : std_logic_vector(2 downto 0) := "001";
+ constant aXY : std_logic_vector(2 downto 0) := "010";
+ constant aIOA : std_logic_vector(2 downto 0) := "100";
+ constant aSP : std_logic_vector(2 downto 0) := "101";
+ constant aZI : std_logic_vector(2 downto 0) := "110";
+
+ -- Registers
+ signal ACC, F : std_logic_vector(7 downto 0);
+ signal Ap, Fp : std_logic_vector(7 downto 0);
+ signal I : std_logic_vector(7 downto 0);
+ signal R : unsigned(7 downto 0);
+ signal SP, PC : unsigned(15 downto 0);
+ signal RegDIH : std_logic_vector(7 downto 0);
+ signal RegDIL : std_logic_vector(7 downto 0);
+ signal RegBusA : std_logic_vector(15 downto 0);
+ signal RegBusB : std_logic_vector(15 downto 0);
+ signal RegBusC : std_logic_vector(15 downto 0);
+ signal RegAddrA_r : std_logic_vector(2 downto 0);
+ signal RegAddrA : std_logic_vector(2 downto 0);
+ signal RegAddrB_r : std_logic_vector(2 downto 0);
+ signal RegAddrB : std_logic_vector(2 downto 0);
+ signal RegAddrC : std_logic_vector(2 downto 0);
+ signal RegWEH : std_logic;
+ signal RegWEL : std_logic;
+ signal Alternate : std_logic;
+
+ -- Help Registers
+ signal TmpAddr : std_logic_vector(15 downto 0); -- Temporary address register
+ signal IR : std_logic_vector(7 downto 0); -- Instruction register
+ signal ISet : std_logic_vector(1 downto 0); -- Instruction set selector
+ signal RegBusA_r : std_logic_vector(15 downto 0);
+
+ signal ID16 : signed(15 downto 0);
+ signal Save_Mux : std_logic_vector(7 downto 0);
+
+ signal TState : unsigned(2 downto 0);
+ signal MCycle : std_logic_vector(2 downto 0);
+ signal IntE_FF1 : std_logic;
+ signal IntE_FF2 : std_logic;
+ signal Halt_FF : std_logic;
+ signal BusReq_s : std_logic;
+ signal BusAck : std_logic;
+ signal ClkEn : std_logic;
+ signal NMI_s : std_logic;
+ signal INT_s : std_logic;
+ signal IStatus : std_logic_vector(1 downto 0);
+
+ signal DI_Reg : std_logic_vector(7 downto 0);
+ signal T_Res : std_logic;
+ signal XY_State : std_logic_vector(1 downto 0);
+ signal Pre_XY_F_M : std_logic_vector(2 downto 0);
+ signal NextIs_XY_Fetch : std_logic;
+ signal XY_Ind : std_logic;
+ signal No_BTR : std_logic;
+ signal BTR_r : std_logic;
+ signal Auto_Wait : std_logic;
+ signal Auto_Wait_t1 : std_logic;
+ signal Auto_Wait_t2 : std_logic;
+ signal IncDecZ : std_logic;
+
+ -- ALU signals
+ signal BusB : std_logic_vector(7 downto 0);
+ signal BusA : std_logic_vector(7 downto 0);
+ signal ALU_Q : std_logic_vector(7 downto 0);
+ signal F_Out : std_logic_vector(7 downto 0);
+
+ -- Registered micro code outputs
+ signal Read_To_Reg_r : std_logic_vector(4 downto 0);
+ signal Arith16_r : std_logic;
+ signal Z16_r : std_logic;
+ signal ALU_Op_r : std_logic_vector(3 downto 0);
+ signal Save_ALU_r : std_logic;
+ signal PreserveC_r : std_logic;
+ signal MCycles : std_logic_vector(2 downto 0);
+
+ -- Micro code outputs
+ signal MCycles_d : std_logic_vector(2 downto 0);
+ signal TStates : std_logic_vector(2 downto 0);
+ signal IntCycle : std_logic;
+ signal NMICycle : std_logic;
+ signal Inc_PC : std_logic;
+ signal Inc_WZ : std_logic;
+ signal IncDec_16 : std_logic_vector(3 downto 0);
+ signal Prefix : std_logic_vector(1 downto 0);
+ signal Read_To_Acc : std_logic;
+ signal Read_To_Reg : std_logic;
+ signal Set_BusB_To : std_logic_vector(3 downto 0);
+ signal Set_BusA_To : std_logic_vector(3 downto 0);
+ signal ALU_Op : std_logic_vector(3 downto 0);
+ signal Save_ALU : std_logic;
+ signal PreserveC : std_logic;
+ signal Arith16 : std_logic;
+ signal Set_Addr_To : std_logic_vector(2 downto 0);
+ signal Jump : std_logic;
+ signal JumpE : std_logic;
+ signal JumpXY : std_logic;
+ signal Call : std_logic;
+ signal RstP : std_logic;
+ signal LDZ : std_logic;
+ signal LDW : std_logic;
+ signal LDSPHL : std_logic;
+ signal IORQ_i : std_logic;
+ signal Special_LD : std_logic_vector(2 downto 0);
+ signal ExchangeDH : std_logic;
+ signal ExchangeRp : std_logic;
+ signal ExchangeAF : std_logic;
+ signal ExchangeRS : std_logic;
+ signal I_DJNZ : std_logic;
+ signal I_CPL : std_logic;
+ signal I_CCF : std_logic;
+ signal I_SCF : std_logic;
+ signal I_RETN : std_logic;
+ signal I_BT : std_logic;
+ signal I_BC : std_logic;
+ signal I_BTR : std_logic;
+ signal I_RLD : std_logic;
+ signal I_RRD : std_logic;
+ signal I_INRC : std_logic;
+ signal SetDI : std_logic;
+ signal SetEI : std_logic;
+ signal IMode : std_logic_vector(1 downto 0);
+ signal Halt : std_logic;
+
+begin
+
+ mcode : T80_MCode
+ generic map(
+ Mode => Mode,
+ Flag_C => Flag_C,
+ Flag_N => Flag_N,
+ Flag_P => Flag_P,
+ Flag_X => Flag_X,
+ Flag_H => Flag_H,
+ Flag_Y => Flag_Y,
+ Flag_Z => Flag_Z,
+ Flag_S => Flag_S)
+ port map(
+ IR => IR,
+ ISet => ISet,
+ MCycle => MCycle,
+ F => F,
+ NMICycle => NMICycle,
+ IntCycle => IntCycle,
+ MCycles => MCycles_d,
+ TStates => TStates,
+ Prefix => Prefix,
+ Inc_PC => Inc_PC,
+ Inc_WZ => Inc_WZ,
+ IncDec_16 => IncDec_16,
+ Read_To_Acc => Read_To_Acc,
+ Read_To_Reg => Read_To_Reg,
+ Set_BusB_To => Set_BusB_To,
+ Set_BusA_To => Set_BusA_To,
+ ALU_Op => ALU_Op,
+ Save_ALU => Save_ALU,
+ PreserveC => PreserveC,
+ Arith16 => Arith16,
+ Set_Addr_To => Set_Addr_To,
+ IORQ => IORQ_i,
+ Jump => Jump,
+ JumpE => JumpE,
+ JumpXY => JumpXY,
+ Call => Call,
+ RstP => RstP,
+ LDZ => LDZ,
+ LDW => LDW,
+ LDSPHL => LDSPHL,
+ Special_LD => Special_LD,
+ ExchangeDH => ExchangeDH,
+ ExchangeRp => ExchangeRp,
+ ExchangeAF => ExchangeAF,
+ ExchangeRS => ExchangeRS,
+ I_DJNZ => I_DJNZ,
+ I_CPL => I_CPL,
+ I_CCF => I_CCF,
+ I_SCF => I_SCF,
+ I_RETN => I_RETN,
+ I_BT => I_BT,
+ I_BC => I_BC,
+ I_BTR => I_BTR,
+ I_RLD => I_RLD,
+ I_RRD => I_RRD,
+ I_INRC => I_INRC,
+ SetDI => SetDI,
+ SetEI => SetEI,
+ IMode => IMode,
+ Halt => Halt,
+ NoRead => NoRead,
+ Write => Write);
+
+ alu : T80_ALU
+ generic map(
+ Mode => Mode,
+ Flag_C => Flag_C,
+ Flag_N => Flag_N,
+ Flag_P => Flag_P,
+ Flag_X => Flag_X,
+ Flag_H => Flag_H,
+ Flag_Y => Flag_Y,
+ Flag_Z => Flag_Z,
+ Flag_S => Flag_S)
+ port map(
+ Arith16 => Arith16_r,
+ Z16 => Z16_r,
+ ALU_Op => ALU_Op_r,
+ IR => IR(5 downto 0),
+ ISet => ISet,
+ BusA => BusA,
+ BusB => BusB,
+ F_In => F,
+ Q => ALU_Q,
+ F_Out => F_Out);
+
+ ClkEn <= CEN and not BusAck;
+
+ T_Res <= '1' when TState = unsigned(TStates) else '0';
+
+ NextIs_XY_Fetch <= '1' when XY_State /= "00" and XY_Ind = '0' and
+ ((Set_Addr_To = aXY) or
+ (MCycle = "001" and IR = "11001011") or
+ (MCycle = "001" and IR = "00110110")) else '0';
+
+ Save_Mux <= BusB when ExchangeRp = '1' else
+ DI_Reg when Save_ALU_r = '0' else
+ ALU_Q;
+
+ process (RESET_n, CLK_n)
+ begin
+ if RESET_n = '0' then
+ PC <= (others => '0'); -- Program Counter
+ A <= (others => '0');
+ TmpAddr <= (others => '0');
+ IR <= "00000000";
+ ISet <= "00";
+ XY_State <= "00";
+ IStatus <= "00";
+ MCycles <= "000";
+ DO <= "00000000";
+
+ ACC <= (others => '1');
+ F <= (others => '1');
+ Ap <= (others => '1');
+ Fp <= (others => '1');
+ I <= (others => '0');
+ R <= (others => '0');
+ SP <= (others => '1');
+ Alternate <= '0';
+
+ Read_To_Reg_r <= "00000";
+ F <= (others => '1');
+ Arith16_r <= '0';
+ BTR_r <= '0';
+ Z16_r <= '0';
+ ALU_Op_r <= "0000";
+ Save_ALU_r <= '0';
+ PreserveC_r <= '0';
+ XY_Ind <= '0';
+
+ elsif CLK_n'event and CLK_n = '1' then
+
+ if ClkEn = '1' then
+
+ ALU_Op_r <= "0000";
+ Save_ALU_r <= '0';
+ Read_To_Reg_r <= "00000";
+
+ MCycles <= MCycles_d;
+
+ if IMode /= "11" then
+ IStatus <= IMode;
+ end if;
+
+ Arith16_r <= Arith16;
+ PreserveC_r <= PreserveC;
+ if ISet = "10" and ALU_OP(2) = '0' and ALU_OP(0) = '1' and MCycle = "011" then
+ Z16_r <= '1';
+ else
+ Z16_r <= '0';
+ end if;
+
+ if MCycle = "001" and TState(2) = '0' then
+ -- MCycle = 1 and TState = 1, 2, or 3
+
+ if TState = 2 and Wait_n = '1' then
+ if Mode < 2 then
+ A(7 downto 0) <= std_logic_vector(R);
+ A(15 downto 8) <= I;
+ R(6 downto 0) <= R(6 downto 0) + 1;
+ end if;
+
+ if Jump = '0' and Call = '0' and NMICycle = '0' and IntCycle = '0' and not (Halt_FF = '1' or Halt = '1') then
+ PC <= PC + 1;
+ end if;
+
+ if IntCycle = '1' and IStatus = "01" then
+ IR <= "11111111";
+ elsif Halt_FF = '1' or (IntCycle = '1' and IStatus = "10") or NMICycle = '1' then
+ IR <= "00000000";
+ else
+ IR <= DInst;
+ end if;
+
+ ISet <= "00";
+ if Prefix /= "00" then
+ if Prefix = "11" then
+ if IR(5) = '1' then
+ XY_State <= "10";
+ else
+ XY_State <= "01";
+ end if;
+ else
+ if Prefix = "10" then
+ XY_State <= "00";
+ XY_Ind <= '0';
+ end if;
+ ISet <= Prefix;
+ end if;
+ else
+ XY_State <= "00";
+ XY_Ind <= '0';
+ end if;
+ end if;
+
+ else
+ -- either (MCycle > 1) OR (MCycle = 1 AND TState > 3)
+
+ if MCycle = "110" then
+ XY_Ind <= '1';
+ if Prefix = "01" then
+ ISet <= "01";
+ end if;
+ end if;
+
+ if T_Res = '1' then
+ BTR_r <= (I_BT or I_BC or I_BTR) and not No_BTR;
+ if Jump = '1' then
+ A(15 downto 8) <= DI_Reg;
+ A(7 downto 0) <= TmpAddr(7 downto 0);
+ PC(15 downto 8) <= unsigned(DI_Reg);
+ PC(7 downto 0) <= unsigned(TmpAddr(7 downto 0));
+ elsif JumpXY = '1' then
+ A <= RegBusC;
+ PC <= unsigned(RegBusC);
+ elsif Call = '1' or RstP = '1' then
+ A <= TmpAddr;
+ PC <= unsigned(TmpAddr);
+ elsif MCycle = MCycles and NMICycle = '1' then
+ A <= "0000000001100110";
+ PC <= "0000000001100110";
+ elsif MCycle = "011" and IntCycle = '1' and IStatus = "10" then
+ A(15 downto 8) <= I;
+ A(7 downto 0) <= TmpAddr(7 downto 0);
+ PC(15 downto 8) <= unsigned(I);
+ PC(7 downto 0) <= unsigned(TmpAddr(7 downto 0));
+ else
+ case Set_Addr_To is
+ when aXY =>
+ if XY_State = "00" then
+ A <= RegBusC;
+ else
+ if NextIs_XY_Fetch = '1' then
+ A <= std_logic_vector(PC);
+ else
+ A <= TmpAddr;
+ end if;
+ end if;
+ when aIOA =>
+ if Mode = 3 then
+ -- Memory map I/O on GBZ80
+ A(15 downto 8) <= (others => '1');
+ elsif Mode = 2 then
+ -- Duplicate I/O address on 8080
+ A(15 downto 8) <= DI_Reg;
+ else
+ A(15 downto 8) <= ACC;
+ end if;
+ A(7 downto 0) <= DI_Reg;
+ when aSP =>
+ A <= std_logic_vector(SP);
+ when aBC =>
+ if Mode = 3 and IORQ_i = '1' then
+ -- Memory map I/O on GBZ80
+ A(15 downto 8) <= (others => '1');
+ A(7 downto 0) <= RegBusC(7 downto 0);
+ else
+ A <= RegBusC;
+ end if;
+ when aDE =>
+ A <= RegBusC;
+ when aZI =>
+ if Inc_WZ = '1' then
+ A <= std_logic_vector(unsigned(TmpAddr) + 1);
+ else
+ A(15 downto 8) <= DI_Reg;
+ A(7 downto 0) <= TmpAddr(7 downto 0);
+ end if;
+ when others =>
+ A <= std_logic_vector(PC);
+ end case;
+ end if;
+
+ Save_ALU_r <= Save_ALU;
+ ALU_Op_r <= ALU_Op;
+
+ if I_CPL = '1' then
+ -- CPL
+ ACC <= not ACC;
+ F(Flag_Y) <= not ACC(5);
+ F(Flag_H) <= '1';
+ F(Flag_X) <= not ACC(3);
+ F(Flag_N) <= '1';
+ end if;
+ if I_CCF = '1' then
+ -- CCF
+ F(Flag_C) <= not F(Flag_C);
+ F(Flag_Y) <= ACC(5);
+ F(Flag_H) <= F(Flag_C);
+ F(Flag_X) <= ACC(3);
+ F(Flag_N) <= '0';
+ end if;
+ if I_SCF = '1' then
+ -- SCF
+ F(Flag_C) <= '1';
+ F(Flag_Y) <= ACC(5);
+ F(Flag_H) <= '0';
+ F(Flag_X) <= ACC(3);
+ F(Flag_N) <= '0';
+ end if;
+ end if;
+
+ if TState = 2 and Wait_n = '1' then
+ if ISet = "01" and MCycle = "111" then
+ IR <= DInst;
+ end if;
+ if JumpE = '1' then
+ PC <= unsigned(signed(PC) + signed(DI_Reg));
+ elsif Inc_PC = '1' then
+ PC <= PC + 1;
+ end if;
+ if BTR_r = '1' then
+ PC <= PC - 2;
+ end if;
+ if RstP = '1' then
+ TmpAddr <= (others =>'0');
+ TmpAddr(5 downto 3) <= IR(5 downto 3);
+ end if;
+ end if;
+ if TState = 3 and MCycle = "110" then
+ TmpAddr <= std_logic_vector(signed(RegBusC) + signed(DI_Reg));
+ end if;
+
+ if (TState = 2 and Wait_n = '1') or (TState = 4 and MCycle = "001") then
+ if IncDec_16(2 downto 0) = "111" then
+ if IncDec_16(3) = '1' then
+ SP <= SP - 1;
+ else
+ SP <= SP + 1;
+ end if;
+ end if;
+ end if;
+
+ if LDSPHL = '1' then
+ SP <= unsigned(RegBusC);
+ end if;
+ if ExchangeAF = '1' then
+ Ap <= ACC;
+ ACC <= Ap;
+ Fp <= F;
+ F <= Fp;
+ end if;
+ if ExchangeRS = '1' then
+ Alternate <= not Alternate;
+ end if;
+ end if;
+
+ if TState = 3 then
+ if LDZ = '1' then
+ TmpAddr(7 downto 0) <= DI_Reg;
+ end if;
+ if LDW = '1' then
+ TmpAddr(15 downto 8) <= DI_Reg;
+ end if;
+
+ if Special_LD(2) = '1' then
+ case Special_LD(1 downto 0) is
+ when "00" =>
+ ACC <= I;
+ F(Flag_P) <= IntE_FF2;
+ when "01" =>
+ ACC <= std_logic_vector(R);
+ F(Flag_P) <= IntE_FF2;
+ when "10" =>
+ I <= ACC;
+ when others =>
+ R <= unsigned(ACC);
+ end case;
+ end if;
+ end if;
+
+ if (I_DJNZ = '0' and Save_ALU_r = '1') or ALU_Op_r = "1001" then
+ if Mode = 3 then
+ F(6) <= F_Out(6);
+ F(5) <= F_Out(5);
+ F(7) <= F_Out(7);
+ if PreserveC_r = '0' then
+ F(4) <= F_Out(4);
+ end if;
+ else
+ F(7 downto 1) <= F_Out(7 downto 1);
+ if PreserveC_r = '0' then
+ F(Flag_C) <= F_Out(0);
+ end if;
+ end if;
+ end if;
+ if T_Res = '1' and I_INRC = '1' then
+ F(Flag_H) <= '0';
+ F(Flag_N) <= '0';
+ if DI_Reg(7 downto 0) = "00000000" then
+ F(Flag_Z) <= '1';
+ else
+ F(Flag_Z) <= '0';
+ end if;
+ F(Flag_S) <= DI_Reg(7);
+ F(Flag_P) <= not (DI_Reg(0) xor DI_Reg(1) xor DI_Reg(2) xor DI_Reg(3) xor
+ DI_Reg(4) xor DI_Reg(5) xor DI_Reg(6) xor DI_Reg(7));
+ end if;
+
+ if TState = 1 and Auto_Wait_t1 = '0' then
+ DO <= BusB;
+ if I_RLD = '1' then
+ DO(3 downto 0) <= BusA(3 downto 0);
+ DO(7 downto 4) <= BusB(3 downto 0);
+ end if;
+ if I_RRD = '1' then
+ DO(3 downto 0) <= BusB(7 downto 4);
+ DO(7 downto 4) <= BusA(3 downto 0);
+ end if;
+ end if;
+
+ if T_Res = '1' then
+ Read_To_Reg_r(3 downto 0) <= Set_BusA_To;
+ Read_To_Reg_r(4) <= Read_To_Reg;
+ if Read_To_Acc = '1' then
+ Read_To_Reg_r(3 downto 0) <= "0111";
+ Read_To_Reg_r(4) <= '1';
+ end if;
+ end if;
+
+ if TState = 1 and I_BT = '1' then
+ F(Flag_X) <= ALU_Q(3);
+ F(Flag_Y) <= ALU_Q(1);
+ F(Flag_H) <= '0';
+ F(Flag_N) <= '0';
+ end if;
+ if I_BC = '1' or I_BT = '1' then
+ F(Flag_P) <= IncDecZ;
+ end if;
+
+ if (TState = 1 and Save_ALU_r = '0' and Auto_Wait_t1 = '0') or
+ (Save_ALU_r = '1' and ALU_OP_r /= "0111") then
+ case Read_To_Reg_r is
+ when "10111" =>
+ ACC <= Save_Mux;
+ when "10110" =>
+ DO <= Save_Mux;
+ when "11000" =>
+ SP(7 downto 0) <= unsigned(Save_Mux);
+ when "11001" =>
+ SP(15 downto 8) <= unsigned(Save_Mux);
+ when "11011" =>
+ F <= Save_Mux;
+ when others =>
+ end case;
+ end if;
+
+ end if;
+
+ end if;
+
+ end process;
+
+---------------------------------------------------------------------------
+--
+-- BC('), DE('), HL('), IX and IY
+--
+---------------------------------------------------------------------------
+ process (CLK_n)
+ begin
+ if CLK_n'event and CLK_n = '1' then
+ if ClkEn = '1' then
+ -- Bus A / Write
+ RegAddrA_r <= Alternate & Set_BusA_To(2 downto 1);
+ if XY_Ind = '0' and XY_State /= "00" and Set_BusA_To(2 downto 1) = "10" then
+ RegAddrA_r <= XY_State(1) & "11";
+ end if;
+
+ -- Bus B
+ RegAddrB_r <= Alternate & Set_BusB_To(2 downto 1);
+ if XY_Ind = '0' and XY_State /= "00" and Set_BusB_To(2 downto 1) = "10" then
+ RegAddrB_r <= XY_State(1) & "11";
+ end if;
+
+ -- Address from register
+ RegAddrC <= Alternate & Set_Addr_To(1 downto 0);
+ -- Jump (HL), LD SP,HL
+ if (JumpXY = '1' or LDSPHL = '1') then
+ RegAddrC <= Alternate & "10";
+ end if;
+ if ((JumpXY = '1' or LDSPHL = '1') and XY_State /= "00") or (MCycle = "110") then
+ RegAddrC <= XY_State(1) & "11";
+ end if;
+
+ if I_DJNZ = '1' and Save_ALU_r = '1' and Mode < 2 then
+ IncDecZ <= F_Out(Flag_Z);
+ end if;
+ if (TState = 2 or (TState = 3 and MCycle = "001")) and IncDec_16(2 downto 0) = "100" then
+ if ID16 = 0 then
+ IncDecZ <= '0';
+ else
+ IncDecZ <= '1';
+ end if;
+ end if;
+
+ RegBusA_r <= RegBusA;
+ end if;
+ end if;
+ end process;
+
+ RegAddrA <=
+ -- 16 bit increment/decrement
+ Alternate & IncDec_16(1 downto 0) when (TState = 2 or
+ (TState = 3 and MCycle = "001" and IncDec_16(2) = '1')) and XY_State = "00" else
+ XY_State(1) & "11" when (TState = 2 or
+ (TState = 3 and MCycle = "001" and IncDec_16(2) = '1')) and IncDec_16(1 downto 0) = "10" else
+ -- EX HL,DL
+ Alternate & "10" when ExchangeDH = '1' and TState = 3 else
+ Alternate & "01" when ExchangeDH = '1' and TState = 4 else
+ -- Bus A / Write
+ RegAddrA_r;
+
+ RegAddrB <=
+ -- EX HL,DL
+ Alternate & "01" when ExchangeDH = '1' and TState = 3 else
+ -- Bus B
+ RegAddrB_r;
+
+ ID16 <= signed(RegBusA) - 1 when IncDec_16(3) = '1' else
+ signed(RegBusA) + 1;
+
+ process (Save_ALU_r, Auto_Wait_t1, ALU_OP_r, Read_To_Reg_r,
+ ExchangeDH, IncDec_16, MCycle, TState, Wait_n)
+ begin
+ RegWEH <= '0';
+ RegWEL <= '0';
+ if (TState = 1 and Save_ALU_r = '0' and Auto_Wait_t1 = '0') or
+ (Save_ALU_r = '1' and ALU_OP_r /= "0111") then
+ case Read_To_Reg_r is
+ when "10000" | "10001" | "10010" | "10011" | "10100" | "10101" =>
+ RegWEH <= not Read_To_Reg_r(0);
+ RegWEL <= Read_To_Reg_r(0);
+ when others =>
+ end case;
+ end if;
+
+ if ExchangeDH = '1' and (TState = 3 or TState = 4) then
+ RegWEH <= '1';
+ RegWEL <= '1';
+ end if;
+
+ if IncDec_16(2) = '1' and ((TState = 2 and Wait_n = '1' and MCycle /= "001") or (TState = 3 and MCycle = "001")) then
+ case IncDec_16(1 downto 0) is
+ when "00" | "01" | "10" =>
+ RegWEH <= '1';
+ RegWEL <= '1';
+ when others =>
+ end case;
+ end if;
+ end process;
+
+ process (Save_Mux, RegBusB, RegBusA_r, ID16,
+ ExchangeDH, IncDec_16, MCycle, TState, Wait_n)
+ begin
+ RegDIH <= Save_Mux;
+ RegDIL <= Save_Mux;
+
+ if ExchangeDH = '1' and TState = 3 then
+ RegDIH <= RegBusB(15 downto 8);
+ RegDIL <= RegBusB(7 downto 0);
+ end if;
+ if ExchangeDH = '1' and TState = 4 then
+ RegDIH <= RegBusA_r(15 downto 8);
+ RegDIL <= RegBusA_r(7 downto 0);
+ end if;
+
+ if IncDec_16(2) = '1' and ((TState = 2 and MCycle /= "001") or (TState = 3 and MCycle = "001")) then
+ RegDIH <= std_logic_vector(ID16(15 downto 8));
+ RegDIL <= std_logic_vector(ID16(7 downto 0));
+ end if;
+ end process;
+
+ Regs : T80_Reg
+ port map(
+ Clk => CLK_n,
+ CEN => ClkEn,
+ WEH => RegWEH,
+ WEL => RegWEL,
+ AddrA => RegAddrA,
+ AddrB => RegAddrB,
+ AddrC => RegAddrC,
+ DIH => RegDIH,
+ DIL => RegDIL,
+ DOAH => RegBusA(15 downto 8),
+ DOAL => RegBusA(7 downto 0),
+ DOBH => RegBusB(15 downto 8),
+ DOBL => RegBusB(7 downto 0),
+ DOCH => RegBusC(15 downto 8),
+ DOCL => RegBusC(7 downto 0));
+
+---------------------------------------------------------------------------
+--
+-- Buses
+--
+---------------------------------------------------------------------------
+ process (CLK_n)
+ begin
+ if CLK_n'event and CLK_n = '1' then
+ if ClkEn = '1' then
+ case Set_BusB_To is
+ when "0111" =>
+ BusB <= ACC;
+ when "0000" | "0001" | "0010" | "0011" | "0100" | "0101" =>
+ if Set_BusB_To(0) = '1' then
+ BusB <= RegBusB(7 downto 0);
+ else
+ BusB <= RegBusB(15 downto 8);
+ end if;
+ when "0110" =>
+ BusB <= DI_Reg;
+ when "1000" =>
+ BusB <= std_logic_vector(SP(7 downto 0));
+ when "1001" =>
+ BusB <= std_logic_vector(SP(15 downto 8));
+ when "1010" =>
+ BusB <= "00000001";
+ when "1011" =>
+ BusB <= F;
+ when "1100" =>
+ BusB <= std_logic_vector(PC(7 downto 0));
+ when "1101" =>
+ BusB <= std_logic_vector(PC(15 downto 8));
+ when "1110" =>
+ BusB <= "00000000";
+ when others =>
+ BusB <= "--------";
+ end case;
+
+ case Set_BusA_To is
+ when "0111" =>
+ BusA <= ACC;
+ when "0000" | "0001" | "0010" | "0011" | "0100" | "0101" =>
+ if Set_BusA_To(0) = '1' then
+ BusA <= RegBusA(7 downto 0);
+ else
+ BusA <= RegBusA(15 downto 8);
+ end if;
+ when "0110" =>
+ BusA <= DI_Reg;
+ when "1000" =>
+ BusA <= std_logic_vector(SP(7 downto 0));
+ when "1001" =>
+ BusA <= std_logic_vector(SP(15 downto 8));
+ when "1010" =>
+ BusA <= "00000000";
+ when others =>
+ BusB <= "--------";
+ end case;
+ end if;
+ end if;
+ end process;
+
+---------------------------------------------------------------------------
+--
+-- Generate external control signals
+--
+---------------------------------------------------------------------------
+ process (RESET_n,CLK_n)
+ begin
+ if RESET_n = '0' then
+ RFSH_n <= '1';
+ elsif CLK_n'event and CLK_n = '1' then
+ if CEN = '1' then
+ if MCycle = "001" and ((TState = 2 and Wait_n = '1') or TState = 3) then
+ RFSH_n <= '0';
+ else
+ RFSH_n <= '1';
+ end if;
+ end if;
+ end if;
+ end process;
+
+ MC <= std_logic_vector(MCycle);
+ TS <= std_logic_vector(TState);
+ DI_Reg <= DI;
+ HALT_n <= not Halt_FF;
+ BUSAK_n <= not BusAck;
+ IntCycle_n <= not IntCycle;
+ IntE <= IntE_FF1;
+ IORQ <= IORQ_i;
+ Stop <= I_DJNZ;
+
+-------------------------------------------------------------------------
+--
+-- Syncronise inputs
+--
+-------------------------------------------------------------------------
+ process (RESET_n, CLK_n)
+ variable OldNMI_n : std_logic;
+ begin
+ if RESET_n = '0' then
+ BusReq_s <= '0';
+ INT_s <= '0';
+ NMI_s <= '0';
+ OldNMI_n := '0';
+ elsif CLK_n'event and CLK_n = '1' then
+ if CEN = '1' then
+ BusReq_s <= not BUSRQ_n;
+ INT_s <= not INT_n;
+ if NMICycle = '1' then
+ NMI_s <= '0';
+ elsif NMI_n = '0' and OldNMI_n = '1' then
+ NMI_s <= '1';
+ end if;
+ OldNMI_n := NMI_n;
+ end if;
+ end if;
+ end process;
+
+-------------------------------------------------------------------------
+--
+-- Main state machine
+--
+-------------------------------------------------------------------------
+ process (RESET_n, CLK_n)
+ begin
+ if RESET_n = '0' then
+ MCycle <= "001";
+ TState <= "000";
+ Pre_XY_F_M <= "000";
+ Halt_FF <= '0';
+ BusAck <= '0';
+ NMICycle <= '0';
+ IntCycle <= '0';
+ IntE_FF1 <= '0';
+ IntE_FF2 <= '0';
+ No_BTR <= '0';
+ Auto_Wait_t1 <= '0';
+ Auto_Wait_t2 <= '0';
+ M1_n <= '1';
+ elsif CLK_n'event and CLK_n = '1' then
+ if CEN = '1' then
+ if T_Res = '1' then
+ Auto_Wait_t1 <= '0';
+ else
+ Auto_Wait_t1 <= Auto_Wait or IORQ_i;
+ end if;
+ Auto_Wait_t2 <= Auto_Wait_t1;
+ No_BTR <= (I_BT and (not IR(4) or not F(Flag_P))) or
+ (I_BC and (not IR(4) or F(Flag_Z) or not F(Flag_P))) or
+ (I_BTR and (not IR(4) or F(Flag_Z)));
+ if TState = 2 then
+ if SetEI = '1' then
+ IntE_FF1 <= '1';
+ IntE_FF2 <= '1';
+ end if;
+ if I_RETN = '1' then
+ IntE_FF1 <= IntE_FF2;
+ end if;
+ end if;
+ if TState = 3 then
+ if SetDI = '1' then
+ IntE_FF1 <= '0';
+ IntE_FF2 <= '0';
+ end if;
+ end if;
+ if IntCycle = '1' or NMICycle = '1' then
+ Halt_FF <= '0';
+ end if;
+ if MCycle = "001" and TState = 2 and Wait_n = '1' then
+ M1_n <= '1';
+ end if;
+ if BusReq_s = '1' and BusAck = '1' then
+ else
+ BusAck <= '0';
+ if TState = 2 and Wait_n = '0' then
+ elsif T_Res = '1' then
+ if Halt = '1' then
+ Halt_FF <= '1';
+ end if;
+ if BusReq_s = '1' then
+ BusAck <= '1';
+ else
+ TState <= "001";
+ if NextIs_XY_Fetch = '1' then
+ MCycle <= "110";
+ Pre_XY_F_M <= MCycle;
+ if IR = "00110110" and Mode = 0 then
+ Pre_XY_F_M <= "010";
+ end if;
+ elsif (MCycle = "111") or
+ (MCycle = "110" and Mode = 1 and ISet /= "01") then
+ MCycle <= std_logic_vector(unsigned(Pre_XY_F_M) + 1);
+ elsif (MCycle = MCycles) or
+ No_BTR = '1' or
+ (MCycle = "010" and I_DJNZ = '1' and IncDecZ = '1') then
+ M1_n <= '0';
+ MCycle <= "001";
+ IntCycle <= '0';
+ NMICycle <= '0';
+ if NMI_s = '1' and Prefix = "00" then
+ NMICycle <= '1';
+ IntE_FF1 <= '0';
+ elsif (IntE_FF1 = '1' and INT_s = '1') and Prefix = "00" and SetEI = '0' then
+ IntCycle <= '1';
+ IntE_FF1 <= '0';
+ IntE_FF2 <= '0';
+ end if;
+ else
+ MCycle <= std_logic_vector(unsigned(MCycle) + 1);
+ end if;
+ end if;
+ else
+ if (Auto_Wait = '1' and Auto_Wait_t2 = '0') nor
+ (IOWait = 1 and IORQ_i = '1' and Auto_Wait_t1 = '0') then
+ TState <= TState + 1;
+ end if;
+ end if;
+ end if;
+ if TState = 0 then
+ M1_n <= '0';
+ end if;
+ end if;
+ end if;
+ end process;
+
+ process (IntCycle, NMICycle, MCycle)
+ begin
+ Auto_Wait <= '0';
+ if IntCycle = '1' or NMICycle = '1' then
+ if MCycle = "001" then
+ Auto_Wait <= '1';
+ end if;
+ end if;
+ end process;
+
+end;
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T8080se.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T8080se.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/T80/T8080se.vhd
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T8080se.vhd
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80_ALU.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80_ALU.vhd
new file mode 100644
index 00000000..86fddce7
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80_ALU.vhd
@@ -0,0 +1,351 @@
+--
+-- Z80 compatible microprocessor core
+--
+-- Version : 0247
+--
+-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org)
+--
+-- All rights reserved
+--
+-- Redistribution and use in source and synthezised forms, with or without
+-- modification, are permitted provided that the following conditions are met:
+--
+-- Redistributions of source code must retain the above copyright notice,
+-- this list of conditions and the following disclaimer.
+--
+-- Redistributions in synthesized form must reproduce the above copyright
+-- notice, this list of conditions and the following disclaimer in the
+-- documentation and/or other materials provided with the distribution.
+--
+-- Neither the name of the author nor the names of other contributors may
+-- be used to endorse or promote products derived from this software without
+-- specific prior written permission.
+--
+-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
+-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+-- POSSIBILITY OF SUCH DAMAGE.
+--
+-- Please report bugs to the author, but before you do so, please
+-- make sure that this is not a derivative work and that
+-- you have the latest version of this file.
+--
+-- The latest version of this file can be found at:
+-- http://www.opencores.org/cvsweb.shtml/t80/
+--
+-- Limitations :
+--
+-- File history :
+--
+-- 0214 : Fixed mostly flags, only the block instructions now fail the zex regression test
+--
+-- 0238 : Fixed zero flag for 16 bit SBC and ADC
+--
+-- 0240 : Added GB operations
+--
+-- 0242 : Cleanup
+--
+-- 0247 : Cleanup
+--
+
+library IEEE;
+use IEEE.std_logic_1164.all;
+use IEEE.numeric_std.all;
+
+entity T80_ALU is
+ generic(
+ Mode : integer := 0;
+ Flag_C : integer := 0;
+ Flag_N : integer := 1;
+ Flag_P : integer := 2;
+ Flag_X : integer := 3;
+ Flag_H : integer := 4;
+ Flag_Y : integer := 5;
+ Flag_Z : integer := 6;
+ Flag_S : integer := 7
+ );
+ port(
+ Arith16 : in std_logic;
+ Z16 : in std_logic;
+ ALU_Op : in std_logic_vector(3 downto 0);
+ IR : in std_logic_vector(5 downto 0);
+ ISet : in std_logic_vector(1 downto 0);
+ BusA : in std_logic_vector(7 downto 0);
+ BusB : in std_logic_vector(7 downto 0);
+ F_In : in std_logic_vector(7 downto 0);
+ Q : out std_logic_vector(7 downto 0);
+ F_Out : out std_logic_vector(7 downto 0)
+ );
+end T80_ALU;
+
+architecture rtl of T80_ALU is
+
+ procedure AddSub(A : std_logic_vector;
+ B : std_logic_vector;
+ Sub : std_logic;
+ Carry_In : std_logic;
+ signal Res : out std_logic_vector;
+ signal Carry : out std_logic) is
+ variable B_i : unsigned(A'length - 1 downto 0);
+ variable Res_i : unsigned(A'length + 1 downto 0);
+ begin
+ if Sub = '1' then
+ B_i := not unsigned(B);
+ else
+ B_i := unsigned(B);
+ end if;
+ Res_i := unsigned("0" & A & Carry_In) + unsigned("0" & B_i & "1");
+ Carry <= Res_i(A'length + 1);
+ Res <= std_logic_vector(Res_i(A'length downto 1));
+ end;
+
+ -- AddSub variables (temporary signals)
+ signal UseCarry : std_logic;
+ signal Carry7_v : std_logic;
+ signal Overflow_v : std_logic;
+ signal HalfCarry_v : std_logic;
+ signal Carry_v : std_logic;
+ signal Q_v : std_logic_vector(7 downto 0);
+
+ signal BitMask : std_logic_vector(7 downto 0);
+
+begin
+
+ with IR(5 downto 3) select BitMask <= "00000001" when "000",
+ "00000010" when "001",
+ "00000100" when "010",
+ "00001000" when "011",
+ "00010000" when "100",
+ "00100000" when "101",
+ "01000000" when "110",
+ "10000000" when others;
+
+ UseCarry <= not ALU_Op(2) and ALU_Op(0);
+ AddSub(BusA(3 downto 0), BusB(3 downto 0), ALU_Op(1), ALU_Op(1) xor (UseCarry and F_In(Flag_C)), Q_v(3 downto 0), HalfCarry_v);
+ AddSub(BusA(6 downto 4), BusB(6 downto 4), ALU_Op(1), HalfCarry_v, Q_v(6 downto 4), Carry7_v);
+ AddSub(BusA(7 downto 7), BusB(7 downto 7), ALU_Op(1), Carry7_v, Q_v(7 downto 7), Carry_v);
+ OverFlow_v <= Carry_v xor Carry7_v;
+
+ process (Arith16, ALU_OP, F_In, BusA, BusB, IR, Q_v, Carry_v, HalfCarry_v, OverFlow_v, BitMask, ISet, Z16)
+ variable Q_t : std_logic_vector(7 downto 0);
+ variable DAA_Q : unsigned(8 downto 0);
+ begin
+ Q_t := "--------";
+ F_Out <= F_In;
+ DAA_Q := "---------";
+ case ALU_Op is
+ when "0000" | "0001" | "0010" | "0011" | "0100" | "0101" | "0110" | "0111" =>
+ F_Out(Flag_N) <= '0';
+ F_Out(Flag_C) <= '0';
+ case ALU_OP(2 downto 0) is
+ when "000" | "001" => -- ADD, ADC
+ Q_t := Q_v;
+ F_Out(Flag_C) <= Carry_v;
+ F_Out(Flag_H) <= HalfCarry_v;
+ F_Out(Flag_P) <= OverFlow_v;
+ when "010" | "011" | "111" => -- SUB, SBC, CP
+ Q_t := Q_v;
+ F_Out(Flag_N) <= '1';
+ F_Out(Flag_C) <= not Carry_v;
+ F_Out(Flag_H) <= not HalfCarry_v;
+ F_Out(Flag_P) <= OverFlow_v;
+ when "100" => -- AND
+ Q_t(7 downto 0) := BusA and BusB;
+ F_Out(Flag_H) <= '1';
+ when "101" => -- XOR
+ Q_t(7 downto 0) := BusA xor BusB;
+ F_Out(Flag_H) <= '0';
+ when others => -- OR "110"
+ Q_t(7 downto 0) := BusA or BusB;
+ F_Out(Flag_H) <= '0';
+ end case;
+ if ALU_Op(2 downto 0) = "111" then -- CP
+ F_Out(Flag_X) <= BusB(3);
+ F_Out(Flag_Y) <= BusB(5);
+ else
+ F_Out(Flag_X) <= Q_t(3);
+ F_Out(Flag_Y) <= Q_t(5);
+ end if;
+ if Q_t(7 downto 0) = "00000000" then
+ F_Out(Flag_Z) <= '1';
+ if Z16 = '1' then
+ F_Out(Flag_Z) <= F_In(Flag_Z); -- 16 bit ADC,SBC
+ end if;
+ else
+ F_Out(Flag_Z) <= '0';
+ end if;
+ F_Out(Flag_S) <= Q_t(7);
+ case ALU_Op(2 downto 0) is
+ when "000" | "001" | "010" | "011" | "111" => -- ADD, ADC, SUB, SBC, CP
+ when others =>
+ F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor
+ Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7));
+ end case;
+ if Arith16 = '1' then
+ F_Out(Flag_S) <= F_In(Flag_S);
+ F_Out(Flag_Z) <= F_In(Flag_Z);
+ F_Out(Flag_P) <= F_In(Flag_P);
+ end if;
+ when "1100" =>
+ -- DAA
+ F_Out(Flag_H) <= F_In(Flag_H);
+ F_Out(Flag_C) <= F_In(Flag_C);
+ DAA_Q(7 downto 0) := unsigned(BusA);
+ DAA_Q(8) := '0';
+ if F_In(Flag_N) = '0' then
+ -- After addition
+ -- Alow > 9 or H = 1
+ if DAA_Q(3 downto 0) > 9 or F_In(Flag_H) = '1' then
+ if (DAA_Q(3 downto 0) > 9) then
+ F_Out(Flag_H) <= '1';
+ else
+ F_Out(Flag_H) <= '0';
+ end if;
+ DAA_Q := DAA_Q + 6;
+ end if;
+ -- new Ahigh > 9 or C = 1
+ if DAA_Q(8 downto 4) > 9 or F_In(Flag_C) = '1' then
+ DAA_Q := DAA_Q + 96; -- 0x60
+ end if;
+ else
+ -- After subtraction
+ if DAA_Q(3 downto 0) > 9 or F_In(Flag_H) = '1' then
+ if DAA_Q(3 downto 0) > 5 then
+ F_Out(Flag_H) <= '0';
+ end if;
+ DAA_Q(7 downto 0) := DAA_Q(7 downto 0) - 6;
+ end if;
+ if unsigned(BusA) > 153 or F_In(Flag_C) = '1' then
+ DAA_Q := DAA_Q - 352; -- 0x160
+ end if;
+ end if;
+ F_Out(Flag_X) <= DAA_Q(3);
+ F_Out(Flag_Y) <= DAA_Q(5);
+ F_Out(Flag_C) <= F_In(Flag_C) or DAA_Q(8);
+ Q_t := std_logic_vector(DAA_Q(7 downto 0));
+ if DAA_Q(7 downto 0) = "00000000" then
+ F_Out(Flag_Z) <= '1';
+ else
+ F_Out(Flag_Z) <= '0';
+ end if;
+ F_Out(Flag_S) <= DAA_Q(7);
+ F_Out(Flag_P) <= not (DAA_Q(0) xor DAA_Q(1) xor DAA_Q(2) xor DAA_Q(3) xor
+ DAA_Q(4) xor DAA_Q(5) xor DAA_Q(6) xor DAA_Q(7));
+ when "1101" | "1110" =>
+ -- RLD, RRD
+ Q_t(7 downto 4) := BusA(7 downto 4);
+ if ALU_Op(0) = '1' then
+ Q_t(3 downto 0) := BusB(7 downto 4);
+ else
+ Q_t(3 downto 0) := BusB(3 downto 0);
+ end if;
+ F_Out(Flag_H) <= '0';
+ F_Out(Flag_N) <= '0';
+ F_Out(Flag_X) <= Q_t(3);
+ F_Out(Flag_Y) <= Q_t(5);
+ if Q_t(7 downto 0) = "00000000" then
+ F_Out(Flag_Z) <= '1';
+ else
+ F_Out(Flag_Z) <= '0';
+ end if;
+ F_Out(Flag_S) <= Q_t(7);
+ F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor
+ Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7));
+ when "1001" =>
+ -- BIT
+ Q_t(7 downto 0) := BusB and BitMask;
+ F_Out(Flag_S) <= Q_t(7);
+ if Q_t(7 downto 0) = "00000000" then
+ F_Out(Flag_Z) <= '1';
+ F_Out(Flag_P) <= '1';
+ else
+ F_Out(Flag_Z) <= '0';
+ F_Out(Flag_P) <= '0';
+ end if;
+ F_Out(Flag_H) <= '1';
+ F_Out(Flag_N) <= '0';
+ F_Out(Flag_X) <= '0';
+ F_Out(Flag_Y) <= '0';
+ if IR(2 downto 0) /= "110" then
+ F_Out(Flag_X) <= BusB(3);
+ F_Out(Flag_Y) <= BusB(5);
+ end if;
+ when "1010" =>
+ -- SET
+ Q_t(7 downto 0) := BusB or BitMask;
+ when "1011" =>
+ -- RES
+ Q_t(7 downto 0) := BusB and not BitMask;
+ when "1000" =>
+ -- ROT
+ case IR(5 downto 3) is
+ when "000" => -- RLC
+ Q_t(7 downto 1) := BusA(6 downto 0);
+ Q_t(0) := BusA(7);
+ F_Out(Flag_C) <= BusA(7);
+ when "010" => -- RL
+ Q_t(7 downto 1) := BusA(6 downto 0);
+ Q_t(0) := F_In(Flag_C);
+ F_Out(Flag_C) <= BusA(7);
+ when "001" => -- RRC
+ Q_t(6 downto 0) := BusA(7 downto 1);
+ Q_t(7) := BusA(0);
+ F_Out(Flag_C) <= BusA(0);
+ when "011" => -- RR
+ Q_t(6 downto 0) := BusA(7 downto 1);
+ Q_t(7) := F_In(Flag_C);
+ F_Out(Flag_C) <= BusA(0);
+ when "100" => -- SLA
+ Q_t(7 downto 1) := BusA(6 downto 0);
+ Q_t(0) := '0';
+ F_Out(Flag_C) <= BusA(7);
+ when "110" => -- SLL (Undocumented) / SWAP
+ if Mode = 3 then
+ Q_t(7 downto 4) := BusA(3 downto 0);
+ Q_t(3 downto 0) := BusA(7 downto 4);
+ F_Out(Flag_C) <= '0';
+ else
+ Q_t(7 downto 1) := BusA(6 downto 0);
+ Q_t(0) := '1';
+ F_Out(Flag_C) <= BusA(7);
+ end if;
+ when "101" => -- SRA
+ Q_t(6 downto 0) := BusA(7 downto 1);
+ Q_t(7) := BusA(7);
+ F_Out(Flag_C) <= BusA(0);
+ when others => -- SRL
+ Q_t(6 downto 0) := BusA(7 downto 1);
+ Q_t(7) := '0';
+ F_Out(Flag_C) <= BusA(0);
+ end case;
+ F_Out(Flag_H) <= '0';
+ F_Out(Flag_N) <= '0';
+ F_Out(Flag_X) <= Q_t(3);
+ F_Out(Flag_Y) <= Q_t(5);
+ F_Out(Flag_S) <= Q_t(7);
+ if Q_t(7 downto 0) = "00000000" then
+ F_Out(Flag_Z) <= '1';
+ else
+ F_Out(Flag_Z) <= '0';
+ end if;
+ F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor
+ Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7));
+ if ISet = "00" then
+ F_Out(Flag_P) <= F_In(Flag_P);
+ F_Out(Flag_S) <= F_In(Flag_S);
+ F_Out(Flag_Z) <= F_In(Flag_Z);
+ end if;
+ when others =>
+ null;
+ end case;
+ Q <= Q_t;
+ end process;
+
+end;
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80_MCode.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80_MCode.vhd
new file mode 100644
index 00000000..4cc30f35
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80_MCode.vhd
@@ -0,0 +1,1934 @@
+--
+-- Z80 compatible microprocessor core
+--
+-- Version : 0242
+--
+-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org)
+--
+-- All rights reserved
+--
+-- Redistribution and use in source and synthezised forms, with or without
+-- modification, are permitted provided that the following conditions are met:
+--
+-- Redistributions of source code must retain the above copyright notice,
+-- this list of conditions and the following disclaimer.
+--
+-- Redistributions in synthesized form must reproduce the above copyright
+-- notice, this list of conditions and the following disclaimer in the
+-- documentation and/or other materials provided with the distribution.
+--
+-- Neither the name of the author nor the names of other contributors may
+-- be used to endorse or promote products derived from this software without
+-- specific prior written permission.
+--
+-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
+-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+-- POSSIBILITY OF SUCH DAMAGE.
+--
+-- Please report bugs to the author, but before you do so, please
+-- make sure that this is not a derivative work and that
+-- you have the latest version of this file.
+--
+-- The latest version of this file can be found at:
+-- http://www.opencores.org/cvsweb.shtml/t80/
+--
+-- Limitations :
+--
+-- File history :
+--
+-- 0208 : First complete release
+--
+-- 0211 : Fixed IM 1
+--
+-- 0214 : Fixed mostly flags, only the block instructions now fail the zex regression test
+--
+-- 0235 : Added IM 2 fix by Mike Johnson
+--
+-- 0238 : Added NoRead signal
+--
+-- 0238b: Fixed instruction timing for POP and DJNZ
+--
+-- 0240 : Added (IX/IY+d) states, removed op-codes from mode 2 and added all remaining mode 3 op-codes
+--
+-- 0242 : Fixed I/O instruction timing, cleanup
+--
+
+library IEEE;
+use IEEE.std_logic_1164.all;
+use IEEE.numeric_std.all;
+
+entity T80_MCode is
+ generic(
+ Mode : integer := 0;
+ Flag_C : integer := 0;
+ Flag_N : integer := 1;
+ Flag_P : integer := 2;
+ Flag_X : integer := 3;
+ Flag_H : integer := 4;
+ Flag_Y : integer := 5;
+ Flag_Z : integer := 6;
+ Flag_S : integer := 7
+ );
+ port(
+ IR : in std_logic_vector(7 downto 0);
+ ISet : in std_logic_vector(1 downto 0);
+ MCycle : in std_logic_vector(2 downto 0);
+ F : in std_logic_vector(7 downto 0);
+ NMICycle : in std_logic;
+ IntCycle : in std_logic;
+ MCycles : out std_logic_vector(2 downto 0);
+ TStates : out std_logic_vector(2 downto 0);
+ Prefix : out std_logic_vector(1 downto 0); -- None,BC,ED,DD/FD
+ Inc_PC : out std_logic;
+ Inc_WZ : out std_logic;
+ IncDec_16 : out std_logic_vector(3 downto 0); -- BC,DE,HL,SP 0 is inc
+ Read_To_Reg : out std_logic;
+ Read_To_Acc : out std_logic;
+ Set_BusA_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F
+ Set_BusB_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0
+ ALU_Op : out std_logic_vector(3 downto 0);
+ -- ADD, ADC, SUB, SBC, AND, XOR, OR, CP, ROT, BIT, SET, RES, DAA, RLD, RRD, None
+ Save_ALU : out std_logic;
+ PreserveC : out std_logic;
+ Arith16 : out std_logic;
+ Set_Addr_To : out std_logic_vector(2 downto 0); -- aNone,aXY,aIOA,aSP,aBC,aDE,aZI
+ IORQ : out std_logic;
+ Jump : out std_logic;
+ JumpE : out std_logic;
+ JumpXY : out std_logic;
+ Call : out std_logic;
+ RstP : out std_logic;
+ LDZ : out std_logic;
+ LDW : out std_logic;
+ LDSPHL : out std_logic;
+ Special_LD : out std_logic_vector(2 downto 0); -- A,I;A,R;I,A;R,A;None
+ ExchangeDH : out std_logic;
+ ExchangeRp : out std_logic;
+ ExchangeAF : out std_logic;
+ ExchangeRS : out std_logic;
+ I_DJNZ : out std_logic;
+ I_CPL : out std_logic;
+ I_CCF : out std_logic;
+ I_SCF : out std_logic;
+ I_RETN : out std_logic;
+ I_BT : out std_logic;
+ I_BC : out std_logic;
+ I_BTR : out std_logic;
+ I_RLD : out std_logic;
+ I_RRD : out std_logic;
+ I_INRC : out std_logic;
+ SetDI : out std_logic;
+ SetEI : out std_logic;
+ IMode : out std_logic_vector(1 downto 0);
+ Halt : out std_logic;
+ NoRead : out std_logic;
+ Write : out std_logic
+ );
+end T80_MCode;
+
+architecture rtl of T80_MCode is
+
+ constant aNone : std_logic_vector(2 downto 0) := "111";
+ constant aBC : std_logic_vector(2 downto 0) := "000";
+ constant aDE : std_logic_vector(2 downto 0) := "001";
+ constant aXY : std_logic_vector(2 downto 0) := "010";
+ constant aIOA : std_logic_vector(2 downto 0) := "100";
+ constant aSP : std_logic_vector(2 downto 0) := "101";
+ constant aZI : std_logic_vector(2 downto 0) := "110";
+-- constant aNone : std_logic_vector(2 downto 0) := "000";
+-- constant aXY : std_logic_vector(2 downto 0) := "001";
+-- constant aIOA : std_logic_vector(2 downto 0) := "010";
+-- constant aSP : std_logic_vector(2 downto 0) := "011";
+-- constant aBC : std_logic_vector(2 downto 0) := "100";
+-- constant aDE : std_logic_vector(2 downto 0) := "101";
+-- constant aZI : std_logic_vector(2 downto 0) := "110";
+
+ function is_cc_true(
+ F : std_logic_vector(7 downto 0);
+ cc : bit_vector(2 downto 0)
+ ) return boolean is
+ begin
+ if Mode = 3 then
+ case cc is
+ when "000" => return F(7) = '0'; -- NZ
+ when "001" => return F(7) = '1'; -- Z
+ when "010" => return F(4) = '0'; -- NC
+ when "011" => return F(4) = '1'; -- C
+ when "100" => return false;
+ when "101" => return false;
+ when "110" => return false;
+ when "111" => return false;
+ end case;
+ else
+ case cc is
+ when "000" => return F(6) = '0'; -- NZ
+ when "001" => return F(6) = '1'; -- Z
+ when "010" => return F(0) = '0'; -- NC
+ when "011" => return F(0) = '1'; -- C
+ when "100" => return F(2) = '0'; -- PO
+ when "101" => return F(2) = '1'; -- PE
+ when "110" => return F(7) = '0'; -- P
+ when "111" => return F(7) = '1'; -- M
+ end case;
+ end if;
+ end;
+
+begin
+
+ process (IR, ISet, MCycle, F, NMICycle, IntCycle)
+ variable DDD : std_logic_vector(2 downto 0);
+ variable SSS : std_logic_vector(2 downto 0);
+ variable DPair : std_logic_vector(1 downto 0);
+ variable IRB : bit_vector(7 downto 0);
+ begin
+ DDD := IR(5 downto 3);
+ SSS := IR(2 downto 0);
+ DPair := IR(5 downto 4);
+ IRB := to_bitvector(IR);
+
+ MCycles <= "001";
+ if MCycle = "001" then
+ TStates <= "100";
+ else
+ TStates <= "011";
+ end if;
+ Prefix <= "00";
+ Inc_PC <= '0';
+ Inc_WZ <= '0';
+ IncDec_16 <= "0000";
+ Read_To_Acc <= '0';
+ Read_To_Reg <= '0';
+ Set_BusB_To <= "0000";
+ Set_BusA_To <= "0000";
+ ALU_Op <= "0" & IR(5 downto 3);
+ Save_ALU <= '0';
+ PreserveC <= '0';
+ Arith16 <= '0';
+ IORQ <= '0';
+ Set_Addr_To <= aNone;
+ Jump <= '0';
+ JumpE <= '0';
+ JumpXY <= '0';
+ Call <= '0';
+ RstP <= '0';
+ LDZ <= '0';
+ LDW <= '0';
+ LDSPHL <= '0';
+ Special_LD <= "000";
+ ExchangeDH <= '0';
+ ExchangeRp <= '0';
+ ExchangeAF <= '0';
+ ExchangeRS <= '0';
+ I_DJNZ <= '0';
+ I_CPL <= '0';
+ I_CCF <= '0';
+ I_SCF <= '0';
+ I_RETN <= '0';
+ I_BT <= '0';
+ I_BC <= '0';
+ I_BTR <= '0';
+ I_RLD <= '0';
+ I_RRD <= '0';
+ I_INRC <= '0';
+ SetDI <= '0';
+ SetEI <= '0';
+ IMode <= "11";
+ Halt <= '0';
+ NoRead <= '0';
+ Write <= '0';
+
+ case ISet is
+ when "00" =>
+
+------------------------------------------------------------------------------
+--
+-- Unprefixed instructions
+--
+------------------------------------------------------------------------------
+
+ case IRB is
+-- 8 BIT LOAD GROUP
+ when "01000000"|"01000001"|"01000010"|"01000011"|"01000100"|"01000101"|"01000111"
+ |"01001000"|"01001001"|"01001010"|"01001011"|"01001100"|"01001101"|"01001111"
+ |"01010000"|"01010001"|"01010010"|"01010011"|"01010100"|"01010101"|"01010111"
+ |"01011000"|"01011001"|"01011010"|"01011011"|"01011100"|"01011101"|"01011111"
+ |"01100000"|"01100001"|"01100010"|"01100011"|"01100100"|"01100101"|"01100111"
+ |"01101000"|"01101001"|"01101010"|"01101011"|"01101100"|"01101101"|"01101111"
+ |"01111000"|"01111001"|"01111010"|"01111011"|"01111100"|"01111101"|"01111111" =>
+ -- LD r,r'
+ Set_BusB_To(2 downto 0) <= SSS;
+ ExchangeRp <= '1';
+ Set_BusA_To(2 downto 0) <= DDD;
+ Read_To_Reg <= '1';
+ when "00000110"|"00001110"|"00010110"|"00011110"|"00100110"|"00101110"|"00111110" =>
+ -- LD r,n
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ Set_BusA_To(2 downto 0) <= DDD;
+ Read_To_Reg <= '1';
+ when others => null;
+ end case;
+ when "01000110"|"01001110"|"01010110"|"01011110"|"01100110"|"01101110"|"01111110" =>
+ -- LD r,(HL)
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aXY;
+ when 2 =>
+ Set_BusA_To(2 downto 0) <= DDD;
+ Read_To_Reg <= '1';
+ when others => null;
+ end case;
+ when "01110000"|"01110001"|"01110010"|"01110011"|"01110100"|"01110101"|"01110111" =>
+ -- LD (HL),r
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aXY;
+ Set_BusB_To(2 downto 0) <= SSS;
+ Set_BusB_To(3) <= '0';
+ when 2 =>
+ Write <= '1';
+ when others => null;
+ end case;
+ when "00110110" =>
+ -- LD (HL),n
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ Set_Addr_To <= aXY;
+ Set_BusB_To(2 downto 0) <= SSS;
+ Set_BusB_To(3) <= '0';
+ when 3 =>
+ Write <= '1';
+ when others => null;
+ end case;
+ when "00001010" =>
+ -- LD A,(BC)
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aBC;
+ when 2 =>
+ Read_To_Acc <= '1';
+ when others => null;
+ end case;
+ when "00011010" =>
+ -- LD A,(DE)
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aDE;
+ when 2 =>
+ Read_To_Acc <= '1';
+ when others => null;
+ end case;
+ when "00111010" =>
+ if Mode = 3 then
+ -- LDD A,(HL)
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aXY;
+ when 2 =>
+ Read_To_Acc <= '1';
+ IncDec_16 <= "1110";
+ when others => null;
+ end case;
+ else
+ -- LD A,(nn)
+ MCycles <= "100";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ Set_Addr_To <= aZI;
+ Inc_PC <= '1';
+ when 4 =>
+ Read_To_Acc <= '1';
+ when others => null;
+ end case;
+ end if;
+ when "00000010" =>
+ -- LD (BC),A
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aBC;
+ Set_BusB_To <= "0111";
+ when 2 =>
+ Write <= '1';
+ when others => null;
+ end case;
+ when "00010010" =>
+ -- LD (DE),A
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aDE;
+ Set_BusB_To <= "0111";
+ when 2 =>
+ Write <= '1';
+ when others => null;
+ end case;
+ when "00110010" =>
+ if Mode = 3 then
+ -- LDD (HL),A
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aXY;
+ Set_BusB_To <= "0111";
+ when 2 =>
+ Write <= '1';
+ IncDec_16 <= "1110";
+ when others => null;
+ end case;
+ else
+ -- LD (nn),A
+ MCycles <= "100";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ Set_Addr_To <= aZI;
+ Inc_PC <= '1';
+ Set_BusB_To <= "0111";
+ when 4 =>
+ Write <= '1';
+ when others => null;
+ end case;
+ end if;
+
+-- 16 BIT LOAD GROUP
+ when "00000001"|"00010001"|"00100001"|"00110001" =>
+ -- LD dd,nn
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ Read_To_Reg <= '1';
+ if DPAIR = "11" then
+ Set_BusA_To(3 downto 0) <= "1000";
+ else
+ Set_BusA_To(2 downto 1) <= DPAIR;
+ Set_BusA_To(0) <= '1';
+ end if;
+ when 3 =>
+ Inc_PC <= '1';
+ Read_To_Reg <= '1';
+ if DPAIR = "11" then
+ Set_BusA_To(3 downto 0) <= "1001";
+ else
+ Set_BusA_To(2 downto 1) <= DPAIR;
+ Set_BusA_To(0) <= '0';
+ end if;
+ when others => null;
+ end case;
+ when "00101010" =>
+ if Mode = 3 then
+ -- LDI A,(HL)
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aXY;
+ when 2 =>
+ Read_To_Acc <= '1';
+ IncDec_16 <= "0110";
+ when others => null;
+ end case;
+ else
+ -- LD HL,(nn)
+ MCycles <= "101";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ Set_Addr_To <= aZI;
+ Inc_PC <= '1';
+ LDW <= '1';
+ when 4 =>
+ Set_BusA_To(2 downto 0) <= "101"; -- L
+ Read_To_Reg <= '1';
+ Inc_WZ <= '1';
+ Set_Addr_To <= aZI;
+ when 5 =>
+ Set_BusA_To(2 downto 0) <= "100"; -- H
+ Read_To_Reg <= '1';
+ when others => null;
+ end case;
+ end if;
+ when "00100010" =>
+ if Mode = 3 then
+ -- LDI (HL),A
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aXY;
+ Set_BusB_To <= "0111";
+ when 2 =>
+ Write <= '1';
+ IncDec_16 <= "0110";
+ when others => null;
+ end case;
+ else
+ -- LD (nn),HL
+ MCycles <= "101";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ Set_Addr_To <= aZI;
+ Inc_PC <= '1';
+ LDW <= '1';
+ Set_BusB_To <= "0101"; -- L
+ when 4 =>
+ Inc_WZ <= '1';
+ Set_Addr_To <= aZI;
+ Write <= '1';
+ Set_BusB_To <= "0100"; -- H
+ when 5 =>
+ Write <= '1';
+ when others => null;
+ end case;
+ end if;
+ when "11111001" =>
+ -- LD SP,HL
+ TStates <= "110";
+ LDSPHL <= '1';
+ when "11000101"|"11010101"|"11100101"|"11110101" =>
+ -- PUSH qq
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ TStates <= "101";
+ IncDec_16 <= "1111";
+ Set_Addr_TO <= aSP;
+ if DPAIR = "11" then
+ Set_BusB_To <= "0111";
+ else
+ Set_BusB_To(2 downto 1) <= DPAIR;
+ Set_BusB_To(0) <= '0';
+ Set_BusB_To(3) <= '0';
+ end if;
+ when 2 =>
+ IncDec_16 <= "1111";
+ Set_Addr_To <= aSP;
+ if DPAIR = "11" then
+ Set_BusB_To <= "1011";
+ else
+ Set_BusB_To(2 downto 1) <= DPAIR;
+ Set_BusB_To(0) <= '1';
+ Set_BusB_To(3) <= '0';
+ end if;
+ Write <= '1';
+ when 3 =>
+ Write <= '1';
+ when others => null;
+ end case;
+ when "11000001"|"11010001"|"11100001"|"11110001" =>
+ -- POP qq
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aSP;
+ when 2 =>
+ IncDec_16 <= "0111";
+ Set_Addr_To <= aSP;
+ Read_To_Reg <= '1';
+ if DPAIR = "11" then
+ Set_BusA_To(3 downto 0) <= "1011";
+ else
+ Set_BusA_To(2 downto 1) <= DPAIR;
+ Set_BusA_To(0) <= '1';
+ end if;
+ when 3 =>
+ IncDec_16 <= "0111";
+ Read_To_Reg <= '1';
+ if DPAIR = "11" then
+ Set_BusA_To(3 downto 0) <= "0111";
+ else
+ Set_BusA_To(2 downto 1) <= DPAIR;
+ Set_BusA_To(0) <= '0';
+ end if;
+ when others => null;
+ end case;
+
+-- EXCHANGE, BLOCK TRANSFER AND SEARCH GROUP
+ when "11101011" =>
+ if Mode /= 3 then
+ -- EX DE,HL
+ ExchangeDH <= '1';
+ end if;
+ when "00001000" =>
+ if Mode = 3 then
+ -- LD (nn),SP
+ MCycles <= "101";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ Set_Addr_To <= aZI;
+ Inc_PC <= '1';
+ LDW <= '1';
+ Set_BusB_To <= "1000";
+ when 4 =>
+ Inc_WZ <= '1';
+ Set_Addr_To <= aZI;
+ Write <= '1';
+ Set_BusB_To <= "1001";
+ when 5 =>
+ Write <= '1';
+ when others => null;
+ end case;
+ elsif Mode < 2 then
+ -- EX AF,AF'
+ ExchangeAF <= '1';
+ end if;
+ when "11011001" =>
+ if Mode = 3 then
+ -- RETI
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_TO <= aSP;
+ when 2 =>
+ IncDec_16 <= "0111";
+ Set_Addr_To <= aSP;
+ LDZ <= '1';
+ when 3 =>
+ Jump <= '1';
+ IncDec_16 <= "0111";
+ I_RETN <= '1';
+ SetEI <= '1';
+ when others => null;
+ end case;
+ elsif Mode < 2 then
+ -- EXX
+ ExchangeRS <= '1';
+ end if;
+ when "11100011" =>
+ if Mode /= 3 then
+ -- EX (SP),HL
+ MCycles <= "101";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aSP;
+ when 2 =>
+ Read_To_Reg <= '1';
+ Set_BusA_To <= "0101";
+ Set_BusB_To <= "0101";
+ Set_Addr_To <= aSP;
+ when 3 =>
+ IncDec_16 <= "0111";
+ Set_Addr_To <= aSP;
+ TStates <= "100";
+ Write <= '1';
+ when 4 =>
+ Read_To_Reg <= '1';
+ Set_BusA_To <= "0100";
+ Set_BusB_To <= "0100";
+ Set_Addr_To <= aSP;
+ when 5 =>
+ IncDec_16 <= "1111";
+ TStates <= "101";
+ Write <= '1';
+ when others => null;
+ end case;
+ end if;
+
+-- 8 BIT ARITHMETIC AND LOGICAL GROUP
+ when "10000000"|"10000001"|"10000010"|"10000011"|"10000100"|"10000101"|"10000111"
+ |"10001000"|"10001001"|"10001010"|"10001011"|"10001100"|"10001101"|"10001111"
+ |"10010000"|"10010001"|"10010010"|"10010011"|"10010100"|"10010101"|"10010111"
+ |"10011000"|"10011001"|"10011010"|"10011011"|"10011100"|"10011101"|"10011111"
+ |"10100000"|"10100001"|"10100010"|"10100011"|"10100100"|"10100101"|"10100111"
+ |"10101000"|"10101001"|"10101010"|"10101011"|"10101100"|"10101101"|"10101111"
+ |"10110000"|"10110001"|"10110010"|"10110011"|"10110100"|"10110101"|"10110111"
+ |"10111000"|"10111001"|"10111010"|"10111011"|"10111100"|"10111101"|"10111111" =>
+ -- ADD A,r
+ -- ADC A,r
+ -- SUB A,r
+ -- SBC A,r
+ -- AND A,r
+ -- OR A,r
+ -- XOR A,r
+ -- CP A,r
+ Set_BusB_To(2 downto 0) <= SSS;
+ Set_BusA_To(2 downto 0) <= "111";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ when "10000110"|"10001110"|"10010110"|"10011110"|"10100110"|"10101110"|"10110110"|"10111110" =>
+ -- ADD A,(HL)
+ -- ADC A,(HL)
+ -- SUB A,(HL)
+ -- SBC A,(HL)
+ -- AND A,(HL)
+ -- OR A,(HL)
+ -- XOR A,(HL)
+ -- CP A,(HL)
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aXY;
+ when 2 =>
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ Set_BusB_To(2 downto 0) <= SSS;
+ Set_BusA_To(2 downto 0) <= "111";
+ when others => null;
+ end case;
+ when "11000110"|"11001110"|"11010110"|"11011110"|"11100110"|"11101110"|"11110110"|"11111110" =>
+ -- ADD A,n
+ -- ADC A,n
+ -- SUB A,n
+ -- SBC A,n
+ -- AND A,n
+ -- OR A,n
+ -- XOR A,n
+ -- CP A,n
+ MCycles <= "010";
+ if MCycle = "010" then
+ Inc_PC <= '1';
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ Set_BusB_To(2 downto 0) <= SSS;
+ Set_BusA_To(2 downto 0) <= "111";
+ end if;
+ when "00000100"|"00001100"|"00010100"|"00011100"|"00100100"|"00101100"|"00111100" =>
+ -- INC r
+ Set_BusB_To <= "1010";
+ Set_BusA_To(2 downto 0) <= DDD;
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ PreserveC <= '1';
+ ALU_Op <= "0000";
+ when "00110100" =>
+ -- INC (HL)
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aXY;
+ when 2 =>
+ TStates <= "100";
+ Set_Addr_To <= aXY;
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ PreserveC <= '1';
+ ALU_Op <= "0000";
+ Set_BusB_To <= "1010";
+ Set_BusA_To(2 downto 0) <= DDD;
+ when 3 =>
+ Write <= '1';
+ when others => null;
+ end case;
+ when "00000101"|"00001101"|"00010101"|"00011101"|"00100101"|"00101101"|"00111101" =>
+ -- DEC r
+ Set_BusB_To <= "1010";
+ Set_BusA_To(2 downto 0) <= DDD;
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ PreserveC <= '1';
+ ALU_Op <= "0010";
+ when "00110101" =>
+ -- DEC (HL)
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aXY;
+ when 2 =>
+ TStates <= "100";
+ Set_Addr_To <= aXY;
+ ALU_Op <= "0010";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ PreserveC <= '1';
+ Set_BusB_To <= "1010";
+ Set_BusA_To(2 downto 0) <= DDD;
+ when 3 =>
+ Write <= '1';
+ when others => null;
+ end case;
+
+-- GENERAL PURPOSE ARITHMETIC AND CPU CONTROL GROUPS
+ when "00100111" =>
+ -- DAA
+ Set_BusA_To(2 downto 0) <= "111";
+ Read_To_Reg <= '1';
+ ALU_Op <= "1100";
+ Save_ALU <= '1';
+ when "00101111" =>
+ -- CPL
+ I_CPL <= '1';
+ when "00111111" =>
+ -- CCF
+ I_CCF <= '1';
+ when "00110111" =>
+ -- SCF
+ I_SCF <= '1';
+ when "00000000" =>
+ if NMICycle = '1' then
+ -- NMI
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ TStates <= "101";
+ IncDec_16 <= "1111";
+ Set_Addr_To <= aSP;
+ Set_BusB_To <= "1101";
+ when 2 =>
+ TStates <= "100";
+ Write <= '1';
+ IncDec_16 <= "1111";
+ Set_Addr_To <= aSP;
+ Set_BusB_To <= "1100";
+ when 3 =>
+ TStates <= "100";
+ Write <= '1';
+ when others => null;
+ end case;
+ elsif IntCycle = '1' then
+ -- INT (IM 2)
+ MCycles <= "101";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ LDZ <= '1';
+ TStates <= "101";
+ IncDec_16 <= "1111";
+ Set_Addr_To <= aSP;
+ Set_BusB_To <= "1101";
+ when 2 =>
+ TStates <= "100";
+ Write <= '1';
+ IncDec_16 <= "1111";
+ Set_Addr_To <= aSP;
+ Set_BusB_To <= "1100";
+ when 3 =>
+ TStates <= "100";
+ Write <= '1';
+ when 4 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 5 =>
+ Jump <= '1';
+ when others => null;
+ end case;
+ else
+ -- NOP
+ end if;
+ when "01110110" =>
+ -- HALT
+ Halt <= '1';
+ when "11110011" =>
+ -- DI
+ SetDI <= '1';
+ when "11111011" =>
+ -- EI
+ SetEI <= '1';
+
+-- 16 BIT ARITHMETIC GROUP
+ when "00001001"|"00011001"|"00101001"|"00111001" =>
+ -- ADD HL,ss
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ NoRead <= '1';
+ ALU_Op <= "0000";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ Set_BusA_To(2 downto 0) <= "101";
+ case to_integer(unsigned(IR(5 downto 4))) is
+ when 0|1|2 =>
+ Set_BusB_To(2 downto 1) <= IR(5 downto 4);
+ Set_BusB_To(0) <= '1';
+ when others =>
+ Set_BusB_To <= "1000";
+ end case;
+ TStates <= "100";
+ Arith16 <= '1';
+ when 3 =>
+ NoRead <= '1';
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ ALU_Op <= "0001";
+ Set_BusA_To(2 downto 0) <= "100";
+ case to_integer(unsigned(IR(5 downto 4))) is
+ when 0|1|2 =>
+ Set_BusB_To(2 downto 1) <= IR(5 downto 4);
+ when others =>
+ Set_BusB_To <= "1001";
+ end case;
+ Arith16 <= '1';
+ when others =>
+ end case;
+ when "00000011"|"00010011"|"00100011"|"00110011" =>
+ -- INC ss
+ TStates <= "110";
+ IncDec_16(3 downto 2) <= "01";
+ IncDec_16(1 downto 0) <= DPair;
+ when "00001011"|"00011011"|"00101011"|"00111011" =>
+ -- DEC ss
+ TStates <= "110";
+ IncDec_16(3 downto 2) <= "11";
+ IncDec_16(1 downto 0) <= DPair;
+
+-- ROTATE AND SHIFT GROUP
+ when "00000111"
+ -- RLCA
+ |"00010111"
+ -- RLA
+ |"00001111"
+ -- RRCA
+ |"00011111" =>
+ -- RRA
+ Set_BusA_To(2 downto 0) <= "111";
+ ALU_Op <= "1000";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+
+-- JUMP GROUP
+ when "11000011" =>
+ -- JP nn
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ Inc_PC <= '1';
+ Jump <= '1';
+ when others => null;
+ end case;
+ when "11000010"|"11001010"|"11010010"|"11011010"|"11100010"|"11101010"|"11110010"|"11111010" =>
+ if IR(5) = '1' and Mode = 3 then
+ case IRB(4 downto 3) is
+ when "00" =>
+ -- LD ($FF00+C),A
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aBC;
+ Set_BusB_To <= "0111";
+ when 2 =>
+ Write <= '1';
+ IORQ <= '1';
+ when others =>
+ end case;
+ when "01" =>
+ -- LD (nn),A
+ MCycles <= "100";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ Set_Addr_To <= aZI;
+ Inc_PC <= '1';
+ Set_BusB_To <= "0111";
+ when 4 =>
+ Write <= '1';
+ when others => null;
+ end case;
+ when "10" =>
+ -- LD A,($FF00+C)
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aBC;
+ when 2 =>
+ Read_To_Acc <= '1';
+ IORQ <= '1';
+ when others =>
+ end case;
+ when "11" =>
+ -- LD A,(nn)
+ MCycles <= "100";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ Set_Addr_To <= aZI;
+ Inc_PC <= '1';
+ when 4 =>
+ Read_To_Acc <= '1';
+ when others => null;
+ end case;
+ end case;
+ else
+ -- JP cc,nn
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ Inc_PC <= '1';
+ if is_cc_true(F, to_bitvector(IR(5 downto 3))) then
+ Jump <= '1';
+ end if;
+ when others => null;
+ end case;
+ end if;
+ when "00011000" =>
+ if Mode /= 2 then
+ -- JR e
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ when 3 =>
+ NoRead <= '1';
+ JumpE <= '1';
+ TStates <= "101";
+ when others => null;
+ end case;
+ end if;
+ when "00111000" =>
+ if Mode /= 2 then
+ -- JR C,e
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ if F(Flag_C) = '0' then
+ MCycles <= "010";
+ end if;
+ when 3 =>
+ NoRead <= '1';
+ JumpE <= '1';
+ TStates <= "101";
+ when others => null;
+ end case;
+ end if;
+ when "00110000" =>
+ if Mode /= 2 then
+ -- JR NC,e
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ if F(Flag_C) = '1' then
+ MCycles <= "010";
+ end if;
+ when 3 =>
+ NoRead <= '1';
+ JumpE <= '1';
+ TStates <= "101";
+ when others => null;
+ end case;
+ end if;
+ when "00101000" =>
+ if Mode /= 2 then
+ -- JR Z,e
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ if F(Flag_Z) = '0' then
+ MCycles <= "010";
+ end if;
+ when 3 =>
+ NoRead <= '1';
+ JumpE <= '1';
+ TStates <= "101";
+ when others => null;
+ end case;
+ end if;
+ when "00100000" =>
+ if Mode /= 2 then
+ -- JR NZ,e
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ if F(Flag_Z) = '1' then
+ MCycles <= "010";
+ end if;
+ when 3 =>
+ NoRead <= '1';
+ JumpE <= '1';
+ TStates <= "101";
+ when others => null;
+ end case;
+ end if;
+ when "11101001" =>
+ -- JP (HL)
+ JumpXY <= '1';
+ when "00010000" =>
+ if Mode = 3 then
+ I_DJNZ <= '1';
+ elsif Mode < 2 then
+ -- DJNZ,e
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ TStates <= "101";
+ I_DJNZ <= '1';
+ Set_BusB_To <= "1010";
+ Set_BusA_To(2 downto 0) <= "000";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ ALU_Op <= "0010";
+ when 2 =>
+ I_DJNZ <= '1';
+ Inc_PC <= '1';
+ when 3 =>
+ NoRead <= '1';
+ JumpE <= '1';
+ TStates <= "101";
+ when others => null;
+ end case;
+ end if;
+
+-- CALL AND RETURN GROUP
+ when "11001101" =>
+ -- CALL nn
+ MCycles <= "101";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ IncDec_16 <= "1111";
+ Inc_PC <= '1';
+ TStates <= "100";
+ Set_Addr_To <= aSP;
+ LDW <= '1';
+ Set_BusB_To <= "1101";
+ when 4 =>
+ Write <= '1';
+ IncDec_16 <= "1111";
+ Set_Addr_To <= aSP;
+ Set_BusB_To <= "1100";
+ when 5 =>
+ Write <= '1';
+ Call <= '1';
+ when others => null;
+ end case;
+ when "11000100"|"11001100"|"11010100"|"11011100"|"11100100"|"11101100"|"11110100"|"11111100" =>
+ if IR(5) = '0' or Mode /= 3 then
+ -- CALL cc,nn
+ MCycles <= "101";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ Inc_PC <= '1';
+ LDW <= '1';
+ if is_cc_true(F, to_bitvector(IR(5 downto 3))) then
+ IncDec_16 <= "1111";
+ Set_Addr_TO <= aSP;
+ TStates <= "100";
+ Set_BusB_To <= "1101";
+ else
+ MCycles <= "011";
+ end if;
+ when 4 =>
+ Write <= '1';
+ IncDec_16 <= "1111";
+ Set_Addr_To <= aSP;
+ Set_BusB_To <= "1100";
+ when 5 =>
+ Write <= '1';
+ Call <= '1';
+ when others => null;
+ end case;
+ end if;
+ when "11001001" =>
+ -- RET
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ TStates <= "101";
+ Set_Addr_TO <= aSP;
+ when 2 =>
+ IncDec_16 <= "0111";
+ Set_Addr_To <= aSP;
+ LDZ <= '1';
+ when 3 =>
+ Jump <= '1';
+ IncDec_16 <= "0111";
+ when others => null;
+ end case;
+ when "11000000"|"11001000"|"11010000"|"11011000"|"11100000"|"11101000"|"11110000"|"11111000" =>
+ if IR(5) = '1' and Mode = 3 then
+ case IRB(4 downto 3) is
+ when "00" =>
+ -- LD ($FF00+nn),A
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ Set_Addr_To <= aIOA;
+ Set_BusB_To <= "0111";
+ when 3 =>
+ Write <= '1';
+ when others => null;
+ end case;
+ when "01" =>
+ -- ADD SP,n
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ ALU_Op <= "0000";
+ Inc_PC <= '1';
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ Set_BusA_To <= "1000";
+ Set_BusB_To <= "0110";
+ when 3 =>
+ NoRead <= '1';
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ ALU_Op <= "0001";
+ Set_BusA_To <= "1001";
+ Set_BusB_To <= "1110"; -- Incorrect unsigned !!!!!!!!!!!!!!!!!!!!!
+ when others =>
+ end case;
+ when "10" =>
+ -- LD A,($FF00+nn)
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ Set_Addr_To <= aIOA;
+ when 3 =>
+ Read_To_Acc <= '1';
+ when others => null;
+ end case;
+ when "11" =>
+ -- LD HL,SP+n -- Not correct !!!!!!!!!!!!!!!!!!!
+ MCycles <= "101";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ Set_Addr_To <= aZI;
+ Inc_PC <= '1';
+ LDW <= '1';
+ when 4 =>
+ Set_BusA_To(2 downto 0) <= "101"; -- L
+ Read_To_Reg <= '1';
+ Inc_WZ <= '1';
+ Set_Addr_To <= aZI;
+ when 5 =>
+ Set_BusA_To(2 downto 0) <= "100"; -- H
+ Read_To_Reg <= '1';
+ when others => null;
+ end case;
+ end case;
+ else
+ -- RET cc
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ if is_cc_true(F, to_bitvector(IR(5 downto 3))) then
+ Set_Addr_TO <= aSP;
+ else
+ MCycles <= "001";
+ end if;
+ TStates <= "101";
+ when 2 =>
+ IncDec_16 <= "0111";
+ Set_Addr_To <= aSP;
+ LDZ <= '1';
+ when 3 =>
+ Jump <= '1';
+ IncDec_16 <= "0111";
+ when others => null;
+ end case;
+ end if;
+ when "11000111"|"11001111"|"11010111"|"11011111"|"11100111"|"11101111"|"11110111"|"11111111" =>
+ -- RST p
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ TStates <= "101";
+ IncDec_16 <= "1111";
+ Set_Addr_To <= aSP;
+ Set_BusB_To <= "1101";
+ when 2 =>
+ Write <= '1';
+ IncDec_16 <= "1111";
+ Set_Addr_To <= aSP;
+ Set_BusB_To <= "1100";
+ when 3 =>
+ Write <= '1';
+ RstP <= '1';
+ when others => null;
+ end case;
+
+-- INPUT AND OUTPUT GROUP
+ when "11011011" =>
+ if Mode /= 3 then
+ -- IN A,(n)
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ Set_Addr_To <= aIOA;
+ when 3 =>
+ Read_To_Acc <= '1';
+ IORQ <= '1';
+ when others => null;
+ end case;
+ end if;
+ when "11010011" =>
+ if Mode /= 3 then
+ -- OUT (n),A
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ Set_Addr_To <= aIOA;
+ Set_BusB_To <= "0111";
+ when 3 =>
+ Write <= '1';
+ IORQ <= '1';
+ when others => null;
+ end case;
+ end if;
+
+------------------------------------------------------------------------------
+------------------------------------------------------------------------------
+-- MULTIBYTE INSTRUCTIONS
+------------------------------------------------------------------------------
+------------------------------------------------------------------------------
+
+ when "11001011" =>
+ if Mode /= 2 then
+ Prefix <= "01";
+ end if;
+
+ when "11101101" =>
+ if Mode < 2 then
+ Prefix <= "10";
+ end if;
+
+ when "11011101"|"11111101" =>
+ if Mode < 2 then
+ Prefix <= "11";
+ end if;
+
+ end case;
+
+ when "01" =>
+
+------------------------------------------------------------------------------
+--
+-- CB prefixed instructions
+--
+------------------------------------------------------------------------------
+
+ Set_BusA_To(2 downto 0) <= IR(2 downto 0);
+ Set_BusB_To(2 downto 0) <= IR(2 downto 0);
+
+ case IRB is
+ when "00000000"|"00000001"|"00000010"|"00000011"|"00000100"|"00000101"|"00000111"
+ |"00010000"|"00010001"|"00010010"|"00010011"|"00010100"|"00010101"|"00010111"
+ |"00001000"|"00001001"|"00001010"|"00001011"|"00001100"|"00001101"|"00001111"
+ |"00011000"|"00011001"|"00011010"|"00011011"|"00011100"|"00011101"|"00011111"
+ |"00100000"|"00100001"|"00100010"|"00100011"|"00100100"|"00100101"|"00100111"
+ |"00101000"|"00101001"|"00101010"|"00101011"|"00101100"|"00101101"|"00101111"
+ |"00110000"|"00110001"|"00110010"|"00110011"|"00110100"|"00110101"|"00110111"
+ |"00111000"|"00111001"|"00111010"|"00111011"|"00111100"|"00111101"|"00111111" =>
+ -- RLC r
+ -- RL r
+ -- RRC r
+ -- RR r
+ -- SLA r
+ -- SRA r
+ -- SRL r
+ -- SLL r (Undocumented) / SWAP r
+ if MCycle = "001" then
+ ALU_Op <= "1000";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ end if;
+ when "00000110"|"00010110"|"00001110"|"00011110"|"00101110"|"00111110"|"00100110"|"00110110" =>
+ -- RLC (HL)
+ -- RL (HL)
+ -- RRC (HL)
+ -- RR (HL)
+ -- SRA (HL)
+ -- SRL (HL)
+ -- SLA (HL)
+ -- SLL (HL) (Undocumented) / SWAP (HL)
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 | 7 =>
+ Set_Addr_To <= aXY;
+ when 2 =>
+ ALU_Op <= "1000";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ Set_Addr_To <= aXY;
+ TStates <= "100";
+ when 3 =>
+ Write <= '1';
+ when others =>
+ end case;
+ when "01000000"|"01000001"|"01000010"|"01000011"|"01000100"|"01000101"|"01000111"
+ |"01001000"|"01001001"|"01001010"|"01001011"|"01001100"|"01001101"|"01001111"
+ |"01010000"|"01010001"|"01010010"|"01010011"|"01010100"|"01010101"|"01010111"
+ |"01011000"|"01011001"|"01011010"|"01011011"|"01011100"|"01011101"|"01011111"
+ |"01100000"|"01100001"|"01100010"|"01100011"|"01100100"|"01100101"|"01100111"
+ |"01101000"|"01101001"|"01101010"|"01101011"|"01101100"|"01101101"|"01101111"
+ |"01110000"|"01110001"|"01110010"|"01110011"|"01110100"|"01110101"|"01110111"
+ |"01111000"|"01111001"|"01111010"|"01111011"|"01111100"|"01111101"|"01111111" =>
+ -- BIT b,r
+ if MCycle = "001" then
+ Set_BusB_To(2 downto 0) <= IR(2 downto 0);
+ ALU_Op <= "1001";
+ end if;
+ when "01000110"|"01001110"|"01010110"|"01011110"|"01100110"|"01101110"|"01110110"|"01111110" =>
+ -- BIT b,(HL)
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 | 7 =>
+ Set_Addr_To <= aXY;
+ when 2 =>
+ ALU_Op <= "1001";
+ TStates <= "100";
+ when others =>
+ end case;
+ when "11000000"|"11000001"|"11000010"|"11000011"|"11000100"|"11000101"|"11000111"
+ |"11001000"|"11001001"|"11001010"|"11001011"|"11001100"|"11001101"|"11001111"
+ |"11010000"|"11010001"|"11010010"|"11010011"|"11010100"|"11010101"|"11010111"
+ |"11011000"|"11011001"|"11011010"|"11011011"|"11011100"|"11011101"|"11011111"
+ |"11100000"|"11100001"|"11100010"|"11100011"|"11100100"|"11100101"|"11100111"
+ |"11101000"|"11101001"|"11101010"|"11101011"|"11101100"|"11101101"|"11101111"
+ |"11110000"|"11110001"|"11110010"|"11110011"|"11110100"|"11110101"|"11110111"
+ |"11111000"|"11111001"|"11111010"|"11111011"|"11111100"|"11111101"|"11111111" =>
+ -- SET b,r
+ if MCycle = "001" then
+ ALU_Op <= "1010";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ end if;
+ when "11000110"|"11001110"|"11010110"|"11011110"|"11100110"|"11101110"|"11110110"|"11111110" =>
+ -- SET b,(HL)
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 | 7 =>
+ Set_Addr_To <= aXY;
+ when 2 =>
+ ALU_Op <= "1010";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ Set_Addr_To <= aXY;
+ TStates <= "100";
+ when 3 =>
+ Write <= '1';
+ when others =>
+ end case;
+ when "10000000"|"10000001"|"10000010"|"10000011"|"10000100"|"10000101"|"10000111"
+ |"10001000"|"10001001"|"10001010"|"10001011"|"10001100"|"10001101"|"10001111"
+ |"10010000"|"10010001"|"10010010"|"10010011"|"10010100"|"10010101"|"10010111"
+ |"10011000"|"10011001"|"10011010"|"10011011"|"10011100"|"10011101"|"10011111"
+ |"10100000"|"10100001"|"10100010"|"10100011"|"10100100"|"10100101"|"10100111"
+ |"10101000"|"10101001"|"10101010"|"10101011"|"10101100"|"10101101"|"10101111"
+ |"10110000"|"10110001"|"10110010"|"10110011"|"10110100"|"10110101"|"10110111"
+ |"10111000"|"10111001"|"10111010"|"10111011"|"10111100"|"10111101"|"10111111" =>
+ -- RES b,r
+ if MCycle = "001" then
+ ALU_Op <= "1011";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ end if;
+ when "10000110"|"10001110"|"10010110"|"10011110"|"10100110"|"10101110"|"10110110"|"10111110" =>
+ -- RES b,(HL)
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 | 7 =>
+ Set_Addr_To <= aXY;
+ when 2 =>
+ ALU_Op <= "1011";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ Set_Addr_To <= aXY;
+ TStates <= "100";
+ when 3 =>
+ Write <= '1';
+ when others =>
+ end case;
+ end case;
+
+ when others =>
+
+------------------------------------------------------------------------------
+--
+-- ED prefixed instructions
+--
+------------------------------------------------------------------------------
+
+ case IRB is
+ when "00000000"|"00000001"|"00000010"|"00000011"|"00000100"|"00000101"|"00000110"|"00000111"
+ |"00001000"|"00001001"|"00001010"|"00001011"|"00001100"|"00001101"|"00001110"|"00001111"
+ |"00010000"|"00010001"|"00010010"|"00010011"|"00010100"|"00010101"|"00010110"|"00010111"
+ |"00011000"|"00011001"|"00011010"|"00011011"|"00011100"|"00011101"|"00011110"|"00011111"
+ |"00100000"|"00100001"|"00100010"|"00100011"|"00100100"|"00100101"|"00100110"|"00100111"
+ |"00101000"|"00101001"|"00101010"|"00101011"|"00101100"|"00101101"|"00101110"|"00101111"
+ |"00110000"|"00110001"|"00110010"|"00110011"|"00110100"|"00110101"|"00110110"|"00110111"
+ |"00111000"|"00111001"|"00111010"|"00111011"|"00111100"|"00111101"|"00111110"|"00111111"
+
+
+ |"10000000"|"10000001"|"10000010"|"10000011"|"10000100"|"10000101"|"10000110"|"10000111"
+ |"10001000"|"10001001"|"10001010"|"10001011"|"10001100"|"10001101"|"10001110"|"10001111"
+ |"10010000"|"10010001"|"10010010"|"10010011"|"10010100"|"10010101"|"10010110"|"10010111"
+ |"10011000"|"10011001"|"10011010"|"10011011"|"10011100"|"10011101"|"10011110"|"10011111"
+ | "10100100"|"10100101"|"10100110"|"10100111"
+ | "10101100"|"10101101"|"10101110"|"10101111"
+ | "10110100"|"10110101"|"10110110"|"10110111"
+ | "10111100"|"10111101"|"10111110"|"10111111"
+ |"11000000"|"11000001"|"11000010"|"11000011"|"11000100"|"11000101"|"11000110"|"11000111"
+ |"11001000"|"11001001"|"11001010"|"11001011"|"11001100"|"11001101"|"11001110"|"11001111"
+ |"11010000"|"11010001"|"11010010"|"11010011"|"11010100"|"11010101"|"11010110"|"11010111"
+ |"11011000"|"11011001"|"11011010"|"11011011"|"11011100"|"11011101"|"11011110"|"11011111"
+ |"11100000"|"11100001"|"11100010"|"11100011"|"11100100"|"11100101"|"11100110"|"11100111"
+ |"11101000"|"11101001"|"11101010"|"11101011"|"11101100"|"11101101"|"11101110"|"11101111"
+ |"11110000"|"11110001"|"11110010"|"11110011"|"11110100"|"11110101"|"11110110"|"11110111"
+ |"11111000"|"11111001"|"11111010"|"11111011"|"11111100"|"11111101"|"11111110"|"11111111" =>
+ null; -- NOP, undocumented
+ when "01111110"|"01111111" =>
+ -- NOP, undocumented
+ null;
+-- 8 BIT LOAD GROUP
+ when "01010111" =>
+ -- LD A,I
+ Special_LD <= "100";
+ TStates <= "101";
+ when "01011111" =>
+ -- LD A,R
+ Special_LD <= "101";
+ TStates <= "101";
+ when "01000111" =>
+ -- LD I,A
+ Special_LD <= "110";
+ TStates <= "101";
+ when "01001111" =>
+ -- LD R,A
+ Special_LD <= "111";
+ TStates <= "101";
+-- 16 BIT LOAD GROUP
+ when "01001011"|"01011011"|"01101011"|"01111011" =>
+ -- LD dd,(nn)
+ MCycles <= "101";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ Set_Addr_To <= aZI;
+ Inc_PC <= '1';
+ LDW <= '1';
+ when 4 =>
+ Read_To_Reg <= '1';
+ if IR(5 downto 4) = "11" then
+ Set_BusA_To <= "1000";
+ else
+ Set_BusA_To(2 downto 1) <= IR(5 downto 4);
+ Set_BusA_To(0) <= '1';
+ end if;
+ Inc_WZ <= '1';
+ Set_Addr_To <= aZI;
+ when 5 =>
+ Read_To_Reg <= '1';
+ if IR(5 downto 4) = "11" then
+ Set_BusA_To <= "1001";
+ else
+ Set_BusA_To(2 downto 1) <= IR(5 downto 4);
+ Set_BusA_To(0) <= '0';
+ end if;
+ when others => null;
+ end case;
+ when "01000011"|"01010011"|"01100011"|"01110011" =>
+ -- LD (nn),dd
+ MCycles <= "101";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Inc_PC <= '1';
+ LDZ <= '1';
+ when 3 =>
+ Set_Addr_To <= aZI;
+ Inc_PC <= '1';
+ LDW <= '1';
+ if IR(5 downto 4) = "11" then
+ Set_BusB_To <= "1000";
+ else
+ Set_BusB_To(2 downto 1) <= IR(5 downto 4);
+ Set_BusB_To(0) <= '1';
+ Set_BusB_To(3) <= '0';
+ end if;
+ when 4 =>
+ Inc_WZ <= '1';
+ Set_Addr_To <= aZI;
+ Write <= '1';
+ if IR(5 downto 4) = "11" then
+ Set_BusB_To <= "1001";
+ else
+ Set_BusB_To(2 downto 1) <= IR(5 downto 4);
+ Set_BusB_To(0) <= '0';
+ Set_BusB_To(3) <= '0';
+ end if;
+ when 5 =>
+ Write <= '1';
+ when others => null;
+ end case;
+ when "10100000" | "10101000" | "10110000" | "10111000" =>
+ -- LDI, LDD, LDIR, LDDR
+ MCycles <= "100";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aXY;
+ IncDec_16 <= "1100"; -- BC
+ when 2 =>
+ Set_BusB_To <= "0110";
+ Set_BusA_To(2 downto 0) <= "111";
+ ALU_Op <= "0000";
+ Set_Addr_To <= aDE;
+ if IR(3) = '0' then
+ IncDec_16 <= "0110"; -- IX
+ else
+ IncDec_16 <= "1110";
+ end if;
+ when 3 =>
+ I_BT <= '1';
+ TStates <= "101";
+ Write <= '1';
+ if IR(3) = '0' then
+ IncDec_16 <= "0101"; -- DE
+ else
+ IncDec_16 <= "1101";
+ end if;
+ when 4 =>
+ NoRead <= '1';
+ TStates <= "101";
+ when others => null;
+ end case;
+ when "10100001" | "10101001" | "10110001" | "10111001" =>
+ -- CPI, CPD, CPIR, CPDR
+ MCycles <= "100";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aXY;
+ IncDec_16 <= "1100"; -- BC
+ when 2 =>
+ Set_BusB_To <= "0110";
+ Set_BusA_To(2 downto 0) <= "111";
+ ALU_Op <= "0111";
+ Save_ALU <= '1';
+ PreserveC <= '1';
+ if IR(3) = '0' then
+ IncDec_16 <= "0110";
+ else
+ IncDec_16 <= "1110";
+ end if;
+ when 3 =>
+ NoRead <= '1';
+ I_BC <= '1';
+ TStates <= "101";
+ when 4 =>
+ NoRead <= '1';
+ TStates <= "101";
+ when others => null;
+ end case;
+ when "01000100"|"01001100"|"01010100"|"01011100"|"01100100"|"01101100"|"01110100"|"01111100" =>
+ -- NEG
+ Alu_OP <= "0010";
+ Set_BusB_To <= "0111";
+ Set_BusA_To <= "1010";
+ Read_To_Acc <= '1';
+ Save_ALU <= '1';
+ when "01000110"|"01001110"|"01100110"|"01101110" =>
+ -- IM 0
+ IMode <= "00";
+ when "01010110"|"01110110" =>
+ -- IM 1
+ IMode <= "01";
+ when "01011110"|"01110111" =>
+ -- IM 2
+ IMode <= "10";
+-- 16 bit arithmetic
+ when "01001010"|"01011010"|"01101010"|"01111010" =>
+ -- ADC HL,ss
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ NoRead <= '1';
+ ALU_Op <= "0001";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ Set_BusA_To(2 downto 0) <= "101";
+ case to_integer(unsigned(IR(5 downto 4))) is
+ when 0|1|2 =>
+ Set_BusB_To(2 downto 1) <= IR(5 downto 4);
+ Set_BusB_To(0) <= '1';
+ when others =>
+ Set_BusB_To <= "1000";
+ end case;
+ TStates <= "100";
+ when 3 =>
+ NoRead <= '1';
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ ALU_Op <= "0001";
+ Set_BusA_To(2 downto 0) <= "100";
+ case to_integer(unsigned(IR(5 downto 4))) is
+ when 0|1|2 =>
+ Set_BusB_To(2 downto 1) <= IR(5 downto 4);
+ Set_BusB_To(0) <= '0';
+ when others =>
+ Set_BusB_To <= "1001";
+ end case;
+ when others =>
+ end case;
+ when "01000010"|"01010010"|"01100010"|"01110010" =>
+ -- SBC HL,ss
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ NoRead <= '1';
+ ALU_Op <= "0011";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ Set_BusA_To(2 downto 0) <= "101";
+ case to_integer(unsigned(IR(5 downto 4))) is
+ when 0|1|2 =>
+ Set_BusB_To(2 downto 1) <= IR(5 downto 4);
+ Set_BusB_To(0) <= '1';
+ when others =>
+ Set_BusB_To <= "1000";
+ end case;
+ TStates <= "100";
+ when 3 =>
+ NoRead <= '1';
+ ALU_Op <= "0011";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ Set_BusA_To(2 downto 0) <= "100";
+ case to_integer(unsigned(IR(5 downto 4))) is
+ when 0|1|2 =>
+ Set_BusB_To(2 downto 1) <= IR(5 downto 4);
+ when others =>
+ Set_BusB_To <= "1001";
+ end case;
+ when others =>
+ end case;
+ when "01101111" =>
+ -- RLD
+ MCycles <= "100";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ NoRead <= '1';
+ Set_Addr_To <= aXY;
+ when 3 =>
+ Read_To_Reg <= '1';
+ Set_BusB_To(2 downto 0) <= "110";
+ Set_BusA_To(2 downto 0) <= "111";
+ ALU_Op <= "1101";
+ TStates <= "100";
+ Set_Addr_To <= aXY;
+ Save_ALU <= '1';
+ when 4 =>
+ I_RLD <= '1';
+ Write <= '1';
+ when others =>
+ end case;
+ when "01100111" =>
+ -- RRD
+ MCycles <= "100";
+ case to_integer(unsigned(MCycle)) is
+ when 2 =>
+ Set_Addr_To <= aXY;
+ when 3 =>
+ Read_To_Reg <= '1';
+ Set_BusB_To(2 downto 0) <= "110";
+ Set_BusA_To(2 downto 0) <= "111";
+ ALU_Op <= "1110";
+ TStates <= "100";
+ Set_Addr_To <= aXY;
+ Save_ALU <= '1';
+ when 4 =>
+ I_RRD <= '1';
+ Write <= '1';
+ when others =>
+ end case;
+ when "01000101"|"01001101"|"01010101"|"01011101"|"01100101"|"01101101"|"01110101"|"01111101" =>
+ -- RETI, RETN
+ MCycles <= "011";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_TO <= aSP;
+ when 2 =>
+ IncDec_16 <= "0111";
+ Set_Addr_To <= aSP;
+ LDZ <= '1';
+ when 3 =>
+ Jump <= '1';
+ IncDec_16 <= "0111";
+ I_RETN <= '1';
+ when others => null;
+ end case;
+ when "01000000"|"01001000"|"01010000"|"01011000"|"01100000"|"01101000"|"01110000"|"01111000" =>
+ -- IN r,(C)
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aBC;
+ when 2 =>
+ IORQ <= '1';
+ if IR(5 downto 3) /= "110" then
+ Read_To_Reg <= '1';
+ Set_BusA_To(2 downto 0) <= IR(5 downto 3);
+ end if;
+ I_INRC <= '1';
+ when others =>
+ end case;
+ when "01000001"|"01001001"|"01010001"|"01011001"|"01100001"|"01101001"|"01110001"|"01111001" =>
+ -- OUT (C),r
+ -- OUT (C),0
+ MCycles <= "010";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aBC;
+ Set_BusB_To(2 downto 0) <= IR(5 downto 3);
+ if IR(5 downto 3) = "110" then
+ Set_BusB_To(3) <= '1';
+ end if;
+ when 2 =>
+ Write <= '1';
+ IORQ <= '1';
+ when others =>
+ end case;
+ when "10100010" | "10101010" | "10110010" | "10111010" =>
+ -- INI, IND, INIR, INDR
+ MCycles <= "100";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ Set_Addr_To <= aBC;
+ Set_BusB_To <= "1010";
+ Set_BusA_To <= "0000";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ ALU_Op <= "0010";
+ when 2 =>
+ IORQ <= '1';
+ Set_BusB_To <= "0110";
+ Set_Addr_To <= aXY;
+ when 3 =>
+ if IR(3) = '0' then
+ IncDec_16 <= "0010";
+ else
+ IncDec_16 <= "1010";
+ end if;
+ TStates <= "100";
+ Write <= '1';
+ I_BTR <= '1';
+ when 4 =>
+ NoRead <= '1';
+ TStates <= "101";
+ when others => null;
+ end case;
+ when "10100011" | "10101011" | "10110011" | "10111011" =>
+ -- OUTI, OUTD, OTIR, OTDR
+ MCycles <= "100";
+ case to_integer(unsigned(MCycle)) is
+ when 1 =>
+ TStates <= "101";
+ Set_Addr_To <= aXY;
+ Set_BusB_To <= "1010";
+ Set_BusA_To <= "0000";
+ Read_To_Reg <= '1';
+ Save_ALU <= '1';
+ ALU_Op <= "0010";
+ when 2 =>
+ Set_BusB_To <= "0110";
+ Set_Addr_To <= aBC;
+ when 3 =>
+ if IR(3) = '0' then
+ IncDec_16 <= "0010";
+ else
+ IncDec_16 <= "1010";
+ end if;
+ IORQ <= '1';
+ Write <= '1';
+ I_BTR <= '1';
+ when 4 =>
+ NoRead <= '1';
+ TStates <= "101";
+ when others => null;
+ end case;
+ end case;
+
+ end case;
+
+ if Mode = 1 then
+ if MCycle = "001" then
+-- TStates <= "100";
+ else
+ TStates <= "011";
+ end if;
+ end if;
+
+ if Mode = 3 then
+ if MCycle = "001" then
+-- TStates <= "100";
+ else
+ TStates <= "100";
+ end if;
+ end if;
+
+ if Mode < 2 then
+ if MCycle = "110" then
+ Inc_PC <= '1';
+ if Mode = 1 then
+ Set_Addr_To <= aXY;
+ TStates <= "100";
+ Set_BusB_To(2 downto 0) <= SSS;
+ Set_BusB_To(3) <= '0';
+ end if;
+ if IRB = "00110110" or IRB = "11001011" then
+ Set_Addr_To <= aNone;
+ end if;
+ end if;
+ if MCycle = "111" then
+ if Mode = 0 then
+ TStates <= "101";
+ end if;
+ if ISet /= "01" then
+ Set_Addr_To <= aXY;
+ end if;
+ Set_BusB_To(2 downto 0) <= SSS;
+ Set_BusB_To(3) <= '0';
+ if IRB = "00110110" or ISet = "01" then
+ -- LD (HL),n
+ Inc_PC <= '1';
+ else
+ NoRead <= '1';
+ end if;
+ end if;
+ end if;
+
+ end process;
+
+end;
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80_Pack.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80_Pack.vhd
new file mode 100644
index 00000000..ac7d34da
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80_Pack.vhd
@@ -0,0 +1,208 @@
+--
+-- Z80 compatible microprocessor core
+--
+-- Version : 0242
+--
+-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org)
+--
+-- All rights reserved
+--
+-- Redistribution and use in source and synthezised forms, with or without
+-- modification, are permitted provided that the following conditions are met:
+--
+-- Redistributions of source code must retain the above copyright notice,
+-- this list of conditions and the following disclaimer.
+--
+-- Redistributions in synthesized form must reproduce the above copyright
+-- notice, this list of conditions and the following disclaimer in the
+-- documentation and/or other materials provided with the distribution.
+--
+-- Neither the name of the author nor the names of other contributors may
+-- be used to endorse or promote products derived from this software without
+-- specific prior written permission.
+--
+-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
+-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+-- POSSIBILITY OF SUCH DAMAGE.
+--
+-- Please report bugs to the author, but before you do so, please
+-- make sure that this is not a derivative work and that
+-- you have the latest version of this file.
+--
+-- The latest version of this file can be found at:
+-- http://www.opencores.org/cvsweb.shtml/t80/
+--
+-- Limitations :
+--
+-- File history :
+--
+
+library IEEE;
+use IEEE.std_logic_1164.all;
+
+package T80_Pack is
+
+ component T80
+ generic(
+ Mode : integer := 0; -- 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB
+ IOWait : integer := 0; -- 1 => Single cycle I/O, 1 => Std I/O cycle
+ Flag_C : integer := 0;
+ Flag_N : integer := 1;
+ Flag_P : integer := 2;
+ Flag_X : integer := 3;
+ Flag_H : integer := 4;
+ Flag_Y : integer := 5;
+ Flag_Z : integer := 6;
+ Flag_S : integer := 7
+ );
+ port(
+ RESET_n : in std_logic;
+ CLK_n : in std_logic;
+ CEN : in std_logic;
+ WAIT_n : in std_logic;
+ INT_n : in std_logic;
+ NMI_n : in std_logic;
+ BUSRQ_n : in std_logic;
+ M1_n : out std_logic;
+ IORQ : out std_logic;
+ NoRead : out std_logic;
+ Write : out std_logic;
+ RFSH_n : out std_logic;
+ HALT_n : out std_logic;
+ BUSAK_n : out std_logic;
+ A : out std_logic_vector(15 downto 0);
+ DInst : in std_logic_vector(7 downto 0);
+ DI : in std_logic_vector(7 downto 0);
+ DO : out std_logic_vector(7 downto 0);
+ MC : out std_logic_vector(2 downto 0);
+ TS : out std_logic_vector(2 downto 0);
+ IntCycle_n : out std_logic;
+ IntE : out std_logic;
+ Stop : out std_logic
+ );
+ end component;
+
+ component T80_Reg
+ port(
+ Clk : in std_logic;
+ CEN : in std_logic;
+ WEH : in std_logic;
+ WEL : in std_logic;
+ AddrA : in std_logic_vector(2 downto 0);
+ AddrB : in std_logic_vector(2 downto 0);
+ AddrC : in std_logic_vector(2 downto 0);
+ DIH : in std_logic_vector(7 downto 0);
+ DIL : in std_logic_vector(7 downto 0);
+ DOAH : out std_logic_vector(7 downto 0);
+ DOAL : out std_logic_vector(7 downto 0);
+ DOBH : out std_logic_vector(7 downto 0);
+ DOBL : out std_logic_vector(7 downto 0);
+ DOCH : out std_logic_vector(7 downto 0);
+ DOCL : out std_logic_vector(7 downto 0)
+ );
+ end component;
+
+ component T80_MCode
+ generic(
+ Mode : integer := 0;
+ Flag_C : integer := 0;
+ Flag_N : integer := 1;
+ Flag_P : integer := 2;
+ Flag_X : integer := 3;
+ Flag_H : integer := 4;
+ Flag_Y : integer := 5;
+ Flag_Z : integer := 6;
+ Flag_S : integer := 7
+ );
+ port(
+ IR : in std_logic_vector(7 downto 0);
+ ISet : in std_logic_vector(1 downto 0);
+ MCycle : in std_logic_vector(2 downto 0);
+ F : in std_logic_vector(7 downto 0);
+ NMICycle : in std_logic;
+ IntCycle : in std_logic;
+ MCycles : out std_logic_vector(2 downto 0);
+ TStates : out std_logic_vector(2 downto 0);
+ Prefix : out std_logic_vector(1 downto 0); -- None,BC,ED,DD/FD
+ Inc_PC : out std_logic;
+ Inc_WZ : out std_logic;
+ IncDec_16 : out std_logic_vector(3 downto 0); -- BC,DE,HL,SP 0 is inc
+ Read_To_Reg : out std_logic;
+ Read_To_Acc : out std_logic;
+ Set_BusA_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F
+ Set_BusB_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0
+ ALU_Op : out std_logic_vector(3 downto 0);
+ -- ADD, ADC, SUB, SBC, AND, XOR, OR, CP, ROT, BIT, SET, RES, DAA, RLD, RRD, None
+ Save_ALU : out std_logic;
+ PreserveC : out std_logic;
+ Arith16 : out std_logic;
+ Set_Addr_To : out std_logic_vector(2 downto 0); -- aNone,aXY,aIOA,aSP,aBC,aDE,aZI
+ IORQ : out std_logic;
+ Jump : out std_logic;
+ JumpE : out std_logic;
+ JumpXY : out std_logic;
+ Call : out std_logic;
+ RstP : out std_logic;
+ LDZ : out std_logic;
+ LDW : out std_logic;
+ LDSPHL : out std_logic;
+ Special_LD : out std_logic_vector(2 downto 0); -- A,I;A,R;I,A;R,A;None
+ ExchangeDH : out std_logic;
+ ExchangeRp : out std_logic;
+ ExchangeAF : out std_logic;
+ ExchangeRS : out std_logic;
+ I_DJNZ : out std_logic;
+ I_CPL : out std_logic;
+ I_CCF : out std_logic;
+ I_SCF : out std_logic;
+ I_RETN : out std_logic;
+ I_BT : out std_logic;
+ I_BC : out std_logic;
+ I_BTR : out std_logic;
+ I_RLD : out std_logic;
+ I_RRD : out std_logic;
+ I_INRC : out std_logic;
+ SetDI : out std_logic;
+ SetEI : out std_logic;
+ IMode : out std_logic_vector(1 downto 0);
+ Halt : out std_logic;
+ NoRead : out std_logic;
+ Write : out std_logic
+ );
+ end component;
+
+ component T80_ALU
+ generic(
+ Mode : integer := 0;
+ Flag_C : integer := 0;
+ Flag_N : integer := 1;
+ Flag_P : integer := 2;
+ Flag_X : integer := 3;
+ Flag_H : integer := 4;
+ Flag_Y : integer := 5;
+ Flag_Z : integer := 6;
+ Flag_S : integer := 7
+ );
+ port(
+ Arith16 : in std_logic;
+ Z16 : in std_logic;
+ ALU_Op : in std_logic_vector(3 downto 0);
+ IR : in std_logic_vector(5 downto 0);
+ ISet : in std_logic_vector(1 downto 0);
+ BusA : in std_logic_vector(7 downto 0);
+ BusB : in std_logic_vector(7 downto 0);
+ F_In : in std_logic_vector(7 downto 0);
+ Q : out std_logic_vector(7 downto 0);
+ F_Out : out std_logic_vector(7 downto 0)
+ );
+ end component;
+
+end;
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80_Reg.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80_Reg.vhd
new file mode 100644
index 00000000..828485fb
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80_Reg.vhd
@@ -0,0 +1,105 @@
+--
+-- T80 Registers, technology independent
+--
+-- Version : 0244
+--
+-- Copyright (c) 2002 Daniel Wallner (jesus@opencores.org)
+--
+-- All rights reserved
+--
+-- Redistribution and use in source and synthezised forms, with or without
+-- modification, are permitted provided that the following conditions are met:
+--
+-- Redistributions of source code must retain the above copyright notice,
+-- this list of conditions and the following disclaimer.
+--
+-- Redistributions in synthesized form must reproduce the above copyright
+-- notice, this list of conditions and the following disclaimer in the
+-- documentation and/or other materials provided with the distribution.
+--
+-- Neither the name of the author nor the names of other contributors may
+-- be used to endorse or promote products derived from this software without
+-- specific prior written permission.
+--
+-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
+-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+-- POSSIBILITY OF SUCH DAMAGE.
+--
+-- Please report bugs to the author, but before you do so, please
+-- make sure that this is not a derivative work and that
+-- you have the latest version of this file.
+--
+-- The latest version of this file can be found at:
+-- http://www.opencores.org/cvsweb.shtml/t51/
+--
+-- Limitations :
+--
+-- File history :
+--
+-- 0242 : Initial release
+--
+-- 0244 : Changed to single register file
+--
+
+library IEEE;
+use IEEE.std_logic_1164.all;
+use IEEE.numeric_std.all;
+
+entity T80_Reg is
+ port(
+ Clk : in std_logic;
+ CEN : in std_logic;
+ WEH : in std_logic;
+ WEL : in std_logic;
+ AddrA : in std_logic_vector(2 downto 0);
+ AddrB : in std_logic_vector(2 downto 0);
+ AddrC : in std_logic_vector(2 downto 0);
+ DIH : in std_logic_vector(7 downto 0);
+ DIL : in std_logic_vector(7 downto 0);
+ DOAH : out std_logic_vector(7 downto 0);
+ DOAL : out std_logic_vector(7 downto 0);
+ DOBH : out std_logic_vector(7 downto 0);
+ DOBL : out std_logic_vector(7 downto 0);
+ DOCH : out std_logic_vector(7 downto 0);
+ DOCL : out std_logic_vector(7 downto 0)
+ );
+end T80_Reg;
+
+architecture rtl of T80_Reg is
+
+ type Register_Image is array (natural range <>) of std_logic_vector(7 downto 0);
+ signal RegsH : Register_Image(0 to 7);
+ signal RegsL : Register_Image(0 to 7);
+
+begin
+
+ process (Clk)
+ begin
+ if Clk'event and Clk = '1' then
+ if CEN = '1' then
+ if WEH = '1' then
+ RegsH(to_integer(unsigned(AddrA))) <= DIH;
+ end if;
+ if WEL = '1' then
+ RegsL(to_integer(unsigned(AddrA))) <= DIL;
+ end if;
+ end if;
+ end if;
+ end process;
+
+ DOAH <= RegsH(to_integer(unsigned(AddrA)));
+ DOAL <= RegsL(to_integer(unsigned(AddrA)));
+ DOBH <= RegsH(to_integer(unsigned(AddrB)));
+ DOBL <= RegsL(to_integer(unsigned(AddrB)));
+ DOCH <= RegsH(to_integer(unsigned(AddrC)));
+ DOCL <= RegsL(to_integer(unsigned(AddrC)));
+
+end;
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80se.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80se.vhd
new file mode 100644
index 00000000..ac8886a8
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/T80/T80se.vhd
@@ -0,0 +1,184 @@
+--
+-- Z80 compatible microprocessor core, synchronous top level with clock enable
+-- Different timing than the original z80
+-- Inputs needs to be synchronous and outputs may glitch
+--
+-- Version : 0242
+--
+-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org)
+--
+-- All rights reserved
+--
+-- Redistribution and use in source and synthezised forms, with or without
+-- modification, are permitted provided that the following conditions are met:
+--
+-- Redistributions of source code must retain the above copyright notice,
+-- this list of conditions and the following disclaimer.
+--
+-- Redistributions in synthesized form must reproduce the above copyright
+-- notice, this list of conditions and the following disclaimer in the
+-- documentation and/or other materials provided with the distribution.
+--
+-- Neither the name of the author nor the names of other contributors may
+-- be used to endorse or promote products derived from this software without
+-- specific prior written permission.
+--
+-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
+-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+-- POSSIBILITY OF SUCH DAMAGE.
+--
+-- Please report bugs to the author, but before you do so, please
+-- make sure that this is not a derivative work and that
+-- you have the latest version of this file.
+--
+-- The latest version of this file can be found at:
+-- http://www.opencores.org/cvsweb.shtml/t80/
+--
+-- Limitations :
+--
+-- File history :
+--
+-- 0235 : First release
+--
+-- 0236 : Added T2Write generic
+--
+-- 0237 : Fixed T2Write with wait state
+--
+-- 0238 : Updated for T80 interface change
+--
+-- 0240 : Updated for T80 interface change
+--
+-- 0242 : Updated for T80 interface change
+--
+
+library IEEE;
+use IEEE.std_logic_1164.all;
+use IEEE.numeric_std.all;
+use work.T80_Pack.all;
+
+entity T80se is
+ generic(
+ Mode : integer := 0; -- 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB
+ T2Write : integer := 0; -- 0 => WR_n active in T3, /=0 => WR_n active in T2
+ IOWait : integer := 1 -- 0 => Single cycle I/O, 1 => Std I/O cycle
+ );
+ port(
+ RESET_n : in std_logic;
+ CLK_n : in std_logic;
+ CLKEN : in std_logic;
+ WAIT_n : in std_logic;
+ INT_n : in std_logic;
+ NMI_n : in std_logic;
+ BUSRQ_n : in std_logic;
+ M1_n : out std_logic;
+ MREQ_n : out std_logic;
+ IORQ_n : out std_logic;
+ RD_n : out std_logic;
+ WR_n : out std_logic;
+ RFSH_n : out std_logic;
+ HALT_n : out std_logic;
+ BUSAK_n : out std_logic;
+ A : out std_logic_vector(15 downto 0);
+ DI : in std_logic_vector(7 downto 0);
+ DO : out std_logic_vector(7 downto 0)
+ );
+end T80se;
+
+architecture rtl of T80se is
+
+ signal IntCycle_n : std_logic;
+ signal NoRead : std_logic;
+ signal Write : std_logic;
+ signal IORQ : std_logic;
+ signal DI_Reg : std_logic_vector(7 downto 0);
+ signal MCycle : std_logic_vector(2 downto 0);
+ signal TState : std_logic_vector(2 downto 0);
+
+begin
+
+ u0 : T80
+ generic map(
+ Mode => Mode,
+ IOWait => IOWait)
+ port map(
+ CEN => CLKEN,
+ M1_n => M1_n,
+ IORQ => IORQ,
+ NoRead => NoRead,
+ Write => Write,
+ RFSH_n => RFSH_n,
+ HALT_n => HALT_n,
+ WAIT_n => Wait_n,
+ INT_n => INT_n,
+ NMI_n => NMI_n,
+ RESET_n => RESET_n,
+ BUSRQ_n => BUSRQ_n,
+ BUSAK_n => BUSAK_n,
+ CLK_n => CLK_n,
+ A => A,
+ DInst => DI,
+ DI => DI_Reg,
+ DO => DO,
+ MC => MCycle,
+ TS => TState,
+ IntCycle_n => IntCycle_n);
+
+ process (RESET_n, CLK_n)
+ begin
+ if RESET_n = '0' then
+ RD_n <= '1';
+ WR_n <= '1';
+ IORQ_n <= '1';
+ MREQ_n <= '1';
+ DI_Reg <= "00000000";
+ elsif CLK_n'event and CLK_n = '1' then
+ if CLKEN = '1' then
+ RD_n <= '1';
+ WR_n <= '1';
+ IORQ_n <= '1';
+ MREQ_n <= '1';
+ if MCycle = "001" then
+ if TState = "001" or (TState = "010" and Wait_n = '0') then
+ RD_n <= not IntCycle_n;
+ MREQ_n <= not IntCycle_n;
+ IORQ_n <= IntCycle_n;
+ end if;
+ if TState = "011" then
+ MREQ_n <= '0';
+ end if;
+ else
+ if (TState = "001" or (TState = "010" and Wait_n = '0')) and NoRead = '0' and Write = '0' then
+ RD_n <= '0';
+ IORQ_n <= not IORQ;
+ MREQ_n <= IORQ;
+ end if;
+ if T2Write = 0 then
+ if TState = "010" and Write = '1' then
+ WR_n <= '0';
+ IORQ_n <= not IORQ;
+ MREQ_n <= IORQ;
+ end if;
+ else
+ if (TState = "001" or (TState = "010" and Wait_n = '0')) and Write = '1' then
+ WR_n <= '0';
+ IORQ_n <= not IORQ;
+ MREQ_n <= IORQ;
+ end if;
+ end if;
+ end if;
+ if TState = "010" and Wait_n = '1' then
+ DI_Reg <= DI;
+ end if;
+ end if;
+ end if;
+ end process;
+
+end;
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/TimePilot_MiST.sv b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/TimePilot_MiST.sv
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/TimePilot_MiST.sv
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/TimePilot_MiST.sv
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/YM2149_linmix_sep.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/YM2149_linmix_sep.vhd
new file mode 100644
index 00000000..27f26749
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/YM2149_linmix_sep.vhd
@@ -0,0 +1,553 @@
+-- changes for seperate audio outputs and enable now enables cpu access as well
+--
+-- A simulation model of YM2149 (AY-3-8910 with bells on)
+
+-- Copyright (c) MikeJ - Jan 2005
+--
+-- All rights reserved
+--
+-- Redistribution and use in source and synthezised forms, with or without
+-- modification, are permitted provided that the following conditions are met:
+--
+-- Redistributions of source code must retain the above copyright notice,
+-- this list of conditions and the following disclaimer.
+--
+-- Redistributions in synthesized form must reproduce the above copyright
+-- notice, this list of conditions and the following disclaimer in the
+-- documentation and/or other materials provided with the distribution.
+--
+-- Neither the name of the author nor the names of other contributors may
+-- be used to endorse or promote products derived from this software without
+-- specific prior written permission.
+--
+-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
+-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+-- POSSIBILITY OF SUCH DAMAGE.
+--
+-- You are responsible for any legal issues arising from your use of this code.
+--
+-- The latest version of this file can be found at: www.fpgaarcade.com
+--
+-- Email support@fpgaarcade.com
+--
+-- Revision list
+--
+-- version 001 initial release
+--
+-- Clues from MAME sound driver and Kazuhiro TSUJIKAWA
+--
+-- These are the measured outputs from a real chip for a single Isolated channel into a 1K load (V)
+-- vol 15 .. 0
+-- 3.27 2.995 2.741 2.588 2.452 2.372 2.301 2.258 2.220 2.198 2.178 2.166 2.155 2.148 2.141 2.132
+-- As the envelope volume is 5 bit, I have fitted a curve to the not quite log shape in order
+-- to produced all the required values.
+-- (The first part of the curve is a bit steeper and the last bit is more linear than expected)
+--
+-- NOTE, this component uses LINEAR mixing of the three analogue channels, and is only
+-- accurate for designs where the outputs are buffered and not simply wired together.
+-- The ouput level is more complex in that case and requires a larger table.
+
+library ieee;
+ use ieee.std_logic_1164.all;
+ use ieee.std_logic_arith.all;
+ use ieee.std_logic_unsigned.all;
+
+entity YM2149 is
+ port (
+ -- data bus
+ I_DA : in std_logic_vector(7 downto 0);
+ O_DA : out std_logic_vector(7 downto 0);
+ O_DA_OE_L : out std_logic;
+ -- control
+ I_A9_L : in std_logic;
+ I_A8 : in std_logic;
+ I_BDIR : in std_logic;
+ I_BC2 : in std_logic;
+ I_BC1 : in std_logic;
+ I_SEL_L : in std_logic;
+
+ O_AUDIO : out std_logic_vector(7 downto 0);
+ O_CHAN : out std_logic_vector(1 downto 0);
+ -- port a
+ I_IOA : in std_logic_vector(7 downto 0);
+ O_IOA : out std_logic_vector(7 downto 0);
+ O_IOA_OE_L : out std_logic;
+ -- port b
+ I_IOB : in std_logic_vector(7 downto 0);
+ O_IOB : out std_logic_vector(7 downto 0);
+ O_IOB_OE_L : out std_logic;
+
+ ENA : in std_logic; -- clock enable for higher speed operation
+ RESET_L : in std_logic;
+ CLK : in std_logic -- note 6 Mhz
+ );
+end;
+
+architecture RTL of YM2149 is
+ type array_16x8 is array (0 to 15) of std_logic_vector( 7 downto 0);
+ type array_3x12 is array (1 to 3) of std_logic_vector(11 downto 0);
+
+ signal cnt_div : std_logic_vector(3 downto 0) := (others => '0');
+ signal cnt_div_t1 : std_logic_vector(3 downto 0);
+ signal noise_div : std_logic := '0';
+ signal ena_div : std_logic;
+ signal ena_div_noise : std_logic;
+ signal poly17 : std_logic_vector(16 downto 0) := (others => '0');
+
+ -- registers
+ signal addr : std_logic_vector(7 downto 0);
+ signal busctrl_addr : std_logic;
+ signal busctrl_we : std_logic;
+ signal busctrl_re : std_logic;
+
+ signal reg : array_16x8;
+ signal env_reset : std_logic;
+ signal ioa_inreg : std_logic_vector(7 downto 0);
+ signal iob_inreg : std_logic_vector(7 downto 0);
+
+ signal noise_gen_cnt : std_logic_vector(4 downto 0);
+ signal noise_gen_op : std_logic;
+ signal tone_gen_cnt : array_3x12 := (others => (others => '0'));
+ signal tone_gen_op : std_logic_vector(3 downto 1) := "000";
+
+ signal env_gen_cnt : std_logic_vector(15 downto 0);
+ signal env_ena : std_logic;
+ signal env_hold : std_logic;
+ signal env_inc : std_logic;
+ signal env_vol : std_logic_vector(4 downto 0);
+
+ signal tone_ena_l : std_logic;
+ signal tone_src : std_logic;
+ signal noise_ena_l : std_logic;
+ signal chan_vol : std_logic_vector(4 downto 0);
+
+ signal dac_amp : std_logic_vector(7 downto 0);
+begin
+ -- cpu i/f
+ p_busdecode : process(I_BDIR, I_BC2, I_BC1, addr, I_A9_L, I_A8)
+ variable cs : std_logic;
+ variable sel : std_logic_vector(2 downto 0);
+ begin
+ -- BDIR BC2 BC1 MODE
+ -- 0 0 0 inactive
+ -- 0 0 1 address
+ -- 0 1 0 inactive
+ -- 0 1 1 read
+ -- 1 0 0 address
+ -- 1 0 1 inactive
+ -- 1 1 0 write
+ -- 1 1 1 read
+ busctrl_addr <= '0';
+ busctrl_we <= '0';
+ busctrl_re <= '0';
+
+ cs := '0';
+ if (I_A9_L = '0') and (I_A8 = '1') and (addr(7 downto 4) = "0000") then
+ cs := '1';
+ end if;
+
+ sel := (I_BDIR & I_BC2 & I_BC1);
+ case sel is
+ when "000" => null;
+ when "001" => busctrl_addr <= '1';
+ when "010" => null;
+ when "011" => busctrl_re <= cs;
+ when "100" => busctrl_addr <= '1';
+ when "101" => null;
+ when "110" => busctrl_we <= cs;
+ when "111" => busctrl_addr <= '1';
+ when others => null;
+ end case;
+ end process;
+
+ p_oe : process(busctrl_re)
+ begin
+ -- if we are emulating a real chip, maybe clock this to fake up the tristate typ delay of 100ns
+ O_DA_OE_L <= not (busctrl_re);
+ end process;
+
+ --
+ -- CLOCKED
+ --
+ p_waddr : process(RESET_L, CLK)
+ begin
+ -- looks like registers are latches in real chip, but the address is caught at the end of the address state.
+ if (RESET_L = '0') then
+ addr <= (others => '0');
+ elsif rising_edge(CLK) then
+ if (ENA = '1') then
+ if (busctrl_addr = '1') then
+ addr <= I_DA;
+ end if;
+ end if;
+ end if;
+ end process;
+
+ p_wdata : process(RESET_L, CLK)
+ begin
+ if (RESET_L = '0') then
+ reg <= (others => (others => '0'));
+ env_reset <= '1';
+ elsif rising_edge(CLK) then
+ if (ENA = '1') then
+ env_reset <= '0';
+ if (busctrl_we = '1') then
+ case addr(3 downto 0) is
+ when x"0" => reg(0) <= I_DA;
+ when x"1" => reg(1) <= I_DA;
+ when x"2" => reg(2) <= I_DA;
+ when x"3" => reg(3) <= I_DA;
+ when x"4" => reg(4) <= I_DA;
+ when x"5" => reg(5) <= I_DA;
+ when x"6" => reg(6) <= I_DA;
+ when x"7" => reg(7) <= I_DA;
+ when x"8" => reg(8) <= I_DA;
+ when x"9" => reg(9) <= I_DA;
+ when x"A" => reg(10) <= I_DA;
+ when x"B" => reg(11) <= I_DA;
+ when x"C" => reg(12) <= I_DA;
+ when x"D" => reg(13) <= I_DA; env_reset <= '1';
+ when x"E" => reg(14) <= I_DA;
+ when x"F" => reg(15) <= I_DA;
+ when others => null;
+ end case;
+ end if;
+ end if;
+ end if;
+ end process;
+
+ p_rdata : process(busctrl_re, addr, reg, ioa_inreg, iob_inreg)
+ begin
+ O_DA <= (others => '0'); -- 'X'
+ if (busctrl_re = '1') then -- not necessary, but useful for putting 'X's in the simulator
+ case addr(3 downto 0) is
+ when x"0" => O_DA <= reg(0) ;
+ when x"1" => O_DA <= "0000" & reg(1)(3 downto 0) ;
+ when x"2" => O_DA <= reg(2) ;
+ when x"3" => O_DA <= "0000" & reg(3)(3 downto 0) ;
+ when x"4" => O_DA <= reg(4) ;
+ when x"5" => O_DA <= "0000" & reg(5)(3 downto 0) ;
+ when x"6" => O_DA <= "000" & reg(6)(4 downto 0) ;
+ when x"7" => O_DA <= reg(7) ;
+ when x"8" => O_DA <= "000" & reg(8)(4 downto 0) ;
+ when x"9" => O_DA <= "000" & reg(9)(4 downto 0) ;
+ when x"A" => O_DA <= "000" & reg(10)(4 downto 0) ;
+ when x"B" => O_DA <= reg(11);
+ when x"C" => O_DA <= reg(12);
+ when x"D" => O_DA <= "0000" & reg(13)(3 downto 0);
+ when x"E" => if (reg(7)(6) = '0') then -- input
+ O_DA <= ioa_inreg;
+ else
+ O_DA <= reg(14); -- read output reg
+ end if;
+ when x"F" => if (Reg(7)(7) = '0') then
+ O_DA <= iob_inreg;
+ else
+ O_DA <= reg(15);
+ end if;
+ when others => null;
+ end case;
+ end if;
+ end process;
+ --
+ p_divider : process
+ begin
+ wait until rising_edge(CLK);
+ -- / 8 when SEL is high and /16 when SEL is low
+ if (ENA = '1') then
+ ena_div <= '0';
+ ena_div_noise <= '0';
+ if (cnt_div = "0000") then
+ cnt_div <= (not I_SEL_L) & "111";
+ ena_div <= '1';
+
+ noise_div <= not noise_div;
+ if (noise_div = '1') then
+ ena_div_noise <= '1';
+ end if;
+ else
+ cnt_div <= cnt_div - "1";
+ end if;
+ end if;
+ end process;
+
+ p_noise_gen : process
+ variable noise_gen_comp : std_logic_vector(4 downto 0);
+ variable poly17_zero : std_logic;
+ begin
+ wait until rising_edge(CLK);
+ if (reg(6)(4 downto 0) = "00000") then
+ noise_gen_comp := "00000";
+ else
+ noise_gen_comp := (reg(6)(4 downto 0) - "1");
+ end if;
+
+ poly17_zero := '0';
+ if (poly17 = "00000000000000000") then poly17_zero := '1'; end if;
+
+ if (ENA = '1') then
+ if (ena_div_noise = '1') then -- divider ena
+
+ if (noise_gen_cnt >= noise_gen_comp) then
+ noise_gen_cnt <= "00000";
+ poly17 <= (poly17(0) xor poly17(2) xor poly17_zero) & poly17(16 downto 1);
+ else
+ noise_gen_cnt <= (noise_gen_cnt + "1");
+ end if;
+ end if;
+ end if;
+ end process;
+ noise_gen_op <= poly17(0);
+
+ p_tone_gens : process
+ variable tone_gen_freq : array_3x12;
+ variable tone_gen_comp : array_3x12;
+ begin
+ wait until rising_edge(CLK);
+ -- looks like real chips count up - we need to get the Exact behaviour ..
+ tone_gen_freq(1) := reg(1)(3 downto 0) & reg(0);
+ tone_gen_freq(2) := reg(3)(3 downto 0) & reg(2);
+ tone_gen_freq(3) := reg(5)(3 downto 0) & reg(4);
+ -- period 0 = period 1
+ for i in 1 to 3 loop
+ if (tone_gen_freq(i) = x"000") then
+ tone_gen_comp(i) := x"000";
+ else
+ tone_gen_comp(i) := (tone_gen_freq(i) - "1");
+ end if;
+ end loop;
+
+ if (ENA = '1') then
+ for i in 1 to 3 loop
+ if (ena_div = '1') then -- divider ena
+
+ if (tone_gen_cnt(i) >= tone_gen_comp(i)) then
+ tone_gen_cnt(i) <= x"000";
+ tone_gen_op(i) <= not tone_gen_op(i);
+ else
+ tone_gen_cnt(i) <= (tone_gen_cnt(i) + "1");
+ end if;
+ end if;
+ end loop;
+ end if;
+ end process;
+
+ p_envelope_freq : process
+ variable env_gen_freq : std_logic_vector(15 downto 0);
+ variable env_gen_comp : std_logic_vector(15 downto 0);
+ begin
+ wait until rising_edge(CLK);
+ env_gen_freq := reg(12) & reg(11);
+ -- envelope freqs 1 and 0 are the same.
+ if (env_gen_freq = x"0000") then
+ env_gen_comp := x"0000";
+ else
+ env_gen_comp := (env_gen_freq - "1");
+ end if;
+
+ if (ENA = '1') then
+ env_ena <= '0';
+ if (ena_div = '1') then -- divider ena
+ if (env_gen_cnt >= env_gen_comp) then
+ env_gen_cnt <= x"0000";
+ env_ena <= '1';
+ else
+ env_gen_cnt <= (env_gen_cnt + "1");
+ end if;
+ end if;
+ end if;
+ end process;
+
+ p_envelope_shape : process(env_reset, reg, CLK)
+ variable is_bot : boolean;
+ variable is_bot_p1 : boolean;
+ variable is_top_m1 : boolean;
+ variable is_top : boolean;
+ begin
+ if (env_reset = '1') then
+ -- load initial state
+ if (reg(13)(2) = '0') then -- attack
+ env_vol <= "11111";
+ env_inc <= '0'; -- -1
+ else
+ env_vol <= "00000";
+ env_inc <= '1'; -- +1
+ end if;
+ env_hold <= '0';
+
+ elsif rising_edge(CLK) then
+ is_bot := (env_vol = "00000");
+ is_bot_p1 := (env_vol = "00001");
+ is_top_m1 := (env_vol = "11110");
+ is_top := (env_vol = "11111");
+
+ if (ENA = '1') then
+ if (env_ena = '1') then
+ if (env_hold = '0') then
+ if (env_inc = '1') then
+ env_vol <= (env_vol + "00001");
+ else
+ env_vol <= (env_vol + "11111");
+ end if;
+ end if;
+
+ -- envelope shape control.
+ if (reg(13)(3) = '0') then
+ if (env_inc = '0') then -- down
+ if is_bot_p1 then env_hold <= '1'; end if;
+ else
+ if is_top then env_hold <= '1'; end if;
+ end if;
+ else
+ if (reg(13)(0) = '1') then -- hold = 1
+ if (env_inc = '0') then -- down
+ if (reg(13)(1) = '1') then -- alt
+ if is_bot then env_hold <= '1'; end if;
+ else
+ if is_bot_p1 then env_hold <= '1'; end if;
+ end if;
+ else
+ if (reg(13)(1) = '1') then -- alt
+ if is_top then env_hold <= '1'; end if;
+ else
+ if is_top_m1 then env_hold <= '1'; end if;
+ end if;
+ end if;
+
+ elsif (reg(13)(1) = '1') then -- alternate
+ if (env_inc = '0') then -- down
+ if is_bot_p1 then env_hold <= '1'; end if;
+ if is_bot then env_hold <= '0'; env_inc <= '1'; end if;
+ else
+ if is_top_m1 then env_hold <= '1'; end if;
+ if is_top then env_hold <= '0'; env_inc <= '0'; end if;
+ end if;
+ end if;
+
+ end if;
+ end if;
+ end if;
+ end if;
+ end process;
+
+ p_chan_mixer : process(cnt_div, reg, tone_gen_op)
+ begin
+ tone_ena_l <= '1'; tone_src <= '1';
+ noise_ena_l <= '1'; chan_vol <= "00000";
+ case cnt_div(1 downto 0) is
+ when "00" =>
+ tone_ena_l <= reg(7)(0); tone_src <= tone_gen_op(1); chan_vol <= reg(8)(4 downto 0);
+ noise_ena_l <= reg(7)(3);
+ when "01" =>
+ tone_ena_l <= reg(7)(1); tone_src <= tone_gen_op(2); chan_vol <= reg(9)(4 downto 0);
+ noise_ena_l <= reg(7)(4);
+ when "10" =>
+ tone_ena_l <= reg(7)(2); tone_src <= tone_gen_op(3); chan_vol <= reg(10)(4 downto 0);
+ noise_ena_l <= reg(7)(5);
+ when "11" => null; -- tone gen outputs become valid on this clock
+ when others => null;
+ end case;
+ end process;
+
+ p_op_mixer : process
+ variable chan_mixed : std_logic;
+ variable chan_amp : std_logic_vector(4 downto 0);
+ begin
+ wait until rising_edge(CLK);
+ if (ENA = '1') then
+
+ chan_mixed := (tone_ena_l or tone_src) and (noise_ena_l or noise_gen_op);
+
+ chan_amp := (others => '0');
+ if (chan_mixed = '1') then
+ if (chan_vol(4) = '0') then
+ if (chan_vol(3 downto 0) = "0000") then -- nothing is easy ! make sure quiet is quiet
+ chan_amp := "00000";
+ else
+ chan_amp := chan_vol(3 downto 0) & '1'; -- make sure level 31 (env) = level 15 (tone)
+ end if;
+ else
+ chan_amp := env_vol(4 downto 0);
+ end if;
+ end if;
+
+ dac_amp <= x"00";
+ case chan_amp is
+ when "11111" => dac_amp <= x"FF";
+ when "11110" => dac_amp <= x"D9";
+ when "11101" => dac_amp <= x"BA";
+ when "11100" => dac_amp <= x"9F";
+ when "11011" => dac_amp <= x"88";
+ when "11010" => dac_amp <= x"74";
+ when "11001" => dac_amp <= x"63";
+ when "11000" => dac_amp <= x"54";
+ when "10111" => dac_amp <= x"48";
+ when "10110" => dac_amp <= x"3D";
+ when "10101" => dac_amp <= x"34";
+ when "10100" => dac_amp <= x"2C";
+ when "10011" => dac_amp <= x"25";
+ when "10010" => dac_amp <= x"1F";
+ when "10001" => dac_amp <= x"1A";
+ when "10000" => dac_amp <= x"16";
+ when "01111" => dac_amp <= x"13";
+ when "01110" => dac_amp <= x"10";
+ when "01101" => dac_amp <= x"0D";
+ when "01100" => dac_amp <= x"0B";
+ when "01011" => dac_amp <= x"09";
+ when "01010" => dac_amp <= x"08";
+ when "01001" => dac_amp <= x"07";
+ when "01000" => dac_amp <= x"06";
+ when "00111" => dac_amp <= x"05";
+ when "00110" => dac_amp <= x"04";
+ when "00101" => dac_amp <= x"03";
+ when "00100" => dac_amp <= x"03";
+ when "00011" => dac_amp <= x"02";
+ when "00010" => dac_amp <= x"02";
+ when "00001" => dac_amp <= x"01";
+ when "00000" => dac_amp <= x"00";
+ when others => null;
+ end case;
+
+ cnt_div_t1 <= cnt_div;
+ end if;
+ end process;
+
+ p_audio_output : process(RESET_L, CLK)
+ begin
+ if (RESET_L = '0') then
+ O_AUDIO <= (others => '0');
+ O_CHAN <= (others => '0');
+ elsif rising_edge(CLK) then
+
+ if (ENA = '1') then
+ O_AUDIO <= dac_amp(7 downto 0);
+ O_CHAN <= cnt_div_t1(1 downto 0);
+ end if;
+ end if;
+ end process;
+
+ p_io_ports : process(reg)
+ begin
+ O_IOA <= reg(14);
+ O_IOA_OE_L <= not reg(7)(6);
+ O_IOB <= reg(15);
+ O_IOB_OE_L <= not reg(7)(7);
+ end process;
+
+ p_io_ports_inreg : process
+ begin
+ wait until rising_edge(CLK);
+ if (ENA = '1') then -- resync
+ ioa_inreg <= I_IOA;
+ iob_inreg <= I_IOB;
+ end if;
+ end process;
+end architecture RTL;
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/build_id.tcl b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/build_id.tcl
new file mode 100644
index 00000000..938515d8
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/build_id.tcl
@@ -0,0 +1,35 @@
+# ================================================================================
+#
+# Build ID Verilog Module Script
+# Jeff Wiencrot - 8/1/2011
+#
+# Generates a Verilog module that contains a timestamp,
+# from the current build. These values are available from the build_date, build_time,
+# physical_address, and host_name output ports of the build_id module in the build_id.v
+# Verilog source file.
+#
+# ================================================================================
+
+proc generateBuildID_Verilog {} {
+
+ # Get the timestamp (see: http://www.altera.com/support/examples/tcl/tcl-date-time-stamp.html)
+ set buildDate [ clock format [ clock seconds ] -format %y%m%d ]
+ set buildTime [ clock format [ clock seconds ] -format %H%M%S ]
+
+ # Create a Verilog file for output
+ set outputFileName "rtl/build_id.v"
+ set outputFile [open $outputFileName "w"]
+
+ # Output the Verilog source
+ puts $outputFile "`define BUILD_DATE \"$buildDate\""
+ puts $outputFile "`define BUILD_TIME \"$buildTime\""
+ close $outputFile
+
+ # Send confirmation message to the Messages window
+ post_message "Generated build identification Verilog module: [pwd]/$outputFileName"
+ post_message "Date: $buildDate"
+ post_message "Time: $buildTime"
+}
+
+# Comment out this line to prevent the process from automatically executing when the file is sourced:
+generateBuildID_Verilog
\ No newline at end of file
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/dac.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/dac.vhd
similarity index 97%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/dac.vhd
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/dac.vhd
index 9f696b0b..477e625f 100644
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/dac.vhd
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/dac.vhd
@@ -20,7 +20,7 @@ library ieee;
entity dac is
generic (
- C_bits : integer := 11
+ C_bits : integer := 15
);
port (
clk_i : in std_logic;
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/gen_ram.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/gen_ram.vhd
new file mode 100644
index 00000000..f1a95608
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/gen_ram.vhd
@@ -0,0 +1,84 @@
+-- -----------------------------------------------------------------------
+--
+-- Syntiac's generic VHDL support files.
+--
+-- -----------------------------------------------------------------------
+-- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com)
+-- http://www.syntiac.com/fpga64.html
+--
+-- Modified April 2016 by Dar (darfpga@aol.fr)
+-- http://darfpga.blogspot.fr
+-- Remove address register when writing
+--
+-- -----------------------------------------------------------------------
+--
+-- gen_rwram.vhd
+--
+-- -----------------------------------------------------------------------
+--
+-- generic ram.
+--
+-- -----------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.ALL;
+
+-- -----------------------------------------------------------------------
+
+entity gen_ram is
+ generic (
+ dWidth : integer := 8;
+ aWidth : integer := 10
+ );
+ port (
+ clk : in std_logic;
+ we : in std_logic;
+ addr : in std_logic_vector((aWidth-1) downto 0);
+ d : in std_logic_vector((dWidth-1) downto 0);
+ q : out std_logic_vector((dWidth-1) downto 0)
+ );
+end entity;
+
+-- -----------------------------------------------------------------------
+
+architecture rtl of gen_ram is
+ subtype addressRange is integer range 0 to ((2**aWidth)-1);
+ type ramDef is array(addressRange) of std_logic_vector((dWidth-1) downto 0);
+ signal ram: ramDef;
+
+ signal rAddrReg : std_logic_vector((aWidth-1) downto 0);
+ signal qReg : std_logic_vector((dWidth-1) downto 0);
+begin
+-- -----------------------------------------------------------------------
+-- Signals to entity interface
+-- -----------------------------------------------------------------------
+-- q <= qReg;
+
+-- -----------------------------------------------------------------------
+-- Memory write
+-- -----------------------------------------------------------------------
+ process(clk)
+ begin
+ if rising_edge(clk) then
+ if we = '1' then
+ ram(to_integer(unsigned(addr))) <= d;
+ end if;
+ end if;
+ end process;
+
+-- -----------------------------------------------------------------------
+-- Memory read
+-- -----------------------------------------------------------------------
+process(clk)
+ begin
+ if rising_edge(clk) then
+-- qReg <= ram(to_integer(unsigned(rAddrReg)));
+-- rAddrReg <= addr;
+---- qReg <= ram(to_integer(unsigned(addr)));
+ q <= ram(to_integer(unsigned(addr)));
+ end if;
+ end process;
+--q <= ram(to_integer(unsigned(addr)));
+end architecture;
+
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/gen_video.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/gen_video.vhd
new file mode 100644
index 00000000..da8d77d4
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/gen_video.vhd
@@ -0,0 +1,70 @@
+---------------------------------------------------------------------------------
+-- Galaga video horizontal/vertical and sync generator by Dar (darfpga@aol.fr)
+-- http://darfpga.blogspot.fr
+---------------------------------------------------------------------------------
+library ieee;
+use ieee.std_logic_1164.all,ieee.numeric_std.ALL;
+
+entity gen_video is
+port(
+ clk : in std_logic;
+ enable : in std_logic;
+ hcnt : out std_logic_vector(5 downto 0);
+ vcnt : out std_logic_vector(5 downto 0);
+ hsync : out std_logic;
+ vsync : out std_logic;
+ blankn : out std_logic
+);
+end gen_video;
+
+architecture struct of gen_video is
+ signal hblank : std_logic;
+ signal vblank : std_logic;
+ signal hcntReg : unsigned (5 DOWNTO 0) := to_unsigned(000,9);
+ signal vcntReg : unsigned (5 DOWNTO 0) := to_unsigned(015,9);
+begin
+
+hcnt <= std_logic_vector(hcntReg);
+vcnt <= std_logic_vector(vcntReg);
+
+
+process(clk) begin
+
+ if enable = '1' then
+
+ if hcntReg = 511 then
+ hcntReg <= to_unsigned (128,9);
+ else
+ hcntReg <= hcntReg + 1;
+ end if;
+
+ if hcntReg = 191 then
+ if vcntReg = 261 then
+ vcntReg <= to_unsigned(0,9);
+ else
+ vcntReg <= vcntReg + 1;
+ end if;
+ end if;
+
+ if hcntReg = (175+ 0-8+8) then hsync <= '1'; -- 1
+ elsif hcntReg = (175+29-8+8) then hsync <= '0';
+ end if;
+
+ if vcntReg = 252 then vsync <= '1';
+ elsif vcntReg = 260 then vsync <= '0';
+ end if;
+
+ if hcntReg = (127+16+8) then hblank <= '1';
+ elsif hcntReg = (255-17+8+1) then hblank <= '0';
+ end if;
+
+ if vcntReg = (240+1-1) then vblank <= '1';
+ elsif vcntReg = (015+1) then vblank <= '0';
+ end if;
+
+ blankn <= not (hblank or vblank);
+ end if;
+
+end process;
+
+end architecture;
\ No newline at end of file
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/hq2x.sv b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/hq2x.sv
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/hq2x.sv
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/hq2x.sv
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/mist_io.v b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/mist_io.v
similarity index 58%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/mist_io.v
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/mist_io.v
index ad233a3b..2f41221f 100644
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/mist_io.v
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/mist_io.v
@@ -5,6 +5,7 @@
// http://code.google.com/p/mist-board/
//
// Copyright (c) 2014 Till Harbaum
+// Copyright (c) 2015-2017 Sorgelig
//
// This source file is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published
@@ -47,13 +48,16 @@ module mist_io #(parameter STRLEN=0, parameter PS2DIV=100)
output SPI_DO,
input SPI_DI,
- output reg [7:0] joystick_0,
- output reg [7:0] joystick_1,
+ output reg [7:0] joystick_0,
+ output reg [7:0] joystick_1,
+// output reg [31:0] joystick_2,
+// output reg [31:0] joystick_3,
+// output reg [31:0] joystick_4,
output reg [15:0] joystick_analog_0,
output reg [15:0] joystick_analog_1,
output [1:0] buttons,
output [1:0] switches,
- output scandoubler_disable,
+ output scandoublerD,
output ypbpr,
output reg [31:0] status,
@@ -61,13 +65,13 @@ module mist_io #(parameter STRLEN=0, parameter PS2DIV=100)
// SD config
input sd_conf,
input sd_sdhc,
- output img_mounted, // signaling that new image has been mounted
+ output [1:0] img_mounted, // signaling that new image has been mounted
output reg [31:0] img_size, // size of image in bytes
// SD block level access
input [31:0] sd_lba,
- input sd_rd,
- input sd_wr,
+ input [1:0] sd_rd,
+ input [1:0] sd_wr,
output reg sd_ack,
output reg sd_ack_conf,
@@ -82,192 +86,222 @@ module mist_io #(parameter STRLEN=0, parameter PS2DIV=100)
output reg ps2_kbd_data,
output ps2_mouse_clk,
output reg ps2_mouse_data,
- input ps2_caps_led,
+
+ // ps2 alternative interface.
+
+ // [8] - extended, [9] - pressed, [10] - toggles with every press/release
+ output reg [10:0] ps2_key = 0,
+
+ // [24] - toggles with every event
+ output reg [24:0] ps2_mouse = 0,
// ARM -> FPGA download
+ input ioctl_ce,
output reg ioctl_download = 0, // signal indicating an active download
output reg [7:0] ioctl_index, // menu index used to upload the file
- output ioctl_wr,
+ output reg ioctl_wr = 0,
output reg [24:0] ioctl_addr,
output reg [7:0] ioctl_dout
);
-reg [7:0] b_data;
-reg [6:0] sbuf;
-reg [7:0] cmd;
-reg [2:0] bit_cnt; // counts bits 0-7 0-7 ...
-reg [9:0] byte_cnt; // counts bytes
reg [7:0] but_sw;
reg [2:0] stick_idx;
-reg mount_strobe = 0;
+reg [1:0] mount_strobe = 0;
assign img_mounted = mount_strobe;
assign buttons = but_sw[1:0];
assign switches = but_sw[3:2];
-assign scandoubler_disable = but_sw[4];
+assign scandoublerD = but_sw[4];
assign ypbpr = but_sw[5];
-wire [7:0] spi_dout = { sbuf, SPI_DI};
-
// this variant of user_io is for 8 bit cores (type == a4) only
wire [7:0] core_type = 8'ha4;
// command byte read by the io controller
-wire [7:0] sd_cmd = { 4'h5, sd_conf, sd_sdhc, sd_wr, sd_rd };
+wire drive_sel = sd_rd[1] | sd_wr[1];
+wire [7:0] sd_cmd = { 4'h6, sd_conf, sd_sdhc, sd_wr[drive_sel], sd_rd[drive_sel] };
+
+reg [7:0] cmd;
+reg [2:0] bit_cnt; // counts bits 0-7 0-7 ...
+reg [9:0] byte_cnt; // counts bytes
reg spi_do;
assign SPI_DO = CONF_DATA0 ? 1'bZ : spi_do;
-wire [7:0] kbd_led = { 2'b01, 4'b0000, ps2_caps_led, 1'b1};
+reg [7:0] spi_data_out;
-// drive MISO only when transmitting core id
-always@(negedge SPI_SCK) begin
- if(!CONF_DATA0) begin
- // first byte returned is always core type, further bytes are
- // command dependent
- if(byte_cnt == 0) begin
- spi_do <= core_type[~bit_cnt];
+// SPI transmitter
+always@(negedge SPI_SCK) spi_do <= spi_data_out[~bit_cnt];
- end else begin
- case(cmd)
- // reading config string
- 8'h14: begin
- // returning a byte from string
- if(byte_cnt < STRLEN + 1) spi_do <= conf_str[{STRLEN - byte_cnt,~bit_cnt}];
- else spi_do <= 0;
- end
-
- // reading sd card status
- 8'h16: begin
- if(byte_cnt == 1) spi_do <= sd_cmd[~bit_cnt];
- else if((byte_cnt >= 2) && (byte_cnt < 6)) spi_do <= sd_lba[{5-byte_cnt, ~bit_cnt}];
- else spi_do <= 0;
- end
-
- // reading sd card write data
- 8'h18:
- spi_do <= b_data[~bit_cnt];
-
- // reading keyboard LED status
- 8'h1f:
- spi_do <= kbd_led[~bit_cnt];
-
- default:
- spi_do <= 0;
- endcase
- end
- end
-end
-
-reg b_wr2,b_wr3;
-always @(negedge clk_sys) begin
- b_wr3 <= b_wr2;
- sd_buff_wr <= b_wr3;
-end
+reg [7:0] spi_data_in;
+reg spi_data_ready = 0;
// SPI receiver
always@(posedge SPI_SCK or posedge CONF_DATA0) begin
+ reg [6:0] sbuf;
+ reg [31:0] sd_lba_r;
+ reg drive_sel_r;
if(CONF_DATA0) begin
- b_wr2 <= 0;
bit_cnt <= 0;
byte_cnt <= 0;
- sd_ack <= 0;
- sd_ack_conf <= 0;
- end else begin
- b_wr2 <= 0;
-
- sbuf <= spi_dout[6:0];
+ spi_data_out <= core_type;
+ end
+ else
+ begin
bit_cnt <= bit_cnt + 1'd1;
- if(bit_cnt == 5) begin
- if (byte_cnt == 0) sd_buff_addr <= 0;
- if((byte_cnt != 0) & (sd_buff_addr != 511)) sd_buff_addr <= sd_buff_addr + 1'b1;
- if((byte_cnt == 1) & ((cmd == 8'h17) | (cmd == 8'h19))) sd_buff_addr <= 0;
- end
+ sbuf <= {sbuf[5:0], SPI_DI};
// finished reading command byte
if(bit_cnt == 7) begin
+ if(!byte_cnt) cmd <= {sbuf, SPI_DI};
+
+ spi_data_in <= {sbuf, SPI_DI};
+ spi_data_ready <= ~spi_data_ready;
if(~&byte_cnt) byte_cnt <= byte_cnt + 8'd1;
- if(byte_cnt == 0) begin
- cmd <= spi_dout;
-
- if(spi_dout == 8'h19) begin
- sd_ack_conf <= 1;
- sd_buff_addr <= 0;
- end
- if((spi_dout == 8'h17) || (spi_dout == 8'h18)) begin
- sd_ack <= 1;
- sd_buff_addr <= 0;
- end
- if(spi_dout == 8'h18) b_data <= sd_buff_din;
-
- mount_strobe <= 0;
-
- end else begin
- case(cmd)
- // buttons and switches
- 8'h01: but_sw <= spi_dout;
- 8'h02: joystick_0 <= spi_dout;
- 8'h03: joystick_1 <= spi_dout;
+ spi_data_out <= 0;
+ case({(!byte_cnt) ? {sbuf, SPI_DI} : cmd})
+ // reading config string
+ 8'h14: if(byte_cnt < STRLEN) spi_data_out <= conf_str[(STRLEN - byte_cnt - 1)<<3 +:8];
- // store incoming ps2 mouse bytes
- 8'h04: begin
- ps2_mouse_fifo[ps2_mouse_wptr] <= spi_dout;
- ps2_mouse_wptr <= ps2_mouse_wptr + 1'd1;
- end
+ // reading sd card status
+ 8'h16: if(byte_cnt == 0) begin
+ spi_data_out <= sd_cmd;
+ sd_lba_r <= sd_lba;
+ drive_sel_r <= drive_sel;
+ end else if (byte_cnt == 1) begin
+ spi_data_out <= drive_sel_r;
+ end else if(byte_cnt < 6) spi_data_out <= sd_lba_r[(5-byte_cnt)<<3 +:8];
- // store incoming ps2 keyboard bytes
- 8'h05: begin
- ps2_kbd_fifo[ps2_kbd_wptr] <= spi_dout;
- ps2_kbd_wptr <= ps2_kbd_wptr + 1'd1;
- end
-
- 8'h15: status[7:0] <= spi_dout;
-
- // send SD config IO -> FPGA
- // flag that download begins
- // sd card knows data is config if sd_dout_strobe is asserted
- // with sd_ack still being inactive (low)
- 8'h19,
- // send sector IO -> FPGA
- // flag that download begins
- 8'h17: begin
- sd_buff_dout <= spi_dout;
- b_wr2 <= 1;
- end
+ // reading sd card write data
+ 8'h18: spi_data_out <= sd_buff_din;
+ endcase
+ end
+ end
+end
- 8'h18: b_data <= sd_buff_din;
+reg [31:0] ps2_key_raw = 0;
+wire pressed = (ps2_key_raw[15:8] != 8'hf0);
+wire extended = (~pressed ? (ps2_key_raw[23:16] == 8'he0) : (ps2_key_raw[15:8] == 8'he0));
- // joystick analog
- 8'h1a: begin
- // first byte is joystick index
- if(byte_cnt == 1) stick_idx <= spi_dout[2:0];
- else if(byte_cnt == 2) begin
- // second byte is x axis
- if(stick_idx == 0) joystick_analog_0[15:8] <= spi_dout;
- else if(stick_idx == 1) joystick_analog_1[15:8] <= spi_dout;
- end else if(byte_cnt == 3) begin
- // third byte is y axis
- if(stick_idx == 0) joystick_analog_0[7:0] <= spi_dout;
- else if(stick_idx == 1) joystick_analog_1[7:0] <= spi_dout;
- end
- end
+// transfer to clk_sys domain
+always@(posedge clk_sys) begin
+ reg old_ss1, old_ss2;
+ reg old_ready1, old_ready2;
+ reg [2:0] b_wr;
+ reg got_ps2 = 0;
- // notify image selection
- 8'h1c: mount_strobe <= 1;
+ old_ss1 <= CONF_DATA0;
+ old_ss2 <= old_ss1;
+ old_ready1 <= spi_data_ready;
+ old_ready2 <= old_ready1;
+
+ sd_buff_wr <= b_wr[0];
+ if(b_wr[2] && (~&sd_buff_addr)) sd_buff_addr <= sd_buff_addr + 1'b1;
+ b_wr <= (b_wr<<1);
- // send image info
- 8'h1d: if(byte_cnt<5) img_size[(byte_cnt-1)<<3 +:8] <= spi_dout;
-
- // status, 32bit version
- 8'h1e: if(byte_cnt<5) status[(byte_cnt-1)<<3 +:8] <= spi_dout;
- default: ;
- endcase
+ if(old_ss2) begin
+ got_ps2 <= 0;
+ sd_ack <= 0;
+ sd_ack_conf <= 0;
+ sd_buff_addr <= 0;
+ if(got_ps2) begin
+ if(cmd == 4) ps2_mouse[24] <= ~ps2_mouse[24];
+ if(cmd == 5) begin
+ ps2_key <= {~ps2_key[10], pressed, extended, ps2_key_raw[7:0]};
+ if(ps2_key_raw == 'hE012E07C) ps2_key[9:0] <= 'h37C; // prnscr pressed
+ if(ps2_key_raw == 'h7CE0F012) ps2_key[9:0] <= 'h17C; // prnscr released
+ if(ps2_key_raw == 'hF014F077) ps2_key[9:0] <= 'h377; // pause pressed
end
end
end
+ else
+ if(old_ready2 ^ old_ready1) begin
+
+ if(cmd == 8'h18 && ~&sd_buff_addr) sd_buff_addr <= sd_buff_addr + 1'b1;
+
+ if(byte_cnt < 2) begin
+
+ if (cmd == 8'h19) sd_ack_conf <= 1;
+ if((cmd == 8'h17) || (cmd == 8'h18)) sd_ack <= 1;
+ mount_strobe <= 0;
+
+ if(cmd == 5) ps2_key_raw <= 0;
+ end else begin
+
+ case(cmd)
+ // buttons and switches
+ 8'h01: but_sw <= spi_data_in;
+ 8'h02: joystick_0 <= spi_data_in;
+ 8'h03: joystick_1 <= spi_data_in;
+// 8'h60: if (byte_cnt < 5) joystick_0[(byte_cnt-1)<<3 +:8] <= spi_data_in;
+// 8'h61: if (byte_cnt < 5) joystick_1[(byte_cnt-1)<<3 +:8] <= spi_data_in;
+// 8'h62: if (byte_cnt < 5) joystick_2[(byte_cnt-1)<<3 +:8] <= spi_data_in;
+// 8'h63: if (byte_cnt < 5) joystick_3[(byte_cnt-1)<<3 +:8] <= spi_data_in;
+// 8'h64: if (byte_cnt < 5) joystick_4[(byte_cnt-1)<<3 +:8] <= spi_data_in;
+ // store incoming ps2 mouse bytes
+ 8'h04: begin
+ got_ps2 <= 1;
+ case(byte_cnt)
+ 2: ps2_mouse[7:0] <= spi_data_in;
+ 3: ps2_mouse[15:8] <= spi_data_in;
+ 4: ps2_mouse[23:16] <= spi_data_in;
+ endcase
+ ps2_mouse_fifo[ps2_mouse_wptr] <= spi_data_in;
+ ps2_mouse_wptr <= ps2_mouse_wptr + 1'd1;
+ end
+
+ // store incoming ps2 keyboard bytes
+ 8'h05: begin
+ got_ps2 <= 1;
+ ps2_key_raw[31:0] <= {ps2_key_raw[23:0], spi_data_in};
+ ps2_kbd_fifo[ps2_kbd_wptr] <= spi_data_in;
+ ps2_kbd_wptr <= ps2_kbd_wptr + 1'd1;
+ end
+
+ 8'h15: status[7:0] <= spi_data_in;
+
+ // send SD config IO -> FPGA
+ // flag that download begins
+ // sd card knows data is config if sd_dout_strobe is asserted
+ // with sd_ack still being inactive (low)
+ 8'h19,
+ // send sector IO -> FPGA
+ // flag that download begins
+ 8'h17: begin
+ sd_buff_dout <= spi_data_in;
+ b_wr <= 1;
+ end
+
+ // joystick analog
+ 8'h1a: begin
+ // first byte is joystick index
+ if(byte_cnt == 2) stick_idx <= spi_data_in[2:0];
+ else if(byte_cnt == 3) begin
+ // second byte is x axis
+ if(stick_idx == 0) joystick_analog_0[15:8] <= spi_data_in;
+ else if(stick_idx == 1) joystick_analog_1[15:8] <= spi_data_in;
+ end else if(byte_cnt == 4) begin
+ // third byte is y axis
+ if(stick_idx == 0) joystick_analog_0[7:0] <= spi_data_in;
+ else if(stick_idx == 1) joystick_analog_1[7:0] <= spi_data_in;
+ end
+ end
+
+ // notify image selection
+ 8'h1c: mount_strobe[spi_data_in[0]] <= 1;
+
+ // send image info
+ 8'h1d: if(byte_cnt<6) img_size[(byte_cnt-2)<<3 +:8] <= spi_data_in;
+
+ // status, 32bit version
+ 8'h1e: if(byte_cnt<6) status[(byte_cnt-2)<<3 +:8] <= spi_data_in;
+ default: ;
+ endcase
+ end
+ end
end
@@ -422,6 +456,8 @@ localparam UIO_FILE_TX = 8'h53;
localparam UIO_FILE_TX_DAT = 8'h54;
localparam UIO_FILE_INDEX = 8'h55;
+reg rdownload = 0;
+
// data_io has its own SPI interface to the io controller
always@(posedge SPI_SCK, posedge SPI_SS2) begin
reg [6:0] sbuf;
@@ -431,15 +467,10 @@ always@(posedge SPI_SCK, posedge SPI_SS2) begin
if(SPI_SS2) cnt <= 0;
else begin
- rclk <= 0;
-
// don't shift in last bit. It is evaluated directly
// when writing to ram
if(cnt != 15) sbuf <= { sbuf[5:0], SPI_DI};
- // increase target address after write
- if(rclk) addr <= addr + 1'd1;
-
// count 0-7 8-15 8-15 ...
if(cnt < 15) cnt <= cnt + 1'd1;
else cnt <= 8;
@@ -451,11 +482,15 @@ always@(posedge SPI_SCK, posedge SPI_SS2) begin
if((cmd == UIO_FILE_TX) && (cnt == 15)) begin
// prepare
if(SPI_DI) begin
- addr <= 0;
- ioctl_download <= 1;
+ case(ioctl_index[4:0])
+ 1: addr <= 25'h200000; // TRD buffer at 2MB
+ 2: addr <= 25'h400000; // tape buffer at 4MB
+ default: addr <= 25'h150000; // boot rom
+ endcase
+ rdownload <= 1;
end else begin
addr_w <= addr;
- ioctl_download <= 0;
+ rdownload <= 0;
end
end
@@ -463,7 +498,8 @@ always@(posedge SPI_SCK, posedge SPI_SS2) begin
if((cmd == UIO_FILE_TX_DAT) && (cnt == 15)) begin
addr_w <= addr;
data_w <= {sbuf, SPI_DI};
- rclk <= 1;
+ addr <= addr + 1'd1;
+ rclk <= ~rclk;
end
// expose file (menu) index
@@ -471,21 +507,24 @@ always@(posedge SPI_SCK, posedge SPI_SS2) begin
end
end
-assign ioctl_wr = |ioctl_wrd;
-reg [1:0] ioctl_wrd;
-
-always@(negedge clk_sys) begin
+// transfer to ioctl_clk domain.
+// ioctl_index is set before ioctl_download, so it's stable already
+always@(posedge clk_sys) begin
reg rclkD, rclkD2;
- rclkD <= rclk;
- rclkD2 <= rclkD;
- ioctl_wrd<= {ioctl_wrd[0],1'b0};
+ if(ioctl_ce) begin
+ ioctl_download <= rdownload;
- if(rclkD & ~rclkD2) begin
- ioctl_dout <= data_w;
- ioctl_addr <= addr_w;
- ioctl_wrd <= 2'b11;
+ rclkD <= rclk;
+ rclkD2 <= rclkD;
+ ioctl_wr <= 0;
+
+ if(rclkD != rclkD2) begin
+ ioctl_dout <= data_w;
+ ioctl_addr <= addr_w;
+ ioctl_wr <= 1;
+ end
end
end
-endmodule
+endmodule
\ No newline at end of file
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/osd.v b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/osd.v
similarity index 75%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/osd.v
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/osd.v
index 3e1815d1..b9181763 100644
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/osd.v
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/osd.v
@@ -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,
@@ -38,12 +40,12 @@ localparam OSD_HEIGHT = 10'd128;
// this core supports only the display related OSD commands
// of the minimig
reg osd_enable;
-//(* ramstyle = "no_rw_check" *) reg [7:0] osd_buffer[2047:0]; // the OSD buffer itself
-(* ramstyle = "no_rw_check" *) reg [7:0] osd_buffer[1023:0]; // the OSD buffer itself
+(* ramstyle = "no_rw_check" *) reg [7:0] osd_buffer[2047:0]; // the OSD buffer itself
+
// the OSD has its own SPI interface to the io controller
always@(posedge SPI_SCK, posedge SPI_SS3) begin
reg [4:0] cnt;
- reg [9:0] bcnt;
+ reg [10:0] bcnt;
reg [7:0] sbuf;
reg [7:0] cmd;
@@ -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<> 1) + OSD_Y_OFFSET;
wire [9:0] v_osd_end = v_osd_start + (OSD_HEIGHT<= 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]};
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/pll.qip b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/pll.qip
new file mode 100644
index 00000000..afd958be
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/pll.qip
@@ -0,0 +1,4 @@
+set_global_assignment -name IP_TOOL_NAME "ALTPLL"
+set_global_assignment -name IP_TOOL_VERSION "13.1"
+set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "pll.v"]
+set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.ppf"]
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/pll.v b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/pll.v
new file mode 100644
index 00000000..99e50db7
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/pll.v
@@ -0,0 +1,376 @@
+// megafunction wizard: %ALTPLL%
+// GENERATION: STANDARD
+// VERSION: WM1.0
+// MODULE: altpll
+
+// ============================================================
+// File Name: pll.v
+// Megafunction Name(s):
+// altpll
+//
+// Simulation Library Files(s):
+// altera_mf
+// ============================================================
+// ************************************************************
+// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
+//
+// 13.1.4 Build 182 03/12/2014 SJ Web Edition
+// ************************************************************
+
+
+//Copyright (C) 1991-2014 Altera Corporation
+//Your use of Altera Corporation's design tools, logic functions
+//and other software and tools, and its AMPP partner logic
+//functions, and any output files from any of the foregoing
+//(including device programming or simulation files), and any
+//associated documentation or information are expressly subject
+//to the terms and conditions of the Altera Program License
+//Subscription Agreement, Altera MegaCore Function License
+//Agreement, or other applicable license agreement, including,
+//without limitation, that your use is for the sole purpose of
+//programming logic devices manufactured by Altera and sold by
+//Altera or its authorized distributors. Please refer to the
+//applicable agreement for further details.
+
+
+// synopsys translate_off
+`timescale 1 ps / 1 ps
+// synopsys translate_on
+module pll (
+ areset,
+ inclk0,
+ c0,
+ c1,
+ c2,
+ locked);
+
+ input areset;
+ input inclk0;
+ output c0;
+ output c1;
+ output c2;
+ output locked;
+`ifndef ALTERA_RESERVED_QIS
+// synopsys translate_off
+`endif
+ tri0 areset;
+`ifndef ALTERA_RESERVED_QIS
+// synopsys translate_on
+`endif
+
+ wire [4:0] sub_wire0;
+ wire sub_wire2;
+ wire [0:0] sub_wire7 = 1'h0;
+ wire [2:2] sub_wire4 = sub_wire0[2:2];
+ wire [0:0] sub_wire3 = sub_wire0[0:0];
+ wire [1:1] sub_wire1 = sub_wire0[1:1];
+ wire c1 = sub_wire1;
+ wire locked = sub_wire2;
+ wire c0 = sub_wire3;
+ wire c2 = sub_wire4;
+ wire sub_wire5 = inclk0;
+ wire [1:0] sub_wire6 = {sub_wire7, sub_wire5};
+
+ altpll altpll_component (
+ .areset (areset),
+ .inclk (sub_wire6),
+ .clk (sub_wire0),
+ .locked (sub_wire2),
+ .activeclock (),
+ .clkbad (),
+ .clkena ({6{1'b1}}),
+ .clkloss (),
+ .clkswitch (1'b0),
+ .configupdate (1'b0),
+ .enable0 (),
+ .enable1 (),
+ .extclk (),
+ .extclkena ({4{1'b1}}),
+ .fbin (1'b1),
+ .fbmimicbidir (),
+ .fbout (),
+ .fref (),
+ .icdrclk (),
+ .pfdena (1'b1),
+ .phasecounterselect ({4{1'b1}}),
+ .phasedone (),
+ .phasestep (1'b1),
+ .phaseupdown (1'b1),
+ .pllena (1'b1),
+ .scanaclr (1'b0),
+ .scanclk (1'b0),
+ .scanclkena (1'b1),
+ .scandata (1'b0),
+ .scandataout (),
+ .scandone (),
+ .scanread (1'b0),
+ .scanwrite (1'b0),
+ .sclkout0 (),
+ .sclkout1 (),
+ .vcooverrange (),
+ .vcounderrange ());
+ defparam
+ altpll_component.bandwidth_type = "AUTO",
+ altpll_component.clk0_divide_by = 78,
+ altpll_component.clk0_duty_cycle = 50,
+ altpll_component.clk0_multiply_by = 71,
+ altpll_component.clk0_phase_shift = "0",
+ altpll_component.clk1_divide_by = 134,
+ altpll_component.clk1_duty_cycle = 50,
+ altpll_component.clk1_multiply_by = 71,
+ altpll_component.clk1_phase_shift = "0",
+ altpll_component.clk2_divide_by = 156,
+ altpll_component.clk2_duty_cycle = 50,
+ altpll_component.clk2_multiply_by = 71,
+ altpll_component.clk2_phase_shift = "0",
+ altpll_component.compensate_clock = "CLK0",
+ altpll_component.inclk0_input_frequency = 37037,
+ altpll_component.intended_device_family = "Cyclone III",
+ altpll_component.lpm_hint = "CBX_MODULE_PREFIX=pll",
+ altpll_component.lpm_type = "altpll",
+ altpll_component.operation_mode = "NORMAL",
+ altpll_component.pll_type = "AUTO",
+ altpll_component.port_activeclock = "PORT_UNUSED",
+ altpll_component.port_areset = "PORT_USED",
+ altpll_component.port_clkbad0 = "PORT_UNUSED",
+ altpll_component.port_clkbad1 = "PORT_UNUSED",
+ altpll_component.port_clkloss = "PORT_UNUSED",
+ altpll_component.port_clkswitch = "PORT_UNUSED",
+ altpll_component.port_configupdate = "PORT_UNUSED",
+ altpll_component.port_fbin = "PORT_UNUSED",
+ altpll_component.port_inclk0 = "PORT_USED",
+ altpll_component.port_inclk1 = "PORT_UNUSED",
+ altpll_component.port_locked = "PORT_USED",
+ altpll_component.port_pfdena = "PORT_UNUSED",
+ altpll_component.port_phasecounterselect = "PORT_UNUSED",
+ altpll_component.port_phasedone = "PORT_UNUSED",
+ altpll_component.port_phasestep = "PORT_UNUSED",
+ altpll_component.port_phaseupdown = "PORT_UNUSED",
+ altpll_component.port_pllena = "PORT_UNUSED",
+ altpll_component.port_scanaclr = "PORT_UNUSED",
+ altpll_component.port_scanclk = "PORT_UNUSED",
+ altpll_component.port_scanclkena = "PORT_UNUSED",
+ altpll_component.port_scandata = "PORT_UNUSED",
+ altpll_component.port_scandataout = "PORT_UNUSED",
+ altpll_component.port_scandone = "PORT_UNUSED",
+ altpll_component.port_scanread = "PORT_UNUSED",
+ altpll_component.port_scanwrite = "PORT_UNUSED",
+ altpll_component.port_clk0 = "PORT_USED",
+ altpll_component.port_clk1 = "PORT_USED",
+ altpll_component.port_clk2 = "PORT_USED",
+ altpll_component.port_clk3 = "PORT_UNUSED",
+ altpll_component.port_clk4 = "PORT_UNUSED",
+ altpll_component.port_clk5 = "PORT_UNUSED",
+ altpll_component.port_clkena0 = "PORT_UNUSED",
+ altpll_component.port_clkena1 = "PORT_UNUSED",
+ altpll_component.port_clkena2 = "PORT_UNUSED",
+ altpll_component.port_clkena3 = "PORT_UNUSED",
+ altpll_component.port_clkena4 = "PORT_UNUSED",
+ altpll_component.port_clkena5 = "PORT_UNUSED",
+ altpll_component.port_extclk0 = "PORT_UNUSED",
+ altpll_component.port_extclk1 = "PORT_UNUSED",
+ altpll_component.port_extclk2 = "PORT_UNUSED",
+ altpll_component.port_extclk3 = "PORT_UNUSED",
+ altpll_component.self_reset_on_loss_lock = "OFF",
+ altpll_component.width_clock = 5;
+
+
+endmodule
+
+// ============================================================
+// CNX file retrieval info
+// ============================================================
+// Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0"
+// Retrieval info: PRIVATE: BANDWIDTH STRING "1.000"
+// Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1"
+// Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz"
+// Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low"
+// Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1"
+// Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0"
+// Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0"
+// Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0"
+// Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0"
+// Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0"
+// Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0"
+// Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0"
+// Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0"
+// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0"
+// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8"
+// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "78"
+// Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "134"
+// Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "156"
+// Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000"
+// Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000"
+// Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000"
+// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "24.576923"
+// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "14.305970"
+// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "12.288462"
+// Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0"
+// Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0"
+// Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1"
+// Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0"
+// Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0"
+// Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575"
+// Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1"
+// Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "27.000"
+// Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz"
+// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000"
+// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1"
+// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1"
+// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz"
+// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III"
+// Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1"
+// Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1"
+// Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1"
+// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available"
+// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0"
+// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg"
+// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps"
+// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "ps"
+// Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any"
+// Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0"
+// Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0"
+// Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0"
+// Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "71"
+// Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "71"
+// Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "71"
+// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1"
+// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "24.57627100"
+// Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "14.31800000"
+// Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "12.28800000"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz"
+// Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1"
+// Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0"
+// Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000"
+// Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000"
+// Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000"
+// Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0"
+// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg"
+// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg"
+// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg"
+// Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0"
+// Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1"
+// Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1"
+// Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0"
+// Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0"
+// Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0"
+// Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0"
+// Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0"
+// Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0"
+// Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0"
+// Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll.mif"
+// Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0"
+// Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1"
+// Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0"
+// Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0"
+// Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0"
+// Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000"
+// Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz"
+// Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500"
+// Retrieval info: PRIVATE: SPREAD_USE STRING "0"
+// Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0"
+// Retrieval info: PRIVATE: STICKY_CLK0 STRING "1"
+// Retrieval info: PRIVATE: STICKY_CLK1 STRING "1"
+// Retrieval info: PRIVATE: STICKY_CLK2 STRING "1"
+// Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1"
+// Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1"
+// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
+// Retrieval info: PRIVATE: USE_CLK0 STRING "1"
+// Retrieval info: PRIVATE: USE_CLK1 STRING "1"
+// Retrieval info: PRIVATE: USE_CLK2 STRING "1"
+// Retrieval info: PRIVATE: USE_CLKENA0 STRING "0"
+// Retrieval info: PRIVATE: USE_CLKENA1 STRING "0"
+// Retrieval info: PRIVATE: USE_CLKENA2 STRING "0"
+// Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0"
+// Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0"
+// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
+// Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO"
+// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "78"
+// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50"
+// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "71"
+// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0"
+// Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "134"
+// Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50"
+// Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "71"
+// Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0"
+// Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "156"
+// Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50"
+// Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "71"
+// Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0"
+// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0"
+// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "37037"
+// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III"
+// Retrieval info: CONSTANT: LPM_TYPE STRING "altpll"
+// Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL"
+// Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO"
+// Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF"
+// Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5"
+// Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]"
+// Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset"
+// Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0"
+// Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1"
+// Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2"
+// Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0"
+// Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked"
+// Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0
+// Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0
+// Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0
+// Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0
+// Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1
+// Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2
+// Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.v TRUE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.ppf TRUE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.inc FALSE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.cmp FALSE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.bsf FALSE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll_inst.v FALSE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll_bb.v FALSE
+// Retrieval info: LIB_FILE: altera_mf
+// Retrieval info: CBX_MODULE_PREFIX: ON
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/scandoubler.v b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/scandoubler.v
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/scandoubler.v
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/scandoubler.v
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot.vhd
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_char_color_lut.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_char_color_lut.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_char_color_lut.vhd
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_char_color_lut.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_char_grphx.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_char_grphx.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_char_grphx.vhd
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_char_grphx.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/pooyan_mist.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_mist.vhd
similarity index 75%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/pooyan_mist.vhd
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_mist.vhd
index c1df8803..9e263c43 100644
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/pooyan_mist.vhd
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_mist.vhd
@@ -39,7 +39,7 @@ use ieee.numeric_std.all;
library work;
-entity pooyan_mist is
+entity time_pilot_mist is
port(
CLOCK_27 : in std_logic;
AUDIO_L : out std_logic;
@@ -56,59 +56,52 @@ port(
SPI_SS3 : in std_logic;
CONF_DATA0 : in std_logic
);
-end pooyan_mist;
+end time_pilot_mist;
-architecture struct of pooyan_mist is
+architecture struct of time_pilot_mist is
signal clock_48 : std_logic;
signal clock_12 : std_logic;
signal clock_14 : std_logic;
signal reset : std_logic;
signal pll_locked: std_logic;
-
- signal hsync : std_logic;
- signal vsync : std_logic;
+
+ signal r : std_logic_vector(4 downto 0);
+ signal g : std_logic_vector(4 downto 0);
+ signal b : std_logic_vector(4 downto 0);
+ signal hsync : std_logic;
+ signal vsync : std_logic;
signal hblank : std_logic;
signal vblank : std_logic;
- signal audio : std_logic_vector(10 downto 0);
- signal audio_pwm : std_logic;
+ signal audio : std_logic_vector(10 downto 0);
+ signal audio_pwm : std_logic;
+ signal reset_n : std_logic;
+ signal ps2_clk : std_logic;
+ signal ps2_dat : std_logic;
+ signal joy_u : std_logic;
+ signal joy_l : std_logic;
+ signal joy_r : std_logic;
+ signal joy_d : std_logic;
+ signal scanlines : std_logic_vector(1 downto 0);
+ signal hq2x : std_logic;
+ signal buttons : std_logic_vector(1 downto 0);
+ signal joy0 : std_logic_vector(7 downto 0);
+ signal joy1 : std_logic_vector(7 downto 0);
+ signal status : std_logic_vector(31 downto 0);
+ signal scandoubler_disable : std_logic;
+ signal ypbpr : std_logic;
+ signal pix_ce : std_logic;
+ signal kbd_joy0 : std_logic_vector(7 downto 0);
+ signal ps2Clk : std_logic;
+ signal ps2Data : std_logic;
+ signal VGA_R_O : std_logic_vector(2 downto 0);
+ signal VGA_G_O : std_logic_vector(2 downto 0);
+ signal VGA_B_O : std_logic_vector(2 downto 0);
- signal reset_n : std_logic;
- signal ps2_clk : std_logic;
- signal ps2_dat : std_logic;
- signal joy_u : std_logic;
- signal joy_l : std_logic;
- signal joy_r : std_logic;
- signal joy_d : std_logic;
- signal kbd_intr : std_logic;
- signal kbd_scancode : std_logic_vector(7 downto 0);
-
-
- signal scanlines : std_logic_vector(1 downto 0);
- signal hq2x : std_logic;
-
- -- User IO
- signal buttons : std_logic_vector(1 downto 0);
- signal joy0 : std_logic_vector(7 downto 0);
- signal joy1 : std_logic_vector(7 downto 0);
- signal status : std_logic_vector(31 downto 0);
- signal scandoubler_disable : std_logic;
- signal ypbpr : std_logic;
- signal pix_ce : std_logic;
- signal kbd_joy0 : std_logic_vector(9 downto 0);
- signal ps2Clk : std_logic;
- signal ps2Data : std_logic;
- signal ps2_scancode : std_logic_vector(7 downto 0);
-
- signal VGA_R_O : std_logic_vector(2 downto 0);
- signal VGA_G_O : std_logic_vector(2 downto 0);
- signal VGA_B_O : std_logic_vector(2 downto 0);
- signal newState : std_logic_vector(2 downto 0);
- signal upright : boolean;
+
constant CONF_STR : string :=
- "POOYAN;;O4,Joystick Control,Upright,Normal;O89,Scandoubler Fx,None,HQ2x,CRT 25%,CRT 50%;T5,Reset;";
-
-
+ "Time Pilot;;O4,Joystick Control,Upright,Normal;O89,Scandoubler Fx,None,HQ2x,CRT 25%,CRT 50%;T5,Reset;V,v1.00";
+
function to_slv(s: string) return std_logic_vector is
constant ss: string(1 to s'length) := s;
variable rval: std_logic_vector(1 to 8 * s'length);
@@ -160,7 +153,7 @@ architecture struct of pooyan_mist is
reset : in std_logic;
ps2_kbd_clk : in std_logic;
ps2_kbd_data : in std_logic;
- joystick : out std_logic_vector (9 downto 0)
+ joystick : out std_logic_vector (7 downto 0)
);
end component;
@@ -173,7 +166,7 @@ clocks : entity work.mist_pll_12M_14M
inclk0 => CLOCK_27,
c0 => clock_12,--12.28800000
c1 => clock_14,--14.31800000
- c2 => clock_48,--49.15200000
+ c2 => clock_48,
locked => pll_locked
);
@@ -227,32 +220,23 @@ mist_io_inst : mist_io
ps2_kbd_data => ps2Data
);
-Joy_r <= joy0(0) or joy1(0) or kbd_joy0(7) when upright
+Joy_r <= joy0(0) or joy1(0) or kbd_joy0(7) when status(4) = '0'
else joy0(3) or joy1(3) or kbd_joy0(4);
-Joy_l <= joy0(1) or joy1(1) or kbd_joy0(6) when upright
+Joy_l <= joy0(1) or joy1(1) or kbd_joy0(6) when status(4) = '0'
else joy0(2) or joy1(2) or kbd_joy0(5);
-Joy_u <= joy0(3) or joy1(3) or kbd_joy0(4) when upright
+Joy_u <= joy0(3) or joy1(3) or kbd_joy0(4) when status(4) = '0'
else joy0(1) or joy1(1) or kbd_joy0(6);
-Joy_d <= joy0(2) or joy1(2) or kbd_joy0(5) when upright
+Joy_d <= joy0(2) or joy1(2) or kbd_joy0(5) when status(4) = '0'
else joy0(0) or joy1(0) or kbd_joy0(7);
-
-process(kbd_joy0(9))
-begin
- if kbd_joy0(9)= '1' then
- upright <= not upright;
- end if;
-end process;
-
---upright <= kbd_joy0(9);--Control Direction
-pooyan : entity work.pooyan
+time_pilot : entity work.time_pilot
port map(
clock_12 => clock_12,
clock_14 => clock_14,
reset => reset,
- video_r => VGA_R_O,
- video_g => VGA_G_O,
- video_b => VGA_B_O,
+ video_r => r,
+ video_g => g,
+ video_b => b,
video_hblank => open,
video_vblank => open,
video_clk => pix_ce,
@@ -260,7 +244,7 @@ pooyan : entity work.pooyan
video_vs => vsync,
audio_out => audio,
dip_switch_1 => X"FF", -- Coinage_B / Coinage_A
- dip_switch_2 => X"FB", -- Sound(8)/Difficulty(7-5)/Bonus(4)/Cocktail(3)/lives(2-1)
+ dip_switch_2 => X"4B", -- Sound(8)/Difficulty(7-5)/Bonus(4)/Cocktail(3)/lives(2-1)
start2 => kbd_joy0(2) or status(3),
start1 => kbd_joy0(1) or status(2),
coin1 => kbd_joy0(3) or status(1),
@@ -274,11 +258,14 @@ pooyan : entity work.pooyan
left2 => Joy_l,
down2 => Joy_d,
up2 => Joy_u,
- sw => "0000000000",
dbg_cpu_addr => open
);
+VGA_R_O <= r(4 downto 2);
+VGA_G_O <= g(4 downto 2);
+VGA_B_O <= b(4 downto 2);
+
u_keyboard : keyboard
port map(
clk => clock_48,
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_palette_blue_green.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_palette_blue_green.vhd
new file mode 100644
index 00000000..7e5dbed5
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_palette_blue_green.vhd
@@ -0,0 +1,24 @@
+library ieee;
+use ieee.std_logic_1164.all,ieee.numeric_std.all;
+
+entity time_pilot_palette_blue_green is
+port (
+ clk : in std_logic;
+ addr : in std_logic_vector(4 downto 0);
+ data : out std_logic_vector(7 downto 0)
+);
+end entity;
+
+architecture prom of time_pilot_palette_blue_green is
+ type rom is array(0 to 31) of std_logic_vector(7 downto 0);
+ signal rom_data: rom := (
+ X"00",X"00",X"05",X"06",X"07",X"FC",X"05",X"BD",X"B5",X"FD",X"05",X"B0",X"A5",X"E0",X"00",X"F7",
+ X"00",X"00",X"F8",X"07",X"07",X"FD",X"F8",X"FA",X"05",X"DE",X"50",X"51",X"32",X"FD",X"30",X"F7");
+begin
+process(clk)
+begin
+ if rising_edge(clk) then
+ data <= rom_data(to_integer(unsigned(addr)));
+ end if;
+end process;
+end architecture;
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_palette_green_red.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_palette_green_red.vhd
new file mode 100644
index 00000000..868befaf
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_palette_green_red.vhd
@@ -0,0 +1,24 @@
+library ieee;
+use ieee.std_logic_1164.all,ieee.numeric_std.all;
+
+entity time_pilot_palette_green_red is
+port (
+ clk : in std_logic;
+ addr : in std_logic_vector(4 downto 0);
+ data : out std_logic_vector(7 downto 0)
+);
+end entity;
+
+architecture prom of time_pilot_palette_green_red is
+ type rom is array(0 to 31) of std_logic_vector(7 downto 0);
+ signal rom_data: rom := (
+ X"00",X"3E",X"3E",X"80",X"FE",X"00",X"AC",X"EE",X"AC",X"C0",X"14",X"00",X"28",X"38",X"16",X"BC",
+ X"00",X"3E",X"00",X"C0",X"FE",X"C0",X"3E",X"80",X"3E",X"F6",X"00",X"80",X"80",X"00",X"0C",X"BC");
+begin
+process(clk)
+begin
+ if rising_edge(clk) then
+ data <= rom_data(to_integer(unsigned(addr)));
+ end if;
+end process;
+end architecture;
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_prog.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_prog.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_prog.vhd
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_prog.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_sound_board.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_sound_board.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_sound_board.vhd
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_sound_board.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_sound_prog.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_sound_prog.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_sound_prog.vhd
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_sound_prog.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_sprite_color_lut.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_sprite_color_lut.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_sprite_color_lut.vhd
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_sprite_color_lut.vhd
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_sprite_grphx.vhd b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_sprite_grphx.vhd
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/rtl/time_pilot_sprite_grphx.vhd
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/time_pilot_sprite_grphx.vhd
diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/video_mixer.sv b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/video_mixer.sv
similarity index 83%
rename from Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/video_mixer.sv
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/video_mixer.sv
index ee42674d..79d8ca03 100644
--- a/Arcade_MiST/Konami Classic/Pooyan_MiST/Pooyan_mistVGA/rtl/video_mixer.sv
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/video_mixer.sv
@@ -20,8 +20,8 @@
module video_mixer
#(
- parameter LINE_LENGTH = 768,
- parameter HALF_DEPTH = 0,
+ parameter LINE_LENGTH = 480,
+ parameter HALF_DEPTH = 1,
parameter OSD_COLOR = 3'd4,
parameter OSD_X_OFFSET = 10'd0,
@@ -50,7 +50,7 @@ module video_mixer
input [1:0] scanlines,
// 0 = HVSync 31KHz, 1 = CSync 15KHz
- input scandoubler_disable,
+ input scandoublerD,
// High quality 2x scaling
input hq2x,
@@ -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,
@@ -113,9 +113,9 @@ scandoubler #(.LENGTH(LINE_LENGTH), .HALF_DEPTH(HALF_DEPTH)) scandoubler
.b_out(B_sd)
);
-wire [DWIDTH:0] rt = (scandoubler_disable ? R : R_sd);
-wire [DWIDTH:0] gt = (scandoubler_disable ? G : G_sd);
-wire [DWIDTH:0] bt = (scandoubler_disable ? B : B_sd);
+wire [DWIDTH:0] rt = (scandoublerD ? R : R_sd);
+wire [DWIDTH:0] gt = (scandoublerD ? G : G_sd);
+wire [DWIDTH:0] bt = (scandoublerD ? B : B_sd);
generate
if(HALF_DEPTH) begin
@@ -129,8 +129,8 @@ generate
end
endgenerate
-wire hs = (scandoubler_disable ? HSync : hs_sd);
-wire vs = (scandoubler_disable ? VSync : vs_sd);
+wire hs = (scandoublerD ? HSync : hs_sd);
+wire vs = (scandoublerD ? VSync : vs_sd);
reg scanline = 0;
always @(posedge clk_sys) begin
@@ -172,7 +172,22 @@ always @(*) begin
endcase
end
+wire [5:0] red, green, blue;
+osd #(OSD_X_OFFSET, OSD_Y_OFFSET, OSD_COLOR) osd
+(
+ .*,
+ .R_in(r_out),
+ .G_in(g_out),
+ .B_in(b_out),
+ .HSync(hs),
+ .VSync(vs),
+ .rotate(rotate),
+
+ .R_out(red),
+ .G_out(green),
+ .B_out(blue)
+);
wire [5:0] yuv_full[225] = '{
6'd0, 6'd0, 6'd0, 6'd0, 6'd1, 6'd1, 6'd1, 6'd1,
@@ -211,18 +226,18 @@ wire [5:0] yuv_full[225] = '{
// Pb = 128 - 0.148*R - 0.291*G + 0.439*B (Pb = -0.169*R - 0.331*G + 0.500*B)
// Pr = 128 + 0.439*R - 0.368*G - 0.071*B (Pr = 0.500*R - 0.419*G - 0.081*B)
-wire [18:0] y_8 = 19'd04096 + ({r_out, 8'd0} + {r_out, 3'd0}) + ({g_out, 9'd0} + {g_out, 2'd0}) + ({b_out, 6'd0} + {b_out, 5'd0} + {b_out, 2'd0});
-wire [18:0] pb_8 = 19'd32768 - ({r_out, 7'd0} + {r_out, 4'd0} + {r_out, 3'd0}) - ({g_out, 8'd0} + {g_out, 5'd0} + {g_out, 3'd0}) + ({b_out, 8'd0} + {b_out, 7'd0} + {b_out, 6'd0});
-wire [18:0] pr_8 = 19'd32768 + ({r_out, 8'd0} + {r_out, 7'd0} + {r_out, 6'd0}) - ({g_out, 8'd0} + {g_out, 6'd0} + {g_out, 5'd0} + {g_out, 4'd0} + {g_out, 3'd0}) - ({b_out, 6'd0} + {b_out , 3'd0});
+wire [18:0] y_8 = 19'd04096 + ({red, 8'd0} + {red, 3'd0}) + ({green, 9'd0} + {green, 2'd0}) + ({blue, 6'd0} + {blue, 5'd0} + {blue, 2'd0});
+wire [18:0] pb_8 = 19'd32768 - ({red, 7'd0} + {red, 4'd0} + {red, 3'd0}) - ({green, 8'd0} + {green, 5'd0} + {green, 3'd0}) + ({blue, 8'd0} + {blue, 7'd0} + {blue, 6'd0});
+wire [18:0] pr_8 = 19'd32768 + ({red, 8'd0} + {red, 7'd0} + {red, 6'd0}) - ({green, 8'd0} + {green, 6'd0} + {green, 5'd0} + {green, 4'd0} + {green, 3'd0}) - ({blue, 6'd0} + {blue , 3'd0});
wire [7:0] y = ( y_8[17:8] < 16) ? 8'd16 : ( y_8[17:8] > 235) ? 8'd235 : y_8[15:8];
wire [7:0] pb = (pb_8[17:8] < 16) ? 8'd16 : (pb_8[17:8] > 240) ? 8'd240 : pb_8[15:8];
wire [7:0] pr = (pr_8[17:8] < 16) ? 8'd16 : (pr_8[17:8] > 240) ? 8'd240 : pr_8[15:8];
-assign VGA_R = ypbpr ? (ypbpr_full ? yuv_full[pr-8'd16] : pr[7:2]) : r_out;
-assign VGA_G = ypbpr ? (ypbpr_full ? yuv_full[y -8'd16] : y[7:2]) : g_out;
-assign VGA_B = ypbpr ? (ypbpr_full ? yuv_full[pb-8'd16] : pb[7:2]) : b_out;
-assign VGA_VS = (scandoubler_disable | ypbpr) ? 1'b1 : ~vs_sd;
-assign VGA_HS = scandoubler_disable ? ~(HSync ^ VSync) : ypbpr ? ~(hs_sd ^ vs_sd) : ~hs_sd;
+assign VGA_R = ypbpr ? (ypbpr_full ? yuv_full[pr-8'd16] : pr[7:2]) : red;
+assign VGA_G = ypbpr ? (ypbpr_full ? yuv_full[y -8'd16] : y[7:2]) : green;
+assign VGA_B = ypbpr ? (ypbpr_full ? yuv_full[pb-8'd16] : pb[7:2]) : blue;
+assign VGA_VS = (scandoublerD | ypbpr) ? 1'b1 : ~vs_sd;
+assign VGA_HS = scandoublerD ? ~(HSync ^ VSync) : ypbpr ? ~(hs_sd ^ vs_sd) : ~hs_sd;
endmodule
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/time_pilot_mist.qpf b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/time_pilot_mist.qpf
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/time_pilot_mist.qpf
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/time_pilot_mist.qpf
diff --git a/Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/time_pilot_mist.qsf b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/time_pilot_mist.qsf
similarity index 100%
rename from Arcade_MiST/Time Pilot Hardware/Time_Pilot_MiST/time_pilot_mist.qsf
rename to Arcade_MiST/Konami Classic/Time_Pilot_MiST/time_pilot_mist.qsf
diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/time_pilot_mist.srf b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/time_pilot_mist.srf
new file mode 100644
index 00000000..e413eda9
--- /dev/null
+++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/time_pilot_mist.srf
@@ -0,0 +1 @@
+{ "" "" "" "*" { } { } 0 10492 "" 0 0 "Quartus II" 0 -1 0 ""}