|
| 1 | +<HTML> |
| 2 | +<HEAD> |
| 3 | +<TITLE>Capcom System 1 information</TITLE> |
| 4 | +</HEAD> |
| 5 | +<BODY TEXT="#000000" BACKGROUND="bkg.gif" FONT="#EDEDED" LINK="#FF0000" VLINK="#AF0000" ALINK="#FF0000"> |
| 6 | +<CENTER> |
| 7 | +<!--#config timefmt="%I%M%S"--> |
| 8 | +<center> |
| 9 | +<TABLE BORDER="0" CELLPADDING="5" CELLSPACING="0" WIDTH="468" BGCOLOR="#000000"> |
| 10 | +<TR> |
| 11 | +<TD ALIGN="left"> |
| 12 | +<iframe src="http://www.vintagegaming.com/sponsors.shtml" width=468 height=60 marginwidth=0 marginheight=0 hspace=0 vspace=0 frameborder=0 scrolling=no bordercolor="#000000"></iframe> |
| 13 | +</TD> |
| 14 | +</TR> |
| 15 | +</TABLE> |
| 16 | +<A HREF="http://ad.doubleclick.net/jump/vintagegaming.com/;abr=!ie4;abr=!ie5;sz=468x60";ord=46597290?"> |
| 17 | +<IMG BORDER=0 SRC="http://ad.doubleclick.net/ad/vintagegaming.com/;abr=!ie4;abr=!ie5a;sz=468x60";ord=46597290?"></a> |
| 18 | +</center> |
| 19 | + |
| 20 | + |
| 21 | +<H2>Capcom System 1</H2> |
| 22 | +</CENTER> |
| 23 | +<H4> |
| 24 | +<PRE> |
| 25 | +System Information: |
| 26 | + Resolution 384 x 224 (3 Graphics planes / 16 colors per tile) |
| 27 | + 32 Palette of 16 colors per Scroll and Sprites (4 palette blocks total) |
| 28 | + Max sprites 256? Sprite size from 16 x 16 to 240(256?) x 240(256?) |
| 29 | + M680000 CPU for game. |
| 30 | + Z80, YM-2151 and OKIM6295 for sound. |
| 31 | + |
| 32 | +68000 Memory Addresses: |
| 33 | + $000000 $1fffff 68000 ROM |
| 34 | + $800000 $800003 Player input ports |
| 35 | + $800010 $800013 ?? |
| 36 | + $800018 $80001f Input ports |
| 37 | + $800020 $800021 ? Used by Rockman ? |
| 38 | + $800030 $800031 Coin Control |
| 39 | + $800040 $800041 Forgotten Dial 0 reset |
| 40 | + $800048 $800049 Forgotten Dial 1 reset |
| 41 | + $800052 $800055 forgotten worlds |
| 42 | + $80005a $80005d forgotten worlds |
| 43 | + $800176 $800177 Extra input ports |
| 44 | + $800100 $8001ff Output ports |
| 45 | + $800180 $800181 Sound command |
| 46 | + $800188 $800189 Sound fade |
| 47 | + $8001fc $8001fc Input ports (SF Rev E) |
| 48 | + $900000 $92ffff Gfx ram |
| 49 | + $f0e000 $f0efff Slammasters protection |
| 50 | + $f18000 $f19fff QSound RAM |
| 51 | + $f1c000 $f1c001 Player 3 controls (later games) |
| 52 | + $f1c002 $f1c003 Player 4 controls (later games - muscle bombers) |
| 53 | + $f1c004 $f1c005 Coin control2 (later games) |
| 54 | + $f1c006 $f1c007 EEPROM |
| 55 | + $ff0000 $ffffff RAM |
| 56 | + |
| 57 | +Sound Memory Addresses: |
| 58 | + $0000 $7fff ROM |
| 59 | + $8000 $bfff Bank 1 |
| 60 | + $d000 $d7ff RAM |
| 61 | + $f000 $f000 YM2151 Register Port 0 |
| 62 | + $f001 $f001 YM2151 Status Port 0 |
| 63 | + $f002 $f002 OKIM6295 Status _0 |
| 64 | + $f002 $f002 OKIM6295 Data 0 |
| 65 | + $f004 $f004 Sound Bankswitch |
| 66 | + $f008 $f008 Sound Latch |
| 67 | + $f00a $f00a Sound timer fade |
| 68 | + |
| 69 | +QSound Memory Addresses: |
| 70 | + $0000 $7fff ROM |
| 71 | + $8000 $bfff banked (contains music data) |
| 72 | + $c000 $cfff RAM |
| 73 | + $d007 $d007 QSound Status |
| 74 | + $d000 $d000 QSound Data High |
| 75 | + $d001 $d001 QSound Data Low |
| 76 | + $d002 $d002 QSound Cmd |
| 77 | + $d003 $d003 QSound Bank Switch |
| 78 | + $f000 $ffff RAM |
| 79 | + |
| 80 | +OUTPUT PORTS (Base address $800000): |
| 81 | + $00-$01 OBJ RAM base (/256) |
| 82 | + $02-$03 Scroll1 RAM base (/256) |
| 83 | + $04-$05 Scroll2 RAM base (/256) |
| 84 | + $06-$07 Scroll3 RAM base (/256) |
| 85 | + $08-$09 "Other" RAM - Scroll distortion (/256) |
| 86 | + $0a-$0b Palette base (/256) |
| 87 | + $0c-$0d Scroll 1 X |
| 88 | + $0e-$0f Scroll 1 Y |
| 89 | + $10-$11 Scroll 2 X |
| 90 | + $12-$13 Scroll 2 Y |
| 91 | + $14-$15 Scroll 3 X |
| 92 | + $16-$17 Scroll 3 Y |
| 93 | + $18-$19 Related to X pos (xored with $1e0 then $20 added when flip) |
| 94 | + $1a-$1b Related to Y pos (xored with $100 when screen flip on) |
| 95 | + $1c-$1d Related to X pos (xored with $1e0 then $20 added when flip) |
| 96 | + $1e-$1f Related to Y pos (xored with $100 when screen flip on) |
| 97 | + $20-$21 start offset for the rowscroll matrix |
| 98 | + $22-$23 unknown but widely used - usually $0e. bit 0 enables rowscroll |
| 99 | + on layer 2. bit 15 is flip screen. |
| 100 | + |
| 101 | +Registers move from game to game.. following example Final Fight: |
| 102 | + $66-$67 Priority mask Sprites |
| 103 | + $68-$69 Priority mask Layer 1 |
| 104 | + $6a-$6b Control register (usually $003f) |
| 105 | + $6e-$6f Video control register (Layer Enable) |
| 106 | + Scroll 1 Enable $02 |
| 107 | + Scroll 2 Enable $0C |
| 108 | + Scroll 2 Enable $0C |
| 109 | + $70-$71 Priority mask Layer 0 |
| 110 | + $72-$73 Priority mask Layer 2 |
| 111 | + |
| 112 | +Fixed registers: |
| 113 | + $80-$81 Sound command |
| 114 | + $88-$89 Sound fade |
| 115 | + |
| 116 | +Scroll sizes: |
| 117 | + Scroll 2 (16 x 16) Width 32 (64 bytes between each horiz. position) |
| 118 | + Scroll 2 (16 x 16) Height 32 |
| 119 | + |
| 120 | + Offset of each palette entry |
| 121 | + Sprite Palette 0 to 31 (16 colors per Palette) |
| 122 | + Scroll1 Palette 32 to 63 (16 colors per Palette) |
| 123 | + Scroll2 Palette 64 to 95 (16 colors per Palette) |
| 124 | + Scroll3 Palette 96 to 127 (16 colors per Palette) |
| 125 | + |
| 126 | + Sprite Table Size $0800 |
| 127 | + Row Scroll Size $0800 |
| 128 | + |
| 129 | +Scroll 1 (8 x 8 tiles): |
| 130 | + Attribute word layout: |
| 131 | + $0001 colour |
| 132 | + $0002 colour |
| 133 | + $0004 colour |
| 134 | + $0008 colour |
| 135 | + $0010 colour |
| 136 | + $0020 X Flip |
| 137 | + $0040 Y Flip |
| 138 | + $0080 |
| 139 | + $0100 |
| 140 | + $0200 |
| 141 | + $0400 |
| 142 | + $0800 |
| 143 | + $1000 |
| 144 | + $2000 |
| 145 | + $4000 |
| 146 | + $8000 |
| 147 | + |
| 148 | +Scroll 2 (16 x 16 tiles): |
| 149 | + Attribute word layout: |
| 150 | + $0001 colour |
| 151 | + $0002 colour |
| 152 | + $0004 colour |
| 153 | + $0008 colour |
| 154 | + $0010 colour |
| 155 | + $0020 X Flip |
| 156 | + $0040 Y Flip |
| 157 | + $0080 ??? Priority |
| 158 | + $0100 ??? Priority |
| 159 | + $0200 |
| 160 | + $0400 |
| 161 | + $0800 |
| 162 | + $1000 |
| 163 | + $2000 |
| 164 | + $4000 |
| 165 | + $8000 |
| 166 | + |
| 167 | +Scroll 3 (32x32 tiles): |
| 168 | + Attribute word layout: |
| 169 | + $0001 colour |
| 170 | + $0002 colour |
| 171 | + $0004 colour |
| 172 | + $0008 colour |
| 173 | + $0010 colour |
| 174 | + $0020 X Flip |
| 175 | + $0040 Y Flip |
| 176 | + $0080 |
| 177 | + $0100 |
| 178 | + $0200 |
| 179 | + $0400 |
| 180 | + $0800 |
| 181 | + $1000 |
| 182 | + $2000 |
| 183 | + $4000 |
| 184 | + $8000 |
| 185 | + |
| 186 | +Sprites: |
| 187 | + Sprites are represented by a number of 8 byte values |
| 188 | + xx xx yy yy nn nn aa aa |
| 189 | + where xxxx = x position |
| 190 | + yyyy = y position |
| 191 | + nnnn = tile number |
| 192 | + aaaa = attribute word |
| 193 | + $0001 colour |
| 194 | + $0002 colour |
| 195 | + $0004 colour |
| 196 | + $0008 colour |
| 197 | + $0010 colour |
| 198 | + $0020 X Flip |
| 199 | + $0040 Y Flip |
| 200 | + $0080 unknown |
| 201 | + $0100 X block size (in sprites) |
| 202 | + $0200 X block size |
| 203 | + $0400 X block size |
| 204 | + $0800 X block size |
| 205 | + $1000 Y block size (in sprites) |
| 206 | + $2000 Y block size |
| 207 | + $4000 Y block size |
| 208 | + $8000 Y block size |
| 209 | + |
| 210 | + The end of the table (may) be marked by an attribute value of $FF00. |
| 211 | + To use block sprites, the sprites must be layed out in 16 tile |
| 212 | + (256 pixel) wide blocks. |
| 213 | + |
| 214 | +Input: |
| 215 | + Player 1 input is $800000 (WORD) |
| 216 | + $01 Right |
| 217 | + $02 Left |
| 218 | + $04 Up |
| 219 | + $08 Down |
| 220 | + $10 Button 1 |
| 221 | + $20 Button 2 |
| 222 | + $40 Button 3(?) Not used in Final Fight. |
| 223 | + $80 Button 4(?) |
| 224 | + |
| 225 | +IRQs: |
| 226 | + IRQ 2 (Normal 68000 IRQ 2) is the VBlank IRQ |
| 227 | + IRQ 4 (?) |
| 228 | + |
| 229 | +Comments from Paul Leaman: |
| 230 | +The graphics are all stored in planar format with 4 bits per pixel. The |
| 231 | +graphics appear to be organised in 4 separate banks of memory. There are |
| 232 | +2 banks with two planes per bank for the left half of 16x16 tiles and 2 |
| 233 | +further banks for the right half of the 16x16 tiles. |
| 234 | + |
| 235 | +The graphics are very flexible. You aren't restricted to set numbers of |
| 236 | +characters, tiles or sprites. This makes it a perfect system for developing |
| 237 | +new games. |
| 238 | + |
| 239 | +There is a lump of video RAM that holds the sprites, palette, scroll 1, |
| 240 | +scroll 2 and scroll 3. The actual base adresses of these areas within the |
| 241 | +video RAM are controlled by registers. By altering the base addresses, it |
| 242 | +looks like you can double-buffer sprites etc. |
| 243 | + |
| 244 | +There are a set of output registers that control the scrolling and base |
| 245 | +adresses of the video RAM and various layer priorities etc. |
| 246 | +</PRE> |
| 247 | +</H4> |
| 248 | +<HR> |
| 249 | +<CENTER> |
| 250 | +<A HREF="http:\\www.vintagegaming.com"> |
| 251 | +<IMG SRC="pacman_anim.gif" WIDTH=468 HEIGHT=60 BORDER=0><BR> |
| 252 | +</A> |
| 253 | +<FONT COLOR="#FF0000"><B>Hosted by the Vintage Gaming Network</B></FONT> |
| 254 | +</CENTER> |
| 255 | +</BODY> |
| 256 | +</HTML> |
0 commit comments