Video Game Console Project

advertisement
STEVENS INSTITUTE OF TECHNOLOGY
Video Game Console
Project
CPE 322: Engineering Design VI
Mike Popoloski
Jack Alvino
Jon Lado
5/4/2011
We pledge our honor that we have abided by the Stevens Honor System.
Section 1: Introduction
1.1: Abstract
Video game consoles cover a wide range of engineering and computer science in their design and
operation. This paper will cover the design, technical details, and engineering and economic constraints
involved in building a student video game console that will be both useful and fun to play. Besides
exploring the technical hardware aspects, which are numerous, the paper will also cover the
programming interface and give some examples of games that would be fun and simple to build to
demonstrate the capabilities of the system. Finally, a critical self-evaluation of the project as a product is
given, demonstrating the feasibility of realizing it as an actual device.
1.2: Overview
Entertainment is a huge part of the modern economy in developed nations. A large portion of this
entertainment industry is concentrated in video games, which are software products that exist solely for
the amusement of their users. These video games can run on many modern computer platforms, but
they have also led to the rise of dedicated machines that only run games. These are given the name
“video game consoles”, and they by themselves constitute a multi-billion dollar industry that touches
upon every aspect of computer hardware and software development. This fact makes them very
interesting as a topic of study for student projects.
The project presented in this paper aims to investigate the technical and economic details behind video
game consoles by building a useable console out of commercially available parts. This console will not
only be a great educational experience for its builders, but also a fun, cheap, and useable machine that
can be played or sold for other enthusiasts interested in developing software for a free and “open
source” video game console.
The video game console project will focus on several distinct areas that will all be covered in this report.
Most of them cover the hardware that will be employed to realize the final machine. This hardware has
several jobs; it must easily support many different games, have a way to run game code, except player
input, and act upon it to achieve real-time responses. Additionally, it must generate output data in the
form of audio and video and transmit them to external output devices. All of these tasks require
different hardware components and interconnects.
Besides the hardware, there is also the matter of the programming environment required to develop
software applications that will run on the console. Without games, the console is useless. Thus, the
paper will explore the tools and expectations around the software portion of the project, and will
describe the mechanisms for developing and releasing the code for others to use and play. This facet of
the project is a unique selling point among commercial game consoles; all game consoles currently on
the market require large fees and notoriety in order to develop games for them. In contrast, our video
game console will support open source games, which incentives the purchase of the hardware both for
hobbyist development as well as play of a wide pool of free games.
This project ends up covering many areas of computer hardware and software development, and by
building the console the team will gain considerable experience in all of them. Video generation,
embedded systems, assembly language programming, real-time scheduling, digital system design, and
electronic circuits are all covered. Additionally, the team will gain experience designing, planning, and
executing a larger-scale engineering project that will have business and economic decision making
incorporated. This gives important real-world experience and will make the project a valuable point for
future resumes and job searches.
Section 2: Technical Information
2.1: Functional Overview
The following section gives a high-level block overview of the project hardware, and the various
subsystems that will be required in order to implement all of the desired features for the video game
console. Each subsystem is detailed and a list of requirements given and discussed.
Controller 1
Controller 2
Input Task
TV / Monitor
Power / Battery
Microcontroller
Output Task
Audio Output
Stored
Applications
SD Card Reader
Microcontroller
This is the main processor for the game console. It ties together the entire system and performs the
actions required to translate game code and user input into an output video and audio signal. It has
several discrete tasks:





Boot up and display a menu that contains all of the programs found on the attached SD card.
Allow the user to run one of the programs.
Draw power for the system from an attached battery or wall adapter.
Receive programming commands via USB for changing the firmware.
Reading input from the input task and sending it to the main game process.



Reading game code from the SD card into main memory.
Executing the game.
Sending the resulting output video and audio signals to the output devices; speakers, monitor,
TV, etc.
Input Task
Handles reading the attached NES controllers and correctly communicates with them via the established
protocol. Consolidates the input received and stores it in memory so that other tasks, such as the main
game task, can make use of it for changing the state of the game.
Controllers will be standard NES controllers, which are simple to interface with and have nostalgic
appeal.
Interfaces:

NES controller plugs. Might need to obtain these from an existing project and harvest them from
there.
SD Card Reader
Compiled applications will be stored on SD cards. A single SD card may have multiple applications stored
on it, in which case the CPU will read the list at startup and provide a menu on screen to allow the user
to select one and run it. Game data will also be saved to the card if necessary to provide “save states”.
Interfaces:

