                               .                 .
                                 ______ ______ .
                              .:_\_ .  \\_ .__\_::.
                           . .::./ ./  // ./__ .:::. .
                              :_<_____/<______>_:.
                              .                 .
                              Damaged Cybernetics
                       http://www.futureone.com/~damaged/

      NES-Copy version 0.1a
      Copyright (c) 1996 John Pappas (DiskDude). All rights reserved.

      It is a crime to redistribute this software or hardware in a commercial
      venture of any kind without written permission or a licensing agreement.
      Please contact DiskDude via email for information on licensing.

      This package is freely distributable for private use, however DiskDude
      disclaims any damages which may result from the use or misuse of the
      software and/or interface.

      DiskDude's email address is papa@internex.net.au

Note: The latest beta version of NES-Copy can always be found on the Internet
      on my Australian site at http://internex.net.au/~papa/NESCopy/

Contents:

1.0 Abstract
2.0 The NES-Copy Interface
3.0 The NES-Copy software
4.0 Acknowledgements
5.0 Information required
6.0 Known bugs
7.0 Greets!
8.0 Appendix A

1.0 Abstract
------------

First of all, it must be said that NES-Copy can only (so far) read 32kbyte
NES cartridges and does not yet come with a design for a "fake" cartridge.
A SRAM (32kbyte) cartridge design will be released when I am satisfyed that
NES-Copy *reads* cartridges properly (even without bankswitching). When bank
switching is finalised, a FlashROM cartridge design (4Mbit) will be released.

This package consists of a .GIF file, this text and a software program NES
Copy. The .GIF contains a schematic of an interface which connects to an IBM
Enhanced Printer Port (EPP) and a NES cartridge allowing you to transfer data
between the two. It *does* allow you to write to a cartridge, be it SRAM or
FlashROM, however it hasn't been implemented in software or the hardware has
NOT been devloped yet.

