Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
README.txt | 2019-12-06 | 13.6 kB | |
vhdl_discs_of_tron_rev_0_3_2019_12_06.zip | 2019-12-06 | 286.5 kB | |
vhdl_discs_of_tron_rev_0_2_2019_12_02.zip | 2019-12-02 | 286.6 kB | |
vhdl_sdram_loader_de10_lite_discs_of_tron.zip | 2019-12-02 | 24.0 kB | |
vhdl_discs_of_tron_rev_0_1_2019_11_22.zip | 2019-11-22 | 277.9 kB | |
vhdl_discs_of_tron_rev_0_0_2019_11_16.zip | 2019-11-16 | 277.3 kB | |
Totals: 6 Items | 1.2 MB | 0 |
--------------------------------------------------------------------------------- -- DE10_lite Top level for Discs of Tron (Midway MCR) by Dar (darfpga@aol.fr) (15/11/2019) -- http://darfpga.blogspot.fr --------------------------------------------------------------------------------- -- -- release rev 03 : enhanced sdram interface -- (06/12/2019) -- release rev 02 : support for sdram to hold sprites roms data -- (02/12/2019) -- -- release rev 01 : add TV 15kHz mode -- (22/11/2019) use merged sprite 8bits roms (make it easier to externalize) -- -- release rev 00 : initial release -- --------------------------------------------------------------------------------- -- Educational use only -- Do not redistribute synthetized file with roms -- Do not redistribute roms whatever the form -- Use at your own risk --------------------------------------------------------------------------------- -- Use discs_of_tron_de10_lite.sdc to compile (Timequest constraints) -- /!\ -- Don't forget to set device configuration mode with memory initialization -- (Assignments/Device/Pin options/Configuration mode) --------------------------------------------------------------------------------- -- -- Main features : -- PS2 keyboard input @gpio pins 35/34 (beware voltage translation/protection) -- Audio pwm output @gpio pins 1/3 (beware voltage translation/protection) -- -- Video : VGA 31Khz/60Hz and TV 15kHz -- Cocktail mode : NO -- Sound : OK -- -- For hardware schematic see my other project : NES -- -- Uses 1 pll 40MHz from 50MHz to make 20MHz and 8Mhz -- -- Board key : -- 0 : reset game -- -- Keyboard players inputs : -- -- F1 : Add coin -- F2 : Start 1 player -- F3 : Start 2 players -- F5 : Service mode -- SPACE : fire -- RIGHT arrow : move right -- LEFT arrow : move left -- UP arrow : move forward -- DOWN arrow : move backward -- -- f key : spin left -- g key : spin right -- t key : level_up -- v key : level_down -- key : deflect -- -- Other details : see discs_of_tron.vhd -- For USB inputs and SGT5000 audio output see my other project: xevious_de10_lite --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -- Discs of Tron by Dar (darfpga@aol.fr) (15/11/2019) -- http://darfpga.blogspot.fr --------------------------------------------------------------------------------- -- -- release 00 : initial release -- --------------------------------------------------------------------------------- -- gen_ram.vhd & io_ps2_keyboard -------------------------------- -- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com) -- http://www.syntiac.com/fpga64.html --------------------------------------------------------------------------------- -- T80/T80se - Version : 304 ----------------------------- -- Z80 compatible microprocessor core -- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) --------------------------------------------------------------------------------- -- YM2149 (AY-3-8910) -- Copyright (c) MikeJ - Jan 2005 --------------------------------------------------------------------------------- -- Educational use only -- Do not redistribute synthetized file with roms -- Do not redistribute roms whatever the form -- Use at your own risk --------------------------------------------------------------------------------- -- Features : -- Video : 31Khz/60Hz -- Coctail mode : NO -- Sound : OK -- Use with MAME roms from dotron.zip -- -- Use make_discs_of_tron_proms.bat to build vhd file from binaries -- (CRC list included) -- Discs of Tron (midway mcr) Hardware caracteristics : -- -- VIDEO : 1xZ80@3MHz CPU accessing its program rom, working ram, -- sprite data ram, I/O, sound board register and trigger. -- 56Kx8bits program rom -- -- One char/background tile map 30x32 -- 2x8Kx8bits graphics rom 4bits/pixel + 2 bit color set -- rbg programmable ram palette 64 colors 9bits : 3red 3green 3blue -- -- 128 sprites, up to ~30/line, 32x32 with flip H/V -- 4x16Kx8bits graphics rom 4bits/pixel + 2 bit color set -- rbg programmable ram palette 64 colors 9bits : 3red 3green 3blue -- -- Working ram : 2Kx8bits -- video (char/background) ram : 2Kx8bits -- Sprites ram : 512x8bits + 512x8bits cache buffer -- Sprites line buffer rams (graphics and colors) : 1 scan line delay flip/flop 2x256x16bits -- -- SOUND : see tron_sound_board.vhd --------------------------------------------------------------------------------- -- Schematics remarks : -- -- Display is 512x480 pixels (video 635x525 lines @ 20MHz ) -- 635/20e6 = 31.75us per line (31.750KHz) -- 31.75*525 = 16.67ms per frame (59.99Hz) -- -- Original video is interlaced 240 display lines per 1/2 frame -- -- H0 and V0 are not use for background => each bg tile is 16x16 pixel but -- background graphics is 2x2 pixels defintion. -- -- Sprite are 32x32 pixels with 1x1 pixel definition, 16 lines for odd 1/2 -- frame and 16 lines for even 2/2 frame thanks to V8 on sprite rom ROMAD2 -- (look at 74ls86 G1 pin 9 on video genration board schematics) -- -- *H and V stand for Horizontal en Vertical counter (Hcnt, Vcnt in VHDL code) -- -- /!\ For VHDL port interlaced video mode is replaced with progressive video -- mode. -- -- Real hardware uses background ram access after each 1/2 frame (~line 240 -- and 480). In these areas cpu can access ram since scanlines are out of -- visible display. In progessive mode there are video access around lines 240. -- These accesses will create video artfacts aound mid display. In VHDL code -- ram access is muliplexed between cpu and scanlines by using hcnt(0) in -- order to avoid these artefacts. -- -- Sprite data are stored first by cpu into a 'cache' buffer (staging ram at -- K6/L6) this buffer is read and write for cpu. After visible display, cache -- buffer (512x8) is moved to actual sprite ram buffer (512x8). Actual sprite -- buffer is access by transfer address counter during 2 scanlines after -- visible area and only by sprite machine during visible area. -- -- Thus cpu can read and update sprites position during entire frame except -- during 2 lines. -- -- Sprite data are organised (as seen by cpu F000-F1FF) into 128 * 4bytes. -- bytes #1 : Vertical position -- bytes #2 : code and attribute -- bytes #3 : Horizontal position -- bytes #4 : not used -- -- Athough 1x1 pixel defintion sprite position horizontal/vertical is made on -- on a 2x2 grid (due to only 8bits for position data) -- -- Z80-CTC : interruption ar managed by CTC chip. ONly channel 3 is trigered -- by hardware signal line 493. channel 0 to 2 are in timer mode. Schematic -- show zc/to of channel 0 connected to clk/trg of channel 1. This seems to be -- unsued for that (Kick) game. -- -- Z80-CTC VHDL port keep separated interrupt controler and each counter so -- one can use them on its own. Priority daisy-chain is not done (not used in -- that game). clock polarity selection is not done since it has no meaning -- with digital clock/enable (e.g cpu_ena signal) method. -- -- Ressource : input clock 40MHz is chosen to allow easy making of 20MHz for -- pixel clock and 8MHz signal for amplitude modulation circuit of ssio board -- -- TODO : -- Working ram could be initialized to set initial difficulty level and -- initial bases (live) number. Otherwise one can set it up by using service -- menu at each power up. -- --------------------------------------------------------------------------------- +----------------------------------------------------------------------------------+ ; Fitter Summary ; +------------------------------------+---------------------------------------------+ ; Fitter Status ; Successful - Fri Dec 06 12:23:10 2019 ; ; Quartus Prime Version ; 18.1.0 Build 625 09/12/2018 SJ Lite Edition ; ; Revision Name ; discs_of_tron_de10_lite ; ; Top-level Entity Name ; discs_of_tron_de10_lite ; ; Family ; MAX 10 ; ; Device ; 10M50DAF484C6GES ; ; Timing Models ; Preliminary ; ; Total logic elements ; 6,988 / 49,760 ( 14 % ) ; ; Total combinational functions ; 6,681 / 49,760 ( 13 % ) ; ; Dedicated logic registers ; 1,902 / 49,760 ( 4 % ) ; ; Total registers ; 1902 ; ; Total pins ; 160 / 360 ( 44 % ) ; ; Total virtual pins ; 0 ; ; Total memory bits ; 776,768 / 1,677,312 ( 46 % ) <- WITH SDRAM SPRITE DATA LOADER ; Embedded Multiplier 9-bit elements ; 0 / 288 ( 0 % ) ; ; Total PLLs ; 1 / 4 ( 25 % ) ; ; UFM blocks ; 0 / 1 ( 0 % ) ; ; ADC blocks ; 0 / 2 ( 0 % ) ; +------------------------------------+---------------------------------------------+ --------------- VHDL File list --------------- de10_lite/max10_pll_40M.vhd Pll 40MHz from 50MHz altera mf rtl_dar/discs_of_tron_de10_lite.vhd Top level for de10_lite board rtl_dar/discs_of_tron.vhd Main CPU and video boards logic rtl_dar/discs_of_tron_sound_board.vhd Main sound board logic rtl_dar/ctc_controler.vhd Z80-CTC controler rtl_dar/ctc_counter.vhd Z80-CTC counter rtl_mikej/YM2149_linmix.vhd Copyright (c) MikeJ - Jan 2005 rtl_T80_304/T80se.vhdT80 Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) rtl_T80_304/T80_Reg.vhd rtl_T80_304/T80_Pack.vhd rtl_T80_304/T80_MCode.vhd rtl_T80_304/T80_ALU.vhd rtl_T80_304/T80.vhd rtl_dar/kbd_joystick.vhd Keyboard key to player/coin input rtl_dar/io_ps2_keyboard.vhd Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com) rtl_dar/gen_ram.vhd Generic RAM (Peter Wendrich + DAR Modification) rtl_dar/decodeur_7_seg.vhd 7 segments display decoder rtl_dar/proms/discs_of_tron_cpu.vhd CPU board PROMS rtl_dar/proms/discs_of_tron_bg_bits_2.vhd rtl_dar/proms/discs_of_tron_bg_bits_1.vhd rtl_dar/proms/discs_of_tron_sp_bits_4.vhd Video board PROMS rtl_dar/proms/discs_of_tron_sp_bits_3.vhd rtl_dar/proms/discs_of_tron_sp_bits_2.vhd rtl_dar/proms/discs_of_tron_sp_bits_1.vhd rtl_dar/proms/discs_of_tron_sound_cpu.vhd Sound board PROMS rtl_dar/proms/midssio_82s123.vhd ---------------------- Quartus project files ---------------------- de10_lite/discs_of_tron_de10_lite.sdc Timequest constraints file de10_lite/discs_of_tron_de10_lite.qsf de10_lite settings (files,pins...) de10_lite/discs_of_tron_de10_lite.qpf de10_lite project ----------------------------- Required ROMs (Not included) ----------------------------- You need the following 19 ROMs binary files from dotron.zip and midssio.zip(MAME) loc-pg0.1c CRC ba0da15f loc-pg1.2c CRC dc300191 loc-pg2.3c CRC ab0b3800 loc-pg1.4c CRC f98c9f8e sound0.a7 CRC 6d39bf19 sound1.a8 CRC ac872e1d sound2.a9 CRC e8ef6519 sound3.a10 CRC 6b5aeb02 loc-bg2.6f CRC 40167124 loc-bg1.5f CRC bb2d7a5d loc-g.cp4 CRC 57a2b1ff loc-h.cp3 CRC 3bb4d475 loc-e.cp6 CRC ce957f1a loc-f.cp5 CRC d26053ce loc-c.cp8 CRC ef45d146 loc-d.cp7 CRC 5e8a3ef3 loc-a.cp0 CRC b35f5374 loc-b.cp9 CRC 565a5c48 midssio_82s123.12d CRC e1281ee9 ------ Tools ------ You need to build vhdl files from the binary file : - Unzip the roms file in the tools/discs_of_tron_unzip directory - Double click (execute) the script tools/make_discs_of_tron_proms.bat to get the following 6 files discs_of_tron_cpu.vhd discs_of_tron_sound_cpu.vhd discs_of_tron_bg_bits_1.vhd discs_of_tron_bg_bits_2.vhd discs_of_tron_sp_bits.vhd midssio_82s123.vhd *DO NOT REDISTRIBUTE THESE FILES* VHDL files are needed to compile and include roms into the project The script make_discs_of_tron_proms.bat uses make_vhdl_prom executables delivered both in linux and windows version. The script itself is delivered only in windows version (.bat) but should be easily ported to linux. Source code of make_vhdl_prom.c is also delivered. --------------------------------- Compiling for de10_lite --------------------------------- You can build the project with ROM image embeded in the sof file. *DO NOT REDISTRIBUTE THESE FILES* 3 steps - put the VHDL ROM files (.vhd) into the rtl_dar/proms directory - build discs_of_tron_de10_lite - program discs_of_tron_de10_lite.sof ------------------------ ------------------------ End of file ------------------------