Project Overview:The goal of this project is to create a software interface that runs on modern PC's to facilitate backing up N64 cartridges with the Gameshark Pro. It should support LPT ports built into the motherboard, PCI expansions that add an LPT port, and USB - LPT adaptors. It should also be OS-independent, free, and open-source to allow maintenance over time as technology progresses.
Background:In the past, I have directed folks who ask about dumping their own N64 cartridges
to use the Gameshark Pro. It is considerably cheaper than the Doctor V64 for example, and is readily available on places like eBay. The main drawback is that the software required to facilitate the cartridge dump is ancient, and only works reliably on Windows 98 (can be made to work on Windows XP and maybe later with some tweaking, but is unstable).
Additionally the outdated software only works reliably with a DB25 LPT port built into the motherboard (which few modern computers have). LPT ports added through PCI expansion slot are hit-and-miss (a hack is required to get it working, which itself limits the OS), and I have not read any posts about successful use with a USB - DB25 adaptor.
The software is not compatible on WINE, so Mac and Linux users have an even more difficult time. (no longer accurate) For the average user, what this means is that the only way to reliably and affordably dump their N64 cartridges is with a dedicated laptop or PC that has a built-in LPT port and is running Windows 98.
(a simpler solution is to run the software on a lightweight Linux like Lubuntu, using WINE)It is time for a solution that is OS-independent and open-source, so it can adapt to changing technologies and operating systems over time, rather than being proprietary, abandoned, and left in the dust.
Getting Started:I plan to build most of the UI and backend in JAVA There will be a small native component (since Java does not directly support LPT communication), linked via JNI. Backend and UI will be modular, to allow easy porting to other systems. To drive this goal, I intend to write an Android port of the software to use with USB OTG cable plus USB - LPT adaptor (this will force me to keep the UI and backend separate).
For the native component, I will be drawing from the open-source projects
GSUploader,
gs_libusb, and
n64rd. These projects include the basics for communicating with the GameShark Pro through the LPT port, and should be an excellent starting point for the project. GSUploader operates on both Windows and Linux, which supports my goal of OS-independence. Gs_libusb is a fork of GSUploader demonstrating use of a USB to LPT adapter, which is another of my goals. And n64rd specifically demonstrates dumping a ROM, which of course is my ultimate goal here.