SD Card Reader (I2C possibly)
Output Task
Handles the rendering of game data and conversion of the graphics into video signals for the
appropriate output device: either NTSC composite or standard VGA color signal.
Additionally, it handles producing audio signals that will be sent to speakers to accompany the game and
provide auditory feedback.
Interfaces between output and microprocessor:



Composite video jack
VGA connector
Audio jack
2.2: Technical Description
This section gives an overview of the various hardware profiles considered to fulfill the functional design
provided in the previous section. These hardware overviews are presented in block diagram form to give
a quick visual aid. Further detail information is only given on the first design, since that is the one
ultimately chosen by the team as the most promising set of hardware for the project.
Design 1
This design emphasizes smaller and cheaper pieces of hardware in order to fulfill the functional contract.
It uses simpler NES controllers and the time-tested American NTSC signal as the output of the console.
This design most closely mimics the hardware of old-school Nintendo Entertainment System.
Additionally it makes use of the Parallax Propeller chip, a niche but innovative embedded processor that
should provide a great deal of power without sacrificing simplicity or ease of development.
NES Controller
NES Controller
Input Task
NTSC
12V Wall Adapter
Propeller Chip
Output Task
Audio Output
Stored
Applications
SD Card Reader
Design 2
This design focuses on more powerful components and fully featured peripherals, at the expense of
simplicity and cost. The ARM microcontroller is used in many commercial products, including mobile
devices and smaller video game consoles. Unfortunately these processors are usually costly and need to
be bought in vast bulk, making them less useful from our perspective.
Additionally, this design makes use of the Xbox 360 gamepad as its input peripheral. This controller is
more complex and feature-full than the NES controllers of the previous design, which provides more
opportunities for games but makes them harder to interface and program for.
Xbox Gamepad
Xbox Gamepad
Input Task
VGA Monitor
12V Wall Adapter
ARM
Processor
Output Task
Audio Output
Stored
Applications
CD Drive
Design Choice
The group has decided to go with Design 1, and as such hasn’t done as much in-depth research on the
second design. The reason for this is that the second design, while potentially more powerful, is also far
more complex and involves a much bigger investment than the first one, which cannot be afforded at
this particular point in time.
NTSC Output
Signals
NTSC is the standard used for North American video signal. For color, the signal was a combination of
red, blue, and green. Three signals must be transmitted to see the color. These signals can be a
combination of the three.
References:
http://courses.cit.cornell.edu/ee476/FinalProjects/s2006/kwj5_mhw23/index.html
http://cnyack.hom estead.com/files/modulation/ntsc_sig.htm
Ports + Interface
For the game console we are using a propeller chip. The propeller chip is capable of generating its own
video signals. It can generate NTSC signals, as long as it is defined in the code which type of signal needs
to be generated. To view the generated material, a RCA to RCA cable can be connected from the
propeller setup and into the TV. This also depends on where it is getting connected to. For a TV, an RCA
cable can be used. If a computer is needed for display, a VGA cable would be needed. This would be
connected to computer and the console.
Therefore, since the console generates its own video signals, only the proper ports are needed to
connect the console to a display. For a TV, a RCA cable is used, and for a computer monitor, a VGA cable
is used.
SD Card Interfacing
Applications the microcontroller reads will be stored on a secure digital (SD) card. There are multiple
methods to interface an SD card with a microcontroller, but this project will like use the most common
method of Serial Peripheral Interface (SPI). The two figures below illustrate the pin assignments for the
cards:
(Source: http://alumni.cs.ucr.edu/~amitra/sdcard/Additional/sdcard_appnote_foust.pdf)
To properly interface a card with the microcontroller, a socket will be mounted on the PCB and then
interfaced using the above pin assignments as reference. Any simple socket that allows for easy access
to the card for removal/replacement will work, such as the one found at
http://www.sparkfun.com/products/136.
The SPI interfacing method chosen is relatively straightforward, and is supported by the Propeller
Microcontroller used to design this system. It requires only four connections between the SD card and
the microcontroller, specifically pins 1, 2, 5, and 7 on the SD card. The rest of the inputs are then pulled
up with resistors, with the exception of the two ground ports that are grounded as necessary.
Another option for interfacing is Inter-IC bus, or I2C. It is a two wired serial bus, as opposed to the SPI
four-wires. However, it cannot achieve data rates as high as SPI interfacing and does not have duplex
capability of having data streaming from master to slave and slave to master simultaneously. While this
duplex capability may not be necessary for this project, it should be noted that having more potential
features that could possibly lead to easier implementation of other project parts is always a good thing.
References:
http://www.eetimes.com/discussion/beginner-s-corner/4023908/Introduction-to-Serial-PeripheralInterface
http://www.eetimes.com/discussion/beginner-s-corner/4023816/Introduction-to-I2C
NES Controller Input
The controllers for the Nintendo Entertainment System will be repurposed for use with the video game
console being developed.
The old NES interface is very simple to hook up and connect to. It uses a serialized polling mechanism,
which takes input from the microcontroller’s clock and latches the state of the buttons at a given time
pulse. Then the button states can be sent, one at a time, across the data wire.
Pinout:
+---->
|
5 +---------+ 7
| x x o
\
| o o o o |
4 +------------+
| | | |
| | | +->
| | +---->
| +------->
+---------->
Power
(white)
1
Ground
Pulse
Latch
Data
(brown)
(red)
(orange)
(yellow)
Signal Diagram:
References:
http://www.mit.edu/~tarvizo/nes-controller.html
Power / Battery
This step will use a simple AC-to-DC wall adapter, which can be easily purchased from any electronics
shop. There aren’t any particular specifications to conform to here, except that the microcontroller
circuitry requires a certain voltage, which will be stepped down from the 12 V wall adapter via a series
of on-board regulators.
Microcontroller
Arguably the most important part of the project, the microcontroller for the console needs to perform
several important duties in order for the machine to be useful as a gaming platform. These include
loading stored applications from removable storage, displaying the list during a boot sequence, allowing
the user to select a game to run, and then loading and executing game code in order to run the
simulation and provide the necessary gaming experience.
As part of this process, the microcontroller will accept input from the attached gaming controllers,
receive power from the power system, and use them to affect changes in the state of the virtual game
world. The game will make the necessary calls to generate visual and audible feedback to communicate
changes in the virtual world to the user. This feedback will be fed via the microcontroller into the
external NTSC and audio ports via RCA connectors. These can then be used to connect the entire
console to external hardware such as a TV and speakers that can display this information to the user.
For the microcontroller, the project will be using the Parallax Propeller microcontroller, which has 8
independent cores, or “cogs”, which will perform the various functions of our game console.
The following is an example Propeller development board sold by Parallax:
For our project, we will be buying stand-alone chip packages and building them into our PCBs, which run
at $7.99 for single purchases.
The key feature specs of the Propeller chip are as follows (listed on the Parallax reference information):










Model Number: P8X32A-Q44
Processors (cogs): Eight
Architecture: 32-bits
System Clock Speed: DC to 80 MHz
Global RAM/ROM: 64 K bytes; 32 K RAM / 32 K ROM
Cog RAM: 512 x 32 bits each
I/O Pins: 32 (simultaneously addressable by all eight cogs)
Current Source/Sink per I/O: 40 mA
Clock Modes: (a) External crystal 4 -8 MHz (16 x PLL) (b) Internal oscillator ~12 MHz or ~20 kHz
(c) Direct drive
Package Type: 44-pin QFP




Power requirements: 2.7 to 3.3 VDC
Communication: Serial for programming
Dimensions: 0.39 x 0.39 x 0.05 in (10 x 10 x 1.4 mm)
Operating temp range: -67 to +257 °F (-55 to +125 °C)
The Propeller is a rather unique chip in that it has eight independent cores, or “cogs”, that combine their
processing power to perform the various functions necessary for the hardware product. It utilizes a
round-robin memory hub that switches deterministically between each core at every clock cycle. This
allows for the development of very specific programs that take advantage of the deterministic behavior
to maximize the performance of the hardware.
An overview of the Propeller chip is given:
Programming Environment
As can be seen from the functional and technical block diagrams, the design of the video game console
depends on storing application code and assets on external SD cards and loading them at runtime
through a boot loader stored on the chip itself. These applications need to be written and compiled first,
and the details of doing that will be covered in this section.
The Parallax Propeller chip uses two different programming languages in order to achieve
programmability. First, like all microcontrollers, it accepts a variation of assembly called PASM (Propeller
ASM) that is compiled into object code and loaded onto the chip via USB or serial connections to a PC.
These PASM programs run on a single core of the chip, but can launch additional cores and point them
at various blocks of memory that constitute instructions to execute.
Additionally, the Propeller chip has a high-level language interpreter built right into its ROM. This
language is called Spin, and is the entry point for all programs written for the Propeller. The main Spin
interpreter starts up and runs the main entry point for the application, which can then start additional
cores as necessary. Spin provides a high-level interface for all of the chips operations, and gives
additional instructions that are not natively supported by the hardware. Since it is interpreted, it is
slightly slower than hardware PASM instructions, and for that reason is useful for game code but not as
useful for low level graphics and audio signal generation and driving.
The Propeller programs can be compiled into object code on the PC and then saved in raw binary format
and loaded onto an SD card. These cards can then be read at runtime by a program written specifically
to test the SD port and read the binary format there. There is no virtual memory system for the
Propeller, so executing data as code is as simple as moving it into main memory and setting the
instruction pointer to point at the start of this data. Using this method, hot-swapping of applications can
be accomplished without much difficulty.
The Propeller comes with an IDE that helps write, compile, and test the programs as they are written,
rather than waiting for the programming of the processor. A screenshot of the IDE is given below:
This application also assists with easily loading applications over a USB interface to a connected
Propeller chip through additional dedicated hardware. This mechanism will be used to upload firmware
updates to the Propeller.
Besides application instructions, games also require external data, such as sprites, background graphics,
tile images, audio files, and game scripts. All of this external data can be stored alongside the application
in the SD card and accessed at runtime as necessary. Since the Propeller doesn’t have much internal
memory, an external memory source will most likely be necessary in order to achieve playable
performance for games requiring more memory.
References:
http://www.parallax.com/tabid/832/Default.aspx
Drivers
Along with the hardware, various software drivers will be provided in order to assist others in writing
programs for the video game console. These drivers will simplify various commonly performed aspects
of game development, such as generation of the NTSC signals for source images, reading of the NES
gamepad, generation of audio signals for sound effects, reading of the SD card for loading and saving
game data, and interfacing with external memory.
Some sample code already exists in the Propeller Object Exchange, an online repository of open source
Propeller objects that can be tailored by the team in order to provide a more specialized version suitable
for application development for the console.
In particular, the team will be using the Parallax NTSC driver as a reference for its own custom driver.
The NTSC specification has very precise signal timings that can be very difficult to program for efficiently.
By using the reference driver as a base, the team can take advantage of experts in the field without
having to invest time, energy, and money into developing a completely custom solution from scratch.
References:
http://obex.parallax.com/
2.3: Mathematical Principles
The video game console project uses many engineering and computing principles in its design and
development. These principles will be described in this section, along with supporting reference
information that will come into play if and when actual work on the project is begun.
Obviously, as a type of embedded system, there are many electrical and physical principles in play.
However, for the most part most of these are handled at a lower level and are thus not necessarily
integral parts of the design process. In addition to these, there are several principles related to the
hardware that are necessary for the design process; these include digital signal processing for the
handling of NTSC and audio signals, and the basics of electronic circuits, which is necessary for setting up
and laying out the circuit board for the console.
Digital signal processing is used to generate the signals necessary to create an image through the NTSC
specification. In short, electrical signals are run through a 3-bit digital to analog converter (DAC)
attached to three output pins of the digital Propeller chip. These pins have various resistors attached to
achieve the conversion from the digital signal to the analog signal necessary for the NTSC signal.
Further details on signal processing:
http://en.wikipedia.org/wiki/Digital_signal_processing
http://www.analog.com/en/processors-dsp/content/beginners_guide_to_dsp/fca.html
Additionally, since the project equally involves the development of software applications (games) to run
on the console, there are a whole host of software principles involved. There are the standard general
principles that apply to all software projects, as well as principles more closely attuned to the highly
parallel environment available in the Propeller chip. As such, the programmer will need to know object
oriented programming, embedded systems programming, the details of real time scheduling and
operating systems, and parallelization and concurrent programming.
References for these topics are given:
http://www.oodesign.com/design-principles.html
http://www.cs.wustl.edu/~schmidt/PDF/design-principles4.pdf
http://www.cs.rice.edu/~vs3/PDF/comp322-lec1-f09-v1.pdf
http://en.wikipedia.org/wiki/Parallel_computing
2.4 Performance Objectives
In order for the video game console to be useful, it must reach certain performance objectives. These
objectives are defined in order to provide a playable experience for the user. If the hardware is too slow,
it can fail to keep up with the pace of game play and cause frustration for the user, which is very bad.
This can be manifested in various ways, including jitter in the output video signal, hiccups in the audio
output, missed controller input events, and overall slowness of the game loop.
There are several standard metrics for the performance of commercial video games. Usually, the
running of a game is divided into discrete events called frames, during which input for the time instant is
evaluated, the simulation is advanced, and a single rendered image is output to the video device.
By calculating the number of game frames running per second, we can get a useful metric for
establishing the running time of a game that does not have any deterministic end point. For commercial
games, this “frames per second”, or FPS, is usually targeted at one of two values: 30 FPS or 60 FPS. This
seems like a good target for games running on the video game console being developed as well, so
everything being built will focus towards making this rate possible.
In addition to the overall system metric for speed, there are additional metrics imposed by the choice of
hardware. The system will run at 80 MHz for each of eight cores, leading to an upper bound on the
amount of processing time available to run game operations. Each SD card will have a maximum size,
which will limit the size of applications and their game data, as well as save states that can be stored.
Additionally, there is a maximum amount of memory that can be purposed at runtime to store
instructions and data. All of these hardware limits translate to restrictions on what the games written
for the platform can accomplish. All video game consoles have similar limits; the only difference is how
high they go before they start limiting applications.
There are also various timing limits imposed by the signals being used to generate output audio and
video. For example, as discussed earlier in the paper, the NTSC signal specification contains various
explicit timing requirements in order to generate a signal that is compatible with the spec. These signal
timings are complex and listed in the accompanying reference information. It is sufficient to know that
the NTSC driver will need to taking into account the running time of the various instructions it employs
and know how many can be scheduled between NTSC frames, otherwise improper video signals will be
generated and the display could be distorted or entirely absent.
One last performance metric that must be considered is the performance of the user input interface. In
this case, the input is given through the NES controllers, so the system must operate at a level of
performance sufficient to capture all input events as they become necessary to make decisions in the
state of the game. Otherwise, unexpected behavior will result during game play and users will quickly
become frustrated and cease playing the game and the system in general.
Section 3: Critical Evaluation of Project
3.1: The “Good”
Creating a video game console is an ambitious task that requires much work, and as such there are
naturally bound to be some aspects which are easier to accomplish than others. Fortunately, the
chosen design is one that makes use of modern technology to accomplish tasks that once required much
more complex designs. The design process helped to choose the most straightforward possible
implementations of the electronic components, allowing for many of the goals to appear easy to
complete. Unfortunately, it is likely that only a few will be as easy as they appear.
Easily the simplest part, but also a vital portion, is providing power to the board. Regulator circuits
would need to be built and added into the PCB design, with the voltage stepped down to the voltage
required by the microprocessor. To even further simplify this, voltage regulator integrated circuits could
be purchased to eliminate extra design steps. After the regulators are implemented, a common AC-toDC wall adapter will be used. This particular design aspect is relatively low stress compared to the rest
of the PCB board design, as it can be completely simply with many store bought components.
The input control scheme using the NES controller is another of the easy to implement project aspects.
Using “old-school” technology translates well into this design, as it allows for a much more simplified
approach than more modern equipment. The NES controls will only require five of its input pins to be
used, with two of those being power and ground. This leaves three that connect to the actual
microcontroller, meaning a relatively small amount of work to put in.
Interfacing with the SD card for reading games will also be a safe task. Since SD cards are a very
commonly used means of data reading, there are vast amounts of resources online that can assist in the
wiring of one to a microcontroller. Using SPI interfacing, only four ports of the microcontroller will need
to be dedicated to SD card reading. As with the NES controller there is ground and power connections
that need to be made, but small amounts of interfacing with the microcontroller leads to easy design
implementation.
3.2: The “Scary”
The actual construction of the PCB board is an extremely critical and sensitive task. The designs chosen
may appear to be rather simple, but the actual soldering process will most certainly be a daunting task.
Small errors in that stage of the project can result in major hardware complications, and finding out
where the errors in the soldering are can be an even more arduous task. Even worse than the design
simply not working due to soldering errors would be if some of the components were damaged in the
process, leading to increased costs and potentially setting the project behind schedule.
As far as individual component implementations, the video output is an extremely crucial component
that could lead to major problems. Properly amplifying the video signal could potentially be difficult,
and the visual output is certainly the first noticeable sign of project success. Without video being
generated, it would be impossible to debug and test the programmed games that are being played, and
would certainly lead to the project being considered a failure.
The thought of programmed games bring up another scary aspect, the actual programming involved.
Programming a game is a complex task that involves in-depth testing to make sure that the mechanics of
the game itself work, on top of creative thinking required to come up with unique and fun game ideas.
The games themselves would also have the limitations of the hardware to keep in mind, leading to some
further issues of memory requirements and overall game length. On top of dealing with the complex
hardware implementations, also having to worry about creating one or more successful games is a large
amount of work. Without games, the hardware is essentially useless. In fact, even with only one or two
working games the project will seem a lot less impressive.
3.3: The “Fun”
The fun of the project comes from working through the above difficulties. There will be immense
amounts of satisfaction to be had once the PCB has been verified to work correctly. There will also be a
lot of learning involved in the construction process, and although learning is not always considered fun
given the nature of this design it certainly will be interesting.
After the hardware is successfully created, and the first working game is successfully played, creating
more games will be significantly easier. On top of that, getting to play the games to test them and
seeing their evolution will be an extremely rewarding experience.
Perhaps the most fun part about the project is its potential. As with all gaming systems, there is a high
likelihood of multiplayer games being created. Multiplayer games would of course allow others to see
the success of the project, and there is a chance that other people with their own game ideas could
contribute to the project.
Potentially, a website could be hosted where the design of the system is shown with instructions on
creating one. Then a community could form where users can create and trade games with each other,
vastly increasing the library of games available. Bringing an idea like this to the internet, even without
any commercial success involved, would be an extremely unique experience and would most certainly
be something fun.
3.4: Project Funding
Funding from outside sources is a highly unlikely thing for this particular project. That being said, the
parts themselves are not extremely expensive and it is highly likely that it will be able to be completed
on a small budget. This project, however, has a unique option of obtaining “donated” software from
other amateur game designers. As previously discussed, potential trading or sharing of game ideas and
actual game code is a possible outcome of this project. Having outside help testing the hardware
limitations through increasingly complex game designs would be both useful and time effective, as it
would require little to no time spent by the group programming.
Section 4: Summary
In summary, the team is creating a retro video game console. Of course a team of three cannot create a
worthy competitor in a market dominated by big names such as Nintendo, Sony, and Microsoft, but a
team of three can definitely make a retro based console worth playing. Video games will always have
business, and retro style games have become increasingly popular with the release of indie games and
various downloadable “arcade” games. These games are very reminiscent of the 90’s Super Nintendo
Entertainment System, SEGA Genesis, and even some earlier consoles. Therefore the team aimed to
create a functioning retro style console.
The major components of the console are the Propeller microcontroller, the SD card reader, controllers,
wall adapter, and output cables. The microcontroller is the most important component, as it’s the main
processor in the console. It is what takes the inputs from the controller and game, and outputs it. It shall
contain a GUI menu that can interact with the controller inputs and whatever is on the SD card. It
receives power from the wall adapter and opens and runs the game. The microcontroller we are using is
a Propeller chip. This chip is very helpful in the development of the console, as it has its own coding
language which happens to be simple, and can display video. The chip contains eight independent cores,
each that perform separate tasks for the console, such as display video signals. The SD card reader
would be the next most important component in developing the console. It will be the way that users
can play the games, and even change the firmware of the console. Conveniently the chip can produce
video signals, as long as it is defined in the coding. That leaves the simple task of attaching a composite
cable to a TV or a VGA cable to a monitor to play and use the console. The controllers used are NES
controllers. These were chosen because they are easy to set up and have a very nostalgic feel. Of course,
the NES controllers would be for a prototype phase, and from there a similar and reminiscent controller
can be developed.
Research was conducted for this console as well. The group found articles about USB’s, SD card readers,
NTSC signals and interfaces, and much more. These are intended to give insight on how each works and
how it is applied and used in the console. Other articles dealt with the economy of video game consoles.
Most previous and retro consoles have been major successes, and it’s no wonder why they are
becoming popular again. There are types of competition that can threaten consoles, such as cloud-based
stores for PCs, but this can be put aside because it simply is for PCs. The group took into consideration
some sort of implementation to the console. But in conclusion it was learned that video games will
always have a big market, and even though a retro console might not be as big a hit as consoles out
now, it will definitely cater to those who share the same nostalgia.
Section 5: References
5.1: Cited References















http://courses.cit.cornell.edu/ee476/FinalProjects/s2006/kwj5_mhw23/index.html
http://cnyack.hom estead.com/files/modulation/ntsc_sig.htm
http://alumni.cs.ucr.edu/~amitra/sdcard/Additional/sdcard_appnote_foust.pdf
http://www.sparkfun.com/products/136
http://www.eetimes.com/discussion/beginner-s-corner/4023908/Introduction-to-SerialPeripheral-Interface
http://www.eetimes.com/discussion/beginner-s-corner/4023816/Introduction-to-I2C
http://www.mit.edu/~tarvizo/nes-controller.html
http://www.parallax.com/tabid/832/Default.aspx
http://obex.parallax.com/
http://en.wikipedia.org/wiki/Digital_signal_processing
http://www.analog.com/en/processors-dsp/content/beginners_guide_to_dsp/fca.html
http://www.oodesign.com/design-principles.html
http://www.cs.wustl.edu/~schmidt/PDF/design-principles4.pdf
http://www.cs.rice.edu/~vs3/PDF/comp322-lec1-f09-v1.pdf
http://en.wikipedia.org/wiki/Parallel_computing
5.2: Useful Websites



www.parallax.com
http://propeller.wikispaces.com/
http://obex.parallax.com/
5.3: Data Sheets


Propeller Datasheet:
http://www.parallax.com/Portals/0/Downloads/docs/prod/prop/PropellerDatasheet-v1.2.pdf
Propeller programming manual:
http://www.parallax.com/Portals/0/Downloads/docs/prod/prop/WebPM-v1.1.pdf
5.4: Useful Articles








http://www.faculty.iu-bremen.de/birk/lectures/PC1012003/14usb/FINAL%20VERSION/usb_protocol.html
http://www.differencebetween.net/technology/difference-between-sram-and-dram/
http://www.permadi.com/tutorial/raycast/index.html
http://www.pcworld.com/article/207891/inside_the_nintendo_entertainment_system.html
http://fms.komkon.org/EMUL8/NES.html
http://nesdev.parodius.com/NESDoc.pdf
http://electronics.howstuffworks.com/n64.htm/printable
http://wiki.superfamicom.org/snes/show/S-DD1
Section 6: Project Members
6.1: Jonathan Lado
Jon Lado is an electrical engineer at Stevens Institute of Technology. He has always been interested in
electronics and circuitry and in Stevens he seeks to further his knowledge of each. The project was fun
for him because he has always been into video games. He’s always dissected his old consoles and tried
to figure what each component does. Now as he learns more and more it’s interesting for him to recall
those times. This project was very nostalgic for him since it caught his interest in creating a console and
reminded him of the fun games he would play when he was younger.
6.2: Jack Alvino
Jack Alvino is a rising senior Electrical Engineering student at Stevens Institute of technology. He was
born and raised in Staten Island, New York until 14 years old, when he then moved to Bensalem,
Pennsylvania. He went to a small Catholic High School, excelling academically in math and science.
Unable to decide where to go with his life, he began exploring options, and attended a summer program
where a competition between mock businesses was held. Quickly realizing that business was not
something that even remotely interested him, his heart was set on engineering.
From an early age, Jack always had an interest in video games. His first console was an N64 at the age of
6, but he was playing Doom with his father on the PC before that. While keeping up with consoles,
computers became a much more interesting topic once he reached high school. By the time he
graduated, he had a goal of building his own. Since that time he has constructed and upgraded his own
personal PC in the interest of keeping up to date with the gaming advancements. When reading about
this project, there was a natural impulse to want to work on it due to his fascination with video games.
6.3: Michael Popoloski
Michael Popoloski is a student at Stevens Institute of Technology who is pursuing both a bachelor’s and
a master’s degree in computer engineering. His love for video games, computer hardware, and software
development led him to envision the idea for the project and work to see it come to fruition. As project
leader, Mike has worked to ensure that the team met the deadlines for the various reports and that the
ultimate decisions regarding design choices were made in the best interests of both the project and the
team. His love and fascination with the rewarding experience of software development will continually
urge him to better himself and the projects he works on.
Download