PlayGuy Version 1.03b - Documentation CONTACT INFO EMAIL: PlayGuyEmu@hotmail.com HOMEPAGE: http://playguy.emuxhaven.net/ OFFICIAL FORUM: http://www.emuxhaven.net/cgi-bin/ikonboard/ikonboard.cgi?;act=SF;f=20 FORWARD- FROM THE AUTHOR This document will be updated as I get more user feedback. This my first attempt at programming a gaming system emulator. The experience has been draining at times, but overall, very rewarding. My initial coding for PlayGuy began over a year ago, just attempting to figure out how to do a CPU core. However, things did not pick up until I was laid off this past January and began to do more serious coding. PlayGuy was designed for the sake of simplicity. Thank God I can make the documentation brief. :o) Thanks to everyone for your feedback and continued support. -- JC WHAT'S NEW IN PLAYGUY * MMX Enhanced Graphic Filters - Interpolation, 2xSaI, Super Eagle, and Super 2xSaI. * Up to 100 Save State Slots. * PNG & BMP Screenshots - Scalable 1x to 8x. * MBC3 Timer Support - SRAM and Save State consistency. * New Windowed Mode Status Bar & Fullscreen Status Line. * Fast Forward with Spacebar. * FPS displayed in Title Bar & Status Line. * Configurable Save Directories. * Configurable default handheld - Auto, GB, SGB, Pocket GB, GBC, or GBA. * Minimum Frame Skip. * Windowed Mode - GameBoy Aspect Ratio option. * Windowed Mode - Run in Background option. * Fixed Pikachu's voice in Pokemon Yellow. REQUIREMENTS * Windows 95/98/98SE/ME/NT4/2000/XP compatible. * Pentium class - 266Mhz and above. * Minimal DirectX Required FEATURES * Emulation Core - Full CPU core emulation, accurate timings, interrupts, DMA, etc. - Color and Classic GameBoy support. - Ability to set default handheld - Auto, GB, SGB, Pocket GB, GBC, or GBA. - MBC1/MBC2/MBC3/MBC5 support. - MBC3 Real Time Clock Supported - SRAM and Save State consistency. - Superior sound support - All four sound channels fully emulated in stereo. Selectable sound channels and sampling rate. * Graphics Engine - 16, 32(24) bpp color support. - Filters - MMX optimized Interpolation, 2xSaI, Super Eagle, and Super 2xSaI. - Three pre-defined windowed sizes - Small (1x/2x with Filters), Medium (approx. half screen height), Large (largest possible integer multiple). - Optional VSync to prevent screen tearing (windowed mode). - Selectable Fullscreen Mode. - Auto Frame Skip. Selectable Minimum Frame Skip. * GUI Features - Save States. Quick saving and loading of states via accelerator keys and up to 100 Save State Slots. - ZIP and RAR archive support. - Fully customizable button inputs - keyboard and joystick support. - Drag & Drop Support. - Recently used ROM list. - Supports Pausing and Background Deactivation. - Configurable Save Directories. - PNG and BMP Screenshots - Scalable from 1x to 8x. - Displays FPS in Title Bar/Status Line. - Status Bar Information (Windowed & Fullscreen). - Fast Forward with Spacebar. PLANNED FEATURES IN FUTURE RELEASES * GameLink support - support of the serial link locally and over an internet connection. * Super GameBoy functions. * Game Cheats. * Obscure mapper support. * Rumble Pak support. HISTORY PlayGuy 1.03b Bugs Fixed ------------------------ - Fixed support for paused status to draw using the 2x offscreen direct draw surface. - Pikachu now says "Pikachu" in Pokemon Yellow - Fixed MBC3 RTC - SRAM, save state consistency - Fixed Drag & Drop for rom files and save states PlayGuy 1.03b Features Added ---------------------------- - More features in Video dialog - Added Filters - simple Interpolation, 2xSaI, Super Eagle, Super 2xSaI - Allow changing to 60Hz where available - Filter non-60Hz modes option - Added FullScreen Default mode - Auto detection of MMX support - Added Status Bar - Added Emulation Properties Dialog - Added Support for Accumulator value & (bit 0 of B reg) to dictate differences in handheld types. - Added creation of RTC files to remember the RTC. - Added BMP and PNG snapshots - Added Save Directories for SRAM, Save States and Screenshots - Added Minumum frame skip - Added Option to keep windowed mode aspect ratio - Added Run in Background option - Added Save State Slot support. - Added Fast Forward Feature. - Added FPS in Titlebar. - Added Fullscreen Status Line. PlayGuy 1.02b Bugs Fixed ------------------------ - Fixed CPU utilization error when no ROM loaded. - Fixed Platform Video Shutdown code. - Fixed Video Scanline Code OBJ-to-BG priority bug. Sprites should now be correctly shown above and only above background color zero when background has priority over sprite. Sprites should now be displayed over other sprites correctly. - Fixed an Open State bug related to stored pointers for sound channel 3. Pointers now recalculated. - Fixed an Open State bug where a ROM cannot be found matching to the Save State because the files have been placed in a new directory. - Fixed a "Backup Window" bug so when switching between different fullscreen modes, the old windowed mode is still remembered. - Fixed a bug in DirectDraw to restore lost surfaces. This usually occurs when using Alt+Tab to switch between programs when in Full Screen Mode. - Fixed an open ROM error when opening a corrupted ROM. - Fixed CPU utilization when VSync is enabled. PlayGuy 1.02b Features Added ---------------------------- - Added support for Vertical Synchronization in windowed mode. Note that Fullscreen page flipping behaves this way by default. - Added support for Video Mode Enumeration and Multiple Fullscreen modes. - Added support for immediate switching of full screen Fullscreen modes when already in Fullscreen. - Added support for a stretched Fullscreen mode and a maintain aspect Fullscreen mode. - Added support for setting a default window size. - Added a Video Configuration Dialog. - Added support for Opening save states when the original ROM cannot be found - presents an open dialog to find the correct ROM. (e.g. in different directories, named different than when save state was created) - Added Keyboard Accelerators - Added Quick Load/Save State on F5/F6 keys - Added Pausing Feature - Added Inactive Feature when out of focus. - ASCII encoded name now appears in titlebar. - All strings are now in string resources - Three builds now: ANSI, MBCS, and UNICODE. - Added support for ZIP archives - Added support for RAR archives - Added MRU ROM List INSTALLATION * Unzip the ZIP archive into any directory. Contents include PlayGuy.exe, unrar.dll and zlib.dll. * To add a shortcut to your desktop, use the right mouse button to drag the .exe file to desktop, select "Create shortcut(s) here" from the pop-up menu. REGARDING ROM FILES * GameBoy ROM files are dumps of ROM chips from inside a game cartridge. They may be acquired by using a device such as a Bung GB Xchanger. * Remember, you should own the carts to any ROM files you play in emulation. This is all I have to say on this subject. USING THE PLAYGUY EMULATOR Game Accelerator Keys F1 Open Rom F2 Close Rom F3 Load State F4 Save State F5 Quick Load State F6 Quick Save State F7 Reset F8 Exit F9 Pause F10 Small Window F11 Medium Window F12 Large Window Atl+Enter Toggle Fullscreen M A Button N B Button J Start H Select Up Arrow Up Down Arrow Down Left Arrow Left Right Arrow Right 0-9 Select Save State Slot on Page X (X0-X9) - Prev Slot + Next Slot Page Up Prev Page of Slots Page Down Next Page of Slots END Jump to Slot... HOME Take a Screenshot Spacebar Fast Forward Hardware Reset * You can do a hardware reset by choosing "Reset" from the "File" menu. Loading ROM Files * Choose "Open ROM..." from the "File" menu and select the GameBoy ROM file to Open. * You can select a recently played ROM file choosing an item from the "Recent ROMS" submenu under the "File" menu. * You can also Drag & Drop Files onto the PlayGuy main window or onto the PlayGuy executable or a shortcut to the executable. Closing ROM Files * Choose "Close ROM" from the "File" menu. Save States * You can save the state of your game at any moment in the game. Just choose "Save State..." from the "File" menu. * Likewise, you can resume a save state by choosing "Load State..." from the "File" menu. * Save States have a ".pgs" file extension and are not compatible with other GameBoy emulators. * Save state slots can be selected using the Page Down, Page Up, +, -, or 0-9 Keys as described in "Game Accelerator Key" section above. The current save state slot is displayed in the Status Bar/Line. * Use the F5 and F6 keys to quickly load and save PlayGuy states from the current save state slot. * BE CAREFUL when mixing use of save states with games that use battery backup. If you open an old state, you will overwrite your battery- backed RAM. Pausing * Select "Pause" from the "Options" menu to toggle the paused state. * When the PlayGuy main window is in the background, it will also put the application an inactive state unless the "Run in Background" option is chosen in Emulation Properties. Emulation Configuration * PlayGuy supports a number of general emulator functions. * Choose "Emulation..." from the "Options" menu to bring up emulation properties. * PlayGuy allows use of definable Save Directories for Battery RAM, Save States, and Screenshots. You may optionally elect to save files in the same directory as your ROM files, in a single, unified directory, or individual directories. Use the Browse button to select a folder. * Minimum frame skip can be used to skip every so many frames on slower PC. Most users will want to select 0 (Auto). This means that frames will not be skipped unless the emulator gets behind. * The default handheld option can be used to simulate running gb/gbc games on various GameBoy handhelds. Note that there is not support for gba games. Selecting the gba option may offer different features and change color palettes in certain gbc games. The Auto option will be fine for most users. * PlayGuy has build-in support for creating BMP or PNG images. You can also select to scale-up the image between 1 and 8 times. Note that only even numbered scales can be used when video filters are enabled. * Under normal operation, PlayGuy will deactivate when in the background. Selecting "Run in Background" will allow the game to continue when the PlayGuy application is not the top-most window. However, controller support will be lost until it again becomes the foreground window. Controller Configuration * PlayGuy supports most joystick/joypad controllers compatible with DirectInput and keyboard button presses as well. * Choose "Controller..." from the "Options" menu to bring up controller properties. * PlayGuy controls default to the following: A BUTTON - M Key B BUTTON - N Key START - J Key SELECT - H Key UP - Up Arrow DOWN - Down Arrow LEFT - Left Arrow RIGHT - Right Arrow * PlayGuy controls may be set to anything. Simply press the key or joystick button you wish to use when the corresponding GameBoy controller option has the input focus (the cursor is blinking there). The input focus will automatically advance to the next control. Note that keyboard accelerator keys defined in the GUI, GUI control keys, modifiers, and system keys are reserved and cannot be assigned. Sound Configuration * PlayGuy supports a number of sound sampling rates and support for enabling/disabling individual sound channels. * Choose "Sound..." from the "Options" menu to bring up sound properties. * Sound channels may be enabled or disabled by checking or unchecking the respective channel. The default configuration has all sound channels enabled. * The sound sampling rate will effect the quality of music produced. by the emulator. The default is the best quality - 44100 samples per second. If you alter this option you need to quit and re-open the PlayGuy application. Video Configuration * Choose "Options.." from the "Video" submenu of the "Options" menu to to bring up the video properties dialog. * PlayGuy supports three pre-defined window sizes: Small: a 1x or 2x (w/ filters) window - (recommended for slow PCs). Medium: Approximately half the screen height. Large: Just under the screen height. One of these windows may be selected as the default size when the Playguy application is launched. Fullscreen may also be chosen as the default window. The Small and Medium windows may be the same size in some desktop resolutions. * Select the VSync option to reduce tearing in windowed modes. Tearing in Fullscreen mode is not affected by this flag. Most video adapters should automatically draw frames without tearing in Fullscreen mode. * PlayGuy supports a selectable Fullscreen mode. Fullscreen mode may optionally be chosen to stretch to the full dimensions of the screen. There is also an option whether to display the Fullscreen Status Line. * The current Windowed/Fullscreen mode may be manipulated or toggled under the "Video" submenu from the "Options" menu. * The PlayGuy window may also be resized to custom dimensions. The "GB Aspect Ratio" option in the Video properties dialog forces the window to maintain a GameBoy aspect ratio after resizing has been done manually. Screenshots * Screenshots may be taken in PNG and BMP format 1x - 8x in size. * Press the HOME key to take a screenshot. * Screenshots naming convention is "GameRomFileNameXXX.PNG" or "GameRomFileNameXXX.BMP" where XXX is a three digit number. Fast Forward * Long, boring game sequences may be bypassed faster using the Fast Forward Function. Just hold down the Spacebar. BUG REPORT PROCEDURES * Send an email to PlayGuyEmu@hotmail.com with a subject such as "Bug Report". * Be as specific and provide as much information as possible! Vague bug reports saying this game or that game doesn't work are not helpful and will likely be ignored. I do not have time to hunt for them. Please don't think me ungrateful. On the contrary - Bug reports are extremely helpful if done right. Thanks for reading this first. :) * Submit the following information where appropriate. If you're not sure, then include it anyways: * Version of PlayGuy being used. Please only submit bugs for the latest version. * Computer Make/Model (e.g. Gateway Performance 1400) * CPU Type/Speed (e.g. P4, 1.4GHz) * Operating System (also Service Pack # under NT or 2000) * Type and Description of Error - Was it a crash or error message? Does it happen with any game or one particular game. Was it an emulation error in game XXX? Game freeze, etc? When does it happen? Under what circumstances? How can I reproduce the error? Give Details! * For emulation errors, please provide the name of an emulator which correctly handles the situation, if one exists. * The "Good Gbx" title of the game being played where appropriate. Remember there are many versions of games floating around, and some are bad dumps. * An attached PlayGuy save state just before the error occurs if possible and applicable. You MUST have this if your game crashes anywhere except the very beginning of a game. LICENSE AND TERMS OF USE * PlayGuy is freeware for non-commercial use only. Please contact PlayGuyEmu@hotmail.com for more information regarding ANY commercial use of this product. * PlayGuy is provided as-is without any warranties expressed or implied. DISCLAIMERS * GameBoy, GameLink, GameBoy Color, Super GameBoy, and Rumble Pak are registered trademarks of Nintendo. * Author of PlayGuy cannot and will not provide anyone with or direct anyone to ROM files containing copyrighted works. * Author of PlayGuy cannot be held responsible for improper use of this product.