VDP speed curiousity

Page 9/12
2 | 3 | 4 | 5 | 6 | 7 | 8 | | 10 | 11 | 12

By hit9918

Prophet (2921)

hit9918's picture

28-10-2015, 22:00

When MSX1 drops frames, that is a whole different issue, I poll the status register bit, that is buggy on MSX1.

when the old version needs over 1 frame, then things go flicker.
I had not expected that turbos go slower, this is how all ended up with interpreting a flicker mess.
but flicker is like 25 frame drops per second on PAL. a rate of 3 per second I cant explain.

The new version goes without getting into an interpretation mess.
If not again something unexpected happens, it is just a clear read on the scale.

By sd_snatcher

Prophet (3499)

sd_snatcher's picture

28-10-2015, 22:06

But that was the curious part: the MSX1 machines with a TMS9128 inside haven't dropped any frames. The only MSX1 that has dropped frames has a Toshiba T9650 VDP inside.

By hit9918

Prophet (2921)

hit9918's picture

28-10-2015, 22:14

I made a new version.
The bar is now over the whole screen, who knows how much borders are snipped on the real thing.
And copy only 512 bytes so even more fits on that scale.

MSX2 is near 48, R800 near 72.

10 clear 200,&hc000 : p% = &hc000 'loading asm there
20 defusr0 = p%
30 restore 10000 : gosub 5000 'load asm code

60 color 15,0,1 : screen 5 : set adjust(0,0)
62 open "grp:"as #1
65 for i = 0 to 211 step 8 : line (0,i)-(255,i),15 : preset(0,i) : ?#1,i : next
70 x=usr(0)

4999 STOP 'when above code forgot END
5000 read a$ : if a$ = "END" then return
5010 poke p%,val("&h"+a$) : p%=p%+1 : goto 5000


10000 DATA F3,CD,30,C0,CD,67,C0,3E
10008 DATA 08,CD,5A,C0,1E,0E,3E,00
10016 DATA CD,4C,C0,21,00,44,ED,4B
10024 DATA 06,00,0C,ED,69,ED,61,21
10032 DATA 00,80,11,00,02,CD,75,C0
10040 DATA 3E,00,CD,5A,C0,C3,04,C0
10048 DATA 1E,13,3E,00,CD,4C,C0,3E
10056 DATA 01,1E,0F,CD,4C,C0,3A,DF
10064 DATA F3,CB,E7,32,DF,F3,1E,00
10072 DATA CD,4C,C0,C9,F3,ED,4B,06
10080 DATA 00,0C,ED,79,7B,F6,80,ED
10088 DATA 79,C9,F3,ED,4B,06,00,0C
10096 DATA ED,79,3E,87,ED,79,C9,F3
10104 DATA ED,4B,06,00,0C,ED,78,E6
10112 DATA 01,C0,C3,67,C0,ED,4B,06
10120 DATA 00,14,1B,1C,7B,E6,F0,47
10128 DATA ED,A3,ED,A3,ED,A3,ED,A3
10136 DATA ED,A3,ED,A3,ED,A3,ED,A3
10144 DATA ED,A3,ED,A3,ED,A3,ED,A3
10152 DATA ED,A3,ED,A3,ED,A3,ED,A3
10160 DATA C2,80,C0,15,C2,80,C0,C9
10168 DATA END

By hit9918

Prophet (2921)

hit9918's picture

28-10-2015, 22:28

I observed both rock solid and bad drops on real 75P. It depends on the test loop.
This is about status register polling. When you load status register in same cycle as VDP updates it, the event is lost.
Whether this happens is "badly a matter of luck".
When some synthetic test is lucky to exactly fit into a frame, it can go rock solid.
Who knows, same test ran again might be a total fail
(when loading from a real floppy makes the loop enter in a different offset to the video frame).

By sd_snatcher

Prophet (3499)

sd_snatcher's picture

28-10-2015, 22:58

