Atari7800x Atari 7800 Emulator port for XBox v5

First off...

Special thanks....

X-port for porting a great collection of emu's over to the xbox, releasing the source code, and answering my stupid questions.
The beta testers - NE146, mimo, run088. I know you all are busy but thanks for the support and input.
Atariage (Albert) - For providing a place for my beta testing thread.
Makers of the prosystem emu. Maybe someday I'll have time to port it over to the xbox.
Curt Vendel for providing the source code to Desert Falcon and Dan Boris for reading the schematics and confirming the button behavior of proline joysticks.
Nobody for nothing ( Just checking to see if people are reading this.  ) 
Comments of support from various interested parties.
If I missed anybody shoot me an email and I'll update this file.

what's new:

**** Mess core related changes ****

ROMS loaded via Samba/Relax now work properly.

Fixed fast forward so you can actually see what is happening. All it really does is set frameskip to 9. Anything higher causes display issues. I'm hoping to find a better way than frameskipping for fastforward.

Fixed rewind so it doesn't crash the emu on gameload. Seems mess doesn't like to do savestates while it is still "initializing". 

Pallette defaults to "Mess New" since this seems to be the best one.

Added mappings for joystick 2 directionals so those interested in dual analog Robotron can do some. You can even map the analog sticks to the joysticks!! Just be sure to unmap the volume controls for the music/emulator. 

Made the "pause" button mappable, for those few games that use it.

Prosystem Database compatibility! The emu scans the DB and if it finds a match it overrides the header settings. If the ROM has no header AND is not in the database the user has the option to set the parameters themselves. I added pretty much every homebrew/prototype that I know of.

New configuration options for headerless ROMS not in the Prosystem Database. Cart Type, Region, and Pokey (yes/no). The only catch, though, is it can LOCK your xbox if you pick the wrong cartridge type. For homebrews "Normal Cart" and selecting Pokey (yes/no) should do the trick. Prototypes are a different story.

Added the ability to "add" a cartridge to the Prosystem Database. (for sharing and simplicity).

High Score Cart now supported! Go and record your highscore in HSC compatible games. Just too name a few Beef Drop, Pacman Collection, Centipede, Asteroids, Dig Dug. Although I wouldn't recommend using Centipede to "config" your HSC save.

Fixed a small little bug in the memory checking of the normal cheat code system. (non atari).

Cheats are disabled on game load. Seems having them on can cause the Atari logo to cycle endlessly.  This is only done with A7800.

Games that use two buttons now work properly. Buttons one and two were mapped backwards (in mess) so I fixed that. So in "Dark Chambers" you can now use bombs, "Desert Falcon" you can use special items, and Hyperspace now works when you press button two in "Asteroids (and hacks)". Just to name a few. Thanks to Curt Vendel for providing the source code to Desert Falcon and Dan Boris for reading the schematics and confirming the behavior.

Corrected let/right button mappings. Seems MESS had the left/right buttons mapped backwards. I always suspected this by how Commando played.

**** Interface related changes ****

Fixed a small little bug where the emu would respond to "Virtual Keyboard" buttons assignnments for systems that do not have a keyboard defined. 

Displays a message when you change the difficulty level on switch A or B.

**** Carryovers from Atarixlbox ****

- Ability to pick a file from within a zip file. Turns out this functionality was already in commonfuncs as a conditional compile. 

- Recording time doubled.
- Fixed a few interface "quirks" regarding playing game sounds while emu is paused.
- select save state screen tells you whether your "loading" or "saving", it also now displays whether a save file has a record session ( R ) associated with it.

- When a new save state is created it deletes any recordings. If you press the "back" button while in the save state select screen it will allow you to delete that save state (as well as it's recording).

- Utilities menu display modifed to state "stop or start recording/playback" depending on whether they are turned on or off. It also displays total minutes remaining or played so far.

- Record/Playback turn off when exiting a game. Boy that sure caused some confusion. 

- Switched positioning control of sprites in the skin menu to the left analog stick, that way you don't have to worry about unintentionally lowering the volume.

- Savestate load screen is a little more informational when sent to it from the save/record option. 
- When you save a picture it removes the screenshot save path making it easier to see long names.
- Changed order of some of the entries in the "Music Control Menu". 
- Playlist repeat mode, and View Name setting is saved in INI file. Although song name only shows in the music control menu.
- When "adding a code" from the "edit code" screen the current code is copied as a template. You can activate/deactivate a code from the "cheat code list" menu by pressing start.

- Deleting a code now asks you if you are sure (I got tired of accidently deleting my codes  ).
- Fixed up the problem created from using multiple files in a Zip file.
- Fixed problem when a filename inside a zip contains too many characters. While I was at it I fixed the space as the last character when trimming to 42 characters behavior. Zip files where the path was saved now unzip correctly.

- Rewind and Fastforward are de-activated during record/playback and netplay mode. It even tells you so when you try!!
- Modified YesNoMenu so it doesn't clear m_menuText.

- Added ability to add in cheat codes from a Gameshark compatible database (see description below). This includes the ability to export the cheat codes in a game to "share" with your friends. Cheat/rumble codes are included for most 7800 games. When "adding" codes from the gameshark DB it will move you to the entries with a matching CRC. If not you'll have to manually find the game (sorry, only one CRC per game).