mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-03-09 20:18:22 +00:00
New Core Sonson by Slingshot
This commit is contained in:
14
Arcade_MiST/Capcom SonSon Hardware/README.txt
Normal file
14
Arcade_MiST/Capcom SonSon Hardware/README.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
Capcom SonSon Arcade game
|
||||
=========================
|
||||
|
||||
Based on old PACE code by Mark McDougall(tcdev)
|
||||
|
||||
MiST port usage
|
||||
===============
|
||||
|
||||
- Create ROM file from the MRA file using the MRA utility.
|
||||
Example: mra -z /path/to/mame/roms SonSon.mra
|
||||
- Copy the ROM files to the root of the SD Card
|
||||
- Copy the RBF files to the SD Card
|
||||
|
||||
MRA utility: https://github.com/sebdel/mra-tools-c/
|
||||
@@ -158,7 +158,7 @@ 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/druaga.stp
|
||||
set_global_assignment -name USE_SIGNALTAP_FILE output_files/sprite.stp
|
||||
|
||||
# Power Estimation Assignments
|
||||
# ============================
|
||||
@@ -190,40 +190,6 @@ set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE SPEED
|
||||
set_global_assignment -name FITTER_EFFORT "STANDARD FIT"
|
||||
set_global_assignment -name SMART_RECOMPILE ON
|
||||
set_global_assignment -name VHDL_INPUT_VERSION VHDL_2008
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/SonSon_MiST.sv
|
||||
set_global_assignment -name VHDL_FILE rtl/target_top.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/platform_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/platform.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/pace_pkg_body.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/pace_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/pace.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/Graphics.VHD
|
||||
set_global_assignment -name VHDL_FILE rtl/video_mixer.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/video_controller_pkg_body.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/video_controller_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/video_controller.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/spritereg.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/spritectl.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/sprite_pkg_body.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/sprite_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/sprite_array.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/bitmapctl_e.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/tilemapctl_e.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/tilemapctl.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/sonson_soundboard.vhd
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/YM2149.sv
|
||||
set_global_assignment -name VHDL_FILE rtl/sound.vhd
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/sdram.sv
|
||||
set_global_assignment -name VERILOG_FILE rtl/pll.v
|
||||
set_global_assignment -name VHDL_FILE rtl/dprom_2r.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/dpram.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/sprom.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/spram.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/cpu09s.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/roms/sonson/sound_rom.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../common/CPU/T80/Z80.vhd
|
||||
set_global_assignment -name QIP_FILE ../../../common/CPU/T80/T80.qip
|
||||
set_global_assignment -name QIP_FILE ../../../common/mist/mist.qip
|
||||
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
|
||||
@@ -258,6 +224,34 @@ set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_VS
|
||||
set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to AUDIO_L
|
||||
set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to AUDIO_R
|
||||
set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to SPI_DO
|
||||
set_global_assignment -name VERILOG_FILE ../../../common/CPU/MC6809/mc6809.v
|
||||
set_global_assignment -name VERILOG_FILE ../../../common/CPU/MC6809/mc6809i.v
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/SonSon_MiST.sv
|
||||
set_global_assignment -name VHDL_FILE rtl/target_top.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/platform_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/platform.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/pace_pkg_body.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/pace_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/pace.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/Graphics.VHD
|
||||
set_global_assignment -name VHDL_FILE rtl/video_mixer.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/sonson_video_controller.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/video_controller_pkg_body.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/video_controller_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/spritereg.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/spritectl.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/sprite_pkg_body.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/sprite_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/sprite_array.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/bitmapctl_e.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/tilemapctl_e.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/tilemapctl.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/sonson_soundboard.vhd
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/YM2149.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/sdram.sv
|
||||
set_global_assignment -name VERILOG_FILE rtl/pll.v
|
||||
set_global_assignment -name VHDL_FILE rtl/dprom_2r.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/dpram.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/sprom.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/spram.vhd
|
||||
set_global_assignment -name VERILOG_FILE ../../common/CPU/MC6809/mc6809i.v
|
||||
set_global_assignment -name QIP_FILE ../../common/mist/mist.qip
|
||||
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
||||
@@ -54,7 +54,7 @@ set_time_format -unit ns -decimal_places 3
|
||||
create_clock -name {SPI_SCK} -period 41.666 -waveform { 20.8 41.666 } [get_ports {SPI_SCK}]
|
||||
|
||||
set sys_clk "pll|altpll_component|auto_generated|pll1|clk[0]"
|
||||
set sdram_clk "pll|altpll_component|auto_generated|pll1|clk[0]"
|
||||
set sdram_clk "pll|altpll_component|auto_generated|pll1|clk[2]"
|
||||
#**************************************************************
|
||||
# Create Generated Clock
|
||||
#**************************************************************
|
||||
42
Arcade_MiST/Capcom SonSon Hardware/meta/SonSon.mra
Normal file
42
Arcade_MiST/Capcom SonSon Hardware/meta/SonSon.mra
Normal file
@@ -0,0 +1,42 @@
|
||||
<misterromdescription>
|
||||
<name>SonSon</name>
|
||||
<mameversion>0216</mameversion>
|
||||
<setname>sonson</setname>
|
||||
<manufacturer>Capcom</manufacturer>
|
||||
<rbf>sonson</rbf>
|
||||
|
||||
<rom index="0" zip="sonson.zip" md5="d17bc11db95dd6e2d44ac342b3462259" type="merged|nonmerged">
|
||||
<!-- CPU2, 8k -->
|
||||
<part name="ss_6.c11"/>
|
||||
<part repeat="0x2000">FF</part>
|
||||
|
||||
<!-- CPU1, 48k -->
|
||||
<part name="ss.01e"/>
|
||||
<part name="ss.02e"/>
|
||||
<part name="ss.03e"/>
|
||||
|
||||
<!-- gfx1, 16k -->
|
||||
<group width="16">
|
||||
<part name="ss_7.b6"/>
|
||||
<part name="ss_8.b5"/>
|
||||
</group>
|
||||
|
||||
<!-- gfx2, 48k -->
|
||||
<part name="ss_9.m5"/>
|
||||
<part name="ss_10.m6"/>
|
||||
<part name="ss_11.m3"/>
|
||||
<part name="ss_12.m4"/>
|
||||
<part name="ss_13.m1"/>
|
||||
<part name="ss_14.m2"/>
|
||||
|
||||
<!-- other proms -->
|
||||
|
||||
<part name="ssb2.c4"/>
|
||||
<part name="ssb3.h7"/>
|
||||
<part name="ssb1.k11"/>
|
||||
|
||||
<part name="ssb4.b2"/>
|
||||
<part name="ssb5.b1"/>
|
||||
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
@@ -20,20 +20,20 @@ entity Graphics is
|
||||
sprite_reg_i : in to_SPRITE_REG_t;
|
||||
sprite_ctl_i : in to_SPRITE_CTL_t;
|
||||
sprite_ctl_o : out from_SPRITE_CTL_t;
|
||||
spr0_hit : out std_logic;
|
||||
|
||||
spr0_hit : out std_logic;
|
||||
|
||||
graphics_i : in to_GRAPHICS_t;
|
||||
graphics_o : out from_GRAPHICS_t;
|
||||
|
||||
video_i : in from_VIDEO_t;
|
||||
video_o : out to_VIDEO_t
|
||||
video_i : in from_VIDEO_t;
|
||||
video_o : out to_VIDEO_t
|
||||
);
|
||||
|
||||
end Graphics;
|
||||
|
||||
architecture SYN of Graphics is
|
||||
|
||||
alias clk : std_logic is video_i.clk;
|
||||
alias clk : std_logic is video_i.clk;
|
||||
|
||||
signal from_video_ctl : from_VIDEO_CTL_t;
|
||||
signal bitmap_ctl_o_s : from_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS);
|
||||
@@ -41,21 +41,21 @@ architecture SYN of Graphics is
|
||||
signal sprite_ctl_o_s : from_SPRITE_CTL_t;
|
||||
signal sprite_pri : std_logic;
|
||||
|
||||
signal rgb_data : RGB_t;
|
||||
signal rgb_data : RGB_t;
|
||||
-- before OSD is mixed in
|
||||
signal video_o_s : to_VIDEO_t;
|
||||
|
||||
|
||||
begin
|
||||
|
||||
-- dodgy OSD transparency...
|
||||
video_o.clk <= video_o_s.clk;
|
||||
video_o.clk <= video_o_s.clk;
|
||||
video_o.rgb.r <= video_o_s.rgb.r;
|
||||
video_o.rgb.g <= video_o_s.rgb.g;
|
||||
video_o.rgb.b <= video_o_s.rgb.b;
|
||||
video_o.hsync <= video_o_s.hsync;
|
||||
video_o.vsync <= video_o_s.vsync;
|
||||
video_o.hblank <= video_o_s.hblank;
|
||||
video_o.vblank <= video_o_s.vblank;
|
||||
video_o.hsync <= video_o_s.hsync;
|
||||
video_o.vsync <= video_o_s.vsync;
|
||||
video_o.hblank <= video_o_s.hblank;
|
||||
video_o.vblank <= video_o_s.vblank;
|
||||
|
||||
graphics_o.y <= from_video_ctl.y;
|
||||
-- should this be the 'real' vblank or the 'active' vblank?
|
||||
@@ -63,38 +63,21 @@ begin
|
||||
graphics_o.hblank <= video_o_s.hblank;
|
||||
graphics_o.vblank <= video_o_s.vblank;
|
||||
--graphics_o.vblank <= from_video_ctl.vblank;
|
||||
|
||||
pace_video_controller_inst : entity work.pace_video_controller
|
||||
generic map
|
||||
(
|
||||
CONFIG => PACE_VIDEO_CONTROLLER_TYPE,
|
||||
DELAY => PACE_VIDEO_PIPELINE_DELAY,
|
||||
H_SIZE => PACE_VIDEO_H_SIZE,
|
||||
V_SIZE => PACE_VIDEO_V_SIZE,
|
||||
L_CROP => PACE_VIDEO_L_CROP,
|
||||
R_CROP => PACE_VIDEO_R_CROP,
|
||||
H_SCALE => PACE_VIDEO_H_SCALE,
|
||||
V_SCALE => PACE_VIDEO_V_SCALE,
|
||||
H_SYNC_POL => PACE_VIDEO_H_SYNC_POLARITY,
|
||||
V_SYNC_POL => PACE_VIDEO_V_SYNC_POLARITY,
|
||||
BORDER_RGB => PACE_VIDEO_BORDER_RGB
|
||||
)
|
||||
|
||||
pace_video_controller_inst : entity work.sonson_video_controller
|
||||
port map
|
||||
(
|
||||
-- clocking etc
|
||||
video_i => video_i,
|
||||
|
||||
-- register interface
|
||||
reg_i.h_scale => "000",
|
||||
reg_i.v_scale => "000",
|
||||
|
||||
-- video data signals (in)
|
||||
rgb_i => rgb_data,
|
||||
rgb_i => rgb_data,
|
||||
|
||||
-- video control signals (out)
|
||||
video_ctl_o => from_video_ctl,
|
||||
|
||||
-- VGA signals (out)
|
||||
video_o => video_o_s
|
||||
video_o => video_o_s
|
||||
);
|
||||
|
||||
pace_video_mixer_inst : entity work.pace_video_mixer
|
||||
@@ -105,19 +88,19 @@ begin
|
||||
sprite_rgb => sprite_ctl_o_s.rgb,
|
||||
sprite_set => sprite_ctl_o_s.set,
|
||||
sprite_pri => sprite_pri,
|
||||
|
||||
|
||||
video_ctl_i => from_video_ctl,
|
||||
graphics_i => graphics_i,
|
||||
rgb_o => rgb_data
|
||||
);
|
||||
|
||||
GEN_NO_BITMAPS : if PACE_VIDEO_NUM_BITMAPS = 0 generate
|
||||
|
||||
GEN_NO_BITMAPS : if PACE_VIDEO_NUM_BITMAPS = 0 generate
|
||||
--bitmap_ctl_o_s <= ((others => '0'), (others => (others => '0')), '0');
|
||||
end generate GEN_NO_BITMAPS;
|
||||
|
||||
GEN_BITMAP_1 : if PACE_VIDEO_NUM_BITMAPS > 0 generate
|
||||
|
||||
forground_bitmapctl_inst : entity work.bitmapCtl(BITMAP_1)
|
||||
end generate GEN_NO_BITMAPS;
|
||||
|
||||
GEN_BITMAP_1 : if PACE_VIDEO_NUM_BITMAPS > 0 generate
|
||||
|
||||
forground_bitmapctl_inst : entity work.bitmapCtl(BITMAP_1)
|
||||
generic map
|
||||
(
|
||||
DELAY => PACE_VIDEO_PIPELINE_DELAY
|
||||
@@ -222,30 +205,30 @@ begin
|
||||
ctl_o => tilemap_ctl_o_s(2),
|
||||
|
||||
graphics_i => graphics_i
|
||||
);
|
||||
);
|
||||
|
||||
end generate GEN_TILEMAP_2;
|
||||
|
||||
end generate GEN_TILEMAP_2;
|
||||
|
||||
tilemap_ctl_o <= tilemap_ctl_o_s;
|
||||
|
||||
GEN_NO_SPRITES : if PACE_VIDEO_NUM_SPRITES = 0 generate
|
||||
GEN_NO_SPRITES : if PACE_VIDEO_NUM_SPRITES = 0 generate
|
||||
sprite_ctl_o_s <= ((others => '0'), (others => (others => '0')), '0');
|
||||
sprite_pri <= '0';
|
||||
spr0_hit <= '0';
|
||||
end generate GEN_NO_SPRITES;
|
||||
|
||||
GEN_SPRITES : if PACE_VIDEO_NUM_SPRITES > 0 generate
|
||||
|
||||
sprites_inst : sprite_array
|
||||
end generate GEN_NO_SPRITES;
|
||||
|
||||
GEN_SPRITES : if PACE_VIDEO_NUM_SPRITES > 0 generate
|
||||
|
||||
sprites_inst : sprite_array
|
||||
generic map
|
||||
(
|
||||
N_SPRITES => PACE_VIDEO_NUM_SPRITES,
|
||||
DELAY => PACE_VIDEO_PIPELINE_DELAY
|
||||
)
|
||||
port map
|
||||
(
|
||||
reset => video_i.reset,
|
||||
|
||||
port map
|
||||
(
|
||||
reset => video_i.reset,
|
||||
|
||||
-- register interface
|
||||
reg_i => sprite_reg_i,
|
||||
|
||||
@@ -254,16 +237,16 @@ begin
|
||||
|
||||
graphics_i => graphics_i,
|
||||
|
||||
row_a => sprite_ctl_o_s.a,
|
||||
row_d => sprite_ctl_i.d,
|
||||
|
||||
rgb => sprite_ctl_o_s.rgb,
|
||||
set => sprite_ctl_o_s.set,
|
||||
pri => sprite_pri,
|
||||
spr0_set => spr0_hit
|
||||
);
|
||||
row_a => sprite_ctl_o_s.a,
|
||||
row_d => sprite_ctl_i.d,
|
||||
|
||||
end generate GEN_SPRITES;
|
||||
rgb => sprite_ctl_o_s.rgb,
|
||||
set => sprite_ctl_o_s.set,
|
||||
pri => sprite_pri,
|
||||
spr0_set => spr0_hit
|
||||
);
|
||||
|
||||
end generate GEN_SPRITES;
|
||||
|
||||
sprite_ctl_o <= sprite_ctl_o_s;
|
||||
|
||||
@@ -1,38 +1,3 @@
|
||||
/***************************************************************************
|
||||
Son Son memory map (preliminary)
|
||||
driver by Mirko Buffoni
|
||||
MAIN CPU:
|
||||
0000-0fff RAM
|
||||
1000-13ff Video RAM
|
||||
1400-17ff Color RAM
|
||||
2020-207f Sprites
|
||||
4000-ffff ROM
|
||||
read:
|
||||
3002 IN0
|
||||
3003 IN1
|
||||
3004 IN2
|
||||
3005 DSW0
|
||||
3006 DSW1
|
||||
write:
|
||||
3000 horizontal scroll
|
||||
3008 watchdog reset
|
||||
3018 flipscreen (inverted)
|
||||
3010 command for the audio CPU
|
||||
3019 trigger FIRQ on audio CPU
|
||||
SOUND CPU:
|
||||
0000-07ff RAM
|
||||
e000-ffff ROM
|
||||
read:
|
||||
a000 command from the main CPU
|
||||
write:
|
||||
2000 8910 #1 control
|
||||
2001 8910 #1 write
|
||||
4000 8910 #2 control
|
||||
4001 8910 #2 write
|
||||
TODO:
|
||||
- Fix Service Mode Output Test: press p1/p2 shot to insert coin
|
||||
- Flip Screen DIP is noted in service manual and added to DIP LOCATIONS, but not working.
|
||||
***************************************************************************/
|
||||
module SonSon_MiST(
|
||||
output LED,
|
||||
output [5:0] VGA_R,
|
||||
@@ -66,12 +31,12 @@ module SonSon_MiST(
|
||||
`include "rtl/build_id.v"
|
||||
|
||||
localparam CONF_STR = {
|
||||
"SONSON;ROM;",
|
||||
"SONSON;;",
|
||||
"O2,Rotate Controls,Off,On;",
|
||||
"O34,Scanlines,Off,25%,50%,75%;",
|
||||
"O5,Blending,Off,On;",
|
||||
"O6,Freeze,Off,On;",
|
||||
"O7,Flip,Off,On;",
|
||||
//"O7,Flip,Off,On;",
|
||||
"O8,Test,Off,On;",
|
||||
"T0,Reset;",
|
||||
"V,v1.0.",`BUILD_DATE
|
||||
@@ -87,13 +52,13 @@ wire test = status[8];
|
||||
assign LED = ~ioctl_downl;
|
||||
assign SDRAM_CKE = 1;
|
||||
assign SDRAM_CLK = clk_sd;
|
||||
wire clk_sys, clk_vid, clk_sd;
|
||||
wire clk_sys, clk_sd;
|
||||
wire pll_locked;
|
||||
|
||||
pll pll(
|
||||
.inclk0(CLOCK_27),
|
||||
.areset(0),
|
||||
.c0(clk_sys),//20
|
||||
.c1(clk_vid),//40
|
||||
.c0(clk_sys),//24
|
||||
.c2(clk_sd),
|
||||
.locked(pll_locked)
|
||||
);
|
||||
@@ -133,11 +98,12 @@ user_io(
|
||||
);
|
||||
|
||||
wire [15:0] cpu_rom_addr;
|
||||
//wire [15:0] rom_addr;
|
||||
wire [15:0] rom_do;
|
||||
|
||||
wire [12:0] tile_rom_addr;
|
||||
//wire [12:0] tile_addr;
|
||||
wire [12:0] snd_rom_addr;
|
||||
wire [15:0] snd_do;
|
||||
|
||||
wire [13:1] tile_rom_addr;
|
||||
wire [15:0] tile_do;
|
||||
|
||||
wire ioctl_downl;
|
||||
@@ -147,7 +113,7 @@ wire [24:0] ioctl_addr;
|
||||
wire [7:0] ioctl_dout;
|
||||
|
||||
data_io data_io(
|
||||
.clk_sys ( clk_sd ),
|
||||
.clk_sys ( clk_sys ),
|
||||
.SPI_SCK ( SPI_SCK ),
|
||||
.SPI_SS2 ( SPI_SS2 ),
|
||||
.SPI_DI ( SPI_DI ),
|
||||
@@ -164,7 +130,7 @@ sdram sdram(
|
||||
.init_n ( pll_locked ),
|
||||
.clk ( clk_sd ),
|
||||
|
||||
// port1 used for main + sound CPU
|
||||
// port1 used for main CPU + tiledata
|
||||
.port1_req ( port1_req ),
|
||||
.port1_ack ( ),
|
||||
.port1_a ( ioctl_addr[23:1] ),
|
||||
@@ -175,17 +141,19 @@ sdram sdram(
|
||||
|
||||
.cpu1_addr ( ioctl_downl ? 16'hffff : {1'b0, cpu_rom_addr[15:1]} ),
|
||||
.cpu1_q ( rom_do ),
|
||||
.snd_addr ( ioctl_downl ? 16'hffff : (16'h6000 + tile_rom_addr[12:1]) ),
|
||||
.snd_q ( tile_do ),
|
||||
.tile_addr ( ioctl_downl ? 16'hffff : {1'b1, 2'b00, tile_rom_addr} ),
|
||||
.tile_q ( tile_do ),
|
||||
|
||||
// port2 for sprite graphics
|
||||
.port2_req ( ),
|
||||
// port2 for sound CPU
|
||||
.port2_req ( port2_req ),
|
||||
.port2_ack ( ),
|
||||
.port2_a ( ),
|
||||
.port2_ds ( ),
|
||||
.port2_we ( ),
|
||||
.port2_d ( ),
|
||||
.port2_q ( )
|
||||
.port2_a ( ioctl_addr[23:1] ),
|
||||
.port2_ds ( {ioctl_addr[0], ~ioctl_addr[0]} ),
|
||||
.port2_we ( ioctl_downl ),
|
||||
.port2_d ( {ioctl_dout, ioctl_dout} ),
|
||||
.port2_q ( ),
|
||||
.snd_addr ( snd_rom_addr[12:1] ),
|
||||
.snd_q ( snd_do )
|
||||
);
|
||||
|
||||
// ROM download controller
|
||||
@@ -198,7 +166,6 @@ always @(posedge clk_sys) begin
|
||||
port2_req <= ~port2_req;
|
||||
end
|
||||
end
|
||||
// async clock domain crossing here (clk_snd -> clk_sys)
|
||||
end
|
||||
|
||||
// reset signal generation
|
||||
@@ -217,18 +184,28 @@ always @(posedge clk_sys) begin
|
||||
|
||||
end
|
||||
|
||||
wire [11:0] audio;
|
||||
wire [9:0] snd_l, snd_r;
|
||||
wire hs, vs, hb, vb;
|
||||
wire blankn = ~(hb | vb);
|
||||
reg blankn;
|
||||
wire [3:0] g,b,r;
|
||||
wire vma;
|
||||
reg clk_vid_en; // 6 MHz
|
||||
|
||||
always @(posedge clk_sys) begin
|
||||
reg [1:0] count;
|
||||
count <= count + 1'd1;
|
||||
|
||||
clk_vid_en <= 0;
|
||||
if (count == 0) clk_vid_en <= 1;
|
||||
|
||||
if (clk_vid_en) blankn <= ~(hb | vb);
|
||||
end
|
||||
|
||||
target_top target_top(
|
||||
.clk_sys(clk_sys),
|
||||
.clk_vid(clk_vid),
|
||||
.clk_vid_en(clk_vid_en),
|
||||
.reset_in(reset),
|
||||
.vma(vma),
|
||||
.snd_l(),
|
||||
.snd_r(),
|
||||
.snd_l(snd_l),
|
||||
.snd_r(snd_r),
|
||||
.vid_hs(hs),
|
||||
.vid_vs(vs),
|
||||
.vid_hb(hb),
|
||||
@@ -236,16 +213,18 @@ target_top target_top(
|
||||
.vid_r(r),
|
||||
.vid_g(g),
|
||||
.vid_b(b),
|
||||
.inputs_p1(~{2'b00,m_down,m_up,m_right,m_left,1'b0,m_fireC}),
|
||||
.inputs_p2(~{2'b00,m_down2,m_up2,m_right2,m_left2,1'b0,m_fire2C}),
|
||||
.inputs_p1(~{2'b00,m_down,m_up,m_right,m_left,1'b0,m_fireA}),
|
||||
.inputs_p2(~{2'b00,m_down2,m_up2,m_right2,m_left2,1'b0,m_fire2A}),
|
||||
.inputs_sys(~{2'b00,m_coin2,m_coin1,2'b00,m_two_players,m_one_player}),
|
||||
.inputs_dip1(~{flip,test,"011111"}),
|
||||
.inputs_dip2(~{freeze,"1111111"}),
|
||||
.inputs_dip1(~{flip,test,6'b011111}),
|
||||
.inputs_dip2(~{freeze,7'b1111111}),
|
||||
.cpu_rom_addr(cpu_rom_addr),
|
||||
.cpu_rom_do(cpu_rom_addr[0] ? rom_do[15:8] : rom_do[7:0]),
|
||||
.snd_rom_addr(snd_rom_addr),
|
||||
.snd_rom_do(snd_rom_addr[0] ? snd_do[15:8] : snd_do[7:0]),
|
||||
.tile_rom_addr(tile_rom_addr),
|
||||
.tile_rom_do(tile_do)
|
||||
);
|
||||
);
|
||||
|
||||
mist_video #(.COLOR_DEPTH(4), .SD_HCNT_WIDTH(10)) mist_video(
|
||||
.clk_sys ( clk_sys ),
|
||||
@@ -255,35 +234,40 @@ mist_video #(.COLOR_DEPTH(4), .SD_HCNT_WIDTH(10)) mist_video(
|
||||
.R ( blankn ? r : 0 ),
|
||||
.G ( blankn ? g : 0 ),
|
||||
.B ( blankn ? b : 0 ),
|
||||
.HSync ( hs ),
|
||||
.VSync ( vs ),
|
||||
.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, rotate } ),
|
||||
.ce_divider ( 1'b0 ),
|
||||
.scandoubler_disable( 1),// scandoublerD ),
|
||||
.ce_divider ( 1'b1 ),
|
||||
.scandoubler_disable( scandoublerD ),
|
||||
.scanlines ( scanlines ),
|
||||
.blend ( blend ),
|
||||
.ypbpr ( ypbpr ),
|
||||
.no_csync ( no_csync )
|
||||
);
|
||||
|
||||
wire dac_o;
|
||||
assign AUDIO_L = dac_o;
|
||||
assign AUDIO_R = dac_o;
|
||||
|
||||
dac #(
|
||||
.C_bits(12))
|
||||
dac(
|
||||
.C_bits(10))
|
||||
dac_l(
|
||||
.clk_i(clk_sys),
|
||||
.res_n_i(1),
|
||||
.dac_i(audio),
|
||||
.dac_o(dac_o)
|
||||
.dac_i(snd_l),
|
||||
.dac_o(AUDIO_L)
|
||||
);
|
||||
|
||||
|
||||
dac #(
|
||||
.C_bits(10))
|
||||
dac_r(
|
||||
.clk_i(clk_sys),
|
||||
.res_n_i(1),
|
||||
.dac_i(snd_r),
|
||||
.dac_o(AUDIO_R)
|
||||
);
|
||||
|
||||
wire m_up, m_down, m_left, m_right, m_fireA, m_fireB, m_fireC, m_fireD, m_fireE, m_fireF;
|
||||
wire m_up2, m_down2, m_left2, m_right2, m_fire2A, m_fire2B, m_fire2C, m_fire2D, m_fire2E, m_fire2F;
|
||||
wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players;
|
||||
@@ -13,7 +13,7 @@ entity PACE is
|
||||
(
|
||||
-- clocks and resets
|
||||
clkrst_i : in from_CLKRST_t;
|
||||
vma : out std_logic;
|
||||
|
||||
-- controller inputs
|
||||
inputs_p1 : in std_logic_vector(7 downto 0);
|
||||
inputs_p2 : in std_logic_vector(7 downto 0);
|
||||
@@ -29,10 +29,12 @@ entity PACE is
|
||||
audio_o : out to_AUDIO_t;
|
||||
platform_i : in from_PLATFORM_IO_t;
|
||||
platform_o : out to_PLATFORM_IO_t;
|
||||
cpu_rom_addr : out std_logic_vector(15 downto 0);
|
||||
cpu_rom_do : in std_logic_vector(7 downto 0);
|
||||
tile_rom_addr : out std_logic_vector(12 downto 0);
|
||||
tile_rom_do : in std_logic_vector(15 downto 0)
|
||||
cpu_rom_addr : out std_logic_vector(15 downto 0);
|
||||
cpu_rom_do : in std_logic_vector(7 downto 0);
|
||||
tile_rom_addr : out std_logic_vector(12 downto 0);
|
||||
tile_rom_do : in std_logic_vector(15 downto 0);
|
||||
snd_rom_addr : out std_logic_vector(12 downto 0);
|
||||
snd_rom_do : in std_logic_vector(7 downto 0)
|
||||
);
|
||||
end entity PACE;
|
||||
|
||||
@@ -54,50 +56,53 @@ architecture SYN of PACE is
|
||||
|
||||
signal to_graphics : to_GRAPHICS_t;
|
||||
signal from_graphics : from_GRAPHICS_t;
|
||||
|
||||
signal to_sound : to_SOUND_t;
|
||||
signal from_sound : from_sound_t;
|
||||
|
||||
signal snd_irq : std_logic;
|
||||
signal snd_data : std_logic_vector(7 downto 0);
|
||||
|
||||
signal video_out : to_VIDEO_t;
|
||||
|
||||
begin
|
||||
|
||||
video_o <= video_out;
|
||||
|
||||
platform_inst : entity work.platform
|
||||
port map
|
||||
(
|
||||
-- clocking and reset
|
||||
clkrst_i => clkrst_i,
|
||||
vma => vma,
|
||||
-- controller inputs
|
||||
inputs_p1 => inputs_p1,
|
||||
inputs_p2 => inputs_p2,
|
||||
inputs_sys => inputs_sys,
|
||||
inputs_dip1 => inputs_dip1,
|
||||
inputs_dip2 => inputs_dip2,
|
||||
inputs_p1 => inputs_p1,
|
||||
inputs_p2 => inputs_p2,
|
||||
inputs_sys => inputs_sys,
|
||||
inputs_dip1 => inputs_dip1,
|
||||
inputs_dip2 => inputs_dip2,
|
||||
|
||||
-- graphics
|
||||
bitmap_i => from_bitmap_ctl,
|
||||
bitmap_o => to_bitmap_ctl,
|
||||
|
||||
|
||||
tilemap_i => from_tilemap_ctl,
|
||||
tilemap_o => to_tilemap_ctl,
|
||||
|
||||
|
||||
sprite_reg_o => to_sprite_reg,
|
||||
sprite_i => from_sprite_ctl,
|
||||
sprite_o => to_sprite_ctl,
|
||||
spr0_hit => spr0_hit,
|
||||
|
||||
|
||||
graphics_i => from_graphics,
|
||||
graphics_o => to_graphics,
|
||||
|
||||
|
||||
-- sound
|
||||
snd_i => from_sound,
|
||||
snd_o => to_sound,
|
||||
snd_irq => snd_irq,
|
||||
snd_data => snd_data,
|
||||
|
||||
platform_i => platform_i,
|
||||
platform_o => platform_o,
|
||||
cpu_rom_addr => cpu_rom_addr,
|
||||
cpu_rom_do => cpu_rom_do,
|
||||
tile_rom_addr => tile_rom_addr,
|
||||
tile_rom_do => tile_rom_do
|
||||
cpu_rom_addr => cpu_rom_addr,
|
||||
cpu_rom_do => cpu_rom_do,
|
||||
tile_rom_addr => tile_rom_addr,
|
||||
tile_rom_do => tile_rom_do
|
||||
);
|
||||
|
||||
graphics_inst : entity work.Graphics
|
||||
@@ -113,48 +118,30 @@ begin
|
||||
sprite_ctl_i => to_sprite_ctl,
|
||||
sprite_ctl_o => from_sprite_ctl,
|
||||
spr0_hit => spr0_hit,
|
||||
|
||||
|
||||
graphics_i => to_graphics,
|
||||
graphics_o => from_graphics,
|
||||
|
||||
|
||||
-- video (incl. clk)
|
||||
video_i => video_i,
|
||||
video_o => video_o
|
||||
video_i => video_i,
|
||||
video_o => video_out
|
||||
);
|
||||
|
||||
SOUND_BLOCK : block
|
||||
signal snd_data_l : std_logic_vector(7 downto 0);
|
||||
signal snd_data_r : std_logic_vector(7 downto 0);
|
||||
signal snd_a : std_logic_vector(15 downto 0);
|
||||
begin
|
||||
|
||||
snd_a <= std_logic_vector(resize(unsigned(to_sound.a), snd_a'length));
|
||||
|
||||
sound_inst : entity work.Sound
|
||||
generic map
|
||||
sound_inst : entity work.sonson_soundboard
|
||||
port map
|
||||
(
|
||||
CLK_MHz => CLK0_FREQ_MHz
|
||||
)
|
||||
port map
|
||||
(
|
||||
sysclk => clkrst_i.clk(0), -- fudge for now
|
||||
reset => clkrst_i.rst(0),
|
||||
-- clocking and reset
|
||||
clkrst_i => clkrst_i,
|
||||
|
||||
sndif_rd => to_sound.rd,
|
||||
sndif_wr => to_sound.wr,
|
||||
sndif_addr => snd_a,
|
||||
sndif_datai => to_sound.d,
|
||||
sound_irq => snd_irq,
|
||||
sound_data => snd_data,
|
||||
vblank => video_out.vblank,
|
||||
|
||||
snd_clk => audio_o.clk,
|
||||
snd_data_l => snd_data_l,
|
||||
snd_data_r => snd_data_r,
|
||||
sndif_datao => from_sound.d
|
||||
);
|
||||
audio_out_l => audio_o.ldata(9 downto 0),
|
||||
audio_out_r => audio_o.rdata(9 downto 0),
|
||||
|
||||
snd_rom_addr => snd_rom_addr,
|
||||
snd_rom_do => snd_rom_do
|
||||
);
|
||||
|
||||
-- route audio to both channels
|
||||
audio_o.ldata <= snd_data_l & "00000000";
|
||||
audio_o.rdata <= snd_data_r & "00000000";
|
||||
|
||||
end block SOUND_BLOCK;
|
||||
|
||||
end SYN;
|
||||
469
Arcade_MiST/Capcom SonSon Hardware/rtl/platform.vhd
Normal file
469
Arcade_MiST/Capcom SonSon Hardware/rtl/platform.vhd
Normal file
@@ -0,0 +1,469 @@
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
library work;
|
||||
use work.pace_pkg.all;
|
||||
use work.video_controller_pkg.all;
|
||||
use work.sprite_pkg.all;
|
||||
use work.platform_pkg.all;
|
||||
|
||||
entity platform is
|
||||
port
|
||||
(
|
||||
-- clocking and reset
|
||||
clkrst_i : in from_CLKRST_t;
|
||||
-- controller inputs
|
||||
inputs_p1 : in std_logic_vector(7 downto 0);
|
||||
inputs_p2 : in std_logic_vector(7 downto 0);
|
||||
inputs_sys : in std_logic_vector(7 downto 0);
|
||||
inputs_dip1 : in std_logic_vector(7 downto 0);
|
||||
inputs_dip2 : in std_logic_vector(7 downto 0);
|
||||
|
||||
bitmap_i : in from_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS);
|
||||
bitmap_o : out to_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS);
|
||||
|
||||
tilemap_i : in from_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS);
|
||||
tilemap_o : out to_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS);
|
||||
|
||||
sprite_reg_o : out to_SPRITE_REG_t;
|
||||
sprite_i : in from_SPRITE_CTL_t;
|
||||
sprite_o : out to_SPRITE_CTL_t;
|
||||
spr0_hit : in std_logic;
|
||||
|
||||
snd_irq : out std_logic;
|
||||
snd_data : out std_logic_vector(7 downto 0);
|
||||
|
||||
-- various graphics information
|
||||
graphics_i : in from_GRAPHICS_t;
|
||||
graphics_o : out to_GRAPHICS_t;
|
||||
|
||||
platform_i : in from_PLATFORM_IO_t;
|
||||
platform_o : out to_PLATFORM_IO_t;
|
||||
|
||||
cpu_rom_addr : out std_logic_vector(15 downto 0);
|
||||
cpu_rom_do : in std_logic_vector(7 downto 0);
|
||||
tile_rom_addr : out std_logic_vector(12 downto 0);
|
||||
tile_rom_do : in std_logic_vector(15 downto 0)
|
||||
);
|
||||
|
||||
end platform;
|
||||
|
||||
architecture SYN of platform is
|
||||
|
||||
alias clk_24M : std_logic is clkrst_i.clk(0);
|
||||
alias rst_24M : std_logic is clkrst_i.rst(0);
|
||||
alias clk_video : std_logic is clkrst_i.clk(1);
|
||||
signal cpu_reset : std_logic;
|
||||
|
||||
-- uP signals
|
||||
signal clk_E : std_logic;
|
||||
signal clk_Q : std_logic;
|
||||
signal cpu_r_wn : std_logic;
|
||||
signal cpu_a : std_logic_vector(15 downto 0);
|
||||
signal cpu_d_i : std_logic_vector(7 downto 0);
|
||||
signal cpu_d_o : std_logic_vector(7 downto 0);
|
||||
signal cpu_irq : std_logic;
|
||||
signal cpu_bs : std_logic;
|
||||
signal cpu_ba : std_logic;
|
||||
|
||||
-- ROM signals
|
||||
signal rom_cs : std_logic;
|
||||
signal rom_d_o : std_logic_vector(7 downto 0);
|
||||
|
||||
-- RAM signals
|
||||
signal wram_cs : std_logic;
|
||||
signal wram_wr : std_logic;
|
||||
signal wram_d_o : std_logic_vector(7 downto 0);
|
||||
signal vram_cs : std_logic;
|
||||
signal vram_d_o : std_logic_vector(7 downto 0);
|
||||
signal vram_wr : std_logic;
|
||||
signal cram_cs : std_logic;
|
||||
signal cram_d_o : std_logic_vector(7 downto 0);
|
||||
signal cram_wr : std_logic;
|
||||
signal sprite_cs : std_logic;
|
||||
|
||||
-- I/O signals
|
||||
signal scroll_cs : std_logic;
|
||||
signal in0_cs : std_logic;
|
||||
signal in1_cs : std_logic;
|
||||
signal in2_cs : std_logic;
|
||||
signal dsw1_cs : std_logic;
|
||||
signal dsw2_cs : std_logic;
|
||||
signal snd_cs : std_logic;
|
||||
|
||||
signal vblank_r : std_logic;
|
||||
|
||||
COMPONENT mc6809i
|
||||
GENERIC ( ILLEGAL_INSTRUCTIONS : STRING := "GHOST" );
|
||||
PORT
|
||||
(
|
||||
D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
DOut : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
ADDR : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
|
||||
RnW : OUT STD_LOGIC;
|
||||
E : IN STD_LOGIC;
|
||||
Q : IN STD_LOGIC;
|
||||
BS : OUT STD_LOGIC;
|
||||
BA : OUT STD_LOGIC;
|
||||
nIRQ : IN STD_LOGIC;
|
||||
nFIRQ : IN STD_LOGIC;
|
||||
nNMI : IN STD_LOGIC;
|
||||
AVMA : OUT STD_LOGIC;
|
||||
BUSY : OUT STD_LOGIC;
|
||||
LIC : OUT STD_LOGIC;
|
||||
nHALT : IN STD_LOGIC;
|
||||
nRESET : IN STD_LOGIC;
|
||||
nDMABREQ : IN STD_LOGIC;
|
||||
RegData : OUT STD_LOGIC_VECTOR(111 DOWNTO 0)
|
||||
);
|
||||
END COMPONENT;
|
||||
|
||||
begin
|
||||
|
||||
wram_cs <= '1' when STD_MATCH(cpu_a, "0000------------") else '0';-- RAM $0000-$0FFF
|
||||
vram_cs <= '1' when STD_MATCH(cpu_a, "000100----------") else '0';-- video ram $1000-$13FF
|
||||
cram_cs <= '1' when STD_MATCH(cpu_a, "000101----------") else '0';-- colour ram $1400-$17FF
|
||||
sprite_cs <= '1' when STD_MATCH(cpu_a, X"20"&"001-----") else
|
||||
'1' when STD_MATCH(cpu_a, X"20"&"01------") else
|
||||
'0';-- sprite 'ram' $2020-$207F
|
||||
-- I/O
|
||||
scroll_cs <= '1' when STD_MATCH(cpu_a, X"3000") else '0';
|
||||
in0_cs <= '1' when STD_MATCH(cpu_a, X"3002") else '0';
|
||||
in1_cs <= '1' when STD_MATCH(cpu_a, X"3003") else '0';
|
||||
in2_cs <= '1' when STD_MATCH(cpu_a, X"3004") else '0';
|
||||
dsw1_cs <= '1' when STD_MATCH(cpu_a, X"3005") else '0';
|
||||
dsw2_cs <= '1' when STD_MATCH(cpu_a, X"3006") else '0';
|
||||
rom_cs <= '1' when (cpu_a > X"3FFF") else '0';
|
||||
snd_cs <= '1' when cpu_a(15 downto 4) = x"301" else '0';
|
||||
|
||||
-- memory block write enables
|
||||
wram_wr <= wram_cs and not cpu_r_wn;
|
||||
vram_wr <= vram_cs and not cpu_r_wn;
|
||||
cram_wr <= cram_cs and not cpu_r_wn;
|
||||
|
||||
-- memory read mux
|
||||
cpu_d_i <= wram_d_o when wram_cs = '1' else
|
||||
vram_d_o when vram_cs = '1' else
|
||||
cram_d_o when cram_cs = '1' else
|
||||
inputs_p1 when in0_cs = '1' else
|
||||
inputs_p2 when in1_cs = '1' else
|
||||
inputs_sys when in2_cs = '1' else
|
||||
inputs_dip1 when dsw1_cs = '1' else
|
||||
inputs_dip2 when dsw2_cs = '1' else
|
||||
-- flip off, service off, coin A, 1C1C
|
||||
-- (X"80" or X"40" or X"10" or X"0F") when dsw1_cs = '1' else
|
||||
-- freeze off, easy, 20K/80K/100K, 3 lives
|
||||
-- (X"80" or X"60" or X"08" or X"03") when dsw2_cs = '1' else
|
||||
rom_d_o when rom_cs = '1' else
|
||||
(others => 'Z');
|
||||
|
||||
-- sound control
|
||||
process (clk_24M, rst_24M)
|
||||
variable count : unsigned(3 downto 0);
|
||||
begin
|
||||
if rst_24M = '1' then
|
||||
snd_irq <= '0';
|
||||
snd_data <= (others => '0');
|
||||
elsif rising_edge(clk_24M) then
|
||||
if snd_cs = '1' then
|
||||
if cpu_a(3) = '1' then
|
||||
snd_irq <= cpu_d_o(0);
|
||||
else
|
||||
snd_data <= cpu_d_o;
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
-- system timing
|
||||
process (clk_24M)
|
||||
variable count : unsigned(3 downto 0);
|
||||
begin
|
||||
if rising_edge(clk_24M) then
|
||||
count := count + 1;
|
||||
if count(1 downto 0) = "11" then
|
||||
case count(3 downto 2) is
|
||||
when "00" => clk_E <= '0';
|
||||
when "01" => clk_Q <= '1';
|
||||
when "10" => clk_E <= '1';
|
||||
when "11" => clk_Q <= '0';
|
||||
end case;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
cpu_reset <= rst_24M;
|
||||
|
||||
cpu_inst : mc6809i
|
||||
port map
|
||||
(
|
||||
D => cpu_d_i,
|
||||
DOut => cpu_d_o,
|
||||
ADDR => cpu_a,
|
||||
RnW => cpu_r_wn,
|
||||
E => clk_E,
|
||||
Q => clk_Q,
|
||||
BS => cpu_bs,
|
||||
BA => cpu_ba,
|
||||
nIRQ => not cpu_irq,
|
||||
nFIRQ => '1',
|
||||
nNMI => '1',
|
||||
AVMA => open,
|
||||
BUSY => open,
|
||||
LIC => open,
|
||||
nHALT => '1',
|
||||
nRESET => not cpu_reset,
|
||||
nDMABREQ => '1',
|
||||
RegData => open
|
||||
);
|
||||
|
||||
--WRAm_cs
|
||||
wram_inst : entity work.spram
|
||||
generic map
|
||||
(
|
||||
widthad_a => 12,
|
||||
width_a => 8
|
||||
)
|
||||
port map
|
||||
(
|
||||
address => cpu_a(11 downto 0),
|
||||
clock => clk_24M,
|
||||
data => cpu_d_o,
|
||||
wren => wram_wr,
|
||||
q => wram_d_o
|
||||
);
|
||||
|
||||
-- irq vblank interrupt
|
||||
process (clk_24M, rst_24M)
|
||||
begin
|
||||
if rst_24M = '1' then
|
||||
cpu_irq <= '0';
|
||||
elsif rising_edge(clk_24M) then
|
||||
vblank_r <= graphics_i.vblank;
|
||||
if vblank_r = '0' and graphics_i.vblank = '1' then
|
||||
cpu_irq <= '1';
|
||||
elsif cpu_ba = '0' and cpu_bs = '1' then
|
||||
cpu_irq <= '0';
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
-- scroll register
|
||||
process (clk_24M, rst_24M)
|
||||
begin
|
||||
if rst_24M = '1' then
|
||||
graphics_o.bit8(0) <= (others => '0');
|
||||
elsif rising_edge(clk_24M) then
|
||||
if scroll_cs and not cpu_r_wn then
|
||||
graphics_o.bit8(0) <= cpu_d_o;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
cpu_rom_addr <= cpu_a(15 downto 0);
|
||||
rom_d_o <= cpu_rom_do;
|
||||
|
||||
-- wren_a *MUST* be GND for CYCLONEII_SAFE_WRITE=VERIFIED_SAFE
|
||||
vram_inst : entity work.dpram
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/vram.hex",
|
||||
widthad_a => 10
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock_b => clk_24M,
|
||||
address_b => cpu_a(9 downto 0),
|
||||
wren_b => vram_wr,
|
||||
data_b => cpu_d_o,
|
||||
q_b => vram_d_o,
|
||||
|
||||
clock_a => clk_video,
|
||||
address_a => tilemap_i(1).map_a(9 downto 0),
|
||||
wren_a => '0',
|
||||
data_a => (others => 'X'),
|
||||
q_a => tilemap_o(1).map_d(7 downto 0)
|
||||
);
|
||||
tilemap_o(1).map_d(tilemap_o(1).map_d'left downto 8) <= (others => 'Z');
|
||||
|
||||
-- wren_a *MUST* be GND for CYCLONEII_SAFE_WRITE=VERIFIED_SAFE
|
||||
cram_inst : entity work.dpram
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/cram.hex",
|
||||
widthad_a => 10
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock_b => clk_24M,
|
||||
address_b => cpu_a(9 downto 0),
|
||||
wren_b => cram_wr,
|
||||
data_b => cpu_d_o,
|
||||
q_b => cram_d_o,
|
||||
|
||||
clock_a => clk_video,
|
||||
address_a => tilemap_i(1).attr_a(9 downto 0),
|
||||
wren_a => '0',
|
||||
data_a => (others => 'X'),
|
||||
q_a => tilemap_o(1).attr_d(7 downto 0)
|
||||
);
|
||||
tilemap_o(1).attr_d(tilemap_o(1).attr_d'left downto 8) <= (others => 'Z');
|
||||
|
||||
tile_rom_addr <= tilemap_i(1).tile_a(12 downto 0);
|
||||
tilemap_o(1).tile_d(15 downto 0) <= tile_rom_do;
|
||||
|
||||
BLK_SPRITES : block
|
||||
signal bit0_1 : std_logic_vector(7 downto 0); -- offset 0
|
||||
signal bit0_2 : std_logic_vector(7 downto 0); -- offset 0
|
||||
signal bit0_3 : std_logic_vector(7 downto 0); -- offset 16
|
||||
signal bit0_4 : std_logic_vector(7 downto 0); -- offset 16
|
||||
signal bit1_1 : std_logic_vector(7 downto 0);
|
||||
signal bit1_2 : std_logic_vector(7 downto 0);
|
||||
signal bit1_3 : std_logic_vector(7 downto 0);
|
||||
signal bit1_4 : std_logic_vector(7 downto 0);
|
||||
signal bit2_1 : std_logic_vector(7 downto 0);
|
||||
signal bit2_2 : std_logic_vector(7 downto 0);
|
||||
signal bit2_3 : std_logic_vector(7 downto 0);
|
||||
signal bit2_4 : std_logic_vector(7 downto 0);
|
||||
|
||||
signal sprite_a_00 : std_logic_vector(12 downto 0);
|
||||
signal sprite_a_16 : std_logic_vector(12 downto 0);
|
||||
|
||||
begin
|
||||
|
||||
-- registers
|
||||
sprite_reg_o.clk <= clk_24M;
|
||||
sprite_reg_o.clk_ena <= '1';
|
||||
sprite_reg_o.a <= cpu_a(sprite_reg_o.a'range);
|
||||
sprite_reg_o.d <= cpu_d_o;
|
||||
sprite_reg_o.wr <= sprite_cs and not cpu_r_wn;
|
||||
|
||||
-- - sprite data consists of:
|
||||
-- 16 consecutive bytes for the 1st half
|
||||
-- then the next 16 bytes for the 2nd half
|
||||
-- - because we need to fetch an entire row at once
|
||||
-- use dual-port memory to access both halves of each row
|
||||
|
||||
-- generate address for each port
|
||||
sprite_a_00 <= sprite_i.a(12 downto 5) & '0' & sprite_i.a(3 downto 0);
|
||||
sprite_a_16 <= sprite_i.a(12 downto 5) & '1' & sprite_i.a(3 downto 0);
|
||||
|
||||
-- sprite rom (bit 0, part 1/2)
|
||||
ss_9_m5_inst : entity work.dprom_2r
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/ss_9_m5.hex",
|
||||
widthad_a => 13,
|
||||
widthad_b => 13
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock => clk_video,
|
||||
address_a => sprite_a_00,
|
||||
q_a => bit0_1,
|
||||
address_b => sprite_a_16,
|
||||
q_b => bit0_3
|
||||
);
|
||||
|
||||
-- sprite rom (bit 0, part 2/2)
|
||||
ss_10_m6_inst : entity work.dprom_2r
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/ss_10_m6.hex",
|
||||
widthad_a => 13,
|
||||
widthad_b => 13
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock => clk_video,
|
||||
address_a => sprite_a_00,
|
||||
q_a => bit0_2,
|
||||
address_b => sprite_a_16,
|
||||
q_b => bit0_4
|
||||
);
|
||||
|
||||
sprite_o.d(15 downto 0) <= (bit0_1 & bit0_3) when sprite_i.a(13) = '0' else
|
||||
(bit0_2 & bit0_4);
|
||||
|
||||
-- sprite rom (bit 1, part 1/2)
|
||||
ss_11_m3_inst : entity work.dprom_2r
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/ss_11_m3.hex",
|
||||
widthad_a => 13,
|
||||
widthad_b => 13
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock => clk_video,
|
||||
address_a => sprite_a_00,
|
||||
q_a => bit1_1,
|
||||
address_b => sprite_a_16,
|
||||
q_b => bit1_3
|
||||
);
|
||||
|
||||
-- sprite rom (bit 1, part 2/2)
|
||||
ss_12_m4_inst : entity work.dprom_2r
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/ss_12_m4.hex",
|
||||
widthad_a => 13,
|
||||
widthad_b => 13
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock => clk_video,
|
||||
address_a => sprite_a_00,
|
||||
q_a => bit1_2,
|
||||
address_b => sprite_a_16,
|
||||
q_b => bit1_4
|
||||
);
|
||||
|
||||
sprite_o.d(31 downto 16) <= (bit1_1 & bit1_3) when sprite_i.a(13) = '0' else
|
||||
(bit1_2 & bit1_4);
|
||||
|
||||
-- sprite rom (bit 2, part 1/2)
|
||||
ss_13_m1_inst : entity work.dprom_2r
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/ss_13_m1.hex",
|
||||
widthad_a => 13,
|
||||
widthad_b => 13
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock => clk_video,
|
||||
address_a => sprite_a_00,
|
||||
q_a => bit2_1,
|
||||
address_b => sprite_a_16,
|
||||
q_b => bit2_3
|
||||
);
|
||||
|
||||
-- sprite rom (bit 2, part 2/2)
|
||||
ss_14_m2_inst : entity work.dprom_2r
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/ss_14_m2.hex",
|
||||
widthad_a => 13,
|
||||
widthad_b => 13
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock => clk_video,
|
||||
address_a => sprite_a_00,
|
||||
q_a => bit2_2,
|
||||
address_b => sprite_a_16,
|
||||
q_b => bit2_4
|
||||
);
|
||||
|
||||
sprite_o.d(47 downto 32) <= (bit2_1 & bit2_3) when sprite_i.a(13) = '0' else
|
||||
(bit2_2 & bit2_4);
|
||||
|
||||
end block BLK_SPRITES;
|
||||
|
||||
-- unused outputs
|
||||
|
||||
graphics_o.bit16(0) <= (others => '0');
|
||||
|
||||
end SYN;
|
||||
@@ -8,35 +8,24 @@ use work.video_controller_pkg.all;
|
||||
|
||||
package platform_pkg is
|
||||
|
||||
constant PACE_HAS_PLL : boolean := true;
|
||||
|
||||
constant PACE_VIDEO_CONTROLLER_TYPE : PACEVideoController_t := PACE_VIDEO_VGA_800x600_60Hz; --40
|
||||
constant PACE_CLK0_DIVIDE_BY : natural := 27;
|
||||
constant PACE_CLK0_MULTIPLY_BY : natural := 20; -- 20MHz
|
||||
constant PACE_CLK0_MULTIPLY_BY : natural := 24; -- 20MHz
|
||||
constant PACE_CLK1_DIVIDE_BY : natural := 27;
|
||||
constant PACE_CLK1_MULTIPLY_BY : natural := 40; -- 40MHz
|
||||
constant PACE_VIDEO_H_SCALE : integer := 2;
|
||||
constant PACE_VIDEO_V_SCALE : integer := 2;
|
||||
constant PACE_VIDEO_H_SYNC_POLARITY : std_logic := '1';
|
||||
constant PACE_VIDEO_V_SYNC_POLARITY : std_logic := '1';
|
||||
constant PACE_CLK1_MULTIPLY_BY : natural := 6; -- 40MHz
|
||||
|
||||
|
||||
constant PACE_VIDEO_BORDER_RGB : RGB_t := RGB_BLACK;
|
||||
|
||||
constant PACE_VIDEO_NUM_BITMAPS : natural := 0;
|
||||
constant PACE_VIDEO_NUM_TILEMAPS : natural := 1;
|
||||
constant PACE_VIDEO_NUM_SPRITES : natural := 24;
|
||||
constant PACE_VIDEO_H_SIZE : integer := 256; -- 240
|
||||
constant PACE_VIDEO_V_SIZE : integer := 256; -- 240
|
||||
constant PACE_VIDEO_L_CROP : integer := (256-240)/2;
|
||||
constant PACE_VIDEO_R_CROP : integer := PACE_VIDEO_L_CROP;
|
||||
constant PACE_VIDEO_PIPELINE_DELAY : integer := 3;
|
||||
|
||||
constant PACE_INPUTS_NUM_BYTES : integer := 4;
|
||||
|
||||
--
|
||||
-- Platform-specific constants (optional)
|
||||
--
|
||||
constant PACE_VIDEO_NUM_BITMAPS : natural := 0;
|
||||
constant PACE_VIDEO_NUM_TILEMAPS : natural := 1;
|
||||
constant PACE_VIDEO_NUM_SPRITES : natural := 24;
|
||||
constant PACE_VIDEO_PIPELINE_DELAY : integer := 3;
|
||||
|
||||
constant PACE_INPUTS_NUM_BYTES : integer := 4;
|
||||
|
||||
--
|
||||
-- Platform-specific constants (optional)
|
||||
--
|
||||
|
||||
constant CLK0_FREQ_MHz : natural :=
|
||||
27 * PACE_CLK0_MULTIPLY_BY / PACE_CLK0_DIVIDE_BY;
|
||||
@@ -14,11 +14,11 @@
|
||||
// ************************************************************
|
||||
// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
|
||||
//
|
||||
// 13.1.0 Build 162 10/23/2013 SJ Web Edition
|
||||
// 13.1.4 Build 182 03/12/2014 Patches 4.26 SJ Web Edition
|
||||
// ************************************************************
|
||||
|
||||
|
||||
//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
|
||||
@@ -40,14 +40,12 @@ module pll (
|
||||
areset,
|
||||
inclk0,
|
||||
c0,
|
||||
c1,
|
||||
c2,
|
||||
locked);
|
||||
|
||||
input areset;
|
||||
input inclk0;
|
||||
output c0;
|
||||
output c1;
|
||||
output c2;
|
||||
output locked;
|
||||
`ifndef ALTERA_RESERVED_QIS
|
||||
@@ -58,24 +56,22 @@ module pll (
|
||||
// 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};
|
||||
wire sub_wire0;
|
||||
wire [4:0] sub_wire1;
|
||||
wire [0:0] sub_wire6 = 1'h0;
|
||||
wire locked = sub_wire0;
|
||||
wire [2:2] sub_wire3 = sub_wire1[2:2];
|
||||
wire [0:0] sub_wire2 = sub_wire1[0:0];
|
||||
wire c0 = sub_wire2;
|
||||
wire c2 = sub_wire3;
|
||||
wire sub_wire4 = inclk0;
|
||||
wire [1:0] sub_wire5 = {sub_wire6, sub_wire4};
|
||||
|
||||
altpll altpll_component (
|
||||
.areset (areset),
|
||||
.inclk (sub_wire6),
|
||||
.clk (sub_wire0),
|
||||
.locked (sub_wire2),
|
||||
.inclk (sub_wire5),
|
||||
.locked (sub_wire0),
|
||||
.clk (sub_wire1),
|
||||
.activeclock (),
|
||||
.clkbad (),
|
||||
.clkena ({6{1'b1}}),
|
||||
@@ -111,17 +107,13 @@ module pll (
|
||||
.vcounderrange ());
|
||||
defparam
|
||||
altpll_component.bandwidth_type = "AUTO",
|
||||
altpll_component.clk0_divide_by = 27,
|
||||
altpll_component.clk0_divide_by = 9,
|
||||
altpll_component.clk0_duty_cycle = 50,
|
||||
altpll_component.clk0_multiply_by = 20,
|
||||
altpll_component.clk0_multiply_by = 8,
|
||||
altpll_component.clk0_phase_shift = "0",
|
||||
altpll_component.clk1_divide_by = 27,
|
||||
altpll_component.clk1_duty_cycle = 50,
|
||||
altpll_component.clk1_multiply_by = 40,
|
||||
altpll_component.clk1_phase_shift = "0",
|
||||
altpll_component.clk2_divide_by = 40,
|
||||
altpll_component.clk2_divide_by = 3,
|
||||
altpll_component.clk2_duty_cycle = 50,
|
||||
altpll_component.clk2_multiply_by = 83,
|
||||
altpll_component.clk2_multiply_by = 8,
|
||||
altpll_component.clk2_phase_shift = "0",
|
||||
altpll_component.compensate_clock = "CLK0",
|
||||
altpll_component.inclk0_input_frequency = 37037,
|
||||
@@ -156,7 +148,7 @@ module pll (
|
||||
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_clk1 = "PORT_UNUSED",
|
||||
altpll_component.port_clk2 = "PORT_USED",
|
||||
altpll_component.port_clk3 = "PORT_UNUSED",
|
||||
altpll_component.port_clk4 = "PORT_UNUSED",
|
||||
@@ -197,14 +189,11 @@ endmodule
|
||||
// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0"
|
||||
// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8"
|
||||
// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "27"
|
||||
// Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "27"
|
||||
// Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "40"
|
||||
// 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 "20.000000"
|
||||
// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "40.000000"
|
||||
// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "56.025002"
|
||||
// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "24.000000"
|
||||
// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "72.000000"
|
||||
// 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"
|
||||
@@ -225,33 +214,25 @@ endmodule
|
||||
// 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 "20"
|
||||
// Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "40"
|
||||
// Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "83"
|
||||
// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1"
|
||||
// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "20.00000000"
|
||||
// Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "40.00000000"
|
||||
// Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "56.00000000"
|
||||
// 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_FREQ0 STRING "24.00000000"
|
||||
// Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "72.00000000"
|
||||
// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1"
|
||||
// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "1"
|
||||
// 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"
|
||||
@@ -275,32 +256,25 @@ endmodule
|
||||
// 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 "27"
|
||||
// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "9"
|
||||
// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50"
|
||||
// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "20"
|
||||
// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "8"
|
||||
// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0"
|
||||
// Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "27"
|
||||
// Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50"
|
||||
// Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "40"
|
||||
// Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0"
|
||||
// Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "40"
|
||||
// Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "3"
|
||||
// Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50"
|
||||
// Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "83"
|
||||
// Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "8"
|
||||
// Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0"
|
||||
// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0"
|
||||
// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "37037"
|
||||
@@ -334,7 +308,7 @@ endmodule
|
||||
// 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_clk1 STRING "PORT_UNUSED"
|
||||
// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED"
|
||||
// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED"
|
||||
// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED"
|
||||
@@ -354,7 +328,6 @@ endmodule
|
||||
// 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"
|
||||
@@ -362,7 +335,6 @@ endmodule
|
||||
// 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
|
||||
@@ -46,8 +46,10 @@ module sdram (
|
||||
input [15:0] port1_d,
|
||||
output [15:0] port1_q,
|
||||
|
||||
input [15:1] cpu1_addr,
|
||||
input [16:1] cpu1_addr,
|
||||
output reg [15:0] cpu1_q,
|
||||
input [16:1] tile_addr,
|
||||
output reg [15:0] tile_q,
|
||||
|
||||
input port2_req,
|
||||
output reg port2_ack,
|
||||
@@ -61,6 +63,8 @@ module sdram (
|
||||
output reg [15:0] snd_q
|
||||
);
|
||||
|
||||
parameter MHZ = 16'd80; // 80 MHz default clock, set it to proper value to calculate refresh rate
|
||||
|
||||
localparam RASCAS_DELAY = 3'd2; // tRCD=20ns -> 2 cycles@<100MHz
|
||||
localparam BURST_LENGTH = 3'b000; // 000=1, 001=2, 010=4, 011=8
|
||||
localparam ACCESS_TYPE = 1'b0; // 0=sequential, 1=interleaved
|
||||
@@ -70,8 +74,8 @@ localparam NO_WRITE_BURST = 1'b1; // 0= write burst enabled, 1=only single acc
|
||||
|
||||
localparam MODE = { 3'b000, NO_WRITE_BURST, OP_MODE, CAS_LATENCY, ACCESS_TYPE, BURST_LENGTH};
|
||||
|
||||
// 64ms/8192 rows = 7.8us -> 842 cycles@108MHz
|
||||
localparam RFRSH_CYCLES = 10'd842;
|
||||
// 64ms/8192 rows = 7.8us
|
||||
localparam RFRSH_CYCLES = 16'd78*MHZ/4'd10;
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// ------------------------ cycle state machine ------------------------
|
||||
@@ -147,16 +151,20 @@ assign SDRAM_nWE = sd_cmd[0];
|
||||
|
||||
reg [24:1] addr_latch[2];
|
||||
reg [24:1] addr_latch_next[2];
|
||||
reg [15:1] addr_last[2];
|
||||
reg [15:1] addr_last2[2];
|
||||
reg [16:1] addr_last[2];
|
||||
reg [16:1] addr_last2[2];
|
||||
reg [15:0] din_latch[2];
|
||||
reg [1:0] oe_latch;
|
||||
reg [1:0] we_latch;
|
||||
reg [1:0] ds[2];
|
||||
|
||||
reg port1_state;
|
||||
reg port2_state;
|
||||
|
||||
localparam PORT_NONE = 2'd0;
|
||||
localparam PORT_CPU1 = 2'd1;
|
||||
localparam PORT_REQ = 2'd2;
|
||||
localparam PORT_TILE = 2'd2;
|
||||
localparam PORT_REQ = 2'd3;
|
||||
|
||||
localparam PORT_SND = 2'd1;
|
||||
|
||||
@@ -172,12 +180,15 @@ always @(*) begin
|
||||
if (refresh) begin
|
||||
next_port[0] = PORT_NONE;
|
||||
addr_latch_next[0] = addr_latch[0];
|
||||
end else if (port1_req ^ port1_ack) begin
|
||||
end else if (port1_req ^ port1_state) begin
|
||||
next_port[0] = PORT_REQ;
|
||||
addr_latch_next[0] = { 1'b0, port1_a };
|
||||
end else if (cpu1_addr != addr_last[PORT_CPU1]) begin
|
||||
next_port[0] = PORT_CPU1;
|
||||
addr_latch_next[0] = { 9'd0, cpu1_addr };
|
||||
addr_latch_next[0] = { 8'd0, cpu1_addr };
|
||||
end else if (tile_addr != addr_last[PORT_TILE]) begin
|
||||
next_port[0] = PORT_TILE;
|
||||
addr_latch_next[0] = { 8'd0, tile_addr };
|
||||
end else begin
|
||||
next_port[0] = PORT_NONE;
|
||||
addr_latch_next[0] = addr_latch[0];
|
||||
@@ -186,7 +197,7 @@ end
|
||||
|
||||
// PORT2: bank 2,3
|
||||
always @(*) begin
|
||||
if (port2_req ^ port2_ack) begin
|
||||
if (port2_req ^ port2_state) begin
|
||||
next_port[1] = PORT_REQ;
|
||||
addr_latch_next[1] = { 1'b1, port2_a };
|
||||
end else if (snd_addr != addr_last2[PORT_SND]) begin
|
||||
@@ -238,11 +249,12 @@ always @(posedge clk) begin
|
||||
sd_cmd <= CMD_ACTIVE;
|
||||
SDRAM_A <= addr_latch_next[0][22:10];
|
||||
SDRAM_BA <= addr_latch_next[0][24:23];
|
||||
addr_last[next_port[0]] <= addr_latch_next[0][15:1];
|
||||
addr_last[next_port[0]] <= addr_latch_next[0][16:1];
|
||||
if (next_port[0] == PORT_REQ) begin
|
||||
{ oe_latch[0], we_latch[0] } <= { ~port1_we, port1_we };
|
||||
ds[0] <= port1_ds;
|
||||
din_latch[0] <= port1_d;
|
||||
port1_state <= port1_req;
|
||||
end else begin
|
||||
{ oe_latch[0], we_latch[0] } <= 2'b10;
|
||||
ds[0] <= 2'b11;
|
||||
@@ -266,6 +278,7 @@ always @(posedge clk) begin
|
||||
{ oe_latch[1], we_latch[1] } <= { ~port2_we, port2_we };
|
||||
ds[1] <= port2_ds;
|
||||
din_latch[1] <= port2_d;
|
||||
port2_state <= port1_req;
|
||||
end else begin
|
||||
{ oe_latch[1], we_latch[1] } <= 2'b10;
|
||||
ds[1] <= 2'b11;
|
||||
@@ -307,6 +320,7 @@ always @(posedge clk) begin
|
||||
case(port[0])
|
||||
PORT_REQ: begin port1_q <= sd_din; port1_ack <= port1_req; end
|
||||
PORT_CPU1: begin cpu1_q <= sd_din; end
|
||||
PORT_TILE: begin tile_q <= sd_din; end
|
||||
default: ;
|
||||
endcase;
|
||||
end
|
||||
262
Arcade_MiST/Capcom SonSon Hardware/rtl/sonson_soundboard.vhd
Normal file
262
Arcade_MiST/Capcom SonSon Hardware/rtl/sonson_soundboard.vhd
Normal file
@@ -0,0 +1,262 @@
|
||||
library ieee;
|
||||
|
||||
use work.pace_pkg.all;
|
||||
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.std_logic_unsigned.all;
|
||||
use ieee.numeric_std.all;
|
||||
library work;
|
||||
|
||||
entity sonson_soundboard is
|
||||
port(
|
||||
clkrst_i : in from_CLKRST_t;
|
||||
sound_irq : in std_logic;
|
||||
sound_data : in std_logic_vector(7 downto 0);
|
||||
vblank : in std_logic;
|
||||
audio_out_l : out std_logic_vector(9 downto 0);
|
||||
audio_out_r : out std_logic_vector(9 downto 0);
|
||||
snd_rom_addr : out std_logic_vector(12 downto 0);
|
||||
snd_rom_do : in std_logic_vector(7 downto 0)
|
||||
);
|
||||
|
||||
end sonson_soundboard;
|
||||
|
||||
architecture SYN of sonson_soundboard is
|
||||
|
||||
component YM2149
|
||||
port (
|
||||
CLK : in std_logic;
|
||||
CE : in std_logic;
|
||||
RESET : in std_logic;
|
||||
A8 : in std_logic := '1';
|
||||
A9_L : in std_logic := '0';
|
||||
BDIR : in std_logic; -- Bus Direction (0 - read , 1 - write)
|
||||
BC : in std_logic; -- Bus control
|
||||
DI : in std_logic_vector(7 downto 0);
|
||||
DO : out std_logic_vector(7 downto 0);
|
||||
CHANNEL_A : out std_logic_vector(7 downto 0);
|
||||
CHANNEL_B : out std_logic_vector(7 downto 0);
|
||||
CHANNEL_C : out std_logic_vector(7 downto 0);
|
||||
|
||||
SEL : in std_logic;
|
||||
MODE : in std_logic;
|
||||
|
||||
ACTIVE : out std_logic_vector(5 downto 0);
|
||||
|
||||
IOA_in : in std_logic_vector(7 downto 0);
|
||||
IOA_out : out std_logic_vector(7 downto 0);
|
||||
|
||||
IOB_in : in std_logic_vector(7 downto 0);
|
||||
IOB_out : out std_logic_vector(7 downto 0)
|
||||
);
|
||||
end component;
|
||||
|
||||
COMPONENT mc6809i
|
||||
GENERIC ( ILLEGAL_INSTRUCTIONS : STRING := "GHOST" );
|
||||
PORT
|
||||
(
|
||||
D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
DOut : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
ADDR : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
|
||||
RnW : OUT STD_LOGIC;
|
||||
E : IN STD_LOGIC;
|
||||
Q : IN STD_LOGIC;
|
||||
BS : OUT STD_LOGIC;
|
||||
BA : OUT STD_LOGIC;
|
||||
nIRQ : IN STD_LOGIC;
|
||||
nFIRQ : IN STD_LOGIC;
|
||||
nNMI : IN STD_LOGIC;
|
||||
AVMA : OUT STD_LOGIC;
|
||||
BUSY : OUT STD_LOGIC;
|
||||
LIC : OUT STD_LOGIC;
|
||||
nHALT : IN STD_LOGIC;
|
||||
nRESET : IN STD_LOGIC;
|
||||
nDMABREQ : IN STD_LOGIC;
|
||||
RegData : OUT STD_LOGIC_VECTOR(111 DOWNTO 0)
|
||||
);
|
||||
END COMPONENT;
|
||||
|
||||
alias clk : std_logic is clkrst_i.clk(0);
|
||||
alias reset : std_logic is clkrst_i.rst(0);
|
||||
|
||||
signal clk_E : std_logic;
|
||||
signal clk_Q : 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_rw : std_logic;
|
||||
signal cpu_irq : std_logic;
|
||||
signal cpu_ba : std_logic;
|
||||
signal cpu_bs : std_logic;
|
||||
|
||||
signal wram_cs : std_logic;
|
||||
signal wram_we : std_logic;
|
||||
signal wram_do : std_logic_vector( 7 downto 0);
|
||||
|
||||
signal rom_cs : std_logic;
|
||||
signal snd_rd : std_logic;
|
||||
|
||||
signal clk_en_snd : std_logic; -- 1.5 MHz
|
||||
signal ay1_cs : std_logic;
|
||||
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 ay1_do : std_logic_vector(7 downto 0);
|
||||
signal ay1_port_b_do : std_logic_vector(7 downto 0);
|
||||
|
||||
signal ay2_cs : std_logic;
|
||||
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 ay2_do : std_logic_vector(7 downto 0);
|
||||
|
||||
signal vblank_r : std_logic;
|
||||
|
||||
begin
|
||||
|
||||
-- cs
|
||||
snd_rd <= '1' when cpu_addr(15 downto 13) = "101" else '0'; -- a000
|
||||
wram_cs <= '1' when cpu_addr(15 downto 13) = "000" else '0'; -- 0000-07ff RAM
|
||||
rom_cs <= '1' when cpu_addr(15 downto 13) = "111" else '0'; -- e000-ffff ROM
|
||||
ay1_cs <= '1' when cpu_addr(15 downto 13) = "001" else '0'; -- 2000
|
||||
ay2_cs <= '1' when cpu_addr(15 downto 13) = "010" else '0'; -- 4000
|
||||
|
||||
-- write enables
|
||||
wram_we <= '1' when cpu_rw = '0' and wram_cs = '1' else '0';
|
||||
|
||||
-- mux cpu in data between roms/io/wram
|
||||
cpu_di <= wram_do when wram_cs = '1' else
|
||||
sound_data when snd_rd = '1' else
|
||||
ay1_do when ay1_cs = '1' else
|
||||
ay2_do when ay2_cs = '1' else
|
||||
snd_rom_do when rom_cs = '1' else X"FF";
|
||||
|
||||
process (clk)
|
||||
variable count : unsigned(3 downto 0);
|
||||
begin
|
||||
if rising_edge(clk) then
|
||||
count := count + 1;
|
||||
if count(1 downto 0) = "11" then
|
||||
case count(3 downto 2) is
|
||||
when "00" => clk_E <= '0';
|
||||
when "01" => clk_Q <= '1';
|
||||
when "10" => clk_E <= '1';
|
||||
when "11" => clk_Q <= '0';
|
||||
end case;
|
||||
end if;
|
||||
|
||||
clk_en_snd <= '0';
|
||||
if count = "0000" then
|
||||
clk_en_snd <= '1';
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
process (clk, reset)
|
||||
begin
|
||||
if reset = '1' then
|
||||
cpu_irq <= '0';
|
||||
elsif rising_edge(clk) then
|
||||
vblank_r <= vblank;
|
||||
if vblank_r = '0' and vblank = '1' then
|
||||
cpu_irq <= '1';
|
||||
elsif cpu_ba = '0' and cpu_bs = '1' then
|
||||
cpu_irq <= '0';
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
cpu_inst : mc6809i
|
||||
port map
|
||||
(
|
||||
D => cpu_di,
|
||||
DOut => cpu_do,
|
||||
ADDR => cpu_addr,
|
||||
RnW => cpu_rw,
|
||||
E => clk_E,
|
||||
Q => clk_Q,
|
||||
BS => cpu_bs,
|
||||
BA => cpu_ba,
|
||||
nIRQ => not cpu_irq,
|
||||
nFIRQ => sound_irq,
|
||||
nNMI => '1',
|
||||
AVMA => open,
|
||||
BUSY => open,
|
||||
LIC => open,
|
||||
nHALT => '1',
|
||||
nRESET => not reset,
|
||||
nDMABREQ => '1',
|
||||
RegData => open
|
||||
);
|
||||
|
||||
snd_rom_addr <= cpu_addr(12 downto 0);
|
||||
|
||||
cpu_ram : entity work.spram
|
||||
generic map( widthad_a => 11)
|
||||
port map(
|
||||
clock => clk,
|
||||
wren => wram_we,
|
||||
address => cpu_addr(10 downto 0),
|
||||
data => cpu_do,
|
||||
q => wram_do
|
||||
);
|
||||
|
||||
ay83910_inst1: YM2149
|
||||
port map (
|
||||
CLK => clk,
|
||||
CE => clk_en_snd,
|
||||
RESET => reset,
|
||||
A8 => '1',
|
||||
A9_L => not ay1_cs,
|
||||
BDIR => not cpu_rw,
|
||||
BC => not cpu_addr(0) or cpu_rw,
|
||||
DI => cpu_do,
|
||||
DO => ay1_do,
|
||||
CHANNEL_A => ay1_chan_a,
|
||||
CHANNEL_B => ay1_chan_b,
|
||||
CHANNEL_C => ay1_chan_c,
|
||||
|
||||
SEL => '0',
|
||||
MODE => '1',
|
||||
|
||||
ACTIVE => open,
|
||||
|
||||
IOA_in => (others => '0'),
|
||||
IOA_out => open,
|
||||
|
||||
IOB_in => (others => '0'),
|
||||
IOB_out => open
|
||||
);
|
||||
|
||||
audio_out_l <= "0000000000" + ay1_chan_a + ay1_chan_b + ay1_chan_c;
|
||||
|
||||
ay83910_inst2: YM2149
|
||||
port map (
|
||||
CLK => clk,
|
||||
CE => clk_en_snd,
|
||||
RESET => reset,
|
||||
A8 => '1',
|
||||
A9_L => not ay2_cs,
|
||||
BDIR => not cpu_rw,
|
||||
BC => not cpu_addr(0) or cpu_rw,
|
||||
DI => cpu_do,
|
||||
DO => ay2_do,
|
||||
CHANNEL_A => ay2_chan_a,
|
||||
CHANNEL_B => ay2_chan_b,
|
||||
CHANNEL_C => ay2_chan_c,
|
||||
|
||||
SEL => '0',
|
||||
MODE => '1',
|
||||
|
||||
ACTIVE => open,
|
||||
|
||||
IOA_in => (others => '0'),
|
||||
IOA_out => open,
|
||||
|
||||
IOB_in => (others => '0'),
|
||||
IOB_out => open
|
||||
);
|
||||
|
||||
audio_out_r <= "0000000000" + ay2_chan_a + ay2_chan_b + ay2_chan_c;
|
||||
|
||||
end SYN;
|
||||
@@ -0,0 +1,129 @@
|
||||
library IEEE;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
library work;
|
||||
use work.video_controller_pkg.all;
|
||||
|
||||
entity sonson_video_controller is
|
||||
port
|
||||
(
|
||||
-- clocking etc
|
||||
video_i : in from_VIDEO_t;
|
||||
|
||||
-- video input data
|
||||
rgb_i : in RGB_t;
|
||||
|
||||
-- control signals (out)
|
||||
video_ctl_o : out from_VIDEO_CTL_t;
|
||||
|
||||
-- video output control & data
|
||||
video_o : out to_VIDEO_t
|
||||
);
|
||||
end sonson_video_controller;
|
||||
|
||||
architecture SYN of sonson_video_controller is
|
||||
|
||||
alias clk : std_logic is video_i.clk;
|
||||
alias clk_ena : std_logic is video_i.clk_ena;
|
||||
alias reset : std_logic is video_i.reset;
|
||||
|
||||
signal hcnt : unsigned(8 downto 0);
|
||||
signal vcnt : unsigned(8 downto 0);
|
||||
signal hsync : std_logic;
|
||||
signal vsync : std_logic;
|
||||
signal hblank : std_logic; -- hblank mux
|
||||
signal hblank1 : std_logic; -- normal hblank
|
||||
signal hblank2 : std_logic; -- shifted hblank for some games
|
||||
signal vblank : std_logic;
|
||||
begin
|
||||
|
||||
-------------------
|
||||
-- Video scanner --
|
||||
-------------------
|
||||
-- Note: this is not what the hardware originally has.
|
||||
-- hcnt [x180..x1FF-x000..x0FF] => 128+256 = 384 pixels, 384/6Mhz => 1 line is 64us (15.6KHz)
|
||||
-- vcnt [x1FA..x1FF-x000..x0FF] => 6+256 = 262 lines, 1 frame is 262 x 64us = 16.76ms (59.6Hz)
|
||||
|
||||
process (reset, clk, clk_ena)
|
||||
begin
|
||||
if reset='1' then
|
||||
hcnt <= (others=>'0');
|
||||
vcnt <= '1'&X"FC";
|
||||
elsif rising_edge(clk) and clk_ena = '1'then
|
||||
hcnt <= hcnt + 1;
|
||||
if hcnt = '0'&x"FF" then
|
||||
hcnt <= '1'&x"80";
|
||||
vcnt <= vcnt + 1;
|
||||
if vcnt = '0'&x"FF" then
|
||||
vcnt <= '1'&x"FA";
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
process (reset, clk, clk_ena)
|
||||
begin
|
||||
if reset = '1' then
|
||||
hsync <= '0';
|
||||
vsync <= '0';
|
||||
hblank <= '1';
|
||||
vblank <= '1';
|
||||
elsif rising_edge(clk) and clk_ena = '1' then
|
||||
-- display blank
|
||||
if hcnt = '0'&x"0F" then
|
||||
hblank <= '0';
|
||||
if vcnt = '0'&x"00" then
|
||||
vblank <= '0';
|
||||
end if;
|
||||
end if;
|
||||
if hcnt = '0'&x"FF" then
|
||||
hblank <= '1';
|
||||
if vcnt = '0'&x"FF" then
|
||||
vblank <= '1';
|
||||
end if;
|
||||
end if;
|
||||
|
||||
-- display sync
|
||||
if hcnt = '1'&x"A8" then
|
||||
hsync <= '1';
|
||||
if vcnt = '1'&x"FC" then
|
||||
vsync <= '1';
|
||||
end if;
|
||||
end if;
|
||||
if hcnt = '1'&x"DF" then
|
||||
hsync <= '0';
|
||||
if vcnt = '1'&x"FE" then
|
||||
vsync <= '0';
|
||||
end if;
|
||||
end if;
|
||||
|
||||
-- registered rgb output
|
||||
if hblank = '1' or vblank = '1' then
|
||||
video_o.rgb <= RGB_BLACK;
|
||||
else
|
||||
video_o.rgb <= rgb_i;
|
||||
end if;
|
||||
|
||||
end if;
|
||||
end process;
|
||||
|
||||
video_o.hsync <= hsync;
|
||||
video_o.vsync <= vsync;
|
||||
video_o.hblank <= hblank;
|
||||
video_o.vblank <= vblank;
|
||||
video_ctl_o.stb <= '1';
|
||||
video_ctl_o.x <= "00"&std_logic_vector(hcnt);
|
||||
video_ctl_o.y <= "00"&std_logic_vector(vcnt);
|
||||
-- blank signal goes to tilemap/spritectl
|
||||
video_ctl_o.hblank <= hblank;
|
||||
video_ctl_o.vblank <= vblank;
|
||||
|
||||
-- pass-through for tile/bitmap & sprite controllers
|
||||
video_ctl_o.clk <= clk;
|
||||
video_ctl_o.clk_ena <= clk_ena;
|
||||
|
||||
-- for video DACs and TFT output
|
||||
video_o.clk <= clk;
|
||||
|
||||
end SYN;
|
||||
@@ -73,12 +73,12 @@ begin
|
||||
i := 0;
|
||||
elsif rising_edge(clk) and clk_ena = '1' then
|
||||
ld_r <= ld_r(ld_r'left-1 downto 0) & ld_r(ld_r'left);
|
||||
row_a <= ctl_o(i).a;
|
||||
if i = N_SPRITES-1 then
|
||||
i := 0;
|
||||
else
|
||||
i := i + 1;
|
||||
end if;
|
||||
row_a <= ctl_o(i).a;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
@@ -47,10 +47,9 @@ architecture SYN of spritectl is
|
||||
|
||||
begin
|
||||
|
||||
-- handle xflip
|
||||
flipData(47 downto 32) <= flip_row (ctl_i.d(47 downto 32), reg_i.xflip);
|
||||
flipData(31 downto 16) <= flip_row (ctl_i.d(31 downto 16), reg_i.xflip);
|
||||
flipData(15 downto 0) <= flip_row (ctl_i.d(15 downto 0), reg_i.xflip);
|
||||
flipData(47 downto 32) <= ctl_i.d(47 downto 32);
|
||||
flipData(31 downto 16) <= ctl_i.d(31 downto 16);
|
||||
flipData(15 downto 0) <= ctl_i.d(15 downto 0);
|
||||
|
||||
process (clk)
|
||||
|
||||
@@ -61,10 +60,7 @@ begin
|
||||
variable yMat : boolean; -- raster is between first and last line of sprite
|
||||
variable xMat : boolean; -- raster in between left edge and end of line
|
||||
|
||||
-- the width of rowCount determines the scanline multipler
|
||||
-- - eg. (4 downto 0) is 1:1
|
||||
-- (5 downto 0) is 2:1 (scan-doubling)
|
||||
variable rowCount : std_logic_vector(3+PACE_VIDEO_V_SCALE downto 0);
|
||||
variable rowCount : std_logic_vector(4 downto 0);
|
||||
|
||||
variable clut_i : integer range 0 to 31;
|
||||
variable clut_entry : sprite_clut_entry_t;
|
||||
@@ -77,7 +73,7 @@ begin
|
||||
if rising_edge(clk) then
|
||||
if clk_ena = '1' then
|
||||
|
||||
x := unsigned(reg_i.x);
|
||||
x := unsigned(reg_i.x) + 8;
|
||||
y := unsigned(reg_i.y);
|
||||
|
||||
if video_ctl.hblank = '1' then
|
||||
@@ -92,7 +88,7 @@ begin
|
||||
-- start counting sprite row
|
||||
rowCount := (others => '0');
|
||||
yMat := true;
|
||||
elsif rowCount(rowCount'left downto rowCount'left-4) = "10000" then
|
||||
elsif rowCount(4 downto 0) = "10000" then
|
||||
yMat := false;
|
||||
end if;
|
||||
|
||||
@@ -103,21 +99,28 @@ begin
|
||||
rowStore := (others => '0');
|
||||
end if;
|
||||
end if;
|
||||
|
||||
|
||||
elsif video_ctl.stb = '1' then
|
||||
|
||||
|
||||
if unsigned(video_ctl.x) = x then
|
||||
-- count up at left edge of sprite
|
||||
rowCount := std_logic_vector(unsigned(rowCount) + 1);
|
||||
xMat := true;
|
||||
end if;
|
||||
|
||||
|
||||
if xMat then
|
||||
-- shift in next pixel
|
||||
pel := rowStore(32) & rowStore(16) & rowStore(0);
|
||||
rowStore(47 downto 32) := '0' & rowStore(47 downto 33);
|
||||
rowStore(31 downto 16) := '0' & rowStore(31 downto 17);
|
||||
rowStore(15 downto 0) := '0' & rowStore(15 downto 1);
|
||||
if reg_i.xflip = '1' then
|
||||
pel := rowStore(47) & rowStore(31) & rowStore(15);
|
||||
rowStore(47 downto 32) := rowStore(46 downto 32) & '0';
|
||||
rowStore(31 downto 16) := rowStore(30 downto 16) & '0';
|
||||
rowStore(15 downto 0) := rowStore(14 downto 0) & '0';
|
||||
else
|
||||
pel := rowStore(32) & rowStore(16) & rowStore(0);
|
||||
rowStore(47 downto 32) := '0' & rowStore(47 downto 33);
|
||||
rowStore(31 downto 16) := '0' & rowStore(31 downto 17);
|
||||
rowStore(15 downto 0) := '0' & rowStore(15 downto 1);
|
||||
end if;
|
||||
end if;
|
||||
|
||||
end if;
|
||||
@@ -149,11 +152,11 @@ begin
|
||||
-- use dual-port memory to access both halves of each row
|
||||
ctl_o.a(4) <= '0'; -- used for 1st/2nd port of dual-port memory
|
||||
if reg_i.yflip = '1' then
|
||||
ctl_o.a(3 downto 0) <= not rowCount(rowCount'left-1 downto rowCount'left-4);
|
||||
ctl_o.a(3 downto 0) <= not rowCount(3 downto 0);
|
||||
else
|
||||
ctl_o.a(3 downto 0) <= rowCount(rowCount'left-1 downto rowCount'left-4);
|
||||
ctl_o.a(3 downto 0) <= rowCount(3 downto 0);
|
||||
end if;
|
||||
|
||||
|
||||
end if; -- rising_edge(clk)
|
||||
end process;
|
||||
|
||||
@@ -26,7 +26,7 @@ architecture SYN of sptReg is
|
||||
|
||||
begin
|
||||
|
||||
process (clk)
|
||||
process (clk, reg_i)
|
||||
variable i : integer range 0 to 31;
|
||||
begin
|
||||
-- sprite registers $2020-$207F, 4 bytes per sprite
|
||||
109
Arcade_MiST/Capcom SonSon Hardware/rtl/target_top.vhd
Normal file
109
Arcade_MiST/Capcom SonSon Hardware/rtl/target_top.vhd
Normal file
@@ -0,0 +1,109 @@
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.std_logic_unsigned.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
library work;
|
||||
use work.pace_pkg.all;
|
||||
use work.video_controller_pkg.all;
|
||||
use work.platform_pkg.all;
|
||||
|
||||
entity target_top is
|
||||
port(
|
||||
clk_sys : in std_logic;
|
||||
clk_vid_en : in std_logic;
|
||||
reset_in : in std_logic;
|
||||
snd_l : out std_logic_vector(9 downto 0);
|
||||
snd_r : out std_logic_vector(9 downto 0);
|
||||
vid_hs : out std_logic;
|
||||
vid_vs : out std_logic;
|
||||
vid_hb : out std_logic;
|
||||
vid_vb : out std_logic;
|
||||
vid_r : out std_logic_vector(3 downto 0);
|
||||
vid_g : out std_logic_vector(3 downto 0);
|
||||
vid_b : out std_logic_vector(3 downto 0);
|
||||
inputs_p1 : in std_logic_vector(7 downto 0);
|
||||
inputs_p2 : in std_logic_vector(7 downto 0);
|
||||
inputs_sys : in std_logic_vector(7 downto 0);
|
||||
inputs_dip1 : in std_logic_vector(7 downto 0);
|
||||
inputs_dip2 : in std_logic_vector(7 downto 0);
|
||||
cpu_rom_addr : out std_logic_vector(15 downto 0);
|
||||
cpu_rom_do : in std_logic_vector(7 downto 0);
|
||||
tile_rom_addr : out std_logic_vector(12 downto 0);
|
||||
tile_rom_do : in std_logic_vector(15 downto 0);
|
||||
snd_rom_addr : out std_logic_vector(12 downto 0);
|
||||
snd_rom_do : in std_logic_vector(7 downto 0)
|
||||
);
|
||||
|
||||
end target_top;
|
||||
|
||||
architecture SYN of target_top is
|
||||
|
||||
signal clkrst_i : from_CLKRST_t;
|
||||
signal video_i : from_VIDEO_t;
|
||||
signal video_o : to_VIDEO_t;
|
||||
signal audio_i : from_AUDIO_t;
|
||||
signal audio_o : to_AUDIO_t;
|
||||
signal platform_i : from_PLATFORM_IO_t;
|
||||
signal platform_o : to_PLATFORM_IO_t;
|
||||
|
||||
|
||||
begin
|
||||
|
||||
clkrst_i.clk(0) <=clk_sys;
|
||||
clkrst_i.clk(1) <= clk_sys;
|
||||
clkrst_i.arst <= reset_in;
|
||||
clkrst_i.arst_n <= not clkrst_i.arst;
|
||||
|
||||
video_i.clk <= clk_sys;
|
||||
video_i.clk_ena <= clk_vid_en;
|
||||
video_i.reset <= reset_in;
|
||||
|
||||
GEN_RESETS : for i in 0 to 3 generate
|
||||
|
||||
process (clkrst_i)
|
||||
variable rst_r : std_logic_vector(2 downto 0) := (others => '0');
|
||||
begin
|
||||
if clkrst_i.arst = '1' then
|
||||
rst_r := (others => '1');
|
||||
elsif rising_edge(clkrst_i.clk(i)) then
|
||||
rst_r := rst_r(rst_r'left-1 downto 0) & '0';
|
||||
end if;
|
||||
clkrst_i.rst(i) <= rst_r(rst_r'left);
|
||||
end process;
|
||||
|
||||
end generate GEN_RESETS;
|
||||
|
||||
vid_r <= video_o.rgb.r(9 downto 6);
|
||||
vid_g <= video_o.rgb.g(9 downto 6);
|
||||
vid_b <= video_o.rgb.b(9 downto 6);
|
||||
vid_hs <= video_o.hsync;
|
||||
vid_vs <= video_o.vsync;
|
||||
vid_hb <= video_o.hblank;
|
||||
vid_vb <= video_o.vblank;
|
||||
snd_l <= audio_o.ldata(9 downto 0);
|
||||
snd_r <= audio_o.rdata(9 downto 0);
|
||||
|
||||
pace_inst : entity work.pace
|
||||
port map(
|
||||
clkrst_i => clkrst_i,
|
||||
inputs_p1 => inputs_p1,
|
||||
inputs_p2 => inputs_p2,
|
||||
inputs_sys => inputs_sys,
|
||||
inputs_dip1 => inputs_dip1,
|
||||
inputs_dip2 => inputs_dip2,
|
||||
video_i => video_i,
|
||||
video_o => video_o,
|
||||
audio_i => audio_i,
|
||||
audio_o => audio_o,
|
||||
platform_i => platform_i,
|
||||
platform_o => platform_o,
|
||||
cpu_rom_addr => cpu_rom_addr,
|
||||
cpu_rom_do => cpu_rom_do,
|
||||
tile_rom_addr => tile_rom_addr,
|
||||
tile_rom_do => tile_rom_do,
|
||||
snd_rom_addr => snd_rom_addr,
|
||||
snd_rom_do => snd_rom_do
|
||||
);
|
||||
|
||||
end SYN;
|
||||
@@ -55,34 +55,35 @@ begin
|
||||
if rising_edge(clk) then
|
||||
if clk_ena = '1' then
|
||||
|
||||
-- video is clipped left and right (only 224 wide)
|
||||
-- don't scroll the fist 5 lines
|
||||
if unsigned(y) < 40 then
|
||||
x_adj := unsigned(x);
|
||||
else
|
||||
x_adj := unsigned(x) + unsigned(scroll);
|
||||
end if;
|
||||
|
||||
|
||||
-- 1st stage of pipeline
|
||||
-- - read tile from tilemap
|
||||
-- - read attribute data
|
||||
if stb = '1' then
|
||||
ctl_o.map_a(4 downto 0) <= std_logic_vector(x_adj(7 downto 3));
|
||||
ctl_o.attr_a(4 downto 0) <= std_logic_vector(x_adj(7 downto 3));
|
||||
if x_adj(2 downto 0) = "000" then
|
||||
ctl_o.map_a(4 downto 0) <= std_logic_vector(x_adj(7 downto 3));
|
||||
ctl_o.attr_a(4 downto 0) <= std_logic_vector(x_adj(7 downto 3));
|
||||
end if;
|
||||
end if;
|
||||
|
||||
|
||||
-- 2nd stage of pipeline
|
||||
-- - read tile data from tile ROM
|
||||
if stb = '1' then
|
||||
if x_adj(2 downto 0) = "001" then
|
||||
attr_d_r := ctl_i.attr_d(attr_d_r'range);
|
||||
--map_d_r := ctl_i.map_d(map_d_r'range);
|
||||
if x_adj(2 downto 0) = "010" then
|
||||
ctl_o.tile_a(12 downto 11) <= ctl_i.attr_d(1 downto 0);
|
||||
ctl_o.tile_a(10 downto 3) <= ctl_i.map_d(7 downto 0);
|
||||
end if;
|
||||
end if;
|
||||
ctl_o.tile_a(12 downto 11) <= attr_d_r(1 downto 0);
|
||||
ctl_o.tile_a(10 downto 3) <= ctl_i.map_d(7 downto 0);
|
||||
|
||||
if stb = '1' then
|
||||
if x_adj(2 downto 0) = "010" then
|
||||
if x_adj(2 downto 0) = "111" then
|
||||
attr_d_r := ctl_i.attr_d(attr_d_r'range);
|
||||
tile_d_r := ctl_i.tile_d(tile_d_r'range);
|
||||
else
|
||||
tile_d_r(15 downto 8) := tile_d_r(14 downto 8) & '0';
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,109 +0,0 @@
|
||||
# Cycle Accurate MC6809 Core
|
||||
|
||||
## Details
|
||||
|
||||
This is a Verilog implementation of the Motorola MC6809 and MC6809E microprocessors from late 1970s. It is intentionally implemented in a manner to make it as similar as possible to the original microprocessors.
|
||||
|
||||
When this was implemented, other 6809 cores already had been written. These other cores were in use and had been verified. Although I've never used any of these cores, I'm confident that they're excellent replications of the instruction set. However, none (as far as I know) was verified to be cycle-accurate. Encouragement from several sources (particularly one very generous source) convinced me to invest the time.
|
||||
|
||||
Beyond merely cycle-accurate, the goal was to attempt to preserve as much of the actual bus signals and protocols as possible. Signals such as DMABREQ, TSC, MRDY, and LIC, while infrequently used were still implemented. Bus traffic was identified with a Logic Analyzer and matched to the 6809's specs (and, truthfully, when the specs were vague, details captured from hard MC6809/MC6809E part behavior). The particulars in the Motorola specifications were replicated.
|
||||
|
||||
The goal was cycle accuracy and that dictated much of the design. This was never intended to be a supercharged superset of a MC6809. If you're looking to mega-power your existing system, this might not be the best choice. (Read the section on What This Is Not for explanation.)
|
||||
|
||||
## Purpose, License
|
||||
|
||||
I invested the time in the desire that *people use it*. I haven't given away hardware designs or software since the 1980s. However, this seems like a worthwhile exception.
|
||||
|
||||
While the source is completely available, this is *not* an "open-source *group* project". You may modify it as you see fit. If you find errors, notifying me would be appreciated. Still, this is **not** a group project. I don't intend that to come off as rude quite so much as frank. I may choose to modify the core in the future; many "open-source group projects" seem to me to become interesting social studies in design-by-commitee, and how much time is required just to manage multiple people with multiple inclinations becomes significant. I confess that this scenario is not something that appeals to me. [Outside of a day job, I prefer to work with a very small and fairly private group.] If you're enthusiastic or appreciative, use the core in a design and I'll be thrilled - tell me about it, and I'll explain to you how thrilled I am.
|
||||
|
||||
Refer to the [licensing](./documentation/LICENSE.md) requirements if you choose to leverage this work.
|
||||
|
||||
This isn't an attempt to deal with part scarcity. Any variant of 6809 is still quite easy to obtain (at darned cheap prices, too). In truth, *far cheaper* than an FPGA.
|
||||
|
||||
The actual target are people who are reimplementing retro-devices (Arcade games, Computers) that have incorporated entire designs into an FPGA, but require cycle accuracy. The core's required space on an FPGA isn't overwhelming once you hit a certain range of parts and integration. (If you're looking at CPLDs, you might want to scale up a bit.)
|
||||
|
||||
## Implementation
|
||||
|
||||
The core was implemented using Motorola's original documentation. Particularly, **Figure 18** in the MC6809 and MC6809E datasheets. There is a very close mapping between those five pages of diagrams and the bus and cycle activity of the CPU.
|
||||
|
||||
I have noticed that some repositories of HDL tend to be only slightly more organized than *people tossing HDL files "over the wall"*. Explanations of how they work, how you as a consumer of the HDL should deal with it, etc. tend to be lacking or totally non-existent.
|
||||
|
||||
I do have an interest (outside of this project) in HDL education; not quite in tutorials, but in implementations of HDMI, USB, SATA, etc. and explaining clearly how an implementation works - along with the hardware standard at the same time.
|
||||
|
||||
Please - if you're not experienced in an HDL already, this cpu core isn't likely very useful to you as a learning mechanism. There are wonderful tutorials out there already; I highly recommend learning, experimenting, and so forth *first*, before attempting to absorb this design.
|
||||
|
||||
## Validation
|
||||
|
||||
The design was validated in multiple fashions, including against a Vectrex from 1982, a TRS-80 Color Computer 3, A slew of Williams Arcade games, and another wave of Taito Arcade games.
|
||||
|
||||
Literal bus compatibility was achieved using a [GODIL-40](http://www.oho-elektronik.de/) against the above scenarios. I can't say enough nice things about the [GODIL](http://www.oho-elektronik.de/) design. Slick, compact. It's darned nice work. The only bad thing is that they're in short supply. (Oh, and they're 10x-20x the price of a hard CPU. I wouldn't recommend replacing your daily-use CPUs with a soft CPU in a GODIL unless you have a strong reason for doing so.)
|
||||
|
||||
Functional testing was against the list of platforms above. They all work.
|
||||
|
||||
Actual instruction cycle testing was done with the frequent help of Erik Gavriluk, who donated his time, consideration, and even hardware to the project. In this case, MAME sports a cycle-accurate 6809 emulator; Erik generated code that ran (nearly) every instruction in every addressing mode, and then ran that through MAME and kept an absolute cycle count. I captured the soft core's bus on a GODIL running the exact same code and matched the cycle counts. To improve things, Erik provided me with the register contents after every instruction. I wrote a testbench to run the same code and validated that the registers changed after each instruction identically in each scenario and in the exact same number of cycles. The result was gratifying. (Ahem, once it worked. Believe me, the CoCo, the cycle testing, the GODIL - they *all* pointed me at problems. I won't claim that the design is flawless - nothing I've ever written truly is - but effort *has* been made to actually verify the thing, and I'll list each of the platforms and experiences. [I'll even grumpily point out that Stargate has illegal instructions in it that they're darned lucky the 6809 happened to walk over.]
|
||||
|
||||
Precise control signal testing (Interrupts, /HALT) were primarily done on JROK's Williams board. The Williams arcade games had a blitter, and it used /HALT to gain the bus and take action. JROK had done some extensive timing validation to prove that his implementation of the Williams design was **accurate**. I contacted him and being as he's an incredibly nice person, he gave me some advice and access to his source + prebuilt binaries. I was quite thankful - I found bus timing errors (related to /HALT and related to /IRQ latency) in the same vein (how many cycles before the next-new-instruction does each have to be asserted in order to be serviced at the beginning of the next instruction?) as a result. A very worthwhile endeavor, as I'd been convinced that I was correct; however, his code led me to swap hard CPUs with my soft core on analyzer captures and to realize that despite my intention to match the documentation perfectly there were cases where the documentation left details unclear, requiring comparison between a hard CPU and my existing timing.
|
||||
|
||||
## What This Is Not
|
||||
|
||||
This isn't an attempt to deal with parts scarcity, nor prepare for it. I can't imagine that 6809s will become *hard to get* in the next decade or so. There isn't a ton of volume required and there are lots of warehouses from companies that make their entire businesses on out-of-production parts.
|
||||
|
||||
This isn't an attempt to make a faster MC6809. The implementation would have been different had that been a goal. It has extensive 'dead' cycles on the bus to fit MC6809 specifications. If I conditionally remove them, it would be significantly more efficient than a real MC6809 (but once again, not cycle-accurate).
|
||||
|
||||
This core does not include HD6309 instructions. I did check, and without the 'dead' cycles mentioned above (the things that make it cycle-accurate), every instruction is at least as efficient as the HD6309, and most are more efficient. (I do have advantages of 40 years of technology over the original MC6809 design team, and at least 30 years over the HD6309 design team.) New registers and instructions from the HD6309 aren't there. Once again, that wasn't the goal. [I may still enable a dynamic mechanism to switch between cycle-accurate and minimum-cycles-required as an instantiation parameter.]
|
||||
|
||||
If your goal really is "a super 6809", I have [strong opinions](./documentation/super6809.md) on the topic.
|
||||
|
||||
## Perfection?
|
||||
|
||||
While I'd love to say that this is a perfect replica, logic-level details of the implementation of the CPU aren't available. The Motorola documentation is *excellent*, but still not complete.
|
||||
|
||||
I know of inconsistencies - but inconsistencies that I expect are trivial. Anything deemed as serious has been dealt with as soon as I've been made aware of it.
|
||||
|
||||
The instructions have been heavily validated, and I'm confident in their accuracy - but not quite so arrogant as to insist that there could not be an oversight. (I'm not a young man any longer; I've been wrong too many times to be as remotely as confident as I was when I was 16.)
|
||||
|
||||
Should issues be discovered, expect transparency and fixes - even if it's an incredibly rare edge case. [If you're actively using `/DMABREQ`, please contact me. You're the first.]
|
||||
|
||||
## How does it work?
|
||||
|
||||
This isn't quite the same question as the next, but if you really want to dig in and grasp the implementation, I've written a summary of the design [here](./documentation/CoreDesign.md).
|
||||
|
||||
## How Do I Use It?
|
||||
|
||||
### Samples
|
||||
|
||||
Application of the core in a GODIL is provided. With this, you can - although for what reason, I'm not sure - plug-replace a MC6809 or MC6809E in nearly any design (*note the oscillator in the Vectrex instead of the crystal*). This is intended to demonstrate compatibility.
|
||||
|
||||
A sample implementation is provided against a cheap Xilinx Spartan 6 LX9 board from eBay (China), a cheap Altera Cyclone IV EP4CE6 board (also from eBay, China), and two Cyclone V boards from terasic. These aren't attempting to run at original speeds, so I set them to 25Mhz for no reason other than "I can". These are intended to demonstrate use of the core entirely internal to an FPGA.
|
||||
|
||||
### General Guidelines
|
||||
|
||||
A list of general guidelines is provided. They are likely worth reading if you consider using this core.
|
||||
|
||||
## Documentation
|
||||
|
||||
1. [Explanation of the CPU Core design.](./documentation/CoreDesign.md)
|
||||
2. [Validation Efforts.](./documentation/Validation.md)
|
||||
3. [Implementation Examples](./documentation/samples.md).
|
||||
|
||||
## Who Am I?
|
||||
|
||||
Despite a certain degree of desire to remain anonymous, that seems pointless in today's world.
|
||||
|
||||
My name is Greg Miller; I learned assembly in 1981 on a 6809 in a TRS-80 Color Computer, leaving me *fond* of this CPU architecture.
|
||||
|
||||
Not surprisingly, I work in the tech industry (although quite definitely not implementing legacy hardware in FPGAs), do not represent my employer in any capacity whatsoever here, and have a family and a mortgage.
|
||||
|
||||
You can contact me via:
|
||||
|
||||
gregmiller6809@gmail.com
|
||||
|
||||
|
||||
## Final Thoughts
|
||||
|
||||
I'll keep track of my [Final Thoughts](./documentation/FinalThoughts.md) on the project.
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
[I do want to thank a few people](documentation/Acknowledgements.md).
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
`timescale 1ns / 1ps
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// Company:
|
||||
// Engineer:
|
||||
//
|
||||
// Create Date: 08:11:34 09/23/2016
|
||||
// Design Name:
|
||||
// Module Name: mc6809e
|
||||
// Project Name:
|
||||
// Target Devices:
|
||||
// Tool versions:
|
||||
// Description:
|
||||
//
|
||||
// Dependencies:
|
||||
//
|
||||
// Revision:
|
||||
// Revision 0.01 - File Created
|
||||
// Additional Comments:
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
module mc6809(
|
||||
input [7:0] D,
|
||||
output [7:0] DOut,
|
||||
output [15:0] ADDR,
|
||||
output RnW,
|
||||
output E,
|
||||
output Q,
|
||||
output BS,
|
||||
output BA,
|
||||
input nIRQ,
|
||||
input nFIRQ,
|
||||
input nNMI,
|
||||
input EXTAL,
|
||||
input XTAL,
|
||||
input nHALT,
|
||||
input nRESET,
|
||||
input MRDY,
|
||||
input nDMABREQ
|
||||
|
||||
, output [111:0] RegData
|
||||
|
||||
);
|
||||
|
||||
reg [1:0] clk_phase=2'b00;
|
||||
|
||||
wire CLK;
|
||||
assign CLK=EXTAL;
|
||||
|
||||
wire LIC;
|
||||
wire BUSY;
|
||||
wire AVMA;
|
||||
reg rE;
|
||||
reg rQ;
|
||||
assign E = rE;
|
||||
assign Q = rQ;
|
||||
|
||||
mc6809i cpucore(.D(D), .DOut(DOut), .ADDR(ADDR), .RnW(RnW), .E(E), .Q(Q), .BS(BS), .BA(BA), .nIRQ(nIRQ), .nFIRQ(nFIRQ),
|
||||
.nNMI(nNMI), .AVMA(AVMA), .BUSY(BUSY), .LIC(LIC), .nHALT(nHALT), .nRESET(nRESET), .nDMABREQ(nDMABREQ)
|
||||
,.RegData(RegData)
|
||||
);
|
||||
|
||||
always @(negedge CLK)
|
||||
begin
|
||||
case (clk_phase)
|
||||
2'b00:
|
||||
rE <= 0;
|
||||
2'b01:
|
||||
rQ <= 1;
|
||||
2'b10:
|
||||
rE <= 1;
|
||||
2'b11:
|
||||
rQ <= 0;
|
||||
endcase
|
||||
|
||||
if (MRDY == 1'b1)
|
||||
clk_phase <= clk_phase + 2'b01;
|
||||
end
|
||||
|
||||
|
||||
endmodule
|
||||
@@ -1,48 +0,0 @@
|
||||
`timescale 1ns / 1ps
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// Company:
|
||||
// Engineer:
|
||||
//
|
||||
// Create Date: 08:11:34 09/23/2016
|
||||
// Design Name:
|
||||
// Module Name: mc6809e
|
||||
// Project Name:
|
||||
// Target Devices:
|
||||
// Tool versions:
|
||||
// Description:
|
||||
//
|
||||
// Dependencies:
|
||||
//
|
||||
// Revision:
|
||||
// Revision 0.01 - File Created
|
||||
// Additional Comments:
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
module mc6809e(
|
||||
input [7:0] D,
|
||||
output [7:0] DOut,
|
||||
output [15:0] ADDR,
|
||||
output RnW,
|
||||
input E,
|
||||
input Q,
|
||||
output BS,
|
||||
output BA,
|
||||
input nIRQ,
|
||||
input nFIRQ,
|
||||
input nNMI,
|
||||
output AVMA,
|
||||
output BUSY,
|
||||
output LIC,
|
||||
input nHALT,
|
||||
input nRESET
|
||||
|
||||
);
|
||||
|
||||
|
||||
|
||||
mc6809i cpucore (.D(D), .DOut(DOut), .ADDR(ADDR), .RnW(RnW), .E(E), .Q(Q), .BS(BS), .BA(BA), .nIRQ(nIRQ), .nFIRQ(nFIRQ),
|
||||
.nNMI(nNMI), .AVMA(AVMA), .BUSY(BUSY), .LIC(LIC), .nHALT(nHALT), .nRESET(nRESET), .nDMABREQ(1)
|
||||
);
|
||||
|
||||
|
||||
endmodule
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,82 +0,0 @@
|
||||
`timescale 1ns / 1ps
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// Company:
|
||||
// Engineer:
|
||||
//
|
||||
// Create Date: 09/18/2016 09:25:01 PM
|
||||
// Design Name:
|
||||
// Module Name: 6809 Superset module of MC6809 and MC6809E signals
|
||||
// Project Name:
|
||||
// Target Devices:
|
||||
// Tool Versions:
|
||||
// Description:
|
||||
//
|
||||
// Dependencies:
|
||||
//
|
||||
// Revision:
|
||||
// Revision 0.01 - File Created
|
||||
// Additional Comments:
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
module mc6809s(
|
||||
input [7:0] D,
|
||||
output [7:0] DOut,
|
||||
output [15:0] ADDR,
|
||||
output RnW,
|
||||
input CLK4,
|
||||
output BS,
|
||||
output BA,
|
||||
input nIRQ,
|
||||
input nFIRQ,
|
||||
input nNMI,
|
||||
output AVMA,
|
||||
output BUSY,
|
||||
output LIC,
|
||||
input nRESET,
|
||||
input nHALT,
|
||||
input nDMABREQ,
|
||||
output E,
|
||||
output Q,
|
||||
output reg [1:0] clk4_cnt,
|
||||
output [111:0] RegData
|
||||
);
|
||||
|
||||
reg rE;
|
||||
reg rQ;
|
||||
assign E = rE;
|
||||
assign Q = rQ;
|
||||
reg nCoreRESET;
|
||||
|
||||
mc6809i corecpu(.D(D), .DOut(DOut), .ADDR(ADDR), .RnW(RnW), .E(rE), .Q(rQ), .BS(BS), .BA(BA), .nIRQ(nIRQ), .nFIRQ(nFIRQ), .nNMI(nNMI), .AVMA(AVMA), .BUSY(BUSY), .LIC(LIC), .nRESET(nCoreRESET),
|
||||
.nDMABREQ(nDMABREQ), .nHALT(nHALT), .RegData(RegData) );
|
||||
|
||||
always @(posedge CLK4)
|
||||
begin
|
||||
clk4_cnt <= clk4_cnt+2'b01;
|
||||
|
||||
if (nRESET == 0)
|
||||
begin
|
||||
clk4_cnt <= 0;
|
||||
nCoreRESET <= 0;
|
||||
end
|
||||
|
||||
if ( clk4_cnt == 2'b00 ) // RISING EDGE OF E
|
||||
rE <= 1;
|
||||
|
||||
if (clk4_cnt == 2'b01) // RISING EDGE OF Q
|
||||
rQ <= 1;
|
||||
|
||||
if (clk4_cnt == 2'b10) // FALLING EDGE OF E
|
||||
rE <= 0;
|
||||
|
||||
if (clk4_cnt == 2'b11) // FALLING EDGE OF Q
|
||||
begin
|
||||
rQ <= 0;
|
||||
nCoreRESET <= 1;
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
endmodule
|
||||
@@ -1,567 +0,0 @@
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
library work;
|
||||
use work.pace_pkg.all;
|
||||
use work.video_controller_pkg.all;
|
||||
use work.sprite_pkg.all;
|
||||
use work.platform_pkg.all;
|
||||
|
||||
entity platform is
|
||||
port
|
||||
(
|
||||
-- clocking and reset
|
||||
clkrst_i : in from_CLKRST_t;
|
||||
vma : out std_logic;
|
||||
-- controller inputs
|
||||
inputs_p1 : in std_logic_vector(7 downto 0);
|
||||
inputs_p2 : in std_logic_vector(7 downto 0);
|
||||
inputs_sys : in std_logic_vector(7 downto 0);
|
||||
inputs_dip1 : in std_logic_vector(7 downto 0);
|
||||
inputs_dip2 : in std_logic_vector(7 downto 0);
|
||||
|
||||
bitmap_i : in from_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS);
|
||||
bitmap_o : out to_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS);
|
||||
|
||||
tilemap_i : in from_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS);
|
||||
tilemap_o : out to_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS);
|
||||
|
||||
sprite_reg_o : out to_SPRITE_REG_t;
|
||||
sprite_i : in from_SPRITE_CTL_t;
|
||||
sprite_o : out to_SPRITE_CTL_t;
|
||||
spr0_hit : in std_logic;
|
||||
|
||||
-- various graphics information
|
||||
graphics_i : in from_GRAPHICS_t;
|
||||
graphics_o : out to_GRAPHICS_t;
|
||||
|
||||
snd_i : in from_SOUND_t;
|
||||
snd_o : out to_SOUND_t;
|
||||
platform_i : in from_PLATFORM_IO_t;
|
||||
platform_o : out to_PLATFORM_IO_t;
|
||||
|
||||
cpu_rom_addr : out std_logic_vector(15 downto 0);
|
||||
cpu_rom_do : in std_logic_vector(7 downto 0);
|
||||
tile_rom_addr : out std_logic_vector(12 downto 0);
|
||||
tile_rom_do : in std_logic_vector(15 downto 0)
|
||||
);
|
||||
|
||||
end platform;
|
||||
|
||||
architecture SYN of platform is
|
||||
|
||||
alias clk_20M : std_logic is clkrst_i.clk(0);
|
||||
alias rst_20M : std_logic is clkrst_i.rst(0);
|
||||
alias clk_video : std_logic is clkrst_i.clk(1);
|
||||
signal cpu_reset : std_logic;
|
||||
|
||||
-- uP signals
|
||||
signal clk_2M_en : std_logic;
|
||||
signal cpu_clk_en : std_logic;
|
||||
signal cpu_r_wn : std_logic;
|
||||
signal cpu_a : std_logic_vector(15 downto 0);
|
||||
signal cpu_d_i : std_logic_vector(7 downto 0);
|
||||
signal cpu_d_o : std_logic_vector(7 downto 0);
|
||||
signal cpu_irq : std_logic;
|
||||
|
||||
-- ROM signals
|
||||
signal rom_cs : std_logic;
|
||||
|
||||
-- RAM signals
|
||||
signal wram_cs : std_logic;
|
||||
signal wram_wr : std_logic;
|
||||
signal wram_d_o : std_logic_vector(7 downto 0);
|
||||
signal vram_cs : std_logic;
|
||||
signal vram_d_o : std_logic_vector(7 downto 0);
|
||||
signal vram_wr : std_logic;
|
||||
signal cram_cs : std_logic;
|
||||
signal cram_d_o : std_logic_vector(7 downto 0);
|
||||
signal cram_wr : std_logic;
|
||||
signal sprite_cs : std_logic;
|
||||
|
||||
-- I/O signals
|
||||
signal scroll_cs : std_logic;
|
||||
signal in0_cs : std_logic;
|
||||
signal in1_cs : std_logic;
|
||||
signal in2_cs : std_logic;
|
||||
signal dsw1_cs : std_logic;
|
||||
signal dsw2_cs : std_logic;
|
||||
|
||||
signal rom4_d_o : std_logic_vector(7 downto 0);
|
||||
signal rom8_d_o : std_logic_vector(7 downto 0);
|
||||
signal romC_d_o : std_logic_vector(7 downto 0);
|
||||
signal rom_d_o : std_logic_vector(7 downto 0);
|
||||
|
||||
signal cpu_rn_w : std_logic;
|
||||
|
||||
COMPONENT mc6809i
|
||||
GENERIC ( ILLEGAL_INSTRUCTIONS : STRING := "GHOST" );
|
||||
PORT
|
||||
(
|
||||
D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
DOut : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
ADDR : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
|
||||
RnW : OUT STD_LOGIC;
|
||||
E : IN STD_LOGIC;
|
||||
Q : IN STD_LOGIC;
|
||||
BS : OUT STD_LOGIC;
|
||||
BA : OUT STD_LOGIC;
|
||||
nIRQ : IN STD_LOGIC;
|
||||
nFIRQ : IN STD_LOGIC;
|
||||
nNMI : IN STD_LOGIC;
|
||||
AVMA : OUT STD_LOGIC;
|
||||
BUSY : OUT STD_LOGIC;
|
||||
LIC : OUT STD_LOGIC;
|
||||
nHALT : IN STD_LOGIC;
|
||||
nRESET : IN STD_LOGIC;
|
||||
nDMABREQ : IN STD_LOGIC;
|
||||
RegData : OUT STD_LOGIC_VECTOR(111 DOWNTO 0)
|
||||
);
|
||||
END COMPONENT;
|
||||
|
||||
begin
|
||||
|
||||
wram_cs <= '1' when STD_MATCH(cpu_a, "0000------------") else '0';-- RAM $0000-$0FFF
|
||||
vram_cs <= '1' when STD_MATCH(cpu_a, "000100----------") else '0';-- video ram $1000-$13FF
|
||||
cram_cs <= '1' when STD_MATCH(cpu_a, "000101----------") else '0';-- colour ram $1400-$17FF
|
||||
sprite_cs <= '1' when STD_MATCH(cpu_a, X"20"&"001-----") else
|
||||
'1' when STD_MATCH(cpu_a, X"20"&"01------") else
|
||||
'0';-- sprite 'ram' $2020-$207F
|
||||
-- I/O
|
||||
scroll_cs <= '1' when STD_MATCH(cpu_a, X"3000") else '0';
|
||||
in0_cs <= '1' when STD_MATCH(cpu_a, X"3002") else '0';
|
||||
in1_cs <= '1' when STD_MATCH(cpu_a, X"3003") else '0';
|
||||
in2_cs <= '1' when STD_MATCH(cpu_a, X"3004") else '0';
|
||||
dsw1_cs <= '1' when STD_MATCH(cpu_a, X"3005") else '0';
|
||||
dsw2_cs <= '1' when STD_MATCH(cpu_a, X"3006") else '0';
|
||||
rom_cs <= '1' when (cpu_a > X"3FFF") else '0';
|
||||
|
||||
-- memory block write enables
|
||||
wram_wr <= wram_cs and clk_2M_en and not cpu_r_wn;
|
||||
vram_wr <= vram_cs and clk_2M_en and not cpu_r_wn;
|
||||
cram_wr <= cram_cs and clk_2M_en and not cpu_r_wn;
|
||||
|
||||
-- memory read mux
|
||||
cpu_d_i <= wram_d_o when wram_cs = '1' else
|
||||
vram_d_o when vram_cs = '1' else
|
||||
cram_d_o when cram_cs = '1' else
|
||||
inputs_p1 when in0_cs = '1' else
|
||||
inputs_p2 when in1_cs = '1' else
|
||||
inputs_sys when in2_cs = '1' else
|
||||
inputs_dip1 when dsw1_cs = '1' else
|
||||
inputs_dip2 when dsw2_cs = '1' else
|
||||
-- flip off, service off, coin A, 1C1C
|
||||
-- (X"80" or X"40" or X"10" or X"0F") when dsw1_cs = '1' else
|
||||
-- freeze off, easy, 20K/80K/100K, 3 lives
|
||||
-- (X"80" or X"60" or X"08" or X"03") when dsw2_cs = '1' else
|
||||
rom_d_o when rom_cs = '1' else
|
||||
-- cpu_rom_do when rom_cs = '1' else
|
||||
(others => 'Z');
|
||||
|
||||
|
||||
-- system timing
|
||||
process (clk_20M, rst_20M)
|
||||
variable count : integer range 0 to 10-1;
|
||||
begin
|
||||
if rst_20M = '1' then
|
||||
count := 0;
|
||||
elsif rising_edge(clk_20M) then
|
||||
clk_2M_en <= '0'; -- default
|
||||
case count is
|
||||
when 0 =>
|
||||
clk_2M_en <= '1';
|
||||
when others =>
|
||||
null;
|
||||
end case;
|
||||
if count = count'high then
|
||||
count := 0;
|
||||
else
|
||||
count := count + 1;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
-- cpu09 core uses negative clock edge
|
||||
--cpu_clk_en <= not (clk_2M_en and not platform_pause);
|
||||
cpu_clk_en <= clk_2M_en;
|
||||
|
||||
-- add game reset later
|
||||
cpu_reset <= rst_20M;
|
||||
|
||||
-- cpu_inst : entity work.cpu09
|
||||
-- generic map
|
||||
-- (
|
||||
-- CLK_POL => '1'
|
||||
-- )
|
||||
-- port map
|
||||
-- (
|
||||
-- clk => clk_20M,
|
||||
-- clk_en => cpu_clk_en,
|
||||
-- rst => cpu_reset,
|
||||
-- rw => cpu_r_wn,
|
||||
-- vma => vma,
|
||||
--ba => open,
|
||||
--bs => open,
|
||||
-- addr => cpu_a,
|
||||
-- data_in => cpu_d_i,
|
||||
-- data_out => cpu_d_o,
|
||||
-- halt => '0',
|
||||
-- hold => '0',
|
||||
-- irq => cpu_irq,
|
||||
-- firq => '0',
|
||||
--- nmi => '0'
|
||||
-- );
|
||||
|
||||
--changed for test
|
||||
cpu_inst : mc6809i
|
||||
port map
|
||||
(
|
||||
D => cpu_d_i,
|
||||
DOut => cpu_d_o,
|
||||
ADDR => cpu_a,
|
||||
RnW => cpu_r_wn,
|
||||
E => cpu_clk_en,
|
||||
Q => clk_20M,
|
||||
BS => open,
|
||||
BA => open,
|
||||
nIRQ => not cpu_irq,
|
||||
nFIRQ => '1',
|
||||
nNMI => '1',
|
||||
AVMA => open,
|
||||
BUSY => open,
|
||||
LIC => open,
|
||||
nHALT => '1',
|
||||
nRESET => not cpu_reset,
|
||||
nDMABREQ => '1',
|
||||
RegData => open
|
||||
);
|
||||
|
||||
|
||||
|
||||
--WRAm_cs
|
||||
wram_inst : entity work.spram
|
||||
generic map
|
||||
(
|
||||
widthad_a => 12,
|
||||
width_a => 8
|
||||
)
|
||||
port map
|
||||
(
|
||||
address => cpu_a(11 downto 0),
|
||||
clock => clk_20M,
|
||||
data => cpu_d_o,
|
||||
wren => wram_wr,
|
||||
q => wram_d_o
|
||||
);
|
||||
|
||||
-- irq vblank interrupt
|
||||
process (clk_20M, rst_20M)
|
||||
variable vblank_r : std_logic_vector(3 downto 0);
|
||||
alias vblank_prev : std_logic is vblank_r(vblank_r'left);
|
||||
alias vblank_um : std_logic is vblank_r(vblank_r'left-1);
|
||||
begin
|
||||
if rst_20M = '1' then
|
||||
vblank_r := (others => '0');
|
||||
cpu_irq <= '0';
|
||||
elsif rising_edge(clk_20M) then
|
||||
if vblank_um = '1' and vblank_prev = '0' then
|
||||
cpu_irq <= '1';
|
||||
elsif vblank_um = '0' then
|
||||
cpu_irq <= '0';
|
||||
end if;
|
||||
-- numeta the vblank
|
||||
vblank_r := vblank_r(vblank_r'left-1 downto 0) & graphics_i.vblank;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
-- scroll register
|
||||
process (clk_20M, rst_20M)
|
||||
begin
|
||||
if rst_20M = '1' then
|
||||
graphics_o.bit8(0) <= (others => '0');
|
||||
elsif rising_edge(clk_20M) then
|
||||
if scroll_cs and clk_2M_en and not cpu_r_wn then
|
||||
graphics_o.bit8(0) <= cpu_d_o;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
|
||||
rom_4000_inst : entity work.sprom
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/ss_01e.hex",
|
||||
widthad_a => 14
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock => clk_20M,
|
||||
address => cpu_a(13 downto 0),
|
||||
q => rom4_d_o
|
||||
);
|
||||
|
||||
rom_8000_inst : entity work.sprom
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/ss_02e.hex",
|
||||
widthad_a => 14
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock => clk_20M,
|
||||
address => cpu_a(13 downto 0),
|
||||
q => rom8_d_o
|
||||
);
|
||||
|
||||
rom_C000_inst : entity work.sprom
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/ss_03e.hex",
|
||||
widthad_a => 14
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock => clk_20M,
|
||||
address => cpu_a(13 downto 0),
|
||||
q => romC_d_o
|
||||
);
|
||||
|
||||
rom_d_o <= rom4_d_o when STD_MATCH(cpu_a, "01--------------") else
|
||||
rom8_d_o when STD_MATCH(cpu_a, "10--------------") else
|
||||
romC_d_o;
|
||||
|
||||
--cpu_rom_addr <= cpu_a(15 downto 0);
|
||||
--rom_d_o <= cpu_rom_do;
|
||||
|
||||
-- wren_a *MUST* be GND for CYCLONEII_SAFE_WRITE=VERIFIED_SAFE
|
||||
vram_inst : entity work.dpram
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/vram.hex",
|
||||
widthad_a => 10
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock_b => clk_20M,
|
||||
address_b => cpu_a(9 downto 0),
|
||||
wren_b => vram_wr,
|
||||
data_b => cpu_d_o,
|
||||
q_b => vram_d_o,
|
||||
|
||||
clock_a => clk_video,
|
||||
address_a => tilemap_i(1).map_a(9 downto 0),
|
||||
wren_a => '0',
|
||||
data_a => (others => 'X'),
|
||||
q_a => tilemap_o(1).map_d(7 downto 0)
|
||||
);
|
||||
tilemap_o(1).map_d(tilemap_o(1).map_d'left downto 8) <= (others => 'Z');
|
||||
|
||||
-- wren_a *MUST* be GND for CYCLONEII_SAFE_WRITE=VERIFIED_SAFE
|
||||
cram_inst : entity work.dpram
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/cram.hex",
|
||||
widthad_a => 10
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock_b => clk_20M,
|
||||
address_b => cpu_a(9 downto 0),
|
||||
wren_b => cram_wr,
|
||||
data_b => cpu_d_o,
|
||||
q_b => cram_d_o,
|
||||
|
||||
clock_a => clk_video,
|
||||
address_a => tilemap_i(1).attr_a(9 downto 0),
|
||||
wren_a => '0',
|
||||
data_a => (others => 'X'),
|
||||
q_a => tilemap_o(1).attr_d(7 downto 0)
|
||||
);
|
||||
tilemap_o(1).attr_d(tilemap_o(1).attr_d'left downto 8) <= (others => 'Z');
|
||||
|
||||
--tile rom (bit 0)
|
||||
ss_7_b6_inst : entity work.sprom
|
||||
generic map
|
||||
(
|
||||
init_file => "./roms/ss_7_b6.hex",
|
||||
widthad_a => 13
|
||||
)
|
||||
port map
|
||||
(
|
||||
clock => clk_video,
|
||||
address => tilemap_i(1).tile_a(12 downto 0),
|
||||
q => tilemap_o(1).tile_d(7 downto 0)
|
||||
);
|
||||
|
||||
-- tile rom (bit 1)---will not fit in FPGA Block Ram
|
||||
-- ss_8_b5_inst : entity work.sprom
|
||||
-- generic map
|
||||
-- (
|
||||
--- init_file => "./roms/ss_8_b5.hex",
|
||||
-- widthad_a => 13
|
||||
-- )
|
||||
-- port map
|
||||
-- (
|
||||
-- clock => clk_video,
|
||||
-- address => tilemap_i(1).tile_a(12 downto 0),
|
||||
-- q => tilemap_o(1).tile_d(15 downto 8)
|
||||
-- );
|
||||
|
||||
--tile_rom_addr <= tilemap_i(1).tile_a(12 downto 0);
|
||||
--tilemap_o(1).tile_d(15 downto 0) <= tile_rom_do;
|
||||
|
||||
BLK_SPRITES : block---will not fit in FPGA Block Ram
|
||||
signal bit0_1 : std_logic_vector(7 downto 0); -- offset 0
|
||||
signal bit0_2 : std_logic_vector(7 downto 0); -- offset 0
|
||||
signal bit0_3 : std_logic_vector(7 downto 0); -- offset 16
|
||||
signal bit0_4 : std_logic_vector(7 downto 0); -- offset 16
|
||||
signal bit1_1 : std_logic_vector(7 downto 0);
|
||||
signal bit1_2 : std_logic_vector(7 downto 0);
|
||||
signal bit1_3 : std_logic_vector(7 downto 0);
|
||||
signal bit1_4 : std_logic_vector(7 downto 0);
|
||||
signal bit2_1 : std_logic_vector(7 downto 0);
|
||||
signal bit2_2 : std_logic_vector(7 downto 0);
|
||||
signal bit2_3 : std_logic_vector(7 downto 0);
|
||||
signal bit2_4 : std_logic_vector(7 downto 0);
|
||||
|
||||
signal sprite_a_00 : std_logic_vector(12 downto 0);
|
||||
signal sprite_a_16 : std_logic_vector(12 downto 0);
|
||||
|
||||
begin
|
||||
|
||||
-- registers
|
||||
sprite_reg_o.clk <= clk_20M;
|
||||
sprite_reg_o.clk_ena <= clk_2M_en;
|
||||
sprite_reg_o.a <= cpu_a(sprite_reg_o.a'range);
|
||||
sprite_reg_o.d <= cpu_d_o;
|
||||
sprite_reg_o.wr <= sprite_cs and clk_2M_en and not cpu_r_wn;
|
||||
|
||||
-- - sprite data consists of:
|
||||
-- 16 consecutive bytes for the 1st half
|
||||
-- then the next 16 bytes for the 2nd half
|
||||
-- - because we need to fetch an entire row at once
|
||||
-- use dual-port memory to access both halves of each row
|
||||
|
||||
-- generate address for each port
|
||||
-- sprite_a_00 <= sprite_i.a(12 downto 5) & '0' & sprite_i.a(3 downto 0);
|
||||
-- sprite_a_16 <= sprite_i.a(12 downto 5) & '1' & sprite_i.a(3 downto 0);
|
||||
|
||||
-- sprite rom (bit 0, part 1/2)
|
||||
-- ss_9_m5_inst : entity work.dprom_2r
|
||||
-- generic map
|
||||
-- (
|
||||
-- init_file => "./roms/ss_9_m5.hex",
|
||||
-- widthad_a => 13,
|
||||
-- widthad_b => 13
|
||||
-- )
|
||||
-- port map
|
||||
-- (
|
||||
-- clock => clk_video,
|
||||
-- address_a => sprite_a_00,
|
||||
-- q_a => bit0_1,
|
||||
-- address_b => sprite_a_16,
|
||||
-- q_b => bit0_3
|
||||
-- );
|
||||
|
||||
-- sprite rom (bit 0, part 2/2)
|
||||
-- ss_10_m6_inst : entity work.dprom_2r
|
||||
-- generic map
|
||||
-- (
|
||||
-- init_file => "./roms/ss_10_m6.hex",
|
||||
-- widthad_a => 13,
|
||||
-- widthad_b => 13
|
||||
-- )
|
||||
-- port map
|
||||
-- (
|
||||
-- clock => clk_video,
|
||||
-- address_a => sprite_a_00,
|
||||
--- q_a => bit0_2,
|
||||
-- address_b => sprite_a_16,
|
||||
-- q_b => bit0_4
|
||||
-- );
|
||||
|
||||
-- sprite_o.d(15 downto 0) <= (bit0_1 & bit0_3) when sprite_i.a(13) = '0' else
|
||||
-- (bit0_2 & bit0_4);
|
||||
|
||||
-- sprite rom (bit 1, part 1/2)
|
||||
-- ss_11_m3_inst : entity work.dprom_2r
|
||||
-- generic map
|
||||
-- (
|
||||
-- init_file => "./roms/ss_11_m3.hex",
|
||||
-- widthad_a => 13,
|
||||
-- widthad_b => 13
|
||||
-- )
|
||||
-- port map
|
||||
-- (
|
||||
-- clock => clk_video,
|
||||
-- address_a => sprite_a_00,
|
||||
-- q_a => bit1_1,
|
||||
-- address_b => sprite_a_16,
|
||||
-- q_b => bit1_3
|
||||
-- );
|
||||
|
||||
-- sprite rom (bit 0, part 2/2)
|
||||
-- ss_12_m4_inst : entity work.dprom_2r
|
||||
-- generic map
|
||||
-- (
|
||||
-- init_file => "./roms/ss_12_m4.hex",
|
||||
-- widthad_a => 13,
|
||||
-- widthad_b => 13
|
||||
-- )
|
||||
-- port map
|
||||
-- (
|
||||
-- clock => clk_video,
|
||||
-- address_a => sprite_a_00,
|
||||
-- q_a => bit1_2,
|
||||
-- address_b => sprite_a_16,
|
||||
--- q_b => bit1_4
|
||||
--- );
|
||||
|
||||
-- sprite_o.d(31 downto 16) <= (bit1_1 & bit1_3) when sprite_i.a(13) = '0' else
|
||||
-- (bit1_2 & bit1_4);
|
||||
|
||||
-- sprite rom (bit 2, part 1/2)
|
||||
-- ss_13_m1_inst : entity work.dprom_2r
|
||||
-- generic map
|
||||
-- (
|
||||
-- init_file => "./roms/ss_13_m1.hex",
|
||||
-- widthad_a => 13,
|
||||
-- widthad_b => 13
|
||||
-- )
|
||||
-- port map
|
||||
-- (
|
||||
-- clock => clk_video,
|
||||
-- address_a => sprite_a_00,
|
||||
-- q_a => bit2_1,
|
||||
-- address_b => sprite_a_16,
|
||||
-- q_b => bit2_3
|
||||
-- );
|
||||
|
||||
-- sprite rom (bit 2, part 2/2)
|
||||
-- ss_14_m2_inst : entity work.dprom_2r
|
||||
-- generic map
|
||||
-- (
|
||||
-- init_file => "./roms/ss_14_m2.hex",
|
||||
-- widthad_a => 13,
|
||||
-- widthad_b => 13
|
||||
-- )
|
||||
-- port map
|
||||
-- (
|
||||
-- clock => clk_video,
|
||||
-- address_a => sprite_a_00,
|
||||
-- q_a => bit2_2,
|
||||
-- address_b => sprite_a_16,
|
||||
-- q_b => bit2_4
|
||||
-- );
|
||||
|
||||
-- sprite_o.d(47 downto 32) <= (bit2_1 & bit2_3) when sprite_i.a(13) = '0' else
|
||||
-- (bit2_2 & bit2_4);
|
||||
|
||||
end block BLK_SPRITES;
|
||||
|
||||
-- unused outputs
|
||||
|
||||
graphics_o.bit16(0) <= (others => '0');
|
||||
|
||||
end SYN;
|
||||
@@ -1,4 +0,0 @@
|
||||
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) "pll_mist.vhd"]
|
||||
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll_mist.ppf"]
|
||||
@@ -1,429 +0,0 @@
|
||||
-- megafunction wizard: %ALTPLL%
|
||||
-- GENERATION: STANDARD
|
||||
-- VERSION: WM1.0
|
||||
-- MODULE: altpll
|
||||
|
||||
-- ============================================================
|
||||
-- File Name: pll_mist.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 pll_mist IS
|
||||
PORT
|
||||
(
|
||||
areset : IN STD_LOGIC := '0';
|
||||
inclk0 : IN STD_LOGIC := '0';
|
||||
c0 : OUT STD_LOGIC ;
|
||||
c1 : OUT STD_LOGIC ;
|
||||
c2 : OUT STD_LOGIC ;
|
||||
locked : OUT STD_LOGIC
|
||||
);
|
||||
END pll_mist;
|
||||
|
||||
|
||||
ARCHITECTURE SYN OF pll_mist 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 (
|
||||
areset : IN STD_LOGIC ;
|
||||
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 => 27,
|
||||
clk0_duty_cycle => 50,
|
||||
clk0_multiply_by => 20,
|
||||
clk0_phase_shift => "0",
|
||||
clk1_divide_by => 27,
|
||||
clk1_duty_cycle => 50,
|
||||
clk1_multiply_by => 40,
|
||||
clk1_phase_shift => "0",
|
||||
clk2_divide_by => 50,
|
||||
clk2_duty_cycle => 50,
|
||||
clk2_multiply_by => 163,
|
||||
clk2_phase_shift => "0",
|
||||
compensate_clock => "CLK0",
|
||||
inclk0_input_frequency => 37037,
|
||||
intended_device_family => "Cyclone III",
|
||||
lpm_hint => "CBX_MODULE_PREFIX=pll_mist",
|
||||
lpm_type => "altpll",
|
||||
operation_mode => "NORMAL",
|
||||
pll_type => "AUTO",
|
||||
port_activeclock => "PORT_UNUSED",
|
||||
port_areset => "PORT_USED",
|
||||
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 (
|
||||
areset => areset,
|
||||
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 "27"
|
||||
-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "27"
|
||||
-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "50"
|
||||
-- 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 "20.000000"
|
||||
-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "40.000000"
|
||||
-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "88.019997"
|
||||
-- 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 "20"
|
||||
-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "40"
|
||||
-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "163"
|
||||
-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1"
|
||||
-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "20.00000000"
|
||||
-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "13.50000000"
|
||||
-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "88.00000000"
|
||||
-- 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_mist.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 "27"
|
||||
-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50"
|
||||
-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "20"
|
||||
-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0"
|
||||
-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "27"
|
||||
-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50"
|
||||
-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "40"
|
||||
-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0"
|
||||
-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "50"
|
||||
-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50"
|
||||
-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "163"
|
||||
-- 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: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..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_mist.vhd TRUE
|
||||
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.ppf TRUE
|
||||
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.inc FALSE
|
||||
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.cmp FALSE
|
||||
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.bsf FALSE
|
||||
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist_inst.vhd FALSE
|
||||
-- Retrieval info: LIB_FILE: altera_mf
|
||||
-- Retrieval info: CBX_MODULE_PREFIX: ON
|
||||
Binary file not shown.
@@ -1,10 +0,0 @@
|
||||
copy /b ss.01e + ss.02e + ss.03e cpu.rom
|
||||
|
||||
copy /b ss_7.b6 + ss_8.b5 tile.rom
|
||||
|
||||
copy /b ss_9.m5 + ss_10.m6 + ss_11.m3 + ss_12.m4 + ss_13.m1 + ss_14.m2 sprite.rom
|
||||
|
||||
copy /b cpu.rom + tile.rom + sprite.rom SONSON.ROM
|
||||
|
||||
|
||||
make_vhdl_prom ss_6.c11 sound_rom.vhd
|
||||
Binary file not shown.
@@ -1,534 +0,0 @@
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all,ieee.numeric_std.all;
|
||||
|
||||
entity sound_rom 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 sound_rom is
|
||||
type rom is array(0 to 8191) of std_logic_vector(7 downto 0);
|
||||
signal rom_data: rom := (
|
||||
X"86",X"FF",X"1F",X"8A",X"8E",X"00",X"00",X"CC",X"00",X"00",X"ED",X"81",X"8C",X"07",X"FF",X"23",
|
||||
X"F9",X"10",X"CE",X"08",X"00",X"BD",X"E0",X"76",X"1C",X"AF",X"20",X"FE",X"34",X"FF",X"0C",X"00",
|
||||
X"BD",X"E0",X"2F",X"BD",X"E1",X"3F",X"BD",X"F2",X"5D",X"BD",X"E0",X"40",X"35",X"FF",X"3B",X"96",
|
||||
X"01",X"26",X"01",X"39",X"0F",X"01",X"CE",X"E6",X"78",X"96",X"02",X"84",X"1F",X"48",X"6E",X"D6",
|
||||
X"5F",X"CE",X"01",X"00",X"4F",X"74",X"01",X"1A",X"49",X"74",X"01",X"19",X"49",X"74",X"01",X"18",
|
||||
X"49",X"74",X"01",X"14",X"49",X"74",X"01",X"13",X"49",X"74",X"01",X"12",X"49",X"8B",X"C0",X"C6",
|
||||
X"07",X"F7",X"20",X"00",X"B7",X"20",X"01",X"39",X"34",X"7E",X"B6",X"A0",X"00",X"97",X"02",X"86",
|
||||
X"FF",X"97",X"01",X"35",X"7E",X"3B",X"CE",X"02",X"00",X"86",X"20",X"C6",X"1B",X"6F",X"C4",X"33",
|
||||
X"C6",X"5A",X"26",X"F9",X"39",X"0B",X"3C",X"0A",X"9B",X"0A",X"02",X"09",X"73",X"08",X"EB",X"08",
|
||||
X"6B",X"07",X"F2",X"07",X"80",X"07",X"14",X"06",X"AE",X"06",X"4E",X"05",X"F4",X"05",X"9E",X"05",
|
||||
X"4D",X"05",X"01",X"04",X"B9",X"04",X"75",X"04",X"35",X"03",X"F9",X"03",X"C0",X"03",X"8A",X"03",
|
||||
X"57",X"03",X"27",X"02",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"01",X"FC",X"01",X"E0",X"01",X"C5",X"01",X"A5",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"00",X"FE",X"00",X"F0",X"00",X"E2",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"43",X"00",X"40",X"00",X"3C",X"00",X"39",X"00",
|
||||
X"35",X"00",X"32",X"00",X"30",X"00",X"2D",X"00",X"2A",X"00",X"28",X"00",X"26",X"00",X"24",X"00",
|
||||
X"22",X"00",X"20",X"00",X"1E",X"00",X"1C",X"00",X"1B",X"00",X"19",X"00",X"18",X"00",X"16",X"00",
|
||||
X"15",X"00",X"14",X"00",X"13",X"00",X"12",X"00",X"11",X"00",X"10",X"00",X"0F",X"00",X"0E",X"BD",
|
||||
X"E1",X"46",X"BD",X"E1",X"6B",X"39",X"8E",X"02",X"00",X"0F",X"0F",X"0F",X"04",X"A6",X"84",X"27",
|
||||
X"0B",X"9B",X"0F",X"BD",X"E1",X"9E",X"96",X"0F",X"81",X"03",X"24",X"0E",X"0C",X"04",X"96",X"04",
|
||||
X"81",X"0F",X"27",X"06",X"86",X"20",X"30",X"86",X"20",X"E3",X"39",X"8E",X"04",X"60",X"C6",X"60",
|
||||
X"A6",X"84",X"26",X"08",X"8E",X"04",X"00",X"A6",X"84",X"26",X"12",X"39",X"BD",X"EE",X"5B",X"86",
|
||||
X"20",X"30",X"86",X"BD",X"EE",X"5B",X"86",X"20",X"30",X"86",X"7E",X"EE",X"5B",X"BD",X"EE",X"5B",
|
||||
X"86",X"20",X"30",X"86",X"BD",X"EE",X"5B",X"86",X"20",X"30",X"86",X"7E",X"EE",X"60",X"CE",X"E1",
|
||||
X"A6",X"96",X"04",X"48",X"6E",X"D6",X"E1",X"C4",X"E2",X"07",X"E2",X"2F",X"E2",X"E5",X"E3",X"BC",
|
||||
X"E3",X"BD",X"E4",X"24",X"E4",X"75",X"E4",X"88",X"E4",X"C6",X"E4",X"FB",X"E5",X"2F",X"E5",X"C6",
|
||||
X"E5",X"C7",X"E6",X"10",X"6A",X"0D",X"27",X"1B",X"A6",X"0D",X"44",X"CE",X"E1",X"D3",X"A6",X"C6",
|
||||
X"A7",X"07",X"39",X"01",X"02",X"03",X"05",X"07",X"09",X"0A",X"0B",X"0C",X"0D",X"0D",X"0D",X"0C",
|
||||
X"0A",X"08",X"06",X"A6",X"0C",X"6C",X"0C",X"81",X"05",X"27",X"19",X"CE",X"E1",X"FF",X"A6",X"C6",
|
||||
X"CE",X"E0",X"E5",X"48",X"EC",X"C6",X"A7",X"02",X"E7",X"01",X"86",X"1F",X"A7",X"0D",X"39",X"07",
|
||||
X"0C",X"10",X"13",X"13",X"6F",X"84",X"39",X"6A",X"0D",X"27",X"01",X"39",X"6C",X"0C",X"A6",X"0C",
|
||||
X"81",X"03",X"27",X"18",X"C6",X"3C",X"E7",X"0D",X"81",X"01",X"27",X"08",X"CC",X"00",X"26",X"A7",
|
||||
X"02",X"E7",X"01",X"39",X"CC",X"00",X"2A",X"A7",X"02",X"E7",X"01",X"39",X"6F",X"84",X"39",X"A6",
|
||||
X"88",X"12",X"26",X"45",X"6A",X"88",X"13",X"27",X"01",X"39",X"6C",X"88",X"12",X"CC",X"00",X"18",
|
||||
X"A7",X"02",X"E7",X"01",X"CC",X"00",X"20",X"A7",X"04",X"E7",X"03",X"CC",X"00",X"28",X"A7",X"06",
|
||||
X"E7",X"05",X"86",X"00",X"A7",X"0C",X"86",X"0F",X"A7",X"0D",X"86",X"07",X"A7",X"07",X"86",X"01",
|
||||
X"A7",X"0E",X"86",X"10",X"A7",X"0F",X"86",X"03",X"A7",X"08",X"86",X"01",X"A7",X"88",X"10",X"86",
|
||||
X"10",X"A7",X"88",X"11",X"86",X"0D",X"A7",X"09",X"39",X"BD",X"E2",X"83",X"BD",X"E2",X"A1",X"BD",
|
||||
X"E2",X"BF",X"39",X"A6",X"0C",X"84",X"01",X"27",X"0C",X"6A",X"07",X"27",X"01",X"39",X"6A",X"0D",
|
||||
X"27",X"50",X"6C",X"0C",X"39",X"6C",X"07",X"A6",X"07",X"A1",X"0D",X"27",X"01",X"39",X"6C",X"0C",
|
||||
X"39",X"A6",X"0E",X"84",X"01",X"27",X"0C",X"6A",X"08",X"27",X"01",X"39",X"6A",X"0F",X"27",X"32",
|
||||
X"6C",X"0E",X"39",X"6C",X"08",X"A6",X"08",X"A1",X"0F",X"27",X"01",X"39",X"6C",X"0E",X"39",X"A6",
|
||||
X"88",X"10",X"84",X"01",X"27",X"0E",X"6A",X"09",X"27",X"01",X"39",X"6A",X"88",X"11",X"27",X"12",
|
||||
X"6C",X"88",X"10",X"39",X"6C",X"09",X"A6",X"09",X"A1",X"88",X"11",X"27",X"01",X"39",X"6C",X"88",
|
||||
X"10",X"39",X"6F",X"84",X"39",X"A6",X"0D",X"27",X"03",X"6A",X"0D",X"39",X"A6",X"88",X"10",X"6C",
|
||||
X"88",X"10",X"81",X"10",X"27",X"21",X"E6",X"0F",X"E7",X"0D",X"CE",X"E3",X"06",X"A6",X"C6",X"A7",
|
||||
X"07",X"A7",X"08",X"A7",X"09",X"39",X"09",X"0A",X"0B",X"0C",X"0D",X"0C",X"0B",X"0A",X"09",X"08",
|
||||
X"07",X"06",X"05",X"04",X"03",X"02",X"01",X"6F",X"88",X"10",X"A6",X"0C",X"6C",X"0C",X"48",X"48",
|
||||
X"CE",X"E3",X"88",X"33",X"C6",X"A6",X"C4",X"81",X"FF",X"27",X"5A",X"A7",X"0F",X"A7",X"0D",X"86",
|
||||
X"09",X"A7",X"07",X"A7",X"08",X"A7",X"09",X"A6",X"41",X"BD",X"E3",X"53",X"A7",X"02",X"E7",X"01",
|
||||
X"A6",X"42",X"BD",X"E3",X"53",X"A7",X"04",X"E7",X"03",X"A6",X"43",X"BD",X"E3",X"53",X"A7",X"06",
|
||||
X"E7",X"05",X"39",X"10",X"8E",X"E3",X"5F",X"48",X"31",X"A6",X"A6",X"A4",X"E6",X"21",X"39",X"00",
|
||||
X"00",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"6F",X"84",X"39",X"04",X"01",X"05",X"08",X"02",X"00",X"00",X"00",
|
||||
X"02",X"01",X"05",X"08",X"02",X"01",X"05",X"08",X"02",X"01",X"05",X"08",X"02",X"03",X"06",X"0A",
|
||||
X"02",X"00",X"00",X"00",X"02",X"03",X"06",X"0A",X"02",X"00",X"00",X"00",X"02",X"03",X"06",X"0C",
|
||||
X"02",X"00",X"00",X"00",X"0C",X"05",X"08",X"0D",X"FF",X"FF",X"FF",X"FF",X"39",X"A6",X"0D",X"27",
|
||||
X"2E",X"6A",X"0D",X"A6",X"0E",X"27",X"0D",X"81",X"02",X"27",X"15",X"A6",X"0D",X"81",X"20",X"27",
|
||||
X"00",X"6C",X"0E",X"39",X"6C",X"07",X"A6",X"07",X"81",X"0D",X"27",X"01",X"39",X"6C",X"0E",X"39",
|
||||
X"A6",X"07",X"27",X"0A",X"96",X"00",X"84",X"03",X"27",X"01",X"39",X"6A",X"07",X"39",X"39",X"6F",
|
||||
X"0E",X"C6",X"30",X"A6",X"0C",X"6C",X"0C",X"CE",X"E4",X"18",X"A6",X"C6",X"81",X"FF",X"27",X"15",
|
||||
X"48",X"24",X"02",X"C6",X"90",X"E7",X"0D",X"CE",X"E0",X"9D",X"EC",X"C6",X"A7",X"02",X"E7",X"01",
|
||||
X"86",X"06",X"A7",X"07",X"39",X"6F",X"84",X"39",X"18",X"97",X"18",X"9A",X"15",X"91",X"0E",X"8C",
|
||||
X"09",X"85",X"02",X"FF",X"A6",X"0D",X"6C",X"0D",X"CE",X"E4",X"4C",X"A6",X"C6",X"81",X"FF",X"27",
|
||||
X"18",X"81",X"FE",X"26",X"07",X"86",X"42",X"A7",X"01",X"8B",X"08",X"39",X"A7",X"07",X"96",X"00",
|
||||
X"84",X"01",X"27",X"04",X"6A",X"01",X"6A",X"03",X"39",X"6F",X"84",X"39",X"04",X"05",X"06",X"07",
|
||||
X"08",X"09",X"08",X"07",X"06",X"05",X"04",X"03",X"02",X"01",X"FE",X"03",X"04",X"05",X"06",X"07",
|
||||
X"08",X"07",X"06",X"05",X"04",X"03",X"04",X"05",X"06",X"07",X"08",X"09",X"08",X"07",X"06",X"05",
|
||||
X"04",X"03",X"02",X"01",X"FF",X"E6",X"01",X"A6",X"02",X"83",X"00",X"1E",X"81",X"F0",X"24",X"05",
|
||||
X"A7",X"02",X"E7",X"01",X"39",X"6F",X"84",X"39",X"A6",X"0C",X"27",X"1E",X"81",X"02",X"27",X"0C",
|
||||
X"6A",X"0D",X"27",X"01",X"39",X"6C",X"0C",X"86",X"10",X"A7",X"0E",X"39",X"6A",X"0E",X"27",X"01",
|
||||
X"39",X"6A",X"07",X"27",X"1E",X"86",X"0E",X"A7",X"0E",X"39",X"6C",X"0E",X"A6",X"0E",X"84",X"01",
|
||||
X"27",X"01",X"39",X"6C",X"07",X"A6",X"07",X"81",X"0B",X"27",X"01",X"39",X"6C",X"0C",X"86",X"48",
|
||||
X"A7",X"0D",X"39",X"6F",X"84",X"39",X"A6",X"0D",X"27",X"09",X"6A",X"0D",X"A6",X"0E",X"A7",X"07",
|
||||
X"A7",X"08",X"39",X"A6",X"0C",X"27",X"10",X"6A",X"0E",X"A6",X"0E",X"81",X"02",X"27",X"05",X"86",
|
||||
X"05",X"A7",X"0D",X"39",X"6F",X"84",X"39",X"6C",X"0E",X"A6",X"0E",X"81",X"0A",X"27",X"05",X"86",
|
||||
X"02",X"A7",X"0D",X"39",X"6C",X"0C",X"86",X"05",X"A7",X"0D",X"39",X"A6",X"0D",X"27",X"12",X"6A",
|
||||
X"0D",X"CE",X"E5",X"09",X"A6",X"C6",X"A7",X"07",X"39",X"0B",X"0B",X"0C",X"0C",X"0D",X"0B",X"09",
|
||||
X"06",X"E6",X"01",X"5A",X"6C",X"0C",X"A6",X"0C",X"84",X"01",X"27",X"01",X"5A",X"A6",X"0C",X"84",
|
||||
X"03",X"26",X"02",X"6A",X"07",X"E7",X"01",X"C1",X"80",X"23",X"01",X"39",X"6F",X"84",X"39",X"96",
|
||||
X"00",X"84",X"01",X"27",X"F9",X"6A",X"0D",X"27",X"1A",X"A6",X"0D",X"CE",X"E5",X"43",X"A6",X"C6",
|
||||
X"A7",X"07",X"39",X"03",X"04",X"05",X"06",X"07",X"08",X"09",X"09",X"0A",X"0A",X"09",X"09",X"08",
|
||||
X"08",X"07",X"06",X"A6",X"0C",X"6C",X"0C",X"81",X"0C",X"27",X"14",X"CE",X"E5",X"BA",X"A6",X"C6",
|
||||
X"CE",X"E5",X"8A",X"48",X"EC",X"C6",X"A7",X"02",X"E7",X"01",X"86",X"0C",X"A7",X"0D",X"39",X"6F",
|
||||
X"84",X"39",X"03",X"57",X"03",X"27",X"02",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"01",X"FC",X"01",X"E0",X"01",X"C5",X"01",X"A5",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"00",X"FE",X"00",X"F0",
|
||||
X"00",X"E2",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"02",X"04",X"05",X"00",X"02",
|
||||
X"04",X"05",X"00",X"02",X"04",X"05",X"39",X"A6",X"0D",X"6C",X"0D",X"CE",X"E5",X"EC",X"A6",X"C6",
|
||||
X"81",X"FF",X"27",X"03",X"A7",X"07",X"39",X"6C",X"0C",X"A6",X"0C",X"81",X"05",X"27",X"2E",X"C6",
|
||||
X"2E",X"85",X"01",X"26",X"02",X"C6",X"34",X"E7",X"01",X"6F",X"0D",X"39",X"04",X"05",X"06",X"07",
|
||||
X"08",X"09",X"0A",X"0B",X"0C",X"0D",X"0E",X"0F",X"0F",X"0E",X"0D",X"0C",X"0B",X"0A",X"09",X"09",
|
||||
X"08",X"08",X"07",X"07",X"06",X"06",X"05",X"04",X"03",X"02",X"01",X"00",X"FF",X"6F",X"84",X"39",
|
||||
X"A6",X"0D",X"27",X"38",X"6A",X"0D",X"A6",X"0E",X"27",X"20",X"81",X"02",X"27",X"0E",X"A6",X"0D",
|
||||
X"81",X"20",X"23",X"01",X"39",X"6C",X"0E",X"86",X"02",X"A7",X"0F",X"39",X"6A",X"0F",X"27",X"01",
|
||||
X"39",X"6A",X"07",X"6A",X"08",X"86",X"06",X"A7",X"0F",X"39",X"6C",X"07",X"6C",X"08",X"A6",X"07",
|
||||
X"81",X"0C",X"27",X"01",X"39",X"6C",X"0E",X"86",X"40",X"A7",X"0F",X"39",X"A6",X"0C",X"6C",X"0C",
|
||||
X"CE",X"E6",X"6E",X"A6",X"C6",X"81",X"FF",X"27",X"1C",X"48",X"CE",X"E1",X"15",X"EC",X"C6",X"A7",
|
||||
X"02",X"E7",X"01",X"86",X"06",X"A7",X"07",X"6F",X"0E",X"C6",X"30",X"E7",X"0D",X"39",X"00",X"07",
|
||||
X"04",X"07",X"0C",X"FF",X"FF",X"6F",X"84",X"39",X"E6",X"FD",X"E7",X"5C",X"E7",X"6E",X"E7",X"91",
|
||||
X"EB",X"51",X"E7",X"C2",X"E7",X"C2",X"E7",X"D2",X"E7",X"E9",X"E8",X"04",X"E8",X"2A",X"E8",X"50",
|
||||
X"E8",X"6D",X"E8",X"7F",X"E8",X"80",X"E8",X"94",X"E9",X"ED",X"EB",X"D8",X"E6",X"F9",X"ED",X"38",
|
||||
X"EC",X"90",X"E6",X"BC",X"F0",X"FA",X"E8",X"A4",X"F1",X"71",X"E6",X"BD",X"E6",X"C1",X"E6",X"C5",
|
||||
X"E6",X"C9",X"E6",X"CD",X"E6",X"D1",X"E6",X"D5",X"E6",X"D9",X"E6",X"DD",X"39",X"86",X"07",X"20",
|
||||
X"20",X"86",X"08",X"20",X"1C",X"86",X"09",X"20",X"18",X"86",X"0A",X"20",X"14",X"86",X"0B",X"20",
|
||||
X"10",X"86",X"0C",X"20",X"0C",X"86",X"0D",X"20",X"08",X"86",X"0E",X"20",X"04",X"86",X"0F",X"20",
|
||||
X"00",X"8E",X"04",X"00",X"A7",X"88",X"17",X"A7",X"88",X"37",X"A7",X"88",X"57",X"A7",X"88",X"77",
|
||||
X"A7",X"89",X"00",X"97",X"A7",X"89",X"00",X"B7",X"39",X"7F",X"04",X"60",X"39",X"CE",X"02",X"00",
|
||||
X"6F",X"C4",X"6F",X"C8",X"20",X"6F",X"C8",X"40",X"6F",X"C8",X"60",X"6F",X"C9",X"00",X"80",X"6F",
|
||||
X"C9",X"00",X"A0",X"6F",X"C9",X"00",X"C0",X"6F",X"C9",X"00",X"E0",X"6F",X"C9",X"01",X"00",X"6F",
|
||||
X"C9",X"01",X"20",X"6F",X"C9",X"01",X"40",X"6F",X"C9",X"01",X"60",X"6F",X"C9",X"01",X"80",X"6F",
|
||||
X"C9",X"01",X"A0",X"6F",X"C9",X"01",X"C0",X"6F",X"C9",X"01",X"E0",X"6F",X"C9",X"02",X"00",X"6F",
|
||||
X"C9",X"02",X"20",X"6F",X"C9",X"02",X"40",X"6F",X"C9",X"02",X"C0",X"6F",X"C9",X"02",X"E0",X"6F",
|
||||
X"C9",X"03",X"00",X"6F",X"C9",X"03",X"20",X"6F",X"C9",X"03",X"40",X"39",X"8E",X"02",X"00",X"86",
|
||||
X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"86",X"01",X"A7",X"0D",X"6F",X"0C",X"39",X"8E",X"02",
|
||||
X"20",X"A6",X"84",X"26",X"1B",X"86",X"01",X"A7",X"84",X"CC",X"00",X"47",X"A7",X"02",X"E7",X"01",
|
||||
X"86",X"FE",X"A7",X"0A",X"86",X"0A",X"A7",X"07",X"86",X"00",X"A7",X"0C",X"86",X"3C",X"A7",X"0D",
|
||||
X"39",X"8E",X"02",X"40",X"86",X"03",X"A7",X"84",X"CC",X"00",X"50",X"A7",X"02",X"E7",X"01",X"CC",
|
||||
X"00",X"58",X"A7",X"04",X"E6",X"03",X"CC",X"00",X"60",X"A7",X"06",X"E7",X"05",X"86",X"F8",X"A7",
|
||||
X"0A",X"86",X"09",X"A7",X"07",X"A7",X"08",X"A7",X"09",X"6F",X"88",X"12",X"86",X"30",X"A7",X"88",
|
||||
X"13",X"39",X"8E",X"02",X"A0",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"6F",X"0C",X"6F",
|
||||
X"0D",X"39",X"8E",X"02",X"C0",X"CC",X"00",X"4C",X"A7",X"02",X"E7",X"01",X"86",X"01",X"A7",X"84",
|
||||
X"86",X"F8",X"A7",X"0A",X"6F",X"0C",X"6F",X"0D",X"39",X"8E",X"02",X"E0",X"86",X"01",X"A7",X"84",
|
||||
X"CC",X"03",X"FF",X"A7",X"02",X"E7",X"01",X"86",X"08",X"A7",X"07",X"86",X"FE",X"A7",X"0A",X"86",
|
||||
X"00",X"A7",X"0C",X"39",X"8E",X"03",X"00",X"86",X"02",X"A7",X"84",X"CC",X"0E",X"80",X"A7",X"02",
|
||||
X"E7",X"01",X"CC",X"0E",X"70",X"A7",X"04",X"E7",X"03",X"86",X"04",X"A7",X"07",X"A7",X"08",X"86",
|
||||
X"E4",X"A7",X"0A",X"86",X"0E",X"A7",X"0B",X"6F",X"0C",X"39",X"8E",X"03",X"20",X"86",X"02",X"A7",
|
||||
X"84",X"CC",X"00",X"24",X"A7",X"02",X"E7",X"01",X"CC",X"00",X"26",X"A7",X"04",X"E7",X"03",X"86",
|
||||
X"FC",X"A7",X"0A",X"86",X"00",X"A7",X"0C",X"86",X"04",X"A7",X"0D",X"86",X"08",X"A7",X"0E",X"39",
|
||||
X"8E",X"03",X"40",X"86",X"01",X"A7",X"84",X"CC",X"00",X"A2",X"A7",X"02",X"E7",X"01",X"86",X"09",
|
||||
X"A7",X"07",X"86",X"FE",X"A7",X"0A",X"6F",X"0C",X"86",X"08",X"A7",X"0D",X"39",X"8E",X"03",X"60",
|
||||
X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"6F",X"0C",X"86",X"01",X"A7",X"0D",X"39",X"39",
|
||||
X"8E",X"03",X"A0",X"86",X"01",X"A7",X"84",X"6F",X"01",X"6F",X"02",X"86",X"FE",X"A7",X"0A",X"6F",
|
||||
X"0C",X"6F",X"0D",X"39",X"8E",X"03",X"C0",X"86",X"01",X"A7",X"84",X"86",X"FC",X"A7",X"0A",X"6F",
|
||||
X"0C",X"6F",X"0D",X"39",X"8E",X"04",X"60",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"CC",
|
||||
X"E8",X"FA",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"8E",
|
||||
X"04",X"80",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"CC",X"E9",X"50",X"ED",X"0C",X"ED",
|
||||
X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"8E",X"04",X"A0",X"86",X"01",X"A7",
|
||||
X"84",X"86",X"FE",X"A7",X"0A",X"86",X"17",X"A7",X"0B",X"CC",X"E9",X"97",X"ED",X"0C",X"ED",X"88",
|
||||
X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"39",X"5F",X"0B",X"3F",X"06",X"1F",X"23",
|
||||
X"75",X"76",X"95",X"B2",X"B1",X"B4",X"75",X"76",X"95",X"B2",X"B1",X"B4",X"76",X"78",X"99",X"B9",
|
||||
X"B8",X"B9",X"BB",X"B9",X"B8",X"B6",X"94",X"98",X"99",X"B4",X"98",X"B9",X"94",X"98",X"99",X"B4",
|
||||
X"98",X"B9",X"96",X"99",X"9D",X"B6",X"99",X"BD",X"9D",X"9D",X"99",X"BB",X"99",X"98",X"96",X"94",
|
||||
X"98",X"99",X"9B",X"99",X"B8",X"94",X"94",X"98",X"99",X"9B",X"99",X"B8",X"94",X"9E",X"9D",X"9B",
|
||||
X"99",X"98",X"99",X"9D",X"9B",X"9B",X"9A",X"9B",X"9A",X"9B",X"99",X"98",X"96",X"7F",X"E9",X"16",
|
||||
X"5F",X"0B",X"3F",X"06",X"1F",X"23",X"E0",X"E0",X"E0",X"B2",X"B2",X"B4",X"B2",X"91",X"91",X"91",
|
||||
X"B1",X"91",X"B1",X"91",X"91",X"91",X"B1",X"91",X"B1",X"92",X"92",X"92",X"B2",X"92",X"B2",X"92",
|
||||
X"92",X"92",X"B2",X"92",X"92",X"92",X"91",X"91",X"91",X"91",X"91",X"B1",X"91",X"91",X"91",X"91",
|
||||
X"91",X"91",X"B1",X"91",X"99",X"98",X"96",X"94",X"92",X"94",X"98",X"94",X"96",X"96",X"96",X"96",
|
||||
X"96",X"94",X"92",X"91",X"7F",X"E9",X"5D",X"5F",X"0B",X"3F",X"06",X"1F",X"23",X"A5",X"81",X"81",
|
||||
X"A8",X"A1",X"A5",X"81",X"81",X"A8",X"A1",X"A6",X"83",X"83",X"A8",X"A6",X"86",X"86",X"83",X"83",
|
||||
X"88",X"88",X"86",X"86",X"81",X"81",X"81",X"A1",X"81",X"A1",X"88",X"88",X"88",X"A8",X"88",X"A8",
|
||||
X"8A",X"8A",X"8A",X"AA",X"8A",X"AA",X"83",X"83",X"83",X"A3",X"83",X"83",X"83",X"88",X"88",X"88",
|
||||
X"88",X"88",X"A8",X"88",X"83",X"83",X"83",X"83",X"83",X"A3",X"83",X"85",X"85",X"85",X"85",X"85",
|
||||
X"A5",X"85",X"86",X"88",X"86",X"88",X"83",X"83",X"83",X"83",X"7F",X"E9",X"B4",X"8E",X"04",X"00",
|
||||
X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"CC",X"EA",X"C5",X"ED",X"0C",X"ED",X"88",X"18",
|
||||
X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"8E",X"04",X"20",X"86",X"01",X"A7",X"84",X"86",
|
||||
X"FE",X"A7",X"0A",X"CC",X"EA",X"50",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",
|
||||
X"A7",X"88",X"11",X"8E",X"04",X"40",X"86",X"01",X"A7",X"84",X"86",X"F6",X"A7",X"0A",X"86",X"17",
|
||||
X"A7",X"0B",X"CC",X"EA",X"43",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",
|
||||
X"88",X"11",X"39",X"5F",X"0B",X"3F",X"06",X"1F",X"23",X"8C",X"6C",X"6C",X"7F",X"EA",X"49",X"FF",
|
||||
X"5F",X"0A",X"3F",X"06",X"1F",X"23",X"C0",X"C0",X"C0",X"9F",X"A0",X"80",X"83",X"C5",X"80",X"83",
|
||||
X"85",X"88",X"DF",X"8C",X"6C",X"8A",X"88",X"DF",X"8C",X"6C",X"8A",X"88",X"DF",X"8A",X"6A",X"88",
|
||||
X"8A",X"A5",X"A5",X"BF",X"01",X"80",X"83",X"85",X"63",X"65",X"C8",X"80",X"8A",X"88",X"8A",X"AC",
|
||||
X"8F",X"6C",X"6F",X"DF",X"B1",X"8F",X"AC",X"8A",X"88",X"DF",X"8A",X"6A",X"88",X"8A",X"A5",X"A5",
|
||||
X"1F",X"2F",X"5F",X"0D",X"B1",X"AF",X"8C",X"8F",X"AA",X"88",X"8A",X"A5",X"A3",X"A5",X"A3",X"85",
|
||||
X"88",X"AA",X"88",X"8A",X"AC",X"8F",X"6C",X"6F",X"D1",X"C0",X"74",X"74",X"71",X"71",X"6F",X"6F",
|
||||
X"6C",X"6C",X"6F",X"6F",X"6C",X"6C",X"6A",X"6A",X"68",X"68",X"1F",X"23",X"85",X"80",X"A0",X"5F",
|
||||
X"0A",X"7F",X"EA",X"59",X"FF",X"5F",X"0A",X"3F",X"06",X"1F",X"0B",X"B1",X"8C",X"8F",X"DF",X"91",
|
||||
X"71",X"8C",X"8F",X"B1",X"8C",X"8F",X"9F",X"DF",X"91",X"71",X"8C",X"8F",X"B1",X"8C",X"8F",X"DF",
|
||||
X"91",X"71",X"8C",X"8F",X"B4",X"8F",X"91",X"DF",X"94",X"74",X"8F",X"91",X"DF",X"96",X"76",X"91",
|
||||
X"94",X"B1",X"8C",X"8F",X"BF",X"01",X"DF",X"91",X"71",X"8C",X"8F",X"B4",X"8F",X"91",X"DF",X"94",
|
||||
X"74",X"8F",X"91",X"B4",X"8F",X"91",X"B1",X"8C",X"8F",X"DF",X"91",X"71",X"8C",X"8F",X"DF",X"96",
|
||||
X"76",X"91",X"94",X"DF",X"91",X"71",X"8C",X"8F",X"1F",X"2F",X"5F",X"0D",X"AC",X"AA",X"87",X"8A",
|
||||
X"A5",X"83",X"85",X"1F",X"23",X"AC",X"AA",X"AC",X"AA",X"8C",X"1F",X"2F",X"83",X"A5",X"83",X"85",
|
||||
X"A7",X"8A",X"67",X"6A",X"CC",X"C0",X"6F",X"6F",X"6C",X"6C",X"6A",X"6A",X"68",X"68",X"6A",X"6A",
|
||||
X"68",X"68",X"65",X"65",X"63",X"63",X"1F",X"0B",X"5F",X"0A",X"B1",X"8C",X"8F",X"7F",X"EA",X"D6",
|
||||
X"FF",X"8E",X"04",X"60",X"A6",X"84",X"26",X"52",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",
|
||||
X"CC",X"EB",X"AB",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",
|
||||
X"8E",X"04",X"80",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"CC",X"EB",X"BA",X"ED",X"0C",
|
||||
X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"8E",X"04",X"A0",X"86",X"01",
|
||||
X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"86",X"17",X"A7",X"0B",X"CC",X"EB",X"C9",X"ED",X"0C",X"ED",
|
||||
X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"39",X"5F",X"0B",X"3F",X"03",X"1F",
|
||||
X"2F",X"A1",X"81",X"81",X"81",X"A3",X"A1",X"A1",X"E3",X"FF",X"5F",X"0B",X"3F",X"03",X"1F",X"2F",
|
||||
X"A5",X"85",X"85",X"85",X"A6",X"A6",X"A6",X"E8",X"FF",X"5F",X"0B",X"3F",X"03",X"1F",X"2F",X"A8",
|
||||
X"88",X"88",X"88",X"AA",X"AA",X"AC",X"ED",X"FF",X"8E",X"04",X"60",X"86",X"01",X"A7",X"84",X"86",
|
||||
X"FE",X"A7",X"0A",X"CC",X"EC",X"2E",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",
|
||||
X"A7",X"88",X"11",X"8E",X"04",X"80",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"CC",X"EC",
|
||||
X"4A",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"8E",X"04",
|
||||
X"A0",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"86",X"17",X"A7",X"0B",X"CC",X"EC",X"66",
|
||||
X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"39",X"5F",X"0B",
|
||||
X"3F",X"05",X"1F",X"23",X"E0",X"E0",X"80",X"94",X"80",X"95",X"80",X"96",X"80",X"97",X"80",X"96",
|
||||
X"80",X"97",X"80",X"98",X"80",X"99",X"7F",X"EC",X"34",X"FF",X"5F",X"0B",X"3F",X"05",X"1F",X"23",
|
||||
X"E0",X"E0",X"80",X"8E",X"80",X"8F",X"80",X"90",X"80",X"91",X"80",X"90",X"80",X"91",X"80",X"92",
|
||||
X"80",X"93",X"7F",X"EC",X"50",X"FF",X"5F",X"0B",X"3F",X"05",X"1F",X"23",X"86",X"87",X"87",X"87",
|
||||
X"87",X"87",X"87",X"87",X"86",X"87",X"87",X"87",X"87",X"87",X"87",X"87",X"85",X"80",X"86",X"80",
|
||||
X"87",X"80",X"88",X"80",X"87",X"80",X"88",X"80",X"89",X"80",X"8A",X"80",X"7F",X"EC",X"6C",X"FF",
|
||||
X"7F",X"04",X"00",X"8E",X"04",X"60",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"CC",X"EC",
|
||||
X"E9",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"8E",X"04",
|
||||
X"80",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"CC",X"ED",X"0F",X"ED",X"0C",X"ED",X"88",
|
||||
X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"8E",X"04",X"A0",X"86",X"01",X"A7",X"84",
|
||||
X"86",X"FE",X"A7",X"0A",X"86",X"17",X"A7",X"0B",X"CC",X"ED",X"29",X"ED",X"0C",X"ED",X"88",X"18",
|
||||
X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"39",X"5F",X"0B",X"3F",X"07",X"1F",X"23",X"DF",
|
||||
X"6F",X"51",X"DF",X"74",X"98",X"54",X"91",X"DF",X"6E",X"51",X"DF",X"74",X"98",X"54",X"91",X"DF",
|
||||
X"6D",X"51",X"DF",X"74",X"98",X"54",X"76",X"60",X"94",X"80",X"A0",X"FF",X"7F",X"EC",X"EF",X"5F",
|
||||
X"0B",X"3F",X"07",X"1F",X"23",X"A8",X"A8",X"A8",X"A8",X"A5",X"85",X"67",X"60",X"88",X"80",X"1F",
|
||||
X"17",X"88",X"1F",X"23",X"80",X"FF",X"7F",X"ED",X"15",X"5F",X"0B",X"3F",X"07",X"1F",X"23",X"A3",
|
||||
X"A3",X"A2",X"A2",X"A1",X"81",X"80",X"C0",X"FF",X"8E",X"04",X"60",X"86",X"01",X"A7",X"84",X"86",
|
||||
X"FE",X"A7",X"0A",X"CC",X"ED",X"8E",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",
|
||||
X"A7",X"88",X"11",X"8E",X"04",X"80",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"CC",X"ED",
|
||||
X"CD",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"8E",X"04",
|
||||
X"A0",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"86",X"17",X"A7",X"0B",X"CC",X"EE",X"0C",
|
||||
X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"39",X"5F",X"09",
|
||||
X"3F",X"06",X"1F",X"23",X"9F",X"DF",X"B9",X"7B",X"79",X"96",X"99",X"94",X"96",X"DF",X"D1",X"8F",
|
||||
X"8D",X"8F",X"92",X"96",X"99",X"80",X"92",X"96",X"99",X"BD",X"BB",X"B9",X"B8",X"BF",X"01",X"9F",
|
||||
X"DF",X"B6",X"78",X"76",X"93",X"96",X"91",X"93",X"DF",X"CE",X"8C",X"8A",X"8C",X"8F",X"93",X"96",
|
||||
X"80",X"8F",X"93",X"96",X"BA",X"B8",X"B6",X"B8",X"BF",X"01",X"7F",X"ED",X"94",X"5F",X"09",X"3F",
|
||||
X"06",X"1F",X"23",X"9F",X"DF",X"B4",X"76",X"74",X"91",X"94",X"8F",X"91",X"DF",X"CC",X"8A",X"88",
|
||||
X"8A",X"8D",X"91",X"94",X"80",X"8D",X"91",X"94",X"B4",X"B2",X"B1",X"AF",X"BF",X"01",X"9F",X"DF",
|
||||
X"B1",X"73",X"71",X"8E",X"91",X"8C",X"8E",X"DF",X"C9",X"87",X"85",X"87",X"8A",X"8E",X"91",X"80",
|
||||
X"8A",X"8E",X"91",X"B1",X"AF",X"AE",X"AC",X"BF",X"01",X"7F",X"ED",X"D3",X"5F",X"09",X"3F",X"06",
|
||||
X"1F",X"17",X"9F",X"8D",X"8D",X"94",X"8D",X"8D",X"8D",X"94",X"8D",X"8D",X"8D",X"94",X"8D",X"8D",
|
||||
X"8D",X"94",X"8D",X"86",X"86",X"8D",X"86",X"86",X"86",X"8D",X"86",X"88",X"88",X"8F",X"88",X"88",
|
||||
X"88",X"8F",X"88",X"BF",X"01",X"9F",X"8A",X"8A",X"91",X"8A",X"8A",X"8A",X"91",X"8A",X"8A",X"8A",
|
||||
X"91",X"8A",X"8A",X"8A",X"91",X"8A",X"83",X"83",X"8A",X"83",X"83",X"83",X"8A",X"83",X"85",X"85",
|
||||
X"8C",X"85",X"85",X"85",X"8C",X"85",X"BF",X"01",X"7F",X"EE",X"12",X"A6",X"84",X"26",X"4A",X"39",
|
||||
X"BD",X"EE",X"8A",X"BD",X"EE",X"67",X"39",X"6C",X"88",X"1E",X"A6",X"88",X"1E",X"84",X"03",X"27",
|
||||
X"01",X"39",X"A6",X"07",X"81",X"05",X"27",X"07",X"A6",X"07",X"27",X"02",X"6A",X"07",X"39",X"86",
|
||||
X"F6",X"A7",X"0A",X"86",X"03",X"A7",X"0B",X"6A",X"07",X"39",X"A6",X"88",X"12",X"27",X"46",X"6A",
|
||||
X"88",X"1A",X"26",X"37",X"6A",X"88",X"12",X"27",X"3C",X"A6",X"88",X"17",X"A7",X"88",X"1A",X"39",
|
||||
X"86",X"FE",X"A7",X"0A",X"6F",X"88",X"1E",X"20",X"2C",X"A6",X"88",X"12",X"27",X"27",X"6A",X"88",
|
||||
X"1A",X"26",X"18",X"6A",X"88",X"12",X"27",X"1D",X"A6",X"88",X"17",X"A7",X"88",X"1A",X"A6",X"07",
|
||||
X"E6",X"88",X"1B",X"A3",X"88",X"1C",X"A7",X"07",X"E7",X"88",X"1B",X"39",X"A6",X"88",X"15",X"A7",
|
||||
X"07",X"39",X"6F",X"07",X"39",X"BD",X"F0",X"4F",X"84",X"1F",X"27",X"7A",X"81",X"1F",X"10",X"27",
|
||||
X"00",X"C1",X"BD",X"EE",X"EC",X"BD",X"EF",X"5C",X"BD",X"EE",X"CC",X"39",X"10",X"AE",X"88",X"13",
|
||||
X"48",X"31",X"A6",X"EC",X"A4",X"A7",X"02",X"E7",X"01",X"39",X"35",X"40",X"BD",X"F0",X"4F",X"84",
|
||||
X"1F",X"27",X"08",X"BD",X"EE",X"EC",X"BD",X"EF",X"0F",X"20",X"C1",X"6F",X"02",X"6F",X"01",X"E6",
|
||||
X"88",X"16",X"59",X"59",X"59",X"59",X"C4",X"07",X"E7",X"88",X"1F",X"CE",X"EF",X"3E",X"A6",X"C5",
|
||||
X"A7",X"88",X"12",X"A6",X"88",X"17",X"A7",X"88",X"1A",X"A6",X"88",X"15",X"A7",X"07",X"6F",X"88",
|
||||
X"1B",X"A6",X"88",X"1F",X"48",X"CE",X"EF",X"46",X"EC",X"C6",X"ED",X"88",X"1C",X"39",X"01",X"03",
|
||||
X"06",X"0C",X"18",X"30",X"60",X"C0",X"07",X"00",X"03",X"81",X"01",X"C2",X"00",X"E4",X"00",X"78",
|
||||
X"00",X"48",X"00",X"3C",X"00",X"4E",X"6F",X"02",X"6F",X"01",X"20",X"89",X"E6",X"88",X"16",X"59",
|
||||
X"59",X"59",X"59",X"C4",X"07",X"E7",X"88",X"1F",X"CE",X"EF",X"8B",X"A6",X"C5",X"A7",X"88",X"12",
|
||||
X"A6",X"88",X"17",X"A7",X"88",X"1A",X"A6",X"88",X"15",X"A7",X"07",X"6F",X"88",X"1B",X"CE",X"EF",
|
||||
X"93",X"A6",X"88",X"1F",X"48",X"EC",X"C6",X"ED",X"88",X"1C",X"39",X"01",X"02",X"04",X"08",X"10",
|
||||
X"20",X"40",X"80",X"07",X"00",X"03",X"80",X"01",X"C0",X"00",X"E0",X"00",X"70",X"00",X"38",X"00",
|
||||
X"1C",X"00",X"0E",X"BD",X"EF",X"A9",X"16",X"FF",X"2C",X"E6",X"88",X"16",X"59",X"59",X"59",X"59",
|
||||
X"C4",X"07",X"58",X"CE",X"EF",X"B8",X"6E",X"D5",X"EF",X"C8",X"EF",X"D5",X"EF",X"DF",X"EF",X"E6",
|
||||
X"EF",X"F4",X"EF",X"FC",X"EE",X"FA",X"F0",X"4A",X"BD",X"F0",X"4F",X"CE",X"E0",X"85",X"48",X"33",
|
||||
X"C6",X"EF",X"88",X"13",X"39",X"BD",X"F0",X"4F",X"A7",X"88",X"17",X"A7",X"88",X"1A",X"39",X"BD",
|
||||
X"F0",X"4F",X"A7",X"88",X"15",X"39",X"BD",X"F0",X"4F",X"E6",X"88",X"16",X"BD",X"F0",X"4F",X"A7",
|
||||
X"0D",X"E7",X"0C",X"39",X"EC",X"0C",X"ED",X"0E",X"6F",X"88",X"10",X"39",X"96",X"02",X"81",X"15",
|
||||
X"10",X"27",X"00",X"5C",X"BD",X"F0",X"4F",X"6C",X"88",X"10",X"A6",X"88",X"10",X"A1",X"88",X"16",
|
||||
X"23",X"01",X"39",X"EC",X"0E",X"ED",X"0C",X"39",X"39",X"BD",X"F0",X"4F",X"6C",X"88",X"10",X"A6",
|
||||
X"88",X"10",X"A1",X"88",X"16",X"27",X"07",X"BD",X"F0",X"4F",X"BD",X"F0",X"4F",X"39",X"BD",X"F0",
|
||||
X"4F",X"E6",X"88",X"16",X"BD",X"F0",X"4F",X"A7",X"0D",X"E7",X"0C",X"39",X"BD",X"F0",X"4F",X"6C",
|
||||
X"88",X"10",X"A1",X"88",X"16",X"27",X"E7",X"7E",X"F0",X"13",X"35",X"40",X"6F",X"84",X"39",X"EE",
|
||||
X"0C",X"A6",X"C4",X"A7",X"88",X"16",X"86",X"01",X"33",X"C6",X"EF",X"0C",X"A6",X"88",X"16",X"39",
|
||||
X"8E",X"04",X"60",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"CC",X"F0",X"B6",X"ED",X"0C",
|
||||
X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"8E",X"04",X"80",X"86",X"01",
|
||||
X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"CC",X"F0",X"CE",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",
|
||||
X"12",X"86",X"04",X"A7",X"88",X"11",X"8E",X"04",X"A0",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",
|
||||
X"0A",X"86",X"17",X"A7",X"0B",X"CC",X"F0",X"E6",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",
|
||||
X"86",X"04",X"A7",X"88",X"11",X"39",X"5F",X"09",X"3F",X"07",X"1F",X"23",X"DF",X"B9",X"79",X"79",
|
||||
X"DF",X"B9",X"79",X"79",X"92",X"60",X"76",X"B9",X"95",X"60",X"79",X"BC",X"FD",X"FF",X"5F",X"09",
|
||||
X"3F",X"07",X"1F",X"23",X"DF",X"B4",X"74",X"74",X"DF",X"B4",X"74",X"74",X"8D",X"60",X"72",X"B6",
|
||||
X"90",X"60",X"75",X"B9",X"F9",X"FF",X"5F",X"09",X"3F",X"07",X"1F",X"17",X"AD",X"AC",X"AA",X"A8",
|
||||
X"8A",X"60",X"6B",X"B2",X"8D",X"60",X"70",X"B5",X"F4",X"FF",X"8E",X"04",X"60",X"86",X"01",X"A7",
|
||||
X"84",X"86",X"FE",X"A7",X"0A",X"CC",X"F1",X"4D",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",
|
||||
X"86",X"04",X"A7",X"88",X"11",X"8E",X"04",X"80",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",
|
||||
X"CC",X"F1",X"5F",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",
|
||||
X"8E",X"04",X"A0",X"6F",X"01",X"6F",X"02",X"86",X"FE",X"A7",X"0A",X"39",X"CC",X"F1",X"70",X"ED",
|
||||
X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"39",X"5F",X"0A",X"3F",
|
||||
X"09",X"1F",X"23",X"7E",X"7E",X"7E",X"7E",X"9B",X"99",X"9B",X"7B",X"7B",X"DB",X"A0",X"FF",X"5F",
|
||||
X"0A",X"3F",X"09",X"1F",X"23",X"79",X"79",X"79",X"79",X"96",X"94",X"96",X"76",X"76",X"D6",X"A0",
|
||||
X"FF",X"8E",X"04",X"60",X"86",X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"CC",X"F1",X"C7",X"ED",
|
||||
X"0C",X"ED",X"88",X"18",X"6F",X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"8E",X"04",X"80",X"86",
|
||||
X"01",X"A7",X"84",X"86",X"FE",X"A7",X"0A",X"CC",X"F1",X"F9",X"ED",X"0C",X"ED",X"88",X"18",X"6F",
|
||||
X"88",X"12",X"86",X"04",X"A7",X"88",X"11",X"8E",X"04",X"A0",X"86",X"01",X"A7",X"84",X"86",X"FE",
|
||||
X"A7",X"0A",X"86",X"17",X"A7",X"0B",X"CC",X"F2",X"2B",X"ED",X"0C",X"ED",X"88",X"18",X"6F",X"88",
|
||||
X"12",X"86",X"04",X"A7",X"88",X"11",X"39",X"5F",X"0B",X"3F",X"07",X"1F",X"23",X"94",X"76",X"71",
|
||||
X"74",X"74",X"76",X"71",X"94",X"76",X"71",X"74",X"74",X"76",X"71",X"76",X"79",X"60",X"76",X"79",
|
||||
X"60",X"76",X"79",X"6F",X"6F",X"71",X"71",X"72",X"72",X"74",X"74",X"72",X"72",X"76",X"79",X"74",
|
||||
X"74",X"78",X"7B",X"79",X"99",X"99",X"7B",X"9D",X"FF",X"5F",X"0B",X"3F",X"07",X"1F",X"23",X"8D",
|
||||
X"6D",X"6D",X"6D",X"6D",X"6D",X"6D",X"8E",X"6E",X"6E",X"6E",X"6E",X"6E",X"6E",X"72",X"6F",X"60",
|
||||
X"72",X"6F",X"60",X"73",X"6F",X"6A",X"6A",X"6C",X"6C",X"6D",X"6D",X"6E",X"6E",X"6D",X"6D",X"72",
|
||||
X"72",X"6F",X"6F",X"74",X"74",X"71",X"91",X"91",X"72",X"94",X"FF",X"5F",X"0B",X"3F",X"07",X"1F",
|
||||
X"23",X"81",X"68",X"65",X"61",X"61",X"68",X"65",X"82",X"68",X"65",X"62",X"62",X"68",X"65",X"66",
|
||||
X"63",X"60",X"66",X"63",X"60",X"67",X"63",X"69",X"69",X"6B",X"6B",X"6C",X"6C",X"6D",X"6D",X"66",
|
||||
X"66",X"6D",X"6A",X"68",X"68",X"6F",X"6C",X"61",X"81",X"81",X"68",X"8D",X"FF",X"86",X"FF",X"B7",
|
||||
X"01",X"12",X"B7",X"01",X"13",X"B7",X"01",X"14",X"B7",X"01",X"18",X"B7",X"01",X"19",X"B7",X"01",
|
||||
X"1A",X"BD",X"F3",X"14",X"7E",X"F2",X"78",X"39",X"8E",X"04",X"60",X"A6",X"84",X"26",X"12",X"8E",
|
||||
X"04",X"00",X"A6",X"84",X"26",X"0B",X"C6",X"07",X"F7",X"40",X"00",X"86",X"FF",X"B7",X"40",X"01",
|
||||
X"39",X"5F",X"F7",X"40",X"00",X"A6",X"01",X"B7",X"40",X"01",X"5C",X"F7",X"40",X"00",X"A6",X"02",
|
||||
X"B7",X"40",X"01",X"5C",X"F7",X"40",X"00",X"A6",X"88",X"21",X"B7",X"40",X"01",X"5C",X"F7",X"40",
|
||||
X"00",X"A6",X"88",X"22",X"B7",X"40",X"01",X"5C",X"F7",X"40",X"00",X"A6",X"88",X"41",X"B7",X"40",
|
||||
X"01",X"5C",X"F7",X"40",X"00",X"A6",X"88",X"42",X"B7",X"40",X"01",X"5C",X"F7",X"40",X"00",X"A6",
|
||||
X"88",X"4B",X"B7",X"40",X"01",X"C6",X"FF",X"A6",X"0A",X"44",X"56",X"A6",X"88",X"2A",X"44",X"56",
|
||||
X"A6",X"88",X"4A",X"44",X"56",X"56",X"56",X"44",X"44",X"44",X"56",X"56",X"56",X"86",X"07",X"B7",
|
||||
X"40",X"00",X"F7",X"40",X"01",X"C6",X"08",X"F7",X"40",X"00",X"A6",X"07",X"B7",X"40",X"01",X"5C",
|
||||
X"F7",X"40",X"00",X"A6",X"88",X"27",X"B7",X"40",X"01",X"5C",X"F7",X"40",X"00",X"A6",X"88",X"47",
|
||||
X"B7",X"40",X"01",X"39",X"8E",X"02",X"00",X"86",X"0F",X"97",X"03",X"0F",X"05",X"A6",X"84",X"27",
|
||||
X"03",X"BD",X"F3",X"35",X"96",X"05",X"81",X"03",X"27",X"0A",X"0A",X"03",X"27",X"06",X"86",X"20",
|
||||
X"30",X"86",X"20",X"E9",X"39",X"A6",X"84",X"81",X"01",X"27",X"07",X"81",X"02",X"27",X"48",X"16",
|
||||
X"00",X"B0",X"D6",X"05",X"58",X"F7",X"20",X"00",X"A6",X"01",X"B7",X"20",X"01",X"5C",X"F7",X"20",
|
||||
X"00",X"A6",X"02",X"B7",X"20",X"01",X"96",X"05",X"8B",X"08",X"B7",X"20",X"00",X"A6",X"07",X"B7",
|
||||
X"20",X"01",X"A6",X"0B",X"27",X"08",X"C6",X"06",X"F7",X"20",X"00",X"B7",X"20",X"01",X"96",X"05",
|
||||
X"10",X"8E",X"01",X"12",X"31",X"A6",X"A6",X"0A",X"44",X"69",X"A4",X"C6",X"06",X"31",X"A5",X"44",
|
||||
X"44",X"44",X"69",X"A4",X"0C",X"05",X"39",X"D6",X"05",X"C1",X"02",X"27",X"B5",X"58",X"F7",X"20",
|
||||
X"00",X"A6",X"01",X"B7",X"20",X"01",X"5C",X"F7",X"20",X"00",X"A6",X"02",X"B7",X"20",X"01",X"5C",
|
||||
X"F7",X"20",X"00",X"A6",X"03",X"B7",X"20",X"01",X"5C",X"F7",X"20",X"00",X"A6",X"04",X"B7",X"20",
|
||||
X"01",X"D6",X"05",X"CB",X"08",X"F7",X"20",X"00",X"A6",X"07",X"B7",X"20",X"01",X"5C",X"F7",X"20",
|
||||
X"00",X"A6",X"08",X"B7",X"20",X"01",X"A6",X"0B",X"27",X"08",X"C6",X"06",X"F7",X"20",X"00",X"B7",
|
||||
X"20",X"01",X"96",X"05",X"10",X"8E",X"01",X"12",X"31",X"A6",X"A6",X"0A",X"46",X"69",X"A4",X"46",
|
||||
X"69",X"21",X"C6",X"06",X"31",X"A5",X"46",X"46",X"69",X"A4",X"46",X"69",X"21",X"0C",X"05",X"0C",
|
||||
X"05",X"39",X"D6",X"05",X"C1",X"02",X"10",X"27",X"FF",X"48",X"C1",X"01",X"27",X"89",X"58",X"F7",
|
||||
X"20",X"00",X"A6",X"01",X"B7",X"20",X"01",X"5C",X"F7",X"20",X"00",X"A6",X"02",X"B7",X"20",X"01",
|
||||
X"5C",X"F7",X"20",X"00",X"A6",X"03",X"B7",X"20",X"01",X"5C",X"F7",X"20",X"00",X"A6",X"04",X"B7",
|
||||
X"20",X"01",X"5C",X"F7",X"20",X"00",X"A6",X"05",X"B7",X"20",X"01",X"5C",X"F7",X"20",X"00",X"A6",
|
||||
X"06",X"B7",X"20",X"01",X"D6",X"05",X"CB",X"08",X"F7",X"20",X"00",X"A6",X"07",X"B7",X"20",X"01",
|
||||
X"5C",X"F7",X"20",X"00",X"A6",X"08",X"B7",X"20",X"01",X"5C",X"F7",X"20",X"00",X"A6",X"08",X"B7",
|
||||
X"20",X"01",X"A6",X"0B",X"27",X"08",X"C6",X"06",X"F7",X"20",X"00",X"B7",X"20",X"01",X"96",X"05",
|
||||
X"10",X"8E",X"01",X"12",X"31",X"A6",X"A6",X"0A",X"46",X"69",X"A4",X"46",X"69",X"21",X"46",X"69",
|
||||
X"22",X"C6",X"06",X"31",X"A5",X"46",X"69",X"A0",X"46",X"69",X"A0",X"46",X"69",X"A4",X"0C",X"05",
|
||||
X"0C",X"05",X"0C",X"05",X"39",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
|
||||
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"E0",X"68",X"E0",X"1C",X"FF",X"FF",X"FF",X"FF",X"E0",X"00");
|
||||
begin
|
||||
process(clk)
|
||||
begin
|
||||
if rising_edge(clk) then
|
||||
data <= rom_data(to_integer(unsigned(addr)));
|
||||
end if;
|
||||
end process;
|
||||
end architecture;
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,513 +0,0 @@
|
||||
:1000000000003C666666663C001838581818187E72
|
||||
:10001000003C66060C30607E003C66061C06663CB2
|
||||
:10002000000E1E36667F0606007E607C6606663C15
|
||||
:10003000003C66607C66663C007E060E1C18181844
|
||||
:10004000003C66663C66663C003C66663E060C38D4
|
||||
:100050003C429DA1A19D423C0018181818001800B0
|
||||
:100060000000123F12123F1200080C0F090A383824
|
||||
:10007000003C66660C1000180000013E5415376005
|
||||
:100080000000000000000000001C3663637F636313
|
||||
:10009000007E63637E63637E003E63606060633EF8
|
||||
:1000A000007E63636363637E007F60607E60607F69
|
||||
:1000B000007F60607E606060003E63606067633EFA
|
||||
:1000C000006363637F636363001E0C0C0C0C0C1EE7
|
||||
:1000D000001F06060606663C0063666C787C6E634D
|
||||
:1000E000006060606060607F004163777F6B636386
|
||||
:1000F0000063737B6F676363003E63636363633EA8
|
||||
:10010000007E63637E606060003E6363636F663B96
|
||||
:10011000007E63637E6C6663003E63603E03633E05
|
||||
:10012000007F0C0C0C0C0C0C006363636363633E78
|
||||
:10013000006363636363361C00636363636B7F36D2
|
||||
:100140000063361C1C366341003333331E0C0C0C29
|
||||
:10015000007F03060C18307F073927392127E6C0B6
|
||||
:100160001010180C061E32100000003D6666663B3B
|
||||
:10017000001E33333633336E000066FFFF7E3C18BB
|
||||
:1001800000183E183E6B673D000060636363637058
|
||||
:10019000000E001E3303030E001C003E0C183C67CB
|
||||
:1001A00000183C1B3E6B6B3B0007307E3636363604
|
||||
:1001B00000183E0C3E0C603C000C18306030180CEF
|
||||
:1001C0000006667F6666060C003F03060000603F7F
|
||||
:1001D000000C3F060360603E006060606063633E49
|
||||
:1001E00000067F1E36361E3C0036367F3630301E07
|
||||
:1001F0000033367C3F60603C0008087F3E1C36229E
|
||||
:1002000005183E0C0660603E006065606066663CF6
|
||||
:10021000050C7F3C6C6C3C780500367F3636301E12
|
||||
:100220000533367C3F60603C0530377E36363636E7
|
||||
:1002300005183E0C3E0C603C050018306030180C70
|
||||
:100240000500667F6666060C05003F020000603F01
|
||||
:1002500000667F66666F7B6E007C18376663633E60
|
||||
:1002600000180C0C186D6D6D000000386C660300F2
|
||||
:10027000007F667F666F7B6EF080E08EF909090E65
|
||||
:10028000003078373030303700187E181E03033EB8
|
||||
:1002900000007E0303031E00007F060C1830301E92
|
||||
:1002A0000063361C1830301E00187C37661F361C61
|
||||
:1002B00000006F6060606C670000333E355D5F3743
|
||||
:1002C000003033773B37753700003E6D6D6D6D390B
|
||||
:1002D0000367667F666F7B6E037B18376663633EDA
|
||||
:1002E000031B0C0C186D6D6D000303386C66030066
|
||||
:1002F00003637F667F6E7B6EE090F0A091110A042D
|
||||
:10030000003578373030303705187E181E03033E2D
|
||||
:1003100005007E0303031E0005007E0C1830301E0E
|
||||
:100320000560361C1830301E000036367E333730FC
|
||||
:10033000000000363F35051E00000C0F0C1F361C58
|
||||
:1003400000000E001E040817000000003E03030E0C
|
||||
:1003500005667F66666F7B6E057C18376663633E55
|
||||
:1003600005180C0C186D6D6D0005386C66030000E7
|
||||
:10037000057F667F666F7B6E0000000019191D18EF
|
||||
:10038000000C3E0C7F3C6E3C0000781A3A5F5A3AF3
|
||||
:1003900000187C1B385B5B3E0000333E775D6D3A96
|
||||
:1003A00000307C307C33331E003336FE333336303E
|
||||
:1003B00000006C6E7B6B0B3E000C0F0C3C6F6C38BE
|
||||
:1003C000000C66607E03033E00066E766606060C31
|
||||
:1003D000003E0C183E033B3E003033773B33733313
|
||||
:1003E000003E0C183E03033E003030773B3373363B
|
||||
:1003F00000187C301E38603E001830606C7E7667D6
|
||||
:1004000077D2926DA3E29CB3FF0C12D22D2062C56D
|
||||
:10041000E724241818679870BC54995925854248D8
|
||||
:100420009E91906F1020404007F21121A25C40463F
|
||||
:10043000F13142818181423CFF182424DAA5C204B3
|
||||
:10044000CE7C4C78989864137D442919191620CED7
|
||||
:10045000F1102121627C8989E623454539CD33336A
|
||||
:1004600060E06C73737F6C000000CC3232FECC0015
|
||||
:1004700060E06976767F6900000024DADAFE240005
|
||||
:10048000E27B00000000000002FF0000000000000E
|
||||
:1004900010F800000000000084F0000000000000E0
|
||||
:1004A000708800000000000089FC000000000000CF
|
||||
:1004B00001FE000000000000C23900000000000042
|
||||
:1004C000109F00000000000011F900000000000073
|
||||
:1004D00048CF000000000000E7FE00000000000020
|
||||
:1004E0001E10111E06071D000000986464FC980091
|
||||
:1004F0000000669999FF66000000000000000000FF
|
||||
:10050000609086E9B9BF6600F0303639696F6600E1
|
||||
:1005100070989E79999F760060B0B679393FE60071
|
||||
:10052000F0888B88887B0000F0888B88887B0000AF
|
||||
:100530007F4040403F000000FE010101FF007F407E
|
||||
:10054000007F4040403F800100FE010101FF00406C
|
||||
:100550007F4040403F00FE01FE010101FF0000001E
|
||||
:10056000F0888B88887B00F0F0888B88887B00007F
|
||||
:10057000F0888B88887B0000F0888B88887B00015E
|
||||
:1005800070981E3969CFFE0070981E39199F760049
|
||||
:10059000103076B9B9FF3600F08086E9393FE600C1
|
||||
:1005A00000FF00027C7C800000FF00027C7C800059
|
||||
:1005B000000000000000000040403F00000000007C
|
||||
:1005C0000101FF000000000040403F00000000006B
|
||||
:1005D0000101FF000000000000000000000000001A
|
||||
:1005E000807F00027C7C800000FF00027C7C800019
|
||||
:1005F00000FF00027C7C800001FF00027C7C800008
|
||||
:100600002047478800027C7C20C7C70800027C7C0A
|
||||
:100610008080C04060301F0701010302060CF8E033
|
||||
:10062000000000000001030700002070F8F0E0C0A7
|
||||
:100630002F3F3E3C3E000000800000000000000014
|
||||
:10064000000000000000010000000000000000C0E9
|
||||
:1006500000000000010004040000000000C0006071
|
||||
:100660000000010004040209000000C00060A008AE
|
||||
:10067000E0C7C70800027C7C20C7C70800027C7C5A
|
||||
:100680008000204747880002800020C7C70800027A
|
||||
:1006900000000000010004040000000000C0006031
|
||||
:1006A0000000010004040201000000C00060A00876
|
||||
:1006B000010004040201100800C00060A008902896
|
||||
:1006C00004040201100804020060A0089028488871
|
||||
:1006D0000201100804020100A00890284888008048
|
||||
:1006E0001008040201000000902848880484442473
|
||||
:1006F0008000E0C7C7080002800020C7C7080002CA
|
||||
:10070000808FA02000202020007A02020002020236
|
||||
:10071000E0C7C70800027C7C21C6C60800027C7CBA
|
||||
:1007200084C2C2C3C1C1C3C682840000000080600D
|
||||
:100730008CC4C2C0C0C1C2C2162C205060808000D0
|
||||
:1007400088C5C5C6CA31C1C082040000000040800F
|
||||
:1007500080C0CEF710C0C0C04A54C040A0806040E6
|
||||
:1007600080C0C0C1C1C1C3C30204000000000000BA
|
||||
:1007700080C0C0C0C020F0D0A2A4406030180000EB
|
||||
:100780008020A0A08020202000020202000202029D
|
||||
:100790008000E0C7C7080002800021C6C60800022A
|
||||
:1007A000B367000000000000E0FC00000000000053
|
||||
:1007B000BE77000000000000F87C00000000000090
|
||||
:1007C000BF7F000000000000B8BC00000000000077
|
||||
:1007D000BF7F000000000000D8DC00000000000027
|
||||
:1007E000BD79000000000000F8FC000000000000DF
|
||||
:1007F000B773000000000000F8FC000000000000DB
|
||||
:10080000FF80A080808080A0FE010501010101051C
|
||||
:1008100000FF80A08080808000FE010501010101B1
|
||||
:100820000000FF80A08080800000FE010501010122
|
||||
:10083000FF80800000000000FE01010101010101B4
|
||||
:10084000FF80000000000000FE0101010101010124
|
||||
:10085000FF80800000000000FE0101010101010194
|
||||
:1008600000FE828282FE0F08FE828282FE00EF2856
|
||||
:10087000FE828282FE00EF28FE828282FE00EF2846
|
||||
:10088000807F00000000000001FF00000000000069
|
||||
:10089000A0807F00000000000501FF0000000000B4
|
||||
:1008A00080A0807F00000000010501FF0000000023
|
||||
:1008B00080FF00000000000001FF000000000000B9
|
||||
:1008C000007F00000000000001FF000000000000A9
|
||||
:1008D000807F00000000000001FF00000000000019
|
||||
:1008E00008080F00000000002828EF0000000000AA
|
||||
:1008F0002828EF00000000002828EF00000000007A
|
||||
:1009000000FC828282FE00CFFE828282FE000FE81F
|
||||
:10091000FE828282FE00E02F00FE828282FE0FE8CD
|
||||
:10092000FE828282FE00EF2800FE828282FEE020AC
|
||||
:1009300060B0343B6BCFF40060B0346B3BBF6400FD
|
||||
:10094000103074BBBBFF140000000000000000006A
|
||||
:10095000FF80808E9FB2A2A5F0080808884808088A
|
||||
:10096000FF80800E5F32A2A5F008080888480808BA
|
||||
:10097000C794940E5F32A2A5C02058288848080862
|
||||
:100980002828E8070000000028282FE000000000C9
|
||||
:100990002828E80F0000000028282FE000000000B1
|
||||
:1009A0002828EF00000000002020E00000000000E8
|
||||
:1009B000F08084EB3B3FE400609084EBBBBF6400BD
|
||||
:1009C000F030346B6B6F64000000926D6DFF92002D
|
||||
:1009D000988E8087808080800808080808080808AA
|
||||
:1009E00018CEA05720C08080080828502010080882
|
||||
:1009F00018CEA05724CB8A94080868B010080808BD
|
||||
:100A000000F089898A897802F0888B88887B006762
|
||||
:100A1000F0888A888A7903FCF0888B88887B007349
|
||||
:100A200000F08B88888B7880F088A19AD81B007F93
|
||||
:100A3000F088888B887803CCF0888B88887B00636B
|
||||
:100A4000F088888B887803E400F0888B88887B00A6
|
||||
:100A5000F0888B88887B00F8F0888B88887B00FF83
|
||||
:100A6000F0888B88887B00E700F08B88888B788300
|
||||
:100A7000F0888B88887B00F8F088888A897903FC65
|
||||
:100A800041423E000000000054947300000000004A
|
||||
:100A90000000FE000000000014C40100000000007F
|
||||
:100AA0000802FE000000000080807F0000000000BF
|
||||
:100AB0002951DF000000000054542700000000000E
|
||||
:100AC0001515F3000000000040409F0000000000EA
|
||||
:100AD0000200FE000000000040A03F0000000000F7
|
||||
:100AE0001428E700000000002414C70000000000E4
|
||||
:100AF0000401FF000000000082423E0000000000F0
|
||||
:100B0000EFA85728D090E817FF0E91514946982436
|
||||
:100B1000FD0810100846AD509FD050AE312151D283
|
||||
:100B2000FF003C42818181429F9090600E111192A2
|
||||
:100B30009C8A8A9262091516FFB0C8C8B60911319D
|
||||
:100B40009F292954B454235467140AED2D4A348A3A
|
||||
:100B5000FF324A85878CB442DF101052EDADC60AD1
|
||||
:100B6000FF1C22414141225C7EA55B2D030C0E132C
|
||||
:100B7000C116862E5F32A2A5C0A058A8D868202032
|
||||
:100B8000901F00000000000024E7000000000000AB
|
||||
:100B900010F2000000000000AC6700000000000040
|
||||
:100BA0003DFF0000000000004C7F0000000000003E
|
||||
:100BB00028CF0000000000004AF100000000000003
|
||||
:100BC000529F000000000000853C00000000000073
|
||||
:100BD00008F70000000000000AFC00000000000010
|
||||
:100BE000A0BF00000000000013F3000000000000A0
|
||||
:100BF000188EA05700CBAAA408082850A010A85807
|
||||
:100C00001E7B92066C3D1F03F9DF4A02B6DEBD1C57
|
||||
:100C1000DEF7931034D7CF8F76BF2D48DAB7B5D82B
|
||||
:100C2000BDEECA1839FBF170F1FB7324ACC7DBF6DB
|
||||
:100C3000CFFFCE80912F6EC73E7D6C0099E3F74EBB
|
||||
:100C4000CFBE9680295FEFC738FE73208DEC808081
|
||||
:100C500004380F2010030C00200C27469021160E9C
|
||||
:100C600000C38D5060438C000026D861021D608057
|
||||
:100C70000026D861021D6080003C478C00E01B0408
|
||||
:100C80000000000000000000000000000000000064
|
||||
:100C90000000000000000000000000000000000054
|
||||
:100CA0000000000000000000000000000000000044
|
||||
:100CB0000000000000000000000000000000000034
|
||||
:100CC0000000000000000000000000000000000024
|
||||
:100CD0000000000000000000000000000000000014
|
||||
:100CE0006000000000000000300C00000000000068
|
||||
:100CF00030000000000000000600000000000000BE
|
||||
:100D000040B9C6310234C8200623D40B8046211ACC
|
||||
:100D100031C629224C30C804030EC12056480700B2
|
||||
:100D20001429C20C1023C01808D619A2458201420A
|
||||
:100D30000876D9200060C1321C30A44084489460F9
|
||||
:100D400000027E7EFE000607087272EE0020672712
|
||||
:100D5000126666DE0020E0E4027E7EFE000027E7E9
|
||||
:100D600000027E7EFE80E0E7029E4EEE000027E756
|
||||
:100D7000027E7EFE0020E6E600027E7EFE006767C1
|
||||
:100D80001000000000000000041008000000000037
|
||||
:100D90000000000000000000000000000000000053
|
||||
:100DA0000000000000000000020000000000000041
|
||||
:100DB0001C1100000000000008800000000000007E
|
||||
:100DC0000F000000000000006F00000000000000A5
|
||||
:100DD000E60E0000000000006FE0000000000000D0
|
||||
:100DE000E70F000000000000EFE00000000000003E
|
||||
:100DF000ED00000000000000EF0000000000000017
|
||||
:100E000000027E7EFE80E2E700027E7EFE00672713
|
||||
:100E1000047062EE0020E7E7027E7EFE002027A736
|
||||
:100E2000047C78F20020E0E4027E7EFE000027E7EA
|
||||
:100E3000027E7EFE0021E6E400027E7EFE0060E08F
|
||||
:100E400000000008420F3ED9000000000009C0E386
|
||||
:100E5000000040E070FEBCFF000010004000C56FC5
|
||||
:100E60000000000004307FD9000000040061FEE7AC
|
||||
:100E700000000003108060FB00000080E068FF7F3E
|
||||
:100E8000E70F0000000000002F60000000000000DD
|
||||
:100E9000EF00000000000000AF00000000000000B4
|
||||
:100EA0000B00000000000000E00000000000000057
|
||||
:100EB000ED00000000000000E00000000000000065
|
||||
:100EC000FFFFF7FFDFFEFFFFFFBBFFFFFD7FFFFF21
|
||||
:100ED000E7FBFFBBFFDFFFFFFDFFFDEFFFBFFFFFF6
|
||||
:100EE000FFFFF7FFDFFEFFFFFFBBFFFFFD7FFFFF01
|
||||
:100EF0009F7FFDFFEFFFFFFF7FEDFFFDEFFFFFFF98
|
||||
:100F0000000000000846E3CF00000800100CC77D79
|
||||
:100F1000000000000B4385FF0000000000C4F3FF49
|
||||
:100F2000000000000000021E0000000000004078E9
|
||||
:100F300000001F3F3F1F0F070133FAF8F8F8F0E3F6
|
||||
:100F40004040071F3F7F3F7F0167F7F6F0F0F0E179
|
||||
:100F50000418303103030707040E7EFEFFFFFFFF76
|
||||
:100F600000000F1F1F1F3F3F00089EFFFFFFFEFEF8
|
||||
:100F700000020F1F1F3F1E3E011E380000041F3FCE
|
||||
:100F8000FFDBFFFBDFFFFFFFFFEFFFFD6FFFFFFF5B
|
||||
:100F9000DFFFDFFFEFFF7FFE6FFF9EFFDFFBFFFF47
|
||||
:100FA000062F2D0D0603030060F4B4B060C0C0002E
|
||||
:100FB0007330000000000000C107000000000000C6
|
||||
:100FC0003F4F400000000000C38F00000000000001
|
||||
:100FD0001339000000000000FEF8000000000000CF
|
||||
:100FE0001F03000000000000FCF0000000000000F3
|
||||
:100FF0001C000000000000001E1C0000000000009B
|
||||
:101000000F3E386060604003C685223030366F6C1A
|
||||
:101010000F3F70674E39073E860FD9DB1EC6F004BE
|
||||
:101020001F3F60606060400184C62E6D6969CBD34C
|
||||
:10103000060E060606060600000000000008042250
|
||||
:1010400000000000000103070000404870F0FCE0D1
|
||||
:10105000010100000000000040400000000000000E
|
||||
:1010600001010000000000004040000000000000FE
|
||||
:1010700001010000000000004040000000000000EE
|
||||
:101080001F07000000000000ED93000000000000BA
|
||||
:101090007807000000000000DAFC000000000000FB
|
||||
:1010A0003F1F000000000000960E0000000000003E
|
||||
:1010B00002050B0610295A3155306814AC58C0800F
|
||||
:1010C0000F0F1F3F3C786000E0C080000000000070
|
||||
:1010D00000000000003F02010000000000FF80004F
|
||||
:1010E0000000000000FF02010000000000FC804042
|
||||
:1010F00000000000001F02010000000000FF80400F
|
||||
:10110000010100000000000040400000000000005D
|
||||
:10111000FF80808080808080FF00000000000080D1
|
||||
:10112000FF0101010101018180808080808080FFBA
|
||||
:1011300000000000000000FF01010101010101FFAA
|
||||
:101140000042810000003C660042810000183858CF
|
||||
:10115000000000000000000000000020601060F0AF
|
||||
:10116000000000000000000000000000485060384F
|
||||
:10117000000000000000000000000000000000006F
|
||||
:101180000000000000FF02010000000000FC8040A1
|
||||
:1011900080808080808080800000000000000080CF
|
||||
:1011A0000101010101010181FFFFFFFFFFFFFFFFBF
|
||||
:1011B000000000000000000000000000000000002F
|
||||
:1011C0006666663C000000001818187E00000000EB
|
||||
:1011D0000000020713256D3230D0D020E0C000009F
|
||||
:1011E00000000000000000000000000000000000FF
|
||||
:1011F0000004000000210000486CF4FC7C1C080086
|
||||
:101200000000010303030D06000000000010302061
|
||||
:1012100000000000000002000000000804C21010DE
|
||||
:101220000C1C2C2C3E0C0C000C12101C16160C0066
|
||||
:101230001838191A1A1B190000008C5252DE8C0043
|
||||
:1012400024A0008F1EB0606228480010000000003B
|
||||
:10125000000A180F5E7020220301113010000800F0
|
||||
:101260000080800F1822200710E301008042000850
|
||||
:1012700020C180000500022010E3210000020404C8
|
||||
:10128000020000010103061800E050808000000009
|
||||
:1012900001021011030A04012464C4CC9838F0C080
|
||||
:1012A0000C1606060C181E000C16160C16160C0052
|
||||
:1012B00000003048487830000C16060C06160C006A
|
||||
:1012C00002A9059C18904143D0B01000C02810809E
|
||||
:1012D0000229051C5810C043C08001180800108264
|
||||
:1012E0008A2905C484440883C0880001000C148046
|
||||
:1012F000800620C38000489B8000000909000092FE
|
||||
:10130000000000000000000500000000000080D088
|
||||
:10131000000001000C06070F00000080C0B060C094
|
||||
:101320000000000000000000000000000000206835
|
||||
:101330000000000000070E10000000003C4E83007B
|
||||
:10134000000000000000000000000000000000801D
|
||||
:101350001C10101C06061C001E06060C0C0C0C00B3
|
||||
:101360000C16160E06061C0000000000007020601F
|
||||
:10137000000000000101043A00000000002050C0FD
|
||||
:1013800005020010180C030030E0C0048098F00043
|
||||
:10139000181000080000000000000000000000001D
|
||||
:1013A0000304040808000000F4181C1408000000DE
|
||||
:1013B000030604020000000000000000000000001E
|
||||
:1013C0000771EEFE7F726201F0C0200E7C7EEE603F
|
||||
:1013D000000000000000000000000000000000000D
|
||||
:1013E0000001020800000000901010002000000022
|
||||
:1013F000371725151A1B0D00D0A0B0D8D8B0200083
|
||||
:1014000000000000000000000000000000000000DC
|
||||
:1014100000000000000000000000000000000000CC
|
||||
:1014200000000000000000000000000000000000BC
|
||||
:1014300000000000000000000000000000000000AC
|
||||
:10144000000000000000000000000000000000009C
|
||||
:10145000000000000000000000000000000000008C
|
||||
:10146000000000000000000000000000000000007C
|
||||
:10147000000000000000000000000000000000006C
|
||||
:1014800060B0B46BBBBF64000000926D6DFF920052
|
||||
:10149000000000000000000000000000000000004C
|
||||
:1014A000000000000000000000000000000000003C
|
||||
:1014B000000000000000000000000000000000002C
|
||||
:1014C000000000000000000000000000000000001C
|
||||
:1014D000000000000000000000000000000000000C
|
||||
:1014E00000000000000000000000000000000000FC
|
||||
:1014F00000000000000000000000000000000000EC
|
||||
:10150000003BFDA0A101000867FD8A8A0498DF4A1C
|
||||
:10151000F3FDA1A0106CDF1AE3FD91A02010DF08FD
|
||||
:1015200073FD91880959D31FECFD858809821FD866
|
||||
:10153000BCFD9091619AD22F99E7FD9284B193C836
|
||||
:1015400072DFFD908139538ACBFD909020B9DF0A7C
|
||||
:101550000159FE84C908544F86FDA89810A15FC8A0
|
||||
:10156000C6FFA1C0402BDF4800CCFC90A02010009B
|
||||
:101570000000000000000103000000004850E0F8F7
|
||||
:10158000080700000000000028E70000000000003D
|
||||
:1015900028E700000000000028E70000000000002D
|
||||
:1015A00028E80700000000002827E00000000000F5
|
||||
:1015B00028E80700000000002827E00000000000E5
|
||||
:1015C00028E700000000000028E7000000000000FD
|
||||
:1015D00028E80700000000002827E00000000000C5
|
||||
:1015E00028E700000000000020E0000000000000EC
|
||||
:1015F0000307070C18100000C08000000000000066
|
||||
:1016000000808000000000000000000000000000DA
|
||||
:10161000C02020E0000000000000000000000000EA
|
||||
:10162000F00808F8000080800000000000000000C2
|
||||
:10163000FC82827E00C0202000000000000000002C
|
||||
:101640003FA0A09F00F008080080808000000000FC
|
||||
:10165000CF2828E700FC8282C02020E000000000A4
|
||||
:10166000F30A0AF9003FA0A0F00808F80000808003
|
||||
:10167000FC82827E00CF2828FC82827E00C020204F
|
||||
:10168000000000000000000000000000000000005A
|
||||
:10169000000000000000000000000000000000004A
|
||||
:1016A00080000000000000000000000000000000BA
|
||||
:1016B000E00000000000000000000000000000004A
|
||||
:1016C000F800000000000000000000000000000022
|
||||
:1016D0007E0000000000000000000000000000008C
|
||||
:1016E0009F000000000000008000000000000000DB
|
||||
:1016F000EF00000000000000E0000000000000001B
|
||||
:10170000C7A86C08C0206880F30A2C1800101808BD
|
||||
:10171000C7A86C08C0A0A8A0FF00241800100800EB
|
||||
:10172000C0AA6C08C0A0E8007F8024180010080040
|
||||
:10173000C1AA6C08C0A0A8A4FC822418001008004C
|
||||
:10174000C7A86C08C0A0A8A0FF002418001008E0DB
|
||||
:10175000C6AA6C08C0A0A8A07F80241800100800AA
|
||||
:101760004B4C484C4B484848000C5041910E0000EF
|
||||
:10177000006384088C730000000C1041518E00003F
|
||||
:10178000C46A0A3E0000000000FC82827E00000065
|
||||
:10179000A06C0A7A3E000000FE84887200000000FF
|
||||
:1017A00044EA0A3E00000000FC82827E0000000045
|
||||
:1017B000AE6A8E0000000000DCD2223E0000000075
|
||||
:1017C000A46A0A3E000000002ED26600000000005D
|
||||
:1017D000A46A0A3E000000009CD2AA660000000035
|
||||
:1017E0004848A850200000000162800A897000006B
|
||||
:1017F00089092929C90909090909150A04000000EC
|
||||
:101800000000000000000201000000000000F0B82D
|
||||
:1018100000060C08080C070000000000000000FC97
|
||||
:10182000000000000000070F000000000000F8FCAE
|
||||
:101830000000000000000F1F000000000000E0F0AA
|
||||
:10184000D8F8787060C08000000000000001030438
|
||||
:1018500000000000C0809000000000000000003F79
|
||||
:1018600000000000000000C0000000000000007F39
|
||||
:101870000000000000000001000000000000000067
|
||||
:10188000000000000000000100000000000101FF56
|
||||
:10189000071F3C70E0C08000FF8F010000000000C7
|
||||
:1018A0000CCCEC7C3C1C0C040E0707030303010169
|
||||
:1018B000181898D8D8F8F8F8383C3E3F3F3F3F3FDB
|
||||
:1018C00000000103070E0CFC1F7FE08000000000F9
|
||||
:1018D000F0FC1E07010000007F606060E0E0602017
|
||||
:1018E000E070783C3E3E1F1FFFC1C1C1C1C1C1C1F4
|
||||
:1018F00080C0E0F0F8F8F8F8282828201008030045
|
||||
:10190000070F1C387060E0C0FF0101010101017F79
|
||||
:10191000000103070F1F1F1F00F8FEFFFFFFFFFF5F
|
||||
:10192000020201018180C0C0000000000090909878
|
||||
:10193000F8F8F878783939393F3860C0C08080814C
|
||||
:10194000FC040404040404FC00071F3F7F7FFFFF26
|
||||
:1019500000C0F0F8F8FCFEFE20101008080804048F
|
||||
:101960000F0F0F0707030383C1C1C1C1C1C1C1C1AB
|
||||
:10197000F8F8F8F8F8F8F8F8040404040810C000BF
|
||||
:10198000C0C1C1C0C0C06070C0F8F8F8F8380E031C
|
||||
:101990003F3F3F3F3F3F1F9FF8E0C0C080808080B7
|
||||
:1019A00060606060606060C098989C9C9E9E9E9FF6
|
||||
:1019B0001919090909010000838383818180C0C04E
|
||||
:1019C00080C1C1C1C161380CFFFFFFFEFEFCFC7C81
|
||||
:1019D000C38303030303030604040404040404048C
|
||||
:1019E0008181C1C0E0E0F0F0C1C1C1C1C14141018C
|
||||
:1019F000F8F8F8F8F8F8F8F8000000000000000126
|
||||
:101A000030383C1F0F07070F00000000C0F0FCFE3D
|
||||
:101A1000CF673F1F0F0603038081C7FFFC00000054
|
||||
:101A2000C08001010302060C9F9F1F1F1F1F1F1F65
|
||||
:101A3000808080C0C0E0E0F06070383E3F3F7FDFD4
|
||||
:101A40000703010180C0E0F07C3C9CDE6F67303012
|
||||
:101A5000060C1878F0C0000004040C080818106088
|
||||
:101A6000F0F8F8F8FCFCFEFE0101010101010101A2
|
||||
:101A7000F8F8F8F8F8F8F8F803030D1E1E0C00004B
|
||||
:101A80000F191830302060C0FEFEFE3C0000000040
|
||||
:101A90000202020202020707000000010FFFFFFF1F
|
||||
:101AA0001C3C7FFFFFFFFFFF1F1FFFFFFFFFFFFF2C
|
||||
:101AB000B0B19F9F87868783CF8783000000000097
|
||||
:101AC000F0F0F0E00000000020202020282F3F7FD1
|
||||
:101AD000000001071FFFFFFF60E0E0FFFFFFFFFFC7
|
||||
:101AE000FEFFFFFDFDFCFCFC010101FFFFFF7F3F4E
|
||||
:101AF000F8F8F8F8F8F8F8F800000000307878B056
|
||||
:101B0000C0703C1F0F07030100000001FFFFFFFF33
|
||||
:101B10000D1B7FFFFFFFFFFFFFFFFFFFCFC0800018
|
||||
:101B2000FFFEF8F0800000007F3F00000000000092
|
||||
:101B30008301000000000000C0E0F07C3F1F0F07A1
|
||||
:101B40000001030FFFFFFFFFFFFFFFFFFFFEFEFC93
|
||||
:101B5000FFFFFF3F00000000FFF7E08000000000F3
|
||||
:101B6000FCF80000000000001F0F00000000000053
|
||||
:101B7000F8F0000000000000C0C08000000000007D
|
||||
:101B80000000000000000000FF7F1F0700000000B1
|
||||
:101B9000FFFEF8E00000000001000203050106005E
|
||||
:101BA0000404040CB8000000000000000000010064
|
||||
:101BB00000000000000010C803000000000000004A
|
||||
:101BC000FFFF0F0000000000F8F0C0000000000060
|
||||
:101BD0000000000000000000000000000000000005
|
||||
:101BE000060C0C0305050000603030C0A0A000000A
|
||||
:101BF000020D080000003F004080E04040C080002F
|
||||
:101C00001F7FFFFF7F7F3C0F00000080C0406020EF
|
||||
:101C100000000001030206060000000000010005AC
|
||||
:101C2000050C0A16A0240548E05010B0A6018F2527
|
||||
:101C30000000000000808040F0FDFEDFDFBD7EFF81
|
||||
:101C4000073FFFFFFFFFFF77F0FBFFFFBFBD7DFA00
|
||||
:101C50001FFFFFFFF7F7FBFDF8F9FFFFFDFDFB7727
|
||||
:101C600007EFFFFFFFBFBFDF80E3FFFFFFFBF7F7DB
|
||||
:101C700001C3FFFFFDF5EEC1F0FFFFFFFFFEFDFD1D
|
||||
:101C80000000000000000000303010181818183054
|
||||
:101C90001C0C30226642412600030302C2221406B5
|
||||
:101CA00008001F7E7D1E0719DA00F8E040C080089A
|
||||
:101CB00080A080640E1C0C0CFC00000000000000E2
|
||||
:101CC0000700000000000000E0000000000000002D
|
||||
:101CD0003C000000000000000000000000000000C8
|
||||
:101CE0003F0F000000000000E800000000000000BE
|
||||
:101CF000000000000000000078000000000000006C
|
||||
:101D00000FFFFFFBF7F7EF8200000000000001006B
|
||||
:101D100000000318360E46A0010704168605058547
|
||||
:101D2000EDFD0303F3E5C1E00D1E202000070303D2
|
||||
:101D3000C2C6246828A8E8E2000060504C5D183153
|
||||
:101D400000000000000000C0F0FFFFFFFFDE3EFDCE
|
||||
:101D500003DFFFFFFFFFDF9F80F8FCDEEEECF4F017
|
||||
:101D6000000003070E1C1B360379FCEE9F0BD97392
|
||||
:101D7000AA4EAB70A44C8CE3000020D0A8140A9AA1
|
||||
:101D8000000000000000000000040D021515041200
|
||||
:101D9000A4C802A8EA02A8A0C545A54402A3818060
|
||||
:101DA000E0F4E6D5070080E30707E39BD0081DFFBA
|
||||
:101DB000E6E4A82000C0801022440C1831E3C60CD1
|
||||
:101DC000707078C09C061743E0000000000000001F
|
||||
:101DD0003F0E000000000000E000000000000000D6
|
||||
:101DE0003C6D6FD6E2D4E3D490A157A72F1B3F7D63
|
||||
:101DF0000442353222201A9D0D0D7216A31F63571F
|
||||
:101E0000000000000000000010071E0C18342E26F1
|
||||
:101E100002F30B367C79B993550607538B63296916
|
||||
:101E20000F834020B89EDFEFD8200107070ECC813A
|
||||
:101E3000141198216B52D483668000006088099940
|
||||
:101E40000000C060203818C400000000000000003E
|
||||
:101E500000428100003C660600428100003C6606AC
|
||||
:101E6000D5E3D563F2A67D5585C29EBBEF47330906
|
||||
:101E70005CB0000911120418112519251A624105D8
|
||||
:101E80000000000000030C00141B181878789090D4
|
||||
:101E90004E3A06040C1B264E61C00CC4B0984C266A
|
||||
:101EA000F7F3F8BF574F2710E3C78EF7ECD9EAE0F6
|
||||
:101EB000A7238045830080C479004488888A8A8A61
|
||||
:101EC000C5F8C0A080A0A0A0000000004010381CF1
|
||||
:101ED0000C30607E000000001C06663C0000000024
|
||||
:101EE00039291C0F0503000080C0AA15C060D83C2A
|
||||
:101EF000C30454AAA0430CF3CA021428D020C00083
|
||||
:101F00002569DBF7F56B6A0AF0E0C1C284810F0F27
|
||||
:101F1000CE9D3B60E1C81A349FCFC763F17C3E1F62
|
||||
:101F20000780E0F8FFBF5B2CD0010119F2E4CCD9A7
|
||||
:101F300060F0F3E74F1FAE7468C60CC08206071D41
|
||||
:101F4000C21A3327168B45A6CC629199470200002E
|
||||
:101F500000428100000E1E3600428100007E607C3F
|
||||
:101F600000428100003C666600428100003C6666DB
|
||||
:101F700000428100003C666000428100007E060C49
|
||||
:101F80008A6864381C0600000E0C040200C0C24FB0
|
||||
:101F900005E9FAB2020D024187C301F8FCFCF0E149
|
||||
:101FA000178B86E3380F8CF0F3C6DCF102FEE007F6
|
||||
:101FB0002103800103383E0E25052531B939000281
|
||||
:101FC00043514060F0200000061C10C08C880000C7
|
||||
:101FD000667E0606000000006606663C0000000003
|
||||
:101FE0003C66663C000000003E060C380000000025
|
||||
:101FF0007C66663C000000001830303000000000B5
|
||||
:00000001FF
|
||||
@@ -1,513 +0,0 @@
|
||||
:1000000000000000000000000000000000000000F0
|
||||
:1000100000000000000000000000000000000000E0
|
||||
:1000200000000000000000000000000000000000D0
|
||||
:1000300000000000000000000000000000000000C0
|
||||
:1000400000000000000000000000000000000000B0
|
||||
:1000500000000000000000000000000000000000A0
|
||||
:100060000000000000000000000000000000000090
|
||||
:100070000000000000000000000000000000000080
|
||||
:100080000000000000000000000000000000000070
|
||||
:100090000000000000000000000000000000000060
|
||||
:1000A0000000000000000000000000000000000050
|
||||
:1000B0000000000000000000000000000000000040
|
||||
:1000C0000000000000000000000000000000000030
|
||||
:1000D0000000000000000000000000000000000020
|
||||
:1000E0000000000000000000000000000000000010
|
||||
:1000F0000000000000000000000000000000000000
|
||||
:1001000000000000000000000000000000000000EF
|
||||
:1001100000000000000000000000000000000000DF
|
||||
:1001200000000000000000000000000000000000CF
|
||||
:1001300000000000000000000000000000000000BF
|
||||
:1001400000000000000000000000000000000000AF
|
||||
:10015000000000000000000000000000000000009F
|
||||
:10016000000000000000000000000000000000008F
|
||||
:10017000000000000000000000000000000000007F
|
||||
:10018000000000000000000000000000000000006F
|
||||
:10019000000000000000000000000000000000005F
|
||||
:1001A000000000000000000000000000000000004F
|
||||
:1001B000000000000000000000000000000000003F
|
||||
:1001C000000000000000000000000000000000002F
|
||||
:1001D000000000000000000000000000000000001F
|
||||
:1001E000000000000000000000000000000000000F
|
||||
:1001F00000000000000000000000000000000000FF
|
||||
:1002000000000000000000000000000000000000EE
|
||||
:1002100000000000000000000000000000000000DE
|
||||
:1002200000000000000000000000000000000000CE
|
||||
:1002300000000000000000000000000000000000BE
|
||||
:1002400000000000000000000000000000000000AE
|
||||
:10025000000000000000000000000000000000009E
|
||||
:10026000000000000000000000000000000000008E
|
||||
:10027000000000000000000000000000000000007E
|
||||
:10028000000000000000000000000000000000006E
|
||||
:10029000000000000000000000000000000000005E
|
||||
:1002A000000000000000000000000000000000004E
|
||||
:1002B000000000000000000000000000000000003E
|
||||
:1002C000000000000000000000000000000000002E
|
||||
:1002D000000000000000000000000000000000001E
|
||||
:1002E000000000000000000000000000000000000E
|
||||
:1002F00000000000000000000000000000000000FE
|
||||
:1003000000000000000000000000000000000000ED
|
||||
:1003100000000000000000000000000000000000DD
|
||||
:1003200000000000000000000000000000000000CD
|
||||
:1003300000000000000000000000000000000000BD
|
||||
:1003400000000000000000000000000000000000AD
|
||||
:10035000000000000000000000000000000000009D
|
||||
:10036000000000000000000000000000000000008D
|
||||
:10037000000000000000000000000000000000007D
|
||||
:10038000000000000000000000000000000000006D
|
||||
:10039000000000000000000000000000000000005D
|
||||
:1003A000000000000000000000000000000000004D
|
||||
:1003B000000000000000000000000000000000003D
|
||||
:1003C000000000000000000000000000000000002D
|
||||
:1003D000000000000000000000000000000000001D
|
||||
:1003E000000000000000000000000000000000000D
|
||||
:1003F00000000000000000000000000000000000FD
|
||||
:100400007FEFEF96FCFDE7CFFFF3EF2FFFFFFDFB44
|
||||
:10041000FFDFDFFFFF9877EFFFBB77F7FB7BFFEF97
|
||||
:10042000FE7F7FF0EFDFBFBF0FEFEFDF5FEFFFF982
|
||||
:10043000FFCFBF7F7F7FBFDFFFE7DFDF3D7BEFF7D2
|
||||
:10044000CDBBBB977777EBDCFFFBF7F7F7FBFFF351
|
||||
:10045000FFEFDFDF9F8F767EFEDEBEBEDE32EEEE8A
|
||||
:1004600060E06C62626E6C000000CC2222EECC0078
|
||||
:1004700060E06964646D69000000249292B6240013
|
||||
:100480009F04000000000000FF00000000000000CA
|
||||
:10049000EF07000000000000F7010000000000006E
|
||||
:1004A0008F07000000000000F703000000000000BC
|
||||
:1004B000FE000000000000003B0200000000000001
|
||||
:1004C000DF20000000000000EF0600000000000038
|
||||
:1004D000BF30000000000000DC0000000000000051
|
||||
:1004E0001E10111C06071C000000984444DC9800F4
|
||||
:1004F0000000661111776600000000000000000097
|
||||
:10050000609086E1B1B76600F03036316167660011
|
||||
:1005100070989A71999B760060B0B6713137E60099
|
||||
:10052000F8F0F3F3F38000FFF8F0F3F3F38000FF4B
|
||||
:100530007F7F7F7F40000000FFFEFEFE00007F7F88
|
||||
:10054000007F7F7F7F4080FE00FFFEFEFE00007F79
|
||||
:100550007F7F7F7F4000FFFEFFFEFEFE0000000069
|
||||
:10056000F8F0F3F3F38000FFF8F0F3F3F38000FF0B
|
||||
:10057000F8F0F3F3F38000FFF8F0F3F3F38000FEFC
|
||||
:1005800070981A3161C7FA0070981A31199B760079
|
||||
:10059000103072B1B1FB3600F08086E13137E600F1
|
||||
:1005A000FF0000FC80800000FF0000FC8080000055
|
||||
:1005B00000000000000000007F7F400000000000FD
|
||||
:1005C000FEFE0000000000007F7F400000000000F1
|
||||
:1005D000FEFE00000000000000000000000000001F
|
||||
:1005E000FF8000FC80800000FF0000FC8080000095
|
||||
:1005F000FF0000FC80800000FE0000FC8080000006
|
||||
:10060000CF88880000FC8080CF08080000FC808034
|
||||
:10061000FFEFBF777D3F1D07FFF7FDEEBAFCD8E087
|
||||
:10062000000000000001030700002070F8F0E0C0A7
|
||||
:100630002F3F3E3C3E000000800000000000000014
|
||||
:100640000000000000000101000000000000004068
|
||||
:1006500000000000010107010000000000408000D0
|
||||
:10066000000001010701040600000040800040680E
|
||||
:100670000F08080000FC8080CF08080000FC808084
|
||||
:100680000000CF88880000FC0000CF08080000FCB4
|
||||
:100690000000000001010701000000000040800090
|
||||
:1006A000000001010701040E0000004080004068C6
|
||||
:1006B00001010701040E1F130040800040680090F4
|
||||
:1006C0000701040E1F13191C800040680090307051
|
||||
:1006D000040E1F13191C3E3F40680090307078389C
|
||||
:1006E0001F13191C3E3F3F3F00903070783898C868
|
||||
:1006F00000000F08080000FC0000CF08080000FC04
|
||||
:100700006F60404000C0C0C07E04040400040404C4
|
||||
:100710000F08080000FC8080CE08080000FC8080E4
|
||||
:10072000F8FCFCFDFEFEFDFBFCF8F8F8F878789884
|
||||
:10073000F7FBFDFFFFFEFCFDE4C8C898B838F8F8E9
|
||||
:10074000F0F9F9FBF0C6FEFFFCF8F8F8F8F8783895
|
||||
:10075000FFFFF1CEFFFFFFFF8C9878783838B8B8EC
|
||||
:10076000FFFFFFFEFEFEFDFDFCF8F8F8F8F8F8F8D4
|
||||
:10077000FFFFFFFFFFFFDFEF7C38B8B8D8E0F8F8E5
|
||||
:1007800000404040004040C0000404040004040451
|
||||
:1007900000000F08080000FC0000CE08080000FC64
|
||||
:1007A000C4880000000000000000000000000000FD
|
||||
:1007B000C0800000000000000000000000000000F9
|
||||
:1007C000C0800000000000000000000000000000E9
|
||||
:1007D000C0800000000000000000000000000000D9
|
||||
:1007E000C0820000000000000000000000000000C7
|
||||
:1007F000C0840000000000000000000000000000B5
|
||||
:10080000FFFFEFCFFFFFFFEFFFFEFCF8FEFEFEFC59
|
||||
:1008100000FFFFEFCFFFFFFF00FFFEFCF8FEFEFE34
|
||||
:100820000000FFFFEFCFFFFF0000FFFEFCF8FEFE21
|
||||
:10083000FFFF8301393F3901FFFEC68292920038E3
|
||||
:10084000FFFF03013901033FFFFE8000383E3800FF
|
||||
:10085000FFFF830139393901FFFE381000002838C5
|
||||
:1008600000FEFCFCFC000F0FFEFCFCFC0000EFCFC8
|
||||
:10087000FEFCFCFC0000EFCFFEFCFCFC0000EFCF18
|
||||
:10088000CF80000000000000F80000000000000021
|
||||
:10089000EFCF800000000000FCF800000000000026
|
||||
:1008A000FFEFCF8000000000FEFCF8000000000019
|
||||
:1008B000830000000000000038000000000000007D
|
||||
:1008C0003F800000000000008200000000000000E7
|
||||
:1008D00083800000000000003800000000000000DD
|
||||
:1008E0000F0F000000000000CFCF0000000000004C
|
||||
:1008F000CFCF000000000000CFCF000000000000BC
|
||||
:1009000000FEFCFCFC0000EFFEFCFCFC00000FEF16
|
||||
:10091000FEFCFCFC0000E0CF00FEFCFCFC000FEF46
|
||||
:10092000FEFCFCFC0000EFCF00FEFCFCFC00E0C085
|
||||
:1009300060B0343262C6F40060B0346232B6640033
|
||||
:10094000103074B2B2FA1400000000000000000081
|
||||
:10095000FFFFFEEFDFB2E2E7F8F070B0D0602020DA
|
||||
:10096000FFFFFEEF5F32A2A7F8F070B0D06020204A
|
||||
:10097000E7E7E7EF5F32A2A7E8C810B0D060202019
|
||||
:10098000CFCF0F0800000000CFCFC0000000000054
|
||||
:10099000CFCF0F0000000000CFCFC000000000004C
|
||||
:1009A000CFCF000000000000C0C000000000000029
|
||||
:1009B000F08084E23236E400609084E2B2B66400F3
|
||||
:1009C000F0303462626664000000924949DB9200B4
|
||||
:1009D000DAEFF5FFFCFFFFFFD0B03070F0F0F0F081
|
||||
:1009E0001AEFC59F3CFFFFFFD0B01040E0F8F0F0D9
|
||||
:1009F0001AEFC59F38F3F3E7D0B050E0F8F0F0F00D
|
||||
:100A000000F8F1F1F3F28003F8F0F3F3F3800077EC
|
||||
:100A1000F8F0F2F2F08200F8F8F0F3F3F380007BE4
|
||||
:100A200000F8F3F3F3F08000F8F0C1D393A0007F57
|
||||
:100A3000F8F0F0F3F38300E8F8F0F3F3F3800063E9
|
||||
:100A4000F8F0F0F3F38300F000F8F0F3F3F3800034
|
||||
:100A5000F8F0F3F3F38000FCF8F0F3F3F38000FF19
|
||||
:100A6000F8F0F3F3F38000F700F8F3F3F3F080030A
|
||||
:100A7000F8F0F3F3F38000F8F8F0F0F3F28200F806
|
||||
:100A80007E7C40000000000067E78400000000005A
|
||||
:100A9000FFFF000000000000E70702000000000068
|
||||
:100AA000F0FC000000000000FFFF800000000000DC
|
||||
:100AB000CE9E0000000000006767480000000000B4
|
||||
:100AC000E6E60400000000007F7F20000000000038
|
||||
:100AD000FCFF0000000000007F3F4000000000001D
|
||||
:100AE000E7CF080000000000C7E708000000000092
|
||||
:100AF000F8FE000000000000FC7C40000000000048
|
||||
:100B0000EFCF9837EFEF97FFFFF16FEFF7FFE7DFDA
|
||||
:100B1000FAF7EFEFF7BF72EEDF9F9F31AF3F1F9FF6
|
||||
:100B2000FFFFC3BF7F7F7FBFFF7F7FFFF1EFEF6FCF
|
||||
:100B3000FE7C7C7CFCF1E5E4FFCFBFBFF9F7EF2F33
|
||||
:100B4000DFCECEA767E7C298F7E7EDCBCB8F27F3D1
|
||||
:100B5000FECDB57E7C7B7BFE3FFFFF9DCBCB8733FD
|
||||
:100B6000FFE3DFBFBFBFFFBFFF3A96CEE2E9D0EEA3
|
||||
:100B7000E56480CF1F32A227E8C810308040000013
|
||||
:100B8000FFE0000000000000DF180000000000008F
|
||||
:100B9000EE0C000000000000CF8800000000000004
|
||||
:100BA000DE00000000000000FF80000000000000E8
|
||||
:100BB000CF100000000000008F06000000000000C1
|
||||
:100BC0009C20000000000000F9410000000000002F
|
||||
:100BD000F100000000000000F30100000000000030
|
||||
:100BE0007F40000000000000EE0C0000000000004C
|
||||
:100BF0001AAF859F00D3C3C7D0B01040E038309003
|
||||
:100C00000000046DFD7F7F3F000000B7FCFCFDFF8E
|
||||
:100C10000000007CEFEFFFFF000040DAF7F7FFFF76
|
||||
:100C20000000103DF7F7F7FF000004ACDFDFFFFF27
|
||||
:100C3000000000313F7FFFFF00008093F3F7FFFFCC
|
||||
:100C4000000000297FFFFFFF0000008CDECEDEFCED
|
||||
:100C50007076FE8C030F3F001C1F7BE1C1B77F182D
|
||||
:100C6000030FDEBC33EFDF8C30F8FD831F6EFCE03A
|
||||
:100C700030F8FD831F6EFCE03873FFC3A07BFF1FBD
|
||||
:100C80001F03000000000000BF1C00000000000067
|
||||
:100C9000DF8F000000000000FDD800000000000011
|
||||
:100CA000FD78000000000000FFF6000000000000DA
|
||||
:100CB000EFC7000000000000FFCE000000000000B1
|
||||
:100CC000EFC7000000000000F080000000000000FE
|
||||
:100CD00070C00000000000000800000000000000DC
|
||||
:100CE000000000000000000068200000000000007C
|
||||
:100CF0008000000000000000000000000000000074
|
||||
:100D0000387CFDC337FEFCC821F7FFDC08E17B3FE0
|
||||
:100D1000C6EDEB0F3EFCF0C00CDFEFF0381F0F0705
|
||||
:100D200001C3EFDE39F3E3C0C6CFBF79A6C78301A5
|
||||
:100D300066EFBF990081F3FF0C9EF1E04099FEF44D
|
||||
:100D400000FC82827E000A09F296966E00CFA868A7
|
||||
:100D5000E4AAAA4E00C02D29FC82827E000FE8285A
|
||||
:100D600000FC82827E802F28BC22D26E000FC82811
|
||||
:100D7000FC82827E00CF282A00FC82827E00A8A806
|
||||
:100D800000000000000000001E0400000000000041
|
||||
:100D90000000000000000000000000000000000053
|
||||
:100DA0000000000000000000000000000000000043
|
||||
:100DB0002E0C000000000000600000000000000099
|
||||
:100DC00007000000000000002700000000000000F5
|
||||
:100DD000EA06000000000000A7600000000000001C
|
||||
:100DE000E80700000000000027E00000000000000D
|
||||
:100DF000E400000000000000E70000000000000028
|
||||
:100E000000FC82827E802C2800FC82827E00886822
|
||||
:100E1000F892AE6600CF2828FC82827E004F688858
|
||||
:100E2000F884887200C02D2DFC82827E000FC828B5
|
||||
:100E3000FC82827E00CE2A2D00FC82827E00A020D1
|
||||
:100E400000002008440823E60000000002080178A2
|
||||
:100E500000004080508CE30000001000480083D860
|
||||
:100E6000000000008430FFE60002000400E11B786F
|
||||
:100E70000000000210848001000000008078C0E0C3
|
||||
:100E8000E9070000000000006720000000000000EB
|
||||
:100E9000E7000000000000008700000000000000E4
|
||||
:100EA0000100000000000000E00000000000000061
|
||||
:100EB000E400000000000000E0000000000000006E
|
||||
:100EC00000001C006007C00000C7000007C00070E1
|
||||
:100ED000183F00C60063001F0600023800E007004C
|
||||
:100EE00000001C006007C00000C7000007C00070C1
|
||||
:100EF000F0800F00780007E083720003D00E00003E
|
||||
:100F0000000020000844847800000802400000E34C
|
||||
:100F1000000004200002C70000000002000083005F
|
||||
:100F20000000000002000D11000000004080B088A9
|
||||
:100F30007FFFE04020100807EFD51A08081836EDAB
|
||||
:100F4000871F3860C0804046DEE9331610303266B5
|
||||
:100F50007C695336040C082478F28E0607010337A7
|
||||
:100F60000F3F706060604038F8FE62070F0B066E3E
|
||||
:100F70001C3C73636343263EFE6658003C7A614323
|
||||
:100F800000AC000C61003F00003C0007D0001C00DA
|
||||
:100F90007800E3005E00C0079E00F900300600857F
|
||||
:100FA0001F3931111F1F0F00F89C8C88F8F8F000D2
|
||||
:100FB0001330000000000000C70300000000000024
|
||||
:100FC0003F8F400000000000CD8B000000000000BB
|
||||
:100FD0006259000000000000FEF800000000000060
|
||||
:100FE0001F03000000000000FCF0000000000000F3
|
||||
:100FF0001C000000000000002E1C0000000000008B
|
||||
:101000000F3F3F7F7F7F7F3CC7E6C0C0C0C68F8F4A
|
||||
:101010000F3F7F787001073F868F1E1C10C0F0F8CD
|
||||
:101020001F3F7F7F7F7F7F3E84E6CF8E8E8E0C1C9E
|
||||
:10103000060E06060606060000000000000000403E
|
||||
:1010400000000000000103070000000000C0E0E015
|
||||
:1010500003033F3E3F3F3F3E8080FFFFFFFFFFFF18
|
||||
:101060000303FFFEFFFFFFFE8080FCFCFCFCFCFC9A
|
||||
:1010700003033F3E3F3F3F3E8080FFFFFFFFFFFFF8
|
||||
:1010800000000000000000000E1C00000000000036
|
||||
:101090007F38000000000000240000000000000075
|
||||
:1010A0000000000000000000180000000000000028
|
||||
:1010B000040E040021732100E0400018108000009D
|
||||
:1010C0000F1F1F3F3E786000E0C08000000000005E
|
||||
:1010D0003F3F3F3E3F000103FFFFFFFFFF00008057
|
||||
:1010E000FFFFFFFEFF000103FCFCFCFCFC00008096
|
||||
:1010F0003F3F3F3E3F000103FFFFFFFFFF00008037
|
||||
:101100000303FFFEFFFFFFFE8080FCFCFCFCFCFCF9
|
||||
:1011100000000000000000000000000000000000CF
|
||||
:1011200000000000000000000000000000000000BF
|
||||
:1011300000000000000000000000000000000000AF
|
||||
:10114000003C7EFFFFFFFDE6003C7EFFFFFBFBDB7C
|
||||
:10115000000000000000000000000000000000008F
|
||||
:10116000000000000000010300000000000080C03B
|
||||
:10117000000000000000000000000000000000600F
|
||||
:10118000FFFFFFFEFF000103FCFCFCFCFC000080F5
|
||||
:10119000000000000000000000000000000000004F
|
||||
:1011A000000000000000000000000000000000003F
|
||||
:1011B000000000000000000000000000000000002F
|
||||
:1011C000EEEEEEBCC1FFFFFFFBFBFBFE80FFFFFF6F
|
||||
:1011D000000101000C101000C080000000000000A1
|
||||
:1011E0000307070F1E182000E0E0C0800000000089
|
||||
:1011F000060F0F06317B7B31F000000080C0C080FD
|
||||
:1012000000000103030311380000008080808884FF
|
||||
:10121000000000000001040C00000000000000605D
|
||||
:101220000C1C2C2C3E0C0C000C12101C16160C0066
|
||||
:101230001838191A1A1B190000008C5252DE8C0043
|
||||
:10124000C184800E1FF2A2A5C08010208040000043
|
||||
:101250000030020E1F3222250000E04080481000BE
|
||||
:10126000C300003E1FB0A2A0E7000000000038103D
|
||||
:10127000C300000E08A0A080E7000000000C0000E2
|
||||
:101280002C0707060E0C08000000A010000000004C
|
||||
:101290000913030604040000C080000000000000E1
|
||||
:1012A0000C1606060C181E000C16160C16160C0052
|
||||
:1012B00000003048487830000C16060C06160C006A
|
||||
:1012C000188E801700C3828400000040A0102010F8
|
||||
:1012D000180E005700008384000000000000E0109A
|
||||
:1012E000100E8007080803C4081001000040E01039
|
||||
:1012F0001008C004001013C4000001000000C0600A
|
||||
:10130000000000000000000500000000000080D088
|
||||
:101310000000000000010C1F000000000040903899
|
||||
:10132000000000000000000100000000000000803C
|
||||
:10133000000000000000010300000000000040E089
|
||||
:10134000000000000000030F000000000000E0F8B3
|
||||
:101350001C10101C06061C001E06060C0C0C0C00B3
|
||||
:101360000C16160E06061C0000000000000000000F
|
||||
:101370000000000000001821000000000000201004
|
||||
:101380000707070304020000F0F0F0E01820000057
|
||||
:101390003F3F3F1F0F030000FCFCFCF8F0C00000C3
|
||||
:1013A0000306070D0F0E070000E0C068F0D0E00054
|
||||
:1013B000070F0F0F07030300E0F0F0F0E0C000009C
|
||||
:1013C0001F0F010101020000FCFCF8F0000000000A
|
||||
:1013D000000000000000000000000000000000000D
|
||||
:1013E00000000C1E1E0C0000000000307878300059
|
||||
:1013F0002222120201000000101000000000000074
|
||||
:1014000000000000000000000000000000000000DC
|
||||
:1014100000000000000000000000000000000000CC
|
||||
:1014200000000000000000000000000000000000BC
|
||||
:1014300000000000000000000000000000000000AC
|
||||
:10144000000000000000000000000000000000009C
|
||||
:10145000000000000000000000000000000000008C
|
||||
:10146000000000000000000000000000000000007C
|
||||
:10147000000000000000000000000000000000006C
|
||||
:1014800060B0B462B2B664000000924949DB9200D9
|
||||
:10149000000000000000000000000000000000004C
|
||||
:1014A000000000000000000000000000000000003C
|
||||
:1014B000000000000000000000000000000000002C
|
||||
:1014C000000000000000000000000000000000001C
|
||||
:1014D000000000000000000000000000000000000C
|
||||
:1014E00000000000000000000000000000000000FC
|
||||
:1014F00000000000000000000000000000000000EC
|
||||
:101500000000EEDCDC80000F00EEF4F48000AB8D18
|
||||
:1015100000EEDCDC8000EDCD00CEECDC8000EFC71F
|
||||
:1015200000DEECF48000E0CB00FAF8F480000EEF6F
|
||||
:1015300000F6ECEC8000E0C60000DEECF800018F65
|
||||
:101540000000F6ECFC80014D00F6ECEC8000EBCDE9
|
||||
:1015500000005C78B480008B00F6D4E480000DAF0E
|
||||
:1015600000DCDCBC8000AE8F0000EEECDC8000C054
|
||||
:10157000000000000000010300000000000080C027
|
||||
:101580000F08000000000000CF080000000000006D
|
||||
:10159000CF08000000000000CF080000000000009D
|
||||
:1015A000CF0F080000000000CFC8000000000000BE
|
||||
:1015B000CF0F080000000000CFC8000000000000AE
|
||||
:1015C000CF08000000000000CF080000000000006D
|
||||
:1015D000CF0F080000000000CFC80000000000008E
|
||||
:1015E000CF08000000000000C00000000000000064
|
||||
:1015F0000307070F1E182000E0E0C0800000000075
|
||||
:10160000800000000000000000000000000000005A
|
||||
:10161000E0C0C0000000000000000000000000006A
|
||||
:10162000F8F0F00000800000000000000000000062
|
||||
:10163000FEFCFC8000E0C0C00000000000000000D4
|
||||
:10164000BF3F3F2000F8F0F08000000000000000E5
|
||||
:10165000EFCFCF0800FEFCFCE0C0C000000000009F
|
||||
:10166000FBF3F30200BF3F3FF8F0F0000080000002
|
||||
:10167000FEFCFC8000EFCFCFFEFCFC8000E0C0C091
|
||||
:10168000000000000000000000000000000000005A
|
||||
:10169000000000000000000000000000000000004A
|
||||
:1016A000000000000000000000000000000000003A
|
||||
:1016B000000000000000000000000000000000002A
|
||||
:1016C000000000000000000000000000000000001A
|
||||
:1016D000800000000000000000000000000000008A
|
||||
:1016E00020000000000000000000000000000000DA
|
||||
:1016F00000000000000000000000000000000000EA
|
||||
:10170000EFC78000E0C80080FBF330100018101015
|
||||
:10171000EFC78000E0C8C0C0FFFF381000181000FD
|
||||
:10172000ECC48000E0C880807FFF381000181000F3
|
||||
:10173000EDC48000E0C8C0C6FEFC381000181000E0
|
||||
:10174000EFC78000E0C8C0C0FFFF3810001810F2DB
|
||||
:10175000EFC48000E0C8C0C07FFF38100018100040
|
||||
:10176000F3F4F4F0F0F0F0F0804E111000000000FF
|
||||
:1017700000738C8400000000008E511000000000F7
|
||||
:10178000EE8404C00000000000FEFCFC80000000AD
|
||||
:10179000C0860484C0000000FCF8F2840000000051
|
||||
:1017A0006E8404C000000000FEFCFC00000000008D
|
||||
:1017B000C4840000000000009E9CBC4000000000AB
|
||||
:1017C000CE8404C000000000309C880000000000AF
|
||||
:1017D000CE8404C000000000DE9CCC880000000025
|
||||
:1017E000F0F070200000000001728A80000000000C
|
||||
:1017F000DE3E1E1E1E1E1E1E1E1E0E0400000000CB
|
||||
:101800000000000000000201000000000000F0B82D
|
||||
:10181000070F1F1F1F07000000000000000000FC52
|
||||
:10182000000000000000070F000000000000F8FCAE
|
||||
:101830000000000000000F1F000000000000E0F0AA
|
||||
:10184000D8F8F890800000000000000000000C1F95
|
||||
:1018500000000000C080E0F8000000000000003F31
|
||||
:1018600000000000000000C0000000000000007F39
|
||||
:101870000000000000000001000000000000000067
|
||||
:10188000000000000000000100000000000101FF56
|
||||
:10189000071F3F7FFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:1018A0000FCFEFFFFFFFFFFDFCFEFEFEFFFFFFFF80
|
||||
:1018B0001F1F1F1F1F1F9F9FF0F0F0F0F0F0F0F7A9
|
||||
:1018C00000000103070F0FFF1F7FFFFFFFFFFFFF58
|
||||
:1018D000F0FCFEFFFFFFFFFF7F7F7F7FFFFFFFEF3B
|
||||
:1018E000E0E0E0F0F0F0F8F8FFFFFFFFFFFFFFFFA0
|
||||
:1018F00080808080808080801F1F1F1F0F07000056
|
||||
:10190000070F1F3F7F7FFFFFFFFFFFFFFFFFFFFF6F
|
||||
:101910007F7F7F7F7C7C7878FFFFFF0703010000DB
|
||||
:10192000FEFEFFFFFFFFFFFFFFFF7F7F3FBFBFBF49
|
||||
:10193000DFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFF17
|
||||
:10194000FDFDFDFDFDFDFDFDFFFFFFFCF0E0E0C046
|
||||
:10195000FFFFFF3F1F0F0707EFF7F7FBFBFBFDFD47
|
||||
:10196000F8FCFCFEFEFEFFFFFFFFFFFFFFFFFFFF97
|
||||
:101970008080808080808080F8F8F8F8F0E00000B7
|
||||
:10198000FFFFFFFFFFFF7F7FC09F9FDFFFFFFFFF86
|
||||
:1019900070F0F0F0F0F0F8F8000000000000000037
|
||||
:1019A0007F7F7F7F7F7F7FFFBFBFBFBFBFBFBBBBCF
|
||||
:1019B000FFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFF38
|
||||
:1019C000017F7FFFFFFFFFFFC080808080C0C0409D
|
||||
:1019D0000303030303030307FDFDFDFDFDFDFDFD03
|
||||
:1019E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
|
||||
:1019F00080808080808080800000000000000001E6
|
||||
:101A00003F3F1F0F0301060FFFFFFFFFFFFF7F0F89
|
||||
:101A1000FCFCF7FBFDFDFEFE000107FFFFFFFFFFE3
|
||||
:101A2000FFFFFFFFFFFEFEFDBBB9397878F8F8F83D
|
||||
:101A3000FFFFFFFFFF7F7F7FFFFFFFFFF7F3F8FC54
|
||||
:101A4000FFFFFFFFFFFFFF7FE0E0F0BCDFDFEFEF16
|
||||
:101A5000070F1F7FFFFFFFFFFDFDFDFBFBFBF7EF08
|
||||
:101A6000DFDFDFDFCFCFC7C7FFFFFFFFFFFFFFFFD6
|
||||
:101A7000808080808080808003010C1E0C102040BC
|
||||
:101A80000F1F1F3F3F3F7FFFC7FFFFFFFFFFFFFF0E
|
||||
:101A9000FEFEFEFEFEFEFEFCFFFFFFFFFFFFFC0062
|
||||
:101AA000FFFFFFE7C0800000F8F8F8F0000000003A
|
||||
:101AB0003F3F1F1F03070703FEFFFFFFFFFFFFFF5F
|
||||
:101AC0003FFFFFFFFFFFFFFFEFEFEFEFEFEFEFE075
|
||||
:101AD000FFFFFFFFFFFCF000EFEFFFFF7F000000C4
|
||||
:101AE000C7C3C3C181000000FFFFFFFFFF0000006C
|
||||
:101AF0008080808000000000000000043878308082
|
||||
:101B0000FF7F3F0F07010000FFFFFFFFFFFE000008
|
||||
:101B1000FEFCF0E08000000000000000000000007B
|
||||
:101B200000000000000000000000000000000000B5
|
||||
:101B30000301000000000000FFFFFF3F1F0700003F
|
||||
:101B4000FFFFFFFFFEF80000C0C0800000000000A3
|
||||
:101B50000000000000000000000000000000000085
|
||||
:101B60000000000000000000000000000000000075
|
||||
:101B70000000000000000000C08000000000000025
|
||||
:101B80000000000000000000000000000000000055
|
||||
:101B90000000000000000000030100060E0E00001F
|
||||
:101BA000F8F8F870000000000000000000000003DA
|
||||
:101BB000000000000000E0F0000000000000000055
|
||||
:101BC0000000000000000000000000000000000015
|
||||
:101BD0000000000000001C0F00000000000038F0B2
|
||||
:101BE0000F1D1D3C38381F00F0B8B83C1C1CF80015
|
||||
:101BF0000C1E1F1F1F1F00004080E080800000009F
|
||||
:101C00000F3F7F7FBF1C433000000000008080C07A
|
||||
:101C100000000000000101010000000000010201BD
|
||||
:101C20000F18170500A64303A08000A00210D9F0EA
|
||||
:101C30000000000000000040E8F37DBFBF7BFD18FE
|
||||
:101C4000031FFFFEFFEF4E88E8F5FFFF777BF2658D
|
||||
:101C50002FBFFDFBF9F93C02E4FEFFFBFBFB6488B0
|
||||
:101C60000B9FFFEFDFDF5F2F4091E3FFF7F7E8C83F
|
||||
:101C700000A5CFFFEEEAD13EE8F1FF7FFDFD7A023D
|
||||
:101C80000F00000000000000C0C0E0E0E0E0E0C0A5
|
||||
:101C900003030B19193D3C180806040D01C0E08030
|
||||
:101CA000AA00FFFEFD1E03E18800FEFC7EE0800727
|
||||
:101CB00000802000000212A203FC000000000000CF
|
||||
:101CC000F80F0300000000001FFCF00000000000FF
|
||||
:101CD000C33C0000000000001F00000000000000E6
|
||||
:101CE000C0300F000000000017F8C0000000000026
|
||||
:101CF000C100000000000000877C00000000000020
|
||||
:101D000013CFF7F7EFCB107D0000000000000000BC
|
||||
:101D10000000031D788040C08740406061E3E3E33A
|
||||
:101D2000F3E30105FDF3EBF31E1F00101F0F1787F0
|
||||
:101D300000000004C6C6C6C6000000400010714284
|
||||
:101D40000000000000000000C8F1FFFFDD3DF902C7
|
||||
:101D500004AFFFFFFFDF3E6F4094FABDDDDAEA0C0F
|
||||
:101D60000000010204081304071B9D6E9311E00795
|
||||
:101D7000CC803346C9890CE30000C0E0B0180CECFD
|
||||
:101D8000C3000000000000000206061C1E16161408
|
||||
:101D9000C8CC88C8CC89C9C3E3E3430381C0C0C8A9
|
||||
:101DA000FCFEF9EFF3F87F1F0F7F1FE7EF1FFEFC2C
|
||||
:101DB000C6C6C4C4C0010D0D450B13274E1C38F018
|
||||
:101DC00080E0C0001030648C1FF8000000000000AC
|
||||
:101DD000C0310F000000000018E00000000000000B
|
||||
:101DE00029294658A499A59918215BABB3023D7BDC
|
||||
:101DF0001884DAD5CD409CDE1696631B2599A599EB
|
||||
:101E0000000000000000000010000F0F0F2F27033C
|
||||
:101E10000101C78FBF3E7E7C93C5C68602433371E6
|
||||
:101E200003C06070383C1E8FE0C000000830F0F83E
|
||||
:101E3000080808181133236418000173FBF3F260DB
|
||||
:101E40001C1E8FEFF5C000F800000000000000002D
|
||||
:101E5000003C7EFFFFFDE68E003C7EFFFFFDE68E30
|
||||
:101E60009DA599A55A4629297B3D0233AB9B41305C
|
||||
:101E70009E3C40CDD5DA841891A599251B734A164E
|
||||
:101E80000000000000030F07232020204040C0C0B6
|
||||
:101E9000B00000000100000171F170C0E0D84C36C4
|
||||
:101EA000878380CCE672381FF0C001D9B3A61CF836
|
||||
:101EB00063C7C78200000000010188CC8844CCCCF5
|
||||
:101EC000F8C000C08040C0C00000000080E0F0F812
|
||||
:101ED000FCF1E7FE80FFFFFFFDE6FEBCC1FFFFFF58
|
||||
:101EE00015110904030000000F402AD515CA300F50
|
||||
:101EF000E30454ABA8530FFCEC0C9830E0C0000096
|
||||
:101F0000262C58F2F4642C0C81830604090A101064
|
||||
:101F100010214381000C1C3809060301C0E0703811
|
||||
:101F2000038060B0D86C361BE00103060D1B33E65E
|
||||
:101F300040A060C2858B160C8C08000000010002D6
|
||||
:101F4000000000010180C86438180EC7E0F0FC7C76
|
||||
:101F5000003C7EFFFFFEFEF6003C7EFFFFFEE1FD43
|
||||
:101F6000003C7EFFFFFDE6EE003C7EFFFFFDE6EE5F
|
||||
:101F7000003C7EFFFFFDE6E8003C7EFFFFFE86FCA6
|
||||
:101F80000C0C0501000000001012090404100000F0
|
||||
:101F900079516323030E1C009CCEE7030000000070
|
||||
:101FA0000C0781E0F83F03008C38E10003FFFC00E0
|
||||
:101FB00059F363C6800000001A3ABABA320202002E
|
||||
:101FC000AAB1B0900000000098C00000000000001E
|
||||
:101FD000EEFE86FEF8FFFFFFE6CEFEBCC1FFFFFF70
|
||||
:101FE000FCE6EEBCC1FFFFFFBEC6FCF9C3FFFFFF6E
|
||||
:101FF000FDE6EEBCC1FFFFFFFBF3F7F7C7FFFFFFF6
|
||||
:00000001FF
|
||||
@@ -1,315 +0,0 @@
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.std_logic_unsigned.all;
|
||||
use ieee.numeric_std.all;
|
||||
library work;
|
||||
|
||||
--SOUND CPU:
|
||||
--0000-07ff RAM
|
||||
--e000-ffff ROM
|
||||
--read:
|
||||
--a000 command from the main CPU
|
||||
--write:
|
||||
--2000 8910 #1 control
|
||||
--2001 8910 #1 write
|
||||
--4000 8910 #2 control
|
||||
--4001 8910 #2 write
|
||||
|
||||
--WRITE_HANDLER( sonson_sh_irqtrigger_w )
|
||||
--{
|
||||
-- static int last;
|
||||
-- if (last == 0 && data == 1)
|
||||
-- {
|
||||
-- setting bit 0 low then high triggers IRQ on the sound CPU
|
||||
-- cpu_cause_interrupt(1,M6809_INT_FIRQ);
|
||||
-- }
|
||||
--- last = data;
|
||||
--}
|
||||
|
||||
--void sonson_state::sound_map(address_map &map)
|
||||
--{
|
||||
-- map(0x0000, 0x07ff).ram();
|
||||
-- map(0x2000, 0x2001).w("ay1", FUNC(ay8910_device::address_data_w));
|
||||
-- map(0x4000, 0x4001).w("ay2", FUNC(ay8910_device::address_data_w));
|
||||
-- map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
|
||||
-- map(0xe000, 0xffff).rom();
|
||||
--}
|
||||
|
||||
/* basic machine hardware */
|
||||
-- {
|
||||
-- {
|
||||
-- CPU_M6809,
|
||||
-- 2000000, /* 2 Mhz (?) */
|
||||
-- readmem,writemem,0,0,
|
||||
-- interrupt,1
|
||||
-- },
|
||||
-- {
|
||||
-- CPU_M6809 | CPU_AUDIO_CPU,
|
||||
-- 2000000, /* 2 Mhz (?) */
|
||||
-- sound_readmem,sound_writemem,0,0,
|
||||
-- interrupt,4 /* FIRQs are triggered by the main CPU */
|
||||
-- },
|
||||
-- },
|
||||
|
||||
|
||||
entity sonson_soundboard is
|
||||
port(
|
||||
clk_2 : in std_logic;
|
||||
clk_1p5 : in std_logic;
|
||||
sound_rd : in std_logic;--a000 command from the main CPU
|
||||
areset : in std_logic;
|
||||
sound_data : in std_logic_vector(7 downto 0);
|
||||
audio_out : out std_logic_vector(11 downto 0)
|
||||
);
|
||||
|
||||
end sonson_soundboard;
|
||||
|
||||
architecture SYN of sonson_soundboard is
|
||||
|
||||
component YM2149
|
||||
port (
|
||||
CLK : in std_logic;
|
||||
CE : in std_logic;
|
||||
RESET : in std_logic;
|
||||
A8 : in std_logic := '1';
|
||||
A9_L : in std_logic := '0';
|
||||
BDIR : in std_logic; -- Bus Direction (0 - read , 1 - write)
|
||||
BC : in std_logic; -- Bus control
|
||||
DI : in std_logic_vector(7 downto 0);
|
||||
DO : out std_logic_vector(7 downto 0);
|
||||
CHANNEL_A : out std_logic_vector(7 downto 0);
|
||||
CHANNEL_B : out std_logic_vector(7 downto 0);
|
||||
CHANNEL_C : out std_logic_vector(7 downto 0);
|
||||
|
||||
SEL : in std_logic;
|
||||
MODE : in std_logic;
|
||||
|
||||
ACTIVE : out std_logic_vector(5 downto 0);
|
||||
|
||||
IOA_in : in std_logic_vector(7 downto 0);
|
||||
IOA_out : out std_logic_vector(7 downto 0);
|
||||
|
||||
IOB_in : in std_logic_vector(7 downto 0);
|
||||
IOB_out : out std_logic_vector(7 downto 0)
|
||||
);
|
||||
end component;
|
||||
|
||||
COMPONENT mc6809i
|
||||
GENERIC ( ILLEGAL_INSTRUCTIONS : STRING := "GHOST" );
|
||||
PORT
|
||||
(
|
||||
D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
DOut : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
|
||||
ADDR : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
|
||||
RnW : OUT STD_LOGIC;
|
||||
E : IN STD_LOGIC;
|
||||
Q : IN STD_LOGIC;
|
||||
BS : OUT STD_LOGIC;
|
||||
BA : OUT STD_LOGIC;
|
||||
nIRQ : IN STD_LOGIC;
|
||||
nFIRQ : IN STD_LOGIC;
|
||||
nNMI : IN STD_LOGIC;
|
||||
AVMA : OUT STD_LOGIC;
|
||||
BUSY : OUT STD_LOGIC;
|
||||
LIC : OUT STD_LOGIC;
|
||||
nHALT : IN STD_LOGIC;
|
||||
nRESET : IN STD_LOGIC;
|
||||
nDMABREQ : IN STD_LOGIC;
|
||||
RegData : OUT STD_LOGIC_VECTOR(111 DOWNTO 0)
|
||||
);
|
||||
END COMPONENT;
|
||||
|
||||
signal reset : std_logic := '1';
|
||||
signal reset_cnt : integer range 0 to 1000000 := 1000000;
|
||||
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_rw : std_logic;
|
||||
signal cpu_irq : std_logic;
|
||||
signal cpu_nmi : std_logic;
|
||||
|
||||
|
||||
|
||||
signal clk_2M_en : std_logic;
|
||||
signal cpu_clk_en : std_logic;
|
||||
signal cpu_reset : std_logic;
|
||||
|
||||
|
||||
signal wram_cs : std_logic;
|
||||
signal wram_we : std_logic;
|
||||
signal wram_do : std_logic_vector( 7 downto 0);
|
||||
|
||||
signal rom_cs : std_logic;
|
||||
signal rom_do : std_logic_vector( 7 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 ay1_do : std_logic_vector(7 downto 0);
|
||||
signal ay1_audio : std_logic_vector(9 downto 0);
|
||||
signal ay1_port_b_do : 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 ay2_do : std_logic_vector(7 downto 0);
|
||||
signal ay2_audio : std_logic_vector(9 downto 0);
|
||||
|
||||
signal ay1_control : std_logic;
|
||||
signal ay1_write : std_logic;
|
||||
signal ay2_control : std_logic;
|
||||
signal ay2_write : std_logic;
|
||||
|
||||
signal ports_cs : std_logic;
|
||||
signal ports_we : std_logic;
|
||||
|
||||
signal port1_bus : std_logic_vector(7 downto 0);
|
||||
signal port1_data : std_logic_vector(7 downto 0);
|
||||
signal port1_ddr : std_logic_vector(7 downto 0);
|
||||
signal port1_in : std_logic_vector(7 downto 0);
|
||||
|
||||
signal port2_bus : std_logic_vector(7 downto 0);
|
||||
signal port2_data : std_logic_vector(7 downto 0);
|
||||
signal port2_ddr : std_logic_vector(7 downto 0);
|
||||
signal port2_in : std_logic_vector(7 downto 0);
|
||||
|
||||
|
||||
begin
|
||||
|
||||
-- cs
|
||||
wram_cs <= '1' when cpu_addr(15 downto 12) = "0000" else '0'; --0000-07ff RAM 0000 1000 0000 0000
|
||||
rom_cs <= '1' when cpu_addr(15 downto 13) = "111" else '0'; --e000-ffff ROM 1110 0000 00000000
|
||||
ay1_control <= '1' when cpu_addr(13 downto 0) = X"2000" else '0'; --2000 8910 #1 control 0010 0000 0000 0000
|
||||
ay1_write <= '1' when cpu_addr(13 downto 0) = X"2001" else '0'; --2001 8910 #1 write 0010 0000 0000 0001
|
||||
ay2_control <= '1' when cpu_addr(14 downto 0) = X"4000" else '0'; --4000 8910 #2 control 0100 0000 0000 0000
|
||||
ay2_write <= '1' when cpu_addr(14 downto 0) = X"4001" else '0'; --4001 8910 #2 write 0100 0000 0000 0001
|
||||
|
||||
--ports_cs <= '1' when cpu_addr(15 downto 4) = X"000" else '0'; -- 0000-000F
|
||||
--adpcm_cs <= '1' when cpu_addr(14 downto 11) = "0001" else '0'; -- 0800-0FFF / 8800-8FFF
|
||||
--irqraz_cs <= '1' when cpu_addr(14 downto 12) = "001" else '0'; -- 1000-1FFF / 9000-9FFF
|
||||
|
||||
|
||||
-- write enables
|
||||
wram_we <= '1' when cpu_rw = '0' and wram_cs = '1' else '0';
|
||||
|
||||
|
||||
|
||||
--ports_we <= '1' when cpu_rw = '0' and ports_cs = '1' else '0';
|
||||
--adpcm_we <= '1' when cpu_rw = '0' and adpcm_cs = '1' else '0';
|
||||
--irqraz_we <= '1' when cpu_rw = '0' and irqraz_cs = '1' else '0';
|
||||
|
||||
-- mux cpu in data between roms/io/wram
|
||||
cpu_di <= wram_do when wram_cs = '1' else
|
||||
sound_data when sound_rd = '1' else
|
||||
-- port1_ddr when ports_cs = '1' and cpu_addr(3 downto 0) = X"0" else
|
||||
-- port2_ddr when ports_cs = '1' and cpu_addr(3 downto 0) = X"1" else
|
||||
-- port1_in when ports_cs = '1' and cpu_addr(3 downto 0) = X"2" else
|
||||
-- port2_in when ports_cs = '1' and cpu_addr(3 downto 0) = X"3" else
|
||||
rom_do when rom_cs = '1' else X"FF";
|
||||
|
||||
|
||||
|
||||
|
||||
cpu_inst : mc6809i
|
||||
port map
|
||||
(
|
||||
D => cpu_di,
|
||||
DOut => cpu_do,
|
||||
ADDR => cpu_addr,
|
||||
RnW => cpu_rw,
|
||||
E => '1',
|
||||
Q => clk_2,
|
||||
BS => open,
|
||||
BA => open,
|
||||
nIRQ => not cpu_irq,
|
||||
nFIRQ => '1',
|
||||
nNMI => '1',
|
||||
AVMA => open,
|
||||
BUSY => open,
|
||||
LIC => open,
|
||||
nHALT => '1',
|
||||
nRESET => not cpu_reset,
|
||||
nDMABREQ => '1',
|
||||
RegData => open
|
||||
);
|
||||
|
||||
|
||||
cpu_prog_rom : entity work.sound_rom
|
||||
port map(
|
||||
clk => clk_2,
|
||||
addr => cpu_addr(12 downto 0),
|
||||
data => rom_do
|
||||
);
|
||||
|
||||
cpu_ram : entity work.spram
|
||||
generic map( widthad_a => 11)
|
||||
port map(
|
||||
clock => clk_2,
|
||||
wren => wram_we,
|
||||
address => cpu_addr(11 downto 0),
|
||||
data => cpu_do,
|
||||
q => wram_do
|
||||
);
|
||||
|
||||
ay83910_inst1: YM2149
|
||||
port map (
|
||||
CLK => clk_1p5,
|
||||
CE => '1',
|
||||
RESET => reset,
|
||||
A8 => '1',
|
||||
A9_L => port2_data(4),
|
||||
BDIR => port2_data(0),
|
||||
BC => port2_data(2),
|
||||
DI => port1_data,
|
||||
DO => ay1_do,
|
||||
CHANNEL_A => ay1_chan_a,
|
||||
CHANNEL_B => ay1_chan_b,
|
||||
CHANNEL_C => ay1_chan_c,
|
||||
|
||||
SEL => '0',
|
||||
MODE => '1',
|
||||
|
||||
ACTIVE => open,
|
||||
|
||||
IOA_in => (others => '0'),--select_sound_r,
|
||||
IOA_out => open,
|
||||
|
||||
IOB_in => (others => '0'),
|
||||
IOB_out => ay1_port_b_do
|
||||
);
|
||||
|
||||
ay1_audio <= "0000000000" + ay1_chan_a + ay1_chan_b + ay1_chan_c;
|
||||
|
||||
ay83910_inst2: YM2149
|
||||
port map (
|
||||
CLK => clk_1p5,
|
||||
CE => '1',
|
||||
RESET => reset,
|
||||
A8 => '1',
|
||||
A9_L => port2_data(3),
|
||||
BDIR => port2_data(0),
|
||||
BC => port2_data(2),
|
||||
DI => port1_data,
|
||||
DO => ay2_do,
|
||||
CHANNEL_A => ay2_chan_a,
|
||||
CHANNEL_B => ay2_chan_b,
|
||||
CHANNEL_C => ay2_chan_c,
|
||||
|
||||
SEL => '0',
|
||||
MODE => '1',
|
||||
|
||||
ACTIVE => open,
|
||||
|
||||
IOA_in => (others => '0'),
|
||||
IOA_out => open,
|
||||
|
||||
IOB_in => (others => '0'),
|
||||
IOB_out => open
|
||||
);
|
||||
|
||||
ay2_audio <= "0000000000" + ay2_chan_a + ay2_chan_b + ay2_chan_c;
|
||||
|
||||
|
||||
|
||||
|
||||
end SYN;
|
||||
@@ -1,107 +0,0 @@
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.std_logic_unsigned.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
library work;
|
||||
use work.pace_pkg.all;
|
||||
use work.video_controller_pkg.all;
|
||||
use work.platform_pkg.all;
|
||||
|
||||
entity target_top is
|
||||
port(
|
||||
vma : out std_logic;
|
||||
clk_sys : in std_logic;
|
||||
clk_vid : in std_logic;
|
||||
reset_in : in std_logic;
|
||||
snd_l : out std_logic_vector(7 downto 0);
|
||||
snd_r : out std_logic_vector(7 downto 0);
|
||||
vid_hs : out std_logic;
|
||||
vid_vs : out std_logic;
|
||||
vid_hb : out std_logic;
|
||||
vid_vb : out std_logic;
|
||||
vid_r : out std_logic_vector(3 downto 0);
|
||||
vid_g : out std_logic_vector(3 downto 0);
|
||||
vid_b : out std_logic_vector(3 downto 0);
|
||||
inputs_p1 : in std_logic_vector(7 downto 0);
|
||||
inputs_p2 : in std_logic_vector(7 downto 0);
|
||||
inputs_sys : in std_logic_vector(7 downto 0);
|
||||
inputs_dip1 : in std_logic_vector(7 downto 0);
|
||||
inputs_dip2 : in std_logic_vector(7 downto 0);
|
||||
cpu_rom_addr : out std_logic_vector(15 downto 0);
|
||||
cpu_rom_do : in std_logic_vector(7 downto 0);
|
||||
tile_rom_addr : out std_logic_vector(12 downto 0);
|
||||
tile_rom_do : in std_logic_vector(15 downto 0)
|
||||
);
|
||||
|
||||
end target_top;
|
||||
|
||||
architecture SYN of target_top is
|
||||
|
||||
signal clkrst_i : from_CLKRST_t;
|
||||
signal video_i : from_VIDEO_t;
|
||||
signal video_o : to_VIDEO_t;
|
||||
signal audio_i : from_AUDIO_t;
|
||||
signal audio_o : to_AUDIO_t;
|
||||
signal platform_i : from_PLATFORM_IO_t;
|
||||
signal platform_o : to_PLATFORM_IO_t;
|
||||
|
||||
|
||||
begin
|
||||
|
||||
clkrst_i.clk(0) <=clk_sys;
|
||||
clkrst_i.clk(1) <= clk_vid;
|
||||
clkrst_i.arst <= reset_in;
|
||||
clkrst_i.arst_n <= not clkrst_i.arst;
|
||||
|
||||
video_i.clk <= clk_vid;
|
||||
video_i.clk_ena <= '1';
|
||||
video_i.reset <= reset_in;
|
||||
|
||||
GEN_RESETS : for i in 0 to 3 generate
|
||||
|
||||
process (clkrst_i.clk(i), clkrst_i.arst)
|
||||
variable rst_r : std_logic_vector(2 downto 0) := (others => '0');
|
||||
begin
|
||||
if clkrst_i.arst = '1' then
|
||||
rst_r := (others => '1');
|
||||
elsif rising_edge(clkrst_i.clk(i)) then
|
||||
rst_r := rst_r(rst_r'left-1 downto 0) & '0';
|
||||
end if;
|
||||
clkrst_i.rst(i) <= rst_r(rst_r'left);
|
||||
end process;
|
||||
|
||||
end generate GEN_RESETS;
|
||||
|
||||
vid_r <= video_o.rgb.r(9 downto 6);
|
||||
vid_g <= video_o.rgb.g(9 downto 6);
|
||||
vid_b <= video_o.rgb.b(9 downto 6);
|
||||
vid_hs <= video_o.hsync;
|
||||
vid_vs <= video_o.vsync;
|
||||
vid_hb <= video_o.hblank;
|
||||
vid_vb <= video_o.vblank;
|
||||
snd_l <= audio_o.ldata(15 downto 8);
|
||||
snd_r <= audio_o.rdata(15 downto 8);
|
||||
|
||||
pace_inst : entity work.pace
|
||||
port map(
|
||||
clkrst_i => clkrst_i,
|
||||
vma => vma,
|
||||
inputs_p1 => inputs_p1,
|
||||
inputs_p2 => inputs_p2,
|
||||
inputs_sys => inputs_sys,
|
||||
inputs_dip1 => inputs_dip1,
|
||||
inputs_dip2 => inputs_dip2,
|
||||
video_i => video_i,
|
||||
video_o => video_o,
|
||||
audio_i => audio_i,
|
||||
audio_o => audio_o,
|
||||
platform_i => platform_i,
|
||||
platform_o => platform_o,
|
||||
cpu_rom_addr => cpu_rom_addr,
|
||||
cpu_rom_do => cpu_rom_do,
|
||||
tile_rom_addr => tile_rom_addr,
|
||||
tile_rom_do => tile_rom_do
|
||||
);
|
||||
|
||||
end SYN;
|
||||
@@ -1,455 +0,0 @@
|
||||
library IEEE;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
library work;
|
||||
use work.video_controller_pkg.all;
|
||||
|
||||
entity pace_video_controller is
|
||||
generic
|
||||
(
|
||||
CONFIG : PACEVideoController_t := PACE_VIDEO_NONE;
|
||||
DELAY : integer := 1;
|
||||
H_SIZE : integer;
|
||||
V_SIZE : integer;
|
||||
L_CROP : integer range 0 to 255;
|
||||
R_CROP : integer range 0 to 255;
|
||||
H_SCALE : integer;
|
||||
V_SCALE : integer;
|
||||
H_SYNC_POL : std_logic := '1';
|
||||
V_SYNC_POL : std_logic := '1';
|
||||
BORDER_RGB : RGB_t := RGB_BLACK
|
||||
);
|
||||
port
|
||||
(
|
||||
-- clocking etc
|
||||
video_i : in from_VIDEO_t;
|
||||
|
||||
-- register interface
|
||||
reg_i : in VIDEO_REG_t;
|
||||
|
||||
-- video input data
|
||||
rgb_i : in RGB_t;
|
||||
|
||||
-- control signals (out)
|
||||
video_ctl_o : out from_VIDEO_CTL_t;
|
||||
|
||||
-- video output control & data
|
||||
video_o : out to_VIDEO_t
|
||||
);
|
||||
end pace_video_controller;
|
||||
|
||||
architecture SYN of pace_video_controller is
|
||||
|
||||
constant SIM_DELAY : time := 2 ns;
|
||||
|
||||
constant VIDEO_H_SIZE : integer := H_SIZE * H_SCALE;
|
||||
constant VIDEO_V_SIZE : integer := V_SIZE * V_SCALE;
|
||||
|
||||
subtype reg_t is integer range 0 to 2047;
|
||||
|
||||
alias clk : std_logic is video_i.clk;
|
||||
alias clk_ena : std_logic is video_i.clk_ena;
|
||||
alias reset : std_logic is video_i.reset;
|
||||
|
||||
-- registers
|
||||
signal h_front_porch_r : reg_t := 0;
|
||||
signal h_sync_r : reg_t := 0;
|
||||
signal h_back_porch_r : reg_t := 0;
|
||||
signal h_border_r : reg_t := 0;
|
||||
signal h_video_r : reg_t := 0;
|
||||
signal v_front_porch_r : reg_t := 0;
|
||||
signal v_sync_r : reg_t := 0;
|
||||
signal v_back_porch_r : reg_t := 0;
|
||||
signal v_border_r : reg_t := 0;
|
||||
signal v_video_r : reg_t := 0;
|
||||
|
||||
signal border_rgb_r : RGB_t := ((others=>'0'), (others=>'0'), (others=>'0'));
|
||||
|
||||
-- derived values
|
||||
signal h_sync_start : reg_t := 0;
|
||||
signal h_back_porch_start : reg_t := 0;
|
||||
signal h_left_border_start : reg_t := 0;
|
||||
signal h_video_start : reg_t := 0;
|
||||
signal h_right_border_start : reg_t := 0;
|
||||
signal h_line_end : reg_t := 0;
|
||||
signal v_sync_start : reg_t := 0;
|
||||
signal v_back_porch_start : reg_t := 0;
|
||||
signal v_top_border_start : reg_t := 0;
|
||||
signal v_video_start : reg_t := 0;
|
||||
signal v_bottom_border_start : reg_t := 0;
|
||||
signal v_screen_end : reg_t := 0;
|
||||
|
||||
signal hsync_s : std_logic := '0';
|
||||
signal vsync_s : std_logic := '0';
|
||||
signal hactive_s : std_logic := '0';
|
||||
signal vactive_s : std_logic := '0';
|
||||
signal hblank_s : std_logic := '0';
|
||||
signal vblank_s : std_logic := '0';
|
||||
|
||||
subtype count_t is integer range 0 to 2047;
|
||||
signal x_count : count_t := 0;
|
||||
signal y_count : count_t := 0;
|
||||
|
||||
signal x_s : unsigned(10 downto 0) := (others => '0');
|
||||
signal y_s : unsigned(10 downto 0) := (others => '0');
|
||||
|
||||
--signal extended_reset : std_logic := '1';
|
||||
alias extended_reset : std_logic is video_i.reset;
|
||||
|
||||
begin
|
||||
|
||||
-- registers
|
||||
reg_proc: process (reset, clk)
|
||||
|
||||
begin
|
||||
--if reset = '1' then
|
||||
case CONFIG is
|
||||
|
||||
when PACE_VIDEO_VGA_240x320_60Hz =>
|
||||
-- P3M, clk=11.136MHz, clk_ena=5.568MHz
|
||||
h_front_porch_r <= 272-240;
|
||||
h_sync_r <= 5;
|
||||
h_back_porch_r <= 22;
|
||||
h_border_r <= (240-VIDEO_H_SIZE)/2;
|
||||
v_front_porch_r <= 326-320;
|
||||
v_sync_r <= 1;
|
||||
v_back_porch_r <= 5;
|
||||
v_border_r <= (320-VIDEO_V_SIZE)/2;
|
||||
|
||||
when PACE_VIDEO_VGA_320x480_60Hz =>
|
||||
-- VGA, clk=12.588MHz
|
||||
--# 320x240 @ 60 Hz, 31.5 kHz hsync, 4:3 aspect ratio
|
||||
--Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan
|
||||
h_front_porch_r <= 16;
|
||||
h_sync_r <= 48;
|
||||
h_back_porch_r <= 16;
|
||||
h_border_r <= (320-VIDEO_H_SIZE)/2;
|
||||
v_front_porch_r <= (5*2);
|
||||
v_sync_r <= (1*2);
|
||||
v_back_porch_r <= (16*2);
|
||||
v_border_r <= (480-VIDEO_V_SIZE)/2;
|
||||
|
||||
when PACE_VIDEO_VGA_640x480_60Hz =>
|
||||
-- VGA, clk=25.175MHz
|
||||
h_front_porch_r <= 16;
|
||||
h_sync_r <= 96;
|
||||
h_back_porch_r <= 48;
|
||||
h_border_r <= (640-VIDEO_H_SIZE)/2;
|
||||
v_front_porch_r <= 10;
|
||||
v_sync_r <= 2;
|
||||
v_back_porch_r <= 33;
|
||||
v_border_r <= (480-VIDEO_V_SIZE)/2;
|
||||
|
||||
when PACE_VIDEO_VGA_800x600_60Hz =>
|
||||
-- SVGA, clk=40MHz
|
||||
h_front_porch_r <= 40;
|
||||
h_sync_r <= 128;
|
||||
h_back_porch_r <= 88;
|
||||
h_border_r <= (800-VIDEO_H_SIZE)/2;
|
||||
v_front_porch_r <= 1;
|
||||
v_sync_r <= 4;
|
||||
v_back_porch_r <= 23;
|
||||
v_border_r <= (600-VIDEO_V_SIZE)/2;
|
||||
|
||||
when PACE_VIDEO_VGA_1024x768_60Hz =>
|
||||
-- XVGA, clk=65MHz
|
||||
h_front_porch_r <= 24;
|
||||
h_sync_r <= 136;
|
||||
h_back_porch_r <= 160;
|
||||
h_border_r <= (1024-VIDEO_H_SIZE)/2;
|
||||
v_front_porch_r <= 3;
|
||||
v_sync_r <= 6;
|
||||
v_back_porch_r <= 29;
|
||||
v_border_r <= (768-VIDEO_V_SIZE)/2;
|
||||
|
||||
when PACE_VIDEO_VGA_1366x768_60Hz =>
|
||||
-- XVGA(NAVICO ROCKY), clk=72MHz
|
||||
h_front_porch_r <= 88; --64;
|
||||
h_sync_r <= 44; --112;
|
||||
h_back_porch_r <= 148; --248;
|
||||
h_border_r <= (1366-VIDEO_H_SIZE)/2;
|
||||
v_front_porch_r <= 4; --3;
|
||||
v_sync_r <= 5; --6;
|
||||
v_back_porch_r <= 36; --18;
|
||||
v_border_r <= (768-VIDEO_V_SIZE)/2;
|
||||
|
||||
when PACE_VIDEO_VGA_1280x800_60Hz =>
|
||||
-- Sentinel Mode 36, clk=103.2MHz
|
||||
h_front_porch_r <= 64;
|
||||
h_sync_r <= 32;
|
||||
h_back_porch_r <= 362-32-64;
|
||||
h_border_r <= (1280-VIDEO_H_SIZE)/2;
|
||||
v_front_porch_r <= 3;
|
||||
v_sync_r <= 4;
|
||||
v_back_porch_r <= 38-4-3;
|
||||
v_border_r <= (800-VIDEO_V_SIZE)/2;
|
||||
|
||||
when PACE_VIDEO_VGA_1280x1024_60Hz =>
|
||||
-- SXGA, clk=108MHz
|
||||
h_front_porch_r <= 48;
|
||||
h_sync_r <= 112;
|
||||
h_back_porch_r <= 248;
|
||||
h_border_r <= (1280-VIDEO_H_SIZE)/2;
|
||||
v_front_porch_r <= 1;
|
||||
v_sync_r <= 3;
|
||||
v_back_porch_r <= 38;
|
||||
v_border_r <= (1024-VIDEO_V_SIZE)/2;
|
||||
|
||||
when PACE_VIDEO_VGA_1680x1050_60Hz =>
|
||||
-- WSXGA+, clk=147.14MHz
|
||||
h_front_porch_r <= 104;
|
||||
h_sync_r <= 184;
|
||||
h_back_porch_r <= 288;
|
||||
v_front_porch_r <= 1;
|
||||
v_sync_r <= 3;
|
||||
v_back_porch_r <= 33;
|
||||
-- WSXGA+, clk=118MHz
|
||||
--h_front_porch_r <= 48;
|
||||
--h_sync_r <= 32;
|
||||
--h_back_porch_r <= 80;
|
||||
--v_front_porch_r <= 3;
|
||||
--v_sync_r <= 6;
|
||||
--v_back_porch_r <= 21;
|
||||
h_border_r <= (1680-VIDEO_H_SIZE)/2;
|
||||
v_border_r <= (1050-VIDEO_V_SIZE)/2;
|
||||
|
||||
when PACE_VIDEO_ARCADE_STD_336x240_60Hz =>
|
||||
-- arcade standard resolution, clk=7.16MHz
|
||||
h_front_porch_r <= 34;
|
||||
h_sync_r <= 34;
|
||||
h_back_porch_r <= 51;
|
||||
h_border_r <= (336-VIDEO_H_SIZE)/2;
|
||||
v_front_porch_r <= 3;
|
||||
v_sync_r <= 3;
|
||||
v_back_porch_r <= 16;
|
||||
v_border_r <= (240-VIDEO_V_SIZE)/2;
|
||||
|
||||
when PACE_VIDEO_ARCADE_STD_336x240_60Hz_28M64 =>
|
||||
-- arcade standard resolution, clk=28.64MHz
|
||||
h_front_porch_r <= 4*34;
|
||||
h_sync_r <= 4*34;
|
||||
h_back_porch_r <= 4*51;
|
||||
h_border_r <= 4*(336-VIDEO_H_SIZE)/2;
|
||||
v_front_porch_r <= 3;
|
||||
v_sync_r <= 3;
|
||||
v_back_porch_r <= 16;
|
||||
v_border_r <= (240-VIDEO_V_SIZE)/2;
|
||||
|
||||
when PACE_VIDEO_CVBS_720x288p_50Hz =>
|
||||
-- generic composite, clk=13.5MHz
|
||||
h_front_porch_r <= (8+12);
|
||||
h_sync_r <= 64;
|
||||
h_back_porch_r <= (144-64-(8+12));
|
||||
h_border_r <= (720-VIDEO_H_SIZE)/2;
|
||||
v_front_porch_r <= 1;
|
||||
v_sync_r <= 3;
|
||||
v_back_porch_r <= 20;
|
||||
v_border_r <= (288-VIDEO_V_SIZE)/2;
|
||||
|
||||
when PACE_VIDEO_LCM_320x240_60Hz =>
|
||||
-- DE1/2, clk=18MHz
|
||||
h_front_porch_r <= 59;
|
||||
h_sync_r <= 1;
|
||||
h_back_porch_r <= 151;
|
||||
h_border_r <= (320-VIDEO_H_SIZE)*3/2;
|
||||
v_front_porch_r <= 8;
|
||||
v_sync_r <= 1;
|
||||
v_back_porch_r <= 13;
|
||||
v_border_r <= (240-VIDEO_V_SIZE)/2;
|
||||
|
||||
when others =>
|
||||
null;
|
||||
end case;
|
||||
|
||||
h_video_r <= VIDEO_H_SIZE;
|
||||
v_video_r <= VIDEO_V_SIZE;
|
||||
border_rgb_r <= BORDER_RGB;
|
||||
|
||||
--end if;
|
||||
end process reg_proc;
|
||||
|
||||
-- register some arithmetic
|
||||
init_proc: process (reset, clk, clk_ena)
|
||||
begin
|
||||
if reset = '1' then
|
||||
null;
|
||||
elsif rising_edge(clk) then
|
||||
h_sync_start <= h_front_porch_r - 1;
|
||||
h_back_porch_start <= h_sync_start + h_sync_r;
|
||||
h_left_border_start <= h_back_porch_start + h_back_porch_r;
|
||||
h_video_start <= h_left_border_start + h_border_r;
|
||||
h_right_border_start <= h_video_start + h_video_r;
|
||||
h_line_end <= h_right_border_start + h_border_r;
|
||||
v_sync_start <= v_front_porch_r - 1;
|
||||
v_back_porch_start <= v_sync_start + v_sync_r;
|
||||
v_top_border_start <= v_back_porch_start + v_back_porch_r;
|
||||
v_video_start <= v_top_border_start + v_border_r;
|
||||
v_bottom_border_start <= v_video_start + v_video_r;
|
||||
v_screen_end <= v_bottom_border_start + v_border_r;
|
||||
end if;
|
||||
end process init_proc;
|
||||
|
||||
reset_proc: process (reset, clk)
|
||||
variable count_v : integer;
|
||||
begin
|
||||
if reset = '1' then
|
||||
--extended_reset <= '1';
|
||||
count_v := 7;
|
||||
elsif rising_edge(clk) then
|
||||
if count_v = 0 then
|
||||
--extended_reset <= '0';
|
||||
else
|
||||
count_v := count_v - 1;
|
||||
end if;
|
||||
end if;
|
||||
end process reset_proc;
|
||||
|
||||
-- video control outputs
|
||||
timer_proc: process (extended_reset, clk, clk_ena)
|
||||
begin
|
||||
if extended_reset = '1' then
|
||||
hblank_s <= '1';
|
||||
vblank_s <= '1';
|
||||
hactive_s <= '0';
|
||||
vactive_s <= '0';
|
||||
hsync_s <= not H_SYNC_POL;
|
||||
x_count <= 0;
|
||||
y_count <= 0;
|
||||
elsif rising_edge(clk) and clk_ena = '1' then
|
||||
if x_count = h_line_end then
|
||||
hblank_s <= '1';
|
||||
hactive_s <= '0'; -- for 0 borders
|
||||
if y_count = v_screen_end then
|
||||
vblank_s <= '1';
|
||||
vactive_s <= '0'; -- for 0 borders
|
||||
y_count <= 0;
|
||||
else
|
||||
y_s <= y_s + 1;
|
||||
if y_count = v_sync_start then
|
||||
vsync_s <= V_SYNC_POL;
|
||||
elsif y_count = v_back_porch_start then
|
||||
vsync_s <= not V_SYNC_POL;
|
||||
elsif y_count = v_video_start then
|
||||
vblank_s <= '0'; -- for 0 borders
|
||||
vactive_s <= '1';
|
||||
y_s <= (others => '0');
|
||||
-- check the borders last in case they're 0
|
||||
elsif y_count = v_top_border_start then
|
||||
vblank_s <= '0';
|
||||
elsif y_count = v_bottom_border_start then
|
||||
vactive_s <= '0';
|
||||
end if;
|
||||
y_count <= y_count + 1;
|
||||
end if;
|
||||
x_count <= 0;
|
||||
else
|
||||
x_s <= x_s + 1;
|
||||
if x_count = h_sync_start then
|
||||
hsync_s <= H_SYNC_POL;
|
||||
elsif x_count = h_back_porch_start then
|
||||
hsync_s <= not H_SYNC_POL;
|
||||
elsif x_count = h_video_start then
|
||||
hblank_s <= '0'; -- for 0 borders
|
||||
hactive_s <= '1';
|
||||
x_s <= (others => '0');
|
||||
-- check the borders last in case they're 0
|
||||
elsif x_count = h_left_border_start then
|
||||
hblank_s <= '0';
|
||||
elsif x_count = h_right_border_start then
|
||||
hactive_s <= '0';
|
||||
end if;
|
||||
x_count <= x_count + 1;
|
||||
end if;
|
||||
end if; -- rising_edge(clk) and clk_ena = '1'
|
||||
end process timer_proc;
|
||||
|
||||
-- pass-through for tile/bitmap & sprite controllers
|
||||
video_ctl_o.clk <= clk;
|
||||
video_ctl_o.clk_ena <= clk_ena;
|
||||
|
||||
-- for video DACs and TFT output
|
||||
video_o.clk <= clk;
|
||||
|
||||
BLK_VIDEO_O : block
|
||||
|
||||
constant PIPELINE_DELAY : natural := DELAY+1;
|
||||
|
||||
-- won't synthesize correctly under ISE if these are variables
|
||||
signal hactive_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
|
||||
signal vactive_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
|
||||
|
||||
begin
|
||||
|
||||
video_o_proc: process (extended_reset, clk, clk_ena)
|
||||
variable hsync_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
|
||||
variable vsync_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
|
||||
--variable hactive_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
|
||||
--variable vactive_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
|
||||
variable hblank_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
|
||||
variable vblank_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
|
||||
alias hsync_v : std_logic is hsync_v_r(hsync_v_r'left);
|
||||
alias vsync_v : std_logic is vsync_v_r(vsync_v_r'left);
|
||||
alias hactive_v : std_logic is hactive_v_r(hactive_v_r'left);
|
||||
alias vactive_v : std_logic is vactive_v_r(vactive_v_r'left);
|
||||
alias hblank_v : std_logic is hblank_v_r(hblank_v_r'left);
|
||||
alias vblank_v : std_logic is vblank_v_r(vblank_v_r'left);
|
||||
variable stb_cnt_v : unsigned(3 downto 0); -- up to 16x scaling
|
||||
begin
|
||||
if extended_reset = '1' then
|
||||
hsync_v_r := (others => not H_SYNC_POL);
|
||||
vsync_v_r := (others => not V_SYNC_POL);
|
||||
hactive_v_r <= (others => '0');
|
||||
vactive_v_r <= (others => '0');
|
||||
hblank_v_r := (others => '0');
|
||||
vblank_v_r := (others => '0');
|
||||
stb_cnt_v := (others => '1');
|
||||
elsif rising_edge(clk) and clk_ena = '1' then
|
||||
|
||||
-- register control signals and handle scaling
|
||||
video_ctl_o.hblank <= not hactive_s after SIM_DELAY; -- used only by the bitmap/tilemap/sprite controllers
|
||||
video_ctl_o.vblank <= not vactive_s after SIM_DELAY; -- used only by the bitmap/tilemap/sprite controllers
|
||||
-- handle scaling
|
||||
video_ctl_o.stb <= stb_cnt_v(H_SCALE-1) after SIM_DELAY;
|
||||
if hactive_s = '1' and vactive_s = '1' then
|
||||
stb_cnt_v := stb_cnt_v + 2;
|
||||
elsif hblank_s = '0' and vblank_s = '0' then
|
||||
stb_cnt_v := (others => '1');
|
||||
end if;
|
||||
video_ctl_o.x <= std_logic_vector(resize(x_s(x_s'left downto H_SCALE-1), video_ctl_o.x'length)) after SIM_DELAY;
|
||||
video_ctl_o.y <= std_logic_vector(resize(y_s(y_s'left downto V_SCALE-1), video_ctl_o.y'length)) after SIM_DELAY;
|
||||
|
||||
-- register video outputs
|
||||
if hactive_v = '1' and vactive_v = '1' then
|
||||
-- active video
|
||||
if x_s(x_s'left downto H_SCALE-1) < (L_CROP + PIPELINE_DELAY) or
|
||||
x_s(x_s'left downto H_SCALE-1) >= (H_SIZE - R_CROP + PIPELINE_DELAY) then
|
||||
video_o.rgb <= RGB_BLACK after SIM_DELAY;
|
||||
else
|
||||
video_o.rgb <= rgb_i after SIM_DELAY;
|
||||
end if;
|
||||
elsif hblank_v = '0' and vblank_v = '0' then
|
||||
-- border
|
||||
video_o.rgb <= border_rgb_r after SIM_DELAY;
|
||||
else
|
||||
video_o.rgb.r <= (others => '0') after SIM_DELAY;
|
||||
video_o.rgb.g <= (others => '0') after SIM_DELAY;
|
||||
video_o.rgb.b <= (others => '0') after SIM_DELAY;
|
||||
end if;
|
||||
video_o.hsync <= hsync_v after SIM_DELAY;
|
||||
video_o.vsync <= vsync_v after SIM_DELAY;
|
||||
video_o.hblank <= hblank_v after SIM_DELAY;
|
||||
video_o.vblank <= vblank_v after SIM_DELAY;
|
||||
-- pipelined signals
|
||||
hsync_v_r := hsync_v_r(hsync_v_r'left-1 downto 0) & hsync_s;
|
||||
vsync_v_r := vsync_v_r(vsync_v_r'left-1 downto 0) & vsync_s;
|
||||
hactive_v_r <= hactive_v_r(hactive_v_r'left-1 downto 0) & hactive_s;
|
||||
vactive_v_r <= vactive_v_r(vactive_v_r'left-1 downto 0) & vactive_s;
|
||||
hblank_v_r := hblank_v_r(hblank_v_r'left-1 downto 0) & hblank_s;
|
||||
vblank_v_r := vblank_v_r(vblank_v_r'left-1 downto 0) & vblank_s;
|
||||
end if;
|
||||
end process video_o_proc;
|
||||
|
||||
end block BLK_VIDEO_O;
|
||||
|
||||
end SYN;
|
||||
Reference in New Issue
Block a user