Blitter Information


Defender, Stargate, Robotron, Joust, Bubbles, Sinistar and Splat all run on very similar hardware. The video display is a bitmap; each byte of RAM is displayed as two pixels. There are no sprites. That means a lot of data has to be moved around in memory while the game is playing. Defender and Stargate use just the CPU to move that data. It's a testimony to the 6809 and the programmers that a 1MHz CPU can do that.

The Williams games that came after Defender and Stargate were augmented with direct memory access hardware. Two integrated circuits (the Special Chips) were added to the ROM board. These chips can move blocks of memory from one place to another without using the CPU. Since they do block transfers, they are also known as blitters. When a program writes to registers on these chips, the CPU is halted and the chips take over the address and data busses, reading data from one memory location and writing it to another. Each Special Chip handles 4 bits, which is one pixel.

The CPU takes several 1 microsecond bus cycles to read a byte and write it somewhere else, while the Special Chips can copy a byte from anywhere in ROM to anywhere in RAM in one 1 microsecond. This order-of-magnitude speed increase is nice, but the Special Chips offer other functionality, as well:

  1. They can shift the source data right one pixel when writing it. This is extremely useful because every byte of RAM holds 2 pixels. To move a shape horizontally one pixel is too time-consuming for the CPU to do quickly, so Defender and Stargate had duplicate images of every shape, with the second copy shifted one pixel right. The Special Chips handle this task at the same speed as a regular copy. Since the duplicate graphics are no longer needed, a lot of ROM space is freed up for additional shapes or more complicated game programming.
  2. They have a mode where color 0 is not copied to the destination, allowing for transparency. When this mode is used, pixels that are color 0 in the source data remain untouched in the destination, allowing for non-rectangular shapes, or even shapes with "holes" in them where the background shows through.
  3. Instead of copying bytes from the source location, the blitters can be told to replace the destination pixels with a given color. Coupled with transparency, this is used to draw text, as well as in effects such as player materialization in Joust.
  4. Screen memory is setup such that successive bytes are displayed below one another; the next pair of pixels to the right of the previous are 256 bytes away in memory. This is an awkward format to store graphics in the game program, though; it's much easier to store them in memory one row after another. The Special Chips can take pixels stored sequentially and blit them to the screen in its format. (Another way of saying this is that the blitters can take source data with stride 1 and write to the destination with stride 256; actually, both source or destination can have either stride 1 or 256, independently.)
  5. RAM used for screen memory is being accessed half the time by the video hardware to display the graphics on the monitor. The blitters have to respect that, or else there is bus contention and data is scrambled. So blits from RAM to RAM have to run at half speed, 2 microseconds per byte. Blits from ROM to RAM, or from Sinistar's extra RAM to video RAM, can be done twice as fast.
  6. Either or both of the even and odd pixels can be suppressed from being blitted. I guess you could use this for special effects.

The basic operation of the blitters has been understood for some time from disassembling game code- there are 6 registers: address 0xCA00 is the control byte; writing it starts the blit. The value written to it determines the "flavor" of the blit: the source and destination stride, if the data is shifted, if a solid color is blitted instead of the source data, if transparency is used, etc. Address 0xCA01 is the solid color that can be substituted for the source data, 0xCA02-0xCA03 are the source address high and low bytes, 0xCA04-0xCA05 are the destination address high and low bytes, $CA06 is the width in bytes and $CA07 is the height in bytes. There is a bug in the Special Chips that requires bit 2 of the width and height to be inverted (XOR 4). The later version Special Chip 2, used in Splat and the more advanced games such as Blaster, Mystic Marathon, Joust 2, Turkey Shoot, etc seems to have the same functionality, but the width and height bug is fixed.

The core functionality of moving a block of data in memory is accomplished with 4 counters: one 16-bit counter for the source address, one for the destination address, one 8-bit counter for the width, and another for the height. The counters are preset to the values written to the registers. The CPU is halted, giving the Special Chips free access to the address and data busses. The source address is put on the address bus, and a read is initiated. That puts the value stored at that address on the data bus, which is read. Then the destination address is put on the address bus and the data byte on the data bus, and a write is initiated. The source and destination addresses are incremented. If the width is greater than zero, it is decremented and the process happens again. If the width is zero, the height is decremented. If the height is greater than zero than the width is reloaded with the initial value and the process happens again. Eventually the width and height are both decremented to zero and the blit is finished; the CPU is allowed to run again.

In older versions of MAME and in several xx-in-one boards, blits happen pretty much instantaneously, unlike the real games where the Special Chips have a maximum throughput of 1 MB/second (not counting the time it takes to write to the registers to start the blit). This results in games that appear normal at the beginning levels, but become much harder at the later levels. Robotron can have so many enemies on screen at once that all cannot be moved in one video frame. So the game moves as many as possible, then moves the rest in the next frame. With an "instantaneous blitter", all the enemies can be moved in one video frame, making the game play much faster. This is masked in the lower waves because time delays are added to make the game easier in the beginning, but the later waves are much harder than on a real game.

MAME fixed this one some time ago, making the emulation much better. But it did not implement SLOW mode for RAM-to-RAM transfers until recently, since its emulated hardware doesn't have that restriction. And without a schematic or even instructions as to how the Special Chips actually work, the details of many features were figured out by trial and error and lots of test play to see how the games were affected with each change. For instance, what happens if you specify a width or height of 0? Does anything change if you do a blit with both even and odd pixels suppressed? How exactly does shift work? What are the largest and smallest blits that you can do?

