************************************************************************ * MASSAGE V0.8F - Sega Master System/Game Gear Emulator by James McKay * ************************************************************************ Distribution Conditions Of Freeware Version. ============================================ The zip may be freely placed on any ftp site or web page. It may not be posted to newsgroups, also it may not appear on any form of physical media that is not absolutely free of charge. The zip must not be modified in any way. DO NOT ASK ANYBODY FOR ROMS! Contact Address =============== Since my support of Massage has ended, here are some addresses to check out. Please check the web page first, to make sure you're not asking an already answered question. Support E-mail : peter.sharp9@virgin.net Support site : http://www.enterspace.org/world/ New stuff (compared to V0.73) ============================= * Bug fix to make Rainbow Islands playable. * Game Gear stereo using the OPL 3 chip (in SB Pro (new version) and above). Use /nostereo from the command line if you are having problems. USE /nostereo OPTION IF MASSAGE CANNOT DETECT YOUR SOUNDCARD. * Player 2 can be controlled by keys 1 - Up, Q - Down, W - Left, E - Right, 2 - "Button 1" and 3 - "Button 2". This is intended for using redefinable joysticks which plug into the keyboard socket. * Option to set target speed, using /speed from the command line. * Obvious corruption fixed in Astro Warrior, Popeye, Surf Ninjas, GP Rider, MahjongG. * Less obvious corruption fixed in Ax Battler (on the bridge) and the Sega TM bits (in Space Harrier.GG and Aerial Assault.GG etc.) * Pop Breaker can now be played (but only in Japanese mode). * Certain parts of the screen are pre-calculated which causes the speed to be reported at a higher value, however it varies slightly. Instructions ============ Started 23/07/96. Today (was) 24/03/97. Today is actually 03/02/98. This program emulates a Sega Master System and a Sega Game Gear. A Pentium is strongly recommended, but is playable on a 486 with some frame skipping. How to use: =========== massage - Starts the emulator with the file select screen. massage /? - A not very good help, some of the options listed don't work. massage or massage Loads and runs the named cartridge, however the cartridge must be in a specific format: 1. It can either be raw, or have a 512 byte header. I have tested both kinds and they work. 2. It must have the suffix .sms for an SMS game, or a .gg suffix for a Game Gear game. massage /delay - A rather poor slowdown method, num can be 0-65535, where 65535 is a ridiculously long delay and 0 is no delay, use this if it is running too fast. Use low numbers to start with. massage /mono - This is a relic from another piece of software I wrote, but it does have the advantage that it basically switches off the screen making it a bit like V0.0a. Allowing for speedy playing of the music. massage /frame - This sets the screen to update 1/num times, (where 0 is 256) this is highly recommended for speed trouble! I use /frame 5 on a 486SX-25! (Although it is still not full speed). The emulator now tries to detect which screen update is most suitable for you, and will assign a value between 1 and 5 to this when you switch on, or when you swap between small and large GG screens. massage /jap - This convinces some Master System games that they are running on a Sega Mark 3 (or indeed a Japanese Master System) console, which means some games use Japanese. Also gets some Game Gear games to use Japanese as well. massage /nojoy - Switches off the joystick if you have a nasty old analogue wobbler that doesn't work properly. massage /ggpad - Select Gravis Gamepad "swapped buttons" option. massage /p2joy - Use Joystick as player 2 controls, allows people who only have one joystick to use keys as P1, and joystick as P2. massage /bswap - This switches button 1 and 2 on your PC joysticks. massage /4bpad - Selects 'other' 4 button pad, in other words a 4 button pad that doesn't have the buttons in funny positions. massage /li - Chooses line interrupt method, =0 to 2. 0 is the new improved default method. Method 1 allows playing of Altered Beast and method 2 allows playing of ChessMaster. massage /nofm - Used to /fm but now fm is by default! This switches off the fm chip, so that you can use the PSG in games which can use one or the other. massage /approx - Selects colour approximation mode. This is what all the old versions of Massage (and sms) used, it can handle games that change palette colours mid-screen, but is somewhat slower. Game Gear games will look worse. massage /262 - Selects 262 line option, a trick which gives a bit more speed, but some games don't like it. massage /speed - Allows you to set the target speed, for example, say you wanted to play at 120% you could use this option and every time the delay value is calculated it will run at 120%. Or, for example, if you can run frame 1 at 99%, and frame 2 at 150%, but you prefer frame 1, then you can set the target speed to 99% and the frame skip autodetector will choose frame 1. massage /nostereo - Disables Game Gear stereo. I am using the OPL 3 soundchip to emulate the stereo (normal Adlib is OPL 2), any card from SB Pro (new version) and above should have one. The old version of the SB Pro had two OPL 2 chips and therefore will require this option. I could not find a way to autodetect the presence of the OPL 3 chip, some soundcards will require this option even if they do seem to have an OPL 3 chip! KEYS: ===== Escape - Reset Space - Pause on Master System, or Start on the Game Gear. Alt - Button 1 (Player 1). Ctrl - Button 2 (Player 1). Cursor Keys - Up, down, left and right. (Player 1). The following are intended for use with a redefinable joystick which plugs into the keyboard socket. (Master System only). 1 - Up (Player 2). Q - Down (Player 2). W - Left (Player 2). E - Right (Player 2). 2 - Button 1 (Player 2). 3 - Button 2 (Player 2). Menu controls: ============== Up, down - Move pointer. Left, Right - Change value by 1. Page Up, Page Down - Change value by 10. (Where applicable). Enter, Return - Select option. Escape - Leave menu. F1 - Options. ================= * Alter Screen Skip [1/(0-255)] - The number of times the screen is updated, 1/1 is perfect screen update. The higher the number the faster the emulation should be (0 means 256 so is the fastest). * Alter Slow Down [0-65535] - The higher the number the slower it goes, should now be set automatically when you run emulator. * GG Screen Size [Small] - Set this to Large for a bigger GG screen. * Keep close to 100% [Yes] - Set this to NO, if you are fed up with the settings changing every time you change from small to big screen GG. Note that the number '100' changes whenever you use the /speed option from the commandline. F2 - Screen dump to PCX. ============================ Enter the filename you wish to save it as, and it will be saved. If there is already a file with that name then you will be asked if you want to overwrite it or not. If you want to (for example) save the same GG screen in big and small, then access this from the F1 menu. Note that it saves the full 320x200 leaving the black borders in. Note that it is possible that some critical settings could have been changed from the moment the screen was displayed to the point you pressed F2, meaning that the screen might not be correct. This bug has not been fixed yet. F3 - Pro Action Replay codes. ================================= This menu has 8 codes set at "0000-0000" with all switched off. The real PAR has only 4 slots, so remember this if you are making codes. To enter a code press return when you have picked a slot (with up and down), enter the code (you don't have to enter the minus sign in the code) and the code will be switched on. To switch a code on or off, move to that slot and press left or right. If you enter an invalid code, then the old code will remain in place. When you load a new cartridge all codes are cleared. The PAR was more popular in the UK than it was in the US (in fact was it released at all in the US?), probably because it could make it's own codes, this one can't though so you will have to find codes in old magazines or maybe someone will set up a big text file on some web sites? F4 - Joystick options. ========================== * 4 Button Pad [No,Gravis,Other] - Set to Gravis or Other, depending on the position of the buttons on your pad, if you want the full effect of your four button pad. * SMS 2P 1 Joystick [No] - Set this to YES if you only have one joystick and want to play a two player SMS game. * Swap Buttons [No] - Set this to YES if you want button 1 and 2 to be swapped on your joystick. F5 - Load new cart. ======================= Select the file you want to load and press return. F6 - Save snap file. ======================== Type the name that you want to call the saved file and press return. If there is already a file with that name then you will be asked if you want to overwrite it or not. F7 - Load snap file. ======================== Select the file you want to load and press return. Make sure that you have loaded the appropriate cartridge first! F8 - Emulator options. ========================== * INT 255 [Immed.Int] - Now almost defunct due to new Line Int Mode 0. * Top Line [304] - Switchable between 255 and 304. * Vblank [Optional] - Switchable between Always and optional. * Screen Lines [311] - Switchable between 311 and 262, selecting 262 will give you a few more percentage points of speed, but some games don't like it. * V0.7 Default - Sets the top 4 to "Immed Int","304","Optional","311". There have been no changes to the defaults since V0.7. * V0.6 Default - Sets the top 4 to "Immed Int","304","Always",311. * V0.5 Default - Sets the top 4 to "No Int.","255","Always",311. The idea being that you should be able to play any game which worked on V0.5 or V0.6 (in conjunction with line int method). * Language [English] - Can be set to Japanese for some SMS/GG carts, only affects game when you load or reload it. * Line Int Method [0-2] - The algorithm that determines when the line interrupts happen, use 1 for Altered Beast and 2 for Chessmaster. * YM2413 FM [On] - Determines whether the FM chip is visible to the game, effective when you load or reload a game, although switches off the sound immediately. * Colour Approx [Off] - When this is off, the screen updates a little quicker, and the Game Gear palette is correct, but games that swap palette colours midway through the screen will flicker nastily. In that case set this to on, but note that it is going slower but the speed gauge won't show it, to see the correct speed that it is going at, select this option from the commandline by doing /approx. F10 - Quit to DOS. ===================== Quits immediately, so be careful. F11 - Sound options. ======================= * Sound is [Adlib,PC Speaker or Off] * Create LOG File - Don't touch! * White Noise Is [On] - So you prefer no white noise instead of a feeble attempt? Then switch this to Off (only affects Adlib PSG emulation). WANTED: ------- Any programming information about the Sega Master System or Game Gear, and any ROMs I would consider a bonus! For development purposes of course. Also, if there are any other file formats that other types of cartridge copier use, tell me, and I'll try and include compatibility in a future update. Currently sought after: The author of Altered Beast or Sonic Drift 2 (or any other game where the line interrupts don't seem to match the explanation of the spec) to explain exactly what lines the interrupts in their games are supposed to fall on! Serial comms without losing bytes. What are the first two digits in a PAR code for! And what exactly happens when you switch off a code? DISCLAIMER: ----------- Sega is a trademark of Sega. Mark 3, Master System, Game Gear, Megadrive and Genesis are trademarks of Sega. Pro Action Replay is a trademark of Datel Electronics Ltd. Serial communications library is (used to be used): LL_COMM (Lord Logic's Comm Code) (C) 1994 James P. Ketrenos. Emulator compiled in Watcom C 10.0a and Watcom ASM. Thanks to TF and AB for info regarding line interrupts (not sure if I should put your names here!) hopefully you have managed to get round your debugging problems. Thanks to MT for 'a lot of info', finally! Thanks to tak (tsawae@concentric.net) for some Japanese that used to be on the web page. Thanks to Hiromitsu Shioya for writing the Yamaha YM2413 sound code. Thanks to Duncan for the web page, the searching and downloading of the roms. This software is not an official product of Sega, and neither are the cartridge copiers, although I have nothing to do either. All games mentioned are trademarks of their own respective companies. Distribution of 'backed up' cartridges is an illegal activity.