VDP speed curiousity

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

By sd_snatcher

Prophet (3659)

sd_snatcher's picture

05-03-2014, 06:16

The behavior of the machine on this test is indeed weird.

By l_oliveira

Hero (534)

l_oliveira's picture

27-04-2014, 23:00

VG8020/20 (S3527 based) converted to MSX2 using Nyyrikki "no RTC" roms for SVI738: (and 60hz modded by me, since Brazil uses 60hz ...)

NTSC mode:

PAL mode:

That feels fairly standard, huh ?

By sd_snatcher

Prophet (3659)

sd_snatcher's picture

30-08-2015, 04:55

Does anyone have the 1st tool used for testing in this thread? The original link seems to be broken.

By mars2000you

Enlighted (6480)

mars2000you's picture

30-08-2015, 06:34

Here's a temporary link :

http://www.msxblue.com/temp2/OUT98H.zip

By mars2000you

Enlighted (6480)

mars2000you's picture

30-08-2015, 07:53

mars2000you wrote:

Here's a temporary link :

http://www.msxblue.com/temp2/OUT98H.zip

It can also be found on the ADVRAM page of Ricardo Bittencourt :

http://www.ricbit.com/mundobizarro/advram/

It is included in this file : http://www.ricbit.com/mundobizarro/advram/vtest.zip

By sd_snatcher

Prophet (3659)

sd_snatcher's picture

25-10-2015, 21:56

Thanks, mars2000you!

hit9918 wrote:

ok, here a new benchmark.
benchmark doing a clear thing, disable interrupt and otir and rasterline display.

@hit9918

Wouldn't it be better to use 256 OUTI instead of OTIR? Since this runs faster on the Z80, it would allow to better detect any slowdowns enforced by the chipset.

By hit9918

Prophet (2932)

hit9918's picture

28-10-2015, 19:18

ok, this time with outi.
The random pixels are 1k of ROM copied onscreen, the pattern shall stand stable, maybe if one day a config overspeeds vram speed then one gets indication.
and using line interrupt to get at the top of the screen, no more difference PAL vs NTSC, all machines should fit on the scale.
MSX2 finishes around line 88, TurboR around line 140.

cutnpaste the BASIC to run.
the asm file is just for info.

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

60 color 15,4,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,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
        	org 0xc000 - 7
        	
        	db 0xFE
        	dw start
        	dw end - 1
        	dw start
		
start:  	di
		call setline
loop:   	
		call sync
		
		ld a,8
		call color
		
		ld e,14
		ld a,0
		call setreg
        	
		ld hl,0x4000+8*128
		ld bc,(6)
		inc c
		out (c),l
		out (c),h
		
		ld hl,0
		ld de,1024
		call copy
		
		ld a,0
		call color
		
		jp loop
	
RG0SAV equ 0xF3DF
RG1SAV equ 0xF3E0


setline:
		ld e,19		;interrupt line
		ld a,0
		call setreg

		ld a,1
		ld e,15
		call setreg 	;select s#1
		
		ld a,(RG0SAV)
        	set 4,a
        	ld (RG0SAV),a
        	ld e,0
        	call setreg
        	ret
		
		;vdp(e) = a
setreg:		di
		ld bc,(6)
		inc c
		out (c),a
		ld a,e
		or 128
		out (c),a
		ret
        	
        	
color:		di
		ld bc,(6)
		inc c
		out (c),a
		ld a,0x87
		out (c),a
		ret
        	
        	
sync:		di
		ld bc,(6)
		inc c

		in a,(c)
		and 0x01
		ret nz
		jp sync
        	
        	
copy:		ld bc,(6)
        	
		;de to format of nested jp nz
		inc d
		dec de
		inc e	
        	
		ld a,e
		and 0xF0	;align to 16
		ld b,a
cl:     	
		outi
		outi
		outi
		outi

		outi
		outi
		outi
		outi

		outi
		outi
		outi
		outi

		outi
		outi
		outi
		outi
		
		jp nz,cl
		dec d
		jp nz,cl
		ret

end:

By hit9918

Prophet (2932)

hit9918's picture

28-10-2015, 20:11

and the red bar means time taken, the fatter it is, the slower it is. R800 mode is slower.

HECK now that I think of it, better read from RAM, maybe some turbos slow down in ROM.
change this line to copy from 0x8000 RAM.

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

By sd_snatcher

Prophet (3659)

sd_snatcher's picture

28-10-2015, 20:28

I've done a series of tests with the OTIR version. I'll publish them here soon.

By sd_snatcher

Prophet (3659)

sd_snatcher's picture

28-10-2015, 21:05

As I mentioned, I've done a series of tests with hit9918's VDPSPEED.BAS (OTIR version). All machines were tested at their default frame rate. The results may come as a surprise for many here. Some highlights:

1) All MSX2+ machines featured the same kind of frame drop (entirely blue frames) you've seen on Sturaro's ExpertTurbo machine. Around 3 frame drops per second. (note: I don't have any MSX2 here, and the test wouldn't work with my external V9938 cards because it's hardcoded to the I/O port 98h).

2) The Panasonic FS-A1WX at 5.37MHz was almost as slow to write to the VDP as the Turbo-Rs in R800 mode.

3) The MSX1 ran the test just fine, the TMS9918 has show no frame drops. The T6950 OTOH has shown some frame drops.

Now, the pictures:

Panasonic FS-A1ST, Z80

Panasonic FS-A1ST, R800

Panasonic FS-A1WX, 3.57MHz

Panasonic FS-A1WX, 5.37MHz

Sanyo PHC-70FD

Gradiente GPC-1

Sharp HB-8000 v1.2

Sony HB-20P

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