In order to better understand how the Special Chips work, I wrote a program in 6809 assembly language that performs a couple hundred blits with different parameters. I timed how long it took to do 1000 blits with each set of parameters, then dumped memory to a file to see exactly what the results of each blit were. Before each blit, the first 1/4 of RAM was cleared, the next 1/4 set to 0xFF, the next 1/4 to 0xA5, and the rest to 0x5A. I ran this program on two Joust machines, using 5 sets of Special Chips to see if there was any difference; there was not. I also ran this under MAME version 0148.

About 13% of the blits had different results in MAME than on the real game, and about 11% of the blits took a different amount of time in MAME than on the real game. I'm sure that these blits represent a very small proportion of blits done in actual game play, but they may still contribute to game play anomalies.

After making modifications to the MAME source code to make the results match, the blitter code is actually simpler than before; this makes sense, since the Special Chips are not programmed CPUs, but a collection of logic gates. That means that they probably don't have a lot of if-then exceptions that code would have, but use a more straight-forward approach.

This information may be useful to people creating multigames, either emulated with CPUs, or in hardware using FPGAs. Here is a table showing the blitter parameters that I tested, a CRC of memory after 1000 blits, and time it took per blit (in milliseconds). There are links to the test program source code and the memory dumps from an actual Joust machine for all the blits. The dump file consists of 16 bytes containing the parameters for the blit, then 49,152 bytes of RAM, repeated for all 256 blits. Note that the first entry in the table isn't actually a blit: I ran through the loop 1000 times, but instead of storing the control byte at $CA00 to start the blit each time, I executed NOPs. This gives baseline timing that can be subtracted from the times in the table to obtain the time spent doing the actual blit.

My program

Memory dumps

ROM / RAM source solid dest Width XOR 4 Height XOR 4 control byte description CRC 1000 blit time 1 blit time number bytes offset in dump
              NO BLIT D73B077C 132.504 0.132504 0 00000000