Because of the borders, I did exactly the same modification. The 1st version was indeed hard to read on a real machine.

I also modified the address where the data is copied to the bottom of the screen. This way it will be easier to get a proper reading on faster machines like the Expert Turbo and the OCM.

I preferred to keep the copied data still visible on screen, because this makes easier to spot data corruption. When there's corruption, the pixels on the data block varies wildly.

10 CLEAR 200,&HC000 : P% = &HC000 'loading asm there
20 DEFUSR0 = P%
30 RESTORE 10000 : GOSUB 5000 'load asm code
60 COLOR 15,0,0 : SCREEN 5 : SET ADJUST(0,0)
62 OPEN "grp:"AS #1
65 FOR I = 0 TO 211 STEP 8 : LINE (0,I)-(255,I),15 : PRESET(0,I) : PRINT#1,I : NEXT
70 X=USR(0)
4999 STOP 'when above code forgot END
5000 READ A$ : IF A$ = "END" THEN RETURN
5010 POKE P%,VAL("&h"+A$) : P%=P%+1 : GOTO 5000
10000 DATA F3,CD,30,C0,CD,67,C0,3E
10008 DATA 08,CD,5A,C0,1E,0E,3E,01
10016 DATA CD,4C,C0,21,00,64,ED,4B
10024 DATA 06,00,0C,ED,69,ED,61,21
10032 DATA 00,00,11,00,04,CD,75,C0
10040 DATA 3E,00,CD,5A,C0,C3,04,C0
10048 DATA 1E,13,3E,00,CD,4C,C0,3E
10056 DATA 01,1E,0F,CD,4C,C0,3A,DF
10064 DATA F3,CB,E7,32,DF,F3,1E,00
10072 DATA CD,4C,C0,C9,F3,ED,4B,06
10080 DATA 00,0C,ED,79,7B,F6,80,ED
10088 DATA 79,C9,F3,ED,4B,06,00,0C
10096 DATA ED,79,3E,87,ED,79,C9,F3
10104 DATA ED,4B,06,00,0C,ED,78,E6
10112 DATA 01,C0,C3,67,C0,ED,4B,06
10120 DATA 00,14,1B,1C,7B,E6,F0,47
10128 DATA ED,A3,ED,A3,ED,A3,ED,A3
10136 DATA ED,A3,ED,A3,ED,A3,ED,A3
10144 DATA ED,A3,ED,A3,ED,A3,ED,A3
10152 DATA ED,A3,ED,A3,ED,A3,ED,A3
10160 DATA C2,80,C0,15,C2,80,C0,C9
10168 DATA END

By hit9918

Prophet (2921)

hit9918's picture

28-10-2015, 23:18

R800 reaches line 140, maybe a surprise slow turbo would overshoot the scale?

10032 DATA 00,80,11,00,02,CD,75,C0

this one copies 512 byte from 0x8000 fast RAM, what do you think?

By sd_snatcher

Prophet (3499)

sd_snatcher's picture

28-10-2015, 23:26

I ran the test in R800 DRAM mode, so the ROM was already in fast RAM. Smile

By hit9918

Prophet (2921)

hit9918's picture

28-10-2015, 23:35

on R800 it makes no difference, because the cycles between vram stores can be used. vram is slower than ROM, isn't it.
but who knows how the wait mechanisms of other turbos are built.

By hit9918

Prophet (2921)

hit9918's picture

29-10-2015, 00:01

sd_snatcher, is yours the version you want?
one should announce a version, maybe some readers want to try.

By sd_snatcher

Prophet (3499)

sd_snatcher's picture

29-10-2015, 00:15

The code is yours, I just did some minor tweaks. Wink

But if you ask me, I wold prefer that version I tweaked. Because I already tested many machines with it. It would be a pain in the neck to have to repeat all that again...

Page 9/12
2 | 3 | 4 | 5 | 6 | 7 | 8 | | 10 | 11 | 12