| | | | | ___ __________________________________________ ___ __ _ | | | | ______________________________________ ___ __ _ | | | | | | ViRTUAL SUPERMAGiCOM | | | Documentation rv.D \ \/ / \ / Covers VSMC Versions: \ / 0.9610(c), (d). 0.9611(a). \ / \/ (programmed by The Brain) _ _ _ _ ---------------------------------------------------------------------------TABLE OF CONTENTS 0-i ---------------------------------------------------------------------------SECTION 0 - READ THIS SECTION BEFORE USING VSMC System Requirements . . . . . . . . . . . . . 0-ii Commercial Games, Piracy and ROM images . . . 0-iii Speed considerations . . . . . . . . . . . . 0-iv Registering your copy . . . . . . . . . . . . 0-v Where to get more information . . . . . . . . 0-vi Frequently Asked Questions . . . . . . . . . 0-vii SECTION 1 - VSMC EMULATION OVERVIEW Current Capabilities . . . . . . 1-i Planned Additions . . . . . . . . 1-ii Known Problems . . . . . . . . . 1-iii Using Cheat Codes . . . . . . . . 1-iv SECTION Games 2-i Games 2-ii Games 2-iii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 - COMPATIBILITY GUIDE A-F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G-S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S-Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SECTION 3 - VSMC SETTINGS Defining the Keyboard . . . . . . . . . . . . . . . . . . . . . . . . 3-i Options (Joystick,VGA,EMS,VScreen,etc) . . . . . . . . . . . . . . . 3-ii IRQ and Refresh rates . . . . . . . . . . . . . . . . . . . . . . . . 3-iii SECTION 4 - VSMC RUNTIME FUNCTIONS Cheat-Finder . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-i Video Debug Functions . . . . . . . . . . . . . . . . . . . . . . . . 4-ii Meta-Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-iii ---------------------------------------------------------------------------READ THIS: SYSTEM REQUIREMENTS 0-ii ---------------------------------------------------------------------------Minimal System: o i286 or compatible o 575K Conventional Memory o One (perferably more than one) SMC file o VGA card & monitor o MS-DOS 4.01+ Suggested System: (for decent playability) o i486DX-66 o 575K Conventional Memory plus 2MB with EMS o One (perferably more than one) SMC file o VGA card & monitor capable of using tweaked modes o MS-DOS 4.01+ Optimal System: (for 100% SNES speed) o P5-120 o 575K Conventional Memory plus 2MB with EMS o One (perferably more than one) SMC file o VGA card & monitor capable of using tweaked modes o MS-DOS 4.01+ ---------------------------------------------------------------------------READ THIS: COMMERCIAL GAMES, PIRACY AND ROM IMAGES 0-iii ---------------------------------------------------------------------------Despite my pleas to the public to refrain from asking me for commercial games (aka: ROM images), several requests daily still strangely appear in my inbox. Please be aware, in North America, like most areas of the world, piracy in any form is illegal and carries stiff penalties. To discourage piracy, I have made all messages requesting commercial games available to the general public on VSMC's WWW page, for everyone (including SPA and CAAST members, etc) to view. To paraphrase: I will never send anyone a commercial game. If you ask for one from me, your message will appear on my WWW page. If a software protection agency contacts you because of this, it is your own fault -- you have been warned. If you actually own the game cartridge, however, that is another story. Several SNES backup units exist (including do-it-yourself units), which allow you to copy the ROM from the cartridge into the SMC standard format. If you already have a backup unit, but are unable to create SMC files from it (ie: if you have an older MGD, perhaps), you can use any of the publicly available conversion/manipulation tools (such as uCON or CTOOL). Backup units, depending upon your sociological location, may or may not be difficult to purchase. If you are having difficulty, use CartDisk, a home-brewn cartridge backup system by DiskDude of Damaged Cybernetics. Please note, however, that DiskDude _will_not_ supply a pre-built unit -- you must build it yourself. ---------------------------------------------------------------------------READ THIS: SPEED CONSIDERATIONS 0-iv ---------------------------------------------------------------------------VSMC is quite possibly the fastest SNES emulator in existence. However, you must configure it and your system properly to achieve maximum speed. On an Intel 486DX2-66, 512K Internal Cache and an external bus speed of 22MHz, the CPU emulation speed is well over the speed of a real SNES (it was benchmarked at 3.83MHz ñ 5%). However, because of NMI, IRQ, I/O timing and screen refresh rates, the actual emulation of the SNES (CPU + everything else) will suffer greatly. In actual practice, a 486DX2-66 will run (best case) at about 50% of the speed of a real SNES, and a P5-120 will run at 100% or above. Because of the newest optimizations present in 0.9610(d), a 486DX2-66 will sometimes run up to 90%, or even 100%, depending on the ROM image used. VSMC is, by default, configured to use the true NMI rate for emulation (of about 50Hz, or every 53600 or 71600 internal SNES cycles). This value can be changed (in the form of divisions) to provide optimal performance. NOTE: The SNES is a time-sensitive machine, and many games will stop functioning if the NMI rate is thrown out of balance. It is also possible to slow down a game considerably, or cause a game to lock at seemingly random points within game play. There is no 'fast' or 'slow' end of the NMI scale, the fastest setting will likely (always) fall in the middle, and the slower settings will extend outwards. See 'IRQ and Refresh Rates' for more information. Something to try: Run Super Mario World with the IRQ at '4'. Then run it again at '2' -- notice the great speed increase. Set it to '0' and watch SMW grind to a halt. The refresh rate controls how often the screen is updated based NMI on the blanking rate. Higher settings will result in fewer screen updates per NMI (as few as 1 refresh per 9 NMI interrupts) thus faster emulation speed but jerkier movements (suitable for RPG games). Lower settings will result in more screen updates per NMI (up to a maximum of 1 refresh per NMI), thus you will observe slower emulation speed but more fluid movement (suitable for action games). See 'IRQ and Refresh Rates' for more information. The joystick option of VSMC will also slow down emulation somewhat (but not noticibly on most machines). If the speed seems overly slow, disable VSMC's joystick option. EMS, Virtual Screen and Tweaked VGA mode should be enabled. EMS uses a 2MB demand page buffer for bank storage. Note that EMS, in this case, requires less processing than XMS, since the SNES, utilizing the 65816, uses a banked memory system where only two banks of 32K are available at one time. Coincidentally, this also happens to be the same size as an EMS window. The Virtual Screen option stores and processes all video data in memory before sending the entire stream to the real video RAM all at once. This generally results in greatly improved performance. Tweaked VGA mode is faster than generic 320x200 because no multiplications or shifts need to take place when calculating screen offsets (though, only one such calculation is used for each BG plane.) To further enhance performance, consider: Tweaking your external bus speed, overclocking your CPU, upgrading your EMS manager, & running it from true DOS (not a Win 95, OS/2, WinNT, etc. DOS box). ---------------------------------------------------------------------------READ THIS: REGISTERING YOUR COPY 0-v ---------------------------------------------------------------------------I am not currently accepting money for VSMC. ---------------------------------------------------------------------------READ THIS: WHERE TO GET MORE INFORMATION 0-vi ---------------------------------------------------------------------------EMAIL thebrain@iceonline.com NEWSGROUPS comp.emulators.misc comp.emulators.announce FTP x2ftp.oulu.fi /pub/console rtfm.mit.edu /pub/.../comp/emulators/misc WWW www.iceonline.com/home/thebrain/vsmc www.clarkson.edu/~steinba/vsmc www.futureone.com/~damaged IRC #emu #snes Or, the ORIGINAL home of VSMC, four years ago: DARK REALITY BBS (Official VSMC Site) (Backup VSMC Site) (Damaged Cybernetics) ---------------------------------------------------------------------------READ THIS: FREQUENTLY ASKED QUESTIONS 0-vii ---------------------------------------------------------------------------[*] Why is VSMC so slow on my system? See section [0-iv] of VSMC.DOC. Most solutions to common problems are solved here. [*] Could you work on getting <name_of_game> to work? No. I will not entertain requests from people to get a specific game to work. If you'd like to take the initiative and debug a ROM image yourself, then by all means tell me what specific bugs VSMC has, and I'll gladly correct them. [*] Could you send me a copy of <name_of_game>? NO! For the last time, NO. See section [0-i] the consequences. of VSMC.DOC for [*] How do I get files with the extension .SFC to run on VSMC? Most newcomers to the SNES scene do not realize that .SFC files are structurally the same as SMC files. Just rename them from DOS. [*] How do I get files to work if they use a raw or interleaved format? Use CTOOL, uCON, CCX, STOOL or any other image conversion utility. [*] How do I get an SRAM file from my copier to work correctly with VSMC? Most copiers use VSMC-compatible SRAM files, so you only need to copy the file into VSMC's directory with the SMC file's name and the 'SRM' extension (ie: SMW.SMC should have an SMW.SRM file). Some copiers, however, do not create VSMC-compatible SRAM files, requiring that you use a program capable of converting SRAM files (such as CTOOL). [*] Why doesn't <name_of_game> work with VSMC? I don't know. If I knew, I'd have fixed the problem and you wouldn't be asking. [*] When will VSMC support <new_feature>? I don't know. When it does, you'll know. [*] When's the next release? There are always at least three releases every month. If that's not good enough for you, you've got some serious problems and should seek professional help. ---------------------------------------------------------------------------VSMC OVERVIEW: CURRENT CAPABILITIES 1-i ---------------------------------------------------------------------------VSMC will currently support: (VSMC specific) o Unsplit ROM images in the SMC-standard format o A built-in cheat finder (like GWPro) o A realtime meta-debugger, tracer and memory manipulator o High resolution GUI (640x480x16) o Joystick support for 4-button joysticks o Game Genie, Pro Action Replay, Gold Finger and RAW code format o Both Realtime and SRAM state-save functions (SNES and emulation) o The complete 65816 instruction set o Complete OAM (sprites) o Screen Fading o 8x8 and 16x16 tile modes o Screen Modes 0 thru 7 (ie: all screen modes) o 16x16 and 32x32 screen map modes o Smooth H/V scrolling o Complete OAM/VRAM/WRAM/CGRAM o NMI/IRQ interrupts o I/O, excluding serial and APU o Internal H/V latching o 'silent' audio emulation o Four joypads o Support for both Lorom and Hirom (up to 32Mbit carts) o Support for Slowrom and Fastrom ---------------------------------------------------------------------------VSMC OVERVIEW: PLANNED ADDITIONS 1-ii ---------------------------------------------------------------------------o o o o o o o o o o Sprite->Sprite priorities and Sprite->Playfield priorities Mode 7 effects (as opposed to just the graphics) Mosaic (Contrary to popular belief, this is _not_ Mode 7) Mouse & Superscope support (I know how) APU/SPC (ie: Audio) emulation (I don't know how) IPX and/or Serial link for multi-player games BG-Windowing, CG addition/subtraction Better documentation Better Joystick Calibration Windowing routines (for Final Fantasy 2 and similar games) ---------------------------------------------------------------------------VSMC OVERVIEW: KNOWN BUGS 1-iii ---------------------------------------------------------------------------o Memory internal to VSMC gets overwritten sometimes (from runaway code) o Lack of Windowing/CG Addition&Subtraction sometimes causes certain BG planes to misbehave (by overlapping those it shouldn't) o HBlank IRQ is called at the same rate as a VBlank IRQ, causing some ROMs to run slower than normal (Such as Super Putty). o SC Modes 3 & 5 have problems. o HDMA is not implemented, causing enemy fight scenes in FF2 to look funny, amongst other things. ---------------------------------------------------------------------------VSMC OVERVIEW: USING CHEAT CODES 1-iv ---------------------------------------------------------------------------Cheat codes can be entered, modified, converted, saved and loaded from within VSMC. Game Genie, Pro Action Replay, Gold Finger and RAW cheat codes are currently supported. To add a cheat code, click 'Cheats & Patches' from the main menu of VSMC96.EXE. Click the button corresponding to the type of code you want to enter, then type the code. eg. To enter the Game Genie code '1C4710EA', click 'Game Genie', then type '1C47-10EA'. A list of all codes will appear in the window in the rightmost area the dialog box. To change the displayed code format, change the green 'Display As:'. To delete a code from this window, click on it. Codes can be saved to and loaded from disk as '.CHT' files on the 'save' or 'load' buttons. by of clicking ---------------------------------------------------------------------------COMPATIBILITY GUIDE: GAMES A-F 2-i ---------------------------------------------------------------------------note: Many other games will work. If you know of any, please contact me. 7TH SAGA Works without any problems ACTRAISER Works without any serious problems. ADAM'S FAMILY: PUGSLEY'S SCAVENGER HUNT Works without any problems. ANIMANIACS Works without any serious problems. BATMAN AND ROBIN Works without any serious problems. BATTLETOADS IN BATTLEMANIACS Works, but the first BG plane is corrupted when you start playing. BREATH OF FIRE Works without any problems. CONGO'S CAPER Works without any serious problems. CONTRA III Works, but sometimes locks up. COSMO GANGS Works without any problems. DRAGON BALL Z Works without any serious problems. DRAGON BALL Z II Works without any serious problems. EARTHWORM JIM Works without any serious problems. F1-ROC (SUZUKI F1 RACING) Works, but sometimes locks up. FINAL FANTASY: MYSTIC QUEST Works, but the background graphics are badly messed up. FINAL FANTASY II Works without any problems, but some game-windows are screwed up. Otherwise it is fully playable (and fast, too). Toggle the messed up windows by pressing '1' then 'F7', if you want to see enemies during the fight scenes. This will be fixed in 0.9611 rev(b). F-ZERO Works, but often locks up. Mode 7 effects are missing. ---------------------------------------------------------------------------COMPATIBILITY GUIDE: GAMES G-S 2-ii ---------------------------------------------------------------------------note: Many other games will work. If you know of any, please contact me. GRADIUS III Works without any problems. ININDO Works with some problems. KING ARTHUR'S WORLD Works without any problems. LAGOON Works without any problems. LAWNMOWER MAN Works without any serious problems. LEGEND OF THE MYSTICAL NINJA Works, but one of the BG plane is not properly displayed. LUFIA AND THE FORTRESS OF DOOM Works without any problems. MR. DO! Works without any serious problems. MORTAL KOMBAT Works without any serious problems. PALADIN'S QUEST Works without any problems. PIT FIGHTER Works without any problems. ROYAL RUMBLE Works without any serious problems. SIMCITY Works without any problems. SMURFS Works without any serious problems. SOUL BLAZER Works, but you must use a saved game (you cannot enter a name) SUPER CASTLEVANIA IV Works, but the first area's background is missing. Use a password to skip to a more interesting level. SUPER CASTLEVANIA V Works without any serious problems. ---------------------------------------------------------------------------COMPATIBILITY GUIDE: GAMES S-Z 2-iii ---------------------------------------------------------------------------note: Many other games will work. If you know of any, please contact me. SUPER MARIO ALLSTARS Works, however Super Mario Bros. 3 cannot be played. SUPER MARIO WORLD Works without any problems. SUPER MORPH Works without any problems, but your blob is sometimes hidden behind other BG planes. SUPER PUTTY Works, but graphics are corrupted due to a problem with MODE 3. It is still playable, though. SUPER R-TYPE Works without any problems. SUPER PUNCH-OUT Works, but the in-game sprites flicker. STARWARS Works, but often locks up. TINY TOON ADVENTURES Works without any problems. TMNT IV Works without any serious problems. ULTIMA: RUNES OF VIRTUE Works without any problems. WANDERERS FROM YS III Works, but the background is missing. YOSHI'S COOKIE Works without any serious problems. ZELDA III Works without any problems. ---------------------------------------------------------------------------VSMC SETTINGS: DEFINING THE KEYBOARD 3-i ---------------------------------------------------------------------------The keyboard is used to emulate Joypads 1 thru 4 of the SNES. To define the keys to use, click 'Define Keys' from the main menu in VSMC96.EXE. A (sort of) diagram of the SNES joypad will appear. Click a button on the joypad to define, then, when prompted, press the key to use. Repeat the process for each button on the joypad. (These settings are saved in the EXE file, so there is no need to redefine the keys the next time you start VSMC). Some people have experienced difficulty when defining their keys. If the prompt to select the key appears, then immediately disappears without giving you the opportunity to actually select the key, do the following: - Hold down the key you want to use, until the keyboard buffer fills and the computer begins to produce the buffer-full beeping noise. - Click the joypad button you wish to assign the key to. I have not tried this, personally (I don't have this problem), but I've heard that it works. 0.9611(a) should fix this problem. ---------------------------------------------------------------------------VSMC SETTINGS: OPTIONS 3-ii ---------------------------------------------------------------------------VSMC options can be changed by clicking 'Emulation Options' main menu of VSMC96.EXE. from the - VIRTUAL SCREEN Purpose: Buffers the data from the PPU emulator and sends it out to the VGA card all at once, as opposed to using the VGA card's RAM as the PPU workspace. Advantages: Greatly reduces flicker and greatly increases speed. Side-effect: Requires an additional 64K of conventional memory. - TWEAK Purpose: Enables VGA MODE-Q, a tweaked VGA mode. Advantages: Allows you to see the entire SNES screen without any missing vertical lines. Improves graphics speed (somewhat). Side-effect: Does not work with some 'intelligent' monitors. - JOYSTICK Purpose: Allows you to use a standard IBM-PC joystick with VSMC. Advantages: Obvious. Side-effect: Slows down emulation on some computers. - AUTO-DEBUG Purpose: Enters the debugger immediately upon selecting an SMC file. Advantages: Suitable for programs which lock up near the beginning of execution, or for serious programmers. Side-effect: Unknowegable users find this intimidating. - USE EMS Purpose: Creates a 2MB demand-page buffer for ROM banks. Advantages: Greatly improves VSMC's emulation speed, reduces wear on hard drive (as if anyone cares) Side-effect: Requires 2MB of additional memory and an EMS manager. (note: EMS, with regards to 65816 emulation, is faster than XMS, because only one segment needs to be used at any time. This segment register can be held constant all times, rather than swapping it, as is the case with XMS, during a data bank or program bank change on the 65816 side. So don't complain.) ---------------------------------------------------------------------------VSMC SETTINGS: IRQ AND REFRESH RATES 3-iii ---------------------------------------------------------------------------These options can be changed by clicking 'Emulation Options' main menu of VSMC96.EXE. from the - IRQ The IRQ rate (actually the VBlank NMI) is depicted on a scale of values from zero thru nine. Each unit represents a 13400 cycle wait-state between NMI interrupts. A setting of '3' (the default) will result in a 53600 cycle wait between NMI (resulting in a 50Hz NMI). All values for this option are listed here: IRQ RATE: 0 1 2 |3 | 4 5 6 7 8 9 --------------+---+-------------------------------------NMI SPEED: 200 100 66 |50 | 40 33 28 25 22 20 (Hz) NMI PERIOD: 5 10 15 |20 | 25 30 35 40 45 50 (ms) WAIT STATE: 13 26 39 |52 | 65 79 91 105 117 131 (K-u) Default (The NMI Speed and NMI Period above assumes slow-rom operation. Neither NMI period nor NMI speed are the 'real- life' values. They are values used internally by the emulator to ensure proper timing based on cycle counts.) NOTE! In 0.9610(d), the implementation of NMI has changed. Although a value of '3' will still result in a 52K-u wait state, it will actually perform 269, 205-u waits (one for each hblank, including overscan). This has been done to provide VSMC with proper vblank and hblank IRQ timings, not just proper vblank NMI timings. Therefore, although each unit on VSMC's IRQ timing scale still represents a 13400-u wait state for NMI interrupts, it is now actually implemented as a 51-u wait state between hblank IRQs. - REFRESH RATE The refresh rate tells how many NMIs to wait before refreshing screen, the if it is deemed necessary. See 'speed considerations' for implications of this option. '1' is usually selected by default. the REFRESH RATE: 0 |1 | 2 3 4 5 6 7 8 9 ----+---+---------------------------------------------NMI WAITS: 1 |2 | 3 4 5 6 7 8 9 10 ACTUAL RATE: 50 |25 | 17 12 10 8 7 6 6 5 (Hz) AS VIEWED: 25 |12 | 9 6 5 4 4 3 3 2 (Hz) Default (Actual Rate and As Viewed assume that the IRQ rate is set to 50Hz. Actual rate indicates the rate of refresh from the emulated SNES's point of view using cycle counting. As Viewed indicates the rate of refresh that the enduser would likely see, if (s)he was using the 'Suggested System' of a 486DX2 66MHz. This value would greatly fluctuate, however, depending on the load caused by multiple BG planes or a high number of bitplanes in each BG plane. Actual Rate would not fluctuate, as it is not affected by factors 'external' to the actual emulation aspect of the program.) ---------------------------------------------------------------------------RUNTIME FUNCTIONS: THE CHEAT FINDER 4-i ---------------------------------------------------------------------------Yes, now even _you_ can finish Actraiser. The operation of the cheat finder is simple. You tell it what value to look for in memory. You then change this value somehow (perhaps you die, causing your lives-in-reserve to decrease). You then search for this new value. Once the cheat finder narrows the possibilities down to one or two, it will give you the memory address of whatever you were looking for (your lives, in this simple example). You can then freeze this address at whatever value you want. The cheat finder is activated from the debugger (F1) while playing the game. A real example: Start up 'Actraiser(tm)' on VSMC and enter an action scene. Count the number of health bars (the blue things at the top) you have. Enter the debugger (hit F1), then select the cheat finder (hit F5). Select 'New Search'. Select 'Continue Search', and enter the number of blue health bars you had. Return to the game (F10). Get hit by something, and re-count the number of blue health bars you have. Enter the debugger (hit F1), the cheat finder will already be selected. Select 'Continue Search', and enter the number of blue health bars you have. You should now see only one or two matches. One will have the address '29' associated with it. This is your hero's life. Select one of the freeze slots (slot '1', for example), enter this address ('29'). Enter the amount of life you want (try '30'). Because this is 'frozen', you life will _always_ remain at '30'. Go back to the game with 'F10', and have fun. Note: Realtime save can also be used as a game-cheat utility. Simply save the state as you progress through the game. If you are defeated, or take a wrong turn, load the saved state. Press 'F4' during gameplay for list of keys used in association with the realtime save functions. the ---------------------------------------------------------------------------RUNTIME FUNCTIONS: VIDEO DEBUG FUNCTIONS 4-ii ---------------------------------------------------------------------------Pressing the numbers '1' through '8' determine which function to perform on the selected background plane. By default, function '2' is selected. The functions are listed here, but they can also be obtained by pressing 'F4' during gameplay: '1' Enable/Disable BG plane ScrLck on) '3' Unused '5' Scroll BG Up 8 units '7' Scroll BG Left 8 units '2' Display Tiles (or Map if '4' Unused '6' Scroll BG Down 8 units '8' Scroll BG Right 8 units Perform the function with the 'F5' thru 'F8' keys. Pressing one of these keys will perform the function (selected above) on BG0(F5), 1(F6), 2(F7) or 3(F8). ---------------------------------------------------------------------------RUNTIME FUNCTIONS: META-DEBUGGER 4-iii ---------------------------------------------------------------------------Keys available at any time: ^Z Unfriendly exit from VSMC and the VSMC GUI. WARNING: This does not release the 2MB EMS demand-page buffer if you have enabled it. (0.9610(d) fixes this) * Forces an NMI at the present time, if it is allowed. ^F Fast-execute mode. Traces code until a breakpoint or BRK instruction. Press any key to return to normal debug mode. ^V Displays the SNES's video screen. ^R Loads the gamename.RTS file (same as CTRL-F9 from normal emulation) ^L Saves the gamename.RTS file (same as F9 from normal emulation) <spc> Steps through the current instruction code <Fn> F1: Enters TRACE mode F2: Sets Breakpoint(s) F3: Goes to LOG menu F4: Goes to memory manipulation screen F5: Enters cheat finder F10: Returns to standard SNES emulation In TRACE mode: Up/Down Scrolls trace history display In BRKPT mode: all functions are labeled. In LOGS mode: all functions are labeled. In MEMORY mode: PgUp/Dn Quickly scrolls the display Up/Dn Slowly scrolls the display In CHEAT mode: all functions are labeled.