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.