1. Project Scope - Planet Virtual Boy Emulator
The high-level goal of the project is to produce an emulator for Nintendo Virtual Boy in collaboration with fan website Planet Virtual Boy:
- The primary implementation is a portable "emulation core" module. The core is a self-contained library that affords versatility due to its portability and ease of integration into other software development projects.
- Project applications for the core library include a Nintendo 3DS homebrew package and a cross-platform desktop application.
Additionally, the project aims to produce comprehensive documentation of the internal operations of the Virtual Boy unit, including any behaviors discovered through reverse engineering.
The emulation core library is written in the C programming language: C was selected because of its widespread availability and its overall efficiency. Things expressed in C code undergo very few changes when converted to machine code, making it ideal for low-level development. Furthermore, the core implementation is only pure C code, without the use of any external libraries or even the standard runtime. This eliminates any reliance on implementation dependent features and minimizes the memory required for it to operate.
The Nintendo 3DS homebrew app uses the C emulation core library as its simulation backbone. The software provides an interface between the core and user intput, video and audio output, and communications. Certain software features pertain to the 3DS side of things, but for the most part it serves as a front-end to the emulation core.
The desktop application is intended for use on desktop workstations, targeting users interested in reverse engineering and "TAS" projects. All of the application's features are provided by Java/Swing, and as such maximize availability across CPU architectures and desktop operating systems including Microsoft Windows, Mac OS X and various "Unix-like" platforms. The C emulation core library is still used, accessed via the Java Native Interface. In the event the application is launched on a platform that does not have a native build of the C core library, a Java implementation of the core library will be used instead.