1 FCF5 3C 0000 14 14 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 690FDD04 394.078 0.394078 256 0000C010
1 FCF5 3C 0100 24 0C 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN F8608075 394.281 0.394281 256 00018020
1 FCF5 3C 0200 44 0 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 81E146CC 393.602 0.393602 256 00024030
1 FCF5 3C 0300 84 6 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 15147A74 392.725 0.392725 256 00030040
1 FCF5 3C 0400 0C 24 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN B12C3E2D 393.962 0.393962 256 0003C050
1 FCF5 3C 0500 0 44 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN F8FAFF76 393.351 0.393351 256 00048060
1 FCF5 3C 0600 6 84 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 06AE2B6A 393.526 0.393526 256 00054070
1 FCF5 3C 0700 14 14 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 6E031BDF 393.548 0.393548 256 00060080
1 FCF5 3C 0800 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 91373632 396.256 0.396256 256 0006C090
1 FCF5 3C 0900 14 14 20 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE SHIFT ODD EVEN 77812D32 394.679 0.394679 256 000780A0
1 FCF5 3C 0A00 14 14 40 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT NO ODD EVEN 9365D17D 392.679 0.392679 256 000840B0
1 FCF5 3C 0B00 14 14 80 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD NO EVEN 945AD8C6 393.201 0.393201 256 000900C0
1 FCF5 3C 0C00 14 14 B8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY SOLID SHIFT ODD NO EVEN AB152FAA 393.549 0.393549 256 0009C0D0
1 FCF5 3C 0D00 14 14 78 SRC stride= 1 DEST stride= 1 FAST FORE ONLY SOLID SHIFT NO ODD EVEN F407B07F 394.207 0.394207 256 000A80E0
1 FCF5 3C 0E00 14 14 4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE NO SHIFT ODD EVEN 401E9AF5 648.925 0.648925 256 000B40F0
1 FCF5 3C 0F00 14 14 88 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD NO EVEN 2C3F6036 394.202 0.394202 256 000C0100
1 FCF5 0E 1000 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 962793FC 394.122 0.394122 256 000CC110
1 FCF5 1C 1100 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 5BDA760E 394.135 0.394135 256 000D8120
1 FCF5 2A 1200 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN F52CEBCE 393.78 0.39378 256 000E4130
1 FCF5 38 1300 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 3650A740 392.699 0.392699 256 000F0140
1 FCF5 46 1400 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN C7850F1B 392.549 0.392549 256 000FC150
1 FCF5 54 1500 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 92F4DA6D 392.815 0.392815 256 00108160
1 FCF5 62 1600 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 50EFC536 393.179 0.393179 256 00114170
1 FCF5 70 1700 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 78418C46 394.184 0.394184 256 00120180
1 FCF5 8F 1800 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 0CD15C3C 393.302 0.393302 256 0012C190
1 FCF5 9D 1900 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 2BBF518B 393.334 0.393334 256 001381A0
1 FCF5 AB 1A00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 5EF7B078 392.301 0.392301 256 001441B0
1 FCF5 B9 1B00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 182A2537 394.23 0.39423 256 001501C0
1 FCF5 C7 1C00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN F2C6C200 393.518 0.393518 256 0015C1D0
1 FCF5 D5 1D00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 8E185F17 394.979 0.394979 256 001681E0
1 FCF5 E3 1E00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN FF0F265E 392.948 0.392948 256 001741F0
1 FCF5 F1 1F00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN D75C8A82 392.223 0.392223 256 00180200
1 FCF5 3C 2000 4 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 339A490E 138.902 0.138902 1 0018C210
1 FCF5 3C 2100 4 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN D1DE7C73 138.812 0.138812 1 00198220
1 FCF5 3C 2200 4 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN D16DB2A1 138.81 0.13881 2 001A4230
1 FCF5 3C 2300 4 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN AA6990D1 139.72 0.13972 3 001B0240
1 FCF5 3C 2400 5 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 4AEF6991 137.221 0.137221 1 001BC250
1 FCF5 3C 2500 5 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN C9989117 139.601 0.139601 1 001C8260
1 FCF5 3C 2600 5 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN CA48C091 139.162 0.139162 2 001D4270
1 FCF5 3C 2700 5 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN B40AB053 140.89 0.14089 3 001E0280
1 FCF5 3C 2800 6 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN FE44B313 138.263 0.138263 2 001EC290
1 FCF5 3C 2900 6 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 62DC3073 139.401 0.139401 2 001F82A0
1 FCF5 3C 2A00 6 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN A14971D9 141.416 0.141416 4 002042B0
1 FCF5 3C 2B00 6 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 635830B6 143.385 0.143385 6 002102C0
1 FCF5 3C 2C00 7 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN B489A0E6 141.548 0.141548 3 0021C2D0
1 FCF5 3C 2D00 7 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 658033C4 141.117 0.141117 3 002282E0
1 FCF5 3C 2E00 7 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 59C85AFD 144.009 0.144009 6 002342F0
1 FCF5 3C 2F00 7 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 7C3F4009 146.863 0.146863 9 00240300
1 FCF5 3C 3000 14 14 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN D67E46C9 394.957 0.394957 256 0024C310
1 FCF5 3C 3100 24 0C 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 367A9E68 394.687 0.394687 256 00258320
1 FCF5 3C 3200 44 0 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 089109F7 395.215 0.395215 256 00264330
1 FCF5 3C 3300 84 6 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 41C7B6C4 393.705 0.393705 256 00270340
1 FCF5 3C 3400 0C 24 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN DC8808C1 394.041 0.394041 256 0027C350
1 FCF5 3C 3500 0 44 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 17821CC3 394.335 0.394335 256 00288360
1 FCF5 3C 3600 6 84 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 663B96C9 394.067 0.394067 256 00294370
1 FCF5 3C 3700 14 14 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 71F90D23 393.308 0.393308 256 002A0380
1 FCF5 3C 3800 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 63D46EFD 393.521 0.393521 256 002AC390
1 FCF5 3C 3900 14 14 20 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE SHIFT ODD EVEN 72CDA549 394.252 0.394252 256 002B83A0
1 FCF5 3C 3A00 14 14 40 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT NO ODD EVEN 335A143A 394.149 0.394149 256 002C43B0
1 FCF5 3C 3B00 14 14 80 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD NO EVEN 46A050E5 393.673 0.393673 256 002D03C0
1 FCF5 3C 3C00 14 14 B8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY SOLID SHIFT ODD NO EVEN 3C032A30 395.152 0.395152 256 002DC3D0
1 FCF5 3C 3D00 14 14 78 SRC stride= 1 DEST stride= 1 FAST FORE ONLY SOLID SHIFT NO ODD EVEN 5BB4AEEE 394.629 0.394629 256 002E83E0
1 FCF5 3C 3E00 14 14 4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE NO SHIFT ODD EVEN F3779234 649.595 0.649595 256 002F43F0
1 FCF5 3C 3F00 14 14 88 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD NO EVEN D4D9E9A8 394.366 0.394366 256 00300400
1 FCF5 0F 4000 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 14815D8E 394.073 0.394073 256 0030C410
1 FCF5 1D 4100 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 01D1442A 394.564 0.394564 256 00318420
1 FCF5 2B 4200 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 7BA5E699 393.415 0.393415 256 00324430
1 FCF5 39 4300 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN A9D482B5 392.85 0.39285 256 00330440
1 FCF5 47 4400 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 27658D34 393.837 0.393837 256 0033C450
1 FCF5 55 4500 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN B26F94BD 393.414 0.393414 256 00348460
1 FCF5 63 4600 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN A9885469 392.903 0.392903 256 00354470
1 FCF5 71 4700 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN BAF556E6 393.108 0.393108 256 00360480
1 FCF5 8E 4800 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 862FA195 393.324 0.393324 256 0036C490
1 FCF5 9C 4900 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 9452B436 392.892 0.392892 256 003784A0
1 FCF5 AA 4A00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 4A342076 393.901 0.393901 256 003844B0
1 FCF5 B8 4B00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN E49F923B 393.697 0.393697 256 003904C0
1 FCF5 C6 4C00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN D2137A09 393.332 0.393332 256 0039C4D0
1 FCF5 D4 4D00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 0055751B 394.082 0.394082 256 003A84E0
1 FCF5 E2 4E00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 4151CB80 394.287 0.394287 256 003B44F0
1 FCF5 F0 4F00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 42F3A55E 393.566 0.393566 256 003C0500
1 FCF5 3C 5000 4 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN D1A3B2B9 138.108 0.138108 1 003CC510
1 FCF5 3C 5100 4 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN AE5A1119 138.442 0.138442 1 003D8520
1 FCF5 3C 5200 4 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN FFF2C0B1 139.013 0.139013 2 003E4530
1 FCF5 3C 5300 4 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN CC3D7A66 141.08 0.14108 3 003F0540
1 FCF5 3C 5400 5 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 81302786 139.301 0.139301 1 003FC550
1 FCF5 3C 5500 5 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 04EBC0A1 139.13 0.13913 1 00408560
1 FCF5 3C 5600 5 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 4402B68C 139.968 0.139968 2 00414570
1 FCF5 3C 5700 5 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN A9072344 140.71 0.14071 3 00420580
1 FCF5 3C 5800 6 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 6B6315FC 138.712 0.138712 2 0042C590
1 FCF5 3C 5900 6 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 9D11767B 139.315 0.139315 2 004385A0
1 FCF5 3C 5A00 6 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 22E553AD 142.616 0.142616 4 004445B0
1 FCF5 3C 5B00 6 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 1FAECF66 144.214 0.144214 6 004505C0
1 FCF5 3C 5C00 7 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN A30E3B49 139.331 0.139331 3 0045C5D0
1 FCF5 3C 5D00 7 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 1749ADE9 139.601 0.139601 3 004685E0
1 FCF5 3C 5E00 7 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 264A2762 143.495 0.143495 6 004745F0
1 FCF5 3C 5F00 7 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 0353E8A6 146.924 0.146924 9 00480600
1 FCF5 3C 6000 14 14 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 0C82B216 392.753 0.392753 256 0048C610
1 FCF5 3C 6100 24 0C 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN CDC64091 392.809 0.392809 256 00498620
1 FCF5 3C 6200 44 0 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 493776EF 393.546 0.393546 256 004A4630
1 FCF5 3C 6300 84 6 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 0D2370BB 393.529 0.393529 256 004B0640
1 FCF5 3C 6400 0C 24 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 131D87EE 393.931 0.393931 256 004BC650
1 FCF5 3C 6500 0 44 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN D87EEC6D 393.243 0.393243 256 004C8660
1 FCF5 3C 6600 6 84 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 791B5E96 394.011 0.394011 256 004D4670
1 FCF5 3C 6700 14 14 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN D32C1704 393.753 0.393753 256 004E0680
1 FCF5 3C 6800 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN C09DA879 394.213 0.394213 256 004EC690
1 FCF5 3C 6900 14 14 20 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE SHIFT ODD EVEN 1DC703F8 393.232 0.393232 256 004F86A0
1 FCF5 3C 6A00 14 14 40 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT NO ODD EVEN 493BDE4B 395.939 0.395939 256 005046B0
1 FCF5 3C 6B00 14 14 80 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD NO EVEN B9719DEB 393.163 0.393163 256 005106C0
1 FCF5 3C 6C00 14 14 B8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY SOLID SHIFT ODD NO EVEN 71735B9F 393.298 0.393298 256 0051C6D0
1 FCF5 3C 6D00 14 14 78 SRC stride= 1 DEST stride= 1 FAST FORE ONLY SOLID SHIFT NO ODD EVEN 05E77160 393.122 0.393122 256 005286E0
1 FCF5 3C 6E00 14 14 4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE NO SHIFT ODD EVEN 38AEBA43 647.94 0.64794 256 005346F0
1 FCF5 3C 6F00 14 14 88 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD NO EVEN 3FE99BE5 393.753 0.393753 256 00540700
1 FCF5 0F 7000 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN D2E2338D 393.432 0.393432 256 0054C710
1 FCF5 1E 7100 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN E4E10C00 392.939 0.392939 256 00558720
1 FCF5 2D 7200 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 4655227E 394.255 0.394255 256 00564730
1 FCF5 3C 7300 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 551CEE28 393.125 0.393125 256 00570740
1 FCF5 4B 7400 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN AD4941CF 394.445 0.394445 256 0057C750
1 FCF5 5A 7500 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 603D8A64 393.598 0.393598 256 00588760
1 FCF5 69 7600 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 547C2C4F 393.48 0.39348 256 00594770
1 FCF5 78 7700 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 8CD68D41 397.115 0.397115 256 005A0780
1 FCF5 87 7800 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 862F1261 393.636 0.393636 256 005AC790
1 FCF5 96 7900 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN DF4A7275 393.356 0.393356 256 005B87A0
1 FCF5 A5 7A00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN D73B077C 393.786 0.393786 256 005C47B0
1 FCF5 B4 7B00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 01CC8194 395.022 0.395022 256 005D07C0
1 FCF5 C3 7C00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 4CF4328E 393.893 0.393893 256 005DC7D0
1 FCF5 D2 7D00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN FC5A5A9E 394.144 0.394144 256 005E87E0
1 FCF5 E1 7E00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 2AC822FD 393.03 0.39303 256 005F47F0
1 FCF5 F0 7F00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN DAEF7FE5 393.888 0.393888 256 00600800
1 FCF5 3C 8000 4 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 1B1AAAF8 138.711 0.138711 1 0060C810
1 FCF5 3C 8100 4 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN E737C4DA 138.409 0.138409 1 00618820
1 FCF5 3C 8200 4 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 8AEE77D6 139.307 0.139307 2 00624830
1 FCF5 3C 8300 4 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 8E4C05C5 140.468 0.140468 3 00630840
1 FCF5 3C 8400 5 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN A7D63BC2 138.711 0.138711 1 0063C850
1 FCF5 3C 8500 5 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 1258810F 138.057 0.138057 1 00648860
1 FCF5 3C 8600 5 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN ADF9D31B 140.037 0.140037 2 00654870
1 FCF5 3C 8700 5 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN D12820E9 141.029 0.141029 3 00660880
1 FCF5 3C 8800 6 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 1A369A8D 139.529 0.139529 2 0066C890
1 FCF5 3C 8900 6 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN BD812A98 140.216 0.140216 2 006788A0
1 FCF5 3C 8A00 6 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 4C26BE67 141.586 0.141586 4 006848B0
1 FCF5 3C 8B00 6 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN F39941D2 143.178 0.143178 6 006908C0
1 FCF5 3C 8C00 7 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 9F38CCF2 139.929 0.139929 3 0069C8D0
1 FCF5 3C 8D00 7 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 949E510B 140.528 0.140528 3 006A88E0
1 FCF5 3C 8E00 7 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN E0BD76CC 144.394 0.144394 6 006B48F0
1 FCF5 3C 8F00 7 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 373382D4 146.639 0.146639 9 006C0900
1 FCF5 3C 9000 14 14 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 6EF4AE6B 393.311 0.393311 256 006CC910
1 FCF5 3C 9100 24 0C 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 715C9F57 392.261 0.392261 256 006D8920
1 FCF5 3C 9200 44 0 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN FDF77340 393.343 0.393343 256 006E4930
1 FCF5 3C 9300 84 6 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 2EC40CDF 393.177 0.393177 256 006F0940
1 FCF5 3C 9400 0C 24 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 1DB03C5B 393.222 0.393222 256 006FC950
1 FCF5 3C 9500 0 44 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN D8656405 393.645 0.393645 256 00708960
1 FCF5 3C 9600 6 84 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 59FF6E7A 394.232 0.394232 256 00714970
1 FCF5 3C 9700 14 14 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 8DE66D7F 398.702 0.398702 256 00720980
1 FCF5 3C 9800 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 34B8A7F5 393.945 0.393945 256 0072C990
1 FCF5 3C 9900 14 14 20 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE SHIFT ODD EVEN 82E10FB4 394.854 0.394854 256 007389A0
1 FCF5 3C 9A00 14 14 40 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT NO ODD EVEN A967DE38 393.309 0.393309 256 007449B0
1 FCF5 3C 9B00 14 14 80 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD NO EVEN B6555C7E 393.479 0.393479 256 007509C0
1 FCF5 3C 9C00 14 14 B8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY SOLID SHIFT ODD NO EVEN C2539CC7 393.45 0.39345 256 0075C9D0
1 FCF5 3C 9D00 14 14 78 SRC stride= 1 DEST stride= 1 FAST FORE ONLY SOLID SHIFT NO ODD EVEN E4153C20 393.524 0.393524 256 007689E0
1 FCF5 3C 9E00 14 14 4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE NO SHIFT ODD EVEN F2F8FE14 649.209 0.649209 256 007749F0
1 FCF5 3C 9F00 14 14 88 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD NO EVEN 9E5D4B83 393.263 0.393263 256 00780A00
1 FCF5 02 A000 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 8B5ACE67 393.911 0.393911 256 0078CA10
1 FCF5 14 A100 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN CA7BDE4E 393.457 0.393457 256 00798A20
1 FCF5 26 A200 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 307D2E52 393.59 0.39359 256 007A4A30
1 FCF5 38 A300 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN D76ACD5B 393.293 0.393293 256 007B0A40
1 FCF5 4A A400 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 24B320EC 392.511 0.392511 256 007BCA50
1 FCF5 5C A500 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 0C43E7BB 396.35 0.39635 256 007C8A60
1 FCF5 6E A600 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 7F92EF5C 392.418 0.392418 256 007D4A70
1 FCF5 70 A700 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 3A86546A 393.434 0.393434 256 007E0A80
1 FCF5 81 A800 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN F62A46B5 393.18 0.39318 256 007ECA90
1 FCF5 93 A900 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN EE9E3705 393.675 0.393675 256 007F8AA0
1 FCF5 A5 AA00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 004DA23E 393.519 0.393519 256 00804AB0
1 FCF5 B7 AB00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN AAC54CCE 394.179 0.394179 256 00810AC0
1 FCF5 C9 AC00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN F8E3D9DE 394.361 0.394361 256 0081CAD0
1 FCF5 DB AD00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN E8EA031D 394.167 0.394167 256 00828AE0
1 FCF5 ED AE00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN 7758B085 393.847 0.393847 256 00834AF0
1 FCF5 FF AF00 14 14 10 SRC stride= 1 DEST stride= 1 FAST FORE+BACK SOLID NO SHIFT ODD EVEN F926C073 394.133 0.394133 256 00840B00
1 FCF5 3C B000 4 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 6820F30E 138.591 0.138591 1 0084CB10
1 FCF5 3C B100 4 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 560C9048 138.656 0.138656 1 00858B20
1 FCF5 3C B200 4 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN E2FA0365 138.972 0.138972 2 00864B30
1 FCF5 3C B300 4 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN BD7DA19F 141.599 0.141599 3 00870B40
1 FCF5 3C B400 5 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 5BFCC591 138.378 0.138378 1 0087CB50
1 FCF5 3C B500 5 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 45F6E7A3 138.39 0.13839 1 00888B60
1 FCF5 3C B600 5 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN E7C25463 138.584 0.138584 2 00894B70
1 FCF5 3C B700 5 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN C69B52F5 141.223 0.141223 3 008A0B80
1 FCF5 3C B800 6 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 0B1CF14E 139.415 0.139415 2 008ACB90
1 FCF5 3C B900 6 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN D19EF5EF 140.173 0.140173 2 008B8BA0
1 FCF5 3C BA00 6 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 30EECC03 141.566 0.141566 4 008C4BB0
1 FCF5 3C BB00 6 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN BD91F120 143.106 0.143106 6 008D0BC0
1 FCF5 3C BC00 7 4 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 423EEEFC 141.147 0.141147 3 008DCBD0
1 FCF5 3C BD00 7 5 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 310B652B 140.744 0.140744 3 008E8BE0
1 FCF5 3C BE00 7 6 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 2A90833B 142.872 0.142872 6 008F4BF0
1 FCF5 3C BF00 7 7 8 SRC stride= 1 DEST stride= 1 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 0E06615E 146.825 0.146825 9 00900C00
1 FCF5 3C FFF0 14 14 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 48850102 394.217 0.394217 256 0090CC10
1 FCF5 3C 0101 14 14 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN E3C08940 393.81 0.39381 256 00918C20
1 FCF5 3C 0300 0B 0B 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 84B26821 363.729 0.363729 225 00924C30
1 FCF5 3C 0400 14 14 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN B12C3E2D 393.041 0.393041 256 00930C40
0 0400 3C 0480 14 14 4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE NO SHIFT ODD EVEN D73B077C 649.08 0.64908 256 0093CC50
1 FCF5 3C 0600 14 14 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 06AE2B6A 392.798 0.392798 256 00948C60
1 FCF5 3C 0700 14 14 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 6E031BDF 393.981 0.393981 256 00954C70
0 2F80 3C 2F00 14 14 4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE NO SHIFT ODD EVEN BB456D59 648.794 0.648794 256 00960C80
1 FCF5 3C 0800 FB 4 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 4B236766 393.266 0.393266 255 0096CC90
1 FCF5 3C 0800 FB 5 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 4B236766 392.878 0.392878 255 00978CA0
1 FCF5 3C 0800 5 FB 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 4B236766 392.874 0.392874 255 00984CB0
1 FCF5 3C 0900 4 FB 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 2EC92563 392.053 0.392053 255 00990CC0
1 FCF5 3C 1000 14 14 2 SRC stride= 1 DEST stride=256 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 5785857D 393.747 0.393747 256 0099CCD0
1 FCF5 3C 2000 14 14 1A SRC stride= 1 DEST stride=256 FAST FORE ONLY SOLID NO SHIFT ODD EVEN 52F50C60 392.848 0.392848 256 009A8CE0
1 FCF5 3C 3000 14 14 0A SRC stride= 1 DEST stride=256 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 9D917F7F 393.684 0.393684 256 009B4CF0
1 FCF5 3C 4000 14 14 2A SRC stride= 1 DEST stride=256 FAST FORE ONLY IMAGE SHIFT ODD EVEN 7CD264B7 393.443 0.393443 256 009C0D00
1 FCF5 3C 5000 14 14 56 SRC stride= 1 DEST stride=256 SLOW FORE+BACK SOLID NO SHIFT NO ODD EVEN 9201E8BA 648.827 0.648827 256 009CCD10
1 FCF5 3C 6000 14 14 46 SRC stride= 1 DEST stride=256 SLOW FORE+BACK IMAGE NO SHIFT NO ODD EVEN 0F57B5AE 649.005 0.649005 256 009D8D20
1 FCF5 3C 7000 14 14 2 SRC stride= 1 DEST stride=256 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 95CEE41F 393.155 0.393155 256 009E4D30
1 FCF5 3C 8000 14 14 1A SRC stride= 1 DEST stride=256 FAST FORE ONLY SOLID NO SHIFT ODD EVEN 276FEAAC 395.518 0.395518 256 009F0D40
1 FCF5 3C 9000 14 14 0A SRC stride= 1 DEST stride=256 FAST FORE ONLY IMAGE NO SHIFT ODD EVEN 6B374585 392.682 0.392682 256 009FCD50
1 FCF5 3C A000 14 14 2A SRC stride= 1 DEST stride=256 FAST FORE ONLY IMAGE SHIFT ODD EVEN 11385C63 392.958 0.392958 256 00A08D60
1 FCF5 3C B000 14 14 56 SRC stride= 1 DEST stride=256 SLOW FORE+BACK SOLID NO SHIFT NO ODD EVEN 312A2A4F 648.533 0.648533 256 00A14D70
1 0000 00 0000 0 0 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN D73B077C 153.877 0.153877 16 00A20D80
1 0000 3C 6000 4 4 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN C113AA64 138.281 0.138281 1 00A2CD90
1 0000 3C 6000 4 5 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN C113AA64 138.337 0.138337 1 00A38DA0
1 0000 3C 6000 4 6 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 8571F7BB 139.343 0.139343 2 00A44DB0
1 0000 3C 6000 4 7 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN E3015BD7 139.654 0.139654 3 00A50DC0
1 0000 3C 6000 4 8 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 87211416 149.431 0.149431 12 00A5CDD0
1 0000 3C 6000 5 4 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN C113AA64 138.259 0.138259 1 00A68DE0
1 0000 3C 6000 6 4 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 8571F7BB 139.251 0.139251 2 00A74DF0
1 0000 3C 6000 7 4 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN E3015BD7 139.674 0.139674 3 00A80E00
1 0000 3C 6000 8 4 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 87211416 149.566 0.149566 12 00A8CE10
1 0000 3C 6000 5 5 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN C113AA64 138.701 0.138701 1 00A98E20
1 0000 3C 6000 6 6 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 9596FD0D 141.18 0.14118 4 00AA4E30
1 0000 3C 6000 7 7 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 0BD9886D 145.861 0.145861 9 00AB0E40
1 0000 3C 6000 8 8 0 SRC stride= 1 DEST stride= 1 FAST FORE+BACK IMAGE NO SHIFT ODD EVEN 684EE0BD 282.088 0.282088 144 00ABCE50
0 0000 3C 4000 74 74 4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE NO SHIFT ODD EVEN 23A9C8F8 25243.46 25.24346 12544 00AC8E60
0 0000 3C 4000 74 74 D4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK SOLID NO SHIFT NO ODD NO EVEN D73B077C 25241.443 25.241443 12544 00AD4E70
0 0000 3C 4000 74 74 DC SRC stride= 1 DEST stride= 1 SLOW FORE ONLY SOLID NO SHIFT NO ODD NO EVEN D246F5CD 25241.599 25.241599 12544 00AE0E80
0 0000 3C 4000 74 74 CC SRC stride= 1 DEST stride= 1 SLOW FORE ONLY IMAGE NO SHIFT NO ODD NO EVEN 68112EF7 25241.402 25.241402 12544 00AECE90
0 0000 3C 4000 74 74 94 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK SOLID NO SHIFT ODD NO EVEN 98B1C9E3 25244.629 25.244629 12544 00AF8EA0
0 0000 3C 4000 74 74 9C SRC stride= 1 DEST stride= 1 SLOW FORE ONLY SOLID NO SHIFT ODD NO EVEN 9DCC3B52 25239.796 25.239796 12544 00B04EB0
0 0000 3C 4000 74 74 54 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK SOLID NO SHIFT NO ODD EVEN C2D9076B 25242.265 25.242265 12544 00B10EC0
0 0000 3C 4000 74 74 5C SRC stride= 1 DEST stride= 1 SLOW FORE ONLY SOLID NO SHIFT NO ODD EVEN C7A4F5DA 25242.039 25.242039 12544 00B1CED0
0 0000 3C 4000 74 74 C4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE NO SHIFT NO ODD NO EVEN D73B077C 25243.696 25.243696 12544 00B28EE0
0 0000 3C 4000 74 74 14 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK SOLID NO SHIFT ODD EVEN 8D53C9F4 25241.297 25.241297 12544 00B34EF0
0 0000 3C 4000 74 74 24 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE SHIFT ODD EVEN 2D305AD5 25241.675 25.241675 12544 00B40F00
0 0000 3C 4000 74 74 FC SRC stride= 1 DEST stride= 1 SLOW FORE ONLY SOLID SHIFT NO ODD NO EVEN DA2F93F2 25243.235 25.243235 12544 00B4CF10
0 0000 3C 4000 74 74 FF SRC stride=256 DEST stride=256 SLOW FORE ONLY SOLID SHIFT NO ODD NO EVEN E08850D3 25243.854 25.243854 12544 00B58F20
0 0000 3C 6000 98 98 4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE NO SHIFT ODD EVEN 08A6F3D1 48835.898 48.835898 24336 00B64F30
0 0000 3C 6000 98 98 C4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE NO SHIFT NO ODD NO EVEN D73B077C 48840.92 48.84092 24336 00B70F40
0 0000 3C 6000 98 98 14 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK SOLID NO SHIFT ODD EVEN 360D94D6 48841.917 48.841917 24336 00B7CF50
0 0000 3C 6000 98 98 24 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE SHIFT ODD EVEN BA7518BF 48835.907 48.835907 24336 00B88F60
0 0000 3C 6000 98 98 FC SRC stride= 1 DEST stride= 1 SLOW FORE ONLY SOLID SHIFT NO ODD NO EVEN FACF208F 48836.308 48.836308 24336 00B94F70
0 0000 3C 2000 98 98 FF SRC stride=256 DEST stride=256 SLOW FORE ONLY SOLID SHIFT NO ODD NO EVEN 01E37577 48836.643 48.836643 24336 00BA0F80
0 0000 3C 0000 BA BA 4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE NO SHIFT ODD EVEN D73B077C 72378.428 72.378428 36100 00BACF90
0 0000 3C 0000 BA BA C4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE NO SHIFT NO ODD NO EVEN D73B077C 72375.995 72.375995 36100 00BB8FA0
0 0000 3C 0000 BA BA 14 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK SOLID NO SHIFT ODD EVEN CD039510 72377.033 72.377033 36100 00BC4FB0
0 0000 3C 0000 BA BA 24 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE SHIFT ODD EVEN D99931E0 72380.838 72.380838 36100 00BD0FC0
0 0000 3C 0000 BA BA FC SRC stride= 1 DEST stride= 1 SLOW FORE ONLY SOLID SHIFT NO ODD NO EVEN D050CA36 72371.864 72.371864 36100 00BDCFD0
0 0000 3C 0000 BA BA FF SRC stride=256 DEST stride=256 SLOW FORE ONLY SOLID SHIFT NO ODD NO EVEN DD848939 72374.416 72.374416 36100 00BE8FE0
0 0000 3C 0101 D9 D9 4 SRC stride= 1 DEST stride= 1 SLOW FORE+BACK IMAGE NO SHIFT ODD EVEN 259C320C 97872.337 97.872337 48841 00BF4FF0

