I've made quite a lot of work trying to "port" the structure of the video section into a program section, but I have no experience with c programming and I have some problems seeing the complete program flow. Now I'm struggling with some linker errors I can't figure out.
As I see it, the program section could be something as follow:
Contents:
- Files - Regular files that are invoked by the system default executable for a given file item and have no extended information
- Application - A given program executable with a minimum of extra information (web browsers etc.)
- Game - Games that could be a ROM or a executable. If no launcher is given just pass the file so the operating system can take care of it.
- ArcadeGame - Divorced from games, as MAME and similar ROMs often will use different sites for scraping and maybe some small differences in how the graphical art is presented in the GUI. Would use the same table as a game in the database
Games database:
- TITLE
- PLOT
- DESCRIPTION
- MAXPLAYERS
- VOTES
- RATING
- REGION (won't be used for arcade games)
- BOXART_URL (used some general naming since it might be "front cover" for usual games, but might be "cabinet" for arcade games)
- ALT_BOXART_URL (There's made room for alot of artworks since many (included myself) thinks that a big part of a great front-end for game collections. I also think this will interest people over at xbox-scenes emulator forum
- EXT_BOXART_URL
- ACTIONSHOT_URL (action and intro screenshots are somekind of a standard for rom collectors)
- INTROSHOT_URL
- YEAR
- THUMBURL
- IDENT
- SORTTITLE
- PERSPECTIVE (Could maybe be merged into genres?)
- GENRE
- DEVELOPER
- PUBLISHER
- THUMBURL_SPOOF
- BOXART_URL_SPOOF
- ALT_BOXART_URL_SPOOF
- EXT_BOXART_URL_SPOOF
- ACTIONSHOT_URL_SPOOF
- INTROSHOT_URL_SPOOF
- PREVIEW (A precompiled video of the game. Pretty much the same as a movie trailer)
- FANART
- PLATFORM (Windows, Dos, Super Nintendo...)
I'm not sure what the best solution for scraping would be. A scraper would probably need to know what platform to scrape information for. That could be done while setting content for a directory, with some pre-defined platforms, but unfortunately some sites will use "SNES" as a identifier, some could use "SMC", and some simply "12". How to overcome this? There's a suggestion in this thread to use different scrapers for each platform, but I can't say I like it, as I don't think someone would keep them all up to date.
Another function from the video section that probably also should be in the program section is the stacking feature. Many ROM collections will have a naming scheme similar to: Super Mario Bros[u][!].smc, Super Mario Bros[J].smc etc. and I guess many will see this stacked, though handled a bit different by the player.
I've done most of the boring aspects of this, at least for the games, and I hope to get it up and running when I have some more time to sit down and study the source code.