The purpose of releasing this information is to get others to help me in
constructing a DIY NES backup system as I do not own a NES anymore... :(

Note: You MUST have an EPP (or ECP) to make this work - if you don't, you
      may end up damaging your printer port and/or computer! Be warned.

In future release(s), I will release a schematic for a SRAM cartridge. It will
be limited in size to 32kbytes because I do not know how to bank switch the ROM
yet - just another reason why I'm releasing this information.

If you think you can help, please make the interface and play around with it. I
would love any positive feedback I can get. All the information I receieve will
be used in CartDisk 4.0 which I hope will include NES support (depends on the
outcomes of this project). Any breakthroughs which people might have, who tell
me about it, will be credited if used in CartDisk 4.0.

2.0 The NES-Copy Interface
--------------------------

Parts for the interface:
1 x 8225a               Parallel Peripheral Interface
1 x 74ls139             Dual two to four binary decoder
1 x 74ls374             Octal latch
8 x 470 ohm             Resistors
3 x 0.1uF               Capacitors (ceramic)
1 x 25D male            Plug for printer port (and matching backshell)
1 x (m) cable           12 way shielded cable (including earth wire -> 13way)
1 x 72p edge connector  Buy a Game Genie and remove the connector from that
                        (second-hand Game Genie's are *really* cheap :>)

I am not going to waste my time designing a PCB layout for this circuit. If you
do, please email it to me and I will include it in any future release(s). I
recommend making the circuit with veroboard, however it is extremely easy to
make a mistake so be VERY CAREFUL!

Just follow the schematic diagram (GIF file), remembering to connect the PRG
and CHR address busses together and the PRG and CHR data busses together (in
parallel). Hopefully this will work properly, and there isn't a bus conflict!

If you would like to know how to test the interface (and anyone who is going to
be helping me, should know already), please drop me a note saying so and I'll
write a few paragraphs explaing how in future release(s).

Please refer to Appendix A for the pin layout of the NES cartridge slot.

3.0 The NES-Copy software
-------------------------

The software is provided as an .EXE file which provides basic functionality,
but the Turbo Pascal source code has been included in case you wish to extend
it for investagive purposes. i.e. You find out how to bank switch and want to
implement it. This is the whole idea of releasing NES-Copy; so people can have
a go and do some research - not for newbies who know nothing about electronics
to see if they can "copy some games"...

If you change the program because you either find a bug in my code or you
discover something new, please send me the new code, telling me what you've
changed! :) I would like to know any further information on how these NES
cartridges work because from what I've seen/heard, they are a pain in the
rear! :>

4.0 Acknowledgements
--------------------

- JerkyX for his NES cartridge pin layout.
- The author of the "NINTENDO.ARJ" package (with NIN.EXE) which got me started
  with the NES.
- Landy/Marat for the format of their NES header.

5.0 Information required
------------------------

- How bankswitching is done.
- How to access the SRAM (battery backup) i.e. which control signals and/or
  addresses must be low/high.
- What do those control pins on the cartridge do exaclty? (I only know what
  some/most of them do)
- Speed of the NES ROM(s). (200ns maybe?)
- Schematic(s) of some/any cartridges.
- Any other information which might be required.

6.0 Known bugs
--------------

- Doen't check for Horizontal/Vertical mirroring...
  Horizontal is default (I think!)
- The control signals to enable the PRG or CHR ROMs may be wrong...
  Please check the code if it doesn't work.

Please report any bugs you may find or "features" to me via email at the
following address: papa@internex.net.au

Make sure you include a small description of what the problem is, and if you've
corrected it yourself, the corrected code. I will then release it in any future
version(s), so everone can see it. Credit will be given, so don't be shy!
(Donald Moore taught me that you should ALWAYS give credit where it's due :>)

7.0 Greets!
-----------

Hello to the following people:

* Landy     - I mainly wrote all this for you dude - keep iNES coming!
* Mindrape  - Get some sleep once in a while man!
* Shinobi   - Stop making me LAUGH! (and where's those MODs?)
* Yoshi     - Where have you been lately?
* JerkyX    - Get a new modem dude! Thanks for all the NES info!!!
* P. Grey   - HUUUUUGE thanks for all those datasheets!
* LordViper - You are a LEGEND!! I can't believe AMD did it! :>
* xxox      - You owe me one...
* Peninna   - So how's Phil eh? (smoochie smoochie!)
* Midori    - Gttttttttttt... hahaha
* milli     - Get off IRC, and go to bed!
* GreenL    - Good luck with your new server!
* Anyone else I forgot who I usually talk to on IRC or via email.

Don't forget to check out the latest releases from Damaged Cybernetics on the
Internet at http://www.futureone.com/~damaged/ or check out my w3 page at 
http://internex.net.au/~papa/ (Although it may seem like one page, there's at
least 10-15 of them... try and find my hidden Aliens page!)

8.0 Appendix A:
---------------

   Nintendo Entertainment System (NES) pin layout
         by JerkyX <tnyari@voicenet.com>

<<-- Front of cartridge (label side)
                .--------.
            Vss | 01  72 | Vss
        A11 (c) | 02  71 | p6 CIC
        A10 (c) | 03  70 | p7 CIC
        A09 (c) | 04  69 | D04 (p)
        A08 (c) | 05  68 | D05 (p)
        A07 (c) | 06  67 | D06 (p)
        A06 (c) | 07  66 | D07 (p)
        A05 (c) | 08  65 | A13 (p)
        A04 (c) | 09  64 | A12 (p)
        A03 (c) | 10  63 | A10 (p)
        A02 (c) | 11  62 | A11 (p)
        A01 (c) | 12  61 | A09 (p)
        A00 (c) | 13  60 | A08 (p)
            R/W | 14  59 | A07 (p)
           /IRQ | 15  58 | A13 (p)
                | 16  57 | /RAM-SEL *??*
                | 17  56 | /WR
                | 18  55 | 
                | 19  54 | 
                | 20  53 | 
  (/CHR-OE) /RD | 21  52 | 
  (V/H) /RAMA10 | 22  51 | 
        A06 (p) | 23  50 | /ROM-SEL (/PRG-OE)
        A05 (p) | 24  49 | D00 (c)
        A04 (p) | 25  48 | D01 (c)
        A03 (p) | 26  47 | D02 (c)
        A02 (p) | 27  46 | D03 (c)
        A01 (p) | 28  45 | D04 (c)
        A00 (p) | 29  44 | D05 (c)
        D00 (p) | 30  43 | D06 (c)
        D01 (p) | 31  42 | D07 (c)
        D02 (p) | 32  41 | A14 (c)
        D03 (p) | 33  40 | A13 (c)
         p2 CIC | 34  39 | A12 (c)
         p1 CIC | 35  38 | M2
            Vcc | 36  37 | Vcc
                `--------'
/xx  - Active low pin
(p)  - "program ROM"       (program data)
(c)  - "character ROM/RAM" (sprite data)
*??* - Not sure on its use. Tell me if you know!

DiskDude of Damaged Cybernetics (papa@internex.net.au)
[EOF]
