spritesort reduces spriteflicker

Page 4/13
1 | 2 | 3 | | 5 | 6 | 7 | 8 | 9

By hit9918

Prophet (2866)

hit9918's picture

20-03-2010, 19:34


The color mix bit is useful since it ORs the sprite color with the next higher priority sprite(s). Of course it would still have been much more useful if it was tied to patterns instead of SAT entries.

So when overlaying two sprites, I get a third color when both sprite patterns got the bit set?
Wow, after all the quirks this is a surprising feature!

My first thought: so with 4 sprites I get a 16 color sprite. On the other hand one single sprite already can reach 16 colors - wow this really is another TMS style braintwister Smile Smile Smile Two sprites make a 3 color per 16x1 pixel mode, this is cool! This style is so similar to 9918 and it should be attacked with convertors like screen 2 convertors.

By ARTRAG

Enlighted (6236)

ARTRAG's picture

20-03-2010, 19:52

Not that easy: sprites and background are strictly linked.

The main problem is that the 3d color is the bitwise "or" of the two overlapping colors

This implies that the palette (that holds for the whole screen) MUST be defined while you define sprites!
Only after sprite definition, the colors you get can be used to draw/convert the background

IMHO (and not only mine) sprites on v9938 suck

By PingPong

Prophet (3435)

PingPong's picture

20-03-2010, 21:09


IMHO (and not only mine) sprites on v9938 suck

The main problem is that engineers choose to maintain compatibility on sprites with old tms architecture.
All those limitations have one common root: compatibility with tms.

On the other hand, with so strict bandwidth limitations what else one could do?
Even linking color defs with sprite patterns caused timing problems: to know the address of a color attribute the vdp should had to fetch first the sprite pattern number, then the color byte. the actual way allowed to directly decode the sct address from the plane index.

@ht9918: msx 2 allows 8 sprites x scanline

By hit9918

Prophet (2866)

hit9918's picture

20-03-2010, 21:23


The main problem is that the 3d color is the bitwise "or" of the two overlapping colors
This implies that the palette (that holds for the whole screen) MUST be defined while you define sprites!

If it was an amiga sprite, it would take fixed color 1-3. Amiga got 32 color registers, so there it is 17-19.
The main problem is MSX2 could not afford more than 16 paletteregisters.

Amiga sprites suck much more, I got the theory that nobody ever made a general purpose vsprite engine. If sprites cross each other in Y direction then you got to find another place to copy the sprite bitmap there, that is much worse than the MSX2 colortable flaw. But these problems are not discussed because there is the blitter for BOBs.

so why are there no screen 8 scroller games. is the pixel mass to update at the borders the problem? are there showstoppers or was it just not attacked yet? 256 color background and a 16 color palette for sprites only, where is the problem? Smile

By PingPong

Prophet (3435)

PingPong's picture

20-03-2010, 22:09


so why are there no screen 8 scroller games. is the pixel mass to update at the borders the problem? are there showstoppers or was it just not attacked yet? 256 color background and a 16 color palette for sprites only, where is the problem? Smile

in screen 8 there is some sort of fixed color palette for sprites. colors are not freely definable.

plus. the blitter of msx2 can move less than 200kb/sec in byte copy operations.

By hit9918

Prophet (2866)

hit9918's picture

21-03-2010, 07:59


in screen 8 there is some sort of fixed color palette for sprites. colors are not freely definable.
plus. the blitter of msx2 can move less than 200kb/sec in byte copy operations.

I know MSX2 basics, but not the details that might be a showstopper.

in lack of bordersnip, wipe 200 bytes on the left and write 200 bytes on the right.
makes 24kb/s, a magnitude lower than your number.

an MSX game can live with just sprites and no BOBs. for opening and closing Zanac 1 eyes blitter is enough. so far no real showstopper for a screen 8 smoothscroller.

the nature of showstoppers I can think of
- display dma pointer in screen 8 lacks the granularity
- no double size buffer available, need a screensplit without gap to roll the buffer

what is the showstopper?

By ARTRAG

Enlighted (6236)

ARTRAG's picture

21-03-2010, 10:39

In screen 8, games with vertical scrolling are perfectly possible, but without doing double buffering.
In one page you display the game, in the other you keep the data that you use to build the new game area under the vertical borders.

Once I tried to do an horizontal scrolling in screen 8.
The vdp offers only an horizontal register that moves the page of 16 pixels, but without borders.

This implies that you have to
-simulate the border on the active page each time you move it
-rebuild the whole page each 16 pixels and thus you need double buffering.

In screen 8 you have only two pages, so you can do that, but you have to find a way to store the tiles somewhere, e.g. under the border of one of the pages.

Assuming that you use an active screen of 256x192, in one page you have a 256x64 free area for storing 256 8x8 tiles, in the other the same are can be used for sprites.
Tecnically 8x8 tiles is very bad for VDP performances: larger is the tile, faster is the VDP in coping, anyway there is no other option.

the border emulation is the true pain in the ass
cancelling the line that oes under the border is simple, and can be done with one command,
but building the new line on the other side enetring in the screen implies that you have to copy 24 segments 1x8 from the tiles :

a true nightmare you cannot do in one vblank time
Eek!

Add that each frame, once you have emulated the border on the active page, you have to build 1/16 of the hidden page moving 48 8x8 tiles...
In this case becomes essential copy only the tiles that change: you have to strore in RAM the 32x24 bytes representing the two page in vram and copy only the tiles that have changed.

In average, unless you do very repetitive levels, the vdp cannot cope with all this at full rate...
maybe moving the whole stuff at half rate (1 pixel each two frames) could work

By JohnHassink

Ambassador (5407)

JohnHassink's picture

21-03-2010, 10:50

so why are there no screen 8 scroller games.
Actually, there is, and quite fun too. Smile
Look here:
http://www.generation-msx.nl/msxdb/softwareinfo/2587

By ARTRAG

Enlighted (6236)

ARTRAG's picture

21-03-2010, 11:54

yes, this is a vertical scroller without background animation, so it does not need double buffering

By Manuel

Ascended (15686)

Manuel's picture

21-03-2010, 18:35

There are more Radarsoft games using screen 8 Smile

Page 4/13
1 | 2 | 3 | | 5 | 6 | 7 | 8 | 9