171 lines
6.9 KiB
Plaintext
171 lines
6.9 KiB
Plaintext
________ _______ _______ ________ _______ _______ __
|
||
| .| .| . ____|__ . __| . ____| .| .|
|
||
| || 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.
|
||
|