home *** CD-ROM | disk | FTP | other *** search
/ Emulator Universe CD / emulatoruniversecd1998.iso / Sega_MD / Emus / genecyst / README.TXT < prev   
Encoding:
Text File  |  1997-09-27  |  17.9 KB  |  492 lines

  1. =================================================================
  2.  genecyst                                 Version 0.32b (09/27/97)
  3.  by Bloodlust Software
  4. =================================================================
  5.  
  6. Do not send any files without asking first.
  7.  
  8. Do not ask about SNESticle (or anything else you want emulated).
  9.  
  10. I realize that the FM emulation is pretty bad, but since I dont have a 
  11. (working) Genesis anymore I'm going mainly from memory and my tonedeaf ears.
  12. The envelope rates, detune, and relative volumes need to be tweaked heavily.
  13. Most games sound better if you turn up the bass on your soundcard.
  14.  
  15. The CPU skipper analyzes 68k execution and dynamically modifies the
  16. ROM code to prevent idle loops and other slow things. This can almost halve
  17. the time taken to emulate the 68k cpu in most games. It is by default off 
  18. because there's a small chance that it may introduce a compatibility
  19. problem. 
  20.  
  21. Racing games appear to work better now but they desperately need a true
  22. line by line graphics engine to be 100% accurate and to be rendered faster.
  23. Patience.
  24.  
  25. DMAfix on Rockman prevents those evil dots.
  26.  
  27.  
  28. ---------------------
  29.      What it is
  30. ---------------------
  31.  
  32. genecyst is a DOS based emulator for the Sega Genesis.
  33.  
  34. The 68K, Z80, DAC, digital FM emulation and graphics
  35. rendering were written from *scratch* in assembly. The rest is in C++.
  36.  
  37. It is freeware and it is not to be distributed with game
  38. ROMs and it is not to be modified or sold.
  39.  
  40. Loads roms in the BIN, SMD or split (*.1) file formats.
  41.  
  42. OS/2 users: -disablelfn
  43.  
  44.  
  45. ---------------------
  46.      Revisions
  47. ---------------------
  48.  
  49. Version 0.32b:
  50.  -Fixed relative path problem on command line
  51.  -Autoversion setting
  52.  -Fixed FM channel 6 problem
  53.  -Improved CPU skipper
  54.  -Corrected 68K IRQ levels (stupid typo)
  55.  -Fixed a Z80 reset bug
  56.  -Fixed some more z80 bugs
  57.  -F11/F12 switch resolutions (get SDD!)
  58.  
  59. Version 0.31:
  60.  -Fixed a VRAM fill bug
  61.  -'-exclusive' command line option (disables windows multitasking)
  62.  -Fixed some DAC lag
  63.  -Altered the way envelopes are handled
  64.  -Dynamic CPU skipper
  65.  -Improved H-ints (Gunstar intro, S.Showdown, Chuck Rock, Timekillers, racing games)
  66.  -Louder PSG
  67.  -LFO amplitude modulation
  68.  -PSG noise channel (forgot about that)
  69.  -Altered HV counter
  70.  -Fixed minor z80 bug
  71.  -Fixed minor soundlogging bug
  72.  
  73. Version 0.30:
  74.  -Encapsulated gui.vol
  75.  -DMA transfers now eat clock cycles
  76.  -Better LFN detection
  77.  -Raster based effects (see below)
  78.  -Sprite masking
  79.  -Correct sprite priorities
  80.  -Rendering optimizations
  81.  -Z80 rewritten
  82.  -Speed throttle disabling
  83.  -'Force display enable' option added (see below)
  84.  -Wave output logging added
  85.  -Digital YM2612 FM synthesis
  86.  -Most of 68k emulation rewritten
  87.  -Cell based V-scrolling
  88.  -Split cart format support
  89.  -State display
  90.  -'DMAfix' prevents vram writes during DMA transfers
  91.  -Digital PSG emulation
  92.  -Faster DMA transfers
  93.  -Accurate HVcounter
  94.  -'version' command line option
  95.  -Scanlines in mode 256x256
  96.  -Correct window placement/priority
  97.  -Romdir saved
  98.  -CRAM reads
  99.  -Changed z80 busreq
  100.  -Fixed SSP/USP problem with state restores
  101.  -68K: Added BTST Dx,# instruction
  102.  -68K: Fixed STOP instruction
  103.  -Fixed joystick calibration
  104.  -Small font added
  105.  -Z80 speedup
  106.  
  107. Version 0.20:
  108.  -Highly accurate profiling with RDTSC (pentium only)
  109.  -Faster FPU mem->vid copy (pentium only)
  110.  -Automatic 6-button joystick disabling
  111.  -68K: LineA/F emulation
  112.  -68K: Corrected USP/SSP
  113.  -YM2612 FM emulation
  114.  -RAM->VRAM DMA transfer bug fixed
  115.  -DAC sound output
  116.  -Save state file format changed (this was unavoidable)
  117.  -Z80 emulation (buggy)
  118.  
  119. Version 0.14:
  120.  -Unchained modeX modes added (320x240 and 320x224)
  121.   These modes are considerably slower than VESA modes so don't use them
  122.  -6 button joystick inputs (almost)
  123.  -Stop intruction fixed
  124.  -Fixed MOVE->CCR data size
  125.  -Sped up 68k branching
  126.  -Funky Z-flag implemented
  127.  -Improved waitvsync
  128.  -Pattern table viewer
  129.  -Layer enabling dialog
  130.  -Fixed DOS hardware error handler
  131.  -Readjusted window priority
  132.  
  133. Version 0.13:
  134.  -PCX palette saving fixed
  135.  -Fixed MOVEM wraparound bug
  136.  -Fixed 68k flag bugs
  137.  -Added primitive Z80 faking
  138.  -Altered Window priority
  139.  -ROM checksum fixer (fixes games that "red screen")
  140.  
  141. Version 0.12:
  142.  -Initial release
  143.  
  144. ---------------------
  145.     What it does
  146. ---------------------
  147.  
  148. What is emulated:
  149.  
  150.    -68000 CPU @ 8Mhz
  151.    -Z80 secondary CPU @ 4Mhz
  152.    -DAC output
  153.    -YM2612 FM synthesis
  154.    -TI76489 PSG 
  155.    -VDP
  156.    -DMA 
  157.    -ScrollA/ScrollB/Sprites/Window
  158.    -Some raster effects
  159.    -H/V interrupts
  160.    -Dual 4-button/7-button joypad emulation
  161.    -US/Japan/Europe variants
  162.  
  163. Other neat features:
  164.  
  165.    -Multiple save states and battery backed ram
  166.    -Joystick support
  167.    -VESA support
  168.    -Save .pcx snapshots
  169.    -Game genie codes
  170.    -Rom checksum fixer
  171.    -Wave output logging
  172.  
  173. ---------------------
  174.    What it lacks
  175. ---------------------
  176.  
  177. Digital FM emulation needs much work
  178. Stereo FM (probably not worth it)
  179. Graphic equalizer
  180.  
  181. 68000 emulation is still buggy
  182. Z80 emulation still buggy
  183.  
  184. H-ints aren't emulated correctly I dont think
  185.  
  186. Shadow/highlighting effects
  187. Interlaced modes
  188. Netplay
  189.  
  190. Many games do not work correctly (or at all).
  191. Dont bother me if a ROM doesn't work.
  192.  
  193. ---------------------
  194.   What you need
  195. ---------------------
  196.  
  197. A Pentium with at least 8MB of RAM.
  198.  
  199. genecyst can take advantage of VESA 2.0 support if it exists.
  200. If it does not exist, genecyst will resort to only the
  201. video modes 320x200, 256x224, 256x240, 256x256, 320x224, 320x240.
  202. The last 2 modes are planar (unchained) ModeX modes, meaning that
  203. they are not linear and are very SLOW. Get a VESA extender such as Scitech
  204. Display Doctor (www.scitechsoft.com) and use 320x240 instead.
  205.  
  206. ---------------------
  207.   Work it baby
  208. ---------------------
  209.  
  210. Use alt-<key> to access the menu options (ie alt-l loads)
  211.  
  212. The default keys for the first controller are ABC='zxc', Start='v', XYZ='asd',
  213. and the arrow keys. They can be remapped from the Settings/Input device menu.
  214. Enter/Tab will simulate Start/C on controller 1 if you have a 2 button joystick,
  215. ONLY when the GUI is disabled or the game window has input focus (click on it)
  216.  
  217. 6-button Genesis controllers can be enabled from the Settings menu. Having a
  218. 6-button controller enabled on older games will most likely cause them to go
  219. haywire. The emulation of the 6-button controllers is only a guess, but it
  220. seems to work for most games. Most games need to be reset if you change from
  221. 3 to 6 buttons. 6-button support will be automatically disabled for games
  222. which don't support them as specified in their ROM header.
  223.  
  224. Some carts check to see what version of hardware they are running
  225. on (US/Japan/Europe), and they'll bitch if played on the wrong system.
  226. The setting in the Version menu is the default hardware preference. With 
  227. Auto-Version on, if the default version isn't listed in the ROM header, 
  228. the version will be automatically changed.
  229.  
  230. Some games contain battery backed RAM. This RAM is automatically
  231. loaded and saved to "xxxx.GSV" files.
  232.  
  233. F5/F7 saves and loads states. Pressing the keyboard keys 0-9 (not the numeric
  234. keypad ones) will change the current state slot for subsequent saves/loads.
  235. The state filename follows the form "xxxx.GS?" where 'xxxx' is the romname
  236. and ? is the current save slot (0-9).
  237.  
  238. Know that the battery backed RAM is saved in each state file. The
  239. battery RAM from any state file that is loaded will overwrite
  240. the ROM's .GSV file.
  241.  
  242. "Raster effects" refers to changes to the display made during a frame.
  243. Many games use H-interrupts to change video registers and change the 
  244. screen output as it is being drawn. H-ints are automatically enabled with 
  245. raster effects on.
  246.  
  247. Raster effect emulation is by default off because its still a bit buggy.
  248. For most games there will be little speed difference with or without
  249. raster effects, however some games change the video registers many
  250. times per frame. Games that do that will slow down a lot with raster
  251. effects on. Palette-based raster effects aren't emulated yet, but they
  252. are used quite frequently. Also, the raster effects will not persist
  253. with the cpu paused. These problems will be remedied in later versions.
  254. Examples of games that benefit from raster effects are TJ&E,G&G, sf2turbo,
  255. and Landstalker.
  256.  
  257. Some games create a letterbox effect by turning the display
  258. enable bit off near the bottom of the screen (usually after a H-interrupt).
  259. The 'force display enable' menu option will display the screen regardless 
  260. of the status of this bit. This is only needed for a few games, and only
  261. if you choose to leave raster effects off.
  262.  
  263. The DMAfix option prevents writes to the VDP during DMA transfers
  264. (fixes Superhydlide).
  265.  
  266. ---------------------
  267.       Sound
  268. ---------------------
  269.  
  270. Genesis sound output is driven by a secondary Z80 processor running at 4Mhz,
  271. however the 68000 can also control the sound hardware directly. The Genesis
  272. uses a YM2612 sound chip which has six FM channels and one digital channel.
  273.  
  274. A fast Pentium is highly recommended for decent sound emulation. You can
  275. change the sample rate from its default of 22050hz with the -SNDRATE command
  276. line option (or just edit gen.ini). The lesser the sample rate the less cpu
  277. time needed to generate the FM sound. 44100hz sounds very clear but really
  278. is overkill. Sometimes lower sampling rates sound better.
  279.  
  280. Z80 emulation can be toggled from the CPU menu. Disabling the Z80 will
  281. speed up the overall emulation, but sound will be absent in most games.
  282.  
  283. If a ROM stops due to a Z80 invalid opcode, remember that the Z80
  284. emulation is buggy and incomplete. Disable Z80 and reset.
  285.  
  286. Z80 faking can be toggled from the CPU menu. It is workaround that will
  287. fool the 68000 into thinking that a Z80 is actually present and running.
  288. Some games loop waiting for the Z80 to respond.
  289.  
  290. All sound can be disabled with the -nosound command line option.
  291. Z80 emulation can be disabled with the -disablez80 command line option.
  292.  
  293. ---------------------
  294.       Input
  295. ---------------------
  296.  
  297. genecyst supports analog joysticks, 4-button gamepads,
  298. 6-button gamepads, the Gravis GrIP gameport and keyboard input.
  299.  
  300.  - There are two input devices, one each for controller 1 and 2.
  301.  - Change the input devices with Settings/RedefineInput
  302.  - Enter/Tab will simulate Start/C on controller 1, ONLY when
  303.     the GUI is disabled or the game window has input focus (click on it)
  304.  - You can remap the buttons for a joystick input device with the
  305.     command line option '-remapbut' or from the "Remap buttons" dialog...
  306.     Simply click on the button type and then press the joystick button
  307.     you wish to use. Pressing any key will set the NES button to "None".
  308.  - You can redefine the keys for a Keyboard input device with the
  309.     Redefine Keys dialog, or with the '-setkey' command line option
  310.  - Joystick 1 or 2 refer to 2-button analog joysticks only!
  311.  - You can interactively calibrate the joystick with the "Calibrate"
  312.     button. Just center and swirl. The joystick thresholds can be also
  313.     set with the '-joythresh' command line option.
  314.  - The '-analogjoyres' command line option sets the maximum number of
  315.     times that the joystick port is polled (usually this need not be changed)
  316.  - In order to enable GrIP support, you MUST copy the "grip.gll" file
  317.     to the startup directory. genecyst will load the driver
  318.     if it finds it and the GrIP devices in slot 1 or 2 can be used.
  319.     Note that if you have Win95 GrIP drivers installed it may not be
  320.     possible for a DOS application to access the GrIP port.
  321.  
  322. Information on reading the MS Sidewinder gamepad in its native digital mode
  323. under DOS would be nice. Microsoft is uncooperative.
  324.  
  325. ---------------------
  326.       Timing
  327. ---------------------
  328.  
  329. You can adjust the timing from the Settings menu.
  330.  
  331. HBlank inst is the number of instructions per scanline (224 lines per frame).
  332. VBlank inst is the number of instructions per vertical retrace (vblank).
  333. Vfps is the number of emulated frames per second.
  334.  
  335. Some games require more instructions per frame in order to not slowdown. In
  336. other words some games need more CPU power. Other games may need less. An example
  337. of this is Gauntlet4 which needs at least 3000 Vblankinst (as well as h-ints on).
  338.  
  339. The more time spent emulating the 68k, the less time available to render
  340. frames and vice versa.
  341.  
  342. ---------------------
  343.    ROM patching
  344. ---------------------
  345.  
  346.  
  347. genecyst supports GameGenie codes and general patching of the
  348. CPU ROM address space (0-3FFFFE) at even addresses.
  349.  
  350. Bring up the ROM patching dialog with F6 or from the CPU menu.
  351. There are two edit fields in the dialog, the Name and the Code.
  352. The Code field is where the actual code goes (eg SCRA-BJX0).
  353. The Name field lets you type in a description of the code
  354. (eg "Rings worth 2"), if no name is entered then the code string is
  355. used as the name. Once you've filled these in, clicking "Add" (or
  356. pressing enter) will add it to the list of patches. To activate
  357. or deactivate the patch, doubleclick on the code name in the listbox
  358. or click on "Toggle". "Remove" deletes the patch completely.
  359. "Save" writes all the patches to the text file <romname>.pat,
  360. this file is decribed below.
  361.  
  362. genecyst accepts either GameGenie codes or raw patches.
  363. GameGenie codes are 8 digits long and use the symbols:
  364.      ABCDEFGHJKLMNPRSTVWXYZ0123456789
  365. The use of a '-' is optional.
  366.  
  367. The raw patches are in the format:
  368.         <$addr>:<$val>
  369. <$addr> is the 24-bit hex address (must be even)
  370. <$val> is the 16-bit hex value to be patched at that address.
  371.  
  372. genecyst can save a .pat file that contains all the patches
  373. created during a game. This file can be modified using a
  374. text editor. Each line of the .pat file looks like this:
  375.             <code> [<name>]
  376. <code> is the patch itself (GG or raw format).
  377. <name> is the text description of the code, if no name is supplied
  378.         then the code is used as the name
  379.  
  380. Note: If more than one patch modifies the same address then only one
  381. can be active at once. Activating one will deactivate the others.
  382.  
  383. Another Note: Most Genesis games do a rom checksum in order to verify
  384. their integrity. Therefore, having a patch active during the ROM's startup
  385. code could in most cases cause the ROM to crash itself. (Hence the use
  386. of so called 'master codes')
  387.  
  388.  
  389. ---------------------
  390. Command line options
  391. ---------------------
  392.  
  393.  
  394. @<filename>     : Parses the file <filename> for command line options
  395.  
  396. -res <xw> <yw>  : Sets the resolution to xw,yw on startup.
  397.  
  398. -setinput <num> <type>
  399.                 : Sets input device <num> to <type>
  400. -remapbut <device> <a> <b> <c> <start> <x> <y> <z>
  401.                 : Remaps buttons for <device>
  402.                 : <device> can be JOY1, JOY2, GRAVIS, GRIP1, GRIP2, 6BUTTON
  403. -setkey <device> <ul> <u> <ur> <l> <r> <dl> <d> <dr> <a> <b> <c> <start> <x> <y> <z>
  404.                 : Sets the keyboard scancodes for <device>
  405.                 : <device> can be KEY1 or KEY2
  406. -setjoythresh <num>  <left> <right> <up> <down>
  407.                 : Sets the joystick threshold for analog joystick <num>
  408.                 : left,right,up,down define the joystick's "dead-zone"
  409. -analogjoyres <num>
  410.                 : Sets the maximum number of times the joystick port
  411.                 : is polled. Increase this number if the calibration values
  412.                 : seem to max out.
  413.  
  414. -waitvsync      : Wait for the vertical sync to draw frames
  415. -hidegui        : Hide GUI on startup
  416. -nomsgpopup     : Disables the last message from being shown on screen
  417.  
  418. -load <rom>     : Load <rom>
  419. -run <rom>      : Load & Run <rom>
  420.  
  421. -romdir <dir>   : Sets the startup dir for roms
  422. -savedir <dir>  : Sets the directory for .GS? files
  423. -pcxdir <dir>   : Sets the directory for saving snapshots
  424.  
  425. -? or -h        : Display command line help
  426. -disablelfn     : Disables long file name support
  427. -novesa         : Don't use VESA extensions
  428. -linear         : Force linear VESA mode
  429. -banked         : Force banked VESA mode
  430.  
  431. -nosound        : Disables both FM and DAC
  432.  
  433. -disablez80     : Disables the Z80 processor (enabled by default)
  434. -fakez80        : Turns Z80 faking on (disabled by default)
  435.  
  436. -rdtsc          : Enable the use of the pentium RDTSC profiling instruction
  437.                 : Enabling this on a non-Pentium will cause genecyst to crash.
  438.  
  439. -fpucopy        : Use the FPU for mem->vidmem copies
  440.                 : This will only provide speedups for pentium class processors
  441.  
  442. -version <type> : <type> can be USA, Japan, or Europe
  443.  
  444. -exclusive      : This switch will disable windows multitasking. This result in a speedup
  445.                 : although all your other apps will pause while genecyst is running.
  446.                 : Using this switch is similar to running genecyst under pure DOS, but without
  447.                 : having to exit windows.
  448.  
  449. ---------------------
  450.      Contact
  451. ---------------------
  452.  
  453. Bloodlust Software
  454. bldlust@parodius.com
  455.  
  456. Don't email me about ROMs.
  457.  
  458. Information on the NeoGeo or Capcom arcade units would be appreciated.
  459.  
  460. ---------------------
  461.   Acknowledgements
  462. ---------------------
  463.  
  464. The authors and contributors to the Sega Programming Faq
  465.  
  466. Ishmair for YM2612 information and help.
  467.  
  468. Neill Corlett for general 68K information
  469. Get MGE now: http://www4.ncsu.edu/eos/users/n/nscorlet/mge/
  470.  
  471. Merlyn LeRoy for the Sega Game Genie format
  472.  
  473. Special thanks to Loaded and Benny Boola Hill
  474.  
  475. Marat Fayzullin, Jens Restemeier, Carl-Henrik Skσrstedt, and Zophar
  476.  
  477. ---------------------
  478.      Disclaimer
  479. ---------------------
  480.  
  481. genecyst Copyright 1997 Bloodlust Software
  482. Sega and Genesis are trademarks of Sega Enterprises, Ltd.
  483. Neither Bloodlust Software nor the author are affiliated with Sega
  484.  nor advocate the piracy of Genesis games.
  485. genecyst is freeware and can be distributed freely as long as it is not
  486.  modified and ROMs are not packaged with the program.
  487. When you use this software you do so at your own risk. The author is
  488.  not responsible for any loss or damage resulting from the use or
  489.  misuse of this software.
  490. If you do not agree with these terms delete this software now.
  491.  
  492.