Škálovací Algoritmy 2D Obrazu

Total Page:16

File Type:pdf, Size:1020Kb

Škálovací Algoritmy 2D Obrazu Masarykova univerzita v Brně Fakulta informatiky Škálovací algoritmy 2D obrazu Bakalářská práce Jan Rybář Brno, 2012 Prohlášení Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samo- statně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. Jan Rybář Poděkování Chtěl bych tímto poděkovat svému vedoucímu práce, panu doktoru Petru Tobolovi, za umožnění práce na tomto tématu, cenné rady, ale především za nezměrnou ochotu a trpě- livost. Dále bych rád věnoval dík všem svým přátelům a kolegům, jejichž zkušenosti mi pomohly tuto práci sepsat. V neposlední řadě také děkuji své rodině, která respektovala mou dlouhodobou absenci, a dalším lidem, kteří mě nejen v době psaní podporovali. Shrnutí Tato práce se zaměřuje na problematiku změny rozlišení digitálního obrazu, především jeho zvětšení. V úvodní části textu je probrána klíčová teorie a základy zpracování obrazu včetně jeho reprezentace ve výpočetní technice. Jádro textu popisuje nejpoužívanější techniky řešení problému transformace obrazu, jejich princip a způsob užití. Ve zbytku textu je rozebrána programová implementace těchto technik. V závěru je srovnání vzorových obrazů po průchodu programem a efektivita zmíněných metod. Klíčová slova Škálování, transformace obrazu, rozlišení, rastr, bitmapa, převzorkování, interpolace, ob- razový filtr, konvoluce, pixel art Obsah 1 Úvod 9 2 Teorie 10 2.1 Digitální obraz 10 2.2 Škálování obrazu 10 2.3 Převzorkování 11 2.4 Interpolace 11 3 Metody 12 3.1 Konvoluce 12 3.2 Základní interpolace 13 3.2.1 Nearest neighbour interpolace 13 3.2.2 Bilineární interpolace 13 3.3 Funkce vyšších řádů 14 3.3.1 Sinc(x), Windowed funkce 15 3.3.2 Kubická interpolace 16 3.3.3 Lanczosova interpolace 17 3.4 Pixel Art 18 3.4.1 Hq2x 19 3.4.2 2xSaI 19 4 Implementace 21 4.1 Vstupní formáty 21 4.1.1 BMP 21 4.1.2 JPEG a kompresní formáty 22 4.2 Nástroje, knihovny, prostředí 22 4.3 Kód programu 25 4.3.1 Hlavní program 25 4.3.2 Jednoduché interpolace 25 4.3.3 Interpolace konvolucí 26 4.3.4 Optimalizace konvoluce 27 4.3.5 Hq2x 28 4.3.6 2xSaI 28 4.4 Použití programu 30 5 Výsledky 31 5.1 Výstupy 31 5.2 Metoda měření, testovací sestava 31 5.3 Rychlost algoritmů, užití 32 5.3.1 Naměřené časy 32 5.3.2 Užití algoritmů 34 5.4 Plány, budoucí vývoj 35 5.4.1 Program Scale 35 5.4.2 Interpolační metody 35 6 Závěr 36 7 Seznam ilustrací 37 7 8 Seznam tabulek 38 9 Seznam zkratek 39 10 Literatura 40 11 Příloha 42 8 1 Úvod Nejen hollywoodské filmy a moderní počítačová zábava dokazují, že se zlepšila vizuální kvali- ta obrazu. Nejen jeho reprezentace, ale i pořizování. Od konce osmdesátých let se díky novým technologiím povýšilo vnímání obrazových médií na hranici možností lidského oka. Změnou při- tom neprošla jen schopnost zobrazení virtuální reality, ale především samotná výstupní za- řízení, která moderní obraz produkují. Plně se digitalizoval veškerý přenášený signál, zvýšilo se rozlišení obrazovek a větší paměťový prostor počítačů umožnil realističtější vzhled textur a jakýchkoliv modelů. To pevně oddělilo i veškerý obsah, který byl do té doby vytvořen, od moderního pojetí obra- zu vzhledem ke kvalitě zpracování. Přesto je vhodné staré nekvalitní obrazové materiály uchovávat, protože často nadále nacházejí využití. Příkladem může být např. design s retrospek- tivní tématikou. Navíc je pro zobrazování na moderních zařízeních nezřídka kdy nutné jejich kvalitu zvyšovat. Právě schopnost zkvalitnit obraz nebo ho přizpůsobit pro jakékoliv účely je jedním z důleži- tých témat oboru zpracování digitálního obrazu. To se týká nejen starých obrazových děl, ale i těch současných, a to v mnoha odvětvích - počínaje domácí elektronikou, přes běžné fotoapa- ráty a jiné přístroje na snímání obrazu, až po grafický design. Tam jsou obrazové transformace běžnou záležitostí. Jednou z možností zlepšení kvality obrazového materiálu je zvýšit rozlišení, tj. převzorkovat získaná data s ohledem na použitý výstupní hardware. Prakticky každý obrazový výstup musí být upraven na parametry zobrazovacího zařízení nebo média. Operace na rastrových obrazech jsou ale náročné úkony, které s sebou přináší problémy. Ty však mohou být řešeny četnými způ- soby. Cílem této práce je seznámit čtenáře s problematikou úpravy a zvýšení kvality obrazu změnou jeho rozlišení, včetně postupů, kterými se tyto techniky provádějí. Záměrem je pře- devším uvést nejběžnější metody, postupy a algoritmy, které se často používají v akademické, obchodní i zábavní sféře. Dalším důvodem k sepsání tohoto textu je uvést i ty algoritmy, které nejsou běžné vzhledem k počtu implementací, ale přesto bývají rozšířené v úzké skupině uživatelů výpočetní techniky. Tyto jsou v práci zdokumentovány tak, aby byla umožněna jejich integrace do akademické sféry, kde byly dosud opomíjené i přes svůj potenciální přínos. Praktickým přínosem této práce je srovnávací posudek uvedených metodik a algoritmů a jejich programová implementace. Ta slouží především pro demonstrativní účely, ale zároveň je zpřístupněna pro veřejnost, kde je úprava obrazu doménou často pouze profesionálních grafiků. 9 2 Teorie 2.1 Digitální obraz Ve výpočetní technice je dvojrozměrný obraz reprezentován jako diskrétní signál digitálních dat. Tento signál lze získat buď prací s diskrétními hodnotami už při tvorbě výstupního obrazu, jako např. rastrovým kreslením, nebo nejčastěji digitalizací [1], tj. přechodem od spojité ob- razové funkce k diskrétní. Takového přechodu se dosahuje snímáním hodnot spojité funkce v pevných intervalech v čase nebo prostoru, neboli kvantizací (převedení snímaných reálných hodnot na celočíselné) a vzorkováním (angl. sampling). Spojitá obrazová funkce je funkce dvou proměnných, souřadnic x, y, a může být především reprezentací obrazu v reálném světě. Jejími hodnotami jsou pak barvy na daných souřadnicích, vyjádřitelné v teoreticky nekonečně přesných reálných hodnotách. Ve vektorové grafice se pak diskrétní obraz tvoří vzorkováním pa- rametrického zápisu matematických funkcí, které popisují požadované modely (parametrické kružnice, geometrické útvary, linky). Výsledkem je konečná uspořádaná množina digitálních dat, tedy celočíselně vyjádřených barev v rastru. Právě velikost intervalů, neboli frekvence vzorkování, je důležitá pro výslednou reprezentaci digitálního obsahu. Vzorkováním dochází ke ztrátě informací, a to nepřímo úměrně k vzorkovací frekvenci. S vyšší frekvencí je nasnímaný obraz přesnější vůči originální předloze, zato však paměťově náročnější. 2.2 Škálování obrazu U dvojrozměrného obrazu je jeho vzorkování a rozlišení (bodová velikost obrazu) v přímé úměře. V případech, kdy je jeho rozlišení nevyhovující, je možné tuto vlastnost rastru změnit zvětšením (angl. upscaling), nebo zmenšením (angl. downscaling), pokud je na původní obraz I(u,v) aplikována geometrická transformace, jak jak je uvedeno v [1] a následujícím vzorci: ( )=[ ( ) ( )] T u ,v x u ,v , y u ,v , (1) kde u, v jsou celočíselné souřadnice původního obrazu a funkce vrací novou polohu pixelu. Cí- lem je vytvořit nový obraz I'(u', v'), ve kterém budou všechny souřadnice diskrétní [2]. Operací ale mohou vzniknout neceločíselné hodnoty pozic pixelů. K řešení problému se používá tech- nika mapování se dvěma možnými přístupy [2]: • Source-to-Target • Target-to-Source První jmenovaný pro každý pixel původního obrazu vypočítává pozici v novém rastru. Ačkoliv tento přístup vypadá přirozeně, může komplikovat tvorbu cílového obrazu tím, že buď nová 10 hodnota nebude korespondovat se žádným zdrojovým pixelem, nebo bude pro algoritmus ne- snadné rozhodnout, na které celočíselné hodnoty se má zdrojový pixel mapovat. V praxi se častěji používá druhý přístup, který pro každý pixel v novém obraze I'(u', v') hledá zdrojový pixel původního obrázku. Tím je možné se výše zmíněným problémům většinou vy- hnout. Zejména se pak zamezí vzniku prázdných „děr“ v I'(u', v'). Tento druh mapování však pro výpočet původních souřadnic vyžaduje inverzi původní transformace [2] − (u ,v)=T 1(u' ,v '). (2) U diskrétního 2D obrazu vzniká problém, kdy transformace, jako např. zvětšení obrazu, odhalí nedostatek informací v původních diskrétních datech, následkem čehož v novém obraze vznika- jí zmíněné díry [1], pixely, které nemohou nést informaci o barvě. Tento problém je způsoben nedostatečným vzorkováním digitalizovaného signálu. Běžně se proto řeší novým sejmutím a digitalizací hodnot původní spojité obrazové funkce (např. nové skenování, nafocení, vykres- lení vektorových dat), nebo rekonstrukcí a převzorkováním [1] (kap. 2.3). 2.3 Převzorkování Při přechodu ze spojité obrazové funkce na diskrétní se ztratí množství dat, která jsou ale dů- ležitá při některých obrazových transformacích, např. při zvětšení rozlišení obrazu. Aby nedo- cházelo ke vzniku prázdných pixelů (kap. 2.2), je nutné původní spojitý obraz rekonstruovat, tj. přejít z diskrétní obrazové funkce zpět na spojitou. Na této funkci je možné provést poža- dovanou geometrickou transformaci. Výsledné neceločíselné hodnoty se poté znovu vzorkují, tentokrát s vyšší frekvencí. Tento proces je nazýván „převzorkováním“ [1]. 2.4 Interpolace Spojitou funkci lze z diskrétních dat digitalizovaného obrazu získat už pouze aproximací. Právě způsob aproximace určuje různé metody, které se liší kvalitou a rychlostí [1]. Pro dopočí- tání mezilehlých hodnot mezi jednotlivými pixely vzorkované funkce se používá interpolace. Její účel je co možná nejpřesněji určit optimální hodnotu spojité funkce v jakémkoliv čase mezi body obrazu, aby
Recommended publications
  • Openbsd Gaming Resource
    OPENBSD GAMING RESOURCE A continually updated resource for playing video games on OpenBSD. Mr. Satterly Updated August 7, 2021 P11U17A3B8 III Title: OpenBSD Gaming Resource Author: Mr. Satterly Publisher: Mr. Satterly Date: Updated August 7, 2021 Copyright: Creative Commons Zero 1.0 Universal Email: [email protected] Website: https://MrSatterly.com/ Contents 1 Introduction1 2 Ways to play the games2 2.1 Base system........................ 2 2.2 Ports/Editors........................ 3 2.3 Ports/Emulators...................... 3 Arcade emulation..................... 4 Computer emulation................... 4 Game console emulation................. 4 Operating system emulation .............. 7 2.4 Ports/Games........................ 8 Game engines....................... 8 Interactive fiction..................... 9 2.5 Ports/Math......................... 10 2.6 Ports/Net.......................... 10 2.7 Ports/Shells ........................ 12 2.8 Ports/WWW ........................ 12 3 Notable games 14 3.1 Free games ........................ 14 A-I.............................. 14 J-R.............................. 22 S-Z.............................. 26 3.2 Non-free games...................... 31 4 Getting the games 33 4.1 Games............................ 33 5 Former ways to play games 37 6 What next? 38 Appendices 39 A Clones, models, and variants 39 Index 51 IV 1 Introduction I use this document to help organize my thoughts, files, and links on how to play games on OpenBSD. It helps me to remember what I have gone through while finding new games. The biggest reason to read or at least skim this document is because how can you search for something you do not know exists? I will show you ways to play games, what free and non-free games are available, and give links to help you get started on downloading them.
    [Show full text]
  • An Introduction to Computer Games Why Are They Important to Us All?
    An Introduction to Computer Games Why Are They Important To Us All? Linux Users of Victoria Melbourne 2013 Andrew Pam Serious Cybernetics sericyb.com.au Introduction ● Computer games are a distinct medium of artistic expression like books, comics and films ● Now financially significant - US$66B global revenue in 2013 (Activision Blizzard US$5B); compare with film industry global theatrical revenue US$35B in 2012 ● Drives development of graphics hardware and software, and in earlier years also audio ● Good for you! (Therapy, mental wellbeing, socialisation, learning) Videogames and Wellbeing: A Comprehensive Review Overview ● Game types (platforms and purposes) ● Game genres ● Emulators and engines ● Game development ● Where to get Linux games ● More information Game types Platforms Purposes ● Desktop ● Advertising ● Mobile (handheld, ● Art phone and tablet) ● Education ● Console ● Entertainment ● Web ● Serious ● Arcade Game genres ● Action ● Puzzle ● Action-adventure ● Role-playing ● Adventure ● Simulation ● Classic (board, card) ● Sports ● Music ● Strategy ● Party ● Tactical ● Programming ● Trivia Action games ● Ball and paddle ● Beat 'em up (hand-to-hand), hack and slash (melee weapons) ● Fighting (one-on-one combat) ● Maze ● Pinball ● Platform ● Shooter: First-person, Massively Multiplayer Online (MMOFPS), Light gun, Arcade, Tactical, Rail, Third-person Adventure games ● Stealth ● Survival horror ● Text ● 2D graphical ● Visual novels ● Interactive movies ● Real-time 3D Role-playing games ● Western: non-linear storyline ● Japanese: typically
    [Show full text]
  • Arcade Machine Reloaded Build Documentation
    Arcade Machine Build Documentation v5.0 Revision Date: 2011-02-03 Author: Jeremy Riley (AKA Zorro) http://www.flashingblade.net Table of Contents Arcade Machine Reloaded Build Documentation....................................................................5 Introduction.................................................................................................................................5 Windows & MAMEWah Build..............................................................................................................5 MAMEWah Quickstart................................................................................................... 6 Hardware Notes:....................................................................................................... 11 Arcade Monitor Settings.................................................................................................................11 Arcade Keys...............................................................................................................................12 Tuning MAMEWah...................................................................................................... 13 MAME Resolutions.........................................................................................................................13 Using Custom Layouts....................................................................................................................13 Artwork.......................................................................................................................................................................................................................13
    [Show full text]
  • FCEUX Help Menu
    Introduction Introduction Basic information about FCEUX and its features. Introduction Overview FCE Ultra Version History What's Combined In FCEUX? 2008 This help file has been generated by the freeware version of HelpNDoc Introduction Welcome to the FCEUX Help menu. The following information is about how to use FCEUX, its commands, how to use FCEUX to its fullest, and the communities for which FCEUX is designed. Introduction Basic information about FCEUX and its features. Overview FCE Ultra Version History What's Combined In FCEUX? Additional Chapters General Guides for general uses of FCEUX and the FCEUX NES menu. Config Commands under FCEUX Config menu. Tools Commands under FCEUX Tools menu. Debug Commands under FCEUX Debug menu. FAQ / Guides Information regarding various concepts such as TAS, ROM Hacking, RAM Mapping. Technical Information Technical information relating to NES hardware emulation & FCEUX file formats. Help menu created & compiled by adelikat. Information collected and/or written/edited by adelikat. Minor edits of lua-related text by Leeland Kirwan (FatRatKnight). 2008 This help file has been generated by the freeware version of HelpNDoc Overview FCEUX FCEUX is a cross platform, NTSC and PAL Famicom/NES emulator that is an evolution of the original FCE Ultra emulator. Over time FCE Ultra had separated into many separate branches. The concept behind FCEUX is to merge elements from FCEU Ultra, FCEU rerecording, FCEUXD, FCEUXDSP, FCEUXDSP CE, and FCEU- mm into a single branch of FCEU. As the X implies, it is an all- encompassing version of the FCEU emulator that provides the best of all worlds for the general player, the ROM-hacking community, and the Tool- Assisted Speedrun Community.
    [Show full text]
  • Funbox Classic Between the Wall Charger and Solar Panel to Avoid Two Charging Sources Afflicting the Battery at the Same Time
    mechanical relay in the charging circuit will alternate FunBox Classic between the wall charger and solar panel to avoid two charging sources afflicting the battery at the same time. Stephen Caskey, Anna Iskender, Nick Johnson, An LED indicator light will provide an indication for the Kyle McCleary user as to what the charging status of the battery is, as well as when the battery reaches a low enough voltage to need Dept. of Electrical Engineering and Computer to be recharged. Finally, an exterior case will consider all Science, University of Central Florida, Orlando, of the components to be arranged to allow for a Florida, 32816-2450 comfortable user gaming experience, along with an aesthetically pleasing design. Abstract — The Funbox Classic (FBC) project yields a portable, handheld game console design designated for II. SYSTEM OVERVIEW friendly user interface with a touch of nostalgia. The final The core concept behind the FunBox Classic will be prototype will emulate five vintage console platforms and deliver a complete gaming experience, including comforts of explained here, along with highlighting other key concepts LCD screen display, handheld button command controller necessary for the proper functionality of the system, which operations, and all other amenities to enhance the user’s will be explained in more detail. experience. Integrated auxiliary features, such as alternative source battery charging circuits and Bluetooth controller A. Standard Operating Flow interaction will further offer modern features to a classic device. Complete with a custom case design, the FBC bridges The operation of the device begins with the user the past with the present for a unique gaming experience.
    [Show full text]
  • Metadefender Core V4.14.2
    MetaDefender Core v4.14.2 © 2018 OPSWAT, Inc. All rights reserved. OPSWAT®, MetadefenderTM and the OPSWAT logo are trademarks of OPSWAT, Inc. All other trademarks, trade names, service marks, service names, and images mentioned and/or used herein belong to their respective owners. Table of Contents About This Guide 11 Key Features of Metadefender Core 12 1. Quick Start with MetaDefender Core 13 1.1. Installation 13 Operating system invariant initial steps 13 Basic setup 14 1.1.1. Configuration wizard 14 1.2. License Activation 19 1.3. Process Files with MetaDefender Core 19 2. Installing or Upgrading Metadefender Core 20 2.1. Recommended System Requirements 20 System Requirements For Server 20 Browser Requirements for the Metadefender Core Management Console 22 2.2. Installing Metadefender 22 Installation 22 Installation notes 23 2.2.1. Installing Metadefender Core using command line 23 2.2.2. Installing Metadefender Core using the Install Wizard 25 2.3. Upgrading MetaDefender Core 25 Upgrading from MetaDefender Core 3.x 25 Upgrading from MetaDefender Core 4.x 26 2.4. Metadefender Core Licensing 26 2.4.1. Activating Metadefender Licenses 26 2.4.2. Checking Your Metadefender Core License 33 2.5. Performance and Load Estimation 34 What to know before reading the results: Some factors that affect performance 34 How test results are calculated 35 Test Reports 35 Performance Report - Multi-Scanning On Linux 35 Performance Report - Multi-Scanning On Windows 39 2.6. Special installation options 42 Use RAMDISK for the tempdirectory 42 3. Configuring MetaDefender Core 46 3.1. Management Console 46 3.2.
    [Show full text]
  • The First Level of Super Mario Bros. Is Easy with Lexicographic Orderings and Time Travel
    The First Level of Super Mario Bros. is Easy with Lexicographic Orderings and Time Travel . after that it gets a little tricky. Dr. Tom Murphy VII Ph.D.∗ 1 April 2013 Abstract paper is mainly as a careful record of the current sta- tus for repeatability and further development on this This paper presents a simple, generic method for au- important research subject. A short video version of tomating the play of Nintendo Entertainment System this paper is available for those that hate reading, at games. http://tom7.org/mario, and is the more fun way to consume the results. This page also contains audiovi- Keywords: computational super mario brothers, mem- sual material that makes this work more entertaining ory inspection, lexicographic induction, networked enter- (for example, its output) and source code. tainment systems, pit-jumping, ... The basic idea is to deduce an objective function from a short recording of a player's inputs to the game. The objective function is then used to guide search over pos- 1 Introduction sible inputs, using an emulator. This allows the player's notion of progress to be generalized in order to pro- The Nintendo Entertainment System is probably the duce novel gameplay. A design goal is that the objective best video game console, citation not needed. Like function be amusingly elegant (not at all smart, fancy, many, I have spent thousands of hours of my life playing or customized to the game) in order to demonstrate NES games, including several complete playthroughs that the game is reducible to such a simple objective.
    [Show full text]
  • How to Download Nintendo Emulator for Pc How to Install a Nintendo DS Emulator on PC Or Mac
    how to download nintendo emulator for pc How to Install a Nintendo DS Emulator on PC or Mac. This article was co-authored by our trained team of editors and researchers who validated it for accuracy and comprehensiveness. wikiHow's Content Management Team carefully monitors the work from our editorial staff to ensure that each article is backed by trusted research and meets our high quality standards. This article has been viewed 46,746 times. This wikiHow teaches you how to install DeSmuMe emulator, a Nintendo DS emulator, on Windows and macOS. DeSmuMe is the only DS emulator that works for both PC and Mac. To run it, you will need Windows Vista SP2 or later or Mac OS X v10.6.8 Snow Leopard or later. Citra. Citra is a Nintendo 3DS emulator for PC that can run commercial games at 100% of their speed. Plus it can improve the games' graphics way past their humble Nintendo resolution. The emulator can display both screens at the same time, though if you prefer you can set it to one screen at a time by assigning a button to alternate between screens. As far as the controls, you can use the keyboard or map the controls to an external gamepad. You can also use the touchscreen controls by setting the cursor directly on the point where you want to click. Citra can run a wide range of games from the Nintendo 2D and 3D catalog, though it's in the 3D games where it really shines. It completely transforms the resolution of the games to the point that you wouldn't even guess they come from a handheld console.
    [Show full text]
  • Opentuner: an Extensible Framework for Program Autotuning
    OpenTuner: An Extensible Framework for Program Autotuning Jason Ansel Shoaib Kamil Kalyan Veeramachaneni Jonathan Ragan-Kelley Jeffrey Bosboom Una-May O’Reilly Saman Amarasinghe Massachusetts Institute of Technology Cambridge, MA {jansel, skamil, kalyan, jrk, jbosboom, unamay, saman}@csail.mit.edu ABSTRACT can often make the optimization process more efficient Program autotuning has been shown to achieve better as autotuners are able to search larger spaces than is or more portable performance in a number of domains. possible by hand. Autotuning also provides performance However, autotuners themselves are rarely portable between portability, as the autotuning process can easily be re-run on projects, for a number of reasons: using a domain-informed new machines which require different sets of optimizations. search space representation is critical to achieving good Finally, multi-objective autotuning can be used to trade off results; search spaces can be intractably large and require between performance and accuracy, or other criteria such advanced machine learning techniques; and the landscape of as energy consumption and memory usage, and provide search spaces can vary greatly between different problems, programs which meet given performance or quality of service sometimes requiring domain specific search techniques to targets. explore efficiently. While the practice of autotuning has increased in This paper introduces OpenTuner, a new open source popularity, autotuners themselves often remain relatively framework for building domain-specific multi-objective pro- simple and project specific. There are three main challenges gram autotuners. OpenTuner supports fully-customizable which make the development of autotuning frameworks configuration representations, an extensible technique rep- difficult. resentation to allow for domain-specific techniques, and an The first challenge is using the right configuration easy to use interface for communicating with the program to representation for the problem.
    [Show full text]
  • Retrofe User Manual V1.0 Table of Contents
    RetroFE User Manual V1.0 Table of Contents 1 Introduction......................................................................................................................................2 2 Basic Installation Instructions..........................................................................................................3 3 Detailed Setup Guide........................................................................................................................4 3.1 Linux vs Windows....................................................................................................................4 3.2 Linux library installation..........................................................................................................4 3.3 Compiling RetroFE on Linux...................................................................................................4 3.4 Windows library installation.....................................................................................................5 3.5 Compiling RetroFE on Windows..............................................................................................5 3.6 Post installation.........................................................................................................................6 3.7 Configuration............................................................................................................................6 3.8 Adding collections....................................................................................................................6
    [Show full text]
  • Senior Design 2 Main System Milestones
    FunBox Classic (FBC) Senior Design II - Project Documentation August 7, 2015 Group 14 Stephen Caskey Anna Iskender Nick Johnson Kyle McCleary Contents 1. Executive Summary ........................................................................................... 1 2. Project Description ............................................................................................. 2 2.1 Project Motivation ......................................................................................... 2 2.2 Goals and Objectives ................................................................................... 2 2.3 Requirement Specifications ......................................................................... 3 2.4 Standards and Constraints ........................................................................... 4 2.4.1 Standards .............................................................................................. 4 2.4.2 Identification and Review of Related Standards .................................... 6 2.4.3 Constraints ............................................................................................ 6 2.4.4 Impact of Realistic Design Constraints ................................................ 11 3. Research Related to Project ............................................................................ 12 3.1 Existing Similar Projects and Designs ........................................................ 12 3.1.1 Instructables How to Make a Portable Game System by 1up ............. 12 3.1.2 Adafruit PiGRRL .................................................................................
    [Show full text]
  • Implementing the Nintendo Entertainment System on a FPGA
    Implementing the Nintendo Entertainment System on a FPGA Jonathan Sieber June 25, 2013 Contents 1 Introduction3 1.1 NES Technical Data.........................3 1.2 FPGA Reimplementation......................4 1.3 Goal..................................4 2 Nintendo Entertainment System6 2.1 History................................6 2.2 Hardware Overview.........................7 2.3 Central Processing Unit.......................9 2.4 Picture Processing Unit....................... 10 2.5 Audio Processing Unit........................ 15 2.6 Cartridge............................... 16 2.7 Controller Input........................... 17 3 Emulation 18 3.1 Early Emulation approaches..................... 19 3.2 Cycle-accurate Emulation...................... 19 3.3 Applications.............................. 20 3.4 Sources of information........................ 20 4 FPGA Implementation 21 4.1 Top Module.............................. 21 4.2 CPU.................................. 21 4.3 Cartridge............................... 23 1 4.4 PPU.................................. 24 4.5 Controller Input........................... 26 4.6 HDMI Output............................ 27 4.7 APU.................................. 28 4.8 AC97 Output............................. 29 4.9 Utilization Report.......................... 29 5 Testing Tools 31 5.1 Testbenches.............................. 31 5.2 Testing ROMs............................ 32 5.3 Self-written Tools........................... 33 5.4 MyHDL................................ 34 5.4.1 Code Example.......................
    [Show full text]