home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 July / PCO_07_97.ISO / filesbbs / DOS / NESTC032.ARJ / README.TXT < prev   
Encoding:
Text File  |  1997-05-18  |  29.1 KB  |  697 lines

  1. =================================================================
  2.  NESticle                                   Version 0.32 (5/16/97)
  3.  by Bloodlust Software
  4.              "The only NES emu with elephantitus" (TM)
  5. =================================================================
  6.  
  7. Death to the defiler.
  8.  
  9. Do not ask about SNESticle (or anything else you want emulated).
  10.  
  11. ---------------------
  12.      What it is
  13. ---------------------
  14.  
  15. NESticle is a DOS/Win95 based emulator for the Nintendo
  16. Entertainment System written in C++/Assembly. The core
  17. is essentially the product of 2 weeks of boredom and 
  18. a smattering of effort. 
  19.  
  20. It is freeware and it is not to be distributed with game
  21. ROMs and it is not to be modified or sold. 
  22.  
  23. The CPU emulation is based on a modified version of
  24. Neil Bradley's (neil@synthcom.com) assembly m6502 core.
  25.  
  26. A majority of the NES technical information used to create this
  27. came from Marat Fayzullin's (fms@freeflight.com) great NES.DOC
  28. and a lot of 'hacking' on my own. 
  29.  
  30. Sound information was provided by Y0SHi (yoshi@parodius.com) from
  31. his NES technical document. His doc did not exist until recently,
  32. but it is updated quite often. 
  33.  
  34. ---------------------
  35.     What's New
  36. ---------------------
  37.  
  38. Version 0.32:
  39.  - v.32 will not netplay correctly with older versions
  40.  - Experimental mapper #5,#6,#8,#11 support
  41.  - Partial 100-crappy-games-in-1 mapper support (iNES mapper #15)
  42.  - Some MMC1 changes (RcProam 1)
  43.  - NES ROM header editor
  44.  - DOS GrIP support (see Input Devices)
  45.  - Windows->DOS clipboard pasting put in DOS (Shift-ins or Ctrl-V pastes)
  46.  - Record/play NES movies (*.nsm)
  47.  - Some DOS SB driver changes (fixes?) for single cycle DMA (DSP<2.00)
  48.  - Some DirectSound tweaking, better sound (maybe) at the expense of higher latency
  49.  - Interactive joystick calibration/button remapping (see Input devices)
  50.  - Game Genie codes and general ROM patching (see Rom Patching)
  51.  - Should gracefully exit (hopefully) if NESticle runs out of memory.
  52.     8MB under DOS is highly recommended
  53.  - Scrapped the binary config file 'NESticle.cfg' and opted for
  54.     a completely text based config file (see Command line options)
  55.  - Detects mouse driver now instead of using it blindly (DOS)
  56.  - Additional ModeX modes, 256x240 and 256x256 (DOS)
  57.  - Menu options accessed using ALT now (ie, ALT-l loads a rom)
  58.     Did this to resolve ambiguities with edit controls, keyb input, and menu
  59.  - Log wave output now writes .WAV files (95 only) 
  60.  - Added '-sndblksize' command line option. 
  61.  - Some directory and longfilename stuff fixed
  62.  - Some key changes (unified pause/resume with alt-p and reset with alt-r)
  63.  - Labelled window buttons 
  64.  
  65. Version 0.31:
  66.  - Some changes in Netplay, default ports changed to reflect this.
  67.     v.31 will not netplay correctly with older versions
  68.  - Big resynching problem fixed when a reset occurs in netplay
  69.  - Spacebar key does nothing now, ESC hides gui and maximizes game window
  70.  - Some iNES Mapper #7 support added (Wizards & Warriors 1/2)
  71.     The mirroring isn't quite right, but at least they run for now.
  72.     Ensure that their headers contain the # of 16k banks, NOT 32k
  73.  - Finally, long fucking file names under DOS (MSDOS 7.x under 95)
  74.     If they cause problems, disable with '-disablelfn'
  75.  - Log wave output feature added (Win95 only)
  76.  - Uses asynchronous functions to resolve local host 
  77.     (no more hanging under win95 w/o being connected to internet)
  78.  - Calibrate button actually calibrates the joystick (who would have thought)
  79.     Center it then push the button...calibrate under win95 with the control panel
  80.  - BRK instruction fixed (DW1 works again)
  81.  - Louder triangle wave (normalized sound constant as well)
  82.  - Seperate dirs for different file types (see command line options)
  83.  - "Read only" roms now load
  84.  - Longer default VBlank interval (fixes many games)
  85.  - Reverted to using DOS4GW, apparently some people were having problems
  86.     with the PMODE/W extender so DOS4GW was put back in. If you liked 
  87.     PMODE/W better you can always download it and bind it to the EXE
  88.     PMODE/W is avaliable at http://www.di.net/pmw
  89.  
  90. Version 0.3:
  91.  - PPU mem address wrapped around now
  92.  - Sound settings dialog added (soundconstants fixed)
  93.  - GUS support
  94.  - Pattern editor 
  95.  - Resorted to multi-threading under 95 to compensate for 
  96.     DirectSound being such a living pile of shit (still not fixed totally)
  97.  - Fixed sprite clippings
  98.  - Triangle wave channel fixed
  99.  - Noise channel implemented
  100.  - Enter/Tab work when GUI disabled or game window has input focus
  101.  - Cycle timings fixed
  102.  - Hitflag/Split screen improved
  103.  - PCX snapshots saved to 'snap??.pcx'
  104.  - Netplay TCP/IP or IPX (Win95 only)
  105.  - 'sndconstant' command line option added
  106.  - 'swapbut' command line option replaced by 'remapbut'
  107.  - Ctrl/Alt now mappable to keyboard input devices
  108.  - Default keys for keyboard #1 are B/A=Ctrl/Alt
  109.  - Command line now read from 'default.w95' and 'default.dos'
  110.  - Dumb bug in MMC1 fixed (Zelda 2 works)
  111.  - IRQ's for MMC3 fixed
  112.  - DOS4GW replaced by PMODE/W (its a little faster and its a lot smaller)
  113.     If it causes problems, DOS4GW can still be used (run "dos4gw nesticle")
  114.     If you get a "Unable to allocate framebuffer selector" error, use DOS4GW.
  115.  
  116. Version 0.21:
  117.  - You can change directories now when you load roms.
  118.  - Sound cards under DOS that do not support auto-initialized
  119.     DMA transfer have been fixed, i hope.
  120.  - Now uses a secondary sound buffer for mixing as opposed to using
  121.    the primary one (under Win95 DirectSound). This should make it
  122.    more compatible. Also is using a timer callback to update the buffer,
  123.    should eliminate some static. DirectSound is atrocious.
  124.  - 'swapbut' command line option added.  Swaps the A&B joystick buttons
  125.  - 'palfile' command line option added.  Now you can use multiple-palettes.
  126.  - The new palette was thankfully provided by Loopy (loopy@itsnet.com).
  127.  
  128. Version 0.2: 
  129.  - Initial release
  130.  
  131. ---------------------
  132.     What it does
  133. ---------------------
  134.  
  135. NESticle emulates the basic NES hardware, along with several of
  136. the memory mapping chips used by various games. As of now,
  137. it runs a majority of games although there are still
  138. a few bugs and glitches here and there.
  139.  
  140. What's emulated:
  141.  
  142.    -6502 CPU
  143.    -PPU
  144.    -VRAM/VROM 
  145.    -Horizontal/Vertical mirroring
  146.    -Scrolling
  147.    -Multiple split screens (although some glitches still)
  148.    -8x8 and 8x16 Sprites
  149.    -Dual joypads
  150.    -iNES Memory mappers 0,1,2,3,4  (5,6,7,8,11,16 partial)
  151.    -Battery backed RAM
  152.    -Sound emulation  
  153.  
  154. Other neat features:
  155.  
  156.    -Multiple save states
  157.    -Joystick/GrIP support
  158.    -Network play (Win95 exe only)
  159.    -"Friendly" GUI
  160.    -VESA/DirectDraw support
  161.    -Fullscreen 256x224 VGA mode (DOS only)
  162.    -Save .pcx snapshots
  163.    -Editable pattern tables (CHR/tile/vrom)
  164.    -iNES single file cart format 
  165.    -Virtual frame speed not system dependant
  166.    -Wave output loggable
  167.    -Editable palette (I dont have the correct colors)
  168.    
  169.  
  170. ---------------------
  171.  What it doesn't do
  172. ---------------------
  173. All of the sound channels are not emulated entirely correctly.
  174. Lots of tweaking needs to be done. Particularly the frequency
  175. sweeps which are responsible for most sound effects. The sound
  176. mixer still needs to be rewritten in assembly as well.
  177. You can turn the sound off if it gets on your nerves.
  178. If you notice the sound "breaking up" or becoming staticy, 
  179. try lowering the sampling rate. Apparently some systems can't handle
  180. low-latency streaming with DirectSound so increasing the size of 
  181. the mixing block with -sndblksize may help some DirectSound problems.
  182.  
  183. I'm not sure how the PCM channel works exactly.
  184.  
  185. GUS support is preliminary.
  186.  
  187. I'll put in turbo/autofire settings later.
  188.  
  189. Lightgun support.
  190.  
  191. Better pattern editor.
  192.  
  193. Native Ensoniq support 
  194.  
  195. ---------------------
  196.   What you get
  197. ---------------------
  198.  
  199. There are 6 files:
  200.  
  201.   DOS4gw.exe       : 32-bit DOS extender
  202.   NESticle.exe     : The 32-bit DOS version
  203.   NEStcl95.exe     : The Win95/NT Directdraw version
  204.   NESticle.pal     : The NES palette (256 colors in RGB format)
  205.   gui.vol          : Extra graphics stuff for the gui
  206.   readme.txt       : This file
  207.  
  208. Note that it does not come with ROMs.
  209. It will never come with ROMs.
  210. And it must never be distributed with ROMs.
  211. Distribute it with ROMs and you die.
  212. Ask me for ROMs and you die.
  213.  
  214.  
  215. ---------------------
  216.   What you need
  217. ---------------------
  218.  
  219. A 486 or Pentium running DOS or Windows 95/NT.
  220.  
  221. For the Windows version you MUST HAVE DirectX Version 3.0.
  222. It's available somewhere on Microsoft's labyrinth of a website.
  223. I'd recommend at least 16MB of memory for the Win95 version.
  224.  
  225. NESticle can take advantage of VESA 2.0 support if it exists.
  226. If it does not exist, NESticle will resort to only the
  227. video modes 320x200, 256x224, 256x240, 256x256. 
  228. You need about 8MB of memory for the DOS version. To play
  229. larger games, 4MB of memory will just not cut it.
  230.  
  231. The DOS version currently supports 8-bit or 16-bit Soundblasters
  232. or compatible, or the Gravis Ultrasound. 16-bit preferred, of course. 
  233. The Win95 version utilizes DirectSound for digital output (which
  234. sucks horribly).
  235.  
  236. ---------------------
  237.  How to work it good
  238. ---------------------
  239.  
  240. If you can figure out the japanese version of Pasofami
  241. then you can figure out this.
  242.  
  243. Most of the menu options are self explanitory.
  244. Load up a .NES rom from the File/Load ROM.
  245. Execute the rom from CPU/Reset.
  246.  
  247. If you're running in a high-res mode (>320x240), the NES
  248. game screen will appear in a window. You can maximize the window
  249. with the "SQUARE" button in the title bar. You close the window with
  250. the X button. 
  251.  
  252. You can toggle the GUI on and off by pressing ESC.
  253.  
  254. You change the input devices from the Settings/RedefineInput menu(s).
  255. No matter what the settings are, Enter/Tab are always Start/Select in order
  256. to accomodate 2 button joysticks. Enter/Tab only work if the game window
  257. has input focus (click on it) or the gui is disabled.
  258.  
  259. F5/F7 saves and loads your games. Essentially it stores the entire NES state
  260. in a state file. Pressing the keyboard keys 0-9 (not the numeric keypad ones)
  261. will change the current state slot for subsequent saves/loads:
  262.    0 = "xxxx.STA"        (xxxx is the rom file name)
  263.    1 = "xxxx.ST1"
  264.    2 = "xxxx.ST2"
  265.      ... etc, you get the idea.
  266. The default slot whenever a rom is loaded is 0 (ie "xxxx.STA")
  267.  
  268. You can record movies with CPU/NES Movie/Record. This will create
  269. a NES Movie file (*.nsm) which contains the NES state along with
  270. recorded input so you can send them to your friends and bore them
  271. to death. CPU/NES Movie/Stop will stop the recording.
  272. Recording takes 2 bytes/frame, 120 bytes/second, 7K/minute, 
  273. and 432K per hour (10MB per day). When playing a movie, be sure
  274. the correct ROM is loaded or else things'll get weird. Once the
  275. movie is done playing NES control is relinquished.
  276. One thing to beware, movies recorded with NESticle will not
  277. be compatible with future versions if the emulation core changes.
  278.  
  279. The NSM files are backward compatible with STA files, in other
  280. words, renaming zelda.nsm to zelda.sta will allow you to load the
  281. movie as a normal state file and play from the movie's beginning point.
  282. Additionally, STA files are backward compatible with SAV files,
  283. renaming zelda.sta to zelda.sav will load it as battery backed mem.
  284.  
  285. To edit patterns, View/Pattern tables, then click on a pattern and edit it.
  286. Right clicking on a pattern will change its attribute (palette), to aid
  287. in drawing. If you wish, you can save the changes with File/Write VROM, and the
  288. VROM will be written directly to the .NES file, so beware.
  289.  
  290.  
  291. ---------------------
  292.   ROMS and stuff
  293. ---------------------
  294.  
  295. NESticle currently uses the iNES single file cart format (*.NES). 
  296. It will support the pasowing format in the future.
  297. The ROMs must be stored in the same dir as the .exe.
  298.  
  299. Here's a description of a sample cart 'ZELDA' and some possible extensions:
  300.  
  301.  - ZELDA.NES         
  302.     The actual ROM/VROM data preceded by a 16-byte header
  303.  
  304.  - ZELDA.HDR         
  305.     An alternate 16-byte header file. If NESticle encounters this in the dir
  306.     of the ROM, it will use this header instead of the one present in the
  307.     NES file.
  308.  
  309.  - ZELDA.SAV
  310.     8K file representing the contents of the battery backed memory used
  311.     in some games. This file is automagically saved and loaded as needed.
  312.  
  313.  - ZELDA.ST?
  314.     It's the 'state' file used by saved games. 
  315.  
  316.  - ZELDA.NSM
  317.     Recorded NES Movie. 
  318.  
  319.  - ZELDA.PAT
  320.     Text file containing ROM patches
  321.  
  322.  - ZELDA.Dxx    It's a dump of the 64k cpu address space. For debug purposes.
  323.  - ZELDA.Rxx    It's a dump of all 16k rom banks. For debug purposes.
  324.     
  325.  
  326. Numerous roms floating around out there have incorrect headers.
  327. Having an incorrect memory mapper type in the header will most likely cause
  328. the game to crash. Having an incorrect mirroring bit will cause the background
  329. to appear jumbled, or split, while scrolling. You can flip the mirroring bit
  330. from the settings menu. If changing the mirroring fixes the game, you can then
  331. write the ROM header as described above. 
  332.  
  333.  
  334. ---------------------
  335.    ROM patching
  336. ---------------------
  337.  
  338. I finally deciphered GameGenie codes with some basic info provided
  339. by Benzene of Digital Emutations (demu@wspice.com). No thanks to Galoob.
  340.  
  341. NESticle supports GameGenie codes and general patching of the
  342. CPU ROM address space ($8000-$FFFF).
  343.  
  344. Bring up the ROM patching dialog with F6 or from the CPU menu.
  345. There are two edit fields in the dialog, the Name and the Code.
  346. The Code field is where the actual code goes (eg APZLGG). 
  347. The Name field lets you type in a description of the code (eg Megajump),
  348. if no name is entered then the code string is used as the name.
  349. Once you've filled these in, clicking "Add" (or pressing enter) will 
  350. add it to the list of patches. To activate or deactivate the patch, 
  351. doubleclick on the code name in the listbox or click on "Toggle".
  352. "Remove" deletes the patch completely. "Save" writes all the patches
  353. to the text file <romname>.pat, this file is decribed below.
  354.  
  355. NESticle accepts either GameGenie codes or raw patches.
  356. GameGenie codes can be either 6 or 8 digits and
  357. use the letters:
  358.     A P Z L G I T Y   E O X U K S V N 
  359. Deciphering the GameGenie code is a mess and I won't
  360. go into it here. NESticle internally converts them to a raw format.
  361.  
  362. The raw patches have two formats that coorespond to both
  363. types of Game Genie codes:
  364.  
  365.         <$addr>:<$val>          (6 letter GG code)
  366.         <$addr>?<$key>:<$val>   (8 letter GG code)
  367.  
  368. <$addr> is a 15-bit hex address within $8000-$FFFF of 
  369.           the CPU address space (the rom area).
  370. <$val> is the 8-bit hex value to be patched at that address.
  371. <$key> is an 8-bit hex number that MUST be present at that
  372.           ROM location before the patch will be active.
  373.  
  374. Examples:
  375.  10A4:10    patches CPU address $90A4 with the hex value $10.
  376.  05A1?5B:FF patches CPU address $85A1 with the hex value $FF if 
  377.              and only if $85A1 currently contains $5B
  378.  
  379. NESticle can save a .pat file that contains all the patches
  380. created during a game. This file can be modified using a
  381. text editor. Each line of the .pat file looks like this:
  382.  
  383.           [+]<code> [<name>]
  384.  
  385. [+]    if a '+' is prefixed to the code, then it will be automatically
  386.         activated when the game is run
  387. <code> is the patch itself (GG 6/8 or raw format).
  388. <name> is the text description of the code, if no name is supplied
  389.         then the code is used as the name
  390.  
  391. Note: If more than one patch modifies the same address (and have compatible
  392. keys) then only one can be active at once. Activating one will deactivate
  393. the others (ie they are mutually exclusive).
  394.  
  395.  
  396.  
  397. ---------------------
  398.    Input Devices
  399. ---------------------
  400.  
  401. NESticle supports analog joysticks, 4-button gamepads,
  402. the Gravis GrIP gameport and keyboard input.
  403.  
  404. Some general things:
  405.  - There are two input devices, one each for NES controller 1 and 2.
  406.  - Change the input devices with Settings/RedefineInput
  407.  - Enter/Tab will simulate Start/Select on NES controller 1, ONLY when
  408.     the GUI is disabled or the NES game window has input focus (click on it)
  409.  - You can remap the buttons for a joystick input device with the 
  410.     command line option '-remapbut' or from the "Remap buttons" dialog...
  411.     Simply click on the NES button type and then press the joystick button 
  412.     you wish to use. Pressing any key will set the NES button to "None".
  413.  - You can redefine the keys for a Keyboard input device with the 
  414.     Redefine Keys dialog, or with the '-setkey' command line option
  415.  
  416. Under DOS:
  417.  - Joystick 1 or 2 refer to 2-button analog joysticks only!
  418.  - "Gamepad" refers to a 4-button analog joypad (or joystick)
  419.    The default button mapping for "Gamepad" conforms to that
  420.    for a Gravis Gamepad (ie, 0 2 1 3), but can be changed
  421.  - Due to hardware limits, only one 4-button device can be connected
  422.  - You can interactively calibrate the joystick with the "Calibrate" 
  423.    button. Just center and swirl. The joystick thresholds can be also
  424.    set with the '-joythresh' command line option.
  425.  - In order to enable GrIP support, you MUST copy the "grip.gll" file
  426.     to NESticle's startup directory. NESticle will load the driver
  427.     if it finds it and the GrIP devices in slot 1 or 2 can be used.
  428.  
  429. Under Win95:
  430.  - Joystick 1 and 2 refer to joystick device 1 and 2 as defined under 
  431.     Win95's Control Panel/Joystick and can be calibrated from there
  432.  - Gamepad refers to joystick device 1 (with the default Gravis Gamepad mapping)
  433.  - Under Win95 there is no practical limit to the number of buttons
  434.     per joystick device, and any can be remapped
  435.  
  436.  
  437. ---------------------
  438. Command line options
  439. ---------------------
  440.  
  441. DOS & WIN95:
  442. ------------
  443.  
  444. @<filename>     : Parses the file <filename> for command line options
  445.  
  446. -res <xw> <yw>  : Sets the resolution to xw,yw on startup.
  447.                 : Use this if 256x224 doesn't work or you get a
  448.                 : "Unable to init DDraw: invalid mode" error
  449.  
  450. -setinput <num> <type>
  451.                 : Sets input device <num> to <type>
  452.                    ex. '-setinput 1 GRAVIS'
  453. -remapbut <device> <b> <a> <sel> <start>
  454.                 : Remaps buttons for <device>
  455.                 : <device> can be JOY1, JOY2 or GRAVIS
  456.                 : <b>,<a>,<sel>,<start> are the joystick button #'s for each NES button
  457.                 : A setting of '255' will disable the NES button
  458.                 : The old 'swapbut' is now obselete, instead use "-remapbut JOY1 1 0"
  459. -setkey <device> <ul> <u> <ur> <l> <r> <dl> <d> <dr> <b> <a> <sel> <start>
  460.                 : Sets the keyboard scancodes for <device>
  461.                 : <device> can be KEY1 or KEY2
  462. -setjoythresh <num>  <left> <right> <up> <down>
  463.                 : Sets the joystick threshold for analog joystick <num>
  464.                 : left,right,up,down define the joystick's "dead-zone"
  465.  
  466. -waitvsync      : Wait for the vertical sync to draw frames (see Performance)
  467. -showfps        : Show FPS on startup
  468. -hidegui        : Hide GUI on startup
  469.  
  470. -load <rom>     : Load <rom>
  471. -run <rom>      : Load & Run <rom>
  472. -restore <rom>  : Load & Run & Restore state for <rom>
  473.  
  474. -sndrate <rate> : Sets the sound sampling rate (8000-44100) default=22050
  475. -sndblksize <s> : Sets the size of the mixing block (in samples) default=256
  476. -nosound        : Bypasses the initialization of any sound hardware
  477. -force8bit      : Forces 8-bit sound output (even if 16-bit exists)
  478. -sndconstant <channel> <x>
  479.                 : Sets the NES sound constant for <channel> to <x> in hexadecimal 
  480.                 : <channel> can be from 1 to 5
  481.                 : Changing this will change the relative pitch of the notes played
  482.                 : For the technically inclined, the formula is:
  483.                 :            freq=SOUNDCONSTANT/D   where D is the NES data written
  484.                 : You can edit these during the game in the sound dialog.
  485.  
  486. -romdir <dir>   : Sets the startup dir for .NES roms
  487. -savedir <dir>  : Sets the directory for .SAV and .STA files
  488. -pcxdir <dir>   : Sets the directory for saving snapshots
  489. -logdir <dir>   : Sets the directory for logging and debug files
  490. -patchdir <dir> : Sets the directory for .PAT files
  491.  
  492. DOS only:
  493. ---------
  494. -? or -h        : Display command line help
  495. -disablelfn     : Disables long file name support
  496. -novesa         : Don't use VESA extensions
  497. -linear         : Force linear video mode
  498. -banked         : Force banked video mode
  499.  
  500. -sb   <port> <irq> <dma8>  : Forces 8-bit soundblaster settings (ex -sb 220 7 1)
  501. -sb16 <port> <irq> <dma16> : Forces 16-bit soundblaster settings (ex -sb16 220 5 5)
  502.       (if soundblaster settings are not supplied, they will
  503.         be extracted from the BLASTER environment variable,
  504.        GUS settings are extracted from the ULTRASND variable)
  505.  
  506.  
  507. "NESticle.ini" and "NEStcl95.ini" are two automatically generated 
  508. configuration files which are parsed before the command line
  509. itself. You can manually edit the constants in this file if 
  510. you wish, but any additional commands or options added to it 
  511. will be overwritten the next time you run NESticle.
  512.  
  513. The two files "NESticle.cmd" and "NEStcl95.cmd" are user-editable
  514. files for command line options and will be appended to the 
  515. ini files when they are parsed.
  516.  
  517.  
  518. ---------------------
  519.      Netplay
  520. ---------------------
  521.  
  522. Netplay at this point is very preliminary.
  523. It is still quite buggy.
  524.  
  525. Netplay is only available with the Win95 version (using Winsock),
  526. over either the TCP/IP or the IPX protocols.
  527. In the future, the DOS version may support the IPX protocol.
  528.  
  529. One person must start a server (Net/Start server) and select
  530. a protocol to use as well as the port. The person's name
  531. must be entered as well. The opponent must connect to this
  532. server (Net/Connect), and for the TCP/IP protocol he must
  533. supply the server's IP address. Only one person can be
  534. connected to a server at once. Do not try to run more than 
  535. one NESticle server on the same port on the same
  536. network, the results will be unpredictable.
  537.  
  538. After the connection has been made, the connection status 
  539. window may be closed and the connection will remain active. 
  540. Select Net/Disconnect to close the connection.
  541. You can chat with the other player by opening the chat
  542. window with Net/Chatwindow.
  543.  
  544. After you are connected, one person can load up a ROM, and
  545. if the remote player also has the ROM his/her side will
  546. load it as well. If the remote player does not have the
  547. ROM or has an incompatible ROM (ie wrong size) then the
  548. game will abort and an error will appear in the message window.
  549. The person who last loaded the ROM or last reset the ROM
  550. will be player 1. The game is played using each computer's 
  551. input device 1.
  552.  
  553. Now for the complex stuff:
  554. In order for netplay to work at all, both sides need
  555. to be syncronized at all times. This is no problem for a low
  556. latency LAN running over ethernet for example. However this
  557. spells trouble for internet connections. In the connection window,
  558. the ping times of all the nodes are shown. The ping time number
  559. is measured in virtual frames. The NES normally runs at 60 frames
  560. per second, so a ping time of '30' would be about 500ms. The
  561. lower the ping time the better. The bandwidth that NESticle uses 
  562. is negligable, less than 100bytes/sec.
  563.  
  564. Anyway, adjusting the 'vframe latency' number will affect how
  565. lagged each player's input is. It essentially controls
  566. how often game update packets are sent.....
  567. A low vframe latency number will result in a very responsive game 
  568. if your network can handle it. A high vframe latency
  569. setting will result in a 'lagged game', but it may be necessary
  570. for high latency connections (such as the internet).
  571. If you have your vframe latency set too low, you will notice that the
  572. game will 'freeze' periodically as it waits for the other computer
  573. to respond. If you have it set too high, your game input will be
  574. severely lagged, but the game will not 'freeze'. 
  575.  
  576. The default setting is 5, I highly recommend changing it.
  577. On a LAN, where the connections are fast and reliable, a vframe 
  578. latency of about 2 will result in great gameplay and performance.
  579. On the internet, the best setting is about half of your pingtime.
  580. I left the setting adjustable so you can mess with it to see whats
  581. best. As far as internet play goes, personally i don't think
  582. it runs very well, but that's not my fault as much as it is the
  583. internet's and there's nothing I can do about it. 
  584.  
  585. Some last things: the vframe latency setting is not adjustable 
  586. while in the middle of a game. You must free the ROM, change it, 
  587. then reload. Also, save games will not work while connected and 
  588. you cannot restore saved states, nor can you apply rom patches. 
  589.  
  590. After this harangue still I repeat: netplay is still very preliminary, 
  591. there are no guarantees, if it doesn't work right then fuck it. 
  592. Just play with yourself instead.
  593.  
  594. ---------------------
  595.  Performance Issues
  596. ---------------------
  597.  
  598. This section has lots of technical crap.
  599. Read at your discretion.
  600.  
  601. The DOS and Win95 versions vary greatly in the performance they achieve.
  602. It all depends on the video hardware you have and the video acceleration
  603. available. The Win95 DirectDraw version of NESticle takes advantage of hardware
  604. blitting to improve performance tremendously. If your card does not support
  605. hardware blitting then performance will most likely be worse than the DOS
  606. version. You can tell if your card supports this by selecting
  607. Misc/DirectDrawInfo from the menu.
  608.  
  609. There's one big catch: Most drivers written for Win95 do not inherently
  610. support low res modes like 320x200 and 320x240. The ones that don't support
  611. them have to substitute by using notoriously slow ModeX modes for these
  612. resolutions. Not only do the ModeX modes not have hardware blitting, they
  613. also have much slower page flips because of additional conversions necessary.
  614. The DOS version will be significantly faster in cases like these.
  615.  
  616. The DOS version starts up in 256x224 mode by default. It's a resolution
  617. perfect for the NES. The DOS version requires VESA 2.0 extensions to run
  618. at 320x240 or above...if your video card does not have this built
  619. in you can get Univbe from http://www.scitechsoft.com. Why would you want to
  620. run at anything above 256x224 if the NES res is 256x224? Well, there's
  621. two reasons: A 320x240 linear frame buffer VESA 2.0 mode on a PCI bus will
  622. most likely be faster than the 256x224 mode. And secondly, Scitech's Univbe
  623. allows you to pump up the refresh rate of low resolution modes which
  624. makes things look a lot nicer. 
  625.  
  626. You can show the fps counter by selecting ShowFPS from the Misc menu.
  627. To squeeze the most fps out of your system, make sure the GUI is disabled and 
  628. the NES game window is maximized (ie hit ESC). This eliminates a lot
  629. of overhead. Having WaitVsync turned on waits for vertical syncs before
  630. drawing frames, this slows the frame rate to the refresh rate of the video
  631. card (thats why it's a good reason to increase the refresh rate with Univbe).
  632. WaitVsync is off by default.
  633.  
  634. You can see the % of CPU utilization in an option in the misc menu. I dunno what it's
  635. good for, just looks neat. Anything besides the NES rendering and the 6502 Emulation 
  636. bars is purely overhead. Interesting to note that under Win95, that all of the CPU
  637. utilization bars never add up to 100% showing how much CPU time is sucked out by the OS. 
  638.  
  639. If a game ever 'slows down', it's most likely because it would have slowed
  640. down at that part on a real NES too, and it isn't an emulator problem. 
  641. Increasing the vblank/hblank intervals may alleviate that though.
  642.  
  643. ---------------------
  644.      Contact
  645. ---------------------
  646.  
  647. Bloodlust Software
  648. bldlust@southwind.net
  649. http://www2.southwind.net/~bldlust/NESticle.html
  650.  
  651. Email me about ROMs and your suffering will be legendary.
  652.  
  653. ---------------------
  654.   Acknowledgements
  655. ---------------------
  656.  
  657. Marat Fayzullin for his priceless NES.DOC and iNES emulator.
  658.  
  659. Multi-6502 CPU emulator by Neil Bradley (neil@synthcom.com)
  660.  
  661. Y0SHi for taking the time to maintain his 'nestech.doc'
  662.  
  663. Y0SHi, Marat and FanWen for supplying valuable information on NES sound.
  664.  
  665. Additional help by Neill Corlett, if you haven't gotten MGE yet 
  666. then you suck: http://www4.ncsu.edu/eos/users/n/nscorlet/mge/
  667.  
  668. Additional info:
  669.  FanWen (yangfanw@ms4.hinet.net)
  670.  Andrew Davie (adavie@comcen.com.au)
  671.  Matthew J Richey (mr6v+@andrew.cmu.edu) 
  672.  Benzene (demu@wspice.com)
  673.  DeceiverX, Loopy, Vectriff, Zophar
  674.  
  675. Scrotum-art and testing by digger.
  676.  
  677. Nesticular name idea by _Dsk_.
  678.  
  679. ---------------------
  680.      Disclaimer
  681. ---------------------
  682.  
  683. NESticle Copyright 1997 Bloodlust Software
  684. Nintendo Entertainment System (NES) is a registered trademark of Nintendo.
  685. Game Genie is a trademark of Galoob.
  686. Neither Bloodlust Software nor the author are affiliated with Nintendo
  687.  nor advocate the piracy of NES games.
  688. NESticle is freeware and can be distributed freely as long as it is not
  689.  modified and ROMs are not packaged with the program.
  690. The source code and any resources used to create NESticle are NOT freeware
  691.  and cannot be redistributed, modified or used in ANY other projects
  692.  as prohibited by their respective copyrights.
  693. When you use this software you do so at your own risk. The author is 
  694.  not responsible for any loss or damage resulting from the use or 
  695.  misuse of this software.
  696. If you do not agree with these terms then NESticle is not for you.
  697.