28
The pattern index selects one of 256 patterns to use. Bit 2 of register #6 acts like a
global bit 8 in addition to this value, allowing sprite patterns to be taken from the first
256 or last 256 of the 512 available patterns.
When bit 1 of register #1 is set, bit 0 of the pattern index is ignored. The pattern index
selects the pattern to be used for the top of the 8x16 sprite, and the same pattern index
plus one is used for the bottom half of the sprite.
When bit 0 of register #1 is set, sprite pixels are zoomed to double their size.
8x8 sprites are 16x16, 8x16 sprites become 16x32. There is a bug in how the 315-5124
SMS VDP processes zoomed sprites compared to the 315-5246; it will only allow the first
four sprites of the eight shown on a scanline to be zoomed horizontally and vertically,
and the remaining four will be zoomed vertically. The SMS 2 and GG allow all eight
sprites to be zoomed in both directions.
This problem might come from the original TMS9918 which also supported zoomed
sprites but only allowed four sprites to be shown per scanline. Perhaps the designers of
the SMS VDP forgot to add 'horizontal zoom' flags to the extra four sprites they added,
which is why only four of the eight sprites are affected.
Table parsing
On each scanline, the VDP parses the SAT to find which sprites will be displayed on the
next line. It goes through each Y coordinate and checks the position along with the sprite
height (controlled by bit 1 of register #1) to see if the sprite falls on the next line. If it
does, the sprite is added to an internal 8-entry buffer.
The VDP stops parsing sprites under the following conditions:
All 64 sprites have been checked.
All eight buffer entries have been filled.
A sprite Y coordinate of 208 is found (in 192-line mode)
If all eight buffer entries have been used and there are more sprites that fall on the same
line, bit 6 of the status flags is set, indicating a sprite overflow condition occurred. The
bit remains set until the control port is read. Note that this is regardless of the sprite X
coordinate or pattern data, so eight transparent sprites that were off-screen would count
towards a sprite overflow.
On the next scanline, the VDP uses the X coordinate as a counter that is decremented
each time the H counter is incremented. (1) When the counter expires, the bitplanes for
Содержание Franky
Страница 1: ...Instruction Manual ...