Tricking NES games to run on laptops

Lead Author Major

Computer Science

Lead Author Status

Senior

Format

SOECS Senior Project Demonstration

Faculty Mentor Name

Shon Vick

Faculty Mentor Department

Computer Science

Additional Faculty Mentor Name

Osvaldo Jimenez

Additional Faculty Mentor Department

Computer Science

Abstract/Artist Statement

One of the fundamental problems in software engineering is that software only runs on the hardware it was designed to run on. If a language such as assembly is used, the resulting code can only run on the hardware that supports it. Higher level languages also only work for systems that have a compiler for them. The benefit of having platform specific code is that it allows programmers to apply system level optimizations, but has the downside of being platform specific. Once the platform is outdated or is no longer in development, the old code can no longer be run.

In an attempt to solve this problem, one can write code that emulates the behavior of older systems, thereby “tricking” the older software to run on current hardware. Such an emulator requires software components for each individual piece of hardware. The complexity lies in the fact that systems have multiple processing units that run in parallel, whereas code by its very nature (the Von Neumann Architecture) is sequential. Older systems also had additional hardware that would be plugged in through cartridges to expand the original system’s capabilities. These ASICs must be emulated accurately as well to run the programs.

To understand how the NES works at the lowest level, documents that were written detailing the original hardware were used. A lot of time was spent reading about the results of reverse engineering the hardware and designing a program that accurately modeled it. Audiences can expect a detailed description of how the internals of the NES worked, along with playing some NES games using the emulator.

Location

School of Engineering & Computer Science

Start Date

4-5-2018 2:30 PM

End Date

4-5-2018 4:00 PM

This document is currently not available here.

Share

COinS
 
May 4th, 2:30 PM May 4th, 4:00 PM

Tricking NES games to run on laptops

School of Engineering & Computer Science

One of the fundamental problems in software engineering is that software only runs on the hardware it was designed to run on. If a language such as assembly is used, the resulting code can only run on the hardware that supports it. Higher level languages also only work for systems that have a compiler for them. The benefit of having platform specific code is that it allows programmers to apply system level optimizations, but has the downside of being platform specific. Once the platform is outdated or is no longer in development, the old code can no longer be run.

In an attempt to solve this problem, one can write code that emulates the behavior of older systems, thereby “tricking” the older software to run on current hardware. Such an emulator requires software components for each individual piece of hardware. The complexity lies in the fact that systems have multiple processing units that run in parallel, whereas code by its very nature (the Von Neumann Architecture) is sequential. Older systems also had additional hardware that would be plugged in through cartridges to expand the original system’s capabilities. These ASICs must be emulated accurately as well to run the programs.

To understand how the NES works at the lowest level, documents that were written detailing the original hardware were used. A lot of time was spent reading about the results of reverse engineering the hardware and designing a program that accurately modeled it. Audiences can expect a detailed description of how the internals of the NES worked, along with playing some NES games using the emulator.