R800 VDP slow down.

By PingPong

Prophet (3793)

PingPong's picture

04-01-2007, 10:58

How much slower is the vdp access in r800 mode?

Does The slow down affect all port address in range 0x98-9b?

Can someone give some values?

(10%, 20% or so on)

Login or register to post comments

By Edwin

Paragon (1182)

Edwin's picture

04-01-2007, 11:45

Check this.

By PingPong

Prophet (3793)

PingPong's picture

04-01-2007, 12:11


(notice the horrid slowdown of the VDP compared to the Z80)

On openMSX I generated:
Z80: 1733/528/664
R800: 287/1222/1565

!!!!!!! What does it mean? that a port write is about twice (1222/528) slower! (in terms of absolute time, not cpu cycles that are affected by the
clock)

Please confirm that, i can't believe... CryingCryingCryingCryingCryingCryingCryingCryingCryingCryingCryingCrying

By Edwin

Paragon (1182)

Edwin's picture

04-01-2007, 12:23

Yes, that's what it means. Those times are measured in interrupts. After measuring that, you pretty much lose the drive to develop something for r800/v9938. All the more reason to get a v9990. Even with added wait states for external access it is much faster.
(P.S. you copied the number of openMSX instead of the real thing. Not that it matters for the overall picture)

By jltursan

Prophet (2559)

jltursan's picture

04-01-2007, 13:00

You can find more info about the slowdown problem in this MCCM article. Even a method to avoid (at least partially) it...:)

By PingPong

Prophet (3793)

PingPong's picture

04-01-2007, 13:51

It's not so slow as i realized initially.

I see that a single byte output take 8 us compared with the 6 us of a z80 otir.
Yes, if we do outi instructions the diff is more noticeable 8 vs. 4.5

So in the average the time is increased about of 30%, it's right?

By Edwin

Paragon (1182)

Edwin's picture

04-01-2007, 14:08

Those test numbers are based on pure out ($98),a instructions without anything in between. So they represent the worst case. Apart from that, it depends on what you do and how you do it. Especially if you're using outi's because you needed to save time in a certain place. Code like that just won't work in r800 mode.

By PingPong

Prophet (3793)

PingPong's picture

04-01-2007, 17:18

Anyone has calculated the max throughput of data pratically. teoretically should be near 125 Kb/sec.