|
| 1 | +<HTML> |
| 2 | +<HEAD> |
| 3 | +<TITLE>DataEast (16 Bit) 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=27297973?"> |
| 17 | +<IMG BORDER=0 SRC="http://ad.doubleclick.net/ad/vintagegaming.com/;abr=!ie4;abr=!ie5a;sz=468x60";ord=27297973?"></a> |
| 18 | +</center> |
| 19 | + |
| 20 | + |
| 21 | +<H2>DataEast (16 Bit)</H2> |
| 22 | +</CENTER> |
| 23 | +<H4> |
| 24 | +<PRE> |
| 25 | +System Information: |
| 26 | + Main CPU: 68000 |
| 27 | + Sound CPU: 6502 |
| 28 | + SoundChip: YM3812, YM2203, OKIM6295 |
| 29 | + |
| 30 | +68000 Memory Addresses: |
| 31 | + $000000 $05FFFF Rom |
| 32 | + $240000 $240007 Play Field 1 Control 0 (Text layer) |
| 33 | + $240010 $240017 Play Field 1 Control 1 |
| 34 | + $242000 $24207F Play Field 1 Column Scroll |
| 35 | + $242400 $2427FF Play Field 1 Row Scroll |
| 36 | + $244000 $245FFF Play Field 1 Data |
| 37 | + $246000 $246007 Play Field 2 Control 0 (First tile layer) |
| 38 | + $246010 $246017 Play Field 2 Control 1 |
| 39 | + $248000 $24807F Play Field 2 Column Scroll |
| 40 | + $248400 $2487FF Play Field 2 Row Scroll |
| 41 | + $24A000 $24A7FF Play Field 2 Data |
| 42 | + $24C000 $24C007 Play Field 3 Control 0 (Second tile layer) |
| 43 | + $24C010 $24C017 Play Field 3 Control 1 |
| 44 | + $24C800 $24C87F Play Field 3 Column Scroll |
| 45 | + $24CC00 $24CFFF Play Field 3 Row Scroll |
| 46 | + $24D000 $24D7FF Play Field 3 Data |
| 47 | + $300000 $30001F Rotary Controller |
| 48 | + $30C000 $30C00B Controls |
| 49 | + $30C010 $30C01F Control Register (Priority, sound, etc.) |
| 50 | + $310000 $3107FF Palette Ram (Red & Green bits) |
| 51 | + $314000 $3147FF Palette Ram (Blue bits) |
| 52 | + $FF8000 $FFBFFF Main ram |
| 53 | + $FFC000 $FFC7FF Sprites |
| 54 | + |
| 55 | +Sprite data: The unknown bits seem to be unused. |
| 56 | + Byte 0: |
| 57 | + Bit 0: Y co-ord hi bit |
| 58 | + Bit 1,2: ? |
| 59 | + Bit 3,4: Sprite height (1x, 2x, 4x, 8x) |
| 60 | + Bit 5: X flip |
| 61 | + Bit 6: Y flip |
| 62 | + Bit 7: Only display Sprite if set |
| 63 | + Byte 1: Y-coords |
| 64 | + Byte 2: |
| 65 | + Bit 0,1,2,3: Hi bits of sprite number |
| 66 | + Bit 4,5,6,7: (Probably unused MSB's of sprite) |
| 67 | + Byte 3: Low bits of sprite number |
| 68 | + Byte 4: |
| 69 | + Bit 0: X co-ords hi bit |
| 70 | + Bit 1,2: ? |
| 71 | + Bit 3: Sprite flash (sprite is displayed every other frame) |
| 72 | + Bit 4,5,6,7: Color |
| 73 | + Byte 5: X-coords |
| 74 | + Bytes 6-7: Blank |
| 75 | + |
| 76 | + Location $30C012, when written to, causes the sprite data to be DMA'd |
| 77 | + from $FFC000 to ?. Must be used to display/change sprites. |
| 78 | + Location $30C002, bit 7, indicates if the DMA is complete. |
| 79 | + May have to be done during VBlank. |
| 80 | + |
| 81 | + Sprite X and Y coordinates are flipped compared to the normal screen |
| 82 | + coordinates. (ie 0, 0 is the lower right corner of the screen, and |
| 83 | + 255, 239 is the upper left corner). |
| 84 | + |
| 85 | + Sprite Collumns are store in sequential tiles. |
| 86 | + (ie 12 would be stored as 1324) |
| 87 | + 34 |
| 88 | + |
| 89 | +Palette data: |
| 90 | + 16 Entries per palette, 16 palettes for each plane and for sprites. |
| 91 | + 0x000 - character palettes |
| 92 | + 0x200 - sprite palettes |
| 93 | + 0x400 - tiles 1 |
| 94 | + 0x600 - tiles 2 |
| 95 | + |
| 96 | + Palettes are split into two banks. Each color is 1 byte (0 - 255). |
| 97 | + Bank1: |
| 98 | + $GGRR (2 bytes) |
| 99 | + |
| 100 | + Bank2: |
| 101 | + $00BB (2 Bytes) |
| 102 | + |
| 103 | + All sprites, tiles, and characters use 0 as a transparent color. |
| 104 | + |
| 105 | +Tile data: |
| 106 | + 4 bit palette select, 12 bit tile select. |
| 107 | + $PTTT P = Palette (0 - $0F) T = Tile (0 - $0FFF) |
| 108 | + |
| 109 | + All games contain three BAC06 background generator chips, usual |
| 110 | + (software) configuration is 2 chips of 16 * 16 tiles, 1 of 8 * 8. |
| 111 | + |
| 112 | +VBlank: |
| 113 | + The VBlank uses IRQ 6. Interrupt enabled by setting the SR to $2300. |
| 114 | + |
| 115 | +Playfield control registers: |
| 116 | + bank 0: |
| 117 | + 0: |
| 118 | + Bit 0: set = 8*8 tiles, else 16*16 tiles |
| 119 | + Bit 1: ? |
| 120 | + Bit 2: set enables rowscroll |
| 121 | + Bit 3: set enables colscroll |
| 122 | + Bit 7: set in playfield 1 is reverse screen (set via dip-switch) |
| 123 | + Bit 7: in other playfields unknown |
| 124 | + 2: ? (00 in bg, 03 in fg+text - maybe controls pf transparency?) |
| 125 | + 4: ? (always 00) |
| 126 | + 6: playfield shape: 00 = 4x1, 01 = 2x2, 02 = 1x4 (low 4 bits only) |
| 127 | + |
| 128 | + bank 1: |
| 129 | + 0: horizontal scroll |
| 130 | + 2: vertical scroll |
| 131 | + 4: Style of colscroll (low 4 bits, top 4 bits do nothing) |
| 132 | + 6: Style of rowscroll (low 4 bits, top 4 bits do nothing) |
| 133 | + |
| 134 | +Rowscroll/Colscroll styles: |
| 135 | + 0: 256 scroll registers (Robocop) |
| 136 | + 1: 128 scroll registers |
| 137 | + 2: 64 scroll registers |
| 138 | + 3: 32 scroll registers (Heavy Barrel, Midres) |
| 139 | + 4: 16 scroll registers (Bad Dudes, Sly Spy) |
| 140 | + 5: 8 scroll registers (Hippodrome) |
| 141 | + 6: 4 scroll registers (Heavy Barrel) |
| 142 | + 7: 2 scroll registers (Heavy Barrel, used on other games but registers |
| 143 | + kept at 0) |
| 144 | + 8: 1 scroll register (ie, none) |
| 145 | + |
| 146 | + Values above are *multiplied* by playfield shape. |
| 147 | + |
| 148 | +Playfield priority (Bad Dudes, etc): |
| 149 | + In the bottommost playfield, pens 8-15 can have priority over the next |
| 150 | + playfield. |
| 151 | + In that next playfield, pens 8-15 can have priority over sprites. |
| 152 | + |
| 153 | + Bit 0: Playfield inversion |
| 154 | + Bit 1: Enable playfield mixing (for palettes 8-15 only) |
| 155 | + Bit 2: Enable playfield/sprite mixing (for palettes 8-15 only) |
| 156 | + |
| 157 | +Playfield shape: |
| 158 | + Play Field Control 0[6] & $0f |
| 159 | + $00 4x1, 256 rows |
| 160 | + $01 2x2, 512 rows |
| 161 | + $02 1x4, 1024 rows |
| 162 | + |
| 163 | + Scroll X - Play Field Control 1[0] (Word) |
| 164 | + Scroll Y - Play Field Control 1[2] (Word) |
| 165 | + Row Scroll Enable - Play Field Control 0[0] & $04 (Byte) |
| 166 | + |
| 167 | +Control: |
| 168 | + $30C010 Playfield & Sprite priority |
| 169 | + $30C012 DMA flag |
| 170 | + $30C014 6502 sound cpu |
| 171 | + $30C016 Intel 8751 microcontroller |
| 172 | + $30C018 Interrupt ack (VBL - IRQ 6) |
| 173 | + $30C01A ? |
| 174 | + $30C01E Reset Intel 8751? - not sure, all the games write here at startup |
| 175 | + |
| 176 | +Input: ($30C000) |
| 177 | + $01 Up |
| 178 | + $02 Down |
| 179 | + $04 Left |
| 180 | + $08 Right |
| 181 | + $10 Button 1 |
| 182 | + $20 Button 2 |
| 183 | + |
| 184 | +Start Buttons: ($30C002) |
| 185 | + $04 Start 1 |
| 186 | + $08 Start 2 |
| 187 | + |
| 188 | +Graphics: |
| 189 | +width = 8 |
| 190 | +height = 8 |
| 191 | +total = 2048 |
| 192 | +planes = 4 |
| 193 | +planeoffsets = 0 262144 131072 393216 |
| 194 | +xoffsets = 0 1 2 3 4 5 6 7 |
| 195 | +yoffsets = 0 8 16 24 32 40 48 56 |
| 196 | +charincrement = 64 |
| 197 | + |
| 198 | +width = 16 |
| 199 | +height = 16 |
| 200 | +total = 4096 |
| 201 | +planes = 4 |
| 202 | +planeoffsets = 1572864 0 524288 1048576 |
| 203 | +xoffsets = 128 129 130 131 132 133 134 135 0 1 2 3 4 5 6 7 |
| 204 | +yoffsets = 0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 |
| 205 | +charincrement = 256 |
| 206 | + |
| 207 | +width = 16 |
| 208 | +height = 16 |
| 209 | +total = 1024 |
| 210 | +planes = 4 |
| 211 | +planeoffsets = 262144 786432 0 524288 |
| 212 | +xoffsets = 128 129 130 131 132 133 134 135 0 1 2 3 4 5 6 7 |
| 213 | +yoffsets = 0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 |
| 214 | +charincrement = 256 |
| 215 | + |
| 216 | +width = 16 |
| 217 | +height = 16 |
| 218 | +total = 3072 |
| 219 | +planes = 4 |
| 220 | +planeoffsets = 1048576 3145728 0 2097152 (Possibly incorrect) |
| 221 | +xoffsets = 128 129 130 131 132 133 134 135 0 1 2 3 4 5 6 7 |
| 222 | +yoffsets = 0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 |
| 223 | +charincrement = 256 |
| 224 | +</PRE> |
| 225 | +</H4> |
| 226 | +<HR> |
| 227 | +<CENTER> |
| 228 | +<A HREF="http:\\www.vintagegaming.com"> |
| 229 | +<IMG SRC="pacman_anim.gif" WIDTH=468 HEIGHT=60 BORDER=0><BR> |
| 230 | +</A> |
| 231 | +<FONT COLOR="#FF0000"><B>Hosted by the Vintage Gaming Network</B></FONT> |
| 232 | +</CENTER> |
| 233 | +</BODY> |
| 234 | +</HTML> |
| 235 | + |
| 236 | + |
0 commit comments