A few things of note: using a width or height of 0 gives the same results as 1. Even if the odd and even pixels are suppressed, the destination will be changed if the mode is FOREGROUND ONLY. A SLOW blit of 255x255 bytes (which is larger than RAM so probably not useful) takes just very slightly less time than the watchdog timeout (255x255/500,000=0.1301 seconds versus 8/60=0.1333 seconds). A blit can write to $CA00, which will cause another blit, and can cause an infinite loop of blits, until the watchdog resets the game.

Here's a list of the Special Chip signals:

I decapped a Special Chip 1 and took photos of the die. It has 38 pads, whereas the chip has 40 pins. Looking at the die, I think that pins 15 and 24, +12V and one of the grounds, weren't connected to the die. I also now think that pin 5, connected to /HALT, is actually an input, and the /HALT signal is generated by the LOWER chip's pin 3.

Here is the modified MAME blitter code from src/mame/video/williams.c

The actual hardware does not read the destination byte to implement transparency- it has a signal that inhibits writes to the upper and/or lower nibbles. Likewise, I'm guessing shifting isn't done in hardware with a 16-bit shift register like MAME does it. Of course the actual blitter is spread out over two identical Special Chips, one for the lower 4 bits and one for the upper. They must work simultaneously; if they worked sequentially, blits would take twice as long. I found that if the UPPER Special Chip is removed, blitting still occurs, although it is corrupted. If the LOWER one is removed then no blitting occurs. Looking at the UPPER chip with the LOWER one removed, the logic analyzer shows that writes to $CA00 do not cause the CPU to halt. With LOWER removed, if you pull pins 3 and 14 of out of the socket, ground 14 and connect 3 to pin 5, then it acts just like when UPPER is removed and LOWER is present. This means that LOWER is the master, and pins 3 and 14 tell the chips which is master.

