home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / programs / emulaton / utilities / neditor / !Neditor / !Help next >
Text File  |  1998-08-23  |  14KB  |  196 lines

  1. Neditor v1.02
  2. by David Sharp
  3. ==============
  4.  
  5. Neditor can be used to edit the header of iNES format ROM images as used with Nintendo emulators, for example David McEwen's ArcNES on the Acorn.
  6.  
  7. Why?
  8. ====
  9.  
  10. You can play NES (Nintendo Entertainment System) games on your Acorn or PC using an emulator. The games have been 'dumped' from their original cartridges and are stored as files on several internet sites.
  11.  
  12. In order that NES emulators can easily run these games without having to store a database of the specifics of each game, most of these games (or ROM images) have a short header at the start of the file with the necessary details.
  13.  
  14. There are several different formats of NES ROM image file, all with different headers, but by far the most prevelent is the iNES format devised by Marat Fayzullin for use with his iNES emulator for several platforms (unfortunately not Acorn at this time).
  15.  
  16. The original iNES format was devised several years ago, when Marat had many games tested and running and allocated the space in the iNES format accordingly. Later on a guy called Fanwen (author of fwNES) found that he had several ROM images which didn't fit into this format Marat had devised so he extended it accordingly to work with these other games. He could do this since Marat had thoughtfully set aside space in his iNES header for expansion with 9 reserved bytes.
  17.  
  18. Unfortunately since the original format was published several idiots (mainly in the PC world) wrote NES image editors so that they could change, add, and convert between different NES formats, this was good except that they felt they should use the reserved space to plant their name or other mindless rubbish. This had no effect on emulators of the day since these extra bytes were never needed, but since the format has been expanded these incorrectly written bytes have caused difficulties with emulation. Many (most?) of the NES ROM images on the internet today have such corruptions.
  19.  
  20. It is also handy to be able to alter the headers since it seems that several ROMs have incorrect data in them about the game, such as its mapper number. If this is wrong it can cause the game to be emulated badly, or to fail completely so it is good to be able to adjust this. (Although the mapper number can now be manually ignored by new versions of xNES)
  21.  
  22. Recently there are several good iNES header editors for the PC that clean up this corruption, this is the first of its kind (that I know of) for the Acorn.
  23.  
  24. What you will need to use this software
  25. =======================================
  26.  
  27. An iNES format ROM image. Note it is illegal to possess such an image if you do not own the original cartridge. Never ask me for a ROM image or where to get them or I'll send your details to a copyright protection agency. These ROMs can be recognised as being distributed with the DOS extension .NES or by the Acorn filetype &0CF. 
  28.  
  29. A NES emulator is probably handy if you want to try out these NES images you have.
  30.  
  31. If you want to delve deeply into the inner workings of the NES in order to understand what all the flags do in the header editor, I suggest you read the following documents, which are all freely available on the Internet:
  32.  
  33. NesTech, by Y0SHi, currently v1.00
  34. Comprehensive NES Mapper Document v0.70 by Firebug
  35. iNES Header/Format Information File v2.0 by VmprHntrD (included with this program)
  36.  
  37. Note, if you need to get hold of any of these things, I recommend you take a look at The Acorn Emulation Page (which incidentally I run) which is at
  38. http://www.cybervillage.co.uk/acorn/emulation/
  39. or if that fails try
  40. http://www.come.to/emulate
  41. or if that fails see my contact details at the end of this file.
  42.  
  43. Basic usage
  44. ===========
  45.  
  46. If for some reason your ROM image won't run, load neditor and drag your iNES format ROM image to the icon which appers on the icon bar, and a window should open. If the word next to the 'reserved bytes' section says 'Just cleaned!' then the ROM image has been altered and hopefully fixed. You can now quit neditor, there is no need to click on 'save'.
  47.  
  48. If you want to clean a lot of ROM images, just select them all and drag them to the icon bar icon together, they will all be cleaned, and the last one loaded into neditor for possible editing.
  49.  
  50. To aid simple usage, a quiet option is available. Click the menu button over the icon bar icon of neditor, and select Quiet, so that a tick appears against it. Now, files dragged to the icon will be cleaned if necessary, but the window won't be opened.
  51.  
  52. Any file loaded into Neditor which has an iNES format header will automatically be settyped to &0CF, the NES ROM Acorn filetype, if it isn't correctly filetyped already.
  53.  
  54. More indepth usage
  55. ==================
  56. You may however wish to adjust the header...
  57.  
  58. From this window you can alter the NES header. Note that changes to your NES image are irreversible (unless you can remember the previous settings).
  59.  
  60. When you drag a ROM image to the icon bar icon, it's reserved bytes are automatically cleaned if necessary, hence the 'just cleaned!' check above.
  61.  
  62. Here's what's what in the main window:
  63.  
  64. Mapper -
  65. Mappers were chips inside most NES cartridges that set up how the memory of the NES was to be accessed. The 6502 CPU only had a 16bit program counter allowing it access to a range of 64Kb of program code, often more was needed to be accessed and mappers were the solution. NES emulators have to emulate these mappers and if this mapper number is incorrect the entire memory access for the emulated game can be wrong causing the game to fail. This is a common fault in many non-working ROM images. This mapper number (in the range 0-255) is merely a unique identifier for a particular mapper. 0 is no mapper needed (only used on very old/small games).
  66.  
  67. 4 Screen VRAM -
  68. If a game uses this feature then the NES's VRAM is extended allowing 4 Name tables of sprites (more screen banks).
  69.  
  70. Trainer -
  71. Apparently several ROM images have a trainer attached to them, this is in the form of 512 bytes directly after the 16 byte iNES header. When you deselect this flag, the 512 bytes of the trainer is not removed so this may cause the ROM image to fail. Perhaps Neditor should remove the bext 512 bytes, I am not sure? I have yet to see a ROM image with a trainer, but would be very interested to do so, email me if you find one!
  72.  
  73. Saves state -
  74. Some NES cartridges, notably zelda had a savable state on battery backed RAM inside the cartridge, known as SRAM. If this flag is set then the emulator will know to allowing saving and loading of this SRAM as if it were being written to the battery backed RAM instead of a second file on your hard disc. Note, setting this flag will not cause a game to suddenly have a new save position function, just as removing it will not stop the game trying to save, it will probably just confuse/crash the emulator.
  75.  
  76. Mirroring (vertical/horizontal) -
  77. The NES only had 2 name tables (screen banks) and so mirroring was introduced to simulate the existence of 4, by the 2nd pair being identical to the first pair. Vertical or horizontal is merely denoting which of the mirrored pair is identical to which of the 1st pair.
  78.  
  79. VS System ROM -
  80. The VS system was some kind of alternative NES, that I believe was used in arcades many years ago. This is a simple flag to identify the NES image as being for the VS system, in order that NES emulators can accomodate it. Note this feature is untested as I have no VS ROMs, or emulator for them, though it should work fine.
  81.  
  82. PRG ROM -
  83. The number of 16Kb pages of Program code in the ROM image. Note, Dragon Warrior 3 and a few other games have 32Kb pages (I won't go into how or why here) but they are very much in the minority. Range 1-255 (you must have at least 1 page of PRG ROM for the ROM image to have any program code and do anything).
  84.  
  85. CHR ROM -
  86. The number of 8Kb pages of Character data in the ROM image. This is swapped in and out of the VRAM area. Range 0-255 (0 is allowed since character data can and is sometimes held within the PRG ROM).
  87.  
  88. Reserved bytes -
  89. This shows the status of the ROM image header as to whether it is likely to have been corrupted or not. If the image was not corrupted, it will read 'Clean', if it was corrupted, it will read 'Just cleaned!' to show that the corruption has been fixed. Note, this fix is not 100%, just 99% so read on if you're still having problems.
  90.  
  91. Within the 16 byte header, bytes 8-15 and the low nibble (4 bits) of byte 7 should all be unset/clear/0. If they are not, there is the possibility of corruption of the header, and misinterpretation by a NES emulator. For you tech buffs, on loading of the ROM image, bytes 8-15 are automatically set to 0. If the low nibble of byte 7 has any bits set then neditor assumes that the upper nibble of byte 7 (part of the new format mapper number) is incorrect. In this case, it sets byte 7 to 0 also. 99% of the time this will be correct since the ROM image will use a low mapper number (the by far most common mappers, 0-15 never user byte 7 anyway) and will now be set correctly. Occasionally, byte 7 will need to be used (for mappers > 15) will have been overwritten by a naff header editor's tag and will be irretrievably lost. This will show up by the ROM image not working (it shouldn't have worked before anyway). The solution now is to try different mapper numbers until the ROM works. Load the image into neditor, and the mapper number should be in the range 0-15, add 16 to the value that is there and try that mapper number. e.g. if the mapper number is said to be 6, you should next try 22. Then add 16 again, try again and so on until either you get above about 150, or you give up, or the ROM image works in your emulator.
  92.  
  93. So, depending on the initial mapper number, here's the values to try
  94. 0 - 16,32,48,64,80,96,112,128,144,160
  95. 1 - 17,33,49,65,81,97,113,129,145,161
  96. 2 - 18,34,50,66,82,98,114,130,146,162
  97. 3 - 19,35,......
  98. If you don't see the pattern by now then give up!
  99.  
  100. Restore -
  101. This restores the status of the flags, mapper number, PRG and CHR pages from when the ROM image was loaded. Note, this does not restore any corrupted header (we're trying to get rid of them - they're the bane of NES emulation). Note, if you click on 'save' then the restore will be from the details as set at that save.
  102.  
  103. Save -
  104. This saves the current data as setup in the main window to the header of the ROM image. It doesn't alter the status of the corrupted bytes or cleaned bytes, since these are cleaned and saved back to the file when it is first loaded.
  105.  
  106. To be quite honest you should only ever touch the mapper number and the save and restore buttons, if you alter anything else you're just plain asking for trouble. They are there more as a tool for emulator authors and ROM dumpers, not the general user.
  107.  
  108. iNES format, as recognised by Neditor
  109. =====================================
  110.  
  111. Byte
  112. 0 - N
  113. 1 - E
  114. 2 - S
  115. 3 - &1A
  116. 4 - Number of 16Kb pages of PRG ROM (&01-&40)
  117. 5 - Number of 8Kb pages of CHR ROM (&00-&64)
  118. 6 -  b0   Mirroring, 0=horizontal, 1=vertical
  119.      b1   1=SRAM enabled
  120.      b2   1=512-byte trainer present
  121.      b3   1=4 screen VRAM layout
  122.      b4-7 low nibble of mapper number
  123. 7 -  b0   1=VS System ROM
  124.      b4-7 are the upper nibble of mapper number
  125. 8-15 reserved (should be 0)
  126.  
  127. ROM filetype sprite
  128. ===================
  129.  
  130. The NES ROM sprite for the filetype &0CF was drawn by me to replace David McEwen's sprite used with initial releases of his port of xNES. The other was a little blocky and although it was clear what it was (since it said NES on it) looked nothing like the real NES cartridges. I drew mine from a scaled down scan of the US patents for the offical Nintendo cartridge so it should be fairly accurate in scale and appearance. Use whichever you like, however I prefer mine :o)
  131.  
  132. Disclaimer - read this one, it's important!
  133. ===========================================
  134.  
  135. WARNING:
  136. Loading ROM images into neditor will irrevocably change them! In most cases this will result in fixed ROMs and the removal of corruptions. It is possible (though unlikely) that putting a ROM image into neditor will cause it not to work. If you change the settings wrongly, and don't know what you're doing  then you can expect the ROM image never to work again.
  137.  
  138. I cannot take any responsibility for damage caused to hardware, software or person(s) through use or misuse of this software. That said, if something does go wrong, get in touch and I might try and fix it.
  139.  
  140. In the right hands, or in the sensible hands (which don't fiddle too much) neditor is very goodat what it does, so use it rightfully and sensibly.
  141.  
  142. I do not condone nor encourage, the use of, nor the generation of, pirated software.
  143.  
  144. This software may be freely distributed so long as no charge is made for it, and it is not altered in any way. I retain copyright at all times.
  145.  
  146. Future
  147. ======
  148.  
  149. With a bit of luck I may get round to adding the following features eventually:
  150.  
  151.  * ROM image format conversion, PFE and FDS formats.
  152.  * The ability to add an iNES header to raw ROMs.
  153.  * The ability to un-interleave other formats.
  154.  * Catalogue of specific dirty tags to better guess at the validity of byte 7.
  155.  * Adding/Reading/Removing titles of ROM images.
  156.  * Text file generation listing details.
  157.  * ZIP file support.
  158.  
  159. History
  160. =======
  161.  
  162. v1.00 17/6/98
  163. 1st released version.
  164.  
  165. v1.01 18/8/98
  166. In light of Marat's ammendment to the iNES format to support VS System ROMs, Neditor has now been modified to be compliant.
  167. Tidied notify window.
  168. Fixed development bug allocating too much memory for templates.
  169.  
  170. v1.02 23/8/98
  171. Automatically settype file to &0CF if it has an iNES header.
  172. Quiet option added to allow easy cleaning of ROM images without the window appearing.
  173. Window always opens in the centre of the screen.
  174.  
  175.  
  176. Contact details
  177. ===============
  178.  
  179. Author: David Sharp
  180.  
  181. Address:
  182. 11 Woodlands Drive
  183. Grantham
  184. Lincs
  185. NG31 9DJ
  186.  
  187. Email:
  188. Try in this order...
  189. DavidSharp@ThePentagon.com
  190. DPSharp@Hotmail.com
  191. SharpFamily@msn.com
  192.  
  193. Web pages:
  194. The Acorn Emulation Page - http://www.cybervillage.co.uk/acorn/emulation/
  195. My acorn software homepage - http://www.come.to/david.sharp
  196. or try - http://www.geocities.com/SiliconValley/Park/4119/