NEBULA CPS2 Emulator (C) 2001 ElSemi http://nebula.emulatronia.com NebulaEmu@myrealbox.com version 1.8 1.8 New system emulated: Neo·Geo. Read the NEOGEO.TXT file for more information. New autoframeskip code. It's much better than the older one. Now games should run better than before in slower computers. Please note that the working of UseMask in NEBULA.INI was changed in the previous version, read the updated comments in NEBULA.INI. Added options in NEBULA.INI to disable the joystick and sounds of the GUI. New menu system (press ESC during gameplay) to access the different windows available for each system (savestate, loadstate, cheats...) All game windows have been enhaced with new fonts and colors, they are more readable (and look a lot better :) ) Re-added (again) the scanlines modes for 640x480, please, note that not all of the other modes work correctly in this resolution in CPS (1 and 2) games, so be careful. Neogeo games will work ok with any mode in this resolution. Video options can be customized for each emulated system (CPS Horizontal, CPS Vertical and Neogeo). Added the (experimental) -window option, that lauches nebula in a window. Use this option only if your desktop color depth is set to 16 bits. Also you can switch between window and fullscreen while playing using ALT-ENTER. Added the -romcenter option that creates a Romcenter Datafile (Nebularomcenter.dat) 1.7 Switched to Mike Coates' A68K core, it's faster and more accurate. Due to this change, some of the old savestates may not work (I've tested all my savestates and all worked). Rewritten critical parts of the main emulation core, graphic tile drawers and sound emulation. This should cause a major speedup. Fixed the wrong pitch and tempo of the sound. Added a new sound mode (Dsound2d Narrow), it's faster but has less surround effect. Sound is now saved in CPS1 games. Fixed sound saving problems in CPS2 games. Added a powerful macro and hint system. Read the file MACROS.TXT. Hints are only visible if you are using 800x600 and no stretch. Macros and hints can be disabled in the OTHER options panel. To show the macro config keys, use the new arrows in the CONTROLS menu 3wonders black squares fixed. Fixed game list slider, now it works better. 1.6a Fixes hanging after loading some games in fast computers. Most CPS1 sound problems fixed Vertical scanlines mode and Hardware blit no MMX are now accesible Ghouls'n Ghosts black square problems fixed. Most CPS1 QSound game clones are working now. Added Street Fighter 2 World Warrior and clones (not all clones tested) I forgot to mention in the last version that I've fixed the sound pitch and playing speed. The sound is now closer to the arcade. 1.6 Wow, lots of changes... ADDED PRELIMINARY NETPLAY SUPPORT USING KAILLERA :). Use the -knet option or the NebulaNet.exe file. Fixed CPS1 background color selection. Added most CPS1 games (there are still some missing) Added more dipswitches Sound state in CPS1 games is not saved/loaded now, I'm trying to fix some problems with it. Fixed some CPS1 gfx glitches (3wonders black squares are still there) Faster rotated games. Now they are almost as fast as horizontal ones (Thanks Mr K :) ) Much faster scanline modes. Faster 2xZoom. Added new image enhacement modes: Super2xSaI, 2xSaISuperEagle, 2xSai 75% scanlined (Thanks again to Mr K for this last one :) ) Added Vertical Scanlines mode. Fixed Eagle support that was broken some versions ago. Removed scanline modes in 640x480. You must use higher resolutions to enable them. Added 384x224 and 768x448 resolutions. You can only use them if you video card supports them. (there are some patches out there that can enable these resolutions in some cards). Added an AutoAnalyze option in the NEBULA.INI file to avoid nebula analyzing romsets on startup. Added the Default option in Cheat files. Sounds in the GUI. SFZ3 characters and backgrounds animations fixed. PrioEngine option removed from NEBULA.INI, it's no longer needed. And lots changes that I can't remember... NOTE: to get ssf2tb working, hit F2 when the "Terminal check" words appear and in the game option set the game to Single Mode 1.5a Fixed Alien vs Predator backgrounds. Fixed ssf2xj gfx problems. Note that now ssf2xj is a child of ssf2t, so you don't need the gfx roms in the ssf2xj.zip. Some notes: -PLEASE, READ THE COMMENTS IN NEBULA.INI FILE as they have important information on how to setup the nebula gfx engine to be more accurate. -Zip file support in skins is only for skin developers. They can pack the gui image files in zip files instead of using the -packgui to produce the .dat file. 1.5 Added CPS1 support. Not all games have been added yet. Note that you CAN'T add CPS1 games via dat files. Written a new sprite graphics code that correctly handles the sprite priorities and sprite masking (this code is disabled by default as it's slower, enable it in NEBULA.INI). Added some tricks to emulate the sprite masking with the old (and faster) gfx code, note that this code is disabled by default (see NEBULA.INI) due to problems in some games (morrigan in vsav). Added a NEBULA.INI file with special configurations (read this file to know the things you can configure). Added skin selector in the OTHER menu (skins must be in the SKINS\ directory). The name displayed is the name of the .zip or .dat file containing the skin. You can use long filenames (but not very long, 20 char max). Support for up to 10 different ROM directories. Support for skins in zip files. Fixed the bug that truncated skins files to 512KB. Added a pink background option in the Shots factory. Too many internal changes that I can't remember. 1.4a Fixed Slammasters black backgrounds. Fixed sound interpolation not working and added a filter (now 44100 Hz sounds better) Added volume change emulation with the '-' and '=' keys (next to the Backspace). The volume level is saved per game. Fixed hangups when changing pantalla.raw 1.4 Some rom files has been renamed to match the latest CPS2MAME rom names. Ability to filter the game list. You can select if you want to seel all games, or only the available ones. Roms now aren't analyzed everytime Nebula starts. They are checked when romsets are changed or when you press the Rescan button in the OTHER config screen. Changed main 68000 core to Bart Trzynadlowski's Genital 68k, which is a bit faster than starscream, and has less bugs (perhaps none). Rewritten the layer 2 drawing code. Rowscrolling problems are almost fixed (only missing avsp intro). It has caused a small slowdown, but with the little speedup of the main core the speed should be the same as before. 19xx gfx problems fixed at last. If you use old savegames, then the problems will not be fixed until a stage change in the game. As some people has reported that the new gfx code (v1.3 and later) is slower than the older one (1.2 and before), then I've added the ability to use the old gfx code using the -oldgfx command line option. Sprite priority code has back to the original code that causes less gfx problems. Implemented sprite bankswitching (one of the still unemulated features of the cps2 hardware) Added PNG unfiltering modes (Sub,Up,Avg,Paeth). PNG files created with other tools should look right now. Fixed most Raster problems. Things look a lot better. Only remaining some sprite problems. Changed the Savegame format. Now the sound is correctly restored when loading a savegame. The old format is still recognized and loaded. Data files (configuration and savegames) are not encrypted anymore. If you want info about the format of these files, send me an E-mail. Fixed the "controller setting forgetting" bug. It's fixed now, but it requieres that you delete the old config files. Added the ability to save the controller data as the default mapping for games using the same button layout. GUI graphics can be changed (see -packgui option and the section below). 1.3 Fixed some rowscrolling problems (there are still many errors yet, but I know the cause) New sprite priority code. Now all seems ok. Added Auto Save/Load, that saves/load the game state on exit/entry. Screenshot format switched to PNG. (older shots are automatically converted) Frameskip value is stored. In the GUI you can draw the slider to move the list. Added wheel mouse support. Pause button mutes the sound. Changed the graphic modes for 19xx, now it's more "pixel perfect". A final comment, due to many questions I've received. The best sounding mode is Interpolated 22050 Hz (not 44100 Hz), this is due to the fact that the code is optimized for that mode and using higher frequencies result in a loss of sound quality. 1.2a (this version was a quick fix to play Powered Gear, but wasn't released. I prefer wait and release a version with more fixes) Emulated the math part of the graphics chip (used by Powered Gear) Increased the number of cheats per game (100 cheats, with 100 states per cheat and 32 values per state) 1.2 Rewritten the drawing routines. It should be faster now. Thanks Raz. Another try to solve the s3 graphics problem. Added again the Light Interpolation and Full Interpolation modes (use 640x480 res) Added some enhacement modes to 640x480 (scanlines and scanlines 50%) Added the ability to use the audio jukebox in games without decryption tables. Changed the naming of some romsets to be compatible with MAME ones. Added vsync option. Added 1280x960 resolution. 1.1 Raster effects!!. Preliminary. Some games have graphic glitches. Ssf2 y ssf2t work perfectly. Added the 400x300 and 640x400 resolutions. Fixed the crashes when using ALT-TAB to switch task. Added manual frameskip (keys + and -) Added command line options. Fixed problems with video cards that create non-linear surfaces (S3 Savage) (not fully fixed) Fixed the 3 punch in player 2 bug. Modified keypress detection. Now it's easy to make half circle moves. Added 2xSAI y Eagle. Removed the old interpolation modes. 1.0a Fixed win95 crashes 1.0 First version. Needs the romsets in a directory named ROMS or in the alternate specified. The romsets must be compressed in zip files. GAME LIST: Shows the available games. The color code is the following: White: Good romset. Yellow: Bad crc. Red: Missing files or different sizes. Blue: Missing decryption tables. You can load these games, but only Audio Jukebox will work. OPTIONS: VIDEO: System: Select the system whose video options you want to customize. Resolution: 384x224 (304x224),400x300,640x400,640x480,800x600,1024x768. Image enhacement: Enhaces the image generated by the emulator. These modes are available in 800x600 and 1024x768. From slowest to fastest are: Hardware blit: Uses all hardware capabilities. Is the fastest. Scanlines: Show black lines between the image lines. This gives a more "real" feeling. (strecth 1.6x2) Software Stretch: Does the strecthing by software (1.6x2). Avoids the filtering in Geforce cards Scanlines 50%: The lines bewteen the image ones are less brighter. Even more real acrade feeling. (stretch 1.6x2) Light Interpolation: Does a 3x1 filtering to the image. Reduces pixelation (stretch 1.6x2) Full Interpolation: Does a 3x3 filtering. Reduces pixelation even more. Almost like Geforce filter. (stretch 1.6x2) 2xSAI: 2x Stretch and Interpolation. Eagle: Enhaces color areas and edges. Stretch: Stretchs the image to fit in the screen. VSync: Enables syncronization with the vblank. Prevents tearing. Surface allocation: Allows to select the memory where graphic surfaces are allocated. Video memory is faster but require enough video RAM. AUDIO: Sample rate: . 11025, 22050,44100. Recommended 22050 Hz. Interpolation: Enhaces sound quality, but requires more cpu power Audio mode: Directsound 2D: Uses standard directsound, and software mixing. Directsound 3D: Uses Directsound 3D interface to position the audio. Hardware mixing. Requires hardware capable of 3d sound acceleration and at least 16 channels. CONTROLS: Allows changing the controls. OTHER: Alternate rom directory: Allows an additional directory where to search for roms. Do not add the trailing backslash. You can use up to 10 rom directories, to switch between directory configuration use the < and > buttons next to the title (note that this is only for configuring the directories, Nebula will search roms in all directories configured, not only in the one you have currently selected). Show only: Lets you filter the game list. You can filter by working/non-working games and by system (CPS2 or CPS1). Skin Selection: Allows to change the current nebula skin. Skins must be in the SKINS\ directory and can have long (not very long) names. GUI animations: Enables/disables animations in the gui. (for slow computers) COMMAND LINE: Call: Nebula [game] [options] game - Is the game used in the other options. If no options are specified, then the game is loaded and run. options - -log - Enable logging of errors in the file error.log -noraster - Disables raster effects. -list - Creates a file Gamelist.lst with all the supported games. -romdesc - Creates a file GameData.lst with the rom data of the selected game. -export - Creates a dat file in the ROMDATA directory with data from the selected game. -oldgfx - Uses the old gfx drawing code (v1.2 and before) -packgui - Builds a GUI.DAT file from a GUI.ZIP file. See below for details on this file. -knet - Run Nebula in Kaillera Netplay mode. -romcenter- Creates a romcenter datafile keys: 1 - start player 1 2 - start player 2 3 - start player 3 4 - start player 4 5 - coin player 1 6 - coin player 2 7 - coin player 3 8 - coin player 4 f1 - Service (add credits) f2 - Test (Configuration) f3 - Reset f4 - Cheat and region menu. f5 - Start/stop sound recording. Sounds are saved in the SHOTS directory. The filename is the game name+the actual code. f6 - Shows Audio Jukebox (CPS only). It's recommended to enter in the test menu to use this feature because the game must continue running. f7 - Take a Screenshot (directory SHOTS) f8 - Shots Factory f9 - Profiler (shows fps, times and CPU usage) f10 - Save State f11 - Load State SCROLL LOCK - Removes Framelimit (max speed) PAUSA - Pauses emulator SPACE - Advances emulation while pressed while in pause mode. ENTER - Advances 1 frame while in pause mode (gfx rip ;) ) TAB - Enter/Exit in-game GUI + (NUMPAD - Increase Frameskip - (NUMPAD) - Decrease Frameskip - - Decrease volume = - Increase volume ESC - In game Menus arrows - Movement player 1 A - Button 1 player 1 S D Z X C - Button 6 player 1 If you are reported some missing roms and you can't see what they are. Run Nebula with the -log option and read the file error.log generated after the loading. ADDING ROMS You can add new romsets by creating files in the directory ROMDATA. The file structure is as follows: (ex: quiz nanairo dreams) The filename must be the romset name ending in .dat: qndream.dat And it's as follows: Quiz Nanairo Dreams Description Parent romset (Empty if there is no parent) tqzj.03,80000,7acf3e30 Program roms: name,size in hex,crc in hex tqzj.04,80000,f1044a87 tqzj.05,80000,4105ba0e tqzj.06,80000,c371e8a5 Blank line tqzjx.03,80000,5804a8f8 Decryption tables Blank line tqz.14,200000,98af88a2,800000 Graphics roms: tqz.16,200000,df82d491 name,size,crc,load address (optional) tqz.18,200000,42f132ff tqz.20,200000,b2e128a3 Blank Line tqz.01,20000,e9ce9d0a Z80 Roms Blank Line tqz.11,200000,78e7884f Sound roms tqz.12,200000,2e049b13 Blank Line 3 Controller type (see below) -1 Always a -1 in the last line These are the controller types: 0 - 2 Players standard. sfa,ssf2,msh, etc 1 - 3 Players. avp 2 - 4 Players. ddtod 3 - 2 Players Quiz Nanairo There is no need to add all the roms in games with a parent romset, only the different roms are needed (but the blank line separator must be present) If CRC is 0, it's not checked. The parser is very simple, so the file structure must be exactly as described, with no spaces or extra characteres. Graphics loading addresses must only appear (if needed) in the first ROM in each group of four. CHEATS Cheat files are stored in the CHEATS directory and have the same name as the romset they patch, ending in .dat. The structure is as follows: (ex: vsav.dat) [Region] Following are region codes 0=Japan,FF8090,0 Number=Description,address (hex),value(hex) [,address,value...] 1=USA,FF8090,2 2=Hispanic,FF8090,4 3=Oceania,FF8090,6 4=Asia,FF8090,8 5=Euro,FF8090,A 6=Brazil,FF8090,C [0] Cheat number (starting in 0) Name=Title Screen Cheat description 0=Vampire Savior,FF8088,0 Number=Description,address (hex),value(hex) [,address,value...] 1=Darkstalkers,FF8088,1 Default=0 Default state. The numbers in the left must ve consecutive (starting in 0). Same with the cheat numbers. Addresses are the address in the 68000 memory map. You can only access ROM (0-0x3fffff) and RAM (0xFF0000-0xFFFFFF for CPS, 0x100000-0x10FFFF for Neogeo). For neogeo, the game rom can't be accessed. You can specify up to 10 pairs of address-value per cheat. Tips on creating cheats and regions: Some games (new ones) have the region stored in the bytes C0-C4 in ROM area (the exact byte depends on the game). You can find the memory area where RAM and ROM are stored using a process patcher: Search for the words ROM ADDRESS and 16 bytes after the start of the phrase is the heap address You can also find the areas in the Heap by searching for the words "CPS2 RAM" and "CPS2 ROM" and inmediately after the M, the allocated area starts. MODIFYING NEBULA GUI Now you can modify the nebula GUI. You can change the background graphics and the buttons. You'll need some files (you can download the current gui files from the homepage): Inicio.wav - Sound played on startup Jugar.wav - Sound played when you hit the Play button Salir.wav - " " " " " Quit Button Elige.wav - Sound played when you click a game name Clic.wav - Sound played when some buttons are pressed Pantalla.raw 640x480 - GUI background Botones.raw 400x300 - GUI Buttons Fondo.raw 640x480 - Rom loading background *Logo.raw file is not needed anymore as it is included in the main exe. All these files are RAW files. Using 3 bytes per pixel, in RGB format (interleaved). There is no header. You can use those parameters to open them in your favourite graphics program. There are some limitations to the graphics you can use. The background of the screenshot and options zone should be black, due to the animations using black to clear this zone. You must pack these 3 files in a ZIP file and put it in the SKINS\ directory The entire gui zip file can't be bigger than 2MB. If you want to convert the zip file to a internal (unpackable) format, you must rename your zip file to gui.zip, put it in the Nebula folder and execute nebula -packgui. You'll get a gui.dat file, copy it to the skins directory and rename to whatever name you want. Ensure that you don't have two files with the same name (one .zip and the other .dat) otherwise strange things could happen when Nebula tries to build the skin list.