________ _______ _______ ________ _______ _______ __
        |       .|      .| . ____|__  . __| . ____|      .| .|
        |       ||   O  || ||  __   | ||  | ||    |   O  || ||-LGN
        |  |  | :|      :| :|_|  |__| :|__| :|____|      :| :|____
        |__|__|__|___|___|_______|________|_______|___|___|_______|

                          CALL OUR BOARDS

           THE NETWORK              +1-32-2550-31623

           MAGICAL WORLD             1-213-272-7350


Welcum to the wonderful World of Cyberspace....      +49-5-73141982
  /\_______
 /   ___  / � ����� �����������������������������   SySoP: SiGMA SEVEN!
 \   \__\/__ __  ______  ____  __________  __ __    �������������������
 /\____ \/  | �\/  .  �\/   �\/   _�\   �\/  | �\  Ami-Express REGISTERED
/  \  /  \  |   \  |\  /   /\ \  |/\/ |  /   |   \ ~~~~~~~~~~~~~~~~~~~~~~
\   \/   /  |   /  |/  \   \__/  |\   |  \   |   / Co-Sysop: FORNAX!
 \______/\___  /\__/   /\____ \__| \___  /\___  /  <<<<SYNERGY GHQ!>>>>
    ��   / ___/   �\__/     �\/    / ___/ / ___/   250 Megz! - 250 Megz!
  � � � �\/�� � � � � � � � � � � �\/�� � \/�� dHM ---------------------
Home of the World's first DMS Check and Adder! -*0Super Nintendo & Amiga0*-

Version 1.0


Corsair + Kari presents the first doc of Fami hardware register
locations and brief explanation of them..

If you would like to add any info found in this list please leave
a mail message to Corsair or RamRaider on GRAVEYARD BBS +44-91-5160560
or anything to do with the FAMICON/SNES..

We have an INTERNET address if ya want it leave true e-mail!

Or better still if ya can get the Programmers handbook (Both) please call
and leave mail :) , or even the 100,000 quid SCSI SNASM board for FAMICON
development :)

Also if you want more info contact us the same way..

We are esp looking for contacts to help get to grips with this new platform
everybody welcome!

Special greetings to Starr/QUARTEX and any other True Console Dude!

Memory Map
~~~~~~~~~~
Bank    Address
~~~~    ~~~~~~~

00-    0000-1fff       Lo RAM  (same as at $7e0000-$7e1fff)
7d     2100-2142(?)    Videochip Registers
       4300-437f       DMA Registers

       8000-ffff       ROM:This contains 32k block of game ROM.
                           So, the games are divided to 32k chunks
                           which locate always at address $8000-$ffff,
                           but in different banks. This means that the first
                           32k of game is at $008000-$00ffff and next 32k
                           is at $018000-$01ffff etc.

7e     0000-1fff       Lo RAM (same as always at $0000-$1fff)  \
       2000-ffff       RAM    \ I'm not sure about              } 128k RAM??
7f     0000-ffff       RAM    / this RAM                       /

7f-ff  all             Not used???

$ffec($fffc) contains reset vector and $ffea($fffa) is NMI vector. The NMI is
actually vertical blank interrupt.

Video Chip
~~~~~~~~~~
size    loc.
~~~~    ~~~~
 B     2100    Screen fade  x000bbbb   x=screen on/off  b=brightness(0-f)
 B     2106    Screen Pixelation xxxxbbbb  x=pixel size b=planes to expand
 B     2107    Plane 0 location in vram  xxxxxxab x=address ab=32/64 width xy
 B     2108    Plane 1 location in vram  xxxxxxab      as above
 B     2109    Plane 2 location in vram  xxxxxxab      as above
 B     210a    Plane 3 location in vram  xxxxxxab      as above
 B     210b    Tile VRAM address  aaaabbbb a=Playfield 0   b=Playfield 1
 B     210c    Tile VRAM address  ccccdddd c=Playfield 2   d=Playfield 3
2B     210d    Plane 0 scroll x   8+3 bits (0-7ff) put first 8 bits and then
2B     210e    Plane 0 scroll y   8+3 bits  (0-7ff)  3 highest bits
2B     210f    Plane 1 scroll x                as above
2B     2110    Plane 1 scroll y                as above
2B     2111    Plane 2 scroll x                as above
2B     2112    Plane 2 scroll y                as above
2B     2113    Plane 3 scroll x                as above
2B     2114    Plane 3 scroll y                as above
B      2115    Video port control
W      2116    Video port address (lo-hi)
W      2118    Video port data (lo-hi) (address is incremented by 2)
B      2121    Palette color nr
B      2122    Palette color data
B      212C    Playfield Enable xxxxabcd  a-d = playfield number..
B      2133    Screen mode  0000ab0c a=Interlace Y  b=Overscan  c=Interlace X??
    2140-2142  Audio Registers????

I/O
~~~
W B     420b    Start dma (enable bits) bits: 76543210 = dma nr (8 DMA's)
R B     4212    Pad ready to be read
R W     4218    Pad 0 data      76543210 = A-B-Select-Start-U-D-L-R
       4219                    76543210 = X-Y-Top Left-Top Right-0000
R W     421a    Pad 1 data              as above
R W     421c    Pad 2 data              as above
R W     421e    Pad 3 data              as above

DMA registers  ($4300-$437f)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 B     43X0    DMA control reg??(not sure!)
 B     43X1    DMA destination (Access only to some of the video chip
                   registers ($2100-$21ff)
                   $18=video port  $22=color palette
 W     43X2    Source address lo-hi  16 lowest bits
 B     43X4    Source Bank addr. 8 highest bits
 W     43X5    Transfer size lo-hi

       X=dma number (0-7)  DMA #0= 4300-4305
                           DMA #1= 4310-4315 ...
                           DMA #7= 4370-4375

Symbols:  size: B=byte long    2B=put 2 bytes    W=word long
            R=read only  W=write only

Screen Details
~~~~~~~~~~~~~~
Famicom Tile format is simple. Each Tile is 4 planes and 8x8 bits.
32 bytes are used per Tile .

PLANES 1  &  2                  PLANES  3  &    4
   byte0   byte1                  byte 16   byte 17
   byte2   byte3                  byte 18   byte 19
   byte4   byte5                  byte 20   byte 21
    .....                              .......
   byte14  byte15                 byte 30   byte 31

Screen Map
~~~~~~~~~~
Famicom can use only Tiles $0-$3ff, max 1024 chars.
16 bits:   YX?c ccNN NNNN NNNN
          fedc ba98 7654 3210

 Y = mirror y     X = mirror x   ?=unknown
 ccc = palette nr (8 palettes)   NN.. = character number

Screen Resolution is normally 32x30 - 64 bytes / line

Screen VRAM Location
~~~~~~~~~~~~~~~~~~~~
Screen Width 32x32 offset for x,y       0,0   = 0

Screen Width 64x32 offset for x,y       0,0   = 0
                                       33,0  = $400

Screen Width 32x60 offset for x,y       0,0   = 0
                                       0,31  = $400

Screen Width 64x60 offset for x,y       0,0   = 0
                                       33,0  = $400
                                       0,31  = $800
                                       33,31 = $c00

As can be seen if a wider mode is selected the extra height/width follow
after the main screen in memory.