By Danny Matthews Supervised by Dr Des Watson
8 Bit 8 Bit console released in Million 60 Million Units Sold 1000 Released Titles Over 1000 Released Titles Revitalising the Market Major Player in Revitalising the Market After the Crash of 1983 NES Emulation “A very precise form of simulation which enables one type of computer to operate as if it were a different type of computer.” - BCS NES Software NES Emulator Executes on Executed on
NES Four Main Units Central Processing Unit (CPU) Picture Processing Unit (PPU) Audio Processing Unit (APU) Input Development Tools Debugger Name Table Viewer Pattern Table Viewer Implemented using Java 1.5
2A0X – A Modified 6502 Processor Minus Binary Coded Decimal (BCD) mode Plus 22 Memory Mapped Registers CPU Implementation switch/case Implemented as a large switch/case construct Memory divided Memory divided into several objects to reflect the varied read/write behaviour.
Pattern Tables Sprites Name Tables
PPU Implementation primitive integer In contrast to the CPU, Memory stored as primitive integer arrays arrays read/write behaviour Additional structure unnecessary as read/write behaviour largely identical largely identical for all memory. Colour Palette Colour Palette handled within its own class. accurate NES colours Provides extremely accurate NES colours through use of a mathematical algorithm. alterable hue and tint Provides alterable hue and tint to emulate TV colour adjustment Kevin Horton Algorithm devised by Kevin Horton, implemented by David de Niese David de Niese
Voltages Voltages – Two (0 or 1) Volume – Volume – 16 Levels Pitch Bending Capabilities Pitch Bending Capabilities Voltages Voltages – Sixteen (0-15) Volume – Volume – Fixed Capable of Longer Play Duration Capable of Longer Play Duration Voltages – Two (0 or 1) Volume – 16 Levels Pseudo Random Bit Sequence Allows the Playback of samples from memory Allows the Playback of samples from memory Pulse (x2) Pulse (x2) Noise Noise Triangle DMC
Mixer Pulse 1 Pulse 2 Triangle Noise DMC Mixer Analogue Signal Sound Implementation mirror Designed to mirror the NES APU structure. Down-sampling Down-sampling required to output sound at hz as NES outputs samples at ~ hz. Volume Control Volume Control
Standard Controller Movement in Four Directions Two “Action” buttons Two “Control” Buttons Movement “Control” “Action” Input Implementation 8 bit register Button states stored within an 8 bit register Listeners Listeners used to detect button presses and releases Program reads the button states from the pads periodically User definable User definable button mapping
Debugger System State CPU Registers PPU Registers PPU State Breakpoint System Interrupt Points Register Value Points Step/Resume Functionality Disassembler Memory Viewer CPU Memory PPU Memory
Debugger Implementation System State Memory Viewer System State and Memory Viewer implemented via the manipulation of data obtained using accessor methods in the CPU and PPU. Disassembler Disassembler implemented via use of an opcode information lookup table. Index into the table via opcode number Retrieve pertinent information for opcode. Advance forward in file by length of opcode in bytes. Breakpoints Breakpoints added to and removed from a handler. Handler checks all breakpoint conditions each instruction.
Name Table Viewer Pattern Table Viewer Name Tables Scroll Lines Attribute Table Information Display Options Pattern Tables Tile and Palette Information Display Options Palettes
GraphicalAuditory