home *** CD-ROM | disk | FTP | other *** search
/ Freesoft 1999 February / Freesoft_1999-02_cd.bin / Recenz / Emulator / SNES / Nestc / README.TXT < prev   
Text File  |  1998-01-01  |  16KB  |  440 lines

  1. =================================================================
  2.  NESticle                                   Version 0.43 (1/1/98)
  3.  by Bloodlust Software
  4. =================================================================
  5.  
  6. Death to the defiler.
  7.  
  8. Do not send any files without asking first.
  9.  
  10. Do not ask about SNESticle (or anything else you want emulated).
  11.  
  12. Two scroll fix options alter the way that nametable writes
  13. are interpreted. This can fix or break some games. I can't figure
  14. out how scrolling is supposed to work in all cases, so
  15. these 'workaround' options were put in to fix a few games.
  16.  
  17. For increased compatibility with all monitors, the default DOS
  18. resolution is 320x200. This means that the bottom 24 lines of
  19. games are cut off unless you switch another resolution (such as
  20. 256x224, 256x256, 320x240 etc).
  21.  
  22. Games which use extended mappers (>16) must have clean headers (00)
  23. or else the extended mapper bits will be ignored.
  24.  
  25. The sound code was rewritten, some games sound better,
  26. some games sound worse. Freq sweeps may be a bit glitchy.
  27.  
  28. The palette is stored in the exe now but will still be loaded from
  29. nesticle.pal if it exists.
  30.  
  31. ---------------------
  32.      What it is
  33. ---------------------
  34.  
  35. NESticle is a DOS/Win95 based emulator for the Nintendo
  36. Entertainment System written in C++/Assembly.
  37.  
  38. It is freeware and it is not to be distributed with game
  39. ROMs and it is not to be modified or sold.
  40.  
  41. A majority of the NES technical information used to create this
  42. came from Marat Fayzullin's (fms@freeflight.com) great NES.DOC.
  43.  
  44. Sound information was provided by AJG, Fanwen, Mikael Iushin and Y0SHi.
  45.  
  46. ---------------------
  47.      Revisions
  48. ---------------------
  49.  
  50. Version 0.43:
  51.  - Encapsulated nesticle.pal
  52.  - Delta Modulation channel (not PCM)
  53.  - Minor MMC1 fixes
  54.  - Mapper 19 support (Namcot)
  55.  - Complete rewrite of sound code
  56.  - Mapper 22/23 support (Konami VRC2)
  57.  - Native MS Sidewinder support
  58.  - Encapsulated gui.vol
  59.  - Fixed up some VESA code
  60.  - Manual frameskip (-frameskip)
  61.  
  62. ---------------------
  63.     What it does
  64. ---------------------
  65.  
  66. NESticle emulates the basic NES hardware, along with several of
  67. the memory mapping chips used by various games. 
  68.  
  69. What's emulated:
  70.  
  71.    -6502 CPU
  72.    -PPU
  73.    -VRAM/VROM
  74.    -Horizontal/Vertical mirroring
  75.    -Scrolling
  76.    -8x8 and 8x16 Sprites
  77.    -Dual joypads
  78.    -iNES Memory mappers fully/partially supported: 0,1,2,3,4,5,6,7,8,9,11,15,19,22,23 
  79.    -Battery backed RAM
  80.    -Sound emulation
  81.  
  82. Other neat features:
  83.  
  84.    -Multiple save states
  85.    -Joystick/"GrIP" support
  86.    -Network play (Win95 exe only)
  87.    -"Friendly" GUI
  88.    -VESA/DirectDraw support
  89.    -Fullscreen 256x224 VGA mode (DOS only)
  90.    -Save .pcx snapshots
  91.    -Editable pattern tables (CHR/tile/vrom)
  92.    -iNES single file cart format
  93.    -Wave output loggable
  94.    -Editable palette (I dont have the correct colors)
  95.  
  96.  
  97. ---------------------
  98.  What it doesn't do
  99. ---------------------
  100.  
  101. Lightgun
  102.  
  103. Mapper/compatibility problems
  104.  
  105. Palette changes during frame (W&W, Startropics)
  106.  
  107.  
  108. ---------------------
  109.   What you need
  110. ---------------------
  111.  
  112. A 486 or Pentium running DOS or Windows 95/NT.
  113.  
  114. The DOS version requires DOS4GW, available separately.
  115.  
  116. For the Windows version you MUST HAVE DirectX Version 3.0.
  117. It's available somewhere on Microsoft's labyrinth of a website.
  118. At least 16MB of memory for the Win95 version.
  119.  
  120. NESticle can take advantage of VESA 2.0 support if it exists.
  121. If it does not exist, NESticle will resort to only the
  122. video modes 320x200, 256x224, 256x240, 256x256.
  123. 256x256 has scanlines.
  124. You need about 8MB of memory for the DOS version.
  125.  
  126. The DOS version currently supports 8-bit or 16-bit Soundblasters
  127. or compatible, or the Gravis Ultrasound. 16-bit preferred, of course.
  128. The Win95 version utilizes DirectSound for digital output.
  129.  
  130. ---------------------
  131.  How to work it
  132. ---------------------
  133.  
  134. Load up a .NES rom from the File/Load ROM.
  135. Reset the rom from CPU/Reset.
  136.  
  137. If you're running in a high-res mode (>320x240), the NES
  138. game screen will appear in a window. You can maximize the window
  139. with the "SQUARE" button in the title bar. You close the window with
  140. the X button.
  141.  
  142. You can toggle the GUI on and off by pressing ESC.
  143.  
  144. You change the input devices from the Settings/RedefineInput menu(s).
  145. No matter what the settings are, Enter/Tab are always Start/Select in order
  146. to accomodate 2 button joysticks. Enter/Tab only work if the game window
  147. has input focus (click on it) or the gui is disabled.
  148.  
  149. F5/F7 saves and loads your games. Essentially it stores the entire NES state
  150. in a state file. Pressing the keyboard keys 0-9 (not the numeric keypad ones)
  151. will change the current state slot for subsequent saves/loads:
  152.    0 = "xxxx.STA"        (xxxx is the rom file name)
  153.    1 = "xxxx.ST1"
  154.    2 = "xxxx.ST2"
  155.      ... etc
  156. The default slot whenever a rom is loaded is 0 (ie "xxxx.STA")
  157. With statebackuping on, when saving, the old state file is renamed to 
  158. 'xxxx.bak'. You'll have to manually rename the backup state file to
  159. use it again.
  160.  
  161. You can record movies with CPU/NES Movie/Record. This will create
  162. a NES Movie file (*.nsm) which contains the NES state along with
  163. recorded input.
  164.  
  165. To edit patterns, View/Pattern tables, then click on a pattern and edit it.
  166. Right clicking on a pattern will change its attribute (palette), to aid
  167. in drawing. If you wish, you can save the changes with File/Write VROM, and the
  168. VROM will be written directly to the .NES file, so beware.
  169.  
  170.  
  171. ---------------------
  172.   ROMS and stuff
  173. ---------------------
  174.  
  175. NESticle currently uses the iNES single file cart format (*.NES).
  176. The ROMs must be stored in the same dir as the .exe.
  177.  
  178. Here's a description of a sample cart 'ZELDA' and some possible extensions:
  179.  
  180.  - ZELDA.NES
  181.     The actual ROM/VROM data preceded by a 16-byte header
  182.  
  183.  - ZELDA.HDR
  184.     An alternate 16-byte header file. If NESticle encounters this in the dir
  185.     of the ROM, it will use this header instead of the one present in the
  186.     NES file.
  187.  
  188.  - ZELDA.SAV
  189.     8K file representing the contents of the battery backed memory used
  190.     in some games. This file is automagically saved and loaded as needed.
  191.  
  192.  - ZELDA.ST?
  193.     It's the 'state' file used by saved games.
  194.  
  195.  - ZELDA.NSM
  196.     Recorded NES Movie.
  197.  
  198.  - ZELDA.PAT
  199.     Text file containing ROM patches
  200.  
  201.  
  202. ---------------------
  203. ROM patching/GameGenie
  204. ---------------------
  205.  
  206. I finally deciphered GameGenie codes with some basic info provided
  207. by Benzene of Digital Emutations (demu@wspice.com). No thanks to Galoob.
  208.  
  209. NESticle supports GameGenie codes and general patching of the
  210. CPU ROM address space ($8000-$FFFF).
  211.  
  212. Bring up the ROM patching dialog with F6 or from the CPU menu.
  213. There are two edit fields in the dialog, the Name and the Code.
  214. The Code field is where the actual code goes (eg APZLGG). 
  215. The Name field lets you type in a description of the code (eg Megajump),
  216. if no name is entered then the code string is used as the name.
  217. Once you've filled these in, clicking "Add" (or pressing enter) will 
  218. add it to the list of patches. To activate or deactivate the patch, 
  219. doubleclick on the code name in the listbox or click on "Toggle".
  220. "Remove" deletes the patch completely. "Save" writes all the patches
  221. to the text file <romname>.pat, this file is decribed below.
  222.  
  223. NESticle accepts either GameGenie codes or raw patches.
  224. GameGenie codes can be either 6 or 8 digits and
  225. use the letters:
  226.     A P Z L G I T Y   E O X U K S V N
  227. Deciphering the GameGenie code is a mess and I won't
  228. go into it here. NESticle internally converts them to a raw format.
  229.  
  230. The raw patches have two formats that coorespond to both
  231. types of Game Genie codes:
  232.  
  233.         <$addr>:<$val>          (6 letter GG code)
  234.         <$addr>?<$key>:<$val>   (8 letter GG code)
  235.  
  236. <$addr> is a 15-bit hex address within $8000-$FFFF of 
  237.           the CPU address space (the rom area).
  238. <$val> is the 8-bit hex value to be patched at that address.
  239. <$key> is an 8-bit hex number that MUST be present at that
  240.           ROM location before the patch will be active.
  241.  
  242. Examples:
  243.  10A4:10    patches CPU address $90A4 with the hex value $10.
  244.  05A1?5B:FF patches CPU address $85A1 with the hex value $FF if 
  245.              and only if $85A1 currently contains $5B
  246.  
  247. NESticle can save a .pat file that contains all the patches
  248. created during a game. This file can be modified using a
  249. text editor. Each line of the .pat file looks like this:
  250.  
  251.           [+]<code> [<name>]
  252.  
  253. [+]    if a '+' is prefixed to the code, then it will be automatically
  254.         activated when the game is run
  255. <code> is the patch itself (GG 6/8 or raw format).
  256. <name> is the text description of the code, if no name is supplied
  257.         then the code is used as the name
  258.  
  259. Note: If more than one patch modifies the same address (and have compatible
  260. keys) then only one can be active at once. Activating one will deactivate
  261. the others (ie they are mutually exclusive).
  262.  
  263.  
  264.  
  265. ---------------------
  266.    Input Devices
  267. ---------------------
  268.  
  269. NESticle supports analog joysticks, 4-button gamepads,
  270. the Gravis GrIP gameport and keyboard input.
  271.  
  272. Some general things:
  273.  - There are two input devices, one each for NES controller 1 and 2.
  274.  - Change the input devices with Settings/RedefineInput
  275.  - Enter/Tab will simulate Start/Select on NES controller 1, ONLY when
  276.     the GUI is disabled or the NES game window has input focus (click on it)
  277.  - You can remap the buttons for a joystick input device with the 
  278.     command line option '-remapbut' or from the "Remap buttons" dialog...
  279.     Simply click on the NES button type and then press the joystick button 
  280.     you wish to use. Pressing any key will set the NES button to "None".
  281.  - You can redefine the keys for a Keyboard input device with the 
  282.     Redefine Keys dialog, or with the '-setkey' command line option
  283.  
  284. Under DOS:
  285.  - Joystick 1 or 2 refer to 2-button analog joysticks only!
  286.  - "Gamepad" refers to a 4-button analog joypad (or joystick)
  287.    The default button mapping for "Gamepad" conforms to that
  288.    for a Gravis Gamepad (ie, 0 2 1 3), but can be changed
  289.  - Due to hardware limits, only one 4-button device can be connected
  290.  - You can interactively calibrate the joystick with the "Calibrate" 
  291.    button. Just center and swirl. The joystick thresholds can be also
  292.    set with the '-joythresh' command line option.
  293.  - In order to enable GrIP support, you MUST copy the "grip.gll" file
  294.     to NESticle's startup directory. NESticle will load the driver
  295.     if it finds it and the GrIP devices in slot 1 or 2 can be used.
  296.  - For the MS Sidewinder to work in digital mode under Win95, you must
  297.     have v1.5 of the MS Sidewinder software and you must press the
  298.     mode button a few times.
  299.  
  300. Under Win95:
  301.  - Joystick 1 and 2 refer to joystick device 1 and 2 as defined under
  302.     Win95's Control Panel/Joystick and can be calibrated from there
  303.  - Gamepad refers to joystick device 1 (with the default Gravis Gamepad mapping)
  304.  - Under Win95 there is no practical limit to the number of buttons
  305.     per joystick device, and any can be remapped
  306.  
  307. GrIP support was added via Gravis's SDK, however it doesn't seem to 
  308. work with other devices besides the GrIP Gameport. I dont know why.
  309.  
  310. ---------------------
  311. Command line options
  312. ---------------------
  313.  
  314. DOS & WIN95:
  315. ------------
  316.  
  317. @<filename>     : Parses the file <filename> for command line options
  318.  
  319. -res <xw> <yw>  : Sets the resolution to xw,yw on startup.
  320.                 : Use this if 256x224 doesn't work or you get a
  321.                 : "Unable to init DDraw: invalid mode" error
  322.  
  323. -setinput <num> <type>
  324.                 : Sets input device <num> to <type>
  325.                    ex. '-setinput 1 GRAVIS'
  326. -remapbut <device> <b> <a> <sel> <start>
  327.                 : Remaps buttons for <device>
  328.                 : <device> can be JOY1, JOY2 or GRAVIS
  329.                 : <b>,<a>,<sel>,<start> are the joystick button #'s for each NES button
  330.                 : A setting of '255' will disable the NES button
  331.                 : The old 'swapbut' is now obselete, instead use "-remapbut JOY1 1 0"
  332. -setkey <device> <ul> <u> <ur> <l> <r> <dl> <d> <dr> <b> <a> <sel> <start>
  333.                 : Sets the keyboard scancodes for <device>
  334.                 : <device> can be KEY1 or KEY2
  335. -setjoythresh <num>  <left> <right> <up> <down>
  336.                 : Sets the joystick threshold for analog joystick <num>
  337.                 : left,right,up,down define the joystick's "dead-zone"
  338.  
  339. -vsync <ON/OFF> : Wait for the vertical sync to draw frames (see Performance)
  340. -frameskip <x>  : Sets frameskip (1-8 or "AUTO" for autoskipping)
  341. -hidegui        : Hide GUI on startup
  342. -nomsgpopup     : Disables the last message from popping up on screen
  343.  
  344. -load <rom>     : Load <rom>
  345. -run <rom>      : Load & Run <rom>
  346. -restore <rom>  : Load & Run & Restore state for <rom>
  347.  
  348. -sndrate <rate> : Sets the sound sampling rate (8000-44100) default=22050
  349. -sndblksize <s> : Sets the size of the mixing block (in samples) default=256
  350. -nosound        : Bypasses the initialization of any sound hardware
  351. -force8bit      : Forces 8-bit sound output (even if 16-bit exists)
  352.  
  353. -romdir <dir>   : Sets the startup dir for .NES roms
  354. -savedir <dir>  : Sets the directory for .SAV and .STA files
  355. -pcxdir <dir>   : Sets the directory for saving snapshots
  356. -logdir <dir>   : Sets the directory for logging and debug files
  357. -patchdir <dir> : Sets the directory for .PAT files
  358.  
  359. DOS only:
  360. ---------
  361. -? or -h        : Display command line help
  362. -disablelfn     : Disables long file name support
  363. -novesa         : Don't use VESA extensions
  364. -linear         : Force linear video mode
  365. -banked         : Force banked video mode
  366.  
  367. -sb   <port> <irq> <dma8>  : Forces 8-bit soundblaster settings (ex -sb 220 7 1)
  368. -sb16 <port> <irq> <dma16> : Forces 16-bit soundblaster settings (ex -sb16 220 5 5)
  369.       (if soundblaster settings are not supplied, they will
  370.         be extracted from the BLASTER environment variable,
  371.        GUS settings are extracted from the ULTRASND variable)
  372.  
  373. -rdtsc          : Enable the use of the Pentium RDTSC profiling instruction
  374. -fpucopy        : Use the FPU for mem->vidmem copies (pentium only)
  375.  
  376.  
  377. "NESticle.ini" and "NEStcl95.ini" are two automatically generated
  378. configuration files which are parsed before the command line
  379. itself. You can manually edit the constants in this file if
  380. you wish, but any additional commands or options added to it
  381. will be overwritten the next time you run NESticle.
  382.  
  383. The two files "NESticle.cmd" and "NEStcl95.cmd" are user-editable
  384. files for command line options and will be appended to the
  385. ini files when they are parsed.
  386.  
  387. ---------------------
  388.      Contact
  389. ---------------------
  390.  
  391. Bloodlust Software
  392. bldlust@maelstrom.net
  393. http://???
  394.  
  395. ---------------------
  396.   Acknowledgements
  397. ---------------------
  398.  
  399. Marat Fayzullin for his priceless NES.DOC and iNES emulator.
  400.  
  401. Y0SHi for taking the time to maintain his 'nestech.doc'
  402.  
  403. AJG, Y0SHi, Marat, Mikael Iushin and FanWen for 
  404. supplying valuable information on NES sound.
  405.  
  406. Thanks to Robert William Grubbs for writing his document 
  407.  on reading the MS Sidewinder digitally in DOS. 
  408.  
  409.  
  410. Additional info:
  411.  FanWen (yangfanw@ms4.hinet.net)
  412.  Neill Corlett
  413.  Andrew Davie (adavie@comcen.com.au)
  414.  Matthew J Richey (mr6v+@andrew.cmu.edu)
  415.  Benzene (demu@wspice.com)
  416.  Neil Bradley (neil@synthcom.com)
  417.  Jens Christian Restemeier
  418.  Matthew P. Conte
  419.  Benny Boola Hill
  420.  Barkley, DeceiverX, Loopy, Vectriff, Zophar
  421.  
  422. Scrotum-art and testing by digger.
  423.  
  424.  
  425. ---------------------
  426.      Disclaimer
  427. ---------------------
  428.  
  429. NESticle Copyright 1997 Bloodlust Software
  430. Nintendo Entertainment System (NES) is a registered trademark of Nintendo.
  431. Game Genie is a trademark of Galoob.
  432. Neither Bloodlust Software nor the author are affiliated with Nintendo
  433.  nor advocate the piracy of NES games.
  434. NESticle is freeware and can be distributed freely as long as it is not
  435.  modified and ROMs are not packaged with the program.
  436. When you use this software you do so at your own risk. The author is 
  437.  not responsible for any loss or damage resulting from the use or 
  438.  misuse of this software.
  439. If you do not agree with these terms then NESticle is not for you.
  440.