After running these blits, I thought of some other cases, and ran another 222 blits, including many with overlapping source and destination addresses. My modified MAME code matched the results from both Joust machines, except for a few blits where I accidentally did RAM-to-RAM blits without the SLOW bit set. This caused the Special Chips and the video circuitry to fight each other to drive the address bus, so data was read from incorrect locations. The same blitter parameters sometimes resulted in slightly different results on the same machine, and always a little more different between the two different machines. It's probably not good for the Special Chips to do this!

I also ran some more test cases to answer specific questions:

Here are some pics from a logic analyzer capture of the following code:

	lda		#0xff
	sta		blitter_mask
	ldx		#palette1
	stx		blitter_source
	ldx		#color_registers
	stx		blitter_dest
	ldx		#0x0514		;1x16
	stx		blitter_w_h
	lda		#0x04		;slow
	sta		start_blitter

	ldx		#blitdata
	stx		blitter_source
	ldx		#0x2880
	stx		blitter_dest
	ldx		#0x1414		;16x16
	stx		blitter_w_h
	lda		#0x02
	sta		start_blitter

I captured 8 control signals and the lower 8 address bits. I didn't notice until later that the test clip on A4 had fallen off. After the write to $CA00 to start the blit, the Special Chips assert the CPU signal *HALT. After the current instruction ends, the CPU sets signals BA and BS high, which results in the game signal *BABS going low. After nearly one instruction cycle, the blit begins. When the blit is done, *HALT is de-asserted, and after nearly 2 instruction cycles, *BABS goes high and the CPU starts running again.

