Sprites doubles on MSX1.

Page 1/3
| 2 | 3

By GhostwriterP

Champion (470)

GhostwriterP's picture

03-12-2005, 14:21

I am having a problem with the sprites on MSX 1.
When I display over an x number of sprites, sprites on the upper half of the screen are
displayed agein on the lower half, and the sprites on the lower half appair a second time
as a line on the first displaylineQuestion.
Does anyone have any idea what could couse this feature?

Login or register to post comments

By ARTRAG

Enlighted (4513)

ARTRAG's picture

03-12-2005, 15:56

???
more details please.
Which sprite planes, which screen, how many sprites, where are they, hwere are the "clones"....

By GhostwriterP

Champion (470)

GhostwriterP's picture

03-12-2005, 16:09

I out 32 sprites spread out over the entire screen. Just bouncing from left to right. I count about 43 sprites.
Sprite attribute adress 1b00h, generator 3800h, 16x16 size, screen 2, repeaded first char set.
Sprite clones appear to be 128 pixels lower.
I use an otir in vblank to move a virtual spat to the vram.
Somewhere about halfway the screen seems to be a disturbance for a few (1-3) lines.

By GhostwriterP

Champion (470)

GhostwriterP's picture

03-12-2005, 16:30

Oh, I might just have found the problem... No time to test it now but maby continiued tomorrow!

By ARTRAG

Enlighted (4513)

ARTRAG's picture

03-12-2005, 19:10

My guess is that you have some sort of lineint at y= 128 where you
move the registers of the sprite attributa table in a wrong VRAM area

BTW 43 sprites on msx1 is a feature not a bug Smile

By GhostwriterP

Champion (470)

GhostwriterP's picture

04-12-2005, 13:41

Some sort of line int... but then a hardware one without a int being generated.
Well I figured it out, and it is just as I thought yesterday.
I asumed that setting all the graphix sets the same as the first set was also supported on the TMS (msx1).
It must be an unofficial feature and we now know why.
But it is still usefull as long you are not using over about 8 sprites, 'cos using more than that creates the
'clones'.

By ARTRAG

Enlighted (4513)

ARTRAG's picture

04-12-2005, 15:51

please be more precise about this discover.

How do you generate the lineint?
In msx1 the only way i know is to poll the sprite collision flag
or the 5th sprite flag having properly set this condition
at Y=what you need.

What do you do at the line int in order to have sprite clones?

By GhostwriterP

Champion (470)

GhostwriterP's picture

04-12-2005, 16:30

No int will be generated. It is useless... at any way I see it.

The effect must be due the repeating gen and col tables that also counts for the sprites... somehow.
Simply set reg4=00000000b and reg3=10011111b to achieve this.
Put some sprites on the upper half off the screen (more than an x number) and you will see they appear
again on the lower half. You might have to keep updating the SPAT to keep the effect going.

Test it on the real thing (msx1), an emulator or msx2 will not show this effect.

By AuroraMSX

Paragon (1886)

AuroraMSX's picture

05-12-2005, 12:30

Aehm... 43 sprites? An MSX1 won't display more that 32 sprites simultaneously. And each horizontal display line will only display 4 sprites at once.

By viejo_archivero

Paragon (1364)

viejo_archivero's picture

05-12-2005, 13:14

More info on that, please!. Source code?. Perhaps could be an undocumented feature? Question

By Manuel

Ascended (9447)

Manuel's picture

05-12-2005, 15:00

GhostWriterP: did you try an emulator in which you emulate an MSX1?
Did you try both blueMSX and openMSX?

If so, please publish a program that shows the effect, so that emulators can be updated Smile

Page 1/3
| 2 | 3
My MSX profile