release r2, update credits
[fceu.git] / Documentation / tech / exp / mmc5-e.txt
1 ========= mmc5 infomation ==========
2 date 1998/05/31
3 by goroh
4 translated May 31, 1998 by Sgt. Bowhack
5 mail goroh_kun@geocities.co.jp
6
7 5000,5004 ch1,ch2 Pulse Control
8  bit CCwevvvv
9     CC Duty Cycle (Positive vs. Negative)
10       #0:87.5%  #1:75.0%  #2:50.0%  #3:25.0%
11     w Waveform Hold (e.g. Looping)
12       0: Off 1: On
13     e Envelope Select
14       0: Varied 1: Fixed
15     < e=0 >
16      vvvv Playback Rate
17          #0<-fast<--->-slow--> #15
18     < e=1 >
19      vvvv Output Volume
20
21 5002,5006 ch1,ch2 frequency L
22  bit ffffffff
23 5003,5007 ch1,ch2 frequency H
24  bit tttttfff
25   ttttt sound occurence time
26
27 Objective is to remove the continuous changing of frequency for
28 square wave setup and do the same to the main part of the square wave
29 of studying the main part of the famicom. (?- Sgt. Bowhack)
30
31 5010 ch3 synthetic voice business channel
32  bit -------O
33   O wave output 0:Off 1:On
34
35 5011 ch4 synthetic voice business channel 2
36  bit vvvvvvvv
37   vvvvvvvv wave size
38
39 5015 sound output channel
40  bit ------BA
41   A: ch1 output  1:enable 0:disable
42   B: ch2 output  1:enable 0:disable
43
44 5100 PRG-page size Setting
45  bit ------SS
46     SS PRG-page size
47        0: 32k 1:16k 2,3:8k
48 * Reset is misled the first times for about 8k (?- SB)
49        
50 5101 CHR-page size Setting
51  bit ------SS
52     SS CHR-page size
53        0:8k 1:4k 2:2k 3:1k
54
55 5102 W BBR-RAM Write Protect 1
56  bit ------AA
57 5103 W BBR-RAM Write Protect 2
58  bit ------BB
59   (AA,BB) = (2,1) permitted to write to BBR-RAM only when crowded
60 *Reset write around becomes prohibited when crowded
61
62 5104 Grafix Mode Setting
63  $5c00-$5fff decides how it should be used
64   bit ------MM
65   #00:Enable only Split Mode
66   #01:Enable Split Mode & ExGrafix Mode
67   #02:ExRAM Mode
68   #03:ExRAM Mode & Write Protect
69
70 Consideration
71  MMC5 has 2 graphic mode extensions that allow more than 256 characters
72 on one standard game screen.  It uses Split Mode so it can display the
73 specified CHR-page and scroll position seperate from ExGrafix Mode to
74 be able to choose a palette, and the other divides it vertically.
75
76 5105 W NameTable Setting
77   bit ddccbbaa
78   aa: Select VRAM at 0x2000-0x23ff
79   bb: Select VRAM at 0x2400-0x27ff
80   cc: Select VRAM at 0x2800-0x2bff
81   dd: Select VRAM at 0x2c00-0x2fff
82     #0:use VRAM 0x000-0x3ff
83     #1:use VRAM 0x400-0x7ff
84     #2:use ExVRAM 0x000-0x3ff
85     #3:use ExNameTable(Fill Mode)
86
87 Consideration
88  The name table can designate 4 kinds of this resister and be a useful
89 special quality for this because painting and smashing it with a
90 character that there is 1 sheet for the remaining sheets can generally
91 be used. (?-SB)
92
93 5106 W Fill Mode Setting 1
94   bit vvvvvvvv
95   Fill chr-table
96  For whether it paints or smashes it at any non-designated character
97
98 5107 W Fill Mode Setting 2
99   bit ------pp
100  Whether or not it uses any non-designated palettes
101
102 5113 RAM-page for $6000-$7FFF
103   bit -----p--
104
105 5114-5117 Program Bank switch
106  < page_size=32k >
107  $5117 [8]-[F] bit pppppp--
108
109  < page_size=16k >
110  $5115 [8]-[B] bit ppppppp-
111  $5117 [C]-[F] bit ppppppp-
112
113  < page_size=8k >
114  $5114 [8][9]  bit pppppppp
115  $5115 [A][B]  bit pppppppp
116  $5116 [C][D]  bit pppppppp
117  $5117* [E][F]  bit pppppppp
118
119 *Reset is around early, Last Page misled
120
121 5120-512b Charactor Bank switch
122  < page_size=8k >
123  $5120-$5127 switch to mode A
124  $5128-$512b switch to mode B
125  $5127 [0]-[7] modeA
126  $512b [0]-[7] modeB
127
128  < page_size=4k >
129  $5120-$5127 switch to mode A
130  $5128-$512b switch to mode B
131  $5123 [0]-[3] modeA
132  $5127 [4]-[7] modeA
133  $512b [0]-[3],[4]-[7] modeB
134
135  < page_size=2k >
136  $5120-$5127 switch to mode A
137  $5128-$512b switch to mode B
138  $5121 [0]-[1] modeA
139  $5123 [2]-[3] modeA
140  $5125 [4]-[5] modeA
141  $5127 [6]-[7] modeA
142  $5129 [0]-[1],[4]-[5] modeB
143  $512b [2]-[3],[6]-[7] modeB
144  
145  < page_size=1k >
146  $5120-$5127 switch to mode A
147  $5128-$512b switch to mode B
148  $5120 [0] modeA
149  $5121 [1] modeA
150  $5122 [2] modeA
151  $5123 [3] modeA
152  $5124 [4] modeA
153  $5125 [5] modeA
154  $5126 [6] modeA
155  $5127 [7] modeA
156  $5128 [0],[4] modeB
157  $5129 [1],[5] modeB
158  $512a [2],[6] modeB
159  $512b [3],[7] modeB
160
161 Consideration
162  MMC5 has mode A ,mode B and 2 kinds of CHR-page memory resistors.
163 They can be used for refreshing it. (?-SB)
164
165 5130 ???
166 analyzing it...
167
168 5200 W Split Mode Control 1
169  bit Ec-vvvvv
170  For the E function 0:don't use 1:use
171  c boundary's side is for using Split Mode extension of graphics
172    0: left side  1: right side
173  vvvvv left boundary is designated with the char. # to count places
174
175 Sample.
176   5200 <- #00
177     (not?) used yet
178   5200 <- #82
179     Used for SplitMode GFX extension from left 1-2 character
180   5200 <- #c2
181     Used for SplitMode GFX extension from the right side 3 chars.
182   5200 <- #c0
183     Used for SplitMode GFX extension on the whole screen
184   5200 <- #d0
185     Used for SplitMode GFX extension on the right side of the screen
186   5200 <- #90
187     Used for SplitMode GFX extension on the left side of the screen
188     
189 5201 W SplitMode setup for SplitMode Ext. GFX use 1
190   $2005 determines the vertical movement; it can also delay ext. gfx's
191  vert. movement if necessary.  It's written 2 times in bulk in the same
192  way as it would slip off a grade in $2005 (??-SB)
193   
194 5202 W SplitMode setup for SplitMode Ext. GFX use 2
195    bit --pppppp
196   uses vertical division of ext. gfx CHR-page designation
197   index_size=4k(0x1000byte)
198 In case it uses a character 0x4000-0x4fff for the ext. gfx in question
199   $5202 <- 4
200
201 5203 W scanline break point
202   For scanline # that it splits and wants to make it designate it in bulk
203
204 5204 WR IRQ enable/disable
205  W bit I-------
206   I 1:IRQ Enable 0:IRQ Disable
207  R bit I-------
208   I 1:Scanline Hit 0:Scanline not Hit
209    $5203 is designated as scanline when arrived.
210
211 5205 WR mult input/output
212 5206 WR mult input/output
213 ($5205in)*($5206in) = $5205,$5206out
214
215 5c00-5fbf ext. gfx business VRAM
216  shows an attribute of every position character
217
218   <ExGrafix Mode>
219   bit PPpppppp
220     PP: use character palette number
221     pppppp: use background CHR-PAGE number index=4k
222       #0-#3F are designations, $0000-$3FFF is CHR-data's range
223     Use for extension gfx
224
225   <Split Mode>
226   SplitMode uses a Name Table for extension gfx use.
227   bit pppppppp
228     pppppppp: use for background char. number designation
229
230   <ExRAM Mode>
231  Used for Extension RAM
232
233 5fc0-5fff
234   <ExGrafix Mode>
235   (not?) used yet
236
237   <Split Mode>
238   SplitMode uses gfx's Attribute Table extension.
239   PPU uses $23c0-$23ff in the same way as the Attribute Table
240
241   <ExRAM Mode>
242  Used for Extension RAM
243
244 Consideration
245  5c00-5fff has 3 uses.
246  Split Mode and ExGrafix Mode's VBlank is written so as to become
247   crowded, it writes a 0 and becomes crowded.
248  Every mode tries to go around ExRAM mode including reading but it
249   writes it, is effective in bulk and #5c-#5f is the output at times
250   where it is effective.