overview of both blits The top signal shows writes to the Special Chip registers.

close up of first blit 16 bytes in SLOW mode

close up of second blit 256 bytes at full speed

HALT timing diagram from 6809E datasheet. It's confusing (and I think incorrect). The MC6809-MC6809E 8-Bit Microprocessor Programming Manual says "When BA goes low, an additional dead cycle will elapse before the processor regains control of the buses." This matches what I see.

I also captured the Special Chip signals and A7-A0 at 16MHz using a Saleae Logic 16 while doing one of each blit in the same order as the table above. Here is the capture of the "upper" Special Chip, and here the capture of the "lower" one. You can download Saleae's Logic software to view the captures in detail.

I'd like to purchase some Special Chip 2s to test them as well. If you have some, please email me.

Thanks to Mike, I was loaned a couple of Special Chip 2s to test. Other than the height/width bit 2 inversion bug, they tested out identical to the SC1s. I would still like to purchase one or two to decap and compare in detail.

Special Chip 1s are labelled VL2001; some have paper labels glued over them that say "SPECIAL CHIP 1" or "SPEC CHIP 1". The ones I have are date-coded 8220, 8224 and 8250. The manufacturer name is shown as VTI or VLSI, which is VLSI Technology, Inc..

Special Chip 2s are labelled VL2001A, with VTI's logo. The part number being the same with just an A suffix seems to indicate that there were only slight changes, perhaps only the height/width bug fix.


back to Williams Info page

back to Arcade Game Info page

back to Home page