| 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. |