I’ve been interested in system emulation for a number of years now. One thing that is always a bit of a pain is managing the rom files that go with these programs. Applications exist such as EmulationStation and Launchbox but they solve the problem to varying degrees of success. Launchbox is the most complete system I’ve come accross but it is fairly complex and focused too much on the emulators rather than the games. EmulationStation is far easy to set up, using XML files, but again more focused on launch the emulators than organising or cataloguing the games. Indeed, EmulationStation in particular makes for a good frontend for a TV based system with a good 10ft interface.
What I’m really after is a program that approached the problem from different angle. More, in someways, like iTunes and how that manages MP3 music files. The 10ft interface is still a requirement, but behind the scenes what I really want is a more game oriented organisation system.
The way I see it every game has it’s own needs. You may have multiple versions of the same game on different systems. You may have several games for the same system that have different settings requirements, or indeed they may even run best on entirely different emulators. What I want is a system that is flexible system that allows you to mix and match as your needs require.
A couple of weeks back I used a program called DB Designer to layout the schema of an SQL database system that would be flexible enough to produce this kind of system. I’ve settled on Java using WindowBuilder to build the UI since that will create a single application that will run on Windows, Mac OS, and Linux without the need to do any porting or modifications of the code.
I found a nice embedded Database system called H2 that is SQL based and requires just one .JAR file to be imported into your applications that would then host the database system without the end user needing to install or setup anything extra. (In Eclipse, Project Menu, Properties, Java Build Path, Libraries, Add JAR).
I was able to export an SQL file from DB Designer with the SQL commands needed to build the database structure, this saves a lot of time. The Main class in the Java program opens the H2 database connection and if the structure isn’t already set up it reads in this file from the programs root directory and runs the SQL to build the schema.