Sprite VDP Incompatibilities between MSX-1 and MSX-2

Page 1/2
| 2

By Mork

Resident (53)

Mork's picture

23-06-2022, 10:07

Hi,
I observed that sprites on a MSX-2 system don´t behave regular in MSX-1 screen modes:
The 4 sprites on a line rule says, that the parts of a fith sprite, which are on a line with the former 4 sprites are suppressed and this is exactly how sprites behave on a MSX-1 system.
However on a MSX-2 system not only the concerned lines of the fith sprites are supressed but the fith sprite at all.
That means, entering the 4 on a line zone the fith sprite vanishes line by line but remains invisible also when parts of the sprite are leaving the zone. The sprite only becomes visible again, when it has left the zone completely.
The same happens with screen 4, concerning the ninth sprite.
Any ideas?

Login or register to post comments

By Mork

Resident (53)

Mork's picture

23-06-2022, 11:26

Taking into account, that even the 9938-programmers-guide states on page 100: "...the overlapping portions of lower priority sprites will not be displayed" something seems to be wrong.
The above mentioned phenomenon is produced by regular Basic code.

By Metalion

Paragon (1639)

Metalion's picture

23-06-2022, 12:09

Is that on real hardware, or on an emulator ?

By Mork

Resident (53)

Mork's picture

23-06-2022, 13:04

On real hardware.

By ARTRAG

Enlighted (7001)

ARTRAG's picture

23-06-2022, 13:22

Post here your test code. Maybe there is a bug in the source

By Mork

Resident (53)

Mork's picture

23-06-2022, 13:28

Ok, I will do it tonight.

By Mork

Resident (53)

Mork's picture

23-06-2022, 21:45

Hi everybody, here is the basic-code:

100 COLOR 15,1,1
110 SCREEN 2
120 GOSUB 2000
300 PUT SPRITE 0, (5,10),2,0
310 PUT SPRITE 1, (15,10),2,0
320 PUT SPRITE 2, (25,10),2,0
330 PUT SPRITE 3, (35,15),2,0
335 FOR Y=5 TO 20
340 PUT SPRITE 4, (45,Y),2,0
345 FOR Z=1 TO 200:NEXT Z
350 NEXT Y
400 GOTO 400
1000 DATA &b00011000
1010 DATA &b00111100
1020 DATA &b01111110
1030 DATA &b11011011
1040 DATA &b11111111
1050 DATA &b00100100
1060 DATA &b01011010
1070 DATA &b10100101
2000 A$=""
2005 FOR T=0 TO 5
2010 FOR I=0 TO 7
2020 READ C: A$=A$+CHR$(C)
2030 NEXT I
2040 SPRITE$(T)=A$
2042 RESTORE
2045 NEXT T
2050 RETURN

But strange wise now everything works with MSX-2 fine the same way as it does with MSX-1.
Sad, that it's not possible to upload screenshots here, I have documented everything, even made two videos of the different behaviors.
I have no idea what spooky things are going on within my AX370...

By Parn

Paladin (864)

Parn's picture

24-06-2022, 01:57

You can easily upload videos to YouTube, just make them unlisted if you're uncomfortable with them being indexed and share the link with us.

By Mork

Resident (53)

Mork's picture

24-06-2022, 09:16

Ok, that's what this code produced until yesterday, before I asked here for help:

https://m.youtube.com/watch?v=UaebDbqUgek

By Micha

Expert (128)

Micha's picture

24-06-2022, 10:54

Hi Mork,

I think I know what is happening here; when I typed the program on my MSX2 computer I got a different behaviour then what is seen on your youtube video. The 5th sprite only vanishes 5 lines in the "middle".
When I set the spritesize to 16x16 (screen 2,2) then I get the exact same behaviour as in your video. So I think somehow you accidentally had the spritesize on 16x16. Remember that the 5th sprite also vanishes behind invisible parts of the first 4 sprites (when in 1 line).
This has nothing to do with differences between msx 1 and 2

I also didn't understand why you set the patterns of 5 sprites. The first number behind the put sprite statement is the plane; and the last one is the sprite number (in your case always zero). So you could remove the T-for-next loop.

By Parn

Paladin (864)

Parn's picture

24-06-2022, 14:08

That was a super cromulent explanation.

Page 1/2
| 2